2 * Copyright (C) 2014 The CyanogenMod Project
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.lineageos.eleven.ui;
18 import android.content.Context;
19 import android.util.AttributeSet;
20 import android.view.Menu;
21 import android.view.MenuInflater;
22 import android.view.MenuItem;
23 import android.view.View;
24 import android.widget.ImageView;
25 import android.widget.LinearLayout;
26 import android.widget.PopupMenu;
27 import android.widget.TextView;
29 import androidx.fragment.app.Fragment;
31 import org.lineageos.eleven.R;
32 import org.lineageos.eleven.loaders.NowPlayingCursor;
33 import org.lineageos.eleven.loaders.QueueLoader;
34 import org.lineageos.eleven.menu.CreateNewPlaylist;
35 import org.lineageos.eleven.utils.MusicUtils;
36 import org.lineageos.eleven.utils.NavUtils;
39 * Simple Header bar wrapper class that also has its own menu bar button.
40 * It can collect a list of popup menu creators and create a pop up menu
43 public class HeaderBar extends LinearLayout {
45 private ImageView mMenuButton;
46 private ImageView mSearchButton;
47 private ImageView mBackButton;
48 private TextView mTitleText;
49 private PopupMenu mPopupMenu;
50 private Fragment mFragment;
52 public HeaderBar(Context context, AttributeSet attrs) {
53 super(context, attrs);
56 public void setFragment(Fragment activity) {
61 protected void onFinishInflate() {
62 super.onFinishInflate();
64 mMenuButton = (ImageView)findViewById(R.id.header_bar_menu_button);
65 mMenuButton.setOnClickListener(new View.OnClickListener() {
67 public void onClick(View v) {
72 mSearchButton = (ImageView)findViewById(R.id.header_bar_search_button);
73 mSearchButton.setOnClickListener(new View.OnClickListener() {
75 public void onClick(View v) {
76 NavUtils.openSearch(mFragment.getActivity(), "");
81 mBackButton = (ImageView)findViewById(R.id.header_bar_up);
83 mTitleText = (TextView)findViewById(R.id.header_bar_title);
87 * @param resId set the title text
89 public void setTitleText(int resId) {
90 mTitleText.setText(resId);
94 * @param text set the title text
96 public void setTitleText(String text) {
97 mTitleText.setText(text);
101 * Sets the back button listener
102 * @param listener listener
104 public void setBackListener(final OnClickListener listener) {
105 mBackButton.setOnClickListener(listener);
106 setOnClickListener(listener);
110 * Sets the header bar listener
111 * @param listener listener
113 public void setHeaderClickListener(final OnClickListener listener) {
114 setOnClickListener(listener);
117 public void showPopupMenu() {
118 // create the popup menu
119 if (mPopupMenu == null) {
120 mPopupMenu = new PopupMenu(mFragment.getActivity(), mMenuButton);
121 mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
123 public boolean onMenuItemClick(MenuItem item) {
124 return onPopupMenuItemClick(item);
129 final Menu menu = mPopupMenu.getMenu();
130 final MenuInflater inflater = mPopupMenu.getMenuInflater();
135 inflater.inflate(R.menu.shuffle_all, menu);
136 if (MusicUtils.getQueueSize() > 0) {
137 // save queue/clear queue
138 inflater.inflate(R.menu.queue, menu);
141 inflater.inflate(R.menu.activity_base, menu);
147 public boolean onPopupMenuItemClick(final MenuItem item) {
148 switch (item.getItemId()) {
149 case R.id.menu_shuffle_all:
150 // Shuffle all the songs
151 MusicUtils.shuffleAll(mFragment.getActivity());
153 case R.id.menu_settings:
155 NavUtils.openSettings(mFragment.getActivity());
157 case R.id.menu_save_queue:
158 NowPlayingCursor queue = (NowPlayingCursor) QueueLoader
159 .makeQueueCursor(mFragment.getActivity());
160 CreateNewPlaylist.getInstance(MusicUtils.getSongListForCursor(queue)).show(
161 mFragment.getFragmentManager(), "CreatePlaylist");
164 case R.id.menu_clear_queue:
165 MusicUtils.clearQueue();