Commit Graph
558 Commits
Author SHA1 Message Date
Jordan Petridis 46bd23cf66 EpisodeWidget: Add a StateMachine that manages Play and Download Buttons. 2018-02-10 08:00:12 +02:00
Jordan Petridis 138cfdb68c EpisodeWidget: use debug! instead of error! to avoid spamming stderr with *not actuall* errors. 2018-02-10 05:45:50 +02:00
Jordan Petridis 6d9dfe6fe1 EpisodeWidget: Add a StateMachine for the size labels. 2018-02-10 05:41:25 +02:00
Jordan Petridis fc48ce9c47 EpisodeWidget: Migrate Duration Machine to use take mut too, and revert the api to require just &mut self. 2018-02-10 03:33:39 +02:00
Jordan Petridis 3a9a2f4033 EpisdoeWidget: Use take_mut crate to allow for a better api.
Currently it's required that you take mut self in order to manipulate
the internal state machines. This would not allow passing an Arc/Rc to
a callback since A/Rc<T> only derefs to &T and not T.

The take_mut crate allows the retrieval of ownership if you have a &mut refference
and as long you return T again. So Arc<Mutex<Machine> could work with
callbacks and embed Nested state machies without copying.
2018-02-10 03:15:12 +02:00
Jordan Petridis f0ce0eb653 EpisodeWidget: Implement a state machine for duration label. 2018-02-09 10:12:37 +02:00
Jordan Petridis 23979b8f22 EpisodeWidget: Move state machine implementations into a separate module. 2018-02-09 09:13:41 +02:00
Jordan Petridis e22a78fac6 EpisodeWidget: Re-enable on_play_bttn_clicked callback.
Before we were avoiding reloading the widget in view by
directly dimming the title label. Now instead we reload
the whole widget since I can't figure out a way to have
multiple Owneded refferences of the same state machine.
2018-02-09 08:59:50 +02:00
Jordan Petridis 7690cb1356 Remove code duplication using generics. 2018-02-09 08:43:47 +02:00
Jordan Petridis a96f4c57c9 Probably the worst state machine implementation that was ever written. 2018-02-09 08:43:43 +02:00
Jordan Petridis 1135d77147 EpisodeWidget: Remove unwrap on that could occur if an invalid path was passed. 2018-02-08 21:10:36 +02:00
Jordan Petridis 9dfb18a487 EpisodeWidget: Minor refactor of set_total_size method. 2018-02-08 21:02:16 +02:00
Jordan Petridis fbfa0de17e EpisodeWidget: Fix minutes label parsing.
Before if a feed had reported a number between 1 and 60, a label 0 min
would be set.

This fixes that, while also using chrono::Duration for parsing minutes.
2018-02-08 20:39:37 +02:00
Jordan Petridis c5e0bf34cb Headerbar: Use the Application Action instead of relying directly on Content. 2018-02-08 05:40:40 +02:00
Jordan Petridis 4ba82c1515 EpisodeWidget: Set title alignment from glade. 2018-02-08 05:29:47 +02:00
Jordan Petridis b172aa7aa3 Remove forgotten unwrap(). 2018-02-08 04:39:51 +02:00
Jordan Petridis c6f5a4200d EpisodeWidget: Fix progressbar alignment. 2018-02-07 22:08:52 +02:00
Jordan Petridis e2a1762af4 EpisodeWidget: Use refference counting intead of unnecessary clones.
Pass owenership of EpisodeWidgetQuery and use Atomic Ref counting
to pass to the callbacks. This should avoid extra allocations.
2018-02-07 18:40:22 +02:00
Jordan Petridis 07c1a9a0e9 Fix private field visibility of stacks. 2018-02-07 07:11:40 +02:00
Jordan Petridis 31bd75ae45 Minor Arc changes. 2018-02-07 07:02:24 +02:00
Jordan Petridis 67af85e347 Hammond-gtk: Use Atomic Refference counting to reduce cloning of Podcast. 2018-02-07 06:28:16 +02:00
Jordan Petridis df02054b29 Hammond-gtk: Change the privacy of the widgets module. 2018-02-07 05:47:58 +02:00
Jordan Petridis 0cdd48ac1e Hammond-gtk: Change the privacy of the views module. 2018-02-07 05:37:07 +02:00
Jordan Petridis bdda596806 Hammond-gtk: Inital split of content.rs into stacks module. 2018-02-07 05:33:29 +02:00
Jordan Petridis d3696fc5ec Minor Error messages wording changes. 2018-02-07 03:52:21 +02:00
Jordan Petridis 2d33606251 Hammond-gtk: Stack, Content constructors return Results now.
Constructors now proxy underlying errors that migth occur during initialazation.
I think that's about the last unwraps in the main thread.
2018-02-07 03:17:37 +02:00
Jordan Petridis 89564996df ShowStack: Convert rest methods to return Result<T, Error>. 2018-02-07 01:19:07 +02:00
Jordan Petridis e196a6c905 ShowStack: update_widget methods now return Result<T, Error>. 2018-02-07 00:55:43 +02:00
Jordan Petridis 7eb038b899 EpisodesStack: Refactor update method to return a Result<T, Error>. 2018-02-07 00:31:04 +02:00
Jordan Petridis 1c84f0d721 hammond-gtk::manager: Switch the add function to return a Result<(), Error>. 2018-02-06 22:03:17 +02:00
Jordan Petridis ab519a54d3 Headerbar: Use Result<T, failure::Error> wherever possible. 2018-02-06 21:32:21 +02:00
Jordan Petridis 7ed1cd8b26 hammond-gtk: Change utils::get_pixbuf_from_path function to return a Result. 2018-02-06 20:56:55 +02:00
Jordan Petridis c6e426cbac Downloader: Change cache_image function to return Result<T, DownlaoderError> instead of Option<T>. 2018-02-06 20:14:03 +02:00
Jordan Petridis d3f279374a ShowWidget: Refactor to return Result<T, Error> wherever possible. 2018-02-06 02:47:39 +02:00
Jordan Petridis 0dc16dab9a EpisodeWidget: Refactor to return Result<T, Error> wherever possible. 2018-02-06 02:31:53 +02:00
Jordan Petridis de43cae015 Switch rest stuff of data/downloader to Failure Crate. 2018-02-04 17:36:27 +02:00
Jordan Petridis f9f015a211 Hammond-data: switch database module to use Failure. 2018-02-04 16:33:10 +02:00
Jordan Petridis 1888539a97 Rename assets folder to screenshots, and improve the build system. 2018-02-04 01:34:34 +02:00
Jordan Petridis 97c65c8bd1 Add a download test for Steal the Stars podcast to spot #10 reggressions. 2018-02-03 15:43:00 +02:00
Jordan Petridis e8ae0b0251 Thats a hack, a terrible one, but without it the user
would have to manually click refresh if the user that was added
happen to redirect somewhere else.

The problem is in the hammond-data/src/models/source.rs
fn request_constructor. It has to do with futures and lifetimes
and I am not sure how to tackle it yet.
2018-02-03 00:06:02 +02:00
Jordan Petridis 2f062afb07 Clippy suggestions 2018-01-29 19:09:53 +02:00
Jordan Petridis a2cf2357c6 Add about a basic about dialog. 2018-01-29 18:02:24 +02:00
Jordan Petridis a4660a0700 Headerbar: Do not allow insertion of duplicate urls. 2018-01-27 14:40:51 +02:00
Jordan Petridis 18e55e23ee Headerbar: Do not allow insertion of invalid urls. 2018-01-27 14:11:02 +02:00
Jordan Petridis 8c0e3221cb refresh_feed: remove code duplication. 2018-01-26 19:29:45 +02:00
Jordan Petridis 5e1d1e557f GtkApplication: Add an action for showing the headerbar_update_indicator. 2018-01-26 19:15:07 +02:00
Jordan Petridis a7e3b1b99e GtkApplication: Headbar and Content constructors now return Self instead of Arc<Self>. 2018-01-26 19:05:19 +02:00
Jordan Petridis 39aa86157b Switch rest of the tests to point to the internet archive urls. 2018-01-26 17:25:35 +02:00
Jordan Petridis 2912bad110 Pipeline: Split the pipeline from the cpu-pool and the tokio-core. 2018-01-26 13:34:04 +02:00
Jordan Petridis 7bd361fbbb Upgrade dependancies. 2018-01-22 11:47:17 +02:00