Skip to content

Commit 895918e

Browse files
committed
GNOME - Use Adw.Breakpoint for compact view
1 parent 4441295 commit 895918e

File tree

3 files changed

+21
-61
lines changed

3 files changed

+21
-61
lines changed

NickvisionMoney.GNOME/Blueprints/account_view.blp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,6 @@ Adw.BreakpointBin _root {
426426
orientation: vertical;
427427

428428
Adw.PreferencesGroup _transactionsGroup {
429-
title: _("Transactions");
430429
margin-top: 8;
431430
margin-start: 10;
432431
margin-end: 10;

NickvisionMoney.GNOME/Views/AccountView.cs

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Nickvision.GirExt;
1+
using Nickvision.GirExt;
22
using NickvisionMoney.GNOME.Controls;
33
using NickvisionMoney.GNOME.Helpers;
44
using NickvisionMoney.Shared.Controllers;
@@ -49,6 +49,7 @@ public struct MoneyDateTime
4949
private readonly AccountViewController _controller;
5050
private bool _isAccountLoading;
5151
private readonly MainWindow _parentWindow;
52+
private readonly Adw.Breakpoint _compactBreakpoint;
5253
private readonly Gtk.Adjustment _transactionsScrollAdjustment;
5354
private readonly Gtk.ShortcutController _shortcutController;
5455
private readonly Action<string> _updateSubtitle;
@@ -114,7 +115,6 @@ public AccountView(Gtk.Builder builder, AccountViewController controller, MainWi
114115
{
115116
_controller = controller;
116117
_parentWindow = parentWindow;
117-
_parentWindow.WidthChanged += OnWindowWidthChanged;
118118
_isAccountLoading = false;
119119
_updateSubtitle = updateSubtitle;
120120
_groupRows = new Dictionary<uint, GroupRow>();
@@ -147,6 +147,24 @@ public AccountView(Gtk.Builder builder, AccountViewController controller, MainWi
147147
btnFlapToggle.BindProperty("active", _splitView, "show-sidebar", GObject.BindingFlags.Bidirectional | GObject.BindingFlags.SyncCreate);
148148
btnGraphToggle.BindProperty("active", _visualizeGroup, "visible", GObject.BindingFlags.Bidirectional | GObject.BindingFlags.SyncCreate);
149149
btnGraphToggle.BindProperty("active", _visualizeSeparator, "visible", GObject.BindingFlags.Bidirectional | GObject.BindingFlags.SyncCreate);
150+
//Compact Breakpoint
151+
_compactBreakpoint = Adw.Breakpoint.New(Adw.BreakpointCondition.Parse("max-width: 450sp"));
152+
_compactBreakpoint.AddSetter(_splitView, "collapsed", GObject.Value.From(true));
153+
_compactBreakpoint.OnApply += (sender, e) => {
154+
_transactionsGroup.SetTitle("");
155+
foreach (var pair in _transactionRows)
156+
{
157+
pair.Value.IsSmall = true;
158+
}
159+
};
160+
_compactBreakpoint.OnUnapply += (sender, e) => {
161+
_transactionsGroup.SetTitle(_n("{0} transaction", "{0} transactions", _controller.FilteredTransactionsCount, _controller.FilteredTransactionsCount));
162+
foreach (var pair in _transactionRows)
163+
{
164+
pair.Value.IsSmall = false;
165+
}
166+
};
167+
this.AddBreakpoint(_compactBreakpoint);
150168
//Search Description Text
151169
_searchDescriptionEntry.OnSearchChanged += (sender, e) => _controller.SearchDescription = _searchDescriptionEntry.GetText();
152170
//Account Income
@@ -427,7 +445,6 @@ public async Task StartupAsync()
427445
}
428446
OnToggleGroups();
429447
OnToggleTags();
430-
OnWindowWidthChanged(null, new WidthChangedEventArgs(_parentWindow.CompactMode));
431448
if(_controller.TransactionReminders.Count > 0)
432449
{
433450
var remindersDialog = new RemindersDialog(_parentWindow, _controller.AppInfo.ID, _("Upcoming transactions"), _controller.TransactionReminders);
@@ -627,7 +644,7 @@ private bool CreateTransactionRow(ModelEventArgs<Transaction> e)
627644
{
628645
var row = new TransactionRow(e.Model, _controller.Groups, _controller.CultureForNumberString, _controller.UseNativeDigits, _controller.TransactionDefaultColor);
629646
row.EditTriggered += EditTransaction;
630-
row.IsSmall = _parentWindow.DefaultWidth < 450;
647+
row.IsSmall = this.GetCurrentBreakpoint() == _compactBreakpoint;
631648
row.SetVisible(e.Active);
632649
if (e.Position != null)
633650
{
@@ -1316,25 +1333,4 @@ private void OnDateRangeEndMonthChanged()
13161333
/// Occurs when the date range's end day is changed
13171334
/// </summary>
13181335
private void OnDateRangeEndDayChanged() => _controller.FilterEndDate = new DateOnly(int.Parse(_controller.YearsForRangeFilter[(int)_endYearDropDown.GetSelected()]), (int)_endMonthDropDown.GetSelected() + 1, (int)_endDayDropDown.GetSelected() + 1);
1319-
1320-
/// <summary>
1321-
/// Occurs when the window's width is changed
1322-
/// </summary>
1323-
/// <param name="sender">object?</param>
1324-
/// <param name="e">WidthChangedEventArgs</param>
1325-
private void OnWindowWidthChanged(object? sender, WidthChangedEventArgs e)
1326-
{
1327-
foreach (var pair in _transactionRows)
1328-
{
1329-
pair.Value.IsSmall = e.SmallWidth;
1330-
}
1331-
if (e.SmallWidth)
1332-
{
1333-
_transactionsGroup.SetTitle("");
1334-
}
1335-
else
1336-
{
1337-
_transactionsGroup.SetTitle(_n("{0} transaction", "{0} transactions", _controller.FilteredTransactionsCount, _controller.FilteredTransactionsCount));
1338-
}
1339-
}
13401336
}

NickvisionMoney.GNOME/Views/MainWindow.cs

Lines changed: 0 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,6 @@
1515

1616
namespace NickvisionMoney.GNOME.Views;
1717

18-
/// <summary>
19-
/// EventArgs for WidthChanged Event
20-
/// </summary>
21-
public class WidthChangedEventArgs : EventArgs
22-
{
23-
public bool SmallWidth { get; init; }
24-
25-
public WidthChangedEventArgs(bool smallWidth) => SmallWidth = smallWidth;
26-
}
27-
2818
/// <summary>
2919
/// The MainWindow for the application
3020
/// </summary>
@@ -61,11 +51,6 @@ public partial class MainWindow : Adw.ApplicationWindow
6151

6252
public bool CompactMode { get; private set; }
6353

64-
/// <summary>
65-
/// Occurs when the window's width is changed
66-
/// </summary>
67-
public event EventHandler<WidthChangedEventArgs>? WidthChanged;
68-
6954
private MainWindow(Gtk.Builder builder, MainWindowController controller, Adw.Application application) : base(builder.GetPointer("_root"), false)
7055
{
7156
//Window Settings
@@ -97,13 +82,6 @@ private MainWindow(Gtk.Builder builder, MainWindowController controller, Adw.App
9782
return false;
9883
});
9984
};
100-
OnNotify += (sender, e) =>
101-
{
102-
if (e.Pspec.GetName() == "default-width" || e.Pspec.GetName() == "maximized")
103-
{
104-
OnWidthChanged();
105-
}
106-
};
10785
_dashboardButton.OnToggled += OnToggleDashboard;
10886
//Header Bar
10987
_windowTitle.SetTitle(_controller.AppInfo.ShortName);
@@ -596,17 +574,4 @@ private Adw.ActionRow CreateRecentAccountRow(RecentAccount recentAccount, bool o
596574
};
597575
return row;
598576
}
599-
600-
/// <summary>
601-
/// Occurs when the window's width is changed
602-
/// </summary>
603-
public void OnWidthChanged()
604-
{
605-
var compactModeNeeded = DefaultWidth < 450 && !IsMaximized();
606-
if (compactModeNeeded != CompactMode)
607-
{
608-
CompactMode = !CompactMode;
609-
WidthChanged?.Invoke(this, new WidthChangedEventArgs(compactModeNeeded));
610-
}
611-
}
612577
}

0 commit comments

Comments
 (0)