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 a3591cea..5f2fc2b1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -17,12 +17,10 @@ import com.simplemobiletools.dialer.BuildConfig import com.simplemobiletools.dialer.R import com.simplemobiletools.dialer.adapters.ViewPagerAdapter import com.simplemobiletools.dialer.extensions.config -import com.simplemobiletools.dialer.helpers.ALL_TABS_MASK -import com.simplemobiletools.dialer.helpers.CONTACTS_TAB_MASK -import com.simplemobiletools.dialer.helpers.RECENTS_TAB_MASK -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_recents.* class MainActivity : SimpleActivity() { override fun onCreate(savedInstanceState: Bundle?) { @@ -150,7 +148,11 @@ class MainActivity : SimpleActivity() { } if (refreshTabsMask and RECENTS_TAB_MASK != 0) { - + RecentsHelper(this).getRecentCalls { recents -> + runOnUiThread { + recents_fragment.updateRecents(recents) + } + } } } 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 6feb6c18..91086832 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/ContactsFragment.kt @@ -2,5 +2,58 @@ package com.simplemobiletools.dialer.fragments import android.content.Context import android.util.AttributeSet +import com.reddit.indicatorfastscroll.FastScrollItemIndicator +import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.models.SimpleContact +import com.simplemobiletools.dialer.activities.SimpleActivity +import com.simplemobiletools.dialer.adapters.ContactsAdapter +import com.simplemobiletools.dialer.extensions.config +import kotlinx.android.synthetic.main.fragment_letters_layout.view.* +import kotlinx.android.synthetic.main.fragment_recents.view.* +import java.util.* -class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) +class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) { + override fun setupFragment() { + fragment_placeholder_2.apply { + setTextColor(context.config.primaryColor) + underlineText() + setOnClickListener { + + } + } + + letter_fastscroller.textColor = context.config.textColor.getColorStateList() + letter_fastscroller_thumb.setupWithFastScroller(letter_fastscroller) + letter_fastscroller_thumb.textColor = context.config.primaryColor.getContrastColor() + } + + fun refreshContacts(contacts: ArrayList) { + setupLetterFastscroller(contacts) + if (contacts.isEmpty()) { + fragment_placeholder.beVisible() + fragment_placeholder_2.beVisible() + fragment_list.beGone() + } else { + fragment_placeholder.beGone() + fragment_placeholder_2.beGone() + fragment_list.beVisible() + ContactsAdapter(activity as SimpleActivity, contacts, fragment_list, null) { + + }.apply { + fragment_list.adapter = this + } + } + } + + private fun setupLetterFastscroller(contacts: ArrayList) { + letter_fastscroller.setupWithRecyclerView(fragment_list, { position -> + try { + val name = contacts[position].name + val character = if (name.isNotEmpty()) name.substring(0, 1) else "" + FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault())) + } catch (e: Exception) { + FastScrollItemIndicator.Text("") + } + }) + } +} 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 59ea91a1..4190cd5f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/MyViewPagerFragment.kt @@ -2,26 +2,16 @@ package com.simplemobiletools.dialer.fragments import android.content.Context import android.util.AttributeSet -import androidx.coordinatorlayout.widget.CoordinatorLayout -import com.reddit.indicatorfastscroll.FastScrollItemIndicator +import android.widget.RelativeLayout import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter -import com.simplemobiletools.commons.extensions.getColorStateList -import com.simplemobiletools.commons.extensions.getContrastColor -import com.simplemobiletools.commons.extensions.underlineText -import com.simplemobiletools.commons.models.SimpleContact import com.simplemobiletools.dialer.activities.SimpleActivity -import com.simplemobiletools.dialer.adapters.ContactsAdapter import com.simplemobiletools.dialer.extensions.config import com.simplemobiletools.dialer.helpers.Config import kotlinx.android.synthetic.main.fragment_letters_layout.view.* -import java.util.* -import kotlin.collections.ArrayList -abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : CoordinatorLayout(context, attributeSet) { +abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : RelativeLayout(context, attributeSet) { protected var activity: SimpleActivity? = null - protected var allContacts = ArrayList() - private var lastHashCode = 0 private lateinit var config: Config fun setupFragment(activity: SimpleActivity) { @@ -29,7 +19,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) if (this.activity == null) { this.activity = activity - fragment_placeholder_2?.underlineText() + setupFragment() } } @@ -37,28 +27,5 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) (fragment_list.adapter as? MyRecyclerViewAdapter)?.finishActMode() } - fun refreshContacts(contacts: ArrayList) { - ContactsAdapter(activity as SimpleActivity, contacts, fragment_list, null) { - - }.apply { - fragment_list.adapter = this - } - - letter_fastscroller.textColor = config.textColor.getColorStateList() - setupLetterFastscroller(contacts) - letter_fastscroller_thumb.setupWithFastScroller(letter_fastscroller) - letter_fastscroller_thumb.textColor = config.primaryColor.getContrastColor() - } - - private fun setupLetterFastscroller(contacts: ArrayList) { - letter_fastscroller.setupWithRecyclerView(fragment_list, { position -> - try { - val name = contacts[position].name - val character = if (name.isNotEmpty()) name.substring(0, 1) else "" - FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault())) - } catch (e: Exception) { - FastScrollItemIndicator.Text("") - } - }) - } + abstract fun setupFragment() } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt index 57c88513..d51a49d0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/fragments/RecentsFragment.kt @@ -2,5 +2,41 @@ package com.simplemobiletools.dialer.fragments import android.content.Context import android.util.AttributeSet +import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG +import com.simplemobiletools.dialer.R +import com.simplemobiletools.dialer.extensions.config +import com.simplemobiletools.dialer.models.RecentCall +import kotlinx.android.synthetic.main.fragment_recents.view.* -class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) +class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) { + override fun setupFragment() { + val placeholderResId = if (context.hasPermission(PERMISSION_READ_CALL_LOG)) { + R.string.no_previous_calls + } else { + R.string.could_not_access_the_call_history + } + + recents_placeholder.text = context.getString(placeholderResId) + + recents_placeholder_2.apply { + setTextColor(context.config.primaryColor) + underlineText() + setOnClickListener { + + } + } + } + + fun updateRecents(recents: ArrayList) { + if (recents.isEmpty()) { + recents_placeholder.beVisible() + recents_placeholder_2.beVisibleIf(!context.hasPermission(PERMISSION_READ_CALL_LOG)) + recents_list.beGone() + } else { + recents_placeholder.beGone() + recents_placeholder_2.beGone() + recents_list.beVisible() + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt new file mode 100644 index 00000000..da7864fc --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/helpers/RecentsHelper.kt @@ -0,0 +1,14 @@ +package com.simplemobiletools.dialer.helpers + +import android.content.Context +import com.simplemobiletools.commons.helpers.ensureBackgroundThread +import com.simplemobiletools.dialer.models.RecentCall + +class RecentsHelper(val context: Context) { + fun getRecentCalls(callback: (ArrayList) -> Unit) { + ensureBackgroundThread { + val recents = ArrayList() + callback(recents) + } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/models/Organization.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/models/Organization.kt deleted file mode 100644 index 8340cebc..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/models/Organization.kt +++ /dev/null @@ -1,7 +0,0 @@ -package com.simplemobiletools.dialer.models - -data class Organization(var company: String, var jobPosition: String) { - fun isEmpty() = company.isEmpty() && jobPosition.isEmpty() - - fun isNotEmpty() = !isEmpty() -} diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/models/PhoneNumber.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/models/PhoneNumber.kt deleted file mode 100644 index 56900719..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/models/PhoneNumber.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.simplemobiletools.dialer.models - -data class PhoneNumber(var value: String, var type: Int, var label: String, var normalizedNumber: String?) diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt new file mode 100644 index 00000000..58737f29 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/models/RecentCall.kt @@ -0,0 +1,3 @@ +package com.simplemobiletools.dialer.models + +data class RecentCall(var phoneNumber: String, var name: String, var startTS: Int, var duration: Int, var type: Int) diff --git a/app/src/main/res/layout/fragment_letters_layout.xml b/app/src/main/res/layout/fragment_letters_layout.xml index bea2b84c..e0d0c429 100644 --- a/app/src/main/res/layout/fragment_letters_layout.xml +++ b/app/src/main/res/layout/fragment_letters_layout.xml @@ -31,7 +31,7 @@ android:background="?attr/selectableItemBackground" android:gravity="center" android:padding="@dimen/activity_margin" - android:text="@string/change_filter" + android:text="@string/create_new" android:textSize="@dimen/bigger_text_size" android:visibility="gone" /> @@ -66,6 +66,8 @@ android:id="@+id/fragment_fab" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_alignParentEnd="true" + android:layout_alignParentBottom="true" android:layout_gravity="bottom|end" android:layout_margin="@dimen/activity_margin" android:src="@drawable/ic_plus_vector" /> diff --git a/app/src/main/res/layout/fragment_recents.xml b/app/src/main/res/layout/fragment_recents.xml index f093a2f0..bb396eba 100644 --- a/app/src/main/res/layout/fragment_recents.xml +++ b/app/src/main/res/layout/fragment_recents.xml @@ -24,7 +24,7 @@ android:id="@+id/recents_placeholder_2" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_below="@+id/fragment_placeholder" + android:layout_below="@+id/recents_placeholder" android:layout_centerHorizontal="true" android:background="?attr/selectableItemBackground" android:gravity="center"