// 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; using System.Text.RegularExpressions; 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;} /// /// The full path of the file. /// public string Path {get; private set;} /// /// Constructor. /// /// Whether the file is a folder. /// The file name. public FileInfo (bool isFolder, string name, string path) { IsFolder = isFolder; Name = name; Path = path; } /// /// 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, string mask) { 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, "..", folder + "..")); } IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication(); List folders = new List(iso.GetDirectoryNames(folder + "*")); List files = new List(iso.GetFileNames(folder + mask)); folders.Sort(); files.Sort(); foreach (string s in folders) { flist.Add(new FileInfo(true, s, folder + s)); } foreach (string s in files) { flist.Add(new FileInfo(false, s, folder + s)); } return flist; } } }