Skip to content

Commit

Permalink
Add a dialog to ask the user whether to accept telemetry or not
Browse files Browse the repository at this point in the history
  • Loading branch information
marticliment committed Jan 29, 2025
1 parent 34079dc commit 4ea165c
Show file tree
Hide file tree
Showing 4 changed files with 125 additions and 4 deletions.
17 changes: 14 additions & 3 deletions src/UniGetUI/MainWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,20 @@
<widgets:TranslatedTextBlock x:Name="AppTitle" Text="WingetUI" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" FontSize="12"/>
</StackPanel>
</Border>
<InfoBar Name="UpdatesBanner" x:FieldModifier="public" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" IsOpen="False" Visibility="{x:Bind UpdatesBanner.IsOpen, Mode=OneWay}" Margin="0,0,0,4" CornerRadius="0" BorderThickness="0,1,0,1"/>
<InfoBar Name="ErrorBanner" x:FieldModifier="public" Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" IsOpen="False" Visibility="{x:Bind ErrorBanner.IsOpen, Mode=OneWay}" Margin="0,0,0,4" Severity="Error" CornerRadius="0" BorderThickness="0,1,0,1"/>
<InfoBar Name="WinGetWarningBanner" x:FieldModifier="public" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" IsOpen="False" Visibility="{x:Bind WinGetWarningBanner.IsOpen, Mode=OneWay}" Margin="0,0,0,4" Severity="Warning" CornerRadius="0" BorderThickness="0,1,0,1"/>
<StackPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Spacing="0" Padding="0" Margin="0,-4,0,0">
<InfoBar
Name="UpdatesBanner" x:FieldModifier="public" IsOpen="False"
Visibility="{x:Bind UpdatesBanner.IsOpen, Mode=OneWay}" Margin="0,0,0,4"
CornerRadius="0" BorderThickness="0,1,0,1"/>
<InfoBar
Name="ErrorBanner" x:FieldModifier="public" IsOpen="False"
Visibility="{x:Bind ErrorBanner.IsOpen, Mode=OneWay}" Margin="0,0,0,4"
Severity="Error" CornerRadius="0" BorderThickness="0,1,0,1"/>
<InfoBar
Name="WinGetWarningBanner" x:FieldModifier="public" IsOpen="False"
Visibility="{x:Bind WinGetWarningBanner.IsOpen, Mode=OneWay}" Margin="0,0,0,4"
Severity="Warning" CornerRadius="0" BorderThickness="0,1,0,1"/>
</StackPanel>
</Grid>
<Grid Grid.Row="0" Grid.Column="0" x:Name="LoadingWindow" Visibility="Visible"
Background="{StaticResource ProgressBarBorderThemeBrush}">
Expand Down
102 changes: 101 additions & 1 deletion src/UniGetUI/Pages/DialogPages/DialogHelper_Generic.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
using System.Diagnostics;
using Microsoft.UI.Text;
using Microsoft.UI.Xaml;
using Microsoft.UI.Xaml.Controls;
using Microsoft.UI.Xaml.Documents;
using Microsoft.UI.Xaml.Media;
using Microsoft.Windows.AppNotifications;
using Microsoft.Windows.AppNotifications.Builder;
Expand Down Expand Up @@ -425,7 +427,8 @@ public static async void HandleBrokenWinGet()
PrimaryButtonText = CoreTools.Translate("Close"),
SecondaryButtonText = CoreTools.Translate("Restart"),
DefaultButton = ContentDialogButton.Secondary,
XamlRoot = Window.XamlRoot
XamlRoot = Window.XamlRoot,
Style = Application.Current.Resources["DefaultContentDialogStyle"] as Style,
};

// Restart UniGetUI or reload packages depending on the user's choice
Expand Down Expand Up @@ -463,5 +466,102 @@ public static async void HandleBrokenWinGet()
}

}

public static async void ShowTelemetryDialog()
{
var dialog = new ContentDialog()
{
Title = CoreTools.Translate("Share anonymous usage data"),
XamlRoot = Window.XamlRoot,
Style = Application.Current.Resources["DefaultContentDialogStyle"] as Style,
};

Grid MainGrid = new()
{
RowSpacing = 16,
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Stretch,
};

MainGrid.RowDefinitions.Add(new RowDefinition { Height = new GridLength(1, GridUnitType.Star) });
MainGrid.RowDefinitions.Add(new RowDefinition { Height = GridLength.Auto });

var MessageBlock = new RichTextBlock();
MainGrid.Children.Add(MessageBlock);

var p = new Paragraph();
MessageBlock.Blocks.Add(p);

p.Inlines.Add(new Run()
{
Text = CoreTools.Translate("UniGetUI collects anonymous usage data with the sole purpose of understanding and improving the user experience.")
});
p.Inlines.Add(new LineBreak());
p.Inlines.Add(new Run()
{
Text = CoreTools.Translate("No personal information is collected nor sent, and the collected data is anonimized, so it can't be back-tracked to you.")
});
p.Inlines.Add(new LineBreak());
p.Inlines.Add(new LineBreak());
var link = new Hyperlink() { NavigateUri = new Uri("https://www.marticliment.com/unigetui/privacy/"), };
link.Inlines.Add(new Run()
{
Text = CoreTools.Translate("More details about the shared data and how it will be processed"),
});

p.Inlines.Add(link);
p.Inlines.Add(new LineBreak());
p.Inlines.Add(new LineBreak());
p.Inlines.Add(new Run()
{
Text = CoreTools.Translate("Do you accept that UniGetUI collects and sends anonymous usage statistics, with the sole purpose of understanding and improving the user experience?"),
FontWeight = FontWeights.SemiBold
});

var AcceptButton = new Button()
{
Content = CoreTools.Translate("Accept"),
HorizontalAlignment = HorizontalAlignment.Stretch,
Height = 32,
Style = (Style)Application.Current.Resources["AccentButtonStyle"],
};
AcceptButton.Click += (_, _) =>
{
dialog.Hide();
Settings.Set("DisableTelemetry", false);
};

var DeclineButton = new HyperlinkButton()
{
Content = CoreTools.Translate("Decline"),
HorizontalAlignment = HorizontalAlignment.Stretch,
Height = 32,
};
DeclineButton.Click += (_, _) =>
{
dialog.Hide();
Settings.Set("DisableTelemetry", true);
};

Grid sp = new()
{
Margin = new Thickness(-25, 0, -25, -25),
ColumnSpacing = 8,
Padding = new Thickness(30),
HorizontalAlignment = HorizontalAlignment.Stretch,
Background = (Brush)Application.Current.Resources["ApplicationPageBackgroundThemeBrush"]
};
sp.ColumnDefinitions.Add(new ColumnDefinition(){Width = new(1, GridUnitType.Star)});
sp.ColumnDefinitions.Add(new ColumnDefinition(){Width = new(1, GridUnitType.Star)});
sp.Children.Add(DeclineButton);
Grid.SetColumn(AcceptButton, 1);
sp.Children.Add(AcceptButton);
Grid.SetRow(sp, 1);
Grid.SetColumn(sp, 0);
MainGrid.Children.Add(sp);
dialog.Content = MainGrid;

await Window.ShowDialogAsync(dialog);
}
}

5 changes: 5 additions & 0 deletions src/UniGetUI/Pages/SettingsPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,11 @@
Text="Install prerelease versions of UniGetUI"
SettingName="EnableUniGetUIBeta"
/>
<widgets:ButtonCard
Text="Manage telemetry settings"
ButtonText="Manage"
Click="ManageTelemetrySettings_Click"
/>
<widgets:ButtonCard
Text="Import settings from a local file"
ButtonText="Import"
Expand Down
5 changes: 5 additions & 0 deletions src/UniGetUI/Pages/SettingsPage.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -833,5 +833,10 @@ private void ParallelOperationCount_OnValueChanged(object? sender, EventArgs e)
AbstractOperation.MAX_OPERATIONS = value;
}
}

private void ManageTelemetrySettings_Click(object sender, EventArgs e)
{
DialogHelper.ShowTelemetryDialog();
}
}
}

0 comments on commit 4ea165c

Please sign in to comment.