2018-04-14 12:09:06 +00:00
|
|
|
using Gtk;
|
|
|
|
using Gdk;
|
|
|
|
|
|
|
|
public class Tootle.HomeView : Tootle.AbstractView {
|
|
|
|
|
|
|
|
Gtk.Box view;
|
|
|
|
Gtk.ScrolledWindow scroll;
|
|
|
|
|
|
|
|
private string timeline;
|
|
|
|
private string pars;
|
|
|
|
|
|
|
|
construct {
|
|
|
|
view = new Gtk.Box (Gtk.Orientation.VERTICAL, 0);
|
|
|
|
view.hexpand = true;
|
|
|
|
view.valign = Gtk.Align.START;
|
|
|
|
|
|
|
|
scroll = new Gtk.ScrolledWindow (null, null);
|
|
|
|
scroll.hexpand = true;
|
|
|
|
scroll.vexpand = true;
|
|
|
|
scroll.hscrollbar_policy = Gtk.PolicyType.NEVER;
|
|
|
|
scroll.add (view);
|
|
|
|
add (scroll);
|
|
|
|
}
|
|
|
|
|
|
|
|
public HomeView (string timeline = "home", string pars = "") {
|
|
|
|
base (true);
|
|
|
|
this.timeline = timeline;
|
|
|
|
this.pars = pars;
|
|
|
|
|
|
|
|
show_all();
|
2018-04-14 17:53:09 +00:00
|
|
|
|
|
|
|
AccountManager.instance.changed_current.connect(on_account_changed);
|
2018-04-14 12:09:06 +00:00
|
|
|
|
|
|
|
// var s = new Status(1);
|
|
|
|
// s.content = "Test content, wow!";
|
|
|
|
// prepend (s);
|
|
|
|
}
|
|
|
|
|
|
|
|
public override string get_icon () {
|
|
|
|
return "user-home-symbolic";
|
|
|
|
}
|
|
|
|
|
|
|
|
public override string get_name () {
|
|
|
|
return "Home Timeline";
|
|
|
|
}
|
|
|
|
|
2018-04-15 10:03:40 +00:00
|
|
|
public void prepend(Status status){ //TODO: clear all on account switch
|
2018-04-16 18:22:42 +00:00
|
|
|
var widget = new StatusWidget(status);
|
2018-04-14 12:09:06 +00:00
|
|
|
widget.rebind (status);
|
2018-04-16 20:36:57 +00:00
|
|
|
view.pack_start(widget, false, false, 0);
|
2018-04-14 12:09:06 +00:00
|
|
|
}
|
|
|
|
|
2018-04-14 17:53:09 +00:00
|
|
|
public virtual void on_account_changed (Account? account){
|
|
|
|
if(account == null)
|
|
|
|
return;
|
|
|
|
|
2018-04-14 12:09:06 +00:00
|
|
|
var url = Settings.instance.instance_url;
|
|
|
|
url += "api/v1/timelines/";
|
|
|
|
url += this.timeline;
|
|
|
|
url += this.pars;
|
|
|
|
|
|
|
|
var msg = new Soup.Message("GET", url);
|
|
|
|
NetManager.instance.queue(msg, (sess, mess) => {
|
|
|
|
try{
|
|
|
|
NetManager.parse_array (mess).foreach_element ((array, i, node) => {
|
|
|
|
var object = node.get_object ();
|
|
|
|
if (object != null){
|
|
|
|
var status = Status.parse(object);
|
|
|
|
prepend (status);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
catch (GLib.Error e) {
|
|
|
|
warning ("Can't update feed");
|
|
|
|
warning (e.message);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|