From dceb76e54a406f3d680ef4a638850252c35c3312 Mon Sep 17 00:00:00 2001 From: Matthias Schanzenbach Date: Mon, 12 Jan 2026 16:41:21 +0100 Subject: [PATCH 1/3] Feedback dialog; New field email, replaced the icon because it did not look good in light theme --- .../OneWareCloudIntegrationModule.cs | 2 +- .../Services/OneWareCloudLoginService.cs | 5 ++- .../ViewModels/FeedbackViewModel.cs | 40 ++++++++++--------- .../Views/OneWareCloudAccountFlyoutView.axaml | 2 +- .../Views/SendFeedbackView.axaml | 6 ++- src/OneWare.Core/Styles/Icons.axaml | 14 ++----- 6 files changed, 35 insertions(+), 34 deletions(-) diff --git a/src/OneWare.CloudIntegration/OneWareCloudIntegrationModule.cs b/src/OneWare.CloudIntegration/OneWareCloudIntegrationModule.cs index bc2b6ab5..1df8e2b4 100644 --- a/src/OneWare.CloudIntegration/OneWareCloudIntegrationModule.cs +++ b/src/OneWare.CloudIntegration/OneWareCloudIntegrationModule.cs @@ -51,7 +51,7 @@ public void OnInitialized(IContainerProvider containerProvider) containerProvider.Resolve().RegisterMenuItem("MainWindow_MainMenu/Help", new MenuItemViewModel("Feedback") { Header = "Send Feedback", - IconObservable = Application.Current!.GetResourceObservable("VSImageLib.FeedbackBubble_16x"), + IconObservable = Application.Current!.GetResourceObservable("Unicons.CommentMessage"), Command = new AsyncRelayCommand(async () => await OpenFeedbackDialogAsync()) }); diff --git a/src/OneWare.CloudIntegration/Services/OneWareCloudLoginService.cs b/src/OneWare.CloudIntegration/Services/OneWareCloudLoginService.cs index 288624b2..d3450ac2 100644 --- a/src/OneWare.CloudIntegration/Services/OneWareCloudLoginService.cs +++ b/src/OneWare.CloudIntegration/Services/OneWareCloudLoginService.cs @@ -231,7 +231,7 @@ public void Logout(string email) } } - public async Task SendFeedbackAsync(string category, string message) + public async Task SendFeedbackAsync(string category, string message, string? mail = null) { try { @@ -256,7 +256,8 @@ public async Task SendFeedbackAsync(string category, string message) request.AddJsonBody(new { Category = category, - Message = message + Message = message, + Mail = mail }); var restClient = diff --git a/src/OneWare.CloudIntegration/ViewModels/FeedbackViewModel.cs b/src/OneWare.CloudIntegration/ViewModels/FeedbackViewModel.cs index ac52b0d9..50a2e988 100644 --- a/src/OneWare.CloudIntegration/ViewModels/FeedbackViewModel.cs +++ b/src/OneWare.CloudIntegration/ViewModels/FeedbackViewModel.cs @@ -10,11 +10,7 @@ public class FeedbackViewModel : FlexibleWindowViewModelBase private readonly OneWareCloudLoginService _loginService; private string _header = string.Empty; - private string _message = string.Empty; - private string _category = string.Empty; - private string _errorText = string.Empty; - private bool _isLoading = false; - + public FeedbackViewModel(OneWareCloudLoginService loginService) { _loginService = loginService; @@ -33,28 +29,36 @@ public FeedbackViewModel(OneWareCloudLoginService loginService) "Documentation", "Other" ]; - + public bool IsLoading { - get => _isLoading; - set => SetProperty(ref _isLoading, value); - } + get; + set => SetProperty(ref field, value); + } = false; public string Message { - get => _message; - set => SetProperty(ref _message, value); - } + get; + set => SetProperty(ref field, value); + } = string.Empty; + + public string Mail + { + get; + set => SetProperty(ref field, value); + } = string.Empty; + public string Category { - get => _category; - set => SetProperty(ref _category, value); + get; + set => SetProperty(ref field, value); } + public string ErrorText { - get => _errorText; - set => SetProperty(ref _errorText, value); - } + get; + set => SetProperty(ref field, value); + } = string.Empty; public async Task SendFeedbackAsync(Window window) { @@ -66,7 +70,7 @@ public async Task SendFeedbackAsync(Window window) } IsLoading = true; - Result = await _loginService.SendFeedbackAsync(Category, Message); + Result = await _loginService.SendFeedbackAsync(Category, Message, Mail); IsLoading = false; window.Close(); } diff --git a/src/OneWare.CloudIntegration/Views/OneWareCloudAccountFlyoutView.axaml b/src/OneWare.CloudIntegration/Views/OneWareCloudAccountFlyoutView.axaml index 2d0c9d53..64658833 100644 --- a/src/OneWare.CloudIntegration/Views/OneWareCloudAccountFlyoutView.axaml +++ b/src/OneWare.CloudIntegration/Views/OneWareCloudAccountFlyoutView.axaml @@ -23,7 +23,7 @@ diff --git a/src/OneWare.CloudIntegration/Views/SendFeedbackView.axaml b/src/OneWare.CloudIntegration/Views/SendFeedbackView.axaml index e1f8708a..a3c9dfa5 100644 --- a/src/OneWare.CloudIntegration/Views/SendFeedbackView.axaml +++ b/src/OneWare.CloudIntegration/Views/SendFeedbackView.axaml @@ -8,7 +8,7 @@ mc:Ignorable="d" d:DesignWidth="300" SizeToContent="Height" PrefWidth="360" Padding="4" x:Class="OneWare.CloudIntegration.Views.SendFeedbackView" x:DataType="viewModels:FeedbackViewModel" - CustomIcon="{DynamicResource VSImageLib.FeedbackBubble_16x}" + CustomIcon="{DynamicResource Unicons.CommentMessage}" WindowStartupLocation="CenterOwner" MinHeight="340" Title="{Binding Title}"> @@ -55,6 +55,10 @@ SelectedItem="{Binding Category}" /> + + + + diff --git a/src/OneWare.Core/Styles/Icons.axaml b/src/OneWare.Core/Styles/Icons.axaml index 665c3da3..dd240b28 100644 --- a/src/OneWare.Core/Styles/Icons.axaml +++ b/src/OneWare.Core/Styles/Icons.axaml @@ -24,17 +24,9 @@ Geometry="M14,12 L14,11 L13.17,11 C13.14,10.89 13.1,10.79 13.05,10.7 L13.64,10.1 L12.93,9.395 L12.35,9.979 C12.24,9.917 12.12,9.869 12,9.832 L12,9 L11,9 L11,9.83 C10.89,9.866 10.78,9.91 10.68,9.966 L10.1,9.397 L9.397,10.1 L9.966,10.67 C9.91,10.78 9.866,10.88 9.83,11 L9,11 L9,12 L9.83,12 C9.867,12.12 9.917,12.24 9.979,12.35 L9.397,12.93 L10.1,13.64 L10.7,13.04 C10.79,13.1 10.89,13.14 11,13.17 L11,14 L12,14 L12,13.17 C12.12,13.13 12.22,13.09 12.32,13.03 L12.93,13.64 L13.64,12.93 L13.03,12.32 C13.09,12.22 13.13,12.11 13.17,12 L14,12 z M11.5,12.25 C11.08,12.25 10.75,11.91 10.75,11.5 C10.75,11.08 11.08,10.75 11.5,10.75 C11.91,10.75 12.25,11.08 12.25,11.5 C12.25,11.91 11.91,12.25 11.5,12.25 z M16,11.5 C16,9.182 14.25,7.278 12,7.029 L12,2.792 L9.206,0 L0,0 L0,16 L12,16 L12,15.97 C14.25,15.72 16,13.82 16,11.5 z M8.998,1.206 L10.79,3 L8.998,3 L8.998,1.206 z M1,15 L1,0.9984 L8,0.9984 L8,4 L11,4 L11,7.029 C8.749,7.278 7,9.184 7,11.5 C7,12.92 7.654,14.18 8.675,15 L1,15 z M11.5,14.94 C9.6,14.94 8.062,13.4 8.058,11.5 C8.062,9.6 9.6,8.062 11.5,8.058 C13.4,8.062 14.94,9.6 14.94,11.5 C14.94,13.4 13.4,14.94 11.5,14.94 z" /> - - - - - - - - + + + From 796dd15b5db2d37c4be0b29c0b4cd12718ebaa21 Mon Sep 17 00:00:00 2001 From: Matthias Schanzenbach Date: Mon, 12 Jan 2026 16:50:27 +0100 Subject: [PATCH 2/3] show only the email field, if the user is not authenticated --- .../OneWareCloudIntegrationModule.cs | 3 ++- src/OneWare.CloudIntegration/ViewModels/FeedbackViewModel.cs | 5 ++++- src/OneWare.CloudIntegration/Views/SendFeedbackView.axaml | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/OneWare.CloudIntegration/OneWareCloudIntegrationModule.cs b/src/OneWare.CloudIntegration/OneWareCloudIntegrationModule.cs index 1df8e2b4..3a1d22a3 100644 --- a/src/OneWare.CloudIntegration/OneWareCloudIntegrationModule.cs +++ b/src/OneWare.CloudIntegration/OneWareCloudIntegrationModule.cs @@ -61,8 +61,9 @@ public static async Task OpenFeedbackDialogAsync() { var windowService = ContainerLocator.Container.Resolve(); var loginService = ContainerLocator.Container.Resolve(); + var accountSetting = ContainerLocator.Container.Resolve(); - var dataContext = new FeedbackViewModel(loginService); + var dataContext = new FeedbackViewModel(loginService, accountSetting); await windowService.ShowDialogAsync(new SendFeedbackView() { DataContext = dataContext diff --git a/src/OneWare.CloudIntegration/ViewModels/FeedbackViewModel.cs b/src/OneWare.CloudIntegration/ViewModels/FeedbackViewModel.cs index 50a2e988..a5c38321 100644 --- a/src/OneWare.CloudIntegration/ViewModels/FeedbackViewModel.cs +++ b/src/OneWare.CloudIntegration/ViewModels/FeedbackViewModel.cs @@ -1,6 +1,7 @@ using System.Collections.ObjectModel; using Avalonia.Controls; using OneWare.CloudIntegration.Services; +using OneWare.CloudIntegration.Settings; using OneWare.Essentials.ViewModels; namespace OneWare.CloudIntegration.ViewModels; @@ -11,15 +12,17 @@ public class FeedbackViewModel : FlexibleWindowViewModelBase private string _header = string.Empty; - public FeedbackViewModel(OneWareCloudLoginService loginService) + public FeedbackViewModel(OneWareCloudLoginService loginService, OneWareCloudAccountSetting setting) { _loginService = loginService; + UserIsAuthenticated = setting.IsLoggedIn; Title = $"Send Feedback"; Category = "General Feedback"; } public bool? Result { get; private set; } + public bool UserIsAuthenticated { get; private set; } public ObservableCollection Categories { get; } = [ "General Feedback", "Bug Report", diff --git a/src/OneWare.CloudIntegration/Views/SendFeedbackView.axaml b/src/OneWare.CloudIntegration/Views/SendFeedbackView.axaml index a3c9dfa5..5e4a5869 100644 --- a/src/OneWare.CloudIntegration/Views/SendFeedbackView.axaml +++ b/src/OneWare.CloudIntegration/Views/SendFeedbackView.axaml @@ -55,7 +55,7 @@ SelectedItem="{Binding Category}" /> - + From d7faf486f579eac8fbda796605286a4263baa0e0 Mon Sep 17 00:00:00 2001 From: Matthias Schanzenbach Date: Mon, 12 Jan 2026 17:19:57 +0100 Subject: [PATCH 3/3] renamed the field Email according to the receiver --- .../Services/OneWareCloudLoginService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/OneWare.CloudIntegration/Services/OneWareCloudLoginService.cs b/src/OneWare.CloudIntegration/Services/OneWareCloudLoginService.cs index d3450ac2..bf985f52 100644 --- a/src/OneWare.CloudIntegration/Services/OneWareCloudLoginService.cs +++ b/src/OneWare.CloudIntegration/Services/OneWareCloudLoginService.cs @@ -257,7 +257,7 @@ public async Task SendFeedbackAsync(string category, string message, strin { Category = category, Message = message, - Mail = mail + Email = mail }); var restClient =