// This file is part of the Noddybox.WindowsPhone C# suite. // // Noddybox.Emulation is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Noddybox.Emulation is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Noddybox.Emulation. If not, see . // // Copyright (c) 2012 Ian Cowburn // using System; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Ink; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using System.Collections.Generic; namespace Noddybox.WindowsPhone.Silverlight.ViewModels { /// /// Provides a common view model for all file dialogs. /// public class FileDialogViewModel : BaseViewModel { #region Private data private string filename; private string path; private List fileList; #endregion #region Private members private void GetFileList() { FileList = FileInfo.GetFiles(path); } #endregion #region Bindable properties /// /// Get/set the filename. /// public string Filename { get {return filename;} set {SetValue(ref filename, value, "Filename", "IsFileSelected");} } /// /// Get whether there is a filename. /// public bool IsFileSelected { get {return !String.IsNullOrWhiteSpace(filename);} } /// /// Get the list of files. /// public List FileList { get {return fileList;} set {SetValue(ref fileList, value, "FileList"); } } /// /// Get/set the current path. /// public string Path { get {return path;} set { SetValue(ref path, value, "Path"); Filename = String.Empty; GetFileList(); } } #endregion #region Public members /// /// Called when a file is selected. /// /// The selected file. public void FileSelected(FileInfo file) { if (file.IsFolder) { string newPath = path; if (file.Name != "..") { newPath += file.Name + "/"; } else { if (newPath.Length > 1) { string[] parts = newPath.Split(new char[] {'/'}, StringSplitOptions.RemoveEmptyEntries); newPath = "/"; for(int f = 0; f < parts.Length-1; f++) { newPath += parts[f] + "/"; } } else { newPath = "/"; } } Path = newPath; } else { Filename = file.Name; } } #endregion #region Constructors /// /// Construct the view model. /// /// The path to start selecting from. public FileDialogViewModel(string startPath) { path = startPath; Filename = String.Empty; GetFileList(); } #endregion } }