Commit 4964f481 authored by Roman Alifanov's avatar Roman Alifanov

rewrite to NavigstionView

parent 3aea104e
......@@ -50,7 +50,9 @@ func (su *SystemUpdater) onActivate() {
upds := apm.NewUpdatesSources(conn, obj)
window := GetSystemUpdaterWindow(su.AppGTK)
window := GetSystemUpdaterWindow()
window.SetApplication(su.AppGTK)
for _, us := range upds {
window.FillWithChanges(su, us)
......@@ -63,28 +65,26 @@ func (su *SystemUpdater) onActivate() {
var SystemUpdaterWindowUIXML string
type SystemUpdaterWindow struct {
win *adw.ApplicationWindow
*adw.ApplicationWindow
navView *adw.NavigationView
listbox *gtk.ListBox
}
var mainWin *SystemUpdaterWindow
func GetSystemUpdaterWindow(app *gtk.Application) *SystemUpdaterWindow {
func GetSystemUpdaterWindow() *SystemUpdaterWindow {
if mainWin == nil {
builder := bldr.New(SystemUpdaterWindowUIXML)
win := bldr.GetObject[*adw.ApplicationWindow](builder, "main_window")
win.SetApplication(app)
navView := bldr.GetObject[*adw.NavigationView](builder, "navigationv")
listbox := bldr.GetObject[*gtk.ListBox](builder, "updates_listbox")
mainWin = &SystemUpdaterWindow{
win: win,
navView: navView,
listbox: listbox,
win,
navView,
listbox,
}
}
return mainWin
......@@ -94,10 +94,6 @@ func (sw *SystemUpdaterWindow) FillWithChanges(su *SystemUpdater, us apm.Updater
sw.listbox.Append(NewUpdateRow("System packages", us.GetPackageChanges()))
}
func (sw *SystemUpdaterWindow) Present() {
sw.win.Present()
}
func SystemUpdaterApplication(su *SystemUpdater) {
su.App.ConnectActivate(func() {
su.onActivate()
......
......@@ -2,8 +2,12 @@ package main
import (
"SystemUpdater/lib/apm"
bldr "SystemUpdater/lib/gtks/builder"
_ "embed"
"github.com/diamondburned/gotk4-adwaita/pkg/adw"
"github.com/diamondburned/gotk4/pkg/gtk/v4"
)
func NewPackageRow(item string, ver string) *adw.ActionRow {
......@@ -13,9 +17,37 @@ func NewPackageRow(item string, ver string) *adw.ActionRow {
return row
}
func NewUpdateRow(name string, info apm.PackageChanges) *adw.ExpanderRow {
exrow := adw.NewExpanderRow()
exrow.SetTitle(name)
//go:embed listpage.ui
var SystemUpdaterListPageUIXML string
type SystemUpdaterListPage struct {
nav *adw.NavigationPage
listbox *gtk.ListBox
applyButton *adw.ButtonRow
}
func NewListPage() *SystemUpdaterListPage {
builder := bldr.New(SystemUpdaterListPageUIXML)
page := bldr.GetObject[*adw.NavigationPage](builder, "listpage")
listbox := bldr.GetObject[*gtk.ListBox](builder, "updates_listbox")
applyButton := bldr.GetObject[*adw.ButtonRow](builder, "apply_button")
return &SystemUpdaterListPage{page, listbox, applyButton}
}
func NewUpdateRow(name string, info apm.PackageChanges) *adw.ActionRow {
win := GetSystemUpdaterWindow()
urow := adw.NewActionRow()
urow.SetTitle(name)
urow.SetActivatable(true)
upage := NewListPage()
urow.ConnectActivated(func() {
win.navView.Push(upage.nav)
})
for title, pkgs := range map[string][]string{
"Upgraded Packages": info.UpgradedPackages,
......@@ -26,16 +58,23 @@ func NewUpdateRow(name string, info apm.PackageChanges) *adw.ExpanderRow {
continue
}
row := adw.NewExpanderRow()
row := adw.NewActionRow()
row.SetTitle(title)
row.SetActivatable(true)
page := NewListPage()
row.ConnectActivated(func() {
win.navView.Push(page.nav)
})
for _, p := range pkgs {
ar := adw.NewActionRow()
ar.SetTitle(p)
row.AddRow(ar)
page.listbox.Append(ar)
}
exrow.AddRow(row)
upage.listbox.Append(row)
}
return exrow
return urow
}
......@@ -3,12 +3,14 @@
<cambalache-project version="0.94.0" target_tk="gtk-4.0">
<ui>
(1,None,"window.ui","window.ui",None,None,None,None,"ximper-system-updater",None,None),
(2,None,None,"listpage.ui",None,None,None,None,"ximper-system-updater",None,None)
(2,None,None,"listpage.ui",None,None,None,None,"ximper-system-updater",None,None),
(5,None,"process-page.ui","process-page.ui",None,None,None,None,None,None,None)
</ui>
<ui_library>
(1,"gio","2.0",None),
(1,"gtk","4.0",None),
(1,"libadwaita","1.6",None)
(1,"libadwaita","1.6",None),
(5,"gtk","4.0",None)
</ui_library>
<object>
(1,1,"AdwApplicationWindow","main_window",None,None,None,None,0,None,None),
......@@ -58,7 +60,24 @@
(2,18,"GtkListBox",None,17,None,None,None,0,None,None),
(2,19,"AdwButtonRow","apply_button",18,None,None,None,0,None,None),
(2,23,"AdwHeaderBar","header_bar",2,None,"top",None,1,None,None),
(2,24,"GtkButton",None,23,None,"end",None,0,None,None)
(2,24,"GtkButton",None,23,None,"end",None,0,None,None),
(5,1,"AdwToolbarView","main_view",18,None,None,None,0,None,None),
(5,2,"AdwHeaderBar",None,1,None,"top",None,0,None,None),
(5,3,"AdwWindowTitle","window_title",2,None,None,None,0,None,None),
(5,4,"GtkScrolledWindow",None,1,None,None,None,1,None,None),
(5,5,"GtkStack","process_stack",4,None,None,None,0,None,None),
(5,6,"GtkStackPage",None,5,None,None,None,0,None,None),
(5,7,"AdwStatusPage","status_page",6,None,None,None,0,None,None),
(5,8,"AdwClamp",None,7,None,None,None,0,None,None),
(5,9,"GtkBox",None,8,None,None,None,0,None,None),
(5,10,"GtkListBox",None,9,None,None,None,0,None,None),
(5,11,"AdwExpanderRow",None,10,None,None,None,0,None,None),
(5,12,"GtkScrolledWindow",None,11,None,None,None,0,None,None),
(5,13,"GtkTextView","log_view",12,None,None,None,0,None,None),
(5,15,"GtkStackPage",None,5,None,None,None,1,None,None),
(5,16,"AdwStatusPage",None,15,None,None,None,0,None,None),
(5,17,"GtkButton","restart_button",16,None,None,None,0,None,None),
(5,18,"AdwNavigationPage","process_page",None,None,None,None,0,None,None)
</object>
<object_property>
(1,1,"GtkWidget","height-request","294",0,None,None,None,None,None,None,None,None),
......@@ -134,7 +153,34 @@
(2,17,"GtkWidget","margin-start","12",0,None,None,None,None,None,None,None,None),
(2,19,"AdwPreferencesRow","title","Update",1,None,None,None,None,None,None,None,None),
(2,24,"GtkActionable","action-name","app.about",0,None,None,None,None,None,None,None,None),
(2,24,"GtkButton","icon-name","help-about-symbolic",0,None,None,None,None,None,None,None,None)
(2,24,"GtkButton","icon-name","help-about-symbolic",0,None,None,None,None,None,None,None,None),
(5,1,"AdwToolbarView","content",None,0,None,None,None,4,None,None,None,None),
(5,2,"AdwHeaderBar","title-widget",None,0,None,None,None,3,None,None,None,None),
(5,3,"AdwWindowTitle","title","Updating",1,None,None,None,None,None,None,None,None),
(5,4,"GtkScrolledWindow","hscrollbar-policy","never",0,None,None,None,None,None,None,None,None),
(5,4,"GtkScrolledWindow","propagate-natural-height","true",0,None,None,None,None,None,None,None,None),
(5,6,"GtkStackPage","child",None,0,None,None,None,7,None,None,None,None),
(5,6,"GtkStackPage","name","default",0,None,None,None,None,None,None,None,None),
(5,7,"AdwStatusPage","title","The update process is underway...",1,None,None,None,None,None,None,None,None),
(5,8,"AdwClamp","maximum-size","500",0,None,None,None,None,None,None,None,None),
(5,9,"GtkBox","spacing","12",0,None,None,None,None,None,None,None,None),
(5,9,"GtkOrientable","orientation","vertical",0,None,None,None,None,None,None,None,None),
(5,10,"GtkListBox","selection-mode","none",0,None,None,None,None,None,None,None,None),
(5,11,"AdwPreferencesRow","title","Show more information",1,None,None,None,None,None,None,None,None),
(5,12,"GtkScrolledWindow","hscrollbar-policy","never",0,None,None,None,None,None,None,None,None),
(5,12,"GtkScrolledWindow","propagate-natural-height","true",0,None,None,None,None,None,None,None,None),
(5,12,"GtkWidget","height-request","300",0,None,None,None,None,None,None,None,None),
(5,13,"GtkTextView","cursor-visible","false",0,None,None,None,None,None,None,None,None),
(5,13,"GtkTextView","editable","false",0,None,None,None,None,None,None,None,None),
(5,13,"GtkTextView","wrap-mode","word-char",0,None,None,None,None,None,None,None,None),
(5,15,"GtkStackPage","child",None,0,None,None,None,16,None,None,None,None),
(5,15,"GtkStackPage","name","finish",0,None,None,None,None,None,None,None,None),
(5,16,"AdwStatusPage","description","Click on button below to restart device",1,None,None,None,None,None,None,None,None),
(5,16,"AdwStatusPage","icon-name","face-smile-big-symbolic",0,None,None,None,None,None,None,None,None),
(5,16,"AdwStatusPage","title","Updating complete!",1,None,None,None,None,None,None,None,None),
(5,17,"GtkButton","label","Reboot",1,None,None,None,None,None,None,None,None),
(5,17,"GtkWidget","halign","center",0,None,None,None,None,None,None,None,None),
(5,17,"GtkWidget","hexpand","false",0,None,None,None,None,None,None,None,None)
</object_property>
<object_data>
(1,12,"GtkStringList",1,1,None,None,None,None,None,None),
......@@ -162,7 +208,12 @@
(2,19,"GtkWidget",2,2,None,1,None,None,None,None),
(2,19,"GtkWidget",1,1,None,None,None,None,None,None),
(2,18,"GtkWidget",2,2,None,1,None,None,None,None),
(2,18,"GtkWidget",1,1,None,None,None,None,None,None)
(2,18,"GtkWidget",1,1,None,None,None,None,None,None),
(5,10,"GtkWidget",1,1,None,None,None,None,None,None),
(5,10,"GtkWidget",2,2,None,1,None,None,None,None),
(5,17,"GtkWidget",1,1,None,None,None,None,None,None),
(5,17,"GtkWidget",2,2,None,1,None,None,None,None),
(5,17,"GtkWidget",2,3,None,1,None,None,None,None)
</object_data>
<object_data_arg>
(1,9,"GtkWidget",2,2,"name","linked"),
......@@ -172,6 +223,9 @@
(2,9,"GtkWidget",2,2,"name","linked"),
(2,15,"GtkWidget",2,2,"name","boxed-list-separate"),
(2,19,"GtkWidget",2,2,"name","suggested-action"),
(2,18,"GtkWidget",2,2,"name","boxed-list")
(2,18,"GtkWidget",2,2,"name","boxed-list"),
(5,10,"GtkWidget",2,2,"name","boxed-list"),
(5,17,"GtkWidget",2,2,"name","pill"),
(5,17,"GtkWidget",2,3,"name","suggested-action")
</object_data_arg>
</cambalache-project>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment