summaryrefslogtreecommitdiffstats
path: root/src/com/cyanogenmod/eleven/ui
diff options
context:
space:
mode:
authorLinus Lee <llee@cyngn.com>2015-04-17 18:52:24 -0700
committerLinus Lee <llee@cyngn.com>2015-05-20 14:46:36 -0700
commit442768038f32eede422e0a3e7ec8235d564cd0b5 (patch)
tree09a235e2bf6052ad6298a62ba148e8469991b46b /src/com/cyanogenmod/eleven/ui
parenta02bc80dd6a52555b8dc0801acaf4893bbe295f9 (diff)
downloadandroid_packages_apps_Eleven-442768038f32eede422e0a3e7ec8235d564cd0b5.tar.gz
android_packages_apps_Eleven-442768038f32eede422e0a3e7ec8235d564cd0b5.tar.bz2
android_packages_apps_Eleven-442768038f32eede422e0a3e7ec8235d564cd0b5.zip
Add Landscape support to Eleven
This adds most of the support. There is a bug around the album art not loading on rotation - but this patch covers pretty much every other case Change-Id: If9033b0323beab8837493d289dcf77b76d1ea8c9
Diffstat (limited to 'src/com/cyanogenmod/eleven/ui')
-rw-r--r--src/com/cyanogenmod/eleven/ui/activities/HomeActivity.java63
-rw-r--r--src/com/cyanogenmod/eleven/ui/activities/SlidingPanelActivity.java24
-rw-r--r--src/com/cyanogenmod/eleven/ui/fragments/AudioPlayerFragment.java17
-rw-r--r--src/com/cyanogenmod/eleven/ui/fragments/BaseFragment.java6
-rw-r--r--src/com/cyanogenmod/eleven/ui/fragments/phone/MusicBrowserPhoneFragment.java13
5 files changed, 93 insertions, 30 deletions
diff --git a/src/com/cyanogenmod/eleven/ui/activities/HomeActivity.java b/src/com/cyanogenmod/eleven/ui/activities/HomeActivity.java
index f3a796a..ded1950 100644
--- a/src/com/cyanogenmod/eleven/ui/activities/HomeActivity.java
+++ b/src/com/cyanogenmod/eleven/ui/activities/HomeActivity.java
@@ -50,7 +50,8 @@ import com.cyanogenmod.eleven.utils.BitmapWithColors;
import com.cyanogenmod.eleven.utils.MusicUtils;
import com.cyanogenmod.eleven.utils.NavUtils;
-public class HomeActivity extends SlidingPanelActivity {
+public class HomeActivity extends SlidingPanelActivity implements
+ FragmentManager.OnBackStackChangedListener {
private static final String TAG = "HomeActivity";
private static final String ACTION_PREFIX = HomeActivity.class.getName();
public static final String ACTION_VIEW_ARTIST_DETAILS = ACTION_PREFIX + ".view.ArtistDetails";
@@ -59,6 +60,8 @@ public class HomeActivity extends SlidingPanelActivity {
public static final String ACTION_VIEW_SMART_PLAYLIST = ACTION_PREFIX + ".view.SmartPlaylist";
public static final String EXTRA_BROWSE_PAGE_IDX = "BrowsePageIndex";
+ private static final String STATE_KEY_BASE_FRAGMENT = "BaseFragment";
+
private static final int NEW_PHOTO = 1;
public static final int EQUALIZER = 2;
@@ -73,10 +76,10 @@ public class HomeActivity extends SlidingPanelActivity {
*/
protected boolean mTopLevelActivity = false;
-
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
// if we've been launched by an intent, parse it
Intent launchIntent = getIntent();
boolean intentHandled = false;
@@ -85,42 +88,46 @@ public class HomeActivity extends SlidingPanelActivity {
}
// if the intent didn't cause us to load a fragment, load the music browse one
- if (!mLoadedBaseFragment) {
+ if (savedInstanceState == null && !mLoadedBaseFragment) {
final MusicBrowserPhoneFragment fragment = new MusicBrowserPhoneFragment();
if (launchIntent != null) {
fragment.setDefaultPageIdx(launchIntent.getIntExtra(EXTRA_BROWSE_PAGE_IDX,
MusicBrowserPhoneFragment.INVALID_PAGE_INDEX));
}
getSupportFragmentManager().beginTransaction()
- .replace(R.id.activity_base_content, fragment).commit();
+ .replace(R.id.activity_base_content, fragment)
+ .commit();
mLoadedBaseFragment = true;
mTopLevelActivity = true;
}
- getSupportFragmentManager().addOnBackStackChangedListener(
- new FragmentManager.OnBackStackChangedListener() {
- @Override
- public void onBackStackChanged() {
- Fragment topFragment = getTopFragment();
- if (topFragment != null) {
- // the fragment that has come back to the top should now have its menu items
- // added to the action bar -- so tell it to make it menu items visible
- topFragment.setMenuVisibility(true);
- ISetupActionBar setupActionBar = (ISetupActionBar) topFragment;
- setupActionBar.setupActionBar();
-
- getActionBar().setDisplayHomeAsUpEnabled(
- !(topFragment instanceof MusicBrowserPhoneFragment));
- }
- }
- });
+ getSupportFragmentManager().addOnBackStackChangedListener(this);
+
+ // if we are resuming from a saved instance state
+ if (savedInstanceState != null) {
+ // track which fragments are loaded and if this is the top level activity
+ mTopLevelActivity = savedInstanceState.getBoolean(STATE_KEY_BASE_FRAGMENT);
+ mLoadedBaseFragment = mTopLevelActivity;
+
+ // update the action bar based on the top most fragment
+ onBackStackChanged();
+
+ // figure which panel we are on and update the status bar
+ mBrowsePanelActive = (getCurrentPanel() == Panel.Browse);
+ updateStatusBarColor();
+ }
// if intent wasn't UI related, process it as a audio playback request
if (!intentHandled) {
handlePlaybackIntent(launchIntent);
}
+ }
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+ outState.putBoolean(STATE_KEY_BASE_FRAGMENT, mTopLevelActivity);
}
public Fragment getTopFragment() {
@@ -427,4 +434,18 @@ public class HomeActivity extends SlidingPanelActivity {
return id;
}
+ @Override
+ public void onBackStackChanged() {
+ Fragment topFragment = getTopFragment();
+ if (topFragment != null) {
+ // the fragment that has come back to the top should now have its menu items
+ // added to the action bar -- so tell it to make it menu items visible
+ topFragment.setMenuVisibility(true);
+ ISetupActionBar setupActionBar = (ISetupActionBar) topFragment;
+ setupActionBar.setupActionBar();
+
+ getActionBar().setDisplayHomeAsUpEnabled(
+ !(topFragment instanceof MusicBrowserPhoneFragment));
+ }
+ }
}
diff --git a/src/com/cyanogenmod/eleven/ui/activities/SlidingPanelActivity.java b/src/com/cyanogenmod/eleven/ui/activities/SlidingPanelActivity.java
index 2a3665d..ace0947 100644
--- a/src/com/cyanogenmod/eleven/ui/activities/SlidingPanelActivity.java
+++ b/src/com/cyanogenmod/eleven/ui/activities/SlidingPanelActivity.java
@@ -52,6 +52,8 @@ public abstract class SlidingPanelActivity extends BaseActivity {
public void onFinishSlide(SlidingPanelActivity.Panel visiblePanel);
}
+ private static final String STATE_KEY_CURRENT_PANEL = "CurrentPanel";
+
private SlidingUpPanelLayout mFirstPanel;
private SlidingUpPanelLayout mSecondPanel;
protected Panel mTargetNavigatePanel;
@@ -106,6 +108,26 @@ public abstract class SlidingPanelActivity extends BaseActivity {
// get the blur scrim image
mBlurScrimImage = (BlurScrimImage)findViewById(R.id.blurScrimImage);
+
+ if (savedInstanceState != null) {
+ int panelIndex = savedInstanceState.getInt(STATE_KEY_CURRENT_PANEL,
+ Panel.Browse.ordinal());
+ Panel targetPanel = Panel.values()[panelIndex];
+
+ showPanel(targetPanel);
+ mTargetNavigatePanel = Panel.None;
+
+ if (targetPanel == Panel.Queue) {
+ mFirstPanel.setSlidingEnabled(false);
+ }
+ }
+ }
+
+ @Override
+ protected void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ outState.putInt(STATE_KEY_CURRENT_PANEL, getCurrentPanel().ordinal());
}
private void setupFirstPanel() {
@@ -253,7 +275,7 @@ public abstract class SlidingPanelActivity extends BaseActivity {
}
}
- protected Panel getCurrentPanel() {
+ public Panel getCurrentPanel() {
if (mSecondPanel.isPanelExpanded()) {
return Panel.Queue;
} else if (mFirstPanel.isPanelExpanded()) {
diff --git a/src/com/cyanogenmod/eleven/ui/fragments/AudioPlayerFragment.java b/src/com/cyanogenmod/eleven/ui/fragments/AudioPlayerFragment.java
index 877cda4..2e102d4 100644
--- a/src/com/cyanogenmod/eleven/ui/fragments/AudioPlayerFragment.java
+++ b/src/com/cyanogenmod/eleven/ui/fragments/AudioPlayerFragment.java
@@ -180,6 +180,9 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection,
// add a listener for the sliding
((SlidingPanelActivity)getActivity()).addSlidingPanelListener(this);
+
+ // check equalizer view
+ checkEqualizerView();
}
/**
@@ -297,7 +300,11 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection,
headerBar.setOutlineProvider(new ViewOutlineProvider() {
@Override
public void getOutline(View view, Outline outline) {
- outline.setRect(0, -bottomActionBarHeight, view.getWidth(), view.getHeight());
+ // since we only want the top and bottom shadows, pad the horizontal width
+ // to hide the shadows. Can't seem to find a better way to do this
+ int padWidth = (int)(0.2f * view.getWidth());
+ outline.setRect(-padWidth, -bottomActionBarHeight, view.getWidth() + padWidth,
+ view.getHeight());
}
});
@@ -742,6 +749,14 @@ public class AudioPlayerFragment extends Fragment implements ServiceConnection,
@Override
public void onFinishSlide(SlidingPanelActivity.Panel visiblePanel) {
+ checkEqualizerView(visiblePanel);
+ }
+
+ private void checkEqualizerView() {
+ checkEqualizerView(((HomeActivity)getActivity()).getCurrentPanel());
+ }
+
+ private void checkEqualizerView(SlidingPanelActivity.Panel visiblePanel) {
if (visiblePanel == SlidingPanelActivity.Panel.MusicPlayer) {
mEqualizerView.setPanelVisible(true);
}
diff --git a/src/com/cyanogenmod/eleven/ui/fragments/BaseFragment.java b/src/com/cyanogenmod/eleven/ui/fragments/BaseFragment.java
index 7bbaf14..5a5885a 100644
--- a/src/com/cyanogenmod/eleven/ui/fragments/BaseFragment.java
+++ b/src/com/cyanogenmod/eleven/ui/fragments/BaseFragment.java
@@ -39,6 +39,12 @@ public abstract class BaseFragment extends Fragment implements MusicStateListene
}
@Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setRetainInstance(true);
+ }
+
+ @Override
public void setupActionBar() {
getContainingActivity().setupActionBar(getTitle());
getContainingActivity().setActionBarAlpha(255);
diff --git a/src/com/cyanogenmod/eleven/ui/fragments/phone/MusicBrowserPhoneFragment.java b/src/com/cyanogenmod/eleven/ui/fragments/phone/MusicBrowserPhoneFragment.java
index 1317c4b..376841e 100644
--- a/src/com/cyanogenmod/eleven/ui/fragments/phone/MusicBrowserPhoneFragment.java
+++ b/src/com/cyanogenmod/eleven/ui/fragments/phone/MusicBrowserPhoneFragment.java
@@ -95,13 +95,12 @@ public class MusicBrowserPhoneFragment extends BaseFragment {
protected void onViewCreated() {
super.onViewCreated();
- if (mPagerAdapter == null) {
- // Initialize the adapter
- mPagerAdapter = new PagerAdapter(getActivity(), getChildFragmentManager());
- final MusicFragments[] mFragments = MusicFragments.values();
- for (final MusicFragments mFragment : mFragments) {
- mPagerAdapter.add(mFragment.getFragmentClass(), null);
- }
+ // create the adapter - on rotation the view gets created again and we need to recreate
+ // the child fragments (fragments of fragments cannot be retained)
+ mPagerAdapter = new PagerAdapter(getActivity(), getChildFragmentManager());
+ final MusicFragments[] mFragments = MusicFragments.values();
+ for (final MusicFragments mFragment : mFragments) {
+ mPagerAdapter.add(mFragment.getFragmentClass(), null);
}
// Initialize the ViewPager