Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Battery Level Popup #52

Merged
merged 26 commits into from
Nov 25, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
c607d2b
Added Turkish translation (thanks /u/Ethadien @ Reddit)
NiyaShy Jul 20, 2020
d0b5ff3
Show Battery information in a popup
Friday-The13-rus Nov 17, 2020
c1434f1
View-ViewModel popup
Friday-The13-rus Nov 18, 2020
1dd36ec
Popup with image
Friday-The13-rus Nov 19, 2020
8c343b0
Settings for popup
Friday-The13-rus Nov 19, 2020
dc21cc1
Ukrainian translation (uk-UA) is added.
Nov 22, 2020
0b24f22
Merge pull request #51 from vtkachenko/feature/ua-translation
NiyaShy Nov 23, 2020
4eb8b65
Settings editing from UI
Friday-The13-rus Nov 23, 2020
f2009ca
Strings to resources
Friday-The13-rus Nov 23, 2020
d66d625
RU translation
Friday-The13-rus Nov 23, 2020
59f6bc8
Popup Translation for other languages
Friday-The13-rus Nov 23, 2020
6b1360d
Enable - Disable settings
Friday-The13-rus Nov 23, 2020
dd74dde
Font name selection
Friday-The13-rus Nov 23, 2020
e99c9e5
Font Bold - Italic - Underline
Friday-The13-rus Nov 23, 2020
2675f00
Font Bold - Italic - Underline RU translation
Friday-The13-rus Nov 23, 2020
499979a
Updated settings
Friday-The13-rus Nov 23, 2020
cfebab9
Number settings validation
Friday-The13-rus Nov 23, 2020
bf1b0ba
Merge branch 'master' into guidePopup
Friday-The13-rus Nov 24, 2020
33aff46
Updated UA translation for popup
Friday-The13-rus Nov 24, 2020
af9fef8
Updated settings
Friday-The13-rus Nov 24, 2020
7a4ea8a
Renamed Guide button to XBox button
Friday-The13-rus Nov 24, 2020
dc3271d
Fixed settings
Friday-The13-rus Nov 24, 2020
620731c
Settings window header localization
Friday-The13-rus Nov 24, 2020
76dd785
Show popup on releasing Guid button
Friday-The13-rus Nov 25, 2020
43001c0
Merged with testing
Friday-The13-rus Nov 25, 2020
d2bef10
Fixed merge mistake
Friday-The13-rus Nov 25, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,38 @@
</setting>
<setting name="LowBatteryWarningSound_Loop_Enabled" serializeAs="String">
<value>False</value>
</setting>
<setting name="LowBatteryToast_Enabled" serializeAs="String">
<value>True</value>
</setting>
<setting name="LowBatteryPopup_Enabled" serializeAs="String">
<value>False</value>
</setting>
<setting name="GuidePressPopup_Enabled" serializeAs="String">
<value>True</value>
</setting>
<setting name="PopupSettings" serializeAs="Xml">
<value>
<SimpleBatteryPopupSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Size>
<Width>300</Width>
<Height>60</Height>
</Size>
<X>0.5</X>
<AlignmentX>Left</AlignmentX>
<Y>0.8</Y>
<AlignmentY>Top</AlignmentY>
<DisplayDuration>0:00:03</DisplayDuration>
<BackgroundColor>#FFA9A9A9</BackgroundColor>
<ForegroundColor>#FFF8F8FF</ForegroundColor>
<FontSize>20</FontSize>
<FontName>Segoe UI</FontName>
<FontBold>false</FontBold>
<FontItalic>false</FontItalic>
<FontUnderline>false</FontUnderline>
</SimpleBatteryPopupSettings>
</value>
</setting>
<setting name="MinorUpdateCheck" serializeAs="String">
<value>False</value>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:XB1ControllerBatteryIndicator.BatteryPopup">
<DataTemplate DataType="{x:Type local:SimpleBatteryLevelPopupViewModel}">
<Border Background="{Binding Path=BackgroundBrush}"
BorderThickness="{Binding Path=BorderSize}"
BorderBrush="{Binding Path=ForegroundBrush}"
CornerRadius="{Binding Path=CornerRadius}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Margin="2">
<Image.Source>
<DrawingImage>
<DrawingImage.Drawing>
<GeometryDrawing Brush="{Binding Path=ForegroundBrush}" Geometry="M 169.18811,359.44924 C 140.50497,356.70211 111.4651,346.40125 86.518706,330.1252 65.614374,316.48637 60.893704,310.87967 60.893704,299.69061 c 0,-22.47524 24.711915,-61.84014 66.992496,-106.71584 24.01246,-25.48631 57.46022,-55.36001 61.0775,-54.55105 7.0309,1.57238 63.25048,56.41053 84.29655,82.2252 33.28077,40.82148 48.58095,74.24535 40.808,89.14682 -5.9087,11.32753 -42.57224,33.4669 -69.50775,41.97242 -22.19984,7.01011 -51.35538,9.9813 -75.37239,7.68108 z M 32.660004,276.3228 C 15.288964,249.67326 6.5125436,223.43712 2.2752336,185.49086 c -1.39917002,-12.53 -0.89778,-19.69701 3.17715,-45.41515 5.0788204,-32.05404 23.3330104,-69.136381 45.2671304,-91.957616 9.34191,-9.719732 10.17624,-9.956543 21.56341,-6.120482 13.828357,4.658436 28.595936,14.857457 51.498366,35.56661 l 13.36254,12.082873 -7.2969,8.96431 C 95.97448,140.22403 60.217254,199.2085 46.741444,235.70071 c -7.32599,19.83862 -10.28084,39.75281 -7.12868,48.04363 2.12818,5.59752 0.17339,3.51093 -6.95276,-7.42154 z m 304.915426,4.53255 c 1.71605,-8.37719 -0.4544,-23.76257 -5.5413,-39.28002 -11.01667,-33.60598 -47.83964,-96.12421 -81.65282,-138.63054 L 239.73699,89.563875 251.25285,78.989784 c 15.03631,-13.806637 25.47602,-22.073835 36.74025,-29.094513 8.88881,-5.540156 21.59109,-10.444558 27.05113,-10.444558 3.36626,0 15.21723,12.298726 24.78421,25.720611 14.81725,20.787711 25.71782,45.986976 31.24045,72.219686 3.56833,16.9498 3.8657,53.23126 0.57486,70.13935 -2.70068,13.87582 -8.40314,31.87484 -13.9661,44.08195 -4.16823,9.14657 -14.53521,26.91044 -19.0783,32.69074 -2.33569,2.97175 -2.33761,2.96527 -1.02393,-3.4477 z M 172.25917,33.104812 c -15.60147,-7.922671 -39.6696,-16.427164 -52.96493,-18.715209 -4.66097,-0.802124 -12.61193,-1.249474 -17.6688,-0.994114 -10.969613,0.55394 -10.479662,-0.0197 7.11783,-8.3336652 14.63023,-6.912081 26.83386,-10.976696 43.40044,-14.455218 18.6362,-3.9130858 53.66559,-3.9590088 72.00507,-0.0944 19.80818,4.174105 43.13297,12.854085 56.27623,20.9423862 l 3.90633,2.403927 -8.96247,-0.452584 c -17.81002,-0.899366 -43.76575,6.295879 -71.63269,19.857459 -8.40538,4.090523 -15.71788,7.357511 -16.25,7.25997 -0.53211,-0.09754 -7.38426,-3.43589 -15.22701,-7.418555 z"></GeometryDrawing>
</DrawingImage.Drawing>
</DrawingImage>
</Image.Source>
</Image>
<Grid Grid.Column="1" Margin="5, 2">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="{Binding Path=ControllerName}"
HorizontalAlignment="Center" VerticalAlignment="Center"
Foreground="{Binding Path=ForegroundBrush}"
FontSize="{Binding Path=FontSize}"
FontFamily="{Binding Path=FontFamily}"
FontStyle="{Binding Path=FontStyle}"
FontWeight="{Binding Path=FontWeight}"
TextDecorations="{Binding Path=TextDecoration}"/>
<TextBlock Grid.Row="1" Text="{Binding Path=BatteryLevel}"
HorizontalAlignment="Center" VerticalAlignment="Center"
Foreground="{Binding Path=ForegroundBrush}"
FontSize="{Binding Path=FontSize}"
FontFamily="{Binding Path=FontFamily}"
FontStyle="{Binding Path=FontStyle}"
FontWeight="{Binding Path=FontWeight}"
TextDecorations="{Binding Path=TextDecoration}"/>
</Grid>

</Grid>
</Border>
</DataTemplate>
</ResourceDictionary>
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<Popup x:Class="XB1ControllerBatteryIndicator.BatteryPopup.BatteryLevelPopupView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:XB1ControllerBatteryIndicator.BatteryPopup"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800"
d:DataContext="{d:DesignInstance Type=local:IBatteryLevelPopupViewModel, IsDesignTimeCreatable=False}"
Placement="Absolute"
StaysOpen="True"
AllowsTransparency="True"
PopupAnimation="Fade"
HorizontalOffset="{Binding Path=Position.X}"
VerticalOffset="{Binding Path=Position.Y}"
Width="{Binding Path=Size.Width}"
Height="{Binding Path=Size.Height}">
<Popup.Style>
<Style TargetType="local:BatteryLevelPopupView">
<Setter Property="DisplayDuration" Value="{Binding Path=DisplayDuration}"/>
</Style>
</Popup.Style>
<Popup.Resources>
<ResourceDictionary Source="BatteryLevelPopupTemplates.xaml"/>
</Popup.Resources>
<ContentControl Content="{Binding}"/>
</Popup>
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
using System;
using System.Windows;
using System.Windows.Controls.Primitives;
using System.Windows.Threading;

namespace XB1ControllerBatteryIndicator.BatteryPopup
{
/// <summary>
/// Interaction logic for BatteryLevelPopupView.xaml
/// </summary>
public partial class BatteryLevelPopupView : Popup
{
public static readonly DependencyProperty DisplayDurationProperty = DependencyProperty.Register(
"DisplayDuration", typeof(TimeSpan), typeof(BatteryLevelPopupView), new PropertyMetadata(TimeSpan.FromSeconds(3)));

public TimeSpan DisplayDuration
{
get { return (TimeSpan) GetValue(DisplayDurationProperty); }
set { SetValue(DisplayDurationProperty, value); }
}

private readonly DispatcherTimer _timer;

public BatteryLevelPopupView()
{
InitializeComponent();
_timer = new DispatcherTimer(DispatcherPriority.Background, Dispatcher);
Opened += OnOpened;
}

private void OnOpened(object sender, EventArgs e)
{
_timer.Interval = DisplayDuration;
_timer.Start();
_timer.Tick += TimerOnTick;
}

private void TimerOnTick(object sender, EventArgs e)
{
_timer.Stop();
IsOpen = false;
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
using System;
using System.Windows;

namespace XB1ControllerBatteryIndicator.BatteryPopup
{
public interface IBatteryLevelPopupViewModel
{
TimeSpan DisplayDuration { get; }
Point Position { get; }
Size Size { get; }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
<Window x:Class="XB1ControllerBatteryIndicator.BatteryPopup.Settings.BatteryPopupSettingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:XB1ControllerBatteryIndicator.BatteryPopup.Settings"
xmlns:localization="clr-namespace:XB1ControllerBatteryIndicator.Localization"
mc:Ignorable="d"
Title="{x:Static localization:Strings.PopupSettings_Title}"
Height="400" Width="350"
ResizeMode="NoResize"
SizeToContent="Height"
d:DataContext="{d:DesignInstance Type=local:BatteryPopupSettingsViewModel}">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="../BatteryLevelPopupTemplates.xaml"/>
</ResourceDictionary.MergedDictionaries>

<DataTemplate DataType="{x:Type local:NumberSetting}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Caption"/>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Target="{x:Reference Text}" Content="{Binding Path=Caption}"
VerticalAlignment="Center"/>
<Slider Grid.Column="1" Minimum="{Binding Path=MinValue}"
Maximum="{Binding Path=MaxValue}"
Value="{Binding Path=Value}"
VerticalAlignment="Center"/>
<Grid Grid.Column="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" x:Name="Text" VerticalAlignment="Center"
Text="{Binding Path=Value, UpdateSourceTrigger=PropertyChanged}"/>
<TextBlock Grid.Column="1" VerticalAlignment="Center"
Margin="2, 0, 0, 0"
Text="{Binding Path=Unit}"/>
</Grid>
</Grid>
</DataTemplate>

<DataTemplate DataType="{x:Type local:ColorSetting}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Caption"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Target="{x:Reference Selector}" Content="{Binding Path=Caption}"
VerticalAlignment="Center"/>
<ComboBox Grid.Column="1"
x:Name="Selector"
VerticalAlignment="Center"
ItemsSource="{Binding Path=Colors}"
SelectedValuePath="Value"
SelectedValue="{Binding Path=Value}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Border Width="20" Height="15">
<Border.Background>
<SolidColorBrush Color="{Binding Value}"/>
</Border.Background>
</Border>
<TextBlock Margin="3,0,0,0" Text="{Binding Key}"/>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</DataTemplate>

<DataTemplate DataType="{x:Type local:FontSetting}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Caption"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Target="{x:Reference Selector}" Content="{Binding Path=Caption}"
VerticalAlignment="Center"/>
<ComboBox Grid.Column="1"
x:Name="Selector"
VerticalAlignment="Center"
ItemsSource="{Binding Path=Fonts}"
SelectedValuePath="Source"
SelectedValue="{Binding Path=Value}">
<ComboBox.ItemTemplate>
<DataTemplate DataType="FontFamily">
<TextBlock Text="{Binding Path=Source}" FontFamily="{Binding}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</DataTemplate>

<DataTemplate DataType="{x:Type local:BoolSetting}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Caption"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Label Grid.Column="0" Target="{x:Reference Selector}" Content="{Binding Path=Caption}"
VerticalAlignment="Center"/>
<CheckBox Grid.Column="1"
x:Name="Selector"
IsChecked="{Binding Path=Value, UpdateSourceTrigger=PropertyChanged}"
VerticalAlignment="Center"/>
</Grid>

</DataTemplate>
</ResourceDictionary>
</Window.Resources>
<StackPanel Orientation="Vertical" Grid.IsSharedSizeScope="True">
<Viewbox Width="300" Height="60">
<ContentControl Content="{Binding Path=CurrentPopup}"
Width="{Binding Path=Width.Value}"
Height="{Binding Path=Height.Value}"/>
</Viewbox>

<GroupBox Margin="5, 5, 5, 0" Header="{x:Static localization:Strings.PopupSettings_Time}">
<StackPanel>
<ContentControl Content="{Binding Path=DisplayDuration}"/>
</StackPanel>
</GroupBox>
<GroupBox Margin="5, 5, 5, 0" Header="{x:Static localization:Strings.PopupSettings_Positioning}">
<StackPanel>
<ContentControl Content="{Binding Path=X}"/>
<ContentControl Content="{Binding Path=Y}"/>
<ContentControl Content="{Binding Path=Width}"/>
<ContentControl Content="{Binding Path=Height}"/>
</StackPanel>
</GroupBox>
<GroupBox Margin="5, 5, 5, 0" Header="{x:Static localization:Strings.PopupSettings_Colors}">
<StackPanel>
<ContentControl Content="{Binding Path=BackgroundColor}"/>
<ContentControl Content="{Binding Path=ForegroundColor}"/>
</StackPanel>
</GroupBox>
<GroupBox Margin="5, 5, 5, 0" Header="{x:Static localization:Strings.PopupSettings_Font}">
<StackPanel>
<ContentControl Content="{Binding Path=FontFamily}"/>
<ContentControl Content="{Binding Path=FontSize}"/>
<ContentControl Content="{Binding Path=FontBold}"/>
<ContentControl Content="{Binding Path=FontItalic}"/>
<ContentControl Content="{Binding Path=FontUnderline}"/>
</StackPanel>
</GroupBox>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Margin="5">
<Button x:Name="Save"
Content="{x:Static localization:Strings.PopupSettings_Save}"
MinWidth="50"
Padding="5, 2"/>
<Button x:Name="Cancel"
Margin="5, 0, 0, 0"
Content="{x:Static localization:Strings.PopupSettings_Cancel}"
MinWidth="50"
Padding="5, 2"/>
</StackPanel>
</StackPanel>
</Window>
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System.Windows;

namespace XB1ControllerBatteryIndicator.BatteryPopup.Settings
{
/// <summary>
/// Interaction logic for BatteryPopupSettingsView.xaml
/// </summary>
public partial class BatteryPopupSettingsView : Window
{
public BatteryPopupSettingsView()
{
InitializeComponent();
}
}
}
Loading