/*
* Android Weather Notification.
* Copyright (C) 2010 Denis Nelubin aka Gelin
*
* 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 2 of the License, or
* (at your option) any later version.
*
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* http://gelin.ru
* mailto:den@gelin.ru
*/
package ru.gelin.android.weather.notification.skin.impl;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.method.MovementMethod;
import android.widget.RemoteViews;
import java.util.Date;
/**
* Utility to layout weather values to remove view.
*/
public class RemoteWeatherLayout extends AbstractWeatherLayout {
static final int MAIN_ICON = 64;
static final int FORECAST_ICON = 16;
/** View to bind. */
RemoteViews views;
/** Text style */
NotificationStyler styler;
/**
* Creates the utility for specified context.
*/
public RemoteWeatherLayout(Context context, RemoteViews views, NotificationStyler styler) {
super(context);
this.views = views;
this.styler = styler;
}
@Override
protected int getTextColor() {
return this.styler.getTextStyle().getTextColor();
}
@Override
protected void setText(int viewId, CharSequence text, int color) {
if (skipView(viewId)) {
return;
}
if (text == null) {
views.setTextViewText(viewId, "");
return;
}
if (color != 0) {
views.setTextColor(viewId, color);
}
views.setTextViewText(viewId, text);
}
@Override
protected int getMainIconSize() {
return MAIN_ICON;
}
@Override
protected int getForecastIconSize() {
return FORECAST_ICON;
}
@Override
protected void setIcon(int viewId, Drawable drawable, int level) {
if (skipView(viewId)) {
return;
}
drawable.setLevel(level);
views.setImageViewBitmap(viewId, Drawable2Bitmap.convert(drawable));
}
@Override
protected void setVisibility(int viewId, int visibility) {
if (skipView(viewId)) { //TODO: how to determine if the view is absent?
return;
}
views.setViewVisibility(viewId, visibility);
}
@Override
protected void setMovementMethod(int viewId, MovementMethod method) {
return;
}
boolean skipView(int viewId) {
return !this.styler.isViewInLayout(viewId);
}
protected void bindUpdateTime(Date update) {
if (update.getTime() == 0) {
setText(id("update_time_short"), "", NO_CHANGE_COLOR);
return;
}
String text = getContext().getString(string("update_time_short"), update);
setText(id("update_time_short"), text, NO_CHANGE_COLOR);
}
}