Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e74ef049 authored by Danny Baumann's avatar Danny Baumann
Browse files

Allow quick pre-selection of filter range.

Change-Id: I13bacaffdff21d8feb60a9c8939d3e17057a60f8
parent 272ccf24
Loading
Loading
Loading
Loading
+14 −5
Original line number Diff line number Diff line
@@ -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"
@@ -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" />

@@ -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" />

+10 −0
Original line number Diff line number Diff line
@@ -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>
+9 −0
Original line number Diff line number Diff line
@@ -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>
+112 −6
Original line number Diff line number Diff line
@@ -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;
@@ -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";

@@ -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;
@@ -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();
    }

@@ -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);