Jordan Petridis
c9bf58af66
EpisodeWidget: Expose cancel button from the state machine.
2018-02-16 16:05:48 +02:00
Jordan Petridis
ed87a00225
EpisodeWidget: Cleanup parts of the state machine.
2018-02-16 14:43:16 +02:00
Jordan Petridis
bcc3608c04
EpisodeWidget: Split ButtonState enum from the MediaMachine.
...
Add a ButtonState Machine which represents the state of total_size
label, play button, and download button. Also implemented the
update/determine_state function for ButtonState.
Also implemented required generic functions for MediaMachine<X,Y,Z>
that convert it to the desired state.
2018-02-16 13:32:13 +02:00
Jordan Petridis
973d47ee05
EpisodeWidget: Expose the connect_clicked callbacks from the statemachine enum.
2018-02-15 18:07:21 +02:00
Jordan Petridis
f50c990d93
Yay, finally something that works.
2018-02-15 11:33:56 +02:00
Jordan Petridis
72eef6f104
Running in circles.
2018-02-15 11:08:21 +02:00
Jordan Petridis
4b8fceaa7d
Nothing makes sense.
2018-02-15 05:15: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
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
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
1c84f0d721
hammond-gtk::manager: Switch the add function to return a Result<(), Error>.
2018-02-06 22:03:17 +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
2f062afb07
Clippy suggestions
2018-01-29 19:09:53 +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
574cfae5c6
rustfmt: enable reorder imports.
2018-01-17 08:57:02 +02:00
Jordan Petridis
8e367b7e86
Dont ask me how this is working.
2018-01-12 08:50:16 +02:00
Jordan Petridis
8a90de3c0e
Implement download cancel action. #24
2018-01-10 09:43:38 +02:00
Jordan Petridis
955845110b
Merge branch 'master' into 33-downloader-re-work
2018-01-09 12:06:38 +02:00
Jordan Petridis
0ba5e14d7f
EpisodeWidget: Only update if it's visible.
2018-01-09 10:10:54 +02:00
Jordan Petridis
ea70addbc6
Removed some unwrap()s.
2018-01-09 09:21:07 +02:00
Jordan Petridis
87a259e1a4
Minor cleanup.
2018-01-09 07:21:38 +02:00
Jordan Petridis
68d7c621d3
EpisodeWidget: Update the local_size label.
2018-01-09 06:15:41 +02:00
Jordan Petridis
c54f29e82a
EpisodeWidget: Modulate callbacks.
2018-01-09 04:20:38 +02:00
Jordan Petridis
9dafb0ae9e
EpisodeWidget: Add local_size label that shows the amount of bytes downloaded.
2018-01-09 03:58:13 +02:00
Jordan Petridis
193117f579
Downloader: Update the progress index of downloads.
2018-01-08 12:29:47 +02:00
Jordan Petridis
eef83fc98c
EpisodeWidget: Implement API to update the progress bar.
2018-01-08 05:11:37 +02:00
Jordan Petridis
81b1ec810c
Apply clippy suggestions.
2018-01-07 08:36:02 +02:00
Jordan Petridis
074284d286
Move unsub show logic and get_download_folder func to hammond-data::utils.
2018-01-07 08:26:38 +02:00
Jordan Petridis
6bd391d89e
I hate global mutable state..
2018-01-07 05:51:29 +02:00
Jordan Petridis
e961d5f8b0
Use lazystatic to cache the current chrono date. This will backfire on every new year's eve.
2018-01-06 03:49:26 +02:00
Jordan Petridis
5fed283ff4
EpisodeWidget: Hide duration label if its equal to 0.
2018-01-06 03:18:28 +02:00
Jordan Petridis
da459707be
Wire up the callbacks to the client.
2018-01-05 23:57:48 +02:00
Jordan Petridis
13ba2762ad
Move the download manager to the gtk crate.
2018-01-05 22:02:06 +02:00
Jordan Petridis
e9dd297bf3
Merge branch 'master' into 33-downloader-re-work
2018-01-05 21:43:41 +02:00
Jordan Petridis
d8d4b08252
EpisodeWidget: Trim date label to avoid date/title miss alignment on single digit dates.
2018-01-05 18:46:22 +02:00
Jordan Petridis
750abb519b
GtkApplication: Change the action channel polling interval.
2018-01-04 16:42:17 +02:00
Jordan Petridis
c33b493dcd
Migrate Headerbar transitions into Channel actions.
2018-01-03 08:02:06 +02:00
Jordan Petridis
33cd6e69ff
EpisodeWidget: Migrate to use a Channel Action instead of simple Action.
2018-01-03 06:53:19 +02:00
Jordan Petridis
f54ae2f1d5
EpisodeWidget: Code cleanup and splitting.
2018-01-03 03:02:46 +02:00