From 2c39a1ef8c13bd8d0321f79b0ce2850d0a590b45 Mon Sep 17 00:00:00 2001 From: Ian C Date: Wed, 27 Jun 2012 22:49:23 +0000 Subject: Done Save, Load and Delete dialogs. --- .../LoadDialog.xaml.cs | 169 +++++++++++++++++++++ 1 file changed, 169 insertions(+) create mode 100644 Noddybox.WindowsPhone.Silverlight/LoadDialog.xaml.cs (limited to 'Noddybox.WindowsPhone.Silverlight/LoadDialog.xaml.cs') diff --git a/Noddybox.WindowsPhone.Silverlight/LoadDialog.xaml.cs b/Noddybox.WindowsPhone.Silverlight/LoadDialog.xaml.cs new file mode 100644 index 0000000..8524e7b --- /dev/null +++ b/Noddybox.WindowsPhone.Silverlight/LoadDialog.xaml.cs @@ -0,0 +1,169 @@ +// 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.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; +using Noddybox.WindowsPhone.Silverlight.ViewModels; +using System.ComponentModel; + +namespace Noddybox.WindowsPhone.Silverlight +{ + public partial class LoadDialog : UserControl + { + #region Private data + + private FileDialogViewModel model; + + #endregion + + #region Constructors + + /// + /// Construct a save dialog. + /// + public LoadDialog() + { + InitializeComponent(); + + if (!DesignerProperties.IsInDesignTool) + { + model = new FileDialogViewModel("/"); + DataContext = model; + } + } + + #endregion + + #region Properties + + private static void OnDummyDependency(DependencyObject d, DependencyPropertyChangedEventArgs e) {} + + public static readonly DependencyProperty StartPathProperty = + DependencyProperty.Register("StartPath", typeof(string), typeof(LoadDialog), + new PropertyMetadata("StartPath", new PropertyChangedCallback(LoadDialog.OnDummyDependency))); + + public static readonly DependencyProperty OkButtonTextProperty = + DependencyProperty.Register("OkButtonText", typeof(string), typeof(LoadDialog), + new PropertyMetadata("OkButtonText", new PropertyChangedCallback(LoadDialog.OnDummyDependency))); + + public static readonly DependencyProperty TitleTextProperty = + DependencyProperty.Register("TitleText", typeof(string), typeof(LoadDialog), + new PropertyMetadata("TitleText", new PropertyChangedCallback(LoadDialog.OnDummyDependency))); + + public static readonly DependencyProperty FileMaskProperty = + DependencyProperty.Register("FileMask", typeof(string), typeof(LoadDialog), + new PropertyMetadata("FileMask", new PropertyChangedCallback(LoadDialog.OnDummyDependency))); + + public delegate void FileDialogEventHandler(object sender, FileDialogEvent e); + + /// + /// Event for users to subscribe to the pressing of the OK button. + /// + public event FileDialogEventHandler OkPressed; + + /// + /// Set the file mask. + /// + public string FileMask + { + get {return (string)GetValue(FileMaskProperty);} + set + { + SetValue(FileMaskProperty, value); + + if (!DesignerProperties.IsInDesignTool) + { + model.Mask = value; + } + } + } + + /// + /// Set the start path + /// + public string StartPath + { + get {return (string)GetValue(StartPathProperty);} + set + { + SetValue(StartPathProperty, value); + + if (!DesignerProperties.IsInDesignTool) + { + model.Path = value; + } + } + } + + /// + /// Set the contents of the OK button. + /// + public string OkButtonText + { + get {return (string)GetValue(OkButtonTextProperty);} + set + { + SetValue(OkButtonTextProperty, value); + okButton.Content = value; + } + } + + /// + /// Set the contents of the Title bar. + /// + public string TitleText + { + get {return (string)GetValue(TitleTextProperty);} + set + { + SetValue(TitleTextProperty, value); + titleText.Text = value; + } + } + + #endregion + + #region Event handlers + + private void OnOKButton(object sender, RoutedEventArgs e) + { + if (OkPressed != null) + { + OkPressed(this, new FileDialogEvent() {Path = model.SelectedFile}); + } + } + + private void OnFileListSelection(object sender, SelectionChangedEventArgs e) + { + if (e.AddedItems.Count > 0) + { + model.FileSelected((FileInfo)e.AddedItems[0]); + } + } + + #endregion + } +} -- cgit v1.2.3