diff options
4 files changed, 58 insertions, 31 deletions
diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 0e5ccbd..ca7a10f 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -68,6 +68,19 @@ <string-array name="transitions_default" translatable="false"/> + <integer-array name="transitions_intervals_values" translatable="false"> + <item>0</item> + <item>1000</item> + <item>2000</item> + <item>3000</item> + <item>5000</item> + <item>8000</item> + <item>10000</item> + <item>15000</item> + <item>30000</item> + <item>60000</item> + </integer-array> + <string-array name="effects_labels" translatable="false"> <item>@string/effects_noeffect</item> <item>@string/effects_autofix</item> diff --git a/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java b/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java index 1ca7656..cce6b3a 100644 --- a/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java +++ b/src/com/ruesga/android/wallpapers/photophase/PhotoPhaseRenderer.java @@ -578,15 +578,24 @@ public class PhotoPhaseRenderer implements GLSurfaceView.Renderer { // Now draw the world (all the photo frames with effects) mWorld.draw(mMVPMatrix); - // Check if we have some pending transition or transition has exceed its timeout - if (!mWorld.hasRunningTransition() || firedTransitionTimeout()) { - mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); - - // Now start a delayed thread to generate the next effect - deselectCurrentTransition(); - mLastRunningTransition = 0; - mHandler.postDelayed(mTransitionThread, - Preferences.General.Transitions.getTransitionInterval()); + // Check if we have some pending transition or transition has + // exceed its timeout + if (Preferences.General.Transitions.getTransitionInterval() > 0) { + if (!mWorld.hasRunningTransition() || firedTransitionTimeout()) { + mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); + + // Now start a delayed thread to generate the next effect + deselectCurrentTransition(); + mLastRunningTransition = 0; + mHandler.postDelayed(mTransitionThread, + Preferences.General.Transitions.getTransitionInterval()); + } + } else { + // Just display the initial frames and never make transitions + if (!mWorld.hasRunningTransition() || firedTransitionTimeout()) { + mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); + mDispatcher.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY); + } } } diff --git a/src/com/ruesga/android/wallpapers/photophase/preferences/GeneralPreferenceFragment.java b/src/com/ruesga/android/wallpapers/photophase/preferences/GeneralPreferenceFragment.java index d5264f7..02cf741 100644 --- a/src/com/ruesga/android/wallpapers/photophase/preferences/GeneralPreferenceFragment.java +++ b/src/com/ruesga/android/wallpapers/photophase/preferences/GeneralPreferenceFragment.java @@ -18,6 +18,8 @@ package com.ruesga.android.wallpapers.photophase.preferences; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; +import android.content.res.Resources; import android.os.Bundle; import android.preference.CheckBoxPreference; import android.preference.ListPreference; @@ -34,8 +36,6 @@ import com.ruesga.android.wallpapers.photophase.preferences.PreferencesProvider. import com.ruesga.android.wallpapers.photophase.preferences.SeekBarProgressPreference.OnDisplayProgress; import com.ruesga.android.wallpapers.photophase.widgets.ColorPickerPreference; -import java.text.DecimalFormat; - /** * A fragment class with all the general settings */ @@ -113,9 +113,8 @@ public class GeneralPreferenceFragment extends PreferenceFragment { getPreferenceManager().setSharedPreferencesName(PreferencesProvider.PREFERENCES_FILE); getPreferenceManager().setSharedPreferencesMode(Context.MODE_PRIVATE); - final DecimalFormat df = new DecimalFormat(); - df.setMinimumFractionDigits(0); - df.setMaximumIntegerDigits(1); + final SharedPreferences prefs = getPreferenceManager().getSharedPreferences(); + final Resources res = getActivity().getResources(); // Add the preferences addPreferencesFromResource(R.xml.preferences_general); @@ -136,16 +135,20 @@ public class GeneralPreferenceFragment extends PreferenceFragment { mTransitionsTypes = (MultiSelectListPreference)findPreference("ui_transition_types"); mTransitionsTypes.setOnPreferenceChangeListener(mOnChangeListener); + final int[] transitionsIntervals = res.getIntArray(R.array.transitions_intervals_values); mTransitionsInterval = (SeekBarProgressPreference)findPreference("ui_transition_interval"); mTransitionsInterval.setFormat(getString(R.string.pref_general_transitions_interval_format)); - int max = Preferences.General.Transitions.MAX_TRANSITION_INTERVAL; - int min = Preferences.General.Transitions.MIN_TRANSITION_INTERVAL; - final int MAX = ((max - min) / 1000) * 2; - mTransitionsInterval.setMax(MAX); + mTransitionsInterval.setMax(transitionsIntervals.length - 1); + int transitionInterval = prefs.getInt("ui_transition_interval", + Preferences.General.Transitions.DEFAULT_TRANSITION_INTERVAL_INDEX); + if (transitionInterval > (transitionsIntervals.length - 1)) { + mTransitionsInterval.setProgress( + Preferences.General.Transitions.DEFAULT_TRANSITION_INTERVAL_INDEX); + } mTransitionsInterval.setOnDisplayProgress(new OnDisplayProgress() { @Override public String onDisplayProgress(int progress) { - return df.format((progress * 0.5) + 1); + return String.valueOf(transitionsIntervals[progress] / 1000); } }); mTransitionsInterval.setOnPreferenceChangeListener(mOnChangeListener); diff --git a/src/com/ruesga/android/wallpapers/photophase/preferences/PreferencesProvider.java b/src/com/ruesga/android/wallpapers/photophase/preferences/PreferencesProvider.java index b59805a..f134516 100644 --- a/src/com/ruesga/android/wallpapers/photophase/preferences/PreferencesProvider.java +++ b/src/com/ruesga/android/wallpapers/photophase/preferences/PreferencesProvider.java @@ -19,7 +19,9 @@ package com.ruesga.android.wallpapers.photophase.preferences; import android.content.Context; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; +import android.content.res.Resources; +import com.ruesga.android.wallpapers.photophase.R; import com.ruesga.android.wallpapers.photophase.utils.GLESUtil.GLColor; import com.ruesga.android.wallpapers.photophase.effects.Effects.EFFECTS; import com.ruesga.android.wallpapers.photophase.model.Disposition; @@ -92,6 +94,11 @@ public final class PreferencesProvider { private static Map<String, ?> mPreferences = new HashMap<String, Object>(); /** + * @hide + */ + /*package*/ static int[] TRANSITIONS_INTERVALS; + + /** * Method that loads the all the preferences of the application * * @param context The current context @@ -100,6 +107,9 @@ public final class PreferencesProvider { SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_FILE, Context.MODE_PRIVATE); mPreferences = preferences.getAll(); + + final Resources res = context.getResources(); + TRANSITIONS_INTERVALS = res.getIntArray(R.array.transitions_intervals_values); } /** @@ -221,15 +231,7 @@ public final class PreferencesProvider { /** * The default transition interval */ - public static final int DEFAULT_TRANSITION_INTERVAL = 2000; - /** - * The minimum transition interval - */ - public static final int MIN_TRANSITION_INTERVAL = 1000; - /** - * The maximum transition interval - */ - public static final int MAX_TRANSITION_INTERVAL = 8000; + public static final int DEFAULT_TRANSITION_INTERVAL_INDEX = 2; /** * Return the current user preference about the transition to apply to @@ -258,9 +260,9 @@ public final class PreferencesProvider { * @return int The milliseconds in which the next transition will be triggered */ public static int getTransitionInterval() { - int def = (DEFAULT_TRANSITION_INTERVAL / 500) - 2; - int interval = getInt("ui_transition_interval", def); - return (interval * 500) + 1000; + int interval = getInt("ui_transition_interval", + DEFAULT_TRANSITION_INTERVAL_INDEX); + return TRANSITIONS_INTERVALS[interval]; } } |