From bb85595db62f8e39a7649635a7099aea0a69d722 Mon Sep 17 00:00:00 2001 From: faisalcodes Date: Tue, 7 Mar 2023 04:07:02 +0530 Subject: [PATCH 1/6] Rename .java to .kt --- ...BottomSheetMenuAdapter.java => PeaceBottomSheetMenuAdapter.kt} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename app/src/main/java/com/quranapp/android/adapters/extended/{PeaceBottomSheetMenuAdapter.java => PeaceBottomSheetMenuAdapter.kt} (100%) diff --git a/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.java b/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt similarity index 100% rename from app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.java rename to app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt From fd3ac06554f37b60def5ec25923809a98865d7f2 Mon Sep 17 00:00:00 2001 From: faisalcodes Date: Tue, 7 Mar 2023 04:07:02 +0530 Subject: [PATCH 2/6] Widget and kotlin migration --- .../activities/ActivityOnboarding.java | 2 +- .../android/activities/ActivityProphets.java | 2 +- .../activities/ActivityReaderIndexPage.java | 2 +- .../android/activities/ActivitySearch.java | 2 +- .../android/activities/ActivityTopics.java | 2 +- .../android/adapters/ADPBookmark.java | 2 +- .../android/adapters/editor/ADPEditorBG.java | 2 +- .../extended/PeaceBottomSheetMenuAdapter.kt | 48 +- .../adapters/search/ADPVerseResults.java | 2 +- .../android/components/ComponentBase.kt | 14 + .../components/FeaturedQuranModel.java | 2 - .../components/search/SearchHistoryModel.java | 8 +- .../search/SearchResultModelBase.java | 2 +- .../components/utility/SpinnerItem.java | 2 +- .../frags/editshare/FragEditorColors.java | 2 +- .../frags/settings/FragSettingsMain.java | 38 +- .../android/suppliments/BookmarkViewer.java | 2 +- ...izeUtils.java => ReaderTextSizeUtils.java} | 2 +- .../android/utils/sharedPrefs/SPReader.java | 8 +- .../SimpleSeekbarChangeListener.kt | 2 +- .../SimpleTabSelectorListener.kt | 2 +- .../{univ => simplified}/SimpleTextWatcher.kt | 2 +- .../LoadRecitationsManifestTask.java | 62 --- .../android/utils/univ/ActivityBuffer.java | 108 ----- .../android/utils/univ/ActivityUtils.kt | 19 - .../quranapp/android/utils/univ/Duration.kt | 14 - .../android/utils/univ/ExceptionCause.kt | 11 - .../utils/univ/LinkMovementMethod2.java | 46 -- .../quranapp/android/views/BoldHeader.java | 2 +- .../views/reader/RecitationPlayer.java | 7 +- .../views/reader/spinner/ReaderSpinner.java | 2 +- .../reader/spinner/ReaderSpinnerAdapter.java | 2 +- .../views/reader/spinner/ReaderSpinnerItem.kt | 2 +- .../adapters/ADPJuzChapterVerseBase.kt | 4 +- .../JuzChapterVerseSelector.kt | 4 +- .../viewholders/VHsJuzChapterVerse.kt | 2 +- .../bottomSheet/PeaceBottomSheetMenu.kt | 26 +- .../widgets/form/PeaceFormInputField.java | 2 +- .../widgets/list/base/BaseListAdapter.kt | 208 +++++++++ .../android/widgets/list/base/BaseListItem.kt | 13 + .../widgets/list/base/BaseListItemView.kt | 186 ++++++++ .../android/widgets/list/base/BaseListView.kt | 121 +++++ .../singleChoice/SingleChoiceListAdapter.kt | 33 ++ .../list/singleChoice/SingleChoiceListView.kt | 28 ++ .../android/widgets/tablayout/BottomTab.java | 2 +- .../widgets/tablayout/BottomTabLayout.java | 2 +- app/src/main/res/values/list_styles.xml | 28 ++ .../android/utils/ComponentBase.java | 77 ---- .../peacedesign/android/utils/ResUtils.java | 28 -- .../interfaceUtils/CompoundButtonGroup.java | 27 -- .../utils/interfaceUtils/Position.java | 7 - .../utils/interfaceUtils/Selectable.java | 7 - .../widget/compound/PeaceCompoundButton.java | 435 ------------------ .../widget/dialog/base/PeaceDialogParams.java | 3 - .../widget/list/base/BaseListAdapter.java | 227 --------- .../widget/list/base/BaseListItem.java | 83 ---- .../widget/list/base/BaseListItemView.java | 191 -------- .../widget/list/base/BaseListView.java | 168 ------- .../widget/list/simple/SimpleListAdapter.java | 14 - .../widget/list/simple/SimpleListView.java | 13 - .../singleChoice/SingleChoiceListAdapter.java | 40 -- .../singleChoice/SingleChoiceListView.java | 40 -- .../widget/radio/PeaceRadioButton.java | 74 --- .../android/widget/radio/PeaceRadioGroup.java | 239 ---------- peacedesign/src/main/res/values/styles.xml | 27 -- 65 files changed, 721 insertions(+), 2063 deletions(-) create mode 100644 app/src/main/java/com/quranapp/android/components/ComponentBase.kt rename app/src/main/java/com/quranapp/android/utils/reader/{TextSizeUtils.java => ReaderTextSizeUtils.java} (96%) rename app/src/main/java/com/quranapp/android/utils/{univ => simplified}/SimpleSeekbarChangeListener.kt (87%) rename app/src/main/java/com/quranapp/android/utils/{univ => simplified}/SimpleTabSelectorListener.kt (86%) rename app/src/main/java/com/quranapp/android/utils/{univ => simplified}/SimpleTextWatcher.kt (88%) delete mode 100644 app/src/main/java/com/quranapp/android/utils/thread/tasks/recitation/LoadRecitationsManifestTask.java delete mode 100644 app/src/main/java/com/quranapp/android/utils/univ/ActivityBuffer.java delete mode 100644 app/src/main/java/com/quranapp/android/utils/univ/ActivityUtils.kt delete mode 100644 app/src/main/java/com/quranapp/android/utils/univ/Duration.kt delete mode 100644 app/src/main/java/com/quranapp/android/utils/univ/ExceptionCause.kt delete mode 100644 app/src/main/java/com/quranapp/android/utils/univ/LinkMovementMethod2.java create mode 100644 app/src/main/java/com/quranapp/android/widgets/list/base/BaseListAdapter.kt create mode 100644 app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItem.kt create mode 100644 app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItemView.kt create mode 100644 app/src/main/java/com/quranapp/android/widgets/list/base/BaseListView.kt create mode 100644 app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListAdapter.kt create mode 100644 app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListView.kt create mode 100644 app/src/main/res/values/list_styles.xml delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/utils/ComponentBase.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/CompoundButtonGroup.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Position.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Selectable.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/compound/PeaceCompoundButton.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListAdapter.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListItem.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListItemView.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListView.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/list/simple/SimpleListAdapter.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/list/simple/SimpleListView.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/list/singleChoice/SingleChoiceListAdapter.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/list/singleChoice/SingleChoiceListView.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/radio/PeaceRadioButton.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/radio/PeaceRadioGroup.java diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityOnboarding.java b/app/src/main/java/com/quranapp/android/activities/ActivityOnboarding.java index 47d5b6c6..b299da82 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityOnboarding.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityOnboarding.java @@ -24,7 +24,7 @@ import com.quranapp.android.utils.app.ThemeUtils; import com.quranapp.android.utils.gesture.HoverPushOpacityEffect; import com.quranapp.android.utils.sharedPrefs.SPAppActions; -import com.quranapp.android.utils.univ.SimpleTabSelectorListener; +import com.quranapp.android.utils.simplified.SimpleTabSelectorListener; public class ActivityOnboarding extends BaseActivity { private ActivityOnboardBinding mBinding; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityProphets.java b/app/src/main/java/com/quranapp/android/activities/ActivityProphets.java index 741a3933..33f724a4 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityProphets.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityProphets.java @@ -39,7 +39,7 @@ import com.quranapp.android.databinding.ActivityTopicsBinding; import com.quranapp.android.databinding.LytTopicsActivityHeaderBinding; import com.quranapp.android.utils.extended.GapedItemDecoration; -import com.quranapp.android.utils.univ.SimpleTextWatcher; +import com.quranapp.android.utils.simplified.SimpleTextWatcher; import com.quranapp.android.views.helper.Spinner2; import java.util.ArrayList; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityReaderIndexPage.java b/app/src/main/java/com/quranapp/android/activities/ActivityReaderIndexPage.java index 225f0ad6..547aa1c5 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityReaderIndexPage.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityReaderIndexPage.java @@ -18,7 +18,7 @@ import com.quranapp.android.frags.readerindex.FragReaderIndexChapters; import com.quranapp.android.frags.readerindex.FragReaderIndexJuz; import com.quranapp.android.interfaceUtils.readerIndex.FragReaderIndexCallback; -import com.quranapp.android.utils.univ.SimpleTabSelectorListener; +import com.quranapp.android.utils.simplified.SimpleTabSelectorListener; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivitySearch.java b/app/src/main/java/com/quranapp/android/activities/ActivitySearch.java index 94fc369f..0bc7c7ea 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivitySearch.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivitySearch.java @@ -50,7 +50,7 @@ import com.quranapp.android.utils.reader.factory.QuranTranslFactory; import com.quranapp.android.utils.search.SearchFilters; import com.quranapp.android.utils.search.SearchLocalHistoryManager; -import com.quranapp.android.utils.univ.SimpleTextWatcher; +import com.quranapp.android.utils.simplified.SimpleTextWatcher; import com.quranapp.android.utils.univ.StringUtils; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheet; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetParams; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityTopics.java b/app/src/main/java/com/quranapp/android/activities/ActivityTopics.java index f90c2b25..4aaae1ee 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityTopics.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityTopics.java @@ -50,7 +50,7 @@ import com.quranapp.android.utils.extensions.ContextKt; import com.quranapp.android.utils.thread.runner.RunnableTaskRunner; import com.quranapp.android.utils.thread.tasks.BaseRunnableTask; -import com.quranapp.android.utils.univ.SimpleTextWatcher; +import com.quranapp.android.utils.simplified.SimpleTextWatcher; import com.quranapp.android.views.helper.Spinner2; import java.util.ArrayList; diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java b/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java index e2ba66ab..e9e05559 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java @@ -22,7 +22,6 @@ import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.LineHeightSpan2; -import com.peacedesign.android.widget.list.base.BaseListItem; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityBookmark; import com.quranapp.android.adapters.extended.PeaceBottomSheetMenuAdapter; @@ -31,6 +30,7 @@ import com.quranapp.android.databinding.LytBookmarkItemBinding; import com.quranapp.android.utils.extensions.ContextKt; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetMenu; +import com.quranapp.android.widgets.list.base.BaseListItem; import java.util.ArrayList; import java.util.LinkedHashSet; diff --git a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java index 29e402ac..73b1d459 100644 --- a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java +++ b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java @@ -26,7 +26,7 @@ import com.quranapp.android.databinding.LytEditorAlphaDialogBinding; import com.quranapp.android.frags.editshare.FragEditorBG; import com.quranapp.android.utils.gesture.HoverPushOpacityEffect; -import com.quranapp.android.utils.univ.SimpleSeekbarChangeListener; +import com.quranapp.android.utils.simplified.SimpleSeekbarChangeListener; import com.quranapp.android.widgets.ColorPreviewerView; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetParams; import com.quranapp.android.widgets.editor.EditorBGView; diff --git a/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt b/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt index 1e952c4d..658e39c9 100644 --- a/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt +++ b/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt @@ -1,35 +1,27 @@ -package com.quranapp.android.adapters.extended; +package com.quranapp.android.adapters.extended -import android.content.Context; -import android.text.TextUtils; -import android.view.View; +import android.content.Context +import android.view.View +import com.quranapp.android.R +import com.quranapp.android.utils.extensions.color +import com.quranapp.android.utils.extensions.dp2px +import com.quranapp.android.utils.extensions.updatePaddingVertical +import com.quranapp.android.widgets.list.base.BaseListAdapter +import com.quranapp.android.widgets.list.base.BaseListItem +import com.quranapp.android.widgets.list.base.BaseListItemView -import androidx.annotation.NonNull; -import androidx.core.content.ContextCompat; +class PeaceBottomSheetMenuAdapter(context: Context) : BaseListAdapter(context) { + private val mMessageColor = context.color(R.color.colorText2) -import com.peacedesign.android.utils.Dimen; -import com.peacedesign.android.widget.list.base.BaseListAdapter; -import com.peacedesign.android.widget.list.base.BaseListItem; -import com.peacedesign.android.widget.list.base.BaseListItemView; -import com.quranapp.android.R; -import com.quranapp.android.utils.extensions.ViewPaddingKt; + override fun onCreateItemView(item: BaseListItem, position: Int): View { + val view = super.onCreateItemView(item, position) as BaseListItemView -public class PeaceBottomSheetMenuAdapter extends BaseListAdapter { - private final int mMessageColor; - - public PeaceBottomSheetMenuAdapter(@NonNull Context context) { - super(context); - mMessageColor = ContextCompat.getColor(context, R.color.colorText2); - } - - @Override - protected View onCreateItemView(@NonNull BaseListItem item, int position) { - BaseListItemView view = (BaseListItemView) super.onCreateItemView(item, position); - if (TextUtils.isEmpty(item.getMessage())) { - ViewPaddingKt.updatePaddingVertical(view.mContainerView, Dimen.dp2px(getContext(), 3)); + if (item.message.isNullOrEmpty()) { + view.containerView.updatePaddingVertical(context.dp2px(3f)) } else { - view.mMessageView.setTextColor(mMessageColor); + view.messageView?.setTextColor(mMessageColor) } - return view; + + return view } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java b/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java index 9c3e165f..097431ee 100644 --- a/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java +++ b/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java @@ -32,7 +32,7 @@ import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.TypefaceSpan2; -import com.peacedesign.android.widget.list.base.BaseListItem; +import com.quranapp.android.widgets.list.base.BaseListItem; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; import com.quranapp.android.activities.ActivitySearch; diff --git a/app/src/main/java/com/quranapp/android/components/ComponentBase.kt b/app/src/main/java/com/quranapp/android/components/ComponentBase.kt new file mode 100644 index 00000000..f4bed201 --- /dev/null +++ b/app/src/main/java/com/quranapp/android/components/ComponentBase.kt @@ -0,0 +1,14 @@ +package com.quranapp.android.components + +import java.io.Serializable + +open class ComponentBase : Serializable { + var id = -1 + var key: String? = null + var position = -1 + var selected = false + var enabled = true + + @Transient + var obj: Any? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/components/FeaturedQuranModel.java b/app/src/main/java/com/quranapp/android/components/FeaturedQuranModel.java index 4d2e6801..51905bf1 100644 --- a/app/src/main/java/com/quranapp/android/components/FeaturedQuranModel.java +++ b/app/src/main/java/com/quranapp/android/components/FeaturedQuranModel.java @@ -2,8 +2,6 @@ import androidx.annotation.NonNull; -import com.peacedesign.android.utils.ComponentBase; - import kotlin.Pair; public class FeaturedQuranModel extends ComponentBase { diff --git a/app/src/main/java/com/quranapp/android/components/search/SearchHistoryModel.java b/app/src/main/java/com/quranapp/android/components/search/SearchHistoryModel.java index 004bbd9b..32285075 100644 --- a/app/src/main/java/com/quranapp/android/components/search/SearchHistoryModel.java +++ b/app/src/main/java/com/quranapp/android/components/search/SearchHistoryModel.java @@ -1,20 +1,16 @@ package com.quranapp.android.components.search; public class SearchHistoryModel extends SearchResultModelBase { - private final int id; private final CharSequence text; private final String date; public SearchHistoryModel(int id, CharSequence text, String date) { - this.id = id; + setId(id); + this.text = text; this.date = date; } - public int getId() { - return id; - } - public CharSequence getText() { return text; } diff --git a/app/src/main/java/com/quranapp/android/components/search/SearchResultModelBase.java b/app/src/main/java/com/quranapp/android/components/search/SearchResultModelBase.java index 4c699791..44c3aad0 100644 --- a/app/src/main/java/com/quranapp/android/components/search/SearchResultModelBase.java +++ b/app/src/main/java/com/quranapp/android/components/search/SearchResultModelBase.java @@ -1,6 +1,6 @@ package com.quranapp.android.components.search; -import com.peacedesign.android.utils.ComponentBase; +import com.quranapp.android.components.ComponentBase; public class SearchResultModelBase extends ComponentBase { } diff --git a/app/src/main/java/com/quranapp/android/components/utility/SpinnerItem.java b/app/src/main/java/com/quranapp/android/components/utility/SpinnerItem.java index 7c15e370..1eb318eb 100644 --- a/app/src/main/java/com/quranapp/android/components/utility/SpinnerItem.java +++ b/app/src/main/java/com/quranapp/android/components/utility/SpinnerItem.java @@ -1,6 +1,6 @@ package com.quranapp.android.components.utility; -import com.peacedesign.android.utils.ComponentBase; +import com.quranapp.android.components.ComponentBase; public class SpinnerItem extends ComponentBase { private CharSequence name; diff --git a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorColors.java b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorColors.java index 0e2ef0b5..78e6fae0 100644 --- a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorColors.java +++ b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorColors.java @@ -22,7 +22,7 @@ import com.quranapp.android.databinding.FragEditorColorBinding; import com.quranapp.android.databinding.LytReaderIndexTabBinding; import com.quranapp.android.utils.extended.GapedItemDecoration; -import com.quranapp.android.utils.univ.SimpleTabSelectorListener; +import com.quranapp.android.utils.simplified.SimpleTabSelectorListener; import com.quranapp.android.views.helper.TabLayout2; public class FragEditorColors extends FragEditorBase { diff --git a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsMain.java b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsMain.java index e351258b..3ce5f957 100644 --- a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsMain.java +++ b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsMain.java @@ -19,8 +19,8 @@ import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_VERSES; import static com.quranapp.android.reader_managers.ReaderParams.READER_STYLE_READING; import static com.quranapp.android.reader_managers.ReaderParams.READER_STYLE_TRANSLATION; -import static com.quranapp.android.utils.reader.TextSizeUtils.TEXT_SIZE_MAX_PROGRESS; -import static com.quranapp.android.utils.reader.TextSizeUtils.TEXT_SIZE_MIN_PROGRESS; +import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.TEXT_SIZE_MAX_PROGRESS; +import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.TEXT_SIZE_MIN_PROGRESS; import static com.quranapp.android.utils.univ.Codes.SETTINGS_LAUNCHER_RESULT_CODE; import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; import static com.quranapp.android.utils.univ.Keys.READER_KEY_SETTING_IS_FROM_READER; @@ -77,7 +77,7 @@ import com.quranapp.android.utils.gesture.HoverPushOpacityEffect; import com.quranapp.android.utils.reader.QuranScriptUtils; import com.quranapp.android.utils.reader.QuranScriptUtilsKt; -import com.quranapp.android.utils.reader.TextSizeUtils; +import com.quranapp.android.utils.reader.ReaderTextSizeUtils; import com.quranapp.android.utils.reader.TranslUtils; import com.quranapp.android.utils.reader.factory.QuranTranslFactory; import com.quranapp.android.utils.reader.recitation.RecitationUtils; @@ -85,8 +85,8 @@ import com.quranapp.android.utils.sharedPrefs.SPReader; import com.quranapp.android.utils.sharedPrefs.SPVerses; import com.quranapp.android.utils.univ.Keys; -import com.quranapp.android.utils.univ.SimpleSeekbarChangeListener; -import com.quranapp.android.utils.univ.SimpleTabSelectorListener; +import com.quranapp.android.utils.simplified.SimpleSeekbarChangeListener; +import com.quranapp.android.utils.simplified.SimpleTabSelectorListener; import com.quranapp.android.utils.votd.VOTDUtils; import com.quranapp.android.views.BoldHeader; import com.quranapp.android.widgets.IconedTextView; @@ -615,7 +615,7 @@ public void onProgressChanged(@NonNull SeekBar seekBar, int progress, boolean fr @Override public void onStopTrackingTouch(@NonNull SeekBar seekBar) { final int progress = TEXT_SIZE_MIN_PROGRESS + seekBar.getProgress(); - SPReader.setSavedTextSizeMultArabic(seekBar.getContext(), TextSizeUtils.calculateMultiplier(progress)); + SPReader.setSavedTextSizeMultArabic(seekBar.getContext(), ReaderTextSizeUtils.calculateMultiplier(progress)); } }); } @@ -679,15 +679,15 @@ public void onProgressChanged(@NonNull SeekBar seekBar, int progress, boolean fr @Override public void onStopTrackingTouch(@NonNull SeekBar seekBar) { final int progress = TEXT_SIZE_MIN_PROGRESS + seekBar.getProgress(); - SPReader.setSavedTextSizeMultTransl(seekBar.getContext(), TextSizeUtils.calculateMultiplier(progress)); + SPReader.setSavedTextSizeMultTransl(seekBar.getContext(), ReaderTextSizeUtils.calculateMultiplier(progress)); } }); } private void setProgressAndTextArabic(float multiplier) { if (mLytTextSizeArabic == null) return; - mLytTextSizeArabic.seekbar.setProgress(TextSizeUtils.calculateProgress(multiplier)); - final String text = TextSizeUtils.calculateProgressText(multiplier) + "%"; + mLytTextSizeArabic.seekbar.setProgress(ReaderTextSizeUtils.calculateProgress(multiplier)); + final String text = ReaderTextSizeUtils.calculateProgressText(multiplier) + "%"; mLytTextSizeArabic.progressText.setText(text); } @@ -696,14 +696,14 @@ private void demonstrateTextSizeArabic(int progress) { return; } - final float size = mVerseDecorator.getTextSizeArabic() * TextSizeUtils.calculateMultiplier(progress); + final float size = mVerseDecorator.getTextSizeArabic() * ReaderTextSizeUtils.calculateMultiplier(progress); mLytTextSizeArabic.demoText.setTextSize(TypedValue.COMPLEX_UNIT_PX, size); } private void setProgressAndTextTransl(float multiplier) { if (mLytTextSizeTransl == null) return; - mLytTextSizeTransl.seekbar.setProgress(TextSizeUtils.calculateProgress(multiplier)); - final String text = TextSizeUtils.calculateProgressText(multiplier) + "%"; + mLytTextSizeTransl.seekbar.setProgress(ReaderTextSizeUtils.calculateProgress(multiplier)); + final String text = ReaderTextSizeUtils.calculateProgressText(multiplier) + "%"; mLytTextSizeTransl.progressText.setText(text); } @@ -712,13 +712,13 @@ private void demonstrateTextSizeTransl(int progress) { return; } - final float size = mVerseDecorator.getTextSizeTransl() * TextSizeUtils.calculateMultiplier(progress); + final float size = mVerseDecorator.getTextSizeTransl() * ReaderTextSizeUtils.calculateMultiplier(progress); mLytTextSizeTransl.demoText.setTextSize(TypedValue.COMPLEX_UNIT_PX, size); } private void resetToDefault(Context ctx) { - SPReader.setSavedTextSizeMultArabic(ctx, TextSizeUtils.TEXT_SIZE_MULT_AR_DEFAULT); - SPReader.setSavedTextSizeMultTransl(ctx, TextSizeUtils.TEXT_SIZE_MULT_TRANS_DEFAULT); + SPReader.setSavedTextSizeMultArabic(ctx, ReaderTextSizeUtils.TEXT_SIZE_MULT_AR_DEFAULT); + SPReader.setSavedTextSizeMultTransl(ctx, ReaderTextSizeUtils.TEXT_SIZE_MULT_TRANS_DEFAULT); SPReader.setSavedScript(ctx, QuranScriptUtils.SCRIPT_DEFAULT); initTranslSlugs = TranslUtils.defaultTranslationSlugs().toArray(new String[0]); @@ -743,10 +743,10 @@ private void resetToDefault(Context ctx) { setupScriptTitle(); setupTextSizeArabicPreview(); - demonstrateTextSizeArabic(TextSizeUtils.TEXT_SIZE_DEFAULT_PROGRESS); - demonstrateTextSizeTransl(TextSizeUtils.TEXT_SIZE_DEFAULT_PROGRESS); - setProgressAndTextArabic(TextSizeUtils.TEXT_SIZE_MULT_AR_DEFAULT); - setProgressAndTextTransl(TextSizeUtils.TEXT_SIZE_MULT_TRANS_DEFAULT); + demonstrateTextSizeArabic(ReaderTextSizeUtils.TEXT_SIZE_DEFAULT_PROGRESS); + demonstrateTextSizeTransl(ReaderTextSizeUtils.TEXT_SIZE_DEFAULT_PROGRESS); + setProgressAndTextArabic(ReaderTextSizeUtils.TEXT_SIZE_MULT_AR_DEFAULT); + setProgressAndTextTransl(ReaderTextSizeUtils.TEXT_SIZE_MULT_TRANS_DEFAULT); } private void resetCheckpoint(Context ctx) { diff --git a/app/src/main/java/com/quranapp/android/suppliments/BookmarkViewer.java b/app/src/main/java/com/quranapp/android/suppliments/BookmarkViewer.java index 324efc14..c574bfd7 100644 --- a/app/src/main/java/com/quranapp/android/suppliments/BookmarkViewer.java +++ b/app/src/main/java/com/quranapp/android/suppliments/BookmarkViewer.java @@ -29,7 +29,7 @@ import com.quranapp.android.utils.gesture.HoverPushOpacityEffect; import com.quranapp.android.utils.quran.QuranUtils; import com.quranapp.android.utils.reader.factory.ReaderFactory; -import com.quranapp.android.utils.univ.SimpleTextWatcher; +import com.quranapp.android.utils.simplified.SimpleTextWatcher; import java.util.concurrent.atomic.AtomicReference; diff --git a/app/src/main/java/com/quranapp/android/utils/reader/TextSizeUtils.java b/app/src/main/java/com/quranapp/android/utils/reader/ReaderTextSizeUtils.java similarity index 96% rename from app/src/main/java/com/quranapp/android/utils/reader/TextSizeUtils.java rename to app/src/main/java/com/quranapp/android/utils/reader/ReaderTextSizeUtils.java index 63fce69b..ef66d5c2 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/TextSizeUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/reader/ReaderTextSizeUtils.java @@ -1,6 +1,6 @@ package com.quranapp.android.utils.reader; -public class TextSizeUtils { +public class ReaderTextSizeUtils { public static final String KEY_TEXT_SIZE_MULT_ARABIC = "key.textsize.mult.arabic"; public static final String KEY_TEXT_SIZE_MULT_TRANSL = "key.textsize.mult.translation"; diff --git a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPReader.java b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPReader.java index 76b611e2..6782df34 100644 --- a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPReader.java +++ b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPReader.java @@ -1,10 +1,10 @@ package com.quranapp.android.utils.sharedPrefs; import static com.quranapp.android.reader_managers.ReaderParams.READER_STYLE_DEFAULT; -import static com.quranapp.android.utils.reader.TextSizeUtils.KEY_TEXT_SIZE_MULT_ARABIC; -import static com.quranapp.android.utils.reader.TextSizeUtils.KEY_TEXT_SIZE_MULT_TRANSL; -import static com.quranapp.android.utils.reader.TextSizeUtils.TEXT_SIZE_MULT_AR_DEFAULT; -import static com.quranapp.android.utils.reader.TextSizeUtils.TEXT_SIZE_MULT_TRANS_DEFAULT; +import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.KEY_TEXT_SIZE_MULT_ARABIC; +import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.KEY_TEXT_SIZE_MULT_TRANSL; +import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.TEXT_SIZE_MULT_AR_DEFAULT; +import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.TEXT_SIZE_MULT_TRANS_DEFAULT; import static com.quranapp.android.utils.reader.TranslUtils.KEY_TRANSLATIONS; import static com.quranapp.android.utils.reader.recitation.RecitationUtils.KEY_RECITATION_RECITER; import static com.quranapp.android.utils.reader.recitation.RecitationUtils.KEY_RECITATION_REPEAT; diff --git a/app/src/main/java/com/quranapp/android/utils/univ/SimpleSeekbarChangeListener.kt b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleSeekbarChangeListener.kt similarity index 87% rename from app/src/main/java/com/quranapp/android/utils/univ/SimpleSeekbarChangeListener.kt rename to app/src/main/java/com/quranapp/android/utils/simplified/SimpleSeekbarChangeListener.kt index 233cb89e..f03a2d6c 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/SimpleSeekbarChangeListener.kt +++ b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleSeekbarChangeListener.kt @@ -1,4 +1,4 @@ -package com.quranapp.android.utils.univ +package com.quranapp.android.utils.simplified import android.widget.SeekBar diff --git a/app/src/main/java/com/quranapp/android/utils/univ/SimpleTabSelectorListener.kt b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTabSelectorListener.kt similarity index 86% rename from app/src/main/java/com/quranapp/android/utils/univ/SimpleTabSelectorListener.kt rename to app/src/main/java/com/quranapp/android/utils/simplified/SimpleTabSelectorListener.kt index 17ef5cfb..ef2d9fe5 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/SimpleTabSelectorListener.kt +++ b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTabSelectorListener.kt @@ -1,4 +1,4 @@ -package com.quranapp.android.utils.univ +package com.quranapp.android.utils.simplified import com.google.android.material.tabs.TabLayout diff --git a/app/src/main/java/com/quranapp/android/utils/univ/SimpleTextWatcher.kt b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTextWatcher.kt similarity index 88% rename from app/src/main/java/com/quranapp/android/utils/univ/SimpleTextWatcher.kt rename to app/src/main/java/com/quranapp/android/utils/simplified/SimpleTextWatcher.kt index 01330750..76466d13 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/SimpleTextWatcher.kt +++ b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTextWatcher.kt @@ -1,4 +1,4 @@ -package com.quranapp.android.utils.univ +package com.quranapp.android.utils.simplified import android.text.Editable import android.text.TextWatcher diff --git a/app/src/main/java/com/quranapp/android/utils/thread/tasks/recitation/LoadRecitationsManifestTask.java b/app/src/main/java/com/quranapp/android/utils/thread/tasks/recitation/LoadRecitationsManifestTask.java deleted file mode 100644 index c7b3d3f2..00000000 --- a/app/src/main/java/com/quranapp/android/utils/thread/tasks/recitation/LoadRecitationsManifestTask.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Copyright (c) Faisal Khan (https://github.com/faisalcodes) - * Created on 23/3/2022. - * All rights reserved. - */ - -package com.quranapp.android.utils.thread.tasks.recitation; - -import static com.quranapp.android.utils.univ.ExceptionCause.RECITATIONS_INFO_NULL; -import static com.quranapp.android.utils.univ.ExceptionCause.REQUIRE_RECITATION_FORCE_LOAD; - -import android.content.Context; -import android.text.TextUtils; - -import androidx.annotation.Nullable; - -import com.quranapp.android.utils.thread.tasks.SimpleDataLoaderTask; -import com.quranapp.android.utils.univ.FileUtils; - -import java.io.File; -import java.io.IOException; - -public abstract class LoadRecitationsManifestTask extends SimpleDataLoaderTask { - private final Context mCtx; - private final FileUtils mFileUtils; - - public LoadRecitationsManifestTask(Context ctx, String url) { - super(url); - mCtx = ctx; - mFileUtils = FileUtils.newInstance(ctx); - } - - @Nullable - @Override - public String call() throws Exception { - File storedAvailableRecitations = mFileUtils.getRecitationsManifestFile(); - - String manifest; - if (getUrl() != null) { - manifest = super.call(); - } else { - try { - manifest = mFileUtils.readFile(storedAvailableRecitations); - - if (TextUtils.isEmpty(manifest)) { - throw new Exception(REQUIRE_RECITATION_FORCE_LOAD); - } - } catch (IOException e) { - e.printStackTrace(); - throw new Exception(REQUIRE_RECITATION_FORCE_LOAD); - } - } - - if (TextUtils.isEmpty(manifest)) { - throw new NullPointerException(RECITATIONS_INFO_NULL); - } - - mFileUtils.createFile(storedAvailableRecitations); - mFileUtils.writeToFile(storedAvailableRecitations, manifest); - return manifest; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/utils/univ/ActivityBuffer.java b/app/src/main/java/com/quranapp/android/utils/univ/ActivityBuffer.java deleted file mode 100644 index 8117c5cd..00000000 --- a/app/src/main/java/com/quranapp/android/utils/univ/ActivityBuffer.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) Faisal Khan (https://github.com/faisalcodes) - * Created on 4/4/2022. - * All rights reserved. - */ - -package com.quranapp.android.utils.univ; - -import androidx.fragment.app.FragmentActivity; - -import java.util.ArrayList; -import java.util.List; - -/** - * A class which maintains a list of transactions to occur when Context becomes available. - */ -public final class ActivityBuffer { - public interface ActivityAvailableListener { - /** - * Executes when there's an available Context. Ideally, will it operate immediately. - */ - void run(final R activity); - } - - private R mActivity; - private final List> mRunnables; - - /** - * Constructor. - */ - public ActivityBuffer() { - // Initialize Member Variables. - mRunnables = new ArrayList<>(); - mActivity = null; - } - - /** - * Executes the Runnable if there's an available Context. Otherwise, defers execution until it becomes available. - */ - public void safely(final ActivityAvailableListener listener) { - // Synchronize along the current instance. - synchronized (this) { - // Do we have a context available? - if (isContextAvailable()) { - // Execute the Runnable along the Activity. - mActivity.runOnUiThread(() -> listener.run(mActivity)); - } else { - // Buffer the Runnable so that it's ready to receive a valid reference. - getRunnables().add(listener); - } - } - } - - /** - * Called to inform the ActivityBuffer that there's an available Activity reference. - */ - public void onActivityGained(final R activity) { - // Synchronize along ourself. - synchronized (this) { - // Update the Activity reference. - setActivity(activity); - // Are there any Runnables awaiting execution? - if (!getRunnables().isEmpty()) { - // Iterate the Runnables. - for (final ActivityAvailableListener lRunnable : getRunnables()) { - // Execute the Runnable on the UI Thread. - activity.runOnUiThread(() -> { - // Execute the Runnable. - lRunnable.run(activity); - }); - } - // Empty the Runnables. - getRunnables().clear(); - } - } - } - - /** - * Called to inform the ActivityBuffer that the Context has been lost. - */ - public void onActivityLost() { - // Synchronize along ourself. - synchronized (this) { - // Remove the Context reference. - setActivity(null); - } - } - - /** - * Defines whether there's a safe Context available for the ActivityBuffer. - */ - public boolean isContextAvailable() { - // Synchronize upon ourself. - synchronized (this) { - // Return the state of the Activity reference. - return (mActivity != null); - } - } - - /* Getters and Setters. */ - private void setActivity(final R activity) { - mActivity = activity; - } - - private List> getRunnables() { - return mRunnables; - } -} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/utils/univ/ActivityUtils.kt b/app/src/main/java/com/quranapp/android/utils/univ/ActivityUtils.kt deleted file mode 100644 index c14467b9..00000000 --- a/app/src/main/java/com/quranapp/android/utils/univ/ActivityUtils.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.quranapp.android.utils.univ - -import android.content.Context -import android.content.Intent -import android.net.Uri -import android.provider.Settings - -object ActivityUtils { - fun openAppDetailsActivity(context: Context) { - val settingIntent = Intent() - settingIntent.action = Settings.ACTION_APPLICATION_DETAILS_SETTINGS - settingIntent.addCategory(Intent.CATEGORY_DEFAULT) - settingIntent.data = Uri.parse("package:" + context.packageName) - settingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - settingIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY) - settingIntent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS) - context.startActivity(settingIntent) - } -} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/utils/univ/Duration.kt b/app/src/main/java/com/quranapp/android/utils/univ/Duration.kt deleted file mode 100644 index 543287a9..00000000 --- a/app/src/main/java/com/quranapp/android/utils/univ/Duration.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.quranapp.android.utils.univ - -object Duration { - const val DURATION_QUICK = 50 - const val DURATION_NORMAL = 100 - const val DURATION_NORMAL_LATE = 150 - const val DURATION_SHORT = 200 - const val DURATION_MEDIUM = 300 - const val DURATION_MEDIUM_LATE = 400 - const val DURATION_LONG = 500 - const val DURATION_LONG_LATE = 700 - const val DURATION_LATE = 1000 - const val DURATION_SUPER_LATE = 2000 -} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/utils/univ/ExceptionCause.kt b/app/src/main/java/com/quranapp/android/utils/univ/ExceptionCause.kt deleted file mode 100644 index 067724b1..00000000 --- a/app/src/main/java/com/quranapp/android/utils/univ/ExceptionCause.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.quranapp.android.utils.univ - -object ExceptionCause { - const val NO_INTERNET = "exc.cause.no_internet" - const val REQUIRE_TRANSL_FORCE_LOAD = "exc.cause.require_transl_force_load" - const val TRANSLS_INFO_NULL = "exc.cause.transls_info_null" - const val NO_TRANSL_LANGUAGES = "exc.cause.no_transl_languages" - const val REQUIRE_RECITATION_FORCE_LOAD = "exc.cause.require_recitation_force_load" - const val RECITATIONS_INFO_NULL = "exc.cause.recitations_info_null" - const val RECITATIONS_LOAD_MAX_ATTEMPT = "exc.cause.recitations_load_max_attempt" -} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/utils/univ/LinkMovementMethod2.java b/app/src/main/java/com/quranapp/android/utils/univ/LinkMovementMethod2.java deleted file mode 100644 index 9ee16300..00000000 --- a/app/src/main/java/com/quranapp/android/utils/univ/LinkMovementMethod2.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.quranapp.android.utils.univ; - -import android.text.Layout; -import android.text.Spannable; -import android.text.method.LinkMovementMethod; -import android.view.MotionEvent; -import android.widget.TextView; - -public class LinkMovementMethod2 extends LinkMovementMethod { - private static LinkMovementMethod2 sInstance; - - public static LinkMovementMethod2 getInstance() { - if (sInstance == null) { - sInstance = new LinkMovementMethod2(); - } - - return sInstance; - } - - @Override - public boolean onTouchEvent(TextView widget, Spannable buffer, MotionEvent event) { - int action = event.getAction(); - - if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) { - int x = (int) event.getX(); - int y = (int) event.getY(); - - x -= widget.getTotalPaddingLeft(); - y -= widget.getTotalPaddingTop(); - - x += widget.getScrollX(); - y += widget.getScrollY(); - - Layout layout = widget.getLayout(); - int line = layout.getLineForVertical(y); - int off = layout.getOffsetForHorizontal(line, x); - - if (off >= widget.getText().length()) { - // Return true so click won't be triggered in the leftover empty space - return true; - } - } - - return super.onTouchEvent(widget, buffer, event); - } -} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/views/BoldHeader.java b/app/src/main/java/com/quranapp/android/views/BoldHeader.java index f4e19b16..d9f001fc 100644 --- a/app/src/main/java/com/quranapp/android/views/BoldHeader.java +++ b/app/src/main/java/com/quranapp/android/views/BoldHeader.java @@ -26,7 +26,7 @@ import com.quranapp.android.databinding.LytSimpleSearchBoxBinding; import com.quranapp.android.utils.extensions.ContextKt; import com.quranapp.android.utils.extensions.ViewKt; -import com.quranapp.android.utils.univ.SimpleTextWatcher; +import com.quranapp.android.utils.simplified.SimpleTextWatcher; public class BoldHeader extends AppBarLayout { private final LytBoldHeaderBinding mBinding; diff --git a/app/src/main/java/com/quranapp/android/views/reader/RecitationPlayer.java b/app/src/main/java/com/quranapp/android/views/reader/RecitationPlayer.java index d0ca5510..0b88b3d0 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/RecitationPlayer.java +++ b/app/src/main/java/com/quranapp/android/views/reader/RecitationPlayer.java @@ -30,15 +30,15 @@ import androidx.core.content.ContextCompat; import com.google.android.material.behavior.HideBottomViewOnScrollBehavior; -import com.quranapp.android.utils.Log; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; import com.quranapp.android.components.quran.QuranMeta; import com.quranapp.android.components.recitation.RecitationModel; -import com.quranapp.android.utils.exceptions.NoInternetException; import com.quranapp.android.interfaceUtils.Destroyable; import com.quranapp.android.interfaceUtils.PlayerVerseLoadCallback; import com.quranapp.android.suppliments.recitation.RecitationMenu; +import com.quranapp.android.utils.Log; +import com.quranapp.android.utils.exceptions.NoInternetException; import com.quranapp.android.utils.reader.recitation.RecitationLoadTaskRunner; import com.quranapp.android.utils.reader.recitation.RecitationNotificationService; import com.quranapp.android.utils.reader.recitation.RecitationParams; @@ -46,7 +46,6 @@ import com.quranapp.android.utils.reader.recitation.RecitationUtils; import com.quranapp.android.utils.receivers.NetworkStateReceiver; import com.quranapp.android.utils.sharedPrefs.SPReader; -import com.quranapp.android.utils.univ.Duration; import com.quranapp.android.utils.univ.FileUtils; import com.quranapp.android.utils.univ.MessageUtils; @@ -322,7 +321,7 @@ public void prepareMediaPlayer(Uri audioURI, String slug, int chapterNo, int ver mediaPlayer = MediaPlayer.create(getContext(), audioURI); if (mediaPlayer == null) { - popMiniMsg("Something happened wrong while playing the audio", Duration.DURATION_LONG); + popMiniMsg("Something happened wrong while playing the audio", Toast.LENGTH_LONG); return; } diff --git a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinner.java b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinner.java index 2327fd7e..34b3a4e8 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinner.java +++ b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinner.java @@ -26,7 +26,7 @@ import com.quranapp.android.databinding.LytReaderSpinnerPopupBinding; import com.quranapp.android.utils.extensions.ContextKt; import com.quranapp.android.utils.univ.PopupWindow2; -import com.quranapp.android.utils.univ.SimpleTextWatcher; +import com.quranapp.android.utils.simplified.SimpleTextWatcher; import com.quranapp.android.utils.univ.StringUtils; import java.util.ArrayList; diff --git a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerAdapter.java b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerAdapter.java index b1a2ab9c..05bf7ed9 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerAdapter.java +++ b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerAdapter.java @@ -126,7 +126,7 @@ public VHReaderSpinner(ReaderSpinnerAdapter adapter, @NonNull View itemView) @CallSuper public void bind(ReaderSpinnerItem item) { - itemView.setSelected(item.isSelected()); + itemView.setSelected(item.getSelected()); itemView.setOnClickListener(v -> { if (mAdapter != null) { mAdapter.onItemSelect(item, true); diff --git a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerItem.kt b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerItem.kt index 7cb7919f..793a4c43 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerItem.kt +++ b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerItem.kt @@ -1,6 +1,6 @@ package com.quranapp.android.views.reader.spinner -import com.peacedesign.android.utils.ComponentBase +import com.quranapp.android.components.ComponentBase open class ReaderSpinnerItem : ComponentBase() { var label: CharSequence = "" diff --git a/app/src/main/java/com/quranapp/android/views/readerSpinner2/adapters/ADPJuzChapterVerseBase.kt b/app/src/main/java/com/quranapp/android/views/readerSpinner2/adapters/ADPJuzChapterVerseBase.kt index 39457835..479df1d0 100644 --- a/app/src/main/java/com/quranapp/android/views/readerSpinner2/adapters/ADPJuzChapterVerseBase.kt +++ b/app/src/main/java/com/quranapp/android/views/readerSpinner2/adapters/ADPJuzChapterVerseBase.kt @@ -71,11 +71,11 @@ abstract class ADPJuzChapterVerseBase(private val adapter: ADP @CallSuper open fun bind(item: T) { - itemView.isSelected = item.isSelected + itemView.isSelected = item.selected itemView.setOnClickListener { adapter.onItemSelectInAdapter(item, true) } } } \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt index 8414dd01..193d7d7e 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt @@ -4,15 +4,15 @@ import android.content.Context import android.os.Bundle import android.view.View import android.widget.LinearLayout -import com.peacedesign.android.widget.list.base.BaseListAdapter -import com.peacedesign.android.widget.list.base.BaseListItem -import com.peacedesign.android.widget.list.simple.SimpleListView -import com.peacedesign.android.widget.list.singleChoice.SingleChoiceListAdapter -import com.peacedesign.android.widget.list.singleChoice.SingleChoiceListView +import com.quranapp.android.widgets.list.base.BaseListAdapter +import com.quranapp.android.widgets.list.base.BaseListItem +import com.quranapp.android.widgets.list.base.BaseListView +import com.quranapp.android.widgets.list.singleChoice.SingleChoiceListAdapter +import com.quranapp.android.widgets.list.singleChoice.SingleChoiceListView open class PeaceBottomSheetMenu : PeaceBottomSheet() { var onItemClickListener: OnItemClickListener? = null - var adapter: BaseListAdapter? = null + var adapter: BaseListAdapter? = null override fun onCreate(savedInstanceState: Bundle?) { @@ -34,18 +34,20 @@ open class PeaceBottomSheetMenu : PeaceBottomSheet() { dialogLayout.addView(createAdapterView(dialogLayout.context, adapter!!)) } - protected open fun createAdapterView(context: Context, listAdapter: BaseListAdapter): View { + protected open fun createAdapterView(context: Context, listAdapter: BaseListAdapter): View { val listView = if (listAdapter is SingleChoiceListAdapter) { SingleChoiceListView(context) } else { - SimpleListView(context) + BaseListView(context) } - listView.setOnItemClickListener { item -> - onItemClickListener?.onItemClick(this, item) - } + listView.setOnItemClickListener(object : BaseListView.OnItemClickListener { + override fun onItemClick(item: BaseListItem) { + onItemClickListener?.onItemClick(this@PeaceBottomSheetMenu, item) + } + }) - listView.post { listView.adapter = adapter } + listView.post { listView.setAdapter(adapter) } return listView } diff --git a/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormInputField.java b/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormInputField.java index 542eb718..29e511cf 100644 --- a/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormInputField.java +++ b/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormInputField.java @@ -25,7 +25,7 @@ import androidx.annotation.StringRes; import com.quranapp.android.R; -import com.quranapp.android.utils.univ.SimpleTextWatcher; +import com.quranapp.android.utils.simplified.SimpleTextWatcher; public class PeaceFormInputField extends FrameLayout { private CharSequence mFieldTitle; diff --git a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListAdapter.kt b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListAdapter.kt new file mode 100644 index 00000000..c52b1942 --- /dev/null +++ b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListAdapter.kt @@ -0,0 +1,208 @@ +package com.quranapp.android.widgets.list.base + +import android.animation.Animator +import android.animation.AnimatorListenerAdapter +import android.animation.AnimatorSet +import android.animation.ValueAnimator +import android.content.Context +import android.os.Handler +import android.os.Looper +import android.view.View +import android.view.ViewGroup +import com.peacedesign.android.utils.ArrayListPro +import com.peacedesign.android.utils.interfaceUtils.ObserverPro.UpdateType + +open class BaseListAdapter(val context: Context) { + private val handler = Handler(Looper.getMainLooper()) + private val items = ArrayListPro() + private val animationDuration = 300L + + private var itemsAnimatable = true + + var container: ViewGroup? = null + var listView: BaseListView? = null + + init { + items.addObserver { _, updateType -> + if (updateType == UpdateType.REMOVE || updateType == UpdateType.ADD) { + for (i in items.indices) { + items[i].position = i + } + } + } + } + + + open fun onCreateItem(item: BaseListItem, index: Int) { + val itemView = onCreateItemView(item, index) ?: return + + handler.post { itemView.isSelected = item.selected } + + itemView.setOnClickListener { dispatchClick(item) } + + item.itemView = itemView + item.adapter = this + + getContainerInternal()?.let { + onAppendItemView(it, itemView, index) + } + } + + + protected open fun onCreateItemView(item: BaseListItem, position: Int): View? { + return BaseListItemView(context, item) + } + + protected open fun onAppendItemView(container: ViewGroup, itemView: View, position: Int) { + container.addView(itemView, position) + } + + fun drainItems() { + items.clear() + container?.removeAllViews() + } + + fun setItems(items: ArrayList) { + val oldAnimateItemsFlag = itemsAnimatable + + itemsAnimatable = false + drainItems() + itemsAnimatable = oldAnimateItemsFlag + + this.items.addAll(items) + + listView?.onCreate() + } + + fun addItem(item: BaseListItem) { + addItem(item, items.size) + } + + fun addItem(item: BaseListItem, index: Int) { + item.position = index + + items.add(index, item) + if (isLaidOut()) { + onCreateItem(item, index) + + if (itemsAnimatable) { + val itemView = item.itemView + if (itemView != null) { + addViewWithAnimation(itemView) + } + } + } + } + + private fun isLaidOut(): Boolean { + return container?.isLaidOut == true + } + + + fun removeItem(index: Int) { + removeItem(items[index]) + } + + fun removeItem(item: BaseListItem) { + item.itemView?.let { + remove(it, item, itemsAnimatable) + } + } + + private fun remove(view: View, item: BaseListItem, animate: Boolean) { + if (animate) removeWithAnimation(view, item) else removeFinal(view, item) + } + + fun removeFinal(view: View, item: BaseListItem) { + (view.parent as ViewGroup).removeView(view) + removeMenuItemInternal(item) + } + + private fun removeMenuItemInternal(item: BaseListItem) { + items.remove(item) + } + + private fun removeWithAnimation(view: View, item: BaseListItem) { + val params = view.layoutParams + + val alphaAnimator = ValueAnimator().apply { + setFloatValues(view.alpha, 0f) + addUpdateListener { animation -> view.alpha = animation.animatedValue as Float } + } + + val heightAnimator = ValueAnimator().apply { + setIntValues(view.height, 0) + addUpdateListener { animation -> + params.height = animation.animatedValue as Int + view.requestLayout() + } + } + + val animatorSet = AnimatorSet() + animatorSet.play(heightAnimator).with(alphaAnimator) + animatorSet.addListener(object : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator) { + super.onAnimationEnd(animation) + removeFinal(view, item) + } + }) + animatorSet.setDuration(animationDuration).start() + } + + private fun addViewWithAnimation(itemView: View) { + itemView.measure(0, 0) + + val params = itemView.layoutParams.apply { + height = 0 + } + + val alphaAnimator = ValueAnimator().apply { + setFloatValues(0f, itemView.alpha) + addUpdateListener { animation -> + itemView.alpha = animation.animatedValue as Float + } + } + + val heightAnimator = ValueAnimator().apply { + setIntValues(0, itemView.measuredHeight) + addUpdateListener { animation -> + params.height = animation.animatedValue as Int + itemView.requestLayout() + } + } + + val animatorSet = AnimatorSet() + animatorSet.play(heightAnimator).with(alphaAnimator) + animatorSet.setDuration(animationDuration).start() + } + + fun getItem(index: Int): BaseListItem { + val count = itemsCount() + if (index < 0 || index >= count) { + throw IndexOutOfBoundsException( + String.format( + "Adapter indexOutOfBound. Index: %d, Size: %d ", + index, + count + ) + ) + } + + return items[index] + } + + fun itemsCount() = items.size + + private fun getContainerInternal() = container + + protected open fun dispatchClick(item: BaseListItem) { + listView?.dispatchItemClick(item) + } + + fun notifyItemChanged(position: Int) { + val itemView = getItem(position).itemView + if (itemView is BaseListItemView) { + itemView.notifyForChange() + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItem.kt b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItem.kt new file mode 100644 index 00000000..6c90adbf --- /dev/null +++ b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItem.kt @@ -0,0 +1,13 @@ +package com.quranapp.android.widgets.list.base + +import android.view.View +import com.quranapp.android.components.ComponentBase + +class BaseListItem @JvmOverloads constructor( + var icon: Int = 0, + var label: String? = null, + var message: String? = null, +) : ComponentBase() { + var adapter: BaseListAdapter? = null + var itemView: View? = null +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItemView.kt b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItemView.kt new file mode 100644 index 00000000..cf12bba9 --- /dev/null +++ b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItemView.kt @@ -0,0 +1,186 @@ +package com.quranapp.android.widgets.list.base + +import android.annotation.SuppressLint +import android.content.Context +import android.graphics.drawable.Drawable +import android.view.ContextThemeWrapper +import android.view.Gravity +import android.view.ViewGroup.LayoutParams.MATCH_PARENT +import android.view.ViewGroup.LayoutParams.WRAP_CONTENT +import android.widget.FrameLayout +import android.widget.LinearLayout +import androidx.annotation.DrawableRes +import androidx.appcompat.widget.AppCompatImageView +import androidx.appcompat.widget.AppCompatTextView +import com.peacedesign.android.utils.Dimen +import com.quranapp.android.R +import com.quranapp.android.utils.extensions.dp2px +import com.quranapp.android.utils.extensions.drawable +import com.quranapp.android.utils.extensions.removeView +import com.quranapp.android.utils.extensions.updateMarginHorizontal + +@SuppressLint("ViewConstructor") +class BaseListItemView(context: Context, val item: BaseListItem) : FrameLayout(context) { + val containerView = LinearLayout(resolveItemStyle()) + val labelCont = LinearLayout(context) + + var iconView: AppCompatImageView? = null + var labelView: AppCompatTextView? = null + var messageView: AppCompatTextView? = null + + init { + initThis() + initContainer() + initIconView() + initLabelCont() + + measure(0, 0) + } + + private fun initThis() { + updateDisability() + } + + private fun initContainer() { + containerView.layoutParams = LayoutParams(MATCH_PARENT, WRAP_CONTENT) + addView(containerView) + } + + private fun initIconView() { + if (item.icon == 0) return + + val iconDrawable = context.drawable(item.icon) + + iconView = AppCompatImageView(resolveItemIconStyle()).apply { + setImageDrawable(iconDrawable) + + val size = context.dp2px(40f) + layoutParams = LinearLayout.LayoutParams(size, size).apply { + gravity = Gravity.TOP + } + } + + updateIcon() + containerView.addView(iconView) + } + + + private fun initLabelCont() { + labelCont.apply { + layoutParams = LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply { + updateMarginHorizontal(Dimen.dp2px(context, 10f)) + gravity = Gravity.CENTER_VERTICAL + } + orientation = LinearLayout.VERTICAL + } + + initLabelView() + initMessageView() + + containerView.addView(labelCont) + } + + private fun initLabelView() { + if (labelView != null || item.label.isNullOrEmpty()) return + + labelView = AppCompatTextView(resolveItemLabelStyle()) + updateLabel() + + labelCont.addView(labelView) + } + + private fun initMessageView() { + if (messageView != null || item.message.isNullOrEmpty()) { + return + } + + messageView = AppCompatTextView(resolveItemMassageStyle()) + + /*mMessageView.setTextColor(ContextCompat.getColor(getContext(), R.color.colorBodyTer1Text)); + mMessageView.setTextSize(Dimen.getDimenSp(getContext(), R.dimen.dmnCommonSizeTer)); + mMessageView.setMaxLines(2); + mMessageView.setEllipsize(TextUtils.TruncateAt.END);*/ + + updateDescription() + labelCont!!.addView(messageView) + } + + fun updateIcon() { + if (item.icon == 0) { + iconView.removeView() + return + } + + if (iconView == null) { + initIconView() + return + } + + iconView?.setImageDrawable(context.drawable(item.icon)) + + } + + fun updateLabel() { + if (labelView == null) { + initMessageView() + return + } + + if (item.label.isNullOrEmpty()) { + labelView.removeView() + } else { + labelView!!.text = item.label + } + } + + private fun updateDescription() { + if (messageView == null) { + initMessageView() + return + } + + if (item.message.isNullOrEmpty()) { + messageView.removeView() + } else { + messageView!!.text = item.message + } + } + + fun updateDisability() { + isEnabled = item.enabled + alpha = if (item.enabled) 1f else 0.5f + } + + fun notifyForChange() { + updateIcon() + updateLabel() + updateDescription() + updateDisability() + isSelected = item.selected + } + + fun setItemBackground(background: Drawable?) { + containerView.background = background + } + + fun setItemBackground(@DrawableRes backgroundRes: Int) { + containerView.setBackgroundResource(backgroundRes) + } + + private fun resolveItemStyle(): Context { + return ContextThemeWrapper(context, R.style.SimpleListItemStyle) + } + + private fun resolveItemIconStyle(): Context { + return ContextThemeWrapper(context, R.style.SimpleListItemIconStyle) + } + + private fun resolveItemLabelStyle(): Context { + return ContextThemeWrapper(context, R.style.SimpleListItemLabelStyle) + } + + private fun resolveItemMassageStyle(): Context { + return ContextThemeWrapper(context, R.style.SimpleListItemMessageStyle) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListView.kt b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListView.kt new file mode 100644 index 00000000..d3870345 --- /dev/null +++ b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListView.kt @@ -0,0 +1,121 @@ +package com.quranapp.android.widgets.list.base + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import android.view.ViewGroup +import android.view.animation.Animation +import android.view.animation.AnimationUtils +import android.widget.LinearLayout +import androidx.core.widget.NestedScrollView +import com.quranapp.android.utils.extensions.dp2px +import com.quranapp.android.utils.extensions.updatePaddingVertical + +open class BaseListView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0, +) : NestedScrollView(context, attrs, defStyleAttr) { + companion object { + const val DEFAULT_ITEM_ANIMATOR = -1 + } + + val container = createItemsContainer(context) + private var mAdapter: BaseListAdapter? = null + private var onItemClickListener: OnItemClickListener? = null + var supportsShowAnimation = false + var itemAnimator = DEFAULT_ITEM_ANIMATOR + + init { + isVerticalScrollBarEnabled = false + clipToPadding = false + addView(container) + } + + protected open fun createItemsContainer(context: Context): ViewGroup { + return LinearLayout(context).apply { + orientation = LinearLayout.VERTICAL + updatePaddingVertical(context.dp2px(10f)) + } + } + + fun getItem(position: Int): BaseListItem? { + return mAdapter?.getItem(position) + } + + open fun onCreate() { + create() + } + + + private fun create() { + container.removeAllViews() + + if (mAdapter == null) return + + setContainer(container) + + for (i in 0 until mAdapter!!.itemsCount()) { + onCreateItem(mAdapter!!.getItem(i), i) + } + } + + protected open fun onCreateItem(item: BaseListItem, position: Int) { + mAdapter?.onCreateItem(item, position) + val itemView = item.itemView ?: return + + if (supportsShowAnimation) { + initPendingItemAnimation(itemView, position) + } + } + + protected open fun setContainer(container: ViewGroup) { + mAdapter?.container = container + } + + fun getAdapter(): BaseListAdapter? { + return mAdapter + } + + fun setAdapter(adapter: BaseListAdapter?) { + mAdapter = adapter + + adapter?.listView = this + + onCreate() + } + + private fun resolveAnimation(): Animation? { + return if (itemAnimator == 0) null else try { + AnimationUtils.loadAnimation(context, itemAnimator) + } catch (e: Exception) { + AnimationUtils.loadAnimation(context, android.R.anim.fade_in) + } + } + + private fun initPendingItemAnimation(itemView: View, itemIndex: Int) { + val animation = resolveAnimation() ?: return + + animation.apply { + fillAfter = true + fillBefore = true + startOffset = (itemIndex * 40).toLong() + duration = 300 + } + + itemView.post { itemView.startAnimation(animation) } + } + + open fun dispatchItemClick(item: BaseListItem) { + onItemClickListener?.onItemClick(item) + } + + + open fun setOnItemClickListener(listener: OnItemClickListener) { + onItemClickListener = listener + } + + interface OnItemClickListener { + fun onItemClick(item: BaseListItem) + } +} diff --git a/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListAdapter.kt b/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListAdapter.kt new file mode 100644 index 00000000..5aaadc18 --- /dev/null +++ b/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListAdapter.kt @@ -0,0 +1,33 @@ +package com.quranapp.android.widgets.list.singleChoice + +import android.content.Context +import android.view.View +import android.view.ViewGroup +import com.quranapp.android.widgets.list.base.BaseListAdapter +import com.quranapp.android.widgets.list.base.BaseListItem +import com.quranapp.android.widgets.radio.PeaceRadioButton +import com.quranapp.android.widgets.radio.PeaceRadioGroup + + +class SingleChoiceListAdapter(context: Context) : BaseListAdapter(context) { + override fun onCreateItemView(item: BaseListItem, position: Int): View { + val radio = PeaceRadioButton(context).apply { + tag = item + setTexts(item.label, item.message) + } + + if (item.id != View.NO_ID) { + radio.id = item.id + } + + return radio + } + + override fun onAppendItemView(container: ViewGroup, itemView: View, position: Int) { + super.onAppendItemView(container, itemView, position) + + if (getItem(position).selected && container is PeaceRadioGroup) { + container.check(itemView.id) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListView.kt b/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListView.kt new file mode 100644 index 00000000..4fe70ea2 --- /dev/null +++ b/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListView.kt @@ -0,0 +1,28 @@ +package com.quranapp.android.widgets.list.singleChoice + +import android.content.Context +import android.view.ViewGroup +import com.quranapp.android.widgets.list.base.BaseListItem +import com.quranapp.android.widgets.list.base.BaseListView +import com.quranapp.android.widgets.radio.PeaceRadioGroup + +class SingleChoiceListView(context: Context) : BaseListView(context) { + private var selectionChangeListener: OnItemClickListener? = null + + override fun createItemsContainer(context: Context): ViewGroup { + val radioGroup = PeaceRadioGroup(context) + radioGroup.onCheckChangedListener = { button, _ -> + if (selectionChangeListener != null) { + val item = button.tag as BaseListItem? + if (item != null) { + selectionChangeListener!!.onItemClick(item) + } + } + } + return radioGroup + } + + override fun setOnItemClickListener(listener: OnItemClickListener) { + selectionChangeListener = listener + } +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTab.java b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTab.java index dc426873..2d348b66 100644 --- a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTab.java +++ b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTab.java @@ -6,7 +6,7 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import com.peacedesign.android.utils.ComponentBase; +import com.quranapp.android.components.ComponentBase; import com.quranapp.android.utils.univ.StringUtils; public class BottomTab extends ComponentBase { diff --git a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabLayout.java b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabLayout.java index 51731488..90caf3f8 100644 --- a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabLayout.java +++ b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabLayout.java @@ -227,7 +227,7 @@ void selectTabAtInternal(int position) { if (getTabsCount() == 0) return; BottomTab tabToSelect = mTabs.get(position); - if (tabToSelect.isSelected()) return; + if (tabToSelect.getSelected()) return; mProtectFromViewPagerChange = true; selectTab(tabToSelect); diff --git a/app/src/main/res/values/list_styles.xml b/app/src/main/res/values/list_styles.xml new file mode 100644 index 00000000..83a3de5a --- /dev/null +++ b/app/src/main/res/values/list_styles.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/ComponentBase.java b/peacedesign/src/main/java/com/peacedesign/android/utils/ComponentBase.java deleted file mode 100644 index aa773b05..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/ComponentBase.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.peacedesign.android.utils; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.peacedesign.android.utils.interfaceUtils.Position; -import com.peacedesign.android.utils.interfaceUtils.Selectable; - -import java.io.Serializable; - -public abstract class ComponentBase implements Selectable, Position, Serializable { - private int mId = -1; - private String mKey; - private int mPosition = -1; - private boolean mSelected; - private boolean mEnabled = true; - private transient Object object; - - - public int getId() { - return mId; - } - - public void setId(int id) { - this.mId = id; - } - - @NonNull - public String getKey() { - return mKey; - } - - public void setKey(@NonNull String key) { - mKey = key; - } - - @Override - public int getPosition() { - return mPosition; - } - - @Override - public void setPosition(int position) { - mPosition = position; - } - - @Override - public boolean isSelected() { - return mSelected; - } - - @Override - public void setSelected(boolean flag) { - mSelected = flag; - } - - public Object getObject() { - return object; - } - - public void setObject(@Nullable Object object) { - this.object = object; - } - - public boolean isEnabled() { - return mEnabled; - } - - public void setEnabled(boolean flag) { - this.mEnabled = flag; - } - - public void resetBools() { - setSelected(false); - setEnabled(true); - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/ResUtils.java b/peacedesign/src/main/java/com/peacedesign/android/utils/ResUtils.java index 9c073fd8..0043edda 100644 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/ResUtils.java +++ b/peacedesign/src/main/java/com/peacedesign/android/utils/ResUtils.java @@ -1,40 +1,12 @@ package com.peacedesign.android.utils; import android.content.Context; -import android.content.res.Configuration; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Typeface; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; -import android.view.LayoutInflater; -import android.view.View; -import androidx.annotation.ColorInt; -import androidx.annotation.DimenRes; -import androidx.annotation.Dimension; import androidx.annotation.DrawableRes; -import androidx.annotation.FontRes; -import androidx.annotation.FractionRes; -import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.annotation.StringRes; import androidx.appcompat.content.res.AppCompatResources; -import androidx.core.content.ContextCompat; -import androidx.core.content.res.ResourcesCompat; -import androidx.core.graphics.drawable.DrawableCompat; - -import com.peacedesign.R; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.util.Locale; public class ResUtils { @Nullable diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/CompoundButtonGroup.java b/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/CompoundButtonGroup.java deleted file mode 100644 index 4eb12071..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/CompoundButtonGroup.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright (c) Faisal Khan (https://github.com/faisalcodes) - * Created on 2/4/2022. - * All rights reserved. - */ - -package com.peacedesign.android.utils.interfaceUtils; - -import androidx.annotation.IdRes; - -import com.peacedesign.android.widget.radio.PeaceRadioButton; - - -public interface CompoundButtonGroup { - void clearCheck(); - - /** - * Check a button without invoking the Listeners. - * - * @param id Id of the {@link PeaceRadioButton} to be checked. - */ - void checkSansInvocation(@IdRes int id); - - void checkAtPosition(int position); - - void check(@IdRes int id); -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Position.java b/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Position.java deleted file mode 100644 index 067bce95..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Position.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.peacedesign.android.utils.interfaceUtils; - -public interface Position { - int getPosition(); - - void setPosition(int position); -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Selectable.java b/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Selectable.java deleted file mode 100644 index 5c7a501e..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Selectable.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.peacedesign.android.utils.interfaceUtils; - -public interface Selectable { - boolean isSelected(); - - void setSelected(boolean selected); -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/compound/PeaceCompoundButton.java b/peacedesign/src/main/java/com/peacedesign/android/widget/compound/PeaceCompoundButton.java deleted file mode 100644 index 55c67fbe..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/compound/PeaceCompoundButton.java +++ /dev/null @@ -1,435 +0,0 @@ -/* - * Copyright (c) Faisal Khan (https://github.com/faisalcodes) - * Created on 2/4/2022. - * All rights reserved. - */ - -package com.peacedesign.android.widget.compound; - -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - -import android.content.Context; -import android.content.res.ColorStateList; -import android.content.res.TypedArray; -import android.graphics.Typeface; -import android.graphics.drawable.Drawable; -import android.text.SpannableString; -import android.text.SpannableStringBuilder; -import android.text.TextUtils; -import android.text.style.TextAppearanceSpan; -import android.util.AttributeSet; -import android.view.Gravity; -import android.view.MotionEvent; -import android.view.View; -import android.widget.Checkable; -import android.widget.CompoundButton; -import android.widget.LinearLayout; - -import androidx.annotation.CallSuper; -import androidx.annotation.IntDef; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.StringRes; -import androidx.annotation.StyleRes; -import androidx.appcompat.widget.AppCompatTextView; - -import com.peacedesign.R; -import com.peacedesign.android.utils.Dimen; -import com.peacedesign.android.utils.ViewUtils; -import com.peacedesign.android.utils.interfaceUtils.CompoundButtonGroup; -import com.peacedesign.android.utils.span.TypefaceSpan2; - -import java.lang.annotation.Retention; -import java.lang.annotation.RetentionPolicy; - -public abstract class PeaceCompoundButton extends LinearLayout implements Checkable, CompoundButton.OnCheckedChangeListener { - public static final int COMPOUND_TEXT_LEFT = 0; - public static final int COMPOUND_TEXT_TOP = 1; - public static final int COMPOUND_TEXT_RIGHT = 2; - public static final int COMPOUND_TEXT_BOTTOM = 3; - - public static final int COMPOUND_TEXT_GRAVITY_START = 0; - public static final int COMPOUND_TEXT_GRAVITY_END = 1; - public static final int COMPOUND_TEXT_GRAVITY_CENTER = 2; - public static final int COMPOUND_TEXT_GRAVITY_LEFT = 3; - public static final int COMPOUND_TEXT_GRAVITY_RIGHT = 4; - - protected final boolean mInitialChecked; - @TextGravity - private int mTextGravity; - private CompoundButtonGroup mParent; - private CharSequence mText; - private CharSequence mSubText; - @CompoundDirection - private int mCompoundDirection; - private int mSpaceBetween; - private int mTextAppearanceResId; - private int mSubTextAppearanceResId; - - private BeforeCompoundCheckChangeListener mBeforeCheckListener; - private OnCompoundCheckChangedListener mCheckChangeListener; - - private AppCompatTextView mTxtView; - - public PeaceCompoundButton(Context context) { - this(context, null); - } - - public PeaceCompoundButton(Context context, @Nullable AttributeSet attrs) { - this(context, attrs, 0); - } - - public PeaceCompoundButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - this(context, attrs, defStyleAttr, 0); - } - - public PeaceCompoundButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PeaceCompoundButton, defStyleAttr, defStyleRes); - - mText = a.getText(R.styleable.PeaceCompoundButton_android_text); - mSubText = a.getText(R.styleable.PeaceCompoundButton_peaceComp_subText); - mInitialChecked = a.getBoolean(R.styleable.PeaceCompoundButton_android_checked, false); - mCompoundDirection = a.getInt(R.styleable.PeaceCompoundButton_peaceComp_direction, COMPOUND_TEXT_RIGHT); - mSpaceBetween = a.getDimensionPixelSize(R.styleable.PeaceCompoundButton_peaceComp_spaceBetween, Dimen.dp2px(context, 10)); - mTextGravity = a.getInt(R.styleable.PeaceCompoundButton_peaceComp_textGravity, COMPOUND_TEXT_GRAVITY_START); - mTextAppearanceResId = a.getResourceId(R.styleable.PeaceCompoundButton_android_textAppearance, - R.style.PeaceRadioTextAppearance); - mSubTextAppearanceResId = a.getResourceId(R.styleable.PeaceCompoundButton_peaceComp_subTextAppearance, - R.style.PeaceRadioSubTextAppearance); - - a.recycle(); - init(); - } - - private void init() { - initThis(); - makeComponents(); - } - - @CallSuper - protected void initThis() { - super.setOrientation(HORIZONTAL); - super.setOnClickListener(v -> { - if (mParent != null) mParent.check(getId()); - else toggle(); - }); - } - - @CallSuper - protected void makeComponents() { - makeTexts(); - addCompoundButton(); - } - - private void makeTexts() { - mTxtView = new AppCompatTextView(getContext()); - LayoutParams paramsText = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); - paramsText.weight = 1; - mTxtView.setLayoutParams(paramsText); - mTxtView.setGravity(resolveTextGravity(mTextGravity)); - - setTextAppearancesInternal(mTextAppearanceResId, mSubTextAppearanceResId); - } - - protected void addCompoundButton() { - View compoundButton = getCompoundButton(); - - ViewUtils.removeView(mTxtView); - ViewUtils.removeView(compoundButton); - - switch (mCompoundDirection) { - case COMPOUND_TEXT_LEFT: - case COMPOUND_TEXT_TOP: - addView(mTxtView, 0); - if (compoundButton != null) { - addView(compoundButton, 1); - } - break; - case COMPOUND_TEXT_RIGHT: - case COMPOUND_TEXT_BOTTOM: - default: - if (compoundButton != null) { - addView(compoundButton, 0); - } - - addView(mTxtView, compoundButton != null ? 1 : 0); - break; - } - - if (mCompoundDirection == COMPOUND_TEXT_TOP || mCompoundDirection == COMPOUND_TEXT_BOTTOM) { - super.setOrientation(VERTICAL); - } else { - super.setOrientation(HORIZONTAL); - } - - setSpaceBetweenInternal(mSpaceBetween); - } - - protected abstract CompoundButton getCompoundButton(); - - private int resolveTextGravity(@TextGravity int textGravity) { - switch (textGravity) { - case COMPOUND_TEXT_GRAVITY_CENTER: - return Gravity.CENTER; - case COMPOUND_TEXT_GRAVITY_END: - return Gravity.END; - case COMPOUND_TEXT_GRAVITY_LEFT: - return Gravity.LEFT; - case COMPOUND_TEXT_GRAVITY_RIGHT: - return Gravity.RIGHT; - case COMPOUND_TEXT_GRAVITY_START: - default: - return Gravity.START; - } - } - - private void setTextInternal(CharSequence text, CharSequence subtext) { - SpannableStringBuilder ssb = new SpannableStringBuilder(); - - if (!TextUtils.isEmpty(text)) { - SpannableString titleSS = new SpannableString(text); - setTextAppearanceSpan(titleSS, mTextAppearanceResId, false); - ssb.append(titleSS); - } - - if (!TextUtils.isEmpty(subtext)) { - if (!TextUtils.isEmpty(text)) ssb.append("\n"); - - SpannableString subtitleSS = new SpannableString(subtext); - setTextAppearanceSpan(subtitleSS, mSubTextAppearanceResId, true); - ssb.append(subtitleSS); - } - - mTxtView.setText(ssb); - mTxtView.setVisibility(ssb.length() > 0 ? VISIBLE : GONE); - } - - private void setTextAppearanceSpan(SpannableString ss, int styleId, boolean isSubText) { - int txtSizeDef = Dimen.sp2px(getContext(), isSubText ? 14 : 16); - TypedArray ta = getContext().obtainStyledAttributes(styleId, androidx.appcompat.R.styleable.TextAppearance); - - - String family = "sans-serif"; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { - Typeface font = ta.getFont(androidx.appcompat.R.styleable.TextAppearance_android_fontFamily); - if (font != null) { - ss.setSpan(new TypefaceSpan2(font), 0, ss.length(), SPAN_EXCLUSIVE_EXCLUSIVE); - } else { - family = resolveFontFamily(ta.getString(androidx.appcompat.R.styleable.TextAppearance_android_fontFamily)); - } - } else { - family = resolveFontFamily(ta.getString(androidx.appcompat.R.styleable.TextAppearance_android_fontFamily)); - } - - - int style = ta.getInt(androidx.appcompat.R.styleable.TextAppearance_android_textStyle, - isSubText ? Typeface.NORMAL : Typeface.BOLD); - int size = ta.getDimensionPixelSize(androidx.appcompat.R.styleable.TextAppearance_android_textSize, txtSizeDef); - ColorStateList color = ta.getColorStateList(androidx.appcompat.R.styleable.TextAppearance_android_textColor); - TextAppearanceSpan txtApSpan = new TextAppearanceSpan(family, style, size, color, null); - ss.setSpan(txtApSpan, 0, ss.length(), SPAN_EXCLUSIVE_EXCLUSIVE); - - ta.recycle(); - } - - private String resolveFontFamily(String s) { - - if ("sans-serif".equalsIgnoreCase(s) || - "sans-serif-light".equalsIgnoreCase(s) || - "sans-serif-condensed".equalsIgnoreCase(s) || - "sans-serif-black".equalsIgnoreCase(s) || - "sans-serif-thin".equalsIgnoreCase(s) || - "sans-serif-medium".equalsIgnoreCase(s)) { - return s; - } - return "sans-serif"; - } - - private void setSpaceBetweenInternal(int spaceBetween) { - LinearLayout.LayoutParams p = (LayoutParams) mTxtView.getLayoutParams(); - p.setMargins(0, 0, 0, 0); - p.setMarginStart(0); - p.setMarginEnd(0); - - switch (mCompoundDirection) { - case COMPOUND_TEXT_LEFT: - p.setMarginEnd(spaceBetween); - break; - case COMPOUND_TEXT_TOP: - p.bottomMargin = spaceBetween; - break; - case COMPOUND_TEXT_RIGHT: - p.setMarginStart(spaceBetween); - break; - case COMPOUND_TEXT_BOTTOM: - p.topMargin = spaceBetween; - break; - } - mTxtView.setLayoutParams(p); - } - - private void setTextAppearancesInternal(int textAppearanceResId, int subTextAppearanceResId) { - mTextAppearanceResId = textAppearanceResId; - mSubTextAppearanceResId = subTextAppearanceResId; - - setTextInternal(mText, mSubText); - } - - public void setTextAppearance(@StyleRes int styleResId) { - mTextAppearanceResId = styleResId; - setTextAppearances(styleResId, mSubTextAppearanceResId); - } - - public void setTexts(@StringRes int textResId, @StringRes int subTextResId) { - setTexts(getContext().getText(textResId), getContext().getText(subTextResId)); - } - - public void setTexts(CharSequence text, CharSequence subText) { - mText = text; - mSubText = subText; - - setTextInternal(text, subText); - } - - public CharSequence getText() { - return mText; - } - - public void setText(@StringRes int resId) { - setText(getContext().getText(resId)); - } - - public void setText(CharSequence text) { - mText = text; - - setTextInternal(text, mSubText); - } - - public CharSequence getSubText() { - return mSubText; - } - - public void setSubText(@StringRes int resId) { - setSubText(getContext().getText(resId)); - } - - public void setSubText(CharSequence subText) { - mSubText = subText; - - setTextInternal(mText, subText); - } - - public void setCompoundDirection(@CompoundDirection int compoundDirection) { - mCompoundDirection = compoundDirection; - - addCompoundButton(); - } - - public void setSpaceBetween(int spaceBetween) { - mSpaceBetween = spaceBetween; - setSpaceBetweenInternal(spaceBetween); - } - - public void setTextAppearances(@StyleRes int textAppearanceResId, @StyleRes int subTextAppearanceResId) { - setTextAppearancesInternal(textAppearanceResId, subTextAppearanceResId); - } - - public void setSubTextAppearance(@StyleRes int styleResId) { - mSubTextAppearanceResId = styleResId; - setTextAppearances(mTextAppearanceResId, styleResId); - } - - public void setForceTextGravity(@TextGravity int gravity) { - mTextGravity = gravity; - - if (mTxtView != null) { - mTxtView.setGravity(resolveTextGravity(gravity)); - } - } - - public void setGroup(@NonNull CompoundButtonGroup radioGroupPro) { - mParent = radioGroupPro; - } - - public void setOnCheckedChangedListener(OnCompoundCheckChangedListener listener) { - mCheckChangeListener = listener; - } - - public void setOnBeforeCheckChangedListener(BeforeCompoundCheckChangeListener listener) { - mBeforeCheckListener = listener; - } - - @Override - public boolean isChecked() { - CompoundButton btn = getCompoundButton(); - if (btn == null) { - return false; - } - return btn.isChecked(); - } - - @Override - public void setChecked(boolean checked) { - CompoundButton btn = getCompoundButton(); - if (btn == null) { - return; - } - - if (mBeforeCheckListener == null || mBeforeCheckListener.beforeCheck(this, checked)) { - btn.setChecked(checked); - } - } - - @Override - public void toggle() { - CompoundButton btn = getCompoundButton(); - if (btn == null) { - return; - } - if (mBeforeCheckListener == null || mBeforeCheckListener.beforeCheck(this, !isChecked())) { - btn.toggle(); - } - } - - @CallSuper - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - Drawable background = getBackground(); - if (background != null) { - int[] state = {isChecked ? android.R.attr.state_checked : -android.R.attr.state_checked}; - background.setState(state); - } - - if (mCheckChangeListener != null) { - mCheckChangeListener.onCheckChanged(this, isChecked); - } - } - - @Override - public void setOrientation(int orientation) { - // overridden - } - - @Override - public boolean onInterceptTouchEvent(@NonNull MotionEvent ev) { - return true; - } - - @IntDef({COMPOUND_TEXT_LEFT, COMPOUND_TEXT_TOP, COMPOUND_TEXT_RIGHT, COMPOUND_TEXT_BOTTOM}) - @Retention(RetentionPolicy.SOURCE) - public @interface CompoundDirection {} - - @IntDef({COMPOUND_TEXT_GRAVITY_START, COMPOUND_TEXT_GRAVITY_END, COMPOUND_TEXT_GRAVITY_CENTER, COMPOUND_TEXT_GRAVITY_LEFT, COMPOUND_TEXT_GRAVITY_RIGHT}) - @Retention(RetentionPolicy.SOURCE) - public @interface TextGravity {} - - public interface OnCompoundCheckChangedListener { - void onCheckChanged(PeaceCompoundButton button, boolean isChecked); - } - - public interface BeforeCompoundCheckChangeListener { - boolean beforeCheck(PeaceCompoundButton button, boolean newState); - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java b/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java index ebcc1d0d..3606accd 100644 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java +++ b/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java @@ -19,9 +19,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.peacedesign.android.widget.list.base.BaseListAdapter; -import com.peacedesign.android.widget.list.base.BaseListItem; - class PeaceDialogParams { @SuppressLint("UnknownNullness") public Context context; diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListAdapter.java b/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListAdapter.java deleted file mode 100644 index 5ee156d0..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListAdapter.java +++ /dev/null @@ -1,227 +0,0 @@ -package com.peacedesign.android.widget.list.base; - -import static com.peacedesign.android.utils.interfaceUtils.ObserverPro.UpdateType.ADD; -import static com.peacedesign.android.utils.interfaceUtils.ObserverPro.UpdateType.REMOVE; - -import android.animation.Animator; -import android.animation.AnimatorListenerAdapter; -import android.animation.AnimatorSet; -import android.animation.ValueAnimator; -import android.content.Context; -import android.os.Handler; -import android.os.Looper; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.NonNull; - -import com.peacedesign.android.utils.ArrayListPro; - -import java.util.ArrayList; - -public abstract class BaseListAdapter
  • { - private final Context mContext; - private final ArrayListPro
  • mItems = new ArrayListPro<>(); - private final int mAnimationDuration = 300; - private ViewGroup mContainer; - private boolean mItemsAnimatable = true; - private BaseListView mListView; - private final Handler handler = new Handler(Looper.getMainLooper()); - - public BaseListAdapter(@NonNull Context context) { - mContext = context; - - mItems.addObserver((observable, updateType) -> { - if (updateType == REMOVE || updateType == ADD) { - for (int i = 0; i < mItems.size(); i++) { - mItems.get(i).setPosition(i); - } - } - }); - } - - void setListView(@NonNull BaseListView listView) { - mListView = listView; - } - - void setContainer(@NonNull ViewGroup container) { - mContainer = container; - } - - @NonNull - public final Context getContext() { - return mContext; - } - - protected void onCreateItem(@NonNull LI item, int index) { - View itemView = onCreateItemView(item, index); - if (itemView == null) return; - - handler.post(() -> itemView.setSelected(item.isSelected())); - - itemView.setOnClickListener(v -> dispatchClick(item)); - item.setItemView(itemView); - item.setAdapter(this); - onAppendItemView(getContainerInternal(), itemView, index); - } - - protected View onCreateItemView(@NonNull LI item, int position) { - return new BaseListItemView(getContext(), item); - } - - protected void onAppendItemView(@NonNull ViewGroup container, @NonNull View itemView, int position) { - container.addView(itemView, position); - } - - public void drainItems() { - mItems.clear(); - if (mContainer != null) { - mContainer.removeAllViews(); - } - } - - @SuppressWarnings({"rawtypes", "unchecked"}) - public void setItems(@NonNull ArrayList items) { - boolean oldAnimateItemsFlag = mItemsAnimatable; - mItemsAnimatable = false; - drainItems(); - mItemsAnimatable = oldAnimateItemsFlag; - - mItems.addAll(items); - - if (mListView != null) { - mListView.onCreate(); - } - } - - public void addItem(@NonNull LI item) { - addItem(item, mItems.size()); - } - - public void addItem(@NonNull LI item, int index) { - item.setPosition(index); - - mItems.add(index, item); - - if (isLaidOut()) { - onCreateItem(item, index); - if (mItemsAnimatable) { - View itemView = item.getItemView(); - if (itemView != null) { - addViewWithAnimation(itemView); - } - } - } - } - - private boolean isLaidOut() { - return mContainer != null && mContainer.isLaidOut(); - } - - public void removeItem(int index) { - removeItem(mItems.get(index)); - } - - public void removeItem(@NonNull LI item) { - View view = item.getItemView(); - if (view != null) { - remove(view, item, mItemsAnimatable); - } - } - - private void remove(View view, LI item, boolean animate) { - if (animate) removeWithAnimation(view, item); - else removeFinal(view, item); - } - - void removeFinal(View view, LI item) { - ViewGroup parent = (ViewGroup) view.getParent(); - if (parent != null) { - parent.removeView(view); - } - removeMenuItemInternal(item); - } - - private void removeWithAnimation(View view, LI item) { - ViewGroup.LayoutParams params = view.getLayoutParams(); - - ValueAnimator alphaAnimator = new ValueAnimator(); - alphaAnimator.setFloatValues(view.getAlpha(), 0f); - - alphaAnimator.addUpdateListener(animation -> view.setAlpha((float) animation.getAnimatedValue())); - - ValueAnimator heightAnimator = new ValueAnimator(); - heightAnimator.setIntValues(view.getHeight(), 0); - heightAnimator.addUpdateListener(animation -> { - params.height = (int) animation.getAnimatedValue(); - view.requestLayout(); - }); - - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.play(heightAnimator).with(alphaAnimator); - animatorSet.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - super.onAnimationEnd(animation); - removeFinal(view, item); - } - }); - animatorSet.setDuration(mAnimationDuration).start(); - } - - private void removeMenuItemInternal(@NonNull LI item) { - mItems.remove(item); - } - - private void addViewWithAnimation(View itemView) { - itemView.measure(0, 0); - ViewGroup.LayoutParams params = itemView.getLayoutParams(); - params.height = 0; - - ValueAnimator alphaAnimator = new ValueAnimator(); - alphaAnimator.setFloatValues(0, itemView.getAlpha()); - - alphaAnimator.addUpdateListener(animation -> itemView.setAlpha((float) animation.getAnimatedValue())); - - ValueAnimator heightAnimator = new ValueAnimator(); - heightAnimator.setIntValues(0, itemView.getMeasuredHeight()); - heightAnimator.addUpdateListener(animation -> { - params.height = (int) animation.getAnimatedValue(); - itemView.requestLayout(); - }); - - AnimatorSet animatorSet = new AnimatorSet(); - animatorSet.play(heightAnimator).with(alphaAnimator); - animatorSet.setDuration(mAnimationDuration).start(); - } - - @NonNull - public LI getItem(int index) { - int count = getItemsCount(); - if (index < 0 || index >= count) { - throw new IndexOutOfBoundsException(String.format("Adapter indexOutOfBound. Index: %d, Size: %d ", index, count)); - } - return mItems.get(index); - } - - public int getItemsCount() { - return mItems.size(); - } - - private ViewGroup getContainerInternal() { - return mContainer; - } - - protected void dispatchClick(@NonNull LI item) { - if (mListView != null) { - mListView.dispatchItemClick(item); - } - } - - public void notifyItemChanged(int position) { - View itemView = getItem(position).getItemView(); - if (itemView instanceof BaseListItemView) { - ((BaseListItemView) itemView).notifyForChange(); - } - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListItem.java b/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListItem.java deleted file mode 100644 index cd9d9c18..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListItem.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.peacedesign.android.widget.list.base; - -import android.view.View; - -import androidx.annotation.DrawableRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.peacedesign.android.utils.ComponentBase; - -public class BaseListItem extends ComponentBase { - private int mIconRes; - private CharSequence mLabel; - private CharSequence mMessage; - private BaseListAdapter mAdapter; - private View mItemView; - - public BaseListItem() { - this(null); - } - - public BaseListItem(@Nullable CharSequence label) { - this(0, label); - } - - public BaseListItem(@DrawableRes int icon) { - this(icon, null); - } - - public BaseListItem(@DrawableRes int icon, @Nullable CharSequence label) { - this(icon, label, null); - } - - public BaseListItem(@DrawableRes int icon, @Nullable CharSequence label, @Nullable CharSequence message) { - mIconRes = icon; - mLabel = label; - mMessage = message; - } - - @DrawableRes - public int getIcon() { - return mIconRes; - } - - public void setIcon(@DrawableRes int icon) { - mIconRes = icon; - } - - public CharSequence getLabel() { - return mLabel; - } - - public void setLabel(@NonNull CharSequence label) { - mLabel = label; - } - - @Nullable - public CharSequence getMessage() { - return mMessage; - } - - public void setMessage(@NonNull CharSequence message) { - mMessage = message; - } - - @Nullable - public BaseListAdapter getAdapter() { - return mAdapter; - } - - public void setAdapter(@NonNull BaseListAdapter mMenuAdapter) { - mAdapter = mMenuAdapter; - } - - @Nullable - public View getItemView() { - return mItemView; - } - - public void setItemView(@NonNull View view) { - mItemView = view; - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListItemView.java b/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListItemView.java deleted file mode 100644 index 0db28ea2..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListItemView.java +++ /dev/null @@ -1,191 +0,0 @@ -package com.peacedesign.android.widget.list.base; - -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static android.widget.LinearLayout.VERTICAL; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.graphics.drawable.Drawable; -import android.text.TextUtils; -import android.view.ContextThemeWrapper; -import android.view.Gravity; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.LinearLayout; - -import androidx.annotation.DrawableRes; -import androidx.annotation.NonNull; -import androidx.appcompat.widget.AppCompatImageView; -import androidx.appcompat.widget.AppCompatTextView; - -import com.peacedesign.R; -import com.peacedesign.android.utils.Dimen; -import com.peacedesign.android.utils.ResUtils; - -@SuppressLint("ViewConstructor") -public class BaseListItemView extends FrameLayout { - private final BaseListItem mItem; - public LinearLayout mContainerView; - public AppCompatImageView mIconView; - public LinearLayout mLabelCont; - public AppCompatTextView mLabelView; - public AppCompatTextView mMessageView; - - public BaseListItemView(@NonNull Context ctx, @NonNull BaseListItem item) { - super(ctx); - mItem = item; - init(); - } - - private Context resolveItemStyle() { - return new ContextThemeWrapper(getContext(), R.style.SimpleListItemStyle); - } - - private Context resolveItemIconStyle() { - return new ContextThemeWrapper(getContext(), R.style.SimpleListItemIconStyle); - } - - private Context resolveItemLabelStyle() { - return new ContextThemeWrapper(getContext(), R.style.SimpleListItemLabelStyle); - } - - private Context resolveItemMassageStyle() { - return new ContextThemeWrapper(getContext(), R.style.SimpleListItemMessageStyle); - } - - private void init() { - initThis(); - initContainer(); - initIconView(); - initLabelCont(); - - measure(0, 0); - } - - private void initThis() { - updateDisability(); - } - - private void initContainer() { - mContainerView = new LinearLayout(resolveItemStyle()); - LayoutParams params = new LayoutParams(MATCH_PARENT, WRAP_CONTENT); - mContainerView.setLayoutParams(params); - - addView(mContainerView); - } - - private void initIconView() { - Drawable iconDrawable = ResUtils.getDrawable(getContext(), mItem.getIcon()); - if (iconDrawable == null) return; - - mIconView = new AppCompatImageView(resolveItemIconStyle()); - - int size = Dimen.dp2px(getContext(), 40); - LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(size, size); - params.gravity = Gravity.TOP; - mIconView.setLayoutParams(params); - - updateIcon(); - mContainerView.addView(mIconView); - } - - private void initLabelCont() { - mLabelCont = new LinearLayout(getContext()); - - LayoutParams params = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); - int marg = Dimen.dp2px(getContext(), 10); - params.setMargins(marg, 0, marg, 0); - params.gravity = Gravity.CENTER_VERTICAL; - mLabelCont.setLayoutParams(params); - mLabelCont.setOrientation(VERTICAL); - - initLabelView(); - initMessageView(); - - mContainerView.addView(mLabelCont); - } - - private void initLabelView() { - if (mLabelCont == null || mLabelView != null || TextUtils.isEmpty(mItem.getLabel())) return; - - mLabelView = new AppCompatTextView(resolveItemLabelStyle()); - - updateLabel(); - mLabelCont.addView(mLabelView); - } - - private void initMessageView() { - if (mLabelCont == null || mMessageView != null || TextUtils.isEmpty(mItem.getMessage())) { - return; - } - - mMessageView = new AppCompatTextView(resolveItemMassageStyle()); - - /*mMessageView.setTextColor(ContextCompat.getColor(getContext(), R.color.colorBodyTer1Text)); - mMessageView.setTextSize(Dimen.getDimenSp(getContext(), R.dimen.dmnCommonSizeTer)); - mMessageView.setMaxLines(2); - mMessageView.setEllipsize(TextUtils.TruncateAt.END);*/ - - updateDescription(); - - mLabelCont.addView(mMessageView); - } - - public void updateIcon() { - if (mIconView == null) { - initIconView(); - } else { - Drawable iconDrawable = ResUtils.getDrawable(getContext(), mItem.getIcon()); - if (iconDrawable != null) { - mIconView.setImageDrawable(iconDrawable); - } - } - } - - public void updateLabel() { - if (mLabelView == null) { - initMessageView(); - } else { - if (TextUtils.isEmpty(mItem.getLabel())) { - ((ViewGroup) mLabelView.getParent()).removeView(mLabelView); - } else if (mLabelView.getText() != mItem.getLabel()) { - mLabelView.setText(mItem.getLabel()); - } - } - } - - private void updateDescription() { - if (mMessageView == null) { - initMessageView(); - } else { - if (TextUtils.isEmpty(mItem.getMessage())) { - ((ViewGroup) mMessageView.getParent()).removeView(mMessageView); - } else if (mMessageView.getText() != mItem.getMessage()) { - mMessageView.setText(mItem.getMessage()); - } - } - } - - public void updateDisability() { - setEnabled(mItem.isEnabled()); - setAlpha(mItem.isEnabled() ? 1f : 0.5f); - } - - public void notifyForChange() { - updateIcon(); - updateLabel(); - updateDescription(); - updateDisability(); - setSelected(mItem.isSelected()); - } - - public void setItemBackground(Drawable background) { - mContainerView.setBackground(background); - } - - public void setItemBackground(@DrawableRes int backgroundRes) { - mContainerView.setBackgroundResource(backgroundRes); - } -} - diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListView.java b/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListView.java deleted file mode 100644 index 3837ea4f..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/list/base/BaseListView.java +++ /dev/null @@ -1,168 +0,0 @@ -package com.peacedesign.android.widget.list.base; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.widget.LinearLayout; -import android.widget.ScrollView; - -import androidx.annotation.AnimRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.peacedesign.android.utils.Dimen; - -@SuppressWarnings({"rawtypes", "unchecked"}) -@SuppressLint("UnknownNullness") -public class BaseListView extends ScrollView { - public static final int DEFAULT_ITEM_ANIMATOR = -1; - public ViewGroup mContainer; - private BaseListAdapter mAdapter; - private OnItemClickListener mOnItemClickListener; - private boolean mSupportsShowAnimation; - private int mItemAnimator = DEFAULT_ITEM_ANIMATOR; - - public BaseListView(@NonNull Context context) { - this(context, null); - } - - public BaseListView(Context context, AttributeSet attrs) { - this(context, attrs, 0); - } - - public BaseListView(Context context, AttributeSet attrs, int defStyleAttr) { - super(context, attrs, defStyleAttr); - init(context); - } - - private void init(Context context) { - initThis(); - initContainer(context); - } - - private void initThis() { - setVerticalScrollBarEnabled(false); - setClipToPadding(false); - } - - private void initContainer(Context context) { - mContainer = createItemsContainer(context); - - int padV = Dimen.dp2px(getContext(),10); - mContainer.setPadding(0, padV, 0, padV); - - addView(mContainer); - } - - @NonNull - protected ViewGroup createItemsContainer(@NonNull Context context) { - LinearLayout container = new LinearLayout(context); - container.setOrientation(LinearLayout.VERTICAL); - - - return container; - } - - @Nullable - public BaseListItem getItem(int position) { - if (mAdapter != null) { - return mAdapter.getItem(position); - } - return null; - } - - public int getItemsCount() { - if (mAdapter != null) { - return mAdapter.getItemsCount(); - } - return 0; - } - - protected void onCreate() { - create(); - } - - private void create() { - mContainer.removeAllViews(); - - if (mAdapter == null) { - return; - } - - setContainer(mContainer); - for (int i = 0, count = mAdapter.getItemsCount(); i < count; i++) { - onCreateItem(mAdapter.getItem(i), i); - } - } - - - protected void onCreateItem(BaseListItem item, int position) { - mAdapter.onCreateItem(item, position); - View itemView = item.getItemView(); - - if (mSupportsShowAnimation) { - initPendingItemAnimation(itemView, position); - } - } - - protected void setContainer(ViewGroup container) { - mAdapter.setContainer(container); - } - - public BaseListAdapter getAdapter() { - return mAdapter; - } - - public void setAdapter(BaseListAdapter adapter) { - mAdapter = adapter; - if (adapter != null) { - adapter.setListView(this); - } - onCreate(); - } - - private Animation resolveAnimation() { - if (mItemAnimator == 0) return null; - try { - return AnimationUtils.loadAnimation(getContext(), mItemAnimator); - } catch (Exception e) { - return AnimationUtils.loadAnimation(getContext(), android.R.anim.fade_in); - } - } - - private void initPendingItemAnimation(View itemView, int itemIndex) { - Animation animation = resolveAnimation(); - if (animation == null) return; - animation.setFillAfter(true); - animation.setFillBefore(true); - animation.setStartOffset(itemIndex * 40); - animation.setDuration(300); - itemView.post(() -> itemView.startAnimation(animation)); - } - - public void setOnItemClickListener(@NonNull OnItemClickListener listener) { - mOnItemClickListener = listener; - } - - protected void dispatchItemClick(@NonNull BaseListItem item) { - if (mOnItemClickListener != null) { - mOnItemClickListener.onItemClick(item); - } - } - - public void setSupportsShowAnimation(boolean b) { - mSupportsShowAnimation = b; - } - - public void setItemAnimator(@AnimRes int animationRes) { - mItemAnimator = animationRes; - } - - public interface OnItemClickListener { - void onItemClick(@NonNull BaseListItem item); - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/list/simple/SimpleListAdapter.java b/peacedesign/src/main/java/com/peacedesign/android/widget/list/simple/SimpleListAdapter.java deleted file mode 100644 index dbca649b..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/list/simple/SimpleListAdapter.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.peacedesign.android.widget.list.simple; - -import android.content.Context; - -import androidx.annotation.NonNull; - -import com.peacedesign.android.widget.list.base.BaseListAdapter; -import com.peacedesign.android.widget.list.base.BaseListItem; - -public class SimpleListAdapter extends BaseListAdapter { - public SimpleListAdapter(@NonNull Context context) { - super(context); - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/list/simple/SimpleListView.java b/peacedesign/src/main/java/com/peacedesign/android/widget/list/simple/SimpleListView.java deleted file mode 100644 index 351d1cc9..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/list/simple/SimpleListView.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.peacedesign.android.widget.list.simple; - -import android.content.Context; - -import androidx.annotation.NonNull; - -import com.peacedesign.android.widget.list.base.BaseListView; - -public class SimpleListView extends BaseListView { - public SimpleListView(@NonNull Context context) { - super(context); - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/list/singleChoice/SingleChoiceListAdapter.java b/peacedesign/src/main/java/com/peacedesign/android/widget/list/singleChoice/SingleChoiceListAdapter.java deleted file mode 100644 index 79da68d8..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/list/singleChoice/SingleChoiceListAdapter.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.peacedesign.android.widget.list.singleChoice; - -import android.content.Context; -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.NonNull; - -import com.peacedesign.android.widget.list.base.BaseListAdapter; -import com.peacedesign.android.widget.list.base.BaseListItem; -import com.peacedesign.android.widget.radio.PeaceRadioButton; -import com.peacedesign.android.widget.radio.PeaceRadioGroup; - -public class SingleChoiceListAdapter extends BaseListAdapter { - public SingleChoiceListAdapter(@NonNull Context context) { - super(context); - } - - @NonNull - @Override - protected View onCreateItemView(@NonNull BaseListItem item, int position) { - PeaceRadioButton radio = new PeaceRadioButton(getContext()); - radio.setTag(item); - radio.setTexts(item.getLabel(), item.getMessage()); - - if (item.getId() != View.NO_ID) { - radio.setId(item.getId()); - } - - return radio; - } - - @Override - protected void onAppendItemView(@NonNull ViewGroup container, @NonNull View itemView, int position) { - super.onAppendItemView(container, itemView, position); - if (getItem(position).isSelected() && container instanceof PeaceRadioGroup) { - ((PeaceRadioGroup) container).check(itemView.getId()); - } - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/list/singleChoice/SingleChoiceListView.java b/peacedesign/src/main/java/com/peacedesign/android/widget/list/singleChoice/SingleChoiceListView.java deleted file mode 100644 index 2b77e0b5..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/list/singleChoice/SingleChoiceListView.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.peacedesign.android.widget.list.singleChoice; - -import android.content.Context; -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.peacedesign.android.widget.list.base.BaseListItem; -import com.peacedesign.android.widget.list.base.BaseListView; -import com.peacedesign.android.widget.radio.PeaceRadioGroup; - -public class SingleChoiceListView extends BaseListView { - @Nullable - private OnItemClickListener mSelectionChangeListener; - - public SingleChoiceListView(@NonNull Context context) { - super(context); - } - - @NonNull - @Override - protected ViewGroup createItemsContainer(@NonNull Context context) { - PeaceRadioGroup radioGroup = new PeaceRadioGroup(context); - radioGroup.setOnCheckedChangedListener((button, checkedId) -> { - if (mSelectionChangeListener != null) { - BaseListItem item = (BaseListItem) button.getTag(); - if (item != null) { - mSelectionChangeListener.onItemClick(item); - } - } - }); - return radioGroup; - } - - @Override - public void setOnItemClickListener(@NonNull OnItemClickListener listener) { - mSelectionChangeListener = listener; - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/radio/PeaceRadioButton.java b/peacedesign/src/main/java/com/peacedesign/android/widget/radio/PeaceRadioButton.java deleted file mode 100644 index 3a596fcf..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/radio/PeaceRadioButton.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.peacedesign.android.widget.radio; - -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - -import android.annotation.SuppressLint; -import android.content.Context; -import android.util.AttributeSet; -import android.widget.CompoundButton; -import android.widget.RadioButton; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.content.ContextCompat; - -import com.peacedesign.R; -import com.peacedesign.android.widget.compound.PeaceCompoundButton; - -/** - *

    - * Radio buttons are normally used together in a - * {@link PeaceRadioGroup}. When several radio buttons live inside - * a radio group, checking one radio button unchecks all the others.

    - *

    - */ -public class PeaceRadioButton extends PeaceCompoundButton { - private RadioHelper mRadio; - - - public PeaceRadioButton(@NonNull Context context) { - this(context, null); - } - - public PeaceRadioButton(@NonNull Context context, @Nullable AttributeSet attrs) { - this(context, attrs, 0); - } - - public PeaceRadioButton(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - this(context, attrs, defStyleAttr, 0); - } - - public PeaceRadioButton(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { - super(context, attrs, defStyleAttr, defStyleRes); - } - - - @Override - protected void makeComponents() { - makeRadio(); - super.makeComponents(); - } - - private void makeRadio() { - mRadio = new RadioHelper(getContext()); - mRadio.setLayoutParams(new LayoutParams(WRAP_CONTENT, WRAP_CONTENT)); - } - - @NonNull - @Override - protected CompoundButton getCompoundButton() { - return mRadio; - } - - @SuppressLint("AppCompatCustomView") - class RadioHelper extends RadioButton { - public RadioHelper(@NonNull Context context) { - super(context); - setButtonDrawable(R.drawable.dr_radio); - setButtonTintList(ContextCompat.getColorStateList(context, R.color.radio_button_tint)); - setCompoundDrawablePadding(0); - setChecked(mInitialChecked); - setOnCheckedChangeListener(PeaceRadioButton.this); - } - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/radio/PeaceRadioGroup.java b/peacedesign/src/main/java/com/peacedesign/android/widget/radio/PeaceRadioGroup.java deleted file mode 100644 index 57e4ec5c..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/radio/PeaceRadioGroup.java +++ /dev/null @@ -1,239 +0,0 @@ -package com.peacedesign.android.widget.radio; - -import android.content.Context; -import android.content.res.TypedArray; -import android.util.AttributeSet; -import android.view.View; -import android.view.ViewGroup; -import android.widget.LinearLayout; - -import androidx.annotation.IdRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import com.peacedesign.R; -import com.peacedesign.android.utils.interfaceUtils.CompoundButtonGroup; - - -/** - * This layout can only contain children of instance {@link PeaceRadioGroup}. - * Any other child is ignored. - */ -public class PeaceRadioGroup extends LinearLayout implements CompoundButtonGroup { - private final int mInitialOrientation; - private int mCheckedId; - private boolean mProtectFromCheckedChange = false; - private OnCheckedChangeListener mOnCheckedChangeListener; - private BeforeCheckedChangeListener mBeforeCheckedChangeListener; - private PassThroughHierarchyChangeListener mPassThroughListener; - - public PeaceRadioGroup(@NonNull Context context) { - this(context, null); - } - - public PeaceRadioGroup(@NonNull Context context, @Nullable AttributeSet attrs) { - this(context, attrs, 0); - } - - public PeaceRadioGroup(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) { - super(context, attrs); - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PeaceRadioGroup, defStyleAttr, 0); - - mInitialOrientation = a.getInt(R.styleable.PeaceRadioGroup_android_orientation, VERTICAL); - mCheckedId = a.getResourceId(R.styleable.PeaceRadioGroup_android_checkedButton, View.NO_ID); - - a.recycle(); - - init(); - } - - private void init() { - super.setOrientation(mInitialOrientation); - mPassThroughListener = new PassThroughHierarchyChangeListener(); - super.setOnHierarchyChangeListener(mPassThroughListener); - } - - /** - * {@inheritDoc} - */ - @Override - public void setOnHierarchyChangeListener(@NonNull OnHierarchyChangeListener listener) { - mPassThroughListener.mOnHierarchyChangeListener = listener; - } - - /** - * {@inheritDoc} - */ - @Override - protected void onFinishInflate() { - super.onFinishInflate(); - if (mCheckedId != View.NO_ID) { - mProtectFromCheckedChange = true; - setCheckedForView(mCheckedId, true); - setCheckedId(mCheckedId); - mProtectFromCheckedChange = false; - } - } - - @Override - public void addView(@NonNull View child, int index, @NonNull ViewGroup.LayoutParams params) { - if (child instanceof PeaceRadioButton) { - final PeaceRadioButton button = (PeaceRadioButton) child; - button.setGroup(this); - if (button.isChecked()) { - mProtectFromCheckedChange = true; - if (mCheckedId != -1) setCheckedForView(mCheckedId, false); - setCheckedId(button.getId()); - mProtectFromCheckedChange = false; - } - super.addView(child, index, params); - } - } - - @Override - public void clearCheck() { - check(View.NO_ID); - } - - /** - * Check a button without invoking the {@link #mOnCheckedChangeListener} or {@link #mBeforeCheckedChangeListener}. - * - * @param id Id of the {@link PeaceRadioButton} to be checked. - */ - @Override - public void checkSansInvocation(@IdRes int id) { - mProtectFromCheckedChange = true; - check(id); - mProtectFromCheckedChange = false; - } - - @Override - public void checkAtPosition(int position) { - View view = getChildAt(position); - if (view == null) { - return; - } - - check(view.getId()); - } - - @Override - public void check(@IdRes int id) { - if (id != View.NO_ID && (id == mCheckedId)) return; - - if (mProtectFromCheckedChange || mBeforeCheckedChangeListener == null) { - checkInternal(id); - } else if (mBeforeCheckedChangeListener.beforeCheckedChanged(this, id)) { - checkInternal(id); - } - } - - private void checkInternal(@IdRes int id) { - setCheckedForView(mCheckedId, false); // uncheck previously checked button - setCheckedForView(id, true); // check the new button - setCheckedId(id); - } - - private void setCheckedForView(@IdRes int id, boolean checked) { - if (id == View.NO_ID) return; - - View radioButtonPro = findViewById(id); - if (radioButtonPro instanceof PeaceRadioButton) { - ((PeaceRadioButton) radioButtonPro).setChecked(checked); - } - } - - private void setCheckedId(@IdRes int id) { - mCheckedId = id; - if (!mProtectFromCheckedChange && mOnCheckedChangeListener != null) { - mOnCheckedChangeListener.onCheckedChanged(findViewById(mCheckedId), mCheckedId); - } - } - - /** - *

    Register a callback to be invoked when the checked radio button - * changes in this group.

    - * - * @param listener the callback to call on checked state change - */ - public void setOnCheckedChangedListener(@Nullable OnCheckedChangeListener listener) { - mOnCheckedChangeListener = listener; - } - - /** - *

    Register a callback to be invoked before the checked radio button - * changes in this group.

    - * - * @param listener the callback to call before checked state change - */ - public void setBeforeCheckedChangeListener(@Nullable BeforeCheckedChangeListener listener) { - mBeforeCheckedChangeListener = listener; - } - - public int getCheckedRadioId() { - return mCheckedId; - } - - public interface OnCheckedChangeListener { - /** - *

    Called when the checked radio button has changed. When the - * selection is cleared, checkedId is -1.

    - * - * @param button The newly checked radio button - * @param checkedId The unique identifier of the newly checked radio button - */ - void onCheckedChanged(PeaceRadioButton button, int checkedId); - } - - public interface BeforeCheckedChangeListener { - /** - *

    Called before the checked radio button has changed. When the - * selection is cleared, checkedId is -1.

    - * - * @param group the group in which the checked radio button is to be changed - * @param newButtonId the unique identifier of the newly checked radio button - * @return Return false to block check change. - */ - boolean beforeCheckedChanged(@NonNull PeaceRadioGroup group, @IdRes int newButtonId); - } - - /** - *

    A pass-through listener acts upon the events and dispatches them - * to another listener. This allows the table layout to set its own internal - * hierarchy change listener without preventing the user to setup his.

    - */ - class PassThroughHierarchyChangeListener implements OnHierarchyChangeListener { - OnHierarchyChangeListener mOnHierarchyChangeListener; - - /** - * {@inheritDoc} - */ - @Override - public void onChildViewAdded(View parent, View child) { - if (parent == PeaceRadioGroup.this && child instanceof PeaceRadioButton) { - int id = child.getId(); - // generates an id if it's missing - if (id == View.NO_ID) { - id = View.generateViewId(); - child.setId(id); - } - } - - if (mOnHierarchyChangeListener != null) { - mOnHierarchyChangeListener.onChildViewAdded(parent, child); - } - } - - /** - * {@inheritDoc} - */ - @Override - public void onChildViewRemoved(View parent, View child) { - if (parent == PeaceRadioGroup.this && child instanceof PeaceRadioButton) { - if (mOnHierarchyChangeListener != null) { - mOnHierarchyChangeListener.onChildViewRemoved(parent, child); - } - } - } - } -} diff --git a/peacedesign/src/main/res/values/styles.xml b/peacedesign/src/main/res/values/styles.xml index 1304aa9b..d2d3bc3d 100644 --- a/peacedesign/src/main/res/values/styles.xml +++ b/peacedesign/src/main/res/values/styles.xml @@ -169,31 +169,4 @@ @null @anim/popup_menu_exit - - - - - - - - - - - \ No newline at end of file From 49db645346505f12bdfefd832704f695c3e7bfec Mon Sep 17 00:00:00 2001 From: faisalcodes Date: Tue, 7 Mar 2023 04:10:15 +0530 Subject: [PATCH 3/6] Classes cleanup --- .../android/activities/ActivityReference.java | 1 - .../peacedesign/android/utils/ResUtils.java | 21 ------------------- .../android/utils/enums/ColorStyle.java | 5 ----- .../android/utils/enums/Direction.java | 8 ------- .../utils/interfaceUtils/Showable.java | 9 -------- .../android/utils/kotlin_utils/DBCursor.kt | 13 ------------ .../dialog/base/PeaceDialogController.java | 4 ++-- 7 files changed, 2 insertions(+), 59 deletions(-) delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/utils/ResUtils.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/utils/enums/ColorStyle.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/utils/enums/Direction.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Showable.java delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/utils/kotlin_utils/DBCursor.kt diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityReference.java b/app/src/main/java/com/quranapp/android/activities/ActivityReference.java index 0cd63894..23d61fc3 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityReference.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityReference.java @@ -22,7 +22,6 @@ import com.google.android.material.chip.Chip; import com.google.android.material.chip.ChipGroup; import com.peacedesign.android.utils.DrawableUtils; -import com.peacedesign.android.utils.ViewUtils; import com.quranapp.android.R; import com.quranapp.android.adapters.ADPReferenceVerses; import com.quranapp.android.components.ReferenceVerseItemModel; diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/ResUtils.java b/peacedesign/src/main/java/com/peacedesign/android/utils/ResUtils.java deleted file mode 100644 index 0043edda..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/ResUtils.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.peacedesign.android.utils; - -import android.content.Context; -import android.graphics.drawable.Drawable; - -import androidx.annotation.DrawableRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.appcompat.content.res.AppCompatResources; - -public class ResUtils { - @Nullable - public static Drawable getDrawable(@NonNull Context context, @DrawableRes int resId) { - try { - return AppCompatResources.getDrawable(context, resId); - } catch (Exception e) { - e.printStackTrace(); - return null; - } - } -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/enums/ColorStyle.java b/peacedesign/src/main/java/com/peacedesign/android/utils/enums/ColorStyle.java deleted file mode 100644 index 087e158d..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/enums/ColorStyle.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.peacedesign.android.utils.enums; - -public enum ColorStyle { - NONE, SUCCESS, DANGER, WARNING -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/enums/Direction.java b/peacedesign/src/main/java/com/peacedesign/android/utils/enums/Direction.java deleted file mode 100644 index e548aee4..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/enums/Direction.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.peacedesign.android.utils.enums; - -public enum Direction { - UP, DOWN, RIGHT, LEFT, - CW, CCW, - PLUS, MINUS, - HORIZONTAL, VERTICAL, -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Showable.java b/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Showable.java deleted file mode 100644 index b7ec42d8..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/interfaceUtils/Showable.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.peacedesign.android.utils.interfaceUtils; - -public interface Showable { - void show(); - - boolean isShowing(); - - void dismiss(); -} diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/kotlin_utils/DBCursor.kt b/peacedesign/src/main/java/com/peacedesign/android/utils/kotlin_utils/DBCursor.kt deleted file mode 100644 index 78188646..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/kotlin_utils/DBCursor.kt +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) Faisal Khan (https://github.com/faisalcodes) - * Created on 21/7/2022. - * All rights reserved. - */ - -package com.peacedesign.android.utils.kotlin_utils - -import android.database.Cursor - -fun Cursor.getStringOrDefault() { - -} \ No newline at end of file diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogController.java b/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogController.java index fe934b15..448db591 100644 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogController.java +++ b/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogController.java @@ -45,6 +45,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StyleRes; +import androidx.appcompat.content.res.AppCompatResources; import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.ContextCompat; import androidx.core.widget.NestedScrollView; @@ -52,7 +53,6 @@ import com.peacedesign.R; import com.peacedesign.android.utils.Dimen; -import com.peacedesign.android.utils.ResUtils; import com.peacedesign.android.utils.ViewUtils; import com.peacedesign.android.utils.WindowUtils; import com.peacedesign.android.widget.dialog.base.PeaceDialog.DialogButtonsDirection; @@ -172,7 +172,7 @@ protected void setupWindow() { WindowManager.LayoutParams windowParams = window.getAttributes(); // Get the resource id of rounded corner background if the dialog is to be displayed fullscreen. @DrawableRes int bgRes = mFullscreen ? R.drawable.dr_bg_peace_dialog : R.drawable.dr_bg_peace_dialog_cornered; - Drawable bgDrawable = ResUtils.getDrawable(mContext, bgRes); + Drawable bgDrawable = AppCompatResources.getDrawable(mContext, bgRes); window.setBackgroundDrawable(bgDrawable); // Set dialog to clip to its rounded cornered (if it is set) outline. window.getDecorView().setClipToOutline(true); From a8d0ac05c040c643264fafaf1785bc477deeba9b Mon Sep 17 00:00:00 2001 From: faisalcodes Date: Tue, 7 Mar 2023 04:24:43 +0530 Subject: [PATCH 4/6] Code cleanup and ktlint --- .../java/com/quranapp/android/QuranApp.kt | 4 +- .../android/activities/ActivityAbout.kt | 41 +- .../android/activities/ActivityBookmark.java | 9 +- .../android/activities/ActivityChapInfo.java | 5 +- .../android/activities/ActivityDownloads.java | 1 - .../android/activities/ActivityEditShare.java | 8 +- .../activities/ActivityOnboarding.java | 1 - .../android/activities/ActivityProphets.java | 28 +- .../activities/ActivityReadHistory.java | 7 +- .../android/activities/ActivityReader.java | 67 +- .../activities/ActivityReaderIndexPage.java | 1 - .../android/activities/ActivityReference.java | 12 +- .../android/activities/ActivitySearch.java | 16 +- .../android/activities/ActivityTafsir.java | 3 +- .../android/activities/ActivityTopics.java | 36 +- .../android/activities/MainActivity.java | 3 +- .../activities/ReaderPossessingActivity.java | 4 +- .../android/activities/base/BaseActivity.java | 20 +- .../activities/base/ResHelperActivity.java | 3 +- .../readerSettings/ActivitySettings.java | 6 +- .../activities/test/ActivityExperiment.java | 8 +- .../android/adapters/ADPBookmark.java | 13 +- .../android/adapters/ADPFeaturedQuran.java | 3 +- .../android/adapters/ADPProphets.java | 16 +- .../android/adapters/ADPQuickReference.java | 1 - .../android/adapters/ADPQuranPages.java | 14 +- .../android/adapters/ADPReadHistory.java | 22 +- .../quranapp/android/adapters/ADPReader.java | 25 +- .../android/adapters/ADPReferenceVerses.java | 21 +- .../quranapp/android/adapters/ADPTopics.java | 16 +- .../adapters/editor/ADPEditShareColors.java | 11 +- .../android/adapters/editor/ADPEditorBG.java | 6 +- .../android/adapters/editor/ADPEditorFG.java | 7 +- .../extended/PeaceBottomSheetMenuAdapter.kt | 2 +- .../adapters/quranIndex/ADPChaptersList.java | 6 +- .../adapters/quranIndex/ADPJuzList.java | 5 +- .../quranIndex/ADPJuzListChapterList.java | 6 +- .../quranIndex/ADPReaderIndexBase.java | 1 - .../adapters/recitation/ADPRecitations.java | 1 - .../adapters/search/ADPSearchSugg.java | 3 +- .../adapters/search/ADPVerseResults.java | 27 +- .../adapters/transl/ADPDownloadTransls.java | 7 +- .../adapters/transl/ADPTranslBase.java | 6 +- .../android/adapters/transl/ADPTransls.java | 8 +- .../adapters/utility/SpinnerAdapter2.java | 1 - .../utility/TopicFilterSpinnerAdapter.java | 5 +- .../com/quranapp/android/api/ApiConfig.kt | 5 +- .../com/quranapp/android/api/GithubApi.kt | 7 +- .../com/quranapp/android/api/JsonHelper.kt | 2 +- .../quranapp/android/api/RetrofitInstance.kt | 3 +- .../quranapp/android/api/models/AppUrls.kt | 4 +- .../api/models/AvailableRecitationsModel.kt | 2 +- .../models/RecitationsCommonUrlInfoModel.kt | 4 +- .../android/api/models/ResourcesVersions.kt | 4 +- .../quranapp/android/components/AppUpdate.kt | 2 +- .../android/components/AppUpdateInfo.kt | 2 +- .../android/components/ComponentBase.kt | 2 +- .../quranapp/android/components/NotifModel.kt | 2 +- .../components/ReferenceVerseItemModel.kt | 2 +- .../android/components/ReferenceVerseModel.kt | 2 +- .../components/bookmark/BookmarkModel.kt | 15 +- .../android/components/editor/EditorBG.java | 4 +- .../components/editor/EditorTemplate.java | 1 - .../android/components/quran/Quran.java | 1 - .../android/components/quran/QuranDua.kt | 6 +- .../android/components/quran/QuranMeta.java | 1 - .../components/quran/QuranProphet.java | 8 +- .../android/components/quran/QuranTopic.java | 14 +- .../quran/subcomponents/Chapter.java | 2 +- .../quran/subcomponents/Footnote.kt | 2 +- .../subcomponents/QuranTranslBookInfo.kt | 3 +- .../quran/subcomponents/Translation.kt | 2 +- .../components/quran/subcomponents/Verse.java | 1 - .../readHistory/ReadHistoryModel.kt | 16 +- .../reader/ReaderRecyclerItemModel.java | 3 +- .../components/recitation/RecitationModel.kt | 3 +- .../components/search/ChapterJumpModel.kt | 2 +- .../search/VerseResultCountModel.kt | 2 +- .../components/search/VerseResultModel.java | 1 - .../components/transls/TranslBaseModel.kt | 2 +- .../android/components/transls/TranslModel.kt | 2 +- .../components/transls/TranslTitleModel.kt | 2 +- .../transls/TranslationGroupModel.kt | 2 +- .../android/db/bookmark/BookmarkDBHelper.java | 34 +- .../db/readHistory/ReadHistoryDBHelper.java | 82 ++- .../db/recitation/RecitationDBHelper.java | 24 +- .../db/search/SearchHistoryDBHelper.java | 16 +- .../android/db/transl/QuranTranslDBHelper.kt | 61 +- .../quranapp/android/frags/BaseFragment.java | 3 +- .../android/frags/ResHelperFragment.java | 1 - .../android/frags/editshare/FragEditorBG.java | 4 +- .../frags/editshare/FragEditorBase.java | 4 +- .../frags/editshare/FragEditorColors.java | 4 +- .../android/frags/editshare/FragEditorFG.java | 4 +- .../frags/editshare/FragEditorOptions.java | 14 +- .../frags/editshare/FragEditorSize.java | 4 +- .../frags/editshare/FragEditorTransls.java | 10 +- .../quranapp/android/frags/main/FragMain.java | 6 +- .../frags/onboard/FragOnBoardRecitation.java | 8 +- .../frags/onboard/FragOnBoardThemes.java | 1 - .../frags/onboard/FragOnBoardTransls.java | 18 +- .../readerindex/BaseFragReaderIndex.java | 1 - .../readerindex/FragReaderIndexChapters.java | 4 +- .../frags/readerindex/FragReaderIndexJuz.java | 1 - .../android/frags/search/FragSearchResult.kt | 51 +- .../frags/search/FragSearchSuggestions.java | 12 +- .../frags/settings/FragSettingsBase.kt | 8 +- .../frags/settings/FragSettingsLanguage.kt | 22 +- .../frags/settings/FragSettingsMain.java | 48 +- .../frags/settings/FragSettingsRecitations.kt | 14 +- .../frags/settings/FragSettingsScripts.kt | 29 +- .../frags/settings/FragSettingsTransl.java | 26 +- .../FragSettingsTranslationsDownload.kt | 52 +- .../interfaceUtils/ActivityResultStarter.java | 1 - .../interfaceUtils/OnResultReadyCallback.kt | 2 +- .../reader_managers/ActionController.java | 5 +- .../android/reader_managers/Navigator.java | 17 +- .../android/reader_managers/ReaderParams.java | 10 +- .../reader_managers/ReaderVerseDecorator.kt | 9 +- .../android/suppliments/BookmarkViewer.java | 18 +- .../android/suppliments/IndexMenu.java | 14 +- .../suppliments/ReaderLayoutManager.java | 1 - .../recitation/RecitationMenu.java | 24 +- .../com/quranapp/android/utils/IntentUtils.kt | 2 +- .../java/com/quranapp/android/utils/Log.kt | 2 +- .../com/quranapp/android/utils/Logger.java | 6 +- .../android/utils/RVLazyLoadListener.java | 5 +- .../android/utils/SpeedInputStream.java | 4 +- .../quranapp/android/utils/app/AppActions.kt | 23 +- .../quranapp/android/utils/app/AppUtils.kt | 7 +- .../quranapp/android/utils/app/InfoUtils.kt | 8 +- .../android/utils/app/NotificationUtils.kt | 17 +- .../android/utils/app/RecitationManager.kt | 15 +- .../quranapp/android/utils/app/ThemeUtils.kt | 3 +- .../android/utils/app/UpdateManager.kt | 19 +- .../quranapp/android/utils/app/UrlsManager.kt | 18 +- .../chapterInfo/ChapterInfoJSInterface.java | 2 +- .../utils/chapterInfo/ChapterInfoUtils.java | 3 +- .../chapterInfo/ChapterInfoWebViewClient.java | 3 +- .../exceptions/CustomExceptionHandler.kt | 4 +- .../utils/extended/GapedItemDecoration.java | 1 - .../android/utils/extensions/Context.kt | 9 +- .../android/utils/extensions/DataType.kt | 2 +- .../android/utils/extensions/LayoutParams.kt | 2 +- .../android/utils/extensions/ScrollView.kt | 2 +- .../utils/extensions/SerializableExtra.kt | 7 +- .../android/utils/extensions/TextView.kt | 2 +- .../quranapp/android/utils/extensions/View.kt | 18 +- .../utils/gesture/HoverOpacityEffect.kt | 3 +- .../android/utils/gesture/HoverPushEffect.kt | 3 +- .../utils/gesture/HoverPushOpacityEffect.kt | 2 +- .../android/utils/others/ShortcutUtils.kt | 20 +- .../android/utils/quran/QuranConstants.kt | 2 +- .../android/utils/quran/QuranUtils.java | 687 ++++++++++++------ .../android/utils/quran/parser/ParserUtils.kt | 2 +- .../utils/quran/parser/QuranDuaParser.kt | 4 +- .../android/utils/quran/parser/QuranParser.kt | 22 +- .../quran/parser/QuranProphetParser.java | 5 +- .../android/utils/reader/QuranScriptUtils.kt | 19 +- .../utils/reader/ReferenceTagHandler.java | 12 +- .../android/utils/reader/TranslUtils.java | 11 +- .../reader/factory/QuranTranslFactory.kt | 99 ++- .../utils/reader/factory/ReaderFactory.kt | 25 +- .../quranPage/VerseArabicHighlightSpan.java | 4 +- .../RecitationNotificationCallbacks.java | 1 - .../RecitationNotificationService.java | 34 +- .../reader/recitation/RecitationParams.java | 1 - .../reader/recitation/RecitationUtils.java | 9 +- .../KFQPCScriptFontsDownloadReceiver.kt | 2 +- .../utils/receivers/NetworkStateReceiver.java | 1 - .../utils/receivers/ReceiverUtils.java | 7 +- .../android/utils/receivers/VOTDReceiver.java | 65 +- .../KFQPCScriptFontsDownloadService.kt | 59 +- .../services/TranslationDownloadService.kt | 59 +- .../android/utils/sharedPrefs/SPAppActions.kt | 18 +- .../android/utils/sharedPrefs/SPAppConfigs.kt | 7 +- .../android/utils/sharedPrefs/SPLog.kt | 3 +- .../android/utils/sharedPrefs/SPReader.java | 9 +- .../simplified/SimpleSeekbarChangeListener.kt | 2 +- .../simplified/SimpleTabSelectorListener.kt | 2 +- .../utils/simplified/SimpleTextWatcher.kt | 2 +- .../android/utils/tafsir/TafsirUtils.java | 1 - .../utils/tafsir/TafsirWebViewClient.java | 20 +- .../thread/runner/CallableTaskRunner.java | 1 - .../utils/thread/runner/MultiTaskRunner.java | 1 - .../thread/runner/RunnableTaskRunner.java | 1 - .../utils/thread/tasks/BaseCallableTask.java | 3 +- .../utils/thread/tasks/BaseRunnableTask.java | 3 +- .../com/quranapp/android/utils/univ/Codes.kt | 2 +- .../quranapp/android/utils/univ/DBUtils.kt | 2 +- .../android/utils/univ/FileUtils.java | 12 +- .../com/quranapp/android/utils/univ/Keys.kt | 2 +- .../android/utils/univ/PopupWindow2.java | 1 - .../android/utils/univ/RegexPattern.kt | 6 +- .../utils/univ/RelativePopupWindow.java | 65 +- .../quranapp/android/utils/univ/ResUtils.kt | 2 +- .../android/utils/univ/SpannableFactory.kt | 6 +- .../android/utils/univ/StringUtils.java | 45 +- .../android/utils/verse/VerseUtils.java | 6 +- .../android/utils/votd/VOTDUtils.java | 1 - .../quranapp/android/vh/search/VHJuzJump.kt | 2 +- .../android/vh/search/VHSearchResultBase.kt | 7 +- .../android/vh/search/VHVerseJump.java | 9 +- .../quranapp/android/views/BoldHeader.java | 11 +- .../quranapp/android/views/CardMessage.java | 9 +- .../com/quranapp/android/views/VOTDView.java | 6 +- .../android/views/helper/CheckBox2.java | 1 - .../android/views/helper/Edittext.java | 1 - .../views/helper/NpaGridLayoutManager.java | 1 - .../android/views/helper/RecyclerView2.java | 1 - .../android/views/helper/Spinner2.java | 3 +- .../android/views/helper/TabLayout2.java | 1 - .../views/homepage/FeatureProphetsLayout.java | 1 - .../views/homepage/FeatureReadingLayout.java | 1 - .../views/homepage/FeatureTopicsLayout.java | 1 - .../HomepageCollectionLayoutBase.java | 11 +- .../views/homepage/ReadHistoryLayout.java | 8 +- .../android/views/reader/BismillahView.java | 4 +- .../android/views/reader/ChapterIcon.java | 1 - .../views/reader/ChapterInfoCardView.java | 6 +- .../views/reader/ChapterTitleView.java | 2 +- .../views/reader/QuranPageHeadView.java | 5 +- .../android/views/reader/QuranPageView.java | 18 +- .../android/views/reader/ReaderFooter.java | 19 +- .../android/views/reader/ReaderHeader.java | 36 +- .../views/reader/RecitationPlayer.java | 26 +- .../android/views/reader/VerseView.java | 1 - .../reader/chapterSpinner/ChapterSpinner.java | 1 - .../chapterSpinner/ChapterSpinnerAdapter.java | 1 - .../chapterSpinner/ChapterSpinnerItem.kt | 2 +- .../reader/dialogs/FootnotePresenter.java | 6 +- .../views/reader/dialogs/QuickReference.java | 8 +- .../reader/dialogs/VerseOptionsDialog.java | 4 +- .../reader/dialogs/VerseReminderDialog.java | 10 +- .../reader/dialogs/VerseShareDialog.java | 12 +- .../views/reader/juzSpinner/JuzSpinner.java | 3 +- .../reader/juzSpinner/JuzSpinnerAdapter.java | 6 +- .../views/reader/juzSpinner/JuzSpinnerItem.kt | 2 +- .../reader/sheet/JuzChapterVerseSheet.kt | 4 +- .../views/reader/spinner/ReaderSpinner.java | 6 +- .../reader/spinner/ReaderSpinnerAdapter.java | 4 +- .../views/reader/spinner/ReaderSpinnerItem.kt | 2 +- .../views/reader/swipe/BaseViewSwipeTo.java | 10 +- .../views/reader/swipe/ViewSwipeToNext.java | 5 +- .../reader/swipe/ViewSwipeToPrevious.java | 5 +- .../reader/verseSpinner/VerseSpinner.java | 9 +- .../verseSpinner/VerseSpinnerAdapter.java | 6 +- .../reader/verseSpinner/VerseSpinnerItem.kt | 2 +- .../adapters/ADPJuzChapterVerseBase.kt | 2 +- .../adapters/ADPsJuzChapterVerse.kt | 24 +- .../JuzChapterVerseSelector.kt | 67 +- .../viewholders/VHsJuzChapterVerse.kt | 17 +- .../android/widgets/AutoResizeTextView.java | 41 +- .../android/widgets/ColorPreviewerView.java | 4 +- .../android/widgets/IconedTextView.java | 4 +- .../com/quranapp/android/widgets/PageAlert.kt | 15 +- .../widgets/bottomSheet/PeaceBottomSheet.kt | 26 +- .../bottomSheet/PeaceBottomSheetDialog.kt | 10 +- .../bottomSheet/PeaceBottomSheetMenu.kt | 4 +- .../bottomSheet/PeaceBottomSheetParams.kt | 3 +- .../widgets/chapterCard/ChapterCard.java | 10 +- .../widgets/chapterCard/ChapterCardJuz.java | 9 +- .../chapterCard/ChapterCardWithoutIcon.java | 1 - .../android/widgets/checkbox/PeaceCheckBox.kt | 21 +- .../widgets/checkbox/PeaceCheckboxGroup.kt | 3 +- .../widgets/compound/PeaceCompoundButton.kt | 70 +- .../compound/PeaceCompoundButtonGroup.kt | 3 +- .../dialog/loader/PeaceProgressDialog.kt | 7 +- .../android/widgets/editor/EditorBGView.java | 7 +- .../android/widgets/editor/EditorFGView.java | 4 +- .../widgets/editor/EditorSelectImageView.java | 4 +- .../widgets/form/PeaceFormInputField.java | 4 +- .../widgets/form/PeaceFormSelectField.java | 9 +- .../widgets/list/base/BaseListAdapter.kt | 5 +- .../android/widgets/list/base/BaseListItem.kt | 4 +- .../widgets/list/base/BaseListItemView.kt | 7 +- .../android/widgets/list/base/BaseListView.kt | 16 +- .../singleChoice/SingleChoiceListAdapter.kt | 3 +- .../list/singleChoice/SingleChoiceListView.kt | 2 +- .../android/widgets/radio/PeaceRadioButton.kt | 10 +- .../android/widgets/radio/PeaceRadioGroup.kt | 6 +- .../android/widgets/tablayout/BottomTab.java | 4 +- .../widgets/tablayout/BottomTabLayout.java | 13 +- .../widgets/tablayout/BottomTabView.java | 26 +- .../android/utils/anim/DimensionAnimator.kt | 27 +- 285 files changed, 2078 insertions(+), 1600 deletions(-) diff --git a/app/src/main/java/com/quranapp/android/QuranApp.kt b/app/src/main/java/com/quranapp/android/QuranApp.kt index ed16f36b..1641ea37 100644 --- a/app/src/main/java/com/quranapp/android/QuranApp.kt +++ b/app/src/main/java/com/quranapp/android/QuranApp.kt @@ -5,9 +5,9 @@ import android.content.Context import android.os.Build import android.webkit.WebView import androidx.appcompat.app.AppCompatDelegate -import com.quranapp.android.utils.exceptions.CustomExceptionHandler import com.quranapp.android.utils.app.NotificationUtils import com.quranapp.android.utils.app.ThemeUtils +import com.quranapp.android.utils.exceptions.CustomExceptionHandler class QuranApp : Application() { override fun attachBaseContext(base: Context) { @@ -35,4 +35,4 @@ class QuranApp : Application() { // Handler for uncaught exceptions Thread.setDefaultUncaughtExceptionHandler(CustomExceptionHandler(this)) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityAbout.kt b/app/src/main/java/com/quranapp/android/activities/ActivityAbout.kt index 5cce65dc..20145224 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityAbout.kt +++ b/app/src/main/java/com/quranapp/android/activities/ActivityAbout.kt @@ -70,7 +70,9 @@ class ActivityAbout : BaseActivity() { setup( binding, LytReaderSettingsItemBinding.inflate(layoutInflater).apply { - root.setOnClickListener { AppBridge.newOpener(it.context).browseLink(ApiConfig.GITHUB_REPOSITORY_URL) } + root.setOnClickListener { + AppBridge.newOpener(it.context).browseLink(ApiConfig.GITHUB_REPOSITORY_URL) + } }, R.drawable.icon_github, R.string.github @@ -102,18 +104,36 @@ class ActivityAbout : BaseActivity() { parent.container.addView(binding.root) } - private fun prepareTitle(binding: LytReaderSettingsItemBinding, titleRes: Int, subtitle: String?) { + private fun prepareTitle( + binding: LytReaderSettingsItemBinding, + titleRes: Int, + subtitle: String? + ) { val ssb = SpannableStringBuilder() - ssb.append(SpannableString(str(titleRes)).apply { - setSpan(StyleSpan(Typeface.BOLD), 0, length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) - }) + ssb.append( + SpannableString(str(titleRes)).apply { + setSpan(StyleSpan(Typeface.BOLD), 0, length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) + } + ) if (!subtitle.isNullOrEmpty()) { - ssb.append("\n").append(SpannableString(subtitle).apply { - setSpan(AbsoluteSizeSpan(dimen(R.dimen.dmnCommonSize2)), 0, length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) - setSpan(ForegroundColorSpan(color(R.color.colorText3)), 0, length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) - }) + ssb.append("\n").append( + SpannableString(subtitle).apply { + setSpan( + AbsoluteSizeSpan(dimen(R.dimen.dmnCommonSize2)), + 0, + length, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + setSpan( + ForegroundColorSpan(color(R.color.colorText3)), + 0, + length, + Spanned.SPAN_EXCLUSIVE_EXCLUSIVE + ) + } + ) } binding.launcher.text = ssb @@ -127,11 +147,10 @@ class ActivityAbout : BaseActivity() { textView.setDrawables(drawable(startIconRes), null, chevronRight, null) } - private fun setupLauncherParams(launcherView: View) { launcherView.layoutParams = LinearLayout.LayoutParams(MATCH_PARENT, WRAP_CONTENT).apply { updateMarginVertical(dp2px(5f)) updateMarginHorizontal(dp2px(10f)) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityBookmark.java b/app/src/main/java/com/quranapp/android/activities/ActivityBookmark.java index cb240d39..5b9a4aaa 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityBookmark.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityBookmark.java @@ -4,7 +4,6 @@ import android.content.Intent; import android.os.Bundle; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.GridLayoutManager; @@ -137,8 +136,9 @@ public void onRightIconClick() { private void deleteAllWithCheckpoint() { boolean isSelecting = mAdapter != null && mAdapter.mIsSelecting && !mAdapter.mSelectedModels.isEmpty(); - String title = isSelecting ? getString(R.string.strTitleBookmarkDeleteCount, mAdapter.mSelectedModels.size()) : getString( - R.string.strTitleBookmarkDeleteAll); + String title = isSelecting ? getString(R.string.strTitleBookmarkDeleteCount, + mAdapter.mSelectedModels.size()) : getString( + R.string.strTitleBookmarkDeleteAll); int dec = isSelecting ? R.string.strMsgBookmarkDeleteSelected : R.string.strMsgBookmarkDeleteAll; int labelNeg = isSelecting ? R.string.strLabelRemove : R.string.strLabelRemoveAll; @@ -229,7 +229,8 @@ public void onView(BookmarkModel model, int position) { } public void onOpen(BookmarkModel model) { - Intent intent = ReaderFactory.prepareVerseRangeIntent(model.getChapterNo(), model.getFromVerseNo(), model.getToVerseNo()); + Intent intent = ReaderFactory.prepareVerseRangeIntent(model.getChapterNo(), model.getFromVerseNo(), + model.getToVerseNo()); intent.setClass(this, ActivityReader.class); startActivity(intent); } diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityChapInfo.java b/app/src/main/java/com/quranapp/android/activities/ActivityChapInfo.java index 1c12c35d..21bd5699 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityChapInfo.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityChapInfo.java @@ -10,20 +10,19 @@ import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.quranapp.android.utils.exceptions.NoInternetException; -import com.quranapp.android.utils.Log; import com.peacedesign.android.utils.WindowUtils; import com.quranapp.android.R; import com.quranapp.android.components.quran.QuranMeta; import com.quranapp.android.databinding.ActivityChapterInfoBinding; +import com.quranapp.android.utils.Log; import com.quranapp.android.utils.Logger; import com.quranapp.android.utils.chapterInfo.ChapterInfoJSInterface; import com.quranapp.android.utils.chapterInfo.ChapterInfoUtils; import com.quranapp.android.utils.chapterInfo.ChapterInfoWebViewClient; +import com.quranapp.android.utils.exceptions.NoInternetException; import com.quranapp.android.utils.receivers.NetworkStateReceiver; import com.quranapp.android.utils.thread.runner.CallableTaskRunner; import com.quranapp.android.utils.thread.tasks.BaseCallableTask; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityDownloads.java b/app/src/main/java/com/quranapp/android/activities/ActivityDownloads.java index 5ab7e8f6..a9b24561 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityDownloads.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityDownloads.java @@ -6,7 +6,6 @@ import android.os.Bundle; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityEditShare.java b/app/src/main/java/com/quranapp/android/activities/ActivityEditShare.java index 3fc3a4fd..64b46e73 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityEditShare.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityEditShare.java @@ -1,9 +1,5 @@ package com.quranapp.android.activities; -import static com.quranapp.android.components.editor.VerseEditor.BG_ALPHA_DEFAULT; -import static com.quranapp.android.components.editor.VerseEditor.BG_TYPE_COLORS; -import static com.quranapp.android.components.editor.VerseEditor.BG_TYPE_IMAGE; - import android.annotation.SuppressLint; import android.content.Intent; import android.graphics.Bitmap; @@ -22,12 +18,14 @@ import android.view.View; import android.widget.RelativeLayout; import android.widget.Toast; - import androidx.activity.result.ActivityResult; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.viewpager2.widget.ViewPager2; +import static com.quranapp.android.components.editor.VerseEditor.BG_ALPHA_DEFAULT; +import static com.quranapp.android.components.editor.VerseEditor.BG_TYPE_COLORS; +import static com.quranapp.android.components.editor.VerseEditor.BG_TYPE_IMAGE; import com.peacedesign.android.utils.AppBridge; import com.peacedesign.android.utils.ColorUtils; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityOnboarding.java b/app/src/main/java/com/quranapp/android/activities/ActivityOnboarding.java index b299da82..aa3b9b88 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityOnboarding.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityOnboarding.java @@ -7,7 +7,6 @@ import android.os.Bundle; import android.text.TextUtils; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatDelegate; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityProphets.java b/app/src/main/java/com/quranapp/android/activities/ActivityProphets.java index 33f724a4..4b0c4c61 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityProphets.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityProphets.java @@ -4,13 +4,6 @@ package com.quranapp.android.activities; -import static android.view.View.GONE; -import static android.view.View.VISIBLE; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static java.util.regex.Pattern.CASE_INSENSITIVE; -import static java.util.regex.Pattern.DOTALL; -import static java.util.regex.Pattern.LITERAL; - import android.content.Context; import android.os.Bundle; import android.os.Handler; @@ -23,11 +16,16 @@ import android.widget.AdapterView; import android.widget.EditText; import android.widget.Toast; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.LinearLayoutManager; +import static java.util.regex.Pattern.CASE_INSENSITIVE; +import static java.util.regex.Pattern.DOTALL; +import static java.util.regex.Pattern.LITERAL; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import com.quranapp.android.R; import com.quranapp.android.activities.base.BaseActivity; @@ -119,10 +117,10 @@ private void initHeader(LytTopicsActivityHeaderBinding header) { EditText searchBox = header.searchContainer.searchBox; searchBox.setPaddingRelative( - dp2px(5), - searchBox.getPaddingTop(), - searchBox.getPaddingEnd(), - searchBox.getPaddingBottom() + dp2px(5), + searchBox.getPaddingTop(), + searchBox.getPaddingEnd(), + searchBox.getPaddingBottom() ); header.searchContainer.btnClear.setOnClickListener(v -> header.searchContainer.searchBox.setText(null)); searchBox.setOnFocusChangeListener((v, hasFocus) -> { @@ -144,7 +142,8 @@ private void initProphetFilters(Spinner2 spinner) { } int itemLayoutRes = R.layout.lyt_topic_filter_spinner_item; - TopicFilterSpinnerAdapter adapter = new TopicFilterSpinnerAdapter(spinner.getContext(), itemLayoutRes, R.id.text, filters); + TopicFilterSpinnerAdapter adapter = new TopicFilterSpinnerAdapter(spinner.getContext(), itemLayoutRes, + R.id.text, filters); spinner.setAdapterWithDynamicWidth(adapter); // running it twice before and after setting listener to prevent it to be invoked for the first time. @@ -194,7 +193,8 @@ private void toggleSearchBox(LytTopicsActivityHeaderBinding header, boolean show if (showSearch) { searchBox.requestFocus(); - InputMethodManager imm = (InputMethodManager) searchBox.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + InputMethodManager imm = (InputMethodManager) searchBox.getContext().getSystemService( + Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); } else { searchBox.clearFocus(); diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityReadHistory.java b/app/src/main/java/com/quranapp/android/activities/ActivityReadHistory.java index c1e2493d..04e79919 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityReadHistory.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityReadHistory.java @@ -1,15 +1,13 @@ package com.quranapp.android.activities; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; - import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.GridLayoutManager; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import com.peacedesign.android.utils.WindowUtils; import com.quranapp.android.R; @@ -119,7 +117,8 @@ private void setupAdapter(List models) { } public void onOpen(ReadHistoryModel model) { - Intent intent = ReaderFactory.prepareVerseRangeIntent(model.getChapterNo(), model.getFromVerseNo(), model.getToVerseNo()); + Intent intent = ReaderFactory.prepareVerseRangeIntent(model.getChapterNo(), model.getFromVerseNo(), + model.getToVerseNo()); intent.setClass(this, ActivityReader.class); startActivity(intent); } diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityReader.java b/app/src/main/java/com/quranapp/android/activities/ActivityReader.java index 3a00e7e5..4b8c025e 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityReader.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityReader.java @@ -1,13 +1,25 @@ package com.quranapp.android.activities; -import static android.view.View.GONE; -import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; -import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; -import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_STABLE; -import static android.view.View.VISIBLE; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION; -import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; +import android.annotation.SuppressLint; +import android.content.Intent; +import android.content.IntentFilter; +import android.graphics.Color; +import android.net.Uri; +import android.os.Bundle; +import android.os.Handler; +import android.text.SpannableStringBuilder; +import android.view.View; +import android.view.Window; +import android.widget.LinearLayout; +import android.widget.Toast; +import androidx.activity.result.ActivityResult; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; +import androidx.core.view.WindowInsetsControllerCompat; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import static com.quranapp.android.components.quran.QuranMeta.canShowBismillah; import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_CHAPTER; import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; @@ -33,28 +45,14 @@ import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; import static com.quranapp.android.utils.univ.Keys.READER_KEY_VERSES; import static com.quranapp.android.utils.univ.RegexPattern.VERSE_RANGE_PATTERN; - -import android.annotation.SuppressLint; -import android.content.Intent; -import android.content.IntentFilter; -import android.graphics.Color; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.text.SpannableStringBuilder; -import android.view.View; -import android.view.Window; -import android.widget.LinearLayout; -import android.widget.Toast; - -import androidx.activity.result.ActivityResult; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.view.ViewCompat; -import androidx.core.view.WindowInsetsCompat; -import androidx.core.view.WindowInsetsControllerCompat; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; +import static android.view.View.GONE; +import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN; +import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION; +import static android.view.View.SYSTEM_UI_FLAG_LAYOUT_STABLE; +import static android.view.View.VISIBLE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION; +import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; import com.quranapp.android.R; import com.quranapp.android.adapters.ADPQuranPages; @@ -475,10 +473,13 @@ private void initQuran(Intent intent) { } switch (mReaderParams.readType) { - case READER_READ_TYPE_VERSES: initVerseRange(initialChapter, initVerses); break; - case READER_READ_TYPE_JUZ: initJuz(initJuzNo); break; + case READER_READ_TYPE_VERSES: initVerseRange(initialChapter, initVerses); + break; + case READER_READ_TYPE_JUZ: initJuz(initJuzNo); + break; case READER_READ_TYPE_CHAPTER: - default: initChapter(initialChapter); break; + default: initChapter(initialChapter); + break; } } diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityReaderIndexPage.java b/app/src/main/java/com/quranapp/android/activities/ActivityReaderIndexPage.java index 547aa1c5..9ec31e0e 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityReaderIndexPage.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityReaderIndexPage.java @@ -4,7 +4,6 @@ import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityReference.java b/app/src/main/java/com/quranapp/android/activities/ActivityReference.java index 23d61fc3..059e9e41 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityReference.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityReference.java @@ -1,11 +1,5 @@ package com.quranapp.android.activities; -import static android.view.View.GONE; -import static android.view.View.VISIBLE; -import static com.quranapp.android.adapters.ADPReferenceVerses.VIEWTYPE_DESCRIPTION; -import static com.quranapp.android.adapters.ADPReferenceVerses.VIEWTYPE_TITLE; -import static com.quranapp.android.adapters.ADPReferenceVerses.VIEWTYPE_VERSE; - import android.content.Context; import android.content.Intent; import android.graphics.drawable.Drawable; @@ -13,11 +7,15 @@ import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import static com.quranapp.android.adapters.ADPReferenceVerses.VIEWTYPE_DESCRIPTION; +import static com.quranapp.android.adapters.ADPReferenceVerses.VIEWTYPE_TITLE; +import static com.quranapp.android.adapters.ADPReferenceVerses.VIEWTYPE_VERSE; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; import com.google.android.material.chip.Chip; import com.google.android.material.chip.ChipGroup; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivitySearch.java b/app/src/main/java/com/quranapp/android/activities/ActivitySearch.java index 0bc7c7ea..567769d1 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivitySearch.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivitySearch.java @@ -1,13 +1,5 @@ package com.quranapp.android.activities; -import static android.view.View.FOCUS_DOWN; -import static android.view.View.GONE; -import static android.view.View.VISIBLE; -import static com.quranapp.android.utils.univ.RegexPattern.CHAPTER_OR_JUZ_PATTERN; -import static com.quranapp.android.utils.univ.RegexPattern.VERSE_JUMP_PATTERN; -import static com.quranapp.android.utils.univ.RegexPattern.VERSE_RANGE_JUMP_PATTERN; -import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_LEFT; - import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; @@ -23,12 +15,18 @@ import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; - import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentTransaction; +import static com.quranapp.android.utils.univ.RegexPattern.CHAPTER_OR_JUZ_PATTERN; +import static com.quranapp.android.utils.univ.RegexPattern.VERSE_JUMP_PATTERN; +import static com.quranapp.android.utils.univ.RegexPattern.VERSE_RANGE_JUMP_PATTERN; +import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_LEFT; +import static android.view.View.FOCUS_DOWN; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; import com.peacedesign.android.utils.DrawableUtils; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityTafsir.java b/app/src/main/java/com/quranapp/android/activities/ActivityTafsir.java index 9633a426..249c9813 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityTafsir.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityTafsir.java @@ -11,16 +11,15 @@ import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.quranapp.android.utils.Log; import com.peacedesign.android.utils.WindowUtils; import com.quranapp.android.R; import com.quranapp.android.components.quran.Quran; import com.quranapp.android.components.quran.QuranMeta; import com.quranapp.android.databinding.ActivityChapterInfoBinding; +import com.quranapp.android.utils.Log; import com.quranapp.android.utils.exceptions.NoInternetException; import com.quranapp.android.utils.receivers.NetworkStateReceiver; import com.quranapp.android.utils.tafsir.TafsirJSInterface; diff --git a/app/src/main/java/com/quranapp/android/activities/ActivityTopics.java b/app/src/main/java/com/quranapp/android/activities/ActivityTopics.java index 4aaae1ee..975bd626 100644 --- a/app/src/main/java/com/quranapp/android/activities/ActivityTopics.java +++ b/app/src/main/java/com/quranapp/android/activities/ActivityTopics.java @@ -4,13 +4,6 @@ package com.quranapp.android.activities; -import static android.view.View.GONE; -import static android.view.View.VISIBLE; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static java.util.regex.Pattern.CASE_INSENSITIVE; -import static java.util.regex.Pattern.DOTALL; -import static java.util.regex.Pattern.LITERAL; - import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.content.Context; @@ -25,11 +18,16 @@ import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.EditText; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.GridLayoutManager; +import static java.util.regex.Pattern.CASE_INSENSITIVE; +import static java.util.regex.Pattern.DOTALL; +import static java.util.regex.Pattern.LITERAL; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import com.google.android.material.chip.Chip; import com.google.android.material.chip.ChipGroup; @@ -48,9 +46,9 @@ import com.quranapp.android.databinding.LytTopicsActivityHeaderBinding; import com.quranapp.android.utils.extended.GapedItemDecoration; import com.quranapp.android.utils.extensions.ContextKt; +import com.quranapp.android.utils.simplified.SimpleTextWatcher; import com.quranapp.android.utils.thread.runner.RunnableTaskRunner; import com.quranapp.android.utils.thread.tasks.BaseRunnableTask; -import com.quranapp.android.utils.simplified.SimpleTextWatcher; import com.quranapp.android.views.helper.Spinner2; import java.util.ArrayList; @@ -171,10 +169,10 @@ private void initHeader(LytTopicsActivityHeaderBinding header) { EditText searchBox = header.searchContainer.searchBox; searchBox.setPaddingRelative( - dp2px(5), - searchBox.getPaddingTop(), - searchBox.getPaddingEnd(), - searchBox.getPaddingBottom() + dp2px(5), + searchBox.getPaddingTop(), + searchBox.getPaddingEnd(), + searchBox.getPaddingBottom() ); header.searchContainer.btnClear.setOnClickListener(v -> header.searchContainer.searchBox.setText(null)); searchBox.setOnFocusChangeListener((v, hasFocus) -> { @@ -198,7 +196,8 @@ private void initTopicFilters(Spinner2 spinner) { } int itemLayoutRes = R.layout.lyt_topic_filter_spinner_item; - TopicFilterSpinnerAdapter adapter = new TopicFilterSpinnerAdapter(spinner.getContext(), itemLayoutRes, R.id.text, filters); + TopicFilterSpinnerAdapter adapter = new TopicFilterSpinnerAdapter(spinner.getContext(), itemLayoutRes, + R.id.text, filters); spinner.setAdapterWithDynamicWidth(adapter); spinner.setOnItemSelectedListener(new Spinner2.SimplerSpinnerItemSelectListener() { @@ -267,7 +266,8 @@ private void toggleSearchBox(LytTopicsActivityHeaderBinding header, boolean show if (showSearch) { searchBox.requestFocus(); - InputMethodManager imm = (InputMethodManager) searchBox.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + InputMethodManager imm = (InputMethodManager) searchBox.getContext().getSystemService( + Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); } else { searchBox.clearFocus(); @@ -284,7 +284,8 @@ private void setupAlphabetsVisibility(boolean hide) { } int dimen = ContextKt.getDimenPx(alphabetsContainer.getContext(), R.dimen.dmnChipGroupHeight); - DimensionAnimator animator = DimensionAnimator.Companion.ofHeight(alphabetsContainer, hide ? dimen : 0, hide ? 0 : dimen); + DimensionAnimator animator = DimensionAnimator.Companion.ofHeight(alphabetsContainer, hide ? dimen : 0, + hide ? 0 : dimen); animator.setDuration(70); if (hide) { @@ -303,7 +304,8 @@ public void onAnimationEnd(Animator animation) { } private void initAlphabets() { - mAlphabetsGroupBinding = LytChipgroupBinding.inflate(LayoutInflater.from(this), mBinding.header.getRoot(), true); + mAlphabetsGroupBinding = LytChipgroupBinding.inflate(LayoutInflater.from(this), mBinding.header.getRoot(), + true); initAlphabetsAsync(mAlphabetsGroupBinding); } diff --git a/app/src/main/java/com/quranapp/android/activities/MainActivity.java b/app/src/main/java/com/quranapp/android/activities/MainActivity.java index a8c0532c..8ce44390 100644 --- a/app/src/main/java/com/quranapp/android/activities/MainActivity.java +++ b/app/src/main/java/com/quranapp/android/activities/MainActivity.java @@ -2,7 +2,6 @@ import android.os.Bundle; import android.view.View; - import androidx.annotation.DrawableRes; import androidx.annotation.IdRes; import androidx.annotation.NonNull; @@ -147,7 +146,7 @@ private void initBottomNavigation() { BottomTabLayout bottomTabLayout = mBinding.bottomTabLayout; bottomTabLayout.setTabs(getBottomTabs()); bottomTabLayout.setKingTab(new BottomTab(R.drawable.quran_kareem), - kingTab -> launchActivity(ActivityReaderIndexPage.class)); + kingTab -> launchActivity(ActivityReaderIndexPage.class)); bottomTabLayout.setSelectionChangeListener(tab -> { if (tab.getId() == R.id.navSearch) { diff --git a/app/src/main/java/com/quranapp/android/activities/ReaderPossessingActivity.java b/app/src/main/java/com/quranapp/android/activities/ReaderPossessingActivity.java index b50fddb6..880368a8 100644 --- a/app/src/main/java/com/quranapp/android/activities/ReaderPossessingActivity.java +++ b/app/src/main/java/com/quranapp/android/activities/ReaderPossessingActivity.java @@ -1,7 +1,5 @@ package com.quranapp.android.activities; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; - import android.content.Intent; import android.graphics.Color; import android.graphics.Typeface; @@ -12,11 +10,11 @@ import android.text.style.StyleSpan; import android.view.View; import android.widget.Toast; - import androidx.activity.result.ActivityResult; import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.peacedesign.android.utils.span.TypefaceSpan2; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/activities/base/BaseActivity.java b/app/src/main/java/com/quranapp/android/activities/base/BaseActivity.java index 10e4fbfb..ea9e139a 100644 --- a/app/src/main/java/com/quranapp/android/activities/base/BaseActivity.java +++ b/app/src/main/java/com/quranapp/android/activities/base/BaseActivity.java @@ -4,11 +4,6 @@ package com.quranapp.android.activities.base; -import static com.quranapp.android.activities.base.BaseActivity.ActivityAnimationStyle.DEFAULT; -import static com.quranapp.android.activities.base.BaseActivity.ActivityAnimationStyle.NONE; -import static com.quranapp.android.activities.base.BaseActivity.ActivityAnimationStyle.SLIDE; -import static com.quranapp.android.utils.sharedPrefs.SPAppConfigs.LOCALE_DEFAULT; - import android.annotation.TargetApi; import android.content.BroadcastReceiver; import android.content.Context; @@ -25,7 +20,6 @@ import android.view.Window; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; - import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; @@ -40,6 +34,10 @@ import androidx.core.app.ActivityOptionsCompat; import androidx.core.content.ContextCompat; import androidx.core.view.WindowInsetsControllerCompat; +import static com.quranapp.android.activities.base.BaseActivity.ActivityAnimationStyle.DEFAULT; +import static com.quranapp.android.activities.base.BaseActivity.ActivityAnimationStyle.NONE; +import static com.quranapp.android.activities.base.BaseActivity.ActivityAnimationStyle.SLIDE; +import static com.quranapp.android.utils.sharedPrefs.SPAppConfigs.LOCALE_DEFAULT; import com.peacedesign.android.utils.WindowUtils; import com.quranapp.android.R; @@ -53,7 +51,8 @@ import java.util.Locale; import java.util.Objects; -public abstract class BaseActivity extends ResHelperActivity implements NetworkStateReceiverListener, ActivityResultStarter { +public abstract class BaseActivity extends ResHelperActivity implements NetworkStateReceiverListener, + ActivityResultStarter { private final ActivityResultLauncher mActivityResultLauncher = activityResultHandler(); protected final AsyncLayoutInflater mAsyncInflater = new AsyncLayoutInflater(this); private NetworkStateReceiver mNetworkReceiver; @@ -75,8 +74,8 @@ public void onReceive(Context context, Intent intent) { } } }; - private String mCurrentLocale = null; - private boolean shouldRecreateDueToLocaleChange = false; + private String mCurrentLocale; + private boolean shouldRecreateDueToLocaleChange; @Override protected void attachBaseContext(Context base) { @@ -376,7 +375,8 @@ public void launchActivity(Class cls) { protected void hideSystemBars() { Window window = getWindow(); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); - window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_FULLSCREEN); + window.addFlags( + WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_FULLSCREEN); } /** diff --git a/app/src/main/java/com/quranapp/android/activities/base/ResHelperActivity.java b/app/src/main/java/com/quranapp/android/activities/base/ResHelperActivity.java index 1947d3ea..e0f15021 100644 --- a/app/src/main/java/com/quranapp/android/activities/base/ResHelperActivity.java +++ b/app/src/main/java/com/quranapp/android/activities/base/ResHelperActivity.java @@ -10,7 +10,6 @@ import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Bundle; - import androidx.annotation.ArrayRes; import androidx.annotation.BoolRes; import androidx.annotation.ColorInt; @@ -32,7 +31,7 @@ public class ResHelperActivity extends AppCompatActivity { static class ActivityState { - static int CREATED = 0, RESUMED = 1, STARTED = 2, PAUSED = 3, STOPPED = 4, DESTROYED = 5; + static int CREATED, RESUMED = 1, STARTED = 2, PAUSED = 3, STOPPED = 4, DESTROYED = 5; } private int mPrimaryClr = -213; diff --git a/app/src/main/java/com/quranapp/android/activities/readerSettings/ActivitySettings.java b/app/src/main/java/com/quranapp/android/activities/readerSettings/ActivitySettings.java index 19176bbe..76ec7798 100644 --- a/app/src/main/java/com/quranapp/android/activities/readerSettings/ActivitySettings.java +++ b/app/src/main/java/com/quranapp/android/activities/readerSettings/ActivitySettings.java @@ -6,19 +6,16 @@ package com.quranapp.android.activities.readerSettings; -import static com.quranapp.android.utils.univ.Codes.SETTINGS_LAUNCHER_RESULT_CODE; - import android.content.Intent; import android.os.Bundle; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; +import static com.quranapp.android.utils.univ.Codes.SETTINGS_LAUNCHER_RESULT_CODE; -import com.quranapp.android.utils.Log; import com.quranapp.android.R; import com.quranapp.android.activities.base.BaseActivity; import com.quranapp.android.databinding.ActivitySettingsBinding; @@ -29,6 +26,7 @@ import com.quranapp.android.frags.settings.FragSettingsScripts; import com.quranapp.android.frags.settings.FragSettingsTransl; import com.quranapp.android.frags.settings.FragSettingsTranslationsDownload; +import com.quranapp.android.utils.Log; import com.quranapp.android.views.BoldHeader; import java.util.Objects; diff --git a/app/src/main/java/com/quranapp/android/activities/test/ActivityExperiment.java b/app/src/main/java/com/quranapp/android/activities/test/ActivityExperiment.java index 00b6bf59..ba7374be 100644 --- a/app/src/main/java/com/quranapp/android/activities/test/ActivityExperiment.java +++ b/app/src/main/java/com/quranapp/android/activities/test/ActivityExperiment.java @@ -8,15 +8,14 @@ import android.os.Bundle; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import com.quranapp.android.utils.Log; import com.quranapp.android.R; import com.quranapp.android.activities.base.BaseActivity; import com.quranapp.android.components.quran.subcomponents.Translation; import com.quranapp.android.databinding.ActivityExperimentBinding; +import com.quranapp.android.utils.Log; import com.quranapp.android.utils.reader.TranslUtils; import com.quranapp.android.utils.reader.factory.QuranTranslFactory; import com.quranapp.android.utils.reader.factory.ReaderFactory; @@ -62,8 +61,9 @@ private void perform() { Log.d(transls); int[] ints = {1, 7, 2, 3}; - Log.d(translFactory.getTranslationsDistinctVerses(Collections.singleton(TranslUtils.TRANSL_SLUG_EN_THE_CLEAR_QURAN), 88, - ints)); + Log.d(translFactory.getTranslationsDistinctVerses( + Collections.singleton(TranslUtils.TRANSL_SLUG_EN_THE_CLEAR_QURAN), 88, + ints)); Log.d(translFactory.getTranslationsVerseRange(2, 10, 12)); Log.d(translFactory.getTranslationBookInfo(TranslUtils.TRANSL_SLUG_EN_THE_CLEAR_QURAN)); diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java b/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java index e9e05559..8daa17b4 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java @@ -4,8 +4,6 @@ package com.quranapp.android.adapters; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; - import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Typeface; @@ -15,10 +13,10 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.LineHeightSpan2; @@ -220,9 +218,12 @@ private void openItemMenu(String title, BookmarkModel model) { dialog1.dismiss(); switch (item.getPosition()) { - case 0: mActivity.onView(model, getAdapterPosition()); break; - case 1: mActivity.onOpen(model); break; - case 2: mActivity.removeVerseFromBookmark(model, getAdapterPosition()); break; + case 0: mActivity.onView(model, getAdapterPosition()); + break; + case 1: mActivity.onOpen(model); + break; + case 2: mActivity.removeVerseFromBookmark(model, getAdapterPosition()); + break; } }); diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPFeaturedQuran.java b/app/src/main/java/com/quranapp/android/adapters/ADPFeaturedQuran.java index 673a9dc0..188176dc 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPFeaturedQuran.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPFeaturedQuran.java @@ -4,7 +4,6 @@ import android.content.Context; import android.view.LayoutInflater; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; @@ -67,7 +66,7 @@ public void bind(FeaturedQuranModel model) { int chapterNo = model.chapterNo; Pair verseRange = model.verseRange; if (QuranMeta.isChapterValid(chapterNo) && - mQuranMeta.isVerseRangeValid4Chapter(chapterNo, verseRange.getFirst(), verseRange.getSecond())) { + mQuranMeta.isVerseRangeValid4Chapter(chapterNo, verseRange.getFirst(), verseRange.getSecond())) { ReaderFactory.startVerseRange(itemView.getContext(), chapterNo, verseRange); } }); diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPProphets.java b/app/src/main/java/com/quranapp/android/adapters/ADPProphets.java index 6e0c97ec..2473ff61 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPProphets.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPProphets.java @@ -1,8 +1,5 @@ package com.quranapp.android.adapters; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.content.Intent; import android.content.res.ColorStateList; @@ -13,10 +10,11 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.LineHeightSpan2; @@ -52,7 +50,7 @@ public int getItemCount() { } public void setProphets(List topics) { - this.mTopics = topics; + mTopics = topics; } public List getTopics() { @@ -83,8 +81,9 @@ private CharSequence prepareTexts(String title, CharSequence subTitle, String in subTitleSS.setSpan(new LineHeightSpan2(20, false, true), 0, subTitleSS.length(), SPAN_EXCLUSIVE_EXCLUSIVE); SpannableString chaptersSS = new SpannableString(inChapters); - TextAppearanceSpan inChaptersTASpan = new TextAppearanceSpan("sans-serif-light", Typeface.NORMAL, mTxtSize, mTxtColor2, - null); + TextAppearanceSpan inChaptersTASpan = new TextAppearanceSpan("sans-serif-light", Typeface.NORMAL, mTxtSize, + mTxtColor2, + null); chaptersSS.setSpan(inChaptersTASpan, 0, chaptersSS.length(), SPAN_EXCLUSIVE_EXCLUSIVE); return TextUtils.concat(titleSS, "\n", subTitleSS, "\n", chaptersSS); @@ -136,7 +135,8 @@ private void setupActions(QuranProphet.Prophet prophet) { title = ctx.getString(R.string.strMsgReferenceInQuran, title); - Intent intent = ReaderFactory.prepareReferenceVerseIntent(true, title, desc, new String[]{}, prophet.chapters, prophet.verses); + Intent intent = ReaderFactory.prepareReferenceVerseIntent(true, title, desc, new String[]{}, + prophet.chapters, prophet.verses); intent.setClass(ctx, ActivityReference.class); mBinding.getRoot().setOnClickListener(v -> ctx.startActivity(intent)); } diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPQuickReference.java b/app/src/main/java/com/quranapp/android/adapters/ADPQuickReference.java index 78744cf8..ddd8c7a5 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPQuickReference.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPQuickReference.java @@ -1,7 +1,6 @@ package com.quranapp.android.adapters; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPQuranPages.java b/app/src/main/java/com/quranapp/android/adapters/ADPQuranPages.java index e73e9896..ed00accb 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPQuranPages.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPQuranPages.java @@ -1,16 +1,14 @@ package com.quranapp.android.adapters; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.CHAPTER_INFO; -import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.READER_FOOTER; -import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.READER_PAGE; - import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.CHAPTER_INFO; +import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.READER_FOOTER; +import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.READER_PAGE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.activities.ActivityReader; @@ -77,7 +75,7 @@ public VHQuranPage onCreateViewHolder(@NonNull ViewGroup parent, int position) { } else if (viewType == READER_PAGE) { final QuranPageView quranPageView = new QuranPageView(mActivity); final ViewGroup.MarginLayoutParams params = new ViewGroup.MarginLayoutParams(MATCH_PARENT, WRAP_CONTENT); - LayoutParamsKt.updateMargins(params, Dimen.dp2px(parent.getContext(),3)); + LayoutParamsKt.updateMargins(params, Dimen.dp2px(parent.getContext(), 3)); quranPageView.setLayoutParams(params); view = quranPageView; } else if (viewType == READER_FOOTER) { diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPReadHistory.java b/app/src/main/java/com/quranapp/android/adapters/ADPReadHistory.java index fbd9d50d..074e6852 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPReadHistory.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPReadHistory.java @@ -1,8 +1,5 @@ package com.quranapp.android.adapters; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.content.Intent; import android.content.res.ColorStateList; @@ -13,11 +10,12 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.Dimension; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.LineHeightSpan2; @@ -77,7 +75,8 @@ public int getItemViewType(int position) { @NonNull @Override public VHReadHistory onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - LytBookmarkItemBinding binding = LytBookmarkItemBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); + LytBookmarkItemBinding binding = LytBookmarkItemBinding.inflate(LayoutInflater.from(parent.getContext()), + parent, false); return new VHReadHistory(binding); } @@ -97,8 +96,9 @@ private CharSequence prepareTexts(String title, CharSequence subTitle, String co subTitleSS.setSpan(new LineHeightSpan2(20, false, true), 0, subTitleSS.length(), SPAN_EXCLUSIVE_EXCLUSIVE); SpannableString continueReadingSS = new SpannableString(continueReading); - TextAppearanceSpan continueReadingTASpan = new TextAppearanceSpan("sans-serif-medium", Typeface.NORMAL, mTxtSize2, - mColorPrimary, null); + TextAppearanceSpan continueReadingTASpan = new TextAppearanceSpan("sans-serif-medium", Typeface.NORMAL, + mTxtSize2, + mColorPrimary, null); continueReadingSS.setSpan(continueReadingTASpan, 0, continueReadingSS.length(), SPAN_EXCLUSIVE_EXCLUSIVE); return TextUtils.concat(titleSS, "\n", subTitleSS, "\n", continueReadingSS); @@ -119,7 +119,8 @@ public VHReadHistory(@NonNull LytBookmarkItemBinding binding) { p.width = mItemWidth; } else { p = new RecyclerView.LayoutParams(mItemWidth, WRAP_CONTENT); - LayoutParamsKt.updateMargins((ViewGroup.MarginLayoutParams) p, Dimen.dp2px(binding.getRoot().getContext(), 3)); + LayoutParamsKt.updateMargins((ViewGroup.MarginLayoutParams) p, + Dimen.dp2px(binding.getRoot().getContext(), 3)); } root.setLayoutParams(p); @@ -138,8 +139,9 @@ public void bind(ReadHistoryModel history) { mBinding.chapterNo.setText(String.valueOf(history.getChapterNo())); String chapterName = mQuranMeta.getChapterName(itemView.getContext(), history.getChapterNo(), true); - CharSequence txt = prepareTexts(chapterName, prepareSubtitleTitle(history.getFromVerseNo(), history.getToVerseNo()), - mTxtContinueReading); + CharSequence txt = prepareTexts(chapterName, + prepareSubtitleTitle(history.getFromVerseNo(), history.getToVerseNo()), + mTxtContinueReading); mBinding.text.setText(txt); setupActions(history); diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPReader.java b/app/src/main/java/com/quranapp/android/adapters/ADPReader.java index 620f6978..eccb3b6a 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPReader.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPReader.java @@ -1,7 +1,9 @@ package com.quranapp.android.adapters; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import android.view.View; +import android.view.ViewGroup; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.BISMILLAH; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.CHAPTER_INFO; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.CHAPTER_TITLE; @@ -9,12 +11,8 @@ import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.NO_TRANSL_SELECTED; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.READER_FOOTER; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.VERSE; - -import android.view.View; -import android.view.ViewGroup; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; @@ -125,7 +123,7 @@ private View prepareNoTranslMessageView(ActivityReader activity) { msgView.setElevation(activity.dp2px(4)); msgView.setMessageStyle(CardMessageParams.STYLE_WARNING); msgView.setActionText(activity.str(R.string.strTitleSettings), - () -> activity.mBinding.readerHeader.openReaderSetting(ActivitySettings.SETTINGS_TRANSL)); + () -> activity.mBinding.readerHeader.openReaderSetting(ActivitySettings.SETTINGS_TRANSL)); return msgView; } @@ -146,9 +144,12 @@ public void bind(ReaderRecyclerItemModel model) { int viewType = getViewType(position); switch (viewType) { - case CHAPTER_INFO: ((ChapterInfoCardView) itemView).setInfo(mChapterInfoMeta); break; - case VERSE: setupVerseView(model); break; - case CHAPTER_TITLE: setupTitleView(model); break; + case CHAPTER_INFO: ((ChapterInfoCardView) itemView).setInfo(mChapterInfoMeta); + break; + case VERSE: setupVerseView(model); + break; + case CHAPTER_TITLE: setupTitleView(model); + break; } } diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPReferenceVerses.java b/app/src/main/java/com/quranapp/android/adapters/ADPReferenceVerses.java index a9e2f28c..d770f252 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPReferenceVerses.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPReferenceVerses.java @@ -1,11 +1,5 @@ package com.quranapp.android.adapters; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; - import android.content.Context; import android.content.Intent; import android.graphics.Color; @@ -19,10 +13,14 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.DrawableUtils; @@ -42,7 +40,8 @@ import java.util.ArrayList; import java.util.List; -public class ADPReferenceVerses extends RecyclerView.Adapter implements Destroyable { +public class ADPReferenceVerses extends RecyclerView.Adapter implements + Destroyable { public static final int VIEWTYPE_DESCRIPTION = 0x0; public static final int VIEWTYPE_TITLE = 0x1; public static final int VIEWTYPE_VERSE = 0x2; @@ -83,7 +82,8 @@ public int getItemViewType(int position) { public VHReferenceVerse onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { final VHReferenceVerse vh; if (viewType == VIEWTYPE_DESCRIPTION) { - LytActivityReferenceDescriptionBinding binding = LytActivityReferenceDescriptionBinding.inflate(mInflater, parent, false); + LytActivityReferenceDescriptionBinding binding = LytActivityReferenceDescriptionBinding.inflate(mInflater, + parent, false); vh = new VHReferenceVerse(binding); } else if (viewType == VIEWTYPE_TITLE) { LytReferenceVerseTitleBinding binding = LytReferenceVerseTitleBinding.inflate(mInflater, parent, false); @@ -191,7 +191,8 @@ private void bindTitle(LytReferenceVerseTitleBinding binding, ReferenceVerseItem binding.titleText.setText(model.getTitleText()); binding.openInReader.setOnTouchListener(new HoverPushOpacityEffect()); binding.openInReader.setOnClickListener(v -> { - Intent intent = ReaderFactory.prepareVerseRangeIntent(model.getChapterNo(), model.getFromVerse(), model.getToVerse()); + Intent intent = ReaderFactory.prepareVerseRangeIntent(model.getChapterNo(), model.getFromVerse(), + model.getToVerse()); intent.setClass(mActivity, ActivityReader.class); intent.putExtra(READER_KEY_TRANSL_SLUGS, mActivity.mSelectedTranslSlugs.toArray(new String[0])); intent.putExtra(READER_KEY_SAVE_TRANSL_CHANGES, false); diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPTopics.java b/app/src/main/java/com/quranapp/android/adapters/ADPTopics.java index 0c7578fa..89cf376a 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPTopics.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPTopics.java @@ -1,8 +1,5 @@ package com.quranapp.android.adapters; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Typeface; @@ -12,11 +9,12 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.Dimension; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.LineHeightSpan2; @@ -64,8 +62,9 @@ public int getItemViewType(int position) { @NonNull @Override public VHTopic onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - LytQuranTopicItemBinding binding = LytQuranTopicItemBinding.inflate(LayoutInflater.from(parent.getContext()), parent, - false); + LytQuranTopicItemBinding binding = LytQuranTopicItemBinding.inflate(LayoutInflater.from(parent.getContext()), + parent, + false); return new VHTopic(binding); } @@ -85,8 +84,9 @@ private CharSequence prepareTexts(String title, CharSequence subTitle, String in subTitleSS.setSpan(new LineHeightSpan2(20, false, true), 0, subTitleSS.length(), SPAN_EXCLUSIVE_EXCLUSIVE); SpannableString chaptersSS = new SpannableString(inChapters); - TextAppearanceSpan inChaptersTASpan = new TextAppearanceSpan("sans-serif-light", Typeface.NORMAL, mTxtSize, mTxtColor2, - null); + TextAppearanceSpan inChaptersTASpan = new TextAppearanceSpan("sans-serif-light", Typeface.NORMAL, mTxtSize, + mTxtColor2, + null); chaptersSS.setSpan(inChaptersTASpan, 0, chaptersSS.length(), SPAN_EXCLUSIVE_EXCLUSIVE); return TextUtils.concat(titleSS, "\n", subTitleSS, "\n", chaptersSS); diff --git a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditShareColors.java b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditShareColors.java index a276a02f..c18242ef 100644 --- a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditShareColors.java +++ b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditShareColors.java @@ -14,7 +14,6 @@ import android.graphics.Paint; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; @@ -48,7 +47,7 @@ public void onBindViewHolder(@NonNull VHColor holder, int position) { holder.bind(colors[position]); } - class VHColor extends RecyclerView.ViewHolder { + class VHColor extends RecyclerView.ViewHolder { public VHColor(@NonNull View itemView) { super(itemView); } @@ -64,12 +63,12 @@ public static class ColorView extends View { private final int normalColor; private final int activeColor; private int bgColor = Color.TRANSPARENT; - private boolean selected = false; + private boolean selected; public ColorView(@NonNull Context context) { super(context); - this.normalColor = ContextCompat.getColor(context, R.color.colorDivider); - this.activeColor = ContextCompat.getColor(context, R.color.colorPrimary); + normalColor = ContextCompat.getColor(context, R.color.colorDivider); + activeColor = ContextCompat.getColor(context, R.color.colorPrimary); init(); } @@ -113,7 +112,7 @@ public void setSelected(boolean selected) { @Override public void setBackgroundColor(int color) { - this.bgColor = color; + bgColor = color; invalidate(); } } diff --git a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java index 73b1d459..fff75b6e 100644 --- a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java +++ b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java @@ -4,8 +4,6 @@ package com.quranapp.android.adapters.editor; -import static android.provider.MediaStore.Images; - import android.content.Context; import android.content.Intent; import android.graphics.Color; @@ -14,12 +12,11 @@ import android.view.ViewGroup; import android.widget.SeekBar; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import static android.provider.MediaStore.Images; import com.peacedesign.android.utils.ColorUtils; -import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheet; import com.quranapp.android.R; import com.quranapp.android.components.editor.EditorBG; import com.quranapp.android.components.editor.VerseEditor; @@ -28,6 +25,7 @@ import com.quranapp.android.utils.gesture.HoverPushOpacityEffect; import com.quranapp.android.utils.simplified.SimpleSeekbarChangeListener; import com.quranapp.android.widgets.ColorPreviewerView; +import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheet; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetParams; import com.quranapp.android.widgets.editor.EditorBGView; import com.quranapp.android.widgets.editor.EditorSelectImageView; diff --git a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorFG.java b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorFG.java index 99865b16..d9c72f13 100644 --- a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorFG.java +++ b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorFG.java @@ -4,12 +4,10 @@ package com.quranapp.android.adapters.editor; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; - import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.components.editor.EditorFG; @@ -47,7 +45,8 @@ public class VHEditorFG extends RecyclerView.ViewHolder { public VHEditorFG(@NonNull EditorFGView editorFGView) { super(editorFGView); mEditorFGView = editorFGView; - editorFGView.setLayoutParams(new ViewGroup.LayoutParams(MATCH_PARENT, Dimen.dp2px(editorFGView.getContext(), 120))); + editorFGView.setLayoutParams( + new ViewGroup.LayoutParams(MATCH_PARENT, Dimen.dp2px(editorFGView.getContext(), 120))); editorFGView.setOnTouchListener(new HoverPushOpacityEffect()); } diff --git a/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt b/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt index 658e39c9..1d41b63e 100644 --- a/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt +++ b/app/src/main/java/com/quranapp/android/adapters/extended/PeaceBottomSheetMenuAdapter.kt @@ -24,4 +24,4 @@ class PeaceBottomSheetMenuAdapter(context: Context) : BaseListAdapter(context) { return view } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPChaptersList.java b/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPChaptersList.java index d6e2338b..9d9260ae 100644 --- a/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPChaptersList.java +++ b/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPChaptersList.java @@ -4,15 +4,13 @@ package com.quranapp.android.adapters.quranIndex; -import static android.view.ViewGroup.LayoutParams; -import static android.view.ViewGroup.MarginLayoutParams; - import android.content.Context; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import static android.view.ViewGroup.LayoutParams; +import static android.view.ViewGroup.MarginLayoutParams; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPJuzList.java b/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPJuzList.java index 5094d884..78753b90 100644 --- a/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPJuzList.java +++ b/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPJuzList.java @@ -8,7 +8,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; @@ -72,7 +71,7 @@ private IndexJuzItemModel prepareJuzItemModel(Context ctx, int juzNo, QuranMeta Pair chaptersInJuz = quranMeta.getChaptersInJuz(juzNo); IntStream.rangeClosed(chaptersInJuz.getFirst(), chaptersInJuz.getSecond()) - .forEach(chapterNo -> chapterMetas.add(quranMeta.getChapterMeta(chapterNo))); + .forEach(chapterNo -> chapterMetas.add(quranMeta.getChapterMeta(chapterNo))); model.chapters = ImmutableList.copyOf(chapterMetas); @@ -93,7 +92,7 @@ public int getItemViewType(int position) { @Override public VHJuz onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { LytReaderIndexJuzCardBinding binding = LytReaderIndexJuzCardBinding.inflate( - LayoutInflater.from(parent.getContext()), parent, false); + LayoutInflater.from(parent.getContext()), parent, false); binding.getRoot().setClipChildren(true); binding.getRoot().setClipToOutline(true); binding.chapterList.setLayoutManager(new LinearLayoutManager(parent.getContext())); diff --git a/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPJuzListChapterList.java b/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPJuzListChapterList.java index f1af0f71..21919395 100644 --- a/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPJuzListChapterList.java +++ b/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPJuzListChapterList.java @@ -5,7 +5,6 @@ package com.quranapp.android.adapters.quranIndex; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; @@ -73,11 +72,12 @@ public void bind(QuranMeta.ChapterMeta chapterMeta) { chapterCard.setChapterNumber(chapterMeta.chapterNo); chapterCard.setName(chapterMeta.getName(), chapterMeta.getNameTranslation()); - Pair versesInJuz = mFragment.getQuranMeta().getVerseRangeOfChapterInJuz(mJuzNo, chapterMeta.chapterNo); + Pair versesInJuz = mFragment.getQuranMeta().getVerseRangeOfChapterInJuz(mJuzNo, + chapterMeta.chapterNo); if (versesInJuz != null) { chapterCard.setVersesCount(mVersesStr, versesInJuz.getFirst(), versesInJuz.getSecond()); chapterCard.setOnClickListener( - v -> ReaderFactory.startVerseRange(v.getContext(), chapterMeta.chapterNo, versesInJuz)); + v -> ReaderFactory.startVerseRange(v.getContext(), chapterMeta.chapterNo, versesInJuz)); } } } diff --git a/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPReaderIndexBase.java b/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPReaderIndexBase.java index a1d49fe3..0f6a81a2 100644 --- a/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPReaderIndexBase.java +++ b/app/src/main/java/com/quranapp/android/adapters/quranIndex/ADPReaderIndexBase.java @@ -7,7 +7,6 @@ package com.quranapp.android.adapters.quranIndex; import android.content.Context; - import androidx.recyclerview.widget.RecyclerView; import com.quranapp.android.frags.readerindex.BaseFragReaderIndex; diff --git a/app/src/main/java/com/quranapp/android/adapters/recitation/ADPRecitations.java b/app/src/main/java/com/quranapp/android/adapters/recitation/ADPRecitations.java index eff71874..a8506360 100644 --- a/app/src/main/java/com/quranapp/android/adapters/recitation/ADPRecitations.java +++ b/app/src/main/java/com/quranapp/android/adapters/recitation/ADPRecitations.java @@ -8,7 +8,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; diff --git a/app/src/main/java/com/quranapp/android/adapters/search/ADPSearchSugg.java b/app/src/main/java/com/quranapp/android/adapters/search/ADPSearchSugg.java index 949c4015..58cd5e96 100644 --- a/app/src/main/java/com/quranapp/android/adapters/search/ADPSearchSugg.java +++ b/app/src/main/java/com/quranapp/android/adapters/search/ADPSearchSugg.java @@ -7,7 +7,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.Toast; - import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatTextView; import androidx.recyclerview.widget.RecyclerView; @@ -47,7 +46,7 @@ public ADPSearchSugg(Context context) { @SuppressLint("NotifyDataSetChanged") public void setSuggModels(ActivitySearch activitySearch, ArrayList suggModels) { mActivitySearch = activitySearch; - this.mSuggModels = suggModels; + mSuggModels = suggModels; } @Override diff --git a/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java b/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java index 097431ee..1bfaed04 100644 --- a/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java +++ b/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java @@ -1,16 +1,5 @@ package com.quranapp.android.adapters.search; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.CHAPTER_JUMPER; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.JUZ_JUMPER; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.RESULT; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.RESULT_COUNT; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.VERSE_JUMPER; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; - import android.content.Context; import android.content.Intent; import android.graphics.Color; @@ -24,15 +13,23 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatTextView; import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.RecyclerView; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.CHAPTER_JUMPER; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.JUZ_JUMPER; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.RESULT; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.RESULT_COUNT; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.VERSE_JUMPER; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.TypefaceSpan2; -import com.quranapp.android.widgets.list.base.BaseListItem; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; import com.quranapp.android.activities.ActivitySearch; @@ -62,6 +59,7 @@ import com.quranapp.android.vh.search.VHVerseJump; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetMenu; import com.quranapp.android.widgets.chapterCard.ChapterCard; +import com.quranapp.android.widgets.list.base.BaseListItem; import java.util.ArrayList; import java.util.List; @@ -410,7 +408,8 @@ private void openItemMenu(Context context, VerseResultModel model) { switch (item.getId()) { case 0: { openItem(context, model); - } break; + } + break; case 1: { if (isBookmarked) { dbHelper.removeFromBookmark(model.chapterNo, model.verseNo, model.verseNo, null); diff --git a/app/src/main/java/com/quranapp/android/adapters/transl/ADPDownloadTransls.java b/app/src/main/java/com/quranapp/android/adapters/transl/ADPDownloadTransls.java index 9a6a92bf..9997b99f 100644 --- a/app/src/main/java/com/quranapp/android/adapters/transl/ADPDownloadTransls.java +++ b/app/src/main/java/com/quranapp/android/adapters/transl/ADPDownloadTransls.java @@ -4,8 +4,6 @@ package com.quranapp.android.adapters.transl; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.text.TextUtils; import android.util.TypedValue; @@ -13,10 +11,10 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatTextView; import androidx.recyclerview.widget.RecyclerView; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; @@ -160,7 +158,8 @@ private void createMiniInfos(LinearLayout container, List miniInfos) { miniInfoView.setBackgroundResource(R.drawable.dr_bg_primary_cornered); miniInfoView.setTextAlignment(View.TEXT_ALIGNMENT_VIEW_START); miniInfoView.setTextColor(ContextKt.color(ctx, R.color.white)); - miniInfoView.setTextSize(TypedValue.COMPLEX_UNIT_PX, ContextKt.getDimenPx(ctx, R.dimen.dmnCommonSize2_5)); + miniInfoView.setTextSize(TypedValue.COMPLEX_UNIT_PX, + ContextKt.getDimenPx(ctx, R.dimen.dmnCommonSize2_5)); ViewPaddingKt.updatePaddingVertical(miniInfoView, Dimen.dp2px(ctx, 2)); ViewPaddingKt.updatePaddingHorizontal(miniInfoView, Dimen.dp2px(ctx, 5)); diff --git a/app/src/main/java/com/quranapp/android/adapters/transl/ADPTranslBase.java b/app/src/main/java/com/quranapp/android/adapters/transl/ADPTranslBase.java index f73faa5d..f0e864b5 100644 --- a/app/src/main/java/com/quranapp/android/adapters/transl/ADPTranslBase.java +++ b/app/src/main/java/com/quranapp/android/adapters/transl/ADPTranslBase.java @@ -4,18 +4,16 @@ package com.quranapp.android.adapters.transl; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.graphics.Typeface; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/adapters/transl/ADPTransls.java b/app/src/main/java/com/quranapp/android/adapters/transl/ADPTransls.java index 82e293ee..b0e65625 100644 --- a/app/src/main/java/com/quranapp/android/adapters/transl/ADPTransls.java +++ b/app/src/main/java/com/quranapp/android/adapters/transl/ADPTransls.java @@ -8,12 +8,10 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.peacedesign.android.utils.ColorUtils; -import com.quranapp.android.widgets.checkbox.PeaceCheckBox; import com.peacedesign.android.widget.dialog.base.PeaceDialog; import com.quranapp.android.R; import com.quranapp.android.components.quran.subcomponents.QuranTranslBookInfo; @@ -24,6 +22,7 @@ import com.quranapp.android.interfaceUtils.OnTranslSelectionChangeListener; import com.quranapp.android.utils.reader.TranslUtils; import com.quranapp.android.utils.reader.factory.QuranTranslFactory; +import com.quranapp.android.widgets.checkbox.PeaceCheckBox; import java.util.List; @@ -80,7 +79,8 @@ public void bind(TranslModel translModel) { return; } - mBinding.checkbox.setTexts(translModel.getBookInfo().getBookName(), translModel.getBookInfo().getAuthorName()); + mBinding.checkbox.setTexts(translModel.getBookInfo().getBookName(), + translModel.getBookInfo().getAuthorName()); mBinding.checkbox.setChecked(translModel.isChecked()); mBinding.checkbox.setBeforeCheckChangeListener((button, newState) -> { @@ -106,7 +106,7 @@ private void deleteTranslCheckPoint(Context ctx, TranslModel translModel) { PeaceDialog.Builder builder = PeaceDialog.newBuilder(ctx); builder.setTitle(R.string.strTitleTranslDelete); builder.setMessage( - bookInfo.getBookName() + "\n" + bookInfo.getAuthorName() + "\n\n" + "You will need to download it again."); + bookInfo.getBookName() + "\n" + bookInfo.getAuthorName() + "\n\n" + "You will need to download it again."); builder.setTitleTextAlignment(View.TEXT_ALIGNMENT_CENTER); builder.setMessageTextAlignment(View.TEXT_ALIGNMENT_CENTER); builder.setNeutralButton(R.string.strLabelCancel, null); diff --git a/app/src/main/java/com/quranapp/android/adapters/utility/SpinnerAdapter2.java b/app/src/main/java/com/quranapp/android/adapters/utility/SpinnerAdapter2.java index f82a2e2b..bbb52f0d 100644 --- a/app/src/main/java/com/quranapp/android/adapters/utility/SpinnerAdapter2.java +++ b/app/src/main/java/com/quranapp/android/adapters/utility/SpinnerAdapter2.java @@ -6,7 +6,6 @@ import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; diff --git a/app/src/main/java/com/quranapp/android/adapters/utility/TopicFilterSpinnerAdapter.java b/app/src/main/java/com/quranapp/android/adapters/utility/TopicFilterSpinnerAdapter.java index 6de57294..14cab180 100644 --- a/app/src/main/java/com/quranapp/android/adapters/utility/TopicFilterSpinnerAdapter.java +++ b/app/src/main/java/com/quranapp/android/adapters/utility/TopicFilterSpinnerAdapter.java @@ -3,7 +3,6 @@ import android.content.Context; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import com.peacedesign.android.utils.Dimen; @@ -20,8 +19,8 @@ public TopicFilterSpinnerAdapter(@NonNull Context context, int itemLytRes, int t @Override public View getDropDownView(int position, View convertView, @NonNull ViewGroup parent) { View view = super.getDropDownView(position, convertView, parent); - ViewPaddingKt.updatePaddingVertical(view, Dimen.dp2px(parent.getContext(),10)); - ViewPaddingKt.updatePaddingHorizontal(view, Dimen.dp2px(parent.getContext(),15)); + ViewPaddingKt.updatePaddingVertical(view, Dimen.dp2px(parent.getContext(), 10)); + ViewPaddingKt.updatePaddingHorizontal(view, Dimen.dp2px(parent.getContext(), 15)); return view; } } diff --git a/app/src/main/java/com/quranapp/android/api/ApiConfig.kt b/app/src/main/java/com/quranapp/android/api/ApiConfig.kt index 9403cf45..d6cafc9b 100644 --- a/app/src/main/java/com/quranapp/android/api/ApiConfig.kt +++ b/app/src/main/java/com/quranapp/android/api/ApiConfig.kt @@ -10,5 +10,6 @@ object ApiConfig { const val GITHUB_ROOT_URL = "https://raw.githubusercontent.com/AlfaazPlus/QuranApp/master/" const val GITHUB_REPOSITORY_URL = "https://github.com/AlfaazPlus/QuranApp" const val GITHUB_ISSUES_BUG_REPORT_URL = "https://github.com/AlfaazPlus/QuranApp/issues/new?template=bug_report.yml" - const val GITHUB_ISSUES_VERSE_REPORT_URL = "https://github.com/AlfaazPlus/QuranApp/issues/new?template=verse_report.yml" -} \ No newline at end of file + const val GITHUB_ISSUES_VERSE_REPORT_URL = + "https://github.com/AlfaazPlus/QuranApp/issues/new?template=verse_report.yml" +} diff --git a/app/src/main/java/com/quranapp/android/api/GithubApi.kt b/app/src/main/java/com/quranapp/android/api/GithubApi.kt index 8812895e..9f06902d 100644 --- a/app/src/main/java/com/quranapp/android/api/GithubApi.kt +++ b/app/src/main/java/com/quranapp/android/api/GithubApi.kt @@ -27,8 +27,11 @@ interface GithubApi { suspend fun getQuranScript(@Path("filename") filename: String): ResponseBody @GET("inventory/fonts/{scriptKey}/{filename}") - suspend fun getKFQPCFont(@Path("scriptKey") scriptKey: String, @Path("filename") filename: String): ResponseBody + suspend fun getKFQPCFont( + @Path("scriptKey") scriptKey: String, + @Path("filename") filename: String + ): ResponseBody @GET("inventory/recitations/available_recitations_info.json") suspend fun getAvailableRecitations(): ResponseBody -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/api/JsonHelper.kt b/app/src/main/java/com/quranapp/android/api/JsonHelper.kt index 45144c6f..9c228051 100644 --- a/app/src/main/java/com/quranapp/android/api/JsonHelper.kt +++ b/app/src/main/java/com/quranapp/android/api/JsonHelper.kt @@ -8,4 +8,4 @@ object JsonHelper { encodeDefaults = true coerceInputValues = true } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/api/RetrofitInstance.kt b/app/src/main/java/com/quranapp/android/api/RetrofitInstance.kt index 17dd139e..7a71a6bf 100644 --- a/app/src/main/java/com/quranapp/android/api/RetrofitInstance.kt +++ b/app/src/main/java/com/quranapp/android/api/RetrofitInstance.kt @@ -7,7 +7,6 @@ import okhttp3.MediaType import okhttp3.OkHttpClient import retrofit2.Retrofit - @OptIn(ExperimentalSerializationApi::class) object RetrofitInstance { private val client: OkHttpClient = OkHttpClient.Builder() @@ -27,4 +26,4 @@ object RetrofitInstance { .build() .create(GithubApi::class.java) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/api/models/AppUrls.kt b/app/src/main/java/com/quranapp/android/api/models/AppUrls.kt index 0068f01b..ec0ba487 100644 --- a/app/src/main/java/com/quranapp/android/api/models/AppUrls.kt +++ b/app/src/main/java/com/quranapp/android/api/models/AppUrls.kt @@ -8,5 +8,5 @@ data class AppUrls( @SerialName("privacy-policy") val privacyPolicy: String, val about: String, val help: String, - val feedback: String, -) \ No newline at end of file + val feedback: String +) diff --git a/app/src/main/java/com/quranapp/android/api/models/AvailableRecitationsModel.kt b/app/src/main/java/com/quranapp/android/api/models/AvailableRecitationsModel.kt index 1b607a84..e806cfb9 100644 --- a/app/src/main/java/com/quranapp/android/api/models/AvailableRecitationsModel.kt +++ b/app/src/main/java/com/quranapp/android/api/models/AvailableRecitationsModel.kt @@ -8,4 +8,4 @@ import kotlinx.serialization.Serializable data class AvailableRecitationsModel( @SerialName("url-info") val urlInfo: RecitationsCommonUrlInfoModel, @SerialName("reciters") val reciters: List -) \ No newline at end of file +) diff --git a/app/src/main/java/com/quranapp/android/api/models/RecitationsCommonUrlInfoModel.kt b/app/src/main/java/com/quranapp/android/api/models/RecitationsCommonUrlInfoModel.kt index 45a49226..f0f62e58 100644 --- a/app/src/main/java/com/quranapp/android/api/models/RecitationsCommonUrlInfoModel.kt +++ b/app/src/main/java/com/quranapp/android/api/models/RecitationsCommonUrlInfoModel.kt @@ -5,5 +5,5 @@ import kotlinx.serialization.Serializable @Serializable data class RecitationsCommonUrlInfoModel( - @SerialName("common-host") val commonHost: String, -) \ No newline at end of file + @SerialName("common-host") val commonHost: String +) diff --git a/app/src/main/java/com/quranapp/android/api/models/ResourcesVersions.kt b/app/src/main/java/com/quranapp/android/api/models/ResourcesVersions.kt index f5245333..1a82b9b1 100644 --- a/app/src/main/java/com/quranapp/android/api/models/ResourcesVersions.kt +++ b/app/src/main/java/com/quranapp/android/api/models/ResourcesVersions.kt @@ -7,5 +7,5 @@ import kotlinx.serialization.Serializable data class ResourcesVersions( @SerialName("urls") val urlsVersion: Long, @SerialName("translations") val translationsVersion: Long, - @SerialName("recitations") val recitationsVersion: Long, -) \ No newline at end of file + @SerialName("recitations") val recitationsVersion: Long +) diff --git a/app/src/main/java/com/quranapp/android/components/AppUpdate.kt b/app/src/main/java/com/quranapp/android/components/AppUpdate.kt index 8175d774..d324f067 100644 --- a/app/src/main/java/com/quranapp/android/components/AppUpdate.kt +++ b/app/src/main/java/com/quranapp/android/components/AppUpdate.kt @@ -13,4 +13,4 @@ import kotlinx.serialization.Serializable data class AppUpdate( val version: Long, @SerialName("updatePriority") val priority: Int -) \ No newline at end of file +) diff --git a/app/src/main/java/com/quranapp/android/components/AppUpdateInfo.kt b/app/src/main/java/com/quranapp/android/components/AppUpdateInfo.kt index b873da5a..f02f141a 100644 --- a/app/src/main/java/com/quranapp/android/components/AppUpdateInfo.kt +++ b/app/src/main/java/com/quranapp/android/components/AppUpdateInfo.kt @@ -32,4 +32,4 @@ class AppUpdateInfo(private val ctx: Context) { .sortedBy { it.priority } return mostImportantUpdate.takeIf { it.isNotEmpty() }?.get(0) ?: AppUpdate(0, NONE) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/ComponentBase.kt b/app/src/main/java/com/quranapp/android/components/ComponentBase.kt index f4bed201..23149d7c 100644 --- a/app/src/main/java/com/quranapp/android/components/ComponentBase.kt +++ b/app/src/main/java/com/quranapp/android/components/ComponentBase.kt @@ -11,4 +11,4 @@ open class ComponentBase : Serializable { @Transient var obj: Any? = null -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/NotifModel.kt b/app/src/main/java/com/quranapp/android/components/NotifModel.kt index 95211abd..45758e07 100644 --- a/app/src/main/java/com/quranapp/android/components/NotifModel.kt +++ b/app/src/main/java/com/quranapp/android/components/NotifModel.kt @@ -6,4 +6,4 @@ package com.quranapp.android.components class NotifModel(val iconRes: Int, val title: String, val message: String, val date: String) { var action: String? = null -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/ReferenceVerseItemModel.kt b/app/src/main/java/com/quranapp/android/components/ReferenceVerseItemModel.kt index 03ce9e4f..5d164cd3 100644 --- a/app/src/main/java/com/quranapp/android/components/ReferenceVerseItemModel.kt +++ b/app/src/main/java/com/quranapp/android/components/ReferenceVerseItemModel.kt @@ -9,4 +9,4 @@ class ReferenceVerseItemModel( val fromVerse: Int, val toVerse: Int, val titleText: String? -) \ No newline at end of file +) diff --git a/app/src/main/java/com/quranapp/android/components/ReferenceVerseModel.kt b/app/src/main/java/com/quranapp/android/components/ReferenceVerseModel.kt index 77896ac6..eb8063f6 100644 --- a/app/src/main/java/com/quranapp/android/components/ReferenceVerseModel.kt +++ b/app/src/main/java/com/quranapp/android/components/ReferenceVerseModel.kt @@ -20,4 +20,4 @@ class ReferenceVerseModel( override fun toString(): String { return "showChaptersSugg:$showChaptersSugg, title: $title, desc: $desc, desc: $translSlugs, chapters: $chapters, verses: $verses" } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/bookmark/BookmarkModel.kt b/app/src/main/java/com/quranapp/android/components/bookmark/BookmarkModel.kt index 3ae7c305..28fc8ffe 100644 --- a/app/src/main/java/com/quranapp/android/components/bookmark/BookmarkModel.kt +++ b/app/src/main/java/com/quranapp/android/components/bookmark/BookmarkModel.kt @@ -13,7 +13,7 @@ class BookmarkModel( val chapterNo: Int, val fromVerseNo: Int, val toVerseNo: Int, - val date: String?, + val date: String? ) { var note: String? = null @@ -64,11 +64,11 @@ class BookmarkModel( if (other !is BookmarkModel) return false return id == other.id && - chapterNo == other.chapterNo && - fromVerseNo == other.fromVerseNo && - toVerseNo == other.toVerseNo && - date == other.date && - note == other.note + chapterNo == other.chapterNo && + fromVerseNo == other.fromVerseNo && + toVerseNo == other.toVerseNo && + date == other.date && + note == other.note } override fun hashCode(): Int { @@ -80,5 +80,4 @@ class BookmarkModel( result = 31 * result + (note?.hashCode() ?: 0) return result } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/editor/EditorBG.java b/app/src/main/java/com/quranapp/android/components/editor/EditorBG.java index d6d44cf2..472b1ee2 100644 --- a/app/src/main/java/com/quranapp/android/components/editor/EditorBG.java +++ b/app/src/main/java/com/quranapp/android/components/editor/EditorBG.java @@ -4,13 +4,11 @@ package com.quranapp.android.components.editor; -import static com.quranapp.android.components.editor.VerseEditor.BRIGHTNESS_DARK; - import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; - import androidx.appcompat.content.res.AppCompatResources; +import static com.quranapp.android.components.editor.VerseEditor.BRIGHTNESS_DARK; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/components/editor/EditorTemplate.java b/app/src/main/java/com/quranapp/android/components/editor/EditorTemplate.java index 855ee66b..897d7799 100644 --- a/app/src/main/java/com/quranapp/android/components/editor/EditorTemplate.java +++ b/app/src/main/java/com/quranapp/android/components/editor/EditorTemplate.java @@ -5,7 +5,6 @@ package com.quranapp.android.components.editor; import android.graphics.Color; - import androidx.annotation.DrawableRes; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/components/quran/Quran.java b/app/src/main/java/com/quranapp/android/components/quran/Quran.java index 16b57040..fb9bdafc 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/Quran.java +++ b/app/src/main/java/com/quranapp/android/components/quran/Quran.java @@ -1,7 +1,6 @@ package com.quranapp.android.components.quran; import android.content.Context; - import androidx.annotation.Nullable; import com.quranapp.android.components.quran.subcomponents.Chapter; diff --git a/app/src/main/java/com/quranapp/android/components/quran/QuranDua.kt b/app/src/main/java/com/quranapp/android/components/quran/QuranDua.kt index b7461c02..83f99586 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/QuranDua.kt +++ b/app/src/main/java/com/quranapp/android/components/quran/QuranDua.kt @@ -37,8 +37,10 @@ class QuranDua( resultReadyCallback: OnResultReadyCallback ) { QuranDuaParser.parseDua( - context, quranMeta, sQuranProphetRef + context, + quranMeta, + sQuranProphetRef ) { resultReadyCallback.onReady(sQuranProphetRef.get()) } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/quran/QuranMeta.java b/app/src/main/java/com/quranapp/android/components/quran/QuranMeta.java index 44e59338..1b1756d6 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/QuranMeta.java +++ b/app/src/main/java/com/quranapp/android/components/quran/QuranMeta.java @@ -2,7 +2,6 @@ import android.content.Context; import android.util.SparseArray; - import androidx.annotation.NonNull; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/components/quran/QuranProphet.java b/app/src/main/java/com/quranapp/android/components/quran/QuranProphet.java index 03b8bd0c..52ad9db2 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/QuranProphet.java +++ b/app/src/main/java/com/quranapp/android/components/quran/QuranProphet.java @@ -1,7 +1,6 @@ package com.quranapp.android.components.quran; import android.content.Context; - import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; @@ -33,7 +32,7 @@ public static void prepareInstance(Context context, QuranMeta quranMeta, OnResul private static void prepare(Context context, QuranMeta quranMeta, OnResultReadyCallback resultReadyCallback) { QuranProphetParser.parseProphet(context, quranMeta, sQuranProphetRef, - () -> resultReadyCallback.onReady(sQuranProphetRef.get())); + () -> resultReadyCallback.onReady(sQuranProphetRef.get())); } @@ -62,8 +61,9 @@ public static class Prophet implements Serializable { @NonNull @Override public String toString() { - return MessageFormat.format("Prophet: {0} ({1}) {2} : [order={3}, iconRes={4}]", nameTrans, nameEn, honorific, order, - iconRes); + return MessageFormat.format("Prophet: {0} ({1}) {2} : [order={3}, iconRes={4}]", nameTrans, nameEn, + honorific, order, + iconRes); } } } diff --git a/app/src/main/java/com/quranapp/android/components/quran/QuranTopic.java b/app/src/main/java/com/quranapp/android/components/quran/QuranTopic.java index 3c07e9aa..79fa0833 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/QuranTopic.java +++ b/app/src/main/java/com/quranapp/android/components/quran/QuranTopic.java @@ -1,7 +1,6 @@ package com.quranapp.android.components.quran; import android.content.Context; - import androidx.annotation.NonNull; import com.quranapp.android.interfaceUtils.OnResultReadyCallback; @@ -33,7 +32,8 @@ public static void prepareInstance(Context context, QuranMeta quranMeta, OnResul } private static void prepare(Context context, QuranMeta quranMeta, OnResultReadyCallback resultReadyCallback) { - QuranTopicParser.parseTopics(context, quranMeta, sQuranTopicRef, () -> resultReadyCallback.onReady(sQuranTopicRef.get())); + QuranTopicParser.parseTopics(context, quranMeta, sQuranTopicRef, + () -> resultReadyCallback.onReady(sQuranTopicRef.get())); } public void setAvailableAlphabets(Character[] availableAlphabets) { @@ -77,7 +77,7 @@ public Map getTopics() { public static class Topic implements Serializable { public int id; - public boolean isFeatured = false; + public boolean isFeatured; public String name; /** * Maybe empty or null, Separated by comma if multiple @@ -97,10 +97,10 @@ public static class Topic implements Serializable { @Override public String toString() { return "Topic{" + - "id=" + id + - ", name='" + name + '\'' + - ", verses=" + verses + - '}'; + "id=" + id + + ", name='" + name + '\'' + + ", verses=" + verses + + '}'; } } } diff --git a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Chapter.java b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Chapter.java index 26cafba1..4521b0a0 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Chapter.java +++ b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Chapter.java @@ -69,7 +69,7 @@ public int getCurrentVerseNo() { } public void setCurrentVerseNo(int verseNo) { - this.currentVerseNo = verseNo; + currentVerseNo = verseNo; } public ArrayList getVerses() { diff --git a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Footnote.kt b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Footnote.kt index 55000e4f..3beface7 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Footnote.kt +++ b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Footnote.kt @@ -38,4 +38,4 @@ class Footnote() : Serializable { override fun toString(): String { return "Footnote{number=$chapterNo:$verseNo:$number, text='$text'}" } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/QuranTranslBookInfo.kt b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/QuranTranslBookInfo.kt index 530d53e0..86dcf559 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/QuranTranslBookInfo.kt +++ b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/QuranTranslBookInfo.kt @@ -59,5 +59,4 @@ class QuranTranslBookInfo(val slug: String) : Serializable { result = 31 * result + isUrdu.hashCode() return result } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Translation.kt b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Translation.kt index 9afa68e1..dd5fd4a9 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Translation.kt +++ b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Translation.kt @@ -44,4 +44,4 @@ class Translation() : Serializable { override fun toString(): String { return "Translation{verse=$chapterNo:$verseNo, text='$text'}" } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Verse.java b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Verse.java index 3775ba4f..47dcb62e 100644 --- a/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Verse.java +++ b/app/src/main/java/com/quranapp/android/components/quran/subcomponents/Verse.java @@ -1,7 +1,6 @@ package com.quranapp.android.components.quran.subcomponents; import android.content.Context; - import androidx.annotation.NonNull; import com.quranapp.android.utils.verse.VerseUtils; diff --git a/app/src/main/java/com/quranapp/android/components/readHistory/ReadHistoryModel.kt b/app/src/main/java/com/quranapp/android/components/readHistory/ReadHistoryModel.kt index 598fdb7a..ced2cdbf 100644 --- a/app/src/main/java/com/quranapp/android/components/readHistory/ReadHistoryModel.kt +++ b/app/src/main/java/com/quranapp/android/components/readHistory/ReadHistoryModel.kt @@ -8,11 +8,20 @@ class ReadHistoryModel( val chapterNo: Int, val fromVerseNo: Int, val toVerseNo: Int, - val date: String?, + val date: String? ) { fun copy(): ReadHistoryModel { - return ReadHistoryModel(id, readType, readerStyle, juzNo, chapterNo, fromVerseNo, toVerseNo, date) + return ReadHistoryModel( + id, + readType, + readerStyle, + juzNo, + chapterNo, + fromVerseNo, + toVerseNo, + date + ) } override fun equals(other: Any?): Boolean { @@ -42,5 +51,4 @@ class ReadHistoryModel( result = 31 * result + (date?.hashCode() ?: 0) return result } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/reader/ReaderRecyclerItemModel.java b/app/src/main/java/com/quranapp/android/components/reader/ReaderRecyclerItemModel.java index a6ba335a..7fd5ecaa 100644 --- a/app/src/main/java/com/quranapp/android/components/reader/ReaderRecyclerItemModel.java +++ b/app/src/main/java/com/quranapp/android/components/reader/ReaderRecyclerItemModel.java @@ -1,5 +1,6 @@ package com.quranapp.android.components.reader; +import androidx.annotation.NonNull; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.BISMILLAH; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.CHAPTER_INFO; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.CHAPTER_TITLE; @@ -9,8 +10,6 @@ import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.READER_PAGE; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.VERSE; -import androidx.annotation.NonNull; - import com.quranapp.android.components.quran.subcomponents.Verse; import com.quranapp.android.reader_managers.ReaderParams; diff --git a/app/src/main/java/com/quranapp/android/components/recitation/RecitationModel.kt b/app/src/main/java/com/quranapp/android/components/recitation/RecitationModel.kt index 39d30973..747233b8 100644 --- a/app/src/main/java/com/quranapp/android/components/recitation/RecitationModel.kt +++ b/app/src/main/java/com/quranapp/android/components/recitation/RecitationModel.kt @@ -29,5 +29,4 @@ data class RecitationModel( override fun hashCode(): Int { return slug.hashCode() } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/search/ChapterJumpModel.kt b/app/src/main/java/com/quranapp/android/components/search/ChapterJumpModel.kt index ab3a7c99..d63ec997 100644 --- a/app/src/main/java/com/quranapp/android/components/search/ChapterJumpModel.kt +++ b/app/src/main/java/com/quranapp/android/components/search/ChapterJumpModel.kt @@ -5,4 +5,4 @@ class ChapterJumpModel( val textSerial: String, val name: String, val nameTranslation: String -) : SearchResultModelBase() \ No newline at end of file +) : SearchResultModelBase() diff --git a/app/src/main/java/com/quranapp/android/components/search/VerseResultCountModel.kt b/app/src/main/java/com/quranapp/android/components/search/VerseResultCountModel.kt index f7b3646f..fde4ab36 100644 --- a/app/src/main/java/com/quranapp/android/components/search/VerseResultCountModel.kt +++ b/app/src/main/java/com/quranapp/android/components/search/VerseResultCountModel.kt @@ -5,4 +5,4 @@ import com.quranapp.android.components.quran.subcomponents.QuranTranslBookInfo class VerseResultCountModel(val bookInfo: QuranTranslBookInfo?) : SearchResultModelBase() { @JvmField var resultCount = 0 -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/search/VerseResultModel.java b/app/src/main/java/com/quranapp/android/components/search/VerseResultModel.java index 3f19bf26..97bee400 100644 --- a/app/src/main/java/com/quranapp/android/components/search/VerseResultModel.java +++ b/app/src/main/java/com/quranapp/android/components/search/VerseResultModel.java @@ -1,7 +1,6 @@ package com.quranapp.android.components.search; import android.view.View; - import androidx.annotation.NonNull; import com.quranapp.android.components.quran.subcomponents.Translation; diff --git a/app/src/main/java/com/quranapp/android/components/transls/TranslBaseModel.kt b/app/src/main/java/com/quranapp/android/components/transls/TranslBaseModel.kt index bf50f60d..bd3f899f 100644 --- a/app/src/main/java/com/quranapp/android/components/transls/TranslBaseModel.kt +++ b/app/src/main/java/com/quranapp/android/components/transls/TranslBaseModel.kt @@ -7,4 +7,4 @@ import java.io.Serializable open class TranslBaseModel : Serializable { var position: Int = -1 -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/transls/TranslModel.kt b/app/src/main/java/com/quranapp/android/components/transls/TranslModel.kt index 9545981e..227df1d6 100644 --- a/app/src/main/java/com/quranapp/android/components/transls/TranslModel.kt +++ b/app/src/main/java/com/quranapp/android/components/transls/TranslModel.kt @@ -35,4 +35,4 @@ class TranslModel(val bookInfo: QuranTranslBookInfo) : TranslBaseModel(), Serial override fun toString(): String { return "TranslModel(bookInfo=$bookInfo, isChecked=$isChecked, isDownloading=$isDownloading, miniInfos=$miniInfos)" } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/components/transls/TranslTitleModel.kt b/app/src/main/java/com/quranapp/android/components/transls/TranslTitleModel.kt index 85f1c64a..5efd0c85 100644 --- a/app/src/main/java/com/quranapp/android/components/transls/TranslTitleModel.kt +++ b/app/src/main/java/com/quranapp/android/components/transls/TranslTitleModel.kt @@ -3,4 +3,4 @@ */ package com.quranapp.android.components.transls -class TranslTitleModel(val langCode: String, var langName: String?) : TranslBaseModel() \ No newline at end of file +class TranslTitleModel(val langCode: String, var langName: String?) : TranslBaseModel() diff --git a/app/src/main/java/com/quranapp/android/components/transls/TranslationGroupModel.kt b/app/src/main/java/com/quranapp/android/components/transls/TranslationGroupModel.kt index e8e77394..28e16ebb 100644 --- a/app/src/main/java/com/quranapp/android/components/transls/TranslationGroupModel.kt +++ b/app/src/main/java/com/quranapp/android/components/transls/TranslationGroupModel.kt @@ -11,4 +11,4 @@ class TranslationGroupModel( val transls: List ) { var view: ViewGroup? = null -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/db/bookmark/BookmarkDBHelper.java b/app/src/main/java/com/quranapp/android/db/bookmark/BookmarkDBHelper.java index 29416266..3bc3ec44 100644 --- a/app/src/main/java/com/quranapp/android/db/bookmark/BookmarkDBHelper.java +++ b/app/src/main/java/com/quranapp/android/db/bookmark/BookmarkDBHelper.java @@ -1,13 +1,5 @@ package com.quranapp.android.db.bookmark; -import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_CHAPTER_NO; -import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_DATETIME; -import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_FROM_VERSE_NO; -import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_NOTE; -import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_TO_VERSE_NO; -import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.TABLE_NAME; -import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry._ID; - import android.content.ContentValues; import android.content.Context; import android.database.Cursor; @@ -15,8 +7,14 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.widget.Toast; - import androidx.annotation.NonNull; +import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_CHAPTER_NO; +import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_DATETIME; +import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_FROM_VERSE_NO; +import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_NOTE; +import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_TO_VERSE_NO; +import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.TABLE_NAME; +import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry._ID; import com.quranapp.android.R; import com.quranapp.android.components.bookmark.BookmarkModel; @@ -40,12 +38,12 @@ public BookmarkDBHelper(@NonNull Context context) { @Override public void onCreate(SQLiteDatabase DB) { final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + - _ID + " INTEGER PRIMARY KEY," + - COL_CHAPTER_NO + " INTEGER," + - COL_FROM_VERSE_NO + " INTEGER," + - COL_TO_VERSE_NO + " INTEGER," + - COL_DATETIME + " TEXT," + - COL_NOTE + " TEXT)"; + _ID + " INTEGER PRIMARY KEY," + + COL_CHAPTER_NO + " INTEGER," + + COL_FROM_VERSE_NO + " INTEGER," + + COL_TO_VERSE_NO + " INTEGER," + + COL_DATETIME + " TEXT," + + COL_NOTE + " TEXT)"; DB.execSQL(CREATE_TABLE); } @@ -172,9 +170,9 @@ public boolean isBookmarked(int chapterNo, int fromVerse, int toVerse) { String selection = DBUtils.createDBSelection(COL_CHAPTER_NO, COL_FROM_VERSE_NO, COL_TO_VERSE_NO); String[] selectionArgs = { - String.valueOf(chapterNo), - String.valueOf(fromVerse), - String.valueOf(toVerse) + String.valueOf(chapterNo), + String.valueOf(fromVerse), + String.valueOf(toVerse) }; long count = DatabaseUtils.queryNumEntries(db, TABLE_NAME, selection, selectionArgs); diff --git a/app/src/main/java/com/quranapp/android/db/readHistory/ReadHistoryDBHelper.java b/app/src/main/java/com/quranapp/android/db/readHistory/ReadHistoryDBHelper.java index 185b36f4..1e308dce 100644 --- a/app/src/main/java/com/quranapp/android/db/readHistory/ReadHistoryDBHelper.java +++ b/app/src/main/java/com/quranapp/android/db/readHistory/ReadHistoryDBHelper.java @@ -1,5 +1,12 @@ package com.quranapp.android.db.readHistory; +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.DatabaseUtils; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import androidx.annotation.NonNull; import static com.quranapp.android.db.readHistory.ReadHistoryContract.ReadHistoryEntry.COL_CHAPTER_NO; import static com.quranapp.android.db.readHistory.ReadHistoryContract.ReadHistoryEntry.COL_DATETIME; import static com.quranapp.android.db.readHistory.ReadHistoryContract.ReadHistoryEntry.COL_FROM_VERSE_NO; @@ -11,15 +18,6 @@ import static com.quranapp.android.db.readHistory.ReadHistoryContract.ReadHistoryEntry._ID; import static java.lang.String.valueOf; -import android.content.ContentValues; -import android.content.Context; -import android.database.Cursor; -import android.database.DatabaseUtils; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; - -import androidx.annotation.NonNull; - import com.quranapp.android.components.readHistory.ReadHistoryModel; import com.quranapp.android.interfaceUtils.OnResultReadyCallback; import com.quranapp.android.utils.univ.DBUtils; @@ -40,14 +38,14 @@ public ReadHistoryDBHelper(@NonNull Context context) { @Override public void onCreate(SQLiteDatabase DB) { final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + - _ID + " INTEGER PRIMARY KEY," + - COL_READ_TYPE + " INTEGER," + - COL_READER_STYLE + " INTEGER," + - COL_JUZ_NO + " INTEGER," + - COL_CHAPTER_NO + " INTEGER," + - COL_FROM_VERSE_NO + " INTEGER," + - COL_TO_VERSE_NO + " INTEGER," + - COL_DATETIME + " TEXT)"; + _ID + " INTEGER PRIMARY KEY," + + COL_READ_TYPE + " INTEGER," + + COL_READER_STYLE + " INTEGER," + + COL_JUZ_NO + " INTEGER," + + COL_CHAPTER_NO + " INTEGER," + + COL_FROM_VERSE_NO + " INTEGER," + + COL_TO_VERSE_NO + " INTEGER," + + COL_DATETIME + " TEXT)"; DB.execSQL(CREATE_TABLE); } @@ -66,48 +64,52 @@ public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { private void removeOldHistories() { SQLiteDatabase db = getWritableDatabase(); db.execSQL("DELETE FROM " + TABLE_NAME + "" + - " WHERE " + _ID + " IN " + - "(SELECT " + _ID + " FROM " + TABLE_NAME + " ORDER BY " + _ID + " DESC LIMIT -1 OFFSET " + HISTORY_LIMIT + ");"); + " WHERE " + _ID + " IN " + + "(SELECT " + _ID + " FROM " + TABLE_NAME + " ORDER BY " + _ID + " DESC LIMIT -1 OFFSET " + HISTORY_LIMIT + ");"); } private boolean isAlreadyAdded(int readType, int readStyle, int juzNo, int chapterNo, int fromVerse, int toVerse) { SQLiteDatabase db = getReadableDatabase(); String selection = DBUtils.createDBSelection(COL_READ_TYPE, COL_READER_STYLE, COL_JUZ_NO, - COL_CHAPTER_NO, COL_FROM_VERSE_NO, COL_TO_VERSE_NO); + COL_CHAPTER_NO, COL_FROM_VERSE_NO, COL_TO_VERSE_NO); String[] selectionArgs = { - valueOf(readType), - valueOf(readStyle), - valueOf(juzNo), - valueOf(chapterNo), - valueOf(fromVerse), - valueOf(toVerse) + valueOf(readType), + valueOf(readStyle), + valueOf(juzNo), + valueOf(chapterNo), + valueOf(fromVerse), + valueOf(toVerse) }; return DatabaseUtils.queryNumEntries(db, TABLE_NAME, selection, selectionArgs) > 0; } - private void deleteHistory(SQLiteDatabase db, int readType, int readStyle, int juzNo, - int chapterNo, int fromVerse, int toVerse) { + private void deleteHistory( + SQLiteDatabase db, int readType, int readStyle, int juzNo, + int chapterNo, int fromVerse, int toVerse + ) { if (db == null) { db = getWritableDatabase(); } String where = DBUtils.createDBSelection(COL_READ_TYPE, COL_READER_STYLE, COL_JUZ_NO, - COL_CHAPTER_NO, COL_FROM_VERSE_NO, COL_TO_VERSE_NO); + COL_CHAPTER_NO, COL_FROM_VERSE_NO, COL_TO_VERSE_NO); String[] whereArgs = { - valueOf(readType), - valueOf(readStyle), - valueOf(juzNo), - valueOf(chapterNo), - valueOf(fromVerse), - valueOf(toVerse) + valueOf(readType), + valueOf(readStyle), + valueOf(juzNo), + valueOf(chapterNo), + valueOf(fromVerse), + valueOf(toVerse) }; db.delete(TABLE_NAME, where, whereArgs); } - public void addToHistory(int readType, int readStyle, int juzNo, int chapterNo, int fromVerse, int toVerse, - OnResultReadyCallback callback) { + public void addToHistory( + int readType, int readStyle, int juzNo, int chapterNo, int fromVerse, int toVerse, + OnResultReadyCallback callback + ) { SQLiteDatabase db = getWritableDatabase(); @@ -131,7 +133,8 @@ public void addToHistory(int readType, int readStyle, int juzNo, int chapterNo, removeOldHistories(); if (inserted && callback != null) { - callback.onReady(new ReadHistoryModel(rowId, readType, readStyle, juzNo, chapterNo, fromVerse, toVerse, dateTime)); + callback.onReady( + new ReadHistoryModel(rowId, readType, readStyle, juzNo, chapterNo, fromVerse, toVerse, dateTime)); } } @@ -155,7 +158,8 @@ public List getAllHistories(int limit) { int toVerseNo = cursor.getInt(cursor.getColumnIndexOrThrow(COL_TO_VERSE_NO)); String date = cursor.getString(cursor.getColumnIndexOrThrow(COL_DATETIME)); - ReadHistoryModel model = new ReadHistoryModel(id, readType, readerStyle, juzNo, chapterNo, fromVerseNo, toVerseNo, date); + ReadHistoryModel model = new ReadHistoryModel(id, readType, readerStyle, juzNo, chapterNo, fromVerseNo, + toVerseNo, date); verses.add(model); } cursor.close(); diff --git a/app/src/main/java/com/quranapp/android/db/recitation/RecitationDBHelper.java b/app/src/main/java/com/quranapp/android/db/recitation/RecitationDBHelper.java index 079c9497..50ad074e 100644 --- a/app/src/main/java/com/quranapp/android/db/recitation/RecitationDBHelper.java +++ b/app/src/main/java/com/quranapp/android/db/recitation/RecitationDBHelper.java @@ -1,5 +1,9 @@ package com.quranapp.android.db.recitation; +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import androidx.annotation.NonNull; import static com.quranapp.android.db.recitation.RecitationContract.RecitationEntry.COL_IS_PREMIUM; import static com.quranapp.android.db.recitation.RecitationContract.RecitationEntry.COL_RECITER; import static com.quranapp.android.db.recitation.RecitationContract.RecitationEntry.COL_SLUG; @@ -9,12 +13,6 @@ import static com.quranapp.android.db.recitation.RecitationContract.RecitationEntry.TABLE_NAME; import static com.quranapp.android.db.recitation.RecitationContract.RecitationEntry._ID; -import android.content.Context; -import android.database.sqlite.SQLiteDatabase; -import android.database.sqlite.SQLiteOpenHelper; - -import androidx.annotation.NonNull; - public class RecitationDBHelper extends SQLiteOpenHelper { private static final String DB_NAME = "Recitation.db"; public static final int DB_VERSION = 1; @@ -27,13 +25,13 @@ public RecitationDBHelper(@NonNull Context context) { @Override public void onCreate(SQLiteDatabase DB) { final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + - _ID + " INTEGER PRIMARY KEY," + - COL_SLUG + " TEXT," + - COL_RECITER + " TEXT," + - COL_STYLE + " TEXT," + - COL_URL_HOST + " TEXT," + - COL_URL_PATH + " TEXT," + - COL_IS_PREMIUM + " BOOLEAN)"; + _ID + " INTEGER PRIMARY KEY," + + COL_SLUG + " TEXT," + + COL_RECITER + " TEXT," + + COL_STYLE + " TEXT," + + COL_URL_HOST + " TEXT," + + COL_URL_PATH + " TEXT," + + COL_IS_PREMIUM + " BOOLEAN)"; DB.execSQL(CREATE_TABLE); } diff --git a/app/src/main/java/com/quranapp/android/db/search/SearchHistoryDBHelper.java b/app/src/main/java/com/quranapp/android/db/search/SearchHistoryDBHelper.java index bf2d438e..e669b7d2 100644 --- a/app/src/main/java/com/quranapp/android/db/search/SearchHistoryDBHelper.java +++ b/app/src/main/java/com/quranapp/android/db/search/SearchHistoryDBHelper.java @@ -1,10 +1,5 @@ package com.quranapp.android.db.search; -import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_DATETIME; -import static com.quranapp.android.db.search.SearchHistoryContract.SearchEntry.COL_TEXT; -import static com.quranapp.android.db.search.SearchHistoryContract.SearchEntry.TABLE_NAME; -import static com.quranapp.android.db.search.SearchHistoryContract.SearchEntry._ID; - import android.content.ContentValues; import android.content.Context; import android.database.Cursor; @@ -12,8 +7,11 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.text.TextUtils; - import androidx.annotation.NonNull; +import static com.quranapp.android.db.bookmark.BookmarkContract.BookmarkEntry.COL_DATETIME; +import static com.quranapp.android.db.search.SearchHistoryContract.SearchEntry.COL_TEXT; +import static com.quranapp.android.db.search.SearchHistoryContract.SearchEntry.TABLE_NAME; +import static com.quranapp.android.db.search.SearchHistoryContract.SearchEntry._ID; import com.quranapp.android.components.search.SearchHistoryModel; import com.quranapp.android.components.search.SearchResultModelBase; @@ -33,9 +31,9 @@ public SearchHistoryDBHelper(@NonNull Context context) { @Override public void onCreate(SQLiteDatabase DB) { final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + - _ID + " INTEGER PRIMARY KEY," + - COL_TEXT + " TEXT," + - SearchHistoryContract.SearchEntry.COL_DATE + " TEXT)"; + _ID + " INTEGER PRIMARY KEY," + + COL_TEXT + " TEXT," + + SearchHistoryContract.SearchEntry.COL_DATE + " TEXT)"; DB.execSQL(CREATE_TABLE); } diff --git a/app/src/main/java/com/quranapp/android/db/transl/QuranTranslDBHelper.kt b/app/src/main/java/com/quranapp/android/db/transl/QuranTranslDBHelper.kt index 4c60373f..aaebebfb 100644 --- a/app/src/main/java/com/quranapp/android/db/transl/QuranTranslDBHelper.kt +++ b/app/src/main/java/com/quranapp/android/db/transl/QuranTranslDBHelper.kt @@ -10,18 +10,23 @@ import android.content.ContentValues import android.content.Context import android.database.sqlite.SQLiteDatabase import android.database.sqlite.SQLiteOpenHelper -import com.quranapp.android.utils.Log import com.quranapp.android.components.quran.subcomponents.QuranTranslBookInfo import com.quranapp.android.db.transl.QuranTranslContract.QuranTranslEntry.* import com.quranapp.android.db.transl.QuranTranslInfoContract.QuranTranslInfoEntry +import com.quranapp.android.utils.Log import com.quranapp.android.utils.quran.QuranConstants import com.quranapp.android.utils.reader.TranslUtils import com.quranapp.android.utils.univ.FileUtils import com.quranapp.android.utils.univ.StringUtils -import org.json.JSONObject import java.io.File +import org.json.JSONObject -class QuranTranslDBHelper(private val context: Context) : SQLiteOpenHelper(context, DB_NAME, null, DB_VERSION) { +class QuranTranslDBHelper(private val context: Context) : SQLiteOpenHelper( + context, + DB_NAME, + null, + DB_VERSION +) { companion object { private const val DB_NAME = "QuranTranslation.db" const val DB_VERSION = 1 @@ -56,7 +61,9 @@ class QuranTranslDBHelper(private val context: Context) : SQLiteOpenHelper(conte try { for (bookInfo in TranslUtils.preBuiltTranslBooksInfo()) { val prebuiltTranslPath = TranslUtils.getPrebuiltTranslPath(bookInfo.slug) - val translStrData = StringUtils.readInputStream(context.assets.open(prebuiltTranslPath)) + val translStrData = StringUtils.readInputStream( + context.assets.open(prebuiltTranslPath) + ) storeTranslation(bookInfo, translStrData, DB) } @@ -88,22 +95,24 @@ class QuranTranslDBHelper(private val context: Context) : SQLiteOpenHelper(conte e.printStackTrace() } finally { fileUtils.deleteDirWithChildren(translDir) - Log.d("Migration finished anyhow, deleting root translation directory: " + translDir.name) + Log.d( + "Migration finished anyhow, deleting root translation directory: " + translDir.name + ) } } private fun createTranslInfoTable(DB: SQLiteDatabase) { DB.execSQL( "CREATE TABLE ${QuranTranslInfoEntry.TABLE_NAME} (" + - "${QuranTranslInfoEntry.COL_SLUG} TEXT PRIMARY KEY," + - "${QuranTranslInfoEntry.COL_LANG_CODE} TEXT," + - "${QuranTranslInfoEntry.COL_LANG_NAME} TEXT," + - "${QuranTranslInfoEntry.COL_BOOK_NAME} TEXT," + - "${QuranTranslInfoEntry.COL_AUTHOR_NAME} TEXT," + - "${QuranTranslInfoEntry.COL_DISPLAY_NAME} TEXT," + - "${QuranTranslInfoEntry.COL_LAST_UPDATED} LONG," + - "${QuranTranslInfoEntry.COL_DOWNLOAD_PATH} TEXT," + - "${QuranTranslInfoEntry.COL_IS_PREMIUM} BOOLEAN)" + "${QuranTranslInfoEntry.COL_SLUG} TEXT PRIMARY KEY," + + "${QuranTranslInfoEntry.COL_LANG_CODE} TEXT," + + "${QuranTranslInfoEntry.COL_LANG_NAME} TEXT," + + "${QuranTranslInfoEntry.COL_BOOK_NAME} TEXT," + + "${QuranTranslInfoEntry.COL_AUTHOR_NAME} TEXT," + + "${QuranTranslInfoEntry.COL_DISPLAY_NAME} TEXT," + + "${QuranTranslInfoEntry.COL_LAST_UPDATED} LONG," + + "${QuranTranslInfoEntry.COL_DOWNLOAD_PATH} TEXT," + + "${QuranTranslInfoEntry.COL_IS_PREMIUM} BOOLEAN)" ) } @@ -114,15 +123,19 @@ class QuranTranslDBHelper(private val context: Context) : SQLiteOpenHelper(conte private fun createTranslTable(DB: SQLiteDatabase, bookInfo: QuranTranslBookInfo) { DB.execSQL( "CREATE TABLE IF NOT EXISTS ${escapeTableName(bookInfo.slug)} (" + - "$_ID TEXT PRIMARY KEY," + - "$COL_CHAPTER_NO INTEGER," + - "$COL_VERSE_NO INTEGER," + - "$COL_TEXT TEXT," + - "$COL_FOOTNOTES TEXT)" + "$_ID TEXT PRIMARY KEY," + + "$COL_CHAPTER_NO INTEGER," + + "$COL_VERSE_NO INTEGER," + + "$COL_TEXT TEXT," + + "$COL_FOOTNOTES TEXT)" ) } - private fun readAndInsertChapters(DB: SQLiteDatabase, bookInfo: QuranTranslBookInfo, root: JSONObject) { + private fun readAndInsertChapters( + DB: SQLiteDatabase, + bookInfo: QuranTranslBookInfo, + root: JSONObject + ) { val chapters = root.optJSONArray(QuranConstants.KEY_CHAPTER_LIST) ?: return for (i in 0 until chapters.length()) { val chapterObj = chapters.optJSONObject(i) ?: continue @@ -130,7 +143,11 @@ class QuranTranslDBHelper(private val context: Context) : SQLiteOpenHelper(conte } } - private fun readAndInsertSingleChapter(DB: SQLiteDatabase, bookInfo: QuranTranslBookInfo, chapterObj: JSONObject) { + private fun readAndInsertSingleChapter( + DB: SQLiteDatabase, + bookInfo: QuranTranslBookInfo, + chapterObj: JSONObject + ) { val chapterNo = chapterObj.optInt(QuranConstants.KEY_NUMBER, -1) val verses = chapterObj.optJSONArray(QuranConstants.KEY_VERSE_LIST) ?: return for (i in 0 until verses.length()) { @@ -196,4 +213,4 @@ class QuranTranslDBHelper(private val context: Context) : SQLiteOpenHelper(conte fun storeTranslation(bookInfo: QuranTranslBookInfo, translData: String) { storeTranslation(bookInfo, translData, writableDatabase) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/frags/BaseFragment.java b/app/src/main/java/com/quranapp/android/frags/BaseFragment.java index 5ca575aa..ac44af48 100644 --- a/app/src/main/java/com/quranapp/android/frags/BaseFragment.java +++ b/app/src/main/java/com/quranapp/android/frags/BaseFragment.java @@ -6,7 +6,6 @@ import android.os.Bundle; import android.view.View; import android.view.inputmethod.InputMethodManager; - import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; @@ -21,7 +20,7 @@ import com.quranapp.android.utils.receivers.NetworkStateReceiver.NetworkStateReceiverListener; public abstract class BaseFragment extends ResHelperFragment implements NetworkStateReceiverListener, - ActivityResultStarter { + ActivityResultStarter { private final ActivityResultLauncher mActivityResultLauncher = activityResultHandler(); private NetworkStateReceiver mNetworkReceiver; diff --git a/app/src/main/java/com/quranapp/android/frags/ResHelperFragment.java b/app/src/main/java/com/quranapp/android/frags/ResHelperFragment.java index 4adf4c06..01885d20 100644 --- a/app/src/main/java/com/quranapp/android/frags/ResHelperFragment.java +++ b/app/src/main/java/com/quranapp/android/frags/ResHelperFragment.java @@ -13,7 +13,6 @@ import android.content.res.Configuration; import android.graphics.Typeface; import android.graphics.drawable.Drawable; - import androidx.annotation.ArrayRes; import androidx.annotation.ColorInt; import androidx.annotation.ColorRes; diff --git a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorBG.java b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorBG.java index 073a3df9..f5fc9f6b 100644 --- a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorBG.java +++ b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorBG.java @@ -4,8 +4,6 @@ package com.quranapp.android.frags.editshare; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; - import android.app.Activity; import android.content.Context; import android.content.Intent; @@ -18,13 +16,13 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.activity.result.ActivityResult; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import com.quranapp.android.adapters.editor.ADPEditorBG; import com.quranapp.android.components.editor.EditorBG; diff --git a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorBase.java b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorBase.java index d1631073..881fc709 100644 --- a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorBase.java +++ b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorBase.java @@ -7,7 +7,6 @@ import android.content.Context; import android.os.Bundle; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -26,7 +25,8 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat Context context = view.getContext(); view.setBackgroundColor(ContextKt.color(context, R.color.colorBGPage)); - ViewPaddingKt.updatePaddingVertical(view, ContextKt.dp2px(context, 10), ContextKt.getDimenPx(context, R.dimen.dmnPadBig)); + ViewPaddingKt.updatePaddingVertical(view, ContextKt.dp2px(context, 10), + ContextKt.getDimenPx(context, R.dimen.dmnPadBig)); } public void setEditor(VerseEditor verseEditor) { diff --git a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorColors.java b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorColors.java index 78e6fae0..db431ff7 100644 --- a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorColors.java +++ b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorColors.java @@ -9,7 +9,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.GridLayoutManager; @@ -54,7 +53,8 @@ private void setupTabs(TabLayout2 tabLayout) { for (int i = 0, l = labels.length; i < l; i++) { TabLayout.Tab tab = tabLayout.newTab(); - LytReaderIndexTabBinding binding = LytReaderIndexTabBinding.inflate(LayoutInflater.from(tabLayout.getContext())); + LytReaderIndexTabBinding binding = LytReaderIndexTabBinding.inflate( + LayoutInflater.from(tabLayout.getContext())); tab.setCustomView(binding.getRoot()); binding.tabTitle.setText(labels[i]); diff --git a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorFG.java b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorFG.java index c8dedc89..607c6388 100644 --- a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorFG.java +++ b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorFG.java @@ -4,18 +4,16 @@ package com.quranapp.android.frags.editshare; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; - import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import com.quranapp.android.adapters.editor.ADPEditorFG; import com.quranapp.android.components.editor.VerseEditor; diff --git a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorOptions.java b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorOptions.java index f9995db6..effdc846 100644 --- a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorOptions.java +++ b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorOptions.java @@ -4,23 +4,21 @@ package com.quranapp.android.frags.editshare; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.widget.NestedScrollView; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import com.quranapp.android.widgets.checkbox.PeaceCheckBox; import com.quranapp.android.R; import com.quranapp.android.utils.extensions.ViewPaddingKt; +import com.quranapp.android.widgets.checkbox.PeaceCheckBox; import com.quranapp.android.widgets.compound.PeaceCompoundButton; import kotlin.Unit; @@ -59,11 +57,11 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat private void init(LinearLayout container) { mIncludeAr = makeCheckbox(container, R.string.strLabelIncludeArabic, - (buttonView, isChecked) -> dispatchOptions(isChecked, mIncludeTrans.isChecked(), mIncludeRef.isChecked())); + (buttonView, isChecked) -> dispatchOptions(isChecked, mIncludeTrans.isChecked(), mIncludeRef.isChecked())); mIncludeTrans = makeCheckbox(container, R.string.strLabelIncludeTranslation, - (buttonView, isChecked) -> dispatchOptions(mIncludeAr.isChecked(), isChecked, mIncludeRef.isChecked())); + (buttonView, isChecked) -> dispatchOptions(mIncludeAr.isChecked(), isChecked, mIncludeRef.isChecked())); mIncludeRef = makeCheckbox(container, R.string.strLabelIncludeReference, - (buttonView, isChecked) -> dispatchOptions(mIncludeAr.isChecked(), mIncludeTrans.isChecked(), isChecked)); + (buttonView, isChecked) -> dispatchOptions(mIncludeAr.isChecked(), mIncludeTrans.isChecked(), isChecked)); setOptionsVisibility(mInitShowAr, mInitShowTrans, mInitShowRef); } diff --git a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorSize.java b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorSize.java index b44f08b6..7a70d988 100644 --- a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorSize.java +++ b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorSize.java @@ -4,8 +4,6 @@ package com.quranapp.android.frags.editshare; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; - import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; @@ -13,10 +11,10 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.SeekBar; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.widget.NestedScrollView; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import com.quranapp.android.R; import com.quranapp.android.databinding.LytSeekbarBinding; diff --git a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorTransls.java b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorTransls.java index d027d8f2..1c0b5578 100644 --- a/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorTransls.java +++ b/app/src/main/java/com/quranapp/android/frags/editshare/FragEditorTransls.java @@ -4,9 +4,6 @@ package com.quranapp.android.frags.editshare; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.graphics.Typeface; import android.os.Bundle; @@ -15,19 +12,20 @@ import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.core.widget.NestedScrollView; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; -import com.quranapp.android.widgets.radio.PeaceRadioButton; -import com.quranapp.android.widgets.radio.PeaceRadioGroup; import com.quranapp.android.R; import com.quranapp.android.components.quran.subcomponents.TranslationBook; import com.quranapp.android.utils.extensions.ViewPaddingKt; import com.quranapp.android.utils.sharedPrefs.SPReader; +import com.quranapp.android.widgets.radio.PeaceRadioButton; +import com.quranapp.android.widgets.radio.PeaceRadioGroup; import java.util.Set; diff --git a/app/src/main/java/com/quranapp/android/frags/main/FragMain.java b/app/src/main/java/com/quranapp/android/frags/main/FragMain.java index 75ed02ee..c303f496 100644 --- a/app/src/main/java/com/quranapp/android/frags/main/FragMain.java +++ b/app/src/main/java/com/quranapp/android/frags/main/FragMain.java @@ -5,7 +5,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.asynclayoutinflater.view.AsyncLayoutInflater; @@ -140,7 +139,8 @@ private void initFeaturedReading(View root, QuranMeta quranMeta) { mBinding.container.addView(readingLayout, resolvePosFeaturedReading(root)); readingLayout.post(() -> { readingLayout.refresh(quranMeta); - QuranDua.Companion.prepareInstance(root.getContext(), quranMeta, quranDua -> initFeaturedDua(root, quranMeta, quranDua)); + QuranDua.Companion.prepareInstance(root.getContext(), quranMeta, + quranDua -> initFeaturedDua(root, quranMeta, quranDua)); }); } @@ -152,7 +152,7 @@ private void initFeaturedDua(View root, QuranMeta quranMeta, QuranDua quranDua) String title = context.getString(R.string.strTitleDuas); String desc = context.getString(R.string.strMsgReferenceDuas); ReaderFactory.startReferenceVerse(context, true, title, desc, new String[]{}, quranDua.getChapters(), - quranDua.getVerses()); + quranDua.getVerses()); }); binding.getRoot().setOnTouchListener(new HoverOpacityEffect()); mBinding.container.addView(binding.getRoot(), resolvePosFeaturedDua(root)); diff --git a/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardRecitation.java b/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardRecitation.java index 7166f722..0f1c7911 100644 --- a/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardRecitation.java +++ b/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardRecitation.java @@ -6,20 +6,18 @@ package com.quranapp.android.frags.onboard; -import static android.view.View.GONE; -import static android.view.View.VISIBLE; - import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; import com.quranapp.android.R; import com.quranapp.android.adapters.recitation.ADPRecitations; @@ -111,7 +109,7 @@ private void initPageAlert(Context ctx) { private void noRecitersAvailable() { showAlert(R.string.strMsgRecitationsNoAvailable, R.string.strLabelRefresh, - () -> refresh(mBinding.list, true)); + () -> refresh(mBinding.list, true)); } private void showLoader() { diff --git a/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardThemes.java b/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardThemes.java index 9a25ffce..59a03fa3 100644 --- a/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardThemes.java +++ b/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardThemes.java @@ -10,7 +10,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardTransls.java b/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardTransls.java index 7b2fe4b8..bad4cacc 100644 --- a/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardTransls.java +++ b/app/src/main/java/com/quranapp/android/frags/onboard/FragOnBoardTransls.java @@ -10,7 +10,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; @@ -61,19 +60,20 @@ private void initTranslations(RecyclerView list) { } private void showTransls(RecyclerView list) { - mTranslTaskRunner.callAsync(new FragSettingsTransl.LoadTranslsTask(FileUtils.newInstance(list.getContext()), mTranslSlugs) { - @Override - public void onComplete(List translItems) { - if (!translItems.isEmpty()) { - populateTransls(list, translItems); + mTranslTaskRunner.callAsync( + new FragSettingsTransl.LoadTranslsTask(FileUtils.newInstance(list.getContext()), mTranslSlugs) { + @Override + public void onComplete(List translItems) { + if (!translItems.isEmpty()) { + populateTransls(list, translItems); + } } - } - }); + }); } private void populateTransls(RecyclerView list, List translItems) { ADPTransls adapter = new ADPTransls(list.getContext(), translItems, false, - (ctx, model, isSelected) -> TranslUtils.resolveSelectionChange(ctx, mTranslSlugs, model, isSelected, true)); + (ctx, model, isSelected) -> TranslUtils.resolveSelectionChange(ctx, mTranslSlugs, model, isSelected, true)); list.setAdapter(adapter); } } diff --git a/app/src/main/java/com/quranapp/android/frags/readerindex/BaseFragReaderIndex.java b/app/src/main/java/com/quranapp/android/frags/readerindex/BaseFragReaderIndex.java index 0ec75a09..84525972 100644 --- a/app/src/main/java/com/quranapp/android/frags/readerindex/BaseFragReaderIndex.java +++ b/app/src/main/java/com/quranapp/android/frags/readerindex/BaseFragReaderIndex.java @@ -7,7 +7,6 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quranapp/android/frags/readerindex/FragReaderIndexChapters.java b/app/src/main/java/com/quranapp/android/frags/readerindex/FragReaderIndexChapters.java index 5ecae868..70d12bb8 100644 --- a/app/src/main/java/com/quranapp/android/frags/readerindex/FragReaderIndexChapters.java +++ b/app/src/main/java/com/quranapp/android/frags/readerindex/FragReaderIndexChapters.java @@ -1,10 +1,8 @@ package com.quranapp.android.frags.readerindex; -import static androidx.recyclerview.widget.RecyclerView.VERTICAL; - import android.content.Context; - import androidx.recyclerview.widget.GridLayoutManager; +import static androidx.recyclerview.widget.RecyclerView.VERTICAL; import com.peacedesign.android.utils.WindowUtils; import com.quranapp.android.adapters.quranIndex.ADPChaptersList; diff --git a/app/src/main/java/com/quranapp/android/frags/readerindex/FragReaderIndexJuz.java b/app/src/main/java/com/quranapp/android/frags/readerindex/FragReaderIndexJuz.java index e08e3a28..4cb6f499 100644 --- a/app/src/main/java/com/quranapp/android/frags/readerindex/FragReaderIndexJuz.java +++ b/app/src/main/java/com/quranapp/android/frags/readerindex/FragReaderIndexJuz.java @@ -1,7 +1,6 @@ package com.quranapp.android.frags.readerindex; import android.content.Context; - import androidx.recyclerview.widget.LinearLayoutManager; import com.quranapp.android.adapters.quranIndex.ADPJuzList; diff --git a/app/src/main/java/com/quranapp/android/frags/search/FragSearchResult.kt b/app/src/main/java/com/quranapp/android/frags/search/FragSearchResult.kt index 03f774db..3d1a54a2 100644 --- a/app/src/main/java/com/quranapp/android/frags/search/FragSearchResult.kt +++ b/app/src/main/java/com/quranapp/android/frags/search/FragSearchResult.kt @@ -7,7 +7,6 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import com.peacedesign.android.utils.Dimen -import com.quranapp.android.utils.Log import com.quranapp.android.R import com.quranapp.android.activities.ActivitySearch import com.quranapp.android.adapters.search.ADPVerseResults @@ -20,6 +19,7 @@ import com.quranapp.android.databinding.FragSearchResultsBinding import com.quranapp.android.db.transl.QuranTranslContract.QuranTranslEntry.* import com.quranapp.android.frags.BaseFragment import com.quranapp.android.interfaceUtils.Destroyable +import com.quranapp.android.utils.Log import com.quranapp.android.utils.extended.GapedItemDecoration import com.quranapp.android.utils.search.SearchFilters import com.quranapp.android.utils.thread.runner.CallableTaskRunner @@ -44,7 +44,11 @@ class FragSearchResult : BaseFragment(), Destroyable { } } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View { if (firstTime || !::mBinding.isInitialized) { mBinding = FragSearchResultsBinding.inflate(inflater, container, false) } @@ -166,21 +170,33 @@ class FragSearchResult : BaseFragment(), Destroyable { mBinding.loader.visibility = View.GONE if (isVisible) { activity.mBinding.filter.visibility = View.VISIBLE - activity.mBinding.voiceSearch.visibility = if (activity.mSupportsVoiceInput) View.VISIBLE else View.GONE + activity.mBinding.voiceSearch.visibility = + if (activity.mSupportsVoiceInput) View.VISIBLE else View.GONE } } }) } fun searchInDB( - actvt: ActivitySearch, meta: QuranMeta, - results: ArrayList, slug: String, - query: String, limit: Int, offset: Int, - resultCount: AtomicInteger, pattern: Pattern + actvt: ActivitySearch, + meta: QuranMeta, + results: ArrayList, + slug: String, + query: String, + limit: Int, + offset: Int, + resultCount: AtomicInteger, + pattern: Pattern ) { val bookInfo = actvt.mTranslFactory.getTranslationBookInfo(slug) val db = actvt.mTranslFactory.dbHelper.readableDatabase - val rawQuery = actvt.mTranslFactory.prepareQuerySingle(actvt.mSearchFilters, query, slug, limit, offset) + val rawQuery = actvt.mTranslFactory.prepareQuerySingle( + actvt.mSearchFilters, + query, + slug, + limit, + offset + ) val cursor = db.rawQuery(rawQuery, null, null) Log.d(rawQuery, Arrays.toString(cursor.columnNames), cursor.count) @@ -204,7 +220,9 @@ class FragSearchResult : BaseFragment(), Destroyable { translation.text = StringUtils.removeHTML(translation.text, false) if ("en" == bookInfo.langCode) { - translation.text = org.apache.commons.lang3.StringUtils.stripAccents(translation.text) + translation.text = org.apache.commons.lang3.StringUtils.stripAccents( + translation.text + ) } val matcher = pattern.matcher(translation.text) @@ -246,10 +264,15 @@ class FragSearchResult : BaseFragment(), Destroyable { } private fun prepareVerseResult( - activity: ActivitySearch, quranMeta: QuranMeta, - chapterNo: Int, verseNo: Int, - translSlugs: Set, translDisplayNames: List, translations: List, - startIndices: List, endIndices: List + activity: ActivitySearch, + quranMeta: QuranMeta, + chapterNo: Int, + verseNo: Int, + translSlugs: Set, + translDisplayNames: List, + translations: List, + startIndices: List, + endIndices: List ): VerseResultModel { return VerseResultModel().apply { this.chapterNo = chapterNo @@ -264,4 +287,4 @@ class FragSearchResult : BaseFragment(), Destroyable { this.endIndices = endIndices } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/frags/search/FragSearchSuggestions.java b/app/src/main/java/com/quranapp/android/frags/search/FragSearchSuggestions.java index 9ea921d0..377e9e22 100644 --- a/app/src/main/java/com/quranapp/android/frags/search/FragSearchSuggestions.java +++ b/app/src/main/java/com/quranapp/android/frags/search/FragSearchSuggestions.java @@ -1,7 +1,5 @@ package com.quranapp.android.frags.search; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; - import android.content.Context; import android.os.Bundle; import android.text.SpannableString; @@ -11,12 +9,12 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.core.text.HtmlCompat; import androidx.recyclerview.widget.LinearLayoutManager; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.peacedesign.android.utils.span.RoundedBG_FGSpan; import com.quranapp.android.R; @@ -126,9 +124,10 @@ private SpannableString setBGAndFCSpan(String string, boolean setBG) { SpannableString spannable = new SpannableString(spanned); if (setBG) { spannable.setSpan(new RoundedBG_FGSpan(spannableBGColor, spannableTextColor), 0, spanned.length(), - SPAN_EXCLUSIVE_EXCLUSIVE); + SPAN_EXCLUSIVE_EXCLUSIVE); } else { - spannable.setSpan(new ForegroundColorSpan(spannableTextColor), 0, spanned.length(), SPAN_EXCLUSIVE_EXCLUSIVE); + spannable.setSpan(new ForegroundColorSpan(spannableTextColor), 0, spanned.length(), + SPAN_EXCLUSIVE_EXCLUSIVE); } return spannable; } @@ -142,7 +141,8 @@ private void prepareNShowSugg(ActivitySearch activitySearch, String query, boole ArrayList suggModels = new ArrayList<>(); if (!isEmpty) { - ArrayList jumperSuggs = activitySearch.prepareJumper(activitySearch.mQuranMeta, query); + ArrayList jumperSuggs = activitySearch.prepareJumper(activitySearch.mQuranMeta, + query); suggModels.addAll(jumperSuggs); } diff --git a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsBase.kt b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsBase.kt index e91f49c0..40340d50 100644 --- a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsBase.kt +++ b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsBase.kt @@ -44,7 +44,11 @@ abstract class FragSettingsBase : BaseFragment() { arguments = args } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { return if (shouldCreateScrollerView) { NestedScrollView(inflater.context).apply { id = R.id.scrollView @@ -85,4 +89,4 @@ abstract class FragSettingsBase : BaseFragment() { commit() } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsLanguage.kt b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsLanguage.kt index 2bc8a25a..d04200c3 100644 --- a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsLanguage.kt +++ b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsLanguage.kt @@ -6,8 +6,6 @@ import android.os.Bundle import android.view.View import androidx.core.view.updatePaddingRelative import com.peacedesign.android.utils.WindowUtils -import com.quranapp.android.widgets.compound.PeaceCompoundButton -import com.quranapp.android.widgets.radio.PeaceRadioButton import com.quranapp.android.R import com.quranapp.android.activities.readerSettings.ActivitySettings import com.quranapp.android.databinding.FragSettingsLangBinding @@ -15,6 +13,8 @@ import com.quranapp.android.utils.IntentUtils import com.quranapp.android.utils.sharedPrefs.SPAppConfigs.getLocale import com.quranapp.android.utils.sharedPrefs.SPAppConfigs.setLocale import com.quranapp.android.views.BoldHeader +import com.quranapp.android.widgets.compound.PeaceCompoundButton +import com.quranapp.android.widgets.radio.PeaceRadioButton class FragSettingsLanguage : FragSettingsBase() { private var initialLocale: String? = null @@ -47,8 +47,11 @@ class FragSettingsLanguage : FragSettingsBase() { val availableLocalesValues = strArray(ctx, R.array.availableLocalesValues) val availableLocaleNames = strArray(ctx, R.array.availableLocalesNames) - val forcedTextGravity = if (WindowUtils.isRTL(ctx)) PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_RIGHT - else PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_LEFT + val forcedTextGravity = if (WindowUtils.isRTL(ctx)) { + PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_RIGHT + } else { + PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_LEFT + } var preCheckedRadioId = View.NO_ID @@ -85,10 +88,11 @@ class FragSettingsLanguage : FragSettingsBase() { val localeValue = button.tag as String setLocale(ctx, localeValue) - ctx.sendBroadcast(Intent(IntentUtils.INTENT_ACTION_APP_LANGUAGE_CHANGED).apply { - putExtra("locale", localeValue) - }) + ctx.sendBroadcast( + Intent(IntentUtils.INTENT_ACTION_APP_LANGUAGE_CHANGED).apply { + putExtra("locale", localeValue) + } + ) } } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsMain.java b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsMain.java index 3ce5f957..83df1f16 100644 --- a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsMain.java +++ b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsMain.java @@ -6,26 +6,6 @@ package com.quranapp.android.frags.settings; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.View.GONE; -import static android.view.View.VISIBLE; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static android.widget.LinearLayout.HORIZONTAL; -import static android.widget.LinearLayout.VERTICAL; -import static com.quranapp.android.activities.readerSettings.ActivitySettings.KEY_SETTINGS_DESTINATION; -import static com.quranapp.android.activities.readerSettings.ActivitySettings.SETTINGS_THEME; -import static com.quranapp.android.activities.readerSettings.ActivitySettings.SETTINGS_VOTD; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_VERSES; -import static com.quranapp.android.reader_managers.ReaderParams.READER_STYLE_READING; -import static com.quranapp.android.reader_managers.ReaderParams.READER_STYLE_TRANSLATION; -import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.TEXT_SIZE_MAX_PROGRESS; -import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.TEXT_SIZE_MIN_PROGRESS; -import static com.quranapp.android.utils.univ.Codes.SETTINGS_LAUNCHER_RESULT_CODE; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_SETTING_IS_FROM_READER; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; - import android.annotation.SuppressLint; import android.app.AlarmManager; import android.content.Context; @@ -45,13 +25,31 @@ import android.view.View; import android.widget.LinearLayout; import android.widget.SeekBar; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatDelegate; import androidx.appcompat.widget.AppCompatSeekBar; import androidx.cardview.widget.CardView; import androidx.fragment.app.FragmentResultListener; +import static com.quranapp.android.activities.readerSettings.ActivitySettings.KEY_SETTINGS_DESTINATION; +import static com.quranapp.android.activities.readerSettings.ActivitySettings.SETTINGS_THEME; +import static com.quranapp.android.activities.readerSettings.ActivitySettings.SETTINGS_VOTD; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_VERSES; +import static com.quranapp.android.reader_managers.ReaderParams.READER_STYLE_READING; +import static com.quranapp.android.reader_managers.ReaderParams.READER_STYLE_TRANSLATION; +import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.TEXT_SIZE_MAX_PROGRESS; +import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.TEXT_SIZE_MIN_PROGRESS; +import static com.quranapp.android.utils.univ.Codes.SETTINGS_LAUNCHER_RESULT_CODE; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_SETTING_IS_FROM_READER; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static android.widget.LinearLayout.HORIZONTAL; +import static android.widget.LinearLayout.VERTICAL; import com.google.android.material.tabs.TabLayout; import com.peacedesign.android.utils.DrawableUtils; @@ -84,9 +82,9 @@ import com.quranapp.android.utils.sharedPrefs.SPAppConfigs; import com.quranapp.android.utils.sharedPrefs.SPReader; import com.quranapp.android.utils.sharedPrefs.SPVerses; -import com.quranapp.android.utils.univ.Keys; import com.quranapp.android.utils.simplified.SimpleSeekbarChangeListener; import com.quranapp.android.utils.simplified.SimpleTabSelectorListener; +import com.quranapp.android.utils.univ.Keys; import com.quranapp.android.utils.votd.VOTDUtils; import com.quranapp.android.views.BoldHeader; import com.quranapp.android.widgets.IconedTextView; @@ -615,7 +613,8 @@ public void onProgressChanged(@NonNull SeekBar seekBar, int progress, boolean fr @Override public void onStopTrackingTouch(@NonNull SeekBar seekBar) { final int progress = TEXT_SIZE_MIN_PROGRESS + seekBar.getProgress(); - SPReader.setSavedTextSizeMultArabic(seekBar.getContext(), ReaderTextSizeUtils.calculateMultiplier(progress)); + SPReader.setSavedTextSizeMultArabic(seekBar.getContext(), + ReaderTextSizeUtils.calculateMultiplier(progress)); } }); } @@ -679,7 +678,8 @@ public void onProgressChanged(@NonNull SeekBar seekBar, int progress, boolean fr @Override public void onStopTrackingTouch(@NonNull SeekBar seekBar) { final int progress = TEXT_SIZE_MIN_PROGRESS + seekBar.getProgress(); - SPReader.setSavedTextSizeMultTransl(seekBar.getContext(), ReaderTextSizeUtils.calculateMultiplier(progress)); + SPReader.setSavedTextSizeMultTransl(seekBar.getContext(), + ReaderTextSizeUtils.calculateMultiplier(progress)); } }); } diff --git a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsRecitations.kt b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsRecitations.kt index edc604c7..500dac0d 100644 --- a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsRecitations.kt +++ b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsRecitations.kt @@ -64,7 +64,10 @@ class FragSettingsRecitations : FragSettingsBase() { disableRightBtn(false) setSearchHint(R.string.strHintSearchReciter) - setRightIconRes(R.drawable.dr_icon_refresh, activity.getString(R.string.strLabelRefresh)) + setRightIconRes( + R.drawable.dr_icon_refresh, + activity.getString(R.string.strLabelRefresh) + ) } } @@ -84,7 +87,6 @@ class FragSettingsRecitations : FragSettingsBase() { mPageAlert = PageAlert(ctx) } - private fun refresh(ctx: Context, force: Boolean) { showLoader() RecitationManager.prepare(ctx, force) { @@ -128,7 +130,6 @@ class FragSettingsRecitations : FragSettingsBase() { resetAdapter(found) } - private fun populateTranslations(ctx: Context, models: List) { mModels = models @@ -149,7 +150,9 @@ class FragSettingsRecitations : FragSettingsBase() { } private fun noRecitersAvailable(ctx: Context) { - showAlert(ctx, 0, R.string.strMsgRecitationsNoAvailable, R.string.strLabelRefresh) { refresh(ctx, true) } + showAlert(ctx, 0, R.string.strMsgRecitationsNoAvailable, R.string.strLabelRefresh) { + refresh(ctx, true) + } } private fun showLoader() { @@ -195,7 +198,6 @@ class FragSettingsRecitations : FragSettingsBase() { mPageAlert?.remove() } - private fun noInternet(ctx: Context) { if (mPageAlert == null) { initPageAlert(ctx) @@ -211,4 +213,4 @@ class FragSettingsRecitations : FragSettingsBase() { setShowRightIcon(true) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsScripts.kt b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsScripts.kt index 5fdf567d..7631ae25 100644 --- a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsScripts.kt +++ b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsScripts.kt @@ -54,7 +54,6 @@ class FragSettingsScripts : FragSettingsBase(), ServiceConnection { unregisterDownloadService() } - override fun getFragTitle(ctx: Context): String = ctx.getString(R.string.strTitleScripts) override val layoutResource = 0 @@ -151,7 +150,9 @@ class FragSettingsScripts : FragSettingsBase(), ServiceConnection { val msg = StringBuilder(ctx.getString(R.string.msgDownloadKFQPCResources)).append("\n") if (!scriptDownloaded) { - msg.append("\n").append(ctx.getString(R.string.msgDownloadKFQPCResourcesScript, slug.getQuranScriptName())) + msg.append("\n").append( + ctx.getString(R.string.msgDownloadKFQPCResourcesScript, slug.getQuranScriptName()) + ) } val averageFontKB = 161.23 @@ -184,9 +185,12 @@ class FragSettingsScripts : FragSettingsBase(), ServiceConnection { showProgressDialog(ctx, scriptKey) KFQPCScriptFontsDownloadService.STARTED_BY_USER = true - ContextCompat.startForegroundService(ctx, Intent(ctx, KFQPCScriptFontsDownloadService::class.java).apply { - putExtra(QuranScriptUtils.KEY_SCRIPT, scriptKey) - }) + ContextCompat.startForegroundService( + ctx, + Intent(ctx, KFQPCScriptFontsDownloadService::class.java).apply { + putExtra(QuranScriptUtils.KEY_SCRIPT, scriptKey) + } + ) bindDownloadService(ctx) } @@ -239,7 +243,8 @@ class FragSettingsScripts : FragSettingsBase(), ServiceConnection { if (pageNo != null) { binding.countText.text = ctx.getString( R.string.msgFontsDonwloadProgress, - pageNo - 1, QuranMeta.totalPages() + pageNo - 1, + QuranMeta.totalPages() ) binding.countText.visible() } @@ -278,7 +283,9 @@ class FragSettingsScripts : FragSettingsBase(), ServiceConnection { private fun showCompletedDialog(ctx: Context, isFailed: Boolean) { PeaceDialog.newBuilder(ctx).apply { setTitle(if (isFailed) R.string.strTitleError else R.string.strTitleSuccess) - setMessage(if (isFailed) R.string.msgDownloadFailed else R.string.msgScriptFontsDownloaded) + setMessage( + if (isFailed) R.string.msgDownloadFailed else R.string.msgScriptFontsDownloaded + ) setPositiveButton(R.string.strLabelOkay, null) }.show() } @@ -292,7 +299,11 @@ class FragSettingsScripts : FragSettingsBase(), ServiceConnection { } private fun bindDownloadService(ctx: Context) { - ctx.bindService(Intent(ctx, KFQPCScriptFontsDownloadService::class.java), this, Context.BIND_AUTO_CREATE) + ctx.bindService( + Intent(ctx, KFQPCScriptFontsDownloadService::class.java), + this, + Context.BIND_AUTO_CREATE + ) } private fun unbindDownloadService(actvt: Activity) { @@ -338,4 +349,4 @@ class FragSettingsScripts : FragSettingsBase(), ServiceConnection { return null } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsTransl.java b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsTransl.java index 9bca7986..d1bf23c8 100644 --- a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsTransl.java +++ b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsTransl.java @@ -6,24 +6,22 @@ package com.quranapp.android.frags.settings; -import static android.view.View.GONE; -import static android.view.View.VISIBLE; -import static com.quranapp.android.utils.univ.Codes.SETTINGS_LAUNCHER_RESULT_CODE; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; -import static java.util.regex.Pattern.CASE_INSENSITIVE; -import static java.util.regex.Pattern.DOTALL; - import android.content.Context; import android.os.Bundle; import android.text.TextUtils; import android.view.View; import android.widget.EditText; - import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; +import static com.quranapp.android.utils.univ.Codes.SETTINGS_LAUNCHER_RESULT_CODE; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; +import static java.util.regex.Pattern.CASE_INSENSITIVE; +import static java.util.regex.Pattern.DOTALL; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; import com.quranapp.android.R; import com.quranapp.android.activities.readerSettings.ActivitySettings; @@ -138,7 +136,8 @@ public void onViewReady(@NonNull Context ctx, @NonNull View view, @Nullable Bund private void initPageAlert(Context ctx) { mPageAlert = new PageAlert(ctx); mPageAlert.setMessage(ctx.getString(R.string.strMsgTranslNoDownloads), null); - mPageAlert.setActionButton(R.string.strTitleDownloadTranslations, () -> launchFrag(FragSettingsTranslationsDownload.class, null)); + mPageAlert.setActionButton(R.string.strTitleDownloadTranslations, + () -> launchFrag(FragSettingsTranslationsDownload.class, null)); } private void initTranslations(Context ctx) { @@ -240,7 +239,8 @@ private void search(CharSequence query) { @Override public boolean onSelectionChanged(Context ctx, TranslModel translModel, boolean isSelected) { - boolean succeed = TranslUtils.resolveSelectionChange(ctx, mTranslSlugs, translModel, isSelected, saveTranslChanges); + boolean succeed = TranslUtils.resolveSelectionChange(ctx, mTranslSlugs, translModel, isSelected, + saveTranslChanges); if (succeed) { // Update the args so that it can reflect when this fragment is recreated. Bundle args = getArgs(); @@ -268,8 +268,8 @@ private void beforeFinish() { } getParentFragmentManager().setFragmentResult( - String.valueOf(SETTINGS_LAUNCHER_RESULT_CODE), - getFinishingResult(getContext()) + String.valueOf(SETTINGS_LAUNCHER_RESULT_CODE), + getFinishingResult(getContext()) ); } diff --git a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsTranslationsDownload.kt b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsTranslationsDownload.kt index 1cc49ea9..bca323c5 100644 --- a/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsTranslationsDownload.kt +++ b/app/src/main/java/com/quranapp/android/frags/settings/FragSettingsTranslationsDownload.kt @@ -35,17 +35,20 @@ import com.quranapp.android.utils.univ.StringUtils import com.quranapp.android.views.BoldHeader import com.quranapp.android.views.BoldHeader.BoldHeaderCallback import com.quranapp.android.widgets.PageAlert -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.launch -import kotlinx.serialization.json.* import java.io.File import java.io.IOException import java.util.* import java.util.regex.Pattern +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.serialization.json.* -class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadStateListener, - ServiceConnection, TranslDownloadExplorerImpl { +class FragSettingsTranslationsDownload : + FragSettingsBase(), + TranslDownloadStateListener, + ServiceConnection, + TranslDownloadExplorerImpl { private lateinit var mBinding: FragSettingsTranslBinding private lateinit var mFileUtils: FileUtils @@ -77,7 +80,11 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState } private fun bindTranslService(actvt: Activity) { - actvt.bindService(Intent(actvt, TranslationDownloadService::class.java), this, Context.BIND_AUTO_CREATE) + actvt.bindService( + Intent(actvt, TranslationDownloadService::class.java), + this, + Context.BIND_AUTO_CREATE + ) } private fun unbindTranslationService(actvt: Activity) { @@ -104,7 +111,6 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState mTranslFactory?.close() } - override fun setupHeader(activity: ActivitySettings, header: BoldHeader) { super.setupHeader(activity, header) header.setCallback(object : BoldHeaderCallback { @@ -123,7 +129,10 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState header.setShowSearchIcon(false) header.setShowRightIcon(false) header.setSearchHint(R.string.strHintSearchTranslation) - header.setRightIconRes(R.drawable.dr_icon_refresh, activity.getString(R.string.strLabelRefresh)) + header.setRightIconRes( + R.drawable.dr_icon_refresh, + activity.getString(R.string.strLabelRefresh) + ) } override fun onViewReady(ctx: Context, view: View, savedInstanceState: Bundle?) { @@ -144,7 +153,6 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState mPageAlert = PageAlert(ctx) } - private fun refreshTranslations(ctx: Context, force: Boolean) { showLoader() @@ -219,7 +227,11 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState var traceAddedTranslCount = 0 for (slug in slugs) { - val model = readTranslInfo(langCode, slug, translationsForLanguageCode[slug]!!.jsonObject) + val model = readTranslInfo( + langCode, + slug, + translationsForLanguageCode[slug]!!.jsonObject + ) if (mNewTranslations?.contains(slug) == true) { model.addMiniInfo(ctx.getString(R.string.strLabelNew)) @@ -251,7 +263,6 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState hideLoader() } - private fun readTranslInfo(langCode: String, slug: String, translObject: JsonObject): TranslModel { val bookInfo = QuranTranslBookInfo(slug) bookInfo.langCode = langCode @@ -317,7 +328,6 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState } } - private fun noDownloadsAvailable(ctx: Context) { showAlert( 0, @@ -379,8 +389,10 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState TranslDownloadReceiver.TRANSL_DOWNLOAD_STATUS_CANCELED -> {} TranslDownloadReceiver.TRANSL_DOWNLOAD_STATUS_FAILED -> { title = ctx.getString(R.string.strTitleFailed) - msg = (ctx.getString(R.string.strMsgTranslFailedToDownload, bookInfo.bookName) - + " " + ctx.getString(R.string.strMsgTryLater)) + msg = ( + ctx.getString(R.string.strMsgTranslFailedToDownload, bookInfo.bookName) + + " " + ctx.getString(R.string.strMsgTryLater) + ) } TranslDownloadReceiver.TRANSL_DOWNLOAD_STATUS_SUCCEED -> { @@ -391,7 +403,13 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState } if (title != null && context != null) { - MessageUtils.popMessage(context, title, msg, ctx.getString(R.string.strLabelClose), null) + MessageUtils.popMessage( + context, + title, + msg, + ctx.getString(R.string.strLabelClose), + null + ) } } @@ -471,4 +489,4 @@ class FragSettingsTranslationsDownload : FragSettingsBase(), TranslDownloadState } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/interfaceUtils/ActivityResultStarter.java b/app/src/main/java/com/quranapp/android/interfaceUtils/ActivityResultStarter.java index 4e431ce1..92c6573b 100644 --- a/app/src/main/java/com/quranapp/android/interfaceUtils/ActivityResultStarter.java +++ b/app/src/main/java/com/quranapp/android/interfaceUtils/ActivityResultStarter.java @@ -7,7 +7,6 @@ package com.quranapp.android.interfaceUtils; import android.content.Intent; - import androidx.core.app.ActivityOptionsCompat; public interface ActivityResultStarter { diff --git a/app/src/main/java/com/quranapp/android/interfaceUtils/OnResultReadyCallback.kt b/app/src/main/java/com/quranapp/android/interfaceUtils/OnResultReadyCallback.kt index 78988d9a..1efb94f0 100644 --- a/app/src/main/java/com/quranapp/android/interfaceUtils/OnResultReadyCallback.kt +++ b/app/src/main/java/com/quranapp/android/interfaceUtils/OnResultReadyCallback.kt @@ -2,4 +2,4 @@ package com.quranapp.android.interfaceUtils interface OnResultReadyCallback { fun onReady(r: R) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/reader_managers/ActionController.java b/app/src/main/java/com/quranapp/android/reader_managers/ActionController.java index f7c399c1..2c4ee020 100644 --- a/app/src/main/java/com/quranapp/android/reader_managers/ActionController.java +++ b/app/src/main/java/com/quranapp/android/reader_managers/ActionController.java @@ -1,12 +1,11 @@ package com.quranapp.android.reader_managers; +import android.os.Handler; +import android.os.Looper; import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_CHAPTER; import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_VERSES; -import android.os.Handler; -import android.os.Looper; - import com.quranapp.android.activities.ActivityReader; import com.quranapp.android.activities.ReaderPossessingActivity; import com.quranapp.android.components.quran.QuranMeta; diff --git a/app/src/main/java/com/quranapp/android/reader_managers/Navigator.java b/app/src/main/java/com/quranapp/android/reader_managers/Navigator.java index 0e7e56d1..49a1c993 100644 --- a/app/src/main/java/com/quranapp/android/reader_managers/Navigator.java +++ b/app/src/main/java/com/quranapp/android/reader_managers/Navigator.java @@ -1,16 +1,14 @@ package com.quranapp.android.reader_managers; +import android.view.View; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_CHAPTER; import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_VERSES; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.READER_PAGE; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.VERSE; -import android.view.View; - -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; import com.quranapp.android.adapters.ADPQuranPages; @@ -286,7 +284,8 @@ public void nextVerse() { public void jumpToVerse(int chapterNo, int verseNo, boolean invokePlayer) { QuranMeta quranMeta = mActivity.mQuranMetaRef.get(); - if (mReaderParams.readType != READER_READ_TYPE_JUZ && !quranMeta.isVerseValid4Chapter(getCurrChapterNo(), verseNo)) { + if (mReaderParams.readType != READER_READ_TYPE_JUZ && !quranMeta.isVerseValid4Chapter(getCurrChapterNo(), + verseNo)) { return; } @@ -310,11 +309,13 @@ public void jumpToVerse(int chapterNo, int verseNo, boolean invokePlayer) { readFullChapter(); } } - } break; + } + break; case READER_READ_TYPE_JUZ: case READER_READ_TYPE_CHAPTER: { scrollToVerse(chapterNo, verseNo, true); - } break; + } + break; } mActivity.updateVerseNumber(chapterNo, verseNo); diff --git a/app/src/main/java/com/quranapp/android/reader_managers/ReaderParams.java b/app/src/main/java/com/quranapp/android/reader_managers/ReaderParams.java index 9c16687f..1609dda1 100644 --- a/app/src/main/java/com/quranapp/android/reader_managers/ReaderParams.java +++ b/app/src/main/java/com/quranapp/android/reader_managers/ReaderParams.java @@ -1,5 +1,8 @@ package com.quranapp.android.reader_managers; +import android.content.Context; +import androidx.annotation.IntDef; +import androidx.annotation.Nullable; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.BISMILLAH; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.CHAPTER_INFO; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.CHAPTER_TITLE; @@ -9,11 +12,6 @@ import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.READER_PAGE; import static com.quranapp.android.reader_managers.ReaderParams.RecyclerItemViewType.VERSE; -import android.content.Context; - -import androidx.annotation.IntDef; -import androidx.annotation.Nullable; - import com.quranapp.android.activities.ReaderPossessingActivity; import com.quranapp.android.components.quran.QuranMeta; import com.quranapp.android.components.quran.subcomponents.Chapter; @@ -88,7 +86,7 @@ public boolean isVerseInValidRange(int chapterNo, int verseNo) { case READER_READ_TYPE_VERSES: case READER_READ_TYPE_CHAPTER: return currChapter.getChapterNumber() == chapterNo && quranMeta.isVerseValid4Chapter(chapterNo, - verseNo); + verseNo); case READER_READ_TYPE_JUZ: return quranMeta.isVerseValid4Juz(currJuzNo, chapterNo, verseNo); } diff --git a/app/src/main/java/com/quranapp/android/reader_managers/ReaderVerseDecorator.kt b/app/src/main/java/com/quranapp/android/reader_managers/ReaderVerseDecorator.kt index 121de51a..cb7d3e0a 100644 --- a/app/src/main/java/com/quranapp/android/reader_managers/ReaderVerseDecorator.kt +++ b/app/src/main/java/com/quranapp/android/reader_managers/ReaderVerseDecorator.kt @@ -75,13 +75,15 @@ class ReaderVerseDecorator(private val ctx: Context) { try { fontsArabicKFQPC[pageNo] = Typeface.createFromFile( - File(fileUtils.getKFQPCScriptFontDir(savedScript), pageNo.toKFQPCFontFilename()) + File( + fileUtils.getKFQPCScriptFontDir(savedScript), + pageNo.toKFQPCFontFilename() + ) ) } catch (e: Exception) { e.printStackTrace() } } - } else { fontsArabicKFQPC.clear() @@ -156,7 +158,6 @@ class ReaderVerseDecorator(private val ctx: Context) { setTextSize(TypedValue.COMPLEX_UNIT_PX, textSizeTransl * multiplier) } - fun TextView.setFontArabic(pageNo: Int) { typeface = if (isKFQPCScript()) { fontsArabicKFQPC[pageNo] @@ -172,4 +173,4 @@ class ReaderVerseDecorator(private val ctx: Context) { fun TextView.setTextColorNonArabic() { setTextColor(textColorNonArabic) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/suppliments/BookmarkViewer.java b/app/src/main/java/com/quranapp/android/suppliments/BookmarkViewer.java index c574bfd7..a0cb8c5a 100644 --- a/app/src/main/java/com/quranapp/android/suppliments/BookmarkViewer.java +++ b/app/src/main/java/com/quranapp/android/suppliments/BookmarkViewer.java @@ -10,7 +10,6 @@ import android.view.View; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; - import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.core.content.ContextCompat; @@ -213,16 +212,18 @@ private void saveEdit(LytBookmarkDialogBinding binding, BookmarkModel model) { toggleEdit(false, binding); if (!model.equals(mInitialModel)) { - mDBHelper.updateBookmark(model.getChapterNo(), model.getFromVerseNo(), model.getToVerseNo(), model.getNote(), nModel -> { - if (mBookmarkCallbacks != null) { - mBookmarkCallbacks.onBookmarkUpdated(nModel); - } - }); + mDBHelper.updateBookmark(model.getChapterNo(), model.getFromVerseNo(), model.getToVerseNo(), + model.getNote(), nModel -> { + if (mBookmarkCallbacks != null) { + mBookmarkCallbacks.onBookmarkUpdated(nModel); + } + }); } } public void open(BookmarkModel model) { - Intent intent = ReaderFactory.prepareVerseRangeIntent(model.getChapterNo(), model.getFromVerseNo(), model.getToVerseNo()); + Intent intent = ReaderFactory.prepareVerseRangeIntent(model.getChapterNo(), model.getFromVerseNo(), + model.getToVerseNo()); intent.setClass(mContext, ActivityReader.class); mContext.startActivity(intent); } @@ -234,7 +235,8 @@ public void removeVerseFromBookmark(BookmarkModel model) { builder.setButtonsDirection(PeaceDialog.STACKED); builder.setDialogGravity(PeaceDialog.GRAVITY_BOTTOM); builder.setNeutralButton(R.string.strLabelCancel, null); - builder.setNegativeButton(R.string.strLabelRemove, ColorUtils.DANGER, (dialog, which) -> removeBookmarkFinal(model)); + builder.setNegativeButton(R.string.strLabelRemove, ColorUtils.DANGER, + (dialog, which) -> removeBookmarkFinal(model)); builder.setFocusOnNegative(true); builder.show(); } diff --git a/app/src/main/java/com/quranapp/android/suppliments/IndexMenu.java b/app/src/main/java/com/quranapp/android/suppliments/IndexMenu.java index 7a90edde..b45360e5 100644 --- a/app/src/main/java/com/quranapp/android/suppliments/IndexMenu.java +++ b/app/src/main/java/com/quranapp/android/suppliments/IndexMenu.java @@ -1,8 +1,5 @@ package com.quranapp.android.suppliments; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; @@ -11,9 +8,10 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; - import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.core.content.ContextCompat; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.google.android.material.divider.MaterialDivider; import com.peacedesign.android.utils.AppBridge; @@ -60,7 +58,7 @@ private void init() { }); mPopup.setWidth((int) (Dimen.getWindowWidth(getContext()) * ContextKt.getFraction(getContext(), - R.fraction.dmnIndexMenuWidth))); + R.fraction.dmnIndexMenuWidth))); mPopup.setHeight(WRAP_CONTENT); mPopup.setFocusable(true); mPopup.setDimBehind(0.7f); @@ -154,7 +152,7 @@ private void setup(LytIndexMenuBinding binding) { int[] strokeWidthsHeader = Dimen.createBorderWidthsForBG(0, 0, 0, stroke); float[] radiiHeader = Dimen.createRadiiForBG(radius, radius, 0, 0); binding.header.setBackground( - DrawableUtils.createBackgroundStroked(mBgColor, mBorderColor, strokeWidthsHeader, radiiHeader)); + DrawableUtils.createBackgroundStroked(mBgColor, mBorderColor, strokeWidthsHeader, radiiHeader)); binding.close.setOnClickListener(v -> close()); } @@ -201,8 +199,8 @@ public void onClick(View v) { private void shareApp() { AppBridge.Sharer sharer = AppBridge.newSharer(getContext()); sharer.setData(mActivity.str(R.string.strMsgShareApp, AppBridge.preparePlayStoreLink(getContext(), false))) - .setPlatform(AppBridge.Platform.SYSTEM_SHARE) - .setChooserTitle(getContext().getString(R.string.strTitleShareApp)); + .setPlatform(AppBridge.Platform.SYSTEM_SHARE) + .setChooserTitle(getContext().getString(R.string.strTitleShareApp)); sharer.share(); } diff --git a/app/src/main/java/com/quranapp/android/suppliments/ReaderLayoutManager.java b/app/src/main/java/com/quranapp/android/suppliments/ReaderLayoutManager.java index 0941396e..edda87e2 100644 --- a/app/src/main/java/com/quranapp/android/suppliments/ReaderLayoutManager.java +++ b/app/src/main/java/com/quranapp/android/suppliments/ReaderLayoutManager.java @@ -3,7 +3,6 @@ import android.content.Context; import android.util.DisplayMetrics; import android.view.View; - import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearSmoothScroller; import androidx.recyclerview.widget.RecyclerView; diff --git a/app/src/main/java/com/quranapp/android/suppliments/recitation/RecitationMenu.java b/app/src/main/java/com/quranapp/android/suppliments/recitation/RecitationMenu.java index 7bd97bf0..9c024940 100644 --- a/app/src/main/java/com/quranapp/android/suppliments/recitation/RecitationMenu.java +++ b/app/src/main/java/com/quranapp/android/suppliments/recitation/RecitationMenu.java @@ -1,10 +1,5 @@ package com.quranapp.android.suppliments.recitation; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static com.quranapp.android.utils.univ.RelativePopupWindow.HorizontalPosition.ALIGN_RIGHT; -import static com.quranapp.android.utils.univ.RelativePopupWindow.VerticalPosition.ABOVE; - import android.content.Context; import android.graphics.drawable.Drawable; import android.text.SpannableString; @@ -14,9 +9,12 @@ import android.text.style.RelativeSizeSpan; import android.text.style.TypefaceSpan; import android.view.View; - import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.core.content.ContextCompat; +import static com.quranapp.android.utils.univ.RelativePopupWindow.HorizontalPosition.ALIGN_RIGHT; +import static com.quranapp.android.utils.univ.RelativePopupWindow.VerticalPosition.ABOVE; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.DrawableUtils; @@ -74,17 +72,17 @@ private void setupView(LytRecitationMenuBinding binding) { }); int resId = WindowUtils.isRTL( - mPlayer.getContext()) ? R.drawable.dr_icon_chevron_left : R.drawable.dr_icon_chevron_right; + mPlayer.getContext()) ? R.drawable.dr_icon_chevron_left : R.drawable.dr_icon_chevron_right; Drawable chevronRight = mPlayer.mActivity.drawable(resId); binding.selectReciter.setDrawables(mPlayer.mActivity.drawable(R.drawable.dr_icon_recitation), null, - chevronRight, null); + chevronRight, null); binding.repeatCheckbox.setOnCheckedChangeListener((buttonView, isChecked) -> { mPlayer.setRepeat(isChecked); ViewKt.disableView(binding.autoplay, isChecked); }); binding.autoplayCheckbox.setOnCheckedChangeListener( - (buttonView, isChecked) -> mPlayer.setContinueChapter(isChecked)); + (buttonView, isChecked) -> mPlayer.setContinueChapter(isChecked)); } private void reSetup(LytRecitationMenuBinding binding) { @@ -111,12 +109,12 @@ private CharSequence prepareRecitationTitle(String subtitle) { if (!TextUtils.isEmpty(subtitle)) { SpannableString spannable = new SpannableString(subtitle); spannable.setSpan(new ForegroundColorSpan(ContextCompat.getColor(getContext(), R.color.colorText2)), 0, - subtitle.length(), - SPAN_EXCLUSIVE_EXCLUSIVE); + subtitle.length(), + SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new RelativeSizeSpan(0.93f), 0, subtitle.length(), - SPAN_EXCLUSIVE_EXCLUSIVE); + SPAN_EXCLUSIVE_EXCLUSIVE); spannable.setSpan(new TypefaceSpan("sans-serif"), 0, subtitle.length(), - SPAN_EXCLUSIVE_EXCLUSIVE); + SPAN_EXCLUSIVE_EXCLUSIVE); ssb.append("\n").append(spannable); } diff --git a/app/src/main/java/com/quranapp/android/utils/IntentUtils.kt b/app/src/main/java/com/quranapp/android/utils/IntentUtils.kt index 872fc7fd..a480559f 100644 --- a/app/src/main/java/com/quranapp/android/utils/IntentUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/IntentUtils.kt @@ -2,4 +2,4 @@ package com.quranapp.android.utils object IntentUtils { const val INTENT_ACTION_APP_LANGUAGE_CHANGED = "intent.action.app_language_changed" -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/Log.kt b/app/src/main/java/com/quranapp/android/utils/Log.kt index efb4aaa0..8584ddd0 100644 --- a/app/src/main/java/com/quranapp/android/utils/Log.kt +++ b/app/src/main/java/com/quranapp/android/utils/Log.kt @@ -25,4 +25,4 @@ object Log { if (i < len - 1) sb.append(", ") } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/Logger.java b/app/src/main/java/com/quranapp/android/utils/Logger.java index 580bf023..0554d51d 100644 --- a/app/src/main/java/com/quranapp/android/utils/Logger.java +++ b/app/src/main/java/com/quranapp/android/utils/Logger.java @@ -8,7 +8,6 @@ import android.os.Bundle; import android.util.Log; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -45,8 +44,9 @@ private static String prepareLogMsg(@Nullable Object... msgs) { StackTraceElement trc = Thread.currentThread().getStackTrace()[4]; String className = trc.getClassName(); className = className.substring(className.lastIndexOf(".") + 1); - sb.append("(").append(className).append("=>").append(trc.getMethodName()).append(":").append(trc.getLineNumber()).append( - "): "); + sb.append("(").append(className).append("=>").append(trc.getMethodName()).append(":").append( + trc.getLineNumber()).append( + "): "); if (msgs != null) { int len = msgs.length; diff --git a/app/src/main/java/com/quranapp/android/utils/RVLazyLoadListener.java b/app/src/main/java/com/quranapp/android/utils/RVLazyLoadListener.java index 361b782e..2667d778 100644 --- a/app/src/main/java/com/quranapp/android/utils/RVLazyLoadListener.java +++ b/app/src/main/java/com/quranapp/android/utils/RVLazyLoadListener.java @@ -1,13 +1,12 @@ package com.quranapp.android.utils; -import static androidx.recyclerview.widget.RecyclerView.LayoutManager; -import static androidx.recyclerview.widget.RecyclerView.OnScrollListener; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.GridLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.StaggeredGridLayoutManager; +import static androidx.recyclerview.widget.RecyclerView.LayoutManager; +import static androidx.recyclerview.widget.RecyclerView.OnScrollListener; /** * Custom Scroll Listener for recycler view to listen to up and down scroll diff --git a/app/src/main/java/com/quranapp/android/utils/SpeedInputStream.java b/app/src/main/java/com/quranapp/android/utils/SpeedInputStream.java index 296ceeee..6d2362d4 100644 --- a/app/src/main/java/com/quranapp/android/utils/SpeedInputStream.java +++ b/app/src/main/java/com/quranapp/android/utils/SpeedInputStream.java @@ -10,7 +10,7 @@ public class SpeedInputStream extends InputStream { private static final long ONE_SECOND = 1000; private final int mMaxSpeed; - private long downloadedWithinOneSecond = 0L; + private long downloadedWithinOneSecond; private long lastTime; private final InputStream inputStream; @@ -25,7 +25,7 @@ public SpeedInputStream(InputStream inputStream, int maxSpeed) { public int read() throws IOException { long currentTime; if (downloadedWithinOneSecond >= mMaxSpeed - && (((currentTime = System.currentTimeMillis()) - lastTime) < ONE_SECOND)) { + && (((currentTime = System.currentTimeMillis()) - lastTime) < ONE_SECOND)) { try { Thread.sleep(ONE_SECOND - (currentTime - lastTime)); } catch (InterruptedException e) { diff --git a/app/src/main/java/com/quranapp/android/utils/app/AppActions.kt b/app/src/main/java/com/quranapp/android/utils/app/AppActions.kt index 73ff88ff..cac49ec5 100644 --- a/app/src/main/java/com/quranapp/android/utils/app/AppActions.kt +++ b/app/src/main/java/com/quranapp/android/utils/app/AppActions.kt @@ -65,25 +65,35 @@ object AppActions { val localTranslationsVersion = SPAppConfigs.getTranslationsVersion(ctx) val localRecitationsVersion = SPAppConfigs.getRecitationsVersion(ctx) - Logger.print("RESOURCE VERSIONS: URLs: local: $localUrlsVersion, server: $urlsVersion") + Logger.print( + "RESOURCE VERSIONS: URLs: local: $localUrlsVersion, server: $urlsVersion" + ) if (urlsVersion > localUrlsVersion) { SPAppActions.setFetchUrlsForce(ctx, true) SPAppConfigs.setUrlsVersion(ctx, urlsVersion) Logger.print("Updated URLs version from $localUrlsVersion to $urlsVersion") } - Logger.print("RESOURCE VERSIONS: TRANSLATIONS: local: $localTranslationsVersion, server: $translationsVersion") + Logger.print( + "RESOURCE VERSIONS: TRANSLATIONS: local: $localTranslationsVersion, server: $translationsVersion" + ) if (translationsVersion > localTranslationsVersion) { SPAppActions.setFetchTranslationsForce(ctx, true) SPAppConfigs.setTranslationsVersion(ctx, translationsVersion) - Logger.print("Updated translations version from $localTranslationsVersion to $translationsVersion") + Logger.print( + "Updated translations version from $localTranslationsVersion to $translationsVersion" + ) } - Logger.print("RESOURCE VERSIONS: RECITATIONS: local: $localRecitationsVersion, server: $recitationsVersion") + Logger.print( + "RESOURCE VERSIONS: RECITATIONS: local: $localRecitationsVersion, server: $recitationsVersion" + ) if (recitationsVersion > localRecitationsVersion) { SPAppActions.setFetchRecitationsForce(ctx, true) SPAppConfigs.setRecitationsVersion(ctx, recitationsVersion) - Logger.print("Updated recitations version from $localRecitationsVersion to $recitationsVersion") + Logger.print( + "Updated recitations version from $localRecitationsVersion to $recitationsVersion" + ) } } catch (e: Exception) { e.printStackTrace() @@ -113,6 +123,5 @@ object AppActions { Toast.makeText(ctx, R.string.pasteCrashLogGithubIssue, Toast.LENGTH_LONG).show() } .show() - } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/app/AppUtils.kt b/app/src/main/java/com/quranapp/android/utils/app/AppUtils.kt index 5cfb7979..d0bc44f3 100644 --- a/app/src/main/java/com/quranapp/android/utils/app/AppUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/app/AppUtils.kt @@ -4,8 +4,11 @@ import com.quranapp.android.utils.univ.FileUtils object AppUtils { @JvmField - val BASE_APP_DOWNLOADED_SAVED_DATA_DIR: String = FileUtils.createPath("downloaded", "saved_data")!! + val BASE_APP_DOWNLOADED_SAVED_DATA_DIR: String = FileUtils.createPath( + "downloaded", + "saved_data" + )!! @JvmField val APP_OTHER_DIR: String = FileUtils.createPath(BASE_APP_DOWNLOADED_SAVED_DATA_DIR, "other")!! -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/app/InfoUtils.kt b/app/src/main/java/com/quranapp/android/utils/app/InfoUtils.kt index df501615..d8f8d21a 100644 --- a/app/src/main/java/com/quranapp/android/utils/app/InfoUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/app/InfoUtils.kt @@ -55,7 +55,11 @@ object InfoUtils { MessageUtils.popMessage( context, context.getString(R.string.strMsgSomethingWrong), - "${context.getString(R.string.strMsgCouldNotOpenPage)} ${context.getString(R.string.strMsgTryLater)}", + "${context.getString(R.string.strMsgCouldNotOpenPage)} ${ + context.getString( + R.string.strMsgTryLater + ) + }", context.getString(R.string.strLabelClose), null ) @@ -87,4 +91,4 @@ object InfoUtils { .setUrlBarHidingEnabled(true) .build() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/app/NotificationUtils.kt b/app/src/main/java/com/quranapp/android/utils/app/NotificationUtils.kt index a4453045..471e8e67 100644 --- a/app/src/main/java/com/quranapp/android/utils/app/NotificationUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/app/NotificationUtils.kt @@ -69,10 +69,13 @@ object NotificationUtils { setShowBadge(true) enableVibration(true) - setSound(Settings.System.DEFAULT_NOTIFICATION_URI, AudioAttributes.Builder().apply { - setUsage(AudioAttributes.USAGE_NOTIFICATION) - setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) - }.build()) + setSound( + Settings.System.DEFAULT_NOTIFICATION_URI, + AudioAttributes.Builder().apply { + setUsage(AudioAttributes.USAGE_NOTIFICATION) + setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) + }.build() + ) } } @@ -80,7 +83,7 @@ object NotificationUtils { private fun createDownloadsChannel(ctx: Context): NotificationChannel { return createChannel( ctx.getString(R.string.strNotifChannelIdDownloads), - ctx.getString(R.string.strNotifChannelDownloads), + ctx.getString(R.string.strNotifChannelDownloads) ) } @@ -88,7 +91,7 @@ object NotificationUtils { private fun createRecitationChannel(ctx: Context): NotificationChannel { return createChannel( ctx.getString(R.string.strNotifChannelIdRecitation), - "Recitation Player", + "Recitation Player" ) } @@ -117,4 +120,4 @@ object NotificationUtils { setContentText("") }.build() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/app/RecitationManager.kt b/app/src/main/java/com/quranapp/android/utils/app/RecitationManager.kt index 93864061..677feb65 100644 --- a/app/src/main/java/com/quranapp/android/utils/app/RecitationManager.kt +++ b/app/src/main/java/com/quranapp/android/utils/app/RecitationManager.kt @@ -8,12 +8,12 @@ import com.quranapp.android.components.recitation.RecitationModel import com.quranapp.android.utils.sharedPrefs.SPAppActions import com.quranapp.android.utils.sharedPrefs.SPReader import com.quranapp.android.utils.univ.FileUtils +import java.io.IOException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.serialization.decodeFromString -import java.io.IOException object RecitationManager { private var availableRecitationsModel: AvailableRecitationsModel? = null @@ -35,7 +35,11 @@ object RecitationManager { } } - private fun loadRecitations(ctx: Context, force: Boolean, callback: (AvailableRecitationsModel?) -> Unit) { + private fun loadRecitations( + ctx: Context, + force: Boolean, + callback: (AvailableRecitationsModel?) -> Unit + ) { val fileUtils = FileUtils.newInstance(ctx) val recitationsFile = fileUtils.recitationsManifestFile @@ -87,7 +91,9 @@ object RecitationManager { val savedRecitationSlug = SPReader.getSavedRecitationSlug(ctx) try { - val availableRecitationsModel = JsonHelper.json.decodeFromString(stringData) + val availableRecitationsModel = JsonHelper.json.decodeFromString( + stringData + ) availableRecitationsModel.reciters.forEach { recitationModel -> if (recitationModel.urlHost.isNullOrEmpty()) { @@ -104,7 +110,6 @@ object RecitationManager { } } - @JvmStatic fun getModel(slug: String): RecitationModel? { return availableRecitationsModel?.reciters?.firstOrNull { it.slug == slug } @@ -121,4 +126,4 @@ object RecitationManager { recitationModel.isChecked = recitationModel.slug == slug } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/app/ThemeUtils.kt b/app/src/main/java/com/quranapp/android/utils/app/ThemeUtils.kt index 6296a5f7..66c395f3 100644 --- a/app/src/main/java/com/quranapp/android/utils/app/ThemeUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/app/ThemeUtils.kt @@ -43,7 +43,6 @@ object ThemeUtils { } } - @JvmStatic fun resolveThemeModeFromSP(context: Context): Int { return when (SPAppConfigs.getThemeMode(context)) { @@ -53,4 +52,4 @@ object ThemeUtils { else -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/app/UpdateManager.kt b/app/src/main/java/com/quranapp/android/utils/app/UpdateManager.kt index c4eb6aa8..42058e60 100644 --- a/app/src/main/java/com/quranapp/android/utils/app/UpdateManager.kt +++ b/app/src/main/java/com/quranapp/android/utils/app/UpdateManager.kt @@ -30,11 +30,11 @@ import com.quranapp.android.utils.extensions.removeView import com.quranapp.android.utils.extensions.updateMargins import com.quranapp.android.utils.extensions.visible import com.quranapp.android.utils.univ.FileUtils +import kotlin.math.pow import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.serialization.encodeToString -import kotlin.math.pow class UpdateManager(private val ctx: Context, private val parent: ViewGroup?) { private val mIconAnimationHandler = Handler(Looper.getMainLooper()) @@ -100,7 +100,9 @@ class UpdateManager(private val ctx: Context, private val parent: ViewGroup?) { private fun showUpdateAvailableDialog(isCritical: Boolean, runOnDismiss: Runnable? = null) { val binding = LytUpdateAppDialogBinding.inflate(LayoutInflater.from(ctx)) - binding.txt.setText(if (isCritical) R.string.strMsgUpdateAvailable2Continue else R.string.strMsgUpdateAvailable4Dialog) + binding.txt.setText( + if (isCritical) R.string.strMsgUpdateAvailable2Continue else R.string.strMsgUpdateAvailable4Dialog + ) mIconAnimators.add(animateUpdateIcon(binding.icon)) val builder = PeaceDialog.newBuilder(ctx) @@ -148,11 +150,18 @@ class UpdateManager(private val ctx: Context, private val parent: ViewGroup?) { parent.visible() } - } private fun animateUpdateIcon(iconView: View): ObjectAnimator { - val pvhTransY = PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, 0f, 11f, -20f, 10f, -3f, 0f) + val pvhTransY = PropertyValuesHolder.ofFloat( + View.TRANSLATION_Y, + 0f, + 11f, + -20f, + 10f, + -3f, + 0f + ) val pvhScaleX = PropertyValuesHolder.ofFloat(View.SCALE_X, 1f, 1.1f, .8f, 1.3f, 1.03f, 1f) val pvhScaleY = PropertyValuesHolder.ofFloat(View.SCALE_Y, 1f, .8f, 1.1f, 0.9f, 1f, 1f) return ObjectAnimator.ofPropertyValuesHolder(iconView, pvhTransY, pvhScaleX, pvhScaleY).apply { @@ -177,4 +186,4 @@ class UpdateManager(private val ctx: Context, private val parent: ViewGroup?) { fun onResume() { mIconAnimators.forEach { it.start() } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/app/UrlsManager.kt b/app/src/main/java/com/quranapp/android/utils/app/UrlsManager.kt index b8c53b25..866cfd0c 100644 --- a/app/src/main/java/com/quranapp/android/utils/app/UrlsManager.kt +++ b/app/src/main/java/com/quranapp/android/utils/app/UrlsManager.kt @@ -10,15 +10,15 @@ import com.quranapp.android.utils.sharedPrefs.SPAppActions import com.quranapp.android.utils.sharedPrefs.SPAppActions.addToPendingAction import com.quranapp.android.utils.sharedPrefs.SPAppActions.setFetchUrlsForce import com.quranapp.android.utils.univ.FileUtils +import java.io.File +import java.io.IOException +import java.util.concurrent.CancellationException import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString -import java.io.File -import java.io.IOException -import java.util.concurrent.CancellationException class UrlsManager(private val ctx: Context) { companion object { @@ -27,7 +27,10 @@ class UrlsManager(private val ctx: Context) { const val URL_KEY_ABOUT = "about" const val URL_KEY_HELP = "help" - private val DIR_NAME_4_URLS = FileUtils.createPath(BASE_APP_DOWNLOADED_SAVED_DATA_DIR, "urls") + private val DIR_NAME_4_URLS = FileUtils.createPath( + BASE_APP_DOWNLOADED_SAVED_DATA_DIR, + "urls" + ) private const val URLS_FILE_NAME = "urls.json" private var sAppUrls: AppUrls? = null } @@ -35,10 +38,9 @@ class UrlsManager(private val ctx: Context) { private val mFileUtils = FileUtils.newInstance(ctx) private var mCancelled = false - fun getUrlsJson( readyCallback: (AppUrls) -> Unit, - failedCallback: ((Exception) -> Unit)?, + failedCallback: ((Exception) -> Unit)? ) { if (sAppUrls != null) { readyCallback(sAppUrls!!) @@ -58,7 +60,6 @@ class UrlsManager(private val ctx: Context) { addToPendingAction(ctx, AppActions.APP_ACTION_URLS_UPDATE, null) failedCallback?.invoke(e) } - } else { if (!urlsFile.exists() && !mFileUtils.createFile(urlsFile)) { failedCallback?.invoke(IOException("Could not create urlsFile.")) @@ -96,8 +97,7 @@ class UrlsManager(private val ctx: Context) { } } - fun cancel() { mCancelled = true } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoJSInterface.java b/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoJSInterface.java index 3eddd1f4..bd88490e 100644 --- a/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoJSInterface.java +++ b/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoJSInterface.java @@ -3,9 +3,9 @@ import android.webkit.JavascriptInterface; import android.widget.Toast; -import com.quranapp.android.utils.Log; import com.quranapp.android.activities.ActivityChapInfo; import com.quranapp.android.components.quran.QuranMeta; +import com.quranapp.android.utils.Log; import com.quranapp.android.utils.reader.TranslUtils; import com.quranapp.android.utils.univ.MessageUtils; diff --git a/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoUtils.java b/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoUtils.java index 78e11900..49f07c4c 100644 --- a/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoUtils.java @@ -6,7 +6,8 @@ import com.quranapp.android.utils.univ.FileUtils; public class ChapterInfoUtils { - public static final String DIR_NAME = FileUtils.createPath(AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, "chapters_info"); + public static final String DIR_NAME = FileUtils.createPath(AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, + "chapters_info"); public static final String CHAPTER_INFO_FILE_NAME_FORMAT = "chapter_info_%d-%s.txt"; diff --git a/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoWebViewClient.java b/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoWebViewClient.java index 37236f4f..8796ac6e 100644 --- a/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoWebViewClient.java +++ b/app/src/main/java/com/quranapp/android/utils/chapterInfo/ChapterInfoWebViewClient.java @@ -5,14 +5,13 @@ import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; - import androidx.annotation.Nullable; import androidx.annotation.StringRes; -import com.quranapp.android.utils.Log; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityChapInfo; import com.quranapp.android.components.quran.QuranMeta; +import com.quranapp.android.utils.Log; import com.quranapp.android.utils.quran.QuranUtils; import org.json.JSONException; diff --git a/app/src/main/java/com/quranapp/android/utils/exceptions/CustomExceptionHandler.kt b/app/src/main/java/com/quranapp/android/utils/exceptions/CustomExceptionHandler.kt index 6cac6fbf..14391719 100644 --- a/app/src/main/java/com/quranapp/android/utils/exceptions/CustomExceptionHandler.kt +++ b/app/src/main/java/com/quranapp/android/utils/exceptions/CustomExceptionHandler.kt @@ -5,7 +5,7 @@ import com.quranapp.android.utils.sharedPrefs.SPLog import org.apache.commons.lang3.exception.ExceptionUtils class CustomExceptionHandler( - private val ctx: Context, + private val ctx: Context ) : Thread.UncaughtExceptionHandler { private val defaultExceptionHandler = Thread.getDefaultUncaughtExceptionHandler() @@ -13,4 +13,4 @@ class CustomExceptionHandler( SPLog.saveLastCrashLog(ctx, ExceptionUtils.getStackTrace(exc)) defaultExceptionHandler?.uncaughtException(thread, exc) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/extended/GapedItemDecoration.java b/app/src/main/java/com/quranapp/android/utils/extended/GapedItemDecoration.java index 6e2f94c2..b6d62229 100644 --- a/app/src/main/java/com/quranapp/android/utils/extended/GapedItemDecoration.java +++ b/app/src/main/java/com/quranapp/android/utils/extended/GapedItemDecoration.java @@ -2,7 +2,6 @@ import android.graphics.Rect; import android.view.View; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; diff --git a/app/src/main/java/com/quranapp/android/utils/extensions/Context.kt b/app/src/main/java/com/quranapp/android/utils/extensions/Context.kt index 2aa1d820..adad6cad 100644 --- a/app/src/main/java/com/quranapp/android/utils/extensions/Context.kt +++ b/app/src/main/java/com/quranapp/android/utils/extensions/Context.kt @@ -23,11 +23,15 @@ fun Context.isRTL() = getBoolean(R.bool.isRTL) fun Context.getBoolean(@BoolRes boolResId: Int): Boolean = resources.getBoolean(boolResId) -fun Context.getStringArray(@ArrayRes arrayResId: Int): Array = resources.getStringArray(arrayResId) +fun Context.getStringArray(@ArrayRes arrayResId: Int): Array = resources.getStringArray( + arrayResId +) fun Context.getIntArray(@ArrayRes arrayResId: Int): IntArray = resources.getIntArray(arrayResId) -fun Context.getTypedArray(@ArrayRes arrayResId: Int): TypedArray = resources.obtainTypedArray(arrayResId) +fun Context.getTypedArray(@ArrayRes arrayResId: Int): TypedArray = resources.obtainTypedArray( + arrayResId +) @ColorInt fun Context.color(@ColorRes colorResId: Int): Int = ContextCompat.getColor(this, colorResId) @@ -40,6 +44,7 @@ fun Context.obtainPrimaryColor(): Int { @ColorInt fun Context.obtainWindowBackgroundColor(): Int { val attributes = this.obtainStyledAttributes(intArrayOf(android.R.attr.windowBackground)) + @ColorInt val backgroundColor = attributes.getColor(0, 0) attributes.recycle() return backgroundColor diff --git a/app/src/main/java/com/quranapp/android/utils/extensions/DataType.kt b/app/src/main/java/com/quranapp/android/utils/extensions/DataType.kt index a89466a7..3055eaea 100644 --- a/app/src/main/java/com/quranapp/android/utils/extensions/DataType.kt +++ b/app/src/main/java/com/quranapp/android/utils/extensions/DataType.kt @@ -109,4 +109,4 @@ inline fun runOnTimeout(crossinline block: () -> Unit, timeoutMillis: Long) { Handler(Looper.getMainLooper()).postDelayed({ block() }, timeoutMillis) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/extensions/LayoutParams.kt b/app/src/main/java/com/quranapp/android/utils/extensions/LayoutParams.kt index 97f3fb0d..52125ba2 100644 --- a/app/src/main/java/com/quranapp/android/utils/extensions/LayoutParams.kt +++ b/app/src/main/java/com/quranapp/android/utils/extensions/LayoutParams.kt @@ -19,4 +19,4 @@ fun ViewGroup.MarginLayoutParams.updateMarginHorizontal(margin: Int) { fun ViewGroup.MarginLayoutParams.updateMarginVertical(margin: Int) { topMargin = margin bottomMargin = margin -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/extensions/ScrollView.kt b/app/src/main/java/com/quranapp/android/utils/extensions/ScrollView.kt index 39c676c0..2532a898 100644 --- a/app/src/main/java/com/quranapp/android/utils/extensions/ScrollView.kt +++ b/app/src/main/java/com/quranapp/android/utils/extensions/ScrollView.kt @@ -25,4 +25,4 @@ fun NestedScrollView.scrollToViewVertically(view: View) { val childOffset = Point() getDeepChildOffset(this, view.parent, view, childOffset) this.smoothScrollTo(0, childOffset.y) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/extensions/SerializableExtra.kt b/app/src/main/java/com/quranapp/android/utils/extensions/SerializableExtra.kt index 6469a007..c3cf6736 100644 --- a/app/src/main/java/com/quranapp/android/utils/extensions/SerializableExtra.kt +++ b/app/src/main/java/com/quranapp/android/utils/extensions/SerializableExtra.kt @@ -11,6 +11,9 @@ inline fun Bundle.serializableExtra(key: String): T? } inline fun Intent.serializableExtra(key: String): T? = when { - Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> getSerializableExtra(key, T::class.java) + Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> getSerializableExtra( + key, + T::class.java + ) else -> @Suppress("DEPRECATION") getSerializableExtra(key) as? T -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/extensions/TextView.kt b/app/src/main/java/com/quranapp/android/utils/extensions/TextView.kt index ff602e51..fd79edce 100644 --- a/app/src/main/java/com/quranapp/android/utils/extensions/TextView.kt +++ b/app/src/main/java/com/quranapp/android/utils/extensions/TextView.kt @@ -12,4 +12,4 @@ fun TextView.setTextSizePx(@DimenRes dimenResId: Int) { fun TextView.setTextColorResource(@ColorRes colorResId: Int) { setTextColor(ContextCompat.getColor(context, colorResId)) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/extensions/View.kt b/app/src/main/java/com/quranapp/android/utils/extensions/View.kt index c66fb32b..f63924f3 100644 --- a/app/src/main/java/com/quranapp/android/utils/extensions/View.kt +++ b/app/src/main/java/com/quranapp/android/utils/extensions/View.kt @@ -9,7 +9,6 @@ import androidx.core.view.children import androidx.recyclerview.widget.LinearSnapHelper import androidx.recyclerview.widget.RecyclerView - fun View.alphaDisableView(disable: Boolean) { alpha = if (disable) 0.5f else 1f } @@ -56,7 +55,12 @@ fun RecyclerView.enableSnappingOnRecyclerView(): LinearSnapHelper { } } -fun getDeepChildOffset(mainParent: ViewGroup, parent: ViewParent, child: View, accumulatedOffset: Point) { +fun getDeepChildOffset( + mainParent: ViewGroup, + parent: ViewParent, + child: View, + accumulatedOffset: Point +) { val parentGroup = parent as ViewGroup accumulatedOffset.y += child.top @@ -90,14 +94,18 @@ fun getRelativeTopRecursive(view: View?, till: Class<*>, inclusiveTill: Boolean return if (till.name.equals(view.javaClass.name, ignoreCase = true)) { if (inclusiveTill) { view.top - } else 0 + } else { + 0 + } } else { val top = view.top val parent = view.parent if (parent !is View || parent === view.rootView) { top - } else top + getRelativeTopRecursive(parent as View, till, inclusiveTill) + } else { + top + getRelativeTopRecursive(parent as View, till, inclusiveTill) + } } } -fun View.getLayoutInflater(): LayoutInflater = LayoutInflater.from(context) \ No newline at end of file +fun View.getLayoutInflater(): LayoutInflater = LayoutInflater.from(context) diff --git a/app/src/main/java/com/quranapp/android/utils/gesture/HoverOpacityEffect.kt b/app/src/main/java/com/quranapp/android/utils/gesture/HoverOpacityEffect.kt index b5db9252..ec26ef50 100644 --- a/app/src/main/java/com/quranapp/android/utils/gesture/HoverOpacityEffect.kt +++ b/app/src/main/java/com/quranapp/android/utils/gesture/HoverOpacityEffect.kt @@ -22,7 +22,6 @@ class HoverOpacityEffect( return true } - private fun down(v: View) { v.alpha = toOpacity } @@ -30,4 +29,4 @@ class HoverOpacityEffect( private fun up(v: View) { v.alpha = fromOpacity } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/gesture/HoverPushEffect.kt b/app/src/main/java/com/quranapp/android/utils/gesture/HoverPushEffect.kt index 90178145..3414d019 100644 --- a/app/src/main/java/com/quranapp/android/utils/gesture/HoverPushEffect.kt +++ b/app/src/main/java/com/quranapp/android/utils/gesture/HoverPushEffect.kt @@ -52,8 +52,7 @@ open class HoverPushEffect(pressure: Pressure = Pressure.MEDIUM) : View.OnTouchL }.start() } - enum class Pressure { LOW, MEDIUM, HIGH } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/gesture/HoverPushOpacityEffect.kt b/app/src/main/java/com/quranapp/android/utils/gesture/HoverPushOpacityEffect.kt index 3f38e74d..2a84f469 100644 --- a/app/src/main/java/com/quranapp/android/utils/gesture/HoverPushOpacityEffect.kt +++ b/app/src/main/java/com/quranapp/android/utils/gesture/HoverPushOpacityEffect.kt @@ -25,4 +25,4 @@ class HoverPushOpacityEffect(pressure: Pressure = Pressure.MEDIUM) : HoverPushEf } }.start() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/others/ShortcutUtils.kt b/app/src/main/java/com/quranapp/android/utils/others/ShortcutUtils.kt index d7ba3cfb..7e2ea151 100644 --- a/app/src/main/java/com/quranapp/android/utils/others/ShortcutUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/others/ShortcutUtils.kt @@ -36,12 +36,24 @@ object ShortcutUtils { @JvmStatic fun pushLastVersesShortcut( - ctx: Context, quranMeta: QuranMeta, readType: Int, readerStyle: Int, - juzNo: Int, chapterNo: Int, fromVerse: Int, toVerse: Int + ctx: Context, + quranMeta: QuranMeta, + readType: Int, + readerStyle: Int, + juzNo: Int, + chapterNo: Int, + fromVerse: Int, + toVerse: Int ) { val id = ctx.getString(R.string.strShortcutIdLastVerses) val intent = ReaderFactory.prepareLastVersesIntentForShortcut( - quranMeta, juzNo, chapterNo, fromVerse, toVerse, readType, readerStyle + quranMeta, + juzNo, + chapterNo, + fromVerse, + toVerse, + readType, + readerStyle ) if (intent == null) { @@ -65,4 +77,4 @@ object ShortcutUtils { e.printStackTrace() } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/quran/QuranConstants.kt b/app/src/main/java/com/quranapp/android/utils/quran/QuranConstants.kt index 7509c0cd..51eacd25 100644 --- a/app/src/main/java/com/quranapp/android/utils/quran/QuranConstants.kt +++ b/app/src/main/java/com/quranapp/android/utils/quran/QuranConstants.kt @@ -22,4 +22,4 @@ object QuranConstants { const val KEY_RECITATION_STYLE = "style" const val KEY_RECITATION_URL_HOST = "url-host" const val KEY_RECITATION_URL_PATH = "url-path" -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/quran/QuranUtils.java b/app/src/main/java/com/quranapp/android/utils/quran/QuranUtils.java index d063e52a..e8c7733e 100644 --- a/app/src/main/java/com/quranapp/android/utils/quran/QuranUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/quran/QuranUtils.java @@ -14,121 +14,236 @@ public static String getBismillahUnicode() { public static String getChapterIconUnicode(int chapterNumber) { String unicode = null; switch (chapterNumber) { - case 0: unicode = "\ue903"; break; // Surah text - case 1: unicode = "\ue904"; break; - case 2: unicode = "\ue905"; break; - case 3: unicode = "\ue906"; break; - case 4: unicode = "\ue907"; break; - case 5: unicode = "\ue908"; break; - case 6: unicode = "\ue90b"; break; - case 7: unicode = "\ue90c"; break; - case 8: unicode = "\ue90d"; break; - case 9: unicode = "\ue90e"; break; - case 10: unicode = "\ue90f"; break; - case 11: unicode = "\ue910"; break; - case 12: unicode = "\ue911"; break; - case 13: unicode = "\ue912"; break; - case 14: unicode = "\ue913"; break; - case 15: unicode = "\ue914"; break; - case 16: unicode = "\ue915"; break; - case 17: unicode = "\ue916"; break; - case 18: unicode = "\ue917"; break; - case 19: unicode = "\ue918"; break; - case 20: unicode = "\ue919"; break; - case 21: unicode = "\ue91a"; break; - case 22: unicode = "\ue91b"; break; - case 23: unicode = "\ue91c"; break; - case 24: unicode = "\ue91d"; break; - case 25: unicode = "\ue91e"; break; - case 26: unicode = "\ue91f"; break; - case 27: unicode = "\ue920"; break; - case 28: unicode = "\ue921"; break; - case 29: unicode = "\ue922"; break; - case 30: unicode = "\ue923"; break; - case 31: unicode = "\ue924"; break; - case 32: unicode = "\ue925"; break; - case 33: unicode = "\ue926"; break; - case 34: unicode = "\ue92e"; break; - case 35: unicode = "\ue92f"; break; - case 36: unicode = "\ue930"; break; - case 37: unicode = "\ue931"; break; - case 38: unicode = "\ue909"; break; - case 39: unicode = "\ue90a"; break; - case 40: unicode = "\ue927"; break; - case 41: unicode = "\ue928"; break; - case 42: unicode = "\ue929"; break; - case 43: unicode = "\ue92a"; break; - case 44: unicode = "\ue92b"; break; - case 45: unicode = "\ue92c"; break; - case 46: unicode = "\ue92d"; break; - case 47: unicode = "\ue932"; break; - case 48: unicode = "\ue902"; break; - case 49: unicode = "\ue933"; break; - case 50: unicode = "\ue934"; break; - case 51: unicode = "\ue935"; break; - case 52: unicode = "\ue936"; break; - case 53: unicode = "\ue937"; break; - case 54: unicode = "\ue938"; break; - case 55: unicode = "\ue939"; break; - case 56: unicode = "\ue93a"; break; - case 57: unicode = "\ue93b"; break; - case 58: unicode = "\ue93c"; break; - case 59: unicode = "\ue900"; break; - case 60: unicode = "\ue901"; break; - case 61: unicode = "\ue941"; break; - case 62: unicode = "\ue942"; break; - case 63: unicode = "\ue943"; break; - case 64: unicode = "\ue944"; break; - case 65: unicode = "\ue945"; break; - case 66: unicode = "\ue946"; break; - case 67: unicode = "\ue947"; break; - case 68: unicode = "\ue948"; break; - case 69: unicode = "\ue949"; break; - case 70: unicode = "\ue94a"; break; - case 71: unicode = "\ue94b"; break; - case 72: unicode = "\ue94c"; break; - case 73: unicode = "\ue94d"; break; - case 74: unicode = "\ue94e"; break; - case 75: unicode = "\ue94f"; break; - case 76: unicode = "\ue950"; break; - case 77: unicode = "\ue951"; break; - case 78: unicode = "\ue952"; break; - case 79: unicode = "\ue93d"; break; - case 80: unicode = "\ue93e"; break; - case 81: unicode = "\ue93f"; break; - case 82: unicode = "\ue940"; break; - case 83: unicode = "\ue953"; break; - case 84: unicode = "\ue954"; break; - case 85: unicode = "\ue955"; break; - case 86: unicode = "\ue956"; break; - case 87: unicode = "\ue957"; break; - case 88: unicode = "\ue958"; break; - case 89: unicode = "\ue959"; break; - case 90: unicode = "\ue95a"; break; - case 91: unicode = "\ue95b"; break; - case 92: unicode = "\ue95c"; break; - case 93: unicode = "\ue95d"; break; - case 94: unicode = "\ue95e"; break; - case 95: unicode = "\ue95f"; break; - case 96: unicode = "\ue960"; break; - case 97: unicode = "\ue961"; break; - case 98: unicode = "\ue962"; break; - case 99: unicode = "\ue963"; break; - case 100: unicode = "\ue964"; break; - case 101: unicode = "\ue965"; break; - case 102: unicode = "\ue966"; break; - case 103: unicode = "\ue967"; break; - case 104: unicode = "\ue968"; break; - case 105: unicode = "\ue969"; break; - case 106: unicode = "\ue96a"; break; - case 107: unicode = "\ue96b"; break; - case 108: unicode = "\ue96c"; break; - case 109: unicode = "\ue96d"; break; - case 110: unicode = "\ue96e"; break; - case 111: unicode = "\ue96f"; break; - case 112: unicode = "\ue970"; break; - case 113: unicode = "\ue971"; break; - case 114: unicode = "\ue972"; break; + case 0: unicode = "\ue903"; + break; // Surah text + case 1: unicode = "\ue904"; + break; + case 2: unicode = "\ue905"; + break; + case 3: unicode = "\ue906"; + break; + case 4: unicode = "\ue907"; + break; + case 5: unicode = "\ue908"; + break; + case 6: unicode = "\ue90b"; + break; + case 7: unicode = "\ue90c"; + break; + case 8: unicode = "\ue90d"; + break; + case 9: unicode = "\ue90e"; + break; + case 10: unicode = "\ue90f"; + break; + case 11: unicode = "\ue910"; + break; + case 12: unicode = "\ue911"; + break; + case 13: unicode = "\ue912"; + break; + case 14: unicode = "\ue913"; + break; + case 15: unicode = "\ue914"; + break; + case 16: unicode = "\ue915"; + break; + case 17: unicode = "\ue916"; + break; + case 18: unicode = "\ue917"; + break; + case 19: unicode = "\ue918"; + break; + case 20: unicode = "\ue919"; + break; + case 21: unicode = "\ue91a"; + break; + case 22: unicode = "\ue91b"; + break; + case 23: unicode = "\ue91c"; + break; + case 24: unicode = "\ue91d"; + break; + case 25: unicode = "\ue91e"; + break; + case 26: unicode = "\ue91f"; + break; + case 27: unicode = "\ue920"; + break; + case 28: unicode = "\ue921"; + break; + case 29: unicode = "\ue922"; + break; + case 30: unicode = "\ue923"; + break; + case 31: unicode = "\ue924"; + break; + case 32: unicode = "\ue925"; + break; + case 33: unicode = "\ue926"; + break; + case 34: unicode = "\ue92e"; + break; + case 35: unicode = "\ue92f"; + break; + case 36: unicode = "\ue930"; + break; + case 37: unicode = "\ue931"; + break; + case 38: unicode = "\ue909"; + break; + case 39: unicode = "\ue90a"; + break; + case 40: unicode = "\ue927"; + break; + case 41: unicode = "\ue928"; + break; + case 42: unicode = "\ue929"; + break; + case 43: unicode = "\ue92a"; + break; + case 44: unicode = "\ue92b"; + break; + case 45: unicode = "\ue92c"; + break; + case 46: unicode = "\ue92d"; + break; + case 47: unicode = "\ue932"; + break; + case 48: unicode = "\ue902"; + break; + case 49: unicode = "\ue933"; + break; + case 50: unicode = "\ue934"; + break; + case 51: unicode = "\ue935"; + break; + case 52: unicode = "\ue936"; + break; + case 53: unicode = "\ue937"; + break; + case 54: unicode = "\ue938"; + break; + case 55: unicode = "\ue939"; + break; + case 56: unicode = "\ue93a"; + break; + case 57: unicode = "\ue93b"; + break; + case 58: unicode = "\ue93c"; + break; + case 59: unicode = "\ue900"; + break; + case 60: unicode = "\ue901"; + break; + case 61: unicode = "\ue941"; + break; + case 62: unicode = "\ue942"; + break; + case 63: unicode = "\ue943"; + break; + case 64: unicode = "\ue944"; + break; + case 65: unicode = "\ue945"; + break; + case 66: unicode = "\ue946"; + break; + case 67: unicode = "\ue947"; + break; + case 68: unicode = "\ue948"; + break; + case 69: unicode = "\ue949"; + break; + case 70: unicode = "\ue94a"; + break; + case 71: unicode = "\ue94b"; + break; + case 72: unicode = "\ue94c"; + break; + case 73: unicode = "\ue94d"; + break; + case 74: unicode = "\ue94e"; + break; + case 75: unicode = "\ue94f"; + break; + case 76: unicode = "\ue950"; + break; + case 77: unicode = "\ue951"; + break; + case 78: unicode = "\ue952"; + break; + case 79: unicode = "\ue93d"; + break; + case 80: unicode = "\ue93e"; + break; + case 81: unicode = "\ue93f"; + break; + case 82: unicode = "\ue940"; + break; + case 83: unicode = "\ue953"; + break; + case 84: unicode = "\ue954"; + break; + case 85: unicode = "\ue955"; + break; + case 86: unicode = "\ue956"; + break; + case 87: unicode = "\ue957"; + break; + case 88: unicode = "\ue958"; + break; + case 89: unicode = "\ue959"; + break; + case 90: unicode = "\ue95a"; + break; + case 91: unicode = "\ue95b"; + break; + case 92: unicode = "\ue95c"; + break; + case 93: unicode = "\ue95d"; + break; + case 94: unicode = "\ue95e"; + break; + case 95: unicode = "\ue95f"; + break; + case 96: unicode = "\ue960"; + break; + case 97: unicode = "\ue961"; + break; + case 98: unicode = "\ue962"; + break; + case 99: unicode = "\ue963"; + break; + case 100: unicode = "\ue964"; + break; + case 101: unicode = "\ue965"; + break; + case 102: unicode = "\ue966"; + break; + case 103: unicode = "\ue967"; + break; + case 104: unicode = "\ue968"; + break; + case 105: unicode = "\ue969"; + break; + case 106: unicode = "\ue96a"; + break; + case 107: unicode = "\ue96b"; + break; + case 108: unicode = "\ue96c"; + break; + case 109: unicode = "\ue96d"; + break; + case 110: unicode = "\ue96e"; + break; + case 111: unicode = "\ue96f"; + break; + case 112: unicode = "\ue970"; + break; + case 113: unicode = "\ue971"; + break; + case 114: unicode = "\ue972"; + break; } return unicode; } @@ -136,120 +251,234 @@ public static String getChapterIconUnicode(int chapterNumber) { public static String getChapterIconValue(int chapterNumber) { String value = null; switch (chapterNumber) { - case 1: value = "ﮍ"; break; - case 2: value = "ﮎ"; break; - case 3: value = "ﮏ"; break; - case 4: value = "ﮐ"; break; - case 5: value = "ﮑ"; break; - case 6: value = "ﮒ"; break; - case 7: value = "ﮓ"; break; - case 8: value = "ﮔ"; break; - case 9: value = "ﮕ"; break; - case 10: value = "ﮖ"; break; - case 11: value = "ﮗ"; break; - case 12: value = "ﮘ"; break; - case 13: value = "ﮙ"; break; - case 14: value = "ﮚ"; break; - case 15: value = "ﮛ"; break; - case 16: value = "ﮜ"; break; - case 17: value = "ﮝ"; break; - case 18: value = "ﮞ"; break; - case 19: value = "ﮟ"; break; - case 20: value = "ﮠ"; break; - case 21: value = "ﮡ"; break; - case 22: value = "ﮢ"; break; - case 23: value = "ﮣ"; break; - case 24: value = "ﮤ"; break; - case 25: value = "ﮥ"; break; - case 26: value = "ﮦ"; break; - case 27: value = "ﮧ"; break; - case 28: value = "ﮨ"; break; - case 29: value = "ﮩ"; break; - case 30: value = "ﮪ"; break; - case 31: value = "ﮫ"; break; - case 32: value = "ﮬ"; break; - case 33: value = "ﮭ"; break; - case 34: value = "ﮮ"; break; - case 35: value = "ﮯ"; break; - case 36: value = "ﮰ"; break; - case 37: value = "ﮱ"; break; - case 38: value = "ﯓ"; break; - case 39: value = "ﯔ"; break; - case 40: value = "ﯕ"; break; - case 41: value = "ﯖ"; break; - case 42: value = "ﯗ"; break; - case 43: value = "ﯘ"; break; - case 44: value = "ﯙ"; break; - case 45: value = "ﯚ"; break; - case 46: value = "ﯛ"; break; - case 47: value = "ﯜ"; break; - case 48: value = "ﯝ"; break; - case 49: value = "ﯞ"; break; - case 50: value = "ﯟ"; break; - case 51: value = "ﯠ"; break; - case 52: value = "ﯡ"; break; - case 53: value = "ﯢ"; break; - case 54: value = "ﯣ"; break; - case 55: value = "ﯤ"; break; - case 56: value = "ﯥ"; break; - case 57: value = "ﯦ"; break; - case 58: value = "ﯧ"; break; - case 59: value = "ﯨ"; break; - case 60: value = "ﯩ"; break; - case 61: value = "ﯪ"; break; - case 62: value = "ﯫ"; break; - case 63: value = "ﯬ"; break; - case 64: value = "ﯭ"; break; - case 65: value = "ﯮ"; break; - case 66: value = "ﯯ"; break; - case 67: value = "ﯰ"; break; - case 68: value = "ﯱ"; break; - case 69: value = "ﯲ"; break; - case 70: value = "ﯳ"; break; - case 71: value = "ﯴ"; break; - case 72: value = "ﯵ"; break; - case 73: value = "ﯶ"; break; - case 74: value = "ﯷ"; break; - case 75: value = "ﯸ"; break; - case 76: value = "ﯹ"; break; - case 77: value = "ﯺ"; break; - case 78: value = "ﯻ"; break; - case 79: value = "ﯼ"; break; - case 80: value = "ﯽ"; break; - case 81: value = "ﯾ"; break; - case 82: value = "ﯿ"; break; - case 83: value = "ﰀ"; break; - case 84: value = "ﰁ"; break; - case 85: value = "ﰂ"; break; - case 86: value = "ﰃ"; break; - case 87: value = "ﰄ"; break; - case 88: value = "ﰅ"; break; - case 89: value = "ﰆ"; break; - case 90: value = "ﰇ"; break; - case 91: value = "ﰈ"; break; - case 92: value = "ﰉ"; break; - case 93: value = "ﰊ"; break; - case 94: value = "ﰋ"; break; - case 95: value = "ﰌ"; break; - case 96: value = "ﰍ"; break; - case 97: value = "ﰎ"; break; - case 98: value = "ﰏ"; break; - case 99: value = "ﰐ"; break; - case 100: value = "ﰑ"; break; - case 101: value = "ﰒ"; break; - case 102: value = "ﰓ"; break; - case 103: value = "ﰔ"; break; - case 104: value = "ﰕ"; break; - case 105: value = "ﰖ"; break; - case 106: value = "ﰗ"; break; - case 107: value = "ﰘ"; break; - case 108: value = "ﰙ"; break; - case 109: value = "ﰚ"; break; - case 110: value = "ﰛ"; break; - case 111: value = "ﰜ"; break; - case 112: value = "ﰝ"; break; - case 113: value = "ﰞ"; break; - case 114: value = "ﰟ"; break; + case 1: value = "ﮍ"; + break; + case 2: value = "ﮎ"; + break; + case 3: value = "ﮏ"; + break; + case 4: value = "ﮐ"; + break; + case 5: value = "ﮑ"; + break; + case 6: value = "ﮒ"; + break; + case 7: value = "ﮓ"; + break; + case 8: value = "ﮔ"; + break; + case 9: value = "ﮕ"; + break; + case 10: value = "ﮖ"; + break; + case 11: value = "ﮗ"; + break; + case 12: value = "ﮘ"; + break; + case 13: value = "ﮙ"; + break; + case 14: value = "ﮚ"; + break; + case 15: value = "ﮛ"; + break; + case 16: value = "ﮜ"; + break; + case 17: value = "ﮝ"; + break; + case 18: value = "ﮞ"; + break; + case 19: value = "ﮟ"; + break; + case 20: value = "ﮠ"; + break; + case 21: value = "ﮡ"; + break; + case 22: value = "ﮢ"; + break; + case 23: value = "ﮣ"; + break; + case 24: value = "ﮤ"; + break; + case 25: value = "ﮥ"; + break; + case 26: value = "ﮦ"; + break; + case 27: value = "ﮧ"; + break; + case 28: value = "ﮨ"; + break; + case 29: value = "ﮩ"; + break; + case 30: value = "ﮪ"; + break; + case 31: value = "ﮫ"; + break; + case 32: value = "ﮬ"; + break; + case 33: value = "ﮭ"; + break; + case 34: value = "ﮮ"; + break; + case 35: value = "ﮯ"; + break; + case 36: value = "ﮰ"; + break; + case 37: value = "ﮱ"; + break; + case 38: value = "ﯓ"; + break; + case 39: value = "ﯔ"; + break; + case 40: value = "ﯕ"; + break; + case 41: value = "ﯖ"; + break; + case 42: value = "ﯗ"; + break; + case 43: value = "ﯘ"; + break; + case 44: value = "ﯙ"; + break; + case 45: value = "ﯚ"; + break; + case 46: value = "ﯛ"; + break; + case 47: value = "ﯜ"; + break; + case 48: value = "ﯝ"; + break; + case 49: value = "ﯞ"; + break; + case 50: value = "ﯟ"; + break; + case 51: value = "ﯠ"; + break; + case 52: value = "ﯡ"; + break; + case 53: value = "ﯢ"; + break; + case 54: value = "ﯣ"; + break; + case 55: value = "ﯤ"; + break; + case 56: value = "ﯥ"; + break; + case 57: value = "ﯦ"; + break; + case 58: value = "ﯧ"; + break; + case 59: value = "ﯨ"; + break; + case 60: value = "ﯩ"; + break; + case 61: value = "ﯪ"; + break; + case 62: value = "ﯫ"; + break; + case 63: value = "ﯬ"; + break; + case 64: value = "ﯭ"; + break; + case 65: value = "ﯮ"; + break; + case 66: value = "ﯯ"; + break; + case 67: value = "ﯰ"; + break; + case 68: value = "ﯱ"; + break; + case 69: value = "ﯲ"; + break; + case 70: value = "ﯳ"; + break; + case 71: value = "ﯴ"; + break; + case 72: value = "ﯵ"; + break; + case 73: value = "ﯶ"; + break; + case 74: value = "ﯷ"; + break; + case 75: value = "ﯸ"; + break; + case 76: value = "ﯹ"; + break; + case 77: value = "ﯺ"; + break; + case 78: value = "ﯻ"; + break; + case 79: value = "ﯼ"; + break; + case 80: value = "ﯽ"; + break; + case 81: value = "ﯾ"; + break; + case 82: value = "ﯿ"; + break; + case 83: value = "ﰀ"; + break; + case 84: value = "ﰁ"; + break; + case 85: value = "ﰂ"; + break; + case 86: value = "ﰃ"; + break; + case 87: value = "ﰄ"; + break; + case 88: value = "ﰅ"; + break; + case 89: value = "ﰆ"; + break; + case 90: value = "ﰇ"; + break; + case 91: value = "ﰈ"; + break; + case 92: value = "ﰉ"; + break; + case 93: value = "ﰊ"; + break; + case 94: value = "ﰋ"; + break; + case 95: value = "ﰌ"; + break; + case 96: value = "ﰍ"; + break; + case 97: value = "ﰎ"; + break; + case 98: value = "ﰏ"; + break; + case 99: value = "ﰐ"; + break; + case 100: value = "ﰑ"; + break; + case 101: value = "ﰒ"; + break; + case 102: value = "ﰓ"; + break; + case 103: value = "ﰔ"; + break; + case 104: value = "ﰕ"; + break; + case 105: value = "ﰖ"; + break; + case 106: value = "ﰗ"; + break; + case 107: value = "ﰘ"; + break; + case 108: value = "ﰙ"; + break; + case 109: value = "ﰚ"; + break; + case 110: value = "ﰛ"; + break; + case 111: value = "ﰜ"; + break; + case 112: value = "ﰝ"; + break; + case 113: value = "ﰞ"; + break; + case 114: value = "ﰟ"; + break; } return value; } diff --git a/app/src/main/java/com/quranapp/android/utils/quran/parser/ParserUtils.kt b/app/src/main/java/com/quranapp/android/utils/quran/parser/ParserUtils.kt index cd426e71..53c21c28 100644 --- a/app/src/main/java/com/quranapp/android/utils/quran/parser/ParserUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/quran/parser/ParserUtils.kt @@ -77,4 +77,4 @@ object ParserUtils { } return builder.toString() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranDuaParser.kt b/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranDuaParser.kt index a75b335b..436322d7 100644 --- a/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranDuaParser.kt +++ b/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranDuaParser.kt @@ -8,10 +8,10 @@ import android.os.Looper import com.quranapp.android.R import com.quranapp.android.components.quran.QuranDua import com.quranapp.android.components.quran.QuranMeta -import org.xmlpull.v1.XmlPullParser -import org.xmlpull.v1.XmlPullParserException import java.io.IOException import java.util.concurrent.atomic.AtomicReference +import org.xmlpull.v1.XmlPullParser +import org.xmlpull.v1.XmlPullParserException object QuranDuaParser { private const val DUAS_TAG_ROOT = "prophets" diff --git a/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranParser.kt b/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranParser.kt index 99fc1886..89cf15ed 100644 --- a/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranParser.kt +++ b/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranParser.kt @@ -12,12 +12,12 @@ import com.quranapp.android.utils.reader.isKFQPCScript import com.quranapp.android.utils.sharedPrefs.SPReader import com.quranapp.android.utils.univ.FileUtils import com.quranapp.android.utils.univ.StringUtils +import java.util.concurrent.atomic.AtomicReference import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.serialization.json.* -import java.util.concurrent.atomic.AtomicReference private const val KEY_CHAPTER_LIST = "suras" private const val KEY_VERSE_LIST = "ayas" @@ -27,7 +27,12 @@ private const val KEY_NUMBER = "index" private const val KEY_PAGE_NUMBER = "page" class QuranParser(private val ctx: Context) { - fun parse(scriptKey: String, quranMeta: QuranMeta?, quranRef: AtomicReference, postRunnable: () -> Unit) { + fun parse( + scriptKey: String, + quranMeta: QuranMeta?, + quranRef: AtomicReference, + postRunnable: () -> Unit + ) { CoroutineScope(Dispatchers.IO).launch { try { initQuranParse(scriptKey, quranMeta, quranRef) @@ -41,7 +46,11 @@ class QuranParser(private val ctx: Context) { } } - private fun initQuranParse(scriptKey: String, quranMeta: QuranMeta?, quranRef: AtomicReference) { + private fun initQuranParse( + scriptKey: String, + quranMeta: QuranMeta?, + quranRef: AtomicReference + ) { val quranStringContent: String = if (scriptKey.isKFQPCScript()) { val fileUtils = FileUtils.newInstance(ctx) val scriptFile = fileUtils.getScriptFile(scriptKey) @@ -50,13 +59,14 @@ class QuranParser(private val ctx: Context) { fileUtils.readFile(scriptFile) } else { SPReader.setSavedScript(ctx, QuranScriptUtils.SCRIPT_DEFAULT) - StringUtils.readInputStream(ctx.assets.open(QuranScriptUtils.SCRIPT_DEFAULT.getQuranScriptResPath())) + StringUtils.readInputStream( + ctx.assets.open(QuranScriptUtils.SCRIPT_DEFAULT.getQuranScriptResPath()) + ) } } else { StringUtils.readInputStream(ctx.assets.open(scriptKey.getQuranScriptResPath())) } - val quranElement = JsonHelper.json.parseToJsonElement(quranStringContent) val parsedQuran = resolveQuranData(scriptKey, quranMeta, quranElement.jsonObject) @@ -105,4 +115,4 @@ class QuranParser(private val ctx: Context) { return verses } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranProphetParser.java b/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranProphetParser.java index 834d4526..545e4fa4 100644 --- a/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranProphetParser.java +++ b/app/src/main/java/com/quranapp/android/utils/quran/parser/QuranProphetParser.java @@ -62,7 +62,7 @@ private static QuranProphet parseProphetInternal(Context context, XmlResourcePar lastProphet.nameTrans = parser.getAttributeValue(null, PROPHETS_ATTR_PROPHET_NAME_TRANS); lastProphet.honorific = parser.getAttributeValue(null, PROPHETS_ATTR_PROPHET_HONORIFIC); lastProphet.iconRes = parser.getAttributeResourceValue("http://schemas.android.com/apk/res/android", - PROPHETS_ATTR_PROPHET_ICON_RES, -1); + PROPHETS_ATTR_PROPHET_ICON_RES, -1); prophetList.add(lastProphet); } @@ -70,7 +70,8 @@ private static QuranProphet parseProphetInternal(Context context, XmlResourcePar if (lastProphet != null) { lastProphet.verses = ParserUtils.prepareVersesList(parser.getText(), true); lastProphet.chapters = ParserUtils.prepareChaptersList(lastProphet.verses); - lastProphet.inChapters = ParserUtils.prepareChapterText(context, quranMeta, lastProphet.chapters, 2); + lastProphet.inChapters = ParserUtils.prepareChapterText(context, quranMeta, lastProphet.chapters, + 2); } } eventType = parser.next(); diff --git a/app/src/main/java/com/quranapp/android/utils/reader/QuranScriptUtils.kt b/app/src/main/java/com/quranapp/android/utils/reader/QuranScriptUtils.kt index e2bfeae7..56d7bf64 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/QuranScriptUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/reader/QuranScriptUtils.kt @@ -9,8 +9,14 @@ import com.quranapp.android.utils.univ.FileUtils import java.io.File object QuranScriptUtils { - val FONTS_DIR_NAME: String = FileUtils.createPath(AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, "script_fonts") - val SCRIPT_DIR_NAME: String = FileUtils.createPath(AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, "scripts") + val FONTS_DIR_NAME: String = FileUtils.createPath( + AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, + "script_fonts" + ) + val SCRIPT_DIR_NAME: String = FileUtils.createPath( + AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, + "scripts" + ) const val KEY_SCRIPT = "key.script" @@ -20,7 +26,11 @@ object QuranScriptUtils { const val SCRIPT_DEFAULT = SCRIPT_INDO_PAK - fun availableScriptSlugs(): Array = arrayOf(SCRIPT_INDO_PAK, SCRIPT_UTHMANI, SCRIPT_KFQPC_V1) + fun availableScriptSlugs(): Array = arrayOf( + SCRIPT_INDO_PAK, + SCRIPT_UTHMANI, + SCRIPT_KFQPC_V1 + ) fun verifyKFQPCScriptDownloaded(ctx: Context, kfqpcScriptSlug: String): Boolean { return FileUtils.newInstance(ctx).getScriptFile(kfqpcScriptSlug).length() > 0 @@ -43,7 +53,6 @@ object QuranScriptUtils { } } - fun String.isKFQPCScript(): Boolean = when (this) { QuranScriptUtils.SCRIPT_KFQPC_V1 -> true else -> false @@ -93,4 +102,4 @@ fun String.getQuranScriptResPath(): String = when (this) { fun Int.toKFQPCFontFilename(): String { return "qpc_page_$this.TTF" -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/reader/ReferenceTagHandler.java b/app/src/main/java/com/quranapp/android/utils/reader/ReferenceTagHandler.java index 8c833811..047046f1 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/ReferenceTagHandler.java +++ b/app/src/main/java/com/quranapp/android/utils/reader/ReferenceTagHandler.java @@ -1,7 +1,5 @@ package com.quranapp.android.utils.reader; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; - import android.text.Editable; import android.text.TextPaint; import android.text.style.ClickableSpan; @@ -9,8 +7,8 @@ import android.text.style.RelativeSizeSpan; import android.text.style.TypefaceSpan; import android.view.View; - import androidx.annotation.NonNull; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.peacedesign.android.utils.span.RoundedBG_FGSpan; import com.peacedesign.android.utils.span.SuperscriptSpan2; @@ -28,8 +26,8 @@ public class ReferenceTagHandler implements HtmlParser.TagHandler { private final int mRefBGColorPressed; private final OnReferenceTagClickCallback mRefTagClickCallback; private final OnFootnoteReferenceTagClickCallback mFootnoteRefTagClickCallback; - private int refTagStartIndex = 0; - private int footnoteRefTagStartIndex = 0; + private int refTagStartIndex; + private int footnoteRefTagStartIndex; private String chapter = "-1"; private String verses = "-1"; private String footnoteNo = "-1"; @@ -49,8 +47,8 @@ public ReferenceTagHandler(Set translSlugs, int refTxtColor, int refBGCo * @param fnTagClickCallback Callback to invoke if the clicked tag is {@link QuranConstants#FOOTNOTE_REF_TAG} */ public ReferenceTagHandler( - Set translSlug, int refTxtColor, int refBGColor, int refBGColorPres, - OnReferenceTagClickCallback refTagClickCallback, OnFootnoteReferenceTagClickCallback fnTagClickCallback + Set translSlug, int refTxtColor, int refBGColor, int refBGColorPres, + OnReferenceTagClickCallback refTagClickCallback, OnFootnoteReferenceTagClickCallback fnTagClickCallback ) { mTranslSlugs = translSlug; mRefTxtColor = refTxtColor; diff --git a/app/src/main/java/com/quranapp/android/utils/reader/TranslUtils.java b/app/src/main/java/com/quranapp/android/utils/reader/TranslUtils.java index 48fb47cc..91c2406a 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/TranslUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/reader/TranslUtils.java @@ -2,13 +2,12 @@ import android.content.Context; import android.util.Pair; - import androidx.annotation.Nullable; -import com.quranapp.android.utils.Log; import com.quranapp.android.R; import com.quranapp.android.components.quran.subcomponents.QuranTranslBookInfo; import com.quranapp.android.components.transls.TranslModel; +import com.quranapp.android.utils.Log; import com.quranapp.android.utils.Logger; import com.quranapp.android.utils.app.AppUtils; import com.quranapp.android.utils.sharedPrefs.SPReader; @@ -28,9 +27,9 @@ public class TranslUtils { public static final String DIR_NAME = FileUtils.createPath(AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, - "translations"); + "translations"); public static final String DIR_NAME_4_AVAILABLE_DOWNLOADS = - FileUtils.createPath(AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, "available_translation_downloads"); + FileUtils.createPath(AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, "available_translation_downloads"); public static final String TRANSL_INFO_FILE_NAME = "manifest.json"; public static final String KEY_TRANSLATIONS = "key.translations"; public static final String KEY_NEW_TRANSLATIONS = "key.translations_new"; @@ -235,7 +234,7 @@ public static List> getTranslInfosAndFilesForMig Pair pair = readTranslInfoFromJSONFile(fileUtils, infoJSONFile); if (pair == null) { Logger.print( - "Deleting translation directory with its manifest and data files: " + singleTranslDir.getName()); + "Deleting translation directory with its manifest and data files: " + singleTranslDir.getName()); fileUtils.deleteDirWithChildren(singleTranslDir); continue; } @@ -243,7 +242,7 @@ public static List> getTranslInfosAndFilesForMig translInfosAndFiles.add(pair); } catch (Exception e) { Logger.print( - "Error occurred, deleting translation directory with its manifest and data files dire: " + singleTranslDir.getName()); + "Error occurred, deleting translation directory with its manifest and data files dire: " + singleTranslDir.getName()); fileUtils.deleteDirWithChildren(singleTranslDir); e.printStackTrace(); } diff --git a/app/src/main/java/com/quranapp/android/utils/reader/factory/QuranTranslFactory.kt b/app/src/main/java/com/quranapp/android/utils/reader/factory/QuranTranslFactory.kt index 7527b6da..a91ca5d3 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/factory/QuranTranslFactory.kt +++ b/app/src/main/java/com/quranapp/android/utils/reader/factory/QuranTranslFactory.kt @@ -19,10 +19,9 @@ import com.quranapp.android.utils.reader.TranslUtils import com.quranapp.android.utils.reader.TranslUtils.TRANSL_TRANSLITERATION import com.quranapp.android.utils.search.SearchFilters import com.quranapp.android.utils.sharedPrefs.SPReader -import org.json.JSONArray import java.io.Closeable import java.util.* - +import org.json.JSONArray /** * This factory prepares contents of translations for the requesters. @@ -41,7 +40,11 @@ class QuranTranslFactory(private val context: Context) : Closeable { db.beginTransaction() try { db.execSQL("DROP TABLE IF EXISTS '$translSlug'") - db.delete(QuranTranslInfoEntry.TABLE_NAME, "${QuranTranslInfoEntry.COL_SLUG}=?", arrayOf(translSlug)) + db.delete( + QuranTranslInfoEntry.TABLE_NAME, + "${QuranTranslInfoEntry.COL_SLUG}=?", + arrayOf(translSlug) + ) db.setTransactionSuccessful() } finally { db.endTransaction() @@ -100,7 +103,9 @@ class QuranTranslFactory(private val context: Context) : Closeable { private fun getTranslationBooksInfo(slugs: Set? = null): Map { val selection = if (slugs != null) { List(slugs.size) { "${QuranTranslInfoEntry.COL_SLUG}=?" }.joinToString(" OR ") - } else null + } else { + null + } val selectionArgs = slugs?.toTypedArray() val cursor = dbHelper.readableDatabase.query( @@ -130,14 +135,30 @@ class QuranTranslFactory(private val context: Context) : Closeable { private fun getTranslationBookInfoFromCursor(cursor: Cursor): HashMap { val bookInfos = HashMap() while (cursor.moveToNext()) { - val bookInfo = QuranTranslBookInfo(cursor.getString(cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_SLUG))).apply { - bookName = cursor.getString(cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_BOOK_NAME)) - authorName = cursor.getString(cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_AUTHOR_NAME)) - displayName = cursor.getString(cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_DISPLAY_NAME)) - langName = cursor.getString(cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_LANG_NAME)) - langCode = cursor.getString(cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_LANG_CODE)) - lastUpdated = cursor.getLong(cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_LAST_UPDATED)) - downloadPath = cursor.getString(cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_DOWNLOAD_PATH)) + val bookInfo = QuranTranslBookInfo( + cursor.getString(cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_SLUG)) + ).apply { + bookName = cursor.getString( + cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_BOOK_NAME) + ) + authorName = cursor.getString( + cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_AUTHOR_NAME) + ) + displayName = cursor.getString( + cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_DISPLAY_NAME) + ) + langName = cursor.getString( + cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_LANG_NAME) + ) + langCode = cursor.getString( + cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_LANG_CODE) + ) + lastUpdated = cursor.getLong( + cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_LAST_UPDATED) + ) + downloadPath = cursor.getString( + cursor.getColumnIndexOrThrow(QuranTranslInfoEntry.COL_DOWNLOAD_PATH) + ) } bookInfos[bookInfo.slug] = bookInfo } @@ -177,7 +198,12 @@ class QuranTranslFactory(private val context: Context) : Closeable { } fun getTranslationsVerseRange(chapNo: Int, fromVerse: Int, toVerse: Int): List> { - return getTranslationsVerseRange(SPReader.getSavedTranslations(context), chapNo, fromVerse, toVerse) + return getTranslationsVerseRange( + SPReader.getSavedTranslations(context), + chapNo, + fromVerse, + toVerse + ) } /** @@ -189,7 +215,12 @@ class QuranTranslFactory(private val context: Context) : Closeable { * [, , ] -> verse 1:4 * ] * */ - fun getTranslationsVerseRange(slugs: Set?, chapNo: Int, fromVerse: Int, toVerse: Int): List> { + fun getTranslationsVerseRange( + slugs: Set?, + chapNo: Int, + fromVerse: Int, + toVerse: Int + ): List> { val transls = List(toVerse - fromVerse + 1) { ArrayList() }.toMutableList() if (slugs.isNullOrEmpty()) { @@ -218,7 +249,11 @@ class QuranTranslFactory(private val context: Context) : Closeable { * The returned verses will be sorted by verse number regardless of order of the passed verse numbers.. * */ fun getTranslationsDistinctVerses(chapNo: Int, vararg verses: Int): List> { - return getTranslationsDistinctVerses(SPReader.getSavedTranslations(context), chapNo, *verses) + return getTranslationsDistinctVerses( + SPReader.getSavedTranslations(context), + chapNo, + *verses + ) } /* @@ -282,7 +317,11 @@ class QuranTranslFactory(private val context: Context) : Closeable { return getTranslationBooksInfoValidated(translSlugs).keys } - private fun getTranslationsFromQuery(translSlug: String, selection: String, selectionArgs: Array): List? { + private fun getTranslationsFromQuery( + translSlug: String, + selection: String, + selectionArgs: Array + ): List? { return try { val cols = arrayOf(COL_CHAPTER_NO, COL_VERSE_NO, COL_TEXT, COL_FOOTNOTES) val cursor = dbHelper.readableDatabase.query( @@ -312,7 +351,8 @@ class QuranTranslFactory(private val context: Context) : Closeable { try { footnotes = readFootnotes( translSlug, - this.chapterNo, this.verseNo, + this.chapterNo, + this.verseNo, cursor1.getString(cursor1.getColumnIndexOrThrow(COL_FOOTNOTES)) ) } catch (e: Exception) { @@ -329,7 +369,12 @@ class QuranTranslFactory(private val context: Context) : Closeable { * [footnoteString] is the string of JsonArray. */ @Throws(Exception::class) - private fun readFootnotes(translSlug: String, chapterNo: Int, verseNo: Int, footnoteString: String): HashMap { + private fun readFootnotes( + translSlug: String, + chapterNo: Int, + verseNo: Int, + footnoteString: String + ): HashMap { val footnotesMap = HashMap() val footnotes = JSONArray(footnoteString) for (i in 0 until footnotes.length()) { @@ -361,7 +406,8 @@ class QuranTranslFactory(private val context: Context) : Closeable { return if (cursor.moveToNext()) { val footnotes = readFootnotes( translSlug, - chapNo, verseNo, + chapNo, + verseNo, cursor.getString(cursor.getColumnIndexOrThrow(COL_FOOTNOTES)) ) cursor.close() @@ -371,10 +417,18 @@ class QuranTranslFactory(private val context: Context) : Closeable { } } - fun prepareQuerySingle(filters: SearchFilters, query: String, slug: String, limit: Int, offset: Int): String { + fun prepareQuerySingle( + filters: SearchFilters, + query: String, + slug: String, + limit: Int, + offset: Int + ): String { val nQuery = query.replace(Regex("'", RegexOption.LITERAL), "''") val tableName = QuranTranslDBHelper.escapeTableName(slug) - val sqlQuery = StringBuilder("SELECT $COL_CHAPTER_NO, $COL_VERSE_NO, $COL_TEXT FROM $tableName") + val sqlQuery = StringBuilder( + "SELECT $COL_CHAPTER_NO, $COL_VERSE_NO, $COL_TEXT FROM $tableName" + ) sqlQuery.append(" WHERE") if (filters.searchWordPart) { sqlQuery.append(" $COL_TEXT LIKE '%$nQuery%'") @@ -434,5 +488,4 @@ class QuranTranslFactory(private val context: Context) : Closeable { } return cols.joinToString(",") } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/reader/factory/ReaderFactory.kt b/app/src/main/java/com/quranapp/android/utils/reader/factory/ReaderFactory.kt index 75814cef..56f58be7 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/factory/ReaderFactory.kt +++ b/app/src/main/java/com/quranapp/android/utils/reader/factory/ReaderFactory.kt @@ -62,7 +62,6 @@ object ReaderFactory { ) } - @JvmStatic fun startVerseRange(context: Context, chapterNo: Int, fromVerse: Int, toVerse: Int) { context.startActivity( @@ -118,7 +117,6 @@ object ReaderFactory { return prepareVerseRangeIntent(chapterNo, verseNo, verseNo) } - @JvmStatic fun prepareVerseRangeIntent(chapterNo: Int, fromVerse: Int, toVerse: Int): Intent { return prepareVerseRangeIntent(chapterNo, Pair(fromVerse, toVerse)) @@ -156,12 +154,18 @@ object ReaderFactory { chapters: List, verses: List ) { - val intent = prepareReferenceVerseIntent(showChapterSugg, title, desc, translSlug, chapters, verses) + val intent = prepareReferenceVerseIntent( + showChapterSugg, + title, + desc, + translSlug, + chapters, + verses + ) intent.setClass(context, ActivityReference::class.java) context.startActivity(intent) } - @JvmStatic fun startReferenceVerse(context: Context, referenceVerseModel: ReferenceVerseModel) { val intent = prepareReferenceVerseIntent(referenceVerseModel) @@ -169,7 +173,6 @@ object ReaderFactory { context.startActivity(intent) } - @JvmStatic fun prepareReferenceVerseIntent( showChapterSugg: Boolean, @@ -179,11 +182,17 @@ object ReaderFactory { chapters: List, verses: List ): Intent { - val referenceVerseModel = ReferenceVerseModel(showChapterSugg, title, desc, translSlug, chapters, verses) + val referenceVerseModel = ReferenceVerseModel( + showChapterSugg, + title, + desc, + translSlug, + chapters, + verses + ) return prepareReferenceVerseIntent(referenceVerseModel) } - @JvmStatic fun prepareReferenceVerseIntent(referenceVerseModel: ReferenceVerseModel): Intent { val intent = Intent() @@ -287,4 +296,4 @@ object ReaderFactory { intent.putExtra(Keys.READER_KEY_VERSE_NO, verseNo) return intent } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/reader/quranPage/VerseArabicHighlightSpan.java b/app/src/main/java/com/quranapp/android/utils/reader/quranPage/VerseArabicHighlightSpan.java index 7e3132d2..ee27ad8e 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/quranPage/VerseArabicHighlightSpan.java +++ b/app/src/main/java/com/quranapp/android/utils/reader/quranPage/VerseArabicHighlightSpan.java @@ -5,8 +5,8 @@ import android.text.style.BackgroundColorSpan; public class VerseArabicHighlightSpan extends BackgroundColorSpan { - private int BGColor = 0; - public int verseNo = 0; + private int BGColor; + public int verseNo; public VerseArabicHighlightSpan(int verseNo) { super(0); diff --git a/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationNotificationCallbacks.java b/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationNotificationCallbacks.java index a6db2b40..915e5841 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationNotificationCallbacks.java +++ b/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationNotificationCallbacks.java @@ -6,5 +6,4 @@ public interface RecitationNotificationCallbacks { void previousVerse(); void nextVerse(); - } \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationNotificationService.java b/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationNotificationService.java index 57baec3d..d3233e72 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationNotificationService.java +++ b/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationNotificationService.java @@ -4,20 +4,6 @@ package com.quranapp.android.utils.reader.recitation; -import static android.app.PendingIntent.FLAG_IMMUTABLE; -import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; -import static android.app.PendingIntent.getActivity; -import static android.app.PendingIntent.getBroadcast; -import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_NEXT_VERSE; -import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PAUSE; -import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PLAY; -import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PLAY_CONTROL; -import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PREVIOUS_VERSE; -import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_STOP; -import static com.quranapp.android.utils.univ.Codes.NOTIF_ID_REC_PLAYER; -import static com.quranapp.android.utils.univ.Codes.REQ_CODE_REC_PLAYER; -import static com.quranapp.android.utils.univ.Keys.KEY_ACTIVITY_RESUMED_FROM_NOTIFICATION; - import android.app.Notification; import android.app.PendingIntent; import android.app.Service; @@ -25,9 +11,21 @@ import android.os.Build; import android.os.IBinder; import android.widget.RemoteViews; - import androidx.annotation.Nullable; import androidx.core.app.NotificationCompat; +import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_NEXT_VERSE; +import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PAUSE; +import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PLAY; +import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PLAY_CONTROL; +import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PREVIOUS_VERSE; +import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_STOP; +import static com.quranapp.android.utils.univ.Codes.NOTIF_ID_REC_PLAYER; +import static com.quranapp.android.utils.univ.Codes.REQ_CODE_REC_PLAYER; +import static com.quranapp.android.utils.univ.Keys.KEY_ACTIVITY_RESUMED_FROM_NOTIFICATION; +import static android.app.PendingIntent.FLAG_IMMUTABLE; +import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; +import static android.app.PendingIntent.getActivity; +import static android.app.PendingIntent.getBroadcast; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; @@ -50,7 +48,7 @@ public void onCreate() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { Notification notification = NotificationUtils.createEmptyNotif(this, - getString(R.string.strNotifChannelIdRecitation)); + getString(R.string.strNotifChannelIdRecitation)); startForeground(NOTIF_ID_REC_PLAYER, notification); } } @@ -71,8 +69,8 @@ public IBinder onBind(Intent intent) { public int onStartCommand(Intent intent, int flags, int startId) { if (intent == null) { Notification notification = NotificationUtils.createEmptyNotif( - this, - getString(R.string.strNotifChannelIdRecitation) + this, + getString(R.string.strNotifChannelIdRecitation) ); startForeground(NOTIF_ID_REC_PLAYER, notification); finish(); diff --git a/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationParams.java b/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationParams.java index 4db27944..8b726579 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationParams.java +++ b/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationParams.java @@ -4,7 +4,6 @@ import android.os.Parcel; import android.os.Parcelable; -import com.quranapp.android.utils.Log; import com.quranapp.android.components.quran.QuranMeta; public class RecitationParams implements Parcelable { diff --git a/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationUtils.java b/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationUtils.java index 09d528c5..f873ce8b 100644 --- a/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/reader/recitation/RecitationUtils.java @@ -3,7 +3,6 @@ import android.content.Context; import android.os.Build; import android.text.TextUtils; - import androidx.annotation.Nullable; import com.quranapp.android.components.recitation.RecitationModel; @@ -23,7 +22,7 @@ public class RecitationUtils { public static final String DIR_NAME = FileUtils.createPath(AppUtils.BASE_APP_DOWNLOADED_SAVED_DATA_DIR, - "recitations"); + "recitations"); public static final Pattern URL_CHAPTER_PATTERN = Pattern.compile("\\{chapNo:(.*?)\\}", Pattern.CASE_INSENSITIVE); public static final Pattern URL_VERSE_PATTERN = Pattern.compile("\\{verseNo:(.*?)\\}", Pattern.CASE_INSENSITIVE); @@ -94,9 +93,9 @@ public static String prepareAudioPathForSpecificReciter(String reciterSlug, int } public static synchronized void obtainRecitationModel( - Context ctx, - boolean force, - OnResultReadyCallback callback + Context ctx, + boolean force, + OnResultReadyCallback callback ) { String savedSlug = SPReader.getSavedRecitationSlug(ctx); diff --git a/app/src/main/java/com/quranapp/android/utils/receivers/KFQPCScriptFontsDownloadReceiver.kt b/app/src/main/java/com/quranapp/android/utils/receivers/KFQPCScriptFontsDownloadReceiver.kt index 33a45780..f5aaddc0 100644 --- a/app/src/main/java/com/quranapp/android/utils/receivers/KFQPCScriptFontsDownloadReceiver.kt +++ b/app/src/main/java/com/quranapp/android/utils/receivers/KFQPCScriptFontsDownloadReceiver.kt @@ -52,4 +52,4 @@ class KFQPCScriptFontsDownloadReceiver : BroadcastReceiver() { const val ACTION_DOWNLOAD_STATUS = "action.download_status" const val KEY_DOWNLOAD_FLOW = "key.download_flow" } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/receivers/NetworkStateReceiver.java b/app/src/main/java/com/quranapp/android/utils/receivers/NetworkStateReceiver.java index 9dca7752..7bd11f03 100644 --- a/app/src/main/java/com/quranapp/android/utils/receivers/NetworkStateReceiver.java +++ b/app/src/main/java/com/quranapp/android/utils/receivers/NetworkStateReceiver.java @@ -6,7 +6,6 @@ import android.content.IntentFilter; import android.net.ConnectivityManager; import android.net.NetworkInfo; - import androidx.annotation.NonNull; import com.quranapp.android.utils.univ.MessageUtils; diff --git a/app/src/main/java/com/quranapp/android/utils/receivers/ReceiverUtils.java b/app/src/main/java/com/quranapp/android/utils/receivers/ReceiverUtils.java index 5f18ab11..b7f44f88 100644 --- a/app/src/main/java/com/quranapp/android/utils/receivers/ReceiverUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/receivers/ReceiverUtils.java @@ -4,14 +4,13 @@ package com.quranapp.android.utils.receivers; -import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; -import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; -import static android.content.pm.PackageManager.DONT_KILL_APP; - import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; +import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; +import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; +import static android.content.pm.PackageManager.DONT_KILL_APP; public final class ReceiverUtils { public static void enableReceiver(Context context, Class receiverClass) { diff --git a/app/src/main/java/com/quranapp/android/utils/receivers/VOTDReceiver.java b/app/src/main/java/com/quranapp/android/utils/receivers/VOTDReceiver.java index 91f3efc0..0b41b011 100644 --- a/app/src/main/java/com/quranapp/android/utils/receivers/VOTDReceiver.java +++ b/app/src/main/java/com/quranapp/android/utils/receivers/VOTDReceiver.java @@ -4,16 +4,14 @@ package com.quranapp.android.utils.receivers; -import static android.app.PendingIntent.FLAG_CANCEL_CURRENT; - import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Build; - import androidx.core.app.NotificationCompat; +import static android.app.PendingIntent.FLAG_CANCEL_CURRENT; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; @@ -27,41 +25,44 @@ public class VOTDReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, Intent intent) { - QuranMeta.prepareInstance(context, quranMeta -> VerseUtils.getVOTD(context, quranMeta, null, (chapterNo, verseNo) -> { - if (!QuranMeta.isChapterValid(chapterNo) || !quranMeta.isVerseValid4Chapter(chapterNo, verseNo)) { - return; - } + QuranMeta.prepareInstance(context, + quranMeta -> VerseUtils.getVOTD(context, quranMeta, null, (chapterNo, verseNo) -> { + if (!QuranMeta.isChapterValid(chapterNo) || !quranMeta.isVerseValid4Chapter(chapterNo, verseNo)) { + return; + } - int notificationId = Codes.NOTIF_ID_VOTD; - int flag = FLAG_CANCEL_CURRENT; - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { - flag |= PendingIntent.FLAG_IMMUTABLE; - } + int notificationId = Codes.NOTIF_ID_VOTD; + int flag = FLAG_CANCEL_CURRENT; + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { + flag |= PendingIntent.FLAG_IMMUTABLE; + } - Intent readerIntent = ReaderFactory.prepareSingleVerseIntent(chapterNo, verseNo); - readerIntent.setClass(context, ActivityReader.class); - PendingIntent readerPendingIntent = PendingIntent.getActivity(context, notificationId, readerIntent, flag); + Intent readerIntent = ReaderFactory.prepareSingleVerseIntent(chapterNo, verseNo); + readerIntent.setClass(context, ActivityReader.class); + PendingIntent readerPendingIntent = PendingIntent.getActivity(context, notificationId, readerIntent, + flag); - String channelId = context.getString(R.string.strNotifChannelIdVOTD); - NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId); - builder.setAutoCancel(true); - builder.setContentTitle(context.getText(R.string.strTitleVOTD)); - builder.setCategory(NotificationCompat.CATEGORY_REMINDER); - builder.setContentIntent(readerPendingIntent); + String channelId = context.getString(R.string.strNotifChannelIdVOTD); + NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId); + builder.setAutoCancel(true); + builder.setContentTitle(context.getText(R.string.strTitleVOTD)); + builder.setCategory(NotificationCompat.CATEGORY_REMINDER); + builder.setContentIntent(readerPendingIntent); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { - builder.setSmallIcon(R.drawable.dr_ic_shortcut_votd); - } else { - builder.setSmallIcon(R.drawable.dr_logo); - } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + builder.setSmallIcon(R.drawable.dr_ic_shortcut_votd); + } else { + builder.setSmallIcon(R.drawable.dr_logo); + } - String chapName = quranMeta.getChapterName(context, chapterNo); - CharSequence msg = context.getString(R.string.strLabelVerseWithChapNameWithColon, chapName, verseNo); - builder.setContentText(msg); + String chapName = quranMeta.getChapterName(context, chapterNo); + CharSequence msg = context.getString(R.string.strLabelVerseWithChapNameWithColon, chapName, verseNo); + builder.setContentText(msg); - NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.notify(notificationId, builder.build()); - })); + NotificationManager notificationManager = (NotificationManager) context.getSystemService( + Context.NOTIFICATION_SERVICE); + notificationManager.notify(notificationId, builder.build()); + })); if (SPVerses.getVOTDReminderEnabled(context)) { VOTDUtils.enableVOTDReminder(context); diff --git a/app/src/main/java/com/quranapp/android/utils/services/KFQPCScriptFontsDownloadService.kt b/app/src/main/java/com/quranapp/android/utils/services/KFQPCScriptFontsDownloadService.kt index dd1cadf1..e13f7845 100644 --- a/app/src/main/java/com/quranapp/android/utils/services/KFQPCScriptFontsDownloadService.kt +++ b/app/src/main/java/com/quranapp/android/utils/services/KFQPCScriptFontsDownloadService.kt @@ -18,14 +18,14 @@ import com.quranapp.android.utils.reader.getQuranScriptName import com.quranapp.android.utils.reader.toKFQPCFontFilename import com.quranapp.android.utils.receivers.KFQPCScriptFontsDownloadReceiver import com.quranapp.android.utils.univ.FileUtils +import java.io.File +import java.io.InputStream +import java.io.OutputStream import kotlinx.coroutines.* import kotlinx.coroutines.flow.FlowCollector import kotlinx.coroutines.flow.catch import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flowOn -import java.io.File -import java.io.InputStream -import java.io.OutputStream class KFQPCScriptFontsDownloadService : Service() { companion object { @@ -40,7 +40,9 @@ class KFQPCScriptFontsDownloadService : Service() { private val job = Job() private val coroutineScope = CoroutineScope(Dispatchers.Main + job) private val binder = LocalBinder() - private val notifManager by lazy { getSystemService(NOTIFICATION_SERVICE) as NotificationManager } + private val notifManager by lazy { + getSystemService(NOTIFICATION_SERVICE) as NotificationManager + } var isDownloadRunning = false var currentScriptKey: String? = null @@ -118,7 +120,9 @@ class KFQPCScriptFontsDownloadService : Service() { emit(DownloadFlow.Start(null)) emit(DownloadFlow.Progress(null, 0)) - val scriptResBody = RetrofitInstance.github.getQuranScript("script_$scriptKey.json") + val scriptResBody = RetrofitInstance.github.getQuranScript( + "script_$scriptKey.json" + ) val byteStream = scriptResBody.byteStream() val totalBytes = byteStream.available() @@ -132,14 +136,12 @@ class KFQPCScriptFontsDownloadService : Service() { emit(DownloadFlow.Complete(null)) } - } catch (e: Exception) { emit(DownloadFlow.Failed(null)) e.printStackTrace() return@flow } - val fontsDir = fileUtils.getKFQPCScriptFontDir(scriptKey) for (pageNo in 1..QuranMeta.totalPages()) { try { @@ -179,14 +181,21 @@ class KFQPCScriptFontsDownloadService : Service() { emit(DownloadFlow.Complete(PAGE_NO_ALL_DOWNLOADS_FINISHED)) }.flowOn(Dispatchers.IO).catch { it.printStackTrace() - sendBroadcast(Intent(KFQPCScriptFontsDownloadReceiver.ACTION_DOWNLOAD_STATUS).apply { - putExtra(KFQPCScriptFontsDownloadReceiver.KEY_DOWNLOAD_FLOW, DownloadFlow.Failed(null)) - }) + sendBroadcast( + Intent(KFQPCScriptFontsDownloadReceiver.ACTION_DOWNLOAD_STATUS).apply { + putExtra( + KFQPCScriptFontsDownloadReceiver.KEY_DOWNLOAD_FLOW, + DownloadFlow.Failed(null) + ) + } + ) finish() }.collect { - sendBroadcast(Intent(KFQPCScriptFontsDownloadReceiver.ACTION_DOWNLOAD_STATUS).apply { - putExtra(KFQPCScriptFontsDownloadReceiver.KEY_DOWNLOAD_FLOW, it) - }) + sendBroadcast( + Intent(KFQPCScriptFontsDownloadReceiver.ACTION_DOWNLOAD_STATUS).apply { + putExtra(KFQPCScriptFontsDownloadReceiver.KEY_DOWNLOAD_FLOW, it) + } + ) if (it is DownloadFlow.Complete && it.pageNo == PAGE_NO_ALL_DOWNLOADS_FINISHED || it is DownloadFlow.Failed && it.pageNo == null) { finish() @@ -194,7 +203,6 @@ class KFQPCScriptFontsDownloadService : Service() { showProgressNotification(it.pageNo, it.progress, scriptKey) } } - } } @@ -218,7 +226,9 @@ class KFQPCScriptFontsDownloadService : Service() { outS.write(buffer, 0, bytes) progressBytes += bytes - flowCollector.emit(DownloadFlow.Progress(pageNo, ((progressBytes * 100) / totalBytes).toInt())) + flowCollector.emit( + DownloadFlow.Progress(pageNo, ((progressBytes * 100) / totalBytes).toInt()) + ) } } } @@ -246,13 +256,23 @@ class KFQPCScriptFontsDownloadService : Service() { .Builder(this, getString(R.string.strNotifChannelIdDownloads)) .setSmallIcon(R.drawable.dr_logo) .setContentTitle( - if (pageNo == null) getString(R.string.msgDownloadingScript) - else getString(R.string.msgDownloadingFonts) + if (pageNo == null) { + getString(R.string.msgDownloadingScript) + } else { + getString(R.string.msgDownloadingFonts) + } ) .setContentText(scriptKey.getQuranScriptName()) .setSubText( - if (pageNo == null) null - else getString(R.string.msgFontsDonwloadProgressShort, pageNo - 1, QuranMeta.totalPages()) + if (pageNo == null) { + null + } else { + getString( + R.string.msgFontsDonwloadProgressShort, + pageNo - 1, + QuranMeta.totalPages() + ) + } ) .setProgress(100, progress, false) .setOngoing(true) @@ -279,7 +299,6 @@ class KFQPCScriptFontsDownloadService : Service() { inner class LocalBinder : Binder() { val service get() = this@KFQPCScriptFontsDownloadService } - } sealed class DownloadFlow : java.io.Serializable { diff --git a/app/src/main/java/com/quranapp/android/utils/services/TranslationDownloadService.kt b/app/src/main/java/com/quranapp/android/utils/services/TranslationDownloadService.kt index 105e70fa..fbc822c9 100644 --- a/app/src/main/java/com/quranapp/android/utils/services/TranslationDownloadService.kt +++ b/app/src/main/java/com/quranapp/android/utils/services/TranslationDownloadService.kt @@ -50,7 +50,10 @@ class TranslationDownloadService : Service() { if (STARTED_BY_USER && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { startForeground( 1, - NotificationUtils.createEmptyNotif(this, getString(R.string.strNotifChannelIdDownloads)) + NotificationUtils.createEmptyNotif( + this, + getString(R.string.strNotifChannelIdDownloads) + ) ) } } @@ -65,15 +68,19 @@ class TranslationDownloadService : Service() { } override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { - if (intent == null) { - val notification = NotificationUtils.createEmptyNotif(this, getString(R.string.strNotifChannelIdDownloads)) + val notification = NotificationUtils.createEmptyNotif( + this, + getString(R.string.strNotifChannelIdDownloads) + ) startForeground(1, notification) finish() return START_NOT_STICKY } - val bookInfo = intent.serializableExtra(TranslDownloadReceiver.KEY_TRANSL_BOOK_INFO) + val bookInfo = intent.serializableExtra( + TranslDownloadReceiver.KEY_TRANSL_BOOK_INFO + ) ?: return START_NOT_STICKY mCurrentDownloads.add(bookInfo.slug) @@ -87,19 +94,21 @@ class TranslationDownloadService : Service() { return START_NOT_STICKY } - private fun showNotification(notifId: Int, notification: Notification, notifManager: NotificationManagerCompat) { + private fun showNotification( + notifId: Int, + notification: Notification, + notifManager: NotificationManagerCompat + ) { notifManager.cancel(1) ServiceCompat.stopForeground(this, ServiceCompat.STOP_FOREGROUND_DETACH) startForeground(notifId, notification) } - private fun startDownload( bookInfo: QuranTranslBookInfo, notifBuilder: NotificationCompat.Builder, notifManager: NotificationManagerCompat ) { - CoroutineScope(Dispatchers.IO).launch { val notifId = bookInfo.slug.hashCode() @@ -111,7 +120,10 @@ class TranslationDownloadService : Service() { val data = responseBody.string() if (data.isEmpty()) { - sendStatusBroadcast(TranslDownloadReceiver.TRANSL_DOWNLOAD_STATUS_FAILED, bookInfo) + sendStatusBroadcast( + TranslDownloadReceiver.TRANSL_DOWNLOAD_STATUS_FAILED, + bookInfo + ) return@launch } @@ -142,7 +154,11 @@ class TranslationDownloadService : Service() { } } - private fun notify(notifId: Int, notifManager: NotificationManagerCompat, notification: Notification) { + private fun notify( + notifId: Int, + notifManager: NotificationManagerCompat, + notification: Notification + ) { if (ActivityCompat.checkSelfPermission( this, Manifest.permission.POST_NOTIFICATIONS @@ -154,12 +170,13 @@ class TranslationDownloadService : Service() { notifManager.notify(notifId, notification) } - private fun sendStatusBroadcast(status: String, bookInfo: QuranTranslBookInfo) { - sendBroadcast(Intent(TranslDownloadReceiver.ACTION_TRANSL_DOWNLOAD_STATUS).apply { - putExtra(TranslDownloadReceiver.KEY_TRANSL_BOOK_INFO, bookInfo) - putExtra(TranslDownloadReceiver.KEY_TRANSL_DOWNLOAD_STATUS, status) - }) + sendBroadcast( + Intent(TranslDownloadReceiver.ACTION_TRANSL_DOWNLOAD_STATUS).apply { + putExtra(TranslDownloadReceiver.KEY_TRANSL_BOOK_INFO, bookInfo) + putExtra(TranslDownloadReceiver.KEY_TRANSL_DOWNLOAD_STATUS, status) + } + ) } private fun prepareNotification(bookInfo: QuranTranslBookInfo): NotificationCompat.Builder { @@ -181,8 +198,16 @@ class TranslationDownloadService : Service() { } val activityIntent = Intent(this, ActivitySettings::class.java) - activityIntent.putExtra(ActivitySettings.KEY_SETTINGS_DESTINATION, ActivitySettings.SETTINGS_TRANSL_DOWNLOAD) - val pendingIntent = PendingIntent.getActivity(this, bookInfo.slug.hashCode(), activityIntent, flag) + activityIntent.putExtra( + ActivitySettings.KEY_SETTINGS_DESTINATION, + ActivitySettings.SETTINGS_TRANSL_DOWNLOAD + ) + val pendingIntent = PendingIntent.getActivity( + this, + bookInfo.slug.hashCode(), + activityIntent, + flag + ) builder.setContentIntent(pendingIntent) return builder } @@ -207,4 +232,4 @@ class TranslationDownloadService : Service() { inner class TranslationDownloadServiceBinder : Binder() { val service: TranslationDownloadService get() = this@TranslationDownloadService } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPAppActions.kt b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPAppActions.kt index 8a80c1d0..06aa721f 100644 --- a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPAppActions.kt +++ b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPAppActions.kt @@ -29,7 +29,10 @@ object SPAppActions { } @JvmStatic - fun getFetchTranslationsForce(ctx: Context): Boolean = sp(ctx).getBoolean(KEY_APP_ACTION_SP_TRANSLS_FETCH_FORCE, false) + fun getFetchTranslationsForce(ctx: Context): Boolean = sp(ctx).getBoolean( + KEY_APP_ACTION_SP_TRANSLS_FETCH_FORCE, + false + ) @JvmStatic fun setFetchRecitationsForce(ctx: Context, fetchForce: Boolean) { @@ -40,7 +43,10 @@ object SPAppActions { } @JvmStatic - fun getFetchRecitationsForce(ctx: Context): Boolean = sp(ctx).getBoolean(KEY_APP_ACTION_SP_RECITATIONS_FETCH_FORCE, false) + fun getFetchRecitationsForce(ctx: Context): Boolean = sp(ctx).getBoolean( + KEY_APP_ACTION_SP_RECITATIONS_FETCH_FORCE, + false + ) @JvmStatic fun setFetchUrlsForce(ctx: Context, fetchForce: Boolean) { @@ -51,7 +57,10 @@ object SPAppActions { } @JvmStatic - fun getFetchUrlsForce(ctx: Context): Boolean = sp(ctx).getBoolean(KEY_APP_ACTION_SP_URLS_FETCH_FORCE, false) + fun getFetchUrlsForce(ctx: Context): Boolean = sp(ctx).getBoolean( + KEY_APP_ACTION_SP_URLS_FETCH_FORCE, + false + ) @JvmStatic fun addToPendingAction(ctx: Context, action: String, victim: String?) { @@ -111,5 +120,4 @@ object SPAppActions { apply() } } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPAppConfigs.kt b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPAppConfigs.kt index 7a3654c4..34b51a22 100644 --- a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPAppConfigs.kt +++ b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPAppConfigs.kt @@ -15,7 +15,10 @@ object SPAppConfigs { const val THEME_MODE_LIGHT = "app.theme.light" const val THEME_MODE_DARK = "app.theme.dark" - private fun sp(context: Context) = context.getSharedPreferences(SP_APP_CONFIGS, Context.MODE_PRIVATE) + private fun sp(context: Context) = context.getSharedPreferences( + SP_APP_CONFIGS, + Context.MODE_PRIVATE + ) @JvmStatic fun setThemeMode(ctx: Context, themeMode: String?) { @@ -64,4 +67,4 @@ object SPAppConfigs { apply() } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPLog.kt b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPLog.kt index d173fabb..37e6291a 100644 --- a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPLog.kt +++ b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPLog.kt @@ -19,11 +19,10 @@ object SPLog { fun getLastCrashLog(ctx: Context): String? = sp(ctx).getString(KEY_SP_LAST_CRASH_LOG, null) - fun removeLastCrashLog(ctx: Context) { sp(ctx).edit().apply { remove(KEY_SP_LAST_CRASH_LOG) apply() } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPReader.java b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPReader.java index 6782df34..50c4420c 100644 --- a/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPReader.java +++ b/app/src/main/java/com/quranapp/android/utils/sharedPrefs/SPReader.java @@ -1,5 +1,7 @@ package com.quranapp.android.utils.sharedPrefs; +import android.content.Context; +import android.content.SharedPreferences; import static com.quranapp.android.reader_managers.ReaderParams.READER_STYLE_DEFAULT; import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.KEY_TEXT_SIZE_MULT_ARABIC; import static com.quranapp.android.utils.reader.ReaderTextSizeUtils.KEY_TEXT_SIZE_MULT_TRANSL; @@ -10,9 +12,6 @@ import static com.quranapp.android.utils.reader.recitation.RecitationUtils.KEY_RECITATION_REPEAT; import static com.quranapp.android.utils.reader.recitation.RecitationUtils.RECITATION_DEFAULT_VERSE_SYNC; -import android.content.Context; -import android.content.SharedPreferences; - import com.quranapp.android.utils.app.RecitationManager; import com.quranapp.android.utils.reader.QuranScriptUtils; import com.quranapp.android.utils.reader.TranslUtils; @@ -152,8 +151,8 @@ public static boolean getRecitationContinueChapter(Context context) { } return sp.getBoolean( - RecitationUtils.KEY_RECITATION_CONTINUE_CHAPTER, - RecitationUtils.RECITATION_DEFAULT_CONTINUE_CHAPTER + RecitationUtils.KEY_RECITATION_CONTINUE_CHAPTER, + RecitationUtils.RECITATION_DEFAULT_CONTINUE_CHAPTER ); } diff --git a/app/src/main/java/com/quranapp/android/utils/simplified/SimpleSeekbarChangeListener.kt b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleSeekbarChangeListener.kt index f03a2d6c..7a53b095 100644 --- a/app/src/main/java/com/quranapp/android/utils/simplified/SimpleSeekbarChangeListener.kt +++ b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleSeekbarChangeListener.kt @@ -6,4 +6,4 @@ abstract class SimpleSeekbarChangeListener : SeekBar.OnSeekBarChangeListener { override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {} override fun onStartTrackingTouch(seekBar: SeekBar) {} override fun onStopTrackingTouch(seekBar: SeekBar) {} -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTabSelectorListener.kt b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTabSelectorListener.kt index ef2d9fe5..a9d4b54e 100644 --- a/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTabSelectorListener.kt +++ b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTabSelectorListener.kt @@ -6,4 +6,4 @@ abstract class SimpleTabSelectorListener : TabLayout.OnTabSelectedListener { override fun onTabSelected(tab: TabLayout.Tab) {} override fun onTabUnselected(tab: TabLayout.Tab) {} override fun onTabReselected(tab: TabLayout.Tab) {} -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTextWatcher.kt b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTextWatcher.kt index 76466d13..1aab1221 100644 --- a/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTextWatcher.kt +++ b/app/src/main/java/com/quranapp/android/utils/simplified/SimpleTextWatcher.kt @@ -7,4 +7,4 @@ abstract class SimpleTextWatcher : TextWatcher { override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {} override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {} override fun afterTextChanged(s: Editable) {} -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/tafsir/TafsirUtils.java b/app/src/main/java/com/quranapp/android/utils/tafsir/TafsirUtils.java index 38303852..67033912 100644 --- a/app/src/main/java/com/quranapp/android/utils/tafsir/TafsirUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/tafsir/TafsirUtils.java @@ -1,7 +1,6 @@ package com.quranapp.android.utils.tafsir; import android.annotation.SuppressLint; - import androidx.annotation.Nullable; import com.quranapp.android.utils.app.AppUtils; diff --git a/app/src/main/java/com/quranapp/android/utils/tafsir/TafsirWebViewClient.java b/app/src/main/java/com/quranapp/android/utils/tafsir/TafsirWebViewClient.java index e29a2ca1..b05ea9b5 100644 --- a/app/src/main/java/com/quranapp/android/utils/tafsir/TafsirWebViewClient.java +++ b/app/src/main/java/com/quranapp/android/utils/tafsir/TafsirWebViewClient.java @@ -12,16 +12,15 @@ import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; - import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.core.graphics.drawable.DrawableCompat; -import com.quranapp.android.utils.Log; import com.peacedesign.android.utils.WindowUtils; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityTafsir; import com.quranapp.android.components.quran.subcomponents.Chapter; +import com.quranapp.android.utils.Log; import com.quranapp.android.utils.extensions.ContextKt; import com.quranapp.android.utils.univ.ResUtils; @@ -38,7 +37,7 @@ public class TafsirWebViewClient extends WebViewClient { private final boolean isDarkTheme; public TafsirWebViewClient(ActivityTafsir activityTafsir) { - this.mActivityTafsir = activityTafsir; + mActivityTafsir = activityTafsir; isDarkTheme = WindowUtils.isNightMode(activityTafsir); } @@ -75,8 +74,9 @@ private WebResourceResponse handleRequest(WebView view, WebResourceRequest reque data = ctx.getResources().openRawResource(+R.font.me_quran_4_uthmani_text); } else if (uriStr.contains("verse-preview")) { data = ctx.getResources().openRawResource(+R.font.pdms); - } else if (TafsirUtils.TAFSIR_SLUG_TAFSIR_IBN_KATHIR_UR.equals(mActivityTafsir.mTafsirSlug) && uriStr.contains( - "content")) { + } else if (TafsirUtils.TAFSIR_SLUG_TAFSIR_IBN_KATHIR_UR.equals( + mActivityTafsir.mTafsirSlug) && uriStr.contains( + "content")) { data = view.getContext().getResources().openRawResource(+R.font.font_urdu); } break; @@ -109,7 +109,8 @@ private WebResourceResponse handleRequest(WebView view, WebResourceRequest reque Map headers = request.getRequestHeaders(); headers.put("Access-Control-Allow-Origin", "*"); - return new WebResourceResponse(URLConnection.guessContentTypeFromName(uri.getPath()), "utf-8", 200, "OK", headers, data); + return new WebResourceResponse(URLConnection.guessContentTypeFromName(uri.getPath()), "utf-8", 200, "OK", + headers, data); } private InputStream createArrowDrawableStream(Context context, float rotate) { @@ -122,7 +123,8 @@ private InputStream createArrowDrawableStream(Context context, float rotate) { drawable.setTint(isDarkTheme ? Color.parseColor("#BBBBBB") : Color.BLACK); - Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), + Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); if (rotate != 0) { canvas.rotate(rotate, drawable.getIntrinsicWidth() >> 1, drawable.getIntrinsicHeight() >> 1); @@ -157,12 +159,12 @@ private void installContents(WebView webView) throws JSONException { JSONObject contentJson = new JSONObject(); contentJson.put("tafsir-title", TafsirUtils.getTafsirName(tafsirSlug)); contentJson.put("verse-info-title", - mActivityTafsir.str(R.string.strLabelVerseWithChapNameWithBar, chapter.getName(), verseNo)); + mActivityTafsir.str(R.string.strLabelVerseWithChapNameWithBar, chapter.getName(), verseNo)); contentJson.put("verse-preview", chapter.getVerse(verseNo).arabicText); contentJson.put("previous-tafsir-title", preparePrevVerseTitle(verseNo)); contentJson.put("next-tafsir-title", prepareNextVerseTitle(verseNo, chapter.getVerseCount())); - String js = "javascript:installContents('" + contentJson.toString() + "')"; + String js = "javascript:installContents('" + contentJson + "')"; webView.loadUrl(js); } diff --git a/app/src/main/java/com/quranapp/android/utils/thread/runner/CallableTaskRunner.java b/app/src/main/java/com/quranapp/android/utils/thread/runner/CallableTaskRunner.java index 2f7eb78a..be68541e 100644 --- a/app/src/main/java/com/quranapp/android/utils/thread/runner/CallableTaskRunner.java +++ b/app/src/main/java/com/quranapp/android/utils/thread/runner/CallableTaskRunner.java @@ -2,7 +2,6 @@ import android.os.Handler; import android.os.Looper; - import androidx.annotation.NonNull; import com.quranapp.android.utils.thread.tasks.TaskCallable; diff --git a/app/src/main/java/com/quranapp/android/utils/thread/runner/MultiTaskRunner.java b/app/src/main/java/com/quranapp/android/utils/thread/runner/MultiTaskRunner.java index 9c59a32f..957f2af8 100644 --- a/app/src/main/java/com/quranapp/android/utils/thread/runner/MultiTaskRunner.java +++ b/app/src/main/java/com/quranapp/android/utils/thread/runner/MultiTaskRunner.java @@ -2,7 +2,6 @@ import android.os.Handler; import android.os.Looper; - import androidx.annotation.NonNull; import com.quranapp.android.utils.thread.tasks.TaskCallable; diff --git a/app/src/main/java/com/quranapp/android/utils/thread/runner/RunnableTaskRunner.java b/app/src/main/java/com/quranapp/android/utils/thread/runner/RunnableTaskRunner.java index 3a5e0320..68946554 100644 --- a/app/src/main/java/com/quranapp/android/utils/thread/runner/RunnableTaskRunner.java +++ b/app/src/main/java/com/quranapp/android/utils/thread/runner/RunnableTaskRunner.java @@ -2,7 +2,6 @@ import android.os.Handler; import android.os.Looper; - import androidx.annotation.NonNull; import androidx.core.os.HandlerCompat; diff --git a/app/src/main/java/com/quranapp/android/utils/thread/tasks/BaseCallableTask.java b/app/src/main/java/com/quranapp/android/utils/thread/tasks/BaseCallableTask.java index 9d2a1a94..6971a6ab 100644 --- a/app/src/main/java/com/quranapp/android/utils/thread/tasks/BaseCallableTask.java +++ b/app/src/main/java/com/quranapp/android/utils/thread/tasks/BaseCallableTask.java @@ -1,13 +1,12 @@ package com.quranapp.android.utils.thread.tasks; import android.os.Build; - import androidx.annotation.NonNull; import java.net.HttpURLConnection; public abstract class BaseCallableTask implements TaskCallable { - private boolean mDone = false; + private boolean mDone; @Override public void preExecute() { diff --git a/app/src/main/java/com/quranapp/android/utils/thread/tasks/BaseRunnableTask.java b/app/src/main/java/com/quranapp/android/utils/thread/tasks/BaseRunnableTask.java index cac484b9..681c605c 100644 --- a/app/src/main/java/com/quranapp/android/utils/thread/tasks/BaseRunnableTask.java +++ b/app/src/main/java/com/quranapp/android/utils/thread/tasks/BaseRunnableTask.java @@ -1,13 +1,12 @@ package com.quranapp.android.utils.thread.tasks; import android.os.Build; - import androidx.annotation.NonNull; import java.net.HttpURLConnection; public abstract class BaseRunnableTask implements TaskRunnable { - private boolean mDone = false; + private boolean mDone; @Override public void preExecute() { diff --git a/app/src/main/java/com/quranapp/android/utils/univ/Codes.kt b/app/src/main/java/com/quranapp/android/utils/univ/Codes.kt index b306ce37..6ab6d511 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/Codes.kt +++ b/app/src/main/java/com/quranapp/android/utils/univ/Codes.kt @@ -13,4 +13,4 @@ object Codes { const val REQ_CODE_LOG_IN = 0x0200 const val REQ_CODE_PROFILE_UPDATE = 0x0210 const val REQ_CODE_PERMISSION_STORAGE_EXTERNAL = 0x0310 -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/univ/DBUtils.kt b/app/src/main/java/com/quranapp/android/utils/univ/DBUtils.kt index 8c483629..d3179e84 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/DBUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/univ/DBUtils.kt @@ -20,4 +20,4 @@ object DBUtils { } return selection.toString() } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/univ/FileUtils.java b/app/src/main/java/com/quranapp/android/utils/univ/FileUtils.java index cf032a8b..8b2ff3bc 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/FileUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/univ/FileUtils.java @@ -1,9 +1,5 @@ package com.quranapp.android.utils.univ; -import static android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION; -import static com.quranapp.android.utils.reader.TranslUtils.TRANSL_AVAILABLE_DOWNLOADS_FILE_NAME; -import static com.quranapp.android.utils.reader.recitation.RecitationUtils.AVAILABLE_RECITATIONS_FILENAME; - import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; @@ -12,10 +8,12 @@ import android.net.Uri; import android.provider.MediaStore; import android.text.TextUtils; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.FileProvider; +import static com.quranapp.android.utils.reader.TranslUtils.TRANSL_AVAILABLE_DOWNLOADS_FILE_NAME; +import static com.quranapp.android.utils.reader.recitation.RecitationUtils.AVAILABLE_RECITATIONS_FILENAME; +import static android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION; import com.quranapp.android.utils.app.AppUtils; import com.quranapp.android.utils.chapterInfo.ChapterInfoUtils; @@ -301,10 +299,10 @@ public Uri getFileURI(@NonNull File file) { @Nullable public String getPathFromUri(@NonNull Uri uri) { - String[] projection = {MediaStore.Images.Media.DATA}; + String[] projection = {MediaStore.MediaColumns.DATA}; Cursor cursor = getContext().getContentResolver().query(uri, projection, null, null, null); if (cursor == null) return null; - int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); + int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA); cursor.moveToFirst(); String path = cursor.getString(column_index); cursor.close(); diff --git a/app/src/main/java/com/quranapp/android/utils/univ/Keys.kt b/app/src/main/java/com/quranapp/android/utils/univ/Keys.kt index 84ab2d02..bef25d1c 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/Keys.kt +++ b/app/src/main/java/com/quranapp/android/utils/univ/Keys.kt @@ -17,4 +17,4 @@ object Keys { const val KEY_REFERENCE_VERSE_MODEL = "verse_model" const val KEY_LANGUAGE = "language" const val KEY_ACTIVITY_RESUMED_FROM_NOTIFICATION = "key.resumeFromPlayerNotification" -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/univ/PopupWindow2.java b/app/src/main/java/com/quranapp/android/utils/univ/PopupWindow2.java index 40680942..806e3bca 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/PopupWindow2.java +++ b/app/src/main/java/com/quranapp/android/utils/univ/PopupWindow2.java @@ -4,7 +4,6 @@ import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; - import androidx.core.content.ContextCompat; import com.quranapp.android.utils.extensions.ViewKt; diff --git a/app/src/main/java/com/quranapp/android/utils/univ/RegexPattern.kt b/app/src/main/java/com/quranapp/android/utils/univ/RegexPattern.kt index 71dd8095..46a22761 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/RegexPattern.kt +++ b/app/src/main/java/com/quranapp/android/utils/univ/RegexPattern.kt @@ -19,5 +19,7 @@ object RegexPattern { val VERSE_JUMP_PATTERN: Pattern = Pattern.compile("(\\d+)[\\s+]?:[\\s+]?(\\d+)") @JvmField - val VERSE_RANGE_JUMP_PATTERN: Pattern = Pattern.compile("(\\d+)[\\s+]?:[\\s+]?(\\d+)[\\-](\\d+)") -} \ No newline at end of file + val VERSE_RANGE_JUMP_PATTERN: Pattern = Pattern.compile( + "(\\d+)[\\s+]?:[\\s+]?(\\d+)[\\-](\\d+)" + ) +} diff --git a/app/src/main/java/com/quranapp/android/utils/univ/RelativePopupWindow.java b/app/src/main/java/com/quranapp/android/utils/univ/RelativePopupWindow.java index 8e02475f..83d3e096 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/RelativePopupWindow.java +++ b/app/src/main/java/com/quranapp/android/utils/univ/RelativePopupWindow.java @@ -5,7 +5,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.PopupWindow; - import androidx.annotation.IntDef; import androidx.annotation.NonNull; import androidx.core.widget.PopupWindowCompat; @@ -20,11 +19,11 @@ public class RelativePopupWindow extends PopupWindow { @IntDef({ - VerticalPosition.CENTER, - VerticalPosition.ABOVE, - VerticalPosition.BELOW, - VerticalPosition.ALIGN_TOP, - VerticalPosition.ALIGN_BOTTOM, + VerticalPosition.CENTER, + VerticalPosition.ABOVE, + VerticalPosition.BELOW, + VerticalPosition.ALIGN_TOP, + VerticalPosition.ALIGN_BOTTOM, }) @Retention(RetentionPolicy.SOURCE) public @interface VerticalPosition { @@ -36,11 +35,11 @@ public class RelativePopupWindow extends PopupWindow { } @IntDef({ - HorizontalPosition.CENTER, - HorizontalPosition.LEFT, - HorizontalPosition.RIGHT, - HorizontalPosition.ALIGN_LEFT, - HorizontalPosition.ALIGN_RIGHT, + HorizontalPosition.CENTER, + HorizontalPosition.LEFT, + HorizontalPosition.RIGHT, + HorizontalPosition.ALIGN_LEFT, + HorizontalPosition.ALIGN_RIGHT, }) @Retention(RetentionPolicy.SOURCE) public @interface HorizontalPosition { @@ -59,9 +58,9 @@ public class RelativePopupWindow extends PopupWindow { * @param horizPos Horizontal Position Flag */ public void showOnAnchor( - @NonNull View anchor, - @VerticalPosition int vertPos, - @HorizontalPosition int horizPos + @NonNull View anchor, + @VerticalPosition int vertPos, + @HorizontalPosition int horizPos ) { showOnAnchor(anchor, vertPos, horizPos, 0, 0); } @@ -75,10 +74,10 @@ public void showOnAnchor( * @param fitInScreen Automatically fit in screen or not */ public void showOnAnchor( - @NonNull View anchor, - @VerticalPosition int vertPos, - @HorizontalPosition int horizPos, - boolean fitInScreen + @NonNull View anchor, + @VerticalPosition int vertPos, + @HorizontalPosition int horizPos, + boolean fitInScreen ) { showOnAnchor(anchor, vertPos, horizPos, 0, 0, fitInScreen); } @@ -93,11 +92,11 @@ public void showOnAnchor( * @param y Translation Y */ public void showOnAnchor( - @NonNull View anchor, - @VerticalPosition int vertPos, - @HorizontalPosition int horizPos, - int x, - int y + @NonNull View anchor, + @VerticalPosition int vertPos, + @HorizontalPosition int horizPos, + int x, + int y ) { showOnAnchor(anchor, vertPos, horizPos, x, y, true); } @@ -113,12 +112,12 @@ public void showOnAnchor( * @param fitInScreen Automatically fit in screen or not */ public void showOnAnchor( - @NonNull View anchor, - @VerticalPosition int vertPos, - @HorizontalPosition int horizPos, - int x, - int y, - boolean fitInScreen + @NonNull View anchor, + @VerticalPosition int vertPos, + @HorizontalPosition int horizPos, + int x, + int y, + boolean fitInScreen ) { setClippingEnabled(fitInScreen); final View contentView = getContentView(); @@ -127,8 +126,8 @@ public void showOnAnchor( final int windowW = windowRect.width(); final int windowH = windowRect.height(); contentView.measure( - makeDropDownMeasureSpec(getWidth(), windowW), - makeDropDownMeasureSpec(getHeight(), windowH) + makeDropDownMeasureSpec(getWidth(), windowW), + makeDropDownMeasureSpec(getHeight(), windowH) ); final int measuredW = contentView.getMeasuredWidth(); final int measuredH = contentView.getMeasuredHeight(); @@ -187,8 +186,8 @@ public void showOnAnchor( private static int makeDropDownMeasureSpec(int measureSpec, int maxSize) { return View.MeasureSpec.makeMeasureSpec( - getDropDownMeasureSpecSize(measureSpec, maxSize), - getDropDownMeasureSpecMode(measureSpec) + getDropDownMeasureSpecSize(measureSpec, maxSize), + getDropDownMeasureSpecMode(measureSpec) ); } diff --git a/app/src/main/java/com/quranapp/android/utils/univ/ResUtils.kt b/app/src/main/java/com/quranapp/android/utils/univ/ResUtils.kt index c72bd327..89bebff8 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/ResUtils.kt +++ b/app/src/main/java/com/quranapp/android/utils/univ/ResUtils.kt @@ -58,4 +58,4 @@ object ResUtils { return text } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/univ/SpannableFactory.kt b/app/src/main/java/com/quranapp/android/utils/univ/SpannableFactory.kt index 4266c845..41258fc7 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/SpannableFactory.kt +++ b/app/src/main/java/com/quranapp/android/utils/univ/SpannableFactory.kt @@ -6,6 +6,8 @@ class SpannableFactory : Spannable.Factory() { override fun newSpannable(source: CharSequence): Spannable { return if (source is Spannable) { source - } else super.newSpannable(source) + } else { + super.newSpannable(source) + } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/utils/univ/StringUtils.java b/app/src/main/java/com/quranapp/android/utils/univ/StringUtils.java index 774b8d9c..0cdafd06 100644 --- a/app/src/main/java/com/quranapp/android/utils/univ/StringUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/univ/StringUtils.java @@ -1,5 +1,9 @@ package com.quranapp.android.utils.univ; +import android.os.Bundle; +import android.text.TextUtils; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import static com.quranapp.android.utils.univ.StringUtils.RandomPattern.ALPHABETIC; import static com.quranapp.android.utils.univ.StringUtils.RandomPattern.ALPHABETIC_LOWER; import static com.quranapp.android.utils.univ.StringUtils.RandomPattern.ALPHABETIC_UPPER; @@ -7,12 +11,6 @@ import static com.quranapp.android.utils.univ.StringUtils.RandomPattern.ALPHANUMERIC_UPPER; import static com.quranapp.android.utils.univ.StringUtils.RandomPattern.NUMERIC; -import android.os.Bundle; -import android.text.TextUtils; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -196,9 +194,11 @@ public static String commonString(@NonNull String str1, @NonNull String str2, @N * @return Returns first character of every word appended. */ @NonNull - public static String appendFirstChars(@NonNull String string, - @NonNull String sepDelimiter, - @NonNull String apdDelimiter, int count) { + public static String appendFirstChars( + @NonNull String string, + @NonNull String sepDelimiter, + @NonNull String apdDelimiter, int count + ) { String[] substringArr = string.split(sepDelimiter); StringBuilder res = new StringBuilder(); int len = substringArr.length; @@ -228,13 +228,20 @@ public static String appendFirstChars(@NonNull String string, public static String random(int length, int randomPattern) { final String chars; switch (randomPattern) { - case ALPHABETIC: chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; break; - case ALPHABETIC_LOWER: chars = "abcdefghijklmnopqrstuvwxyz"; break; - case ALPHABETIC_UPPER: chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; break; - case ALPHANUMERIC_LOWER: chars = "abcdefghijklmnopqrstuvwxyz1234567890"; break; - case ALPHANUMERIC_UPPER: chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; break; - case NUMERIC: chars = "1234567890"; break; - default: chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; break; + case ALPHABETIC: chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + break; + case ALPHABETIC_LOWER: chars = "abcdefghijklmnopqrstuvwxyz"; + break; + case ALPHABETIC_UPPER: chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + break; + case ALPHANUMERIC_LOWER: chars = "abcdefghijklmnopqrstuvwxyz1234567890"; + break; + case ALPHANUMERIC_UPPER: chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + break; + case NUMERIC: chars = "1234567890"; + break; + default: chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + break; } StringBuilder string = new StringBuilder(); @@ -265,9 +272,9 @@ public static String readInputStream(InputStream inputStream) throws IOException public static boolean isRTL(char c) { byte d = Character.getDirectionality(c); return d == Character.DIRECTIONALITY_RIGHT_TO_LEFT || - d == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC || - d == Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING || - d == Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE; + d == Character.DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC || + d == Character.DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING || + d == Character.DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE; } /** diff --git a/app/src/main/java/com/quranapp/android/utils/verse/VerseUtils.java b/app/src/main/java/com/quranapp/android/utils/verse/VerseUtils.java index 5f52e392..b010196e 100644 --- a/app/src/main/java/com/quranapp/android/utils/verse/VerseUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/verse/VerseUtils.java @@ -1,8 +1,5 @@ package com.quranapp.android.utils.verse; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.text.Spanned.SPAN_POINT_MARK; - import android.content.Context; import android.content.SharedPreferences; import android.graphics.Typeface; @@ -12,8 +9,9 @@ import android.text.TextUtils; import android.text.style.AbsoluteSizeSpan; import android.text.style.ForegroundColorSpan; - import androidx.annotation.NonNull; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.text.Spanned.SPAN_POINT_MARK; import com.peacedesign.android.utils.span.TypefaceSpan2; import com.quranapp.android.components.quran.Quran; diff --git a/app/src/main/java/com/quranapp/android/utils/votd/VOTDUtils.java b/app/src/main/java/com/quranapp/android/utils/votd/VOTDUtils.java index f87af6b4..e63437d6 100644 --- a/app/src/main/java/com/quranapp/android/utils/votd/VOTDUtils.java +++ b/app/src/main/java/com/quranapp/android/utils/votd/VOTDUtils.java @@ -8,7 +8,6 @@ import android.app.PendingIntent; import android.content.Context; import android.content.Intent; - import androidx.core.content.ContextCompat; import com.quranapp.android.utils.receivers.BootReceiver; diff --git a/app/src/main/java/com/quranapp/android/vh/search/VHJuzJump.kt b/app/src/main/java/com/quranapp/android/vh/search/VHJuzJump.kt index 9ce5e53e..fc26faff 100644 --- a/app/src/main/java/com/quranapp/android/vh/search/VHJuzJump.kt +++ b/app/src/main/java/com/quranapp/android/vh/search/VHJuzJump.kt @@ -18,4 +18,4 @@ class VHJuzJump(private val mBinding: LytReaderJuzSpinnerItemBinding, applyMargi mBinding.root.setOnClickListener { startJuz(it.context, model.juzNo) } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/vh/search/VHSearchResultBase.kt b/app/src/main/java/com/quranapp/android/vh/search/VHSearchResultBase.kt index 73211d54..9fa19a50 100644 --- a/app/src/main/java/com/quranapp/android/vh/search/VHSearchResultBase.kt +++ b/app/src/main/java/com/quranapp/android/vh/search/VHSearchResultBase.kt @@ -13,7 +13,10 @@ open class VHSearchResultBase(itemView: View) : RecyclerView.ViewHolder(itemView open fun bind(model: SearchResultModelBase, pos: Int) {} protected fun setupJumperView(view: View, applyMargins: Boolean) { - view.layoutParams = MarginLayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT).apply { + view.layoutParams = MarginLayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ).apply { if (applyMargins) { val marg = Dimen.dp2px(view.context, 10f) updateMarginsRelative(start = marg, end = marg, bottom = 10) @@ -21,4 +24,4 @@ open class VHSearchResultBase(itemView: View) : RecyclerView.ViewHolder(itemView } view.setBackgroundResource(R.drawable.dr_bg_chapter_card_bordered_onlylight) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/vh/search/VHVerseJump.java b/app/src/main/java/com/quranapp/android/vh/search/VHVerseJump.java index e86a4b08..b1d618ed 100644 --- a/app/src/main/java/com/quranapp/android/vh/search/VHVerseJump.java +++ b/app/src/main/java/com/quranapp/android/vh/search/VHVerseJump.java @@ -1,7 +1,5 @@ package com.quranapp.android.vh.search; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; - import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Typeface; @@ -9,9 +7,9 @@ import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.style.TextAppearanceSpan; - import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.ContextCompat; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; @@ -28,7 +26,8 @@ public VHVerseJump(AppCompatTextView textView, boolean applyMargins) { super(textView); mTextView = textView; - ViewPaddingKt.updatePaddings(textView, Dimen.dp2px(textView.getContext(), 15), Dimen.dp2px(textView.getContext(), 10)); + ViewPaddingKt.updatePaddings(textView, Dimen.dp2px(textView.getContext(), 15), + Dimen.dp2px(textView.getContext(), 10)); setupJumperView(textView, applyMargins); } @@ -38,7 +37,7 @@ public void bind(SearchResultModelBase parentModel, int pos) { mTextView.setText(makeName(itemView.getContext(), model.titleText, model.chapterNameText)); mTextView.setOnClickListener(v -> ReaderFactory.startVerseRange(v.getContext(), - model.chapterNo, model.fromVerseNo, model.toVerseNo)); + model.chapterNo, model.fromVerseNo, model.toVerseNo)); } private CharSequence makeName(Context ctx, String text, String subtext) { diff --git a/app/src/main/java/com/quranapp/android/views/BoldHeader.java b/app/src/main/java/com/quranapp/android/views/BoldHeader.java index d9f001fc..276144a9 100644 --- a/app/src/main/java/com/quranapp/android/views/BoldHeader.java +++ b/app/src/main/java/com/quranapp/android/views/BoldHeader.java @@ -11,7 +11,6 @@ import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; - import androidx.annotation.ColorRes; import androidx.annotation.DrawableRes; import androidx.annotation.NonNull; @@ -105,10 +104,10 @@ private void initThis() { setBackgroundColor(Color.TRANSPARENT); mBinding.search.searchBox.setPaddingRelative( - ContextKt.dp2px(getContext(), 5), - mBinding.search.searchBox.getPaddingTop(), - mBinding.search.searchBox.getPaddingEnd(), - mBinding.search.searchBox.getPaddingBottom() + ContextKt.dp2px(getContext(), 5), + mBinding.search.searchBox.getPaddingTop(), + mBinding.search.searchBox.getPaddingEnd(), + mBinding.search.searchBox.getPaddingBottom() ); } @@ -118,7 +117,7 @@ private void toggleSearchBox(LytSimpleSearchBoxBinding searchBoxBinding, boolean EditText searchBox = searchBoxBinding.searchBox; InputMethodManager imm = (InputMethodManager) searchBox.getContext().getSystemService( - Context.INPUT_METHOD_SERVICE); + Context.INPUT_METHOD_SERVICE); if (showSearch) { searchBox.requestFocus(); diff --git a/app/src/main/java/com/quranapp/android/views/CardMessage.java b/app/src/main/java/com/quranapp/android/views/CardMessage.java index aa4e263a..464a5f1b 100644 --- a/app/src/main/java/com/quranapp/android/views/CardMessage.java +++ b/app/src/main/java/com/quranapp/android/views/CardMessage.java @@ -4,9 +4,6 @@ package com.quranapp.android.views; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static com.quranapp.android.components.utility.CardMessageParams.STYLE_WARNING; - import android.content.Context; import android.graphics.Typeface; import android.graphics.drawable.Drawable; @@ -17,11 +14,12 @@ import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; - import androidx.annotation.NonNull; import androidx.annotation.StringRes; import androidx.appcompat.widget.AppCompatImageView; import androidx.appcompat.widget.AppCompatTextView; +import static com.quranapp.android.components.utility.CardMessageParams.STYLE_WARNING; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.ColorUtils; import com.peacedesign.android.utils.Dimen; @@ -76,7 +74,8 @@ private void createMessageView() { } mMessageView = new AppCompatTextView(getContext()); - mMessageView.setTextSize(TypedValue.COMPLEX_UNIT_PX, ContextKt.getDimenPx(getContext(), R.dimen.dmnCommonSize2)); + mMessageView.setTextSize(TypedValue.COMPLEX_UNIT_PX, + ContextKt.getDimenPx(getContext(), R.dimen.dmnCommonSize2)); mMessageView.setTypeface(Typeface.SANS_SERIF, Typeface.BOLD); LinearLayout.LayoutParams p = new LayoutParams(0, WRAP_CONTENT); diff --git a/app/src/main/java/com/quranapp/android/views/VOTDView.java b/app/src/main/java/com/quranapp/android/views/VOTDView.java index 3a5b16ac..0cf2e9b3 100644 --- a/app/src/main/java/com/quranapp/android/views/VOTDView.java +++ b/app/src/main/java/com/quranapp/android/views/VOTDView.java @@ -1,8 +1,5 @@ package com.quranapp.android.views; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static com.quranapp.android.utils.reader.TranslUtils.TRANSL_TRANSLITERATION; - import android.content.Context; import android.content.Intent; import android.text.SpannableString; @@ -13,10 +10,11 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; +import static com.quranapp.android.utils.reader.TranslUtils.TRANSL_TRANSLITERATION; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.LineHeightSpan2; diff --git a/app/src/main/java/com/quranapp/android/views/helper/CheckBox2.java b/app/src/main/java/com/quranapp/android/views/helper/CheckBox2.java index 64c56ecd..62afd884 100644 --- a/app/src/main/java/com/quranapp/android/views/helper/CheckBox2.java +++ b/app/src/main/java/com/quranapp/android/views/helper/CheckBox2.java @@ -3,7 +3,6 @@ import android.content.Context; import android.util.AttributeSet; import android.view.ContextThemeWrapper; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatCheckBox; diff --git a/app/src/main/java/com/quranapp/android/views/helper/Edittext.java b/app/src/main/java/com/quranapp/android/views/helper/Edittext.java index 4d0aaca6..995da03f 100644 --- a/app/src/main/java/com/quranapp/android/views/helper/Edittext.java +++ b/app/src/main/java/com/quranapp/android/views/helper/Edittext.java @@ -2,7 +2,6 @@ import android.content.Context; import android.util.AttributeSet; - import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatEditText; diff --git a/app/src/main/java/com/quranapp/android/views/helper/NpaGridLayoutManager.java b/app/src/main/java/com/quranapp/android/views/helper/NpaGridLayoutManager.java index bb001a1e..16ed36cb 100644 --- a/app/src/main/java/com/quranapp/android/views/helper/NpaGridLayoutManager.java +++ b/app/src/main/java/com/quranapp/android/views/helper/NpaGridLayoutManager.java @@ -6,7 +6,6 @@ import android.content.Context; import android.util.AttributeSet; - import androidx.recyclerview.widget.GridLayoutManager; /** diff --git a/app/src/main/java/com/quranapp/android/views/helper/RecyclerView2.java b/app/src/main/java/com/quranapp/android/views/helper/RecyclerView2.java index f8d8f7b6..83921cd0 100644 --- a/app/src/main/java/com/quranapp/android/views/helper/RecyclerView2.java +++ b/app/src/main/java/com/quranapp/android/views/helper/RecyclerView2.java @@ -3,7 +3,6 @@ import android.content.Context; import android.util.AttributeSet; import android.view.inputmethod.InputMethodManager; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; diff --git a/app/src/main/java/com/quranapp/android/views/helper/Spinner2.java b/app/src/main/java/com/quranapp/android/views/helper/Spinner2.java index 8f1ba9f1..fbecdc4c 100644 --- a/app/src/main/java/com/quranapp/android/views/helper/Spinner2.java +++ b/app/src/main/java/com/quranapp/android/views/helper/Spinner2.java @@ -6,7 +6,6 @@ import android.widget.AdapterView; import android.widget.PopupWindow; import android.widget.SpinnerAdapter; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatSpinner; @@ -91,6 +90,6 @@ public void setAdapter(SpinnerAdapter adapter) { public abstract static class SimplerSpinnerItemSelectListener implements OnItemSelectedListener { @Override - public void onNothingSelected(AdapterView parent) { } + public void onNothingSelected(AdapterView parent) {} } } diff --git a/app/src/main/java/com/quranapp/android/views/helper/TabLayout2.java b/app/src/main/java/com/quranapp/android/views/helper/TabLayout2.java index 04b3c485..301383b1 100644 --- a/app/src/main/java/com/quranapp/android/views/helper/TabLayout2.java +++ b/app/src/main/java/com/quranapp/android/views/helper/TabLayout2.java @@ -4,7 +4,6 @@ import android.util.AttributeSet; import android.view.View; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.TooltipCompat; diff --git a/app/src/main/java/com/quranapp/android/views/homepage/FeatureProphetsLayout.java b/app/src/main/java/com/quranapp/android/views/homepage/FeatureProphetsLayout.java index 95b6b3eb..7395d752 100644 --- a/app/src/main/java/com/quranapp/android/views/homepage/FeatureProphetsLayout.java +++ b/app/src/main/java/com/quranapp/android/views/homepage/FeatureProphetsLayout.java @@ -9,7 +9,6 @@ import android.content.Context; import android.content.Intent; import android.util.AttributeSet; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quranapp/android/views/homepage/FeatureReadingLayout.java b/app/src/main/java/com/quranapp/android/views/homepage/FeatureReadingLayout.java index 2711149f..f19bfab2 100644 --- a/app/src/main/java/com/quranapp/android/views/homepage/FeatureReadingLayout.java +++ b/app/src/main/java/com/quranapp/android/views/homepage/FeatureReadingLayout.java @@ -9,7 +9,6 @@ import android.content.Context; import android.content.res.TypedArray; import android.util.AttributeSet; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quranapp/android/views/homepage/FeatureTopicsLayout.java b/app/src/main/java/com/quranapp/android/views/homepage/FeatureTopicsLayout.java index 21a6029d..b2c9b0ff 100644 --- a/app/src/main/java/com/quranapp/android/views/homepage/FeatureTopicsLayout.java +++ b/app/src/main/java/com/quranapp/android/views/homepage/FeatureTopicsLayout.java @@ -10,7 +10,6 @@ import android.content.Intent; import android.graphics.Color; import android.util.AttributeSet; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quranapp/android/views/homepage/HomepageCollectionLayoutBase.java b/app/src/main/java/com/quranapp/android/views/homepage/HomepageCollectionLayoutBase.java index 323a1faf..6df34cf7 100644 --- a/app/src/main/java/com/quranapp/android/views/homepage/HomepageCollectionLayoutBase.java +++ b/app/src/main/java/com/quranapp/android/views/homepage/HomepageCollectionLayoutBase.java @@ -6,10 +6,6 @@ package com.quranapp.android.views.homepage; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static com.peacedesign.android.utils.Dimen.dp2px; - import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; @@ -17,7 +13,6 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.ProgressBar; - import androidx.annotation.CallSuper; import androidx.annotation.DrawableRes; import androidx.annotation.Nullable; @@ -25,6 +20,9 @@ import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import static com.peacedesign.android.utils.Dimen.dp2px; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.quranapp.android.R; import com.quranapp.android.databinding.LytHomepageTitledItemTitleBinding; @@ -59,7 +57,8 @@ private void initThis(Context context) { } private void initTitle(Context context) { - LytHomepageTitledItemTitleBinding binding = LytHomepageTitledItemTitleBinding.inflate(LayoutInflater.from(context)); + LytHomepageTitledItemTitleBinding binding = LytHomepageTitledItemTitleBinding.inflate( + LayoutInflater.from(context)); int headerIcon = getHeaderIcon(); if (headerIcon != 0) { diff --git a/app/src/main/java/com/quranapp/android/views/homepage/ReadHistoryLayout.java b/app/src/main/java/com/quranapp/android/views/homepage/ReadHistoryLayout.java index 674c598f..f24bdf59 100644 --- a/app/src/main/java/com/quranapp/android/views/homepage/ReadHistoryLayout.java +++ b/app/src/main/java/com/quranapp/android/views/homepage/ReadHistoryLayout.java @@ -6,22 +6,20 @@ package com.quranapp.android.views.homepage; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static com.peacedesign.android.utils.Dimen.dp2px; - import android.content.Context; import android.content.Intent; import android.graphics.Typeface; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import static com.peacedesign.android.utils.Dimen.dp2px; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReadHistory; diff --git a/app/src/main/java/com/quranapp/android/views/reader/BismillahView.java b/app/src/main/java/com/quranapp/android/views/reader/BismillahView.java index ccb9887e..b605f21e 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/BismillahView.java +++ b/app/src/main/java/com/quranapp/android/views/reader/BismillahView.java @@ -1,15 +1,13 @@ package com.quranapp.android.views.reader; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; - import android.content.Context; import android.util.AttributeSet; import android.view.Gravity; import android.view.ViewGroup; import android.view.ViewGroup.MarginLayoutParams; - import androidx.appcompat.widget.AppCompatTextView; import androidx.core.widget.TextViewCompat; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/views/reader/ChapterIcon.java b/app/src/main/java/com/quranapp/android/views/reader/ChapterIcon.java index abe465d5..b8938006 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/ChapterIcon.java +++ b/app/src/main/java/com/quranapp/android/views/reader/ChapterIcon.java @@ -5,7 +5,6 @@ import android.content.res.TypedArray; import android.util.AttributeSet; import android.util.TypedValue; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; diff --git a/app/src/main/java/com/quranapp/android/views/reader/ChapterInfoCardView.java b/app/src/main/java/com/quranapp/android/views/reader/ChapterInfoCardView.java index bfa88590..f3035b4f 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/ChapterInfoCardView.java +++ b/app/src/main/java/com/quranapp/android/views/reader/ChapterInfoCardView.java @@ -1,8 +1,5 @@ package com.quranapp.android.views.reader; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.content.Intent; import android.text.Spannable; @@ -14,11 +11,12 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.cardview.widget.CardView; import androidx.core.content.ContextCompat; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.RoundedBG_FGSpan; diff --git a/app/src/main/java/com/quranapp/android/views/reader/ChapterTitleView.java b/app/src/main/java/com/quranapp/android/views/reader/ChapterTitleView.java index 74a044ff..398d0e86 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/ChapterTitleView.java +++ b/app/src/main/java/com/quranapp/android/views/reader/ChapterTitleView.java @@ -54,7 +54,7 @@ public void setChapterNumber(int chapterNo) { public void setLayoutParams(ViewGroup.LayoutParams params) { if (params instanceof MarginLayoutParams) { // params.width = WRAP_CONTENT; - LayoutParamsKt.updateMarginVertical((MarginLayoutParams) params, Dimen.dp2px(getContext(),20)); + LayoutParamsKt.updateMarginVertical((MarginLayoutParams) params, Dimen.dp2px(getContext(), 20)); } super.setLayoutParams(params); } diff --git a/app/src/main/java/com/quranapp/android/views/reader/QuranPageHeadView.java b/app/src/main/java/com/quranapp/android/views/reader/QuranPageHeadView.java index b35bdc1f..94d28818 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/QuranPageHeadView.java +++ b/app/src/main/java/com/quranapp/android/views/reader/QuranPageHeadView.java @@ -4,7 +4,6 @@ import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.FrameLayout; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -40,12 +39,12 @@ public void initWithPageModel(QuranPageModel pageModel) { } public void setPageNumber(int pageNumber) { - mBinding.pageNo.setText(getContext().getString(R.string.strLabelPageNo,pageNumber)); + mBinding.pageNo.setText(getContext().getString(R.string.strLabelPageNo, pageNumber)); } private void setJuzChapter(int juzNumber, String chaptersName) { mBinding.chapter.setText(chaptersName); - mBinding.juz.setText(getContext().getString(R.string.strLabelJuzNo,juzNumber)); + mBinding.juz.setText(getContext().getString(R.string.strLabelJuzNo, juzNumber)); } } diff --git a/app/src/main/java/com/quranapp/android/views/reader/QuranPageView.java b/app/src/main/java/com/quranapp/android/views/reader/QuranPageView.java index e051b6e9..fd3a16ff 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/QuranPageView.java +++ b/app/src/main/java/com/quranapp/android/views/reader/QuranPageView.java @@ -1,8 +1,5 @@ package com.quranapp.android.views.reader; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.animation.Animator; import android.animation.AnimatorListenerAdapter; import android.animation.ArgbEvaluator; @@ -21,10 +18,11 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; @@ -145,7 +143,8 @@ private void initBGAnimator() { public void onAnimationEnd(Animator animation) { VerseArabicHighlightSpan span = verseSpanToAnimate.get(); if (span != null) { - span.setBackgroundColor(span.verseNo == recitingVerseNo ? mBGHighlightBGColor : Color.TRANSPARENT); + span.setBackgroundColor( + span.verseNo == recitingVerseNo ? mBGHighlightBGColor : Color.TRANSPARENT); } } }); @@ -196,7 +195,8 @@ private void initVerses(QuranPageSectionModel sectionModel) { if (!mScrollHighlightInProgress) { Spannable spannable2 = (Spannable) mBinding.content.getText(); - VerseArabicHighlightSpan[] spans = spannable2.getSpans(0, spannable2.length(), VerseArabicHighlightSpan.class); + VerseArabicHighlightSpan[] spans = spannable2.getSpans(0, spannable2.length(), + VerseArabicHighlightSpan.class); boolean anyReciting = false; for (VerseArabicHighlightSpan span : spans) { @@ -239,7 +239,8 @@ public VerseArabicHighlightSpan findVerseSpan(int verseNo) { } Spannable spannableStr = (Spannable) verseText; - final VerseArabicHighlightSpan[] spans = spannableStr.getSpans(0, spannableStr.length(), VerseArabicHighlightSpan.class); + final VerseArabicHighlightSpan[] spans = spannableStr.getSpans(0, spannableStr.length(), + VerseArabicHighlightSpan.class); if (spans == null) { return null; @@ -283,7 +284,8 @@ private void removeHighlight(int verseNo) { } SpannableString spannableStr = (SpannableString) verseText; - final VerseArabicHighlightSpan[] spans = spannableStr.getSpans(0, spannableStr.length(), VerseArabicHighlightSpan.class); + final VerseArabicHighlightSpan[] spans = spannableStr.getSpans(0, spannableStr.length(), + VerseArabicHighlightSpan.class); if (spans == null) { return; diff --git a/app/src/main/java/com/quranapp/android/views/reader/ReaderFooter.java b/app/src/main/java/com/quranapp/android/views/reader/ReaderFooter.java index 09139a83..ed735345 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/ReaderFooter.java +++ b/app/src/main/java/com/quranapp/android/views/reader/ReaderFooter.java @@ -1,10 +1,5 @@ package com.quranapp.android.views.reader; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_CHAPTER; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_VERSES; - import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Typeface; @@ -18,9 +13,12 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_CHAPTER; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_VERSES; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.peacedesign.android.utils.DrawableUtils; import com.quranapp.android.R; @@ -159,7 +157,8 @@ public void clearParent() { public void setupBottomNavigator() { final QuranMeta quranMeta = mActivity.mQuranMetaRef.get(); switch (mReaderParams.readType) { - case READER_READ_TYPE_CHAPTER: setupFooterForChapter(); break; + case READER_READ_TYPE_CHAPTER: setupFooterForChapter(); + break; case READER_READ_TYPE_VERSES: Pair range = mReaderParams.verseRange; if (QuranUtils.doesRangeDenoteSingle(range)) { @@ -168,8 +167,10 @@ public void setupBottomNavigator() { setupFooterForVersesRange(range); } break; - case READER_READ_TYPE_JUZ: setupFooterForJuz(); break; - default: setupFooterForNone(); break; + case READER_READ_TYPE_JUZ: setupFooterForJuz(); + break; + default: setupFooterForNone(); + break; } if (mReaderParams.readType == READER_READ_TYPE_JUZ) { diff --git a/app/src/main/java/com/quranapp/android/views/reader/ReaderHeader.java b/app/src/main/java/com/quranapp/android/views/reader/ReaderHeader.java index e41a852b..a7762ce3 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/ReaderHeader.java +++ b/app/src/main/java/com/quranapp/android/views/reader/ReaderHeader.java @@ -1,24 +1,22 @@ package com.quranapp.android.views.reader; -import static com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS; -import static com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL; -import static com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_READ_TYPE; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_SETTING_IS_FROM_READER; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; - import android.content.Context; import android.content.Intent; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.core.view.ViewCompat; +import static com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS; +import static com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL; +import static com.google.android.material.appbar.AppBarLayout.LayoutParams.SCROLL_FLAG_SNAP; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_READ_TYPE; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_SETTING_IS_FROM_READER; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; import com.google.android.material.appbar.AppBarLayout; import com.peacedesign.android.utils.Dimen; @@ -81,7 +79,8 @@ private void init() { mBinding.btnTranslLauncher.setOnClickListener(v -> openReaderSetting(ActivitySettings.SETTINGS_TRANSL)); ViewCompat.setTooltipText(mBinding.readerSetting, getContext().getString(R.string.strTitleReaderSettings)); - ViewCompat.setTooltipText(mBinding.btnTranslLauncher, getContext().getString(R.string.strLabelSelectTranslations)); + ViewCompat.setTooltipText(mBinding.btnTranslLauncher, + getContext().getString(R.string.strLabelSelectTranslations)); mBinding.readerTitle.getRoot().setOnClickListener(v -> mJCVSelectorView.showPopup()); mJCVSelectorView.setJuzIconView(mBinding.readerTitle.juzIcon); @@ -102,10 +101,10 @@ public void openReaderSetting(int destination) { private void initThis() { setBackground(DrawableUtils.createBackgroundStroked( - ContextCompat.getColor(getContext(), R.color.colorBGReaderHeader), - ContextCompat.getColor(getContext(), R.color.colorDivider), - Dimen.createBorderWidthsForBG(0, 0, 0, Dimen.dp2px(getContext(), 1)), - null + ContextCompat.getColor(getContext(), R.color.colorBGReaderHeader), + ContextCompat.getColor(getContext(), R.color.colorDivider), + Dimen.createBorderWidthsForBG(0, 0, 0, Dimen.dp2px(getContext(), 1)), + null )); ViewGroup.LayoutParams params = mBinding.getRoot().getLayoutParams(); @@ -121,7 +120,7 @@ public void initJuzSelector() { return; } if (mReaderParams != null && mReaderParams.readType == READER_READ_TYPE_JUZ - && mJCVSelectorView.getJuzOrChapterAdapter() instanceof JuzSelectorAdapter2) { + && mJCVSelectorView.getJuzOrChapterAdapter() instanceof JuzSelectorAdapter2) { return; } @@ -134,7 +133,7 @@ public void initChapterSelector() { } if (mReaderParams != null && mReaderParams.readType != READER_READ_TYPE_JUZ - && mJCVSelectorView.getJuzOrChapterAdapter() instanceof ChapterSelectorAdapter2) { + && mJCVSelectorView.getJuzOrChapterAdapter() instanceof ChapterSelectorAdapter2) { return; } @@ -149,7 +148,8 @@ public void initVerseSelector(VerseSelectorAdapter2 adapter, int chapterNo) { if (adapter == null) { String verseNoText = getContext().getString(R.string.strLabelVerseNo); ArrayList items = new ArrayList<>(); - for (int verseNo = 1, l = mActivity.mQuranMetaRef.get().getChapterVerseCount(chapterNo); verseNo <= l; verseNo++) { + for (int verseNo = 1, l = mActivity.mQuranMetaRef.get().getChapterVerseCount( + chapterNo); verseNo <= l; verseNo++) { VerseSpinnerItem item = new VerseSpinnerItem(chapterNo, verseNo); item.setLabel(String.format(verseNoText, verseNo)); items.add(item); diff --git a/app/src/main/java/com/quranapp/android/views/reader/RecitationPlayer.java b/app/src/main/java/com/quranapp/android/views/reader/RecitationPlayer.java index 0b88b3d0..c2e3fc50 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/RecitationPlayer.java +++ b/app/src/main/java/com/quranapp/android/views/reader/RecitationPlayer.java @@ -1,12 +1,5 @@ package com.quranapp.android.views.reader; -import static com.quranapp.android.utils.reader.recitation.RecitationNotificationService.KEY_PLAYING; -import static com.quranapp.android.utils.reader.recitation.RecitationNotificationService.KEY_RECITER; -import static com.quranapp.android.utils.reader.recitation.RecitationNotificationService.KEY_TITLE; -import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PAUSE; -import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PLAY; -import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_STOP; - import android.annotation.SuppressLint; import android.content.Intent; import android.media.MediaPlayer; @@ -24,10 +17,15 @@ import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; - import androidx.annotation.NonNull; import androidx.coordinatorlayout.widget.CoordinatorLayout; import androidx.core.content.ContextCompat; +import static com.quranapp.android.utils.reader.recitation.RecitationNotificationService.KEY_PLAYING; +import static com.quranapp.android.utils.reader.recitation.RecitationNotificationService.KEY_RECITER; +import static com.quranapp.android.utils.reader.recitation.RecitationNotificationService.KEY_TITLE; +import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PAUSE; +import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_PLAY; +import static com.quranapp.android.utils.receivers.RecitationPlayerReceiver.ACTION_STOP; import com.google.android.material.behavior.HideBottomViewOnScrollBehavior; import com.quranapp.android.R; @@ -196,7 +194,7 @@ public void onRestoreInstanceState(Parcelable state) { P = playerSS.recitationParams; if (P.lastMediaURI != null) { prepareMediaPlayer(P.lastMediaURI, P.currentReciterSlug, P.getCurrChapterNo(), P.getCurrVerseNo(), - P.previouslyPlaying); + P.previouslyPlaying); } } @@ -410,7 +408,7 @@ public void playMedia() { showNotification(ACTION_PLAY); Log.d("Curr - " + P.currVerse[0] + ":" + P.currVerse[1], - P.fromVerse[0] + ":" + P.fromVerse[1] + " - " + P.toVerse[0] + ":" + P.toVerse[1]); + P.fromVerse[0] + ":" + P.fromVerse[1] + " - " + P.toVerse[0] + ":" + P.toVerse[1]); setupPlayControlBtn(true); P.previouslyPlaying = true; @@ -518,9 +516,9 @@ public void setContinueChapter(boolean continueChapter) { private String formatTime(int millis) { final long m = TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes( - TimeUnit.MILLISECONDS.toHours(millis)); + TimeUnit.MILLISECONDS.toHours(millis)); final long s = TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds( - TimeUnit.MILLISECONDS.toMinutes(millis)); + TimeUnit.MILLISECONDS.toMinutes(millis)); return String.format(Locale.getDefault(), "%02d:%02d", m, s); } @@ -759,7 +757,7 @@ private void loadVersesAhead(QuranMeta quranMeta, RecitationModel model, int cha // int loadAheadCount = P.continueRange ? 5 : 1; int loadAheadCount = 2; int l = Math.min(mActivity.mQuranMetaRef.get().getChapterVerseCount(chapterNo) - firstVerseToLoad, - loadAheadCount - 1); + loadAheadCount - 1); // Start from 1 so that the current verse is skipped. for (int i = 1; i <= l; i++) { int verseToLoad = firstVerseToLoad + i; @@ -836,7 +834,7 @@ private void showNotification(String action) { if (!ACTION_STOP.equals(action)) { QuranMeta quranMeta = mActivity.mQuranMetaRef.get(); String title = quranMeta.getChapterName(getContext(), - P.getCurrChapterNo()) + " : Verse " + P.getCurrVerseNo(); + P.getCurrChapterNo()) + " : Verse " + P.getCurrVerseNo(); String reciter = RecitationUtils.getReciterName(P.currentReciterSlug); i.putExtra(KEY_TITLE, title); i.putExtra(KEY_RECITER, reciter); diff --git a/app/src/main/java/com/quranapp/android/views/reader/VerseView.java b/app/src/main/java/com/quranapp/android/views/reader/VerseView.java index 0b195201..56f76afe 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/VerseView.java +++ b/app/src/main/java/com/quranapp/android/views/reader/VerseView.java @@ -14,7 +14,6 @@ import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; - import androidx.core.content.ContextCompat; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinner.java b/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinner.java index dab03f73..67eb0a69 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinner.java +++ b/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinner.java @@ -3,7 +3,6 @@ import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinnerAdapter.java b/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinnerAdapter.java index 94c23f12..0f864905 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinnerAdapter.java +++ b/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinnerAdapter.java @@ -2,7 +2,6 @@ import android.content.Context; import android.view.ViewGroup; - import androidx.annotation.NonNull; import com.quranapp.android.components.quran.subcomponents.Chapter; diff --git a/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinnerItem.kt b/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinnerItem.kt index e9006fb7..9a2eb695 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinnerItem.kt +++ b/app/src/main/java/com/quranapp/android/views/reader/chapterSpinner/ChapterSpinnerItem.kt @@ -3,4 +3,4 @@ package com.quranapp.android.views.reader.chapterSpinner import com.quranapp.android.components.quran.subcomponents.Chapter import com.quranapp.android.views.reader.spinner.ReaderSpinnerItem -class ChapterSpinnerItem(val chapter: Chapter) : ReaderSpinnerItem() \ No newline at end of file +class ChapterSpinnerItem(val chapter: Chapter) : ReaderSpinnerItem() diff --git a/app/src/main/java/com/quranapp/android/views/reader/dialogs/FootnotePresenter.java b/app/src/main/java/com/quranapp/android/views/reader/dialogs/FootnotePresenter.java index e1daf1d9..bc01b209 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/dialogs/FootnotePresenter.java +++ b/app/src/main/java/com/quranapp/android/views/reader/dialogs/FootnotePresenter.java @@ -4,9 +4,6 @@ package com.quranapp.android.views.reader.dialogs; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static com.quranapp.android.utils.univ.StringUtils.HYPHEN; - import android.content.Context; import android.graphics.Color; import android.graphics.Typeface; @@ -19,11 +16,12 @@ import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.core.content.ContextCompat; +import static com.quranapp.android.utils.univ.StringUtils.HYPHEN; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.google.android.material.chip.Chip; diff --git a/app/src/main/java/com/quranapp/android/views/reader/dialogs/QuickReference.java b/app/src/main/java/com/quranapp/android/views/reader/dialogs/QuickReference.java index 0b5abadc..af09d673 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/dialogs/QuickReference.java +++ b/app/src/main/java/com/quranapp/android/views/reader/dialogs/QuickReference.java @@ -4,10 +4,6 @@ package com.quranapp.android.views.reader.dialogs; -import static android.view.View.GONE; -import static android.view.View.VISIBLE; -import static com.quranapp.android.utils.univ.RegexPattern.VERSE_RANGE_PATTERN; - import android.app.Dialog; import android.content.Context; import android.os.Bundle; @@ -15,12 +11,14 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.LinearLayoutManager; +import static com.quranapp.android.utils.univ.RegexPattern.VERSE_RANGE_PATTERN; +import static android.view.View.GONE; +import static android.view.View.VISIBLE; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.widget.dialog.base.PeaceDialog; diff --git a/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseOptionsDialog.java b/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseOptionsDialog.java index e88cbccc..d14fed04 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseOptionsDialog.java +++ b/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseOptionsDialog.java @@ -4,8 +4,6 @@ package com.quranapp.android.views.reader.dialogs; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.app.Dialog; import android.content.Context; import android.content.res.TypedArray; @@ -17,11 +15,11 @@ import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.core.content.ContextCompat; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.AppBridge; import com.peacedesign.android.utils.Dimen; diff --git a/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseReminderDialog.java b/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseReminderDialog.java index 4b8fac21..5fb96ed1 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseReminderDialog.java +++ b/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseReminderDialog.java @@ -6,11 +6,6 @@ package com.quranapp.android.views.reader.dialogs; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.FOCUS_BLOCK_DESCENDANTS; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.graphics.Typeface; import android.os.Bundle; @@ -24,10 +19,13 @@ import android.view.ViewGroup; import android.widget.FrameLayout; import android.widget.LinearLayout; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.asynclayoutinflater.view.AsyncLayoutInflater; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.FOCUS_BLOCK_DESCENDANTS; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.google.android.material.bottomsheet.BottomSheetBehavior; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseShareDialog.java b/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseShareDialog.java index 38dfc4e5..eedf7999 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseShareDialog.java +++ b/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseShareDialog.java @@ -4,12 +4,6 @@ package com.quranapp.android.views.reader.dialogs; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static com.quranapp.android.utils.univ.StringUtils.DASH; -import static com.quranapp.android.utils.univ.StringUtils.HYPHEN; -import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_LEFT; -import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_RIGHT; - import android.content.Context; import android.content.Intent; import android.text.Editable; @@ -19,11 +13,15 @@ import android.view.ViewParent; import android.view.inputmethod.InputMethodManager; import android.widget.Toast; - import androidx.annotation.NonNull; import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.core.content.ContextCompat; import androidx.core.widget.NestedScrollView; +import static com.quranapp.android.utils.univ.StringUtils.DASH; +import static com.quranapp.android.utils.univ.StringUtils.HYPHEN; +import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_LEFT; +import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_RIGHT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.AppBridge; import com.peacedesign.android.utils.Dimen; diff --git a/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinner.java b/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinner.java index af3cf2a5..cc315fb7 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinner.java +++ b/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinner.java @@ -3,7 +3,6 @@ import android.content.Context; import android.util.AttributeSet; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -32,7 +31,7 @@ public JuzSpinner(@NonNull Context context, @Nullable AttributeSet attrs, int de protected boolean search(ReaderSpinnerItem item, Pattern pattern) { JuzSpinnerItem juzSpinnerItem = (JuzSpinnerItem) item; return pattern.matcher(String.valueOf(juzSpinnerItem.getJuzNumber())).find() - || pattern.matcher(juzSpinnerItem.getLabel()).find(); + || pattern.matcher(juzSpinnerItem.getLabel()).find(); } @Override diff --git a/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinnerAdapter.java b/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinnerAdapter.java index 9260398b..ce1c32be 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinnerAdapter.java +++ b/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinnerAdapter.java @@ -1,15 +1,13 @@ package com.quranapp.android.views.reader.juzSpinner; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinnerItem.kt b/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinnerItem.kt index 475138f3..c1c8b727 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinnerItem.kt +++ b/app/src/main/java/com/quranapp/android/views/reader/juzSpinner/JuzSpinnerItem.kt @@ -18,4 +18,4 @@ class JuzSpinnerItem(label: CharSequence) : ReaderSpinnerItem() { init { super.label = label } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/views/reader/sheet/JuzChapterVerseSheet.kt b/app/src/main/java/com/quranapp/android/views/reader/sheet/JuzChapterVerseSheet.kt index 4a4a48fd..d6575ec4 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/sheet/JuzChapterVerseSheet.kt +++ b/app/src/main/java/com/quranapp/android/views/reader/sheet/JuzChapterVerseSheet.kt @@ -15,6 +15,4 @@ class JuzChapterVerseSheet : PeaceBottomSheet() { super.onCreate(savedInstanceState) } - - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinner.java b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinner.java index 34b3a4e8..8d7386f9 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinner.java +++ b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinner.java @@ -1,7 +1,5 @@ package com.quranapp.android.views.reader.spinner; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.graphics.drawable.Drawable; import android.text.Editable; @@ -13,20 +11,20 @@ import android.widget.EditText; import android.widget.FrameLayout; import android.widget.TextView; - import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; import com.quranapp.android.databinding.LytReaderSpinnerBinding; import com.quranapp.android.databinding.LytReaderSpinnerPopupBinding; import com.quranapp.android.utils.extensions.ContextKt; -import com.quranapp.android.utils.univ.PopupWindow2; import com.quranapp.android.utils.simplified.SimpleTextWatcher; +import com.quranapp.android.utils.univ.PopupWindow2; import com.quranapp.android.utils.univ.StringUtils; import java.util.ArrayList; diff --git a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerAdapter.java b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerAdapter.java index 05bf7ed9..d3aa0a65 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerAdapter.java +++ b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerAdapter.java @@ -3,7 +3,6 @@ import android.content.Context; import android.view.LayoutInflater; import android.view.View; - import androidx.annotation.CallSuper; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; @@ -12,7 +11,8 @@ import java.util.List; -public abstract class ReaderSpinnerAdapter extends RecyclerView.Adapter { +public abstract class ReaderSpinnerAdapter extends + RecyclerView.Adapter { private final LayoutInflater mInflater; private List mItems; private ReaderSpinner mSpinner; diff --git a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerItem.kt b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerItem.kt index 793a4c43..032855b7 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerItem.kt +++ b/app/src/main/java/com/quranapp/android/views/reader/spinner/ReaderSpinnerItem.kt @@ -4,4 +4,4 @@ import com.quranapp.android.components.ComponentBase open class ReaderSpinnerItem : ComponentBase() { var label: CharSequence = "" -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/views/reader/swipe/BaseViewSwipeTo.java b/app/src/main/java/com/quranapp/android/views/reader/swipe/BaseViewSwipeTo.java index 675b1855..1dfe32d6 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/swipe/BaseViewSwipeTo.java +++ b/app/src/main/java/com/quranapp/android/views/reader/swipe/BaseViewSwipeTo.java @@ -6,11 +6,6 @@ package com.quranapp.android.views.reader.swipe; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static android.view.animation.Animation.RELATIVE_TO_SELF; - import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Typeface; @@ -27,10 +22,13 @@ import android.view.animation.RotateAnimation; import android.widget.LinearLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatImageView; import androidx.core.content.ContextCompat; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static android.view.animation.Animation.RELATIVE_TO_SELF; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.DrawableUtils; diff --git a/app/src/main/java/com/quranapp/android/views/reader/swipe/ViewSwipeToNext.java b/app/src/main/java/com/quranapp/android/views/reader/swipe/ViewSwipeToNext.java index ae6a18fd..c4568192 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/swipe/ViewSwipeToNext.java +++ b/app/src/main/java/com/quranapp/android/views/reader/swipe/ViewSwipeToNext.java @@ -6,11 +6,10 @@ package com.quranapp.android.views.reader.swipe; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_CHAPTER; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; - import android.content.Context; import android.widget.TextView; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_CHAPTER; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/views/reader/swipe/ViewSwipeToPrevious.java b/app/src/main/java/com/quranapp/android/views/reader/swipe/ViewSwipeToPrevious.java index 4827314c..8f973bf7 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/swipe/ViewSwipeToPrevious.java +++ b/app/src/main/java/com/quranapp/android/views/reader/swipe/ViewSwipeToPrevious.java @@ -6,11 +6,10 @@ package com.quranapp.android.views.reader.swipe; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_CHAPTER; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; - import android.content.Context; import android.widget.TextView; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_CHAPTER; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinner.java b/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinner.java index 2764c8d0..7b44bd6c 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinner.java +++ b/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinner.java @@ -1,16 +1,15 @@ package com.quranapp.android.views.reader.verseSpinner; -import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; -import static com.quranapp.android.utils.univ.RegexPattern.VERSE_JUMP_PATTERN; - import android.content.Context; +import android.text.InputType; import android.util.AttributeSet; import android.view.View; import android.view.inputmethod.EditorInfo; import android.widget.EditText; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import static com.quranapp.android.reader_managers.ReaderParams.READER_READ_TYPE_JUZ; +import static com.quranapp.android.utils.univ.RegexPattern.VERSE_JUMP_PATTERN; import com.quranapp.android.R; import com.quranapp.android.components.quran.subcomponents.Chapter; @@ -95,7 +94,7 @@ public void setAdapter(ReaderSpinnerAdapter adapter) { return; } - int inputType = mActivity.mReaderParams.readType == READER_READ_TYPE_JUZ ? EditorInfo.TYPE_CLASS_TEXT : EditorInfo.TYPE_CLASS_NUMBER; + int inputType = mActivity.mReaderParams.readType == READER_READ_TYPE_JUZ ? InputType.TYPE_CLASS_TEXT : InputType.TYPE_CLASS_NUMBER; mSearchBox.setInputType(inputType); } } diff --git a/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinnerAdapter.java b/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinnerAdapter.java index 41495bf5..a48d72fe 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinnerAdapter.java +++ b/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinnerAdapter.java @@ -1,14 +1,12 @@ package com.quranapp.android.views.reader.verseSpinner; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.view.ViewGroup; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinnerItem.kt b/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinnerItem.kt index d3babd28..1e337c76 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinnerItem.kt +++ b/app/src/main/java/com/quranapp/android/views/reader/verseSpinner/VerseSpinnerItem.kt @@ -2,4 +2,4 @@ package com.quranapp.android.views.reader.verseSpinner import com.quranapp.android.views.reader.spinner.ReaderSpinnerItem -class VerseSpinnerItem(val chapterNo: Int, val verseNo: Int) : ReaderSpinnerItem() \ No newline at end of file +class VerseSpinnerItem(val chapterNo: Int, val verseNo: Int) : ReaderSpinnerItem() diff --git a/app/src/main/java/com/quranapp/android/views/readerSpinner2/adapters/ADPJuzChapterVerseBase.kt b/app/src/main/java/com/quranapp/android/views/readerSpinner2/adapters/ADPJuzChapterVerseBase.kt index 479df1d0..b4b98521 100644 --- a/app/src/main/java/com/quranapp/android/views/readerSpinner2/adapters/ADPJuzChapterVerseBase.kt +++ b/app/src/main/java/com/quranapp/android/views/readerSpinner2/adapters/ADPJuzChapterVerseBase.kt @@ -134,4 +134,4 @@ abstract class ADPJuzChapterVerseBase) : ADPJuzChapterVerseBase(items) { +class JuzSelectorAdapter2(items: MutableList) : ADPJuzChapterVerseBase( + items +) { override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VHJuzSpinner { return VHJuzSpinner(this, makeItemView(parent.context)) } @@ -29,8 +31,13 @@ class JuzSelectorAdapter2(items: MutableList) : ADPJuzChapterVer private fun makeItemView(context: Context): TextView { val txtView = TextView(context) txtView.updatePaddings(context.dp2px(15f), context.dp2px(10f)) - txtView.setTextColor(ContextCompat.getColorStateList(context, R.color.color_reader_spinner_item_label)) - txtView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + txtView.setTextColor( + ContextCompat.getColorStateList(context, R.color.color_reader_spinner_item_label) + ) + txtView.layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) return txtView } } @@ -51,8 +58,13 @@ class VerseSelectorAdapter2(items: MutableList) : private fun makeItemView(context: Context): TextView { val txtView = TextView(context) txtView.updatePaddings(context.dp2px(8f), context.dp2px(10f)) - txtView.setTextColor(ContextCompat.getColorStateList(context, R.color.color_reader_spinner_item_label)) - txtView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT) + txtView.setTextColor( + ContextCompat.getColorStateList(context, R.color.color_reader_spinner_item_label) + ) + txtView.layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) return txtView } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/views/readerSpinner2/juzChapterVerse/JuzChapterVerseSelector.kt b/app/src/main/java/com/quranapp/android/views/readerSpinner2/juzChapterVerse/JuzChapterVerseSelector.kt index 7a709676..a9fd7658 100644 --- a/app/src/main/java/com/quranapp/android/views/readerSpinner2/juzChapterVerse/JuzChapterVerseSelector.kt +++ b/app/src/main/java/com/quranapp/android/views/readerSpinner2/juzChapterVerse/JuzChapterVerseSelector.kt @@ -22,16 +22,15 @@ import androidx.core.widget.TextViewCompat import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.tabs.TabLayout -import com.peacedesign.android.utils.kotlin_utils.* import com.quranapp.android.R import com.quranapp.android.activities.ActivityReader import com.quranapp.android.components.quran.QuranMeta import com.quranapp.android.databinding.LytJuzChapterVerseSheetBinding import com.quranapp.android.reader_managers.ReaderParams import com.quranapp.android.utils.extensions.* -import com.quranapp.android.utils.univ.RegexPattern import com.quranapp.android.utils.simplified.SimpleTabSelectorListener import com.quranapp.android.utils.simplified.SimpleTextWatcher +import com.quranapp.android.utils.univ.RegexPattern import com.quranapp.android.views.reader.ChapterIcon import com.quranapp.android.views.reader.chapterSpinner.ChapterSpinnerItem import com.quranapp.android.views.reader.juzSpinner.JuzSpinnerItem @@ -74,7 +73,6 @@ class JuzChapterVerseSelector @JvmOverloads constructor( var chapterIconView: ChapterIcon? = null var activity: ActivityReader? = null - init { initThis() initBottomSheetView(context) @@ -133,8 +131,8 @@ class JuzChapterVerseSelector @JvmOverloads constructor( override fun onTabSelected(tab: TabLayout.Tab) { tempJuzOrChapterItemSelectListener = null - val isAlternateTab = (tab.position == 0 && juzOrChapterAdapter !is ChapterSelectorAdapter2) - || (tab.position == 1 && juzOrChapterAdapter !is JuzSelectorAdapter2) + val isAlternateTab = (tab.position == 0 && juzOrChapterAdapter !is ChapterSelectorAdapter2) || + (tab.position == 1 && juzOrChapterAdapter !is JuzSelectorAdapter2) activity?.let { if (isAlternateTab) { @@ -155,7 +153,10 @@ class JuzChapterVerseSelector @JvmOverloads constructor( }) } - private fun selectTab(binding: LytJuzChapterVerseSheetBinding, adapter: ADPJuzChapterVerseBase<*, *>) { + private fun selectTab( + binding: LytJuzChapterVerseSheetBinding, + adapter: ADPJuzChapterVerseBase<*, *> + ) { var tab: TabLayout.Tab? = null if (adapter is ChapterSelectorAdapter2) { tab = binding.tabLayout.getTabAt(0) @@ -237,7 +238,10 @@ class JuzChapterVerseSelector @JvmOverloads constructor( } } else { val chapter = activity!!.mReaderParams.currChapter ?: return - activity!!.handleVerseSpinnerSelectedVerseNo(chapter.chapterNumber, searchQuery.toString().toInt()) + activity!!.handleVerseSpinnerSelectedVerseNo( + chapter.chapterNumber, + searchQuery.toString().toInt() + ) } } @@ -279,7 +283,10 @@ class JuzChapterVerseSelector @JvmOverloads constructor( if (juzOrChapterItem is ChapterSpinnerItem) { text = juzOrChapterItem.label } else { - text = activity?.mQuranMetaRef?.get()?.getChapterName(context, spinnerItem.chapterNo) ?: "" + text = activity?.mQuranMetaRef?.get()?.getChapterName( + context, + spinnerItem.chapterNo + ) ?: "" verseText = context.getString(R.string.strLabelVerseNo, spinnerItem.verseNo) } } @@ -317,7 +324,10 @@ class JuzChapterVerseSelector @JvmOverloads constructor( if (height >= context.dp2px(70f)) { height = context.dp2px(650f) } - it.root.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, height) + it.root.layoutParams = ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + height + ) } } @@ -412,19 +422,22 @@ class JuzChapterVerseSelector @JvmOverloads constructor( val juzAdapter = JuzSelectorAdapter2(items) - setJuzOrChapterAdapter(juzAdapter, object : OnItemSelectedListener { - override fun onItemSelect(item: ReaderSpinnerItem) { - val juzSpinnerItem = item as JuzSpinnerItem - if (activity.mNavigator.currJuzNo != juzSpinnerItem.juzNumber) { - activity.mNavigator.goToJuz(juzSpinnerItem.juzNumber) + setJuzOrChapterAdapter( + juzAdapter, + object : OnItemSelectedListener { + override fun onItemSelect(item: ReaderSpinnerItem) { + val juzSpinnerItem = item as JuzSpinnerItem + if (activity.mNavigator.currJuzNo != juzSpinnerItem.juzNumber) { + activity.mNavigator.goToJuz(juzSpinnerItem.juzNumber) + } } - } - }, isTemporary) + }, + isTemporary + ) return juzAdapter } - fun prepareAndSetChapterAdapter(activity: ActivityReader, isTemporary: Boolean = false): ChapterSelectorAdapter2 { val quran = activity.mQuranRef.get() val items = ArrayList() @@ -435,14 +448,18 @@ class JuzChapterVerseSelector @JvmOverloads constructor( items.add(chapterSpinnerItem) } val chapterAdapter = ChapterSelectorAdapter2(items) - setJuzOrChapterAdapter(chapterAdapter, object : OnItemSelectedListener { - override fun onItemSelect(item: ReaderSpinnerItem) { - val chapterItem = item as ChapterSpinnerItem - if (activity.mReaderParams.currChapter?.chapterNumber != chapterItem.chapter.chapterNumber) { - activity.mNavigator.goToChapter(chapterItem.chapter.chapterNumber) + setJuzOrChapterAdapter( + chapterAdapter, + object : OnItemSelectedListener { + override fun onItemSelect(item: ReaderSpinnerItem) { + val chapterItem = item as ChapterSpinnerItem + if (activity.mReaderParams.currChapter?.chapterNumber != chapterItem.chapter.chapterNumber) { + activity.mNavigator.goToChapter(chapterItem.chapter.chapterNumber) + } } - } - }, isTemporary) + }, + isTemporary + ) return chapterAdapter } @@ -461,4 +478,4 @@ class JuzChapterVerseSelector @JvmOverloads constructor( interface OnItemSelectedListener { fun onItemSelect(item: ReaderSpinnerItem) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/views/readerSpinner2/viewholders/VHsJuzChapterVerse.kt b/app/src/main/java/com/quranapp/android/views/readerSpinner2/viewholders/VHsJuzChapterVerse.kt index 0ed7e53f..23806182 100644 --- a/app/src/main/java/com/quranapp/android/views/readerSpinner2/viewholders/VHsJuzChapterVerse.kt +++ b/app/src/main/java/com/quranapp/android/views/readerSpinner2/viewholders/VHsJuzChapterVerse.kt @@ -21,7 +21,10 @@ import com.quranapp.android.views.readerSpinner2.adapters.JuzSelectorAdapter2 import com.quranapp.android.views.readerSpinner2.adapters.VerseSelectorAdapter2 import com.quranapp.android.widgets.chapterCard.ChapterCard -class VHJuzSpinner(adapter: JuzSelectorAdapter2, view: View) : VHJuzChapterVerseBase(adapter, view) { +class VHJuzSpinner(adapter: JuzSelectorAdapter2, view: View) : VHJuzChapterVerseBase( + adapter, + view +) { override fun bind(item: JuzSpinnerItem) { super.bind(item) (itemView as TextView).text = item.label @@ -38,14 +41,20 @@ class VHChapterSpinner(adapter: ChapterSelectorAdapter2, private val chapterCard } } -class VHVerseSpinner(adapter: VerseSelectorAdapter2, view: View) : VHJuzChapterVerseBase(adapter, view) { +class VHVerseSpinner(adapter: VerseSelectorAdapter2, view: View) : VHJuzChapterVerseBase( + adapter, + view +) { override fun bind(item: VerseSpinnerItem) { super.bind(item) (itemView as TextView).text = item.label } } -open class VHJuzChapterVerseBase(private val adapter: ADPJuzChapterVerseBase, itemView: View) : +open class VHJuzChapterVerseBase( + private val adapter: ADPJuzChapterVerseBase, + itemView: View +) : RecyclerView.ViewHolder(itemView) { init { itemView.setBackgroundResource(R.drawable.dr_bg_juz_chapter_verse_item) @@ -56,4 +65,4 @@ open class VHJuzChapterVerseBase(private val adapter: ADP itemView.isSelected = item.selected itemView.setOnClickListener { adapter.onItemSelectInAdapter(item, true) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/AutoResizeTextView.java b/app/src/main/java/com/quranapp/android/widgets/AutoResizeTextView.java index e6f4e772..6ab7677b 100644 --- a/app/src/main/java/com/quranapp/android/widgets/AutoResizeTextView.java +++ b/app/src/main/java/com/quranapp/android/widgets/AutoResizeTextView.java @@ -19,10 +19,10 @@ private interface SizeTester { * text, it takes less space than {@code availableSpace}, > 0 * otherwise */ - public int onTestSize(int suggestedSize, RectF availableSpace); + int onTestSize(int suggestedSize, RectF availableSpace); } - private RectF mTextRect = new RectF(); + private final RectF mTextRect = new RectF(); private RectF mAvailableSpaceRect; @@ -132,7 +132,7 @@ public void setTextSize(int unit, float size) { else r = c.getResources(); mMaxTextSize = TypedValue.applyDimension(unit, size, - r.getDisplayMetrics()); + r.getDisplayMetrics()); mTextCachedSizes.clear(); adjustTextSize(getText().toString()); } @@ -146,7 +146,6 @@ public void setLineSpacing(float add, float mult) { /** * Set the lower text size limit and invalidate the view - * */ public void setMinTextSize(float minTextSize) { mMinTextSize = minTextSize; @@ -163,15 +162,15 @@ private void adjustTextSize(String string) { } int startSize = (int) mMinTextSize; int heightLimit = getMeasuredHeight() - getCompoundPaddingBottom() - - getCompoundPaddingTop(); + - getCompoundPaddingTop(); mWidthLimit = getMeasuredWidth() - getCompoundPaddingLeft() - - getCompoundPaddingRight(); + - getCompoundPaddingRight(); mAvailableSpaceRect.right = mWidthLimit; mAvailableSpaceRect.bottom = heightLimit; super.setTextSize( - TypedValue.COMPLEX_UNIT_PX, - efficientTextSizeSearch(startSize, (int) mMaxTextSize, - mSizeTester, mAvailableSpaceRect)); + TypedValue.COMPLEX_UNIT_PX, + efficientTextSizeSearch(startSize, (int) mMaxTextSize, + mSizeTester, mAvailableSpaceRect)); } private final SizeTester mSizeTester = new SizeTester() { @@ -185,11 +184,11 @@ public int onTestSize(int suggestedSize, RectF availableSPace) { mTextRect.right = mPaint.measureText(text); } else { StaticLayout layout = new StaticLayout(text, mPaint, - mWidthLimit, Alignment.ALIGN_NORMAL, mSpacingMult, - mSpacingAdd, true); + mWidthLimit, Alignment.ALIGN_NORMAL, mSpacingMult, + mSpacingAdd, true); // return early if we have more lines if (getMaxLines() != NO_LINE_LIMIT - && layout.getLineCount() > getMaxLines()) { + && layout.getLineCount() > getMaxLines()) { return 1; } mTextRect.bottom = layout.getHeight(); @@ -242,8 +241,10 @@ private int efficientTextSizeSearch(int start, int end, SizeTester sizeTester, R return size; } - private static int binarySearch(int start, int end, SizeTester sizeTester, - RectF availableSpace) { + private static int binarySearch( + int start, int end, SizeTester sizeTester, + RectF availableSpace + ) { int lastBest = start; int lo = start; int hi = end - 1; @@ -267,15 +268,19 @@ private static int binarySearch(int start, int end, SizeTester sizeTester, } @Override - protected void onTextChanged(final CharSequence text, final int start, - final int before, final int after) { + protected void onTextChanged( + final CharSequence text, final int start, + final int before, final int after + ) { super.onTextChanged(text, start, before, after); reAdjust(); } @Override - protected void onSizeChanged(int width, int height, int oldWidth, - int oldHeight) { + protected void onSizeChanged( + int width, int height, int oldWidth, + int oldHeight + ) { mTextCachedSizes.clear(); super.onSizeChanged(width, height, oldWidth, oldHeight); if (width != oldWidth || height != oldHeight) { diff --git a/app/src/main/java/com/quranapp/android/widgets/ColorPreviewerView.java b/app/src/main/java/com/quranapp/android/widgets/ColorPreviewerView.java index 7d6b55d4..1f7d0c75 100644 --- a/app/src/main/java/com/quranapp/android/widgets/ColorPreviewerView.java +++ b/app/src/main/java/com/quranapp/android/widgets/ColorPreviewerView.java @@ -10,7 +10,6 @@ import android.graphics.drawable.BitmapDrawable; import android.util.AttributeSet; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; @@ -44,7 +43,8 @@ public ColorPreviewerView(@NonNull Context context, @Nullable AttributeSet attrs private void init() { setBackgroundResource(R.drawable.dr_bg_cornered_preview); setClipToOutline(true); - BitmapDrawable drawable = (BitmapDrawable) ContextCompat.getDrawable(getContext(), R.drawable.dr_img_checkered_tiled); + BitmapDrawable drawable = (BitmapDrawable) ContextCompat.getDrawable(getContext(), + R.drawable.dr_img_checkered_tiled); if (drawable != null) { Bitmap checkeredBitmap = drawable.getBitmap(); bitmapShader = new BitmapShader(checkeredBitmap, Shader.TileMode.REPEAT, Shader.TileMode.REPEAT); diff --git a/app/src/main/java/com/quranapp/android/widgets/IconedTextView.java b/app/src/main/java/com/quranapp/android/widgets/IconedTextView.java index 84884eb3..d4104f20 100644 --- a/app/src/main/java/com/quranapp/android/widgets/IconedTextView.java +++ b/app/src/main/java/com/quranapp/android/widgets/IconedTextView.java @@ -5,7 +5,6 @@ import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.Gravity; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; @@ -36,7 +35,8 @@ public IconedTextView(@NonNull Context context, @Nullable AttributeSet attrs, in mDrawableTopDimen = a.getDimensionPixelOffset(R.styleable.IconedTextView_drawableTopDimen, -1); mDrawableEndDimen = a.getDimensionPixelOffset(R.styleable.IconedTextView_drawableEndDimen, -1); mDrawableBottomDimen = a.getDimensionPixelOffset(R.styleable.IconedTextView_drawableBottomDimen, -1); - int mDrawablePadding = a.getDimensionPixelOffset(R.styleable.IconedTextView_android_drawablePadding, Dimen.dp2px(context, 10)); + int mDrawablePadding = a.getDimensionPixelOffset(R.styleable.IconedTextView_android_drawablePadding, + Dimen.dp2px(context, 10)); int mGravity = a.getInt(R.styleable.IconedTextView_android_gravity, Gravity.CENTER_VERTICAL); a.recycle(); diff --git a/app/src/main/java/com/quranapp/android/widgets/PageAlert.kt b/app/src/main/java/com/quranapp/android/widgets/PageAlert.kt index b1149449..75d56fa5 100644 --- a/app/src/main/java/com/quranapp/android/widgets/PageAlert.kt +++ b/app/src/main/java/com/quranapp/android/widgets/PageAlert.kt @@ -45,7 +45,11 @@ open class PageAlert : LinearLayout { init() } - constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super( + context, + attrs, + defStyleAttr + ) { init() } @@ -127,7 +131,7 @@ open class PageAlert : LinearLayout { private fun prepareMessage(title: CharSequence?, msg: CharSequence?): CharSequence { val ssb = SpannableStringBuilder() - val hasTitle = !TextUtils.isEmpty(title); + val hasTitle = !TextUtils.isEmpty(title) if (hasTitle) { ssb.append(prepareTitleSpannable(title)) } @@ -196,7 +200,10 @@ open class PageAlert : LinearLayout { fun setupForNoInternet(actionListener: Runnable?) { setIcon(R.drawable.dr_icon_no_internet) - setMessage(context.getString(R.string.strTitleNoInternet), context.getString(R.string.strMsgNoInternetLong)) + setMessage( + context.getString(R.string.strTitleNoInternet), + context.getString(R.string.strMsgNoInternetLong) + ) setActionButton(context.getString(R.string.strLabelRetry), actionListener) } @@ -209,4 +216,4 @@ open class PageAlert : LinearLayout { } super.setLayoutParams(params) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt index 0defffce..7ecdb1f9 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt @@ -73,7 +73,6 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } } - protected open fun setupHeader(dialogLayout: ViewGroup, params: PeaceBottomSheetParams) { if (!this.params.headerShown) return @@ -96,7 +95,6 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { return context.drawable(R.drawable.dr_bg_sheet_dialog_header) } - protected open fun prepareDragIcon(container: LinearLayout, params: PeaceBottomSheetParams) { if (params.disableDragging) return @@ -105,12 +103,15 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { setImageResource(R.drawable.dr_icon_drag) } - container.addView(dragIcon, 0, LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply { - topMargin = Dimen.dp2px(container.context, 10f) - }) + container.addView( + dragIcon, + 0, + LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply { + topMargin = Dimen.dp2px(container.context, 10f) + } + ) } - protected open fun prepareTitleView( container: LinearLayout, params: PeaceBottomSheetParams, @@ -122,7 +123,9 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { var titleView: AppCompatTextView? = container.findViewById(R.id.title) if (hasTitle && titleView == null) { - titleView = AppCompatTextView(ContextThemeWrapper(container.context, resolveTitleThemeId())) + titleView = AppCompatTextView( + ContextThemeWrapper(container.context, resolveTitleThemeId()) + ) titleView.id = R.id.title container.addView(titleView) } @@ -133,7 +136,6 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } } - fun updateHeaderTitle() { val layout = dialogLayout ?: return @@ -153,7 +155,6 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } } - private fun createHeaderView(dialogLayout: ViewGroup): LinearLayout { val headerView = LinearLayout(dialogLayout.context).apply { id = R.id.peaceBottomSheetHeaderView @@ -198,7 +199,6 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { setupDialogInternal(dialog, style, params) } - protected open fun setupDialogInternal( dialog: Dialog, style: Int, @@ -258,7 +258,6 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } }) - dialog.setOnKeyListener { dialogInterface, keyCode, event -> onKey( dialogInterface as BottomSheetDialog, @@ -285,7 +284,6 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { return false } - private fun setupFullHeight(modal: View) { if (params.fullHeight) { modal.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT @@ -330,7 +328,6 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { show(fragmentManager, javaClass.simpleName) } - override fun setCancelable(cancelable: Boolean) { super.setCancelable(cancelable) params.cancellable = cancelable @@ -361,5 +358,4 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { interface OnPeaceBottomSheetDismissListener { fun onDismissed() } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetDialog.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetDialog.kt index 96696173..48ee689d 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetDialog.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetDialog.kt @@ -22,15 +22,17 @@ open class PeaceBottomSheetDialog constructor( val targetWidth = context.dp2px(450f) window.setLayout( - if (context.getWindowWidth() > targetWidth) targetWidth - else LayoutParams.MATCH_PARENT, + if (context.getWindowWidth() > targetWidth) { + targetWidth + } else { + LayoutParams.MATCH_PARENT + }, LayoutParams.MATCH_PARENT ) setupDialogInternal(window) } - protected fun setupDialogInternal(window: Window) { if (params.supportsNoAnimation()) { window.setWindowAnimations(R.style.SheetDialogAnimations_NoAnimations) @@ -46,4 +48,4 @@ open class PeaceBottomSheetDialog constructor( setCanceledOnTouchOutside(params.cancellable && !params.disableOutsideTouch) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt index 193d7d7e..a739e1cf 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt @@ -14,7 +14,6 @@ open class PeaceBottomSheetMenu : PeaceBottomSheet() { var onItemClickListener: OnItemClickListener? = null var adapter: BaseListAdapter? = null - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -52,8 +51,7 @@ open class PeaceBottomSheetMenu : PeaceBottomSheet() { return listView } - interface OnItemClickListener { fun onItemClick(dialog: PeaceBottomSheetMenu, item: BaseListItem) } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt index e6cafea3..ca58a0e0 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt @@ -43,7 +43,6 @@ class PeaceBottomSheetParams : Serializable { @LayoutRes var contentViewResId = 0 - fun supportsNoAnimation(): Boolean { return !supportsAnimations || !supportsEnterAnimation && !supportsExitAnimation } @@ -55,4 +54,4 @@ class PeaceBottomSheetParams : Serializable { fun supportsExitAnimationOnly(): Boolean { return supportsAnimations && !supportsEnterAnimation && supportsExitAnimation } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCard.java b/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCard.java index e28975ed..6fcf8834 100644 --- a/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCard.java +++ b/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCard.java @@ -6,11 +6,6 @@ package com.quranapp.android.widgets.chapterCard; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static androidx.constraintlayout.widget.ConstraintLayout.LayoutParams.PARENT_ID; - import android.content.Context; import android.content.res.ColorStateList; import android.graphics.Typeface; @@ -22,12 +17,15 @@ import android.view.Gravity; import android.view.View; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.ContextCompat; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static androidx.constraintlayout.widget.ConstraintLayout.LayoutParams.PARENT_ID; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; diff --git a/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCardJuz.java b/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCardJuz.java index 8efa5e00..afd50366 100644 --- a/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCardJuz.java +++ b/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCardJuz.java @@ -6,9 +6,6 @@ package com.quranapp.android.widgets.chapterCard; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.text.SpannableString; import android.text.TextUtils; @@ -18,11 +15,12 @@ import android.view.Gravity; import android.view.View; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.ContextCompat; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.quranapp.android.R; @@ -65,7 +63,8 @@ public void setVersesCount(String versesInJuzPrefix, int fromVerse, int toVerse) SpannableString spannableCount = new SpannableString(versesInJuzCount); spannablePrefix.setSpan(new RelativeSizeSpan(0.75f), 0, spannablePrefix.length(), SPAN_EXCLUSIVE_EXCLUSIVE); - spannableCount.setSpan(new TypefaceSpan("sans-serif-medium"), 0, spannableCount.length(), SPAN_EXCLUSIVE_EXCLUSIVE); + spannableCount.setSpan(new TypefaceSpan("sans-serif-medium"), 0, spannableCount.length(), + SPAN_EXCLUSIVE_EXCLUSIVE); ((TextView) verseCount).setText(TextUtils.concat(spannablePrefix, spannableCount)); } diff --git a/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCardWithoutIcon.java b/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCardWithoutIcon.java index 35741326..a64f9eee 100644 --- a/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCardWithoutIcon.java +++ b/app/src/main/java/com/quranapp/android/widgets/chapterCard/ChapterCardWithoutIcon.java @@ -8,7 +8,6 @@ import android.content.Context; import android.view.View; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; diff --git a/app/src/main/java/com/quranapp/android/widgets/checkbox/PeaceCheckBox.kt b/app/src/main/java/com/quranapp/android/widgets/checkbox/PeaceCheckBox.kt index c1ee7024..22fd6c31 100644 --- a/app/src/main/java/com/quranapp/android/widgets/checkbox/PeaceCheckBox.kt +++ b/app/src/main/java/com/quranapp/android/widgets/checkbox/PeaceCheckBox.kt @@ -21,11 +21,18 @@ class PeaceCheckBox @JvmOverloads constructor( private lateinit var checkBox: CheckBoxHelper init { - val a = context.obtainStyledAttributes(attrs, R.styleable.PeaceCompoundButton, defStyleAttr, 0) + val a = context.obtainStyledAttributes( + attrs, + R.styleable.PeaceCompoundButton, + defStyleAttr, + 0 + ) if (a.hasValue(R.styleable.PeaceCompoundButton_peaceComp_buttonCompat)) { hasInitialButtonDrawable = true - checkBoxButtonCompat = a.getDrawable(R.styleable.PeaceCompoundButton_peaceComp_buttonCompat) + checkBoxButtonCompat = a.getDrawable( + R.styleable.PeaceCompoundButton_peaceComp_buttonCompat + ) } a.recycle() @@ -36,7 +43,6 @@ class PeaceCheckBox @JvmOverloads constructor( super.setOnClickListener { toggle() } } - override fun makeComponents() { makeCheckBox() super.makeComponents() @@ -56,7 +62,6 @@ class PeaceCheckBox @JvmOverloads constructor( return checkBox } - fun setButtonDrawable(buttonDrawable: Drawable?) { checkBox.buttonDrawable = buttonDrawable } @@ -69,9 +74,13 @@ class PeaceCheckBox @JvmOverloads constructor( throw IllegalStateException("Use setOnCheckedChangedListener instead.") } - internal class CheckBoxHelper(context: Context) : AppCompatCheckBox(ContextThemeWrapper(context, R.style.PeaceCheckBox), null, 0) { + internal class CheckBoxHelper(context: Context) : AppCompatCheckBox( + ContextThemeWrapper(context, R.style.PeaceCheckBox), + null, + 0 + ) { init { setPaddingRelative(0, 0, 0, 0) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/checkbox/PeaceCheckboxGroup.kt b/app/src/main/java/com/quranapp/android/widgets/checkbox/PeaceCheckboxGroup.kt index f6e2ce21..8f8d16f2 100644 --- a/app/src/main/java/com/quranapp/android/widgets/checkbox/PeaceCheckboxGroup.kt +++ b/app/src/main/java/com/quranapp/android/widgets/checkbox/PeaceCheckboxGroup.kt @@ -120,5 +120,4 @@ class PeaceCheckboxGroup @JvmOverloads constructor( } } } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/compound/PeaceCompoundButton.kt b/app/src/main/java/com/quranapp/android/widgets/compound/PeaceCompoundButton.kt index 55ca91c3..0c2a9aba 100644 --- a/app/src/main/java/com/quranapp/android/widgets/compound/PeaceCompoundButton.kt +++ b/app/src/main/java/com/quranapp/android/widgets/compound/PeaceCompoundButton.kt @@ -45,7 +45,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( const val COMPOUND_TEXT_GRAVITY_RIGHT = 4 } - protected var initialChecked = false @TextGravity @@ -65,14 +64,28 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( private var txtView: AppCompatTextView? = null init { - val a = context.obtainStyledAttributes(attrs, R.styleable.PeaceCompoundButton, defStyleAttr, 0) + val a = context.obtainStyledAttributes( + attrs, + R.styleable.PeaceCompoundButton, + defStyleAttr, + 0 + ) text = a.getText(R.styleable.PeaceCompoundButton_android_text) subText = a.getText(R.styleable.PeaceCompoundButton_peaceComp_subText) initialChecked = a.getBoolean(R.styleable.PeaceCompoundButton_android_checked, false) - compoundDirection = a.getInt(R.styleable.PeaceCompoundButton_peaceComp_direction, COMPOUND_TEXT_RIGHT) - spaceBetween = a.getDimensionPixelSize(R.styleable.PeaceCompoundButton_peaceComp_spaceBetween, context.dp2px(10f)) - textGravity = a.getInt(R.styleable.PeaceCompoundButton_peaceComp_textGravity, COMPOUND_TEXT_GRAVITY_START) + compoundDirection = a.getInt( + R.styleable.PeaceCompoundButton_peaceComp_direction, + COMPOUND_TEXT_RIGHT + ) + spaceBetween = a.getDimensionPixelSize( + R.styleable.PeaceCompoundButton_peaceComp_spaceBetween, + context.dp2px(10f) + ) + textGravity = a.getInt( + R.styleable.PeaceCompoundButton_peaceComp_textGravity, + COMPOUND_TEXT_GRAVITY_START + ) textAppearanceResId = a.getResourceId( R.styleable.PeaceCompoundButton_android_textAppearance, R.style.PeaceRadioTextAppearance @@ -91,7 +104,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( makeComponents() } - @CallSuper protected open fun initThis() { super.setOrientation(HORIZONTAL) @@ -106,7 +118,10 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( private fun makeTexts() { txtView = AppCompatTextView(context).apply { - layoutParams = LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT).apply { + layoutParams = LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ).apply { weight = 1f } gravity = resolveTextGravity(textGravity) @@ -114,7 +129,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( setTextAppearancesInternal(textAppearanceResId, subTextAppearanceResId) } - protected open fun addCompoundButton() { val compoundButton = getCompoundButton() txtView!!.removeView() @@ -150,7 +164,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( protected abstract fun getCompoundButton(): CompoundButton? - @SuppressLint("RtlHardcoded") private fun resolveTextGravity(@TextGravity textGravity: Int): Int { return when (textGravity) { @@ -163,7 +176,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( } } - private fun setTextInternal(text: CharSequence?, subtext: CharSequence?) { val ssb = SpannableStringBuilder() @@ -183,7 +195,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( txtView!!.visibility = if (ssb.isNotEmpty()) VISIBLE else GONE } - @SuppressLint("CustomViewStyleable") private fun setTextAppearanceSpan(ss: SpannableString, styleId: Int, isSubText: Boolean) { val txtSizeDef = context.sp2px(if (isSubText) 14F else 16.toFloat()) @@ -196,7 +207,9 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( if (font != null) { ss.setSpan(TypefaceSpan2(font), 0, ss.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) } else { - family = resolveFontFamily(ta.getString(R.styleable.TextAppearance_android_fontFamily)) + family = resolveFontFamily( + ta.getString(R.styleable.TextAppearance_android_fontFamily) + ) } } else { family = resolveFontFamily(ta.getString(R.styleable.TextAppearance_android_fontFamily)) @@ -216,7 +229,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( ta.recycle() } - private fun resolveFontFamily(s: String?): String { return if ("sans-serif".equals(s, ignoreCase = true) || "sans-serif-light".equals(s, ignoreCase = true) || @@ -224,10 +236,13 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( "sans-serif-black".equals(s, ignoreCase = true) || "sans-serif-thin".equals(s, ignoreCase = true) || "sans-serif-medium".equals(s, ignoreCase = true) - ) s!! else "sans-serif" + ) { + s!! + } else { + "sans-serif" + } } - private fun setSpaceBetweenInternal(spaceBetween: Int) { (txtView!!.layoutParams as LayoutParams).apply { setMargins(0, 0, 0, 0) @@ -244,14 +259,12 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( txtView!!.requestLayout() } - private fun setTextAppearancesInternal(textAppearanceResId: Int, subTextAppearanceResId: Int) { this.textAppearanceResId = textAppearanceResId this.subTextAppearanceResId = subTextAppearanceResId setTextInternal(text, subText) } - fun setTextAppearance(@StyleRes styleResId: Int) { textAppearanceResId = styleResId setTextAppearances(styleResId, subTextAppearanceResId) @@ -281,7 +294,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( setTextInternal(text, subText) } - fun getSubText(): CharSequence? { return subText } @@ -305,7 +317,10 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( setSpaceBetweenInternal(spaceBetween) } - fun setTextAppearances(@StyleRes textAppearanceResId: Int, @StyleRes subTextAppearanceResId: Int) { + fun setTextAppearances( + @StyleRes textAppearanceResId: Int, + @StyleRes subTextAppearanceResId: Int + ) { setTextAppearancesInternal(textAppearanceResId, subTextAppearanceResId) } @@ -314,7 +329,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( setTextAppearances(textAppearanceResId, styleResId) } - fun setForceTextGravity(@TextGravity gravity: Int) { textGravity = gravity txtView?.gravity = resolveTextGravity(gravity) @@ -338,15 +352,20 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( override fun toggle() { val btn = getCompoundButton() ?: return - if (beforeCheckChangeListener == null || beforeCheckChangeListener!!.invoke(this, !isChecked)) { + if (beforeCheckChangeListener == null || beforeCheckChangeListener!!.invoke( + this, + !isChecked + ) + ) { btn.toggle() } } - @CallSuper override fun onCheckedChanged(buttonView: CompoundButton?, isChecked: Boolean) { - background?.state = intArrayOf(if (isChecked) android.R.attr.state_checked else -android.R.attr.state_checked) + background?.state = intArrayOf( + if (isChecked) android.R.attr.state_checked else -android.R.attr.state_checked + ) onCheckChangedListener?.invoke(this, isChecked) } @@ -359,7 +378,6 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( return true } - @IntDef(COMPOUND_TEXT_LEFT, COMPOUND_TEXT_TOP, COMPOUND_TEXT_RIGHT, COMPOUND_TEXT_BOTTOM) @Retention(AnnotationRetention.SOURCE) annotation class CompoundDirection @@ -373,6 +391,4 @@ abstract class PeaceCompoundButton @JvmOverloads constructor( ) @Retention(AnnotationRetention.SOURCE) annotation class TextGravity - - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/compound/PeaceCompoundButtonGroup.kt b/app/src/main/java/com/quranapp/android/widgets/compound/PeaceCompoundButtonGroup.kt index d1c3829d..fc2642ff 100644 --- a/app/src/main/java/com/quranapp/android/widgets/compound/PeaceCompoundButtonGroup.kt +++ b/app/src/main/java/com/quranapp/android/widgets/compound/PeaceCompoundButtonGroup.kt @@ -3,7 +3,6 @@ package com.quranapp.android.widgets.compound import androidx.annotation.IdRes import com.quranapp.android.widgets.radio.PeaceRadioButton - interface PeaceCompoundButtonGroup { fun clearCheck() @@ -15,4 +14,4 @@ interface PeaceCompoundButtonGroup { fun checkSansInvocation(@IdRes id: Int) fun checkAtPosition(position: Int) fun check(@IdRes id: Int) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/dialog/loader/PeaceProgressDialog.kt b/app/src/main/java/com/quranapp/android/widgets/dialog/loader/PeaceProgressDialog.kt index e3b641bd..82d6e42b 100644 --- a/app/src/main/java/com/quranapp/android/widgets/dialog/loader/PeaceProgressDialog.kt +++ b/app/src/main/java/com/quranapp/android/widgets/dialog/loader/PeaceProgressDialog.kt @@ -33,9 +33,9 @@ class PeaceProgressDialog(context: Context) : PeaceDialog(context) { controller.setAllowOutsideTouches(allow) } - internal class ProgressDialogController( - context: Context, dialog: PeaceDialog + context: Context, + dialog: PeaceDialog ) : PeaceDialogController(context, dialog) { override fun setupContent(contentPanel: ViewGroup) { super.setupContent(contentPanel) @@ -68,5 +68,4 @@ class PeaceProgressDialog(context: Context) : PeaceDialog(context) { return 0 } } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/editor/EditorBGView.java b/app/src/main/java/com/quranapp/android/widgets/editor/EditorBGView.java index 8a23b29c..1eccd6d9 100644 --- a/app/src/main/java/com/quranapp/android/widgets/editor/EditorBGView.java +++ b/app/src/main/java/com/quranapp/android/widgets/editor/EditorBGView.java @@ -4,8 +4,6 @@ package com.quranapp.android.widgets.editor; -import static android.graphics.Paint.ANTI_ALIAS_FLAG; - import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -20,9 +18,9 @@ import android.graphics.Shader; import android.graphics.drawable.Drawable; import android.view.View; - import androidx.annotation.DrawableRes; import androidx.core.content.ContextCompat; +import static android.graphics.Paint.ANTI_ALIAS_FLAG; import com.peacedesign.android.utils.ColorUtils; import com.peacedesign.android.utils.Dimen; @@ -115,7 +113,8 @@ private void regeneratePaints() { if (bgType == VerseEditor.BG_TYPE_COLORS && colors.length > 0) { if (colors.length > 1) { - LinearGradient gradient = new LinearGradient(0, 0, getWidth(), getHeight(), colors, null, Shader.TileMode.CLAMP); + LinearGradient gradient = new LinearGradient(0, 0, getWidth(), getHeight(), colors, null, + Shader.TileMode.CLAMP); mBGPaint.setShader(gradient); } else { mBGPaint.setColor(colors[0]); diff --git a/app/src/main/java/com/quranapp/android/widgets/editor/EditorFGView.java b/app/src/main/java/com/quranapp/android/widgets/editor/EditorFGView.java index ad381022..c259fccf 100644 --- a/app/src/main/java/com/quranapp/android/widgets/editor/EditorFGView.java +++ b/app/src/main/java/com/quranapp/android/widgets/editor/EditorFGView.java @@ -4,8 +4,6 @@ package com.quranapp.android.widgets.editor; -import static android.graphics.Paint.ANTI_ALIAS_FLAG; - import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -17,9 +15,9 @@ import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.view.View; - import androidx.annotation.DrawableRes; import androidx.core.content.ContextCompat; +import static android.graphics.Paint.ANTI_ALIAS_FLAG; import com.peacedesign.android.utils.ColorUtils; import com.peacedesign.android.utils.Dimen; diff --git a/app/src/main/java/com/quranapp/android/widgets/editor/EditorSelectImageView.java b/app/src/main/java/com/quranapp/android/widgets/editor/EditorSelectImageView.java index 91820f55..9f7e0ba1 100644 --- a/app/src/main/java/com/quranapp/android/widgets/editor/EditorSelectImageView.java +++ b/app/src/main/java/com/quranapp/android/widgets/editor/EditorSelectImageView.java @@ -4,8 +4,6 @@ package com.quranapp.android.widgets.editor; -import static android.graphics.Paint.ANTI_ALIAS_FLAG; - import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -16,9 +14,9 @@ import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.view.View; - import androidx.annotation.DrawableRes; import androidx.core.content.ContextCompat; +import static android.graphics.Paint.ANTI_ALIAS_FLAG; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.DrawableUtils; diff --git a/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormInputField.java b/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormInputField.java index 29e511cf..d8a4840c 100644 --- a/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormInputField.java +++ b/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormInputField.java @@ -19,7 +19,6 @@ import android.widget.EditText; import android.widget.FrameLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; @@ -53,7 +52,8 @@ public PeaceFormInputField(@NonNull Context context, @Nullable AttributeSet attr public PeaceFormInputField(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PeaceFormInputField, defStyleAttr, defStyleRes); + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PeaceFormInputField, defStyleAttr, + defStyleRes); mFieldTitle = a.getString(R.styleable.PeaceFormInputField_PeaceFFTitle); mFieldHint = a.getString(R.styleable.PeaceFormInputField_PeaceFFHint); mFieldText = a.getString(R.styleable.PeaceFormInputField_PeaceFFText); diff --git a/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormSelectField.java b/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormSelectField.java index c097d456..173c3a9d 100644 --- a/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormSelectField.java +++ b/app/src/main/java/com/quranapp/android/widgets/form/PeaceFormSelectField.java @@ -15,7 +15,6 @@ import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; @@ -50,7 +49,8 @@ public PeaceFormSelectField(@NonNull Context context, @Nullable AttributeSet att public PeaceFormSelectField(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); - TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PeaceFormSelectField, defStyleAttr, defStyleRes); + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.PeaceFormSelectField, defStyleAttr, + defStyleRes); mFieldTitle = a.getString(R.styleable.PeaceFormSelectField_PeaceFFTitle); mFieldRequired = a.getBoolean(R.styleable.PeaceFormSelectField_PeaceFFRequired, false); @@ -127,8 +127,9 @@ public boolean isWarningShown() { public void setOptions(List options, SimplerSpinnerItemSelectListener selectListener) { mFieldSpinnerView.setOnItemSelectedListener(selectListener); - SpinnerAdapter2 adapter = new SpinnerAdapter2<>(getContext(), R.layout.lyt_simple_spinner_item, R.id.text, - options); + SpinnerAdapter2 adapter = new SpinnerAdapter2<>(getContext(), R.layout.lyt_simple_spinner_item, + R.id.text, + options); mFieldSpinnerView.setAdapter(adapter); } diff --git a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListAdapter.kt b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListAdapter.kt index c52b1942..96c6e783 100644 --- a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListAdapter.kt +++ b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListAdapter.kt @@ -32,7 +32,6 @@ open class BaseListAdapter(val context: Context) { } } - open fun onCreateItem(item: BaseListItem, index: Int) { val itemView = onCreateItemView(item, index) ?: return @@ -48,7 +47,6 @@ open class BaseListAdapter(val context: Context) { } } - protected open fun onCreateItemView(item: BaseListItem, position: Int): View? { return BaseListItemView(context, item) } @@ -98,7 +96,6 @@ open class BaseListAdapter(val context: Context) { return container?.isLaidOut == true } - fun removeItem(index: Int) { removeItem(items[index]) } @@ -205,4 +202,4 @@ open class BaseListAdapter(val context: Context) { itemView.notifyForChange() } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItem.kt b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItem.kt index 6c90adbf..00dad15d 100644 --- a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItem.kt +++ b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItem.kt @@ -6,8 +6,8 @@ import com.quranapp.android.components.ComponentBase class BaseListItem @JvmOverloads constructor( var icon: Int = 0, var label: String? = null, - var message: String? = null, + var message: String? = null ) : ComponentBase() { var adapter: BaseListAdapter? = null var itemView: View? = null -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItemView.kt b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItemView.kt index cf12bba9..566936a1 100644 --- a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItemView.kt +++ b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListItemView.kt @@ -64,7 +64,6 @@ class BaseListItemView(context: Context, val item: BaseListItem) : FrameLayout(c containerView.addView(iconView) } - private fun initLabelCont() { labelCont.apply { layoutParams = LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply { @@ -102,7 +101,7 @@ class BaseListItemView(context: Context, val item: BaseListItem) : FrameLayout(c mMessageView.setEllipsize(TextUtils.TruncateAt.END);*/ updateDescription() - labelCont!!.addView(messageView) + labelCont.addView(messageView) } fun updateIcon() { @@ -117,7 +116,6 @@ class BaseListItemView(context: Context, val item: BaseListItem) : FrameLayout(c } iconView?.setImageDrawable(context.drawable(item.icon)) - } fun updateLabel() { @@ -182,5 +180,4 @@ class BaseListItemView(context: Context, val item: BaseListItem) : FrameLayout(c private fun resolveItemMassageStyle(): Context { return ContextThemeWrapper(context, R.style.SimpleListItemMessageStyle) } - -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListView.kt b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListView.kt index d3870345..85596847 100644 --- a/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListView.kt +++ b/app/src/main/java/com/quranapp/android/widgets/list/base/BaseListView.kt @@ -14,7 +14,7 @@ import com.quranapp.android.utils.extensions.updatePaddingVertical open class BaseListView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, - defStyleAttr: Int = 0, + defStyleAttr: Int = 0 ) : NestedScrollView(context, attrs, defStyleAttr) { companion object { const val DEFAULT_ITEM_ANIMATOR = -1 @@ -47,7 +47,6 @@ open class BaseListView @JvmOverloads constructor( create() } - private fun create() { container.removeAllViews() @@ -86,10 +85,14 @@ open class BaseListView @JvmOverloads constructor( } private fun resolveAnimation(): Animation? { - return if (itemAnimator == 0) null else try { - AnimationUtils.loadAnimation(context, itemAnimator) - } catch (e: Exception) { - AnimationUtils.loadAnimation(context, android.R.anim.fade_in) + return if (itemAnimator == 0) { + null + } else { + try { + AnimationUtils.loadAnimation(context, itemAnimator) + } catch (e: Exception) { + AnimationUtils.loadAnimation(context, android.R.anim.fade_in) + } } } @@ -110,7 +113,6 @@ open class BaseListView @JvmOverloads constructor( onItemClickListener?.onItemClick(item) } - open fun setOnItemClickListener(listener: OnItemClickListener) { onItemClickListener = listener } diff --git a/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListAdapter.kt b/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListAdapter.kt index 5aaadc18..0d67e130 100644 --- a/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListAdapter.kt +++ b/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListAdapter.kt @@ -8,7 +8,6 @@ import com.quranapp.android.widgets.list.base.BaseListItem import com.quranapp.android.widgets.radio.PeaceRadioButton import com.quranapp.android.widgets.radio.PeaceRadioGroup - class SingleChoiceListAdapter(context: Context) : BaseListAdapter(context) { override fun onCreateItemView(item: BaseListItem, position: Int): View { val radio = PeaceRadioButton(context).apply { @@ -30,4 +29,4 @@ class SingleChoiceListAdapter(context: Context) : BaseListAdapter(context) { container.check(itemView.id) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListView.kt b/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListView.kt index 4fe70ea2..ba6889db 100644 --- a/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListView.kt +++ b/app/src/main/java/com/quranapp/android/widgets/list/singleChoice/SingleChoiceListView.kt @@ -25,4 +25,4 @@ class SingleChoiceListView(context: Context) : BaseListView(context) { override fun setOnItemClickListener(listener: OnItemClickListener) { selectionChangeListener = listener } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioButton.kt b/app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioButton.kt index d4c0fb95..b0b3d2b0 100644 --- a/app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioButton.kt +++ b/app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioButton.kt @@ -17,7 +17,8 @@ import com.quranapp.android.widgets.compound.PeaceCompoundButton * a radio group, checking one radio button unchecks all the others.

    *

    */ -class PeaceRadioButton @JvmOverloads constructor(context: Context, +class PeaceRadioButton @JvmOverloads constructor( + context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : PeaceCompoundButton(context, attrs, defStyleAttr) { @@ -31,7 +32,10 @@ class PeaceRadioButton @JvmOverloads constructor(context: Context, private fun makeRadio() { radio = RadioHelper(context).apply { isChecked = initialChecked - layoutParams = LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) + layoutParams = LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, + ViewGroup.LayoutParams.WRAP_CONTENT + ) } } @@ -48,4 +52,4 @@ class PeaceRadioButton @JvmOverloads constructor(context: Context, setOnCheckedChangeListener(this@PeaceRadioButton) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioGroup.kt b/app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioGroup.kt index 6bb35637..806b9b13 100644 --- a/app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioGroup.kt +++ b/app/src/main/java/com/quranapp/android/widgets/radio/PeaceRadioGroup.kt @@ -39,7 +39,6 @@ class PeaceRadioGroup @JvmOverloads constructor( private var passThroughListener = PassThroughHierarchyChangeListener() - init { val a = context.obtainStyledAttributes(attrs, R.styleable.PeaceRadioGroup, defStyleAttr, 0) @@ -72,7 +71,6 @@ class PeaceRadioGroup @JvmOverloads constructor( protectFromCheckedChange = false } - override fun addView(child: View, index: Int, params: ViewGroup.LayoutParams) { if (child !is PeaceRadioButton) return @@ -103,7 +101,6 @@ class PeaceRadioGroup @JvmOverloads constructor( protectFromCheckedChange = false } - override fun checkAtPosition(position: Int) { val view = getChildAt(position) ?: return @@ -120,7 +117,6 @@ class PeaceRadioGroup @JvmOverloads constructor( } } - private fun checkInternal(@IdRes id: Int) { setCheckedForView(checkedId, false) // uncheck previously checked button setCheckedForView(id, true) // check the new button @@ -175,4 +171,4 @@ class PeaceRadioGroup @JvmOverloads constructor( } } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTab.java b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTab.java index 2d348b66..dde34234 100644 --- a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTab.java +++ b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTab.java @@ -12,7 +12,7 @@ public class BottomTab extends ComponentBase { private String tabLabel; @DrawableRes - private int tabIcon = 0; + private int tabIcon; private BottomTabView tabView; private boolean mIsKingTab; private Fragment attachedFragment; @@ -43,7 +43,7 @@ public void setTabLabel(@Nullable String tabLabel) { @DrawableRes public int getTabIcon() { - return this.tabIcon; + return tabIcon; } public void setTabIcon(@DrawableRes int tabIcon) { diff --git a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabLayout.java b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabLayout.java index 90caf3f8..bf6190fe 100644 --- a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabLayout.java +++ b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabLayout.java @@ -1,8 +1,5 @@ package com.quranapp.android.widgets.tablayout; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - import android.content.Context; import android.graphics.drawable.Drawable; import android.util.AttributeSet; @@ -11,11 +8,12 @@ import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.LinearLayout; - import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.core.content.ContextCompat; import androidx.viewpager2.widget.ViewPager2; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.DrawableUtils; @@ -36,7 +34,7 @@ public class BottomTabLayout extends LinearLayout { private OnTabSelectionUpdateListener mSelectionUpdateListener; private BottomTab mKingTab; private OnKingTabClickListener mKingTabClickCallback; - private int mPreSelectedTabIndex = 0; + private int mPreSelectedTabIndex; private boolean firstTime = true; public BottomTabLayout(@NonNull Context context) { @@ -143,8 +141,9 @@ private void drainTabs() { public void addTab(@NonNull BottomTab tab, int position) { if (position > mTabs.size()) { - String msg = String.format("position cannot be larger than size of tabLayout items. Position: %s , Size: %s", position, - mTabs.size()); + String msg = String.format( + "position cannot be larger than size of tabLayout items. Position: %s , Size: %s", position, + mTabs.size()); throw new IllegalArgumentException(msg); } diff --git a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabView.java b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabView.java index e8684d32..b42ff86c 100644 --- a/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabView.java +++ b/app/src/main/java/com/quranapp/android/widgets/tablayout/BottomTabView.java @@ -1,9 +1,5 @@ package com.quranapp.android.widgets.tablayout; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; -import static androidx.core.content.ContextCompat.getColorStateList; -import static com.peacedesign.android.utils.Dimen.dp2px; - import android.annotation.SuppressLint; import android.graphics.Typeface; import android.graphics.drawable.Drawable; @@ -12,11 +8,13 @@ import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; - import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatTextView; import androidx.core.content.ContextCompat; import androidx.core.graphics.drawable.DrawableCompat; +import static com.peacedesign.android.utils.Dimen.dp2px; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static androidx.core.content.ContextCompat.getColorStateList; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.DrawableUtils; @@ -36,12 +34,12 @@ public class BottomTabView extends LinearLayout { public BottomTabView(@NonNull BottomTabLayout tabLayout, @NonNull BottomTab tab) { super(tabLayout.getContext()); - this.mTabLayout = tabLayout; - this.mTab = tab; - this.isKingTab = tab.isKingTab(); - this.primaryColor = ContextCompat.getColor(getContext(), R.color.colorPrimary); - this.primaryColorDark = ContextCompat.getColor(getContext(), R.color.colorPrimaryDark); - this.kingTabTintColor = ContextCompat.getColor(getContext(), R.color.white); + mTabLayout = tabLayout; + mTab = tab; + isKingTab = tab.isKingTab(); + primaryColor = ContextCompat.getColor(getContext(), R.color.colorPrimary); + primaryColorDark = ContextCompat.getColor(getContext(), R.color.colorPrimaryDark); + kingTabTintColor = ContextCompat.getColor(getContext(), R.color.white); init(); } @@ -65,7 +63,8 @@ private void initThis() { int padV = dp2px(getContext(), 5); setPadding(padH, padV, padH, padV); - Drawable background = DrawableUtils.createBackground(primaryColor, primaryColorDark, Dimen.dp2px(getContext(), 100)); + Drawable background = DrawableUtils.createBackground(primaryColor, primaryColorDark, + dp2px(getContext(), 100)); setBackground(background); setOnTouchListener(new HoverPushEffect()); @@ -126,7 +125,8 @@ private void initIconView(BottomTab tab) { if (isKingTab) { drawable.setTint(kingTabTintColor); } else { - DrawableCompat.setTintList(drawable.mutate(), getColorStateList(getContext(), R.color.color_bottom_tablayout_icon)); + DrawableCompat.setTintList(drawable.mutate(), + getColorStateList(getContext(), R.color.color_bottom_tablayout_icon)); } iconView.setImageDrawable(drawable); diff --git a/peacedesign/src/main/java/com/peacedesign/android/utils/anim/DimensionAnimator.kt b/peacedesign/src/main/java/com/peacedesign/android/utils/anim/DimensionAnimator.kt index 6b8b810c..889b3fac 100644 --- a/peacedesign/src/main/java/com/peacedesign/android/utils/anim/DimensionAnimator.kt +++ b/peacedesign/src/main/java/com/peacedesign/android/utils/anim/DimensionAnimator.kt @@ -12,7 +12,14 @@ import android.animation.ValueAnimator import android.view.View import java.lang.ref.WeakReference -class DimensionAnimator private constructor(requestedDimen: Int, v: View, startWidth: Int, targetWidth: Int, startHeight: Int, targetHeight: Int) { +class DimensionAnimator private constructor( + requestedDimen: Int, + v: View, + startWidth: Int, + targetWidth: Int, + startHeight: Int, + targetHeight: Int +) { companion object { private const val DIMEN_BOTH = 0x0 private const val DIMEN_HEIGHT = 0x1 @@ -20,10 +27,16 @@ class DimensionAnimator private constructor(requestedDimen: Int, v: View, startW private const val DURATION_DEFAULT: Long = 200 fun ofBoth(v: View, startWidth: Int, targetWidth: Int, startHeight: Int, targetHeight: Int): DimensionAnimator { - return DimensionAnimator(DIMEN_BOTH, v, startWidth, targetWidth, startHeight, targetHeight) + return DimensionAnimator( + DIMEN_BOTH, + v, + startWidth, + targetWidth, + startHeight, + targetHeight + ) } - fun ofWidth(v: View, startWidth: Int, targetWidth: Int): DimensionAnimator { return DimensionAnimator(DIMEN_WIDTH, v, startWidth, targetWidth, -1, -1) } @@ -83,7 +96,6 @@ class DimensionAnimator private constructor(requestedDimen: Int, v: View, startW } } - private fun prepareBothInternal(): Animator { val animatorW = ValueAnimator.ofInt(mStartWidth, mTargetWidth) animatorW.duration = mDurationWidth @@ -119,7 +131,10 @@ class DimensionAnimator private constructor(requestedDimen: Int, v: View, startW val interpolator = if (isHeight) mHeightInterpolator else mWidthInterpolator val duration = if (isHeight) mDurationHeight else mDurationWidth - val animator = ValueAnimator.ofInt(if (isHeight) mStartHeight else mStartWidth, if (isHeight) mTargetHeight else mTargetWidth) + val animator = ValueAnimator.ofInt( + if (isHeight) mStartHeight else mStartWidth, + if (isHeight) mTargetHeight else mTargetWidth + ) animator.duration = duration if (interpolator != null) { @@ -150,4 +165,4 @@ class DimensionAnimator private constructor(requestedDimen: Int, v: View, startW } mAnimator!!.start() } -} \ No newline at end of file +} From b43c00c06c04861cc8530062bc1aa348469f965d Mon Sep 17 00:00:00 2001 From: faisalcodes Date: Mon, 6 Mar 2023 17:31:57 +0530 Subject: [PATCH 5/6] - --- .../android/adapters/ADPBookmark.java | 15 +- .../android/adapters/editor/ADPEditorBG.java | 15 +- .../adapters/search/ADPVerseResults.java | 27 +- .../reader/dialogs/VerseShareDialog.java | 12 +- .../widgets/bottomSheet/PeaceBottomSheet.kt | 62 +-- .../bottomSheet/PeaceBottomSheetDialog.kt | 10 +- .../bottomSheet/PeaceBottomSheetMenu.kt | 30 +- .../bottomSheet/PeaceBottomSheetParams.kt | 7 +- .../widget/dialog/base/PeaceDialogParams.java | 3 + .../widget/sheet/PeaceBottomSheet.java | 488 ++++++++++++++++++ 10 files changed, 581 insertions(+), 88 deletions(-) create mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/sheet/PeaceBottomSheet.java diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java b/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java index 8daa17b4..e2ba66ab 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java @@ -4,6 +4,8 @@ package com.quranapp.android.adapters; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; + import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Typeface; @@ -13,13 +15,14 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; + import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.LineHeightSpan2; +import com.peacedesign.android.widget.list.base.BaseListItem; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityBookmark; import com.quranapp.android.adapters.extended.PeaceBottomSheetMenuAdapter; @@ -28,7 +31,6 @@ import com.quranapp.android.databinding.LytBookmarkItemBinding; import com.quranapp.android.utils.extensions.ContextKt; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetMenu; -import com.quranapp.android.widgets.list.base.BaseListItem; import java.util.ArrayList; import java.util.LinkedHashSet; @@ -218,12 +220,9 @@ private void openItemMenu(String title, BookmarkModel model) { dialog1.dismiss(); switch (item.getPosition()) { - case 0: mActivity.onView(model, getAdapterPosition()); - break; - case 1: mActivity.onOpen(model); - break; - case 2: mActivity.removeVerseFromBookmark(model, getAdapterPosition()); - break; + case 0: mActivity.onView(model, getAdapterPosition()); break; + case 1: mActivity.onOpen(model); break; + case 2: mActivity.removeVerseFromBookmark(model, getAdapterPosition()); break; } }); diff --git a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java index fff75b6e..8c15a7b5 100644 --- a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java +++ b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java @@ -4,6 +4,8 @@ package com.quranapp.android.adapters.editor; +import static android.provider.MediaStore.Images; + import android.content.Context; import android.content.Intent; import android.graphics.Color; @@ -12,21 +14,20 @@ import android.view.ViewGroup; import android.widget.SeekBar; import android.widget.TextView; + import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; -import static android.provider.MediaStore.Images; import com.peacedesign.android.utils.ColorUtils; +import com.peacedesign.android.widget.sheet.PeaceBottomSheet; import com.quranapp.android.R; import com.quranapp.android.components.editor.EditorBG; import com.quranapp.android.components.editor.VerseEditor; import com.quranapp.android.databinding.LytEditorAlphaDialogBinding; import com.quranapp.android.frags.editshare.FragEditorBG; import com.quranapp.android.utils.gesture.HoverPushOpacityEffect; -import com.quranapp.android.utils.simplified.SimpleSeekbarChangeListener; +import com.quranapp.android.utils.univ.SimpleSeekbarChangeListener; import com.quranapp.android.widgets.ColorPreviewerView; -import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheet; -import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetParams; import com.quranapp.android.widgets.editor.EditorBGView; import com.quranapp.android.widgets.editor.EditorSelectImageView; @@ -132,10 +133,10 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { }); mDialog = new PeaceBottomSheet(); - PeaceBottomSheetParams p = mDialog.getParams(); - p.setHeaderTitle(ctx.getString(R.string.strTitleAlphaBG)); + PeaceBottomSheet.PeaceBottomSheetParams p = mDialog.getDialogParams(); + p.headerTitle = ctx.getString(R.string.strTitleAlphaBG); p.setContentView(alphaDialogBinding.getRoot()); - p.setWindowDimAmount(0); + p.windowDimAmount = 0; mDialog.show(mFrag.getParentFragmentManager()); } diff --git a/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java b/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java index 1bfaed04..9c3e165f 100644 --- a/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java +++ b/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java @@ -1,5 +1,16 @@ package com.quranapp.android.adapters.search; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.CHAPTER_JUMPER; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.JUZ_JUMPER; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.RESULT; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.RESULT_COUNT; +import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.VERSE_JUMPER; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; +import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; + import android.content.Context; import android.content.Intent; import android.graphics.Color; @@ -13,23 +24,15 @@ import android.view.ViewGroup; import android.widget.LinearLayout; import android.widget.TextView; + import androidx.annotation.NonNull; import androidx.appcompat.widget.AppCompatTextView; import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.RecyclerView; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.CHAPTER_JUMPER; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.JUZ_JUMPER; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.RESULT; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.RESULT_COUNT; -import static com.quranapp.android.activities.ActivitySearch.SearchResultViewType.VERSE_JUMPER; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_SAVE_TRANSL_CHANGES; -import static com.quranapp.android.utils.univ.Keys.READER_KEY_TRANSL_SLUGS; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.TypefaceSpan2; +import com.peacedesign.android.widget.list.base.BaseListItem; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; import com.quranapp.android.activities.ActivitySearch; @@ -59,7 +62,6 @@ import com.quranapp.android.vh.search.VHVerseJump; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetMenu; import com.quranapp.android.widgets.chapterCard.ChapterCard; -import com.quranapp.android.widgets.list.base.BaseListItem; import java.util.ArrayList; import java.util.List; @@ -408,8 +410,7 @@ private void openItemMenu(Context context, VerseResultModel model) { switch (item.getId()) { case 0: { openItem(context, model); - } - break; + } break; case 1: { if (isBookmarked) { dbHelper.removeFromBookmark(model.chapterNo, model.verseNo, model.verseNo, null); diff --git a/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseShareDialog.java b/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseShareDialog.java index eedf7999..38dfc4e5 100644 --- a/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseShareDialog.java +++ b/app/src/main/java/com/quranapp/android/views/reader/dialogs/VerseShareDialog.java @@ -4,6 +4,12 @@ package com.quranapp.android.views.reader.dialogs; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; +import static com.quranapp.android.utils.univ.StringUtils.DASH; +import static com.quranapp.android.utils.univ.StringUtils.HYPHEN; +import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_LEFT; +import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_RIGHT; + import android.content.Context; import android.content.Intent; import android.text.Editable; @@ -13,15 +19,11 @@ import android.view.ViewParent; import android.view.inputmethod.InputMethodManager; import android.widget.Toast; + import androidx.annotation.NonNull; import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.core.content.ContextCompat; import androidx.core.widget.NestedScrollView; -import static com.quranapp.android.utils.univ.StringUtils.DASH; -import static com.quranapp.android.utils.univ.StringUtils.HYPHEN; -import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_LEFT; -import static com.quranapp.android.widgets.compound.PeaceCompoundButton.COMPOUND_TEXT_GRAVITY_RIGHT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; import com.peacedesign.android.utils.AppBridge; import com.peacedesign.android.utils.Dimen; diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt index 7ecdb1f9..31f0559c 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt @@ -26,8 +26,8 @@ import com.quranapp.android.utils.extensions.* open class PeaceBottomSheet : BottomSheetDialogFragment() { var params = PeaceBottomSheetParams() - var onShowListener: OnPeaceBottomSheetShowListener? = null - var onDismissListener: OnPeaceBottomSheetDismissListener? = null + var onPeaceBottomSheetShowListener: OnPeaceBottomSheetShowListener? = null + var onPeaceBottomSheetDismissListener: OnPeaceBottomSheetDismissListener? = null private var dialogLayout: LinearLayout? = null @@ -66,13 +66,10 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } private fun resolveTitle(context: Context) { - try { - params.headerTitle = params.headerTitle ?: context.getString(params.headerTitleResource) - } catch (e: Exception) { - e.printStackTrace() - } + params.headerTitle = params.headerTitle ?: context.getString(params.headerTitleResource) } + protected open fun setupHeader(dialogLayout: ViewGroup, params: PeaceBottomSheetParams) { if (!this.params.headerShown) return @@ -95,6 +92,7 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { return context.drawable(R.drawable.dr_bg_sheet_dialog_header) } + protected open fun prepareDragIcon(container: LinearLayout, params: PeaceBottomSheetParams) { if (params.disableDragging) return @@ -103,15 +101,12 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { setImageResource(R.drawable.dr_icon_drag) } - container.addView( - dragIcon, - 0, - LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply { - topMargin = Dimen.dp2px(container.context, 10f) - } - ) + container.addView(dragIcon, 0, LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT).apply { + topMargin = Dimen.dp2px(container.context, 10f) + }) } + protected open fun prepareTitleView( container: LinearLayout, params: PeaceBottomSheetParams, @@ -123,9 +118,7 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { var titleView: AppCompatTextView? = container.findViewById(R.id.title) if (hasTitle && titleView == null) { - titleView = AppCompatTextView( - ContextThemeWrapper(container.context, resolveTitleThemeId()) - ) + titleView = AppCompatTextView(ContextThemeWrapper(container.context, resolveTitleThemeId())) titleView.id = R.id.title container.addView(titleView) } @@ -136,6 +129,7 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } } + fun updateHeaderTitle() { val layout = dialogLayout ?: return @@ -155,6 +149,7 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } } + private fun createHeaderView(dialogLayout: ViewGroup): LinearLayout { val headerView = LinearLayout(dialogLayout.context).apply { id = R.id.peaceBottomSheetHeaderView @@ -172,23 +167,23 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } protected open fun setupContentView(dialogLayout: LinearLayout, params: PeaceBottomSheetParams) { - if (params.contentView == null) { - if (params.contentViewResId != 0) { - params.contentView = LayoutInflater.from(context).inflate( - params.contentViewResId, + if (params.mContentView == null) { + if (params.mContentViewResId != 0) { + params.mContentView = LayoutInflater.from(context).inflate( + params.mContentViewResId, dialogLayout, false ) } } - if (params.contentView != null) { - params.contentView.removeView() - dialogLayout.addView(params.contentView) + if (params.mContentView != null) { + params.mContentView.removeView() + dialogLayout.addView(params.mContentView) } - if (!params.headerShown && params.contentView != null) { - val closeBtn: View? = params.contentView!!.findViewById(R.id.close) + if (!params.headerShown && params.mContentView != null) { + val closeBtn: View? = params.mContentView!!.findViewById(R.id.close) closeBtn?.setOnClickListener { dismiss() } } } @@ -199,6 +194,7 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { setupDialogInternal(dialog, style, params) } + protected open fun setupDialogInternal( dialog: Dialog, style: Int, @@ -258,6 +254,7 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } }) + dialog.setOnKeyListener { dialogInterface, keyCode, event -> onKey( dialogInterface as BottomSheetDialog, @@ -267,7 +264,7 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } dialog.setOnShowListener { - onShowListener?.onShow() + onPeaceBottomSheetShowListener?.onShow() setupDialogOnStateChange(dialog, dialogModal, P.initialBehaviorState) } @@ -284,6 +281,7 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { return false } + private fun setupFullHeight(modal: View) { if (params.fullHeight) { modal.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT @@ -328,18 +326,19 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { show(fragmentManager, javaClass.simpleName) } + override fun setCancelable(cancelable: Boolean) { super.setCancelable(cancelable) params.cancellable = cancelable } - fun getDialogLayout(): LinearLayout { - return dialogLayout!! + fun getDialogLayout(): LinearLayout? { + return dialogLayout } override fun onDismiss(dialog: DialogInterface) { super.onDismiss(dialog) - if (onDismissListener != null) onDismissListener!!.onDismissed() + if (onPeaceBottomSheetDismissListener != null) onPeaceBottomSheetDismissListener!!.onDismissed() } fun isShowing() = isAdded @@ -358,4 +357,5 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { interface OnPeaceBottomSheetDismissListener { fun onDismissed() } -} + +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetDialog.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetDialog.kt index 48ee689d..96696173 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetDialog.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetDialog.kt @@ -22,17 +22,15 @@ open class PeaceBottomSheetDialog constructor( val targetWidth = context.dp2px(450f) window.setLayout( - if (context.getWindowWidth() > targetWidth) { - targetWidth - } else { - LayoutParams.MATCH_PARENT - }, + if (context.getWindowWidth() > targetWidth) targetWidth + else LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT ) setupDialogInternal(window) } + protected fun setupDialogInternal(window: Window) { if (params.supportsNoAnimation()) { window.setWindowAnimations(R.style.SheetDialogAnimations_NoAnimations) @@ -48,4 +46,4 @@ open class PeaceBottomSheetDialog constructor( setCanceledOnTouchOutside(params.cancellable && !params.disableOutsideTouch) } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt index a739e1cf..8414dd01 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt @@ -4,15 +4,16 @@ import android.content.Context import android.os.Bundle import android.view.View import android.widget.LinearLayout -import com.quranapp.android.widgets.list.base.BaseListAdapter -import com.quranapp.android.widgets.list.base.BaseListItem -import com.quranapp.android.widgets.list.base.BaseListView -import com.quranapp.android.widgets.list.singleChoice.SingleChoiceListAdapter -import com.quranapp.android.widgets.list.singleChoice.SingleChoiceListView +import com.peacedesign.android.widget.list.base.BaseListAdapter +import com.peacedesign.android.widget.list.base.BaseListItem +import com.peacedesign.android.widget.list.simple.SimpleListView +import com.peacedesign.android.widget.list.singleChoice.SingleChoiceListAdapter +import com.peacedesign.android.widget.list.singleChoice.SingleChoiceListView open class PeaceBottomSheetMenu : PeaceBottomSheet() { var onItemClickListener: OnItemClickListener? = null - var adapter: BaseListAdapter? = null + var adapter: BaseListAdapter? = null + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -33,25 +34,24 @@ open class PeaceBottomSheetMenu : PeaceBottomSheet() { dialogLayout.addView(createAdapterView(dialogLayout.context, adapter!!)) } - protected open fun createAdapterView(context: Context, listAdapter: BaseListAdapter): View { + protected open fun createAdapterView(context: Context, listAdapter: BaseListAdapter): View { val listView = if (listAdapter is SingleChoiceListAdapter) { SingleChoiceListView(context) } else { - BaseListView(context) + SimpleListView(context) } - listView.setOnItemClickListener(object : BaseListView.OnItemClickListener { - override fun onItemClick(item: BaseListItem) { - onItemClickListener?.onItemClick(this@PeaceBottomSheetMenu, item) - } - }) + listView.setOnItemClickListener { item -> + onItemClickListener?.onItemClick(this, item) + } - listView.post { listView.setAdapter(adapter) } + listView.post { listView.adapter = adapter } return listView } + interface OnItemClickListener { fun onItemClick(dialog: PeaceBottomSheetMenu, item: BaseListItem) } -} +} \ No newline at end of file diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt index ca58a0e0..70a45583 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt @@ -38,10 +38,11 @@ class PeaceBottomSheetParams : Serializable { var headerTitleResource = 0 @Transient - var contentView: View? = null + var mContentView: View? = null @LayoutRes - var contentViewResId = 0 + var mContentViewResId = 0 + fun supportsNoAnimation(): Boolean { return !supportsAnimations || !supportsEnterAnimation && !supportsExitAnimation @@ -54,4 +55,4 @@ class PeaceBottomSheetParams : Serializable { fun supportsExitAnimationOnly(): Boolean { return supportsAnimations && !supportsEnterAnimation && supportsExitAnimation } -} +} \ No newline at end of file diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java b/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java index 3606accd..ebcc1d0d 100644 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java +++ b/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java @@ -19,6 +19,9 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.peacedesign.android.widget.list.base.BaseListAdapter; +import com.peacedesign.android.widget.list.base.BaseListItem; + class PeaceDialogParams { @SuppressLint("UnknownNullness") public Context context; diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/sheet/PeaceBottomSheet.java b/peacedesign/src/main/java/com/peacedesign/android/widget/sheet/PeaceBottomSheet.java new file mode 100644 index 00000000..adcf272f --- /dev/null +++ b/peacedesign/src/main/java/com/peacedesign/android/widget/sheet/PeaceBottomSheet.java @@ -0,0 +1,488 @@ +package com.peacedesign.android.widget.sheet; + +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; + +import android.annotation.SuppressLint; +import android.app.Dialog; +import android.content.Context; +import android.content.DialogInterface; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.text.TextUtils; +import android.view.ContextThemeWrapper; +import android.view.Gravity; +import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.Window; +import android.view.inputmethod.InputMethodManager; +import android.widget.LinearLayout; +import android.widget.LinearLayout.LayoutParams; + +import androidx.annotation.FloatRange; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.appcompat.widget.AppCompatImageView; +import androidx.appcompat.widget.AppCompatTextView; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentManager; + +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.bottomsheet.BottomSheetBehavior.State; +import com.google.android.material.bottomsheet.BottomSheetDialog; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import com.peacedesign.R; +import com.peacedesign.android.utils.Dimen; +import com.peacedesign.android.utils.DrawableUtils; +import com.peacedesign.android.utils.ResUtils; +import com.peacedesign.android.utils.ViewUtils; +import com.peacedesign.android.utils.WindowUtils; + +import java.io.Serializable; + +public class PeaceBottomSheet extends BottomSheetDialogFragment { + private PeaceBottomSheetParams P; + private OnPeaceBottomSheetShowListener mOnPeaceBottomSheetShowListener; + private OnPeaceBottomSheetDismissListener mOnPeaceBottomSheetDismissListener; + private LinearLayout mDialogLayout; + + public PeaceBottomSheet() { + P = new PeaceBottomSheetParams(); + } + + @Override + public void onSaveInstanceState(@NonNull Bundle outState) { + super.onSaveInstanceState(outState); + outState.putSerializable("params", P); + } + + @Override + public void onCreate(@Nullable Bundle savedInstanceState) { + setStyle(DialogFragment.STYLE_NORMAL, R.style.PeaceBottomSheetTheme); + if (savedInstanceState != null) { + P = (PeaceBottomSheetParams) savedInstanceState.getSerializable("params"); + } + + super.onCreate(savedInstanceState); + if (P.sheetBGColor == -1) { + P.sheetBGColor = ContextCompat.getColor(getContext(), R.color.colorBackgroundSheetDialog); + } + } + + @NonNull + @Override + public PeaceBottomSheetDialog onCreateDialog(@Nullable Bundle savedInstanceState) { + return new PeaceBottomSheetDialog(getContext(), getTheme(), P); + } + + protected View prepareDialogLayout(Context context, PeaceBottomSheetParams params) { + mDialogLayout = new LinearLayout(context); + mDialogLayout.setOrientation(LinearLayout.VERTICAL); + + setupHeader(mDialogLayout, params); + setupContentView(mDialogLayout, params); + + return mDialogLayout; + } + + private void resolveTitle() { + if (P.headerTitle == null) { + P.headerTitle = getContext().getString(P.headerTitleResource); + } + } + + protected void setupHeader(ViewGroup dialogLayout, PeaceBottomSheetParams params) { + if (!P.headerShown) { + return; + } + + resolveTitle(); + final boolean hasTitle = !TextUtils.isEmpty(params.headerTitle); + if (!hasTitle && params.disableDragging) { + return; + } + + LinearLayout headerView = createHeaderView(dialogLayout); + + prepareDragIcon(headerView, params); + prepareTitleView(headerView, params, false); + + if (hasTitle) { + headerView.setBackground(getHeaderBG(dialogLayout.getContext())); + } + } + + private Drawable getHeaderBG(Context context) { + return ContextCompat.getDrawable(context, R.drawable.dr_bg_sheet_dialog_header); + } + + protected void prepareDragIcon(LinearLayout container, PeaceBottomSheetParams params) { + if (params.disableDragging) { + return; + } + + AppCompatImageView dragIcon = new AppCompatImageView(container.getContext()); + dragIcon.setId(R.id.dragIcon); + dragIcon.setImageResource(R.drawable.dr_icon_drag); + + LayoutParams lp = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); + lp.topMargin = Dimen.dp2px(container.getContext(), 10); + container.addView(dragIcon, 0, lp); + } + + protected void prepareTitleView(@NonNull LinearLayout container, PeaceBottomSheetParams params, boolean isUpdating) { + boolean hasTitle = !TextUtils.isEmpty(params.headerTitle); + if (!isUpdating && !hasTitle) { + return; + } + + AppCompatTextView titleView = container.findViewById(R.id.title); + if (hasTitle && titleView == null) { + titleView = new AppCompatTextView(new ContextThemeWrapper(container.getContext(), resolveTitleThemeId())); + titleView.setId(R.id.title); + container.addView(titleView); + } + + if (titleView != null) { + titleView.setText(params.headerTitle); + titleView.setVisibility(hasTitle ? View.VISIBLE : View.GONE); + } + } + + public void updateHeaderTitle() { + if (mDialogLayout == null) { + return; + } + + resolveTitle(); + final boolean hasTitle = !TextUtils.isEmpty(P.headerTitle); + + LinearLayout headerView = mDialogLayout.findViewById(R.id.peaceBottomSheetHeaderView); + if (hasTitle && headerView == null) { + headerView = createHeaderView(mDialogLayout); + } + + if (headerView != null) { + prepareTitleView(headerView, P, true); + headerView.setBackground(hasTitle ? getHeaderBG(mDialogLayout.getContext()) : null); + } + } + + private LinearLayout createHeaderView(ViewGroup dialogLayout) { + LinearLayout headerView = new LinearLayout(dialogLayout.getContext()); + headerView.setId(R.id.peaceBottomSheetHeaderView); + headerView.setOrientation(LinearLayout.VERTICAL); + headerView.setGravity(Gravity.CENTER); + dialogLayout.addView(headerView, 0); + return headerView; + } + + protected int resolveTitleThemeId() { + return R.style.PeaceBottomSheetTitleStyle; + } + + protected void setupContentView(@NonNull LinearLayout dialogLayout, PeaceBottomSheetParams params) { + if (params.mContentView == null) { + if (params.mContentViewResId != 0) { + params.mContentView = LayoutInflater.from(getContext()).inflate(params.mContentViewResId, dialogLayout, false); + } + } + + if (params.mContentView != null) { + ViewUtils.removeView(params.mContentView); + dialogLayout.addView(params.mContentView); + } + + if (!params.headerShown && params.mContentView != null) { + View closeBtn = params.mContentView.findViewById(R.id.close); + if (closeBtn != null) { + closeBtn.setOnClickListener(v -> dismiss()); + } + } + } + + @SuppressLint("RestrictedApi") + @Override + public void setupDialog(@NonNull Dialog dialog, int style) { + super.setupDialog(dialog, style); + setupDialogInternal(dialog, style, P); + } + + protected void setupDialogInternal(Dialog dialog, int style, PeaceBottomSheetParams params) { + View dialogLayout = prepareDialogLayout(getContext(), params); + dialog.setContentView(dialogLayout); + + setupDialogStyles(dialog, dialogLayout, params); + } + + protected void setupDialogStyles(Dialog dialog, View dialogLayout, PeaceBottomSheetParams P) { + Window window = dialog.getWindow(); + window.getDecorView().setClipToOutline(true); + + dialogLayout.setClipToOutline(true); + ((ViewGroup) dialogLayout).setClipChildren(true); + + ViewGroup dialogModal = (ViewGroup) dialogLayout.getParent(); + dialogModal.setClipToOutline(true); + dialogModal.setClipChildren(true); + + setupFullHeight(dialogModal); + if (!P.supportsRoundedCorners) { + setupModalBackground(dialogModal, false); + } + + BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(dialogModal); + bottomSheetBehavior.setHideable(P.cancellable && !P.hideOnSwipe); + bottomSheetBehavior.setDraggable(P.cancellable && !P.disableDragging); + bottomSheetBehavior.setState(P.initialBehaviorState); + if (WindowUtils.isLandscapeMode(getContext())) { + bottomSheetBehavior.setSkipCollapsed(true); + } + bottomSheetBehavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { + @Override + public void onStateChanged(@NonNull View bottomSheet, int newState) { + setupDialogOnStateChange(dialog, dialogModal, newState); + + View focus = dialog.getCurrentFocus(); + if (focus != null) { + InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); + imm.hideSoftInputFromWindow(focus.getWindowToken(), 0); + } + } + + @Override + public void onSlide(@NonNull View bottomSheet, float slideOffset) { + /*if (slideOffset <= 0) { + float mult = 1 + slideOffset; + window.setDimAmount(P.windowDimAmount * mult); + }*/ + } + }); + + dialog.setOnKeyListener((dialogInterface, keyCode, event) -> onKey((BottomSheetDialog) dialogInterface, keyCode, event)); + dialog.setOnShowListener(dialogInterface -> { + if (mOnPeaceBottomSheetShowListener != null) mOnPeaceBottomSheetShowListener.onShow(); + setupDialogOnStateChange(dialog, dialogModal, P.initialBehaviorState); + }); + + dialogModal.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> { + setupDialogOnStateChange(dialog, dialogModal, bottomSheetBehavior.getState()); + }); + } + + protected boolean onKey(@NonNull BottomSheetDialog dialog, int keyCode, @NonNull KeyEvent event) { + return false; + } + + private void setupFullHeight(View modal) { + if (P.fullHeight) { + ViewGroup.LayoutParams params = modal.getLayoutParams(); + params.height = MATCH_PARENT; + modal.setLayoutParams(params); + } + } + + private void setupModalBackground(View modal, boolean isOnFullHeight) { + float[] radii = null; + + if (P.supportsRoundedCorners) { + boolean cornerFlag = P.resetRoundedCornersOnFullHeight && isOnFullHeight; + if (!cornerFlag) { + radii = Dimen.createRadiiForBGInDP(getContext(), 15, 15, 0, 0); + } + } + + Drawable background = DrawableUtils.createBackground(P.sheetBGColor, radii); + modal.setBackground(background); + } + + private void setupDialogOnStateChange(Dialog dialog, View dialogModal, int newState) { + boolean isExpanded = newState == BottomSheetBehavior.STATE_EXPANDED; + boolean isHeightFilled = dialogModal.getHeight() >= (Dimen.getWindowHeight(getContext()) - 10); + boolean isOnFullHeight = isExpanded && isHeightFilled; + + setupModalBackground(dialogModal, isOnFullHeight); + + if (!P.resetRoundedCornersOnFullHeight) { + return; + } + + Window window = dialog.getWindow(); + window.setDimAmount(isOnFullHeight ? 0 : P.windowDimAmount); + window.setStatusBarColor(isOnFullHeight ? P.sheetBGColor : 0); + + if (!WindowUtils.isNightMode(getContext())) { + if (isOnFullHeight) { + WindowUtils.setLightStatusBar(window); + } else { + WindowUtils.clearLightStatusBar(window); + } + } + } + + public final void show(@NonNull FragmentManager fragmentManager) { + show(fragmentManager, getClass().getSimpleName()); + } + + public void setContentView(@NonNull View contentView) { + P.mContentView = contentView; + } + + public void setContentView(@LayoutRes int layoutId) { + P.mContentViewResId = layoutId; + } + + public void setHeaderTitle(CharSequence title) { + P.headerTitle = title; + } + + public void setHeaderTitle(@StringRes int titleRes) { + P.headerTitleResource = titleRes; + } + + @Override + public void setCancelable(boolean cancelable) { + super.setCancelable(cancelable); + P.cancellable = cancelable; + } + + public void disableDragging(boolean flag) { + P.disableDragging = flag; + } + + public void setHideOnSwipe(boolean flag) { + P.hideOnSwipe = flag; + } + + public void disableOutsideTouch(boolean flag) { + P.disableOutsideTouch = flag; + } + + public void disableBackKey(boolean flag) { + P.disableBackKey = flag; + } + + public void setInitialBehaviorState(@State int state) { + P.initialBehaviorState = state; + } + + public void setFullHeight(boolean flag) { + P.fullHeight = flag; + } + + public void setHeaderShown(boolean shown) { + P.headerShown = shown; + } + + @NonNull + public PeaceBottomSheetParams getDialogParams() { + return P; + } + + public void applyParams(@NonNull PeaceBottomSheetParams params) { + P = params; + } + + public void setOnShowListener(@NonNull OnPeaceBottomSheetShowListener listener) { + mOnPeaceBottomSheetShowListener = listener; + } + + public void setOnDismissListener(@NonNull OnPeaceBottomSheetDismissListener listener) { + mOnPeaceBottomSheetDismissListener = listener; + } + + public LinearLayout getDialogLayout() { + return mDialogLayout; + } + + @NonNull + @Override + public Context getContext() { + //noinspection ConstantConditions + return super.getContext(); + } + + public int getSheetBGColor() { + return P.sheetBGColor; + } + + @Override + public void onDismiss(@NonNull DialogInterface dialog) { + super.onDismiss(dialog); + if (mOnPeaceBottomSheetDismissListener != null) mOnPeaceBottomSheetDismissListener.onDismissed(); + } + + public boolean isShowing() { + return isAdded(); + } + + @Override + public void dismiss() { + try { + super.dismiss(); + } catch (Exception ignored) {} + } + + public interface OnPeaceBottomSheetShowListener { + void onShow(); + } + + public interface OnPeaceBottomSheetDismissListener { + void onDismissed(); + } + + public static class PeaceBottomSheetParams implements Serializable { + public boolean disableDragging; + public boolean hideOnSwipe; + public boolean disableOutsideTouch; + public boolean cancellable = true; + public boolean disableBackKey; + public boolean supportsRoundedCorners = true; + public boolean resetRoundedCornersOnFullHeight = true; + public boolean supportsOverlayBackground = true; + public boolean supportsAnimations = true; + public boolean supportsEnterAnimation = true; + public boolean supportsExitAnimation = true; + public boolean fullHeight; + public boolean headerShown = true; + public int sheetBGColor = -1; + @FloatRange(from = 0f, to = 1f) + public float windowDimAmount = 0.6f; + @State + public int initialBehaviorState = BottomSheetBehavior.STATE_EXPANDED; + @Nullable + public CharSequence headerTitle; + @StringRes + public int headerTitleResource; + @Nullable + protected transient View mContentView; + @LayoutRes + protected int mContentViewResId; + + public boolean supportsNoAnimation() { + return !supportsAnimations || (!supportsEnterAnimation && !supportsExitAnimation); + } + + public boolean supportsEnterAnimationOnly() { + return supportsAnimations && supportsEnterAnimation && !supportsExitAnimation; + } + + public boolean supportsExitAnimationOnly() { + return supportsAnimations && !supportsEnterAnimation && supportsExitAnimation; + } + + + public void setContentView(@LayoutRes int viewResId) { + mContentViewResId = viewResId; + } + + public void setContentView(@NonNull View contentView) { + mContentView = contentView; + } + } +} From b957c63df7cae17c104d54fa735a0e5d0a343367 Mon Sep 17 00:00:00 2001 From: faisalcodes Date: Tue, 7 Mar 2023 04:40:52 +0530 Subject: [PATCH 6/6] Code improvements --- .../android/adapters/ADPBookmark.java | 6 +- .../android/adapters/editor/ADPEditorBG.java | 15 +- .../adapters/search/ADPVerseResults.java | 2 +- .../widgets/bottomSheet/PeaceBottomSheet.kt | 26 +- .../bottomSheet/PeaceBottomSheetMenu.kt | 26 +- .../bottomSheet/PeaceBottomSheetParams.kt | 4 +- .../widget/dialog/base/PeaceDialogParams.java | 15 +- .../widget/sheet/PeaceBottomSheet.java | 488 ------------------ 8 files changed, 44 insertions(+), 538 deletions(-) delete mode 100644 peacedesign/src/main/java/com/peacedesign/android/widget/sheet/PeaceBottomSheet.java diff --git a/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java b/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java index e2ba66ab..93bc961f 100644 --- a/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java +++ b/app/src/main/java/com/quranapp/android/adapters/ADPBookmark.java @@ -4,8 +4,6 @@ package com.quranapp.android.adapters; -import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; - import android.content.res.ColorStateList; import android.content.res.TypedArray; import android.graphics.Typeface; @@ -15,14 +13,13 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; import androidx.recyclerview.widget.RecyclerView; +import static android.text.Spanned.SPAN_EXCLUSIVE_EXCLUSIVE; import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.LineHeightSpan2; -import com.peacedesign.android.widget.list.base.BaseListItem; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityBookmark; import com.quranapp.android.adapters.extended.PeaceBottomSheetMenuAdapter; @@ -31,6 +28,7 @@ import com.quranapp.android.databinding.LytBookmarkItemBinding; import com.quranapp.android.utils.extensions.ContextKt; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetMenu; +import com.quranapp.android.widgets.list.base.BaseListItem; import java.util.ArrayList; import java.util.LinkedHashSet; diff --git a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java index 8c15a7b5..fff75b6e 100644 --- a/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java +++ b/app/src/main/java/com/quranapp/android/adapters/editor/ADPEditorBG.java @@ -4,8 +4,6 @@ package com.quranapp.android.adapters.editor; -import static android.provider.MediaStore.Images; - import android.content.Context; import android.content.Intent; import android.graphics.Color; @@ -14,20 +12,21 @@ import android.view.ViewGroup; import android.widget.SeekBar; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; +import static android.provider.MediaStore.Images; import com.peacedesign.android.utils.ColorUtils; -import com.peacedesign.android.widget.sheet.PeaceBottomSheet; import com.quranapp.android.R; import com.quranapp.android.components.editor.EditorBG; import com.quranapp.android.components.editor.VerseEditor; import com.quranapp.android.databinding.LytEditorAlphaDialogBinding; import com.quranapp.android.frags.editshare.FragEditorBG; import com.quranapp.android.utils.gesture.HoverPushOpacityEffect; -import com.quranapp.android.utils.univ.SimpleSeekbarChangeListener; +import com.quranapp.android.utils.simplified.SimpleSeekbarChangeListener; import com.quranapp.android.widgets.ColorPreviewerView; +import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheet; +import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetParams; import com.quranapp.android.widgets.editor.EditorBGView; import com.quranapp.android.widgets.editor.EditorSelectImageView; @@ -133,10 +132,10 @@ public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { }); mDialog = new PeaceBottomSheet(); - PeaceBottomSheet.PeaceBottomSheetParams p = mDialog.getDialogParams(); - p.headerTitle = ctx.getString(R.string.strTitleAlphaBG); + PeaceBottomSheetParams p = mDialog.getParams(); + p.setHeaderTitle(ctx.getString(R.string.strTitleAlphaBG)); p.setContentView(alphaDialogBinding.getRoot()); - p.windowDimAmount = 0; + p.setWindowDimAmount(0); mDialog.show(mFrag.getParentFragmentManager()); } diff --git a/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java b/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java index 9c3e165f..1b842d22 100644 --- a/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java +++ b/app/src/main/java/com/quranapp/android/adapters/search/ADPVerseResults.java @@ -32,7 +32,6 @@ import com.peacedesign.android.utils.Dimen; import com.peacedesign.android.utils.span.TypefaceSpan2; -import com.peacedesign.android.widget.list.base.BaseListItem; import com.quranapp.android.R; import com.quranapp.android.activities.ActivityReader; import com.quranapp.android.activities.ActivitySearch; @@ -62,6 +61,7 @@ import com.quranapp.android.vh.search.VHVerseJump; import com.quranapp.android.widgets.bottomSheet.PeaceBottomSheetMenu; import com.quranapp.android.widgets.chapterCard.ChapterCard; +import com.quranapp.android.widgets.list.base.BaseListItem; import java.util.ArrayList; import java.util.List; diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt index 31f0559c..a3d1cd96 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheet.kt @@ -27,7 +27,7 @@ import com.quranapp.android.utils.extensions.* open class PeaceBottomSheet : BottomSheetDialogFragment() { var params = PeaceBottomSheetParams() var onPeaceBottomSheetShowListener: OnPeaceBottomSheetShowListener? = null - var onPeaceBottomSheetDismissListener: OnPeaceBottomSheetDismissListener? = null + var onDismissListener: OnPeaceBottomSheetDismissListener? = null private var dialogLayout: LinearLayout? = null @@ -167,23 +167,23 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { } protected open fun setupContentView(dialogLayout: LinearLayout, params: PeaceBottomSheetParams) { - if (params.mContentView == null) { - if (params.mContentViewResId != 0) { - params.mContentView = LayoutInflater.from(context).inflate( - params.mContentViewResId, + if (params.contentView == null) { + if (params.contentViewResId != 0) { + params.contentView = LayoutInflater.from(context).inflate( + params.contentViewResId, dialogLayout, false ) } } - if (params.mContentView != null) { - params.mContentView.removeView() - dialogLayout.addView(params.mContentView) + if (params.contentView != null) { + params.contentView.removeView() + dialogLayout.addView(params.contentView) } - if (!params.headerShown && params.mContentView != null) { - val closeBtn: View? = params.mContentView!!.findViewById(R.id.close) + if (!params.headerShown && params.contentView != null) { + val closeBtn: View? = params.contentView!!.findViewById(R.id.close) closeBtn?.setOnClickListener { dismiss() } } } @@ -332,13 +332,13 @@ open class PeaceBottomSheet : BottomSheetDialogFragment() { params.cancellable = cancelable } - fun getDialogLayout(): LinearLayout? { - return dialogLayout + fun getDialogLayout(): LinearLayout { + return dialogLayout!! } override fun onDismiss(dialog: DialogInterface) { super.onDismiss(dialog) - if (onPeaceBottomSheetDismissListener != null) onPeaceBottomSheetDismissListener!!.onDismissed() + if (onDismissListener != null) onDismissListener!!.onDismissed() } fun isShowing() = isAdded diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt index 8414dd01..193d7d7e 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetMenu.kt @@ -4,15 +4,15 @@ import android.content.Context import android.os.Bundle import android.view.View import android.widget.LinearLayout -import com.peacedesign.android.widget.list.base.BaseListAdapter -import com.peacedesign.android.widget.list.base.BaseListItem -import com.peacedesign.android.widget.list.simple.SimpleListView -import com.peacedesign.android.widget.list.singleChoice.SingleChoiceListAdapter -import com.peacedesign.android.widget.list.singleChoice.SingleChoiceListView +import com.quranapp.android.widgets.list.base.BaseListAdapter +import com.quranapp.android.widgets.list.base.BaseListItem +import com.quranapp.android.widgets.list.base.BaseListView +import com.quranapp.android.widgets.list.singleChoice.SingleChoiceListAdapter +import com.quranapp.android.widgets.list.singleChoice.SingleChoiceListView open class PeaceBottomSheetMenu : PeaceBottomSheet() { var onItemClickListener: OnItemClickListener? = null - var adapter: BaseListAdapter? = null + var adapter: BaseListAdapter? = null override fun onCreate(savedInstanceState: Bundle?) { @@ -34,18 +34,20 @@ open class PeaceBottomSheetMenu : PeaceBottomSheet() { dialogLayout.addView(createAdapterView(dialogLayout.context, adapter!!)) } - protected open fun createAdapterView(context: Context, listAdapter: BaseListAdapter): View { + protected open fun createAdapterView(context: Context, listAdapter: BaseListAdapter): View { val listView = if (listAdapter is SingleChoiceListAdapter) { SingleChoiceListView(context) } else { - SimpleListView(context) + BaseListView(context) } - listView.setOnItemClickListener { item -> - onItemClickListener?.onItemClick(this, item) - } + listView.setOnItemClickListener(object : BaseListView.OnItemClickListener { + override fun onItemClick(item: BaseListItem) { + onItemClickListener?.onItemClick(this@PeaceBottomSheetMenu, item) + } + }) - listView.post { listView.adapter = adapter } + listView.post { listView.setAdapter(adapter) } return listView } diff --git a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt index 70a45583..e6cafea3 100644 --- a/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt +++ b/app/src/main/java/com/quranapp/android/widgets/bottomSheet/PeaceBottomSheetParams.kt @@ -38,10 +38,10 @@ class PeaceBottomSheetParams : Serializable { var headerTitleResource = 0 @Transient - var mContentView: View? = null + var contentView: View? = null @LayoutRes - var mContentViewResId = 0 + var contentViewResId = 0 fun supportsNoAnimation(): Boolean { diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java b/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java index ebcc1d0d..892fd1a0 100644 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java +++ b/peacedesign/src/main/java/com/peacedesign/android/widget/dialog/base/PeaceDialogParams.java @@ -1,11 +1,5 @@ package com.peacedesign.android.widget.dialog.base; -import static android.content.DialogInterface.BUTTON_NEGATIVE; -import static android.content.DialogInterface.BUTTON_NEUTRAL; -import static android.content.DialogInterface.BUTTON_POSITIVE; -import static android.content.DialogInterface.OnDismissListener; -import static android.content.DialogInterface.OnKeyListener; - import android.annotation.SuppressLint; import android.content.Context; import android.content.DialogInterface.OnCancelListener; @@ -13,14 +7,15 @@ import android.content.DialogInterface.OnShowListener; import android.view.View; import android.view.ViewGroup; - import androidx.annotation.ColorInt; import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; - -import com.peacedesign.android.widget.list.base.BaseListAdapter; -import com.peacedesign.android.widget.list.base.BaseListItem; +import static android.content.DialogInterface.BUTTON_NEGATIVE; +import static android.content.DialogInterface.BUTTON_NEUTRAL; +import static android.content.DialogInterface.BUTTON_POSITIVE; +import static android.content.DialogInterface.OnDismissListener; +import static android.content.DialogInterface.OnKeyListener; class PeaceDialogParams { @SuppressLint("UnknownNullness") diff --git a/peacedesign/src/main/java/com/peacedesign/android/widget/sheet/PeaceBottomSheet.java b/peacedesign/src/main/java/com/peacedesign/android/widget/sheet/PeaceBottomSheet.java deleted file mode 100644 index adcf272f..00000000 --- a/peacedesign/src/main/java/com/peacedesign/android/widget/sheet/PeaceBottomSheet.java +++ /dev/null @@ -1,488 +0,0 @@ -package com.peacedesign.android.widget.sheet; - -import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; -import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; - -import android.annotation.SuppressLint; -import android.app.Dialog; -import android.content.Context; -import android.content.DialogInterface; -import android.graphics.drawable.Drawable; -import android.os.Bundle; -import android.text.TextUtils; -import android.view.ContextThemeWrapper; -import android.view.Gravity; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.inputmethod.InputMethodManager; -import android.widget.LinearLayout; -import android.widget.LinearLayout.LayoutParams; - -import androidx.annotation.FloatRange; -import androidx.annotation.LayoutRes; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.annotation.StringRes; -import androidx.appcompat.widget.AppCompatImageView; -import androidx.appcompat.widget.AppCompatTextView; -import androidx.core.content.ContextCompat; -import androidx.fragment.app.DialogFragment; -import androidx.fragment.app.FragmentManager; - -import com.google.android.material.bottomsheet.BottomSheetBehavior; -import com.google.android.material.bottomsheet.BottomSheetBehavior.State; -import com.google.android.material.bottomsheet.BottomSheetDialog; -import com.google.android.material.bottomsheet.BottomSheetDialogFragment; -import com.peacedesign.R; -import com.peacedesign.android.utils.Dimen; -import com.peacedesign.android.utils.DrawableUtils; -import com.peacedesign.android.utils.ResUtils; -import com.peacedesign.android.utils.ViewUtils; -import com.peacedesign.android.utils.WindowUtils; - -import java.io.Serializable; - -public class PeaceBottomSheet extends BottomSheetDialogFragment { - private PeaceBottomSheetParams P; - private OnPeaceBottomSheetShowListener mOnPeaceBottomSheetShowListener; - private OnPeaceBottomSheetDismissListener mOnPeaceBottomSheetDismissListener; - private LinearLayout mDialogLayout; - - public PeaceBottomSheet() { - P = new PeaceBottomSheetParams(); - } - - @Override - public void onSaveInstanceState(@NonNull Bundle outState) { - super.onSaveInstanceState(outState); - outState.putSerializable("params", P); - } - - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - setStyle(DialogFragment.STYLE_NORMAL, R.style.PeaceBottomSheetTheme); - if (savedInstanceState != null) { - P = (PeaceBottomSheetParams) savedInstanceState.getSerializable("params"); - } - - super.onCreate(savedInstanceState); - if (P.sheetBGColor == -1) { - P.sheetBGColor = ContextCompat.getColor(getContext(), R.color.colorBackgroundSheetDialog); - } - } - - @NonNull - @Override - public PeaceBottomSheetDialog onCreateDialog(@Nullable Bundle savedInstanceState) { - return new PeaceBottomSheetDialog(getContext(), getTheme(), P); - } - - protected View prepareDialogLayout(Context context, PeaceBottomSheetParams params) { - mDialogLayout = new LinearLayout(context); - mDialogLayout.setOrientation(LinearLayout.VERTICAL); - - setupHeader(mDialogLayout, params); - setupContentView(mDialogLayout, params); - - return mDialogLayout; - } - - private void resolveTitle() { - if (P.headerTitle == null) { - P.headerTitle = getContext().getString(P.headerTitleResource); - } - } - - protected void setupHeader(ViewGroup dialogLayout, PeaceBottomSheetParams params) { - if (!P.headerShown) { - return; - } - - resolveTitle(); - final boolean hasTitle = !TextUtils.isEmpty(params.headerTitle); - if (!hasTitle && params.disableDragging) { - return; - } - - LinearLayout headerView = createHeaderView(dialogLayout); - - prepareDragIcon(headerView, params); - prepareTitleView(headerView, params, false); - - if (hasTitle) { - headerView.setBackground(getHeaderBG(dialogLayout.getContext())); - } - } - - private Drawable getHeaderBG(Context context) { - return ContextCompat.getDrawable(context, R.drawable.dr_bg_sheet_dialog_header); - } - - protected void prepareDragIcon(LinearLayout container, PeaceBottomSheetParams params) { - if (params.disableDragging) { - return; - } - - AppCompatImageView dragIcon = new AppCompatImageView(container.getContext()); - dragIcon.setId(R.id.dragIcon); - dragIcon.setImageResource(R.drawable.dr_icon_drag); - - LayoutParams lp = new LayoutParams(WRAP_CONTENT, WRAP_CONTENT); - lp.topMargin = Dimen.dp2px(container.getContext(), 10); - container.addView(dragIcon, 0, lp); - } - - protected void prepareTitleView(@NonNull LinearLayout container, PeaceBottomSheetParams params, boolean isUpdating) { - boolean hasTitle = !TextUtils.isEmpty(params.headerTitle); - if (!isUpdating && !hasTitle) { - return; - } - - AppCompatTextView titleView = container.findViewById(R.id.title); - if (hasTitle && titleView == null) { - titleView = new AppCompatTextView(new ContextThemeWrapper(container.getContext(), resolveTitleThemeId())); - titleView.setId(R.id.title); - container.addView(titleView); - } - - if (titleView != null) { - titleView.setText(params.headerTitle); - titleView.setVisibility(hasTitle ? View.VISIBLE : View.GONE); - } - } - - public void updateHeaderTitle() { - if (mDialogLayout == null) { - return; - } - - resolveTitle(); - final boolean hasTitle = !TextUtils.isEmpty(P.headerTitle); - - LinearLayout headerView = mDialogLayout.findViewById(R.id.peaceBottomSheetHeaderView); - if (hasTitle && headerView == null) { - headerView = createHeaderView(mDialogLayout); - } - - if (headerView != null) { - prepareTitleView(headerView, P, true); - headerView.setBackground(hasTitle ? getHeaderBG(mDialogLayout.getContext()) : null); - } - } - - private LinearLayout createHeaderView(ViewGroup dialogLayout) { - LinearLayout headerView = new LinearLayout(dialogLayout.getContext()); - headerView.setId(R.id.peaceBottomSheetHeaderView); - headerView.setOrientation(LinearLayout.VERTICAL); - headerView.setGravity(Gravity.CENTER); - dialogLayout.addView(headerView, 0); - return headerView; - } - - protected int resolveTitleThemeId() { - return R.style.PeaceBottomSheetTitleStyle; - } - - protected void setupContentView(@NonNull LinearLayout dialogLayout, PeaceBottomSheetParams params) { - if (params.mContentView == null) { - if (params.mContentViewResId != 0) { - params.mContentView = LayoutInflater.from(getContext()).inflate(params.mContentViewResId, dialogLayout, false); - } - } - - if (params.mContentView != null) { - ViewUtils.removeView(params.mContentView); - dialogLayout.addView(params.mContentView); - } - - if (!params.headerShown && params.mContentView != null) { - View closeBtn = params.mContentView.findViewById(R.id.close); - if (closeBtn != null) { - closeBtn.setOnClickListener(v -> dismiss()); - } - } - } - - @SuppressLint("RestrictedApi") - @Override - public void setupDialog(@NonNull Dialog dialog, int style) { - super.setupDialog(dialog, style); - setupDialogInternal(dialog, style, P); - } - - protected void setupDialogInternal(Dialog dialog, int style, PeaceBottomSheetParams params) { - View dialogLayout = prepareDialogLayout(getContext(), params); - dialog.setContentView(dialogLayout); - - setupDialogStyles(dialog, dialogLayout, params); - } - - protected void setupDialogStyles(Dialog dialog, View dialogLayout, PeaceBottomSheetParams P) { - Window window = dialog.getWindow(); - window.getDecorView().setClipToOutline(true); - - dialogLayout.setClipToOutline(true); - ((ViewGroup) dialogLayout).setClipChildren(true); - - ViewGroup dialogModal = (ViewGroup) dialogLayout.getParent(); - dialogModal.setClipToOutline(true); - dialogModal.setClipChildren(true); - - setupFullHeight(dialogModal); - if (!P.supportsRoundedCorners) { - setupModalBackground(dialogModal, false); - } - - BottomSheetBehavior bottomSheetBehavior = BottomSheetBehavior.from(dialogModal); - bottomSheetBehavior.setHideable(P.cancellable && !P.hideOnSwipe); - bottomSheetBehavior.setDraggable(P.cancellable && !P.disableDragging); - bottomSheetBehavior.setState(P.initialBehaviorState); - if (WindowUtils.isLandscapeMode(getContext())) { - bottomSheetBehavior.setSkipCollapsed(true); - } - bottomSheetBehavior.addBottomSheetCallback(new BottomSheetBehavior.BottomSheetCallback() { - @Override - public void onStateChanged(@NonNull View bottomSheet, int newState) { - setupDialogOnStateChange(dialog, dialogModal, newState); - - View focus = dialog.getCurrentFocus(); - if (focus != null) { - InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE); - imm.hideSoftInputFromWindow(focus.getWindowToken(), 0); - } - } - - @Override - public void onSlide(@NonNull View bottomSheet, float slideOffset) { - /*if (slideOffset <= 0) { - float mult = 1 + slideOffset; - window.setDimAmount(P.windowDimAmount * mult); - }*/ - } - }); - - dialog.setOnKeyListener((dialogInterface, keyCode, event) -> onKey((BottomSheetDialog) dialogInterface, keyCode, event)); - dialog.setOnShowListener(dialogInterface -> { - if (mOnPeaceBottomSheetShowListener != null) mOnPeaceBottomSheetShowListener.onShow(); - setupDialogOnStateChange(dialog, dialogModal, P.initialBehaviorState); - }); - - dialogModal.addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> { - setupDialogOnStateChange(dialog, dialogModal, bottomSheetBehavior.getState()); - }); - } - - protected boolean onKey(@NonNull BottomSheetDialog dialog, int keyCode, @NonNull KeyEvent event) { - return false; - } - - private void setupFullHeight(View modal) { - if (P.fullHeight) { - ViewGroup.LayoutParams params = modal.getLayoutParams(); - params.height = MATCH_PARENT; - modal.setLayoutParams(params); - } - } - - private void setupModalBackground(View modal, boolean isOnFullHeight) { - float[] radii = null; - - if (P.supportsRoundedCorners) { - boolean cornerFlag = P.resetRoundedCornersOnFullHeight && isOnFullHeight; - if (!cornerFlag) { - radii = Dimen.createRadiiForBGInDP(getContext(), 15, 15, 0, 0); - } - } - - Drawable background = DrawableUtils.createBackground(P.sheetBGColor, radii); - modal.setBackground(background); - } - - private void setupDialogOnStateChange(Dialog dialog, View dialogModal, int newState) { - boolean isExpanded = newState == BottomSheetBehavior.STATE_EXPANDED; - boolean isHeightFilled = dialogModal.getHeight() >= (Dimen.getWindowHeight(getContext()) - 10); - boolean isOnFullHeight = isExpanded && isHeightFilled; - - setupModalBackground(dialogModal, isOnFullHeight); - - if (!P.resetRoundedCornersOnFullHeight) { - return; - } - - Window window = dialog.getWindow(); - window.setDimAmount(isOnFullHeight ? 0 : P.windowDimAmount); - window.setStatusBarColor(isOnFullHeight ? P.sheetBGColor : 0); - - if (!WindowUtils.isNightMode(getContext())) { - if (isOnFullHeight) { - WindowUtils.setLightStatusBar(window); - } else { - WindowUtils.clearLightStatusBar(window); - } - } - } - - public final void show(@NonNull FragmentManager fragmentManager) { - show(fragmentManager, getClass().getSimpleName()); - } - - public void setContentView(@NonNull View contentView) { - P.mContentView = contentView; - } - - public void setContentView(@LayoutRes int layoutId) { - P.mContentViewResId = layoutId; - } - - public void setHeaderTitle(CharSequence title) { - P.headerTitle = title; - } - - public void setHeaderTitle(@StringRes int titleRes) { - P.headerTitleResource = titleRes; - } - - @Override - public void setCancelable(boolean cancelable) { - super.setCancelable(cancelable); - P.cancellable = cancelable; - } - - public void disableDragging(boolean flag) { - P.disableDragging = flag; - } - - public void setHideOnSwipe(boolean flag) { - P.hideOnSwipe = flag; - } - - public void disableOutsideTouch(boolean flag) { - P.disableOutsideTouch = flag; - } - - public void disableBackKey(boolean flag) { - P.disableBackKey = flag; - } - - public void setInitialBehaviorState(@State int state) { - P.initialBehaviorState = state; - } - - public void setFullHeight(boolean flag) { - P.fullHeight = flag; - } - - public void setHeaderShown(boolean shown) { - P.headerShown = shown; - } - - @NonNull - public PeaceBottomSheetParams getDialogParams() { - return P; - } - - public void applyParams(@NonNull PeaceBottomSheetParams params) { - P = params; - } - - public void setOnShowListener(@NonNull OnPeaceBottomSheetShowListener listener) { - mOnPeaceBottomSheetShowListener = listener; - } - - public void setOnDismissListener(@NonNull OnPeaceBottomSheetDismissListener listener) { - mOnPeaceBottomSheetDismissListener = listener; - } - - public LinearLayout getDialogLayout() { - return mDialogLayout; - } - - @NonNull - @Override - public Context getContext() { - //noinspection ConstantConditions - return super.getContext(); - } - - public int getSheetBGColor() { - return P.sheetBGColor; - } - - @Override - public void onDismiss(@NonNull DialogInterface dialog) { - super.onDismiss(dialog); - if (mOnPeaceBottomSheetDismissListener != null) mOnPeaceBottomSheetDismissListener.onDismissed(); - } - - public boolean isShowing() { - return isAdded(); - } - - @Override - public void dismiss() { - try { - super.dismiss(); - } catch (Exception ignored) {} - } - - public interface OnPeaceBottomSheetShowListener { - void onShow(); - } - - public interface OnPeaceBottomSheetDismissListener { - void onDismissed(); - } - - public static class PeaceBottomSheetParams implements Serializable { - public boolean disableDragging; - public boolean hideOnSwipe; - public boolean disableOutsideTouch; - public boolean cancellable = true; - public boolean disableBackKey; - public boolean supportsRoundedCorners = true; - public boolean resetRoundedCornersOnFullHeight = true; - public boolean supportsOverlayBackground = true; - public boolean supportsAnimations = true; - public boolean supportsEnterAnimation = true; - public boolean supportsExitAnimation = true; - public boolean fullHeight; - public boolean headerShown = true; - public int sheetBGColor = -1; - @FloatRange(from = 0f, to = 1f) - public float windowDimAmount = 0.6f; - @State - public int initialBehaviorState = BottomSheetBehavior.STATE_EXPANDED; - @Nullable - public CharSequence headerTitle; - @StringRes - public int headerTitleResource; - @Nullable - protected transient View mContentView; - @LayoutRes - protected int mContentViewResId; - - public boolean supportsNoAnimation() { - return !supportsAnimations || (!supportsEnterAnimation && !supportsExitAnimation); - } - - public boolean supportsEnterAnimationOnly() { - return supportsAnimations && supportsEnterAnimation && !supportsExitAnimation; - } - - public boolean supportsExitAnimationOnly() { - return supportsAnimations && !supportsEnterAnimation && supportsExitAnimation; - } - - - public void setContentView(@LayoutRes int viewResId) { - mContentViewResId = viewResId; - } - - public void setContentView(@NonNull View contentView) { - mContentView = contentView; - } - } -}