Improve setting window performance (theme).

This commit is contained in:
qianlifeng
2015-02-08 10:38:32 +08:00
parent 877ad53ead
commit dc2f3cd166
3 changed files with 22 additions and 59 deletions

View File

@@ -41,7 +41,6 @@ namespace Wox.Core.i18n
{ {
Language language = GetLanguageByLanguageCode(languageCode); Language language = GetLanguageByLanguageCode(languageCode);
ChangeLanguage(language); ChangeLanguage(language);
UpdateAllPluginMetadataTranslations();
} }
private Language GetLanguageByLanguageCode(string languageCode) private Language GetLanguageByLanguageCode(string languageCode)
@@ -72,6 +71,7 @@ namespace Wox.Core.i18n
UserSettingStorage.Instance.Language = language.LanguageCode; UserSettingStorage.Instance.Language = language.LanguageCode;
UserSettingStorage.Instance.Save(); UserSettingStorage.Instance.Save();
ResourceMerger.ApplyResources(); ResourceMerger.ApplyResources();
UpdateAllPluginMetadataTranslations();
} }
public ResourceDictionary GetResourceDictionary() public ResourceDictionary GetResourceDictionary()

View File

@@ -188,23 +188,6 @@
</ComboBox.ItemTemplate> </ComboBox.ItemTemplate>
</ComboBox> </ComboBox>
</StackPanel> </StackPanel>
<StackPanel Orientation="Horizontal" Margin="2">
<TextBlock Text="{DynamicResource windowMode}" />
<ComboBox Name="CbOpacityMode" Margin="14 0 0 0" SelectionChanged="CbOpacityMode_OnSelectionChanged" Width="160">
<userSettings:OpacityMode>Normal</userSettings:OpacityMode>
<userSettings:OpacityMode>LayeredWindow</userSettings:OpacityMode>
<userSettings:OpacityMode>DWM</userSettings:OpacityMode>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Converter={converters:OpacityModeConverter}}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
<StackPanel Orientation="Horizontal" Margin="5 0 0 0" x:Name="spOpacity">
<TextBlock Text="{DynamicResource opacity}" HorizontalAlignment="Center" />
<Slider x:Name="slOpacity" Maximum="1" Minimum="0" SmallChange="1" LargeChange="0.1" TickPlacement="BottomRight" TickFrequency="0.1" ValueChanged="slOpacity_ValueChanged" Width="100"/>
</StackPanel>
</StackPanel>
</StackPanel> </StackPanel>
</Grid> </Grid>

View File

@@ -5,6 +5,7 @@ using System.Diagnostics;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Threading;
using System.Windows; using System.Windows;
using System.Windows.Controls; using System.Windows.Controls;
using System.Windows.Input; using System.Windows.Input;
@@ -23,6 +24,7 @@ using Wox.Core.i18n;
using Wox.Core.Theme; using Wox.Core.Theme;
using Wox.Core.Updater; using Wox.Core.Updater;
using Wox.Core.UserSettings; using Wox.Core.UserSettings;
using Wox.Infrastructure;
using CheckBox = System.Windows.Controls.CheckBox; using CheckBox = System.Windows.Controls.CheckBox;
using Control = System.Windows.Controls.Control; using Control = System.Windows.Controls.Control;
using Cursors = System.Windows.Input.Cursors; using Cursors = System.Windows.Input.Cursors;
@@ -262,23 +264,13 @@ namespace Wox
Process.Start("http://www.getwox.com/theme"); Process.Start("http://www.getwox.com/theme");
} }
private void CbOpacityMode_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
UserSettingStorage.Instance.OpacityMode = (OpacityMode)CbOpacityMode.SelectedItem;
UserSettingStorage.Instance.Save();
spOpacity.Visibility = UserSettingStorage.Instance.OpacityMode == OpacityMode.LayeredWindow ? Visibility.Visible : Visibility.Collapsed;
if (UserSettingStorage.Instance.OpacityMode == OpacityMode.LayeredWindow)
PreviewMainPanel.Opacity = UserSettingStorage.Instance.Opacity;
else
PreviewMainPanel.Opacity = 1;
}
private void OnThemeTabSelected() private void OnThemeTabSelected()
{ {
using (new Timeit("theme load"))
{
var s = Fonts.SystemFontFamilies;
}
if (themeTabLoaded) return; if (themeTabLoaded) return;
themeTabLoaded = true; themeTabLoaded = true;
@@ -304,6 +296,7 @@ namespace Wox
UserSettingStorage.Instance.ResultItemFontStretch UserSettingStorage.Instance.ResultItemFontStretch
)); ));
} }
resultPanelPreview.AddResults(new List<Result>() resultPanelPreview.AddResults(new List<Result>()
{ {
new Result() new Result()
@@ -363,8 +356,6 @@ namespace Wox
} }
themeComboBox.SelectedItem = UserSettingStorage.Instance.Theme; themeComboBox.SelectedItem = UserSettingStorage.Instance.Theme;
slOpacity.Value = UserSettingStorage.Instance.Opacity;
CbOpacityMode.SelectedItem = UserSettingStorage.Instance.OpacityMode;
var wallpaper = WallpaperPathRetrieval.GetWallpaperPath(); var wallpaper = WallpaperPathRetrieval.GetWallpaperPath();
if (wallpaper != null && File.Exists(wallpaper)) if (wallpaper != null && File.Exists(wallpaper))
@@ -379,8 +370,6 @@ namespace Wox
PreviewPanel.Background = new SolidColorBrush(wallpaperColor); PreviewPanel.Background = new SolidColorBrush(wallpaperColor);
} }
//PreviewPanel
ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme);
} }
private void TabTheme_OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e) private void TabTheme_OnPreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
@@ -396,8 +385,8 @@ namespace Wox
private void ThemeComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e) private void ThemeComboBox_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
string themeName = themeComboBox.SelectedItem.ToString(); string themeName = themeComboBox.SelectedItem.ToString();
ThemeManager.Theme.ChangeTheme(themeName);
UserSettingStorage.Instance.Theme = themeName; UserSettingStorage.Instance.Theme = themeName;
DelayChangeTheme();
UserSettingStorage.Instance.Save(); UserSettingStorage.Instance.Save();
} }
@@ -407,9 +396,16 @@ namespace Wox
string queryBoxFontName = cbQueryBoxFont.SelectedItem.ToString(); string queryBoxFontName = cbQueryBoxFont.SelectedItem.ToString();
UserSettingStorage.Instance.QueryBoxFont = queryBoxFontName; UserSettingStorage.Instance.QueryBoxFont = queryBoxFontName;
this.cbQueryBoxFontFaces.SelectedItem = ((FontFamily)cbQueryBoxFont.SelectedItem).ChooseRegularFamilyTypeface(); this.cbQueryBoxFontFaces.SelectedItem = ((FontFamily)cbQueryBoxFont.SelectedItem).ChooseRegularFamilyTypeface();
DelayChangeTheme();
UserSettingStorage.Instance.Save(); UserSettingStorage.Instance.Save();
ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme); }
private void DelayChangeTheme()
{
Dispatcher.DelayInvoke("delayChangeTheme", o =>
{
ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme);
}, TimeSpan.FromMilliseconds(100));
} }
private void CbQueryBoxFontFaces_OnSelectionChanged(object sender, SelectionChangedEventArgs e) private void CbQueryBoxFontFaces_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -429,7 +425,7 @@ namespace Wox
UserSettingStorage.Instance.QueryBoxFontWeight = typeface.Weight.ToString(); UserSettingStorage.Instance.QueryBoxFontWeight = typeface.Weight.ToString();
UserSettingStorage.Instance.QueryBoxFontStyle = typeface.Style.ToString(); UserSettingStorage.Instance.QueryBoxFontStyle = typeface.Style.ToString();
UserSettingStorage.Instance.Save(); UserSettingStorage.Instance.Save();
ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme); DelayChangeTheme();
} }
} }
@@ -441,7 +437,7 @@ namespace Wox
this.cbResultItemFontFaces.SelectedItem = ((FontFamily)cbResultItemFont.SelectedItem).ChooseRegularFamilyTypeface(); this.cbResultItemFontFaces.SelectedItem = ((FontFamily)cbResultItemFont.SelectedItem).ChooseRegularFamilyTypeface();
UserSettingStorage.Instance.Save(); UserSettingStorage.Instance.Save();
ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme); DelayChangeTheme();
} }
private void CbResultItemFontFaces_OnSelectionChanged(object sender, SelectionChangedEventArgs e) private void CbResultItemFontFaces_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
@@ -459,30 +455,14 @@ namespace Wox
UserSettingStorage.Instance.ResultItemFontWeight = typeface.Weight.ToString(); UserSettingStorage.Instance.ResultItemFontWeight = typeface.Weight.ToString();
UserSettingStorage.Instance.ResultItemFontStyle = typeface.Style.ToString(); UserSettingStorage.Instance.ResultItemFontStyle = typeface.Style.ToString();
UserSettingStorage.Instance.Save(); UserSettingStorage.Instance.Save();
ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme); DelayChangeTheme();
} }
} }
private void slOpacity_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
UserSettingStorage.Instance.Opacity = slOpacity.Value;
if (UserSettingStorage.Instance.OpacityMode == OpacityMode.LayeredWindow)
PreviewMainPanel.Opacity = UserSettingStorage.Instance.Opacity;
else
PreviewMainPanel.Opacity = 1;
ThemeManager.Theme.ChangeTheme(UserSettingStorage.Instance.Theme);
Dispatcher.DelayInvoke("delaySaveUserSetting", o =>
{
UserSettingStorage.Instance.Save();
}, TimeSpan.FromMilliseconds(1000));
}
#endregion #endregion
#region Plugin #region Plugin
private void lbPlugins_OnSelectionChanged(object sender, SelectionChangedEventArgs e) private void lbPlugins_OnSelectionChanged(object sender, SelectionChangedEventArgs e)
{ {
ISettingProvider provider = null; ISettingProvider provider = null;