Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/news-android.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfabienli <fab@lisiecki.fr>2021-06-15 14:07:32 +0300
committerfabienli <fab@lisiecki.fr>2021-06-16 13:49:12 +0300
commit3d0d40ff276694f19558db296eff5c8d567faa17 (patch)
tree80758d68a0e3a610cf0db1d7a9b2906756f93d1c /News-Android-App/src/main/java/de/luhmer
parent3d4db3e7e9d1a7cb0dd8eef9d9af1f7d5883660d (diff)
sync interval setting is done via a popup
Signed-off-by: fabienli <fab@lisiecki.fr>
Diffstat (limited to 'News-Android-App/src/main/java/de/luhmer')
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java2
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java1
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java62
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SyncIntervalSelectorActivity.java192
-rw-r--r--News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/di/AppComponent.java3
5 files changed, 62 insertions, 198 deletions
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
index 5b0ffd5c..34138f2e 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/NewsReaderListActivity.java
@@ -391,7 +391,7 @@ public class NewsReaderListActivity extends PodcastFragmentActivity implements
Account account = new Account(getString(R.string.app_name), accountType);
mAccountManager.addAccountExplicitly(account, "", new Bundle());
- SyncIntervalSelectorActivity.setAccountSyncInterval(this, mPrefs);
+ SettingsFragment.setAccountSyncInterval(this, R.integer.default_sync_minutes);
}
}
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java
index 757ad2c4..602906ba 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsActivity.java
@@ -80,6 +80,7 @@ public class SettingsActivity extends AppCompatActivity {
public static final String PREF_SERVER_SETTINGS = "pref_server_settings";
public static final String PREF_SYNC_SETTINGS = "pref_sync_settings";
+ public static final String SYNC_INTERVAL_IN_MINUTES_STRING_DEPRECATED = "SYNC_INTERVAL_IN_MINUTES_STRING";
public static final String SP_APP_THEME = "sp_app_theme";
public static final String CB_OLED_MODE = "cb_oled_mode";
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java
index fba6676a..576fd573 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SettingsFragment.java
@@ -1,8 +1,11 @@
package de.luhmer.owncloudnewsreader;
+import android.accounts.Account;
+import android.accounts.AccountManager;
import android.app.Activity;
import android.app.DialogFragment;
import android.app.ProgressDialog;
+import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
@@ -32,6 +35,7 @@ import java.util.Map;
import javax.inject.Inject;
import javax.inject.Named;
+import de.luhmer.owncloudnewsreader.authentication.AccountGeneral;
import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm;
import de.luhmer.owncloudnewsreader.helper.ImageHandler;
import de.luhmer.owncloudnewsreader.helper.NewsFileUtils;
@@ -63,6 +67,7 @@ import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SEARCH_IN;
import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SORT_ORDER;
import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_LEFT_ACTION;
import static de.luhmer.owncloudnewsreader.SettingsActivity.SP_SWIPE_RIGHT_ACTION;
+import static de.luhmer.owncloudnewsreader.SettingsActivity.SYNC_INTERVAL_IN_MINUTES_STRING_DEPRECATED;
public class SettingsFragment extends PreferenceFragmentCompat {
@@ -79,6 +84,8 @@ public class SettingsFragment extends PreferenceFragmentCompat {
version = VersionInfoDialogFragment.getVersionString(getActivity());
+ migrateSyncIntervalValue(); // migrates pref SYNC_INTERVAL_IN_MINUTES_STRING to pref_sync_settings
+
addPreferencesFromResource(R.xml.pref_general);
bindGeneralPreferences(this);
@@ -135,6 +142,10 @@ public class SettingsFragment extends PreferenceFragmentCompat {
// value "1" means Light theme
preference.getPreferenceManager().findPreference(CB_OLED_MODE).setEnabled(!value.equals("1"));
}
+ else if(PREF_SYNC_SETTINGS.equals(preference.getKey())) {
+ // set the sync value in account
+ setAccountSyncInterval(preference.getContext(), Integer.parseInt(stringValue));
+ }
} else {
String key = preference.getKey();
@@ -191,6 +202,7 @@ public class SettingsFragment extends PreferenceFragmentCompat {
mPrefs.getBoolean(preference.getKey(), false));
}
+
// TODO DO WE NEED THE CODE BELOW?!!
/*
@Nullable
@@ -236,8 +248,31 @@ public class SettingsFragment extends PreferenceFragmentCompat {
bindPreferenceSummaryToValue(prefFrag.findPreference(SP_SWIPE_LEFT_ACTION));
}
+ /**
+ * migrates pref SYNC_INTERVAL_IN_MINUTES_STRING to pref_sync_settings
+ * temporary function, could be removed whenever is wished
+ */
+ private void migrateSyncIntervalValue() {
+ // For migration compatibility, in case preference SYNC_INTERVAL_IN_MINUTES_STRING is there
+ // we migrate its value in PREF_SYNC_SETTINGS
+ int minutes = mPrefs.getInt(SYNC_INTERVAL_IN_MINUTES_STRING_DEPRECATED, -1);
+ if (minutes != -1) { // we need to migrate
+ mPrefs.edit().putString(PREF_SYNC_SETTINGS, String.valueOf(minutes)).commit();
+ mPrefs.edit().remove(SYNC_INTERVAL_IN_MINUTES_STRING_DEPRECATED).commit();
+ }
+ // impact if the above code is removed:
+ // the list will show the default sync interval value of 15min
+ // whereas the user may have configured some other value
+ // once the user selects a value, this new value is actually used; and no more impact is expected
+
+ }
+
private void bindDataSyncPreferences(final PreferenceFragmentCompat prefFrag)
{
+
+ // handle the sync interval list:
+ bindPreferenceSummaryToValue(prefFrag.findPreference(PREF_SYNC_SETTINGS));
+
// String[] authorities = { "de.luhmer.owncloudnewsreader" };
// Intent intentSyncSettings = new Intent(Settings.ACTION_SYNC_SETTINGS);
// intentSyncSettings.putExtra(Settings.EXTRA_AUTHORITIES, authorities);
@@ -245,8 +280,6 @@ public class SettingsFragment extends PreferenceFragmentCompat {
// String[] authorities = { "de.luhmer.owncloudnewsreader" };
// Intent intentSyncSettings = new Intent(Settings.ACTION_SYNC_SETTINGS);
// intentSyncSettings.putExtra(Settings.EXTRA_AUTHORITIES, authorities);
- Intent intentSyncSettings = new Intent(getActivity(), SyncIntervalSelectorActivity.class);
- prefFrag.findPreference(PREF_SYNC_SETTINGS).setIntent(intentSyncSettings);
//bindPreferenceSummaryToValue(prefFrag.findPreference(SP_MAX_ITEMS_SYNC));
Preference clearCachePref = prefFrag.findPreference(EDT_CLEAR_CACHE);
@@ -357,6 +390,31 @@ public class SettingsFragment extends PreferenceFragmentCompat {
startActivity(browserIntent);
}
+
+ public static final long SECONDS_PER_MINUTE = 60L;
+
+ public static void setAccountSyncInterval(Context context, int minutes) {
+ AccountManager mAccountManager = AccountManager.get(context);
+ String accountType = AccountGeneral.getAccountType(context);
+ Account[] accounts = mAccountManager.getAccountsByType(accountType);
+ for (Account account : accounts) {
+ if (minutes != 0) {
+ long SYNC_INTERVAL = minutes * SECONDS_PER_MINUTE;
+ ContentResolver.setSyncAutomatically(account, accountType, true);
+
+ Bundle bundle = new Bundle();
+ ContentResolver.addPeriodicSync(
+ account,
+ accountType,
+ bundle,
+ SYNC_INTERVAL);
+
+ } else {
+ ContentResolver.setSyncAutomatically(account, accountType, false);
+ }
+ }
+ }
+
public static class ResetDatabaseAsyncTask extends AsyncTask<Void, Void, Void> {
private ProgressDialog pd;
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SyncIntervalSelectorActivity.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SyncIntervalSelectorActivity.java
deleted file mode 100644
index 7a7a74e3..00000000
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/SyncIntervalSelectorActivity.java
+++ /dev/null
@@ -1,192 +0,0 @@
-package de.luhmer.owncloudnewsreader;
-
-import android.accounts.Account;
-import android.accounts.AccountManager;
-import android.content.ContentResolver;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-
-import androidx.annotation.Nullable;
-import androidx.appcompat.app.AppCompatActivity;
-import androidx.fragment.app.Fragment;
-
-import javax.inject.Inject;
-
-import de.luhmer.owncloudnewsreader.authentication.AccountGeneral;
-import de.luhmer.owncloudnewsreader.databinding.ActivitySyncIntervalSelectorBinding;
-import de.luhmer.owncloudnewsreader.helper.ThemeChooser;
-
-
-public class SyncIntervalSelectorActivity extends AppCompatActivity {
-
- private PlaceholderFragment mFragment;
- private String[] items_values;
- protected ActivitySyncIntervalSelectorBinding binding;
- protected @Inject SharedPreferences mPrefs;
- private Integer btn_save;
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- ((NewsReaderApplication) getApplication()).getAppComponent().injectActivity(this);
-
- ThemeChooser.chooseTheme(this);
- super.onCreate(savedInstanceState);
- ThemeChooser.afterOnCreate(this);
-
- binding = ActivitySyncIntervalSelectorBinding.inflate(getLayoutInflater());
- setContentView(binding.getRoot());
-
- setSupportActionBar(binding.toolbarLayout.toolbar);
-
- items_values = getResources().getStringArray(R.array.array_sync_interval_values);
-
- if (savedInstanceState == null) {
- mFragment = new PlaceholderFragment();
-
- getSupportFragmentManager().beginTransaction()
- .add(R.id.container, mFragment)
- .commit();
- }
- }
-
- private int getBtn_save_normal_holo() {
- if (btn_save == null) {
- if (ThemeChooser.getSelectedTheme().equals(ThemeChooser.THEME.LIGHT)) {
- btn_save = R.drawable.ic_action_save_light;
- } else {
- btn_save = R.drawable.ic_action_save_dark; // dark
- }
- }
- return btn_save;
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.sync_interval_selector, menu);
-
-
- MenuItem btnSave = (MenuItem) menu.getItem(0);
- if (btnSave != null) {
- //btnSave.setIcon(getBtn_save_normal_holo());
- //btnSave.setIcon(ContextCompat.getDrawable(this, getBtn_save_normal_holo()));
- }
-
- return true;
- }
-
- @Override
- public boolean onPrepareOptionsMenu(Menu menu) {
- MenuItem btnSave = (MenuItem) menu.getItem(0);
- if (btnSave != null) {
- btnSave.setIcon(getBtn_save_normal_holo());
- }
- return super.onPrepareOptionsMenu(menu);
- }
-
- public static final int SYNC_DEFAULT_INTERVAL = 15;
-
- public static void setAccountSyncInterval(Context context, SharedPreferences mPrefs) {
- int minutes = mPrefs.getInt(SYNC_INTERVAL_IN_MINUTES_STRING, SYNC_DEFAULT_INTERVAL);
-
- AccountManager mAccountManager = AccountManager.get(context);
- String accountType = AccountGeneral.getAccountType(context);
- Account[] accounts = mAccountManager.getAccountsByType(accountType);
- for (Account account : accounts) {
- if (minutes != 0) {
- long SYNC_INTERVAL = minutes * SECONDS_PER_MINUTE;
- ContentResolver.setSyncAutomatically(account, accountType, true);
-
- Bundle bundle = new Bundle();
- ContentResolver.addPeriodicSync(
- account,
- accountType,
- bundle,
- SYNC_INTERVAL);
-
- } else {
- ContentResolver.setSyncAutomatically(account, accountType, false);
- }
- }
- }
-
-
- /**
- * A placeholder fragment containing a simple view.
- */
-
- // Sync interval constants
- public static final long SECONDS_PER_MINUTE = 60L;
- public static final String SYNC_INTERVAL_IN_MINUTES_STRING = "SYNC_INTERVAL_IN_MINUTES_STRING";
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // Handle action bar item clicks here. The action bar will
- // automatically StartYoutubePlayer clicks on the Home/Up button, so long
- // as you specify a parent activity in AndroidManifest.xml.
- int id = item.getItemId();
-
- if (id == R.id.action_save) {
- int checkedPosition = mFragment.lvItems.getCheckedItemPosition();
- int minutes = Integer.parseInt(items_values[checkedPosition]);
- mPrefs.edit().putInt(SYNC_INTERVAL_IN_MINUTES_STRING, minutes).commit();
- setAccountSyncInterval(this, mPrefs);
- finish();
- }
-
- return super.onOptionsItemSelected(item);
- }
- // public static final int SYNC_DEFAULT_INTERVAL = 60*24;
-
- public static class PlaceholderFragment extends Fragment {
-
- private ListView lvItems;
- protected @Inject
- SharedPreferences mPrefs;
-
- public PlaceholderFragment() {
- }
-
- @Override
- public void onCreate(@Nullable Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- ((NewsReaderApplication) requireActivity().getApplication()).getAppComponent().injectFragment(this);
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View rootView = inflater.inflate(R.layout.fragment_sync_interval_selector, container, false);
-
- String[] items = getResources().getStringArray(R.array.array_sync_interval);
-
- lvItems = rootView.findViewById(R.id.lv_sync_interval_items);
- lvItems.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
-
- ArrayAdapter<String> adapter = new ArrayAdapter<>(getActivity(),
- android.R.layout.simple_list_item_single_choice, android.R.id.text1, items);
-
- lvItems.setAdapter(adapter);
-
- int position = 0;
- int minutes = mPrefs.getInt(SYNC_INTERVAL_IN_MINUTES_STRING, SYNC_DEFAULT_INTERVAL);
- for (String item : ((SyncIntervalSelectorActivity) requireActivity()).items_values) {
- if (Integer.parseInt(item) == minutes)
- break;
- position++;
- }
- lvItems.setItemChecked(position, true);
-
- return rootView;
- }
- }
-
-}
diff --git a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/di/AppComponent.java b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/di/AppComponent.java
index ce2e49b2..5a071604 100644
--- a/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/di/AppComponent.java
+++ b/News-Android-App/src/main/java/de/luhmer/owncloudnewsreader/di/AppComponent.java
@@ -14,7 +14,6 @@ import de.luhmer.owncloudnewsreader.NewsReaderListFragment;
import de.luhmer.owncloudnewsreader.PodcastFragmentActivity;
import de.luhmer.owncloudnewsreader.SettingsActivity;
import de.luhmer.owncloudnewsreader.SettingsFragment;
-import de.luhmer.owncloudnewsreader.SyncIntervalSelectorActivity;
import de.luhmer.owncloudnewsreader.authentication.OwnCloudSyncAdapter;
import de.luhmer.owncloudnewsreader.database.DatabaseConnectionOrm;
import de.luhmer.owncloudnewsreader.services.SyncItemStateService;
@@ -33,7 +32,6 @@ public interface AppComponent {
void injectActivity(PodcastFragmentActivity activity);
void injectActivity(NewFeedActivity activity);
void injectActivity(SettingsActivity activity);
- void injectActivity(SyncIntervalSelectorActivity activity);
void injectActivity(LoginDialogActivity activity);
void injectFragment(NewsReaderListDialogFragment fragment);
@@ -41,7 +39,6 @@ public interface AppComponent {
void injectFragment(SettingsFragment fragment);
void injectFragment(NewsDetailFragment fragment);
void injectFragment(NewsReaderDetailFragment fragment);
- void injectFragment(SyncIntervalSelectorActivity.PlaceholderFragment fragment);
void injectService(SyncItemStateService service);
void injectService(OwnCloudSyncAdapter ownCloudSyncAdapter);