Removed the multiple declarations of the clone macro.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
|
||||
use open;
|
||||
use hammond_data::dbqueries;
|
||||
use hammond_data::models::Episode;
|
||||
use hammond_data::models::{Episode, Podcast};
|
||||
use hammond_downloader::downloader;
|
||||
use hammond_data::index_feed::Database;
|
||||
use hammond_data::dbcheckup::*;
|
||||
@@ -19,26 +19,6 @@ use gtk;
|
||||
use gtk::prelude::*;
|
||||
use gtk::{ContainerExt, TextBufferExt};
|
||||
|
||||
// http://gtk-rs.org/tuto/closures
|
||||
// FIXME: Atm this macro is copied into every module.
|
||||
// Figure out how to propely define once and export it instead.
|
||||
macro_rules! clone {
|
||||
(@param _) => ( _ );
|
||||
(@param $x:ident) => ( $x );
|
||||
($($n:ident),+ => move || $body:expr) => (
|
||||
{
|
||||
$( let $n = $n.clone(); )+
|
||||
move || $body
|
||||
}
|
||||
);
|
||||
($($n:ident),+ => move |$($p:tt),+| $body:expr) => (
|
||||
{
|
||||
$( let $n = $n.clone(); )+
|
||||
move |$(clone!(@param $p),)+| $body
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
thread_local!(
|
||||
static GLOBAL: RefCell<Option<((
|
||||
gtk::Button, gtk::Button, gtk::Button, Receiver<bool>,
|
||||
@@ -218,15 +198,14 @@ fn receive() -> glib::Continue {
|
||||
glib::Continue(false)
|
||||
}
|
||||
|
||||
pub fn episodes_listbox(db: &Database, pd_title: &str) -> Result<gtk::ListBox> {
|
||||
pub fn episodes_listbox(db: &Database, pd: &Podcast) -> Result<gtk::ListBox> {
|
||||
let conn = db.lock().unwrap();
|
||||
let pd = dbqueries::load_podcast_from_title(&conn, pd_title)?;
|
||||
let mut episodes = dbqueries::get_pd_episodes(&conn, &pd)?;
|
||||
drop(conn);
|
||||
|
||||
let list = gtk::ListBox::new();
|
||||
episodes.iter_mut().for_each(|ep| {
|
||||
let w = epidose_widget(db, ep, pd_title);
|
||||
let w = epidose_widget(db, ep, pd.title());
|
||||
list.add(&w)
|
||||
});
|
||||
|
||||
|
||||
@@ -12,24 +12,6 @@ use hammond_data::dbqueries;
|
||||
use widgets::episode::episodes_listbox;
|
||||
use podcasts_view::update_podcasts_view;
|
||||
|
||||
// http://gtk-rs.org/tuto/closures
|
||||
macro_rules! clone {
|
||||
(@param _) => ( _ );
|
||||
(@param $x:ident) => ( $x );
|
||||
($($n:ident),+ => move || $body:expr) => (
|
||||
{
|
||||
$( let $n = $n.clone(); )+
|
||||
move || $body
|
||||
}
|
||||
);
|
||||
($($n:ident),+ => move |$($p:tt),+| $body:expr) => (
|
||||
{
|
||||
$( let $n = $n.clone(); )+
|
||||
move |$(clone!(@param $p),)+| $body
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
fn podcast_widget(db: &Database, stack: >k::Stack, pd: &Podcast) -> gtk::Box {
|
||||
// Adapted from gnome-music AlbumWidget
|
||||
let pd_widget_source = include_str!("../../gtk/podcast_widget.ui");
|
||||
@@ -52,7 +34,7 @@ fn podcast_widget(db: &Database, stack: >k::Stack, pd: &Podcast) -> gtk::Box {
|
||||
}));
|
||||
|
||||
title_label.set_text(pd.title());
|
||||
let listbox = episodes_listbox(db, pd.title());
|
||||
let listbox = episodes_listbox(db, &pd);
|
||||
if let Ok(l) = listbox {
|
||||
view.add(&l);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user