Loading res/layout/double_date_picker_dialog.xml +14 −5 Original line number Diff line number Diff line Loading @@ -22,6 +22,13 @@ android:gravity="center" android:orientation="vertical" > <Spinner android:id="@+id/date_quick_selection" android:layout_marginTop="3dp" android:layout_marginBottom="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" Loading @@ -32,9 +39,10 @@ android:textAppearance="?android:attr/textAppearanceMedium" /> <DatePicker android:id="@+id/datePickerFrom" android:id="@+id/date_picker_from" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:calendarViewShown="false" android:spinnersShown="true" /> Loading @@ -47,9 +55,10 @@ android:textAppearance="?android:attr/textAppearanceMedium" /> <DatePicker android:id="@+id/datePickerTo" android:id="@+id/date_picker_to" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:calendarViewShown="false" android:spinnersShown="true" /> Loading res/values-de/strings.xml +10 −0 Original line number Diff line number Diff line Loading @@ -602,6 +602,16 @@ <string name="call_stats_reset_filter">Datumsbereich zurücksetzen</string> <string name="call_stats_sort_by_duration">Nach Anrufdauer sortieren</string> <string name="call_stats_sort_by_count">Nach Anrufanzahl sortieren</string> <string name="date_quick_selection">Schnellauswahl</string> <string name="date_qs_currentmonth">Aktueller Monat</string> <string name="date_qs_currentquarter">Aktuelles Quartal</string> <string name="date_qs_currentyear">Aktuelles Jahr</string> <string name="date_qs_lastweek">Letzte Woche</string> <string name="date_qs_lastmonth">Letzter Monat</string> <string name="date_qs_lastquarter">Letztes Quartal</string> <string name="date_qs_lastyear">Letztes Jahr</string> <plurals name="call"> <item quantity="one">1 Anruf</item> <item quantity="other">%d Anrufe</item> Loading res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -1897,6 +1897,15 @@ connection to the voicemail server is lost. [CHAR LIMIT=64] --> <string name="call_stats_filter_to">End date</string> <string name="call_stats_filter_picker_title">Filter range</string> <string name="date_quick_selection">Quick selection</string> <string name="date_qs_currentmonth">Current month</string> <string name="date_qs_currentquarter">Current quarter</string> <string name="date_qs_currentyear">Current year</string> <string name="date_qs_lastweek">Last week</string> <string name="date_qs_lastmonth">Last month</string> <string name="date_qs_lastquarter">Last quarter</string> <string name="date_qs_lastyear">Last year</string> <string name="call_stats_date_filter">Adjust time range</string> <string name="call_stats_reset_filter">Reset time range</string> <string name="call_stats_sort_by_duration">Sort by call duration</string> Loading src/com/android/contacts/callstats/DoubleDatePickerDialog.java +112 −6 Original line number Diff line number Diff line Loading @@ -28,11 +28,16 @@ import android.text.format.DateUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.DatePicker; import android.widget.DatePicker.OnDateChangedListener; import android.widget.Spinner; import android.widget.TextView; import java.lang.System; import java.util.ArrayList; import java.util.Calendar; import com.android.contacts.R; Loading @@ -42,7 +47,7 @@ import com.android.contacts.R; * Used to filter the callstats query. */ public class DoubleDatePickerDialog extends AlertDialog implements OnClickListener, OnDateChangedListener { implements OnClickListener, OnDateChangedListener, OnItemSelectedListener { private static final String TAG = "DoubleDatePickerDialog"; Loading Loading @@ -86,18 +91,80 @@ public class DoubleDatePickerDialog extends AlertDialog } } private interface QuickSelection { void adjustStartDate(Calendar date); } private static final int[] QUICKSELECTION_ENTRIES = new int[] { R.string.date_qs_currentmonth, R.string.date_qs_currentquarter, R.string.date_qs_currentyear, R.string.date_qs_lastweek, R.string.date_qs_lastmonth, R.string.date_qs_lastquarter, R.string.date_qs_lastyear }; private static final QuickSelection[] QUICKSELECTIONS = new QuickSelection[] { new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.set(Calendar.DAY_OF_MONTH, 1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { final int currentMonth = date.get(Calendar.MONTH); date.set(Calendar.MONTH, currentMonth - (currentMonth % 3)); date.set(Calendar.DAY_OF_MONTH, 1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.set(Calendar.MONTH, 0); date.set(Calendar.DAY_OF_MONTH, 1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.add(Calendar.WEEK_OF_YEAR, -1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.add(Calendar.MONTH, -1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.add(Calendar.MONTH, -3); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.add(Calendar.YEAR, -1); } }, }; private static final String YEAR = "year"; private static final String MONTH = "month"; private static final String DAY = "day"; private final Spinner mQuickSelSpinner; private final DatePicker mDatePickerFrom; private final DatePicker mDatePickerTo; private final OnDateSetListener mCallBack; private Button mOkButton; private int mQuickSelSelection = -1; public DoubleDatePickerDialog(Context context, OnDateSetListener callBack) { public DoubleDatePickerDialog(final Context context, OnDateSetListener callBack) { super(context); mCallBack = callBack; Loading @@ -112,8 +179,29 @@ public class DoubleDatePickerDialog extends AlertDialog View view = inflater.inflate(R.layout.double_date_picker_dialog, null); setView(view); mDatePickerFrom = (DatePicker) view.findViewById(R.id.datePickerFrom); mDatePickerTo = (DatePicker) view.findViewById(R.id.datePickerTo); mDatePickerFrom = (DatePicker) view.findViewById(R.id.date_picker_from); mDatePickerTo = (DatePicker) view.findViewById(R.id.date_picker_to); ArrayList<CharSequence> quickSelEntries = new ArrayList<CharSequence>(); for (int entryId : QUICKSELECTION_ENTRIES) { quickSelEntries.add(context.getString(entryId)); } ArrayAdapter<CharSequence> quickSelAdapter = new ArrayAdapter<CharSequence>( context, android.R.layout.simple_spinner_item, android.R.id.text1, quickSelEntries) { @Override public View getView(int position, View convertView, android.view.ViewGroup parent) { final TextView v = (TextView) super.getView(position, convertView, parent); v.setText(context.getString(R.string.date_quick_selection)); return v; } }; quickSelAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mQuickSelSpinner = (Spinner) view.findViewById(R.id.date_quick_selection); mQuickSelSpinner.setOnItemSelectedListener(this); mQuickSelSpinner.setAdapter(quickSelAdapter); resetPickers(); } Loading @@ -135,6 +223,24 @@ public class DoubleDatePickerDialog extends AlertDialog } } @Override public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { if (mQuickSelSelection >= 0) { QuickSelection sel = QUICKSELECTIONS[pos]; Calendar from = Calendar.getInstance(); long millisTo = from.getTimeInMillis(); sel.adjustStartDate(from); long millisFrom = from.getTimeInMillis(); setValues(millisFrom, millisTo); } mQuickSelSelection = pos; } @Override public void onNothingSelected(AdapterView<?> parent) { } public void onDateChanged(DatePicker view, int year, int month, int day) { view.init(year, month, day, this); Loading Loading
res/layout/double_date_picker_dialog.xml +14 −5 Original line number Diff line number Diff line Loading @@ -22,6 +22,13 @@ android:gravity="center" android:orientation="vertical" > <Spinner android:id="@+id/date_quick_selection" android:layout_marginTop="3dp" android:layout_marginBottom="3dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" Loading @@ -32,9 +39,10 @@ android:textAppearance="?android:attr/textAppearanceMedium" /> <DatePicker android:id="@+id/datePickerFrom" android:id="@+id/date_picker_from" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:calendarViewShown="false" android:spinnersShown="true" /> Loading @@ -47,9 +55,10 @@ android:textAppearance="?android:attr/textAppearanceMedium" /> <DatePicker android:id="@+id/datePickerTo" android:id="@+id/date_picker_to" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_height="0dp" android:layout_weight="1" android:calendarViewShown="false" android:spinnersShown="true" /> Loading
res/values-de/strings.xml +10 −0 Original line number Diff line number Diff line Loading @@ -602,6 +602,16 @@ <string name="call_stats_reset_filter">Datumsbereich zurücksetzen</string> <string name="call_stats_sort_by_duration">Nach Anrufdauer sortieren</string> <string name="call_stats_sort_by_count">Nach Anrufanzahl sortieren</string> <string name="date_quick_selection">Schnellauswahl</string> <string name="date_qs_currentmonth">Aktueller Monat</string> <string name="date_qs_currentquarter">Aktuelles Quartal</string> <string name="date_qs_currentyear">Aktuelles Jahr</string> <string name="date_qs_lastweek">Letzte Woche</string> <string name="date_qs_lastmonth">Letzter Monat</string> <string name="date_qs_lastquarter">Letztes Quartal</string> <string name="date_qs_lastyear">Letztes Jahr</string> <plurals name="call"> <item quantity="one">1 Anruf</item> <item quantity="other">%d Anrufe</item> Loading
res/values/strings.xml +9 −0 Original line number Diff line number Diff line Loading @@ -1897,6 +1897,15 @@ connection to the voicemail server is lost. [CHAR LIMIT=64] --> <string name="call_stats_filter_to">End date</string> <string name="call_stats_filter_picker_title">Filter range</string> <string name="date_quick_selection">Quick selection</string> <string name="date_qs_currentmonth">Current month</string> <string name="date_qs_currentquarter">Current quarter</string> <string name="date_qs_currentyear">Current year</string> <string name="date_qs_lastweek">Last week</string> <string name="date_qs_lastmonth">Last month</string> <string name="date_qs_lastquarter">Last quarter</string> <string name="date_qs_lastyear">Last year</string> <string name="call_stats_date_filter">Adjust time range</string> <string name="call_stats_reset_filter">Reset time range</string> <string name="call_stats_sort_by_duration">Sort by call duration</string> Loading
src/com/android/contacts/callstats/DoubleDatePickerDialog.java +112 −6 Original line number Diff line number Diff line Loading @@ -28,11 +28,16 @@ import android.text.format.DateUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.DatePicker; import android.widget.DatePicker.OnDateChangedListener; import android.widget.Spinner; import android.widget.TextView; import java.lang.System; import java.util.ArrayList; import java.util.Calendar; import com.android.contacts.R; Loading @@ -42,7 +47,7 @@ import com.android.contacts.R; * Used to filter the callstats query. */ public class DoubleDatePickerDialog extends AlertDialog implements OnClickListener, OnDateChangedListener { implements OnClickListener, OnDateChangedListener, OnItemSelectedListener { private static final String TAG = "DoubleDatePickerDialog"; Loading Loading @@ -86,18 +91,80 @@ public class DoubleDatePickerDialog extends AlertDialog } } private interface QuickSelection { void adjustStartDate(Calendar date); } private static final int[] QUICKSELECTION_ENTRIES = new int[] { R.string.date_qs_currentmonth, R.string.date_qs_currentquarter, R.string.date_qs_currentyear, R.string.date_qs_lastweek, R.string.date_qs_lastmonth, R.string.date_qs_lastquarter, R.string.date_qs_lastyear }; private static final QuickSelection[] QUICKSELECTIONS = new QuickSelection[] { new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.set(Calendar.DAY_OF_MONTH, 1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { final int currentMonth = date.get(Calendar.MONTH); date.set(Calendar.MONTH, currentMonth - (currentMonth % 3)); date.set(Calendar.DAY_OF_MONTH, 1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.set(Calendar.MONTH, 0); date.set(Calendar.DAY_OF_MONTH, 1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.add(Calendar.WEEK_OF_YEAR, -1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.add(Calendar.MONTH, -1); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.add(Calendar.MONTH, -3); } }, new QuickSelection() { @Override public void adjustStartDate(Calendar date) { date.add(Calendar.YEAR, -1); } }, }; private static final String YEAR = "year"; private static final String MONTH = "month"; private static final String DAY = "day"; private final Spinner mQuickSelSpinner; private final DatePicker mDatePickerFrom; private final DatePicker mDatePickerTo; private final OnDateSetListener mCallBack; private Button mOkButton; private int mQuickSelSelection = -1; public DoubleDatePickerDialog(Context context, OnDateSetListener callBack) { public DoubleDatePickerDialog(final Context context, OnDateSetListener callBack) { super(context); mCallBack = callBack; Loading @@ -112,8 +179,29 @@ public class DoubleDatePickerDialog extends AlertDialog View view = inflater.inflate(R.layout.double_date_picker_dialog, null); setView(view); mDatePickerFrom = (DatePicker) view.findViewById(R.id.datePickerFrom); mDatePickerTo = (DatePicker) view.findViewById(R.id.datePickerTo); mDatePickerFrom = (DatePicker) view.findViewById(R.id.date_picker_from); mDatePickerTo = (DatePicker) view.findViewById(R.id.date_picker_to); ArrayList<CharSequence> quickSelEntries = new ArrayList<CharSequence>(); for (int entryId : QUICKSELECTION_ENTRIES) { quickSelEntries.add(context.getString(entryId)); } ArrayAdapter<CharSequence> quickSelAdapter = new ArrayAdapter<CharSequence>( context, android.R.layout.simple_spinner_item, android.R.id.text1, quickSelEntries) { @Override public View getView(int position, View convertView, android.view.ViewGroup parent) { final TextView v = (TextView) super.getView(position, convertView, parent); v.setText(context.getString(R.string.date_quick_selection)); return v; } }; quickSelAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mQuickSelSpinner = (Spinner) view.findViewById(R.id.date_quick_selection); mQuickSelSpinner.setOnItemSelectedListener(this); mQuickSelSpinner.setAdapter(quickSelAdapter); resetPickers(); } Loading @@ -135,6 +223,24 @@ public class DoubleDatePickerDialog extends AlertDialog } } @Override public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { if (mQuickSelSelection >= 0) { QuickSelection sel = QUICKSELECTIONS[pos]; Calendar from = Calendar.getInstance(); long millisTo = from.getTimeInMillis(); sel.adjustStartDate(from); long millisFrom = from.getTimeInMillis(); setValues(millisFrom, millisTo); } mQuickSelSelection = pos; } @Override public void onNothingSelected(AdapterView<?> parent) { } public void onDateChanged(DatePicker view, int year, int month, int day) { view.init(year, month, day, this); Loading