Exemple #1
0
        public override void OnActivityCreated(Bundle savedInstanceState)
        {
            base.OnActivityCreated(savedInstanceState);
            brickController = BrickController.Instance;
            remoteSettings  = RemoteSettings.Instance;

            sensorSpinner[0] = this.View.FindViewById <Spinner> (Resource.Id.sensorSpinner1);
            sensorSpinner[1] = this.View.FindViewById <Spinner> (Resource.Id.sensorSpinner2);
            sensorSpinner[2] = this.View.FindViewById <Spinner> (Resource.Id.sensorSpinner3);
            sensorSpinner[3] = this.View.FindViewById <Spinner> (Resource.Id.sensorSpinner4);

            sensorReadButton[0] = this.View.FindViewById <Button> (Resource.Id.readButton1);
            sensorReadButton[1] = this.View.FindViewById <Button> (Resource.Id.readButton2);
            sensorReadButton[2] = this.View.FindViewById <Button> (Resource.Id.readButton3);
            sensorReadButton[3] = this.View.FindViewById <Button> (Resource.Id.readButton4);

            sensorSayButton[0] = this.View.FindViewById <Button> (Resource.Id.sayButton1);
            sensorSayButton[1] = this.View.FindViewById <Button> (Resource.Id.sayButton2);
            sensorSayButton[2] = this.View.FindViewById <Button> (Resource.Id.sayButton3);
            sensorSayButton[3] = this.View.FindViewById <Button> (Resource.Id.sayButton4);

            sensorValue[0] = this.View.FindViewById <EditText> (Resource.Id.sensorValue1);
            sensorValue[1] = this.View.FindViewById <EditText> (Resource.Id.sensorValue2);
            sensorValue[2] = this.View.FindViewById <EditText> (Resource.Id.sensorValue3);
            sensorValue[3] = this.View.FindViewById <EditText> (Resource.Id.sensorValue4);


            ArrayAdapter <string> adapter = new ArrayAdapter <string>(this.Activity, Android.Resource.Layout.SimpleSpinnerItem);

            string[] sensorNames = MonoBrick.NXT.Sensor.SensorDictionary.Keys.ToArray();
            foreach (string s in sensorNames)
            {
                adapter.Add(s);
            }
            for (int i = 0; i < 4; i++)
            {
                sensorSpinner[i].Adapter = adapter;
            }
            sensorReadButton[0].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor1.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[0].Text = s;
                    });
                });
            };

            sensorReadButton[1].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor2.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[1].Text = s;
                    });
                });
            };

            sensorReadButton[2].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor3.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[2].Text = s;
                    });
                });
            };

            sensorReadButton[3].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor4.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[3].Text = s;
                    });
                });
            };

            sensorSayButton[0].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor1.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[0].Text = s;
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                });
            };


            sensorSayButton[1].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor2.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[1].Text = s;
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                });
            };


            sensorSayButton[2].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor3.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[2].Text = s;
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                });
            };

            sensorSayButton[3].Click += delegate {
                brickController.SpawnThread(delegate(){
                    string s = brickController.NXT.Sensor4.ReadAsString();
                    Activity.RunOnUiThread(delegate() {
                        sensorValue[3].Text = s;
                        //this should not run in the gui thread
                        if (remoteSettings.SensorValueToSpeech && TabActivity.Speech != null)
                        {
                            TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
                        }
                    });
                });
            };

            sensorSpinner[0].Id            = 0;
            sensorSpinner[0].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
                Spinner spinner = (Spinner)sender;
                MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string)spinner.GetItemAtPosition(e.Position)];
                remoteSettings.Sensor1 = (string)spinner.GetItemAtPosition(e.Position);
                brickController.SpawnThread(delegate(){
                    brickController.NXT.Sensor1 = newSensor;
                });
            };

            sensorSpinner[1].Id            = 0;
            sensorSpinner[1].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
                Spinner spinner = (Spinner)sender;
                MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string)spinner.GetItemAtPosition(e.Position)];
                remoteSettings.Sensor2 = (string)spinner.GetItemAtPosition(e.Position);
                brickController.SpawnThread(delegate(){
                    brickController.NXT.Sensor2 = newSensor;
                });
            };

            sensorSpinner[2].Id            = 0;
            sensorSpinner[2].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
                Spinner spinner = (Spinner)sender;
                MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string)spinner.GetItemAtPosition(e.Position)];
                remoteSettings.Sensor3 = (string)spinner.GetItemAtPosition(e.Position);
                brickController.SpawnThread(delegate(){
                    brickController.NXT.Sensor3 = newSensor;
                });
            };

            sensorSpinner[3].Id            = 0;
            sensorSpinner[3].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
                Spinner spinner = (Spinner)sender;
                MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string)spinner.GetItemAtPosition(e.Position)];
                remoteSettings.Sensor4 = (string)spinner.GetItemAtPosition(e.Position);
                brickController.SpawnThread(delegate(){
                    brickController.NXT.Sensor4 = newSensor;
                });
            };
        }
        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);
        }
			public override void OnActivityCreated (Bundle savedInstanceState)
			{
				base.OnActivityCreated (savedInstanceState);
				brickController = BrickController.Instance;
				remoteSettings = RemoteSettings.Instance;
				
				sensorSpinner[0] = this.View.FindViewById<Spinner> (Resource.Id.sensorSpinner1);
				sensorSpinner[1] = this.View.FindViewById<Spinner> (Resource.Id.sensorSpinner2);
				sensorSpinner[2] = this.View.FindViewById<Spinner> (Resource.Id.sensorSpinner3);
				sensorSpinner[3] = this.View.FindViewById<Spinner> (Resource.Id.sensorSpinner4);
			
				sensorReadButton[0] = this.View.FindViewById<Button> (Resource.Id.readButton1);
				sensorReadButton[1] = this.View.FindViewById<Button> (Resource.Id.readButton2);
				sensorReadButton[2] = this.View.FindViewById<Button> (Resource.Id.readButton3);
				sensorReadButton[3] = this.View.FindViewById<Button> (Resource.Id.readButton4);
			
				sensorSayButton[0] = this.View.FindViewById<Button> (Resource.Id.sayButton1);
				sensorSayButton[1] = this.View.FindViewById<Button> (Resource.Id.sayButton2);
				sensorSayButton[2] = this.View.FindViewById<Button> (Resource.Id.sayButton3);
				sensorSayButton[3] = this.View.FindViewById<Button> (Resource.Id.sayButton4);
			
				sensorValue[0] = this.View.FindViewById<EditText> (Resource.Id.sensorValue1);
				sensorValue[1] = this.View.FindViewById<EditText> (Resource.Id.sensorValue2);
				sensorValue[2] = this.View.FindViewById<EditText> (Resource.Id.sensorValue3);
				sensorValue[3] = this.View.FindViewById<EditText> (Resource.Id.sensorValue4);
			
			
				ArrayAdapter<string> adapter = new ArrayAdapter<string>(this.Activity,Android.Resource.Layout.SimpleSpinnerItem);
				string[] sensorNames = MonoBrick.NXT.Sensor.SensorDictionary.Keys.ToArray();
				foreach(string s in sensorNames){
					adapter.Add(s);
				}
				for(int i = 0; i < 4; i ++){
					sensorSpinner[i].Adapter = adapter;
				}
				sensorReadButton[0].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor1.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[0].Text = s;
						});
					});
				};
			
				sensorReadButton[1].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor2.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[1].Text = s;
						});
					});
				};
			
				sensorReadButton[2].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor3.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[2].Text = s;
						});
					});
				};
			
				sensorReadButton[3].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor4.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[3].Text = s;
						});
					});
				};
				
				sensorSayButton[0].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor1.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[0].Text = s;
							//this should not run in the gui thread
							if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
								TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
							}
						});
						
					});
				};
				
				
				sensorSayButton[1].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor2.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[1].Text = s;
							//this should not run in the gui thread
							if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
								TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
							}
						});
						
					});
				};
				
				
				sensorSayButton[2].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor3.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[2].Text = s;
							//this should not run in the gui thread
							if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
								TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
							}
						});
						
					});
				};
				
				sensorSayButton[3].Click += delegate {
					brickController.SpawnThread(delegate(){
						string s = brickController.NXT.Sensor4.ReadAsString();
						Activity.RunOnUiThread(delegate() {
							sensorValue[3].Text = s;
							//this should not run in the gui thread
							if(remoteSettings.SensorValueToSpeech && TabActivity.Speech != null){
								TabActivity.Speech.Speak(s, Android.Speech.Tts.QueueMode.Flush, null);
							}
						});
						
					});
				};
			
				sensorSpinner[0].Id = 0;
				sensorSpinner[0].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
					Spinner spinner = (Spinner)sender;
	    			MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string) spinner.GetItemAtPosition(e.Position)];
					remoteSettings.Sensor1 = (string) spinner.GetItemAtPosition(e.Position);
					brickController.SpawnThread(delegate(){
						brickController.NXT.Sensor1 = newSensor;
					});
				};
			
				sensorSpinner[1].Id = 0;
				sensorSpinner[1].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
					Spinner spinner = (Spinner)sender;
	    			MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string) spinner.GetItemAtPosition(e.Position)];
					remoteSettings.Sensor2 = (string) spinner.GetItemAtPosition(e.Position);
					brickController.SpawnThread(delegate(){
						brickController.NXT.Sensor2 = newSensor;
					});
				};
			
				sensorSpinner[2].Id = 0;
				sensorSpinner[2].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
					Spinner spinner = (Spinner)sender;
	    			MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string) spinner.GetItemAtPosition(e.Position)];
					remoteSettings.Sensor3 = (string) spinner.GetItemAtPosition(e.Position);
					brickController.SpawnThread(delegate(){
						brickController.NXT.Sensor3 = newSensor;
					});
				};
			
				sensorSpinner[3].Id = 0;
				sensorSpinner[3].ItemSelected += delegate(object sender, AdapterView.ItemSelectedEventArgs e) {
					Spinner spinner = (Spinner)sender;
	    			MonoBrick.NXT.Sensor newSensor = MonoBrick.NXT.Sensor.SensorDictionary[(string) spinner.GetItemAtPosition(e.Position)];
					remoteSettings.Sensor4 = (string) spinner.GetItemAtPosition(e.Position);
					brickController.SpawnThread(delegate(){
						brickController.NXT.Sensor4 = newSensor;
					});
				};
				
			}