Android Open Source - worldclockwidget Compat Weather Widget Service






From Project

Back to project page worldclockwidget.

License

The source code is released under:

GNU General Public License

If you think the Android project worldclockwidget listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2012 - 2014  Armin Hberling
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version./*from   w  w w  .  ja va 2  s  .  c om*/
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>
 */

package ch.corten.aha.worldclock.compatibility;

import java.text.DateFormat;

import ch.corten.aha.worldclock.R;
import ch.corten.aha.worldclock.WeatherWidget;
import ch.corten.aha.worldclock.WorldClockActivity;
import android.app.IntentService;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.database.Cursor;
import android.view.View;
import android.widget.RemoteViews;

public class CompatWeatherWidgetService extends IntentService {

    public static final String LAYOUT = "layout";
    public static final String SIZE = "size";
    public static final String APP_WIDGET_ID = "app_widget_id";

    public CompatWeatherWidgetService() {
        super("CompatWeatherWidgetService");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        int appWidgetId = intent.getIntExtra(APP_WIDGET_ID, 0);
        int size = intent.getIntExtra(SIZE, 1);
        int layout = intent.getIntExtra(LAYOUT, CompatWeatherWidgetProvider.LAYOUT_ONE_COLUMN);

        RemoteViews rv = updateViews(size, layout);

        AppWidgetManager awm = AppWidgetManager.getInstance(this);
        awm.updateAppWidget(appWidgetId, rv);
    }

    protected RemoteViews updateViews(int size, int layout) {
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, WorldClockActivity.class), 0);
        RemoteViews rv = getRemoteViews(layout);
        int[] columns = getColumns(layout);
        for (int column : columns) {
            rv.removeAllViews(column);
        }
        rv.setOnClickPendingIntent(R.id.empty_view, pendingIntent);
        Cursor c = WeatherWidget.getData(this);
        try {
            DateFormat timeFormat = android.text.format.DateFormat.getTimeFormat(this);
            if (c.moveToNext()) {
                // we have an item
                rv.setViewVisibility(R.id.empty_view, View.GONE);
                rv.setViewVisibility(getGridViewId(layout), View.VISIBLE);
                int i = 0;

                do {
                    RemoteViews itemView = new RemoteViews(this.getPackageName(), R.layout.weather_widget_item_compat);
                    WeatherWidget.updateItemView(this, c, itemView, timeFormat);
                    itemView.setOnClickPendingIntent(R.id.widget_item, pendingIntent);
                    rv.addView(columns[i % columns.length], itemView);
                    i++;
                } while (c.moveToNext() && i < size);
            } else {
                rv.setViewVisibility(R.id.empty_view, View.VISIBLE);
                rv.setViewVisibility(getGridViewId(layout), View.GONE);
            }
        } finally {
            if (c != null) {
                c.close();
            }
        }
        return rv;
    }

    private int[] getColumns(int layout) {
        switch (layout) {
        case CompatWeatherWidgetProvider.LAYOUT_ONE_COLUMN:
            return new int[] {R.id.column_one};
        case CompatWeatherWidgetProvider.LAYOUT_TWO_COLUMNS:
            return new int[] {R.id.column_one, R.id.column_two};
        default:
            throw new RuntimeException("Invalid layout: " + layout);
        }
    }

    private RemoteViews getRemoteViews(int layout) {
        switch (layout) {
        case CompatWeatherWidgetProvider.LAYOUT_ONE_COLUMN:
            return new RemoteViews(this.getPackageName(), R.layout.weather_widget_compat);
        case CompatWeatherWidgetProvider.LAYOUT_TWO_COLUMNS:
            return new RemoteViews(this.getPackageName(), R.layout.weather_widget_compat_two);
        default:
            throw new RuntimeException("Invalid layout: " + layout);
        }
    }

    private int getGridViewId(int layout) {
        switch (layout) {
        case CompatWeatherWidgetProvider.LAYOUT_ONE_COLUMN:
            return R.id.column_one;
        case CompatWeatherWidgetProvider.LAYOUT_TWO_COLUMNS:
            return R.id.grid_view;
        default:
            throw new RuntimeException("Invalid layout: " + layout);
        }
    }

}




Java Source Code List

ch.corten.aha.preference.AboutPreference.java
ch.corten.aha.preference.MailPreference.java
ch.corten.aha.widget.CapitalizingTextView.java
ch.corten.aha.widget.CheckableFrameLayout.java
ch.corten.aha.widget.DigitalClock.java
ch.corten.aha.widget.PauseListener.java
ch.corten.aha.widget.PauseSource.java
ch.corten.aha.widget.RemoteViewUtil.java
ch.corten.aha.worldclock.AbstractWeatherWidgetProvider.java
ch.corten.aha.worldclock.AddClockActivity.java
ch.corten.aha.worldclock.BindHelper.java
ch.corten.aha.worldclock.ClockWidgetProvider.java
ch.corten.aha.worldclock.ClockWidgetSystemReceiver.java
ch.corten.aha.worldclock.EditClockActivity.java
ch.corten.aha.worldclock.MyApp.java
ch.corten.aha.worldclock.SpeedFormat.java
ch.corten.aha.worldclock.TimeZoneInfo.java
ch.corten.aha.worldclock.UpdateWeatherService.java
ch.corten.aha.worldclock.WeatherIcons.java
ch.corten.aha.worldclock.WeatherWidgetProvider.java
ch.corten.aha.worldclock.WeatherWidgetService.java
ch.corten.aha.worldclock.WeatherWidget.java
ch.corten.aha.worldclock.WorldClockActivity.java
ch.corten.aha.worldclock.WorldClockPreferenceActivity.java
ch.corten.aha.worldclock.WorldClockWidgetProvider.java
ch.corten.aha.worldclock.WorldClockWidgetService.java
ch.corten.aha.worldclock.compatibility.CompatWeatherWidgetProvider.java
ch.corten.aha.worldclock.compatibility.CompatWeatherWidgetService.java
ch.corten.aha.worldclock.compatibility.WeatherWidgetProvider2x1.java
ch.corten.aha.worldclock.compatibility.WeatherWidgetProvider2x2.java
ch.corten.aha.worldclock.compatibility.WeatherWidgetProvider2x3.java
ch.corten.aha.worldclock.compatibility.WeatherWidgetProvider2x4.java
ch.corten.aha.worldclock.compatibility.WeatherWidgetProvider4x1.java
ch.corten.aha.worldclock.compatibility.WeatherWidgetProvider4x2.java
ch.corten.aha.worldclock.compatibility.WeatherWidgetProvider4x3.java
ch.corten.aha.worldclock.compatibility.WeatherWidgetProvider4x4.java
ch.corten.aha.worldclock.provider.CityDatabase.java
ch.corten.aha.worldclock.provider.WorldClockContentProvider.java
ch.corten.aha.worldclock.provider.WorldClockDatabase.java
ch.corten.aha.worldclock.provider.WorldClock.java
ch.corten.aha.worldclock.weather.AbstractObservation.java
ch.corten.aha.worldclock.weather.AndroidWeatherServiceFactory.java
ch.corten.aha.worldclock.weather.WeatherObservation.java
ch.corten.aha.worldclock.weather.WeatherServiceFactory.java
ch.corten.aha.worldclock.weather.WeatherService.java
ch.corten.aha.worldclock.weather.msn.MsnWeatherService.java
ch.corten.aha.worldclock.weather.owm.OwmWeatherService.java
ch.corten.aha.worldclock.weather.owm.WeatherConditionPriority.java
ch.corten.aha.worldclock.weather.owm.WeatherConditionType.java
ch.corten.aha.worldclock.weather.yahoo.PlaceFinderService.java
ch.corten.aha.worldclock.weather.yahoo.WoeidCache.java
ch.corten.aha.worldclock.weather.yahoo.YahooWeatherService.java
net.margaritov.preference.colorpicker.AlphaPatternDrawable.java
net.margaritov.preference.colorpicker.ColorPickerDialog.java
net.margaritov.preference.colorpicker.ColorPickerPanelView.java
net.margaritov.preference.colorpicker.ColorPickerPreference.java
net.margaritov.preference.colorpicker.ColorPickerView.java