public void appendExtraEventData( TiUIView view, int itemIndex, int sectionIndex, String bindId, String itemId) { KrollDict existingData = view.getAdditionalEventData(); if (existingData == null) { existingData = new KrollDict(); view.setAdditionalEventData(existingData); } // itemIndex = realItemIndex + header (if exists). We want the real item index. if (headerTitle != null || headerView != null) { itemIndex -= 1; } existingData.put(TiC.PROPERTY_SECTION, this); existingData.put(TiC.PROPERTY_SECTION_INDEX, sectionIndex); existingData.put(TiC.PROPERTY_ITEM_INDEX, itemIndex); if (!bindId.startsWith(TiListViewTemplate.GENERATED_BINDING) && !bindId.equals(TiC.PROPERTY_PROPERTIES)) { existingData.put(TiC.PROPERTY_BIND_ID, bindId); } else if (existingData.containsKey(TiC.PROPERTY_BIND_ID)) { existingData.remove(TiC.PROPERTY_BIND_ID); } if (itemId != null) { existingData.put(TiC.PROPERTY_ITEM_ID, itemId); } else if (existingData.containsKey(TiC.PROPERTY_ITEM_ID)) { existingData.remove(TiC.PROPERTY_ITEM_ID); } }
protected void handleAnimate() { TiUIView tiv = peekView(); if (tiv != null) { tiv.animate(); } }
@Override public TiUIView createView(Activity activity) { TiUIView view = new BranchUniversalObjectView(this); view.getLayoutParams().autoFillsHeight = true; view.getLayoutParams().autoFillsWidth = true; return view; }
@Kroll.method @Kroll.getProperty public boolean getKeepScreenOn() { Boolean keepScreenOn = null; TiUIView v = peekView(); if (v != null) { View nv = v.getNativeView(); if (nv != null) { keepScreenOn = nv.getKeepScreenOn(); } } // Keep the proxy in the correct state Object current = getProperty(TiC.PROPERTY_KEEP_SCREEN_ON); if (current != null) { boolean currentValue = TiConvert.toBoolean(current); if (keepScreenOn == null) { keepScreenOn = currentValue; } else { if (currentValue != keepScreenOn) { setProperty(TiC.PROPERTY_KEEP_SCREEN_ON, keepScreenOn); } else { keepScreenOn = currentValue; } } } else { if (keepScreenOn == null) { keepScreenOn = false; // Android default } setProperty(TiC.PROPERTY_KEEP_SCREEN_ON, keepScreenOn); } return keepScreenOn; }
@Override public TiUIView createView(Activity activity) { TiUIView view = new ExampleView(this); view.getLayoutParams().autoFillsHeight = true; view.getLayoutParams().autoFillsWidth = true; return view; }
@Override public Object instantiateItem(View container, int position) { synchronized (viewsLock) { ViewGroup pager = (ViewGroup) container; TiViewProxy tiProxy = mViews.get(position); TiUIView tiView = tiProxy.getOrCreateView(); View view = tiView.getOuterView(); ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); TiCompositeLayout layout = new TiCompositeLayout(tiProxy.getActivity()); ViewParent parent = view.getParent(); if (parent instanceof ViewGroup) { pager.removeView((View) parent); ViewGroup group = (ViewGroup) parent; group.removeView(view); } layout.addView(view, tiView.getLayoutParams()); if (position < pager.getChildCount()) { pager.addView(layout, position, params); } else { pager.addView(layout, params); } return tiProxy; } }
protected KrollDict handleToImage() { TiUIView view = getOrCreateView(); if (view == null) { return null; } return view.toImage(); }
private void handleFinishLayout() { if (view.iszIndexChanged()) { view.forceLayoutNativeView(true); view.setzIndexChanged(false); } else { view.forceLayoutNativeView(false); } }
public void setClickable(boolean clickable) { TiUIView v = peekView(); if (v != null) { View nv = v.getNativeView(); if (nv != null) { nv.setClickable(clickable); } } }
@Override public void add(TiUIView child) { super.add(child); if (getNativeView() != null) { getLayout().requestLayout(); if (child.getNativeView() != null) { child.getNativeView().requestLayout(); } } }
public void remove(TiUIView child) { if (child != null) { View cv = child.getNativeView(); if (cv != null) { View nv = getNativeView(); if (nv instanceof ViewGroup) { ((ViewGroup) nv).removeView(cv); children.remove(child); child.parent = null; } } } }
public void add(TiUIView child) { if (child != null) { View cv = child.getNativeView(); if (cv != null) { View nv = getNativeView(); if (nv instanceof ViewGroup) { if (cv.getParent() == null) { ((ViewGroup) nv).addView(cv, child.getLayoutParams()); } } } } }
protected TiViewProxy addViewToOldRow(int index, TiUIView titleView, TiViewProxy newViewProxy) { if (DBG) { Log.w(LCAT, newViewProxy + " was added an old style row, reusing the title TiUILabel"); } LabelProxy label = new LabelProxy(tiContext); label.handleCreationDict(titleView.getProxy().getProperties()); label.setView(titleView); label.setModelListener(titleView); titleView.setProxy(label); getRowProxy().getControls().add(index, label); views.add(newViewProxy.getView(tiContext.getActivity())); return label; }
public void release() { for (int i = 0; i < sections.size(); i++) { sections.get(i).releaseViews(); } templatesByBinding.clear(); sections.clear(); if (wrapper != null) { wrapper = null; } if (listView != null) { listView.setAdapter(null); listView = null; } if (headerView != null) { headerView = null; } if (footerView != null) { footerView = null; } super.release(); }
private void addSearchLayout(RelativeLayout layout, TiViewProxy searchView, TiUIView search) { RelativeLayout.LayoutParams p = createBasicSearchLayout(); p.addRule(RelativeLayout.ALIGN_PARENT_TOP); TiDimension rawHeight; if (searchView.hasProperty(TiC.PROPERTY_HEIGHT)) { rawHeight = TiConvert.toTiDimension(searchView.getProperty(TiC.PROPERTY_HEIGHT), 0); } else { rawHeight = TiConvert.toTiDimension(MIN_SEARCH_HEIGHT, 0); } p.height = rawHeight.getAsPixels(layout); View nativeView = search.getNativeView(); layout.addView(nativeView, p); p = createBasicSearchLayout(); p.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); p.addRule(RelativeLayout.BELOW, nativeView.getId()); ViewParent parentWrapper = wrapper.getParent(); if (parentWrapper != null && parentWrapper instanceof ViewGroup) { // get the previous layout params so we can reset with new layout ViewGroup.LayoutParams lp = wrapper.getLayoutParams(); ViewGroup parentView = (ViewGroup) parentWrapper; // remove view from parent parentView.removeView(wrapper); // add new layout layout.addView(wrapper, p); parentView.addView(layout, lp); } else { layout.addView(wrapper, p); } this.searchLayout = layout; }
@Override public void processProperties(TiDict d) { super.processProperties(d); TextView tv = (TextView) getNativeView(); // Only accept one, prefer text to title. if (d.containsKey("text")) { tv.setText(TiConvert.toString(d, "text")); } else if (d.containsKey("title")) { // TODO this may not need to be supported. tv.setText(TiConvert.toString(d, "title")); } if (d.containsKey("color")) { tv.setTextColor(TiConvert.toColor(d, "color")); } if (d.containsKey("highlightedColor")) { tv.setHighlightColor(TiConvert.toColor(d, "highlightedColor")); } if (d.containsKey("font")) { TiUIHelper.styleText(tv, d.getTiDict("font")); } if (d.containsKey("textAlign")) { String textAlign = d.getString("textAlign"); setAlignment(tv, textAlign); } tv.invalidate(); }
@Override public void propertyChanged(String key, Object oldValue, Object newValue, KrollProxy proxy) { TiImageView view = getView(); if (view == null) { return; } if (key.equals(TiC.PROPERTY_CAN_SCALE)) { view.setCanScaleImage(TiConvert.toBoolean(newValue)); } else if (key.equals(TiC.PROPERTY_ENABLE_ZOOM_CONTROLS)) { view.setEnableZoomControls(TiConvert.toBoolean(newValue)); } else if (key.equals(TiC.PROPERTY_URL)) { Log.w(LCAT, "The url property of ImageView is deprecated, use image instead."); setImageSource(newValue); firedLoad = false; setImage(true); } else if (key.equals(TiC.PROPERTY_IMAGE)) { setImageSource(newValue); firedLoad = false; setImage(true); } else if (key.equals(TiC.PROPERTY_IMAGES)) { if (newValue instanceof Object[]) { setImageSource(newValue); setImages(); } } else { super.propertyChanged(key, oldValue, newValue, proxy); } }
@Override public void clearOpacity(View view) { super.clearOpacity(view); TiImageView iview = getView(); if (iview != null) { iview.setColorFilter(null); } }
@Override public void setOpacity(float opacity) { TiImageView view = getView(); if (view != null) { view.setColorFilter(TiUIHelper.createColorFilterForOpacity(opacity)); super.setOpacity(opacity); } }
@Override public void release() { if (tableView != null) { tableView.release(); tableView = null; } nativeView = null; super.release(); }
protected TiUIView handleGetView() { if (view == null) { Log.d(TAG, "getView: " + getClass().getSimpleName(), Log.DEBUG_MODE); Activity activity = getActivity(); view = createView(activity); if (isDecorView) { if (activity != null) { ((TiBaseActivity) activity).setViewProxy(view.getProxy()); } else { Log.w(TAG, "Activity is null", Log.DEBUG_MODE); } } realizeViews(view); view.registerForTouch(); } return view; }
@Override public void processProperties(KrollDict d) { if (d.containsKey(TiC.PROPERTY_PAGE_WIDTH)) { setPageWidth(d.get(TiC.PROPERTY_PAGE_WIDTH)); } if (d.containsKey(TiC.PROPERTY_PAGE_OFFSET)) { setPageOffset(d.get(TiC.PROPERTY_PAGE_OFFSET)); } if (d.containsKey(TiC.PROPERTY_VIEWS)) { setViews(d.get(TiC.PROPERTY_VIEWS)); } if (d.containsKey(TiC.PROPERTY_CURRENT_PAGE)) { int page = d.optInt(TiC.PROPERTY_CURRENT_PAGE, 0); if (page > 0) { setCurrentPage(page); } } if (d.containsKey(TiC.PROPERTY_SHOW_PAGING_CONTROL)) { if (TiConvert.toBoolean(d, TiC.PROPERTY_SHOW_PAGING_CONTROL)) { showPager(); } } if (d.containsKey(TiC.PROPERTY_SCROLLING_ENABLED)) { mEnabled = TiConvert.toBoolean(d, TiC.PROPERTY_SCROLLING_ENABLED); } if (d.containsKey(TiC.PROPERTY_OVER_SCROLL_MODE)) { if (Build.VERSION.SDK_INT >= 9) { mPager.setOverScrollMode( TiConvert.toInt(d.get(TiC.PROPERTY_OVER_SCROLL_MODE), View.OVER_SCROLL_ALWAYS)); } } if (d.containsKey(TiC.PROPERTY_CACHE_SIZE)) { cacheSize = TiConvert.toInt(d, TiC.PROPERTY_CACHE_SIZE); if (cacheSize < 3) { // WHAT. Let's make it something sensible. cacheSize = 3; } updateCacheSize(); } if (d.containsKey(TiC.PROPERTY_TRANSITION)) { transition = TransitionHelper.transitionFromObject( (HashMap) d.get(TiC.PROPERTY_TRANSITION), null, null); mPager.updatePageTransformer(); } super.processProperties(d); }
protected void handleHide(KrollDict options) { if (view != null) { synchronized (pendingAnimationLock) { if (pendingAnimation != null) { handlePendingAnimation(false); } } view.hide(); setProperty(TiC.PROPERTY_VISIBLE, false); } }
protected View getParentView() { if (nativeView == null) { return null; } ViewParent parent = nativeView.getParent(); if (parent instanceof View) { return (View) parent; } if (parent == null) { TiViewProxy parentProxy = proxy.getParent(); if (parentProxy != null) { TiUIView parentTiUi = parentProxy.peekView(); if (parentTiUi != null) { return parentTiUi.getNativeView(); } } } return null; }
@Override public void processProperties(KrollDict d) { if (d.get(TiC.PROPERTY_BUTTON_NAMES) != null && d.containsKey(TiC.PROPERTY_OK)) { d.remove(TiC.PROPERTY_OK); } if (d.get(TiC.PROPERTY_CUSTOM_VIEW) != null && d.containsKey(TiC.PROPERTY_OPTIONS)) { d.remove(TiC.PROPERTY_OPTIONS); } super.processProperties(d); }
@Override public void propertyChanged(String key, Object oldValue, Object newValue, KrollProxy proxy) { if (key.equals("value")) { Date date = (Date) newValue; setValue(date.getTime()); } if (key.equals(TiC.PROPERTY_CALENDAR_VIEW_SHOWN)) { setCalendarView(TiConvert.toBoolean(newValue)); } super.propertyChanged(key, oldValue, newValue, proxy); }
@Override public void propertyChanged(String key, Object oldValue, Object newValue, KrollProxy proxy) { if (DBG) { Log.d(LCAT, "Property: " + key + " old: " + oldValue + " new: " + newValue); } if (key.equals(TiC.PROPERTY_SEPARATOR_COLOR)) { tableView.setSeparatorColor(TiConvert.toString(newValue)); } else { super.propertyChanged(key, oldValue, newValue, proxy); } }
@Override public void processProperties(KrollDict d) { tableView = new TiTableView(proxy.getTiContext(), (TableViewProxy) proxy); tableView.setOnItemClickListener(this); if (d.containsKey(TiC.PROPERTY_SEARCH)) { RelativeLayout layout = new RelativeLayout(proxy.getTiContext().getActivity()); layout.setGravity(Gravity.NO_GRAVITY); layout.setPadding(0, 0, 0, 0); TiViewProxy searchView = (TiViewProxy) d.get(TiC.PROPERTY_SEARCH); TiUISearchBar searchBar = (TiUISearchBar) searchView.getView(proxy.getTiContext().getActivity()); searchBar.setOnSearchChangeListener(tableView); searchBar.getNativeView().setId(102); RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT); p.addRule(RelativeLayout.ALIGN_PARENT_TOP); p.addRule(RelativeLayout.ALIGN_PARENT_LEFT); p.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); p.height = 52; layout.addView(searchBar.getNativeView(), p); p = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT); p.addRule(RelativeLayout.ALIGN_PARENT_LEFT); p.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); p.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); p.addRule(RelativeLayout.BELOW, 102); layout.addView(tableView, p); setNativeView(layout); } else { setNativeView(tableView); } if (d.containsKey(TiC.PROPERTY_FILTER_ATTRIBUTE)) { tableView.setFilterAttribute(TiConvert.toString(d, TiC.PROPERTY_FILTER_ATTRIBUTE)); } else { // Default to title to match iPhone default. proxy.setProperty(TiC.PROPERTY_FILTER_ATTRIBUTE, TiC.PROPERTY_TITLE, false); tableView.setFilterAttribute(TiC.PROPERTY_TITLE); } boolean filterCaseInsensitive = true; if (d.containsKey(TiC.PROPERTY_FILTER_CASE_INSENSITIVE)) { filterCaseInsensitive = TiConvert.toBoolean(d, TiC.PROPERTY_FILTER_CASE_INSENSITIVE); } tableView.setFilterCaseInsensitive(filterCaseInsensitive); super.processProperties(d); }
public void handleRemove(TiViewProxy child) { if (children != null) { children.remove(child); if (view != null) { view.remove(child.peekView()); } if (child != null) { child.releaseViews(); } } }
@Override public void focus() { super.focus(); if (nativeView != null) { if (proxy.hasProperty(TiC.PROPERTY_EDITABLE) && !(TiConvert.toBoolean(proxy.getProperty(TiC.PROPERTY_EDITABLE)))) { TiUIHelper.showSoftKeyboard(nativeView, false); } else { TiUIHelper.requestSoftInputChange(proxy, nativeView); } } }