Stole the add feed button from gnome-news project, but It's not wired up yet.

This commit is contained in:
Jordan Petridis 2017-10-16 03:23:21 +03:00
parent 1277c90f8b
commit f7fb991b9c
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
2 changed files with 152 additions and 29 deletions

View File

@ -1,7 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<!-- Generated with glade 3.20.1 -->
<interface>
<requires lib="gtk+" version="3.20"/>
<object class="GtkPopover" id="add-popover">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes">Add a new feed</property>
<property name="valign">center</property>
<child>
<object class="GtkBox" id="add-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="valign">center</property>
<property name="orientation">vertical</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="add-box-enter-address-label">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="hexpand">False</property>
<property name="label" translatable="yes">Enter feed address to add</property>
<style>
<class name="dim-label"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkBox" id="add-entry-box">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
<object class="GtkEntry" id="new-url">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="width_chars">30</property>
<property name="input_purpose">url</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkStack" id="add-button-stack">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="interpolate_size">True</property>
<child>
<object class="GtkButton" id="add-button">
<property name="label" translatable="yes">Add</property>
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<style>
<class name="suggested-action"/>
</style>
</object>
<packing>
<property name="name">button</property>
</packing>
</child>
<child>
<object class="GtkSpinner">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="active">True</property>
</object>
<packing>
<property name="name">spinner</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="add-box-already-subscribed-label">
<property name="can_focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes">You are already subscribed to that feed!</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
</object>
<object class="GtkHeaderBar" id="headerbar1">
<property name="visible">True</property>
<property name="can_focus">False</property>
@ -27,31 +136,6 @@
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkButton" id="addbutton">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Add Podcast</property>
<property name="valign">center</property>
<property name="use_underline">True</property>
<property name="always_show_image">True</property>
<child>
<object class="GtkImage">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="stock">gtk-add</property>
</object>
</child>
<style>
<class name="image-button"/>
</style>
</object>
<packing>
<property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkButton" id="refbutton">
<property name="visible">True</property>
@ -97,5 +181,29 @@
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkMenuButton" id="add-toggle-button">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="tooltip_text" translatable="yes">Add a new feed</property>
<property name="valign">center</property>
<child>
<object class="GtkImage" id="add-button-image">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="icon_name">list-add-symbolic</property>
<property name="icon_size">1</property>
</object>
</child>
<style>
<class name="image-button"/>
</style>
</object>
<packing>
<property name="pack_type">end</property>
<property name="position">3</property>
</packing>
</child>
</object>
</interface>

View File

@ -151,9 +151,23 @@ fn build_ui() {
let flowbox: gtk::FlowBox = builder.get_object("flowbox1").unwrap();
let grid: gtk::Grid = builder.get_object("grid").unwrap();
let refresh_button: gtk::Button = header_build.get_object("refbutton").unwrap();
// TODO: Have a small dropdown menu
let _add_button: gtk::Button = header_build.get_object("addbutton").unwrap();
// Stolen from gnome-news:
// https://github.com/GNOME/gnome-news/blob/master/data/ui/headerbar.ui
let add_toggle_button: gtk::MenuButton = header_build.get_object("add-toggle-button").unwrap();
let add_popover: gtk::Popover = header_build.get_object("add-popover").unwrap();
let new_url: gtk::Entry = header_build.get_object("new-url").unwrap();
let add_button: gtk::Button = header_build.get_object("add-button").unwrap();
new_url.connect_changed(move |url| {
println!("{:?}", url.get_text());
});
// FIXME: Button is not clickable for some reason
add_button.connect_clicked(move |f| {
println!("{:?} feed added", f);
});
// add_button.clicked();
add_popover.hide();
add_toggle_button.set_popover(&add_popover);
let _search_button: gtk::Button = header_build.get_object("searchbutton").unwrap();
// TODO: make it a back arrow button, that will hide when appropriate,
@ -163,6 +177,7 @@ fn build_ui() {
let stack_clone = stack.clone();
home_button.connect_clicked(move |_| stack_clone.set_visible_child(&grid_clone));
let refresh_button: gtk::Button = header_build.get_object("refbutton").unwrap();
// FIXME: This locks the ui atm.
// FIXME: it also leaks memmory.
refresh_button.connect_clicked(move |_| {