mirror of
https://github.com/syncthing/syncthing-android.git
synced 2024-11-25 22:01:16 +00:00
Prefer injecting preferences instead of using PreferenceManager directly (#2073)
# Description Prefer injecting preferences instead of using `PreferenceManager.getDefaultSharedPreferences(context)` directly. # Changes * replace `PreferenceManager.getDefaultSharedPreferences(context)` by injecting SharedPreferences instead
This commit is contained in:
parent
3127951ad4
commit
7904afd1ff
7 changed files with 34 additions and 20 deletions
|
@ -4,6 +4,8 @@ import com.nutomic.syncthingandroid.activities.FirstStartActivity;
|
||||||
import com.nutomic.syncthingandroid.activities.FolderPickerActivity;
|
import com.nutomic.syncthingandroid.activities.FolderPickerActivity;
|
||||||
import com.nutomic.syncthingandroid.activities.MainActivity;
|
import com.nutomic.syncthingandroid.activities.MainActivity;
|
||||||
import com.nutomic.syncthingandroid.activities.SettingsActivity;
|
import com.nutomic.syncthingandroid.activities.SettingsActivity;
|
||||||
|
import com.nutomic.syncthingandroid.activities.ShareActivity;
|
||||||
|
import com.nutomic.syncthingandroid.activities.ThemedAppCompatActivity;
|
||||||
import com.nutomic.syncthingandroid.receiver.AppConfigReceiver;
|
import com.nutomic.syncthingandroid.receiver.AppConfigReceiver;
|
||||||
import com.nutomic.syncthingandroid.service.RunConditionMonitor;
|
import com.nutomic.syncthingandroid.service.RunConditionMonitor;
|
||||||
import com.nutomic.syncthingandroid.service.EventProcessor;
|
import com.nutomic.syncthingandroid.service.EventProcessor;
|
||||||
|
@ -34,4 +36,6 @@ public interface DaggerComponent {
|
||||||
void inject(AppConfigReceiver appConfigReceiver);
|
void inject(AppConfigReceiver appConfigReceiver);
|
||||||
void inject(RestApi restApi);
|
void inject(RestApi restApi);
|
||||||
void inject(SettingsActivity.SettingsFragment fragment);
|
void inject(SettingsActivity.SettingsFragment fragment);
|
||||||
|
void inject(ShareActivity activity);
|
||||||
|
void inject(ThemedAppCompatActivity activity);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,6 @@ import androidx.core.content.ContextCompat;
|
||||||
import androidx.viewpager.widget.PagerAdapter;
|
import androidx.viewpager.widget.PagerAdapter;
|
||||||
import androidx.viewpager.widget.ViewPager;
|
import androidx.viewpager.widget.ViewPager;
|
||||||
|
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
@ -240,7 +239,7 @@ public class FirstStartActivity extends Activity {
|
||||||
case API_LEVEL_30:
|
case API_LEVEL_30:
|
||||||
// Skip if running as root, as that circumvents any Android FS restrictions.
|
// Skip if running as root, as that circumvents any Android FS restrictions.
|
||||||
return upgradedToApiLevel30()
|
return upgradedToApiLevel30()
|
||||||
|| PreferenceManager.getDefaultSharedPreferences(this).getBoolean(Constants.PREF_USE_ROOT, false);
|
|| mPreferences.getBoolean(Constants.PREF_USE_ROOT, false);
|
||||||
case NOTIFICATION:
|
case NOTIFICATION:
|
||||||
return isNotificationPermissionGranted();
|
return isNotificationPermissionGranted();
|
||||||
|
|
||||||
|
|
|
@ -6,11 +6,10 @@ import android.content.ComponentName;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Build;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
import androidx.core.content.ContextCompat;
|
import androidx.core.content.ContextCompat;
|
||||||
|
@ -42,6 +41,8 @@ import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Activity that allows selecting a directory in the local file system.
|
* Activity that allows selecting a directory in the local file system.
|
||||||
*/
|
*/
|
||||||
|
@ -68,6 +69,9 @@ public class FolderPickerActivity extends SyncthingActivity
|
||||||
*/
|
*/
|
||||||
private File mLocation;
|
private File mLocation;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mPreferences;
|
||||||
|
|
||||||
public static Intent createIntent(Context context, String initialDirectory, @Nullable String rootDirectory) {
|
public static Intent createIntent(Context context, String initialDirectory, @Nullable String rootDirectory) {
|
||||||
Intent intent = new Intent(context, FolderPickerActivity.class);
|
Intent intent = new Intent(context, FolderPickerActivity.class);
|
||||||
|
|
||||||
|
@ -103,7 +107,7 @@ public class FolderPickerActivity extends SyncthingActivity
|
||||||
displayRoot();
|
displayRoot();
|
||||||
}
|
}
|
||||||
|
|
||||||
Boolean prefUseRoot = PreferenceManager.getDefaultSharedPreferences(this).getBoolean(Constants.PREF_USE_ROOT, false);
|
Boolean prefUseRoot = mPreferences.getBoolean(Constants.PREF_USE_ROOT, false);
|
||||||
if (!prefUseRoot) {
|
if (!prefUseRoot) {
|
||||||
Toast.makeText(this, R.string.kitkat_external_storage_warning, Toast.LENGTH_LONG)
|
Toast.makeText(this, R.string.kitkat_external_storage_warning, Toast.LENGTH_LONG)
|
||||||
.show();
|
.show();
|
||||||
|
@ -133,8 +137,7 @@ public class FolderPickerActivity extends SyncthingActivity
|
||||||
roots.add(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS));
|
roots.add(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS));
|
||||||
|
|
||||||
// Add paths that might not be accessible to Syncthing.
|
// Add paths that might not be accessible to Syncthing.
|
||||||
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
|
if (mPreferences.getBoolean("advanced_folder_picker", false)) {
|
||||||
if (sp.getBoolean("advanced_folder_picker", false)) {
|
|
||||||
Collections.addAll(roots, new File("/storage/").listFiles());
|
Collections.addAll(roots, new File("/storage/").listFiles());
|
||||||
roots.add(new File("/"));
|
roots.add(new File("/"));
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,6 @@ import android.preference.ListPreference;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
import android.preference.PreferenceGroup;
|
import android.preference.PreferenceGroup;
|
||||||
import android.preference.PreferenceFragment;
|
import android.preference.PreferenceFragment;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import android.preference.PreferenceScreen;
|
import android.preference.PreferenceScreen;
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
|
@ -268,7 +267,6 @@ public class SettingsActivity extends SyncthingActivity {
|
||||||
mHttpProxyAddress.setOnPreferenceChangeListener(this);
|
mHttpProxyAddress.setOnPreferenceChangeListener(this);
|
||||||
|
|
||||||
/* Initialize summaries */
|
/* Initialize summaries */
|
||||||
mPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
|
|
||||||
screen.findPreference(Constants.PREF_POWER_SOURCE).setSummary(mPowerSource.getEntry());
|
screen.findPreference(Constants.PREF_POWER_SOURCE).setSummary(mPowerSource.getEntry());
|
||||||
String wifiSsidSummary = TextUtils.join(", ", mPreferences.getStringSet(Constants.PREF_WIFI_SSID_WHITELIST, new HashSet<>()));
|
String wifiSsidSummary = TextUtils.join(", ", mPreferences.getStringSet(Constants.PREF_WIFI_SSID_WHITELIST, new HashSet<>()));
|
||||||
screen.findPreference(Constants.PREF_WIFI_SSID_WHITELIST).setSummary(TextUtils.isEmpty(wifiSsidSummary) ?
|
screen.findPreference(Constants.PREF_WIFI_SSID_WHITELIST).setSummary(TextUtils.isEmpty(wifiSsidSummary) ?
|
||||||
|
|
|
@ -5,11 +5,11 @@ import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HI
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.AsyncTask;
|
import android.os.AsyncTask;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import android.provider.MediaStore;
|
import android.provider.MediaStore;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
@ -23,6 +23,7 @@ import android.widget.Toast;
|
||||||
|
|
||||||
import com.google.common.io.Files;
|
import com.google.common.io.Files;
|
||||||
import com.nutomic.syncthingandroid.R;
|
import com.nutomic.syncthingandroid.R;
|
||||||
|
import com.nutomic.syncthingandroid.SyncthingApp;
|
||||||
import com.nutomic.syncthingandroid.databinding.ActivityShareBinding;
|
import com.nutomic.syncthingandroid.databinding.ActivityShareBinding;
|
||||||
import com.nutomic.syncthingandroid.model.Folder;
|
import com.nutomic.syncthingandroid.model.Folder;
|
||||||
import com.nutomic.syncthingandroid.service.SyncthingService;
|
import com.nutomic.syncthingandroid.service.SyncthingService;
|
||||||
|
@ -40,6 +41,8 @@ import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shares incoming files to syncthing folders.
|
* Shares incoming files to syncthing folders.
|
||||||
* <p>
|
* <p>
|
||||||
|
@ -60,6 +63,9 @@ public class ShareActivity extends StateDialogActivity
|
||||||
|
|
||||||
private ActivityShareBinding binding;
|
private ActivityShareBinding binding;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mPreferences;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onServiceStateChange(SyncthingService.State currentState) {
|
public void onServiceStateChange(SyncthingService.State currentState) {
|
||||||
if (currentState != SyncthingService.State.ACTIVE || getApi() == null)
|
if (currentState != SyncthingService.State.ACTIVE || getApi() == null)
|
||||||
|
@ -69,8 +75,7 @@ public class ShareActivity extends StateDialogActivity
|
||||||
|
|
||||||
// Get the index of the previously selected folder.
|
// Get the index of the previously selected folder.
|
||||||
int folderIndex = 0;
|
int folderIndex = 0;
|
||||||
String savedFolderId = PreferenceManager.getDefaultSharedPreferences(this)
|
String savedFolderId = mPreferences.getString(PREF_PREVIOUSLY_SELECTED_SYNCTHING_FOLDER, "");
|
||||||
.getString(PREF_PREVIOUSLY_SELECTED_SYNCTHING_FOLDER, "");
|
|
||||||
for (Folder folder : folders) {
|
for (Folder folder : folders) {
|
||||||
if (folder.id.equals(savedFolderId)) {
|
if (folder.id.equals(savedFolderId)) {
|
||||||
folderIndex = folders.indexOf(folder);
|
folderIndex = folders.indexOf(folder);
|
||||||
|
@ -102,6 +107,7 @@ public class ShareActivity extends StateDialogActivity
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
((SyncthingApp) getApplication()).component().inject(this);
|
||||||
binding = ActivityShareBinding.inflate(getLayoutInflater());
|
binding = ActivityShareBinding.inflate(getLayoutInflater());
|
||||||
setContentView(binding.getRoot());
|
setContentView(binding.getRoot());
|
||||||
|
|
||||||
|
@ -266,8 +272,7 @@ public class ShareActivity extends StateDialogActivity
|
||||||
String savedSubDirectory = "";
|
String savedSubDirectory = "";
|
||||||
|
|
||||||
if (selectedFolder != null) {
|
if (selectedFolder != null) {
|
||||||
savedSubDirectory = PreferenceManager.getDefaultSharedPreferences(this)
|
savedSubDirectory = mPreferences.getString(PREF_FOLDER_SAVED_SUBDIRECTORY + selectedFolder.id, "");
|
||||||
.getString(PREF_FOLDER_SAVED_SUBDIRECTORY + selectedFolder.id, "");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return savedSubDirectory;
|
return savedSubDirectory;
|
||||||
|
@ -362,7 +367,7 @@ public class ShareActivity extends StateDialogActivity
|
||||||
super.onPause();
|
super.onPause();
|
||||||
if (mFoldersSpinner.getSelectedItem() != null) {
|
if (mFoldersSpinner.getSelectedItem() != null) {
|
||||||
Folder selectedFolder = (Folder) mFoldersSpinner.getSelectedItem();
|
Folder selectedFolder = (Folder) mFoldersSpinner.getSelectedItem();
|
||||||
PreferenceManager.getDefaultSharedPreferences(this).edit()
|
mPreferences.edit()
|
||||||
.putString(PREF_PREVIOUSLY_SELECTED_SYNCTHING_FOLDER, selectedFolder.id)
|
.putString(PREF_PREVIOUSLY_SELECTED_SYNCTHING_FOLDER, selectedFolder.id)
|
||||||
.apply();
|
.apply();
|
||||||
}
|
}
|
||||||
|
@ -379,7 +384,7 @@ public class ShareActivity extends StateDialogActivity
|
||||||
subDirectory = subDirectory.replace(folderDirectory, "");
|
subDirectory = subDirectory.replace(folderDirectory, "");
|
||||||
mSubDirectoryTextView.setText(subDirectory);
|
mSubDirectoryTextView.setText(subDirectory);
|
||||||
|
|
||||||
PreferenceManager.getDefaultSharedPreferences(this)
|
mPreferences
|
||||||
.edit().putString(PREF_FOLDER_SAVED_SUBDIRECTORY + selectedFolder.id, subDirectory)
|
.edit().putString(PREF_FOLDER_SAVED_SUBDIRECTORY + selectedFolder.id, subDirectory)
|
||||||
.apply();
|
.apply();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,14 @@ package com.nutomic.syncthingandroid.activities;
|
||||||
|
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.preference.PreferenceManager;
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
import androidx.appcompat.app.AppCompatDelegate;
|
import androidx.appcompat.app.AppCompatDelegate;
|
||||||
|
|
||||||
|
import com.nutomic.syncthingandroid.SyncthingApp;
|
||||||
import com.nutomic.syncthingandroid.service.Constants;
|
import com.nutomic.syncthingandroid.service.Constants;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides a themed instance of AppCompatActivity.
|
* Provides a themed instance of AppCompatActivity.
|
||||||
*/
|
*/
|
||||||
|
@ -15,12 +17,15 @@ public class ThemedAppCompatActivity extends AppCompatActivity {
|
||||||
|
|
||||||
private static final String FOLLOW_SYSTEM = "-1";
|
private static final String FOLLOW_SYSTEM = "-1";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
SharedPreferences mPreferences;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
((SyncthingApp) getApplication()).component().inject(this);
|
||||||
// Load theme.
|
// Load theme.
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
|
||||||
//For api level below 28, Follow system fall backs to light mode
|
//For api level below 28, Follow system fall backs to light mode
|
||||||
Integer prefAppTheme = Integer.parseInt(prefs.getString(Constants.PREF_APP_THEME, FOLLOW_SYSTEM));
|
Integer prefAppTheme = Integer.parseInt(mPreferences.getString(Constants.PREF_APP_THEME, FOLLOW_SYSTEM));
|
||||||
AppCompatDelegate.setDefaultNightMode(prefAppTheme);
|
AppCompatDelegate.setDefaultNightMode(prefAppTheme);
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit bdfd0f0548d2f6fc4b5500690dbd383baa3b0561
|
Subproject commit 683b48182c08095bb396b810d0cbe40f8bccd348
|
Loading…
Reference in a new issue