This commit is contained in:
bao-qian
2016-05-22 23:51:17 +01:00
parent b3119749d9
commit ba78637361
2 changed files with 80 additions and 69 deletions

View File

@@ -63,7 +63,7 @@
<DockPanel Grid.Column="0"> <DockPanel Grid.Column="0">
<TextBlock DockPanel.Dock="Top" Margin="10"> <TextBlock DockPanel.Dock="Top" Margin="10">
<Hyperlink NavigateUri="{Binding Plugin, Mode=OneWay}" RequestNavigate="OnRequestNavigate"> <Hyperlink NavigateUri="{Binding Plugin, Mode=OneWay}" RequestNavigate="OnRequestNavigate">
<Run Text="{DynamicResource browserMorePlugins}"/> <Run Text="{DynamicResource browserMorePlugins}" />
</Hyperlink> </Hyperlink>
</TextBlock> </TextBlock>
<ListBox SelectedIndex="0" SelectedItem="{Binding SelectedPlugin}" <ListBox SelectedIndex="0" SelectedItem="{Binding SelectedPlugin}"
@@ -164,13 +164,13 @@
<DockPanel Grid.Column="0"> <DockPanel Grid.Column="0">
<TextBlock DockPanel.Dock="Top" Margin="10" HorizontalAlignment="Left"> <TextBlock DockPanel.Dock="Top" Margin="10" HorizontalAlignment="Left">
<Hyperlink NavigateUri="{Binding Theme, Mode=OneWay}" RequestNavigate="OnRequestNavigate"> <Hyperlink NavigateUri="{Binding Theme, Mode=OneWay}" RequestNavigate="OnRequestNavigate">
<Run Text="{DynamicResource browserMoreThemes}"/> <Run Text="{DynamicResource browserMoreThemes}" />
</Hyperlink> </Hyperlink>
</TextBlock> </TextBlock>
<ListBox SelectedItem="{Binding SelectedTheme}" ItemsSource="{Binding Themes}" <ListBox SelectedItem="{Binding SelectedTheme}" ItemsSource="{Binding Themes}"
Margin="10, 0, 10, 10" Width="180" Margin="10, 0, 10, 10" Width="180"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" /> HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
</DockPanel> </DockPanel>
<Grid Margin="0" Grid.Column="1"> <Grid Margin="0" Grid.Column="1">
<Grid.RowDefinitions> <Grid.RowDefinitions>
@@ -201,7 +201,7 @@
<TextBlock Text="{DynamicResource queryBoxFont}" /> <TextBlock Text="{DynamicResource queryBoxFont}" />
<ComboBox ItemsSource="{x:Static Fonts.SystemFontFamilies}" <ComboBox ItemsSource="{x:Static Fonts.SystemFontFamilies}"
SelectedItem="{Binding SelectedQueryBoxFont}" SelectedItem="{Binding SelectedQueryBoxFont}"
HorizontalAlignment="Left" VerticalAlignment="Top" Width="160" Margin="10 -2 5 0"/> HorizontalAlignment="Left" VerticalAlignment="Top" Width="160" Margin="10 -2 5 0" />
<ComboBox ItemsSource="{Binding SelectedQueryBoxFont.FamilyTypefaces}" <ComboBox ItemsSource="{Binding SelectedQueryBoxFont.FamilyTypefaces}"
SelectedItem="{Binding SelectedQueryBoxFontFaces}" SelectedItem="{Binding SelectedQueryBoxFontFaces}"
HorizontalAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left" VerticalAlignment="Top"
@@ -250,16 +250,18 @@
<Grid Margin="10"> <Grid Margin="10">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="35" /> <RowDefinition Height="35" />
<RowDefinition Height="20"/> <RowDefinition Height="20" />
<RowDefinition Height="400"/> <RowDefinition Height="400" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<StackPanel Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center" Height="24" Margin="0,4,0,3"> <StackPanel Grid.Row="0" Orientation="Horizontal" VerticalAlignment="Center" Height="24"
Margin="0,4,0,3">
<TextBlock VerticalAlignment="Center" Margin="0 0 10 0" Text="{DynamicResource woxHotkey}" /> <TextBlock VerticalAlignment="Center" Margin="0 0 10 0" Text="{DynamicResource woxHotkey}" />
<wox:HotkeyControl x:Name="HotkeyControl" HotkeyChanged="OnHotkeyChanged" Loaded="OnHotkeyControlLoaded" /> <wox:HotkeyControl x:Name="HotkeyControl" HotkeyChanged="OnHotkeyChanged"
Loaded="OnHotkeyControlLoaded" />
</StackPanel> </StackPanel>
<TextBlock VerticalAlignment="Center" Grid.Row="1" Margin="0,3,10,2" <TextBlock VerticalAlignment="Center" Grid.Row="1" Margin="0,3,10,2"
Text="{DynamicResource customQueryHotkey}"/> Text="{DynamicResource customQueryHotkey}" />
<ListView ItemsSource="{Binding Settings.CustomPluginHotkeys}" <ListView ItemsSource="{Binding Settings.CustomPluginHotkeys}"
SelectedItem="{Binding SelectedCustomPluginHotkey}" SelectedItem="{Binding SelectedCustomPluginHotkey}"
Margin="0 5 0 0" Grid.Row="2"> Margin="0 5 0 0" Grid.Row="2">
@@ -268,7 +270,7 @@
<GridViewColumn Header="{DynamicResource hotkey}" Width="180"> <GridViewColumn Header="{DynamicResource hotkey}" Width="180">
<GridViewColumn.CellTemplate> <GridViewColumn.CellTemplate>
<DataTemplate DataType="s:CustomPluginHotkey"> <DataTemplate DataType="s:CustomPluginHotkey">
<TextBlock Text="{Binding Hotkey}"/> <TextBlock Text="{Binding Hotkey}" />
</DataTemplate> </DataTemplate>
</GridViewColumn.CellTemplate> </GridViewColumn.CellTemplate>
</GridViewColumn> </GridViewColumn>
@@ -282,7 +284,8 @@
</GridView> </GridView>
</ListView.View> </ListView.View>
</ListView> </ListView>
<StackPanel Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Bottom" Orientation="Horizontal" Height="40" Width="360"> <StackPanel Grid.Row="3" HorizontalAlignment="Right" VerticalAlignment="Bottom"
Orientation="Horizontal" Height="40" Width="360">
<Button Click="OnDeleteCustomHotkeyClick" Width="100" <Button Click="OnDeleteCustomHotkeyClick" Width="100"
Margin="10" Content="{DynamicResource delete}" /> Margin="10" Content="{DynamicResource delete}" />
<Button Click="OnnEditCustomHotkeyClick" Width="100" Margin="10" <Button Click="OnnEditCustomHotkeyClick" Width="100" Margin="10"
@@ -292,7 +295,7 @@
</StackPanel> </StackPanel>
</Grid> </Grid>
</TabItem> </TabItem>
<TabItem Header="{DynamicResource proxy}" > <TabItem Header="{DynamicResource proxy}">
<StackPanel> <StackPanel>
<CheckBox Margin="10" IsChecked="{Binding Settings.ProxyEnabled}"> <CheckBox Margin="10" IsChecked="{Binding Settings.ProxyEnabled}">
<TextBlock Text="{DynamicResource enableProxy}" /> <TextBlock Text="{DynamicResource enableProxy}" />
@@ -306,19 +309,19 @@
<ColumnDefinition Width="100" /> <ColumnDefinition Width="100" />
<ColumnDefinition Width="200" /> <ColumnDefinition Width="200" />
<ColumnDefinition Width="100" /> <ColumnDefinition Width="100" />
<ColumnDefinition Width="200"/> <ColumnDefinition Width="200" />
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Text="{DynamicResource server}" Grid.Row="0" Grid.Column="0" Padding="5" /> <TextBlock Text="{DynamicResource server}" Grid.Row="0" Grid.Column="0" Padding="5" />
<TextBox Text="{Binding Settings.ProxyServer}" Grid.Row="0" Grid.Column="1" Padding="5" /> <TextBox Text="{Binding Settings.ProxyServer}" Grid.Row="0" Grid.Column="1" Padding="5" />
<TextBlock Text="{DynamicResource port}" Grid.Row="0" Grid.Column="2" Padding="5"/> <TextBlock Text="{DynamicResource port}" Grid.Row="0" Grid.Column="2" Padding="5" />
<TextBox Text="{Binding Settings.ProxyPort}" Grid.Row="0" Grid.Column="3" Padding="5"/> <TextBox Text="{Binding Settings.ProxyPort}" Grid.Row="0" Grid.Column="3" Padding="5" />
<TextBlock Text="{DynamicResource userName}" Grid.Row="1" Grid.Column="0" Padding="5"/> <TextBlock Text="{DynamicResource userName}" Grid.Row="1" Grid.Column="0" Padding="5" />
<TextBox Text="{Binding Settings.ProxyUserName}" Grid.Row="1" Grid.Column="1" Padding="5"/> <TextBox Text="{Binding Settings.ProxyUserName}" Grid.Row="1" Grid.Column="1" Padding="5" />
<TextBlock Text="{DynamicResource password}" Grid.Row="1" Grid.Column="2" Padding="5" /> <TextBlock Text="{DynamicResource password}" Grid.Row="1" Grid.Column="2" Padding="5" />
<TextBox Text="{Binding Settings.ProxyPassword}" Grid.Row="1" Grid.Column="3" Padding="5" /> <TextBox Text="{Binding Settings.ProxyPassword}" Grid.Row="1" Grid.Column="3" Padding="5" />
</Grid> </Grid>
<Button Content="{DynamicResource testProxy}" IsEnabled="{Binding Settings.ProxyEnabled}" <Button Content="{DynamicResource testProxy}" IsEnabled="{Binding Settings.ProxyEnabled}"
Width="80" HorizontalAlignment="Left" Margin="10" Click="OnTestProxyClick"/> Width="80" HorizontalAlignment="Left" Margin="10" Click="OnTestProxyClick" />
</StackPanel> </StackPanel>
</TabItem> </TabItem>
<TabItem Header="{DynamicResource about}"> <TabItem Header="{DynamicResource about}">
@@ -340,24 +343,24 @@
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.ColumnSpan="2" Text="{Binding ActivatedTimes}" /> <TextBlock Grid.Row="0" Grid.ColumnSpan="2" Text="{Binding ActivatedTimes}" />
<TextBlock Grid.Row="1" Grid.Column="0" Text="{DynamicResource website}"/> <TextBlock Grid.Row="1" Grid.Column="0" Text="{DynamicResource website}" />
<TextBlock Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left"> <TextBlock Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left">
<Hyperlink NavigateUri="{Binding Github, Mode=OneWay}" RequestNavigate="OnRequestNavigate"> <Hyperlink NavigateUri="{Binding Github, Mode=OneWay}" RequestNavigate="OnRequestNavigate">
<Run Text="{Binding Github, Mode=OneWay}"/> <Run Text="{Binding Github, Mode=OneWay}" />
</Hyperlink> </Hyperlink>
</TextBlock> </TextBlock>
<TextBlock Grid.Row="2" Grid.Column="0" Text="{DynamicResource version}" /> <TextBlock Grid.Row="2" Grid.Column="0" Text="{DynamicResource version}" />
<TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Version}" /> <TextBlock Grid.Row="2" Grid.Column="1" Text="{Binding Version}" />
<TextBlock Grid.Row="3" Grid.Column="0" Text="{DynamicResource releaseNotes}" /> <TextBlock Grid.Row="3" Grid.Column="0" Text="{DynamicResource releaseNotes}" />
<TextBlock Grid.Row="3" Grid.Column="1" > <TextBlock Grid.Row="3" Grid.Column="1">
<Hyperlink NavigateUri="{Binding ReleaseNotes, Mode=OneWay}" <Hyperlink NavigateUri="{Binding ReleaseNotes, Mode=OneWay}"
RequestNavigate="OnRequestNavigate"> RequestNavigate="OnRequestNavigate">
<Run Text="{Binding ReleaseNotes, Mode=OneWay}"/> <Run Text="{Binding ReleaseNotes, Mode=OneWay}" />
</Hyperlink> </Hyperlink>
</TextBlock> </TextBlock>
<Button Grid.Row="4" Grid.Column="0" <Button Grid.Row="4" Grid.Column="0"
Content="{DynamicResource checkUpdates}" Click="OnCheckUpdates" Content="{DynamicResource checkUpdates}" Click="OnCheckUpdates"
HorizontalAlignment="Left" Margin="10 10 10 10" /> HorizontalAlignment="Left" Margin="10 10 10 10" />
<TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding NewVersionTips}" <TextBlock Grid.Row="4" Grid.Column="1" Text="{Binding NewVersionTips}"
HorizontalAlignment="Left" Visibility="{Binding NewVersionTipsVisibility}" /> HorizontalAlignment="Left" Visibility="{Binding NewVersionTipsVisibility}" />
</Grid> </Grid>

View File

@@ -11,6 +11,7 @@ using Wox.Core.Plugin;
using Wox.Core.Resource; using Wox.Core.Resource;
using Wox.Core.UserSettings; using Wox.Core.UserSettings;
using Wox.Helper; using Wox.Helper;
using Wox.Infrastructure;
using Wox.Infrastructure.Storage; using Wox.Infrastructure.Storage;
using Wox.Plugin; using Wox.Plugin;
using static System.String; using static System.String;
@@ -20,17 +21,36 @@ namespace Wox.ViewModel
[ImplementPropertyChanged] [ImplementPropertyChanged]
public class SettingWindowViewModel public class SettingWindowViewModel
{ {
public Settings Settings { get; set; }
private readonly JsonStrorage<Settings> _storage; private readonly JsonStrorage<Settings> _storage;
public SettingWindowViewModel()
{
_storage = new JsonStrorage<Settings>();
Settings = _storage.Load();
}
public Settings Settings { get; set; }
//todo happlebao save
public void Save()
{
_storage.Save();
}
#region general #region general
public List<Language> Languages => _translater.LoadAvailableLanguages(); public List<Language> Languages => _translater.LoadAvailableLanguages();
private Internationalization _translater => InternationalizationManager.Instance; private Internationalization _translater => InternationalizationManager.Instance;
public IEnumerable<int> MaxResultsRange => Enumerable.Range(2, 16); public IEnumerable<int> MaxResultsRange => Enumerable.Range(2, 16);
#endregion #endregion
#region plugin #region plugin
public static string Plugin => "http://www.getwox.com/plugin"; public static string Plugin => "http://www.getwox.com/plugin";
public PluginViewModel SelectedPlugin { get; set; } public PluginViewModel SelectedPlugin { get; set; }
public IList<PluginViewModel> PluginViewModels public IList<PluginViewModel> PluginViewModels
{ {
get get
@@ -75,7 +95,7 @@ namespace Wox.ViewModel
{ {
// update in-memory data // update in-memory data
PluginManager.UpdateActionKeywordForPlugin(SelectedPlugin.PluginPair, e.OldActionKeyword, PluginManager.UpdateActionKeywordForPlugin(SelectedPlugin.PluginPair, e.OldActionKeyword,
e.NewActionKeyword); e.NewActionKeyword);
// update persistant data // update persistant data
Settings.PluginSettings.UpdateActionKeyword(SelectedPlugin.Metadata); Settings.PluginSettings.UpdateActionKeyword(SelectedPlugin.Metadata);
@@ -93,23 +113,25 @@ namespace Wox.ViewModel
} }
} }
} }
#endregion #endregion
#region theme #region theme
public static string Theme => @"http://www.getwox.com/theme"; public static string Theme => @"http://www.getwox.com/theme";
public string SelectedTheme public string SelectedTheme
{ {
get get { return Settings.Theme; }
{
return Settings.Theme;
}
set set
{ {
Settings.Theme = value; Settings.Theme = value;
ThemeManager.Instance.ChangeTheme(value); ThemeManager.Instance.ChangeTheme(value);
} }
} }
public List<string> Themes => ThemeManager.Instance.LoadAvailableThemes().Select(Path.GetFileNameWithoutExtension).ToList();
public List<string> Themes
=> ThemeManager.Instance.LoadAvailableThemes().Select(Path.GetFileNameWithoutExtension).ToList();
public Brush PreviewBackground public Brush PreviewBackground
{ {
@@ -123,7 +145,7 @@ namespace Wox.ViewModel
bitmap.BeginInit(); bitmap.BeginInit();
bitmap.StreamSource = memStream; bitmap.StreamSource = memStream;
bitmap.EndInit(); bitmap.EndInit();
var brush = new ImageBrush(bitmap) { Stretch = Stretch.UniformToFill }; var brush = new ImageBrush(bitmap) {Stretch = Stretch.UniformToFill};
return brush; return brush;
} }
else else
@@ -139,45 +161,37 @@ namespace Wox.ViewModel
{ {
get get
{ {
var results = new List<Result>
const string image = "app.png";
List<Result> results = new List<Result>
{ {
new Result new Result
{ {
Title = "WoX is a launcher for Windows that simply works.", Title = "WoX is a launcher for Windows that simply works.",
SubTitle = "You can call it Windows omni-eXecutor if you want a long name.", SubTitle = "You can call it Windows omni-eXecutor if you want a long name."
IcoPath = image,
}, },
new Result new Result
{ {
Title = "Search for everything—applications, folders, files and more.", Title = "Search for everything—applications, folders, files and more.",
SubTitle = "Use pinyin to search for programs. (yyy / wangyiyun → 网易云音乐)", SubTitle = "Use pinyin to search for programs. (yyy / wangyiyun → 网易云音乐)"
IcoPath = image,
}, },
new Result new Result
{ {
Title = "Keyword plugin search.", Title = "Keyword plugin search.",
SubTitle = "search google with g search_term.", SubTitle = "search google with g search_term."
IcoPath = image,
}, },
new Result new Result
{ {
Title = "Build custom themes at: ", Title = "Build custom themes at: ",
SubTitle = Theme, SubTitle = Theme
}, },
new Result new Result
{ {
Title = "Install plugins from: ", Title = "Install plugins from: ",
SubTitle = Plugin, SubTitle = Plugin
IcoPath = image,
}, },
new Result new Result
{ {
Title = $"Open Source: {Infrastructure.Constant.Github}", Title = $"Open Source: {Constant.Github}",
SubTitle = "Please star it!", SubTitle = "Please star it!"
IcoPath = image,
} }
}; };
var vm = new ResultsViewModel(6); var vm = new ResultsViewModel(6);
@@ -276,17 +290,21 @@ namespace Wox.ViewModel
} }
} }
#endregion
#region hotkey
public CustomPluginHotkey SelectedCustomPluginHotkey { get; set; }
#endregion #endregion
#region hotkey
public CustomPluginHotkey SelectedCustomPluginHotkey { get; set; }
#endregion
#region about #region about
public static string Github => Infrastructure.Constant.Github; public static string Github => Constant.Github;
public static string ReleaseNotes => @"https://github.com/Wox-launcher/Wox/releases/latest"; public static string ReleaseNotes => @"https://github.com/Wox-launcher/Wox/releases/latest";
public static string Version => Infrastructure.Constant.Version; public static string Version => Constant.Version;
public string ActivatedTimes => Format(_translater.GetTranslation("about_activate_times"), Settings.ActivateTimes); public string ActivatedTimes
=> Format(_translater.GetTranslation("about_activate_times"), Settings.ActivateTimes);
private string _newVersionTips; private string _newVersionTips;
public string NewVersionTips public string NewVersionTips
{ {
@@ -298,17 +316,7 @@ namespace Wox.ViewModel
} }
} }
public Visibility NewVersionTipsVisibility { get; set; } public Visibility NewVersionTipsVisibility { get; set; }
#endregion
public SettingWindowViewModel()
{
_storage = new JsonStrorage<Settings>();
Settings = _storage.Load();
}
//todo happlebao save #endregion
public void Save()
{
_storage.Save();
}
} }
} }