private void prepareCallActions(FcContext fcContext, SapaAppInfo appInfo) { FcActionFactory factory = fcContext.ActionFactory; SparseArray <SapaActionInfo> actions = appInfo.Actions; for (int i = 0; i < actions.size(); ++i) { SapaActionInfo actionInfo = actions.get(i); FcActionItem action = factory.newAppItem(appInfo, actionInfo); string actionName = actionInfo.Id; // Volume buttons needs to be separated from the rest of actions if (FcConstants.ACTION_VOLUME_UP.Equals(actionName)) { mVolumeActions[VOLUME_UP_INDEX] = action; } else if (FcConstants.ACTION_VOLUME_DOWN.Equals(actionName)) { mVolumeActions[VOLUME_DOWN_INDEX] = action; } else { mCallActions.Add(action); } } }
internal virtual void loadActionMap() { mActionMap.Clear(); for (int i = mActionList.size() - 1; i >= 0; --i) { SapaActionInfo action = mActionList.valueAt(i); mActionMap[action.Id] = action; } }
private void modifyAction(SapaApp sapaApp, string actionKey, int iconResId, bool isEnabled) { if (this.mAppInfoList[sapaApp.InstanceId] != null && mSapaAppService != null) { // Obtaining current SapaActionInfo. SapaActionInfo action = this.mAppInfoList[sapaApp.InstanceId].getActionInfo(actionKey); if (action != null) { // Settling state. action.Enabled = isEnabled; // Settling icon of action by setting id of the resource. action.Icon = iconResId; } } }
private void replaceActionOnView(View v, SapaActionInfo info) { int order = mActionButtonsLayout.indexOfChild(v); if (info == null || order == -1) { return; } View newView = createActionView(info, R.layout.action_button); if (mParent.Shown) { mActionButtonsLayout.removeView(v); mActionButtonsLayout.addView(newView, order); } }
private void modifyAction(SapaAppInfo info, string actionKey, int iconResId, bool isEnabled) { // In this example only one action can be active at the same time. // We need to change state of actions every time action is called. if (info != null && mSapaAppService != null) { // Obtaining current ActionInfo. SapaActionInfo action = info.getActionInfo(actionKey); if (action != null) { // Settling state. action.Visible = isEnabled; // Settling icon of action by setting id of the resource. action.Icon = iconResId; } } }
private void checkInvisibles() { if (mActionButtons == null) { return; } for (int i = 0, size = mActionButtonsLayout.ChildCount; i < size; ++i) { View v = mActionButtonsLayout.getChildAt(i); SapaActionInfo info = (SapaActionInfo)v.Tag; if (info != null && info.Visible) { mActionButtonsLayout.getChildAt(i).Visibility = VISIBLE; } else { mActionButtonsLayout.getChildAt(i).Visibility = GONE; } } }
private View createActionView(SapaActionInfo info, int res) { ImageButton button = null; try { button = (ImageButton)LayoutInflater.from(Context).inflate(res, mActionButtonsLayout, false); button.ImageDrawable = info.getIcon(Context); if (!info.Enabled) { button.Enabled = false; } button.OnClickListener = new OnActionClickListener(this, this.mData.mSapaApp, info.Id); string actionName = info.getName(Context); if (actionName != null) { button.ContentDescription = actionName; } } catch (NameNotFoundException) { Log.w(TAG, "Action " + info.Id + " could not be shown."); } catch (Resources.NotFoundException) { Log.w(TAG, "Action " + info.Id + " could not be shown."); } button.Tag = info; if (info.Visible) { button.Visibility = View.VISIBLE; } else { button.Visibility = View.GONE; } return(button); }
/// <summary> /// This method prepares view of actions (without application icon). /// </summary> internal virtual void prepareActions(int orientation, bool addView) { if (!Expanded) { createActionList(); return; } LayoutTransition trans = null; if (mParent != null) { trans = mParent.mDevicesLayout.LayoutTransition; mParent.mDevicesLayout.LayoutTransition = null; } List <View> toBeRemoved = new List <View>(); for (int i = 0, size = mActionButtonsLayout.ChildCount; i < size; ++i) { View v = mActionButtonsLayout.getChildAt(i); SapaActionInfo info = (SapaActionInfo)v.Tag; if (!mData.mActionMap.ContainsKey(info.Id)) { toBeRemoved.Add(v); } } if (toBeRemoved.Count > 0) { int sizeToRemove = toBeRemoved.Count; for (int i = 0; i < sizeToRemove; ++i) { removeActionView(toBeRemoved[i]); } } HashSet <string> ids = new HashSet <string>(); for (int i = 0, size = mActionButtonsLayout.ChildCount; i < size; ++i) { View v = mActionButtonsLayout.getChildAt(i); SapaActionInfo info = (SapaActionInfo)v.Tag; ids.Add(info.Id); if (!info.Equals(mData.mActionMap[info.Id])) { replaceActionOnView(v, mData.mActionMap[info.Id]); } } IList <View> viewsToAdd = new List <View>(); int i = -1; foreach (string actionId in mData.mActionMap.Keys) { ++i; if (ids.Contains(actionId)) { continue; } if (i == 1) { viewsToAdd.Add(createActionView(mData.mActionMap[actionId], R.layout.action_button)); } else { viewsToAdd.Add(createActionView(mData.mActionMap[actionId], R.layout.action_button)); } } if (viewsToAdd.Count > 0) { View viewToUpdate = mActionButtons[mActionButtons.Count - 1]; foreach (View v in viewsToAdd) { mActionButtons.Add(v); } replaceActionOnView(viewToUpdate, (SapaActionInfo)viewToUpdate.Tag); replaceActionOnView(viewsToAdd[0], (SapaActionInfo)viewsToAdd[0].Tag); if (viewsToAdd.Count > 1) { replaceActionOnView(viewsToAdd[viewsToAdd.Count - 1], (SapaActionInfo)viewsToAdd[viewsToAdd.Count - 1].Tag); } int size = mActionButtons.Count; mParent.addSubViews(mActionButtons.subList(0, 1), this); mParent.addSubViews(mActionButtons.subList(1, size), mActionButtons[0]); } checkInvisibles(); if (mParent != null && trans != null) { mParent.mDevicesLayout.LayoutTransition = trans; } if (mParent != null) { this.forceOrientationSet(mParent.Orientation); } }