Clean up theming code

This commit is contained in:
Isira Seneviratne 2025-09-21 13:00:23 +05:30
parent c7ee483c3b
commit 8aef204f68
11 changed files with 20 additions and 108 deletions

View File

@ -70,7 +70,6 @@ import org.schabi.newpipe.util.SecondaryStreamHelper;
import org.schabi.newpipe.util.SimpleOnSeekBarChangeListener;
import org.schabi.newpipe.util.StreamItemAdapter;
import org.schabi.newpipe.util.StreamItemAdapter.StreamInfoWrapper;
import org.schabi.newpipe.util.ThemeHelper;
import java.io.File;
import java.io.IOException;
@ -212,7 +211,6 @@ public class DownloadDialog extends DialogFragment
// dialog is being dismissed in onViewCreated()
context = getContext();
setStyle(STYLE_NO_TITLE, ThemeHelper.getDialogTheme(context));
Bridge.restoreInstanceState(this, savedInstanceState);
this.audioTrackAdapter = new AudioTrackAdapter(wrappedAudioTracks);

View File

@ -14,7 +14,6 @@ import org.schabi.newpipe.R;
import org.schabi.newpipe.database.stream.model.StreamEntity;
import org.schabi.newpipe.databinding.DialogEditTextBinding;
import org.schabi.newpipe.local.playlist.LocalPlaylistManager;
import org.schabi.newpipe.util.ThemeHelper;
import java.util.List;
@ -45,30 +44,25 @@ public final class PlaylistCreationDialog extends PlaylistDialog {
return super.onCreateDialog(savedInstanceState);
}
final DialogEditTextBinding dialogBinding =
DialogEditTextBinding.inflate(getLayoutInflater());
dialogBinding.getRoot().getContext().setTheme(ThemeHelper.getDialogTheme(requireContext()));
final var dialogBinding = DialogEditTextBinding.inflate(getLayoutInflater());
dialogBinding.dialogEditText.setHint(R.string.name);
dialogBinding.dialogEditText.setInputType(InputType.TYPE_CLASS_TEXT);
final Builder dialogBuilder = new Builder(requireContext(),
ThemeHelper.getDialogTheme(requireContext()))
return new Builder(requireContext())
.setTitle(R.string.create_playlist)
.setView(dialogBinding.getRoot())
.setCancelable(true)
.setNegativeButton(R.string.cancel, null)
.setPositiveButton(R.string.create, (dialogInterface, i) -> {
final String name = dialogBinding.dialogEditText.getText().toString();
final LocalPlaylistManager playlistManager =
new LocalPlaylistManager(NewPipeDatabase.getInstance(requireContext()));
final var db = NewPipeDatabase.getInstance(requireContext());
final Toast successToast = Toast.makeText(getActivity(),
R.string.playlist_creation_success,
Toast.LENGTH_SHORT);
R.string.playlist_creation_success, Toast.LENGTH_SHORT);
playlistManager.createPlaylist(name, getStreamEntities())
new LocalPlaylistManager(db).createPlaylist(name, getStreamEntities())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(longs -> successToast.show());
});
return dialogBuilder.create();
})
.create();
}
}

View File

@ -39,7 +39,6 @@ import org.schabi.newpipe.local.subscription.item.ImportSubscriptionsHintPlaceho
import org.schabi.newpipe.local.subscription.item.PickerIconItem
import org.schabi.newpipe.local.subscription.item.PickerSubscriptionItem
import org.schabi.newpipe.util.DeviceUtils
import org.schabi.newpipe.util.ThemeHelper
import java.io.Serializable
class FeedGroupDialog : DialogFragment(), BackPressable {
@ -80,7 +79,6 @@ class FeedGroupDialog : DialogFragment(), BackPressable {
super.onCreate(savedInstanceState)
Bridge.restoreInstanceState(this, savedInstanceState)
setStyle(STYLE_NO_TITLE, ThemeHelper.getMinWidthDialogTheme(requireContext()))
groupId = arguments?.getLong(KEY_GROUP_ID, NO_GROUP_SELECTED) ?: NO_GROUP_SELECTED
}

View File

@ -21,7 +21,6 @@ import org.schabi.newpipe.databinding.DialogFeedGroupReorderBinding
import org.schabi.newpipe.local.subscription.dialog.FeedGroupReorderDialogViewModel.DialogEvent.ProcessingEvent
import org.schabi.newpipe.local.subscription.dialog.FeedGroupReorderDialogViewModel.DialogEvent.SuccessEvent
import org.schabi.newpipe.local.subscription.item.FeedGroupReorderItem
import org.schabi.newpipe.util.ThemeHelper
import java.util.Collections
class FeedGroupReorderDialog : DialogFragment() {
@ -39,8 +38,6 @@ class FeedGroupReorderDialog : DialogFragment() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Bridge.restoreInstanceState(this, savedInstanceState)
setStyle(STYLE_NO_TITLE, ThemeHelper.getMinWidthDialogTheme(requireContext()))
}
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

View File

@ -10,7 +10,6 @@ import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.compose.ui.platform.ComposeView;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -22,7 +21,6 @@ import org.schabi.newpipe.error.ErrorUtil;
import org.schabi.newpipe.local.subscription.SubscriptionManager;
import org.schabi.newpipe.ui.emptystate.EmptyStateSpec;
import org.schabi.newpipe.ui.emptystate.EmptyStateUtil;
import org.schabi.newpipe.util.ThemeHelper;
import org.schabi.newpipe.util.image.CoilHelper;
import java.util.List;
@ -77,12 +75,6 @@ public class SelectChannelFragment extends DialogFragment {
// Init
//////////////////////////////////////////////////////////////////////////*/
@Override
public void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NO_TITLE, ThemeHelper.getMinWidthDialogTheme(requireContext()));
}
@Override
public View onCreateView(@NonNull final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {

View File

@ -1,6 +1,5 @@
package org.schabi.newpipe.settings;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@ -10,7 +9,6 @@ import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@ -20,7 +18,6 @@ import org.schabi.newpipe.R;
import org.schabi.newpipe.database.AppDatabase;
import org.schabi.newpipe.database.feed.model.FeedGroupEntity;
import org.schabi.newpipe.error.ErrorUtil;
import org.schabi.newpipe.util.ThemeHelper;
import java.util.List;
import java.util.Vector;
@ -52,10 +49,7 @@ import io.reactivex.rxjava3.schedulers.Schedulers;
*/
public class SelectFeedGroupFragment extends DialogFragment {
private OnSelectedListener onSelectedListener = null;
private OnCancelListener onCancelListener = null;
private OnSelectedListener onSelectedListener;
private ProgressBar progressBar;
private TextView emptyView;
private RecyclerView recyclerView;
@ -66,20 +60,10 @@ public class SelectFeedGroupFragment extends DialogFragment {
onSelectedListener = listener;
}
public void setOnCancelListener(final OnCancelListener listener) {
onCancelListener = listener;
}
/*//////////////////////////////////////////////////////////////////////////
// Init
//////////////////////////////////////////////////////////////////////////*/
@Override
public void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NO_TITLE, ThemeHelper.getMinWidthDialogTheme(requireContext()));
}
@Override
public View onCreateView(@NonNull final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
@ -109,14 +93,6 @@ public class SelectFeedGroupFragment extends DialogFragment {
// Handle actions
//////////////////////////////////////////////////////////////////////////*/
@Override
public void onCancel(@NonNull final DialogInterface dialogInterface) {
super.onCancel(dialogInterface);
if (onCancelListener != null) {
onCancelListener.onCancel();
}
}
private void clickedItem(final int position) {
if (onSelectedListener != null) {
final FeedGroupEntity entry = feedGroups.get(position);

View File

@ -8,7 +8,6 @@ import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.content.res.AppCompatResources;
import androidx.fragment.app.DialogFragment;
import androidx.recyclerview.widget.LinearLayoutManager;
@ -20,7 +19,6 @@ import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.StreamingService;
import org.schabi.newpipe.util.KioskTranslator;
import org.schabi.newpipe.util.ServiceHelper;
import org.schabi.newpipe.util.ThemeHelper;
import java.util.List;
import java.util.Vector;
@ -59,12 +57,6 @@ public class SelectKioskFragment extends DialogFragment {
// Init
//////////////////////////////////////////////////////////////////////////*/
@Override
public void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setStyle(STYLE_NO_TITLE, ThemeHelper.getMinWidthDialogTheme(requireContext()));
}
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {

View File

@ -90,29 +90,6 @@ public final class ThemeHelper {
&& !isDeviceDarkThemeEnabled(context));
}
/**
* Return a dialog theme styled according to the (default) selected theme.
*
* @param context context to get the selected theme
* @return the dialog style (the default one)
*/
@StyleRes
public static int getDialogTheme(final Context context) {
return isLightThemeSelected(context) ? R.style.LightDialogTheme : R.style.DarkDialogTheme;
}
/**
* Return a min-width dialog theme styled according to the (default) selected theme.
*
* @param context context to get the selected theme
* @return the dialog style (the default one)
*/
@StyleRes
public static int getMinWidthDialogTheme(final Context context) {
return isLightThemeSelected(context) ? R.style.LightDialogMinWidthTheme
: R.style.DarkDialogMinWidthTheme;
}
/**
* Return the selected theme styled according to the serviceId.
*

View File

@ -70,7 +70,7 @@
<Button
android:id="@+id/select_channel_button"
style="@style/Widget.AppCompat.Button.Borderless"
style="@style/Widget.Material3.Button.TextButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
@ -107,8 +107,7 @@
android:id="@+id/subscriptions_header_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:gravity="center_vertical"
android:theme="@style/ContrastToolbarTheme">
android:gravity="center_vertical">
<LinearLayout
android:id="@+id/subscriptions_header_info_container"
@ -157,7 +156,7 @@
<org.schabi.newpipe.views.NewPipeTextView
android:id="@+id/delete_screen_message"
style="@style/TextAppearance.AppCompat.Subhead"
style="@style/TextAppearance.Material3.ActionBar.Subtitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start"

View File

@ -3,8 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:theme="@style/ContrastTintTheme">
android:orientation="horizontal">
<LinearLayout
android:id="@+id/suggestion_search"

View File

@ -41,27 +41,22 @@
<item name="colorPrimaryInverse">@color/m3_inverse_primary_light</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:windowLightNavigationBar">true</item>
<item name="android:statusBarColor">?attr/colorSurface</item> <!-- Or colorPrimary, colorSurfaceContainer etc. -->
<item name="android:navigationBarColor">?attr/colorSurfaceContainer</item> <!-- M3 standard -->
<item name="android:statusBarColor">?attr/colorSurface</item>
<item name="android:navigationBarColor">?attr/colorSurfaceContainer</item>
<!-- AppCompat fallbacks if needed, M3 attributes are preferred -->
<item name="windowBackground">@color/m3_background_light</item> <!-- For AppCompat -->
<item name="colorAccent">?attr/colorPrimary</item> <!-- Deprecated, map to primary or secondary -->
<item name="colorAccent">?attr/colorPrimary</item>
<item name="alertDialogTheme">@style/ThemeOverlay.Material3.MaterialAlertDialog</item>
<!-- Custom Attributes Mapping -->
<item name="actionColor">?attr/colorOnPrimary</item> <!-- Assuming toolbar uses colorPrimary -->
<item name="toolbarSearchColor">?attr/colorOnPrimary</item> <!-- Assuming toolbar uses colorPrimary -->
<item name="actionColor">?attr/colorOnPrimary</item>
<item name="toolbarSearchColor">?attr/colorOnPrimary</item>
<item name="colorControlActivated">?attr/colorPrimary</item>
<item name="separator_color">?attr/colorOutlineVariant</item>
<item name="contrast_background_color">@color/m3_surface_container_highest_light</item>
<item name="card_item_background_color">@color/m3_surface_container_low_light</item>
<item name="card_item_contrast_color">?attr/colorOnSurface</item> <!-- Text on surfaceContainerLow -->
<item name="card_item_contrast_color">?attr/colorOnSurface</item>
<item name="border_color">?attr/colorOutline</item>
<!-- Styles for components -->
<item name="floatingActionButtonStyle">@style/App.FloatingActionButton</item>
<item name="materialAlertDialogTheme">@style/App.MaterialAlertDialog.Light</item>
<!-- Existing Drawables (Review and Update for M3) -->
<item name="checked_selector">@drawable/selector_checked_light</item>
<item name="focused_selector">@drawable/selector_focused_light</item>
@ -104,11 +99,10 @@
<item name="android:statusBarColor">?attr/colorSurface</item>
<item name="android:navigationBarColor">?attr/colorSurfaceContainer</item>
<!-- AppCompat fallbacks -->
<item name="windowBackground">@color/m3_background_dark</item>
<item name="colorAccent">?attr/colorPrimary</item>
<item name="alertDialogTheme">@style/ThemeOverlay.Material3.MaterialAlertDialog</item>
<!-- Custom Attributes Mapping -->
<item name="actionColor">?attr/colorOnPrimary</item>
<item name="toolbarSearchColor">?attr/colorOnPrimary</item>
<item name="colorControlActivated">?attr/colorPrimary</item>
@ -118,10 +112,6 @@
<item name="card_item_contrast_color">?attr/colorOnSurface</item>
<item name="border_color">?attr/colorOutline</item>
<!-- Styles for components -->
<item name="floatingActionButtonStyle">@style/App.FloatingActionButton</item>
<item name="materialAlertDialogTheme">@style/App.MaterialAlertDialog.Dark</item>
<!-- Existing Drawables (Review and Update for M3) -->
<item name="checked_selector">@drawable/selector_checked_dark</item>
<item name="focused_selector">@drawable/selector_focused_dark</item>