public async Task NavigatePath(string path) { string parsingName = FileSystemHelper.GetFileParsingName(path); if (String.IsNullOrEmpty(parsingName)) { return; } FileModel navigationModel = FileModel.FromPath(parsingName); FileModel fileModel = navigationModel; while (fileModel != null) { if (!fileModel.IsRoot && fileModel.Parent == null) { fileModel.Parent = FileModel.FromPath(fileModel.ParentPath); } fileModel = fileModel.Parent; if (fileModel != null && fileModel.Folders == null) { fileModel.Folders = await FileSystemHelper.GetFolders(fileModel); } } if (navigationModel != null) { OpenItem(navigationModel); } }
public BrowserTabViewModel() { Layout = (Layout)Settings.Layout; UpdateFilterCriteria(); Settings.PropertyChanged += (s, e) => { if (e.PropertyName == "ShowHiddenItems" || (e.PropertyName == "ShowSystemItems")) { UpdateFilterCriteria(); } SaveSettings(); }; Messenger.Default.Register(this, (NotificationMessage message) => { if (message.NotificationType == NotificationType.Add && CurrentFolder.FullPath.OrdinalEquals(FileSystemHelper.GetParentFolderPath(message.Path))) { FileModel fileModel = FileModel.FromPath(message.Path); if (!DisplayItems.Contains(fileModel)) { DisplayItems.Add(fileModel); } } else if (message.NotificationType == NotificationType.Remove && message.Path.OrdinalStartsWith(CurrentFolder.FullPath)) { FileModel fileModel = DisplayItems.FirstOrDefault(x => x.FullPath.OrdinalEquals(message.Path)); if (fileModel != null) { DisplayItems.Remove(fileModel); } } }); }
private static void CreateMainview(IEnumerable <string> folders = null) { MainView mainView = Current.Windows.OfType <MainView>().FirstOrDefault(x => x.IsActive); if (mainView == null) { mainView = new MainView(); mainView.DataContext = ViewModelSource.Create <MainViewModel>(); } MainViewModel mainViewModel = mainView.DataContext as MainViewModel; List <string> validFolders = folders?.Where(x => FileSystemHelper.DirectoryExists(x)).ToList(); if (validFolders?.Count > 0) { foreach (string folder in validFolders) { FileModel fileModel = FileModel.FromPath(folder); mainViewModel.CreateNewTab(fileModel); } } else { mainViewModel.CreateNewTab(); } mainView.Show(); }
private static void CreateMainview(IEnumerable <string> folders = null) { MainView mainView = Current.Windows.OfType <MainView>().FirstOrDefault(x => x.IsActive); if (mainView == null) { mainView = new MainView(); mainView.DataContext = ViewModelSource.Create <MainViewModel>(); } MainViewModel mainViewModel = mainView.DataContext as MainViewModel; if (folders?.Count() > 0) { foreach (string folder in folders) { if (Directory.Exists(folder)) { FileModel fileModel = FileModel.FromPath(folder); mainViewModel.CreateNewTab(fileModel); } } } else { mainViewModel.CreateNewTab(); } mainView.Show(); }
public static ImageSource GetImage(string path, IconSize iconSize) { if (!File.Exists(path)) { return(SafeNativeMethods.GetIcon(Path.GetExtension(path), iconSize.ToSHIL())); } FileModel fileModel = FileModel.FromPath(path); return(GetImage(fileModel, iconSize)); }
public void Rename(FileModel fileModel) { RenameViewModel viewModel = ViewModelSource.Create <RenameViewModel>(); viewModel.Name = fileModel.Name; viewModel.Extension = fileModel.Extension; viewModel.DateCreated = fileModel.DateCreated; viewModel.DateModified = fileModel.DateModified; viewModel.DateAccessed = fileModel.DateAccessed; viewModel.ShowPatternButtons = true; viewModel.ShowAdvancedOptions = true; viewModel.Parent = fileModel.ParentName.RemoveInvalidFileNameCharacters(); if (String.IsNullOrEmpty(viewModel.Parent)) { viewModel.Parent = fileModel.ParentPath.RemoveInvalidFileNameCharacters(); } MessageResult result = DialogService.ShowDialog(MessageButton.OKCancel, Properties.Resources.Rename, "RenameView", viewModel); if (result == MessageResult.OK) { string newName = viewModel.Name.Trim() + viewModel.Extension; if (newName != fileModel.FullName) { Utilities.RenameFile(fileModel.FullPath, newName); } if (fileModel.DateCreated != viewModel.DateCreated) { Utilities.SetCreationTime(fileModel.FullPath, viewModel.DateCreated); } if (fileModel.DateModified != viewModel.DateModified) { Utilities.SetLastWriteTime(fileModel.FullPath, viewModel.DateModified); } if (fileModel.DateAccessed != viewModel.DateAccessed) { Utilities.SetLastAccessTime(fileModel.FullPath, viewModel.DateAccessed); } FileModel.FromPath(fileModel.FullPath); } }
public void Execute(IList <object> items) { try { List <string> parameters = new List <string>(); List <FileModel> files = items.OfType <FileModel>().ToList(); if (Parameter == ParameterType.Name) { parameters = files.Select(x => String.Format("\"{0}\"", x.FullName)).ToList(); } else if (Parameter == ParameterType.Path) { parameters = files.Select(x => String.Format("\"{0}\"", x.FullPath)).ToList(); } else if (!String.IsNullOrEmpty(Expression)) { List <FileModel> expressionResults = new List <FileModel>(); foreach (FileModel file in files) { object result = new ExpressionEvaluator(Properties, CriteriaOperator.Parse(Expression)).Evaluate(file); if (result != null) { parameters.Add(result.ToString()); string parsingName = FileSystemHelper.GetFileParsingName(result.ToString()); if (!String.IsNullOrEmpty(parsingName)) { expressionResults.Add(FileModel.FromPath(parsingName)); } } } files = expressionResults; } if (Command == CommandType.OpenWithApplication) { ProcessStartInfo processStartInfo = new ProcessStartInfo(Application); processStartInfo.UseShellExecute = false; processStartInfo.WorkingDirectory = files.FirstOrDefault()?.ParentPath; processStartInfo.Arguments = parameters.Join(" "); Process.Start(processStartInfo); } else { CommandMessage message = new CommandMessage { CommandType = Command, Parameters = files }; Messenger.Default.Send(message); } } catch (Exception ex) { Utilities.ShowMessage(ex); } }