From a83886a5bd9ff62ee9ecd8261d21f66947fb6dda Mon Sep 17 00:00:00 2001 From: tibbi Date: Fri, 3 Aug 2018 13:52:44 +0200 Subject: [PATCH] creating a Recents tab --- .../contacts/activities/MainActivity.kt | 12 +++-- .../contacts/adapters/ViewPagerAdapter.kt | 41 ++++++++---------- .../dialogs/ManageVisibleTabsDialog.kt | 6 +-- .../contacts/fragments/MyViewPagerFragment.kt | 20 ++++++--- .../contacts/fragments/RecentsFragment.kt | 14 ++++++ .../contacts/helpers/Constants.kt | 11 +++-- app/src/main/res/drawable-hdpi/ic_clock.png | Bin 0 -> 487 bytes app/src/main/res/drawable-xhdpi/ic_clock.png | Bin 0 -> 655 bytes app/src/main/res/drawable-xxhdpi/ic_clock.png | Bin 0 -> 947 bytes .../main/res/drawable-xxxhdpi/ic_clock.png | Bin 0 -> 1279 bytes .../res/layout/dialog_manage_visible_tabs.xml | 8 ++++ app/src/main/res/layout/fragment_recents.xml | 10 +++++ 12 files changed, 81 insertions(+), 41 deletions(-) create mode 100644 app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt create mode 100644 app/src/main/res/drawable-hdpi/ic_clock.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_clock.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_clock.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_clock.png create mode 100644 app/src/main/res/layout/fragment_recents.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt index 6f10a401..c675ddb3 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt @@ -37,6 +37,7 @@ import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.fragment_contacts.* import kotlinx.android.synthetic.main.fragment_favorites.* import kotlinx.android.synthetic.main.fragment_groups.* +import kotlinx.android.synthetic.main.fragment_recents.* import java.io.FileOutputStream class MainActivity : SimpleActivity(), RefreshContactsListener { @@ -168,7 +169,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { val currentPage = viewpager?.currentItem menu.apply { findItem(R.id.search).isVisible = currentPage != LOCATION_GROUPS_TAB - findItem(R.id.sort).isVisible = currentPage != LOCATION_GROUPS_TAB + findItem(R.id.sort).isVisible = currentPage != LOCATION_GROUPS_TAB && currentPage != LOCATION_RECENTS_TAB findItem(R.id.filter).isVisible = currentPage != LOCATION_GROUPS_TAB } setupSearch(menu) @@ -278,7 +279,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { private fun initFragments() { refreshContacts(ALL_TABS_MASK) - viewpager.offscreenPageLimit = 2 + viewpager.offscreenPageLimit = 3 viewpager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener { override fun onPageScrollStateChanged(state: Int) { if (isSearchOpen) { @@ -328,13 +329,14 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { } } - main_tabs_holder.beVisibleIf(skippedTabs < 2) + main_tabs_holder.beVisibleIf(skippedTabs < 3) invalidateOptionsMenu() } private fun getTabIcon(position: Int) = resources.getDrawable(when (position) { LOCATION_CONTACTS_TAB -> R.drawable.ic_person LOCATION_FAVORITES_TAB -> R.drawable.ic_star_on + LOCATION_RECENTS_TAB -> R.drawable.ic_clock else -> R.drawable.ic_group }) @@ -465,6 +467,10 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { favorites_fragment?.refreshContacts(it) } + if (refreshTabsMask and RECENTS_TAB_MASK != 0) { + recents_fragment?.refreshContacts(it) + } + if (refreshTabsMask and GROUPS_TAB_MASK != 0) { if (refreshTabsMask == GROUPS_TAB_MASK) { groups_fragment.skipHashComparing = true diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ViewPagerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ViewPagerAdapter.kt index 4ef918b3..5a61132d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ViewPagerAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/adapters/ViewPagerAdapter.kt @@ -7,9 +7,7 @@ import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.activities.MainActivity import com.simplemobiletools.contacts.extensions.config import com.simplemobiletools.contacts.fragments.MyViewPagerFragment -import com.simplemobiletools.contacts.helpers.CONTACTS_TAB_MASK -import com.simplemobiletools.contacts.helpers.FAVORITES_TAB_MASK -import com.simplemobiletools.contacts.helpers.tabsList +import com.simplemobiletools.contacts.helpers.* import com.simplemobiletools.contacts.models.Contact class ViewPagerAdapter(val activity: MainActivity, val contacts: ArrayList) : PagerAdapter() { @@ -36,26 +34,23 @@ class ViewPagerAdapter(val activity: MainActivity, val contacts: ArrayList { - when { - showTabs and CONTACTS_TAB_MASK != 0 -> R.layout.fragment_contacts - showTabs and FAVORITES_TAB_MASK != 0 -> R.layout.fragment_favorites - else -> R.layout.fragment_groups - } - } - 1 -> { - if (showTabs and CONTACTS_TAB_MASK != 0) { - if (showTabs and FAVORITES_TAB_MASK != 0) { - R.layout.fragment_favorites - } else { - R.layout.fragment_groups - } - } else { - R.layout.fragment_groups - } - } - else -> R.layout.fragment_groups + val fragments = arrayListOf() + if (showTabs and CONTACTS_TAB_MASK != 0) { + fragments.add(R.layout.fragment_contacts) } + + if (showTabs and FAVORITES_TAB_MASK != 0) { + fragments.add(R.layout.fragment_favorites) + } + + if (showTabs and RECENTS_TAB_MASK != 0) { + fragments.add(R.layout.fragment_recents) + } + + if (showTabs and GROUPS_TAB_MASK != 0) { + fragments.add(R.layout.fragment_groups) + } + + return fragments[position] } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleTabsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleTabsDialog.kt index 788b2f23..241c62cf 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleTabsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/dialogs/ManageVisibleTabsDialog.kt @@ -6,10 +6,7 @@ import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.views.MyAppCompatCheckbox import com.simplemobiletools.contacts.R import com.simplemobiletools.contacts.extensions.config -import com.simplemobiletools.contacts.helpers.ALL_TABS_MASK -import com.simplemobiletools.contacts.helpers.CONTACTS_TAB_MASK -import com.simplemobiletools.contacts.helpers.FAVORITES_TAB_MASK -import com.simplemobiletools.contacts.helpers.GROUPS_TAB_MASK +import com.simplemobiletools.contacts.helpers.* class ManageVisibleTabsDialog(val activity: BaseSimpleActivity) { private var view = activity.layoutInflater.inflate(R.layout.dialog_manage_visible_tabs, null) @@ -19,6 +16,7 @@ class ManageVisibleTabsDialog(val activity: BaseSimpleActivity) { tabs.apply { put(CONTACTS_TAB_MASK, R.id.manage_visible_tabs_contacts) put(FAVORITES_TAB_MASK, R.id.manage_visible_tabs_favorites) + put(RECENTS_TAB_MASK, R.id.manage_visible_tabs_recents) put(GROUPS_TAB_MASK, R.id.manage_visible_tabs_groups) } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt index defca5ad..378e3640 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/MyViewPagerFragment.kt @@ -47,12 +47,16 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) fragment_placeholder_2.underlineText() updateViewStuff() - if (this is FavoritesFragment) { - fragment_placeholder.text = activity.getString(R.string.no_favorites) - fragment_placeholder_2.text = activity.getString(R.string.add_favorites) - } else if (this is GroupsFragment) { - fragment_placeholder.text = activity.getString(R.string.no_group_created) - fragment_placeholder_2.text = activity.getString(R.string.create_group) + when { + this is FavoritesFragment -> { + fragment_placeholder.text = activity.getString(R.string.no_favorites) + fragment_placeholder_2.text = activity.getString(R.string.add_favorites) + } + this is GroupsFragment -> { + fragment_placeholder.text = activity.getString(R.string.no_group_created) + fragment_placeholder_2.text = activity.getString(R.string.create_group) + } + this is RecentsFragment -> fragment_fab.beGone() } } } @@ -88,6 +92,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) fun refreshContacts(contacts: ArrayList) { if ((config.showTabs and CONTACTS_TAB_MASK == 0 && this is ContactsFragment) || (config.showTabs and FAVORITES_TAB_MASK == 0 && this is FavoritesFragment) || + (config.showTabs and RECENTS_TAB_MASK == 0 && this is RecentsFragment) || (config.showTabs and GROUPS_TAB_MASK == 0 && this is GroupsFragment)) { return } @@ -105,6 +110,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) val filtered = when { this is GroupsFragment -> contacts this is FavoritesFragment -> contacts.filter { it.starred == 1 } as ArrayList + this is RecentsFragment -> ArrayList() else -> { val contactSources = activity!!.getVisibleContactSources() contacts.filter { contactSources.contains(it.source) } as ArrayList @@ -170,7 +176,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) } private fun setupContactsFavoritesAdapter(contacts: ArrayList) { - fragment_placeholder_2.beVisibleIf(contacts.isEmpty()) + fragment_placeholder_2.beVisibleIf(contacts.isEmpty() && this !is RecentsFragment) fragment_placeholder.beVisibleIf(contacts.isEmpty()) fragment_list.beVisibleIf(contacts.isNotEmpty()) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt new file mode 100644 index 00000000..791d4db0 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt @@ -0,0 +1,14 @@ +package com.simplemobiletools.contacts.fragments + +import android.content.Context +import android.util.AttributeSet + +class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) { + override fun fabClicked() { + finishActMode() + } + + override fun placeholderClicked() { + + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt index a9bf3b56..f1395a13 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/Constants.kt @@ -24,16 +24,19 @@ const val FIRST_GROUP_ID = 10000 const val LOCATION_CONTACTS_TAB = 0 const val LOCATION_FAVORITES_TAB = 1 -const val LOCATION_GROUPS_TAB = 2 -const val LOCATION_GROUP_CONTACTS = 3 +const val LOCATION_RECENTS_TAB = 2 +const val LOCATION_GROUPS_TAB = 3 +const val LOCATION_GROUP_CONTACTS = 4 const val CONTACTS_TAB_MASK = 1 const val FAVORITES_TAB_MASK = 2 -const val GROUPS_TAB_MASK = 4 -const val ALL_TABS_MASK = 7 +const val RECENTS_TAB_MASK = 4 +const val GROUPS_TAB_MASK = 8 +const val ALL_TABS_MASK = 15 val tabsList = arrayListOf(CONTACTS_TAB_MASK, FAVORITES_TAB_MASK, + RECENTS_TAB_MASK, GROUPS_TAB_MASK ) diff --git a/app/src/main/res/drawable-hdpi/ic_clock.png b/app/src/main/res/drawable-hdpi/ic_clock.png new file mode 100644 index 0000000000000000000000000000000000000000..43b00e0aae69e29432a03207c09bc33ad32e0b2c GIT binary patch literal 487 zcmVkQ>ZW^yxwweK+NyifdLT1bc@X`*Q)l*s-b#=AfD*&@IX*L7y8m&k| zX;Guy2W&~FSpwLnc$)d!4OkSCV<=!v$bi*=p~+i%0S+n<E|rNR4bht|gzyf;&kq(i$Fhvz{1 zkOb8n1J|^P@^&N)+cK~!q(Be%z+P4VW~-7de`9bvq(lh|eZ^U1fehM?2!@C?f`C|3GFy36tE){mIV!iTLD>JR83a dn2JXt0027ct^>_&xyv28cwq;| z3)+YewBrTFMsderjBC^opQyz(j6vdzGQ2@OrLqJ-6`rErxU2+gP)VAI4FC{ZG~)wm zwb-K~Y1CMeAPp$SqSBNVJIqBrCX!PF5gwuDiWT{JiW(*ov;oCX)Kl_X6WgHDM00K+ zMjF-Hnm7@4NL0WE6o*k0tVw%Nqe3+>61Cf!bPm-iR0Ew*XRS%kPz^#g&;a$!nv{ns z9;$)jsE^j93@YK(04>E42~@_K^a54Svw=J|P)=-75B0*DbO!H5?#WHm8^%z`Ws%P~ zZ_^Rtf+9>NiMmc#OZsrs9&6DFs6*bN4Erz+P)mNmA=G$lv9{K$!Wmt-hRQHiL=h#8 zYGZfVJ+WSP&M3@y-UG16a@jo~zgRIJ^@xb?cWeg_&4`Kc*x|ZXR3eQUFTPPqL@^$f zri|B<`GIB<5KTzBJei7;KRo(Xf(6N*kG>^rxe_33slipe!xqKXz=2mAUSMn!FBIV@ zMwZ#0q2p|_0Yb-+!EdSD!}q=Pr7_ir5u+-N>2C?&*AbB*=oR(@68;ONQp_R}?h|;$ pTqCFsmI&gNS5qHHrMkmb*-m-bqXaM${9_f zO;qP%NrKC$#%2-?rCfsJG^S9|TK?i>$9Mn5dMcXCDH06%Ou%a$zfmSWa00)v4zE$< zi+`lk1+R&mEdg*&!Vl|Ay7N;&a6exEk|rUL#=m&oCGI$ZRhX(u z1gL~*IVXrK>SAg~nnZv!+G46DZnzQCL<%G+_W9P~T$+gKCUL6e5Ir1%cg?UD*zP;~;sez76vZx|qt;LuOQ1ql zqdt{n7=Zd$B+5XFe^LF#jvTh2u8l3wHK;A*hz)n6mWo6jNU_A}A;PDqrm+TUiuy!s zsEPV8)<7SiYKRR3QTN6g=w7G$H8W5b#2V-V)O4|7De8n+1D)V>`LG?88*89k)HbnU zGb+n>pufZ!S*Xoo!*W!)I6^h#ROfzAEf*VR2Ry0OT0SFFQsR8nY_Xvq>OOJA1I)lQ zEp?T{eW<=-Lv_?g;*1==VQU_0u435W9)z$|2$Hnvlp7pjt%tm$f+bDh` zA@PuS@Qq`mXgRSraWnW)h8}Jnr?>4GHV1de-$+O^Tvg;LRnhS=@R! ztvKsZbT}=6pN?-${_gp literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_clock.png b/app/src/main/res/drawable-xxxhdpi/ic_clock.png new file mode 100644 index 0000000000000000000000000000000000000000..bfd0dc3e43a3d5d42d2aee0cb2942d96757b89a7 GIT binary patch literal 1279 zcmV@SyN}oy6U71|;`wv!}s!~OHBAzjPKserIB(dTLim;I*m~en~6qLL~6jL~XNk^F|d4;-sh!@_amUxfBq~n!~ z^c61=%?|8j@D4Yzh+Z_J9El`RmWK3Z5jXM<8Q9rMlz4+=o+dXxv5`(BNG?dEBb)e% z+&oUAm`5=_=WdzNDA?c&SE#g{X#`ChjJVwm;l$1 zBw-+hs|gUyUP_z0c+v=FHyy+PI*>*%KT<@(MMtH*1Xg!QXy}O5 z7V#Kcuxc&tk-%^0o+C;e;%{7jsy~PB2javn=AiqLR1xz5bfoelx|!k*u^dDdpr(jt z0Tk3GfGUkxaf8X|t{3q%fPx#)O%ONu3DqeI=4pUJoI>@ZI7fSQ>qR^dpkO_^_Tm(G zqB=)vo(Cw%IaGH#|HMs4wNu3V06KP}x^DRIPoT03#dl>8elZ47sL)B@L?=+;t@wgX($re*>E(L?p15OXxD#Mxr>xX7`^Gb5T7aVW0w! zVYQc`;s_6;nj?1Tj_QWF;5SWwMK8$p!V%rHVbi zMzvH7pezq!wVx3#eks2cC%6{X$6^TW`2njpFLyEV3973?-DIdNh7iXR&Y{a^RqPRgU2T%oQD0zhX z1W+9$R@`A8y01xDZC3M$;sta+5G(G{$(N1p%~-XP&~P_a!^A@j z!RpR%R%MQ&OQ*Sbgl43pJ4R6n9o?}y>sj6AELL5;DLhT|sqo|;iF`pY_ZY04<>xMf z`IJO6FZ|yKW;g8({Uz)+U;0x}jspY};Ht1|msfdSyR<33?q;?h#aHvy<9hyAk8P05 z^S0&hjt0u#Pm$dPJB%h){6%AKHam*w1M)M*#W3it_QRk)p&Em= paoltc^8+7xF^(G%5fKp)@jFaBLm`ZzP5}S_002ovPDHLkV1jBOMo9nw literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/dialog_manage_visible_tabs.xml b/app/src/main/res/layout/dialog_manage_visible_tabs.xml index 65e8978c..e690b1dc 100644 --- a/app/src/main/res/layout/dialog_manage_visible_tabs.xml +++ b/app/src/main/res/layout/dialog_manage_visible_tabs.xml @@ -30,6 +30,14 @@ android:paddingTop="@dimen/activity_margin" android:text="@string/favorites"/> + + + + + + +