diff options
| author | Ian C <ianc@noddybox.co.uk> | 2012-06-27 17:22:49 +0000 | 
|---|---|---|
| committer | Ian C <ianc@noddybox.co.uk> | 2012-06-27 17:22:49 +0000 | 
| commit | 1c036de8e527038f00b7ff07fc1ef4b80f23a846 (patch) | |
| tree | 386aaa9c1d07f708c53bf05874f848a6a2e194c6 /Noddybox.WindowsPhone.Silverlight/ViewModels | |
| parent | aba818f3b66751842f457169ff1cfa58fc43dd84 (diff) | |
Started trying to add dependency objects.  Don't work yet.
Diffstat (limited to 'Noddybox.WindowsPhone.Silverlight/ViewModels')
| -rw-r--r-- | Noddybox.WindowsPhone.Silverlight/ViewModels/FileDialogViewModel.cs | 159 | 
1 files changed, 159 insertions, 0 deletions
| diff --git a/Noddybox.WindowsPhone.Silverlight/ViewModels/FileDialogViewModel.cs b/Noddybox.WindowsPhone.Silverlight/ViewModels/FileDialogViewModel.cs new file mode 100644 index 0000000..afc8e63 --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/ViewModels/FileDialogViewModel.cs @@ -0,0 +1,159 @@ +// 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 <http://www.gnu.org/licenses/>.
 +//
 +// 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
 +{
 +    /// <summary>
 +    /// Provides a common view model for all file dialogs.
 +    /// </summary>
 +    public class FileDialogViewModel : BaseViewModel
 +    {
 +        #region Private data
 +
 +        private string filename;
 +        private string path;
 +        private List<FileInfo> fileList;
 +
 +        #endregion
 +        
 +        #region Private members
 +
 +        private void GetFileList()
 +        {
 +            FileList = FileInfo.GetFiles(path);
 +        }
 +
 +        #endregion
 +
 +        #region Bindable properties
 +
 +        /// <summary>
 +        /// Get/set the filename.
 +        /// </summary>
 +        public string Filename
 +        {
 +            get {return filename;}
 +            set {SetValue(ref filename, value, "Filename", "IsFileSelected");}
 +        }
 +
 +        /// <summary>
 +        /// Get whether there is a filename.
 +        /// </summary>
 +        public bool IsFileSelected
 +        {
 +            get {return !String.IsNullOrWhiteSpace(filename);}
 +        }
 +
 +
 +        /// <summary>
 +        /// Get the list of files.
 +        /// </summary>
 +        public List<FileInfo> FileList
 +        {
 +            get {return fileList;}
 +            set {SetValue(ref fileList, value, "FileList"); }
 +        }
 +
 +        /// <summary>
 +        /// Get/set the current path.
 +        /// </summary>
 +        public string Path
 +        {
 +            get {return path;}
 +            set
 +            {
 +                SetValue(ref path, value, "Path");
 +                Filename = String.Empty;
 +                GetFileList();
 +            }
 +        }
 +
 +        #endregion
 +
 +        #region Public members
 +
 +        /// <summary>
 +        /// Called when a file is selected.
 +        /// </summary>
 +        /// <param name="file">The selected file.</param>
 +        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
 +
 +        /// <summary>
 +        /// Construct the view model.
 +        /// </summary>
 +        /// <param name="startPath">The path to start selecting from.</param>
 +        public FileDialogViewModel(string startPath)
 +        {
 +            path = startPath;
 +            Filename = String.Empty;
 +            GetFileList();
 +        }
 +
 +        #endregion
 +    }
 +}
 | 
