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

Commit af16c7cf authored by Robyn Coultas's avatar Robyn Coultas Committed by Android (Google) Code Review
Browse files

Merge "Added a log to report registration removal" into ics-ub-clock-amazon

parents 7d35e923 0de865eb
Loading
Loading
Loading
Loading
+25 −43
Original line number Original line Diff line number Diff line
@@ -20,42 +20,28 @@ import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.appwidget.AppWidgetProvider;
import android.appwidget.AppWidgetProviderInfo;
import android.appwidget.AppWidgetProviderInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.res.Resources;
import android.net.Uri;
import android.net.Uri;
import android.os.Bundle;
import android.os.Bundle;
import android.provider.Settings;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.Log;
import android.util.TypedValue;
import android.view.View;
import android.widget.RemoteViews;
import android.widget.RemoteViews;


import com.android.deskclock.Alarms;
import com.android.deskclock.DeskClock;
import com.android.deskclock.DeskClock;
import com.android.deskclock.R;
import com.android.deskclock.R;
import com.android.deskclock.Utils;
import com.android.deskclock.worldclock.CitiesActivity;
import com.android.deskclock.worldclock.CitiesActivity;


import java.util.Calendar;

public class DigitalAppWidgetProvider extends AppWidgetProvider {
public class DigitalAppWidgetProvider extends AppWidgetProvider {
    private static final String TAG = "DigitalAppWidgetProvider";

    public DigitalAppWidgetProvider() {
    public DigitalAppWidgetProvider() {
    }
    }


    @Override
    @Override
    public void onUpdate(Context ctxt, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
        for (int appWidgetId : appWidgetIds) {
        for (int appWidgetId : appWidgetIds) {
            float ratio = WidgetUtils.getScaleRatio(ctxt, null, appWidgetId);
            float ratio = WidgetUtils.getScaleRatio(context, null, appWidgetId);
            updateClock(ctxt, appWidgetManager, appWidgetId, ratio);
            updateClock(context, appWidgetManager, appWidgetId, ratio);


        }
        }
        super.onUpdate(ctxt, appWidgetManager, appWidgetIds);
        super.onUpdate(context, appWidgetManager, appWidgetIds);
    }
    }


    @Override
    @Override
@@ -67,43 +53,39 @@ public class DigitalAppWidgetProvider extends AppWidgetProvider {
        updateClock(context, widgetManager, appWidgetId, ratio);
        updateClock(context, widgetManager, appWidgetId, ratio);
    }
    }


    static ComponentName getComponentName(Context context) {
        return new ComponentName(context, DigitalAppWidgetProvider.class);
    }

    private void updateClock(
    private void updateClock(
            Context c, AppWidgetManager appWidgetManager, int appWidgetId, float ratio) {
            Context context, AppWidgetManager appWidgetManager, int appWidgetId, float ratio) {
        RemoteViews widget = new RemoteViews(c.getPackageName(), R.layout.digital_appwidget);
        RemoteViews widget = new RemoteViews(context.getPackageName(), R.layout.digital_appwidget);
        // launch clock when clicking on the time in the widget only if not a lock screen widget

        // Launch clock when clicking on the time in the widget only if not a lock screen widget
        Bundle newOptions = appWidgetManager.getAppWidgetOptions(appWidgetId);
        Bundle newOptions = appWidgetManager.getAppWidgetOptions(appWidgetId);
        if (newOptions != null &&
        if (newOptions != null &&
                newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_HOST_CATEGORY, -1)
                newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_HOST_CATEGORY, -1)
                != AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD) {
                != AppWidgetProviderInfo.WIDGET_CATEGORY_KEYGUARD) {
            widget.setOnClickPendingIntent(R.id.digital_appwidget,
            widget.setOnClickPendingIntent(R.id.digital_appwidget,
                    PendingIntent.getActivity(c, 0, new Intent(c, DeskClock.class), 0));
                    PendingIntent.getActivity(context, 0, new Intent(context, DeskClock.class), 0));
        }
        }
        refreshAlarm(c, widget);

        WidgetUtils.setClockSize(c, widget, ratio);
        // Setup alarm text and font sizes
        final Intent intent = new Intent(c, DigitalAppWidgetService.class);
        DigitalWidgetViewsFactory.refreshAlarm(context, widget);
        WidgetUtils.setClockSize(context, widget, ratio);

        // Set up R.id.digital_appwidget_listview to use a remote views adapter
        // That remote views adapter connects to a RemoteViewsService through intent.
        final Intent intent = new Intent(context, DigitalAppWidgetService.class);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
        intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
        intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
        widget.setRemoteAdapter(appWidgetId, R.id.digital_appwidget_listview, intent);
        widget.setRemoteAdapter(R.id.digital_appwidget_listview, intent);

        // Set up the click on any world clock to start the Cities Activity
        //TODO: Should this be in the options guard above?
        widget.setPendingIntentTemplate(R.id.digital_appwidget_listview,
        widget.setPendingIntentTemplate(R.id.digital_appwidget_listview,
                PendingIntent.getActivity(c, 0, new Intent(c, CitiesActivity.class), 0));
                PendingIntent.
                        getActivity(context, 0, new Intent(context, CitiesActivity.class), 0));

        // Refresh the widget
        appWidgetManager.notifyAppWidgetViewDataChanged(
        appWidgetManager.notifyAppWidgetViewDataChanged(
                appWidgetId, R.id.digital_appwidget_listview);
                appWidgetId, R.id.digital_appwidget_listview);
        appWidgetManager.updateAppWidget(appWidgetId, widget);
        appWidgetManager.updateAppWidget(appWidgetId, widget);
    }
    }

    private void refreshAlarm(Context c, RemoteViews clock) {
        String nextAlarm = Settings.System.getString(
                c.getContentResolver(), Settings.System.NEXT_ALARM_FORMATTED);
        if (!TextUtils.isEmpty(nextAlarm)) {
            clock.setTextViewText(R.id.nextAlarm,
                    c.getString(R.string.control_set_alarm_with_existing, nextAlarm));
            clock.setViewVisibility(R.id.nextAlarm, View.VISIBLE);
        } else {
            clock.setViewVisibility(R.id.nextAlarm, View.GONE);
        }
    }
}
}
+18 −11
Original line number Original line Diff line number Diff line
@@ -34,6 +34,7 @@ import android.widget.RemoteViewsService.RemoteViewsFactory;
import com.android.deskclock.Alarms;
import com.android.deskclock.Alarms;
import com.android.deskclock.R;
import com.android.deskclock.R;
import com.android.deskclock.Utils;
import com.android.deskclock.Utils;
import com.android.deskclock.worldclock.Cities;
import com.android.deskclock.worldclock.CityObj;
import com.android.deskclock.worldclock.CityObj;
import com.android.deskclock.worldclock.WorldClockAdapter;
import com.android.deskclock.worldclock.WorldClockAdapter;


@@ -134,14 +135,15 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo
        }
        }
    }
    }


    public DigitalWidgetViewsFactory(Context c, Intent intent) {
    public DigitalWidgetViewsFactory(Context context, Intent intent) {
        mContext = c;
        mContext = context;
        mId = intent.getIntExtra(
        mId = intent.getIntExtra(
                AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
                AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
        mAdapter = new RemoteWorldClockAdapter(c);
        mAdapter = new RemoteWorldClockAdapter(context);
        mLastTimeZone = TimeZone.getDefault().getID();
        mLastTimeZone = TimeZone.getDefault().getID();
    }
    }


    @SuppressWarnings("unused")
    public DigitalWidgetViewsFactory() {
    public DigitalWidgetViewsFactory() {
    }
    }


@@ -195,8 +197,9 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo
        filter.addAction(Utils.ACTION_ON_QUARTER_HOUR);
        filter.addAction(Utils.ACTION_ON_QUARTER_HOUR);
        filter.addAction(Intent.ACTION_TIME_CHANGED);
        filter.addAction(Intent.ACTION_TIME_CHANGED);
        filter.addAction(Intent.ACTION_LOCALE_CHANGED);
        filter.addAction(Intent.ACTION_LOCALE_CHANGED);
        filter.addAction("com.android.deskclock.NEXT_ALARM_TIME_SET");
        filter.addAction(Alarms.NEXT_ALARM_TIME_SET);
        filter.addAction("com.android.deskclock.worldclock.update");
        filter.addAction(Cities.WORLDCLOCK_UPDATE_INTENT);
        Log.v(TAG, "DigitalWidget register receiver");
        mContext.registerReceiver(this, filter);
        mContext.registerReceiver(this, filter);
    }
    }


@@ -217,6 +220,7 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo


    @Override
    @Override
    public void onDestroy() {
    public void onDestroy() {
        Log.v(TAG, "DigitalWidget unregister receiver");
        Utils.cancelAlarmOnQuarterHour(mContext, mQuarterlyIntent);
        Utils.cancelAlarmOnQuarterHour(mContext, mQuarterlyIntent);
        mContext.unregisterReceiver(this);
        mContext.unregisterReceiver(this);
    }
    }
@@ -227,21 +231,24 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo
        if (mId == AppWidgetManager.INVALID_APPWIDGET_ID) {
        if (mId == AppWidgetManager.INVALID_APPWIDGET_ID) {
            return;
            return;
        }
        }
        mContext = context;
        String action = intent.getAction();
        String action = intent.getAction();
        AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
        AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);
        if (action.equals("com.android.deskclock.NEXT_ALARM_TIME_SET")) {
        if (action == null || widgetManager == null) {
            return;
        }
        if (action.equals(Alarms.NEXT_ALARM_TIME_SET)) {
            // Update the next alarm text view
            // Update the next alarm text view
            RemoteViews widget =
            RemoteViews widget =
                    new RemoteViews(context.getPackageName(), R.layout.digital_appwidget);
                    new RemoteViews(context.getPackageName(), R.layout.digital_appwidget);
            refreshAlarm(context, widget);
            refreshAlarm(context, widget);
            widgetManager.partiallyUpdateAppWidget(mId, widget);
            widgetManager.partiallyUpdateAppWidget(mId, widget);
        } else if (action.equals("com.android.deskclock.worldclock.update")) {
        } else if (action.equals(Cities.WORLDCLOCK_UPDATE_INTENT)) {
            // Reload the list of cities
            // Reload the list of cities
            mReloadCitiesList = true;
            mReloadCitiesList = true;
            widgetManager.notifyAppWidgetViewDataChanged(mId, R.id.digital_appwidget_listview);
            widgetManager.notifyAppWidgetViewDataChanged(mId, R.id.digital_appwidget_listview);


        } else if (action.equals(Intent.ACTION_SCREEN_ON)) {
        } else if (action.equals(Intent.ACTION_SCREEN_ON)) {
            // Force a refresh of the next alarm text view
            RemoteViews widget =
            RemoteViews widget =
                    new RemoteViews(context.getPackageName(), R.layout.digital_appwidget);
                    new RemoteViews(context.getPackageName(), R.layout.digital_appwidget);
            refreshAlarm(context, widget);
            refreshAlarm(context, widget);
@@ -279,12 +286,12 @@ public class DigitalWidgetViewsFactory extends BroadcastReceiver implements Remo
        }
        }
    }
    }


    private void refreshAlarm(Context c, RemoteViews widget) {
    protected static void refreshAlarm(Context context, RemoteViews widget) {
        String nextAlarm = Settings.System.getString(c.getContentResolver(),
        String nextAlarm = Settings.System.getString(context.getContentResolver(),
                Settings.System.NEXT_ALARM_FORMATTED);
                Settings.System.NEXT_ALARM_FORMATTED);
        if (!TextUtils.isEmpty(nextAlarm)) {
        if (!TextUtils.isEmpty(nextAlarm)) {
            widget.setTextViewText(R.id.nextAlarm,
            widget.setTextViewText(R.id.nextAlarm,
                    c.getString(R.string.control_set_alarm_with_existing, nextAlarm));
                    context.getString(R.string.control_set_alarm_with_existing, nextAlarm));
            widget.setViewVisibility(R.id.nextAlarm, View.VISIBLE);
            widget.setViewVisibility(R.id.nextAlarm, View.VISIBLE);
            Log.v(TAG, "DigitalWidget sets next alarm string to " + nextAlarm);
            Log.v(TAG, "DigitalWidget sets next alarm string to " + nextAlarm);
        } else  {
        } else  {