add two settings to configure image caching

This commit is contained in:
dkanada 2020-06-20 02:00:02 +09:00
commit ee6fd61d43
7 changed files with 93 additions and 0 deletions

View file

@ -74,6 +74,9 @@
<meta-data <meta-data
android:name="com.lge.support.SPLIT_WINDOW" android:name="com.lge.support.SPLIT_WINDOW"
android:value="true" /> android:value="true" />
<meta-data
android:name="com.dkanada.gramophone.glide.CustomGlideModule"
android:value="GlideModule" />
<meta-data <meta-data
android:name="com.bumptech.glide.integration.okhttp3.OkHttpGlideModule" android:name="com.bumptech.glide.integration.okhttp3.OkHttpGlideModule"
android:value="GlideModule" /> android:value="GlideModule" />

View file

@ -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) {
}
}

View file

@ -121,6 +121,7 @@ public class SettingsActivity extends AbsBaseActivity implements ColorChooserDia
addPreferencesFromResource(R.xml.pref_now_playing_screen); addPreferencesFromResource(R.xml.pref_now_playing_screen);
addPreferencesFromResource(R.xml.pref_lockscreen); addPreferencesFromResource(R.xml.pref_lockscreen);
addPreferencesFromResource(R.xml.pref_audio); addPreferencesFromResource(R.xml.pref_audio);
addPreferencesFromResource(R.xml.pref_images);
} }
@Nullable @Nullable

View file

@ -64,6 +64,9 @@ public final class PreferenceUtil {
public static final String REMEMBER_SHUFFLE = "remember_shuffle"; public static final String REMEMBER_SHUFFLE = "remember_shuffle";
public static final String REMEMBER_QUEUE = "remember_queue"; 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_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_ELAPSED_REALTIME = "sleep_timer_elapsed_real_time";
public static final String SLEEP_TIMER_FINISH_SONG = "sleep_timer_finish_music"; 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")); 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() { public final int getLastTab() {
return mPreferences.getInt(LAST_TAB, 0); return mPreferences.getInt(LAST_TAB, 0);
} }

View file

@ -52,4 +52,20 @@
<item>100</item> <item>100</item>
</string-array> </string-array>
<string-array name="pref_images_cache_size_titles">
<item>@string/unlimited</item>
<item>2GB</item>
<item>1GB</item>
<item>400MB</item>
<item>200MB</item>
</string-array>
<string-array name="pref_images_cache_size_values">
<item>10000000000</item>
<item>2000000000</item>
<item>1000000000</item>
<item>400000000</item>
<item>200000000</item>
</string-array>
</resources> </resources>

View file

@ -92,6 +92,7 @@
<string name="pref_header_colors">Colors</string> <string name="pref_header_colors">Colors</string>
<string name="pref_header_now_playing_screen">Now Playing</string> <string name="pref_header_now_playing_screen">Now Playing</string>
<string name="pref_header_audio">Audio</string> <string name="pref_header_audio">Audio</string>
<string name="pref_header_images">Images</string>
<string name="pref_header_library">Library</string> <string name="pref_header_library">Library</string>
<string name="pref_header_lockscreen">Lockscreen</string> <string name="pref_header_lockscreen">Lockscreen</string>
<string name="pref_header_notification">Notification</string> <string name="pref_header_notification">Notification</string>
@ -116,6 +117,9 @@
<string name="pref_title_remember_shuffle">Remember Shuffle</string> <string name="pref_title_remember_shuffle">Remember Shuffle</string>
<string name="pref_title_remember_queue">Remember Queue</string> <string name="pref_title_remember_queue">Remember Queue</string>
<string name="pref_title_maximum_list_size">Maximum List Size</string> <string name="pref_title_maximum_list_size">Maximum List Size</string>
<string name="pref_title_images_cache_size">Cache Size</string>
<string name="pref_title_images_external_directory">External Directory</string>
<string name="pref_summary_images_external_directory">Store the image cache in an external directory to keep the files between installs.</string>
<string name="primary_color_desc">The primary theme color for control elements.</string> <string name="primary_color_desc">The primary theme color for control elements.</string>
<string name="accent_color_desc">An alternate color used to accent elements.</string> <string name="accent_color_desc">An alternate color used to accent elements.</string>
<string name="pref_summary_album_art_on_lockscreen">Uses the current song\'s album cover as the lockscreen wallpaper.</string> <string name="pref_summary_album_art_on_lockscreen">Uses the current song\'s album cover as the lockscreen wallpaper.</string>

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory android:title="@string/pref_header_images">
<com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEListPreference
app:iconSpaceReserved="false"
android:defaultValue="400000000"
android:entries="@array/pref_images_cache_size_titles"
android:entryValues="@array/pref_images_cache_size_values"
android:key="images_cache_size"
android:negativeButtonText="@null"
android:positiveButtonText="@null"
android:title="@string/pref_title_images_cache_size" />
<com.kabouzeid.appthemehelper.common.prefs.supportv7.ATESwitchPreference
app:iconSpaceReserved="false"
android:defaultValue="false"
android:key="images_external_directory"
android:summary="@string/pref_summary_images_external_directory"
android:title="@string/pref_title_images_external_directory" />
</com.kabouzeid.appthemehelper.common.prefs.supportv7.ATEPreferenceCategory>
</androidx.preference.PreferenceScreen>