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

Commit 609bbf18 authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change I54089080 into eclair

* changes:
  Update keyguard and pattern-lock layouts for new UX designs.
parents ea48cd6d e3ea6e3d
Loading
Loading
Loading
Loading
+186 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2008 The Android Open Source 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.internal.widget;

import com.android.internal.R;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.graphics.Typeface;
import android.os.Handler;
import android.provider.Settings;
import android.text.format.DateFormat;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;

import java.text.DateFormatSymbols;
import java.util.Calendar;

/**
 * Displays the time
 */
public class DigitalClock extends LinearLayout {

    private final static String M12 = "h:mm";
    private final static String M24 = "kk:mm";

    private Calendar mCalendar;
    private String mFormat;
    private TextView mTimeDisplay;
    private AmPm mAmPm;
    private ContentObserver mFormatChangeObserver;
    private boolean mLive = true;
    private boolean mAttached;

    /* called by system on minute ticks */
    private final Handler mHandler = new Handler();
    private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                if (mLive && intent.getAction().equals(
                            Intent.ACTION_TIMEZONE_CHANGED)) {
                    mCalendar = Calendar.getInstance();
                }
                updateTime();
            }
        };

    static class AmPm {
        private TextView mAmPm;
        private String mAmString, mPmString;

        AmPm(View parent, Typeface tf) {
            mAmPm = (TextView) parent.findViewById(R.id.am_pm);
            if (tf != null) {
                mAmPm.setTypeface(tf);
            }

            String[] ampm = new DateFormatSymbols().getAmPmStrings();
            mAmString = ampm[0];
            mPmString = ampm[1];
        }

        void setShowAmPm(boolean show) {
            mAmPm.setVisibility(show ? View.VISIBLE : View.GONE);
        }

        void setIsMorning(boolean isMorning) {
            mAmPm.setText(isMorning ? mAmString : mPmString);
        }
    }

    private class FormatChangeObserver extends ContentObserver {
        public FormatChangeObserver() {
            super(new Handler());
        }
        @Override
        public void onChange(boolean selfChange) {
            setDateFormat();
            updateTime();
        }
    }

    public DigitalClock(Context context) {
        this(context, null);
    }

    public DigitalClock(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    protected void onFinishInflate() {
        super.onFinishInflate();

        mTimeDisplay = (TextView) findViewById(R.id.timeDisplay);
        mTimeDisplay.setTypeface(Typeface.createFromFile("/system/fonts/Clockopia.ttf"));
        mAmPm = new AmPm(this, Typeface.createFromFile("/system/fonts/DroidSans-Bold.ttf"));
        mCalendar = Calendar.getInstance();

        setDateFormat();
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();

        if (mAttached) return;
        mAttached = true;

        if (mLive) {
            /* monitor time ticks, time changed, timezone */
            IntentFilter filter = new IntentFilter();
            filter.addAction(Intent.ACTION_TIME_TICK);
            filter.addAction(Intent.ACTION_TIME_CHANGED);
            filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
            mContext.registerReceiver(mIntentReceiver, filter, null, mHandler);
        }

        /* monitor 12/24-hour display preference */
        mFormatChangeObserver = new FormatChangeObserver();
        mContext.getContentResolver().registerContentObserver(
                Settings.System.CONTENT_URI, true, mFormatChangeObserver);

        updateTime();
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();

        if (!mAttached) return;
        mAttached = false;

        if (mLive) {
            mContext.unregisterReceiver(mIntentReceiver);
        }
        mContext.getContentResolver().unregisterContentObserver(
                mFormatChangeObserver);
    }


    void updateTime(Calendar c) {
        mCalendar = c;
        updateTime();
    }

    private void updateTime() {
        if (mLive) {
            mCalendar.setTimeInMillis(System.currentTimeMillis());
        }

        CharSequence newTime = DateFormat.format(mFormat, mCalendar);
        mTimeDisplay.setText(newTime);
        mAmPm.setIsMorning(mCalendar.get(Calendar.AM_PM) == 0);
    }

    private void setDateFormat() {
        mFormat = android.text.format.DateFormat.is24HourFormat(getContext()) 
            ? M24 : M12;
        mAmPm.setShowAmPm(mFormat.equals(M12));
    }

    void setLive(boolean live) {
        mLive = live;
    }
}
+45 −24
Original line number Diff line number Diff line
@@ -38,47 +38,69 @@
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginTop="20dip"
            android:layout_alignParentRight="true"
            android:layout_marginTop="16dip"
            android:layout_marginRight="16dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            />
    
        <TextView
            android:id="@+id/time"
        <!-- time and date -->
        <com.android.internal.widget.DigitalClock android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/carrier"
            android:layout_marginTop="25dip"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="55sp"
            android:layout_marginBottom="8dip"
            android:layout_marginTop="16dip"
            android:layout_marginLeft="24dip"
            >

            <TextView android:id="@+id/timeDisplay"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="bottom"
                android:textSize="72sp"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:shadowColor="#C0000000"
                android:shadowDx="0"
                android:shadowDy="0"
                android:shadowRadius="3.0"
                />


            <TextView android:id="@+id/am_pm"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:gravity="bottom"
                android:textSize="22sp"
                android:singleLine="true"
                android:layout_marginLeft="8dip"
                android:layout_marginBottom="-6dip"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:shadowColor="#C0000000"
                android:shadowDx="0"
                android:shadowDy="0"
                android:shadowRadius="3.0"
                />

        </com.android.internal.widget.DigitalClock>
    
        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/time"
            android:layout_marginTop="-12dip"
            android:layout_marginLeft="24dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            />
    
        <View
            android:id="@+id/divider"
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:layout_marginTop="10dip"
            android:layout_below="@id/date"
            android:background="@android:drawable/divider_horizontal_dark"
            />
    
        <TextView
            android:id="@+id/status1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/divider"
            android:layout_below="@id/date"
            android:layout_marginTop="6dip"
            android:layout_marginLeft="24dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            android:drawablePadding="4dip"
            />

@@ -88,8 +110,8 @@
            android:layout_height="wrap_content"
            android:layout_below="@id/status1"
            android:layout_marginTop="6dip"
            android:layout_marginLeft="24dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            android:drawablePadding="4dip"
            />
    
@@ -98,9 +120,8 @@
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/status2"
            android:layout_marginLeft="24dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            android:gravity="center"
            android:layout_marginTop="12dip"
            />
    
+38 −22
Original line number Diff line number Diff line
@@ -33,7 +33,8 @@
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center_horizontal">
            android:layout_marginLeft="24dip"
            android:gravity="left">

        <TextView
            android:id="@+id/carrier"
@@ -42,45 +43,62 @@
            android:layout_alignParentTop="true"
            android:layout_marginTop="20dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            />

        <TextView
            android:id="@+id/time"
        <com.android.internal.widget.DigitalClock android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/carrier"
            android:layout_marginTop="25dip"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="55sp"
            android:layout_marginBottom="8dip"
            android:layout_marginTop="56dip"
            >

            <TextView android:id="@+id/timeDisplay"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="bottom"
                android:textSize="72sp"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:shadowColor="#C0000000"
                android:shadowDx="0"
                android:shadowDy="0"
                android:shadowRadius="3.0"
                />


            <TextView android:id="@+id/am_pm"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:gravity="bottom"
                android:textSize="22sp"
                android:singleLine="true"
                android:layout_marginLeft="8dip"
                android:layout_marginBottom="-6dip"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:shadowColor="#C0000000"
                android:shadowDx="0"
                android:shadowDy="0"
                android:shadowRadius="3.0"
                />

        </com.android.internal.widget.DigitalClock>

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/time"
            android:layout_marginTop="-12dip"
            android:layout_marginTop="6dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            />

        <View
            android:id="@+id/divider"
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:layout_marginTop="10dip"
            android:layout_below="@id/date"
            android:background="@android:drawable/divider_horizontal_dark"
            />

        <TextView
            android:id="@+id/status1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/divider"
            android:layout_below="@id/date"
            android:layout_marginTop="6dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            android:drawablePadding="4dip"
            />

@@ -91,7 +109,6 @@
            android:layout_below="@id/status1"
            android:layout_marginTop="6dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            android:drawablePadding="4dip"
            />

@@ -101,7 +118,6 @@
            android:layout_height="wrap_content"
            android:layout_below="@id/status2"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            android:gravity="center"
            android:layout_marginTop="12dip"
            />
+50 −43
Original line number Diff line number Diff line
@@ -35,54 +35,71 @@
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"
            android:gravity="center_horizontal"
            android:layout_marginLeft="24dip"
            android:gravity="left"
            >
        <TextView
            android:id="@+id/carrier"
            android:id="@+id/status1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dip"
            android:layout_marginTop="16dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            />

        <TextView
            android:id="@+id/centerDot"
            android:visibility="gone"
            android:id="@+id/carrier"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dip"
            android:layout_marginRight="5dip"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            android:textSize="17sp"
            android:drawablePadding="4dip"
            android:layout_marginTop="32dip"
            />
        <TextView
            android:id="@+id/time"
        <com.android.internal.widget.DigitalClock android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="5dip"
            android:textAppearance="?android:attr/textAppearanceLarge"
            android:textSize="35sp"
            />
        <TextView
            android:id="@+id/date"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_marginBottom="8dip"
            android:layout_marginTop="8dip"
            >

            <TextView android:id="@+id/timeDisplay"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_marginTop="-12dip"
                android:gravity="bottom"
                android:textSize="72sp"
                android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="?android:attr/textColorSecondary"
            android:textSize="17sp"
                android:shadowColor="#C0000000"
                android:shadowDx="0"
                android:shadowDy="0"
                android:shadowRadius="3.0"
                />


        <View
            android:id="@+id/divider"
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:layout_centerHorizontal="true"
            android:background="@android:drawable/divider_horizontal_dark"
            <TextView android:id="@+id/am_pm"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:gravity="bottom"
                android:textSize="22sp"
                android:singleLine="true"
                android:layout_marginLeft="8dip"
                android:layout_marginBottom="-6dip"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:shadowColor="#C0000000"
                android:shadowDx="0"
                android:shadowDy="0"
                android:shadowRadius="3.0"
                />

        </com.android.internal.widget.DigitalClock>

        <TextView
            android:id="@+id/date"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/time"
            android:textAppearance="?android:attr/textAppearanceMedium"
            />

        <!-- used for instructions such as "draw pattern to unlock", the next alarm, and charging
@@ -94,15 +111,6 @@
            android:layout_marginTop="8dip"
            android:gravity="center"
            >
            <TextView
                android:id="@+id/status1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="?android:attr/textColorSecondary"
                android:textSize="17sp"
                android:drawablePadding="4dip"
                />
            <TextView
                android:id="@+id/statusSep"
                android:layout_width="wrap_content"
@@ -110,7 +118,6 @@
                android:layout_marginLeft="5dip"
                android:layout_marginRight="5dip"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="?android:attr/textColorSecondary"
                android:textSize="17sp"
                />
            <TextView
@@ -119,7 +126,6 @@
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:textColor="?android:attr/textColorSecondary"
                android:textSize="17sp"
                android:drawablePadding="4dip"
                />
@@ -136,13 +142,14 @@
        <FrameLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="16dip"
            >

            <!-- option 1: a single emergency call button -->
            <RelativeLayout android:id="@+id/footerNormal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:gravity="left"
                >
                <Button android:id="@+id/emergencyCallAlone"
                    android:layout_width="wrap_content"
@@ -162,7 +169,7 @@
                android:orientation="vertical"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:gravity="left"
                >
                <Button android:id="@+id/forgotPattern"
                    android:layout_width="fill_parent"
+57 −38

File changed.

Preview size limit exceeded, changes collapsed.

Loading