12 Commits
2.0 ... 2.2

Author SHA1 Message Date
liufei
f11056c469 修复 开启窗口动画,启动项目后无法显示主界面bug 2021-08-19 14:49:01 +08:00
liufei
571d7c3d0d '边缘吸附功能','窗口淡入淡出动画','待办任务快捷键(默认Ctrl+Shift+Q)','右键任务栏图标打开程序目录菜单' 2021-08-19 13:59:47 +08:00
Demo-Liu
99eae59dc3 Merge pull request #14 from Demo-Liu/2.1
2.1
2021-08-04 10:31:27 +08:00
liufei
2d67d32b29 部分程序启动报错修复', '重置图标功能程序崩溃修复','添加自定义字体颜色功能','添加URL项目功能' 2021-08-04 10:12:32 +08:00
Demo-Liu
33560ad85a Update README.md 2021-08-03 14:24:02 +08:00
liufei
53481bf907 修复部分程序无法启动bug 2021-08-02 11:01:29 +08:00
liufei
2673b9862c 删除重复更新源 2021-07-30 08:50:25 +08:00
liufei
4c0a97b7b1 延迟检查更新 2021-07-29 17:09:25 +08:00
liufei
0a89255ad2 优化交互显示界面 2021-07-29 17:04:36 +08:00
liufei
3c78b058cf 取消优先选择 32位系统可能导致的找不到文件的BUG 2021-07-29 13:45:51 +08:00
Demo-Liu
9a5882ff98 Merge pull request #13 from Demo-Liu/2.0
修改程序集版本号
2021-07-29 08:56:03 +08:00
Demo-Liu
0107ac8317 Merge pull request #12 from Demo-Liu/2.0
2.0正式版
2021-07-28 13:43:43 +08:00
42 changed files with 1322 additions and 626 deletions

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<configuration> <configuration>
<startup> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" /> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup> </startup>
<runtime> <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly> <dependentAssembly>
@@ -23,13 +23,24 @@
</dependentAssembly> </dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>
<appSettings> <appSettings>
<add key="Version" value="2.0" /> <add key="Version" value="2.2" />
<add key="GitHubUrl" value="https://github.com/Demo-Liu/GeekDesk" />
<add key="GitHubUrl" value="https://github.com/Demo-Liu/GeekDesk" /> <add key="GiteeUrl" value="https://gitee.com/demo_liu/GeekDesk/tree/master" />
<add key="GiteeUrl" value="https://gitee.com/demo_liu/GeekDesk/tree/master" /> <add key="GitHubUpdateUrl" value="https://demo-liu.github.io/GeekDesk/Update.json" />
<add key="GiteeUpdateUrl" value="https://demo-liu.github.io/GeekDesk/Update.json" />
<add key="GitHubUpdateUrl" value="https://demo-liu.github.io/GeekDesk/Update.json" /> <add key="ClientSettingsProvider.ServiceUri" value="" />
<add key="GiteeUpdateUrl" value="https://demo-liu.github.io/GeekDesk/Update.json" /> </appSettings>
</appSettings> <system.web>
<membership defaultProvider="ClientAuthenticationMembershipProvider">
<providers>
<add name="ClientAuthenticationMembershipProvider" type="System.Web.ClientServices.Providers.ClientFormsAuthenticationMembershipProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" />
</providers>
</membership>
<roleManager defaultProvider="ClientRoleProvider" enabled="true">
<providers>
<add name="ClientRoleProvider" type="System.Web.ClientServices.Providers.ClientRoleProvider, System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" serviceUri="" cacheTimeout="86400" />
</providers>
</roleManager>
</system.web>
</configuration> </configuration>

View File

@@ -24,11 +24,15 @@ namespace GeekDesk
private void App_Startup(object sender, StartupEventArgs e) private void App_Startup(object sender, StartupEventArgs e)
{ {
bool ret; mutex = new System.Threading.Mutex(true, Constants.MY_NAME, out bool ret);
mutex = new System.Threading.Mutex(true, Constants.MY_NAME, out ret);
if (!ret) if (!ret)
{ {
Environment.Exit(0); System.Threading.Thread.Sleep(2000);
mutex = new System.Threading.Mutex(true, Constants.MY_NAME, out ret);
if (!ret)
{
Environment.Exit(0);
}
} }
} }
} }

19
Constant/CommonEnum.cs Normal file
View File

@@ -0,0 +1,19 @@
/// <summary>
/// 默认参数
/// </summary>
namespace GeekDesk.Constant
{
public enum CommonEnum
{
WINDOW_WIDTH = 666, //默认窗体宽度
WINDOW_HEIGHT = 500, //默认窗体高度
MENU_CARD_WIDHT = 165, //默认菜单栏宽度
IMAGE_WIDTH = 45, //默认图标宽度
IMAGE_HEIGHT = 45, //默认图标高度
IMAGE_WIDTH_AM = 52, //动画变换宽度
IMAGE_HEIGHT_AM = 52, //动画变换高度
IMAGE_PANEL_WIDTH = 110, //图标容器宽度
IMAGE_PANEL_HEIGHT = 90, //图标容器高度
WINDOW_ANIMATION_TIME = 200, //主窗口动画时间
}
}

File diff suppressed because one or more lines are too long

14
Constant/IconType.cs Normal file
View File

@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace GeekDesk.Constant
{
public enum IconType
{
OTHER = 1, //直接打开
URL = 2 //调用浏览器打开
}
}

View File

@@ -1,16 +0,0 @@
/// <summary>
/// 默认参数
/// </summary>
namespace GeekDesk.Constant
{
public enum MainWindowEnum
{
WINDOW_WIDTH = 666, //默认窗体宽度
WINDOW_HEIGHT = 500, //默认窗体高度
MENU_CARD_WIDHT = 165, //默认菜单栏宽度
IMAGE_WIDTH = 50, //默认图标宽度
IMAGE_HEIGHT = 50, //默认图标高度
IMAGE_WIDTH_AM = 60, //动画变换宽度
IMAGE_HEIGHT_AM = 60 //动画变换高度
}
}

View File

@@ -5,7 +5,7 @@
CornerRadius="4" CornerRadius="4"
Width="300" Width="300"
Height="300" Height="300"
Opacity="0.9"> >
<Border.Resources> <Border.Resources>
<Style x:Key="LeftTB" TargetType="TextBlock" BasedOn="{StaticResource TextBlockBaseStyle}"> <Style x:Key="LeftTB" TargetType="TextBlock" BasedOn="{StaticResource TextBlockBaseStyle}">
<Setter Property="Width" Value="40"/> <Setter Property="Width" Value="40"/>
@@ -15,7 +15,7 @@
</Style> </Style>
</Border.Resources> </Border.Resources>
<Border.Background> <Border.Background>
<SolidColorBrush Color="AliceBlue" Opacity="0.9"/> <SolidColorBrush Color="AliceBlue" Opacity="0.98"/>
</Border.Background> </Border.Background>
<hc:SimplePanel Margin="10"> <hc:SimplePanel Margin="10">
<Grid Margin="8,20,8,20"> <Grid Margin="8,20,8,20">
@@ -42,9 +42,9 @@
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:Divider LineStrokeDashArray="3,3" Margin="0,200,0,-27" LineStroke="Black" Grid.ColumnSpan="4"/> <hc:Divider LineStrokeDashArray="3,3" Margin="0,200,0,-27" LineStroke="Black" Grid.ColumnSpan="4"/>
<hc:UniformSpacingPanel Spacing="10" Margin="0,218,0,-38" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="0,218,0,-38" Grid.ColumnSpan="4">
<Button Content="保存" Command="hc:ControlCommands.Close" Click="SaveProperty" Margin="208,6,-208,-10"/> <Button Content="保存" Click="SaveProperty" Margin="208,6,-208,-10"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
</Grid> </Grid>
<Button Width="22" Height="22" Command="hc:ControlCommands.Close" Style="{StaticResource ButtonIcon}" Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" hc:IconElement.Geometry="{StaticResource ErrorGeometry}" Padding="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,4,4,0"/> <Button Width="22" Height="22" Command="hc:ControlCommands.Close" Style="{StaticResource ButtonIcon}" Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" hc:IconElement.Geometry="{StaticResource ErrorGeometry}" Padding="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,4,4,0"/>
</hc:SimplePanel> </hc:SimplePanel>
</Border> </Border>

View File

@@ -14,6 +14,7 @@ namespace GeekDesk.Control.Other
/// </summary> /// </summary>
public partial class IconInfoDialog public partial class IconInfoDialog
{ {
public HandyControl.Controls.Dialog dialog;
public IconInfoDialog() public IconInfoDialog()
{ {
@@ -38,6 +39,7 @@ namespace GeekDesk.Control.Other
info.Name = IconName.Text; info.Name = IconName.Text;
info.AdminStartUp = IconIsAdmin.IsChecked.Value; info.AdminStartUp = IconIsAdmin.IsChecked.Value;
CommonCode.SaveAppData(MainWindow.appData); CommonCode.SaveAppData(MainWindow.appData);
dialog.Close();
} }
/// <summary> /// <summary>
@@ -47,7 +49,7 @@ namespace GeekDesk.Control.Other
/// <param name="e"></param> /// <param name="e"></param>
private void ReStoreImage(object sender, RoutedEventArgs e) private void ReStoreImage(object sender, RoutedEventArgs e)
{ {
IconInfo info = ((Button)sender).Tag as IconInfo; IconInfo info = this.DataContext as IconInfo;
info.BitmapImage = ImageUtil.ByteArrToImage(info.DefaultImage); info.BitmapImage = ImageUtil.ByteArrToImage(info.DefaultImage);
CommonCode.SaveAppData(MainWindow.appData); CommonCode.SaveAppData(MainWindow.appData);
} }

View File

@@ -1,12 +1,12 @@
<Border x:Class="GeekDesk.Control.Other.MenuGeometryDialog" <Border x:Class="GeekDesk.Control.Other.IconInfoUrlDialog"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:hc="https://handyorg.github.io/handycontrol" xmlns:hc="https://handyorg.github.io/handycontrol"
CornerRadius="10" CornerRadius="4"
Width="300" Width="300"
Height="300" Height="300"
Opacity="0.9"> >
<!--<Border.Resources> <Border.Resources>
<Style x:Key="LeftTB" TargetType="TextBlock" BasedOn="{StaticResource TextBlockBaseStyle}"> <Style x:Key="LeftTB" TargetType="TextBlock" BasedOn="{StaticResource TextBlockBaseStyle}">
<Setter Property="Width" Value="40"/> <Setter Property="Width" Value="40"/>
<Setter Property="HorizontalAlignment" Value="Left"/> <Setter Property="HorizontalAlignment" Value="Left"/>
@@ -15,42 +15,31 @@
</Style> </Style>
</Border.Resources> </Border.Resources>
<Border.Background> <Border.Background>
<SolidColorBrush Color="AliceBlue" Opacity="0.9"/> <SolidColorBrush Color="AliceBlue" Opacity="0.98"/>
</Border.Background> </Border.Background>
<hc:SimplePanel Margin="10"> <hc:SimplePanel Margin="10">
<Grid Margin="8,20,8,20"> <Grid Margin="8,20,8,20">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="93*"/>
<ColumnDefinition Width="38*"/>
<ColumnDefinition Width="126*"/>
<ColumnDefinition Width="7*"/>
</Grid.ColumnDefinitions>
<hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4">
<TextBlock Text="名称:" Style="{StaticResource LeftTB}"/> <TextBlock Text="名称:" Style="{StaticResource LeftTB}"/>
<TextBox x:Name="IconName" Text="{Binding Name, Mode=OneWay}" Width="180" FontSize="14"/> <TextBox x:Name="IconName" Text="{Binding Name, Mode=OneWay}" Width="180" FontSize="14"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:Divider LineStrokeDashArray="3,3" Margin="0,50,0,71" LineStroke="Black" Grid.ColumnSpan="4"/> <hc:Divider LineStrokeDashArray="3,3" Margin="0,50,0,71" LineStroke="Black" Grid.ColumnSpan="4"/>
<hc:UniformSpacingPanel Spacing="10" Margin="0,59,0,-9" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="0,77,0,-27">
<TextBlock Text="Url:" Style="{StaticResource LeftTB}"/>
<TextBox x:Name="IconUrl" Text="{Binding Path, Mode=OneWay}" Width="180" FontSize="14"/>
</hc:UniformSpacingPanel>
<hc:Divider LineStrokeDashArray="3,3" Margin="0,128,0,23" LineStroke="Black" Grid.ColumnSpan="4"/>
<hc:UniformSpacingPanel Spacing="10" Margin="0,133,0,27">
<TextBlock Text="图标:" Style="{StaticResource LeftTB}"/> <TextBlock Text="图标:" Style="{StaticResource LeftTB}"/>
<Image x:Name="IconImg" Source="{Binding BitmapImage, Mode=OneWay}" Width="60" Height="60"/> <Image x:Name="IconImg" Source="{Binding BitmapImage, Mode=OneWay}" Width="60" Height="60"/>
<Button Content="修改" Click="EditImage"/> <Button Content="修改" Click="EditImage"/>
<Button Content="重置" Click="ReStoreImage"/> <Button Content="重置" Click="ReStoreImage"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:Divider LineStrokeDashArray="3,3" Margin="0,128,0,23" LineStroke="Black" Grid.ColumnSpan="4"/>
<hc:UniformSpacingPanel Spacing="10" Margin="0,150,0,10" Grid.ColumnSpan="4">
<CheckBox x:Name="IconIsAdmin" Content="始终以管理员方式启动" IsChecked="{Binding AdminStartUp, Mode=OneWay}">
<CheckBox.Background>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#FF9EA3A6"/>
</LinearGradientBrush>
</CheckBox.Background>
</CheckBox>
</hc:UniformSpacingPanel>
<hc:Divider LineStrokeDashArray="3,3" Margin="0,200,0,-27" LineStroke="Black" Grid.ColumnSpan="4"/> <hc:Divider LineStrokeDashArray="3,3" Margin="0,200,0,-27" LineStroke="Black" Grid.ColumnSpan="4"/>
<hc:UniformSpacingPanel Spacing="10" Margin="0,218,0,-38" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="0,218,0,-38" Grid.ColumnSpan="4">
<Button Content="保存" Command="hc:ControlCommands.Close" Click="SaveProperty" Margin="208,6,-208,-10"/> <Button Content="保存" Click="SaveProperty" Margin="208,6,-208,-10"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
</Grid> </Grid>
<Button Width="22" Height="22" Command="hc:ControlCommands.Close" Style="{StaticResource ButtonIcon}" Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" hc:IconElement.Geometry="{StaticResource ErrorGeometry}" Padding="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,4,4,0"/> <Button Width="22" Height="22" Command="hc:ControlCommands.Close" Style="{StaticResource ButtonIcon}" Foreground="{DynamicResource {x:Static SystemColors.ControlDarkDarkBrushKey}}" hc:IconElement.Geometry="{StaticResource ErrorGeometry}" Padding="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,4,4,0"/>
</hc:SimplePanel>--> </hc:SimplePanel>
</Border> </Border>

View File

@@ -0,0 +1,99 @@
using GeekDesk.Constant;
using GeekDesk.Util;
using GeekDesk.ViewModel;
using Microsoft.Win32;
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media.Imaging;
namespace GeekDesk.Control.Other
{
/// <summary>
/// TextDialog.xaml 的交互逻辑
/// </summary>
public partial class IconInfoUrlDialog
{
public HandyControl.Controls.Dialog dialog;
private bool newIconInfo;
public IconInfoUrlDialog()
{
newIconInfo = true;
IconInfo info = new IconInfo
{
BitmapImage = ImageUtil.Base64ToBitmapImage(Constants.URL_ICON_IMG_BASE64),
};
info.DefaultImage = info.ImageByteArr;
info.IconType = IconType.URL;
this.DataContext = info;
InitializeComponent();
}
public IconInfoUrlDialog(IconInfo info)
{
this.DataContext = info;
newIconInfo = false;
InitializeComponent();
}
/// <summary>
/// 保存修改属性
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void SaveProperty(object sender, RoutedEventArgs e)
{
IconInfo info = this.DataContext as IconInfo;
info.BitmapImage = IconImg.Source as BitmapImage;
info.Name = IconName.Text;
info.Path = IconUrl.Text;
if (newIconInfo)
{
MainWindow.appData.MenuList[MainWindow.appData.AppConfig.SelectedMenuIndex].IconList.Add(info);
}
CommonCode.SaveAppData(MainWindow.appData);
dialog.Close();
}
/// <summary>
/// 修改图标为默认
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ReStoreImage(object sender, RoutedEventArgs e)
{
IconInfo info = this.DataContext as IconInfo;
info.BitmapImage = ImageUtil.ByteArrToImage(info.DefaultImage);
CommonCode.SaveAppData(MainWindow.appData);
}
/// <summary>
/// 修改图标
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void EditImage(object sender, RoutedEventArgs e)
{
try
{
OpenFileDialog ofd = new OpenFileDialog
{
Multiselect = false, //只允许选中单个文件
Filter = "所有文件(*.*)|*.*"
};
if (ofd.ShowDialog() == true)
{
IconInfo info = this.DataContext as IconInfo;
info.BitmapImage = ImageUtil.GetBitmapIconByPath(ofd.FileName);
CommonCode.SaveAppData(MainWindow.appData);
}
} catch (Exception)
{
HandyControl.Controls.Growl.WarningGlobal("修改图标失败,已重置为默认图标!");
}
}
}
}

View File

@@ -1,28 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace GeekDesk.Control.Other
{
/// <summary>
/// MenuGeometryDialogxaml.xaml 的交互逻辑
/// </summary>
public partial class MenuGeometryDialog
{
public MenuGeometryDialog()
{
InitializeComponent();
}
}
}

View File

@@ -13,57 +13,58 @@
<UserControl.Resources> <UserControl.Resources>
<cvt:UpdateTypeConvert x:Key="UpdateTypeConvert"/> <cvt:UpdateTypeConvert x:Key="UpdateTypeConvert"/>
</UserControl.Resources> </UserControl.Resources>
<hc:SimplePanel Margin="20,50,20,20"> <Grid MouseDown="DragMove" Background="AliceBlue">
<StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Top"> <hc:SimplePanel Margin="20,50,20,20" >
<Image Source="/Resource/Image/About.png" Width="400" Height="100"/> <StackPanel Orientation="Vertical" HorizontalAlignment="Center" VerticalAlignment="Top">
<TextBlock x:Name="AppInfo" TextAlignment="Center" Text="Copyright © 2021 GeekDesk "/> <Image Source="/Resource/Image/About.png" Width="400" Height="100"/>
<hc:UniformSpacingPanel Spacing="5" HorizontalAlignment="Center" Margin="10,10,0,0" VerticalAlignment="Center"> <TextBlock x:Name="AppInfo" TextAlignment="Center" Text="Copyright © 2021 GeekDesk V"/>
<hc:Shield Subject=".net" Status=">=4.72" Margin="0,0,10,0" Color="#1182c3"/> <hc:UniformSpacingPanel Spacing="5" HorizontalAlignment="Center" Margin="10,10,0,0" VerticalAlignment="Center">
<hc:Shield Subject=".net" Status=">=4.72" Margin="0,0,10,0" Color="#1182c3"/>
<hc:Shield Subject="IDE" Status="VS2019" Margin="0,0,10,0" Color="#1182c3"/> <hc:Shield Subject="IDE" Status="VS2019" Margin="0,0,10,0" Color="#1182c3"/>
<hc:Shield Subject="GitHub" Visibility="Visible" Status="Demo-liu" <hc:Shield Subject="GitHub" Visibility="Visible" Status="Demo-liu"
Command="hc:ControlCommands.OpenLink" Command="hc:ControlCommands.OpenLink"
CommandParameter="https://github.com/Demo-Liu/GeekDesk" CommandParameter="https://github.com/Demo-Liu/GeekDesk"
Margin="0,0,10,0" Color="#24292F"/> Margin="0,0,10,0" Color="#24292F"/>
<hc:Shield Subject="Gitee" Visibility="Visible" Status="Demo-liu" <hc:Shield Subject="Gitee" Visibility="Visible" Status="Demo-liu"
Command="hc:ControlCommands.OpenLink" Command="hc:ControlCommands.OpenLink"
CommandParameter="" CommandParameter=""
Margin="0,5,10,0" Color="#C71D23"/> Margin="0,5,10,0" Color="#C71D23"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" HorizontalAlignment="Center" Margin="0,5,0,0"> <hc:UniformSpacingPanel Spacing="10" HorizontalAlignment="Center" Margin="0,5,0,0">
<hc:Shield Subject="公众号" Visibility="Visible" Status="抓几个娃" Margin="0,0,5,0" Color="#04913B"> <hc:Shield Subject="公众号" Visibility="Visible" Status="抓几个娃" Margin="0,0,5,0" Color="#04913B">
<hc:Poptip.Instance> <hc:Poptip.Instance>
<hc:Poptip PlacementType="Top"> <hc:Poptip PlacementType="Top">
<hc:Poptip.Content> <hc:Poptip.Content>
<Image x:Name="PublicWeChat" Width="150" Height="150" /> <Image x:Name="PublicWeChat" Width="150" Height="150" />
</hc:Poptip.Content> </hc:Poptip.Content>
</hc:Poptip> </hc:Poptip>
</hc:Poptip.Instance> </hc:Poptip.Instance>
</hc:Shield> </hc:Shield>
<hc:Shield Subject="赞赏" Status="支付宝" Margin="0,0,10,0" Color="#1577FE"> <hc:Shield Subject="赞赏" Status="支付宝" Margin="0,0,10,0" Color="#1577FE">
<hc:Poptip.Instance> <hc:Poptip.Instance>
<hc:Poptip PlacementType="Top"> <hc:Poptip PlacementType="Top">
<hc:Poptip.Content> <hc:Poptip.Content>
<Image x:Name="ZFBCode" Width="150" Height="150" /> <Image x:Name="ZFBCode" Width="150" Height="150" />
</hc:Poptip.Content> </hc:Poptip.Content>
</hc:Poptip> </hc:Poptip>
</hc:Poptip.Instance> </hc:Poptip.Instance>
</hc:Shield> </hc:Shield>
<hc:Shield Subject="赞赏" Status="微信" Margin="0,0,10,0" Color="#04913B"> <hc:Shield Subject="赞赏" Status="微信" Margin="0,0,10,0" Color="#04913B">
<hc:Poptip.Instance> <hc:Poptip.Instance>
<hc:Poptip PlacementType="Top"> <hc:Poptip PlacementType="Top">
<hc:Poptip.Content> <hc:Poptip.Content>
<Image x:Name="WeChatCode" Width="150" Height="150" /> <Image x:Name="WeChatCode" Width="150" Height="150" />
</hc:Poptip.Content> </hc:Poptip.Content>
</hc:Poptip> </hc:Poptip>
</hc:Poptip.Instance> </hc:Poptip.Instance>
</hc:Shield> </hc:Shield>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<TextBlock Margin="0,20,0,0" FontSize="13" Width="200" TextAlignment="Center" Text="这是个人开发的程序,所有人可任意修改和免费使用(商用请联系作者)" TextWrapping="Wrap"/> <TextBlock Margin="0,20,0,0" FontSize="13" Width="200" TextAlignment="Center" Text="这是个人开发的程序,所有人可任意修改和免费使用(商用请联系作者)" TextWrapping="Wrap"/>
<hc:UniformSpacingPanel Spacing="10" Visibility="Visible" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10,0,0"> <!--<hc:UniformSpacingPanel Spacing="10" Visibility="Visible" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,10,0,0">
<TextBlock Text="更新源:" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"/> <TextBlock Text="更新源:" TextAlignment="Center" VerticalAlignment="Center" HorizontalAlignment="Center"/>
<RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}"
Style="{StaticResource RadioButtonIcon}" Content="Gitee" Style="{StaticResource RadioButtonIcon}" Content="Gitee"
@@ -71,8 +72,10 @@
<RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}"
Style="{StaticResource RadioButtonIcon}" Content="GitHub" Style="{StaticResource RadioButtonIcon}" Content="GitHub"
IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=2}"/> IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=2}"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>-->
</StackPanel> </StackPanel>
</hc:SimplePanel> </hc:SimplePanel>
</Grid>
</UserControl> </UserControl>

View File

@@ -31,5 +31,18 @@ namespace GeekDesk.Control.UserControls.Config
WeChatCode.Source = ImageUtil.Base64ToBitmapImage(Constants.WE_CHAT_CODE_IMG_BASE64); WeChatCode.Source = ImageUtil.Base64ToBitmapImage(Constants.WE_CHAT_CODE_IMG_BASE64);
ZFBCode.Source = ImageUtil.Base64ToBitmapImage(Constants.ZFB_CODE_IMG_BASE64); ZFBCode.Source = ImageUtil.Base64ToBitmapImage(Constants.ZFB_CODE_IMG_BASE64);
} }
/// <summary>
/// 移动窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DragMove(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Window.GetWindow(this).DragMove();
}
}
} }
} }

View File

@@ -12,11 +12,12 @@
<UserControl.Resources> <UserControl.Resources>
<cvt:HideTypeConvert x:Key="HideTypeConvert"/> <cvt:HideTypeConvert x:Key="HideTypeConvert"/>
</UserControl.Resources> </UserControl.Resources>
<hc:SimplePanel Margin="20"> <Grid Background="AliceBlue" MouseDown="DragMove">
<hc:UniformSpacingPanel Spacing="10" Margin="0,0,0,10" Grid.ColumnSpan="4"> <StackPanel Margin="10">
<hc:UniformSpacingPanel Spacing="10" Grid.ColumnSpan="4">
<TextBlock Text="面板动作设置" VerticalAlignment="Center"/> <TextBlock Text="面板动作设置" VerticalAlignment="Center"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="30,26.394,0,-16.394" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="10,5,0,0" Grid.ColumnSpan="4">
<CheckBox x:Name="IconIsAdmin" Content="启动时显示主面板" IsChecked="{Binding StartedShowPanel}"> <CheckBox x:Name="IconIsAdmin" Content="启动时显示主面板" IsChecked="{Binding StartedShowPanel}">
<CheckBox.Background> <CheckBox.Background>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0"> <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
@@ -26,7 +27,7 @@
</CheckBox> </CheckBox>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="30,50,0,-102.337" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="10,5,0,0" Grid.ColumnSpan="4">
<CheckBox Content="显示时追随鼠标位置" IsChecked="{Binding FollowMouse}"> <CheckBox Content="显示时追随鼠标位置" IsChecked="{Binding FollowMouse}">
<CheckBox.Background> <CheckBox.Background>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0"> <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
@@ -35,10 +36,31 @@
</CheckBox.Background> </CheckBox.Background>
</CheckBox> </CheckBox>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="30,89.49,-30,-79.49" Grid.ColumnSpan="4">
<TextBlock Text="面板关闭方式" VerticalAlignment="Center" Margin="-26,0,26,0"/> <hc:UniformSpacingPanel Spacing="10" Margin="10,5,0,0" Grid.ColumnSpan="4">
<CheckBox Content="贴边隐藏" IsChecked="{Binding MarginHide}" Checked="MarginHide_Changed" Unchecked="MarginHide_Changed">
<CheckBox.Background>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#FF9EA3A6"/>
</LinearGradientBrush>
</CheckBox.Background>
</CheckBox>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="10,115,20,-102.337" Grid.ColumnSpan="4">
<hc:UniformSpacingPanel Spacing="10" Margin="10,5,0,0" Grid.ColumnSpan="4">
<CheckBox Content="主窗口动画效果" IsChecked="{Binding AppAnimation}" Checked="Animation_Checked">
<CheckBox.Background>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#FF9EA3A6"/>
</LinearGradientBrush>
</CheckBox.Background>
</CheckBox>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="0,10,0,0" Grid.ColumnSpan="4">
<TextBlock Text="面板关闭方式" VerticalAlignment="Center"/>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="10,5,0,0" Grid.ColumnSpan="4">
<RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}"
Style="{StaticResource RadioButtonIcon}" Content="失去焦点后" Style="{StaticResource RadioButtonIcon}" Content="失去焦点后"
IsChecked="{Binding AppHideType, Mode=TwoWay, Converter={StaticResource HideTypeConvert}, ConverterParameter=1}"/> IsChecked="{Binding AppHideType, Mode=TwoWay, Converter={StaticResource HideTypeConvert}, ConverterParameter=1}"/>
@@ -50,12 +72,12 @@
IsChecked="{Binding AppHideType, Mode=TwoWay, Converter={StaticResource HideTypeConvert}, ConverterParameter=3}"/> IsChecked="{Binding AppHideType, Mode=TwoWay, Converter={StaticResource HideTypeConvert}, ConverterParameter=3}"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="30,164.49,-30,-154.49" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="0,10,0,0" Grid.ColumnSpan="4">
<TextBlock Text="热键设置" VerticalAlignment="Center" Margin="-26,0,26,0"/> <TextBlock Text="热键设置" VerticalAlignment="Center"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="30,193,0,-180.337" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="10,5,0,0" Grid.ColumnSpan="4">
<TextBlock Text="主面板:" Width="55"/> <TextBlock Text="主面板:" VerticalAlignment="Center" Width="55"/>
<hc:TextBox HorizontalAlignment="Left" <hc:TextBox HorizontalAlignment="Left"
Tag="Main" Tag="Main"
VerticalAlignment="Top" VerticalAlignment="Top"
IsReadOnly="True" IsReadOnly="True"
@@ -64,9 +86,9 @@
Text="{Binding HotkeyStr}" Text="{Binding HotkeyStr}"
KeyDown="HotKeyDown" KeyDown="HotKeyDown"
KeyUp="HotKeyUp" KeyUp="HotKeyUp"
Margin="12.967,-7.38,-12.967,0"/> />
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<!--<hc:UniformSpacingPanel Spacing="10" Margin="30,229,0,-216.337" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="10,5,0,0" Grid.ColumnSpan="4">
<TextBlock Text="新建待办:" Width="55"/> <TextBlock Text="新建待办:" Width="55"/>
<hc:TextBox HorizontalAlignment="Left" <hc:TextBox HorizontalAlignment="Left"
Tag="ToDo" Tag="ToDo"
@@ -77,9 +99,11 @@
Text="{Binding ToDoHotkeyStr}" Text="{Binding ToDoHotkeyStr}"
KeyDown="HotKeyDown" KeyDown="HotKeyDown"
KeyUp="HotKeyUp" KeyUp="HotKeyUp"
Margin="12.967,-7.38,-12.967,0"/> />
</hc:UniformSpacingPanel>--> </hc:UniformSpacingPanel>
<StackPanel hc:Growl.GrowlParent="True" hc:Growl.Token="HotKeyGrowl" VerticalAlignment="Top"/> <StackPanel hc:Growl.GrowlParent="True" hc:Growl.Token="HotKeyGrowl" VerticalAlignment="Top"/>
</hc:SimplePanel> </StackPanel>
</Grid>
</UserControl> </UserControl>

View File

@@ -1,4 +1,5 @@
using GeekDesk.Control.Windows; using GeekDesk.Constant;
using GeekDesk.Control.Windows;
using GeekDesk.Util; using GeekDesk.Util;
using GeekDesk.ViewModel; using GeekDesk.ViewModel;
using HandyControl.Data; using HandyControl.Data;
@@ -19,6 +20,7 @@ using System.Windows.Media;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using System.Windows.Navigation; using System.Windows.Navigation;
using System.Windows.Shapes; using System.Windows.Shapes;
using static GeekDesk.Util.GlobalHotKey;
namespace GeekDesk.Control.UserControls.Config namespace GeekDesk.Control.UserControls.Config
{ {
@@ -212,14 +214,16 @@ namespace GeekDesk.Control.UserControls.Config
{ {
if (MainWindow.hotKeyId != -1) if (MainWindow.hotKeyId != -1)
{ {
Hotkey.UnRegist(new WindowInteropHelper(MainWindow.mainWindow).Handle, Hotkey.keymap[MainWindow.hotKeyId]); //Hotkey.UnRegist(new WindowInteropHelper(MainWindow.mainWindow).Handle, Hotkey.keymap[MainWindow.hotKeyId]);
GlobalHotKey.Dispose(MainWindow.hotKeyId);
} }
MainWindow.RegisterHotKey(false); MainWindow.RegisterHotKey(false);
} else } else
{ {
if (MainWindow.toDoHotKeyId != -1) if (MainWindow.toDoHotKeyId != -1)
{ {
Hotkey.UnRegist(new WindowInteropHelper(MainWindow.toDoInfoWindow).Handle, Hotkey.keymap[MainWindow.toDoHotKeyId]); //Hotkey.UnRegist(new WindowInteropHelper(MainWindow.toDoInfoWindow).Handle, Hotkey.keymap[MainWindow.toDoHotKeyId]);
GlobalHotKey.Dispose(MainWindow.toDoHotKeyId);
} }
MainWindow.RegisterCreateToDoHotKey(false); MainWindow.RegisterCreateToDoHotKey(false);
} }
@@ -229,66 +233,43 @@ namespace GeekDesk.Control.UserControls.Config
} }
} }
//private void ShowApp(MainWindow mainWindow) /// <summary>
//{ /// 移动窗口
// if (appConfig.FollowMouse) /// </summary>
// { /// <param name="sender"></param>
// ShowAppAndFollowMouse(mainWindow); /// <param name="e"></param>
// } private void DragMove(object sender, System.Windows.Input.MouseButtonEventArgs e)
// else {
// { if (e.LeftButton == MouseButtonState.Pressed)
// this.Visibility = Visibility.Visible; {
// } Window.GetWindow(this).DragMove();
// Keyboard.Focus(this); }
//} }
///// <summary> private void MarginHide_Changed(object sender, RoutedEventArgs e)
///// 随鼠标位置显示面板 (鼠标始终在中间) {
///// </summary> if (appConfig.MarginHide)
//private void ShowAppAndFollowMouse(MainWindow mainWindow) {
//{ MainWindow.hide.TimerSet();
// //获取鼠标位置 } else
// System.Windows.Point p = MouseUtil.GetMousePosition(); {
// double left = SystemParameters.VirtualScreenLeft; if (MainWindow.hide.timer != null)
// double top = SystemParameters.VirtualScreenTop; {
// double width = SystemParameters.VirtualScreenWidth; MainWindow.hide.TimerStop();
// double height = SystemParameters.VirtualScreenHeight; }
// double right = width - Math.Abs(left); }
// double bottom = height - Math.Abs(top); }
private void Animation_Checked(object sender, RoutedEventArgs e)
{
if (MainWindow.mainWindow.Visibility == Visibility.Collapsed)
{
MainWindow.mainWindow.Visibility = Visibility.Visible;
// 执行一下动画 防止太过突兀
MainWindow.FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
}
}
// if (p.X - mainWindow.Width / 2 < left)
// {
// //判断是否在最左边缘
// mainWindow.Left = left;
// }
// else if (p.X + mainWindow.Width / 2 > right)
// {
// //判断是否在最右边缘
// mainWindow.Left = right - mainWindow.Width;
// }
// else
// {
// mainWindow.Left = p.X - mainWindow.Width / 2;
// }
// if (p.Y - mainWindow.Height / 2 < top)
// {
// //判断是否在最上边缘
// mainWindow.Top = top;
// }
// else if (p.Y + mainWindow.Height / 2 > bottom)
// {
// //判断是否在最下边缘
// mainWindow.Top = bottom - mainWindow.Height;
// }
// else
// {
// mainWindow.Top = p.Y - mainWindow.Height / 2;
// }
// mainWindow.Visibility = Visibility.Visible;
//}
} }
} }

View File

@@ -14,45 +14,48 @@
<UserControl.Resources> <UserControl.Resources>
<cvt:UpdateTypeConvert x:Key="UpdateTypeConvert"/> <cvt:UpdateTypeConvert x:Key="UpdateTypeConvert"/>
</UserControl.Resources> </UserControl.Resources>
<hc:SimplePanel Margin="20"> <Grid MouseDown="DragMove" Background="AliceBlue">
<StackPanel > <hc:SimplePanel Margin="20" >
<TextBlock Text="程序设置" /> <StackPanel >
<hc:UniformSpacingPanel Spacing="10" Margin="20,8,0,0"> <TextBlock Text="程序设置" />
<CheckBox x:Name="SelfStartUpBox" Content="开机自启动" IsChecked="{Binding SelfStartUp}" Click="SelfStartUpBox_Click"> <hc:UniformSpacingPanel Spacing="10" Margin="20,8,0,0">
<CheckBox.Background> <CheckBox x:Name="SelfStartUpBox" Content="开机自启动" IsChecked="{Binding SelfStartUp}" Click="SelfStartUpBox_Click">
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0"> <CheckBox.Background>
<GradientStop Color="#FF9EA3A6"/> <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
</LinearGradientBrush> <GradientStop Color="#FF9EA3A6"/>
</CheckBox.Background> </LinearGradientBrush>
</CheckBox> </CheckBox.Background>
</hc:UniformSpacingPanel> </CheckBox>
<hc:UniformSpacingPanel Spacing="10" Margin="20,6,0,0"> </hc:UniformSpacingPanel>
<CheckBox Content="性能模式" IsChecked="{Binding PMModel}" <hc:UniformSpacingPanel Spacing="10" Margin="20,6,0,0">
<CheckBox Content="性能模式" IsChecked="{Binding PMModel}"
hc:Poptip.HitMode="None" hc:Poptip.HitMode="None"
hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
hc:Poptip.Content="开启性能模式将取消图标动画效果" hc:Poptip.Content="开启性能模式将取消图标动画效果"
hc:Poptip.Placement="TopLeft"> hc:Poptip.Placement="TopLeft">
<CheckBox.Background> <CheckBox.Background>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0"> <LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#FF9EA3A6"/> <GradientStop Color="#FF9EA3A6"/>
</LinearGradientBrush> </LinearGradientBrush>
</CheckBox.Background> </CheckBox.Background>
</CheckBox> </CheckBox>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<TextBlock Text="更新源" Margin="0,25,0,0"/> <TextBlock Text="更新源" Margin="0,25,0,0"/>
<hc:UniformSpacingPanel Spacing="10" Margin="20,8,0,0"> <hc:UniformSpacingPanel Spacing="10" Margin="20,8,0,0">
<RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}"
Style="{StaticResource RadioButtonIcon}" Content="Gitee" Style="{StaticResource RadioButtonIcon}" Content="Gitee"
hc:IconElement.Geometry="{StaticResource Gitee}" hc:IconElement.Geometry="{StaticResource Gitee}"
Foreground="#B32225" Foreground="#B32225"
IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=1}"/> IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=1}"/>
<RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}" <RadioButton Margin="10,0,0,0" Background="{DynamicResource SecondaryRegionBrush}"
hc:IconElement.Geometry="{StaticResource GitHub}" hc:IconElement.Geometry="{StaticResource GitHub}"
Style="{StaticResource RadioButtonIcon}" Content="GitHub" Style="{StaticResource RadioButtonIcon}" Content="GitHub"
Foreground="Black" Foreground="Black"
IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=2}"/> IsChecked="{Binding UpdateType, Mode=TwoWay, Converter={StaticResource UpdateTypeConvert}, ConverterParameter=2}"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
</StackPanel> </StackPanel>
</hc:SimplePanel> </hc:SimplePanel>
</Grid>
</UserControl> </UserControl>

View File

@@ -33,5 +33,18 @@ namespace GeekDesk.Control.UserControls.Config
AppConfig appConfig = MainWindow.appData.AppConfig; AppConfig appConfig = MainWindow.appData.AppConfig;
RegisterUtil.SetSelfStarting(appConfig.SelfStartUp, Constants.MY_NAME); RegisterUtil.SetSelfStarting(appConfig.SelfStartUp, Constants.MY_NAME);
} }
/// <summary>
/// 移动窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DragMove(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Window.GetWindow(this).DragMove();
}
}
} }
} }

View File

@@ -7,96 +7,117 @@
xmlns:hc="https://handyorg.github.io/handycontrol" xmlns:hc="https://handyorg.github.io/handycontrol"
mc:Ignorable="d" mc:Ignorable="d"
Background="AliceBlue" Background="AliceBlue"
d:DesignHeight="380" d:DesignWidth="450"> d:DesignHeight="500" d:DesignWidth="450">
<hc:SimplePanel Margin="20">
<hc:UniformSpacingPanel Spacing="10" Margin="0,0,-40,-12" Grid.ColumnSpan="4">
<TextBlock Text="背景图片" VerticalAlignment="Center"/>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="19,20,-59,-31.5" Grid.ColumnSpan="4">
<TextBlock Text="图片路径:" VerticalAlignment="Center"/>
<TextBlock Text="{Binding BacImgName}" Width="200"
VerticalAlignment="Center"
hc:Poptip.HitMode="None"
hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
hc:Poptip.Content="{Binding BacImgName}"
hc:Poptip.Placement="TopLeft"
/>
<Button Content="修改" Click="BGButton_Click"/>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="19,60,11,-36.433" Grid.ColumnSpan="4">
<CheckBox x:Name="IconIsAdmin" Content="毛玻璃效果" IsChecked="{Binding BlurEffect}">
<CheckBox.Background>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#FF9EA3A6"/>
</LinearGradientBrush>
</CheckBox.Background>
</CheckBox>
</hc:UniformSpacingPanel>
<hc:Divider LineStrokeDashArray="3,3" Margin="0,91.5,0,34.5" LineStroke="Black" Grid.ColumnSpan="4"/>
<StackPanel Margin="0,30,0,0">
<hc:UniformSpacingPanel Spacing="10" Margin="0,80,-40,-89.5" Grid.ColumnSpan="4">
<TextBlock Text="托盘不透明度" VerticalAlignment="Center"/>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="0,110,-40,-122" Grid.ColumnSpan="4">
<hc:PreviewSlider Value="{Binding CardOpacity}"
Maximum="100"
Margin="0,-12,-313.5,19.5"
>
<hc:PreviewSlider.PreviewContent>
<Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
</hc:PreviewSlider.PreviewContent>
</hc:PreviewSlider>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="0,135,-40,-161.626" Grid.ColumnSpan="4"> <Grid>
<TextBlock Text="背景图片不透明度" VerticalAlignment="Center"/> <Grid MouseDown="DragMove" Background="AliceBlue">
</hc:UniformSpacingPanel> <hc:SimplePanel Margin="20" >
<hc:UniformSpacingPanel Spacing="10" Margin="0,155,-40,-183" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="0,0,-40,-12" Grid.ColumnSpan="4">
<hc:PreviewSlider Value="{Binding BgOpacity}" <TextBlock Text="背景图片" VerticalAlignment="Center"/>
Maximum="100" </hc:UniformSpacingPanel>
Margin="0,0,-313.5,7.5" <hc:UniformSpacingPanel Spacing="10" Margin="19,20,-59,-31.5" Grid.ColumnSpan="4">
> <TextBlock Text="图片路径:" VerticalAlignment="Center"/>
<hc:PreviewSlider.PreviewContent> <TextBlock Text="{Binding BacImgName}" Width="200"
<Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/> VerticalAlignment="Center"
</hc:PreviewSlider.PreviewContent> hc:Poptip.HitMode="None"
</hc:PreviewSlider> hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
</hc:UniformSpacingPanel> hc:Poptip.Content="{Binding BacImgName}"
hc:Poptip.Placement="TopLeft"
/>
<Button Content="修改" Click="BGButton_Click"/>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="19,60,11,-36.433" Grid.ColumnSpan="4">
<CheckBox x:Name="IconIsAdmin" Content="毛玻璃效果" IsChecked="{Binding BlurEffect}">
<CheckBox.Background>
<LinearGradientBrush EndPoint="1,0" StartPoint="0,0">
<GradientStop Color="#FF9EA3A6"/>
</LinearGradientBrush>
</CheckBox.Background>
</CheckBox>
</hc:UniformSpacingPanel>
<hc:Divider LineStrokeDashArray="3,3" Margin="0,91.5,0,34.5" LineStroke="Black" Grid.ColumnSpan="4"/>
<StackPanel Margin="0,30,0,0">
<hc:UniformSpacingPanel Spacing="10" Margin="0,80,-40,-89.5" Grid.ColumnSpan="4">
<TextBlock Text="托盘不透明度" VerticalAlignment="Center"/>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="0,110,-40,-122" Grid.ColumnSpan="4">
<hc:PreviewSlider Value="{Binding CardOpacity}"
Maximum="100"
Margin="0,-12,-313.5,19.5"
>
<hc:PreviewSlider.PreviewContent>
<Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
</hc:PreviewSlider.PreviewContent>
</hc:PreviewSlider>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="0,195,-40,-208.813" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="0,135,-40,-161.626" Grid.ColumnSpan="4">
<TextBlock Text="主面板不透明度" VerticalAlignment="Center"/> <TextBlock Text="背景图片不透明度" VerticalAlignment="Center"/>
</hc:UniformSpacingPanel> </hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="0,215,-40,-241" Grid.ColumnSpan="4"> <hc:UniformSpacingPanel Spacing="10" Margin="0,155,-40,-183" Grid.ColumnSpan="4">
<hc:PreviewSlider Value="{Binding PannelOpacity}" <hc:PreviewSlider Value="{Binding BgOpacity}"
Minimum="50" Maximum="100"
Maximum="100" Margin="0,0,-313.5,7.5"
Margin="0,0,-313.5,7.5" >
> <hc:PreviewSlider.PreviewContent>
<hc:PreviewSlider.PreviewContent> <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
<Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/> </hc:PreviewSlider.PreviewContent>
</hc:PreviewSlider.PreviewContent> </hc:PreviewSlider>
</hc:PreviewSlider> </hc:UniformSpacingPanel>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="0,245,-40,-279.313" Grid.ColumnSpan="4">
<TextBlock Text="主面板圆角大小" VerticalAlignment="Center"/> <hc:UniformSpacingPanel Spacing="10" Margin="0,195,-40,-208.813" Grid.ColumnSpan="4">
</hc:UniformSpacingPanel> <TextBlock Text="主面板不透明度" VerticalAlignment="Center"/>
<hc:UniformSpacingPanel Spacing="10" Margin="0,265,-40,-321" Grid.ColumnSpan="4"> </hc:UniformSpacingPanel>
<hc:PreviewSlider Value="{Binding PannelCornerRadius}" <hc:UniformSpacingPanel Spacing="10" Margin="0,215,-40,-241" Grid.ColumnSpan="4">
Maximum="25" <hc:PreviewSlider Value="{Binding PannelOpacity}"
Margin="0,0,-313.5,7.5" Minimum="50"
> Maximum="100"
<hc:PreviewSlider.PreviewContent> Margin="0,0,-313.5,7.5"
<Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/> >
</hc:PreviewSlider.PreviewContent> <hc:PreviewSlider.PreviewContent>
</hc:PreviewSlider> <Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
</hc:UniformSpacingPanel> </hc:PreviewSlider.PreviewContent>
</hc:PreviewSlider>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="0,245,-40,-279.313" Grid.ColumnSpan="4">
<TextBlock Text="主面板圆角大小" VerticalAlignment="Center"/>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="10" Margin="0,265,-40,-321" Grid.ColumnSpan="4">
<hc:PreviewSlider Value="{Binding PannelCornerRadius}"
Maximum="25"
Margin="0,0,-313.5,7.5"
>
<hc:PreviewSlider.PreviewContent>
<Label Style="{StaticResource LabelPrimary}" Content="{Binding Path=(hc:PreviewSlider.PreviewPosition),RelativeSource={RelativeSource Self}}" ContentStringFormat="#0"/>
</hc:PreviewSlider.PreviewContent>
</hc:PreviewSlider>
</hc:UniformSpacingPanel>
</StackPanel>
<hc:Divider LineStrokeDashArray="3,3" Margin="0,341.5,0,-215.5" LineStroke="Black" Grid.ColumnSpan="4"/>
<hc:UniformSpacingPanel Spacing="10" Margin="0,354,-40,-388.313" Grid.ColumnSpan="4">
<TextBlock VerticalAlignment="Center" Text="图标字体颜色:" />
<TextBlock VerticalAlignment="Center" Text="{Binding TextColor}" Width="100"/>
<Button Content="选择" Click="ColorButton_Click"/>
</hc:UniformSpacingPanel>
</hc:SimplePanel>
</Grid>
<StackPanel x:Name="ColorPanel" Visibility="Collapsed" VerticalAlignment="Center">
<StackPanel.Background>
<SolidColorBrush Color="AliceBlue" Opacity="0"/>
</StackPanel.Background>
<hc:ColorPicker
Name="ColorPicker"
Canceled="ColorPicker_Canceled"
SelectedColorChanged="ColorPicker_SelectedColorChanged"/>
</StackPanel> </StackPanel>
</Grid>
</hc:SimplePanel>
</UserControl> </UserControl>

View File

@@ -23,6 +23,8 @@ namespace GeekDesk.Control.UserControls.Config
/// </summary> /// </summary>
public partial class ThemeControl : System.Windows.Controls.UserControl public partial class ThemeControl : System.Windows.Controls.UserControl
{ {
private static AppConfig appConfig = MainWindow.appData.AppConfig;
public ThemeControl() public ThemeControl()
{ {
InitializeComponent(); InitializeComponent();
@@ -35,7 +37,6 @@ namespace GeekDesk.Control.UserControls.Config
/// <param name="e"></param> /// <param name="e"></param>
private void BGButton_Click(object sender, RoutedEventArgs e) private void BGButton_Click(object sender, RoutedEventArgs e)
{ {
AppConfig appConfig = MainWindow.appData.AppConfig;
try try
{ {
@@ -56,5 +57,35 @@ namespace GeekDesk.Control.UserControls.Config
} }
} }
private void ColorButton_Click(object sender, RoutedEventArgs e)
{
ColorPanel.Visibility = Visibility.Visible;
}
private void ColorPicker_Canceled(object sender, EventArgs e)
{
ColorPanel.Visibility = Visibility.Collapsed;
}
private void ColorPicker_SelectedColorChanged(object sender, HandyControl.Data.FunctionEventArgs<Color> e)
{
SolidColorBrush scb = ColorPicker.SelectedBrush;
appConfig.TextColor = scb.ToString();
ColorPanel.Visibility = Visibility.Collapsed;
}
/// <summary>
/// 移动窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DragMove(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Window.GetWindow(this).DragMove();
}
}
} }
} }

View File

@@ -13,7 +13,7 @@
<!--左侧栏样式动画--> <!--左侧栏样式动画-->
<Style x:Key="MenuStyle" TargetType="ListBoxItem" BasedOn="{StaticResource ListBoxItemBaseStyle}"> <Style x:Key="MenuStyle" TargetType="ListBoxItem" BasedOn="{StaticResource ListBoxItemBaseStyle}">
<Setter Property="FontSize" Value="15"/> <Setter Property="FontSize" Value="16"/>
<Setter Property="Margin" Value="0,0,0,1"/> <Setter Property="Margin" Value="0,0,0,1"/>
<Setter Property="Background"> <Setter Property="Background">
<Setter.Value> <Setter.Value>
@@ -30,8 +30,8 @@
</MultiTrigger.Conditions> </MultiTrigger.Conditions>
<MultiTrigger.EnterActions> <MultiTrigger.EnterActions>
<BeginStoryboard> <BeginStoryboard>
<Storyboard> <Storyboard Timeline.DesiredFrameRate="60">
<DoubleAnimation To="15" Duration="0:0:0.5" Storyboard.TargetProperty="FontSize"/> <DoubleAnimation To="16" Duration="0:0:0.2" Storyboard.TargetProperty="FontSize"/>
</Storyboard> </Storyboard>
</BeginStoryboard> </BeginStoryboard>
</MultiTrigger.EnterActions> </MultiTrigger.EnterActions>
@@ -103,24 +103,27 @@
<ListBox.ItemsPanel> <ListBox.ItemsPanel>
<ItemsPanelTemplate> <ItemsPanelTemplate>
<DraggAnimatedPanel:DraggAnimatedPanel ItemsHeight="30" ItemsWidth="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}}" HorizontalAlignment="Center" VerticalAlignment="Top" SwapCommand="{Binding SwapCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/> <DraggAnimatedPanel:DraggAnimatedPanel ItemsHeight="33" ItemsWidth="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}, ConverterParameter=10}" HorizontalAlignment="Center" VerticalAlignment="Top" SwapCommand="{Binding SwapCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
</ItemsPanelTemplate> </ItemsPanelTemplate>
</ListBox.ItemsPanel> </ListBox.ItemsPanel>
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<StackPanel MouseLeftButtonDown="MenuClick" MouseRightButtonDown="MenuClick" Tag="{Binding}"> <StackPanel MouseLeftButtonDown="MenuClick" MouseRightButtonDown="MenuClick" Tag="{Binding}">
<hc:TextBox Text="{Binding Path=MenuName, Mode=TwoWay}" <hc:TextBox Text="{Binding Path=MenuName, Mode=TwoWay}"
HorizontalAlignment="Left" HorizontalAlignment="Left"
Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}}" Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBox},AncestorLevel=1},Path=Tag, Mode=TwoWay, Converter={StaticResource MenuWidthConvert}, ConverterParameter=35}"
FontSize="15" FontSize="16"
TextAlignment="Left" Height="25"
LostFocus="LostFocusOrEnterDown" VerticalAlignment="Center"
KeyDown="LostFocusOrEnterDown" TextAlignment="Left"
Tag="{Binding}" LostFocus="LostFocusOrEnterDown"
IsVisibleChanged="MenuEditWhenVisibilityChanged" KeyDown="LostFocusOrEnterDown"
Visibility="{Binding MenuEdit}"/> Tag="{Binding}"
<StackPanel Orientation="Horizontal"> Margin="2"
IsVisibleChanged="MenuEditWhenVisibilityChanged"
Visibility="{Binding MenuEdit}"/>
<StackPanel Orientation="Horizontal">
<Button Background="Transparent" <Button Background="Transparent"
BorderThickness="0" BorderThickness="0"
hc:IconElement.Geometry="{Binding MenuGeometry}" hc:IconElement.Geometry="{Binding MenuGeometry}"

View File

@@ -15,6 +15,9 @@
<Setter Property="Width" Value="{Binding ImageWidth}"/> <Setter Property="Width" Value="{Binding ImageWidth}"/>
<Setter Property="Height" Value="{Binding ImageHeight}"/> <Setter Property="Height" Value="{Binding ImageHeight}"/>
<Setter Property="Source" Value="{Binding BitmapImage}"/> <Setter Property="Source" Value="{Binding BitmapImage}"/>
<Setter Property="RenderOptions.BitmapScalingMode" Value="LowQuality" />
<Setter Property="RenderOptions.CachingHint" Value="Cache" />
</Style> </Style>
<Style x:Key="MyListBoxItemStyle" TargetType="{x:Type ListBoxItem}"> <Style x:Key="MyListBoxItemStyle" TargetType="{x:Type ListBoxItem}">
<Setter Property="Template"> <Setter Property="Template">
@@ -28,7 +31,6 @@
</Setter> </Setter>
</Style> </Style>
<cvt:MenuWidthConvert x:Key="MenuWidthConvert"/>
<cvt:OpcityConvert x:Key="OpcityConvert"/> <cvt:OpcityConvert x:Key="OpcityConvert"/>
</UserControl.Resources> </UserControl.Resources>
@@ -44,6 +46,11 @@
<hc:Card.BorderBrush> <hc:Card.BorderBrush>
<SolidColorBrush Color="#FFFFFFFF" Opacity="0"/> <SolidColorBrush Color="#FFFFFFFF" Opacity="0"/>
</hc:Card.BorderBrush> </hc:Card.BorderBrush>
<hc:Card.ContextMenu>
<ContextMenu Width="200">
<MenuItem Header="添加URL项目" Click="AddUrlIcon"/>
</ContextMenu>
</hc:Card.ContextMenu>
<WrapPanel Orientation="Horizontal"> <WrapPanel Orientation="Horizontal">
<ListBox x:Name="IconListBox" ItemsSource="{Binding AppConfig.SelectedMenuIcons, Mode=TwoWay}" <ListBox x:Name="IconListBox" ItemsSource="{Binding AppConfig.SelectedMenuIcons, Mode=TwoWay}"
BorderThickness="0" BorderThickness="0"
@@ -53,8 +60,8 @@
</ListBox.Background> </ListBox.Background>
<ListBox.ItemsPanel> <ListBox.ItemsPanel>
<ItemsPanelTemplate> <ItemsPanelTemplate>
<DraggAnimatedPanel:DraggAnimatedPanel ItemsHeight="110" <DraggAnimatedPanel:DraggAnimatedPanel ItemsHeight="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelHeight}"
ItemsWidth="110" ItemsWidth="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelWidth}"
Background="#00FFFFFF" Background="#00FFFFFF"
HorizontalAlignment="Center" HorizontalAlignment="Center"
SwapCommand="{Binding SwapCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/> SwapCommand="{Binding SwapCommand, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>
@@ -65,6 +72,7 @@
<ContextMenu x:Key="IconDialog" Width="200"> <ContextMenu x:Key="IconDialog" Width="200">
<MenuItem Header="管理员方式运行" Click="IconAdminStart" Tag="{Binding}"/> <MenuItem Header="管理员方式运行" Click="IconAdminStart" Tag="{Binding}"/>
<MenuItem Header="打开文件所在位置" Click="ShowInExplore" Tag="{Binding}"/> <MenuItem Header="打开文件所在位置" Click="ShowInExplore" Tag="{Binding}"/>
<MenuItem Header="添加URL项目" Click="AddUrlIcon"/>
<MenuItem Header="资源管理器菜单" Click="SystemContextMenu" Tag="{Binding}"/> <MenuItem Header="资源管理器菜单" Click="SystemContextMenu" Tag="{Binding}"/>
<MenuItem Header="属性" Click="PropertyConfig" Tag="{Binding}"/> <MenuItem Header="属性" Click="PropertyConfig" Tag="{Binding}"/>
<MenuItem Header="从列表移除" Click="RemoveIcon" Tag="{Binding}"/> <MenuItem Header="从列表移除" Click="RemoveIcon" Tag="{Binding}"/>
@@ -80,8 +88,8 @@
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<StackPanel Tag="{Binding}" <StackPanel Tag="{Binding}"
Height="110" Height="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelHeight}"
Width="110" Width="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.ImgPanelWidth}"
HorizontalAlignment="Center" HorizontalAlignment="Center"
hc:Poptip.HitMode="None" hc:Poptip.HitMode="None"
hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" hc:Poptip.IsOpen="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}"
@@ -101,6 +109,7 @@
TextTrimming="WordEllipsis" TextTrimming="WordEllipsis"
TextAlignment="Center" TextAlignment="Center"
VerticalAlignment="Center" VerticalAlignment="Center"
Foreground="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type Window}},Path=DataContext.AppConfig.TextColor}"
Text="{Binding Name}"/> Text="{Binding Name}"/>
</StackPanel> </StackPanel>
</DataTemplate> </DataTemplate>

View File

@@ -31,6 +31,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
public partial class RightCardControl : UserControl public partial class RightCardControl : UserControl
{ {
private AppData appData = MainWindow.appData; private AppData appData = MainWindow.appData;
public RightCardControl() public RightCardControl()
{ {
InitializeComponent(); InitializeComponent();
@@ -109,41 +110,62 @@ namespace GeekDesk.Control.UserControls.PannelCard
{ {
try try
{ {
if (!File.Exists(icon.Path) && !Directory.Exists(icon.Path))
{
HandyControl.Controls.Growl.WarningGlobal("程序启动失败(文件路径不存在或已删除)!");
return;
}
Process p = new Process(); Process p = new Process();
p.StartInfo.FileName = icon.Path; p.StartInfo.FileName = icon.Path;
if (icon.IconType == IconType.OTHER)
switch (type)
{ {
case IconStartType.ADMIN_STARTUP: if (!File.Exists(icon.Path) && !Directory.Exists(icon.Path))
p.StartInfo.Arguments = "1";//启动参数 {
p.StartInfo.Verb = "runas"; HandyControl.Controls.Growl.WarningGlobal("程序启动失败(文件路径不存在或已删除)!");
p.StartInfo.CreateNoWindow = false; //设置显示窗口 return;
p.StartInfo.UseShellExecute = false;//不使用操作系统外壳程序启动进程 }
p.StartInfo.ErrorDialog = false; p.StartInfo.WorkingDirectory = icon.Path.Substring(0, icon.Path.LastIndexOf("\\"));
if (appData.AppConfig.AppHideType == AppHideType.START_EXE) switch (type)
{ {
Window parentWin = Window.GetWindow(this); case IconStartType.ADMIN_STARTUP:
parentWin.Visibility = Visibility.Collapsed; p.StartInfo.Arguments = "1";//启动参数
} p.StartInfo.Verb = "runas";
break;// c#好像不能case穿透 p.StartInfo.CreateNoWindow = false; //设置显示窗口
case IconStartType.DEFAULT_STARTUP: p.StartInfo.UseShellExecute = false;//不使用操作系统外壳程序启动进程
if (appData.AppConfig.AppHideType == AppHideType.START_EXE) p.StartInfo.ErrorDialog = false;
{ if (appData.AppConfig.AppHideType == AppHideType.START_EXE)
Window parentWin = Window.GetWindow(this); {
parentWin.Visibility = Visibility.Collapsed; //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
} if (appData.AppConfig.MarginHide)
break; {
case IconStartType.SHOW_IN_EXPLORE: if (!MainWindow.hide.IsMargin())
p.StartInfo.FileName = "Explorer.exe"; {
p.StartInfo.Arguments = "/e,/select," + icon.Path; MainWindow.HideApp();
break; }
}
else
{
MainWindow.HideApp();
}
}
break;// c#好像不能case穿透
case IconStartType.DEFAULT_STARTUP:
if (appData.AppConfig.AppHideType == AppHideType.START_EXE)
{
//如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
if (appData.AppConfig.MarginHide)
{
if (!MainWindow.hide.IsMargin())
{
MainWindow.HideApp();
}
} else
{
MainWindow.HideApp();
}
}
break;
case IconStartType.SHOW_IN_EXPLORE:
p.StartInfo.FileName = "Explorer.exe";
p.StartInfo.Arguments = "/e,/select," + icon.Path;
break;
}
} }
p.Start(); p.Start();
icon.Count++; icon.Count++;
@@ -165,7 +187,7 @@ namespace GeekDesk.Control.UserControls.PannelCard
{ {
string path = (string)obj; string path = (string)obj;
//string base64 = ImageUtil.FileImageToBase64(path, ImageFormat.Jpeg); //string base64 = ImageUtil.FileImageToBase64(path, ImageFormat.Png);
string ext = System.IO.Path.GetExtension(path).ToLower(); string ext = System.IO.Path.GetExtension(path).ToLower();
@@ -178,10 +200,11 @@ namespace GeekDesk.Control.UserControls.PannelCard
} }
} }
BitmapImage bi = ImageUtil.GetBitmapIconByPath(path);
IconInfo iconInfo = new IconInfo IconInfo iconInfo = new IconInfo
{ {
Path = path, Path = path,
BitmapImage = ImageUtil.GetBitmapIconByPath(path) BitmapImage = bi
}; };
iconInfo.DefaultImage = iconInfo.ImageByteArr; iconInfo.DefaultImage = iconInfo.ImageByteArr;
iconInfo.Name = System.IO.Path.GetFileNameWithoutExtension(path); iconInfo.Name = System.IO.Path.GetFileNameWithoutExtension(path);
@@ -223,21 +246,33 @@ namespace GeekDesk.Control.UserControls.PannelCard
/// <param name="e"></param> /// <param name="e"></param>
private void PropertyConfig(object sender, RoutedEventArgs e) private void PropertyConfig(object sender, RoutedEventArgs e)
{ {
HandyControl.Controls.Dialog.Show(new IconInfoDialog((IconInfo)((MenuItem)sender).Tag)); IconInfo info = (IconInfo)((MenuItem)sender).Tag;
switch (info.IconType)
{
case IconType.URL:
IconInfoUrlDialog urlDialog = new IconInfoUrlDialog(info);
urlDialog.dialog = HandyControl.Controls.Dialog.Show(urlDialog);
break;
default:
IconInfoDialog dialog = new IconInfoDialog(info);
dialog.dialog = HandyControl.Controls.Dialog.Show(dialog);
break;
}
} }
private void StackPanel_MouseEnter(object sender, MouseEventArgs e) private void StackPanel_MouseEnter(object sender, MouseEventArgs e)
{ {
ImgStroyBoard(sender, (int)MainWindowEnum.IMAGE_HEIGHT_AM, (int)MainWindowEnum.IMAGE_WIDTH_AM, 1); ImgStoryBoard(sender, (int)CommonEnum.IMAGE_HEIGHT_AM, (int)CommonEnum.IMAGE_WIDTH_AM, 1);
} }
private void StackPanel_MouseLeave(object sender, MouseEventArgs e) private void StackPanel_MouseLeave(object sender, MouseEventArgs e)
{ {
ImgStroyBoard(sender, (int)MainWindowEnum.IMAGE_HEIGHT, (int)MainWindowEnum.IMAGE_WIDTH, 250); ImgStoryBoard(sender, (int)CommonEnum.IMAGE_HEIGHT, (int)CommonEnum.IMAGE_WIDTH, 220);
} }
private void ImgStroyBoard(object sender, int height, int width, int milliseconds) private void ImgStoryBoard(object sender, int height, int width, int milliseconds)
{ {
if (appData.AppConfig.PMModel) return; if (appData.AppConfig.PMModel) return;
@@ -263,8 +298,17 @@ namespace GeekDesk.Control.UserControls.PannelCard
Timeline.SetDesiredFrameRate(heightAnimation, 60); Timeline.SetDesiredFrameRate(heightAnimation, 60);
Timeline.SetDesiredFrameRate(widthAnimation, 60); Timeline.SetDesiredFrameRate(widthAnimation, 60);
img.BeginAnimation(HeightProperty, null);
img.BeginAnimation(WidthProperty, null);
img.BeginAnimation(HeightProperty, heightAnimation); img.BeginAnimation(HeightProperty, heightAnimation);
img.BeginAnimation(WidthProperty, widthAnimation); img.BeginAnimation(WidthProperty, widthAnimation);
} }
private void AddUrlIcon(object sender, RoutedEventArgs e)
{
IconInfoUrlDialog urlDialog = new IconInfoUrlDialog();
urlDialog.dialog = HandyControl.Controls.Dialog.Show(urlDialog);
}
} }
} }

View File

@@ -121,7 +121,7 @@
</hc:SideMenu> </hc:SideMenu>
</hc:Card> </hc:Card>
<hc:ScrollViewer Grid.Row="0" Grid.Column="1"> <hc:ScrollViewer Grid.Row="0" Grid.Column="1">
<hc:Card x:Name="RightCard" Height="448" MouseDown="DragMove"> <hc:Card x:Name="RightCard" Height="448">
</hc:Card> </hc:Card>
</hc:ScrollViewer> </hc:ScrollViewer>

View File

@@ -31,18 +31,7 @@ namespace GeekDesk.Control.Windows
} }
/// <summary>
/// 移动窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void DragMove(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
DragMove();
}
}
/// <summary> /// <summary>
/// 点击关闭按钮 /// 点击关闭按钮

View File

@@ -10,7 +10,7 @@ using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Input; using System.Windows.Input;
using static GeekDesk.Util.ShowWindowFollowMouse;
namespace GeekDesk.Control.Windows namespace GeekDesk.Control.Windows
{ {
@@ -132,6 +132,7 @@ namespace GeekDesk.Control.Windows
window = new IconfontWindow(listInfo, menuInfo); window = new IconfontWindow(listInfo, menuInfo);
} }
window.Show(); window.Show();
ShowWindowFollowMouse.Show(window, MousePosition.LEFT_CENTER, 0, 0);
} }
private void CustomButton_Click(object sender, RoutedEventArgs e) private void CustomButton_Click(object sender, RoutedEventArgs e)

View File

@@ -149,6 +149,18 @@ namespace GeekDesk.Control.Windows
window.Visibility = Visibility.Visible; window.Visibility = Visibility.Visible;
} }
public static void ShowOrHide()
{
if (window == null || !window.Activate())
{
window = new ToDoInfoWindow();
window.Show();
} else
{
window.Close();
}
}
public static System.Windows.Window GetThis() public static System.Windows.Window GetThis()
{ {

View File

@@ -10,7 +10,9 @@ namespace GeekDesk.Converts
{ {
if (value != null && value.ToString().Length > 0) if (value != null && value.ToString().Length > 0)
{ {
return System.Convert.ToDouble(value.ToString()) - 10d; if (parameter == null) parameter = 0.00;
double p = System.Convert.ToDouble(parameter.ToString());
return System.Convert.ToDouble(value.ToString()) - p;
} }
else else
{ {

View File

@@ -26,6 +26,7 @@
<ErrorReport>prompt</ErrorReport> <ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel> <WarningLevel>4</WarningLevel>
<AllowUnsafeBlocks>true</AllowUnsafeBlocks> <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget> <PlatformTarget>AnyCPU</PlatformTarget>
@@ -69,6 +70,8 @@
<Reference Include="System.Drawing.Common, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL"> <Reference Include="System.Drawing.Common, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>packages\System.Drawing.Common.6.0.0-preview.6.21352.12\lib\net461\System.Drawing.Common.dll</HintPath> <HintPath>packages\System.Drawing.Common.6.0.0-preview.6.21352.12\lib\net461\System.Drawing.Common.dll</HintPath>
</Reference> </Reference>
<Reference Include="System.Web" />
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows.Forms" /> <Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" /> <Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
@@ -92,7 +95,8 @@
<Compile Include="Command\DelegateCommandBase.cs" /> <Compile Include="Command\DelegateCommandBase.cs" />
<Compile Include="Constant\AppHideType.cs" /> <Compile Include="Constant\AppHideType.cs" />
<Compile Include="Constant\Constants.cs" /> <Compile Include="Constant\Constants.cs" />
<Compile Include="Constant\MainWindowEnum.cs" /> <Compile Include="Constant\IconType.cs" />
<Compile Include="Constant\CommonEnum.cs" />
<Compile Include="Constant\IconStartType.cs" /> <Compile Include="Constant\IconStartType.cs" />
<Compile Include="Constant\SortType.cs" /> <Compile Include="Constant\SortType.cs" />
<Compile Include="Constant\UpdateType.cs" /> <Compile Include="Constant\UpdateType.cs" />
@@ -102,6 +106,9 @@
<Compile Include="Control\Other\CustomIconUrlDialog.xaml.cs"> <Compile Include="Control\Other\CustomIconUrlDialog.xaml.cs">
<DependentUpon>CustomIconUrlDialog.xaml</DependentUpon> <DependentUpon>CustomIconUrlDialog.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Control\Other\IconInfoUrlDialog.xaml.cs">
<DependentUpon>IconInfoUrlDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Control\UserControls\Config\OtherControl.xaml.cs"> <Compile Include="Control\UserControls\Config\OtherControl.xaml.cs">
<DependentUpon>OtherControl.xaml</DependentUpon> <DependentUpon>OtherControl.xaml</DependentUpon>
</Compile> </Compile>
@@ -123,9 +130,6 @@
<Compile Include="Control\Other\IconInfoDialog.xaml.cs"> <Compile Include="Control\Other\IconInfoDialog.xaml.cs">
<DependentUpon>IconInfoDialog.xaml</DependentUpon> <DependentUpon>IconInfoDialog.xaml</DependentUpon>
</Compile> </Compile>
<Compile Include="Control\Other\MenuGeometryDialog.xaml.cs">
<DependentUpon>MenuGeometryDialog.xaml</DependentUpon>
</Compile>
<Compile Include="Control\UserControls\Config\AboutControl.xaml.cs"> <Compile Include="Control\UserControls\Config\AboutControl.xaml.cs">
<DependentUpon>AboutControl.xaml</DependentUpon> <DependentUpon>AboutControl.xaml</DependentUpon>
</Compile> </Compile>
@@ -157,12 +161,13 @@
<Compile Include="Task\ToDoTask.cs" /> <Compile Include="Task\ToDoTask.cs" />
<Compile Include="Thread\UpdateThread.cs" /> <Compile Include="Thread\UpdateThread.cs" />
<Compile Include="Util\AeroGlassHelper.cs" /> <Compile Include="Util\AeroGlassHelper.cs" />
<Compile Include="Util\GlobalHotKey.cs" />
<Compile Include="Util\CommonCode.cs" /> <Compile Include="Util\CommonCode.cs" />
<Compile Include="Util\ConsoleManager.cs" /> <Compile Include="Util\ConsoleManager.cs" />
<Compile Include="Util\DragAdorner.cs" /> <Compile Include="Util\DragAdorner.cs" />
<Compile Include="Util\FileIcon.cs" /> <Compile Include="Util\FileIcon.cs" />
<Compile Include="Util\FileUtil.cs" /> <Compile Include="Util\FileUtil.cs" />
<Compile Include="Util\HotKey.cs" /> <Compile Include="Util\MarginHide.cs" />
<Compile Include="Util\HttpUtil.cs" /> <Compile Include="Util\HttpUtil.cs" />
<Compile Include="Util\ImageUtil.cs" /> <Compile Include="Util\ImageUtil.cs" />
<Compile Include="Util\ListViewDragDropManager.cs" /> <Compile Include="Util\ListViewDragDropManager.cs" />
@@ -171,6 +176,7 @@
<Compile Include="Util\MouseUtilities.cs" /> <Compile Include="Util\MouseUtilities.cs" />
<Compile Include="Util\RegisterUtil.cs" /> <Compile Include="Util\RegisterUtil.cs" />
<Compile Include="Util\ShellContextMenu.cs" /> <Compile Include="Util\ShellContextMenu.cs" />
<Compile Include="Util\ShowWindowFollowMouse.cs" />
<Compile Include="Util\StringUtil.cs" /> <Compile Include="Util\StringUtil.cs" />
<Compile Include="Util\SvgToGeometry.cs" /> <Compile Include="Util\SvgToGeometry.cs" />
<Compile Include="ViewModel\AppConfig.cs" /> <Compile Include="ViewModel\AppConfig.cs" />
@@ -187,6 +193,10 @@
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType> <SubType>Designer</SubType>
</Page> </Page>
<Page Include="Control\Other\IconInfoUrlDialog.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Page Include="Control\UserControls\Config\OtherControl.xaml"> <Page Include="Control\UserControls\Config\OtherControl.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
@@ -215,10 +225,6 @@
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>
</Page> </Page>
<Page Include="Control\Other\MenuGeometryDialog.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Control\UserControls\Config\AboutControl.xaml"> <Page Include="Control\UserControls\Config\AboutControl.xaml">
<SubType>Designer</SubType> <SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator> <Generator>MSBuild:Compile</Generator>

View File

@@ -14,10 +14,12 @@
d:DesignHeight="500" d:DesignWidth="700" d:DesignHeight="500" d:DesignWidth="700"
WindowStyle="None" WindowStyle="None"
AllowsTransparency="True" AllowsTransparency="True"
Background="Transparent" Background="#00FFFFFF"
OpacityMask ="White" OpacityMask ="White"
Deactivated="window_Deactivated" ShowInTaskbar="False"
SizeChanged="window_SizeChanged" Opacity="0"
Deactivated="Window_Deactivated"
SizeChanged="Window_SizeChanged"
> >
<WindowChrome.WindowChrome> <WindowChrome.WindowChrome>
<WindowChrome CaptionHeight="0" ResizeBorderThickness="10"/> <WindowChrome CaptionHeight="0" ResizeBorderThickness="10"/>
@@ -114,7 +116,9 @@
<ContextMenu Width="130"> <ContextMenu Width="130">
<MenuItem Header="打开面板" Click="ShowApp"/> <MenuItem Header="打开面板" Click="ShowApp"/>
<MenuItem Header="待办" Click="BacklogMenuClick"/> <MenuItem Header="待办" Click="BacklogMenuClick"/>
<MenuItem Header="程序目录" Click="OpenThisDir"/>
<MenuItem Header="设置" Click="ConfigApp"/> <MenuItem Header="设置" Click="ConfigApp"/>
<MenuItem Header="重启" Click="ReStartApp"/>
<MenuItem Header="退出" Click="ExitApp"/> <MenuItem Header="退出" Click="ExitApp"/>
</ContextMenu> </ContextMenu>
</hc:NotifyIcon.ContextMenu> </hc:NotifyIcon.ContextMenu>

View File

@@ -18,6 +18,8 @@ using System.Windows.Controls;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Interop; using System.Windows.Interop;
using System.Windows.Media; using System.Windows.Media;
using System.Windows.Media.Animation;
using static GeekDesk.Util.ShowWindowFollowMouse;
namespace GeekDesk namespace GeekDesk
{ {
@@ -34,6 +36,7 @@ namespace GeekDesk
public static int hotKeyId = -1; public static int hotKeyId = -1;
public static int toDoHotKeyId = -1; public static int toDoHotKeyId = -1;
public static MainWindow mainWindow; public static MainWindow mainWindow;
public static MarginHide hide;
public MainWindow() public MainWindow()
{ {
LoadData(); LoadData();
@@ -43,6 +46,13 @@ namespace GeekDesk
this.Loaded += Window_Loaded; this.Loaded += Window_Loaded;
this.SizeChanged += MainWindow_Resize; this.SizeChanged += MainWindow_Resize;
ToDoTask.BackLogCheck(); ToDoTask.BackLogCheck();
////实例化隐藏 Hide类进行时间timer设置
hide = new MarginHide(this);
if (appData.AppConfig.MarginHide)
{
hide.TimerSet();
}
} }
private void LoadData() private void LoadData()
@@ -62,13 +72,19 @@ namespace GeekDesk
{ {
if (!appData.AppConfig.StartedShowPanel) if (!appData.AppConfig.StartedShowPanel)
{ {
this.Visibility = Visibility.Collapsed; if (appData.AppConfig.AppAnimation)
{
this.Opacity = 0;
} else
{
this.Visibility = Visibility.Collapsed;
}
} else } else
{ {
ShowApp(); ShowApp();
} }
RegisterHotKey(true); RegisterHotKey(true);
//RegisterCreateToDoHotKey(true); RegisterCreateToDoHotKey(true);
if (!appData.AppConfig.SelfStartUped) if (!appData.AppConfig.SelfStartUped)
{ {
@@ -87,18 +103,18 @@ namespace GeekDesk
{ {
if (appData.AppConfig.HotkeyModifiers != 0) if (appData.AppConfig.HotkeyModifiers != 0)
{ {
//加载完毕注册热键
hotKeyId = Hotkey.Regist(new WindowInteropHelper(MainWindow.mainWindow).Handle, appData.AppConfig.HotkeyModifiers, appData.AppConfig.Hotkey, () => hotKeyId = GlobalHotKey.RegisterHotKey(appData.AppConfig.HotkeyModifiers, appData.AppConfig.Hotkey, () =>
{ {
if (MotionControl.hotkeyFinished) if (MotionControl.hotkeyFinished)
{ {
if (mainWindow.Visibility == Visibility.Collapsed) if (mainWindow.Visibility == Visibility.Collapsed || mainWindow.Opacity == 0)
{ {
ShowApp(); ShowApp();
} }
else else
{ {
mainWindow.Visibility = Visibility.Collapsed; HideApp();
} }
} }
}); });
@@ -122,6 +138,39 @@ namespace GeekDesk
} }
} }
public static void FadeStoryBoard(int opacity, int milliseconds, Visibility visibility)
{
if (appData.AppConfig.AppAnimation)
{
DoubleAnimation opacityAnimation = new DoubleAnimation
{
From = mainWindow.Opacity,
To = opacity,
Duration = new Duration(TimeSpan.FromMilliseconds(milliseconds))
};
opacityAnimation.Completed += (s, e) =>
{
mainWindow.BeginAnimation(OpacityProperty, null);
if (visibility == Visibility.Visible)
{
mainWindow.Opacity = 1;
} else
{
mainWindow.Opacity = 0;
}
};
Timeline.SetDesiredFrameRate(opacityAnimation, 30);
mainWindow.BeginAnimation(OpacityProperty, opacityAnimation);
} else
{
//防止关闭动画后 窗体仍是0透明度
mainWindow.Opacity = 1;
mainWindow.Visibility = visibility;
}
}
/// <summary> /// <summary>
/// 注册新建待办的热键 /// 注册新建待办的热键
/// </summary> /// </summary>
@@ -129,14 +178,15 @@ namespace GeekDesk
{ {
try try
{ {
if (appData.AppConfig.ToDoHotkeyModifiers!=0) if (appData.AppConfig.ToDoHotkeyModifiers!=0)
{ {
//加载完毕注册热键 //加载完毕注册热键
toDoHotKeyId = Hotkey.Regist(new WindowInteropHelper(MainWindow.mainWindow).Handle, appData.AppConfig.ToDoHotkeyModifiers, appData.AppConfig.ToDoHotkey, () => toDoHotKeyId = GlobalHotKey.RegisterHotKey(appData.AppConfig.ToDoHotkeyModifiers, appData.AppConfig.ToDoHotkey, () =>
{ {
if (MotionControl.hotkeyFinished) if (MotionControl.hotkeyFinished)
{ {
ToDoInfoWindow.ShowNone(); ToDoInfoWindow.ShowOrHide();
} }
}); });
} }
@@ -158,22 +208,6 @@ namespace GeekDesk
} }
} }
//private void DisplayWindowHotKeyPress(object sender, KeyPressedEventArgs e)
//{
// if (e.HotKey.Key == Key.Y)
// {
// if (this.Visibility == Visibility.Collapsed)
// {
// ShowApp();
// }
// else
// {
// this.Visibility = Visibility.Collapsed;
// }
// }
//}
void MainWindow_Resize(object sender, System.EventArgs e) void MainWindow_Resize(object sender, System.EventArgs e)
{ {
@@ -230,7 +264,13 @@ namespace GeekDesk
/// <param name="e"></param> /// <param name="e"></param>
private void CloseButtonClick(object sender, RoutedEventArgs e) private void CloseButtonClick(object sender, RoutedEventArgs e)
{ {
this.Visibility = Visibility.Collapsed; if (appData.AppConfig.AppAnimation)
{
FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
} else
{
this.Visibility = Visibility.Collapsed;
}
} }
@@ -260,64 +300,20 @@ namespace GeekDesk
{ {
if (appData.AppConfig.FollowMouse) if (appData.AppConfig.FollowMouse)
{ {
ShowAppAndFollowMouse(); ShowWindowFollowMouse.Show(mainWindow, MousePosition.CENTER, 0, 0, false);
} else
{
mainWindow.Visibility = Visibility.Visible;
} }
FadeStoryBoard(1, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Visible);
Keyboard.Focus(mainWindow); Keyboard.Focus(mainWindow);
} }
/// <summary> public static void HideApp()
/// 随鼠标位置显示面板 (鼠标始终在中间)
/// </summary>
private static void ShowAppAndFollowMouse()
{ {
//获取鼠标位置 FadeStoryBoard(0, (int)CommonEnum.WINDOW_ANIMATION_TIME, Visibility.Collapsed);
System.Windows.Point p = MouseUtil.GetMousePosition();
double left = SystemParameters.VirtualScreenLeft;
double top = SystemParameters.VirtualScreenTop;
double width = SystemParameters.VirtualScreenWidth;
double height = SystemParameters.VirtualScreenHeight;
double right = width - Math.Abs(left);
double bottom = height - Math.Abs(top);
if (p.X - mainWindow.Width / 2 < left)
{
//判断是否在最左边缘
mainWindow.Left = left;
}
else if (p.X + mainWindow.Width / 2 > right)
{
//判断是否在最右边缘
mainWindow.Left = right - mainWindow.Width;
}
else
{
mainWindow.Left = p.X - mainWindow.Width / 2;
}
if (p.Y - mainWindow.Height / 2 < top)
{
//判断是否在最上边缘
mainWindow.Top = top;
}
else if (p.Y + mainWindow.Height / 2 > bottom)
{
//判断是否在最下边缘
mainWindow.Top = bottom - mainWindow.Height;
}
else
{
mainWindow.Top = p.Y - mainWindow.Height / 2;
}
mainWindow.Visibility = Visibility.Visible;
} }
/// <summary> /// <summary>
/// 图片图标单击事件 /// 图片图标单击事件
/// </summary> /// </summary>
@@ -325,13 +321,13 @@ namespace GeekDesk
/// <param name="e"></param> /// <param name="e"></param>
private void NotifyIcon_Click(object sender, RoutedEventArgs e) private void NotifyIcon_Click(object sender, RoutedEventArgs e)
{ {
if (this.Visibility == Visibility.Collapsed) if (this.Visibility == Visibility.Collapsed || this.Opacity == 0)
{ {
ShowApp(); ShowApp();
} }
else else
{ {
this.Visibility = Visibility.Collapsed; HideApp();
} }
} }
@@ -345,6 +341,20 @@ namespace GeekDesk
ConfigWindow.Show(appData.AppConfig, this); ConfigWindow.Show(appData.AppConfig, this);
} }
/// <summary>
/// 右键任务栏图标打开程序目录
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void OpenThisDir(object sender, RoutedEventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = "Explorer.exe";
p.StartInfo.Arguments = "/e,/select," + Constants.APP_DIR + Constants.MY_NAME + ".exe";
p.Start();
}
/// <summary> /// <summary>
/// 右键任务栏图标退出 /// 右键任务栏图标退出
/// </summary> /// </summary>
@@ -357,17 +367,6 @@ namespace GeekDesk
//public static void ShowContextMenu(IntPtr hAppWnd, Window taskBar, System.Windows.Point pt)
//{
// WindowInteropHelper helper = new WindowInteropHelper(taskBar);
// IntPtr callingTaskBarWindow = helper.Handle;
// IntPtr wMenu = GetSystemMenu(hAppWnd, false);
// // Display the menu
// uint command = TrackPopupMenuEx(wMenu, TPM.LEFTBUTTON | TPM.RETURNCMD, (int) pt.X, (int) pt.Y, callingTaskBarWindow, IntPtr.Zero);
// if (command == 0) return;
// PostMessage(hAppWnd, WM.SYSCOMMAND, new IntPtr(command), IntPtr.Zero);
//}
/// <summary> /// <summary>
/// 设置图标 /// 设置图标
/// </summary> /// </summary>
@@ -410,11 +409,15 @@ namespace GeekDesk
{ {
if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS) if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS)
{ {
this.Visibility = Visibility.Collapsed; //如果开启了贴边隐藏 则窗体不贴边才隐藏窗口
if (appData.AppConfig.MarginHide && !hide.IsMargin())
{
this.Visibility = Visibility.Collapsed;
}
} }
} }
private void window_Deactivated(object sender, EventArgs e) private void Window_Deactivated(object sender, EventArgs e)
{ {
if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS) if (appData.AppConfig.AppHideType == AppHideType.LOST_FOCUS)
{ {
@@ -422,7 +425,7 @@ namespace GeekDesk
} }
} }
private void window_SizeChanged(object sender, SizeChangedEventArgs e) private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{ {
if (this.DataContext != null) if (this.DataContext != null)
{ {
@@ -431,6 +434,20 @@ namespace GeekDesk
appData.AppConfig.WindowHeight = this.Height; appData.AppConfig.WindowHeight = this.Height;
} }
} }
/// <summary>
/// 重启
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ReStartApp(object sender, RoutedEventArgs e)
{
Process p = new Process();
p.StartInfo.FileName = Constants.APP_DIR + Constants.MY_NAME + ".exe";
p.StartInfo.WorkingDirectory = Constants.APP_DIR;
p.Start();
Application.Current.Shutdown();
}
} }

View File

@@ -49,5 +49,5 @@ using System.Windows;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值 //可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示: //通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")] // [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.0")] [assembly: AssemblyVersion("2.2")]
[assembly: AssemblyFileVersion("2.0")] [assembly: AssemblyFileVersion("2.2")]

View File

@@ -21,13 +21,12 @@
- 背景图片毛玻璃效果 - 背景图片毛玻璃效果
- 界面透明度 - 界面透明度
- 界面圆角 - 界面圆角
-
<img src="https://z3.ax1x.com/2021/07/19/WGOYSU.gif" alt="WGOYSU.gif" border="0" width="800px"/> <img src="https://z3.ax1x.com/2021/07/19/WGOYSU.gif" alt="WGOYSU.gif" border="0" width="800px"/>
## 自定义菜单图标 ## 自定义菜单图标
- 80多个系统图标可供选择 - 80多个系统图标可供选择
- 另支持在线导入阿里巴巴icon图标 - 另支持在线导入阿里巴巴icon图标
- - 篇幅原因,公众号内回复 **自定义图标** 可以查看教程
<img src="https://z3.ax1x.com/2021/07/19/WJ3fDU.png" alt="WJ3fDU.png" border="0" width="450px"/> <img src="https://z3.ax1x.com/2021/07/19/WJ3fDU.png" alt="WJ3fDU.png" border="0" width="450px"/>
## 定时提醒 永不忘记 ## 定时提醒 永不忘记
@@ -41,7 +40,6 @@
主业Java程序员一枚(目前北京在职), 有好的工作请联系我 :smirk: 主业Java程序员一枚(目前北京在职), 有好的工作请联系我 :smirk:
### 佛系公众号 ### 佛系公众号
不定期更新技术相关, 或者一些牢骚 不定期更新技术相关, 或者一些牢骚
<img src="https://z3.ax1x.com/2021/07/19/WJaI9e.jpg" alt="WJaI9e.jpg" border="0" /> <img src="https://z3.ax1x.com/2021/07/19/WJaI9e.jpg" alt="WJaI9e.jpg" border="0" />
### 佛系赞赏 ### 佛系赞赏

View File

@@ -30,6 +30,10 @@ namespace GeekDesk.Thread
{ {
try try
{ {
//等待1分钟后再检查更新 有的网络连接过慢
System.Threading.Thread.Sleep(60 * 1000);
string updateUrl; string updateUrl;
string nowVersion = ConfigurationManager.AppSettings["Version"]; string nowVersion = ConfigurationManager.AppSettings["Version"];
switch (appConfig.UpdateType) switch (appConfig.UpdateType)

View File

@@ -1,9 +1,9 @@
{ {
"title" : "<22><EFBFBD><E6B1BE><EFBFBD><EFBFBD>", "title" : "<22><EFBFBD><E6B1BE><EFBFBD><EFBFBD>",
"subTitle" : "V2.0 <20><>ʽ<EFBFBD><CABD>", "subTitle" : "V2.2 <20><>ʽ<EFBFBD><CABD>",
"msgTitle" : "<22><><EFBFBD>θ<EFBFBD><CEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "msgTitle" : "<22><><EFBFBD>θ<EFBFBD><CEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>",
"msg" : "['<27><><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>²<EFBFBD><EFBFBD>ٵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD>','<27>޸<EFBFBD><EFBFBD><EFBFBD>ʷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>񱣴<EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bug','<27>޸<EFBFBD>ijЩͼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>С<EFBFBD><EFBFBD>bug','<27><><EFBFBD>Ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>óɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD>','<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ','<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD>˵<EFBFBD>']", "msg" : "['<27><>Ե<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>','<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݼ<EFBFBD><><C4AC>Ctrl+Shift+Q)','<27>Ҽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD><EFBFBD>򿪳<EFBFBD><EFBFBD><EFBFBD>Ŀ¼<EFBFBD>˵<EFBFBD>']",
"githubUrl" : "https://github.com/Demo-Liu/GeekDesk/releases/tag/2.0", "githubUrl" : "https://github.com/Demo-Liu/GeekDesk/releases/tag",
"giteeUrl" : "https://gitee.com/demo_liu/GeekDesk/releases/2.0", "giteeUrl" : "https://gitee.com/demo_liu/GeekDesk/releases",
"version": "2.0" "version": "2.2"
} }

View File

@@ -1,7 +1,9 @@
using GeekDesk.Constant; using GeekDesk.Constant;
using GeekDesk.ViewModel; using GeekDesk.ViewModel;
using System;
using System.IO; using System.IO;
using System.Runtime.Serialization.Formatters.Binary; using System.Runtime.Serialization.Formatters.Binary;
using System.Windows;
/// <summary> /// <summary>
/// 提取一些代码 /// 提取一些代码
@@ -53,6 +55,5 @@ namespace GeekDesk.Util
} }
} }

95
Util/GlobalHotKey.cs Normal file
View File

@@ -0,0 +1,95 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Input;
using System.Windows.Interop;
namespace GeekDesk.Util
{
public class GlobalHotKey
{
public enum HotkeyModifiers
{
MOD_ALT = 0x1,
MOD_CONTROL = 0x2,
MOD_SHIFT = 0x4,
MOD_WIN = 0x8
}
private static int currentID;
const int WM_HOTKEY = 0x312;
private static Dictionary<int, Window> handleTemp = new Dictionary<int, Window>();
public static Dictionary<int, HotKeyCallBackHanlder> callbackTemp = new Dictionary<int, HotKeyCallBackHanlder>();
public delegate void HotKeyCallBackHanlder();
/// <summary>
/// Registers a global hotkey
/// </summary>
/// <param name="aKeyGestureString">e.g. Alt + Shift + Control + Win + S</param>
/// <param name="callback">Action to be called when hotkey is pressed</param>
/// <returns>true, if registration succeeded, otherwise false</returns>
public static int RegisterHotKey(string aKeyGestureString, HotKeyCallBackHanlder callback)
{
var c = new KeyGestureConverter();
KeyGesture aKeyGesture = (KeyGesture)c.ConvertFrom(aKeyGestureString);
return RegisterHotKey((HotkeyModifiers)aKeyGesture.Modifiers, aKeyGesture.Key, callback);
}
public static int RegisterHotKey(HotkeyModifiers aModifier, Key key, HotKeyCallBackHanlder callback)
{
Window window = new Window
{
WindowStyle = WindowStyle.None,
Height = 0,
Width = 0,
Visibility = Visibility.Collapsed,
ShowInTaskbar = false
};
window.Show();
IntPtr handle = new WindowInteropHelper(window).Handle;
HwndSource hs = HwndSource.FromHwnd(handle);
hs.AddHook(WndProc);
currentID += 1;
if (!RegisterHotKey(handle, currentID, aModifier, (uint)KeyInterop.VirtualKeyFromKey(key)))
{
window.Close();
throw new Exception("RegisterHotKey Failed");
}
handleTemp.Add(currentID, window);
callbackTemp.Add(currentID, callback);
return currentID;
}
/// <summary>
/// 快捷键消息处理
/// </summary>
static IntPtr WndProc(IntPtr windowHandle, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == WM_HOTKEY)
{
int id = wParam.ToInt32();
if (callbackTemp.TryGetValue(id, out var callback))
{
callback();
}
}
return IntPtr.Zero;
}
public static void Dispose(int id)
{
bool test = UnregisterHotKey(new WindowInteropHelper(handleTemp[id]).Handle, id);
GlobalHotKey.handleTemp[id].Close();
GlobalHotKey.handleTemp.Remove(id);
GlobalHotKey.callbackTemp.Remove(id);
Console.WriteLine(test);
}
// Registers a hot key with Windows.
[DllImport("user32.dll")]
private static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers fsModifiers, uint vk);
// Unregisters the hot key with Windows.
[DllImport("user32.dll")]
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
}
}

View File

@@ -1,96 +0,0 @@
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Input;
using System.Windows.Interop;
/// <summary>
/// 热键注册
/// </summary>
namespace GeekDesk.Util
{
class Hotkey
{
#region api
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool RegisterHotKey(IntPtr hWnd, int id, HotkeyModifiers fsModifiers, uint vk);
[DllImport("user32.dll")]
static extern bool UnregisterHotKey(IntPtr hWnd, int id);
#endregion
/// <summary>
/// 注册快捷键
/// </summary>
/// <param name="window">持有快捷键窗口</param>
/// <param name="fsModifiers">组合键</param>
/// <param name="key">快捷键</param>
/// <param name="callBack">回调函数</param>
public static int Regist(IntPtr windowHandle, HotkeyModifiers fsModifiers, Key key, HotKeyCallBackHanlder callBack)
{
HwndSource hs = HwndSource.FromHwnd(windowHandle);
hs.AddHook(WndProc);
int id = keyid++;
int vk = KeyInterop.VirtualKeyFromKey(key);
keymap.Add(id, callBack);
if (!RegisterHotKey(windowHandle, id, fsModifiers, (uint)vk)) throw new Exception("RegisterHotKey Failed");
return id;
}
/// <summary>
/// 快捷键消息处理
/// </summary>
static IntPtr WndProc(IntPtr windowHandle, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
{
if (msg == WM_HOTKEY)
{
int id = wParam.ToInt32();
if (keymap.TryGetValue(id, out var callback))
{
callback();
}
}
return IntPtr.Zero;
}
/// <summary>
/// 注销快捷键
/// </summary>
/// <param name="hWnd">持有快捷键窗口的句柄</param>
/// <param name="callBack">回调函数</param>
public static void UnRegist(IntPtr windowHandle, HotKeyCallBackHanlder callBack)
{
List<int> list = new List<int>(keymap.Keys);
for (int i=0; i < list.Count; i++)
{
if (keymap[list[i]] == callBack)
{
HwndSource hs = HwndSource.FromHwnd(windowHandle);
hs.RemoveHook(WndProc);
UnregisterHotKey(windowHandle, list[i]);
keymap.Remove(list[i]);
}
}
}
const int WM_HOTKEY = 0x312;
static int keyid = 10;
public static Dictionary<int, HotKeyCallBackHanlder> keymap = new Dictionary<int, HotKeyCallBackHanlder>();
public delegate void HotKeyCallBackHanlder();
}
public enum HotkeyModifiers
{
MOD_ALT = 0x1,
MOD_CONTROL = 0x2,
MOD_SHIFT = 0x4,
MOD_WIN = 0x8
}
}

View File

@@ -17,8 +17,10 @@ namespace GeekDesk.Util
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
//创建Web访问对 象 //创建Web访问对 象
HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url); HttpWebRequest myRequest = (HttpWebRequest)WebRequest.Create(url);
myRequest.ContentType = "text/plain; charset=gbk";
//通过Web访问对象获取响应内容 //通过Web访问对象获取响应内容
HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse(); HttpWebResponse myResponse = (HttpWebResponse)myRequest.GetResponse();
//通过响应内容流创建StreamReader对象因为StreamReader更高级更快 //通过响应内容流创建StreamReader对象因为StreamReader更高级更快
StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.GetEncoding("gbk")); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.GetEncoding("gbk"));
string returnStr = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾 string returnStr = reader.ReadToEnd();//利用StreamReader就可以从响应内容从头读到尾

199
Util/MarginHide.cs Normal file
View File

@@ -0,0 +1,199 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing; //添加引用
using System.Windows.Forms;//添加引用
using MouseEventArgs = System.Windows.Input.MouseEventArgs;
using System.Windows;
using System.Windows.Media.Animation;
using System.Windows.Media;
namespace GeekDesk.Util
{
enum HidePosition
{
TOP = 1,
LEFT = 2,
RIGHT = 3
}
public class MarginHide
{
readonly Window window;//定义使用该方法的窗体
private readonly int hideTime = 150;
private readonly int taskTime = 200;
private bool isHide;
public Timer timer;
//构造函数,传入将要匹配的窗体
public MarginHide(Window window)
{
this.window = window;
}
/// <summary>
/// 窗体是否贴边
/// </summary>
/// <returns></returns>
public bool IsMargin()
{
double screenLeft = SystemParameters.VirtualScreenLeft;
double screenTop = SystemParameters.VirtualScreenTop;
double screenWidth = SystemParameters.VirtualScreenWidth;
double windowWidth = window.Width;
double windowTop = window.Top;
double windowLeft = window.Left;
//窗体是否贴边
return (windowLeft <= screenLeft
|| windowTop <= screenTop
|| windowLeft + windowWidth + Math.Abs(screenLeft) >= screenWidth);
}
#region
private void TimerDealy(object o, EventArgs e)
{
if (window.Visibility != Visibility.Visible) return;
double screenLeft = SystemParameters.VirtualScreenLeft;
double screenTop = SystemParameters.VirtualScreenTop;
double screenWidth = SystemParameters.VirtualScreenWidth;
double windowHeight = window.Height;
double windowWidth = window.Width;
double windowTop = window.Top;
double windowLeft = window.Left;
//获取鼠标位置
System.Windows.Point p = MouseUtil.GetMousePosition();
double mouseX = p.X;
double mouseY = p.Y;
//鼠标不在窗口上
if (mouseX < windowLeft || mouseX > windowLeft + windowWidth
|| mouseY < windowTop || mouseY > windowTop + windowHeight)
{
//上方隐藏条件
if (windowTop <= screenTop)
{
HideAnimation(windowTop, screenTop - windowHeight + 1, Window.TopProperty);
isHide = true;
return;
}
//左侧隐藏条件
if (windowLeft <= screenLeft)
{
HideAnimation(windowLeft, screenLeft - windowWidth + 1, Window.LeftProperty);
return;
}
//右侧隐藏条件
if (windowLeft + windowWidth + Math.Abs(screenLeft) >= screenWidth)
{
HideAnimation(windowLeft, screenWidth - Math.Abs(screenLeft) - 1, Window.LeftProperty);
return;
}
} else if (mouseX >= windowLeft && mouseX <= windowLeft + windowWidth
&& mouseY >= windowTop && mouseY <= windowTop + windowHeight)
{
//上方显示
if (windowTop <= screenTop - 1)
{
HideAnimation(windowTop, screenTop, Window.TopProperty);
return;
}
//左侧显示
if (windowLeft <= screenLeft -1)
{
HideAnimation(windowLeft, screenLeft, Window.LeftProperty);
return;
}
//右侧显示
if (windowLeft + Math.Abs(screenLeft) == screenWidth -1)
{
HideAnimation(windowLeft, screenWidth - Math.Abs(screenLeft) - windowWidth, Window.LeftProperty);
return;
}
}
}
#endregion
public void TimerSet()
{
timer = new Timer();//添加timer计时器隐藏功能
#region
timer.Interval = taskTime;
timer.Tick += TimerDealy;
timer.Start();
#endregion
}
public void TimerStop()
{
timer.Stop();
//功能关闭 如果界面是隐藏状态 那么要显示界面 ↓
double screenLeft = SystemParameters.VirtualScreenLeft;
double screenTop = SystemParameters.VirtualScreenTop;
double screenWidth = SystemParameters.VirtualScreenWidth;
double windowWidth = window.Width;
double windowTop = window.Top;
double windowLeft = window.Left;
//左侧显示
if (windowLeft <= screenLeft - 1)
{
HideAnimation(windowLeft, screenLeft, Window.LeftProperty);
return;
}
//上方显示
if (windowTop <= screenTop - 1)
{
HideAnimation(windowTop, screenTop, Window.TopProperty);
return;
}
//右侧显示
if (windowLeft + Math.Abs(screenLeft) == screenWidth - 1)
{
HideAnimation(windowLeft, screenWidth - Math.Abs(screenLeft) - windowWidth, Window.LeftProperty);
return;
}
}
private void HideAnimation(double from, double to, DependencyProperty property)
{
DoubleAnimation da = new DoubleAnimation
{
From = from,
To = to,
Duration = new Duration(TimeSpan.FromMilliseconds(hideTime))
};
da.Completed += (s, e) =>
{
window.BeginAnimation(property, null);
};
Timeline.SetDesiredFrameRate(da, 30);
window.BeginAnimation(property, da);
}
}
}

View File

@@ -0,0 +1,111 @@
using System;
using System.Windows;
namespace GeekDesk.Util
{
public class ShowWindowFollowMouse
{
public enum MousePosition
{
CENTER = 1,
LEFT_TOP = 2,
LEFT_BOTTOM = 3,
RIGHT_TOP = 4,
RIGHT_BOTTOM = 5,
LEFT_CENTER = 6,
RIGHT_CENTER = 7
}
/// <summary>
/// 随鼠标位置显示面板
/// </summary>
public static void Show(Window window, MousePosition position, double widthOffset = 0, double heightOffset = 0, bool visibility = true)
{
//获取鼠标位置
System.Windows.Point p = MouseUtil.GetMousePosition();
double left = SystemParameters.VirtualScreenLeft;
double top = SystemParameters.VirtualScreenTop;
double width = SystemParameters.VirtualScreenWidth;
double height = SystemParameters.VirtualScreenHeight;
double right = width - Math.Abs(left);
double bottom = height - Math.Abs(top);
double afterWidth;
double afterHeight;
switch (position)
{
case MousePosition.LEFT_BOTTOM:
afterWidth = 0;
afterHeight = window.Height;
break;
case MousePosition.LEFT_TOP:
afterWidth = 0;
afterHeight = 0;
break;
case MousePosition.LEFT_CENTER:
afterWidth = 0;
afterHeight = window.Height / 2;
break;
case MousePosition.RIGHT_BOTTOM:
afterWidth = window.Width;
afterHeight = window.Height;
break;
case MousePosition.RIGHT_TOP:
afterWidth = window.Width;
afterHeight = 0;
break;
case MousePosition.RIGHT_CENTER:
afterWidth = window.Width;
afterHeight = window.Height / 2;
break;
default:
afterWidth = window.Width / 2;
afterHeight = window.Height / 2;
break;
}
afterWidth += widthOffset;
afterHeight -= heightOffset;
if (p.X - afterWidth < left)
{
//判断是否在最左边缘
window.Left = left;
}
else if (p.X + afterWidth > right)
{
//判断是否在最右边缘
window.Left = right - window.Width;
}
else
{
window.Left = p.X - afterWidth;
}
if (p.Y - afterHeight < top)
{
//判断是否在最上边缘
window.Top = top;
}
else if (p.Y + afterHeight > bottom)
{
//判断是否在最下边缘
window.Top = bottom - window.Height;
}
else
{
window.Top = p.Y - afterHeight;
}
if (visibility)
{
window.Opacity = 0;
window.Visibility = Visibility.Visible;
}
}
}
}

View File

@@ -7,6 +7,7 @@ using System.ComponentModel;
using System.Windows; using System.Windows;
using System.Windows.Input; using System.Windows.Input;
using System.Windows.Media.Imaging; using System.Windows.Media.Imaging;
using static GeekDesk.Util.GlobalHotKey;
/// <summary> /// <summary>
/// 程序设置 /// 程序设置
@@ -19,9 +20,9 @@ namespace GeekDesk.ViewModel
{ {
private SortType menuSortType = SortType.CUSTOM; //菜单排序类型 private SortType menuSortType = SortType.CUSTOM; //菜单排序类型
private SortType iconSortType = SortType.CUSTOM; //图表排序类型 private SortType iconSortType = SortType.CUSTOM; //图表排序类型
private double windowWidth = (double)MainWindowEnum.WINDOW_WIDTH; //窗口宽度 private double windowWidth = (double)CommonEnum.WINDOW_WIDTH; //窗口宽度
private double windowHeight = (double)MainWindowEnum.WINDOW_HEIGHT; //窗口高度 private double windowHeight = (double)CommonEnum.WINDOW_HEIGHT; //窗口高度
private double menuCardWidth = (double)MainWindowEnum.MENU_CARD_WIDHT;//菜单栏宽度 private double menuCardWidth = (double)CommonEnum.MENU_CARD_WIDHT;//菜单栏宽度
private int selectedMenuIndex = 0; //上次选中菜单索引 private int selectedMenuIndex = 0; //上次选中菜单索引
private bool followMouse = true; //面板跟随鼠标 默认是 private bool followMouse = true; //面板跟随鼠标 默认是
private Visibility configIconVisible = Visibility.Visible; // 设置按钮是否显示 private Visibility configIconVisible = Visibility.Visible; // 设置按钮是否显示
@@ -42,9 +43,9 @@ namespace GeekDesk.ViewModel
private HotkeyModifiers hotkeyModifiers = HotkeyModifiers.MOD_CONTROL; //默认启动面板快捷键 private HotkeyModifiers hotkeyModifiers = HotkeyModifiers.MOD_CONTROL; //默认启动面板快捷键
private Key hotkey = Key.Q; //默认启动面板快捷键 private Key hotkey = Key.Q; //默认启动面板快捷键
private string toDoHotkeyStr; //待办任务快捷键 private string toDoHotkeyStr = "Ctrl + Shift + Q"; //待办任务快捷键
private HotkeyModifiers toDoHotkeyModifiers; //待办任务快捷键 private HotkeyModifiers toDoHotkeyModifiers; //待办任务快捷键
private Key toDoHotkey; //待办任务快捷键 private Key toDoHotkey = Key.E; //待办任务快捷键
private string customIconUrl; //自定义图标url private string customIconUrl; //自定义图标url
private string customIconJsonUrl; //自定义图标json信息url private string customIconJsonUrl; //自定义图标json信息url
@@ -56,11 +57,86 @@ namespace GeekDesk.ViewModel
private bool selfStartUp = true; //开机自启动设置 private bool selfStartUp = true; //开机自启动设置
private bool selfStartUped = false; //是否已设置 private bool selfStartUped = false; //是否已设置
private bool pmModel = false; //性能模式 private bool pmModel = false; //性能模式
private string textColor = "#000000"; //字体颜色
private double imgPanelWidth = (double)CommonEnum.IMAGE_PANEL_WIDTH;
private double imgPanelHeight = (double)CommonEnum.IMAGE_PANEL_HEIGHT;
private bool marginHide = false; //贴边隐藏
private bool appAnimation = false; //主窗口动画效果
#region GetSet #region GetSet
public bool AppAnimation
{
get
{
return appAnimation;
}
set
{
appAnimation = value;
OnPropertyChanged("AppAnimation");
}
}
public bool MarginHide
{
get
{
return marginHide;
}
set
{
marginHide = value;
OnPropertyChanged("MarginHide");
}
}
public double ImgPanelWidth
{
get
{
if (imgPanelWidth == 0d) return (double)CommonEnum.IMAGE_PANEL_WIDTH;
return imgPanelWidth;
}
set
{
imgPanelWidth = value;
OnPropertyChanged("ImgPanelWidth");
}
}
public double ImgPanelHeight
{
get
{
if (imgPanelHeight == 0d) return (double)CommonEnum.IMAGE_PANEL_HEIGHT;
return imgPanelHeight;
}
set
{
imgPanelHeight = value;
OnPropertyChanged("ImgPanelHeight");
}
}
public string TextColor
{
get
{
if (textColor == null) return "#000000";
return textColor;
}
set
{
textColor = value;
OnPropertyChanged("TextColor");
}
}
public bool PMModel public bool PMModel
{ {
get get
@@ -105,6 +181,11 @@ namespace GeekDesk.ViewModel
{ {
get get
{ {
//兼容老版本
if (toDoHotkey == Key.None)
{
toDoHotkey = Key.Q;
}
return toDoHotkey; return toDoHotkey;
} }
set set
@@ -119,6 +200,10 @@ namespace GeekDesk.ViewModel
{ {
get get
{ {
if (toDoHotkeyModifiers == 0)
{
toDoHotkeyModifiers = HotkeyModifiers.MOD_CONTROL | HotkeyModifiers.MOD_SHIFT;
}
return toDoHotkeyModifiers; return toDoHotkeyModifiers;
} }
set set
@@ -132,6 +217,11 @@ namespace GeekDesk.ViewModel
{ {
get get
{ {
//兼容老版本
if (toDoHotkeyStr == null)
{
toDoHotkeyStr = "Ctrl + Shift + Q";
}
return toDoHotkeyStr; return toDoHotkeyStr;
} }
set set
@@ -238,6 +328,10 @@ namespace GeekDesk.ViewModel
{ {
get get
{ {
if (hotkeyModifiers == 0)
{
hotkeyModifiers = HotkeyModifiers.MOD_CONTROL;
}
return hotkeyModifiers; return hotkeyModifiers;
} }
set set

View File

@@ -20,13 +20,28 @@ namespace GeekDesk.ViewModel
private BitmapImage bitmapImage; //位图 private BitmapImage bitmapImage; //位图
private byte[] imageByteArr; //图片 byte数组 private byte[] imageByteArr; //图片 byte数组
private string content; //显示信息 private string content; //显示信息
private int imageWidth = (int)MainWindowEnum.IMAGE_WIDTH; //图片宽度 private int imageWidth = (int)CommonEnum.IMAGE_WIDTH; //图片宽度
private int imageHeight = (int)MainWindowEnum.IMAGE_HEIGHT; //图片高度 private int imageHeight = (int)CommonEnum.IMAGE_HEIGHT; //图片高度
private bool adminStartUp = false; //始终管理员方式启动 默认否 private bool adminStartUp = false; //始终管理员方式启动 默认否
private byte[] defaultImage; //默认图标 private byte[] defaultImage; //默认图标
private IconType iconType = IconType.OTHER;
public IconType IconType
{
get
{
if (iconType == 0) return IconType.OTHER;
return iconType;
}
set
{
iconType = value;
OnPropertyChanged("IconType");
}
}
public byte[] DefaultImage public byte[] DefaultImage
{ {
get get
@@ -142,7 +157,7 @@ namespace GeekDesk.ViewModel
get get
{ {
// 为了兼容旧版 暂时使用默认 // 为了兼容旧版 暂时使用默认
return (int)MainWindowEnum.IMAGE_WIDTH; return (int)CommonEnum.IMAGE_WIDTH;
} }
set set
{ {
@@ -156,7 +171,7 @@ namespace GeekDesk.ViewModel
get get
{ {
// 为了兼容旧版 暂时使用默认 // 为了兼容旧版 暂时使用默认
return (int)MainWindowEnum.IMAGE_HEIGHT; return (int)CommonEnum.IMAGE_HEIGHT;
} }
set set
{ {