Skip to content

Conversation

@EnesEfeTokta
Copy link
Owner

This pull request introduces a series of changes to enhance the functionality and user experience of the FinTrack application. The updates primarily focus on adding new settings-related features, creating corresponding view models and views, and improving the styling of UI components. Below is a categorized summary of the most important changes:

Settings Feature Enhancements:

  • Dependency Injection Updates: Added transient services for new view models (ProfileSettingsContentViewModel, SecuritySettingsContentViewModel, NotificationSettingsContentViewModel, and AppSettingsContentViewModel) and the SettingsView to ConfigureServices in FinTrack/App.xaml.cs.
  • New View Models:
    • Created AppSettingsContentViewModel to manage application appearance and currency settings, including initialization logic and a save command.
    • Created NotificationSettingsContentViewModel to handle notification preferences, such as desktop notifications and email settings.
    • Created ProfileSettingsContentViewModel to manage user profile information like name, email, and profile photo.
    • Created SecuritySettingsContentViewModel for handling password changes.

Enum and Model Additions:

  • Enums for Settings:
    • Added AppearanceType enum for light, dark, and system default modes.
    • Added BaseCurrencyType enum for supported currencies like USD, EUR, and GBP.
    • Added NotificationSettingsType enum for notification categories such as spending limit warnings and weekly summaries.
  • Notification Model: Created NotificationSettingItemModel to represent individual notification settings with type and enabled status.

UI and Styling Improvements:

  • Modern Styles: Added a new ModernCheckBoxStyle to improve the appearance of checkboxes across the application.
  • App Settings View:
    • Created AppSettingsContentView.xaml and its code-behind file to display and manage application settings, including appearance and currency options. [1] [2]

Settings Navigation:

  • Settings ViewModel Updates:
    • Enhanced SettingsViewModel to support navigation between different settings pages (Profile, Security, Notifications, and App) using a command.

…w UI

Introduced separate UserControls for profile, security, notification, and application settings, each with their own XAML and code-behind. Updated SettingsView.xaml to use a ContentControl that switches between these views based on selected RadioButton, and refactored membership plan descriptions to English. Added a modern CheckBox style and registered new views in the dependency injection container.
…ew models

Introduced new ViewModels for profile, security, notification, and app settings, and updated SettingsViewModel to manage navigation between them. Added enums for appearance, currency, and notification types, and a model for notification settings. Refactored XAML views to bind to new ViewModels and use data templates for dynamic content. Improved dependency injection setup and updated UI bindings for better MVVM compliance.
@EnesEfeTokta EnesEfeTokta requested a review from Copilot July 9, 2025 11:13
@EnesEfeTokta EnesEfeTokta self-assigned this Jul 9, 2025
@EnesEfeTokta EnesEfeTokta added the enhancement New feature or request label Jul 9, 2025
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a full settings UI (Profile, Security, Notifications, App), registers the new view models and views for DI, and enhances membership plan cards and checkbox styles.

  • Introduces DataTemplates and navigation in SettingsView.xaml
  • Creates content views and view models for each settings page
  • Binds membership selection commands and adds a modern checkbox style
  • Registers all new components in App.xaml.cs

Reviewed Changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated no comments.

Show a summary per file
File Description
FinTrack/Views/SettingsView.xaml Added settings navigation templates and updated membership cards with bindings
FinTrack/Views/SecuritySettingsContentView.xaml.cs New code‐behind for security settings view
FinTrack/Views/SecuritySettingsContentView.xaml New XAML for security settings layout
FinTrack/Views/ProfileSettingsContentView.xaml.cs New code‐behind for profile settings view
FinTrack/Views/ProfileSettingsContentView.xaml New XAML for profile settings layout
FinTrack/Views/NotificationSettingsContentView.xaml.cs New code‐behind for notification settings view
FinTrack/Views/NotificationSettingsContentView.xaml New XAML for notification settings layout
FinTrack/Views/AppSettingsContentView.xaml.cs New code‐behind for app settings view
FinTrack/Views/AppSettingsContentView.xaml New XAML for app settings layout
FinTrack/ViewModels/SettingsViewModel.cs Updated to manage page switching and membership buttons
FinTrack/ViewModels/SecuritySettingsContentViewModel.cs New view model for security settings
FinTrack/ViewModels/ProfileSettingsContentViewModel.cs New view model for profile settings
FinTrack/ViewModels/NotificationSettingsContentViewModel.cs New view model for notification settings
FinTrack/ViewModels/AppSettingsContentViewModel.cs New view model for app settings
FinTrack/Styles/ModernStyles.xaml Added ModernCheckBoxStyle
FinTrack/Models/Settings/NotificationSettingItemModel.cs New model for notification settings items
FinTrack/Enums/NotificationSettingsType.cs New enum for notification categories
FinTrack/Enums/BaseCurrencyType.cs New enum for supported currencies
FinTrack/Enums/AppearanceType.cs New enum for appearance modes
FinTrack/App.xaml.cs Registered new views and view models in DI container
Comments suppressed due to low confidence (6)

FinTrack/ViewModels/AppSettingsContentViewModel.cs:17

  • [nitpick] The property isFirstOpening is unclear. Consider renaming to launchOnStartup or similar to reflect its purpose (start app with OS).
        private bool isFirstOpening = true;

FinTrack/Views/AppSettingsContentView.xaml:23

  • The ViewModel does not declare a SelectedAppearanceType property, and using Mode=OneWay prevents UI selection from updating the ViewModel. Add a SelectedAppearanceType property to the ViewModel and change the binding to Mode=TwoWay.
                      ItemsSource="{Binding AppearanceTypes}" SelectedItem="{Binding SelectedAppearanceType, Mode=OneWay}">

FinTrack/Views/AppSettingsContentView.xaml:33

  • The ViewModel does not declare a SelectedCurrencyType property, and using Mode=OneWay prevents user selection from persisting. Add a SelectedCurrencyType property to the ViewModel and change the binding to Mode=TwoWay.
                      ItemsSource="{Binding CurrencyTypes}" SelectedItem="{Binding SelectedCurrencyType, Mode=OneWay}">

FinTrack/Views/NotificationSettingsContentView.xaml:27

  • The model defines IsEnabled, not IsSelected, so this binding will fail. Update the binding to IsChecked="{Binding IsEnabled, Mode=TwoWay}".
                                  IsChecked="{Binding IsSelected, Mode=TwoWay}"

FinTrack/ViewModels/NotificationSettingsContentViewModel.cs:1

  • LINQ methods (Where, Select) are used but using System.Linq; is missing, causing compilation errors. Add using System.Linq; at the top.
using CommunityToolkit.Mvvm.ComponentModel;

FinTrack/ViewModels/SettingsViewModel.cs:86

  • [nitpick] The status text uses Turkish (Seçili), but the UI content elsewhere is in English. Extract strings into resources and ensure consistent localization.
            FreeButtonStatus = "Seçili";

@EnesEfeTokta EnesEfeTokta merged commit 659c96b into main Jul 9, 2025
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants