From b851c0881a88832905e7dfe91a865149f6b33cae Mon Sep 17 00:00:00 2001 From: merkost Date: Tue, 11 Jul 2023 10:33:42 +1000 Subject: [PATCH 01/31] Added viewType setting --- .../kotlin/com/simplemobiletools/dialer/helpers/Config.kt | 6 ++++++ .../com/simplemobiletools/dialer/helpers/Constants.kt | 2 ++ 2 files changed, 8 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt index 2695a2c5..f413e4e0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt @@ -6,6 +6,7 @@ import android.telecom.PhoneAccountHandle import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.helpers.BaseConfig +import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST import com.simplemobiletools.dialer.extensions.getPhoneAccountHandleModel import com.simplemobiletools.dialer.extensions.putPhoneAccountHandle import com.simplemobiletools.dialer.models.SpeedDial @@ -89,4 +90,9 @@ class Config(context: Context) : BaseConfig(context) { var alwaysShowFullscreen: Boolean get() = prefs.getBoolean(ALWAYS_SHOW_FULLSCREEN, false) set(alwaysShowFullscreen) = prefs.edit().putBoolean(ALWAYS_SHOW_FULLSCREEN, alwaysShowFullscreen).apply() + + var viewType: Int + get() = prefs.getInt(VIEW_TYPE, VIEW_TYPE_LIST) + set(viewTypeFiles) = prefs.edit().putInt(VIEW_TYPE, viewTypeFiles).apply() + } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt index b1ac3e48..8b033c2b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt @@ -19,6 +19,8 @@ const val DIALPAD_VIBRATION = "dialpad_vibration" const val DIALPAD_BEEPS = "dialpad_beeps" const val HIDE_DIALPAD_NUMBERS = "hide_dialpad_numbers" const val ALWAYS_SHOW_FULLSCREEN = "always_show_fullscreen" +const val VIEW_TYPE = "view_type" + const val ALL_TABS_MASK = TAB_CONTACTS or TAB_FAVORITES or TAB_CALL_HISTORY val tabsList = arrayListOf(TAB_CONTACTS, TAB_FAVORITES, TAB_CALL_HISTORY) From 267e5c35f0d005a67b2c8e3539dfb355418990ab Mon Sep 17 00:00:00 2001 From: merkost Date: Tue, 11 Jul 2023 10:39:07 +1000 Subject: [PATCH 02/31] Added ChangeViewTypeDialog --- .../dialer/dialogs/ChangeViewTypeDialog.kt | 45 +++++++++++++++++++ .../res/layout/dialog_change_view_type.xml | 41 +++++++++++++++++ 2 files changed, 86 insertions(+) create mode 100644 app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt create mode 100644 app/src/main/res/layout/dialog_change_view_type.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt new file mode 100644 index 00000000..84210908 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt @@ -0,0 +1,45 @@ +package com.simplemobiletools.dialer.dialogs + +import android.view.View +import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.extensions.getAlertDialogBuilder +import com.simplemobiletools.commons.extensions.setupDialogStuff +import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID +import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST +import com.simplemobiletools.dialer.R +import com.simplemobiletools.dialer.extensions.config +import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio +import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio_grid +import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio_list + +class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val path: String = "", showFolderCheck: Boolean = true, val callback: () -> Unit) { + private var view: View + private var config = activity.config + + init { + view = activity.layoutInflater.inflate(R.layout.dialog_change_view_type, null).apply { + val viewToCheck = when (config.viewType) { + VIEW_TYPE_GRID -> change_view_type_dialog_radio_grid.id + else -> change_view_type_dialog_radio_list.id + } + change_view_type_dialog_radio.check(viewToCheck) + } + + activity.getAlertDialogBuilder() + .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } + .setNegativeButton(R.string.cancel, null) + .apply { + activity.setupDialogStuff(view, this) + } + } + + private fun dialogConfirmed() { + val viewType = if (view.change_view_type_dialog_radio_grid.isChecked) { + VIEW_TYPE_GRID + } else { + VIEW_TYPE_LIST + } + config.viewType = viewType + callback() + } +} diff --git a/app/src/main/res/layout/dialog_change_view_type.xml b/app/src/main/res/layout/dialog_change_view_type.xml new file mode 100644 index 00000000..e44f151b --- /dev/null +++ b/app/src/main/res/layout/dialog_change_view_type.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + From 7eafb4aaad9bad32d01730ce822d0d41a747617d Mon Sep 17 00:00:00 2001 From: merkost Date: Tue, 11 Jul 2023 10:48:03 +1000 Subject: [PATCH 03/31] Added change_view_type option in menu --- .../simplemobiletools/dialer/activities/MainActivity.kt | 9 +++++++++ app/src/main/res/menu/menu.xml | 5 +++++ 2 files changed, 14 insertions(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 43d85fcd..2057d64f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -26,6 +26,7 @@ import com.simplemobiletools.dialer.BuildConfig import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.adapters.ViewPagerAdapter import com.simplemobiletools.dialer.dialogs.ChangeSortingDialog +import com.simplemobiletools.dialer.dialogs.ChangeViewTypeDialog import com.simplemobiletools.dialer.dialogs.FilterContactSourcesDialog import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.launchCreateNewContactIntent @@ -169,6 +170,7 @@ class MainActivity : SimpleActivity() { findItem(R.id.clear_call_history).isVisible = currentFragment == recents_fragment findItem(R.id.sort).isVisible = currentFragment != recents_fragment findItem(R.id.create_new_contact).isVisible = currentFragment == contacts_fragment + findItem(R.id.change_view_type).isVisible = currentFragment == favorites_fragment findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(R.bool.hide_google_relations) } } @@ -196,6 +198,7 @@ class MainActivity : SimpleActivity() { R.id.filter -> showFilterDialog() R.id.more_apps_from_us -> launchMoreAppsFromUsIntent() R.id.settings -> launchSettings() + R.id.change_view_type -> changeViewType() R.id.about -> launchAbout() else -> return@setOnMenuItemClickListener false } @@ -203,6 +206,12 @@ class MainActivity : SimpleActivity() { } } + private fun changeViewType() { + ChangeViewTypeDialog(this) { + + } + } + private fun updateMenuColors() { updateStatusbarColor(getProperBackgroundColor()) main_menu.updateColors() diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 4bebb31e..2c4d7b07 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -34,6 +34,11 @@ android:icon="@drawable/ic_info_vector" android:title="@string/about" app:showAsAction="ifRoom" /> + Date: Tue, 11 Jul 2023 11:50:32 +1000 Subject: [PATCH 04/31] Created new grid contact view --- app/src/main/res/layout/item_contact_grid.xml | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 app/src/main/res/layout/item_contact_grid.xml diff --git a/app/src/main/res/layout/item_contact_grid.xml b/app/src/main/res/layout/item_contact_grid.xml new file mode 100644 index 00000000..8997d6bd --- /dev/null +++ b/app/src/main/res/layout/item_contact_grid.xml @@ -0,0 +1,57 @@ + + + + + + + + + + From 0c0503d24f64f32134962cbc238eed6db31fc0d2 Mon Sep 17 00:00:00 2001 From: merkost Date: Tue, 11 Jul 2023 11:52:07 +1000 Subject: [PATCH 05/31] Created updateListAdapter fun for changing viewType --- .../dialer/activities/MainActivity.kt | 2 +- .../dialer/fragments/FavoritesFragment.kt | 91 +++++++++++-------- 2 files changed, 53 insertions(+), 40 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 2057d64f..9a10fe70 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -208,7 +208,7 @@ class MainActivity : SimpleActivity() { private fun changeViewType() { ChangeViewTypeDialog(this) { - + favorites_fragment.updateListAdapter() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt index 9c2d253d..8f2ff56e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt @@ -7,11 +7,10 @@ import com.reddit.indicatorfastscroll.FastScrollItemIndicator import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.CallConfirmationDialog import com.simplemobiletools.commons.extensions.* -import com.simplemobiletools.commons.helpers.ContactsHelper -import com.simplemobiletools.commons.helpers.MyContactsContentProvider -import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS -import com.simplemobiletools.commons.helpers.SMT_PRIVATE +import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.models.contacts.Contact +import com.simplemobiletools.commons.views.MyGridLayoutManager +import com.simplemobiletools.commons.views.MyLinearLayoutManager import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.activities.SimpleActivity import com.simplemobiletools.dialer.adapters.ContactsAdapter @@ -84,46 +83,49 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa fragment_placeholder.beGone() fragment_list.beVisible() - val currAdapter = fragment_list.adapter - if (currAdapter == null) { - ContactsAdapter( - activity = activity as SimpleActivity, - contacts = contacts, - recyclerView = fragment_list, - refreshItemsListener = this, - showDeleteButton = false, - enableDrag = true, - ) { - if (context.config.showCallConfirmation) { - CallConfirmationDialog(activity as SimpleActivity, (it as Contact).getNameToDisplay()) { - activity?.apply { - initiateCall(it) { launchCallIntent(it) } - } - } - } else { - activity?.apply { - initiateCall(it as Contact) { launchCallIntent(it) } - } - } - }.apply { - fragment_list.adapter = this + updateListAdapter() + } + } - onDragEndListener = { - val adapter = fragment_list?.adapter - if (adapter is ContactsAdapter) { - val items = adapter.contacts - saveCustomOrderToPrefs(items) - setupLetterFastScroller(items) - } - } - } + fun updateListAdapter() { + val viewType = context.config.viewType + setViewType(viewType) - if (context.areSystemAnimationsEnabled) { - fragment_list.scheduleLayoutAnimation() + ContactsAdapter( + activity = activity as SimpleActivity, + contacts = allContacts, + recyclerView = fragment_list, + refreshItemsListener = this, + viewType = viewType, + showDeleteButton = false, + enableDrag = true, + ) { + if (context.config.showCallConfirmation) { + CallConfirmationDialog(activity as SimpleActivity, (it as Contact).getNameToDisplay()) { + activity?.apply { + initiateCall(it) { launchCallIntent(it) } + } } } else { - (currAdapter as ContactsAdapter).updateItems(contacts) + activity?.apply { + initiateCall(it as Contact) { launchCallIntent(it) } + } } + }.apply { + fragment_list.adapter = this + + onDragEndListener = { + val adapter = fragment_list?.adapter + if (adapter is ContactsAdapter) { + val items = adapter.contacts + saveCustomOrderToPrefs(items) + setupLetterFastScroller(items) + } + } + } + + if (context.areSystemAnimationsEnabled) { + fragment_list.scheduleLayoutAnimation() } } @@ -178,4 +180,15 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa (fragment_list.adapter as? ContactsAdapter)?.updateItems(contacts, text) setupLetterFastScroller(contacts) } + + private fun setViewType(viewType: Int) { + val layoutManager = if (viewType == VIEW_TYPE_GRID) { + letter_fastscroller.beGone() + MyGridLayoutManager(context, 3) + } else { + letter_fastscroller.beVisible() + MyLinearLayoutManager(context) + } + fragment_list.layoutManager = layoutManager + } } From dbc78642b16ba4ae120b3a83d6541a5601079451 Mon Sep 17 00:00:00 2001 From: merkost Date: Tue, 11 Jul 2023 11:52:46 +1000 Subject: [PATCH 06/31] Adapter improving for grid view and refactoring --- .../dialer/activities/DialpadActivity.kt | 17 ++++-- .../dialer/adapters/ContactsAdapter.kt | 22 ++++--- .../dialer/fragments/ContactsFragment.kt | 60 ++++++++++--------- 3 files changed, 60 insertions(+), 39 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialpadActivity.kt index 3ec61fe3..3ee302ae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/DialpadActivity.kt @@ -263,7 +263,7 @@ class DialpadActivity : SimpleActivity() { if (hasRussianLocale) { var currConvertedName = "" - convertedName.toLowerCase().forEach { char -> + convertedName.lowercase(Locale.getDefault()).forEach { char -> val convertedChar = russianCharsMap.getOrElse(char) { char } currConvertedName += convertedChar } @@ -279,13 +279,18 @@ class DialpadActivity : SimpleActivity() { try { val name = filtered[position].getNameToDisplay() val character = if (name.isNotEmpty()) name.substring(0, 1) else "" - FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault())) + FastScrollItemIndicator.Text(character.uppercase(Locale.getDefault())) } catch (e: Exception) { FastScrollItemIndicator.Text("") } }) - ContactsAdapter(this, filtered, dialpad_list, null, text) { + ContactsAdapter( + activity = this, + contacts = filtered, + recyclerView = dialpad_list, + highlightText = text + ) { val contact = it as Contact if (config.showCallConfirmation) { CallConfirmationDialog(this@DialpadActivity, contact.getNameToDisplay()) { @@ -316,7 +321,7 @@ class DialpadActivity : SimpleActivity() { CallConfirmationDialog(this, number) { callContactWithSim(number, handleIndex == 0) } - }else{ + } else { callContactWithSim(number, handleIndex == 0) } } else { @@ -324,7 +329,7 @@ class DialpadActivity : SimpleActivity() { CallConfirmationDialog(this, number) { startCallIntent(number) } - }else{ + } else { startCallIntent(number) } } @@ -406,12 +411,14 @@ class DialpadActivity : SimpleActivity() { }, longPressTimeout) } } + MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL -> { stopDialpadTone(char) if (longClickable) { longPressHandler.removeCallbacksAndMessages(null) } } + MotionEvent.ACTION_MOVE -> { val viewContainsTouchEvent = if (event.rawX.isNaN() || event.rawY.isNaN()) { false diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt index db8c0c47..90e8b509 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -21,10 +21,7 @@ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.FeatureLockedDialog import com.simplemobiletools.commons.extensions.* -import com.simplemobiletools.commons.helpers.PERMISSION_CALL_PHONE -import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS -import com.simplemobiletools.commons.helpers.SimpleContactsHelper -import com.simplemobiletools.commons.helpers.isOreoPlus +import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.interfaces.ItemMoveCallback import com.simplemobiletools.commons.interfaces.ItemTouchHelperContract import com.simplemobiletools.commons.interfaces.StartReorderDragListener @@ -43,9 +40,10 @@ class ContactsAdapter( activity: SimpleActivity, var contacts: MutableList, recyclerView: MyRecyclerView, - val refreshItemsListener: RefreshItemsListener? = null, highlightText: String = "", - val showDeleteButton: Boolean = true, + private val refreshItemsListener: RefreshItemsListener? = null, + private val viewType: Int = VIEW_TYPE_LIST, + private val showDeleteButton: Boolean = true, private val enableDrag: Boolean = false, itemClick: (Any) -> Unit ) : MyRecyclerViewAdapter(activity, recyclerView, itemClick), ItemTouchHelperContract { @@ -123,7 +121,17 @@ class ContactsAdapter( notifyDataSetChanged() } - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_contact_without_number, parent) + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + val layout = when (viewType) { + VIEW_TYPE_GRID -> R.layout.item_contact_grid + else -> R.layout.item_contact_without_number + } + return createViewHolder(layout, parent) + } + + override fun getItemViewType(position: Int): Int { + return viewType + } override fun onBindViewHolder(holder: ViewHolder, position: Int) { val contact = contacts[position] diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt index ffbd619a..de4d3bb3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt @@ -15,7 +15,7 @@ import com.simplemobiletools.dialer.extensions.launchCreateNewContactIntent import com.simplemobiletools.dialer.extensions.startContactDetailsIntent import com.simplemobiletools.dialer.interfaces.RefreshItemsListener import kotlinx.android.synthetic.main.fragment_letters_layout.view.* -import java.util.* +import java.util.Locale class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet), RefreshItemsListener { private var allContacts = ArrayList() @@ -82,7 +82,7 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag } private fun gotContacts(contacts: ArrayList) { - setupLetterFastscroller(contacts) + setupLetterFastScroller(contacts) if (contacts.isEmpty()) { fragment_placeholder.beVisible() fragment_placeholder_2.beVisible() @@ -94,7 +94,12 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag val currAdapter = fragment_list.adapter if (currAdapter == null) { - ContactsAdapter(activity as SimpleActivity, contacts, fragment_list, this) { + ContactsAdapter( + activity = activity as SimpleActivity, + contacts = contacts, + recyclerView = fragment_list, + refreshItemsListener = this + ) { val contact = it as Contact activity?.startContactDetailsIntent(contact) }.apply { @@ -110,12 +115,12 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag } } - private fun setupLetterFastscroller(contacts: ArrayList) { + private fun setupLetterFastScroller(contacts: ArrayList) { letter_fastscroller.setupWithRecyclerView(fragment_list, { position -> try { val name = contacts[position].getNameToDisplay() val character = if (name.isNotEmpty()) name.substring(0, 1) else "" - FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault()).normalizeString()) + FastScrollItemIndicator.Text(character.uppercase(Locale.getDefault()).normalizeString()) } catch (e: Exception) { FastScrollItemIndicator.Text("") } @@ -125,35 +130,36 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag override fun onSearchClosed() { fragment_placeholder.beVisibleIf(allContacts.isEmpty()) (fragment_list.adapter as? ContactsAdapter)?.updateItems(allContacts) - setupLetterFastscroller(allContacts) + setupLetterFastScroller(allContacts) } override fun onSearchQueryChanged(text: String) { - val shouldNormalize = text.normalizeString() == text - val filtered = allContacts.filter { - getProperText(it.getNameToDisplay(), shouldNormalize).contains(text, true) || - getProperText(it.nickname, shouldNormalize).contains(text, true) || - it.phoneNumbers.any { - text.normalizePhoneNumber().isNotEmpty() && it.normalizedNumber.contains(text.normalizePhoneNumber(), true) - } || - it.emails.any { it.value.contains(text, true) } || - it.addresses.any { getProperText(it.value, shouldNormalize).contains(text, true) } || - it.IMs.any { it.value.contains(text, true) } || - getProperText(it.notes, shouldNormalize).contains(text, true) || - getProperText(it.organization.company, shouldNormalize).contains(text, true) || - getProperText(it.organization.jobPosition, shouldNormalize).contains(text, true) || - it.websites.any { it.contains(text, true) } - } as ArrayList + val shouldNormalize = text.normalizeString() == text + val filtered = allContacts.filter { + getProperText(it.getNameToDisplay(), shouldNormalize).contains(text, true) || + getProperText(it.nickname, shouldNormalize).contains(text, true) || + it.phoneNumbers.any { + text.normalizePhoneNumber().isNotEmpty() && it.normalizedNumber.contains(text.normalizePhoneNumber(), true) + } || + it.emails.any { it.value.contains(text, true) } || + it.addresses.any { getProperText(it.value, shouldNormalize).contains(text, true) } || + it.IMs.any { it.value.contains(text, true) } || + getProperText(it.notes, shouldNormalize).contains(text, true) || + getProperText(it.organization.company, shouldNormalize).contains(text, true) || + getProperText(it.organization.jobPosition, shouldNormalize).contains(text, true) || + it.websites.any { it.contains(text, true) } + } as ArrayList - filtered.sortBy { - val nameToDisplay = it.getNameToDisplay() - !getProperText(nameToDisplay, shouldNormalize).startsWith(text, true) && !nameToDisplay.contains(text, true) - } + filtered.sortBy { + val nameToDisplay = it.getNameToDisplay() + !getProperText(nameToDisplay, shouldNormalize).startsWith(text, true) && !nameToDisplay.contains(text, true) + } fragment_placeholder.beVisibleIf(filtered.isEmpty()) (fragment_list.adapter as? ContactsAdapter)?.updateItems(filtered, text) - setupLetterFastscroller(filtered) - } + setupLetterFastScroller(filtered) + } + private fun requestReadContactsPermission() { activity?.handlePermission(PERMISSION_READ_CONTACTS) { if (it) { From e17555c977d578659b537e0ab0c7ed41623db6fe Mon Sep 17 00:00:00 2001 From: merkost Date: Tue, 11 Jul 2023 12:28:00 +1000 Subject: [PATCH 07/31] Contact item improving --- app/src/main/res/layout/item_contact_grid.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/res/layout/item_contact_grid.xml b/app/src/main/res/layout/item_contact_grid.xml index 8997d6bd..f898ee7d 100644 --- a/app/src/main/res/layout/item_contact_grid.xml +++ b/app/src/main/res/layout/item_contact_grid.xml @@ -31,11 +31,10 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/item_contact_image" - android:layout_marginTop="@dimen/small_margin" android:ellipsize="middle" android:gravity="center_horizontal" android:maxLines="1" - android:paddingHorizontal="@dimen/small_margin" + android:paddingHorizontal="@dimen/medium_margin" android:singleLine="true" app:layout_constraintEnd_toEndOf="@+id/item_contact_image" app:layout_constraintStart_toStartOf="@+id/item_contact_image" From e8bee1445a540f912af282c80ccf48f0824b2116 Mon Sep 17 00:00:00 2001 From: merkost Date: Tue, 11 Jul 2023 12:29:01 +1000 Subject: [PATCH 08/31] Adapter drag support for grid --- .../com/simplemobiletools/dialer/adapters/ContactsAdapter.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt index 90e8b509..b89f76a6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -58,7 +58,7 @@ class ContactsAdapter( setupDragListener(true) if (enableDrag) { - touchHelper = ItemTouchHelper(ItemMoveCallback(this)) + touchHelper = ItemTouchHelper(ItemMoveCallback(this, viewType == VIEW_TYPE_GRID)) touchHelper!!.attachToRecyclerView(recyclerView) startReorderDragListener = object : StartReorderDragListener { From eb775e870b30173358fc11399cc8c5ac681bb1a4 Mon Sep 17 00:00:00 2001 From: merkost Date: Wed, 12 Jul 2023 13:36:53 +1000 Subject: [PATCH 09/31] Change view type setting moved up --- app/src/main/res/menu/menu.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 2c4d7b07..64710655 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -24,6 +24,11 @@ android:icon="@drawable/ic_delete_vector" android:title="@string/clear_call_history" app:showAsAction="always" /> + - Date: Wed, 12 Jul 2023 13:56:15 +1000 Subject: [PATCH 10/31] Contact name in 2 lines with ellipsize in the end --- app/src/main/res/layout/item_contact_grid.xml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/layout/item_contact_grid.xml b/app/src/main/res/layout/item_contact_grid.xml index f898ee7d..49bc2632 100644 --- a/app/src/main/res/layout/item_contact_grid.xml +++ b/app/src/main/res/layout/item_contact_grid.xml @@ -14,7 +14,7 @@ Date: Wed, 12 Jul 2023 18:29:02 +1000 Subject: [PATCH 11/31] Added gridLayoutSpanCount in Config.kt --- .../kotlin/com/simplemobiletools/dialer/helpers/Config.kt | 6 +++++- .../com/simplemobiletools/dialer/helpers/Constants.kt | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt index f413e4e0..8c1d75aa 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt @@ -93,6 +93,10 @@ class Config(context: Context) : BaseConfig(context) { var viewType: Int get() = prefs.getInt(VIEW_TYPE, VIEW_TYPE_LIST) - set(viewTypeFiles) = prefs.edit().putInt(VIEW_TYPE, viewTypeFiles).apply() + set(viewType) = prefs.edit().putInt(VIEW_TYPE, viewType).apply() + + var gridLayoutSpanCount: Int + get() = prefs.getInt(GRID_LAYOUT_SPAN_COUNT, DEFAULT_GRID_SPAN_COUNT) + set(gridLayoutSpanCount) = prefs.edit().putInt(GRID_LAYOUT_SPAN_COUNT, gridLayoutSpanCount).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt index 8b033c2b..d5f25a66 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt @@ -20,6 +20,8 @@ const val DIALPAD_BEEPS = "dialpad_beeps" const val HIDE_DIALPAD_NUMBERS = "hide_dialpad_numbers" const val ALWAYS_SHOW_FULLSCREEN = "always_show_fullscreen" const val VIEW_TYPE = "view_type" +const val GRID_LAYOUT_SPAN_COUNT = "grid_layout_span_count" + const val ALL_TABS_MASK = TAB_CONTACTS or TAB_FAVORITES or TAB_CALL_HISTORY @@ -32,3 +34,5 @@ const val DECLINE_CALL = PATH + "decline_call" const val DIALPAD_TONE_LENGTH_MS = 150L // The length of DTMF tones in milliseconds const val MIN_RECENTS_THRESHOLD = 30 + +const val DEFAULT_GRID_SPAN_COUNT = 3 From 2e889f2093866cb9fa015f54d4664654fa4870f3 Mon Sep 17 00:00:00 2001 From: merkost Date: Wed, 12 Jul 2023 18:30:03 +1000 Subject: [PATCH 12/31] Implemented zoom listener to dynamically change span count --- .../dialer/adapters/ContactsAdapter.kt | 45 ++++++++++-- .../dialer/fragments/FavoritesFragment.kt | 72 +++++++++++-------- 2 files changed, 83 insertions(+), 34 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt index b89f76a6..9f94c2f7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -7,13 +7,11 @@ import android.graphics.drawable.Icon import android.net.Uri import android.text.TextUtils import android.util.TypedValue -import android.view.Menu -import android.view.MotionEvent -import android.view.View -import android.view.ViewGroup +import android.view.* import android.widget.ImageView import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide @@ -42,21 +40,27 @@ class ContactsAdapter( recyclerView: MyRecyclerView, highlightText: String = "", private val refreshItemsListener: RefreshItemsListener? = null, - private val viewType: Int = VIEW_TYPE_LIST, + var viewType: Int = VIEW_TYPE_LIST, private val showDeleteButton: Boolean = true, private val enableDrag: Boolean = false, itemClick: (Any) -> Unit -) : MyRecyclerViewAdapter(activity, recyclerView, itemClick), ItemTouchHelperContract { +) : MyRecyclerViewAdapter(activity, recyclerView, itemClick), + ItemTouchHelperContract, MyRecyclerView.MyZoomListener { private var textToHighlight = highlightText private var fontSize = activity.getTextSize() private var touchHelper: ItemTouchHelper? = null private var startReorderDragListener: StartReorderDragListener? = null var onDragEndListener: (() -> Unit)? = null + var onSpanCountListener: (Int) -> Unit = {} init { setupDragListener(true) + if (recyclerView.layoutManager is GridLayoutManager) { + setupZoomListener(this) + } + if (enableDrag) { touchHelper = ItemTouchHelper(ItemMoveCallback(this, viewType == VIEW_TYPE_GRID)) touchHelper!!.attachToRecyclerView(recyclerView) @@ -340,4 +344,33 @@ class ContactsAdapter( override fun onRowClear(myViewHolder: ViewHolder?) { onDragEndListener?.invoke() } + + override fun zoomIn() { + val layoutManager = recyclerView.layoutManager + if (layoutManager is GridLayoutManager) { + val currentSpanCount = layoutManager.spanCount + val newSpanCount = (currentSpanCount - 1).coerceIn(MIN_COLUMNS, MAX_COLUMNS) + layoutManager.spanCount = newSpanCount + recyclerView.requestLayout() + onSpanCountListener(newSpanCount) + } + } + + override fun zoomOut() { + val layoutManager = recyclerView.layoutManager + if (layoutManager is GridLayoutManager) { + val currentSpanCount = layoutManager.spanCount + val newSpanCount = (currentSpanCount + 1).coerceIn(MIN_COLUMNS, MAX_COLUMNS) + layoutManager.spanCount = newSpanCount + recyclerView.requestLayout() + onSpanCountListener(newSpanCount) + } + } + + companion object { + private const val MIN_COLUMNS = 2 + private const val MAX_COLUMNS = 6 + } + + } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt index 8f2ff56e..620357e6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt @@ -91,42 +91,56 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa val viewType = context.config.viewType setViewType(viewType) - ContactsAdapter( - activity = activity as SimpleActivity, - contacts = allContacts, - recyclerView = fragment_list, - refreshItemsListener = this, - viewType = viewType, - showDeleteButton = false, - enableDrag = true, - ) { - if (context.config.showCallConfirmation) { - CallConfirmationDialog(activity as SimpleActivity, (it as Contact).getNameToDisplay()) { + + val currAdapter = fragment_list.adapter as ContactsAdapter? + if (currAdapter == null) { + ContactsAdapter( + activity = activity as SimpleActivity, + contacts = allContacts, + recyclerView = fragment_list, + refreshItemsListener = this, + viewType = viewType, + showDeleteButton = false, + enableDrag = true, + ) { + if (context.config.showCallConfirmation) { + CallConfirmationDialog(activity as SimpleActivity, (it as Contact).getNameToDisplay()) { + activity?.apply { + initiateCall(it) { launchCallIntent(it) } + } + } + } else { activity?.apply { - initiateCall(it) { launchCallIntent(it) } + initiateCall(it as Contact) { launchCallIntent(it) } } } - } else { - activity?.apply { - initiateCall(it as Contact) { launchCallIntent(it) } + }.apply { + fragment_list.adapter = this + + onDragEndListener = { + val adapter = fragment_list?.adapter + if (adapter is ContactsAdapter) { + val items = adapter.contacts + saveCustomOrderToPrefs(items) + setupLetterFastScroller(items) + } + } + + onSpanCountListener = { newSpanCount -> + context.config.gridLayoutSpanCount = newSpanCount } } - }.apply { - fragment_list.adapter = this - onDragEndListener = { - val adapter = fragment_list?.adapter - if (adapter is ContactsAdapter) { - val items = adapter.contacts - saveCustomOrderToPrefs(items) - setupLetterFastScroller(items) - } + + if (context.areSystemAnimationsEnabled) { + fragment_list.scheduleLayoutAnimation() } + } else { + currAdapter.updateItems(allContacts) + currAdapter.viewType = viewType + currAdapter.recyclerView.requestLayout() } - if (context.areSystemAnimationsEnabled) { - fragment_list.scheduleLayoutAnimation() - } } private fun sortByCustomOrder(favorites: List): ArrayList { @@ -182,9 +196,11 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa } private fun setViewType(viewType: Int) { + val spanCount = context.config.gridLayoutSpanCount + val layoutManager = if (viewType == VIEW_TYPE_GRID) { letter_fastscroller.beGone() - MyGridLayoutManager(context, 3) + MyGridLayoutManager(context, spanCount) } else { letter_fastscroller.beVisible() MyLinearLayoutManager(context) From 24cc3f53442f0336c77db5e4b7ee611d353b1041 Mon Sep 17 00:00:00 2001 From: merkost Date: Wed, 12 Jul 2023 18:51:43 +1000 Subject: [PATCH 13/31] Created grid span count slider in dialog --- .../dialer/adapters/ContactsAdapter.kt | 12 ++++-------- .../dialer/dialogs/ChangeViewTypeDialog.kt | 14 ++++++++++++++ .../com/simplemobiletools/dialer/helpers/Config.kt | 2 +- .../simplemobiletools/dialer/helpers/Constants.kt | 4 +++- .../main/res/layout/dialog_change_view_type.xml | 7 +++++++ 5 files changed, 29 insertions(+), 10 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt index 9f94c2f7..1c1afe3d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -31,6 +31,8 @@ import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable import com.simplemobiletools.dialer.extensions.callContactWithSim import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.startContactDetailsIntent +import com.simplemobiletools.dialer.helpers.GRID_MAX_SPAN_COUNT +import com.simplemobiletools.dialer.helpers.GRID_MIN_SPAN_COUNT import com.simplemobiletools.dialer.interfaces.RefreshItemsListener import java.util.* @@ -349,7 +351,7 @@ class ContactsAdapter( val layoutManager = recyclerView.layoutManager if (layoutManager is GridLayoutManager) { val currentSpanCount = layoutManager.spanCount - val newSpanCount = (currentSpanCount - 1).coerceIn(MIN_COLUMNS, MAX_COLUMNS) + val newSpanCount = (currentSpanCount - 1).coerceIn(GRID_MIN_SPAN_COUNT, GRID_MAX_SPAN_COUNT) layoutManager.spanCount = newSpanCount recyclerView.requestLayout() onSpanCountListener(newSpanCount) @@ -360,17 +362,11 @@ class ContactsAdapter( val layoutManager = recyclerView.layoutManager if (layoutManager is GridLayoutManager) { val currentSpanCount = layoutManager.spanCount - val newSpanCount = (currentSpanCount + 1).coerceIn(MIN_COLUMNS, MAX_COLUMNS) + val newSpanCount = (currentSpanCount + 1).coerceIn(GRID_MIN_SPAN_COUNT, GRID_MAX_SPAN_COUNT) layoutManager.spanCount = newSpanCount recyclerView.requestLayout() onSpanCountListener(newSpanCount) } } - companion object { - private const val MIN_COLUMNS = 2 - private const val MAX_COLUMNS = 6 - } - - } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt index 84210908..c213c35e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt @@ -2,15 +2,19 @@ package com.simplemobiletools.dialer.dialogs import android.view.View import com.simplemobiletools.commons.activities.BaseSimpleActivity +import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.getAlertDialogBuilder import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.extensions.config +import com.simplemobiletools.dialer.helpers.GRID_MAX_SPAN_COUNT +import com.simplemobiletools.dialer.helpers.GRID_MIN_SPAN_COUNT import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio_grid import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio_list +import kotlinx.android.synthetic.main.dialog_change_view_type.view.grid_span_count_slider class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val path: String = "", showFolderCheck: Boolean = true, val callback: () -> Unit) { private var view: View @@ -22,6 +26,15 @@ class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val path: String = VIEW_TYPE_GRID -> change_view_type_dialog_radio_grid.id else -> change_view_type_dialog_radio_list.id } + + change_view_type_dialog_radio_grid.setOnCheckedChangeListener { buttonView, isChecked -> + grid_span_count_slider.beVisibleIf(isChecked) + } + grid_span_count_slider.value = config.gridLayoutSpanCount.toFloat() + grid_span_count_slider.stepSize = 1f + grid_span_count_slider.valueFrom = GRID_MIN_SPAN_COUNT.toFloat() + grid_span_count_slider.valueTo = GRID_MAX_SPAN_COUNT.toFloat() + change_view_type_dialog_radio.check(viewToCheck) } @@ -35,6 +48,7 @@ class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val path: String = private fun dialogConfirmed() { val viewType = if (view.change_view_type_dialog_radio_grid.isChecked) { + config.gridLayoutSpanCount = view.grid_span_count_slider.value.toInt() VIEW_TYPE_GRID } else { VIEW_TYPE_LIST diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt index 8c1d75aa..e2e33d1a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt @@ -96,7 +96,7 @@ class Config(context: Context) : BaseConfig(context) { set(viewType) = prefs.edit().putInt(VIEW_TYPE, viewType).apply() var gridLayoutSpanCount: Int - get() = prefs.getInt(GRID_LAYOUT_SPAN_COUNT, DEFAULT_GRID_SPAN_COUNT) + get() = prefs.getInt(GRID_LAYOUT_SPAN_COUNT, GRID_DEFAULT_SPAN_COUNT) set(gridLayoutSpanCount) = prefs.edit().putInt(GRID_LAYOUT_SPAN_COUNT, gridLayoutSpanCount).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt index d5f25a66..43927310 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt @@ -35,4 +35,6 @@ const val DIALPAD_TONE_LENGTH_MS = 150L // The length of DTMF tones in milliseco const val MIN_RECENTS_THRESHOLD = 30 -const val DEFAULT_GRID_SPAN_COUNT = 3 +const val GRID_DEFAULT_SPAN_COUNT = 3 +const val GRID_MIN_SPAN_COUNT = 2 +const val GRID_MAX_SPAN_COUNT = 6 diff --git a/app/src/main/res/layout/dialog_change_view_type.xml b/app/src/main/res/layout/dialog_change_view_type.xml index e44f151b..1a7031e1 100644 --- a/app/src/main/res/layout/dialog_change_view_type.xml +++ b/app/src/main/res/layout/dialog_change_view_type.xml @@ -27,6 +27,13 @@ android:paddingBottom="@dimen/medium_margin" android:text="@string/grid" /> + + Date: Thu, 13 Jul 2023 23:02:18 +1000 Subject: [PATCH 14/31] Created column_count menu item --- .../dialer/activities/MainActivity.kt | 23 ++++++++++++++++--- app/src/main/res/menu/menu.xml | 5 ++++ 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 9a10fe70..234e5a96 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -18,9 +18,11 @@ import androidx.viewpager.widget.ViewPager import com.google.android.material.snackbar.Snackbar import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.PermissionRequiredDialog +import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.commons.models.FAQItem +import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.commons.models.contacts.Contact import com.simplemobiletools.dialer.BuildConfig import com.simplemobiletools.dialer.R @@ -32,9 +34,7 @@ import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.launchCreateNewContactIntent import com.simplemobiletools.dialer.fragments.FavoritesFragment import com.simplemobiletools.dialer.fragments.MyViewPagerFragment -import com.simplemobiletools.dialer.helpers.OPEN_DIAL_PAD_AT_LAUNCH -import com.simplemobiletools.dialer.helpers.RecentsHelper -import com.simplemobiletools.dialer.helpers.tabsList +import com.simplemobiletools.dialer.helpers.* import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.fragment_contacts.* import kotlinx.android.synthetic.main.fragment_favorites.* @@ -171,6 +171,7 @@ class MainActivity : SimpleActivity() { findItem(R.id.sort).isVisible = currentFragment != recents_fragment findItem(R.id.create_new_contact).isVisible = currentFragment == contacts_fragment findItem(R.id.change_view_type).isVisible = currentFragment == favorites_fragment + findItem(R.id.column_count).isVisible = config.viewType == VIEW_TYPE_GRID findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(R.bool.hide_google_relations) } } @@ -199,6 +200,7 @@ class MainActivity : SimpleActivity() { R.id.more_apps_from_us -> launchMoreAppsFromUsIntent() R.id.settings -> launchSettings() R.id.change_view_type -> changeViewType() + R.id.column_count -> changeColumnCount() R.id.about -> launchAbout() else -> return@setOnMenuItemClickListener false } @@ -206,6 +208,21 @@ class MainActivity : SimpleActivity() { } } + private fun changeColumnCount() { + val items = (GRID_MIN_COLUMNS_COUNT..GRID_MAX_COLUMNS_COUNT).map { + RadioItem(it, resources.getQuantityString(R.plurals.column_counts, it, it)) + } + + val currentColumnCount = config.favoritesColumnCnt + RadioGroupDialog(this, ArrayList(items), currentColumnCount) { + val newColumnCount = it as Int + if (currentColumnCount != newColumnCount) { + config.favoritesColumnCnt = newColumnCount + favorites_fragment.updateListAdapter() + } + } + } + private fun changeViewType() { ChangeViewTypeDialog(this) { favorites_fragment.updateListAdapter() diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 64710655..c41a0d5b 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -29,6 +29,11 @@ android:icon="@drawable/ic_settings_cog_vector" android:title="@string/change_view_type" app:showAsAction="ifRoom" /> + Date: Thu, 13 Jul 2023 23:02:54 +1000 Subject: [PATCH 15/31] Removed slider --- .../dialer/dialogs/ChangeViewTypeDialog.kt | 13 ------------- app/src/main/res/layout/dialog_change_view_type.xml | 7 ------- 2 files changed, 20 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt index c213c35e..26e26d65 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt @@ -2,19 +2,15 @@ package com.simplemobiletools.dialer.dialogs import android.view.View import com.simplemobiletools.commons.activities.BaseSimpleActivity -import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.getAlertDialogBuilder import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.extensions.config -import com.simplemobiletools.dialer.helpers.GRID_MAX_SPAN_COUNT -import com.simplemobiletools.dialer.helpers.GRID_MIN_SPAN_COUNT import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio_grid import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio_list -import kotlinx.android.synthetic.main.dialog_change_view_type.view.grid_span_count_slider class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val path: String = "", showFolderCheck: Boolean = true, val callback: () -> Unit) { private var view: View @@ -27,14 +23,6 @@ class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val path: String = else -> change_view_type_dialog_radio_list.id } - change_view_type_dialog_radio_grid.setOnCheckedChangeListener { buttonView, isChecked -> - grid_span_count_slider.beVisibleIf(isChecked) - } - grid_span_count_slider.value = config.gridLayoutSpanCount.toFloat() - grid_span_count_slider.stepSize = 1f - grid_span_count_slider.valueFrom = GRID_MIN_SPAN_COUNT.toFloat() - grid_span_count_slider.valueTo = GRID_MAX_SPAN_COUNT.toFloat() - change_view_type_dialog_radio.check(viewToCheck) } @@ -48,7 +36,6 @@ class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val path: String = private fun dialogConfirmed() { val viewType = if (view.change_view_type_dialog_radio_grid.isChecked) { - config.gridLayoutSpanCount = view.grid_span_count_slider.value.toInt() VIEW_TYPE_GRID } else { VIEW_TYPE_LIST diff --git a/app/src/main/res/layout/dialog_change_view_type.xml b/app/src/main/res/layout/dialog_change_view_type.xml index 1a7031e1..e44f151b 100644 --- a/app/src/main/res/layout/dialog_change_view_type.xml +++ b/app/src/main/res/layout/dialog_change_view_type.xml @@ -27,13 +27,6 @@ android:paddingBottom="@dimen/medium_margin" android:text="@string/grid" /> - - Date: Thu, 13 Jul 2023 23:03:08 +1000 Subject: [PATCH 16/31] Renaming --- .../kotlin/com/simplemobiletools/dialer/helpers/Config.kt | 6 +++--- .../com/simplemobiletools/dialer/helpers/Constants.kt | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt index e2e33d1a..99b2aac6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt @@ -95,8 +95,8 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getInt(VIEW_TYPE, VIEW_TYPE_LIST) set(viewType) = prefs.edit().putInt(VIEW_TYPE, viewType).apply() - var gridLayoutSpanCount: Int - get() = prefs.getInt(GRID_LAYOUT_SPAN_COUNT, GRID_DEFAULT_SPAN_COUNT) - set(gridLayoutSpanCount) = prefs.edit().putInt(GRID_LAYOUT_SPAN_COUNT, gridLayoutSpanCount).apply() + var favoritesColumnCnt: Int + get() = prefs.getInt(FAVOURITES_COLUMN_COUNT, GRID_DEFAULT_COLUMNS_COUNT) + set(gridLayoutSpanCount) = prefs.edit().putInt(FAVOURITES_COLUMN_COUNT, gridLayoutSpanCount).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt index 43927310..a929ec8c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt @@ -20,7 +20,7 @@ const val DIALPAD_BEEPS = "dialpad_beeps" const val HIDE_DIALPAD_NUMBERS = "hide_dialpad_numbers" const val ALWAYS_SHOW_FULLSCREEN = "always_show_fullscreen" const val VIEW_TYPE = "view_type" -const val GRID_LAYOUT_SPAN_COUNT = "grid_layout_span_count" +const val FAVOURITES_COLUMN_COUNT = "grid_layout_span_count" const val ALL_TABS_MASK = TAB_CONTACTS or TAB_FAVORITES or TAB_CALL_HISTORY @@ -35,6 +35,6 @@ const val DIALPAD_TONE_LENGTH_MS = 150L // The length of DTMF tones in milliseco const val MIN_RECENTS_THRESHOLD = 30 -const val GRID_DEFAULT_SPAN_COUNT = 3 -const val GRID_MIN_SPAN_COUNT = 2 -const val GRID_MAX_SPAN_COUNT = 6 +const val GRID_DEFAULT_COLUMNS_COUNT = 3 +const val GRID_MIN_COLUMNS_COUNT = 2 +const val GRID_MAX_COLUMNS_COUNT = 6 From d0c9daa3ce44725ba1b98c7ec288e8b3d471d447 Mon Sep 17 00:00:00 2001 From: merkost Date: Thu, 13 Jul 2023 23:03:08 +1000 Subject: [PATCH 17/31] Renaming --- .../simplemobiletools/dialer/adapters/ContactsAdapter.kt | 8 ++++---- .../kotlin/com/simplemobiletools/dialer/helpers/Config.kt | 6 +++--- .../com/simplemobiletools/dialer/helpers/Constants.kt | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt index 1c1afe3d..fa1ae210 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -31,8 +31,8 @@ import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable import com.simplemobiletools.dialer.extensions.callContactWithSim import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.startContactDetailsIntent -import com.simplemobiletools.dialer.helpers.GRID_MAX_SPAN_COUNT -import com.simplemobiletools.dialer.helpers.GRID_MIN_SPAN_COUNT +import com.simplemobiletools.dialer.helpers.GRID_MAX_COLUMNS_COUNT +import com.simplemobiletools.dialer.helpers.GRID_MIN_COLUMNS_COUNT import com.simplemobiletools.dialer.interfaces.RefreshItemsListener import java.util.* @@ -351,7 +351,7 @@ class ContactsAdapter( val layoutManager = recyclerView.layoutManager if (layoutManager is GridLayoutManager) { val currentSpanCount = layoutManager.spanCount - val newSpanCount = (currentSpanCount - 1).coerceIn(GRID_MIN_SPAN_COUNT, GRID_MAX_SPAN_COUNT) + val newSpanCount = (currentSpanCount - 1).coerceIn(GRID_MIN_COLUMNS_COUNT, GRID_MAX_COLUMNS_COUNT) layoutManager.spanCount = newSpanCount recyclerView.requestLayout() onSpanCountListener(newSpanCount) @@ -362,7 +362,7 @@ class ContactsAdapter( val layoutManager = recyclerView.layoutManager if (layoutManager is GridLayoutManager) { val currentSpanCount = layoutManager.spanCount - val newSpanCount = (currentSpanCount + 1).coerceIn(GRID_MIN_SPAN_COUNT, GRID_MAX_SPAN_COUNT) + val newSpanCount = (currentSpanCount + 1).coerceIn(GRID_MIN_COLUMNS_COUNT, GRID_MAX_COLUMNS_COUNT) layoutManager.spanCount = newSpanCount recyclerView.requestLayout() onSpanCountListener(newSpanCount) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt index e2e33d1a..99b2aac6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt @@ -95,8 +95,8 @@ class Config(context: Context) : BaseConfig(context) { get() = prefs.getInt(VIEW_TYPE, VIEW_TYPE_LIST) set(viewType) = prefs.edit().putInt(VIEW_TYPE, viewType).apply() - var gridLayoutSpanCount: Int - get() = prefs.getInt(GRID_LAYOUT_SPAN_COUNT, GRID_DEFAULT_SPAN_COUNT) - set(gridLayoutSpanCount) = prefs.edit().putInt(GRID_LAYOUT_SPAN_COUNT, gridLayoutSpanCount).apply() + var favoritesColumnCnt: Int + get() = prefs.getInt(FAVOURITES_COLUMN_COUNT, GRID_DEFAULT_COLUMNS_COUNT) + set(gridLayoutSpanCount) = prefs.edit().putInt(FAVOURITES_COLUMN_COUNT, gridLayoutSpanCount).apply() } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt index 43927310..a929ec8c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt @@ -20,7 +20,7 @@ const val DIALPAD_BEEPS = "dialpad_beeps" const val HIDE_DIALPAD_NUMBERS = "hide_dialpad_numbers" const val ALWAYS_SHOW_FULLSCREEN = "always_show_fullscreen" const val VIEW_TYPE = "view_type" -const val GRID_LAYOUT_SPAN_COUNT = "grid_layout_span_count" +const val FAVOURITES_COLUMN_COUNT = "grid_layout_span_count" const val ALL_TABS_MASK = TAB_CONTACTS or TAB_FAVORITES or TAB_CALL_HISTORY @@ -35,6 +35,6 @@ const val DIALPAD_TONE_LENGTH_MS = 150L // The length of DTMF tones in milliseco const val MIN_RECENTS_THRESHOLD = 30 -const val GRID_DEFAULT_SPAN_COUNT = 3 -const val GRID_MIN_SPAN_COUNT = 2 -const val GRID_MAX_SPAN_COUNT = 6 +const val GRID_DEFAULT_COLUMNS_COUNT = 3 +const val GRID_MIN_COLUMNS_COUNT = 2 +const val GRID_MAX_COLUMNS_COUNT = 6 From fe2f2e03ce6839c81592d2c86b6f7aad4cd54bca Mon Sep 17 00:00:00 2001 From: merkost Date: Thu, 13 Jul 2023 23:04:14 +1000 Subject: [PATCH 18/31] item_contact_grid.xml improved --- app/src/main/res/layout/item_contact_grid.xml | 9 +++++---- app/src/main/res/values/dimens.xml | 2 ++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/app/src/main/res/layout/item_contact_grid.xml b/app/src/main/res/layout/item_contact_grid.xml index 49bc2632..dc2f74c3 100644 --- a/app/src/main/res/layout/item_contact_grid.xml +++ b/app/src/main/res/layout/item_contact_grid.xml @@ -13,18 +13,19 @@ + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintWidth_max="@dimen/grid_view_image_size" /> 34sp 20sp + 100dp + 28dp 12dp From e0e283cf717fba6c0079396cdbbbd3b83546887d Mon Sep 17 00:00:00 2001 From: merkost Date: Fri, 14 Jul 2023 10:19:13 +1000 Subject: [PATCH 19/31] Moved item contact grid to commons lib --- .../dialer/adapters/ContactsAdapter.kt | 2 +- app/src/main/res/layout/item_contact_grid.xml | 58 ------------------- app/src/main/res/values/dimens.xml | 2 - 3 files changed, 1 insertion(+), 61 deletions(-) delete mode 100644 app/src/main/res/layout/item_contact_grid.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt index fa1ae210..5e66e1a7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -129,7 +129,7 @@ class ContactsAdapter( override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val layout = when (viewType) { - VIEW_TYPE_GRID -> R.layout.item_contact_grid + VIEW_TYPE_GRID -> R.layout.item_contact_without_number_grid else -> R.layout.item_contact_without_number } return createViewHolder(layout, parent) diff --git a/app/src/main/res/layout/item_contact_grid.xml b/app/src/main/res/layout/item_contact_grid.xml deleted file mode 100644 index dc2f74c3..00000000 --- a/app/src/main/res/layout/item_contact_grid.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 5228cd83..3e74ff07 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -10,8 +10,6 @@ 34sp 20sp - 100dp - 28dp 12dp From 799ad90ec254c0fca5d7945fbead385f2753b6c6 Mon Sep 17 00:00:00 2001 From: merkost Date: Sat, 15 Jul 2023 12:27:03 +1000 Subject: [PATCH 20/31] Moved shared items to commons --- .../dialer/activities/MainActivity.kt | 8 ++-- .../dialer/adapters/ContactsAdapter.kt | 7 ++- .../dialer/dialogs/ChangeViewTypeDialog.kt | 46 ------------------- .../dialer/fragments/FavoritesFragment.kt | 5 +- .../dialer/helpers/Config.kt | 10 ---- .../dialer/helpers/Constants.kt | 7 --- .../res/layout/dialog_change_view_type.xml | 41 ----------------- 7 files changed, 9 insertions(+), 115 deletions(-) delete mode 100644 app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt delete mode 100644 app/src/main/res/layout/dialog_change_view_type.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 234e5a96..a936e0d5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -16,6 +16,7 @@ import android.widget.TextView import android.widget.Toast import androidx.viewpager.widget.ViewPager import com.google.android.material.snackbar.Snackbar +import com.simplemobiletools.commons.dialogs.ChangeViewTypeDialog import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.dialogs.PermissionRequiredDialog import com.simplemobiletools.commons.dialogs.RadioGroupDialog @@ -28,7 +29,6 @@ import com.simplemobiletools.dialer.BuildConfig import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.adapters.ViewPagerAdapter import com.simplemobiletools.dialer.dialogs.ChangeSortingDialog -import com.simplemobiletools.dialer.dialogs.ChangeViewTypeDialog import com.simplemobiletools.dialer.dialogs.FilterContactSourcesDialog import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.launchCreateNewContactIntent @@ -209,15 +209,15 @@ class MainActivity : SimpleActivity() { } private fun changeColumnCount() { - val items = (GRID_MIN_COLUMNS_COUNT..GRID_MAX_COLUMNS_COUNT).map { + val items = (CONTACTS_GRID_MIN_COLUMNS_COUNT..CONTACTS_GRID_MAX_COLUMNS_COUNT).map { RadioItem(it, resources.getQuantityString(R.plurals.column_counts, it, it)) } - val currentColumnCount = config.favoritesColumnCnt + val currentColumnCount = config.contactsGridColumnCnt RadioGroupDialog(this, ArrayList(items), currentColumnCount) { val newColumnCount = it as Int if (currentColumnCount != newColumnCount) { - config.favoritesColumnCnt = newColumnCount + config.contactsGridColumnCnt = newColumnCount favorites_fragment.updateListAdapter() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt index 5e66e1a7..917c204d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -31,8 +31,6 @@ import com.simplemobiletools.dialer.extensions.areMultipleSIMsAvailable import com.simplemobiletools.dialer.extensions.callContactWithSim import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.extensions.startContactDetailsIntent -import com.simplemobiletools.dialer.helpers.GRID_MAX_COLUMNS_COUNT -import com.simplemobiletools.dialer.helpers.GRID_MIN_COLUMNS_COUNT import com.simplemobiletools.dialer.interfaces.RefreshItemsListener import java.util.* @@ -56,6 +54,7 @@ class ContactsAdapter( var onDragEndListener: (() -> Unit)? = null var onSpanCountListener: (Int) -> Unit = {} + init { setupDragListener(true) @@ -351,7 +350,7 @@ class ContactsAdapter( val layoutManager = recyclerView.layoutManager if (layoutManager is GridLayoutManager) { val currentSpanCount = layoutManager.spanCount - val newSpanCount = (currentSpanCount - 1).coerceIn(GRID_MIN_COLUMNS_COUNT, GRID_MAX_COLUMNS_COUNT) + val newSpanCount = (currentSpanCount - 1).coerceIn(CONTACTS_GRID_MIN_COLUMNS_COUNT, CONTACTS_GRID_MAX_COLUMNS_COUNT) layoutManager.spanCount = newSpanCount recyclerView.requestLayout() onSpanCountListener(newSpanCount) @@ -362,7 +361,7 @@ class ContactsAdapter( val layoutManager = recyclerView.layoutManager if (layoutManager is GridLayoutManager) { val currentSpanCount = layoutManager.spanCount - val newSpanCount = (currentSpanCount + 1).coerceIn(GRID_MIN_COLUMNS_COUNT, GRID_MAX_COLUMNS_COUNT) + val newSpanCount = (currentSpanCount + 1).coerceIn(CONTACTS_GRID_MIN_COLUMNS_COUNT, CONTACTS_GRID_MAX_COLUMNS_COUNT) layoutManager.spanCount = newSpanCount recyclerView.requestLayout() onSpanCountListener(newSpanCount) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt deleted file mode 100644 index 26e26d65..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/dialogs/ChangeViewTypeDialog.kt +++ /dev/null @@ -1,46 +0,0 @@ -package com.simplemobiletools.dialer.dialogs - -import android.view.View -import com.simplemobiletools.commons.activities.BaseSimpleActivity -import com.simplemobiletools.commons.extensions.getAlertDialogBuilder -import com.simplemobiletools.commons.extensions.setupDialogStuff -import com.simplemobiletools.commons.helpers.VIEW_TYPE_GRID -import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST -import com.simplemobiletools.dialer.R -import com.simplemobiletools.dialer.extensions.config -import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio -import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio_grid -import kotlinx.android.synthetic.main.dialog_change_view_type.view.change_view_type_dialog_radio_list - -class ChangeViewTypeDialog(val activity: BaseSimpleActivity, val path: String = "", showFolderCheck: Boolean = true, val callback: () -> Unit) { - private var view: View - private var config = activity.config - - init { - view = activity.layoutInflater.inflate(R.layout.dialog_change_view_type, null).apply { - val viewToCheck = when (config.viewType) { - VIEW_TYPE_GRID -> change_view_type_dialog_radio_grid.id - else -> change_view_type_dialog_radio_list.id - } - - change_view_type_dialog_radio.check(viewToCheck) - } - - activity.getAlertDialogBuilder() - .setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() } - .setNegativeButton(R.string.cancel, null) - .apply { - activity.setupDialogStuff(view, this) - } - } - - private fun dialogConfirmed() { - val viewType = if (view.change_view_type_dialog_radio_grid.isChecked) { - VIEW_TYPE_GRID - } else { - VIEW_TYPE_LIST - } - config.viewType = viewType - callback() - } -} diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt index 6453c97a..85ec9bab 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt @@ -91,7 +91,6 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa val viewType = context.config.viewType setViewType(viewType) - val currAdapter = fragment_list.adapter as ContactsAdapter? if (currAdapter == null) { ContactsAdapter( @@ -127,7 +126,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa } onSpanCountListener = { newSpanCount -> - context.config.favoritesColumnCnt = newSpanCount + context.config.contactsGridColumnCnt = newSpanCount } } @@ -196,7 +195,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa } private fun setViewType(viewType: Int) { - val spanCount = context.config.favoritesColumnCnt + val spanCount = context.config.contactsGridColumnCnt val layoutManager = if (viewType == VIEW_TYPE_GRID) { letter_fastscroller.beGone() diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt index 99b2aac6..2695a2c5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Config.kt @@ -6,7 +6,6 @@ import android.telecom.PhoneAccountHandle import com.google.gson.Gson import com.google.gson.reflect.TypeToken import com.simplemobiletools.commons.helpers.BaseConfig -import com.simplemobiletools.commons.helpers.VIEW_TYPE_LIST import com.simplemobiletools.dialer.extensions.getPhoneAccountHandleModel import com.simplemobiletools.dialer.extensions.putPhoneAccountHandle import com.simplemobiletools.dialer.models.SpeedDial @@ -90,13 +89,4 @@ class Config(context: Context) : BaseConfig(context) { var alwaysShowFullscreen: Boolean get() = prefs.getBoolean(ALWAYS_SHOW_FULLSCREEN, false) set(alwaysShowFullscreen) = prefs.edit().putBoolean(ALWAYS_SHOW_FULLSCREEN, alwaysShowFullscreen).apply() - - var viewType: Int - get() = prefs.getInt(VIEW_TYPE, VIEW_TYPE_LIST) - set(viewType) = prefs.edit().putInt(VIEW_TYPE, viewType).apply() - - var favoritesColumnCnt: Int - get() = prefs.getInt(FAVOURITES_COLUMN_COUNT, GRID_DEFAULT_COLUMNS_COUNT) - set(gridLayoutSpanCount) = prefs.edit().putInt(FAVOURITES_COLUMN_COUNT, gridLayoutSpanCount).apply() - } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt index a929ec8c..423bef8d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/Constants.kt @@ -19,9 +19,6 @@ const val DIALPAD_VIBRATION = "dialpad_vibration" const val DIALPAD_BEEPS = "dialpad_beeps" const val HIDE_DIALPAD_NUMBERS = "hide_dialpad_numbers" const val ALWAYS_SHOW_FULLSCREEN = "always_show_fullscreen" -const val VIEW_TYPE = "view_type" -const val FAVOURITES_COLUMN_COUNT = "grid_layout_span_count" - const val ALL_TABS_MASK = TAB_CONTACTS or TAB_FAVORITES or TAB_CALL_HISTORY @@ -34,7 +31,3 @@ const val DECLINE_CALL = PATH + "decline_call" const val DIALPAD_TONE_LENGTH_MS = 150L // The length of DTMF tones in milliseconds const val MIN_RECENTS_THRESHOLD = 30 - -const val GRID_DEFAULT_COLUMNS_COUNT = 3 -const val GRID_MIN_COLUMNS_COUNT = 2 -const val GRID_MAX_COLUMNS_COUNT = 6 diff --git a/app/src/main/res/layout/dialog_change_view_type.xml b/app/src/main/res/layout/dialog_change_view_type.xml deleted file mode 100644 index e44f151b..00000000 --- a/app/src/main/res/layout/dialog_change_view_type.xml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - From bcb76d39f2f13f60d18c90b3df5079c2128dd852 Mon Sep 17 00:00:00 2001 From: merkost Date: Tue, 18 Jul 2023 17:57:46 +1000 Subject: [PATCH 21/31] Updated icon for change view menu item --- app/src/main/res/menu/menu.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index c41a0d5b..75822222 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -26,7 +26,7 @@ app:showAsAction="always" /> Date: Wed, 19 Jul 2023 10:47:18 +1000 Subject: [PATCH 22/31] Updated simple-commons --- app/build.gradle | 4 ++-- .../dialer/activities/MainActivity.kt | 15 +++++++++++---- .../dialer/fragments/FavoritesFragment.kt | 4 ++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 64aee3d6..587d27fc 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -12,7 +12,7 @@ if (keystorePropertiesFile.exists()) { } android { - compileSdkVersion 33 + compileSdk 33 defaultConfig { applicationId "com.simplemobiletools.dialer" @@ -47,7 +47,7 @@ android { } } - flavorDimensions "variants" + flavorDimensions = ["variants"] productFlavors { core {} fdroid {} diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index a936e0d5..4932eb03 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -75,7 +75,12 @@ class MainActivity : SimpleActivity() { handleNotificationPermission { granted -> if (!granted) { - PermissionRequiredDialog(this, R.string.allow_notifications_incoming_calls) + PermissionRequiredDialog(this, + textId = R.string.allow_notifications_incoming_calls, + positiveActionCallback = { + openNotificationSettings() + } + ) } } } else { @@ -213,11 +218,11 @@ class MainActivity : SimpleActivity() { RadioItem(it, resources.getQuantityString(R.plurals.column_counts, it, it)) } - val currentColumnCount = config.contactsGridColumnCnt + val currentColumnCount = config.contactsGridColumnCount RadioGroupDialog(this, ArrayList(items), currentColumnCount) { val newColumnCount = it as Int if (currentColumnCount != newColumnCount) { - config.contactsGridColumnCnt = newColumnCount + config.contactsGridColumnCount = newColumnCount favorites_fragment.updateListAdapter() } } @@ -559,6 +564,7 @@ class MainActivity : SimpleActivity() { } } } + private fun showFilterDialog() { FilterContactSourcesDialog(this) { favorites_fragment?.refreshItems { @@ -573,13 +579,14 @@ class MainActivity : SimpleActivity() { } } - recents_fragment?.refreshItems{ + recents_fragment?.refreshItems { if (main_menu.isSearchOpen) { getCurrentFragment()?.onSearchQueryChanged(main_menu.getCurrentQuery()) } } } } + fun cacheContacts(contacts: List) { try { cachedContacts.clear() diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt index 85ec9bab..4cad19af 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt @@ -126,7 +126,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa } onSpanCountListener = { newSpanCount -> - context.config.contactsGridColumnCnt = newSpanCount + context.config.contactsGridColumnCount = newSpanCount } } @@ -195,7 +195,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa } private fun setViewType(viewType: Int) { - val spanCount = context.config.contactsGridColumnCnt + val spanCount = context.config.contactsGridColumnCount val layoutManager = if (viewType == VIEW_TYPE_GRID) { letter_fastscroller.beGone() From 6a0bc60023e844bcc71f69309e3189d24097350e Mon Sep 17 00:00:00 2001 From: merkost Date: Wed, 19 Jul 2023 10:49:53 +1000 Subject: [PATCH 23/31] Fixed column_count menu item visibility --- .../com/simplemobiletools/dialer/activities/MainActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 4932eb03..2c6e18ec 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -176,7 +176,7 @@ class MainActivity : SimpleActivity() { findItem(R.id.sort).isVisible = currentFragment != recents_fragment findItem(R.id.create_new_contact).isVisible = currentFragment == contacts_fragment findItem(R.id.change_view_type).isVisible = currentFragment == favorites_fragment - findItem(R.id.column_count).isVisible = config.viewType == VIEW_TYPE_GRID + findItem(R.id.column_count).isVisible = currentFragment == favorites_fragment && config.viewType == VIEW_TYPE_GRID findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(R.bool.hide_google_relations) } } From 04cd1db82eda7d49e0af50bbf26f9a0513afca3f Mon Sep 17 00:00:00 2001 From: merkost Date: Wed, 19 Jul 2023 10:59:38 +1000 Subject: [PATCH 24/31] column_count item updated --- app/src/main/res/menu/menu.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 75822222..c0ffdedf 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -31,9 +31,10 @@ app:showAsAction="ifRoom" /> + app:showAsAction="ifRoom" /> Date: Wed, 19 Jul 2023 16:18:46 +1000 Subject: [PATCH 25/31] Refreshing menu items after view type changed --- .../com/simplemobiletools/dialer/activities/MainActivity.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index 01e6ea23..efc242ff 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -225,6 +225,7 @@ class MainActivity : SimpleActivity() { private fun changeViewType() { ChangeViewTypeDialog(this) { + refreshMenuItems() favorites_fragment.updateListAdapter() } } From 5f246d6c6e68d56159147cd5e4cec84fd8ff6332 Mon Sep 17 00:00:00 2001 From: merkost Date: Wed, 19 Jul 2023 16:45:30 +1000 Subject: [PATCH 26/31] Fixed font setting in Adapters --- .../dialer/adapters/ContactsAdapter.kt | 3 ++- .../dialer/adapters/RecentCallsAdapter.kt | 10 ++++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt index 917c204d..8d85f6f0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -48,7 +48,8 @@ class ContactsAdapter( ItemTouchHelperContract, MyRecyclerView.MyZoomListener { private var textToHighlight = highlightText - private var fontSize = activity.getTextSize() + private val fontSize: Float + get() = activity.getTextSize() private var touchHelper: ItemTouchHelper? = null private var startReorderDragListener: StartReorderDragListener? = null var onDragEndListener: (() -> Unit)? = null diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt index e060229b..fc02e9b2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt @@ -38,7 +38,8 @@ class RecentCallsAdapter( private lateinit var outgoingCallIcon: Drawable private lateinit var incomingCallIcon: Drawable private lateinit var incomingMissedCallIcon: Drawable - private var fontSize = activity.getTextSize() + private val fontSize: Float + get() = activity.getTextSize() private val areMultipleSIMsAvailable = activity.areMultipleSIMsAvailable() private val redColor = resources.getColor(R.color.md_red_700) private var textToHighlight = "" @@ -279,6 +280,7 @@ class RecentCallsAdapter( private fun setupView(view: View, call: RecentCall) { view.apply { + val currentFontSize = fontSize item_recents_holder.isSelected = selectedKeys.contains(call.id) val name = findContactByCall(call)?.getNameToDisplay() ?: call.name var nameToShow = SpannableString(name) @@ -302,20 +304,20 @@ class RecentCallsAdapter( item_recents_name.apply { text = nameToShow setTextColor(textColor) - setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize) + setTextSize(TypedValue.COMPLEX_UNIT_PX, currentFontSize) } item_recents_date_time.apply { text = call.startTS.formatDateOrTime(context, refreshItemsListener != null, false) setTextColor(if (call.type == Calls.MISSED_TYPE) redColor else textColor) - setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize * 0.8f) + setTextSize(TypedValue.COMPLEX_UNIT_PX, currentFontSize * 0.8f) } item_recents_duration.apply { text = call.duration.getFormattedDuration() setTextColor(textColor) beVisibleIf(call.type != Calls.MISSED_TYPE && call.type != Calls.REJECTED_TYPE && call.duration > 0) - setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize * 0.8f) + setTextSize(TypedValue.COMPLEX_UNIT_PX, currentFontSize * 0.8f) if (!showOverflowMenu) { item_recents_duration.setPadding(0, 0, durationPadding, 0) } From 532400b8f545f0116f326125dc4d0432f4241aa7 Mon Sep 17 00:00:00 2001 From: merkost Date: Wed, 19 Jul 2023 16:53:28 +1000 Subject: [PATCH 27/31] Improved onFontChange listener --- .../dialer/activities/MainActivity.kt | 8 ++++++++ .../dialer/adapters/ContactsAdapter.kt | 3 +-- .../dialer/adapters/RecentCallsAdapter.kt | 3 +-- .../dialer/fragments/MyViewPagerFragment.kt | 20 +++++++++++++++++-- 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index efc242ff..d9003d6e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -44,6 +44,7 @@ import me.grantland.widget.AutofitHelper class MainActivity : SimpleActivity() { private var launchedDialer = false private var storedShowTabs = 0 + private var storedFontSize = 0 private var storedStartNameWithSurname = false var cachedContacts = ArrayList() @@ -121,6 +122,13 @@ class MainActivity : SimpleActivity() { refreshItems(true) } + val configFontSize = config.fontSize + if (storedFontSize != configFontSize) { + getAllFragments().forEach { + it?.fontSizeChanged() + } + } + checkShortcuts() Handler().postDelayed({ recents_fragment?.refreshItems() diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt index 8d85f6f0..da186dee 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/ContactsAdapter.kt @@ -48,8 +48,7 @@ class ContactsAdapter( ItemTouchHelperContract, MyRecyclerView.MyZoomListener { private var textToHighlight = highlightText - private val fontSize: Float - get() = activity.getTextSize() + var fontSize: Float = activity.getTextSize() private var touchHelper: ItemTouchHelper? = null private var startReorderDragListener: StartReorderDragListener? = null var onDragEndListener: (() -> Unit)? = null diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt index fc02e9b2..9735d400 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/adapters/RecentCallsAdapter.kt @@ -38,8 +38,7 @@ class RecentCallsAdapter( private lateinit var outgoingCallIcon: Drawable private lateinit var incomingCallIcon: Drawable private lateinit var incomingMissedCallIcon: Drawable - private val fontSize: Float - get() = activity.getTextSize() + var fontSize: Float = activity.getTextSize() private val areMultipleSIMsAvailable = activity.areMultipleSIMsAvailable() private val redColor = resources.getColor(R.color.md_red_700) private var textToHighlight = "" diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt index 0a6f1e17..f2f4a23a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt @@ -6,15 +6,17 @@ import android.widget.RelativeLayout import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.extensions.getProperPrimaryColor import com.simplemobiletools.commons.extensions.getProperTextColor +import com.simplemobiletools.commons.extensions.getTextSize import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME import com.simplemobiletools.commons.helpers.SORT_BY_SURNAME import com.simplemobiletools.dialer.activities.MainActivity import com.simplemobiletools.dialer.activities.SimpleActivity import com.simplemobiletools.dialer.adapters.ContactsAdapter +import com.simplemobiletools.dialer.adapters.RecentCallsAdapter import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.helpers.Config -import kotlinx.android.synthetic.main.fragment_letters_layout.view.* -import kotlinx.android.synthetic.main.fragment_recents.view.* +import kotlinx.android.synthetic.main.fragment_letters_layout.view.fragment_list +import kotlinx.android.synthetic.main.fragment_recents.view.recents_list abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) { protected var activity: SimpleActivity? = null @@ -45,6 +47,20 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) (recents_list?.adapter as? MyRecyclerViewAdapter)?.finishActMode() } + fun fontSizeChanged() { + if (this is RecentsFragment) { + (fragment_list.adapter as? RecentCallsAdapter)?.apply { + fontSize = activity.getTextSize() + notifyDataSetChanged() + } + } else { + (fragment_list.adapter as? ContactsAdapter)?.apply { + fontSize = activity.getTextSize() + notifyDataSetChanged() + } + } + } + abstract fun setupFragment() abstract fun setupColors(textColor: Int, primaryColor: Int, properPrimaryColor: Int) From 1379c288e54f72784508b9729085d4a38f6eca98 Mon Sep 17 00:00:00 2001 From: merkost Date: Wed, 19 Jul 2023 16:57:28 +1000 Subject: [PATCH 28/31] Null fixes --- .../simplemobiletools/dialer/fragments/MyViewPagerFragment.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt index f2f4a23a..faff87ae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt @@ -49,12 +49,12 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) fun fontSizeChanged() { if (this is RecentsFragment) { - (fragment_list.adapter as? RecentCallsAdapter)?.apply { + (recents_list?.adapter as? RecentCallsAdapter)?.apply { fontSize = activity.getTextSize() notifyDataSetChanged() } } else { - (fragment_list.adapter as? ContactsAdapter)?.apply { + (fragment_list?.adapter as? ContactsAdapter)?.apply { fontSize = activity.getTextSize() notifyDataSetChanged() } From 7096cf5912b3122ff8fdc6f308ed90bf1d54d6ae Mon Sep 17 00:00:00 2001 From: merkost Date: Thu, 20 Jul 2023 11:41:39 +1000 Subject: [PATCH 29/31] Added change column count animation --- .../dialer/activities/MainActivity.kt | 4 ++-- .../dialer/fragments/FavoritesFragment.kt | 12 +++++++++--- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index d9003d6e..a1ab191a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -226,7 +226,7 @@ class MainActivity : SimpleActivity() { val newColumnCount = it as Int if (currentColumnCount != newColumnCount) { config.contactsGridColumnCount = newColumnCount - favorites_fragment.updateListAdapter() + favorites_fragment?.columnCountChanged() } } } @@ -234,7 +234,7 @@ class MainActivity : SimpleActivity() { private fun changeViewType() { ChangeViewTypeDialog(this) { refreshMenuItems() - favorites_fragment.updateListAdapter() + favorites_fragment?.refreshItems() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt index 4cad19af..9cfae02c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt @@ -87,7 +87,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa } } - fun updateListAdapter() { + private fun updateListAdapter() { val viewType = context.config.viewType setViewType(viewType) @@ -135,13 +135,19 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa fragment_list.scheduleLayoutAnimation() } } else { - currAdapter.updateItems(allContacts) currAdapter.viewType = viewType - currAdapter.recyclerView.requestLayout() + currAdapter.updateItems(allContacts) } } + fun columnCountChanged() { + (fragment_list.layoutManager as MyGridLayoutManager).spanCount = context!!.config.contactsGridColumnCount + fragment_list?.adapter?.apply { + notifyItemRangeChanged(0, allContacts.size) + } + } + private fun sortByCustomOrder(favorites: List): ArrayList { val favoritesOrder = activity!!.config.favoritesContactsOrder From 0c8925f8875e29063351692cee0d662edc4ef6e3 Mon Sep 17 00:00:00 2001 From: Tibor Kaputa Date: Thu, 20 Jul 2023 09:41:35 +0200 Subject: [PATCH 30/31] show column count icon when fits --- app/src/main/res/menu/menu.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index c0ffdedf..605fbc23 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -32,7 +32,6 @@ Date: Thu, 20 Jul 2023 09:42:05 +0200 Subject: [PATCH 31/31] removing duplicate empty lines --- .../com/simplemobiletools/dialer/fragments/FavoritesFragment.kt | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt index 9cfae02c..794438fd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/FavoritesFragment.kt @@ -130,7 +130,6 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa } } - if (context.areSystemAnimationsEnabled) { fragment_list.scheduleLayoutAnimation() } @@ -138,7 +137,6 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa currAdapter.viewType = viewType currAdapter.updateItems(allContacts) } - } fun columnCountChanged() {