예제 #1
0
        public ViewAdminBuilders()
        {
            InitializeComponent ();

            theBuilders.ItemsSource = Global.AllBuilders.Collection;

            IDataServer x = new IDataServer ("users", true, true);
            x.DataRefresh +=  delegate(bool status, string result) {
                System.Diagnostics.Debug.WriteLine("Status: " + x.FileName + "=" + status);
                if(!status)
                    return;
                Global.AllUsers.LoadFromJson(Helper.Decrypt(result));
                Device.BeginInvokeOnMainThread (() => {
                    theUsers.ItemsSource = Global.AllUsers.Collection;
                });
            };
            DataServer.AddToDo (x);

            ShowButtons ();

            theUsers.ItemSelected += TheUsers_ItemSelected;
            theBuilders.ItemSelected += TheBuilders_ItemSelected;

            btIsBuilder.Clicked += BtIsBuilder_Clicked;
            btIsNotBuilder.Clicked += BtIsNotBuilder_Clicked;
            btCreateBuilder.Clicked += BtCreateBuilder_Clicked;
        }
예제 #2
0
		private static void DoJob() {
			if (inProgress)
				return;
			if (toDo.Count == 0)
				return;
			inProgress = true;
			current = toDo [0];
			System.Diagnostics.Debug.WriteLine ("Processing: " + current.FileName);
			current.JobDone += Current_JobDone;
			current.DoDownload ();
		}
예제 #3
0
		public static async Task AddToDo(IDataServer element) {
            var z = await element.HasOldData();
			if (z) {
                string x = await element.OldData();
				element.TriggerData (true, x);
				if (!element.ForceFreshData)
					return;
			}
			toDo.Add (element);
			//DoJob ();
			if (element.IgnoreLocalData)
				DoJob ();
		}
예제 #4
0
		static void Current_JobDone (bool status, string result)
		{
			System.Diagnostics.Debug.WriteLine ("Job done: " + current.FileName);
			current.JobDone -= Current_JobDone;
			current.TriggerData (status, result);
			current = null;
			if (!status) {
				// on error, try again
				count++;
				// but just 3 times
				if (count > 2) {
					// abandon
					toDo.RemoveAt (0);
					count = 0;
				}
			} else {
				// ok, we've done it
				toDo.RemoveAt (0);
				count = 0;
			}
			inProgress = false;
			DoJob ();
		}
예제 #5
0
		private async Task DoProcessAllNews ()
		{
			IDataServer x = new IDataServer ("news", true);
			var a = await x.HasOldData ();
			if (a) {
				SetLabelStage (l9, l91, l92, ProcessStep.Processing);
				var z = await x.OldData ();
				Global.AllNews.LoadFromJson (Helper.Decrypt (z));
				PopulateNews ();
				Global.AllNews.Refresh ();
				SetLabelStage (l9, l91, l92, ProcessStep.Ready);
				if (step == 8)
					step++;
				DoStep ();
				return;
			}
			x.DataRefresh += delegate(bool status, string result) {
				SetLabelStage (l9, l91, l92, ProcessStep.Processing);
				Tools.Trace ("Status: " + x.FileName + "=" + status);
				if (!status) {
					SetLabelStage (l9, l91, l92, ProcessStep.Broken);
					if (step == 8) {
						step++;
						DoStep ();
					}
					return;
				}
				try {
					Global.AllNews.LoadFromJson (Helper.Decrypt (result));
					PopulateNews ();
					Global.AllNews.Refresh ();
					if (step == 8)
						step++;
					DoStep ();
					SetLabelStage (l9, l91, l92, ProcessStep.Ready);
					return;
				} catch (Exception) {
					SetLabelStage (l9, l91, l92, ProcessStep.Broken);
					if (step == 8)
						step++;
					DoStep ();
					return;
				}
			};
			DataServer.AddToDo (x);
			DataServer.Launch ();
		}
예제 #6
0
		private async Task DoProcessAllDroids ()
		{
			IDataServer x = new IDataServer ("droids", true);
			var a = await x.HasOldData ();
			if (a) {
				SetLabelStage (l6, l61, l62, ProcessStep.Processing);
				//Global.AllBuilders.LoadFromJson(Helper.Decrypt(x.OldData));
				SetLabelStage (l6, l61, l62, ProcessStep.Ready);
				if (step == 5)
					step++;
				DoStep ();
				return;
			}
			x.DataRefresh += delegate(bool status, string result) {
				SetLabelStage (l6, l61, l62, ProcessStep.Processing);
				Tools.Trace ("Status: " + x.FileName + "=" + status);
				if (!status) {
					SetLabelStage (l6, l61, l62, ProcessStep.Broken);
					if (step == 5) {
						step++;
						DoStep ();
					}
					return;
				}
				try {
					//Global.AllBuilders.LoadFromJson (Helper.Decrypt (result));
					if (step == 5)
						step++;
					DoStep ();
					SetLabelStage (l6, l61, l62, ProcessStep.Ready);
					return;
				} catch (Exception) {
					SetLabelStage (l6, l61, l62, ProcessStep.Broken);
					if (step == 5)
						step++;
					DoStep ();
					return;
				}
			};
			DataServer.AddToDo (x);
			DataServer.Launch ();
		}