From fdd29fa3ece59c9b028bf324160a481a192f0db1 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 6 Nov 2019 18:30:43 +0100 Subject: Removed MaterialDialog dependency The AlertDialogs from Androidx are material, too. --- app/build.gradle | 3 - .../antennapod/activity/MediaplayerActivity.java | 23 ++-- .../activity/OpmlImportBaseActivity.java | 139 ++++++++++----------- .../antennapod/activity/StorageErrorActivity.java | 131 ++++++++++--------- .../antennapod/adapter/DataFolderAdapter.java | 4 +- .../adapter/actionbutton/MobileDownloadHelper.java | 20 ++- .../antennapod/dialog/ChooseDataFolderDialog.java | 30 +++-- .../antennapod/dialog/PlaybackControlsDialog.java | 19 ++- .../de/danoeh/antennapod/dialog/ProxyDialog.java | 120 +++++++++--------- .../de/danoeh/antennapod/dialog/RatingDialog.java | 26 ++-- .../danoeh/antennapod/dialog/RenameFeedDialog.java | 32 +++-- .../danoeh/antennapod/dialog/SleepTimerDialog.java | 73 +++++------ .../antennapod/dialog/VariableSpeedDialog.java | 50 +++----- .../antennapod/fragment/ItunesSearchFragment.java | 9 +- .../fragment/QuickFeedDiscoveryFragment.java | 8 +- .../preferences/NetworkPreferencesFragment.java | 20 ++- app/src/main/res/layout/audio_controls.xml | 3 +- .../main/res/layout/choose_data_folder_dialog.xml | 12 ++ .../res/layout/choose_data_folder_dialog_entry.xml | 7 +- app/src/main/res/layout/edit_text_dialog.xml | 15 +++ app/src/main/res/layout/numberpicker.xml | 2 +- app/src/main/res/layout/proxy_settings.xml | 6 +- app/src/main/res/layout/quick_feed_discovery.xml | 2 +- app/src/main/res/layout/time_dialog.xml | 9 +- app/src/main/res/layout/videoplayer_activity.xml | 13 +- app/src/main/res/xml/preferences_autodownload.xml | 6 +- app/src/main/res/xml/preferences_playback.xml | 16 +-- .../main/res/xml/preferences_user_interface.xml | 15 +-- build.gradle | 1 - 29 files changed, 389 insertions(+), 425 deletions(-) create mode 100644 app/src/main/res/layout/choose_data_folder_dialog.xml create mode 100644 app/src/main/res/layout/edit_text_dialog.xml diff --git a/app/build.gradle b/app/build.gradle index cadf8a447..c9b405800 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -154,9 +154,6 @@ dependencies { implementation "com.joanzapata.iconify:android-iconify-fontawesome:$iconifyVersion" implementation "com.joanzapata.iconify:android-iconify-material:$iconifyVersion" - implementation("com.afollestad.material-dialogs:commons:$materialDialogsVersion") { - transitive = true - } implementation "com.yqritc:recyclerview-flexibledivider:$recyclerviewFlexibledividerVersion" implementation "com.githang:viewpagerindicator:2.5.1@aar" implementation "com.github.shts:TriangleLabelView:$triangleLabelViewVersion" 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 6b8fd459d..d71a0f872 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java @@ -28,7 +28,6 @@ import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.TextView; import android.widget.Toast; -import com.afollestad.materialdialogs.MaterialDialog; import com.bumptech.glide.Glide; import com.joanzapata.iconify.IconDrawable; import com.joanzapata.iconify.fonts.FontAwesomeIcons; @@ -427,19 +426,15 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements case R.id.disable_sleeptimer_item: if (controller.serviceAvailable()) { - MaterialDialog.Builder stDialog = new MaterialDialog.Builder(this); - stDialog.title(R.string.sleep_timer_label); - stDialog.content(getString(R.string.time_left_label) - + Converter.getDurationStringLong((int) controller - .getSleepTimerTimeLeft())); - stDialog.positiveText(R.string.disable_sleeptimer_label); - stDialog.negativeText(R.string.cancel_label); - stDialog.onPositive((dialog, which) -> { - dialog.dismiss(); - controller.disableSleepTimer(); - }); - stDialog.onNegative((dialog, which) -> dialog.dismiss()); - stDialog.build().show(); + new AlertDialog.Builder(this) + .setTitle(R.string.sleep_timer_label) + .setMessage(getString(R.string.time_left_label) + + Converter.getDurationStringLong((int) controller + .getSleepTimerTimeLeft())) + .setPositiveButton(R.string.disable_sleeptimer_label, (dialog, which) + -> controller.disableSleepTimer()) + .setNegativeButton(R.string.cancel_label, null) + .show(); } break; case R.id.set_sleeptimer_item: diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java index 9caff0fc0..d7a4b9517 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java @@ -6,12 +6,11 @@ import android.net.Uri; import android.os.Build; import android.os.Environment; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.core.app.ActivityCompat; import androidx.appcompat.app.AppCompatActivity; import android.util.Log; -import com.afollestad.materialdialogs.MaterialDialog; - import org.apache.commons.lang3.ArrayUtils; import java.io.InputStreamReader; @@ -30,55 +29,55 @@ import de.danoeh.antennapod.core.util.LangUtils; public class OpmlImportBaseActivity extends AppCompatActivity { private static final String TAG = "OpmlImportBaseActivity"; - private static final int PERMISSION_REQUEST_READ_EXTERNAL_STORAGE = 5; + private static final int PERMISSION_REQUEST_READ_EXTERNAL_STORAGE = 5; private OpmlImportWorker importWorker; - @Nullable private Uri uri; - - /** - * Handles the choices made by the user in the OpmlFeedChooserActivity and - * starts the OpmlFeedQueuer if necessary. - */ - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent data) { - Log.d(TAG, "Received result"); - if (resultCode == RESULT_CANCELED) { - Log.d(TAG, "Activity was cancelled"); + @Nullable private Uri uri; + + /** + * Handles the choices made by the user in the OpmlFeedChooserActivity and + * starts the OpmlFeedQueuer if necessary. + */ + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent data) { + Log.d(TAG, "Received result"); + if (resultCode == RESULT_CANCELED) { + Log.d(TAG, "Activity was cancelled"); if (finishWhenCanceled()) { - finish(); - } - } else { - int[] selected = data.getIntArrayExtra(OpmlFeedChooserActivity.EXTRA_SELECTED_ITEMS); - if (selected != null && selected.length > 0) { - OpmlFeedQueuer queuer = new OpmlFeedQueuer(this, selected) { - - @Override - protected void onPostExecute(Void result) { - super.onPostExecute(result); - Intent intent = new Intent(OpmlImportBaseActivity.this, MainActivity.class); - intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP - | Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); - } - - }; - queuer.executeAsync(); - } else { - Log.d(TAG, "No items were selected"); - } - } - } - - void importUri(@Nullable Uri uri) { + finish(); + } + } else { + int[] selected = data.getIntArrayExtra(OpmlFeedChooserActivity.EXTRA_SELECTED_ITEMS); + if (selected != null && selected.length > 0) { + OpmlFeedQueuer queuer = new OpmlFeedQueuer(this, selected) { + + @Override + protected void onPostExecute(Void result) { + super.onPostExecute(result); + Intent intent = new Intent(OpmlImportBaseActivity.this, MainActivity.class); + intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP + | Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); + } + + }; + queuer.executeAsync(); + } else { + Log.d(TAG, "No items were selected"); + } + } + } + + void importUri(@Nullable Uri uri) { if(uri == null) { - new MaterialDialog.Builder(this) - .content(R.string.opml_import_error_no_file) - .positiveText(android.R.string.ok) + new AlertDialog.Builder(this) + .setMessage(R.string.opml_import_error_no_file) + .setPositiveButton(android.R.string.ok, null) .show(); return; } - this.uri = uri; + this.uri = uri; if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && - uri.toString().contains(Environment.getExternalStorageDirectory().toString())) { + uri.toString().contains(Environment.getExternalStorageDirectory().toString())) { int permission = ActivityCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE); if (permission != PackageManager.PERMISSION_GRANTED) { requestPermission(); @@ -88,30 +87,28 @@ public class OpmlImportBaseActivity extends AppCompatActivity { startImport(); } - private void requestPermission() { - String[] permissions = { android.Manifest.permission.READ_EXTERNAL_STORAGE }; - ActivityCompat.requestPermissions(this, permissions, PERMISSION_REQUEST_READ_EXTERNAL_STORAGE); - } - - @Override - public void onRequestPermissionsResult(int requestCode, - String[] permissions, - int[] grantResults) { - if (requestCode != PERMISSION_REQUEST_READ_EXTERNAL_STORAGE) { - return; - } - if (grantResults.length > 0 && ArrayUtils.contains(grantResults, PackageManager.PERMISSION_GRANTED)) { - startImport(); - } else { - new MaterialDialog.Builder(this) - .content(R.string.opml_import_ask_read_permission) - .positiveText(android.R.string.ok) - .negativeText(R.string.cancel_label) - .onPositive((dialog, which) -> requestPermission()) - .onNegative((dialog, which) -> finish()) + private void requestPermission() { + String[] permissions = { android.Manifest.permission.READ_EXTERNAL_STORAGE }; + ActivityCompat.requestPermissions(this, permissions, PERMISSION_REQUEST_READ_EXTERNAL_STORAGE); + } + + @Override + public void onRequestPermissionsResult(int requestCode, + String[] permissions, + int[] grantResults) { + if (requestCode != PERMISSION_REQUEST_READ_EXTERNAL_STORAGE) { + return; + } + if (grantResults.length > 0 && ArrayUtils.contains(grantResults, PackageManager.PERMISSION_GRANTED)) { + startImport(); + } else { + new AlertDialog.Builder(this) + .setMessage(R.string.opml_import_ask_read_permission) + .setPositiveButton(android.R.string.ok, (dialog, which) -> requestPermission()) + .setNegativeButton(R.string.cancel_label, (dialog, which) -> finish()) .show(); - } - } + } + } /** Starts the import process. */ private void startImport() { @@ -136,10 +133,10 @@ public class OpmlImportBaseActivity extends AppCompatActivity { importWorker.executeAsync(); } catch (Exception e) { Log.d(TAG, Log.getStackTraceString(e)); - String message = getString(R.string.opml_reader_error); - new MaterialDialog.Builder(this) - .content(message + " " + e.getMessage()) - .positiveText(android.R.string.ok) + String message = getString(R.string.opml_reader_error); + new AlertDialog.Builder(this) + .setMessage(message + " " + e.getMessage()) + .setPositiveButton(android.R.string.ok, null) .show(); } } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java index c9c9a0e2c..8527949b0 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java @@ -16,8 +16,6 @@ import android.text.TextUtils; import android.util.Log; import android.widget.Button; -import com.afollestad.materialdialogs.MaterialDialog; - import java.io.File; import de.danoeh.antennapod.R; @@ -28,22 +26,22 @@ import de.danoeh.antennapod.dialog.ChooseDataFolderDialog; /** Is show if there is now external storage available. */ public class StorageErrorActivity extends AppCompatActivity { - private static final String TAG = "StorageErrorActivity"; + private static final String TAG = "StorageErrorActivity"; private static final String[] EXTERNAL_STORAGE_PERMISSIONS = { Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; private static final int PERMISSION_REQUEST_EXTERNAL_STORAGE = 42; - @Override - protected void onCreate(Bundle savedInstanceState) { - setTheme(UserPreferences.getTheme()); - super.onCreate(savedInstanceState); + @Override + protected void onCreate(Bundle savedInstanceState) { + setTheme(UserPreferences.getTheme()); + super.onCreate(savedInstanceState); - setContentView(R.layout.storage_error); + setContentView(R.layout.storage_error); - Button btnChooseDataFolder = findViewById(R.id.btnChooseDataFolder); - btnChooseDataFolder.setOnClickListener(v -> { + Button btnChooseDataFolder = findViewById(R.id.btnChooseDataFolder); + btnChooseDataFolder.setOnClickListener(v -> { if (Build.VERSION_CODES.KITKAT <= Build.VERSION.SDK_INT && Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) { showChooseDataFolderDialog(); @@ -82,11 +80,10 @@ public class StorageErrorActivity extends AppCompatActivity { } if (grantResults[0] != PackageManager.PERMISSION_GRANTED || grantResults[1] != PackageManager.PERMISSION_GRANTED) { - new MaterialDialog.Builder(this) - .content(R.string.choose_data_directory_permission_rationale) - .positiveText(android.R.string.ok) - .onPositive((dialog, which) -> requestPermission()) - .onNegative((dialog, which) -> finish()) + new AlertDialog.Builder(this) + .setMessage(R.string.choose_data_directory_permission_rationale) + .setPositiveButton(android.R.string.ok, (dialog, which) -> requestPermission()) + .setNegativeButton(android.R.string.cancel, (dialog, which) -> finish()) .show(); } } @@ -101,15 +98,15 @@ public class StorageErrorActivity extends AppCompatActivity { } } - @Override - protected void onPause() { - super.onPause(); - try { - unregisterReceiver(mediaUpdate); - } catch (IllegalArgumentException e) { + @Override + protected void onPause() { + super.onPause(); + try { + unregisterReceiver(mediaUpdate); + } catch (IllegalArgumentException e) { Log.e(TAG, Log.getStackTraceString(e)); - } - } + } + } // see PreferenceController.showChooseDataFolderDialog() private void showChooseDataFolderDialog() { @@ -123,9 +120,9 @@ public class StorageErrorActivity extends AppCompatActivity { }); } - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (resultCode == Activity.RESULT_OK && - requestCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) { + public void onActivityResult(int requestCode, int resultCode, Intent data) { + if (resultCode == Activity.RESULT_OK && + requestCode == DirectoryChooserActivity.RESULT_CODE_DIR_SELECTED) { String dir = data.getStringExtra(DirectoryChooserActivity.RESULT_SELECTED_DIR); File path; @@ -138,46 +135,46 @@ public class StorageErrorActivity extends AppCompatActivity { return; } String message = null; - if(!path.exists()) { - message = String.format(getString(R.string.folder_does_not_exist_error), dir); - } else if(!path.canRead()) { - message = String.format(getString(R.string.folder_not_readable_error), dir); - } else if(!path.canWrite()) { - message = String.format(getString(R.string.folder_not_writable_error), dir); - } - - if(message == null) { - Log.d(TAG, "Setting data folder: " + dir); - UserPreferences.setDataFolder(dir); - leaveErrorState(); - } else { - AlertDialog.Builder ab = new AlertDialog.Builder(this); - ab.setMessage(message); - ab.setPositiveButton(android.R.string.ok, null); - ab.show(); - } - } - } - - private void leaveErrorState() { - finish(); - startActivity(new Intent(this, MainActivity.class)); - } - - private final BroadcastReceiver mediaUpdate = new BroadcastReceiver() { - - @Override - public void onReceive(Context context, Intent intent) { - if (TextUtils.equals(intent.getAction(), Intent.ACTION_MEDIA_MOUNTED)) { - if (intent.getBooleanExtra("read-only", true)) { - Log.d(TAG, "Media was mounted; Finishing activity"); - leaveErrorState(); - } else { - Log.d(TAG, "Media seemed to have been mounted read only"); - } - } - } - - }; + if(!path.exists()) { + message = String.format(getString(R.string.folder_does_not_exist_error), dir); + } else if(!path.canRead()) { + message = String.format(getString(R.string.folder_not_readable_error), dir); + } else if(!path.canWrite()) { + message = String.format(getString(R.string.folder_not_writable_error), dir); + } + + if(message == null) { + Log.d(TAG, "Setting data folder: " + dir); + UserPreferences.setDataFolder(dir); + leaveErrorState(); + } else { + AlertDialog.Builder ab = new AlertDialog.Builder(this); + ab.setMessage(message); + ab.setPositiveButton(android.R.string.ok, null); + ab.show(); + } + } + } + + private void leaveErrorState() { + finish(); + startActivity(new Intent(this, MainActivity.class)); + } + + private final BroadcastReceiver mediaUpdate = new BroadcastReceiver() { + + @Override + public void onReceive(Context context, Intent intent) { + if (TextUtils.equals(intent.getAction(), Intent.ACTION_MEDIA_MOUNTED)) { + if (intent.getBooleanExtra("read-only", true)) { + Log.d(TAG, "Media was mounted; Finishing activity"); + leaveErrorState(); + } else { + Log.d(TAG, "Media seemed to have been mounted read only"); + } + } + } + + }; } diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java index 9014de525..e3ca5b5a5 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.adapter; import android.app.Dialog; import android.content.Context; +import android.widget.ProgressBar; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; @@ -20,7 +21,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.util.Converter; import de.danoeh.antennapod.core.util.StorageUtils; import de.danoeh.antennapod.dialog.ChooseDataFolderDialog; -import me.zhanghai.android.materialprogressbar.MaterialProgressBar; public class DataFolderAdapter extends RecyclerView.Adapter { @@ -105,7 +105,7 @@ public class DataFolderAdapter extends RecyclerView.Adapter downloadFeedItems(context, item)); + AlertDialog.Builder builder = new AlertDialog.Builder(context) + .setTitle(R.string.confirm_mobile_download_dialog_title) + .setMessage(R.string.confirm_mobile_download_dialog_message) + .setPositiveButton(context.getText(R.string.confirm_mobile_download_dialog_enable_temporarily), + (dialog, which) -> downloadFeedItems(context, item)); if (!DBReader.getQueueIDList().contains(item.getId())) { - builder - .content(R.string.confirm_mobile_download_dialog_message_not_in_queue) - .neutralText(R.string.confirm_mobile_download_dialog_only_add_to_queue) - .onNeutral((dialog, which) -> addToQueue(context, item)); + builder.setMessage(R.string.confirm_mobile_download_dialog_message_not_in_queue) + .setNeutralButton(R.string.confirm_mobile_download_dialog_only_add_to_queue, + (dialog, which) -> addToQueue(context, item)); } builder.show(); } diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java index 4cfa7e870..ec285a8f6 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java @@ -2,8 +2,10 @@ package de.danoeh.antennapod.dialog; import android.content.Context; -import com.afollestad.materialdialogs.MaterialDialog; - +import android.view.View; +import androidx.appcompat.app.AlertDialog; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import de.danoeh.antennapod.R; import de.danoeh.antennapod.adapter.DataFolderAdapter; @@ -25,21 +27,23 @@ public class ChooseDataFolderDialog { DataFolderAdapter adapter = new DataFolderAdapter(context, handlerFunc); if (adapter.getItemCount() == 0) { - new MaterialDialog.Builder(context) - .title(R.string.error_label) - .content(R.string.external_storage_error_msg) - .neutralText(android.R.string.ok) + new AlertDialog.Builder(context) + .setTitle(R.string.error_label) + .setMessage(R.string.external_storage_error_msg) + .setPositiveButton(android.R.string.ok, null) .show(); return; } - MaterialDialog dialog = new MaterialDialog.Builder(context) - .title(R.string.choose_data_directory) - .content(R.string.choose_data_directory_message) - .adapter(adapter, null) - .negativeText(R.string.cancel_label) - .cancelable(true) - .build(); + View content = View.inflate(context, R.layout.choose_data_folder_dialog, null); + AlertDialog dialog = new AlertDialog.Builder(context) + .setView(content) + .setTitle(R.string.choose_data_directory) + .setMessage(R.string.choose_data_directory_message) + .setNegativeButton(R.string.cancel_label, null) + .create(); + ((RecyclerView) content.findViewById(R.id.recyclerView)).setLayoutManager(new LinearLayoutManager(context)); + ((RecyclerView) content.findViewById(R.id.recyclerView)).setAdapter(adapter); adapter.setDialog(dialog); dialog.show(); } diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java index f6783a584..8b8860b43 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/PlaybackControlsDialog.java @@ -3,12 +3,12 @@ package de.danoeh.antennapod.dialog; import android.app.Dialog; import android.os.Bundle; import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; import android.widget.Button; import android.widget.CheckBox; import android.widget.SeekBar; import android.widget.TextView; -import com.afollestad.materialdialogs.MaterialDialog; import java.util.Locale; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.util.PlaybackSpeedUtils; @@ -24,7 +24,7 @@ public class PlaybackControlsDialog extends DialogFragment { private static final String ARGUMENT_IS_PLAYING_VIDEO = "isPlayingVideo"; private PlaybackController controller; - private MaterialDialog dialog; + private AlertDialog dialog; private boolean isPlayingVideo; public static PlaybackControlsDialog newInstance(boolean isPlayingVideo) { @@ -59,15 +59,14 @@ public class PlaybackControlsDialog extends DialogFragment { public Dialog onCreateDialog(Bundle savedInstanceState) { isPlayingVideo = getArguments() != null && getArguments().getBoolean(ARGUMENT_IS_PLAYING_VIDEO); - dialog = new MaterialDialog.Builder(getContext()) - .title(R.string.audio_controls) - .customView(R.layout.audio_controls, true) - .neutralText(R.string.close_label) - .onNeutral((dialog1, which) -> { - final SeekBar left = (SeekBar) dialog1.findViewById(R.id.volume_left); - final SeekBar right = (SeekBar) dialog1.findViewById(R.id.volume_right); + dialog = new AlertDialog.Builder(getContext()) + .setTitle(R.string.audio_controls) + .setView(R.layout.audio_controls) + .setPositiveButton(R.string.close_label, (dialog1, which) -> { + final SeekBar left = dialog.findViewById(R.id.volume_left); + final SeekBar right = dialog.findViewById(R.id.volume_right); UserPreferences.setVolume(left.getProgress(), right.getProgress()); - }).build(); + }).create(); return dialog; } diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java index 0499d02f1..11256f2de 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java @@ -4,6 +4,7 @@ import android.app.Dialog; import android.content.Context; import android.content.res.TypedArray; import android.os.Build; +import androidx.appcompat.app.AlertDialog; import androidx.core.content.ContextCompat; import android.text.Editable; import android.text.TextUtils; @@ -16,10 +17,6 @@ import android.widget.EditText; import android.widget.Spinner; import android.widget.TextView; -import com.afollestad.materialdialogs.DialogAction; -import com.afollestad.materialdialogs.MaterialDialog; -import com.afollestad.materialdialogs.internal.MDButton; - import java.io.IOException; import java.net.InetSocketAddress; import java.net.Proxy; @@ -48,7 +45,7 @@ public class ProxyDialog { private final Context context; - private MaterialDialog dialog; + private AlertDialog dialog; private Spinner spType; private EditText etHost; @@ -64,54 +61,53 @@ public class ProxyDialog { this.context = context; } - public Dialog createDialog() { - dialog = new MaterialDialog.Builder(context) - .title(R.string.pref_proxy_title) - .customView(R.layout.proxy_settings, true) - .positiveText(R.string.proxy_test_label) - .negativeText(R.string.cancel_label) - .onPositive((dialog1, which) -> { - if(!testSuccessful) { - dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false); - test(); - return; - } - String type = (String) ((Spinner) dialog1.findViewById(R.id.spType)).getSelectedItem(); - ProxyConfig proxy; - if(Proxy.Type.valueOf(type) == Proxy.Type.DIRECT) { - proxy = ProxyConfig.direct(); - } else { - String host = etHost.getText().toString(); - String port = etPort.getText().toString(); - String username = etUsername.getText().toString(); - if(TextUtils.isEmpty(username)) { - username = null; - } - String password = etPassword.getText().toString(); - if(TextUtils.isEmpty(password)) { - password = null; - } - int portValue = 0; - if(!TextUtils.isEmpty(port)) { - portValue = Integer.valueOf(port); - } - if (Proxy.Type.valueOf(type) == Proxy.Type.SOCKS) { - proxy = ProxyConfig.socks(host, portValue, username, password); - } else { - proxy = ProxyConfig.http(host, portValue, username, password); - } - } - UserPreferences.setProxyConfig(proxy); - AntennapodHttpClient.reinit(); - dialog.dismiss(); - }) - .onNegative((dialog1, which) -> dialog1.dismiss()) - .autoDismiss(false) - .build(); - View view = dialog.getCustomView(); - spType = view.findViewById(R.id.spType); + public Dialog show() { + View content = View.inflate(context, R.layout.proxy_settings, null); + dialog = new AlertDialog.Builder(context) + .setTitle(R.string.pref_proxy_title) + .setView(content) + .setNegativeButton(R.string.cancel_label, null) + .setPositiveButton(R.string.proxy_test_label, null) + .show(); + // To prevent cancelling the dialog on button click + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener((view) -> { + if (!testSuccessful) { + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false); + test(); + return; + } + String type = (String) ((Spinner) content.findViewById(R.id.spType)).getSelectedItem(); + ProxyConfig proxy; + if (Proxy.Type.valueOf(type) == Proxy.Type.DIRECT) { + proxy = ProxyConfig.direct(); + } else { + String host = etHost.getText().toString(); + String port = etPort.getText().toString(); + String username = etUsername.getText().toString(); + if(TextUtils.isEmpty(username)) { + username = null; + } + String password = etPassword.getText().toString(); + if(TextUtils.isEmpty(password)) { + password = null; + } + int portValue = 0; + if(!TextUtils.isEmpty(port)) { + portValue = Integer.valueOf(port); + } + if (Proxy.Type.valueOf(type) == Proxy.Type.SOCKS) { + proxy = ProxyConfig.socks(host, portValue, username, password); + } else { + proxy = ProxyConfig.http(host, portValue, username, password); + } + } + UserPreferences.setProxyConfig(proxy); + AntennapodHttpClient.reinit(); + dialog.dismiss(); + }); - List types= new ArrayList<>(); + spType = content.findViewById(R.id.spType); + List types = new ArrayList<>(); types.add(Proxy.Type.DIRECT.name()); types.add(Proxy.Type.HTTP.name()); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { @@ -123,22 +119,22 @@ public class ProxyDialog { spType.setAdapter(adapter); ProxyConfig proxyConfig = UserPreferences.getProxyConfig(); spType.setSelection(adapter.getPosition(proxyConfig.type.name())); - etHost = view.findViewById(R.id.etHost); + etHost = content.findViewById(R.id.etHost); if(!TextUtils.isEmpty(proxyConfig.host)) { etHost.setText(proxyConfig.host); } etHost.addTextChangedListener(requireTestOnChange); - etPort = view.findViewById(R.id.etPort); + etPort = content.findViewById(R.id.etPort); if(proxyConfig.port > 0) { etPort.setText(String.valueOf(proxyConfig.port)); } etPort.addTextChangedListener(requireTestOnChange); - etUsername = view.findViewById(R.id.etUsername); + etUsername = content.findViewById(R.id.etUsername); if(!TextUtils.isEmpty(proxyConfig.username)) { etUsername.setText(proxyConfig.username); } etUsername.addTextChangedListener(requireTestOnChange); - etPassword = view.findViewById(R.id.etPassword); + etPassword = content.findViewById(R.id.etPassword); if(!TextUtils.isEmpty(proxyConfig.password)) { etPassword.setText(proxyConfig.username); } @@ -159,7 +155,7 @@ public class ProxyDialog { enableSettings(false); } }); - txtvMessage = view.findViewById(R.id.txtvMessage); + txtvMessage = content.findViewById(R.id.txtvMessage); checkValidity(); return dialog; } @@ -230,14 +226,12 @@ public class ProxyDialog { private void setTestRequired(boolean required) { if(required) { testSuccessful = false; - MDButton button = dialog.getActionButton(DialogAction.POSITIVE); - button.setText(context.getText(R.string.proxy_test_label)); - button.setEnabled(true); + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setText(R.string.proxy_test_label); + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); } else { testSuccessful = true; - MDButton button = dialog.getActionButton(DialogAction.POSITIVE); - button.setText(context.getText(android.R.string.ok)); - button.setEnabled(true); + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setText(android.R.string.ok); + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(true); } } diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java index c49e9153e..7cb274708 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java @@ -7,11 +7,10 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import android.util.Log; -import com.afollestad.materialdialogs.MaterialDialog; - import java.lang.ref.WeakReference; import java.util.concurrent.TimeUnit; +import androidx.appcompat.app.AlertDialog; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.util.IntentUtils; @@ -97,21 +96,18 @@ public class RatingDialog { } @Nullable - private static MaterialDialog createDialog() { + private static AlertDialog createDialog() { Context context = mContext.get(); - if(context == null) { + if (context == null) { return null; } - return new MaterialDialog.Builder(context) - .title(R.string.rating_title) - .content(R.string.rating_message) - .positiveText(R.string.rating_now_label) - .negativeText(R.string.rating_never_label) - .neutralText(R.string.rating_later_label) - .onPositive((dialog, which) -> rateNow()) - .onNegative((dialog, which) -> saveRated()) - .onNeutral((dialog, which) -> resetStartDate()) - .cancelListener(dialog1 -> resetStartDate()) - .build(); + return new AlertDialog.Builder(context) + .setTitle(R.string.rating_title) + .setMessage(R.string.rating_message) + .setPositiveButton(R.string.rating_now_label, (dialog, which) -> rateNow()) + .setNegativeButton(R.string.rating_never_label, (dialog, which) -> saveRated()) + .setNeutralButton(R.string.rating_later_label, (dialog, which) -> resetStartDate()) + .setOnCancelListener(dialog1 -> resetStartDate()) + .create(); } } diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/RenameFeedDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/RenameFeedDialog.java index 31a544582..699c6f492 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/RenameFeedDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/RenameFeedDialog.java @@ -3,10 +3,12 @@ package de.danoeh.antennapod.dialog; import android.app.Activity; import android.text.InputType; -import com.afollestad.materialdialogs.MaterialDialog; - import java.lang.ref.WeakReference; +import android.view.View; +import android.widget.EditText; +import androidx.appcompat.app.AlertDialog; +import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.storage.DBWriter; @@ -25,20 +27,24 @@ public class RenameFeedDialog { if(activity == null) { return; } - new MaterialDialog.Builder(activity) - .title(de.danoeh.antennapod.core.R.string.rename_feed_label) - .inputType(InputType.TYPE_CLASS_TEXT) - .input(feed.getTitle(), feed.getTitle(), true, (dialog, input) -> { - feed.setCustomTitle(input.toString()); + + View content = View.inflate(activity, R.layout.edit_text_dialog, null); + EditText editText = content.findViewById(R.id.text); + editText.setText(feed.getTitle()); + AlertDialog dialog = new AlertDialog.Builder(activity) + .setView(content) + .setTitle(de.danoeh.antennapod.core.R.string.rename_feed_label) + .setPositiveButton(android.R.string.ok, (d, input) -> { + feed.setCustomTitle(editText.getText().toString()); DBWriter.setFeedCustomTitle(feed); - dialog.dismiss(); }) - .neutralText(de.danoeh.antennapod.core.R.string.reset) - .onNeutral((dialog, which) -> dialog.getInputEditText().setText(feed.getFeedTitle())) - .negativeText(de.danoeh.antennapod.core.R.string.cancel_label) - .onNegative((dialog, which) -> dialog.dismiss()) - .autoDismiss(false) + .setNeutralButton(de.danoeh.antennapod.core.R.string.reset, null) + .setNegativeButton(de.danoeh.antennapod.core.R.string.cancel_label, null) .show(); + + // To prevent cancelling the dialog on button click + dialog.getButton(AlertDialog.BUTTON_NEUTRAL).setOnClickListener( + (view) -> editText.setText(feed.getFeedTitle())); } } diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java index dc056a3f9..8d176c708 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java @@ -3,7 +3,6 @@ package de.danoeh.antennapod.dialog; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; -import android.util.Log; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.ArrayAdapter; @@ -12,9 +11,7 @@ import android.widget.EditText; import android.widget.Spinner; import android.widget.Toast; -import com.afollestad.materialdialogs.DialogAction; -import com.afollestad.materialdialogs.MaterialDialog; - +import androidx.appcompat.app.AlertDialog; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.event.MessageEvent; import de.danoeh.antennapod.core.preferences.SleepTimerPreferences; @@ -26,7 +23,7 @@ public abstract class SleepTimerDialog { private final Context context; - private MaterialDialog dialog; + private AlertDialog dialog; private EditText etxtTime; private Spinner spTimeUnit; private CheckBox cbShakeToReset; @@ -38,40 +35,38 @@ public abstract class SleepTimerDialog { this.context = context; } - public MaterialDialog createNewDialog() { - MaterialDialog.Builder builder = new MaterialDialog.Builder(context); - builder.title(R.string.set_sleeptimer_label); - builder.customView(R.layout.time_dialog, false); - builder.positiveText(R.string.set_sleeptimer_label); - builder.negativeText(R.string.cancel_label); - builder.onNegative((dialog, which) -> dialog.dismiss()); - builder.onPositive((dialog, which) -> { - try { - savePreferences(); - long input = SleepTimerPreferences.timerMillis(); - onTimerSet(input, cbShakeToReset.isChecked(), cbVibrate.isChecked()); - dialog.dismiss(); - } catch (NumberFormatException e) { - e.printStackTrace(); - Toast toast = Toast.makeText(context, R.string.time_dialog_invalid_input, - Toast.LENGTH_LONG); - toast.show(); - } - }); - dialog = builder.build(); - - View view = dialog.getView(); - etxtTime = view.findViewById(R.id.etxtTime); - spTimeUnit = view.findViewById(R.id.spTimeUnit); - cbShakeToReset = view.findViewById(R.id.cbShakeToReset); - cbVibrate = view.findViewById(R.id.cbVibrate); - chAutoEnable = view.findViewById(R.id.chAutoEnable); + public AlertDialog createNewDialog() { + View content = View.inflate(context, R.layout.time_dialog, null); + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(R.string.set_sleeptimer_label); + builder.setView(content); + builder.setNegativeButton(R.string.cancel_label, (dialog, which) -> dialog.dismiss()); + builder.setPositiveButton(R.string.set_sleeptimer_label, (dialog, which) -> { + try { + savePreferences(); + long input = SleepTimerPreferences.timerMillis(); + onTimerSet(input, cbShakeToReset.isChecked(), cbVibrate.isChecked()); + dialog.dismiss(); + } catch (NumberFormatException e) { + e.printStackTrace(); + Toast toast = Toast.makeText(context, R.string.time_dialog_invalid_input, + Toast.LENGTH_LONG); + toast.show(); + } + }); + dialog = builder.create(); + + etxtTime = content.findViewById(R.id.etxtTime); + spTimeUnit = content.findViewById(R.id.spTimeUnit); + cbShakeToReset = content.findViewById(R.id.cbShakeToReset); + cbVibrate = content.findViewById(R.id.cbVibrate); + chAutoEnable = content.findViewById(R.id.chAutoEnable); etxtTime.setText(SleepTimerPreferences.lastTimerValue()); etxtTime.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable s) { - checkInputLength(s.length()); + dialog.getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(s.length() > 0); } @Override @@ -109,16 +104,6 @@ public abstract class SleepTimerDialog { return dialog; } - private void checkInputLength(int length) { - if (length > 0) { - Log.d(TAG, "Length is larger than 0, enabling confirm button"); - dialog.getActionButton(DialogAction.POSITIVE).setEnabled(true); - } else { - Log.d(TAG, "Length is smaller than 0, disabling confirm button"); - dialog.getActionButton(DialogAction.POSITIVE).setEnabled(false); - } - } - public abstract void onTimerSet(long millis, boolean shakeToReset, boolean vibrate); private void savePreferences() { diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java index 1cf34b2b3..a5c78b511 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/VariableSpeedDialog.java @@ -7,10 +7,6 @@ import android.net.Uri; import android.os.Build; import androidx.appcompat.app.AlertDialog; import android.util.Log; -import android.view.View; - -import com.afollestad.materialdialogs.DialogAction; -import com.afollestad.materialdialogs.MaterialDialog; import java.util.Arrays; import java.util.List; @@ -45,38 +41,30 @@ public class VariableSpeedDialog { } private static void showGetPluginDialog(final Context context, boolean showSpeedSelector) { - MaterialDialog.Builder builder = new MaterialDialog.Builder(context); - builder.title(R.string.no_playback_plugin_title); - builder.content(R.string.no_playback_plugin_or_sonic_msg); - builder.positiveText(R.string.enable_sonic); - builder.negativeText(R.string.download_plugin_label); - builder.neutralText(R.string.close_label); - builder.onPositive((dialog, which) -> { - if (Build.VERSION.SDK_INT >= 16) { // just to be safe + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(R.string.no_playback_plugin_title); + builder.setMessage(R.string.no_playback_plugin_or_sonic_msg); + + if (Build.VERSION.SDK_INT >= 16) { + builder.setPositiveButton(R.string.enable_sonic, (dialog, which) -> { UserPreferences.enableSonic(); - if(showSpeedSelector) { + if (showSpeedSelector) { showSpeedSelectorDialog(context); } - } - }); - builder.onNegative((dialog, which) -> { - try { - context.startActivity(playStoreIntent); - } catch (ActivityNotFoundException e) { - // this is usually thrown on an emulator if the Android market is not installed - Log.e(TAG, Log.getStackTraceString(e)); - } - }); - builder.forceStacking(true); - MaterialDialog dialog = builder.show(); - if (Build.VERSION.SDK_INT < 16) { - View pos = dialog.getActionButton(DialogAction.POSITIVE); - pos.setEnabled(false); + }); } - if(!IntentUtils.isCallable(context.getApplicationContext(), playStoreIntent)) { - View pos = dialog.getActionButton(DialogAction.NEGATIVE); - pos.setEnabled(false); + if (IntentUtils.isCallable(context.getApplicationContext(), playStoreIntent)) { + builder.setNegativeButton(R.string.download_plugin_label, (dialog, which) -> { + try { + context.startActivity(playStoreIntent); + } catch (ActivityNotFoundException e) { + // this is usually thrown on an emulator if the Android market is not installed + Log.e(TAG, Log.getStackTraceString(e)); + } + }); } + builder.setNeutralButton(R.string.close_label, null); + builder.show(); } private static void showSpeedSelectorDialog(final Context context) { diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java index 673b58901..ca691c2e6 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.fragment; import android.content.Intent; import android.os.Bundle; +import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import androidx.core.view.MenuItemCompat; import androidx.appcompat.widget.SearchView; @@ -18,8 +19,6 @@ import android.widget.GridView; import android.widget.ProgressBar; import android.widget.TextView; -import com.afollestad.materialdialogs.MaterialDialog; - import de.danoeh.antennapod.discovery.ItunesPodcastSearcher; import de.danoeh.antennapod.discovery.ItunesTopListLoader; import de.danoeh.antennapod.discovery.PodcastSearchResult; @@ -120,9 +119,9 @@ public class ItunesSearchFragment extends Fragment { progressBar.setVisibility(View.GONE); gridView.setVisibility(View.VISIBLE); String prefix = getString(R.string.error_msg_prefix); - new MaterialDialog.Builder(getActivity()) - .content(prefix + " " + error.getMessage()) - .neutralText(android.R.string.ok) + new AlertDialog.Builder(getActivity()) + .setMessage(prefix + " " + error.getMessage()) + .setPositiveButton(android.R.string.ok, null) .show(); }); }); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QuickFeedDiscoveryFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QuickFeedDiscoveryFragment.java index 226209740..7e217cde4 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/QuickFeedDiscoveryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/QuickFeedDiscoveryFragment.java @@ -2,6 +2,7 @@ package de.danoeh.antennapod.fragment; import android.content.Intent; import android.os.Bundle; +import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; import android.util.Log; import android.view.LayoutInflater; @@ -11,7 +12,6 @@ import android.widget.AdapterView; import android.widget.GridView; import android.widget.ProgressBar; import android.widget.TextView; -import com.afollestad.materialdialogs.MaterialDialog; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.activity.OnlineFeedViewActivity; @@ -110,9 +110,9 @@ public class QuickFeedDiscoveryFragment extends Fragment implements AdapterView. Log.e(TAG, Log.getStackTraceString(error)); view.setAlpha(1f); String prefix = getString(R.string.error_msg_prefix); - new MaterialDialog.Builder(getActivity()) - .content(prefix + " " + error.getMessage()) - .neutralText(android.R.string.ok) + new AlertDialog.Builder(getActivity()) + .setMessage(prefix + " " + error.getMessage()) + .setPositiveButton(android.R.string.ok, null) .show(); }); } diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NetworkPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NetworkPreferencesFragment.java index 34e8684ed..1ca8f63aa 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NetworkPreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/preferences/NetworkPreferencesFragment.java @@ -5,11 +5,8 @@ import android.content.Context; import android.content.res.Resources; import android.os.Bundle; import androidx.appcompat.app.AlertDialog; -import androidx.appcompat.app.AppCompatActivity; -import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; import android.text.format.DateFormat; -import com.afollestad.materialdialogs.MaterialDialog; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.PreferenceActivity; import de.danoeh.antennapod.core.preferences.UserPreferences; @@ -65,7 +62,7 @@ public class NetworkPreferencesFragment extends PreferenceFragmentCompat { // validate and set correct value: number of downloads between 1 and 50 (inclusive) findPreference(PREF_PROXY).setOnPreferenceClickListener(preference -> { ProxyDialog dialog = new ProxyDialog(getActivity()); - dialog.createDialog().show(); + dialog.show(); return true; }); } @@ -107,13 +104,10 @@ public class NetworkPreferencesFragment extends PreferenceFragmentCompat { private void showUpdateIntervalTimePreferencesDialog() { final Context context = getActivity(); - MaterialDialog.Builder builder = new MaterialDialog.Builder(context); - builder.title(R.string.pref_autoUpdateIntervallOrTime_title); - builder.content(R.string.pref_autoUpdateIntervallOrTime_message); - builder.positiveText(R.string.pref_autoUpdateIntervallOrTime_Interval); - builder.negativeText(R.string.pref_autoUpdateIntervallOrTime_TimeOfDay); - builder.neutralText(R.string.pref_autoUpdateIntervallOrTime_Disable); - builder.onPositive((dialog, which) -> { + AlertDialog.Builder builder = new AlertDialog.Builder(context); + builder.setTitle(R.string.pref_autoUpdateIntervallOrTime_title); + builder.setMessage(R.string.pref_autoUpdateIntervallOrTime_message); + builder.setPositiveButton(R.string.pref_autoUpdateIntervallOrTime_Interval, (dialog, which) -> { AlertDialog.Builder builder1 = new AlertDialog.Builder(context); builder1.setTitle(context.getString(R.string.pref_autoUpdateIntervallOrTime_Interval)); final String[] values = context.getResources().getStringArray(R.array.update_intervall_values); @@ -133,7 +127,7 @@ public class NetworkPreferencesFragment extends PreferenceFragmentCompat { builder1.setNegativeButton(context.getString(R.string.cancel_label), null); builder1.show(); }); - builder.onNegative((dialog, which) -> { + builder.setNegativeButton(R.string.pref_autoUpdateIntervallOrTime_TimeOfDay, (dialog, which) -> { int hourOfDay = 7; int minute = 0; int[] updateTime = UserPreferences.getUpdateTimeOfDay(); @@ -152,7 +146,7 @@ public class NetworkPreferencesFragment extends PreferenceFragmentCompat { timePickerDialog.setTitle(context.getString(R.string.pref_autoUpdateIntervallOrTime_TimeOfDay)); timePickerDialog.show(); }); - builder.onNeutral((dialog, which) -> { + builder.setNeutralButton(R.string.pref_autoUpdateIntervallOrTime_Disable, (dialog, which) -> { UserPreferences.disableAutoUpdate(); setUpdateIntervalText(); }); diff --git a/app/src/main/res/layout/audio_controls.xml b/app/src/main/res/layout/audio_controls.xml index 090aec47f..5049db215 100644 --- a/app/src/main/res/layout/audio_controls.xml +++ b/app/src/main/res/layout/audio_controls.xml @@ -3,7 +3,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" - android:layout_height="wrap_content"> + android:layout_height="wrap_content" + android:padding="16dp"> + + + + + diff --git a/app/src/main/res/layout/choose_data_folder_dialog_entry.xml b/app/src/main/res/layout/choose_data_folder_dialog_entry.xml index f4a2ff703..ae59c0614 100644 --- a/app/src/main/res/layout/choose_data_folder_dialog_entry.xml +++ b/app/src/main/res/layout/choose_data_folder_dialog_entry.xml @@ -37,12 +37,11 @@ android:layout_height="wrap_content" tools:text="2 GB" /> - + android:layout_height="wrap_content" /> diff --git a/app/src/main/res/layout/edit_text_dialog.xml b/app/src/main/res/layout/edit_text_dialog.xml new file mode 100644 index 000000000..6bf0bc6cb --- /dev/null +++ b/app/src/main/res/layout/edit_text_dialog.xml @@ -0,0 +1,15 @@ + + + + + + diff --git a/app/src/main/res/layout/numberpicker.xml b/app/src/main/res/layout/numberpicker.xml index 813326bd6..d493f2e6c 100644 --- a/app/src/main/res/layout/numberpicker.xml +++ b/app/src/main/res/layout/numberpicker.xml @@ -3,7 +3,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" - android:padding="32dp"> + android:padding="16dp"> - + android:layout_width="match_parent" + android:orientation="vertical" + android:padding="16dp"> diff --git a/app/src/main/res/layout/time_dialog.xml b/app/src/main/res/layout/time_dialog.xml index ba4249268..b3742c20c 100644 --- a/app/src/main/res/layout/time_dialog.xml +++ b/app/src/main/res/layout/time_dialog.xml @@ -1,12 +1,13 @@ + android:gravity="center" + android:padding="16dp"> @@ -33,7 +34,7 @@ diff --git a/app/src/main/res/layout/videoplayer_activity.xml b/app/src/main/res/layout/videoplayer_activity.xml index 4de46810e..b26ef304c 100644 --- a/app/src/main/res/layout/videoplayer_activity.xml +++ b/app/src/main/res/layout/videoplayer_activity.xml @@ -1,5 +1,6 @@ + app:srcCompat="@drawable/ic_av_fast_rewind_white_80dp" /> + app:srcCompat="@drawable/ic_av_pause_white_80dp" /> + app:srcCompat="@drawable/ic_av_fast_forward_white_80dp" /> diff --git a/app/src/main/res/xml/preferences_autodownload.xml b/app/src/main/res/xml/preferences_autodownload.xml index a4967c839..333224aa0 100644 --- a/app/src/main/res/xml/preferences_autodownload.xml +++ b/app/src/main/res/xml/preferences_autodownload.xml @@ -15,16 +15,14 @@ android:key="prefEpisodeCacheSize" android:title="@string/pref_episode_cache_title" android:summary="@string/pref_episode_cache_summary" - android:entryValues="@array/episode_cache_size_values" - app:useStockLayout="true"/> + android:entryValues="@array/episode_cache_size_values"/> + android:entryValues="@array/episode_cleanup_values"/> - + + android:title="@string/pref_videoBehavior_title"/> @@ -95,8 +92,7 @@ android:entries="@array/enqueue_location_options" android:entryValues="@array/enqueue_location_values" android:key="prefEnqueueLocation" - android:title="@string/pref_enqueue_location_title" - app:useStockLayout="true"/> + android:title="@string/pref_enqueue_location_title"/> + android:title="@string/pref_smart_mark_as_played_title"/> + android:entryValues="@array/media_player_values"/> diff --git a/app/src/main/res/xml/preferences_user_interface.xml b/app/src/main/res/xml/preferences_user_interface.xml index 3402f4ffa..20a06c4c4 100644 --- a/app/src/main/res/xml/preferences_user_interface.xml +++ b/app/src/main/res/xml/preferences_user_interface.xml @@ -10,8 +10,7 @@ android:title="@string/pref_set_theme_title" android:key="prefTheme" android:summary="@string/pref_set_theme_sum" - android:defaultValue="system" - app:useStockLayout="true"/> + android:defaultValue="system"/> + android:defaultValue="0"/> + android:defaultValue="0"/> + android:enabled="true"/> + android:defaultValue="default"/> diff --git a/build.gradle b/build.gradle index 73eab1704..1bdf600bb 100644 --- a/build.gradle +++ b/build.gradle @@ -55,7 +55,6 @@ project.ext { glideOkhttpIntegrationVersion = "4.8.0" iconifyVersion = "2.2.2" jsoupVersion = "1.11.2" - materialDialogsVersion = "0.9.0.2" okhttpVersion = "3.12.5" okioVersion = "1.17.4" recyclerviewFlexibledividerVersion = "1.4.0" -- cgit v1.2.3