115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root/*
215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Copyright (C) 2008 The Android Open Source Project
315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Licensed under the Apache License, Version 2.0 (the "License");
515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * you may not use this file except in compliance with the License.
615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * You may obtain a copy of the License at
715a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
815a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *      http://www.apache.org/licenses/LICENSE-2.0
915a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root *
1015a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * Unless required by applicable law or agreed to in writing, software
1115a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * distributed under the License is distributed on an "AS IS" BASIS,
1215a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1315a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * See the License for the specific language governing permissions and
1415a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root * limitations under the License.
1515a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root */
1615a4d2ffd04dc6c70f2cd17dae12ac6bc14c69abKenny Root
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage com.android.server.status;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.BroadcastReceiver;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.IntentFilter;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.util.AttributeSet;
248a9b22056b13477f59df934928c00c58b5871c95Joe Onoratoimport android.util.Slog;
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.widget.TextView;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.view.MotionEvent;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
28209bdae7b3a70e8391176dcfd9587791aa7a18daEric Fischerimport java.text.DateFormat;
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.Date;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic final class DateView extends TextView {
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private static final String TAG = "DateView";
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private boolean mUpdating = false;
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        @Override
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        public void onReceive(Context context, Intent intent) {
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String action = intent.getAction();
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (action.equals(Intent.ACTION_TIME_TICK)
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                    || action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                updateClock();
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    };
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public DateView(Context context, AttributeSet attrs) {
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super(context, attrs);
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void onAttachedToWindow() {
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.onAttachedToWindow();
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected void onDetachedFromWindow() {
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        super.onDetachedFromWindow();
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        setUpdates(false);
609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    @Override
639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    protected int getSuggestedMinimumWidth() {
649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        // makes the large background bitmap not force us to full width
659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        return 0;
669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    private final void updateClock() {
699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        Date now = new Date();
70209bdae7b3a70e8391176dcfd9587791aa7a18daEric Fischer        setText(DateFormat.getDateInstance(DateFormat.LONG).format(now));
719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    void setUpdates(boolean update) {
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        if (update != mUpdating) {
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            mUpdating = update;
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            if (update) {
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                // Register for Intent broadcasts for the clock and battery
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                IntentFilter filter = new IntentFilter();
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                filter.addAction(Intent.ACTION_TIME_TICK);
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                mContext.registerReceiver(mIntentReceiver, filter, null, null);
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                updateClock();
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            } else {
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project                mContext.unregisterReceiver(mIntentReceiver);
859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            }
869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project        }
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    }
889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
90