public void OnCallback(WCF_Functions.MessageData data)
 {
     if (MessageRecieved != null) MessageRecieved(data);
 }
 public void SendMessage(WCF_Functions.MessageData data)
 {
     try
     {
         if (messageProxy != null) messageProxy.SendData(data);
     }
     catch (Exception ex) { TrakHound.Logging.Logger.Log("Exception : " + ex.Message); }
 }
        private void UpdateReady(WCF_Functions.MessageData data)
        {
            // data.Data01 = Application Name
            // data.Data02 = Version

            string name = data.Data01.ToString();
            string version = data.Data02.ToString();

            int index = UpdateItems.ToList().FindIndex(x => x.ApplicationName == name);
            if (index >= 0)
            {
                var item = UpdateItems[index];
                item.ProgressValue = 0;
                item.Loading = false;
                item.UpdateAvailable = true;
                item.Status = version + " Update Ready";

                CheckTimestamps(item);
            }
        }
        private void UpToDate(WCF_Functions.MessageData data)
        {
            // data.Data01 = Application Name

            string name = data.Data01.ToString();

            int index = UpdateItems.ToList().FindIndex(x => x.ApplicationName == name);
            if (index >= 0)
            {
                var item = UpdateItems[index];
                item.ProgressValue = 0;
                item.Loading = false;
                item.UpdateAvailable = false;
                item.Status = "Up to Date";
            }
        }
 private void SendMessage(WCF_Functions.MessageData data)
 {
     System.Threading.ThreadPool.QueueUserWorkItem(SendMessage_Worker, data);
 }
        private void MessageWorker_MessageRecieved(WCF_Functions.MessageData data)
        {
            Dispatcher.BeginInvoke(new Action(() =>
            {
                switch (data.Id)
                {
                    case "download_progress_percentage": DownloadProgressPercentage(data); break;

                    case "download_completed": DownloadCompleted(data); break;

                    case "update_ready": UpdateReady(data); break;

                    case "up_to_date": UpToDate(data); break;

                    case "error": Error(data); break;
                }
            }));
        }
        private void Error(WCF_Functions.MessageData data)
        {
            // data.Data01 = Application Name
            // data.Data02 = Error Text

            string name = data.Data01.ToString();
            string error = data.Data02.ToString();

            int index = UpdateItems.ToList().FindIndex(x => x.ApplicationName == name);
            if (index >= 0)
            {
                var item = UpdateItems[index];
                item.Error = true;
                item.Loading = false;
                item.UpdateAvailable = false;
                item.Status = error;
                item.ProgressValue = 0;
            }
        }
        private void DownloadProgressPercentage(WCF_Functions.MessageData data)
        {
            // data.Data01 = Application Name
            // data.Data02 = Download Progress (int)

            string name = data.Data01.ToString();
            int percentage = (int)data.Data02;

            int index = UpdateItems.ToList().FindIndex(x => x.ApplicationName == name);
            if (index >= 0)
            {
                var item = UpdateItems[index];
                item.ProgressValue = percentage;
                item.Status = "Downloading..";
            }
        }
        private void DownloadCompleted(WCF_Functions.MessageData data)
        {
            // data.Data01 = Application Name

            string name = data.Data01.ToString();

            int index = UpdateItems.ToList().FindIndex(x => x.ApplicationName == name);
            if (index >= 0)
            {
                var item = UpdateItems[index];
                item.ProgressValue = 100;
                item.Status = "Extracting Files..";
            }
        }