diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d93acfe4..2a11aa70 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -74,6 +74,9 @@ + diff --git a/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java b/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java new file mode 100644 index 00000000..b057f331 --- /dev/null +++ b/app/src/main/java/com/dkanada/gramophone/glide/CustomGlideModule.java @@ -0,0 +1,32 @@ +package com.dkanada.gramophone.glide; + +import android.content.Context; +import android.os.Environment; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.GlideBuilder; +import com.bumptech.glide.load.engine.cache.DiskLruCacheFactory; +import com.bumptech.glide.module.GlideModule; +import com.dkanada.gramophone.App; +import com.dkanada.gramophone.util.PreferenceUtil; + +import java.io.File; + +public class CustomGlideModule implements GlideModule { + @Override + public void applyOptions(Context context, GlideBuilder builder) { + builder.setDiskCache(new DiskLruCacheFactory(new DiskLruCacheFactory.CacheDirectoryGetter() { + @Override + public File getCacheDirectory() { + String folder = "/Gelli/images"; + return PreferenceUtil.getInstance(App.getInstance()).getImagesExternalDirectory() + ? new File(Environment.getExternalStorageDirectory() + folder) + : new File(App.getInstance().getApplicationInfo().dataDir + folder); + } + }, PreferenceUtil.getInstance(App.getInstance()).getImagesCacheSize())); + } + + @Override + public void registerComponents(Context context, Glide glide) { + } +} diff --git a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java index 3cb37bf4..f9c00b6f 100644 --- a/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java +++ b/app/src/main/java/com/dkanada/gramophone/ui/activities/SettingsActivity.java @@ -121,6 +121,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia addPreferencesFromResource(R.xml.pref_now_playing_screen); addPreferencesFromResource(R.xml.pref_lockscreen); addPreferencesFromResource(R.xml.pref_audio); + addPreferencesFromResource(R.xml.pref_images); } @Nullable diff --git a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java index 9e233c30..9ba7d58b 100644 --- a/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java +++ b/app/src/main/java/com/dkanada/gramophone/util/PreferenceUtil.java @@ -64,6 +64,9 @@ public final class PreferenceUtil { public static final String REMEMBER_SHUFFLE = "remember_shuffle"; public static final String REMEMBER_QUEUE = "remember_queue"; + public static final String IMAGES_CACHE_SIZE = "images_cache_size"; + public static final String IMAGES_EXTERNAL_DIRECTORY = "images_external_directory"; + public static final String SLEEP_TIMER_LAST_VALUE = "sleep_timer_last_value"; public static final String SLEEP_TIMER_ELAPSED_REALTIME = "sleep_timer_elapsed_real_time"; public static final String SLEEP_TIMER_FINISH_SONG = "sleep_timer_finish_music"; @@ -118,6 +121,14 @@ public final class PreferenceUtil { return Integer.parseInt(mPreferences.getString(MAXIMUM_LIST_SIZE, "100")); } + public final int getImagesCacheSize() { + return Integer.parseInt(mPreferences.getString(IMAGES_CACHE_SIZE, "400000000")); + } + + public final boolean getImagesExternalDirectory() { + return mPreferences.getBoolean(IMAGES_EXTERNAL_DIRECTORY, false); + } + public final int getLastTab() { return mPreferences.getInt(LAST_TAB, 0); } diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 09e7738e..63649e47 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -52,4 +52,20 @@ 100 + + @string/unlimited + 2GB + 1GB + 400MB + 200MB + + + + 10000000000 + 2000000000 + 1000000000 + 400000000 + 200000000 + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ec4ed028..b6848ee2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -92,6 +92,7 @@ Colors Now Playing Audio + Images Library Lockscreen Notification @@ -116,6 +117,9 @@ Remember Shuffle Remember Queue Maximum List Size + Cache Size + External Directory + Store the image cache in an external directory to keep the files between installs. The primary theme color for control elements. An alternate color used to accent elements. Uses the current song\'s album cover as the lockscreen wallpaper. diff --git a/app/src/main/res/xml/pref_images.xml b/app/src/main/res/xml/pref_images.xml new file mode 100644 index 00000000..69ee78a5 --- /dev/null +++ b/app/src/main/res/xml/pref_images.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + \ No newline at end of file