From 1c036de8e527038f00b7ff07fc1ef4b80f23a846 Mon Sep 17 00:00:00 2001
From: Ian C <ianc@noddybox.co.uk>
Date: Wed, 27 Jun 2012 17:22:49 +0000
Subject: Started trying to add dependency objects.  Don't work yet.

---
 .../ViewModels/FileDialogViewModel.cs              | 159 +++++++++++++++++++++
 1 file changed, 159 insertions(+)
 create mode 100644 Noddybox.WindowsPhone.Silverlight/ViewModels/FileDialogViewModel.cs

(limited to 'Noddybox.WindowsPhone.Silverlight/ViewModels')

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
+    }
+}
-- 
cgit v1.2.3