Skip to content

Commit 2cb7f5d

Browse files
committed
Refactor views into separate files and introduce Sidebar component
1 parent 85b34f6 commit 2cb7f5d

11 files changed

Lines changed: 858 additions & 789 deletions

meson.build

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,21 +27,25 @@ add_project_arguments(
2727
)
2828

2929
sources = [
30-
'src/AddTagDialog.vala',
3130
'src/Application.vala',
3231
'src/DataManager.vala',
3332
'src/DataModels.vala',
34-
'src/InsightsView.vala',
33+
'src/dialogs/AddTagDialog.vala',
3534
'src/JsonObject.vala',
3635
'src/MapStyle.vala',
37-
'src/PlacesView.vala',
38-
'src/TagRow.vala',
39-
'src/EntryEditorView.vala',
40-
'src/Window.vala',
4136
'src/ReminderService.vala',
42-
'src/SettingsWindow.vala',
4337
'src/SettingsManager.vala',
38+
'src/SettingsWindow.vala',
39+
'src/views/DeletedEmptyStateView.vala',
40+
'src/views/EmptyStateView.vala',
41+
'src/views/EntriesView.vala',
42+
'src/views/EntryEditorView.vala',
43+
'src/views/InsightsView.vala',
44+
'src/views/PlacesView.vala',
45+
'src/views/Sidebar.vala',
4446
'src/WelcomeScreen.vala',
47+
'src/widgets/TagRow.vala',
48+
'src/Window.vala',
4549
]
4650

4751
dependencies = [

src/Window.vala

Lines changed: 54 additions & 782 deletions
Large diffs are not rendered by default.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
namespace Notejot {
2+
public class DeletedEmptyStateView : Gtk.Box {
3+
4+
private Gtk.Label header_label;
5+
6+
public DeletedEmptyStateView () {
7+
Object (
8+
orientation: Gtk.Orientation.VERTICAL,
9+
spacing: 0
10+
);
11+
12+
this.set_hexpand (true);
13+
this.add_css_class ("main-content");
14+
15+
var appbar = new He.AppBar ();
16+
appbar.show_left_title_buttons = false;
17+
this.append (appbar);
18+
19+
this.header_label = new Gtk.Label (_("Recently Deleted")) { halign = Gtk.Align.START };
20+
this.header_label.add_css_class ("header");
21+
this.append (this.header_label);
22+
23+
var deleted_content_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 10) {
24+
valign = Gtk.Align.CENTER,
25+
halign = Gtk.Align.CENTER,
26+
vexpand = true
27+
};
28+
deleted_content_box.add_css_class ("empty-state-view");
29+
30+
var deleted_title = new Gtk.Label (_("No Deleted Entries"));
31+
deleted_title.add_css_class ("empty-state-title");
32+
deleted_content_box.append (deleted_title);
33+
34+
var deleted_subtitle = new Gtk.Label (_("Deleted notes will appear here"));
35+
deleted_subtitle.add_css_class ("empty-state-subtitle");
36+
deleted_content_box.append (deleted_subtitle);
37+
38+
this.append (deleted_content_box);
39+
}
40+
41+
public void set_header_label (string text) {
42+
this.header_label.set_label (text);
43+
}
44+
}
45+
}

src/views/EmptyStateView.vala

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
namespace Notejot {
2+
public class EmptyStateView : Gtk.Box {
3+
4+
public signal void add_entry_clicked ();
5+
6+
private Gtk.Label header_label;
7+
8+
public EmptyStateView () {
9+
Object (
10+
orientation: Gtk.Orientation.VERTICAL,
11+
spacing: 0
12+
);
13+
14+
this.set_hexpand (true);
15+
this.add_css_class ("main-content");
16+
17+
var appbar = new He.AppBar ();
18+
appbar.show_left_title_buttons = false;
19+
this.append (appbar);
20+
21+
this.header_label = new Gtk.Label (_("No Entries")) { halign = Gtk.Align.START };
22+
this.header_label.add_css_class ("header");
23+
this.append (this.header_label);
24+
25+
var empty_content_box = new Gtk.Box (Gtk.Orientation.VERTICAL, 10) {
26+
valign = Gtk.Align.CENTER,
27+
halign = Gtk.Align.CENTER,
28+
vexpand = true
29+
};
30+
empty_content_box.add_css_class ("empty-state-view");
31+
32+
var empty_title = new Gtk.Label (_("No Entries"));
33+
empty_title.add_css_class ("empty-state-title");
34+
empty_content_box.append (empty_title);
35+
36+
var empty_subtitle = new Gtk.Label (_("Get started by adding your first entry"));
37+
empty_subtitle.add_css_class ("empty-state-subtitle");
38+
empty_content_box.append (empty_subtitle);
39+
40+
var add_first_entry_button = new He.Button ("list-add-symbolic", _("Add First Entry"));
41+
add_first_entry_button.is_pill = true;
42+
add_first_entry_button.set_halign (Gtk.Align.CENTER);
43+
add_first_entry_button.clicked.connect (() => {
44+
add_entry_clicked ();
45+
});
46+
empty_content_box.append (add_first_entry_button);
47+
48+
this.append (empty_content_box);
49+
}
50+
51+
public void set_header_label (string text) {
52+
this.header_label.set_label (text);
53+
}
54+
}
55+
}

0 commit comments

Comments
 (0)