summaryrefslogtreecommitdiff
path: root/Noddybox.WindowsPhone.Silverlight/LoadDialog.xaml.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Noddybox.WindowsPhone.Silverlight/LoadDialog.xaml.cs')
-rw-r--r--Noddybox.WindowsPhone.Silverlight/LoadDialog.xaml.cs169
1 files changed, 169 insertions, 0 deletions
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 <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;
+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
+
+ /// <summary>
+ /// Construct a save dialog.
+ /// </summary>
+ 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);
+
+ /// <summary>
+ /// Event for users to subscribe to the pressing of the OK button.
+ /// </summary>
+ public event FileDialogEventHandler OkPressed;
+
+ /// <summary>
+ /// Set the file mask.
+ /// </summary>
+ public string FileMask
+ {
+ get {return (string)GetValue(FileMaskProperty);}
+ set
+ {
+ SetValue(FileMaskProperty, value);
+
+ if (!DesignerProperties.IsInDesignTool)
+ {
+ model.Mask = value;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Set the start path
+ /// </summary>
+ public string StartPath
+ {
+ get {return (string)GetValue(StartPathProperty);}
+ set
+ {
+ SetValue(StartPathProperty, value);
+
+ if (!DesignerProperties.IsInDesignTool)
+ {
+ model.Path = value;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Set the contents of the OK button.
+ /// </summary>
+ public string OkButtonText
+ {
+ get {return (string)GetValue(OkButtonTextProperty);}
+ set
+ {
+ SetValue(OkButtonTextProperty, value);
+ okButton.Content = value;
+ }
+ }
+
+ /// <summary>
+ /// Set the contents of the Title bar.
+ /// </summary>
+ 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
+ }
+}