Exemplo n.º 1
0
        void SetCurrentActivity(ActivitySelect activity, string reason)
        {
            ActivitySelect entryActivity = currentActivity;

            Log.Debug.Emit("SetCurrentActivity changing activity to:{0} [from:{1}, reason:'{2}']", activity, currentActivity, reason);
            currentActivity = activity;

            privateState.StateStr  = (Utils.Fcns.CheckedFormat("{0} [{1}]", activity, reason));
            privateState.IsCycling = (enableAutoLoadIVA.Update().VC.GetValue <bool>(false) && enableAutoUnloadIVA.Update().VC.GetValue <bool>(false));

            privateState.NotReadyReason = ((currentActivity == ActivitySelect.Ready) ? "" : currentActivity.ToString());
            UpdateReadyToLoadAndUnload(true, false);

            if (entryActivity != currentActivity)
            {
                privateState.TransferProgressStr = String.Empty;
                if (!privateState.IsCycling)
                {
                    privateState.TransferCount = 0;
                }
            }

            bool busy = false;

            switch (currentActivity)
            {
            case ActivitySelect.PerformLoad:
            case ActivitySelect.PerformUnload:
            case ActivitySelect.Reset:
                busy = true;
                break;

            default:
                break;
            }

            // update PrivateBaseState now.
            if (currentActivity == ActivitySelect.Offline)
            {
                if (!PrivateBaseState.IsOnline)
                {
                    if (entryActivity == ActivitySelect.Ready || entryActivity == ActivitySelect.None)
                    {
                        SetBaseState(UseState.Offline, reason, true);
                    }
                    else
                    {
                        SetBaseState(UseState.FailedToOffline, reason, true);
                    }
                }
            }
            else if (!PrivateBaseState.IsOnline)
            {
                SetBaseState(UseState.OnlineBusy, reason, true);
            }
            else if (!PrivateBaseState.IsBusy && busy)
            {
                SetBaseState(UseState.OnlineBusy, reason, true);
            }
            else if (PrivateBaseState.IsBusy && !busy)
            {
                SetBaseState(UseState.Online, reason, true);
            }

            PublishPrivateState();
        }