summaryrefslogtreecommitdiff
path: root/Noddybox.WindowsPhone.Silverlight/ViewModels/FileInfo.cs
diff options
context:
space:
mode:
authorIan C <ianc@noddybox.co.uk>2012-06-24 22:37:32 +0000
committerIan C <ianc@noddybox.co.uk>2012-06-24 22:37:32 +0000
commitaba818f3b66751842f457169ff1cfa58fc43dd84 (patch)
tree77d5bf95366501651c6ca088eb7e1bf08fb1f79c /Noddybox.WindowsPhone.Silverlight/ViewModels/FileInfo.cs
parent5ba217a4a60685b49346e5446f46ec2cad0499ca (diff)
Development check in
Diffstat (limited to 'Noddybox.WindowsPhone.Silverlight/ViewModels/FileInfo.cs')
-rw-r--r--Noddybox.WindowsPhone.Silverlight/ViewModels/FileInfo.cs100
1 files changed, 100 insertions, 0 deletions
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 <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.IO.IsolatedStorage;
+using System.Collections.Generic;
+
+namespace Noddybox.WindowsPhone.Silverlight.ViewModels
+{
+ /// <summary>
+ /// Provides information on a file in Isolated Storage
+ /// </summary>
+ public class FileInfo
+ {
+ /// <summary>
+ /// True if the file is a folder.
+ /// </summary>
+ public bool IsFolder {get; private set;}
+
+ /// <summary>
+ /// The name of the file.
+ /// </summary>
+ public string Name {get; private set;}
+
+ /// <summary>
+ /// Constructor.
+ /// </summary>
+ /// <param name="isFolder">Whether the file is a folder.</param>
+ /// <param name="name">The file name.</param>
+ public FileInfo (bool isFolder, string name)
+ {
+ IsFolder = isFolder;
+ Name = name;
+ }
+
+ /// <summary>
+ /// Gets the file list for a specified folder.
+ /// </summary>
+ /// <param name="folder">The folder to search, which must end with a "/". Uses root folder is empty or null.</param>
+ /// <returns>A list of the files and directories. A ".." directory is added if not the root folder.</returns>
+ public static List<FileInfo> GetFiles(string folder)
+ {
+ bool root = false;
+ List<FileInfo> flist = new List<FileInfo>();
+
+ 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;
+ }
+ }
+}