feat: added external memory cache option

This commit is contained in:
CappielloAntonio 2024-05-26 14:49:57 +02:00
parent c4e8fe5261
commit 477331da6f
7 changed files with 188 additions and 4 deletions

View file

@ -3,6 +3,7 @@ package com.cappielloantonio.tempo.ui.fragment;
import android.content.Intent;
import android.media.audiofx.AudioEffect;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@ -30,8 +31,8 @@ import com.cappielloantonio.tempo.ui.activity.MainActivity;
import com.cappielloantonio.tempo.ui.dialog.DeleteDownloadStorageDialog;
import com.cappielloantonio.tempo.ui.dialog.DownloadStorageDialog;
import com.cappielloantonio.tempo.ui.dialog.StarredSyncDialog;
import com.cappielloantonio.tempo.ui.dialog.StreamingCacheStorageDialog;
import com.cappielloantonio.tempo.util.DownloadUtil;
import com.cappielloantonio.tempo.util.MusicUtil;
import com.cappielloantonio.tempo.util.Preferences;
import com.cappielloantonio.tempo.util.UIUtil;
import com.cappielloantonio.tempo.viewmodel.SettingViewModel;
@ -84,6 +85,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
super.onResume();
checkEqualizer();
checkCacheStorage();
checkStorage();
setStreamingCacheSize();
@ -93,6 +95,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
actionLogout();
actionScan();
actionSyncStarredTracks();
actionChangeStreamingCacheStorage();
actionChangeDownloadStorage();
actionDeleteDownloadStorage();
actionKeepScreenOn();
@ -135,6 +138,22 @@ public class SettingsFragment extends PreferenceFragmentCompat {
}
}
private void checkCacheStorage() {
Preference storage = findPreference("streaming_cache_storage");
if (storage == null) return;
try {
if (requireContext().getExternalFilesDirs(null)[1] == null) {
storage.setVisible(false);
} else {
storage.setSummary(Preferences.getDownloadStoragePreference() == 0 ? R.string.download_storage_internal_dialog_negative_button : R.string.download_storage_external_dialog_positive_button);
}
} catch (Exception exception) {
storage.setVisible(false);
}
}
private void checkStorage() {
Preference storage = findPreference("download_storage");
@ -213,7 +232,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
@Override
public void onSuccess(boolean isScanning, long count) {
getScanStatus();
findPreference("scan_library").setSummary("Scanning: counting " + count + " tracks");
if (isScanning) getScanStatus();
}
});
@ -233,6 +253,24 @@ public class SettingsFragment extends PreferenceFragmentCompat {
});
}
private void actionChangeStreamingCacheStorage() {
findPreference("streaming_cache_storage").setOnPreferenceClickListener(preference -> {
StreamingCacheStorageDialog dialog = new StreamingCacheStorageDialog(new DialogClickCallback() {
@Override
public void onPositiveClick() {
findPreference("streaming_cache_storage").setSummary(R.string.streaming_cache_storage_external_dialog_positive_button);
}
@Override
public void onNegativeClick() {
findPreference("streaming_cache_storage").setSummary(R.string.streaming_cache_storage_internal_dialog_negative_button);
}
});
dialog.show(activity.getSupportFragmentManager(), null);
return true;
});
}
private void actionChangeDownloadStorage() {
findPreference("download_storage").setOnPreferenceClickListener(preference -> {
DownloadStorageDialog dialog = new DownloadStorageDialog(new DialogClickCallback() {