public void ReloadFileList(bool force = true) { if (brickController.NXT.Connection.IsConnected) { if (force || adapter.Items.Count == 0) { ProgressDialog progress = null; this.Activity.RunOnUiThread(delegate() { progress = ProgressDialog.Show(this.View.Context, "Synchronizing file list...", "PLease Wait... "); }); System.Threading.Thread t = new System.Threading.Thread(delegate(object obj){ adapter.Items.Clear(); try{ MonoBrick.IBrickFile[] fileList = brickController.NXT.FileSystem.FileList(); for (int i = 0; i < fileList.Length; i++) { adapter.Items.Add(new FileItem(fileList[i])); } //AddFakeList(); } catch (Exception e) { this.Activity.RunOnUiThread(delegate() { TabActivity.ShowToast(this.Activity, "Failed to synchronize file list: " + e.Message); }); } finally{ this.Activity.RunOnUiThread(delegate() { adapter.NotifyDataSetChanged(); progress.Dismiss(); }); } }); t.IsBackground = true; t.Priority = System.Threading.ThreadPriority.Normal; t.Start(); } else { this.Activity.RunOnUiThread(delegate() { adapter.NotifyDataSetChanged(); }); } } }
public bool OnActionItemClicked(ActionMode mode, IMenuItem item) { switch (item.ItemId) { case Resource.Id.start: brickController.SpawnThread(delegate() { FileItem currentItemSelected = adapter.SelectedItems.First(); if (currentItemSelected.FileType == MonoBrick.FileType.Program) { brickController.NXT.StartProgram(currentItemSelected.Name, true); this.Activity.RunOnUiThread(delegate(){ TabActivity.ShowToast(this.Activity, "Program successfully started"); }); } else { brickController.NXT.PlaySoundFile(currentItemSelected.Name, false, true); this.Activity.RunOnUiThread(delegate(){ TabActivity.ShowToast(this.Activity, "Sound file started"); }); } }); break; case Resource.Id.stop: brickController.SpawnThread(delegate() { brickController.NXT.StopProgram(true); this.Activity.RunOnUiThread(delegate(){ TabActivity.ShowToast(this.Activity, "All programs stoped"); }); }); break; case Resource.Id.delete: AlertDialog.Builder dialog = new AlertDialog.Builder(this.View.Context); dialog.SetIcon(Android.Resource.Drawable.IcMenuInfoDetails); dialog.SetTitle("Delete file(s)"); string message; if (adapter.SelectedItems.Count > 1) { message = "Are you sure you want to delete " + adapter.SelectedItems.Count + " files ?"; } else { message = "Are you sure you want to delete " + adapter.SelectedItems.First().Name + " ?"; } dialog.SetMessage(message); dialog.SetPositiveButton("Yes", delegate(object sender, DialogClickEventArgs e){ ProgressDialog progress = null; this.Activity.RunOnUiThread(delegate() { progress = ProgressDialog.Show(this.View.Context, "Deleting files", "PLease Wait... "); }); System.Threading.Thread t = new System.Threading.Thread(delegate(object obj){ brickController.ExecuteOnCurrentThread(delegate() { Exception ex = null; List <FileItem> uncheckList = new List <FileItem>(); try{ int i = 0; foreach (FileItem myFileItem in adapter.SelectedItems) { if (adapter.SelectedItems.Count > 1) { progress.SetMessage("Deleteing file " + (i + 1) + " of " + adapter.SelectedItems.Count); } else { progress.SetMessage("Deleteing " + myFileItem.Name); } brickController.NXT.FileSystem.DeleteFile(myFileItem.Name); adapter.Items.Remove(myFileItem); uncheckList.Add(myFileItem); i++; } } catch (Exception excep) { ex = excep; } finally { foreach (FileItem fi in uncheckList) { adapter.SelectedItems.Remove(fi); } this.Activity.RunOnUiThread(delegate() { progress.Dismiss(); adapter.NotifyDataSetChanged(); if (mode != null) { mode.Finish(); } }); } if (ex != null) { throw ex; } }); }); t.IsBackground = true; t.Priority = System.Threading.ThreadPriority.Normal; t.Start(); }); dialog.SetNegativeButton("No", delegate(object sender, DialogClickEventArgs e){}); dialog.Show(); break; case Resource.Id.download: Console.WriteLine("Download"); break; } return(true); }