/// <summary> /// Prompts the user which view or property grouping to go int. /// </summary> /// <param name="itemsToChooseFrom">The items at this level.</param> /// <param name="quit">If true, the user chose to quit rather than navigate.</param> /// <returns>The selected item to navigate to, or null to go back a folder.</returns> private static FolderContentItem GetNextNavigationItem(FolderContentItems itemsToChooseFrom, out bool quit) { int selectedIndex = -1; quit = false; // As the user to select a number to go to, or q to exit. while (selectedIndex == -1) { // Prompt the user. Console.WriteLine("Enter the number of the item to navigate to, or q to exit."); var enteredText = Console.ReadLine(); // Did they ask to quit? if ("q".Equals(enteredText, StringComparison.InvariantCultureIgnoreCase)) { // Quit! quit = true; return(null); } // Did they select a valid item? if (Int32.TryParse(enteredText, out selectedIndex) && selectedIndex >= 0 && selectedIndex <= itemsToChooseFrom.Items.Count) { // It was valid, but what did they select? // 0 == go up a view. if (selectedIndex == 0) { return(null); } else { // Get the item selected. var nextNavItem = itemsToChooseFrom.Items[selectedIndex - 1]; // Navigate to the new level. return(nextNavItem); } } // Not a valid item - ask again. selectedIndex = -1; } return(null); }
private void ListFolderContentItems(FolderContentItems folderContentItems) { foreach (FolderContentItem f in folderContentItems) { switch (f.FolderContentItemType) { case MFFolderContentItemType.MFFolderContentItemTypeViewFolder: Console.WriteLine("MFFolderContentItemType.MFFolderContentItemTypeViewFolder"); // do something with View Console.WriteLine("View id: {0}, View name: {1}, Viewtype: {2}, IsCommon: {3}, HasParent: {4}.", f.View.ID, f.View.Name, f.View.ViewType, f.View.Common, f.View.HasParent); break; case MFFolderContentItemType.MFFolderContentItemTypeUnknown: Console.WriteLine("MFFolderContentItemType.MFFolderContentItemTypeUnknown"); // do something with Unknown? break; case MFFolderContentItemType.MFFolderContentItemTypeTraditionalFolder: Console.WriteLine("MFFolderContentItemType.MFFolderContentItemTypeTraditionalFolder"); // do something with traditional folder Console.WriteLine("Traditional folder DisplayValue: {0}, ObjectType: {1}, ObjectFlags: {2}.", f.TraditionalFolder.DisplayValue, f.TraditionalFolder.ObjectType, f.TraditionalFolder.ObjectFlags); break; case MFFolderContentItemType.MFFolderContentItemTypePropertyFolder: Console.WriteLine("MFFolderContentItemType.MFFolderContentItemTypePropertyFolder"); // do something with propertyfolder (grouping) Console.WriteLine("PropertyFolder DisplayValue: {0}, Value (ID means valuelist lookup): {1}.", f.PropertyFolder.DisplayValue, f.PropertyFolder.Value); break; case MFFolderContentItemType.MFFolderContentItemTypeObjectVersion: Console.WriteLine("MFFolderContentItemType.MFFolderContentItemTypeObjectVersion"); // do something with object Console.WriteLine("ObjectVersion Title: {0}, FilesCount: {1}, Class: {2}.", f.ObjectVersion.Title, f.ObjectVersion.FilesCount, f.ObjectVersion.Class); break; case MFFolderContentItemType.MFFolderContentItemTypeExternalViewFolder: Console.WriteLine("MFFolderContentItemType.MFFolderContentItemTypeExternalViewFolder"); // do something with object Console.WriteLine("ExternalView Displayname: {0}, ID: {1}.", f.ExternalView.DisplayName, f.ExternalView.ID); break; default: break; } } }