Switched back to a ListStore for now.

The dream would be to use One TStroe for all/many views,
but that seem to be expensive and not pleasant to work with.
Might also completly drop all stores, or at least some,
since I could construct the views using just Diesel models.
This commit is contained in:
Jordan Petridis 2017-10-15 00:56:31 +03:00
parent 970b151353
commit a8084e1bdf
No known key found for this signature in database
GPG Key ID: CEABAD9F5683B9A6
2 changed files with 44 additions and 2 deletions

View File

@ -24,6 +24,22 @@
<column type="gchararray"/>
</columns>
</object>
<object class="GtkListStore" id="PdListStore">
<columns>
<!-- column-name id -->
<column type="guint"/>
<!-- column-name title -->
<column type="gchararray"/>
<!-- column-name description -->
<column type="gchararray"/>
<!-- column-name link -->
<column type="gchararray"/>
<!-- column-name image_uri -->
<column type="gchararray"/>
<!-- column-name img -->
<column type="GdkPixbuf"/>
</columns>
</object>
<object class="GtkWindow" id="window1">
<property name="can_focus">False</property>
<property name="default_width">1000</property>

View File

@ -89,6 +89,31 @@ fn create_and_fill_tree_store(connection: &SqliteConnection, builder: &gtk::Buil
podcast_model
}
fn create_and_fill_list_store(
connection: &SqliteConnection,
builder: &gtk::Builder,
) -> gtk::ListStore {
let podcast_model: gtk::ListStore = builder.get_object("PdListStore").unwrap();
let podcasts = dbqueries::get_podcasts(connection).unwrap();
for pd in &podcasts {
podcast_model.insert_with_values(
None,
&[0, 1, 2, 3, 4],
&[
&pd.id(),
&pd.title(),
&pd.description(),
&pd.link(),
&pd.image_uri().unwrap_or_default(),
],
);
}
podcast_model
}
fn main() {
loggerv::init_with_level(LogLevel::Info).unwrap();
@ -138,14 +163,15 @@ fn main() {
let flowbox: gtk::FlowBox = builder.get_object("flowbox1").unwrap();
let db = hammond_data::establish_connection();
let pd_model = create_and_fill_tree_store(&db, &builder);
// let pd_model = create_and_fill_tree_store(&db, &builder);
let pd_model = create_and_fill_list_store(&db, &builder);
let iter = pd_model.get_iter_first().unwrap();
// this will iterate over the episodes.
// let iter = pd_model.iter_children(&iter).unwrap();
loop {
let title = pd_model.get_value(&iter, 1).get::<String>().unwrap();
let image_uri = pd_model.get_value(&iter, 5).get::<String>();
let image_uri = pd_model.get_value(&iter, 4).get::<String>();
let f = create_flowbox_child(&title, image_uri.as_ref().map(|s| s.as_str()));
let stack_clone = stack.clone();