summaryrefslogtreecommitdiffstats
path: root/src/org
diff options
context:
space:
mode:
authorClark Scheff <clark@cyngn.com>2014-07-09 17:21:38 -0700
committerClark Scheff <clark@cyngn.com>2014-07-10 15:35:58 +0000
commitbb087f0c9c918ebcd5c6471e5a6cc3111249f545 (patch)
tree82c0254257011eda8fbc0c4caa2a6bbd96ca83c2 /src/org
parente7a0b1076f5e2ccf4c2a84dc58e97a296e83b4d0 (diff)
downloadpackages_apps_ThemeChooser-bb087f0c9c918ebcd5c6471e5a6cc3111249f545.tar.gz
packages_apps_ThemeChooser-bb087f0c9c918ebcd5c6471e5a6cc3111249f545.tar.bz2
packages_apps_ThemeChooser-bb087f0c9c918ebcd5c6471e5a6cc3111249f545.zip
Add save & apply view.
When the user is done making their changes, a view will be animated in which allows the user to save and apply their changes. Change-Id: I7a4eba06709f94c15ec94a48f2d561f84e9f5e42
Diffstat (limited to 'src/org')
-rw-r--r--src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java52
-rw-r--r--src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java35
-rw-r--r--src/org/cyanogenmod/theme/util/Utils.java5
3 files changed, 87 insertions, 5 deletions
diff --git a/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java b/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java
index 3fec568..ee60286 100644
--- a/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java
+++ b/src/org/cyanogenmod/theme/chooserv2/ChooserActivity.java
@@ -34,10 +34,13 @@ import android.util.DisplayMetrics;
import android.util.TypedValue;
import android.view.View;
import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextView;
import org.cyanogenmod.theme.chooser.R;
+import org.cyanogenmod.theme.util.Utils;
public class ChooserActivity extends FragmentActivity
implements LoaderManager.LoaderCallbacks<Cursor>, ThemeManager.ThemeChangeListener {
@@ -60,6 +63,7 @@ public class ChooserActivity extends FragmentActivity
private Button mWallpaper;
private Button mBootani;
private ComponentSelector mSelector;
+ private View mSaveApplyLayout;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -114,6 +118,7 @@ public class ChooserActivity extends FragmentActivity
});
mSelector = (ComponentSelector) findViewById(R.id.component_selector);
+ mSelector.setOnOpenCloseListener(mOpenCloseListener);
if (ComponentSelector.DEBUG_SELECTOR) {
findViewById(R.id.selector_testing).setVisibility(View.VISIBLE);
@@ -135,6 +140,37 @@ public class ChooserActivity extends FragmentActivity
mService = (ThemeManager) getSystemService(Context.THEME_SERVICE);
getSupportLoaderManager().initLoader(0, null, this);
+
+ mSaveApplyLayout = findViewById(R.id.save_apply_layout);
+ if (!Utils.hasNavigationBar(this)) {
+ mSaveApplyLayout.findViewById(R.id.navbar_padding).setVisibility(View.GONE);
+ }
+ mSaveApplyLayout.findViewById(R.id.save_apply_button).setOnClickListener(
+ new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ hideSaveApplyButton();
+ }
+ });
+ }
+
+ private void hideSaveApplyButton() {
+ Animation anim = AnimationUtils.loadAnimation(this, R.anim.component_selection_animate_out);
+ mSaveApplyLayout.startAnimation(anim);
+ anim.setAnimationListener(new Animation.AnimationListener() {
+ @Override
+ public void onAnimationStart(Animation animation) {
+ }
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ mSaveApplyLayout.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onAnimationRepeat(Animation animation) {
+ }
+ });
}
@Override
@@ -147,6 +183,8 @@ public class ChooserActivity extends FragmentActivity
public void onBackPressed() {
if (mSelector.getVisibility() == View.VISIBLE) {
mSelector.hide();
+ } else if (mSaveApplyLayout.getVisibility() == View.VISIBLE) {
+ hideSaveApplyButton();
} else if (mExpanded) {
mExpanded = false;
mContainer.collapse();
@@ -215,6 +253,7 @@ public class ChooserActivity extends FragmentActivity
R.dimen.component_selection_cell_height_boot_anim));
mSelector.setComponentType(ThemesColumns.MODIFIES_BOOT_ANIM);
}
+ if (mSaveApplyLayout.getVisibility() == View.VISIBLE) hideSaveApplyButton();
if (mSelector.getVisibility() == View.GONE) mSelector.show();
}
};
@@ -237,6 +276,19 @@ public class ChooserActivity extends FragmentActivity
}
};
+ private ComponentSelector.OnOpenCloseListener mOpenCloseListener = new ComponentSelector.OnOpenCloseListener() {
+ @Override
+ public void onSelectorOpened() {
+ }
+
+ @Override
+ public void onSelectorClosed() {
+ mSaveApplyLayout.setVisibility(View.VISIBLE);
+ mSaveApplyLayout.startAnimation(AnimationUtils.loadAnimation(ChooserActivity.this,
+ R.anim.component_selection_animate_in));
+ }
+ };
+
private String getFragmentTag(int pos){
return "android:switcher:"+R.id.viewpager+":"+pos;
}
diff --git a/src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java b/src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java
index 30ce474..6a884a3 100644
--- a/src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java
+++ b/src/org/cyanogenmod/theme/chooserv2/ComponentSelector.java
@@ -54,6 +54,7 @@ import com.viewpagerindicator.PageIndicator;
import org.cyanogenmod.theme.chooser.R;
import org.cyanogenmod.theme.util.AudioUtils;
import org.cyanogenmod.theme.util.ThemedTypefaceHelper;
+import org.cyanogenmod.theme.util.Utils;
import java.util.HashMap;
@@ -101,6 +102,8 @@ public class ComponentSelector extends LinearLayout
private OnItemClickedListener mListener;
+ private OnOpenCloseListener mOpenCloseListener;
+
private MediaPlayer mMediaPlayer;
public ComponentSelector(Context context, AttributeSet attrs) {
@@ -120,6 +123,20 @@ public class ComponentSelector extends LinearLayout
R.anim.component_selection_animate_in);
mAnimateOut = AnimationUtils.loadAnimation(mContext,
R.anim.component_selection_animate_out);
+ mAnimateIn.setAnimationListener(new AnimationListener() {
+ @Override
+ public void onAnimationStart(Animation animation) {
+ }
+
+ @Override
+ public void onAnimationEnd(Animation animation) {
+ if (mOpenCloseListener != null) mOpenCloseListener.onSelectorOpened();
+ }
+
+ @Override
+ public void onAnimationRepeat(Animation animation) {
+ }
+ });
mAnimateOut.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
@@ -128,6 +145,7 @@ public class ComponentSelector extends LinearLayout
@Override
public void onAnimationEnd(Animation animation) {
setVisibility(View.GONE);
+ if (mOpenCloseListener != null) mOpenCloseListener.onSelectorClosed();
}
@Override
@@ -147,7 +165,9 @@ public class ComponentSelector extends LinearLayout
indicator.setViewPager(mPager);
// set navbar_padding to GONE if no on screen navigation bar is available
- if (!hasNavigationBar()) findViewById(R.id.navbar_padding).setVisibility(View.GONE);
+ if (!Utils.hasNavigationBar(mContext)) {
+ findViewById(R.id.navbar_padding).setVisibility(View.GONE);
+ }
setNumItemsPerPage(2);
setComponentType(MODIFIES_RINGTONES);
show();
@@ -196,10 +216,6 @@ public class ComponentSelector extends LinearLayout
if (mMediaPlayer != null && mMediaPlayer.isPlaying()) mMediaPlayer.stop();
}
- private boolean hasNavigationBar() {
- return !ViewConfiguration.get(mContext).hasPermanentMenuKey();
- }
-
private int getLoaderIdFromComponent(String component) {
if (MODIFIES_STATUS_BAR.equals(component)) {
return LOADER_ID_STATUS_BAR;
@@ -350,6 +366,10 @@ public class ComponentSelector extends LinearLayout
mListener = listener;
}
+ public void setOnOpenCloseListener(OnOpenCloseListener listener) {
+ mOpenCloseListener = listener;
+ }
+
public class CursorPagerAdapter<T extends View> extends PagerAdapter {
LinearLayout.LayoutParams mItemParams =
new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f);
@@ -690,4 +710,9 @@ public class ComponentSelector extends LinearLayout
public interface OnItemClickedListener {
public void onItemClicked(String pkgName);
}
+
+ public interface OnOpenCloseListener {
+ public void onSelectorOpened();
+ public void onSelectorClosed();
+ }
} \ No newline at end of file
diff --git a/src/org/cyanogenmod/theme/util/Utils.java b/src/org/cyanogenmod/theme/util/Utils.java
index 27e854d..80fdb80 100644
--- a/src/org/cyanogenmod/theme/util/Utils.java
+++ b/src/org/cyanogenmod/theme/util/Utils.java
@@ -24,6 +24,7 @@ import android.graphics.BitmapRegionDecoder;
import android.graphics.Rect;
import android.util.Log;
import android.util.TypedValue;
+import android.view.ViewConfiguration;
import java.io.File;
import java.io.IOException;
@@ -235,4 +236,8 @@ public class Utils {
}
}
}
+
+ public static boolean hasNavigationBar(Context context) {
+ return !ViewConfiguration.get(context).hasPermanentMenuKey();
+ }
}