diff options
3 files changed, 86 insertions, 7 deletions
diff --git a/src/org/cyanogenmod/wallpapers/photophase/preferences/ChoosePicturesFragment.java b/src/org/cyanogenmod/wallpapers/photophase/preferences/ChoosePicturesFragment.java index 513ea33..df13028 100644 --- a/src/org/cyanogenmod/wallpapers/photophase/preferences/ChoosePicturesFragment.java +++ b/src/org/cyanogenmod/wallpapers/photophase/preferences/ChoosePicturesFragment.java @@ -73,7 +73,7 @@ import java.util.Set; * A fragment class for select the picture that will be displayed on the wallpaper */ public class ChoosePicturesFragment extends PreferenceFragment - implements AlbumInfoView.CallbacksListener, OnClickListener { + implements AlbumInfoView.CallbacksListener, OnClickListener, OnBackPressedListener { private static final String TAG = "ChoosePicturesFragment"; @@ -210,11 +210,13 @@ public class ChoosePicturesFragment extends PreferenceFragment * @return boolean if an item is selected */ private boolean isSelectedItem(String item) { - Iterator<String> it = mSelectedAlbums.iterator(); - while (it.hasNext()) { - String albumPath = it.next(); - if (item.compareTo(albumPath) == 0) { - return true; + if (mSelectedAlbums != null) { + Iterator<String> it = mSelectedAlbums.iterator(); + while (it.hasNext()) { + String albumPath = it.next(); + if (item.compareTo(albumPath) == 0) { + return true; + } } } return false; @@ -565,6 +567,19 @@ public class ChoosePicturesFragment extends PreferenceFragment } /** + * {@inheritDoc} + */ + @Override + public boolean onBackPressed() { + if (!mShowingAlbums) { + // Hide album pictures + hideAlbumPictures(mDstParent, mDstView, mSrcParent, mSrcView); + return true; + } + return false; + } + + /** * Method that update the album selection * * @param album The album to update diff --git a/src/org/cyanogenmod/wallpapers/photophase/preferences/OnBackPressedListener.java b/src/org/cyanogenmod/wallpapers/photophase/preferences/OnBackPressedListener.java new file mode 100644 index 0000000..acaee05 --- /dev/null +++ b/src/org/cyanogenmod/wallpapers/photophase/preferences/OnBackPressedListener.java @@ -0,0 +1,30 @@ +/* + * Copyright (C) 2013 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.cyanogenmod.wallpapers.photophase.preferences; + +/** + * Callback to notify back button action pressed (action bar home or back button). + */ +public interface OnBackPressedListener { + + /** + * Invoked when a back button action is requested by the user + * + * @return boolean If the action was handled + */ + public boolean onBackPressed(); +} diff --git a/src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java b/src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java index a7658c8..1d26463 100644 --- a/src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java +++ b/src/org/cyanogenmod/wallpapers/photophase/preferences/PhotoPhasePreferences.java @@ -17,9 +17,11 @@ package org.cyanogenmod.wallpapers.photophase.preferences; import android.app.ActionBar; +import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.preference.PreferenceActivity; +import android.view.KeyEvent; import android.view.MenuItem; import org.cyanogenmod.wallpapers.photophase.R; @@ -31,6 +33,8 @@ import java.util.List; */ public class PhotoPhasePreferences extends PreferenceActivity { + private OnBackPressedListener mCallback; + /** * {@inheritDoc} */ @@ -51,6 +55,7 @@ public class PhotoPhasePreferences extends PreferenceActivity { ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_SHOW_TITLE); getActionBar().setDisplayHomeAsUpEnabled(true); + mCallback = null; } /** @@ -79,7 +84,9 @@ public class PhotoPhasePreferences extends PreferenceActivity { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: - finish(); + if (mCallback == null || !mCallback.onBackPressed()) { + finish(); + } return true; default: return super.onOptionsItemSelected(item); @@ -89,6 +96,33 @@ public class PhotoPhasePreferences extends PreferenceActivity { /** * {@inheritDoc} */ + @Override + public boolean onKeyUp(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + if (mCallback == null || !mCallback.onBackPressed()) { + finish(); + } + return true; + } + return super.onKeyUp(keyCode, event); + } + + /** + * {@inheritDoc} + */ + @Override + public void onAttachFragment(Fragment fragment) { + super.onAttachFragment(fragment); + if (fragment instanceof OnBackPressedListener) { + mCallback = (OnBackPressedListener)fragment; + } else { + mCallback = null; + } + } + + /** + * {@inheritDoc} + */ // Do not use @Override because is not part of 4.0.3. Just ignored this advise public boolean isValidFragment(String fragmentName) { return true; |