Ejemplo n.º 1
0
        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;
     }
 }
Ejemplo n.º 3
0
 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;
         }
     }
 }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
 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;
         }
     }
 }
Ejemplo n.º 6
0
 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;
         }
     }
 }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
        /// <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);
            }
        }