Jordan Petridis
2711ebca68
gitlabci: switch to test rust-nightly till the stable image is update.
2018-05-11 13:54:25 +03:00
Jordan Petridis
041684b13a
Use impl Trait syntax instead of Trait Objects.
...
Rust v1.26 introduced impl Trait which avoid the heap allocation with Box
and makes the code a bit more ergonomic.
For more see https://blog.rust-lang.org/2018/05/10/Rust-1.26.html
2018-05-11 12:06:31 +03:00
Jordan Petridis
777a2102f8
gitlabci: Add review apps.
...
This makes it able to show a link pointing to the bundle in Merge Requests.
2018-05-10 18:46:52 +03:00
Jordan Petridis
65949c5af5
gitlabci: Extend the lifespan of the flatpak bundle.
...
For more information see the following nautilus commit.
https://gitlab.gnome.org/GNOME/nautilus/commit/3a35b6035ae6f383744aa88b73e451918292736c
Closes #60 .
2018-05-10 18:46:52 +03:00
Jordan Petridis
e40f880b9e
gitlabci: Use prebuilt clippy image
...
Since clippy won't fail to install now that it's bundled in the
container image also do not allow the to fail
2018-05-10 18:38:51 +03:00
Jordan Petridis
f9b34bbd50
h-data: Initial implementation of an OPML parser and importer.
...
This is not really compiant with the OPML spec and there
does not seem to be an OPML crate sadly. There are edge-cases
that are not handled but will only be addressed if a problem is reported.
2018-05-10 18:17:19 +03:00
Jordan Petridis
f06dbd0562
Version bump.
2018-05-07 19:48:21 +03:00
Jordan Petridis
4a6f5c6268
Update the Changelog.
2018-05-07 18:46:09 +03:00
Jordan Petridis
b5dbfb1a86
PopulatedStack: Allow for more control over the stack transitions.
...
When you just update/replace the widget there is no need for an animation
to occur. Thus why animations where broken before. This commit is not ideal
as it makes it the responsibility of the caller to declare valid(UX wise)
transitions.
2018-05-04 11:32:50 +03:00
Jordan Petridis
d86a17f76e
ShowWidget: Set max_width_charters in the Description.
...
If the window is fullscreen or given a big width description
expands and becomes harder to read. This sets the character limit
of the description to 70charaters. The exact size might differ
from machine-to-machine based on user settings. (Hi-dpi, chosen
font, etc.)
2018-05-02 19:29:55 +03:00
Jordan Petridis
37c7f20256
gitlabci: Always run clippy as part of the lint state now.
2018-05-02 16:05:03 +03:00
Jordan Petridis
f324407c9c
Deny all the warnings when building.
2018-04-30 14:21:34 +03:00
Jordan Petridis
c96b39d597
Fix all the clippy warnings!
2018-04-30 14:13:54 +03:00
Jordan Petridis
d4d89a56e9
Revert "Update deps."
...
This reverts commit f19ad133c6 .
There was dependancy conflitct that was not caught locally due to caching.
2018-04-29 20:15:44 +03:00
Jordan Petridis
f19ad133c6
Update deps.
2018-04-29 19:57:32 +03:00
Jordan Petridis
00d9019f29
Do not pass some things by value when not needed.
2018-04-29 19:27:40 +03:00
Jordan Petridis
8951a6e237
h-gtk: Animate the adjustment of scrolled windows.
...
Many thanks to Julian Spaber for documenting this.
2018-04-29 19:07:12 +03:00
Jordan Petridis
b0ac037964
Fix the broken test.
2018-04-28 14:53:43 +03:00
Jordan Petridis
2c8ff2d2f2
Cargo fmt
2018-04-28 14:19:55 +03:00
Jordan Petridis
03bd951848
EpisodeWidget: Handle updating states, withotu having to reload the views.
...
This code is ugly and terrible but it works™. Previsously when a download
would finish it would refresh all the views. Now the if the widget get's
into the Donwloading state, it will setup a callback that will check
periodicly if it's still downloading and update the widget state when
the episode stops downloading.
2018-04-28 14:09:26 +03:00
Jordan Petridis
63e2ea987e
This was commited by accident.
2018-04-28 12:41:56 +03:00
Jordan Petridis
115df7f884
h-gtk: Re-work the minimum widget requests.
2018-04-27 12:08:07 +03:00
Jordan Petridis
ed94d34589
h-gtk: Rename the stasckswitcher field in the Headerbar.
2018-04-27 11:41:39 +03:00
Jordan Petridis
dc5ff9d809
h-gtk: Take into account the ignored_shows when detemening if podcast table is empty.
...
If you've had one show and pressed unsub, instead of going to
an empty view, it would stay to populated since it the db records
where still there.
2018-04-27 11:21:32 +03:00
Jordan Petridis
72a6832571
h-gtk: Rename HomeView and ShowView parent modules.
2018-04-25 20:57:05 +03:00
Jordan Petridis
b0c692ab7d
Readme: Add matrix link.
2018-04-25 20:15:43 +03:00
Jordan Petridis
06e8bc14f4
Readme: Remove badges and tweak the description.
...
Gitlab 10.7 natively supports badges
2018-04-25 20:00:41 +03:00
Jordan Petridis
3d160fc35c
h-gtk: Restructure the stacks structure.
...
This commit reimplements support for the empty view in the ShowStack.
The current structure is the following:
* A Content stack which holds the HomeStack and the ShowStack.
It's what is used in the headerbar StackSwitcher.
* The HomeStack is composed of the HomeView and an EmptyView.
* The ShowStack is composed of the PopulatedStack and an EmptyView.
* The PopulatedStack is composed of the ShowsView and the ShowWidget
currently. An AboutEpisode widget is planned to be added here also.
2018-04-25 19:23:02 +03:00
Jordan Petridis
734f85a517
Fix logic typo.
2018-04-24 15:34:52 +03:00
Jordan Petridis
a56a80db88
ShowWidget: Keep track of the podcast it was created from.
...
Since ShowStack now keeps a refference to ShowWidget we no
longer need to encode it in the widget name.
2018-04-24 15:25:34 +03:00
Jordan Petridis
c4ed90dd5a
ShowStack: Refactor to make stack restructure easier.
...
This removes the empty widget from the ShowStack. The plan is
to have a ShowsView which will be the parent of ShowStack and
an Empty Widget. Then make ShowStack have only valid populated
states of ShowsPopulate, ShowWidget and AboutEpisodeWidget later.
2018-04-24 13:12:27 +03:00
Jordan Petridis
f173b326a4
Contnet: Minor renaming following 75af3c7f2b
2018-04-24 12:28:29 +03:00
Jordan Petridis
5e302290de
HomeStack: Minor refactor to wrap gtk::Stack actions.
...
For now the methods are private and migth not be neccesarry,
but it will be much easier to manipulate the stack from outside
with this API if it's needed and the methods are made public.
2018-04-24 09:59:29 +03:00
Jordan Petridis
75af3c7f2b
h-gtk: Rename EpisodeStack to HomeStack.
2018-04-24 09:31:56 +03:00
Jordan Petridis
d7aec6fdfb
h-gtk: Move vies inside the widgets module.
...
EpisodeView was renamed to HomeView. More renaming will follow.
2018-04-23 15:57:46 +03:00
Jordan Petridis
9a3586fd1c
Readme: Fix the flatpak instructions.
2018-04-23 13:35:04 +03:00
Jordan Petridis
063bcbd0e5
Remove unused pub field.
2018-04-22 06:34:02 +03:00
Jordan Petridis
a76e69e05d
ShowWidget: Center the description label.
2018-04-21 09:25:21 +03:00
Jordan Petridis
e560cce879
h-gtk: Further refactor of the ShowStack.
2018-04-21 08:01:34 +03:00
Jordan Petridis
6406c3af13
h-gtk: Refactor part of the ShowStack.
2018-04-21 07:40:42 +03:00
Jordan Petridis
173d2d3a3a
h-gtk: Refactor EpisodesStack.
2018-04-20 17:23:07 +03:00
Jordan Petridis
9a5cc1595d
ShowWidget: re-arrange the show's cover/desc/buttons widgets.
2018-04-20 10:20:09 +03:00
Jordan Petridis
d1962ab745
Remove some boilerplate.
2018-04-20 10:15:27 +03:00
Jordan Petridis
af5b27d0fc
EpisodeWidget: Replace Arc<Mutex<Widget>> with Rc<RefCell<Widget>>.
...
Since gtk Widgets are not Send, and the callbacks all run in the gtk
main loop, it *should* not be possible that 2 things try to access the
same widget at the same time.
2018-04-20 07:26:56 +03:00
Jordan Petridis
a9196d27d6
Merge branch 'master' into 'master'
...
Update links to new repo
See merge request World/hammond!32
2018-04-20 00:34:35 +00:00
Jordan Petridis
37a408e58a
dbquerries: Fix the is_populated() querries.
...
Thanks a lot to the diesel gittrer channel!
2018-04-19 14:45:00 +03:00
Jordan Petridis
736a993284
h-gtk: Move forgotten test from a68987f257
2018-04-19 08:26:45 +03:00
Jordan Petridis
09359a8df3
Update deps and bump rss crate.
...
My PR for Channelinto_items() went through and a new rss
release in is already available!
2018-04-19 08:07:02 +03:00
Jordan Petridis
a68987f257
h-gtk: Move some stuff from utils to settings module.
2018-04-19 08:04:40 +03:00
Jordan Petridis
3b5831f317
ShowsView: Do not block while loading ShowChilds.
2018-04-19 07:51:48 +03:00
Jordan Petridis
5336981154
h-gtk: Change the signature of utils::set_image_from_path to not require a Podcast.
...
It was only used to call the podcast.id() method. This allows EpisodeViewWidget
to be created whithout the need for a call to the database to get a Podcst
Object for each widget.
2018-04-19 07:15:12 +03:00
Jordan Petridis
df417fa619
h-gtk: Use Rc instead of Arc wherever possible.
...
As logn we are not doing anything funny to bypass the borrow-checker,
we should not be able to touch gtk wigets from other threads anyway.
2018-04-19 06:34:02 +03:00
Jordan Petridis
509bbe25d2
EpisodeView: Retain the scrollbar valignment.
2018-04-19 06:12:08 +03:00
Jordan Petridis
f49012ab51
EpisodeView: Reduce boilderplate.
2018-04-19 05:40:07 +03:00
Jordan Petridis
e4fc7c336e
EpisodeView: Fix empty state.
2018-04-19 05:32:27 +03:00
Jordan Petridis
0e4430bae4
EpisodeView: Initial refactor to make loading non-blocking.
2018-04-19 02:52:58 +03:00
Jordan Petridis
f811a9c8f4
Feed: Split index_channel_items method.
2018-04-18 08:20:26 +03:00
Jordan Petridis
771999c603
h-data: Move some functions from pipeline to feed module.
2018-04-18 07:35:53 +03:00
Jordan Petridis
18820202d7
gitlabci: Add needed ENV vars.
...
abc8fb988f uses an feature of rayon
that's behind a compile time flag.
2018-04-18 07:06:17 +03:00
Jordan Petridis
abc8fb988f
Pipeline: Dispatch feed indexing to the rayon threadpool.
2018-04-18 05:06:02 +03:00
Jordan Petridis
885c525d7b
Pipeline: change the signature of pipeline to accept future::Stream instead of IntoIterator.
2018-04-18 04:05:14 +03:00
Jordan Petridis
418a2f02b2
Pipeline: Add a bad feed test case.
2018-04-18 03:38:06 +03:00
Jordan Petridis
031078284c
Feed: Print an error in stderr before discarding it.
2018-04-18 03:03:05 +03:00
Jordan Petridis
3c7ba8c9d9
Feed: Convert index_channel_items to a Future/Steam impl.
2018-04-18 02:49:21 +03:00
Jordan Petridis
835078a84c
Pipeline: Convert the sources iterator into a Stream and return a Future
...
`futures::stream::iter_ok` is so conviniet, why had None told me
about it before?
2018-04-18 01:40:06 +03:00
Jordan Petridis
049418c2f5
Feed: clean up clunky impl of indexing episodes.
2018-04-17 12:05:10 +03:00
Jordan Petridis
7c03266d16
Inline a bunch of stuff.
2018-04-17 09:04:18 +03:00
Jordan Petridis
627f06ea9f
Fix typos.
2018-04-17 08:50:03 +03:00
Jordan Petridis
9f84178182
h-gtk: Increase the sleep time between the action channel calls.
2018-04-17 07:52:04 +03:00
Jordan Petridis
54641fc3c5
ShowWidget: Try to retain scrollbar adjustment.
2018-04-17 06:00:06 +03:00
Jordan Petridis
b8995d838a
ShowWidget: Move listbox population to widgets/show.rs
2018-04-17 04:44:55 +03:00
Jordan Petridis
a0154c5919
lazy_load: Add the ability to execute a callbakc on finish
...
When iteration of data is finished, None will be returned and
the or_else() block will be executed. Now a callback can be
passed that will be executd when the iteration/loading finishes.
2018-04-17 03:13:01 +03:00
Jordan Petridis
08365c412a
h-gtk:utils Add a more flexible implementation of lazy_load.
...
lazy_load_full is meant for siturations that you don't need
the constraisn of passing a single container parent and adding
a sigle widget to it.
Reimplemnted lazy_load on top of lazy_load_full.
2018-04-17 02:33:32 +03:00
Jordan Petridis
2d291a08fc
h-data: Refactor the Diesel helper traits to use Associated Types.
2018-04-17 01:33:50 +03:00
Jordan Petridis
7a17b3df4b
ShowWidget: Restore sensitivite of the unsub button.
...
If you clicked unsub, then undo and then the same show widget you
would navigated to the previous ShowWidget and the unsub button
would still be insensitive.
2018-04-16 07:43:30 +03:00
Jordan Petridis
0589f2fe2a
h-gtk: Move show notification creation into widgets/show.rs
2018-04-16 05:45:58 +03:00
Jordan Petridis
a9abd75b51
h-gtk: Nuke Action::UpdateSource.
...
Use inline glib::idle_add since it can be called on the spot.
2018-04-16 04:34:17 +03:00
Jordan Petridis
bc6eeec663
Replace if Let Err(_) with .map_err().ok() patterns.
...
I dislike the indentation and the noise if let adds.
2018-04-16 04:03:44 +03:00
Jordan Petridis
3132856efe
h-gtk/utils: Remove expects and unwraps on senders
2018-04-16 01:27:59 +03:00
Jordan Petridis
4db7628eed
h-gtk/utils: Make refresh_feed methods generic over Source.
2018-04-16 01:12:27 +03:00
Jordan Petridis
7b71f59d3e
ShowWidget: Make unsub button insensitive instead of hidding it.
2018-04-15 23:53:28 +03:00
Jordan Petridis
76c177bc0f
ShowWidget: Add a scrolled-window to the show description.
2018-04-15 04:07:43 +03:00
Jordan Petridis
50a508b596
Improve formatting
2018-04-15 02:50:06 +03:00
Jordan Petridis
59c634f626
Source: change the signature of the request constructor
...
We don't really need to return Self.
2018-04-15 02:39:24 +03:00
Jordan Petridis
08ebb9e7d6
pipeline: Make run function generic again.
...
also minor formatting changes.
2018-04-14 08:03:58 +03:00
Jordan Petridis
f5f0a5b873
Remove dead code.
2018-04-14 07:52:55 +03:00
Jordan Petridis
1036176e51
pipeline: Make sure that the futures will be run.
...
Use .then() combinator to override the result and return
Ok(()) even if the task fails. That allows us to use join_all
instead of the custom written collect_futures function.
2018-04-14 07:41:50 +03:00
Jordan Petridis
c6a24e839a
h-data: Implement a tail-recursion loop to follow redirects.
...
Follow http 301 permanent redirects by using a future::loop_fn.
It's kinda funcky, match_status still returns status_codes as erros
and a new DataError Variant had to be added to distiguise when we
should Loop::Continue. This could be cleaned up a lot.
2018-04-14 05:30:29 +03:00
Jordan Petridis
87421ce74d
Cargo fmt
2018-04-13 04:35:50 +03:00
Jordan Petridis
f94ccb9947
InAppNotification: Remove the need to pass a sender.
2018-04-13 03:46:32 +03:00
Jordan Petridis
1f1d4af8ba
Nuke the custom configure file.
...
There is nothing provided that meson can't do on it's own.
2018-04-13 01:54:35 +03:00
Jordan Petridis
633803e0ad
h-gtk: Fix views not updating after a download completes.
...
While ideally we want episode widget to determine their states
themselves and avoid refreshing the whole view, currently there
is no infrastructure for that which resulted in views not being
updated their EpisodeWidgets stuck in the InProggress state.
2018-04-12 06:54:08 +03:00
Jordan Petridis
74fb8dc75c
Update deps.
2018-04-12 05:06:33 +03:00
Jordan Petridis
2523a0cf90
Enable backtraces on the flatpak builds.
2018-04-12 02:49:51 +03:00
Jordan Petridis
47a58a9e65
Improve formatting
2018-04-12 02:49:27 +03:00
Jordan Petridis
27c4fd9b30
Remove .expect() call on channel that can be dropped.
2018-04-12 02:42:52 +03:00
Jordan Petridis
f3904c599b
Remove dead From implementations.
2018-04-12 02:17:23 +03:00
Jordan Petridis
b86f288e86
EpidoseWidget: Recalculate widget's state when cancel is clicked.
...
Previously we would refresh all the views when download/cancel
button was clicked. This was done mainly to avoid zombie widget bugs
that would arise from shared state.
Now we still refresh all the background views but not the visible one.
Instead the widget has the reponsibility of recalculating it's state.
2018-04-12 02:00:23 +03:00
Jordan Petridis
67bdd3664a
EpisodeWidget: Remove Widget::set/get name calls.
...
I don't even remember why this was there.
2018-04-12 00:13:43 +03:00
Jordan Petridis
8d4fdb8ece
EpidoseWidget: Only refresh background views when download is clicked.
2018-04-11 23:59:08 +03:00