diff options
-rw-r--r-- | Noddybox.WindowsPhone.Silverlight/Noddybox.WindowsPhone.Silverlight.csproj | 19 | ||||
-rw-r--r-- | Noddybox.WindowsPhone.Silverlight/Resources/file.png | bin | 0 -> 400 bytes | |||
-rw-r--r-- | Noddybox.WindowsPhone.Silverlight/Resources/folder.png | bin | 0 -> 692 bytes | |||
-rw-r--r-- | Noddybox.WindowsPhone.Silverlight/SaveDialog.xaml | 27 | ||||
-rw-r--r-- | Noddybox.WindowsPhone.Silverlight/SaveDialog.xaml.cs | 39 | ||||
-rw-r--r-- | Noddybox.WindowsPhone.Silverlight/ViewModels/BaseViewModel.cs | 83 | ||||
-rw-r--r-- | Noddybox.WindowsPhone.Silverlight/ViewModels/FileInfo.cs | 100 | ||||
-rw-r--r-- | Noddybox.WindowsPhone.Silverlight/ViewModels/SaveViewModel.cs | 39 |
8 files changed, 307 insertions, 0 deletions
diff --git a/Noddybox.WindowsPhone.Silverlight/Noddybox.WindowsPhone.Silverlight.csproj b/Noddybox.WindowsPhone.Silverlight/Noddybox.WindowsPhone.Silverlight.csproj index 2ee12dd..29b5d6b 100644 --- a/Noddybox.WindowsPhone.Silverlight/Noddybox.WindowsPhone.Silverlight.csproj +++ b/Noddybox.WindowsPhone.Silverlight/Noddybox.WindowsPhone.Silverlight.csproj @@ -41,6 +41,8 @@ <WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="Microsoft.Phone" />
+ <Reference Include="Microsoft.Phone.Interop" />
<Reference Include="System.Windows" />
<Reference Include="system" />
<Reference Include="System.Core" />
@@ -50,6 +52,23 @@ </ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
+ <Compile Include="SaveDialog.xaml.cs">
+ <DependentUpon>SaveDialog.xaml</DependentUpon>
+ </Compile>
+ <Compile Include="ViewModels\BaseViewModel.cs" />
+ <Compile Include="ViewModels\FileInfo.cs" />
+ <Compile Include="ViewModels\SaveViewModel.cs" />
+ </ItemGroup>
+ <ItemGroup>
+ <Page Include="SaveDialog.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
+ </ItemGroup>
+ <ItemGroup />
+ <ItemGroup>
+ <Resource Include="Resources\file.png" />
+ <Resource Include="Resources\folder.png" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.$(TargetFrameworkProfile).Overrides.targets" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\Silverlight for Phone\$(TargetFrameworkVersion)\Microsoft.Silverlight.CSharp.targets" />
diff --git a/Noddybox.WindowsPhone.Silverlight/Resources/file.png b/Noddybox.WindowsPhone.Silverlight/Resources/file.png Binary files differnew file mode 100644 index 0000000..17ad8b1 --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/Resources/file.png diff --git a/Noddybox.WindowsPhone.Silverlight/Resources/folder.png b/Noddybox.WindowsPhone.Silverlight/Resources/folder.png Binary files differnew file mode 100644 index 0000000..e7c8ab5 --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/Resources/folder.png diff --git a/Noddybox.WindowsPhone.Silverlight/SaveDialog.xaml b/Noddybox.WindowsPhone.Silverlight/SaveDialog.xaml new file mode 100644 index 0000000..012d2d2 --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/SaveDialog.xaml @@ -0,0 +1,27 @@ +<UserControl x:Class="Noddybox.WindowsPhone.Silverlight.SaveDialog"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ mc:Ignorable="d"
+ FontFamily="{StaticResource PhoneFontFamilyNormal}"
+ FontSize="{StaticResource PhoneFontSizeNormal}"
+ Foreground="{StaticResource PhoneForegroundBrush}"
+ d:DesignHeight="480" d:DesignWidth="480">
+
+ <Grid x:Name="LayoutRoot">
+ <Grid.RowDefinitions>
+ <RowDefinition Height="*" />
+ <RowDefinition Height="auto" />
+ <RowDefinition Height="auto" />
+ </Grid.RowDefinitions>
+ <Grid.ColumnDefinitions>
+ <ColumnDefinition Width="1*" />
+ <ColumnDefinition Width="1*" />
+ </Grid.ColumnDefinitions>
+ <ListBox x:Name="fileList" Grid.Row="0" Grid.ColumnSpan="2"/>
+ <TextBox x:Name="fileName" Grid.Row="1" Grid.ColumnSpan="2"/>
+ <Button Grid.Row="2" Grid.Column="0" Content="Ok" />
+ <Button Grid.Row="2" Grid.Column="1" Content="Cancel" />
+ </Grid>
+</UserControl>
diff --git a/Noddybox.WindowsPhone.Silverlight/SaveDialog.xaml.cs b/Noddybox.WindowsPhone.Silverlight/SaveDialog.xaml.cs new file mode 100644 index 0000000..f807126 --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/SaveDialog.xaml.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 <http://www.gnu.org/licenses/>.
+//
+// Copyright (c) 2012 Ian Cowburn
+//
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Net;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Animation;
+using System.Windows.Shapes;
+
+namespace Noddybox.WindowsPhone.Silverlight
+{
+ public partial class SaveDialog : UserControl
+ {
+ public SaveDialog()
+ {
+ InitializeComponent();
+ }
+ }
+}
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 <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.ComponentModel;
+
+namespace Noddybox.WindowsPhone.Silverlight.ViewModels
+{
+ /// <summary>
+ /// Provides a base for view models.
+ /// </summary>
+ public class BaseViewModel : INotifyPropertyChanged
+ {
+ #region SetValue
+
+ /// <summary>
+ /// Sets a value in the model.
+ /// </summary>
+ /// <typeparam name="T">The type of the value.</typeparam>
+ /// <param name="member">A reference to the member variable.</param>
+ /// <param name="value">The new value.</param>
+ /// <param name="names">The propertys to change if the value has changed.</param>
+ protected void SetValue<T>(ref T member, T value, params string[] names)
+ {
+ if (!value.Equals(member))
+ {
+ member = value;
+
+ foreach (string name in names)
+ {
+ NotifyPropertyChanged(name);
+ }
+ }
+ }
+
+ #endregion
+
+ #region Notify
+
+ /// <summary>
+ /// Notifies handlers of a property change.
+ /// </summary>
+ /// <param name="propertyName">The property's name.</param>
+ 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 <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;
+ }
+ }
+}
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 <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;
+
+namespace Noddybox.WindowsPhone.Silverlight.ViewModels
+{
+ public class SaveViewModel : BaseViewModel
+ {
+ #region Bindable properties
+
+ public
+
+ #endregion
+ }
+}
|