Esempio n. 1
0
        public override bool OnContextItemSelected(IMenuItem item)
        {
            var info         = (AdapterView.AdapterContextMenuInfo)item.MenuInfo;
            var index        = item.ItemId;
            var menuItems    = Resources.GetStringArray(Resource.Array.menu);
            var menuItemName = menuItems[index];
            var noteTitle    = notesList[info.Position].Title;

            if (menuItemName.Equals("Rename"))
            {
                string        newTitle = noteTitle;
                List <string> titles   = TableAccess.GetAllTitles();
                Android.App.AlertDialog.Builder adb = new Android.App.AlertDialog.Builder(this);
                Android.App.AlertDialog         ad;

                EditText et = new EditText(this);
                et.SetSingleLine();
                et.Text = noteTitle;

                adb.SetTitle("Rename Note");
                adb.SetMessage("Type a title and hit enter:");
                adb.SetView(et);
                adb.SetPositiveButton("Rename", (senderAlert, args) =>
                {
                    try
                    {
                        notesList.RemoveAt(info.Position);
                        TableAccess.EditName(noteTitle, newTitle);
                        notesList.Add(TableAccess.GetNoteFromTitle(newTitle));
                    }
                    catch (Exception ex)
                    {
                        Toast.MakeText(this, "Could not save file: " + ex, ToastLength.Short).Show();
                    }
                    adb.Dispose();
                });

                adb.SetNegativeButton("Cancel", (senderAlert, args) =>
                {
                    adb.Dispose();
                });

                ad = adb.Show();
                ad.GetButton(-1).Enabled = false;

                et.KeyPress += (object sender, View.KeyEventArgs e) =>
                {
                    if ((e.KeyCode == Keycode.Enter))
                    {
                        newTitle = StripIllegalChars(et.Text);
                        if (string.IsNullOrEmpty(newTitle))
                        {
                            Toast.MakeText(this, "Please enter a valid name", ToastLength.Short).Show();
                            ad.GetButton(-1).Enabled = false;
                        }
                        else if (titles.Contains(newTitle))
                        {
                            Toast.MakeText(this, "Name already exists, please choose another.", ToastLength.Short).Show();
                            ad.GetButton(-1).Enabled = false;
                        }
                        else
                        {
                            ad.GetButton(-1).Enabled = true;
                        }
                    }
                    else
                    {
                        ad.GetButton(-1).Enabled = false;
                    }
                };
                return(true);
            }
            else if (menuItemName.Equals("Delete"))
            {
                Android.App.AlertDialog.Builder adb = new Android.App.AlertDialog.Builder(this);
                Android.App.AlertDialog         ad;

                adb.SetTitle("Delete Note");
                adb.SetMessage("Are you sure you want to delete this note and all of its replies?");
                adb.SetPositiveButton("Delete", (senderAlert, args) =>
                {
                    try
                    {
                        notesList.RemoveAt(info.Position);
                        TableAccess.DeleteRecursive(noteTitle);
                        adapter = new NotesListAdapter(this, notesList);
                        notesListView.Adapter = adapter;
                    }
                    catch (Exception ex)
                    {
                        Toast.MakeText(this, "Could not delete note: " + ex, ToastLength.Short).Show();
                    }
                    adb.Dispose();
                });
                adb.SetNegativeButton("Cancel", (senderAlert, args) =>
                {
                    adb.Dispose();
                });

                ad = adb.Show();

                return(true);
            }
            ;
            return(false);
        }