diff options
Diffstat (limited to 'app/src')
6 files changed, 79 insertions, 7 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java index ba22a42b4..474c57169 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java @@ -118,5 +118,14 @@ public class PreferenceActivity extends AppCompatActivity { activity.preferenceController.onResume(); } } + + @Override + public void onPause() { + PreferenceActivity activity = instance.get(); + if(activity != null && activity.preferenceController != null) { + activity.preferenceController.onPause(); + } + super.onPause(); + } } } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java index 633f8d66d..4af988ea0 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivityGingerbread.java @@ -55,6 +55,12 @@ public class PreferenceActivityGingerbread extends android.preference.Preference } @Override + protected void onPause() { + preferenceController.onPause(); + super.onPause(); + } + + @Override protected void onApplyThemeResource(Theme theme, int resid, boolean first) { theme.applyStyle(UserPreferences.getTheme(), true); } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java index d46a3d6c2..8ede947c5 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java @@ -6,11 +6,13 @@ import android.content.res.Configuration; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.LayoutInflater; import android.view.MenuItem; import android.view.View; +import android.view.inputmethod.EditorInfo; +import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Button; @@ -40,7 +42,7 @@ import de.danoeh.antennapod.core.service.GpodnetSyncService; * Step 2: Choose device from a list of available devices or create a new one * Step 3: Choose from a list of actions */ -public class GpodnetAuthenticationActivity extends ActionBarActivity { +public class GpodnetAuthenticationActivity extends AppCompatActivity { private static final String TAG = "GpodnetAuthActivity"; private static final String CURRENT_STEP = "current_step"; @@ -113,6 +115,9 @@ public class GpodnetAuthenticationActivity extends ActionBarActivity { final TextView txtvError = (TextView) view.findViewById(R.id.txtvError); final ProgressBar progressBar = (ProgressBar) view.findViewById(R.id.progBarLogin); + password.setOnEditorActionListener((v, actionID, event) -> + actionID == EditorInfo.IME_ACTION_GO && login.performClick()); + login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { @@ -131,6 +136,11 @@ public class GpodnetAuthenticationActivity extends ActionBarActivity { login.setEnabled(false); progressBar.setVisibility(View.VISIBLE); txtvError.setVisibility(View.GONE); + // hide the keyboard + InputMethodManager inputManager = (InputMethodManager) + getSystemService(Context.INPUT_METHOD_SERVICE); + inputManager.hideSoftInputFromWindow(login.getWindowToken(), + InputMethodManager.HIDE_NOT_ALWAYS); } diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java index e1ef24afd..19b8361e6 100644 --- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java +++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java @@ -28,10 +28,11 @@ import android.text.Editable; import android.text.Html; import android.text.TextWatcher; import android.text.format.DateFormat; +import android.text.format.DateUtils; import android.util.Log; import android.widget.EditText; -import android.widget.Toast; import android.widget.ListView; +import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; @@ -89,6 +90,7 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc public static final String PREF_GPODNET_SYNC = "pref_gpodnet_sync"; public static final String PREF_GPODNET_LOGOUT = "pref_gpodnet_logout"; public static final String PREF_GPODNET_HOSTNAME = "pref_gpodnet_hostname"; + public static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications"; public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify"; public static final String PREF_PROXY = "prefProxy"; public static final String PREF_KNOWN_ISSUES = "prefKnownIssues"; @@ -120,6 +122,14 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc } } + private final SharedPreferences.OnSharedPreferenceChangeListener gpoddernetListener = + (sharedPreferences, key) -> { + if (GpodnetPreferences.PREF_LAST_SYNC_ATTEMPT_TIMESTAMP.equals(key)) { + updateLastGpodnetSyncReport(GpodnetPreferences.getLastSyncAttemptResult(), + GpodnetPreferences.getLastSyncAttemptTimestamp()); + } + }; + /** * Returns the preference activity that should be used on this device. * @@ -433,9 +443,14 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc setParallelDownloadsText(UserPreferences.getParallelDownloads()); setEpisodeCacheSizeText(UserPreferences.getEpisodeCacheSize()); setDataFolderText(); + GpodnetPreferences.registerOnSharedPreferenceChangeListener(gpoddernetListener); updateGpodnetPreferenceScreen(); } + public void onPause() { + GpodnetPreferences.unregisterOnSharedPreferenceChangeListener(gpoddernetListener); + } + @SuppressLint("NewApi") public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK && @@ -478,17 +493,39 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc ui.findPreference(PreferenceController.PREF_GPODNET_SETLOGIN_INFORMATION).setEnabled(loggedIn); ui.findPreference(PreferenceController.PREF_GPODNET_SYNC).setEnabled(loggedIn); ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT).setEnabled(loggedIn); + ui.findPreference(PREF_GPODNET_NOTIFICATIONS).setEnabled(loggedIn); if(loggedIn) { String format = ui.getActivity().getString(R.string.pref_gpodnet_login_status); String summary = String.format(format, GpodnetPreferences.getUsername(), GpodnetPreferences.getDeviceID()); ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT).setSummary(Html.fromHtml(summary)); + updateLastGpodnetSyncReport(GpodnetPreferences.getLastSyncAttemptResult(), + GpodnetPreferences.getLastSyncAttemptTimestamp()); } else { ui.findPreference(PreferenceController.PREF_GPODNET_LOGOUT).setSummary(null); + updateLastGpodnetSyncReport(false, 0); } ui.findPreference(PreferenceController.PREF_GPODNET_HOSTNAME).setSummary(GpodnetPreferences.getHostname()); } + private void updateLastGpodnetSyncReport(boolean successful, long lastTime) { + Preference sync = ui.findPreference(PREF_GPODNET_SYNC); + if (lastTime != 0) { + sync.setSummary(ui.getActivity().getString(R.string.pref_gpodnet_sync_sum) + "\n" + + ui.getActivity().getString(R.string.pref_gpodnet_sync_sum_last_sync_line, + ui.getActivity().getString(successful ? + R.string.gpodnetsync_pref_report_successful : + R.string.gpodnetsync_pref_report_failed), + DateUtils.getRelativeDateTimeString(ui.getActivity(), + lastTime, + DateUtils.MINUTE_IN_MILLIS, + DateUtils.WEEK_IN_MILLIS, + DateUtils.FORMAT_SHOW_TIME))); + } else { + sync.setSummary(ui.getActivity().getString(R.string.pref_gpodnet_sync_sum)); + } + } + private String[] getUpdateIntervalEntries(final String[] values) { final Resources res = ui.getActivity().getResources(); String[] entries = new String[values.length]; diff --git a/app/src/main/res/layout/gpodnetauth_credentials.xml b/app/src/main/res/layout/gpodnetauth_credentials.xml index 13c5977f8..a290b682b 100644 --- a/app/src/main/res/layout/gpodnetauth_credentials.xml +++ b/app/src/main/res/layout/gpodnetauth_credentials.xml @@ -33,7 +33,11 @@ android:layout_margin="8dp" android:focusable="true" android:focusableInTouchMode="true" - android:cursorVisible="true"/> + android:cursorVisible="true" + android:maxLines="1" + android:inputType="text" + android:imeOptions="actionNext" + android:nextFocusForward="@id/etxtPassword"/> <EditText android:id="@+id/etxtPassword" @@ -45,7 +49,9 @@ android:layout_margin="8dp" android:focusable="true" android:focusableInTouchMode="true" - android:cursorVisible="true"/> + android:cursorVisible="true" + android:imeOptions="actionGo" + android:imeActionLabel="@string/gpodnetauth_login_butLabel"/> <Button android:id="@+id/butLogin" diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 57829e3e1..d907cee12 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -74,7 +74,6 @@ android:key="prefQueueAddToFront" android:summary="@string/pref_queueAddToFront_sum" android:title="@string/pref_queueAddToFront_title"/> - /> </PreferenceCategory> <PreferenceCategory android:title="@string/playback_pref"> @@ -233,7 +232,7 @@ android:title="@string/pref_revokeAccess_title"/> </PreferenceScreen> <PreferenceScreen - android:key="prefFlattrSettings" + android:key="prefGpodderSettings" android:title="@string/gpodnet_main_label"> <PreferenceScreen @@ -256,6 +255,11 @@ <Preference android:key="pref_gpodnet_hostname" android:title="@string/pref_gpodnet_sethostname_title"/> + <de.danoeh.antennapod.preferences.SwitchCompatPreference + android:key="pref_gpodnet_notifications" + android:title="@string/pref_gpodnet_notifications_title" + android:summary="@string/pref_gpodnet_notifications_sum" + android:defaultValue="true"/> </PreferenceScreen> </PreferenceCategory> <PreferenceCategory android:title="@string/storage_pref"> |