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.support.v4.app.Fragment;
20 import android.util.AttributeSet;
21 import android.view.Menu;
22 import android.view.MenuInflater;
23 import android.view.MenuItem;
24 import android.view.View;
25 import android.widget.ImageView;
26 import android.widget.LinearLayout;
27 import android.widget.PopupMenu;
28 import android.widget.TextView;
30 import org.lineageos.eleven.R;
31 import org.lineageos.eleven.loaders.NowPlayingCursor;
32 import org.lineageos.eleven.loaders.QueueLoader;
33 import org.lineageos.eleven.menu.CreateNewPlaylist;
34 import org.lineageos.eleven.utils.MusicUtils;
35 import org.lineageos.eleven.utils.NavUtils;
38 * Simple Header bar wrapper class that also has its own menu bar button.
39 * It can collect a list of popup menu creators and create a pop up menu
42 public class HeaderBar extends LinearLayout {
44 private ImageView mMenuButton;
45 private ImageView mSearchButton;
46 private ImageView mBackButton;
47 private TextView mTitleText;
48 private PopupMenu mPopupMenu;
49 private Fragment mFragment;
51 public HeaderBar(Context context, AttributeSet attrs) {
52 super(context, attrs);
55 public void setFragment(Fragment activity) {
60 protected void onFinishInflate() {
61 super.onFinishInflate();
63 mMenuButton = (ImageView)findViewById(R.id.header_bar_menu_button);
64 mMenuButton.setOnClickListener(new View.OnClickListener() {
66 public void onClick(View v) {
71 mSearchButton = (ImageView)findViewById(R.id.header_bar_search_button);
72 mSearchButton.setOnClickListener(new View.OnClickListener() {
74 public void onClick(View v) {
75 NavUtils.openSearch(mFragment.getActivity(), "");
80 mBackButton = (ImageView)findViewById(R.id.header_bar_up);
82 mTitleText = (TextView)findViewById(R.id.header_bar_title);
86 * @param resId set the title text
88 public void setTitleText(int resId) {
89 mTitleText.setText(resId);
93 * @param text set the title text
95 public void setTitleText(String text) {
96 mTitleText.setText(text);
100 * Sets the back button listener
101 * @param listener listener
103 public void setBackListener(final OnClickListener listener) {
104 mBackButton.setOnClickListener(listener);
105 setOnClickListener(listener);
109 * Sets the header bar listener
110 * @param listener listener
112 public void setHeaderClickListener(final OnClickListener listener) {
113 setOnClickListener(listener);
116 public void showPopupMenu() {
117 // create the popup menu
118 if (mPopupMenu == null) {
119 mPopupMenu = new PopupMenu(mFragment.getActivity(), mMenuButton);
120 mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
122 public boolean onMenuItemClick(MenuItem item) {
123 return onPopupMenuItemClick(item);
128 final Menu menu = mPopupMenu.getMenu();
129 final MenuInflater inflater = mPopupMenu.getMenuInflater();
134 inflater.inflate(R.menu.shuffle_all, menu);
135 if (MusicUtils.getQueueSize() > 0) {
136 // save queue/clear queue
137 inflater.inflate(R.menu.queue, menu);
140 inflater.inflate(R.menu.activity_base, menu);
146 public boolean onPopupMenuItemClick(final MenuItem item) {
147 switch (item.getItemId()) {
148 case R.id.menu_shuffle_all:
149 // Shuffle all the songs
150 MusicUtils.shuffleAll(mFragment.getActivity());
152 case R.id.menu_settings:
154 NavUtils.openSettings(mFragment.getActivity());
156 case R.id.menu_save_queue:
157 NowPlayingCursor queue = (NowPlayingCursor) QueueLoader
158 .makeQueueCursor(mFragment.getActivity());
159 CreateNewPlaylist.getInstance(MusicUtils.getSongListForCursor(queue)).show(
160 mFragment.getFragmentManager(), "CreatePlaylist");
163 case R.id.menu_clear_queue:
164 MusicUtils.clearQueue();