DateView.java revision 9066cfe9886ac131c34d59ed0e2d287b0e3c0087
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.server.status;
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.BroadcastReceiver;
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent;
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.IntentFilter;
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.format.DateFormat;
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet;
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.Log;
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.TextView;
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent;
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Date;
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic final class DateView extends TextView {
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final String TAG = "DateView";
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private boolean mUpdating = false;
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @Override
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void onReceive(Context context, Intent intent) {
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String action = intent.getAction();
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (action.equals(Intent.ACTION_TIME_TICK)
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    || action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                updateClock();
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public DateView(Context context, AttributeSet attrs) {
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(context, attrs);
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void onAttachedToWindow() {
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.onAttachedToWindow();
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void onDetachedFromWindow() {
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.onDetachedFromWindow();
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setUpdates(false);
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected int getSuggestedMinimumWidth() {
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // makes the large background bitmap not force us to full width
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final void updateClock() {
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Date now = new Date();
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setText(DateFormat.getLongDateFormat(getContext()).format(now));
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setUpdates(boolean update) {
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (update != mUpdating) {
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mUpdating = update;
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (update) {
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                // Register for Intent broadcasts for the clock and battery
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IntentFilter filter = new IntentFilter();
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                filter.addAction(Intent.ACTION_TIME_TICK);
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                mContext.registerReceiver(mIntentReceiver, filter, null, null);
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                updateClock();
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else {
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                mContext.unregisterReceiver(mIntentReceiver);
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
74