Beispiel #1
0
        public override PluginStatus GetStatus()
        {
            PluginStatus status = new PluginStatus();

            IBPluginState ibPluginState = IBPluginState.Disconnected;

            if (controller != null)
            {
                ibPluginState = controller.GetIBPluginState();
            }

            switch (ibPluginState)
            {
            case IBPluginState.Disconnected:
                status.Status       = StatusCode.SevereError;
                status.Color        = System.Drawing.Color.IndianRed;
                status.ShortMessage = "Off-line";

                break;

            case IBPluginState.Busy:
                status.Status       = StatusCode.OK;
                status.Color        = System.Drawing.Color.Yellow;
                status.ShortMessage = "Busy";

                break;

            case IBPluginState.Ready:
                status.Status       = StatusCode.OK;
                status.Color        = System.Drawing.Color.ForestGreen;
                status.ShortMessage = "Ready";

                break;
            }

            status.LongMessage = LogAndMessage.GetMessages();

            // collect and display data issues
            string failedTickers = controller.GetFailedTickers();
            bool   dataError     = !string.IsNullOrEmpty(failedTickers);

            if (dataError && ibPluginState != IBPluginState.Disconnected)     // if disconnected, data issues are meaningless...
            {
                status.ShortMessage += " !";
                status.Status        = StatusCode.Warning;
                if (string.IsNullOrEmpty(status.LongMessage))
                {
                    status.LongMessage = "Failed tickers: " + failedTickers;
                }
            }

            // if there is no message, we show the short message (Busy, Ok, etc)
            if (string.IsNullOrEmpty(status.LongMessage))
            {
                status.LongMessage = status.ShortMessage;

                // save as last shown message to avoid status popup
                lastLongMessageText = status.ShortMessage;
            }

            // if new message we use a new lastLongMessageTime value to cause status popup
            if (lastLongMessageText != status.LongMessage)
            {
                lastLongMessageText = status.LongMessage;
                lastLongMessageTime = (int)DateTime.Now.TimeOfDay.TotalMilliseconds;
            }

            // set status and "timestamp"
            status.Status = (StatusCode)((int)status.Status + lastLongMessageTime);

            return(status);
        }