Jordan Petridis
02de2059db
EpisodeWidget: Shrink the Size state Machine.
2018-02-13 05:03:16 +02:00
Jordan Petridis
bdf8901dd8
This compiles.
...
Instead of having a Wrapper of StateMachinesWrappers, use only the desired
possible states in A new struct with only 1 Wrapper that covers all 3 of
the embeded state machines.
I don't even know if the comment makes any sense. Sorry.
2018-02-13 02:23:32 +02:00
Jordan Petridis
2fbc833ebe
EpisodeWidget: Add a state machine that will manager progress_bar and cancel bttn.
2018-02-10 09:11:31 +02:00
Jordan Petridis
f7b5b35374
EpisodeWidget: change DownloadPlayMachine default constructor to a hidden state.
2018-02-10 08:13:07 +02:00
Jordan Petridis
46bd23cf66
EpisodeWidget: Add a StateMachine that manages Play and Download Buttons.
2018-02-10 08:00:12 +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
45522b86df
Remove another unwrap. Though it would never be hit currently.
2018-02-08 21:34:11 +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
ea29aae64a
Fix benchmarks.
2018-02-08 17:33:40 +02:00
Jordan Petridis
e77b0a84c7
Update dependancies.
2018-02-08 17:03:26 +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
8cbae4050e
Merge branch '40-gtk-unwrap-cleanup' into 'master'
...
Resolve "Clean up the unwraps in the Gtk Client."
Closes #40
See merge request alatiera/Hammond!17
2018-02-07 02:12:11 +00: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
ed5ff16598
Downloader: clean a bit downloader::get_episode function.
2018-02-06 02:00:32 +02:00
Jordan Petridis
c1ecdbda52
Merge branch '39-failure-libs-migration' into 'master'
...
Resolve "Migrate Error-Handling to Failure crate."
Closes #39
See merge request alatiera/Hammond!16
2018-02-05 19:16:11 +00:00
Jordan Petridis
d3472b3205
hammond-data: Deny Unused.
2018-02-05 20:51:34 +02:00
Jordan Petridis
5cd3dff1d4
Downloader: Switch to returning Downloader::Error instead of failure::Error.
2018-02-05 20:41:45 +02:00
Jordan Petridis
4d1168803c
Dbquerries: Remove Result type allias.
2018-02-05 19:43:26 +02:00
Jordan Petridis
7eec01a52e
Minor rename of DataError::Bail.
2018-02-05 19:05:40 +02:00
Jordan Petridis
44ebe46f10
Replace last bail! invocations.
2018-02-05 19:00:31 +02:00
Jordan Petridis
008f57bec4
Create a ParseEpisodeError and replace bail! invocations.
2018-02-05 18:51:21 +02:00
Jordan Petridis
d0ae5a4198
Typo fix.
2018-02-05 18:33:12 +02:00
Jordan Petridis
064c2b4be0
Start creating custom errors instead of using bail! macro.
2018-02-05 18:25:56 +02:00
Jordan Petridis
34d7391363
Make a counterfeit rss Error.
2018-02-05 16:37:50 +02:00
Jordan Petridis
e84e7df3f1
Remove unwrap call.
2018-02-05 15:59:34 +02:00
Jordan Petridis
8ba9f928d6
Switch to using DataError instead of failure::Error.
2018-02-05 02:43:56 +02:00
Jordan Petridis
435ce05ac7
Add rest of the From impls for the Error Type.
2018-02-05 01:53:01 +02:00
Jordan Petridis
ede4c21e30
Merge the Errors into a single Enum.
2018-02-05 01:39:50 +02:00
Jordan Petridis
0892fe26ba
Manually implement From Trait for the DatabaseError.
2018-02-05 01:20:01 +02:00
Jordan Petridis
1085d468b9
cargo fmt
2018-02-04 18:45:19 +02:00
Jordan Petridis
8f0a63fdb7
Downloader: Make the Error type public.
2018-02-04 17:46:01 +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
3874235074
Readme: Add a note about being able to built with Gnome-Builder.
2018-02-04 02:03:47 +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
d131c279b9
Add batch indexing fallback.
...
If an RSS feed triggered a unique constrains violation, none of it's
items would be indexed resulting in a Podcast without episodes.
This adds a fallback that indexes each item individually if the batch index fails.
2018-02-03 16:02:42 +02:00
Jordan Petridis
92d01ec51a
Feed: enchance get_stuff unit test.
2018-02-03 15:55:26 +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
f1f248fa40
Merge branch 'master' into 'master'
...
Issue 10 - Infinite Redirect Fix
See merge request alatiera/Hammond!15
2018-02-02 16:12:46 +00:00
Jordan Petridis
80fd4e9fc5
Source: Set Etag and last modified to None upon redirect.
2018-02-01 19:35:35 +02:00
Jordan Petridis
7b62ef203d
Source: Pass owenership around instead of &mut, cause futures.
2018-02-01 15:55:19 +02:00
Jordan Petridis
2f062afb07
Clippy suggestions
2018-01-29 19:09:53 +02:00
Jordan Petridis
817d5d9cf7
Fix meson config to build each time.
2018-01-29 18:17:02 +02:00
Jordan Petridis
a2cf2357c6
Add about a basic about dialog.
2018-01-29 18:02:24 +02:00
Jordan Petridis
815639fe5f
Add an order by tittle asc clasuse to the Podcast query. Address #34 .
2018-01-29 12:30:13 +02:00
Jordan Petridis
b1c3b4f9cc
Pipeline: Fetch sources without etag support fist as they are more likely to need parsing.
2018-01-29 12:20:21 +02:00
Jordan Petridis
332a439b7a
hammond-data: Factor out save method of diesel models into a Trait.
2018-01-28 22:09:06 +02:00
Jordan Petridis
fb5264c479
NewSource: Rename into_source -> to_source and take reffence &self instead.
2018-01-27 18:34:03 +02:00
Jordan Petridis
a3705d424b
NewSource: Remove Insert implemantation and replace it with a insert_or_ignore method.
2018-01-27 18:09:40 +02:00
Jordan Petridis
a4660a0700
Headerbar: Do not allow insertion of duplicate urls.
2018-01-27 14:40:51 +02:00
Jordan Petridis
77a52bdc8c
hammond-data: Add a source_exists query.
2018-01-27 14:23:19 +02:00
Jordan Petridis
18e55e23ee
Headerbar: Do not allow insertion of invalid urls.
2018-01-27 14:11:02 +02:00
Jordan Petridis
d14973cf0d
Use num_cpus instead of hardcoding the number of threads for dns look_up.
...
In the next hyper_tls relase it should be possible to use the existing
cpu_pool executor.
2018-01-27 11:08:57 +02:00
Jordan Petridis
120d494280
Update hyper and futures.
2018-01-27 09:45:25 +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
1e722e0d58
Merge branch 'futuristic-pipeline' into 'master'
...
Futuristic pipeline
See merge request alatiera/Hammond!14
2018-01-26 16:33:46 +00: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
df85a4ea9e
Pipeline: avoid panicking by checking the lenght and returning an error.
2018-01-26 14:17:43 +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
a57fdef01d
Merge branch 'patch-1' into 'master'
...
Added Flatpak building instructions
See merge request alatiera/Hammond!13
2018-01-25 19:42:45 +00:00
Jordan Petridis
b370af35d4
Feed: Add a bunch of tests.
2018-01-24 18:42:33 +02:00
Jordan Petridis
d6817aaa1f
Parser: pass an rss::ItunesExtension to instead of an rss::Item.
2018-01-24 15:42:08 +02:00
Jordan Petridis
5da002fe6d
Use map_err(From::from) instead of ? into Ok() wrapping pattern.
2018-01-24 15:27:36 +02:00
Jordan Petridis
0e16f0acb0
NewEpisode: rename into_episode -> to_episode, change its signature and add unit test.
2018-01-24 14:31:33 +02:00
Jordan Petridis
d5a7fa9de8
NewEpisode: Add index method unit test.
2018-01-24 12:11:49 +02:00
Jordan Petridis
9274aba849
NewEpisode: Add update method unit test.
2018-01-24 11:22:03 +02:00
Jordan Petridis
457e43978f
Pipeline: Fix a panic if the list of futures was 0.
2018-01-23 19:07:11 +02:00
Jordan Petridis
f9096e5fac
Pipeline: Print the error right away instead of waiting till all futures complete.
2018-01-23 18:18:56 +02:00