From c956d44a3b9c38ff47432555a96dc1d2fb0a78ff Mon Sep 17 00:00:00 2001 From: tom79 Date: Wed, 6 Nov 2019 15:52:39 +0100 Subject: [PATCH] Allow to change colors --- .../drawers/NotificationsListAdapter.java | 12 +++- .../android/drawers/StatusListAdapter.java | 15 ++++- .../fragments/ColorSettingsFragment.java | 67 +++++++++++++++---- .../main/res/layout/drawer_notification.xml | 1 + app/src/main/res/layout/drawer_status.xml | 1 + .../main/res/layout/drawer_status_compact.xml | 1 + .../main/res/layout/drawer_status_console.xml | 1 + .../main/res/layout/drawer_status_focused.xml | 1 + .../main/res/layout/pref_reset_bd_button.xml | 10 +++ app/src/main/res/values/strings.xml | 5 ++ app/src/main/res/values/styles.xml | 7 ++ .../main/res/xml/fragment_settings_color.xml | 13 ++++ 12 files changed, 117 insertions(+), 17 deletions(-) create mode 100644 app/src/main/res/layout/pref_reset_bd_button.xml diff --git a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java index bc63e2aa0..76f30a6e6 100644 --- a/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/NotificationsListAdapter.java @@ -34,6 +34,7 @@ import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.PopupMenu; +import androidx.preference.PreferenceManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -215,6 +216,8 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On boolean confirmBoost = sharedpreferences.getBoolean(Helper.SET_NOTIF_VALIDATION, true); boolean hide_notification_delete = sharedpreferences.getBoolean(Helper.SET_HIDE_DELETE_BUTTON_ON_TAB, false); + + if (theme == Helper.THEME_DARK) { holder.main_container_trans.setBackgroundColor(ContextCompat.getColor(context, R.color.notif_dark_1)); holder.main_container_trans.setAlpha(.5f); @@ -233,6 +236,12 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On style = R.style.Dialog; } + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); + int reblogColor = prefs.getInt("theme_statuses_color", -1); + if( holder.main_linear_container != null && reblogColor != -1 ){ + holder.main_linear_container.setBackgroundColor(reblogColor); + } + if (hide_notification_delete) holder.notification_delete.setVisibility(View.GONE); Drawable imgH = null; @@ -1492,7 +1501,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On RadioGroup radio_group; TextView number_votes, remaining_time; Button submit_vote, refresh_poll; - + LinearLayout main_linear_container; public View getView() { return itemView; } @@ -1546,6 +1555,7 @@ public class NotificationsListAdapter extends RecyclerView.Adapter implements On remaining_time = itemView.findViewById(R.id.remaining_time); submit_vote = itemView.findViewById(R.id.submit_vote); refresh_poll = itemView.findViewById(R.id.refresh_poll); + main_linear_container = itemView.findViewById(R.id.main_linear_container); } diff --git a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java index 156b571cb..2a6aec98d 100644 --- a/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java +++ b/app/src/main/java/app/fedilab/android/drawers/StatusListAdapter.java @@ -37,6 +37,7 @@ import android.os.Handler; import androidx.annotation.NonNull; import androidx.appcompat.widget.SwitchCompat; import androidx.appcompat.widget.TooltipCompat; +import androidx.cardview.widget.CardView; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; import androidx.appcompat.app.AlertDialog; @@ -709,7 +710,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct Button quick_reply_button; ImageView quick_reply_privacy; View status_reply_indicator_top, reply_indicator_dot, status_reply_indicator_bottom, status_reply_indicator_diag_top, status_reply_indicator_diag_bottom; - + CardView main_card_container; + LinearLayout main_linear_container; public View getView() { return itemView; } @@ -844,6 +846,8 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct status_reply_indicator_diag_bottom.setBackgroundResource(R.drawable.diag_bottom); } } + main_card_container = itemView.findViewById(R.id.main_card_container); + main_linear_container = itemView.findViewById(R.id.main_linear_container); } void updateAnimatedEmoji() { @@ -2110,9 +2114,16 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct } SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); int reblogColor = prefs.getInt("theme_boost_header_color", -1); - if( reblogColor != -1 ){ + if( holder.status_boosted_by_info != null && reblogColor != -1 ){ holder.status_boosted_by_info.setBackgroundColor(reblogColor); } + int statusColor = prefs.getInt("theme_statuses_color", -1); + if( holder.main_card_container != null && statusColor != -1 ){ + holder.main_card_container.setBackgroundColor(statusColor); + } + if( holder.main_linear_container != null && statusColor != -1 ){ + holder.main_linear_container.setBackgroundColor(statusColor); + } if (type == RetrieveFeedsAsyncTask.Type.CONVERSATION && status.getConversationProfilePicture() != null) { holder.status_account_profile.setVisibility(View.GONE); holder.conversation_pp.setVisibility(View.VISIBLE); diff --git a/app/src/main/java/app/fedilab/android/fragments/ColorSettingsFragment.java b/app/src/main/java/app/fedilab/android/fragments/ColorSettingsFragment.java index ac63a224e..0549a216e 100644 --- a/app/src/main/java/app/fedilab/android/fragments/ColorSettingsFragment.java +++ b/app/src/main/java/app/fedilab/android/fragments/ColorSettingsFragment.java @@ -1,30 +1,69 @@ package app.fedilab.android.fragments; +import android.content.DialogInterface; +import android.content.SharedPreferences; import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; +import androidx.fragment.app.FragmentActivity; +import androidx.preference.Preference; import androidx.preference.PreferenceFragmentCompat; - -import org.jetbrains.annotations.NotNull; +import androidx.preference.PreferenceManager; import app.fedilab.android.R; +import app.fedilab.android.helper.Helper; + public class ColorSettingsFragment extends PreferenceFragmentCompat { + + @Override public void onCreatePreferences(Bundle bundle, String s) { - // Load the Preferences from the XML file addPreferencesFromResource(R.xml.fragment_settings_color); - } + Preference button = findPreference("reset_pref"); + FragmentActivity context = getActivity(); + int style; + SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(context); + int theme = sharedpreferences.getInt(Helper.SET_THEME, Helper.THEME_DARK); + if (theme == Helper.THEME_DARK) { + style = R.style.DialogDark; + } else if (theme == Helper.THEME_BLACK) { + style = R.style.DialogBlack; + } else { + style = R.style.Dialog; + } + PreferenceFragmentCompat preferenceFragmentCompat = this; + button.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(Preference preference) { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(context, style); + dialogBuilder.setMessage(R.string.reset_color); + dialogBuilder.setPositiveButton(R.string.reset, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + SharedPreferences.Editor editor = sharedpreferences.edit(); + editor.remove("theme_boost_header_color"); + editor.remove("theme_statuses_color"); + editor.remove("theme_link_color"); + editor.commit(); + dialog.dismiss(); + setPreferenceScreen(null); + addPreferencesFromResource(R.xml.fragment_settings_color); - @Override - public void onViewCreated(@NotNull View view, @Nullable Bundle savedInstanceState) - { - super.onViewCreated(view, savedInstanceState); - + } + }); + dialogBuilder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + dialog.dismiss(); + } + }); + AlertDialog alertDialog = dialogBuilder.create(); + alertDialog.setCancelable(false); + alertDialog.show(); + return true; + } + }); } } \ No newline at end of file diff --git a/app/src/main/res/layout/drawer_notification.xml b/app/src/main/res/layout/drawer_notification.xml index 4795cfc72..317a876cf 100644 --- a/app/src/main/res/layout/drawer_notification.xml +++ b/app/src/main/res/layout/drawer_notification.xml @@ -22,6 +22,7 @@ android:id="@+id/card_status_container"> diff --git a/app/src/main/res/layout/drawer_status_compact.xml b/app/src/main/res/layout/drawer_status_compact.xml index c696694ec..114778b77 100644 --- a/app/src/main/res/layout/drawer_status_compact.xml +++ b/app/src/main/res/layout/drawer_status_compact.xml @@ -66,6 +66,7 @@ android:layout_marginTop="4dp" android:layout_marginEnd="2dp" android:layout_marginBottom="4dp" + android:id="@+id/main_card_container" style="?attr/cardStyleOver" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/drawer_status_console.xml b/app/src/main/res/layout/drawer_status_console.xml index 147e5ee72..02ac3f85b 100644 --- a/app/src/main/res/layout/drawer_status_console.xml +++ b/app/src/main/res/layout/drawer_status_console.xml @@ -24,6 +24,7 @@ android:layout_height="wrap_content"> + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7fb2b0870..eca343597 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1252,4 +1252,9 @@ Change the color of links (URLs, mentions, tags, etc.) in messages Reblogs header Change the color of the header for reblogs + Posts + Bakground color of posts in timelines + Reset colors + Click here to reset all your custom colors + Reset \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 58b1af9fc..439a26172 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -13,12 +13,14 @@ +