Add gtk separators

This commit is contained in:
bleakgrey 2018-04-18 12:13:22 +03:00
parent ff76376aad
commit c404f4ab65
5 changed files with 52 additions and 22 deletions

View File

@ -15,13 +15,6 @@
background:none;
}
.status{
border-bottom: 1px solid #cecece;
}
.status:last-child{
border-bottom:none;
}
.toot-text{
background: none;
}

View File

@ -26,9 +26,9 @@ public class Tootle.HomeView : Tootle.AbstractView {
base (true);
this.timeline = timeline;
this.pars = pars;
show_all();
view.remove.connect (on_remove);
AccountManager.instance.changed_current.connect(on_account_changed);
// var s = new Status(1);
@ -45,11 +45,23 @@ public class Tootle.HomeView : Tootle.AbstractView {
}
public void prepend(Status status){ //TODO: clear all on account switch
var separator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);
separator.show ();
var widget = new StatusWidget(status);
widget.separator = separator;
widget.rebind (status);
view.pack_start(separator, false, false, 0);
view.pack_start(widget, false, false, 0);
}
public virtual void on_remove (Widget widget){
if (!(widget is StatusWidget))
return;
//debug ("removed");
}
public virtual void on_account_changed (Account? account){
if(account == null)
return;

View File

@ -23,6 +23,7 @@ public class Tootle.NotificationsView : Tootle.AbstractView {
base (true);
show_all();
view.remove.connect (on_remove);
AccountManager.instance.changed_current.connect(on_account_changed);
}
@ -35,11 +36,23 @@ public class Tootle.NotificationsView : Tootle.AbstractView {
}
public void prepend(Notification notification){
var separator = new Gtk.Separator (Gtk.Orientation.HORIZONTAL);
separator.show ();
var widget = new NotificationWidget(notification);
widget.separator = separator;
view.pack_start(separator, false, false, 0);
view.pack_start(widget, false, false, 0);
image.icon_name = "notification-new-symbolic";
}
public virtual void on_remove (Widget widget){
if (!(widget is NotificationWidget))
return;
//debug ("removed");
}
public virtual void on_account_changed (Account? account){
if(account == null)
return;

View File

@ -5,9 +5,10 @@ public class Tootle.NotificationWidget : Gtk.Grid {
public Notification notification;
public Gtk.Separator? separator;
private Gtk.Image image;
private Gtk.Label label;
private Gtk.Button dismiss;
private Gtk.Button dismiss_button;
private StatusWidget? status_widget;
construct {
@ -20,17 +21,17 @@ public class Tootle.NotificationWidget : Gtk.Grid {
label.hexpand = true;
label.halign = Gtk.Align.START;
label.use_markup = true;
dismiss = new Gtk.Button.from_icon_name ("close-symbolic", Gtk.IconSize.SMALL_TOOLBAR);
dismiss.tooltip_text = _("Dismiss");
dismiss.clicked.connect (() => {
dismiss_button = new Gtk.Button.from_icon_name ("close-symbolic", Gtk.IconSize.SMALL_TOOLBAR);
dismiss_button.tooltip_text = _("Dismiss");
dismiss_button.clicked.connect (() => {
var parent = this.get_parent () as Gtk.Box;
parent.remove (this);
dismiss_notification (this.notification);
//dismiss (this.notification);
});
attach(image, 0, 0, 1, 1);
attach(label, 1, 0, 1, 1);
attach(dismiss, 2, 0, 1, 1);
attach(image, 1, 2);
attach(label, 2, 2);
attach(dismiss_button, 3, 2);
show_all();
}
@ -43,11 +44,16 @@ public class Tootle.NotificationWidget : Gtk.Grid {
if (notification.status != null){
status_widget = new StatusWidget (this.notification.status);
status_widget.rebind (this.notification.status);
attach(status_widget, 0, 1, 3, 1);
attach(status_widget, 1, 3, 3, 1);
}
destroy.connect (() => {
if(separator != null)
separator.destroy ();
});
}
public static Soup.Message dismiss_notification (Notification notification){
public static Soup.Message dismiss (Notification notification){
var url = Settings.instance.instance_url;
url += "api/v1/notifications/dismiss";
url += "?id=" + notification.id.to_string ();

View File

@ -5,6 +5,7 @@ public class Tootle.StatusWidget : Gtk.Grid {
public Status status;
public Gtk.Separator? separator;
public Granite.Widgets.Avatar avatar;
Gtk.Label user;
Gtk.Label content;
@ -59,16 +60,21 @@ public class Tootle.StatusWidget : Gtk.Grid {
counters.add(favorites);
counters.show_all ();
attach(avatar, 0, 0, 1, 3);
attach(user, 1, 1, 1, 1);
attach(content, 1, 2, 1, 1);
attach(counters, 1, 3, 1, 1);
attach(avatar, 1, 0, 1, 3);
attach(user, 2, 1, 1, 1);
attach(content, 2, 2, 1, 1);
attach(counters, 2, 3, 1, 1);
show_all(); //TODO: display conversations
}
public StatusWidget (Status status) {
this.status = status;
get_style_context ().add_class ("status");
destroy.connect (() => {
if(separator != null)
separator.destroy ();
});
}
public void rebind (Status status = this.status){