From 625a89d45471d2110e7d35443379285f6911d504 Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 16:17:01 +0530 Subject: [PATCH 01/15] Material Ui Test --- .../SingleSelectionPreferences.java | 50 +++++++++++++++---- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java index 49fabd6a3..df84b7812 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java @@ -18,6 +18,8 @@ import com.panda3ds.pandroid.R; import com.panda3ds.pandroid.utils.Constants; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; + public class SingleSelectionPreferences extends PreferenceCategory implements Preference.OnPreferenceClickListener { private final Drawable transparent = new ColorDrawable(Color.TRANSPARENT); private final Drawable doneDrawable = ContextCompat.getDrawable(getContext(), R.drawable.ic_done); @@ -57,30 +59,56 @@ public SingleSelectionPreferences(@NonNull Context context, @Nullable AttributeS public void onAttached() { super.onAttached(); - for (int i = 0; i < getPreferenceCount();i++) { + for (int i = 0; i < getPreferenceCount(); i++) { getPreference(i).setOnPreferenceClickListener(this); } } - public void setSelectedItem(int index) { - onPreferenceClick(getPreference(index)); - } - @Override public boolean onPreferenceClick(@NonNull Preference preference) { - int index = 0; + int index = findPreferenceIndex(preference); + + if (index != -1) { + showMaterialDialog(index); + } + + return true; + } + + private int findPreferenceIndex(@NonNull Preference preference) { + for (int i = 0; i < getPreferenceCount(); i++) { + if (getPreference(i) == preference) { + return i; + } + } + return -1; + } + + private void showMaterialDialog(final int selectedIndex) { + final CharSequence[] entriesArray = new CharSequence[getPreferenceCount()]; + for (int i = 0; i < getPreferenceCount(); i++) { + entriesArray[i] = getPreference(i).getTitle(); + } + + new MaterialAlertDialogBuilder(getContext()) + .setTitle(getTitle()) + .setSingleChoiceItems(entriesArray, selectedIndex, (dialog, which) -> { + updateSelectedPreference(which); + dialog.dismiss(); + }) + .show(); + } + private void updateSelectedPreference(int selectedIndex) { for (int i = 0; i < getPreferenceCount(); i++) { Preference item = getPreference(i); - if (item == preference) { - index = i; - item.setIcon(R.drawable.ic_done); + if (i == selectedIndex) { + item.setIcon(doneDrawable); } else { item.setIcon(transparent); } } - callChangeListener(index); - return false; + callChangeListener(selectedIndex); } } From 702659713c8f05d9ca83cfa440fc8fddd97a9f7b Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 17:31:28 +0530 Subject: [PATCH 02/15] SingleSelectionPreferences : fx --- .../pandroid/view/preferences/SingleSelectionPreferences.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java index df84b7812..a4cf70f9f 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java @@ -64,6 +64,10 @@ public void onAttached() { } } + public void setSelectedItem(int index) { + onPreferenceClick(getPreference(index)); + } + @Override public boolean onPreferenceClick(@NonNull Preference preference) { int index = findPreferenceIndex(preference); From c701c4d58ea3759e5a974881c99b6e38edd0949c Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 18:28:50 +0530 Subject: [PATCH 03/15] SingleSelectionPreferences : test --- .../SingleSelectionPreferences.java | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java index a4cf70f9f..bef4b886d 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java @@ -24,12 +24,18 @@ public class SingleSelectionPreferences extends PreferenceCategory implements Pr private final Drawable transparent = new ColorDrawable(Color.TRANSPARENT); private final Drawable doneDrawable = ContextCompat.getDrawable(getContext(), R.drawable.ic_done); + // New attributes for handling entries and entryValues + private CharSequence[] entries; + private CharSequence[] entryValues; + public SingleSelectionPreferences(@NonNull Context context) { super(context); + init(); } public SingleSelectionPreferences(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); + init(); } public SingleSelectionPreferences(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { @@ -40,11 +46,13 @@ public SingleSelectionPreferences(@NonNull Context context, @Nullable AttributeS super(context, attrs, defStyleAttr, defStyleRes); } - { + private void init() { try { TypedArray color = getContext().obtainStyledAttributes(new int[]{ android.R.attr.textColorSecondary }); + entries = getEntries(); + entryValues = getEntryValues(); doneDrawable.setTint(color.getColor(0, Color.RED)); color.recycle(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { @@ -55,6 +63,19 @@ public SingleSelectionPreferences(@NonNull Context context, @Nullable AttributeS } } + @Override + public void onBindViewHolder(@NonNull PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + + // Set summary based on selected entry + if (entries != null && entryValues != null) { + CharSequence selectedEntry = getEntry(); + if (selectedEntry != null) { + holder.setSummary(selectedEntry); + } + } + } + @Override public void onAttached() { super.onAttached(); @@ -96,7 +117,7 @@ private void showMaterialDialog(final int selectedIndex) { new MaterialAlertDialogBuilder(getContext()) .setTitle(getTitle()) - .setSingleChoiceItems(entriesArray, selectedIndex, (dialog, which) -> { + .setSingleChoiceItems(entries, selectedIndex, (dialog, which) -> { updateSelectedPreference(which); dialog.dismiss(); }) @@ -115,4 +136,22 @@ private void updateSelectedPreference(int selectedIndex) { callChangeListener(selectedIndex); } + + // New method to get entries from the XML attribute + private CharSequence[] getEntries() { + if (this instanceof ListPreference) { + return ((ListPreference) this).getEntries(); + } else { + return null; // Handle appropriately for other types of preferences + } + } + + // New method to get entryValues from the XML attribute + private CharSequence[] getEntryValues() { + if (this instanceof ListPreference) { + return ((ListPreference) this).getEntryValues(); + } else { + return null; // Handle appropriately for other types of preferences + } + } } From 165d17160eafe52aa2a49833e3a94c2ef12b042e Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 19:02:24 +0530 Subject: [PATCH 04/15] fx --- .../pandroid/view/preferences/SingleSelectionPreferences.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java index bef4b886d..9ff713d48 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java @@ -12,8 +12,10 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; +import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; +import androidx.preference.PreferenceViewHolder; import com.panda3ds.pandroid.R; import com.panda3ds.pandroid.utils.Constants; From e9b47c15aa09ed8555e65f157525f451735cecc3 Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 19:51:33 +0530 Subject: [PATCH 05/15] SingleSelectionPreferences : fx --- .../SingleSelectionPreferences.java | 47 +++++++++---------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java index 9ff713d48..898d820b5 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java @@ -12,22 +12,19 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; -import androidx.preference.ListPreference; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceViewHolder; +import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.panda3ds.pandroid.R; import com.panda3ds.pandroid.utils.Constants; -import com.google.android.material.dialog.MaterialAlertDialogBuilder; - public class SingleSelectionPreferences extends PreferenceCategory implements Preference.OnPreferenceClickListener { private final Drawable transparent = new ColorDrawable(Color.TRANSPARENT); private final Drawable doneDrawable = ContextCompat.getDrawable(getContext(), R.drawable.ic_done); - // New attributes for handling entries and entryValues - private CharSequence[] entries; + private CharSequence[] titles; private CharSequence[] entryValues; public SingleSelectionPreferences(@NonNull Context context) { @@ -50,11 +47,11 @@ public SingleSelectionPreferences(@NonNull Context context, @Nullable AttributeS private void init() { try { + titles = getTitles(); + entryValues = getEntryValues(); TypedArray color = getContext().obtainStyledAttributes(new int[]{ android.R.attr.textColorSecondary }); - entries = getEntries(); - entryValues = getEntryValues(); doneDrawable.setTint(color.getColor(0, Color.RED)); color.recycle(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { @@ -69,11 +66,11 @@ private void init() { public void onBindViewHolder(@NonNull PreferenceViewHolder holder) { super.onBindViewHolder(holder); - // Set summary based on selected entry - if (entries != null && entryValues != null) { - CharSequence selectedEntry = getEntry(); - if (selectedEntry != null) { - holder.setSummary(selectedEntry); + // Set summary based on selected title + if (titles != null && entryValues != null) { + CharSequence selectedTitle = getTitle(); + if (selectedTitle != null) { + holder.itemView.setSummary(selectedTitle); } } } @@ -112,14 +109,14 @@ private int findPreferenceIndex(@NonNull Preference preference) { } private void showMaterialDialog(final int selectedIndex) { - final CharSequence[] entriesArray = new CharSequence[getPreferenceCount()]; + final CharSequence[] titlesArray = new CharSequence[getPreferenceCount()]; for (int i = 0; i < getPreferenceCount(); i++) { - entriesArray[i] = getPreference(i).getTitle(); + titlesArray[i] = getPreference(i).getTitle(); } new MaterialAlertDialogBuilder(getContext()) .setTitle(getTitle()) - .setSingleChoiceItems(entries, selectedIndex, (dialog, which) -> { + .setSingleChoiceItems(titles, selectedIndex, (dialog, which) -> { updateSelectedPreference(which); dialog.dismiss(); }) @@ -139,21 +136,19 @@ private void updateSelectedPreference(int selectedIndex) { callChangeListener(selectedIndex); } - // New method to get entries from the XML attribute - private CharSequence[] getEntries() { - if (this instanceof ListPreference) { - return ((ListPreference) this).getEntries(); - } else { - return null; // Handle appropriately for other types of preferences + private CharSequence[] getTitles() { + CharSequence[] titles = new CharSequence[getPreferenceCount()]; + for (int i = 0; i < getPreferenceCount(); i++) { + titles[i] = getPreference(i).getTitle(); } + return titles; } - // New method to get entryValues from the XML attribute private CharSequence[] getEntryValues() { - if (this instanceof ListPreference) { - return ((ListPreference) this).getEntryValues(); - } else { - return null; // Handle appropriately for other types of preferences + CharSequence[] values = new CharSequence[getPreferenceCount()]; + for (int i = 0; i < getPreferenceCount(); i++) { + values[i] = getPreference(i).getKey(); } + return values; } } From c4865a423b97dee460838b8a75166837849d90cd Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 20:05:54 +0530 Subject: [PATCH 06/15] SingleSelectionPreferences : fx --- .../pandroid/view/preferences/SingleSelectionPreferences.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java index 898d820b5..eca8a19f3 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java @@ -70,7 +70,7 @@ public void onBindViewHolder(@NonNull PreferenceViewHolder holder) { if (titles != null && entryValues != null) { CharSequence selectedTitle = getTitle(); if (selectedTitle != null) { - holder.itemView.setSummary(selectedTitle); + setSummary(selectedTitle); } } } From 0dfefc481a6c5c9ea1eb9949dfce2b2b035f9c90 Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 20:32:19 +0530 Subject: [PATCH 07/15] fx --- .../app/src/main/res/xml/appearance_preference.xml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/pandroid/app/src/main/res/xml/appearance_preference.xml b/src/pandroid/app/src/main/res/xml/appearance_preference.xml index dd1ed4831..d308c2be7 100644 --- a/src/pandroid/app/src/main/res/xml/appearance_preference.xml +++ b/src/pandroid/app/src/main/res/xml/appearance_preference.xml @@ -3,12 +3,9 @@ - - - - - - + android:entries="@array/themes" + android:entryValues="@array/themes_val" + app:iconSpaceReserved="false" + app:useSimpleSummaryProvider="true" /> - \ No newline at end of file + From dd1da3083a92b4978d7585cdcea45a4705a751eb Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 20:40:19 +0530 Subject: [PATCH 08/15] fx --- src/pandroid/app/src/main/res/values/array.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/pandroid/app/src/main/res/values/array.xml diff --git a/src/pandroid/app/src/main/res/values/array.xml b/src/pandroid/app/src/main/res/values/array.xml new file mode 100644 index 000000000..3c50f3114 --- /dev/null +++ b/src/pandroid/app/src/main/res/values/array.xml @@ -0,0 +1,15 @@ + + + +Use System Default +Light +Dark +Black + + +1 +2 +3 +4 + + From 61940c602d460bc2c1544e78c8602aa5e756f6ba Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 21:08:59 +0530 Subject: [PATCH 09/15] fx --- src/pandroid/app/src/main/res/xml/appearance_preference.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pandroid/app/src/main/res/xml/appearance_preference.xml b/src/pandroid/app/src/main/res/xml/appearance_preference.xml index d308c2be7..aef595fee 100644 --- a/src/pandroid/app/src/main/res/xml/appearance_preference.xml +++ b/src/pandroid/app/src/main/res/xml/appearance_preference.xml @@ -7,5 +7,4 @@ android:entryValues="@array/themes_val" app:iconSpaceReserved="false" app:useSimpleSummaryProvider="true" /> - From ef5ad338401811ed0bd9b12da53fe0ab0ec48544 Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 21:30:08 +0530 Subject: [PATCH 10/15] fx --- src/pandroid/app/src/main/res/xml/appearance_preference.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pandroid/app/src/main/res/xml/appearance_preference.xml b/src/pandroid/app/src/main/res/xml/appearance_preference.xml index aef595fee..14924a592 100644 --- a/src/pandroid/app/src/main/res/xml/appearance_preference.xml +++ b/src/pandroid/app/src/main/res/xml/appearance_preference.xml @@ -6,5 +6,5 @@ android:entries="@array/themes" android:entryValues="@array/themes_val" app:iconSpaceReserved="false" - app:useSimpleSummaryProvider="true" /> + app:useSimpleSummaryProvider="true"> From d533d9db221793be75c4c123ca32e4d8ea7d0726 Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 21:41:51 +0530 Subject: [PATCH 11/15] fx --- src/pandroid/app/src/main/res/xml/appearance_preference.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pandroid/app/src/main/res/xml/appearance_preference.xml b/src/pandroid/app/src/main/res/xml/appearance_preference.xml index 14924a592..7e7a967bd 100644 --- a/src/pandroid/app/src/main/res/xml/appearance_preference.xml +++ b/src/pandroid/app/src/main/res/xml/appearance_preference.xml @@ -5,6 +5,6 @@ app:title="@string/theme" android:entries="@array/themes" android:entryValues="@array/themes_val" - app:iconSpaceReserved="false" app:useSimpleSummaryProvider="true"> + From 06a8dc983a63d9d3d5c23f0b63798150e102aff4 Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 21:51:01 +0530 Subject: [PATCH 12/15] fx --- src/pandroid/app/src/main/res/xml/appearance_preference.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/pandroid/app/src/main/res/xml/appearance_preference.xml b/src/pandroid/app/src/main/res/xml/appearance_preference.xml index 7e7a967bd..c35f3d4d7 100644 --- a/src/pandroid/app/src/main/res/xml/appearance_preference.xml +++ b/src/pandroid/app/src/main/res/xml/appearance_preference.xml @@ -1,5 +1,8 @@ + + From e88c74e37aeb1eafcfd389a4b1aee4f04fa9fc67 Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 22:06:20 +0530 Subject: [PATCH 13/15] fx --- .../app/src/main/res/xml/appearance_preference.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pandroid/app/src/main/res/xml/appearance_preference.xml b/src/pandroid/app/src/main/res/xml/appearance_preference.xml index c35f3d4d7..8c27d12f9 100644 --- a/src/pandroid/app/src/main/res/xml/appearance_preference.xml +++ b/src/pandroid/app/src/main/res/xml/appearance_preference.xml @@ -1,14 +1,16 @@ - + + + + + + - From 977b6f2dd315627672ac57f475b212150f74ecb5 Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 22:47:38 +0530 Subject: [PATCH 14/15] fx --- .../app/src/main/res/xml/appearance_preference.xml | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/src/pandroid/app/src/main/res/xml/appearance_preference.xml b/src/pandroid/app/src/main/res/xml/appearance_preference.xml index 8c27d12f9..a8056ae21 100644 --- a/src/pandroid/app/src/main/res/xml/appearance_preference.xml +++ b/src/pandroid/app/src/main/res/xml/appearance_preference.xml @@ -1,16 +1,12 @@ - + - - - - - - From cd78ec7717f3e68c87722dfc9fd7ded9a760da4c Mon Sep 17 00:00:00 2001 From: Ishan09811 <156402647+Ishan09811@users.noreply.github.com> Date: Fri, 26 Jan 2024 23:51:52 +0530 Subject: [PATCH 15/15] fx --- .../pandroid/view/preferences/SingleSelectionPreferences.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java index eca8a19f3..169b465da 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/view/preferences/SingleSelectionPreferences.java @@ -52,6 +52,7 @@ private void init() { TypedArray color = getContext().obtainStyledAttributes(new int[]{ android.R.attr.textColorSecondary }); + doneDrawable = ContextCompat.getDrawable(getContext(), R.drawable.ic_done); doneDrawable.setTint(color.getColor(0, Color.RED)); color.recycle(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {