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

Commit fc5cce34 authored by Isaac Katzenelson's avatar Isaac Katzenelson
Browse files

Add analog clock to world clock

Bug: 7265721
Change-Id: Ia3807341deb1cb17e481fab4d0a3bf936e3a87f6
parent f935180a
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -31,8 +31,20 @@
        android:ellipsize="none"
        android:textColor="@color/clock_white"
        />
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <include layout="@layout/desk_clock_time_small"
            android:id="@+id/digital_clock"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <com.android.deskclock.AnalogClock
            android:id="@+id/analog_clock"
            android:layout_width="@dimen/world_clock_analog_size"
            android:layout_height="@dimen/world_clock_analog_size"
            android:layout_gravity="center_horizontal"
            android:dial="@drawable/clock_analog_dial"
            android:hand_hour="@drawable/clock_analog_hour"
            android:hand_minute="@drawable/clock_analog_minute"/>
    </FrameLayout>
</LinearLayout>
+3 −0
Original line number Diff line number Diff line
@@ -52,4 +52,7 @@

     <!-- Width of the clock, for use with alarm buttons. -->
    <dimen name="alarm_alert_display_width">550dip</dimen>

    <!-- Size of analog clock in world clock. -->
    <dimen name="world_clock_analog_size">200dip</dimen>
</resources>
+3 −0
Original line number Diff line number Diff line
@@ -83,4 +83,7 @@

    <!-- Width of the clock, for use with alarm buttons. -->
    <dimen name="alarm_alert_display_width">304dip</dimen>

    <!-- Size of analog clock in world clock. -->
    <dimen name="world_clock_analog_size">100dip</dimen>
</resources>
+27 −10
Original line number Diff line number Diff line
@@ -58,6 +58,8 @@ public class AnalogClock extends View {
    private float mHour;
    private boolean mChanged;
    private final Context mContext;
    private String mTimeZoneId;
    private boolean mNoSeconds = false;

    private float mDotRadius;
    private float mDotOffset;
@@ -216,6 +218,7 @@ public class AnalogClock extends View {
        hourHand.draw(canvas);
        canvas.restore();

        if (!mNoSeconds) {
            canvas.save();
            canvas.rotate(mSeconds / 60.0f * 360.0f, x, y);

@@ -227,7 +230,7 @@ public class AnalogClock extends View {
            }
            secondHand.draw(canvas);
            canvas.restore();

        }
        canvas.save();
        canvas.rotate(mMinutes / 60.0f * 360.0f, x, y);

@@ -248,6 +251,10 @@ public class AnalogClock extends View {
    private void onTimeChanged() {
        mCalendar.setToNow();

        if (mTimeZoneId != null) {
            mCalendar.switchTimezone(mTimeZoneId);
        }

        int hour = mCalendar.hour;
        int minute = mCalendar.minute;
        int second = mCalendar.second;
@@ -289,5 +296,15 @@ public class AnalogClock extends View {
                time.toMillis(false), flags);
        setContentDescription(contentDescription);
    }

    public void setTimeZone(String id) {
        mTimeZoneId = id;
        onTimeChanged();
    }

    public void enableSeconds(boolean enable) {
        mNoSeconds = !enable;
    }

}
+50 −12
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.deskclock;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.format.DateFormat;
@@ -42,7 +43,7 @@ import java.util.TimeZone;
/**
 * TODO: Insert description here. (generated by isaackatz)
 */
public class ClockFragment extends DeskClockFragment {
public class ClockFragment extends DeskClockFragment implements OnSharedPreferenceChangeListener {

    private static final String BUTTONS_HIDDEN_KEY = "buttons_hidden";

@@ -55,6 +56,9 @@ public class ClockFragment extends DeskClockFragment {
    View mDigitalClock, mAnalogClock;
    WorldClockAdapter mAdapter;
    ListView mList;
    String mClockStyle;
    SharedPreferences mPrefs;


    public ClockFragment() {
    }
@@ -77,24 +81,32 @@ public class ClockFragment extends DeskClockFragment {
        mAdapter = new WorldClockAdapter(getActivity());
        mList.setAdapter(mAdapter);
        refreshAlarm();
        mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
        mClockStyle = mPrefs.getString(SettingsActivity.KEY_CLOCK_STYLE, "digital");
        return v;
    }

    @Override
    public void onResume () {
        super.onResume();
        mPrefs.registerOnSharedPreferenceChangeListener(this);
        refreshAlarm();
  //      updateDate();   // No date at this point
        mButtons.setAlpha(mButtonsHidden ? 0 : 1);
        setClockStyle();
        // Resume can invoked after changing the cities list.
        if (mAdapter != null) {
            mAdapter.reloadData(getActivity());
        }


        // Resume can invoked after changing the clock style.
        mClockStyle = mPrefs.getString(SettingsActivity.KEY_CLOCK_STYLE, "digital");
        setClockStyle();
    }

    @Override
    public void onPause() {
        super.onPause();
        mPrefs.unregisterOnSharedPreferenceChangeListener(this);
    }

    @Override
    public void onSaveInstanceState (Bundle outState) {
@@ -103,9 +115,7 @@ public class ClockFragment extends DeskClockFragment {
    }

    private void setClockStyle() {
        SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getActivity());
        String style = sharedPref.getString(SettingsActivity.KEY_CLOCK_STYLE, "digital");
        if (style.equals("analog")) {
        if (mClockStyle.equals("analog")) {
            mDigitalClock.setVisibility(View.GONE);
            mAnalogClock.setVisibility(View.VISIBLE);
        } else {
@@ -153,10 +163,18 @@ public class ClockFragment extends DeskClockFragment {
        }
    }

    @Override
    public void onSharedPreferenceChanged(SharedPreferences prefs, String key) {
        if (key == SettingsActivity.KEY_CLOCK_STYLE) {
            mClockStyle = prefs.getString(SettingsActivity.KEY_CLOCK_STYLE, "digital");
        }
    }

    private class WorldClockAdapter extends BaseAdapter {
        Object [] mCitiesList;
        LayoutInflater mInflater;
        private boolean mIs24HoursMode;
        @SuppressWarnings("hiding")
        Context mContext;

        public WorldClockAdapter(Context context) {
@@ -226,14 +244,34 @@ public class ClockFragment extends DeskClockFragment {
            View rightClock = view.findViewById(R.id.city_right);
            CityObj c = (CityObj)mCitiesList[index];
            ((TextView)leftClock.findViewById(R.id.city_name)).setText(c.mCityName);
            DigitalClock clock = (DigitalClock)(leftClock.findViewById(R.id.digital_clock));
            clock.setTimeZone(c.mTimeZone);
            DigitalClock dclock = (DigitalClock)(leftClock.findViewById(R.id.digital_clock));
            AnalogClock aclock = (AnalogClock)(leftClock.findViewById(R.id.analog_clock));
            if (mClockStyle.equals("analog")) {
                dclock.setVisibility(View.GONE);
                aclock.setVisibility(View.VISIBLE);
                aclock.setTimeZone(c.mTimeZone);
                aclock.enableSeconds(false);
            } else {
                aclock.setVisibility(View.GONE);
                dclock.setVisibility(View.VISIBLE);
                dclock.setTimeZone(c.mTimeZone);
            }
            if (index + 1 < mCitiesList.length) {
                c = (CityObj)mCitiesList[index + 1];
                rightClock.setVisibility(View.VISIBLE);
                c = (CityObj)mCitiesList[index + 1];
                ((TextView)rightClock.findViewById(R.id.city_name)).setText(c.mCityName);
                clock = (DigitalClock)(rightClock.findViewById(R.id.digital_clock));
                clock.setTimeZone(c.mTimeZone);
                dclock = (DigitalClock)(rightClock.findViewById(R.id.digital_clock));
                aclock = (AnalogClock)(rightClock.findViewById(R.id.analog_clock));
                if (mClockStyle.equals("analog")) {
                    dclock.setVisibility(View.GONE);
                    aclock.setVisibility(View.VISIBLE);
                    aclock.setTimeZone(c.mTimeZone);
                    aclock.enableSeconds(false);
                } else {
                    aclock.setVisibility(View.GONE);
                    dclock.setVisibility(View.VISIBLE);
                    dclock.setTimeZone(c.mTimeZone);
                }
            } else {
                rightClock.setVisibility(View.INVISIBLE);
            }
Loading