From 4eff88a51b4a6fece6422d6060260164659a6cc6 Mon Sep 17 00:00:00 2001 From: James Magahern Date: Mon, 28 Apr 2025 17:29:32 -0700 Subject: [PATCH] initial commit: barebones --- .gitignore | 1 + meson.build | 7 +++++++ src/conversation-list-view.vala | 32 ++++++++++++++++++++++++++++++++ src/kordophone-application.vala | 24 ++++++++++++++++++++++++ src/main-window.vala | 16 ++++++++++++++++ src/meson.build | 16 ++++++++++++++++ 6 files changed, 96 insertions(+) create mode 100644 .gitignore create mode 100644 meson.build create mode 100644 src/conversation-list-view.vala create mode 100644 src/kordophone-application.vala create mode 100644 src/main-window.vala create mode 100644 src/meson.build diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..567609b --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/ diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..b6281f2 --- /dev/null +++ b/meson.build @@ -0,0 +1,7 @@ +project('kordophone', 'vala', + version : '0.1.0', + meson_version : '>=0.56.0', + default_options : ['warning_level=2'] +) + +subdir('src') \ No newline at end of file diff --git a/src/conversation-list-view.vala b/src/conversation-list-view.vala new file mode 100644 index 0000000..99f9c3f --- /dev/null +++ b/src/conversation-list-view.vala @@ -0,0 +1,32 @@ +using Adw; +using Gtk; + +public class ConversationListView : Adw.Bin +{ + private Adw.ToolbarView container; + private ListBox list_box; + private Adw.HeaderBar header_bar; + + public ConversationListView () { + container = new Adw.ToolbarView (); + set_child (container); + + list_box = new ListBox (); + list_box.add_css_class ("boxed-list"); + list_box.set_selection_mode (SelectionMode.SINGLE); + container.set_content (list_box); + + header_bar = new Adw.HeaderBar (); + header_bar.set_title_widget (new Label ("Kordophone")); + container.add_top_bar (header_bar); + + // Populate with test data + for (int i = 0; i < 10; i++) { + var row = new ActionRow (); + row.title = "Conversation %d".printf(i); + list_box.append (row); + } + } + + +} \ No newline at end of file diff --git a/src/kordophone-application.vala b/src/kordophone-application.vala new file mode 100644 index 0000000..fef0eaa --- /dev/null +++ b/src/kordophone-application.vala @@ -0,0 +1,24 @@ +using Adw; +using Gtk; + +public class KordophoneApp : Adw.Application +{ + private MainWindow window; + + public KordophoneApp () { + Object (application_id: "net.buzzert.kordophone2", flags: ApplicationFlags.FLAGS_NONE); + } + + protected override void activate () { + window = new MainWindow (); + window.set_default_size (1200, 1000); + window.application = this; + + window.present (); + } + + public static int main (string[] args) { + var app = new KordophoneApp (); + return app.run (args); + } +} \ No newline at end of file diff --git a/src/main-window.vala b/src/main-window.vala new file mode 100644 index 0000000..6b45613 --- /dev/null +++ b/src/main-window.vala @@ -0,0 +1,16 @@ +using Adw; +using Gtk; + +public class MainWindow : Adw.ApplicationWindow +{ + public MainWindow () { + Object (title: "Kordophone"); + + var split_view = new NavigationSplitView (); + split_view.set_min_sidebar_width (400); + set_content (split_view); + + var conversation_list_page = new NavigationPage (new ConversationListView (), "Conversations"); + split_view.sidebar = conversation_list_page; + } +} \ No newline at end of file diff --git a/src/meson.build b/src/meson.build new file mode 100644 index 0000000..1c0192b --- /dev/null +++ b/src/meson.build @@ -0,0 +1,16 @@ +dependencies = [ + dependency('gtk4', required : true), + dependency('libadwaita-1', required : true) +] + +sources = [ + 'kordophone-application.vala', + 'main-window.vala', + 'conversation-list-view.vala', +] + +executable('kordophone', + sources, + dependencies : dependencies, + install : true +) \ No newline at end of file