// 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; using System.IO.IsolatedStorage; namespace Noddybox.WindowsPhone.Silverlight { public partial class DeleteDialog : UserControl { #region Private data private FileDialogViewModel model; #endregion #region Constructors /// /// Construct a save dialog. /// public DeleteDialog() { 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(DeleteDialog), new PropertyMetadata("StartPath", new PropertyChangedCallback(DeleteDialog.OnDummyDependency))); public static readonly DependencyProperty DeleteButtonTextProperty = DependencyProperty.Register("OkButtonText", typeof(string), typeof(DeleteDialog), new PropertyMetadata("DeleteButtonText", new PropertyChangedCallback(DeleteDialog.OnDummyDependency))); public static readonly DependencyProperty TitleTextProperty = DependencyProperty.Register("TitleText", typeof(string), typeof(DeleteDialog), new PropertyMetadata("TitleText", new PropertyChangedCallback(DeleteDialog.OnDummyDependency))); public static readonly DependencyProperty FileMaskProperty = DependencyProperty.Register("FileMask", typeof(string), typeof(DeleteDialog), new PropertyMetadata("FileMask", new PropertyChangedCallback(DeleteDialog.OnDummyDependency))); /// /// 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 Delete button. /// public string DeleteButtonText { get {return (string)GetValue(DeleteButtonTextProperty);} set { SetValue(DeleteButtonTextProperty, value); deleteButton.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 OnDeleteButton(object sender, RoutedEventArgs e) { IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication(); foreach (FileInfo info in fileList.SelectedItems) { iso.DeleteFile(info.Path); } model.RefreshFileList(); deleteButton.IsEnabled = false; } private void OnFileListSelection(object sender, SelectionChangedEventArgs e) { if (e.AddedItems.Count > 0) { foreach (FileInfo info in e.AddedItems) { if (info.IsFolder) { model.FileSelected(info); deleteButton.IsEnabled = false; return; } } deleteButton.IsEnabled = true; } else { deleteButton.IsEnabled = false; } } #endregion } }