summaryrefslogtreecommitdiffstats
path: root/src/com/android/dialer/calllog
diff options
context:
space:
mode:
authorDanny Baumann <dannybaumann@web.de>2016-01-07 13:00:27 +0100
committerDanny Baumann <dannybaumann@web.de>2016-01-21 08:27:45 +0100
commita1739cf58ca6685c9d198ed0f3361c144d48c105 (patch)
treed4b4638a5e5f92f42d3e7059cf19cd743de4209c /src/com/android/dialer/calllog
parentbd62aa81d16fd5832afa0412b3f1204314dfa4a3 (diff)
downloadpackages_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.java31
-rw-r--r--src/com/android/dialer/calllog/CallLogQueryHandler.java5
-rw-r--r--src/com/android/dialer/calllog/SpinnerContent.java132
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;
+ }
+}