diff options
author | Danny Baumann <dannybaumann@web.de> | 2016-01-07 13:00:27 +0100 |
---|---|---|
committer | Danny Baumann <dannybaumann@web.de> | 2016-01-21 08:27:45 +0100 |
commit | a1739cf58ca6685c9d198ed0f3361c144d48c105 (patch) | |
tree | d4b4638a5e5f92f42d3e7059cf19cd743de4209c /src/com/android/dialer/calllog | |
parent | bd62aa81d16fd5832afa0412b3f1204314dfa4a3 (diff) | |
download | packages_apps_Dialer-a1739cf58ca6685c9d198ed0f3361c144d48c105.tar.gz packages_apps_Dialer-a1739cf58ca6685c9d198ed0f3361c144d48c105.tar.bz2 packages_apps_Dialer-a1739cf58ca6685c9d198ed0f3361c144d48c105.zip |
Add back call stats feature.
Change-Id: If6deee65dc30854f4454a8cdd28fdbf3d529da04
Diffstat (limited to 'src/com/android/dialer/calllog')
-rw-r--r-- | src/com/android/dialer/calllog/CallLogActivity.java | 31 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallLogQueryHandler.java | 5 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/SpinnerContent.java | 132 |
3 files changed, 162 insertions, 6 deletions
diff --git a/src/com/android/dialer/calllog/CallLogActivity.java b/src/com/android/dialer/calllog/CallLogActivity.java index 97e601630..1d2ea475c 100644 --- a/src/com/android/dialer/calllog/CallLogActivity.java +++ b/src/com/android/dialer/calllog/CallLogActivity.java @@ -39,23 +39,28 @@ import com.android.contacts.common.util.PermissionsUtil; import com.android.contacts.commonbind.analytics.AnalyticsUtil; import com.android.dialer.DialtactsActivity; import com.android.dialer.R; +import com.android.dialer.callstats.CallStatsFragment; import com.android.dialer.util.DialerUtils; import com.android.dialer.voicemail.VoicemailStatusHelper; import com.android.dialer.voicemail.VoicemailStatusHelperImpl; +import com.android.dialer.widget.DoubleDatePickerDialog; -public class CallLogActivity extends Activity implements ViewPager.OnPageChangeListener { +public class CallLogActivity extends Activity implements + ViewPager.OnPageChangeListener, DoubleDatePickerDialog.OnDateSetListener { private ViewPager mViewPager; private ViewPagerTabs mViewPagerTabs; private ViewPagerAdapter mViewPagerAdapter; private CallLogFragment mAllCallsFragment; private CallLogFragment mMissedCallsFragment; + private CallStatsFragment mStatsFragment; private String[] mTabTitles; private static final int TAB_INDEX_ALL = 0; private static final int TAB_INDEX_MISSED = 1; + private static final int TAB_INDEX_STATS = 2; - private static final int TAB_INDEX_COUNT = 2; + private static final int TAB_INDEX_COUNT = 3; private boolean mIsResumed; @@ -76,20 +81,24 @@ public class CallLogActivity extends Activity implements ViewPager.OnPageChangeL return new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL); case TAB_INDEX_MISSED: return new CallLogFragment(Calls.MISSED_TYPE); + case TAB_INDEX_STATS: + return new CallStatsFragment(); } throw new IllegalStateException("No fragment at position " + position); } @Override public Object instantiateItem(ViewGroup container, int position) { - final CallLogFragment fragment = - (CallLogFragment) super.instantiateItem(container, position); + final Object fragment = super.instantiateItem(container, position); switch (position) { case TAB_INDEX_ALL: - mAllCallsFragment = fragment; + mAllCallsFragment = (CallLogFragment) fragment; break; case TAB_INDEX_MISSED: - mMissedCallsFragment = fragment; + mMissedCallsFragment = (CallLogFragment) fragment; + break; + case TAB_INDEX_STATS: + mStatsFragment = (CallStatsFragment) fragment; break; } return fragment; @@ -139,6 +148,7 @@ public class CallLogActivity extends Activity implements ViewPager.OnPageChangeL mTabTitles = new String[TAB_INDEX_COUNT]; mTabTitles[0] = getString(R.string.call_log_all_title); mTabTitles[1] = getString(R.string.call_log_missed_title); + mTabTitles[2] = getString(R.string.call_log_stats_title); mViewPager = (ViewPager) findViewById(R.id.call_log_pager); @@ -200,6 +210,15 @@ public class CallLogActivity extends Activity implements ViewPager.OnPageChangeL } @Override + public void onDateSet(long from, long to) { + switch (mViewPager.getCurrentItem()) { + case TAB_INDEX_STATS: + mStatsFragment.onDateSet(from, to); + break; + } + } + + @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { mViewPagerTabs.onPageScrolled(position, positionOffset, positionOffsetPixels); } diff --git a/src/com/android/dialer/calllog/CallLogQueryHandler.java b/src/com/android/dialer/calllog/CallLogQueryHandler.java index aceca62aa..7da9b1dbe 100644 --- a/src/com/android/dialer/calllog/CallLogQueryHandler.java +++ b/src/com/android/dialer/calllog/CallLogQueryHandler.java @@ -68,6 +68,11 @@ public class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler { */ public static final int CALL_TYPE_ALL = -1; + /** + * To specify all slots. + */ + public static final int CALL_SIM_ALL = -1; + private final WeakReference<Listener> mListener; private final Context mContext; diff --git a/src/com/android/dialer/calllog/SpinnerContent.java b/src/com/android/dialer/calllog/SpinnerContent.java new file mode 100644 index 000000000..721e3d208 --- /dev/null +++ b/src/com/android/dialer/calllog/SpinnerContent.java @@ -0,0 +1,132 @@ +/* + * Copyright (C) 2014 The CyanogenMod Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License + */ +package com.android.dialer.calllog; + +import android.content.Context; +import android.provider.CallLog; +import android.telephony.TelephonyManager; +import android.text.TextUtils; +import android.util.Log; +import android.widget.Spinner; + +import com.android.contacts.common.MoreContactUtils; +import com.android.dialer.R; + +import java.util.ArrayList; +import java.util.List; + +/** + * To save the spinner content. + */ +public class SpinnerContent { + private static String TAG = SpinnerContent.class.getSimpleName(); + + public final int value; + public final String label; + + // The index for call type spinner. + private static final int INDEX_CALL_TYPE_ALL = 0; + private static final int INDEX_CALL_TYPE_INCOMING = 1; + private static final int INDEX_CALL_TYPE_OUTGOING = 2; + private static final int INDEX_CALL_TYPE_MISSED = 3; + private static final int INDEX_CALL_TYPE_BLACKLIST = 4; + private static final int INDEX_CALL_TYPE_VOICEMAIL = 5; + + public static void setSpinnerContentValue(Spinner spinner, int value) { + for (int i = 0, count = spinner.getCount(); i < count; i++) { + SpinnerContent sc = (SpinnerContent) spinner.getItemAtPosition(i); + if (sc.value == value) { + spinner.setSelection(i, true); + Log.i(TAG, "Set selection for spinner(" + sc + ") with the value: " + value); + return; + } + } + } + + public SpinnerContent(int value, String label) { + this.value = value; + this.label = label; + } + + @Override + public String toString() { + return label; + } + + /** + * @return the spinner contents for the different sims (all, sim0, sim1 etc) + */ + public static List<SpinnerContent> setupSubFilterContent(Context context) { + TelephonyManager telephonyManager = + (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + int count = telephonyManager.getPhoneCount(); + // Update the filter sub content. + ArrayList<SpinnerContent> values = new ArrayList<SpinnerContent>(count + 1); + values.add(new SpinnerContent(CallLogQueryHandler.CALL_SIM_ALL, + context.getString(R.string.call_log_show_all_slots))); + for (int i = 0; i < count; i++) { + String subDisplayName = PhoneAccountUtils.getAccountLabel(context, + MoreContactUtils.getAccount(i)); + if (!TextUtils.isEmpty(subDisplayName)) { + values.add(new SpinnerContent(i, subDisplayName)); + } + } + return values; + } + + /** + * @param voicemailAvailable true if voicemail should be included in the return values + * @return the spinner contents for the different call types (incoming, outgoing etc) + */ + public static List<SpinnerContent> setupStatusFilterContent(Context context, + boolean voicemailAvailable) { + // Didn't show the voice mail item if not available. + int statusCount = voicemailAvailable ? 6 : 5; + ArrayList<SpinnerContent> values = new ArrayList<SpinnerContent>(statusCount); + for (int i = 0; i < statusCount; i++) { + int value = CallLogQueryHandler.CALL_TYPE_ALL; + String label = null; + switch (i) { + case INDEX_CALL_TYPE_ALL: + value = CallLogQueryHandler.CALL_TYPE_ALL; + label = context.getString(R.string.call_log_all_calls_header); + break; + case INDEX_CALL_TYPE_INCOMING: + value = CallLog.Calls.INCOMING_TYPE; + label = context.getString(R.string.call_log_incoming_header); + break; + case INDEX_CALL_TYPE_OUTGOING: + value = CallLog.Calls.OUTGOING_TYPE; + label = context.getString(R.string.call_log_outgoing_header); + break; + case INDEX_CALL_TYPE_MISSED: + value = CallLog.Calls.MISSED_TYPE; + label = context.getString(R.string.call_log_missed_header); + break; + case INDEX_CALL_TYPE_BLACKLIST: + value = CallLog.Calls.BLACKLIST_TYPE; + label = context.getString(R.string.call_log_blacklist_header); + break; + case INDEX_CALL_TYPE_VOICEMAIL: + value = CallLog.Calls.VOICEMAIL_TYPE; + label = context.getString(R.string.call_log_voicemail_header); + break; + } + values.add(new SpinnerContent(value, label)); + } + return values; + } +} |