using DraggAnimatedPanelExample;
using GalaSoft.MvvmLight;
using GeekDesk.Util;
using GeekDesk.ViewModel;
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media.Imaging;
namespace GeekDesk
{
///
/// MainWindow.xaml 的交互逻辑
///
///
public partial class MainWindow : Window
{
private static AppData appData = CommonCode.GetAppData();
public MainWindow()
{
InitializeComponent();
loadData();
List menuList = new List();
Dictionary> iconMap = new Dictionary>();
//this.DataContext = mainModel;
//menu.Items = mainModel;
//System.Diagnostics.Process.Start(@"D:\SoftWare\WeGame\wegame.exe");
this.Loaded += Window_Loaded;
this.SizeChanged += MainWindow_Resize;
}
private void loadData()
{
this.DataContext = appData;
appData.MenuList.Add("Test1");
this.Width = appData.AppConfig.WindowWidth;
this.Height = appData.AppConfig.WindowHeight;
List iconList;
if (appData.IconMap.ContainsKey("1"))
{
iconList = appData.IconMap["1"];
}
else
{
iconList = new List();
appData.IconMap.Add("1", iconList);
}
icons.ItemsSource = iconList;
}
DelegateCommand _swap;
public DelegateCommand SwapCommand
{
get
{
if (_swap == null)
_swap = new DelegateCommand(
(indexes) =>
{
int fromS = indexes[0];
int to = indexes[1];
var elementSource = icons.Items[to];
var dragged = icons.Items[fromS];
if (fromS > to)
{
icons.Items.Remove(dragged);
icons.Items.Insert(to, dragged);
}
else
{
icons.Items.Remove(dragged);
icons.Items.Insert(to, dragged);
}
}
);
return _swap;
}
}
DelegateCommand _swap2;
public DelegateCommand SwapCommand2
{
get
{
if (_swap2 == null)
_swap2 = new DelegateCommand(
(indexes) =>
{
int fromS = indexes[0];
int to = indexes[1];
var elementSource = menus.Items[to];
var dragged = menus.Items[fromS];
if (fromS > to)
{
menus.Items.Remove(dragged);
menus.Items.Insert(to, dragged);
}
else
{
menus.Items.Remove(dragged);
menus.Items.Insert(to, dragged);
}
}
);
return _swap2;
}
}
private void Wrap_Drop(object sender, DragEventArgs e)
{
Array dropObject = (System.Array)e.Data.GetData(DataFormats.FileDrop);
if (dropObject == null) return;
foreach (object obj in dropObject)
{
string path = (string)obj;
if (File.Exists(path))
{
// 文件
BitmapImage bi = FileIcon.GetBitmapImage(path);
IconInfo iconInfo = new IconInfo();
iconInfo.Path = path;
iconInfo.BitmapImage = bi;
iconInfo.Name = Path.GetFileNameWithoutExtension(path);
List iconList;
if (appData.IconMap.ContainsKey("1"))
{
iconList = appData.IconMap["1"];
}
else
{
iconList = new List();
appData.IconMap.Add("1", iconList);
}
iconList.Add(iconInfo);
icons.ItemsSource = iconList;
CommonCode.SaveAppData(appData);
}
else if (Directory.Exists(path))
{
//文件夹
}
}
icons.Items.Refresh();
}
//菜单点击事件
private void menuClick(object sender, MouseButtonEventArgs e)
{
}
///
/// 图标点击事件
///
///
///
private void dataClick(object sender, MouseButtonEventArgs e)
{
IconInfo icon = (IconInfo)((StackPanel)sender).Tag;
System.Diagnostics.Process.Start(icon.Path);
icon.Count++;
CommonCode.SaveAppData(appData);
}
///
/// data选中事件 设置不可选中
///
///
///
private void data_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (icons.SelectedIndex != -1) icons.SelectedIndex = -1;
}
#region Window_Loaded
void Window_Loaded(object sender, RoutedEventArgs e)
{
//this.menus.Items.Add(new ViewModel.Menu() { menu = "test1" });
//this.menus.Items.Add(new ViewModel.Menu() { menu = "test2" });
//this.menus.Items.Add(new ViewModel.Menu() { menu = "test3" });
}
#endregion // Window_Loaded
//#region Window_Closing
//void Window_Closing(object sender, CancelEventArgs e)
//{
// Rect rect = this.RestoreBounds;
// AppConfig config = this.DataContext as AppConfig;
// config.WindowWidth = rect.Width;
// config.WindowHeight = rect.Height;
// CommonCode.SaveAppConfig(config);
//}
//#endregion // Window_Closing
void MainWindow_Resize(object sender, System.EventArgs e)
{
if (this.DataContext != null)
{
AppData appData = this.DataContext as AppData;
appData.AppConfig.WindowWidth = this.Width;
appData.AppConfig.WindowHeight = this.Height;
CommonCode.SaveAppData(appData);
}
}
private void leftCard_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
}
private void deleteMenu(object sender, RoutedEventArgs e)
{
//if (data.SelectedIndex == -1)
//{
// return;
//}
ViewModel.Menu pojo = (ViewModel.Menu)((ContextMenu)((MenuItem)sender).Parent).DataContext;
string menuTitle = pojo.menu;
int index = 0;
foreach (object obj in menus.Items)
{
string test = ((ViewModel.Menu)obj).menu;
if (test == menuTitle)
{
menus.Items.RemoveAt(index);
menus.Items.Refresh();
return;
}
index++;
}
}
}
public class MainModel : ViewModelBase
{
public List MenuList { get; set; }
public List DataList { get; set; }
}
}