package treehou.se.habit.ui.widgets.factories;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import java.net.MalformedURLException;
import java.net.URL;
import se.treehou.ng.ohcommunicator.connector.ConnectorUtil;
import se.treehou.ng.ohcommunicator.connector.models.OHLinkedPage;
import se.treehou.ng.ohcommunicator.connector.models.OHWidget;
import se.treehou.ng.ohcommunicator.services.Connector;
import treehou.se.habit.R;
import treehou.se.habit.connector.Communicator;
import treehou.se.habit.ui.widgets.WidgetFactory;
public class ChartWidgetFactory implements IWidgetFactory {
private static final String TAG = ChartWidgetFactory.class.getSimpleName();
@Override
public WidgetFactory.IWidgetHolder build(WidgetFactory widgetFactory, OHLinkedPage page, final OHWidget widget, final OHWidget parent) {
return ChartWidgetHolder.create(widgetFactory, widget, parent);
}
public static class ChartWidgetHolder implements WidgetFactory.IWidgetHolder {
private static final String TAG = "ChartWidgetHolder";
private BaseWidgetFactory.BaseWidgetHolder baseHolder;
private ImageView imgImage;
private WidgetFactory factory;
public static ChartWidgetHolder create(WidgetFactory factory, OHWidget widget, OHWidget parent){
return new ChartWidgetHolder(widget, parent, factory);
}
private ChartWidgetHolder(OHWidget widget, OHWidget parent, WidgetFactory factory) {
this.factory = factory;
baseHolder = new BaseWidgetFactory.BaseWidgetHolder.Builder(factory)
.setWidget(widget)
.setParent(parent)
.setFlat(false)
.setShowLabel(false)
.build();
View itemView = factory.getInflater().inflate(R.layout.item_widget_chart, null);
imgImage = (ImageView) itemView.findViewById(R.id.img_chart);
baseHolder.getSubView().addView(itemView);
update(widget);
}
@Override
public void update(final OHWidget widget) {
if (widget == null) {
return;
}
try {
String url = Connector.ServerHandler.getUrl(factory.getContext(), factory.getServer());
URL imageUrl = new URL(ConnectorUtil.buildChartRequestString(url, widget));
Communicator communicator = Communicator.instance(factory.getContext());
communicator.loadImage(factory.getServer(), imageUrl, imgImage, false);
} catch (MalformedURLException e) {
Log.e(TAG, "Failed to update chart", e);
}
baseHolder.update(widget);
}
@Override
public View getView() {
return baseHolder.getView();
}
}
}