// 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 } }