package gueei.binding.converters; import android.graphics.drawable.Drawable; import gueei.binding.BindingLog; import gueei.binding.Converter; import gueei.binding.DynamicObject; import gueei.binding.IObservable; import gueei.binding.collections.ArrayListObservable; import gueei.binding.viewAttributes.tabHost.Tab; @SuppressWarnings("rawtypes") public class TAB extends Converter<ArrayListObservable> { public TAB(IObservable<?>[] dependents) { super(ArrayListObservable.class, dependents); } @Override public ArrayListObservable<Tab> calculateValue(Object... args) throws Exception { ArrayListObservable<Tab> tabs = new ArrayListObservable<Tab>(Tab.class); for(int i=0; i<args.length; i++){ if (!(args[i] instanceof DynamicObject)){ continue; } DynamicObject t = (DynamicObject)args[i]; if (!t.observableExists("tag")) continue; try{ Tab tab = new Tab((String)t.getObservableByName("tag").get()); if (t.observableExists("activity")){ tab.Activity.set((String)t.getObservableByName("activity").get()); }else if (t.observableExists("viewId")){ tab.ViewId.set((Integer)t.getObservableByName("viewId").get()); }else{ // Invalid BindingLog.warning("TAB Converter", "Cannot parse tab"); continue; } if (!t.observableExists("label")) continue; tab.Label.set((String)t.getObservableByName("label").get()); if (t.observableExists("icon")){ Object iconObj = t.getObservableByName("icon").get(); if (iconObj instanceof Integer){ Drawable d = getContext().getResources().getDrawable((Integer)iconObj); tab.Icon.set(d); }else if (iconObj instanceof Drawable){ tab.Icon.set((Drawable)t.getObservableByName("icon").get()); } } tabs.add(tab); }catch(Exception e){ continue; } } return tabs; } }