summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java18
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java77
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java10
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java5
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java14
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java238
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/SwitchCompatPreference.java37
8 files changed, 236 insertions, 165 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
index 701f9b79a..091f8daab 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
@@ -43,6 +43,7 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.util.Converter;
+import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.Flavors;
import de.danoeh.antennapod.core.util.ShareUtils;
import de.danoeh.antennapod.core.util.StorageUtils;
@@ -324,11 +325,11 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
((FeedMedia) media).getItem().getFlattrStatus().flattrable()
);
- boolean hasWebsiteLink = media != null && media.getWebsiteLink() != null;
+ boolean hasWebsiteLink = ( getWebsiteLinkWithFallback(media) != null );
menu.findItem(R.id.visit_website_item).setVisible(hasWebsiteLink);
boolean isItemAndHasLink = isFeedMedia &&
- ((FeedMedia) media).getItem() != null && ((FeedMedia) media).getItem().getLink() != null;
+ ShareUtils.hasLinkToShare(((FeedMedia) media).getItem());
menu.findItem(R.id.share_link_item).setVisible(isItemAndHasLink);
menu.findItem(R.id.share_link_with_position_item).setVisible(isItemAndHasLink);
@@ -564,7 +565,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
});
break;
case R.id.visit_website_item:
- Uri uri = Uri.parse(media.getWebsiteLink());
+ Uri uri = Uri.parse(getWebsiteLinkWithFallback(media));
startActivity(new Intent(Intent.ACTION_VIEW, uri));
break;
case R.id.support_item:
@@ -607,6 +608,17 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
}
}
+ private static String getWebsiteLinkWithFallback(Playable media) {
+ if (media == null) {
+ return null;
+ } else if (media.getWebsiteLink() != null) {
+ return media.getWebsiteLink();
+ } else if (media instanceof FeedMedia) {
+ return FeedItemUtil.getLinkWithFallback(((FeedMedia)media).getItem());
+ }
+ return null;
+ }
+
@Override
protected void onResume() {
super.onResume();
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 a6aec2425..3f005fe36 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/PreferenceActivity.java
@@ -1,13 +1,12 @@
package de.danoeh.antennapod.activity;
-import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceFragmentCompat;
+import android.support.v7.preference.PreferenceScreen;
import android.view.Menu;
import android.view.MenuItem;
import android.view.ViewGroup;
@@ -15,6 +14,9 @@ import android.widget.FrameLayout;
import java.lang.ref.WeakReference;
+import com.bytehamster.lib.preferencesearch.SearchPreference;
+import com.bytehamster.lib.preferencesearch.SearchPreferenceResult;
+import com.bytehamster.lib.preferencesearch.SearchPreferenceResultListener;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.preferences.PreferenceController;
@@ -23,20 +25,25 @@ import de.danoeh.antennapod.preferences.PreferenceController;
* PreferenceActivity for API 11+. In order to change the behavior of the preference UI, see
* PreferenceController.
*/
-public class PreferenceActivity extends AppCompatActivity {
+public class PreferenceActivity extends AppCompatActivity implements SearchPreferenceResultListener {
public static final String PARAM_RESOURCE = "resource";
private static WeakReference<PreferenceActivity> instance;
private PreferenceController preferenceController;
private final PreferenceController.PreferenceUI preferenceUI = new PreferenceController.PreferenceUI() {
- private PreferenceFragment fragment;
+ private PreferenceFragmentCompat fragment;
@Override
- public void setFragment(PreferenceFragment fragment) {
+ public void setFragment(PreferenceFragmentCompat fragment) {
this.fragment = fragment;
}
@Override
+ public PreferenceFragmentCompat getFragment() {
+ return fragment;
+ }
+
+ @Override
public Preference findPreference(CharSequence key) {
return fragment.findPreference(key);
}
@@ -47,7 +54,7 @@ public class PreferenceActivity extends AppCompatActivity {
}
@Override
- public Activity getActivity() {
+ public AppCompatActivity getActivity() {
return PreferenceActivity.this;
}
};
@@ -77,12 +84,21 @@ public class PreferenceActivity extends AppCompatActivity {
// since the MainFragment depends on the preferenceController already being created
preferenceController = new PreferenceController(preferenceUI);
- PreferenceFragment prefFragment = new MainFragment();
+ showPreferenceScreen(R.xml.preferences, false);
+ }
+
+ private void showPreferenceScreen(int screen, boolean addHistory) {
+ PreferenceFragmentCompat prefFragment = new MainFragment();
preferenceUI.setFragment(prefFragment);
Bundle args = new Bundle();
- args.putInt(PARAM_RESOURCE, R.xml.preferences);
+ args.putInt(PARAM_RESOURCE, screen);
prefFragment.setArguments(args);
- getFragmentManager().beginTransaction().replace(R.id.content, prefFragment).commit();
+ if (addHistory) {
+ getSupportFragmentManager().beginTransaction().replace(R.id.content, prefFragment)
+ .addToBackStack(getString(PreferenceController.getTitleOfPage(screen))).commit();
+ } else {
+ getSupportFragmentManager().beginTransaction().replace(R.id.content, prefFragment).commit();
+ }
}
@Override
@@ -101,10 +117,10 @@ public class PreferenceActivity extends AppCompatActivity {
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
- if (getFragmentManager().getBackStackEntryCount() == 0) {
+ if (getSupportFragmentManager().getBackStackEntryCount() == 0) {
finish();
} else {
- getFragmentManager().popBackStack();
+ getSupportFragmentManager().popBackStack();
}
return true;
default:
@@ -112,13 +128,23 @@ public class PreferenceActivity extends AppCompatActivity {
}
}
- public static class MainFragment extends PreferenceFragment {
+ @Override
+ public void onSearchResultClicked(SearchPreferenceResult result) {
+ showPreferenceScreen(result.getResourceFile(), true);
+ result.highlight(preferenceUI.getFragment());
+ }
+
+ public static class MainFragment extends PreferenceFragmentCompat {
private int screen;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
+ }
+
+ @Override
+ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
screen = getArguments().getInt(PARAM_RESOURCE);
addPreferencesFromResource(screen);
PreferenceActivity activity = instance.get();
@@ -133,35 +159,16 @@ public class PreferenceActivity extends AppCompatActivity {
super.onResume();
PreferenceActivity activity = instance.get();
if(activity != null && activity.preferenceController != null) {
- activity.setTitle(getTitle(screen));
+ activity.setTitle(PreferenceController.getTitleOfPage(screen));
activity.preferenceUI.setFragment(this);
activity.preferenceController.onResume(screen);
}
}
- private int getTitle(int preferences) {
- switch (preferences) {
- case R.xml.preferences_network:
- return R.string.network_pref;
- case R.xml.preferences_autodownload:
- return R.string.pref_automatic_download_title;
- case R.xml.preferences_playback:
- return R.string.playback_pref;
- case R.xml.preferences_storage:
- return R.string.storage_pref;
- case R.xml.preferences_user_interface:
- return R.string.user_interface_label;
- case R.xml.preferences_integrations:
- return R.string.integrations_label;
- default:
- return R.string.settings_label;
- }
- }
-
@Override
public void onPause() {
PreferenceActivity activity = instance.get();
- if (screen == R.xml.preferences_integrations) {
+ if (screen == R.xml.preferences_gpodder) {
activity.preferenceController.unregisterGpodnet();
}
super.onPause();
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java
index c62c30c90..c4f476634 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java
@@ -100,8 +100,10 @@ public class DownloadedEpisodesListAdapter extends BaseAdapter {
FeedItem.State state = item.getState();
if (state == FeedItem.State.PLAYING) {
holder.butSecondary.setEnabled(false);
+ holder.butSecondary.setAlpha(0.5f);
} else {
holder.butSecondary.setEnabled(true);
+ holder.butSecondary.setAlpha(1.0f);
}
holder.butSecondary.setFocusable(false);
holder.butSecondary.setTag(item);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
index 63727a1f4..6b589493b 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
@@ -433,6 +433,16 @@ public class ItemFragment extends Fragment implements OnSwipeGesture {
butAction1Text = R.string.download_label;
}
}
+
+ FeedItem.State state = item.getState();
+ if (butAction2Text == R.string.delete_label && state == FeedItem.State.PLAYING) {
+ butAction2.setEnabled(false);
+ butAction2.setAlpha(0.5f);
+ } else {
+ butAction2.setEnabled(true);
+ butAction2.setAlpha(1.0f);
+ }
+
if(butAction1Icon != null && butAction1Text != 0) {
butAction1.setText(butAction1Icon +"\u0020\u0020" + getActivity().getString(butAction1Text));
Iconify.addIcons(butAction1);
diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
index f6f73e017..de47ee5e4 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
@@ -17,6 +17,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
+import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.ShareUtils;
@@ -86,7 +87,7 @@ public class FeedItemMenuHandler {
mi.setItemVisibility(R.id.add_to_queue_item, false);
}
- if (!showExtendedMenu || selectedItem.getLink() == null) {
+ if (!showExtendedMenu || !ShareUtils.hasLinkToShare(selectedItem)) {
mi.setItemVisibility(R.id.visit_website_item, false);
mi.setItemVisibility(R.id.share_link_item, false);
mi.setItemVisibility(R.id.share_link_with_position_item, false);
@@ -216,7 +217,7 @@ public class FeedItemMenuHandler {
DBWriter.setFeedItemAutoDownload(selectedItem, false);
break;
case R.id.visit_website_item:
- Uri uri = Uri.parse(selectedItem.getLink());
+ Uri uri = Uri.parse(FeedItemUtil.getLinkWithFallback(selectedItem));
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
if(IntentUtils.isCallable(context, intent)) {
context.startActivity(intent);
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java b/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java
index bcac65804..e500267fe 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/MasterSwitchPreference.java
@@ -4,13 +4,14 @@ import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Typeface;
import android.os.Build;
+import android.support.v14.preference.SwitchPreference;
+import android.support.v7.preference.PreferenceViewHolder;
import android.util.AttributeSet;
import android.util.TypedValue;
-import android.view.View;
import android.widget.TextView;
import de.danoeh.antennapod.R;
-public class MasterSwitchPreference extends SwitchCompatPreference {
+public class MasterSwitchPreference extends SwitchPreference {
public MasterSwitchPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
@@ -29,15 +30,16 @@ public class MasterSwitchPreference extends SwitchCompatPreference {
super(context);
}
+
@Override
- protected void onBindView(View view) {
- super.onBindView(view);
+ public void onBindViewHolder(PreferenceViewHolder holder) {
+ super.onBindViewHolder(holder);
TypedValue typedValue = new TypedValue();
getContext().getTheme().resolveAttribute(R.attr.master_switch_background, typedValue, true);
- view.setBackgroundColor(typedValue.data);
+ holder.itemView.setBackgroundColor(typedValue.data);
- TextView title = (TextView) view.findViewById(android.R.id.title);
+ TextView title = (TextView) holder.findViewById(android.R.id.title);
if (title != null) {
title.setTypeface(title.getTypeface(), Typeface.BOLD);
}
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 fceaf6abf..31a31adb4 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
@@ -3,7 +3,6 @@ package de.danoeh.antennapod.preferences;
import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity;
-import android.app.Fragment;
import android.app.ProgressDialog;
import android.app.TimePickerDialog;
import android.content.ActivityNotFoundException;
@@ -18,31 +17,28 @@ import android.net.wifi.WifiConfiguration;
import android.net.wifi.WifiManager;
import android.os.Build;
import android.os.Bundle;
-import android.preference.CheckBoxPreference;
-import android.preference.EditTextPreference;
-import android.preference.ListPreference;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceManager;
-import android.preference.PreferenceScreen;
import android.support.design.widget.Snackbar;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.FileProvider;
import android.support.v7.app.AlertDialog;
-import android.text.Editable;
+import android.support.v7.app.AppCompatActivity;
+import android.support.v7.preference.CheckBoxPreference;
+import android.support.v7.preference.ListPreference;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceFragmentCompat;
+import android.support.v7.preference.PreferenceManager;
+import android.support.v7.preference.PreferenceScreen;
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.ListView;
import android.widget.Toast;
import com.afollestad.materialdialogs.MaterialDialog;
+import com.bytehamster.lib.preferencesearch.SearchPreference;
import de.danoeh.antennapod.activity.AboutActivity;
-import com.afollestad.materialdialogs.prefs.MaterialListPreference;
import de.danoeh.antennapod.activity.ImportExportActivity;
import de.danoeh.antennapod.activity.MediaplayerActivity;
import de.danoeh.antennapod.activity.OpmlImportFromPathActivity;
@@ -99,8 +95,9 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
private static final String PREF_SCREEN_INTEGRATIONS = "prefScreenIntegrations";
private static final String PREF_SCREEN_STORAGE = "prefScreenStorage";
private static final String PREF_SCREEN_AUTODL = "prefAutoDownloadSettings";
+ private static final String PREF_SCREEN_FLATTR = "prefFlattrSettings";
+ private static final String PREF_SCREEN_GPODDER = "prefGpodderSettings";
- private static final String PREF_FLATTR_SETTINGS = "prefFlattrSettings";
private static final String PREF_FLATTR_AUTH = "pref_flattr_authenticate";
private static final String PREF_FLATTR_REVOKE = "prefRevokeAccess";
private static final String PREF_AUTO_FLATTR_PREFS = "prefAutoFlattrPrefs";
@@ -181,6 +178,12 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
case R.xml.preferences_integrations:
setupIntegrationsScreen();
break;
+ case R.xml.preferences_flattr:
+ setupFlattrScreen();
+ break;
+ case R.xml.preferences_gpodder:
+ setupGpodderScreen();
+ break;
case R.xml.preferences_storage:
setupStorageScreen();
break;
@@ -300,7 +303,20 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
private void setupIntegrationsScreen() {
- final Activity activity = ui.getActivity();
+ final AppCompatActivity activity = ui.getActivity();
+
+ ui.findPreference(PREF_SCREEN_FLATTR).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_flattr, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_GPODDER).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_gpodder, activity);
+ return true;
+ });
+ }
+
+ private void setupFlattrScreen() {
+ final AppCompatActivity activity = ui.getActivity();
ui.findPreference(PreferenceController.PREF_FLATTR_REVOKE).setOnPreferenceClickListener(
preference -> {
@@ -309,6 +325,29 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
return true;
}
);
+
+ ui.findPreference(PreferenceController.PREF_AUTO_FLATTR_PREFS)
+ .setOnPreferenceClickListener(preference -> {
+ AutoFlattrPreferenceDialog.newAutoFlattrPreferenceDialog(activity,
+ new AutoFlattrPreferenceDialog.AutoFlattrPreferenceDialogInterface() {
+ @Override
+ public void onCancelled() {
+
+ }
+
+ @Override
+ public void onConfirmed(boolean autoFlattrEnabled, float autoFlattrValue) {
+ UserPreferences.setAutoFlattrSettings(autoFlattrEnabled, autoFlattrValue);
+ checkFlattrItemVisibility();
+ }
+ });
+ return true;
+ });
+ }
+
+ private void setupGpodderScreen() {
+ final AppCompatActivity activity = ui.getActivity();
+
ui.findPreference(PreferenceController.PREF_GPODNET_SETLOGIN_INFORMATION)
.setOnPreferenceClickListener(preference -> {
AuthenticationDialog dialog = new AuthenticationDialog(activity,
@@ -356,24 +395,6 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
GpodnetSetHostnameDialog.createDialog(activity).setOnDismissListener(dialog -> updateGpodnetPreferenceScreen());
return true;
});
-
- ui.findPreference(PreferenceController.PREF_AUTO_FLATTR_PREFS)
- .setOnPreferenceClickListener(preference -> {
- AutoFlattrPreferenceDialog.newAutoFlattrPreferenceDialog(activity,
- new AutoFlattrPreferenceDialog.AutoFlattrPreferenceDialogInterface() {
- @Override
- public void onCancelled() {
-
- }
-
- @Override
- public void onConfirmed(boolean autoFlattrEnabled, float autoFlattrValue) {
- UserPreferences.setAutoFlattrSettings(autoFlattrEnabled, autoFlattrValue);
- checkFlattrItemVisibility();
- }
- });
- return true;
- });
}
private void setupPlaybackScreen() {
@@ -395,7 +416,7 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
return true;
});
if (!PictureInPictureUtil.supportsPictureInPicture(activity)) {
- MaterialListPreference behaviour = (MaterialListPreference) ui.findPreference(UserPreferences.PREF_VIDEO_BEHAVIOR);
+ ListPreference behaviour = (ListPreference) ui.findPreference(UserPreferences.PREF_VIDEO_BEHAVIOR);
behaviour.setEntries(R.array.video_background_behavior_options_without_pip);
behaviour.setEntryValues(R.array.video_background_behavior_values_without_pip);
}
@@ -432,9 +453,11 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
private void setupNetworkScreen() {
- final Activity activity = ui.getActivity();
- ui.findPreference(PREF_SCREEN_AUTODL).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_autodownload, activity));
+ final AppCompatActivity activity = ui.getActivity();
+ ui.findPreference(PREF_SCREEN_AUTODL).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_autodownload, activity);
+ return true;
+ });
ui.findPreference(UserPreferences.PREF_UPDATE_INTERVAL)
.setOnPreferenceClickListener(preference -> {
showUpdateIntervalTimePreferencesDialog();
@@ -458,33 +481,6 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
);
// validate and set correct value: number of downloads between 1 and 50 (inclusive)
- final EditText ev = ((EditTextPreference) ui.findPreference(UserPreferences.PREF_PARALLEL_DOWNLOADS)).getEditText();
- ev.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- if (s.length() > 0) {
- try {
- int value = Integer.parseInt(s.toString());
- if (value <= 0) {
- ev.setText("1");
- } else if (value > 50) {
- ev.setText("50");
- }
- } catch (NumberFormatException e) {
- ev.setText("6");
- }
- ev.setSelection(ev.getText().length());
- }
- }
- });
ui.findPreference(PREF_PROXY).setOnPreferenceClickListener(preference -> {
ProxyDialog dialog = new ProxyDialog(ui.getActivity());
dialog.createDialog().show();
@@ -493,17 +489,28 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
private void setupMainScreen() {
- final Activity activity = ui.getActivity();
- ui.findPreference(PREF_SCREEN_USER_INTERFACE).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_user_interface, activity));
- ui.findPreference(PREF_SCREEN_PLAYBACK).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_playback, activity));
- ui.findPreference(PREF_SCREEN_NETWORK).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_network, activity));
- ui.findPreference(PREF_SCREEN_INTEGRATIONS).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_integrations, activity));
- ui.findPreference(PREF_SCREEN_STORAGE).setOnPreferenceClickListener(preference ->
- openScreen(R.xml.preferences_storage, activity));
+ final AppCompatActivity activity = ui.getActivity();
+ setupSearch();
+ ui.findPreference(PREF_SCREEN_USER_INTERFACE).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_user_interface, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_PLAYBACK).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_playback, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_NETWORK).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_network, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_INTEGRATIONS).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_integrations, activity);
+ return true;
+ });
+ ui.findPreference(PREF_SCREEN_STORAGE).setOnPreferenceClickListener(preference -> {
+ openScreen(R.xml.preferences_storage, activity);
+ return true;
+ });
ui.findPreference(PreferenceController.PREF_ABOUT).setOnPreferenceClickListener(
preference -> {
@@ -550,15 +557,73 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
});
}
- private boolean openScreen(int preferences, Activity activity) {
- Fragment prefFragment = new PreferenceActivity.MainFragment();
+ private void setupSearch() {
+ final AppCompatActivity activity = ui.getActivity();
+
+ SearchPreference searchPreference = (SearchPreference) ui.findPreference("searchPreference");
+ searchPreference.setActivity(activity);
+ searchPreference.setFragmentContainerViewId(R.id.content);
+ searchPreference.setBreadcrumbsEnabled(true);
+
+ searchPreference.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_user_interface))
+ .addFile(R.xml.preferences_user_interface);
+ searchPreference.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_playback))
+ .addFile(R.xml.preferences_playback);
+ searchPreference.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_network))
+ .addFile(R.xml.preferences_network);
+ searchPreference.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_storage))
+ .addFile(R.xml.preferences_storage);
+ searchPreference.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_network))
+ .addBreadcrumb(R.string.automation)
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_autodownload))
+ .addFile(R.xml.preferences_autodownload);
+ searchPreference.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_integrations))
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_gpodder))
+ .addFile(R.xml.preferences_gpodder);
+ searchPreference.index()
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_integrations))
+ .addBreadcrumb(getTitleOfPage(R.xml.preferences_flattr))
+ .addFile(R.xml.preferences_flattr);
+ }
+
+ public PreferenceFragmentCompat openScreen(int preferences, AppCompatActivity activity) {
+ PreferenceFragmentCompat prefFragment = new PreferenceActivity.MainFragment();
Bundle args = new Bundle();
args.putInt(PARAM_RESOURCE, preferences);
prefFragment.setArguments(args);
- activity.getFragmentManager().beginTransaction()
+ activity.getSupportFragmentManager().beginTransaction()
.replace(R.id.content, prefFragment)
.addToBackStack(TAG).commit();
- return true;
+ return prefFragment;
+ }
+
+ public static int getTitleOfPage(int preferences) {
+ switch (preferences) {
+ case R.xml.preferences_network:
+ return R.string.network_pref;
+ case R.xml.preferences_autodownload:
+ return R.string.pref_automatic_download_title;
+ case R.xml.preferences_playback:
+ return R.string.playback_pref;
+ case R.xml.preferences_storage:
+ return R.string.storage_pref;
+ case R.xml.preferences_user_interface:
+ return R.string.user_interface_label;
+ case R.xml.preferences_integrations:
+ return R.string.integrations_label;
+ case R.xml.preferences_flattr:
+ return R.string.flattr_label;
+ case R.xml.preferences_gpodder:
+ return R.string.gpodnet_main_label;
+ default:
+ return R.string.settings_label;
+ }
}
private boolean export(ExportWriter exportWriter) {
@@ -628,9 +693,14 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
setDataFolderText();
break;
case R.xml.preferences_integrations:
+ setIntegrationsItemVisibility();
+ return;
+ case R.xml.preferences_flattr:
+ checkFlattrItemVisibility();
+ break;
+ case R.xml.preferences_gpodder:
GpodnetPreferences.registerOnSharedPreferenceChangeListener(gpoddernetListener);
updateGpodnetPreferenceScreen();
- checkFlattrItemVisibility();
break;
case R.xml.preferences_playback:
checkSonicItemVisibility();
@@ -797,10 +867,13 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
}
}
+ private void setIntegrationsItemVisibility() {
+ ui.findPreference(PreferenceController.PREF_SCREEN_FLATTR).setEnabled(FlattrUtils.hasAPICredentials());
+ }
+
@SuppressWarnings("deprecation")
private void checkFlattrItemVisibility() {
boolean hasFlattrToken = FlattrUtils.hasToken();
- ui.findPreference(PreferenceController.PREF_FLATTR_SETTINGS).setEnabled(FlattrUtils.hasAPICredentials());
ui.findPreference(PreferenceController.PREF_FLATTR_AUTH).setEnabled(!hasFlattrToken);
ui.findPreference(PreferenceController.PREF_FLATTR_REVOKE).setEnabled(hasFlattrToken);
ui.findPreference(PreferenceController.PREF_AUTO_FLATTR_PREFS).setEnabled(hasFlattrToken);
@@ -1115,7 +1188,8 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
public interface PreferenceUI {
- void setFragment(PreferenceFragment fragment);
+ void setFragment(PreferenceFragmentCompat fragment);
+ PreferenceFragmentCompat getFragment();
/**
* Finds a preference based on its key.
@@ -1124,6 +1198,6 @@ public class PreferenceController implements SharedPreferences.OnSharedPreferenc
PreferenceScreen getPreferenceScreen();
- Activity getActivity();
+ AppCompatActivity getActivity();
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/SwitchCompatPreference.java b/app/src/main/java/de/danoeh/antennapod/preferences/SwitchCompatPreference.java
deleted file mode 100644
index 10c11b88e..000000000
--- a/app/src/main/java/de/danoeh/antennapod/preferences/SwitchCompatPreference.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package de.danoeh.antennapod.preferences;
-
-import android.annotation.TargetApi;
-import android.content.Context;
-import android.os.Build;
-import android.preference.CheckBoxPreference;
-import android.util.AttributeSet;
-
-import de.danoeh.antennapod.R;
-
-public class SwitchCompatPreference extends CheckBoxPreference {
-
- public SwitchCompatPreference(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- init();
- }
-
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- public SwitchCompatPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- init();
- }
-
- public SwitchCompatPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
-
- public SwitchCompatPreference(Context context) {
- super(context);
- init();
- }
-
- private void init() {
- setWidgetLayoutResource(R.layout.preference_switch_layout);
- }
-} \ No newline at end of file