From aba818f3b66751842f457169ff1cfa58fc43dd84 Mon Sep 17 00:00:00 2001 From: Ian C Date: Sun, 24 Jun 2012 22:37:32 +0000 Subject: Development check in --- .../ViewModels/BaseViewModel.cs | 83 +++++++++++++++++ .../ViewModels/FileInfo.cs | 100 +++++++++++++++++++++ .../ViewModels/SaveViewModel.cs | 39 ++++++++ 3 files changed, 222 insertions(+) create mode 100644 Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs create mode 100644 Noddybox.WindowsPhone.Silverlight/ViewModels/FileInfo.cs create mode 100644 Noddybox.WindowsPhone.Silverlight/ViewModels/SaveViewModel.cs (limited to 'Noddybox.WindowsPhone.Silverlight/ViewModels') diff --git a/Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs b/Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs new file mode 100644 index 0000000..c20e122 --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs @@ -0,0 +1,83 @@ +// 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.ComponentModel; + +namespace Noddybox.WindowsPhone.Silverlight.ViewModels +{ + /// + /// Provides a base for view models. + /// + public class BaseViewModel : INotifyPropertyChanged + { + #region SetValue + + /// + /// Sets a value in the model. + /// + /// The type of the value. + /// A reference to the member variable. + /// The new value. + /// The propertys to change if the value has changed. + protected void SetValue(ref T member, T value, params string[] names) + { + if (!value.Equals(member)) + { + member = value; + + foreach (string name in names) + { + NotifyPropertyChanged(name); + } + } + } + + #endregion + + #region Notify + + /// + /// Notifies handlers of a property change. + /// + /// The property's name. + protected void NotifyPropertyChanged(string propertyName) + { + if (PropertyChanged != null) + { + PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); + } + } + + #endregion + + #region INotifyPropertyChanged Members + + public event PropertyChangedEventHandler PropertyChanged; + + #endregion + } +} diff --git a/Noddybox.WindowsPhone.Silverlight/ViewModels/FileInfo.cs b/Noddybox.WindowsPhone.Silverlight/ViewModels/FileInfo.cs new file mode 100644 index 0000000..3c680c7 --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/ViewModels/FileInfo.cs @@ -0,0 +1,100 @@ +// 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.IO.IsolatedStorage; +using System.Collections.Generic; + +namespace Noddybox.WindowsPhone.Silverlight.ViewModels +{ + /// + /// Provides information on a file in Isolated Storage + /// + public class FileInfo + { + /// + /// True if the file is a folder. + /// + public bool IsFolder {get; private set;} + + /// + /// The name of the file. + /// + public string Name {get; private set;} + + /// + /// Constructor. + /// + /// Whether the file is a folder. + /// The file name. + public FileInfo (bool isFolder, string name) + { + IsFolder = isFolder; + Name = name; + } + + /// + /// Gets the file list for a specified folder. + /// + /// The folder to search, which must end with a "/". Uses root folder is empty or null. + /// A list of the files and directories. A ".." directory is added if not the root folder. + public static List GetFiles(string folder) + { + bool root = false; + List flist = new List(); + + if (String.IsNullOrEmpty(folder) || folder == "/") + { + root = true; + folder = "/"; + } + + if (!folder.EndsWith("/")) + { + throw new ArgumentException("Folder must end with a slash"); + } + + if (!root) + { + flist.Add(new FileInfo(true, "..")); + } + + IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication(); + + foreach (string s in iso.GetDirectoryNames(folder + "*")) + { + flist.Add(new FileInfo(true, s)); + } + + foreach (string s in iso.GetFileNames(folder + "*")) + { + flist.Add(new FileInfo(false, s)); + } + + return flist; + } + } +} diff --git a/Noddybox.WindowsPhone.Silverlight/ViewModels/SaveViewModel.cs b/Noddybox.WindowsPhone.Silverlight/ViewModels/SaveViewModel.cs new file mode 100644 index 0000000..39be33e --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/ViewModels/SaveViewModel.cs @@ -0,0 +1,39 @@ +// 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; + +namespace Noddybox.WindowsPhone.Silverlight.ViewModels +{ + public class SaveViewModel : BaseViewModel + { + #region Bindable properties + + public + + #endregion + } +} -- cgit v1.2.3