private FileDocumentItem[] OrderBy(FileDocumentItem[] items, FileDocumentItemSortOrders orderBy, bool isDesc) { if (items == null || items.Length <= 1) { return(items); } switch (orderBy) { case FileDocumentItemSortOrders.Default: case FileDocumentItemSortOrders.ByName: return(isDesc ? items.OrderByDescending(p => p.IsFolder).ThenByDescending(p => p.DisplayName).ToArray() : items.OrderByDescending(p => p.IsFolder).ThenBy(p => p.DisplayName).ToArray()); case FileDocumentItemSortOrders.ByLastModified: return(isDesc ? items.OrderByDescending(p => p.LastModified).ThenBy(p => p.DisplayName).ToArray() : items.OrderBy(p => p.LastModified).ThenBy(p => p.DisplayName).ToArray()); case FileDocumentItemSortOrders.BySize: return(isDesc ? items.OrderByDescending(p => p.Size).ThenBy(p => p.DisplayName).ToArray() : items.OrderBy(p => p.Size).ThenBy(p => p.DisplayName).ToArray()); default: throw new NotImplementedException(orderBy.ToString()); } }
protected override void OnRestoreInstanceState(Bundle savedInstanceState) { base.OnRestoreInstanceState(savedInstanceState); try { _doNotCancel = savedInstanceState.GetBoolean(DoNotCancelKey, false); if (_previousParents == null || _previousParents.Count == 0) { var src = savedInstanceState.GetString(PreviousParentsKey); if (!string.IsNullOrEmpty(src)) { _previousParents = JsonConvert.DeserializeObject <Stack <string> >(src); } } if (_selectedItem == null) { var src = savedInstanceState.GetString(SelectedItemKey); if (!string.IsNullOrEmpty(src)) { _selectedItem = JsonConvert.DeserializeObject <FileDocumentItem>(src); } } _orderBy = (FileDocumentItemSortOrders)savedInstanceState.GetInt(OrderByKey); if (_currentParent == null) { var src = savedInstanceState.GetString(CurrentParentKey); if (!string.IsNullOrEmpty(src)) { _currentParent = JsonConvert.DeserializeObject <FileDocumentItem>(src); ReplaceFragment(); } } } catch (Exception ex) { Log.Error(ex); } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.activity_file_browser); //Toolbar will now take on default actionbar characteristics var toolbar = FindViewById <Toolbar>(Resource.Id.toolbar); SetSupportActionBar(toolbar); SupportActionBar.Title = string.Empty; SupportActionBar.SetDisplayHomeAsUpEnabled(true); SupportActionBar.SetHomeButtonEnabled(true); try { _showCreateFolderMenu = false; _orderBy = FileDocumentItemSortOrders.Default; // documents provider _documentsProvider = new FileDocumentsProvider(); _documentsProvider.AttachInfo(this, CreateProviderInfo(string.Format("{0}.{1}", AppSettings.AppPackageName, _documentsProvider.GetType().Name.ToLower()))); //HARDCODE: // root GetRoot(); if (string.IsNullOrEmpty(_root?.DocumentId)) { throw new ArgumentNullException(nameof(_root)); } // stack _previousParents = new Stack <string>(); // start parameters var displayName = Intent.GetStringExtra(Intent.ExtraTitle); var mimeType = Intent.Type; var isCategoryOpenable = Intent.Categories?.Contains(Intent.CategoryOpenable) == true; var action = Intent?.Action; // end parameters var statusBar = FindViewById(Resource.Id.statusBar); _imgNewFileName = FindViewById <ImageView>(Resource.Id.imgNewFileName); _txtNewFileName = FindViewById <EditText>(Resource.Id.txtNewFileName); _btnAction = FindViewById <Button>(Resource.Id.btnAction); _viewProgressbar = FindViewById(Resource.Id.toolbarProgress); switch (action) { case Intent.ActionCreateDocument: _showCreateFolderMenu = true; if (_imgNewFileName != null) { _imgNewFileName.SetImageResource(Resource.Drawable.ic_file); _imgNewFileName.Visibility = ViewStates.Visible; } if (_txtNewFileName != null) { _txtNewFileName.Text = displayName ?? string.Empty; _txtNewFileName.Visibility = ViewStates.Visible; } if (_btnAction != null) { _btnAction.SetText(Resource.String.Save); _btnAction.LayoutParameters.Width = ViewGroup.LayoutParams.WrapContent; } _mimeType = mimeType; _isCategoryOpenable = isCategoryOpenable; break; case Intent.ActionOpenDocumentTree: _isActionOpenDocumentTree = true; _showCreateFolderMenu = true; if (_imgNewFileName != null) { _imgNewFileName.Visibility = ViewStates.Gone; } if (_txtNewFileName != null) { _txtNewFileName.Visibility = ViewStates.Gone; } if (_btnAction != null) { _btnAction.LayoutParameters.Width = ViewGroup.LayoutParams.MatchParent; } break; default: if (statusBar != null) { statusBar.Visibility = ViewStates.Gone; } _imgNewFileName?.Dispose(); _imgNewFileName = null; _txtNewFileName?.Dispose(); _txtNewFileName = null; _btnAction?.Dispose(); _btnAction = null; _mimeType = mimeType; _isCategoryOpenable = isCategoryOpenable; break; } if (savedInstanceState == null) { var searchQuery = Intent.GetStringExtra(ExtraSearchQuery); var taskType = string.IsNullOrEmpty(searchQuery) ? FileBrowserFragment.DocumentTaskTypes.QueryChildDocuments : FileBrowserFragment.DocumentTaskTypes.QuerySearchDocuments; ReplaceFragment(isAdd: true, useCustomAnimation: false, taskType: taskType, query: searchQuery); } } catch (Exception ex) { Log.Error(ex); Toast.MakeText(this, GetString(Resource.String.InternalError), AppSettings.ToastLength).Show(); } }
public override bool OnOptionsItemSelected(IMenuItem item) { try { if (_isWaiting || item == null) { return(false); } switch (item.ItemId) { case Android.Resource.Id.Home: Finish(); return(true); case Resource.Id.menuItemFileBrowserUpward: if (_currentParent != null && _currentParent.DocumentId != _root.DocumentId) { var previousParentId = _previousParents.Count == 0 ? GetParent(_currentParent.DocumentId) ?? _root.DocumentId : _previousParents.Pop(); ReplaceFragment(parentDocumentId: previousParentId); } return(true); case Resource.Id.menuItemFileBrowserCreateFolder: var dlg = new WidgetUtil(); dlg.InputDialog(context: this, titleId: Resource.String.CreateFolderTitle, layoutId: Resource.Layout.text_input, editTextId: Resource.Id.txtInput, okAction: (view, value) => { if (string.IsNullOrEmpty(value)) { return(false); } try { var docId = _documentsProvider.CreateDocument(_currentParent.DocumentId, DocumentsContract.Document.MimeTypeDir, value); _previousParents.Push(_currentParent.DocumentId); ReplaceFragment(useCustomAnimation: false, parentDocumentId: docId); } catch (Exception ex) { Log.Error(ex); Toast.MakeText(this, GetString(Resource.String.InternalError), AppSettings.ToastLength) .Show(); return(false); } return(true); }); return(true); case Resource.Id.menuItemFileBrowserSortByName: item.SetChecked(!item.IsChecked); if (item.IsChecked && _orderBy != FileDocumentItemSortOrders.Default && _orderBy != FileDocumentItemSortOrders.ByName) { _orderBy = FileDocumentItemSortOrders.ByName; ReplaceFragment(); } return(true); case Resource.Id.menuItemFileBrowserSortByDate: item.SetChecked(!item.IsChecked); if (item.IsChecked && _orderBy != FileDocumentItemSortOrders.ByLastModified) { _orderBy = FileDocumentItemSortOrders.ByLastModified; ReplaceFragment(); } return(true); case Resource.Id.menuItemFileBrowserSortBySize: item.SetChecked(!item.IsChecked); if (item.IsChecked && _orderBy != FileDocumentItemSortOrders.BySize) { _orderBy = FileDocumentItemSortOrders.BySize; ReplaceFragment(); } return(true); case Resource.Id.menuItemFileBrowserRefresh: ReplaceFragment(); return(true); case Resource.Id.menuItemFileBrowserSettings: var intent = new Intent(this, typeof(FileBrowserSettingsActivity)); _doNotCancel = true; StartActivityForResult(intent, MenuSettingsRequestCode); break; default: return(base.OnOptionsItemSelected(item)); } } catch (Exception ex) { Log.Error(ex); Toast.MakeText(this, GetString(Resource.String.InternalError), AppSettings.ToastLength) .Show(); } return(false); }