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