Exemplo n.º 1
0
		public void ShowAddUI (UIBarButtonItem addButton, bool dup, bool folder)
		{
			if (DismissSheetsAndPopovers ()) {
				return;
			}

			var directory = CurrentDocumentListController.Directory;

			if (!ActiveFileSystem.IsWritable)
				return;

			var form = new Form {
				new FormAction (
					"New " + App.DocumentBaseName,
					async () => await AddAndOpenNewDocument ()),
			};

			var pbtext = GetPasteboardText ();
			if (ShowAddFromClipboard && !string.IsNullOrWhiteSpace (pbtext) && lastClipboard != pbtext) {
				lastClipboard = pbtext;
				form.Add (new FormAction (
					"From Clipboard",
					async () => await AddAndOpenDocRef (await DocumentReference.New (
						directory, 
						App.DocumentBaseName, 
						App.DefaultExtension,
						ActiveFileSystem, 
						App.CreateDocument, 
						GetNewDocumentText () + pbtext))));
			}

			var odi = OpenedDocIndex;
			var source = (dup && 0 <= odi && odi < Docs.Count) ?
			             Docs [odi] :
			             null;
			if (source != null) {
				form.Add (new FormAction (
					"Duplicate",
					async () => await AddAndOpenDocRef (await source.Duplicate (ActiveFileSystem))));
			}

			if (folder && GetDirectoryDepth (directory) < ActiveFileSystem.MaxDirectoryDepth) {
				form.Add (new FormAction (
					"Folder",
					AddFolder));
			}

			if (form.Count > 1) {
				form.Title = "Add";
				form.Add (new FormAction ("Cancel"));

				ActionSheet = form.ToActionSheet ();
				ActionSheet.ShowFrom (addButton, true);
			} else {
				((FormAction)form [0]).Execute ();
			}
		}