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
Jordan Petridis
0720222423
h-gtk/app: use idle_add instead of timeout_add for updating on startup.
2018-04-10 21:07:07 +03:00
Jordan Petridis
572ab86bc4
Document utils::lazy_load.
2018-04-10 16:57:08 +00:00
Jordan Petridis
29cf5940f5
Lazy_load: move to utils module and make it public.
2018-04-10 16:57:08 +00:00
Jordan Petridis
4b4f5c39d4
Lazy_load: improve the naming scheme.
2018-04-10 16:57:08 +00:00
Jordan Petridis
5069430a3a
Lazy_load: remove unnecessary clone of an Rc pointer.
2018-04-10 16:57:08 +00:00
Jordan Petridis
28d7373779
Lazy_load: Use IntoIterator for T, instead of Iterator.
2018-04-10 16:57:08 +00:00
Jordan Petridis
9d5fa04d49
Lazy_load: accept an iterator instead a Vec<_> over T.
2018-04-10 16:57:08 +00:00
Jordan Petridis
43bf8b3f15
Lazy_load: Avoid manually indexing.
...
make the data: Vec<T> mutable, then reverse the vector
so it can be used as a stack, and then use the ::pop()
method to retrieve the item.
This also avoid the constrain for Clone on T.
2018-04-10 16:57:08 +00:00
Jordan Petridis
ed80605755
Move the lazy_load logic to a Generic function.
2018-04-10 16:57:08 +00:00
Jordan Petridis
cc84a4637d
EpisodesListBox: Do not block while fetching episode backlog.
2018-04-10 16:57:08 +00:00
Jordan Petridis
701b759ba2
EpisodesListBox: Add each widget lazyly.
2018-04-10 16:57:08 +00:00
Jordan Petridis
9cb2782ef9
ShowWidget: Initial Lazier evaluation of the widgets.
2018-04-10 16:57:08 +00:00
Jordan Petridis
5cd0a3c451
Fix the things I broke in b74dbb74bb
...
Someone really needs to restrict my access to anything that involves
transistors when I am sleep deprived.
2018-04-10 07:01:55 +03:00
Jordan Petridis
b74dbb74bb
h-data: Remove rel attributes from <a> tags when sanitizing html.
...
They are invalid in `pango` markup so theres no reason they
should are not needed. Also add some paranoid .trim() calls.
It returnes a &str slice so it's cheap.
2018-04-10 06:31:51 +03:00
Jordan Petridis
d332636dd4
Fix the fix that should have fixed the tests.
2018-04-06 19:36:52 +03:00
Jordan Petridis
32654f6cb2
Fix the tests.
2018-04-06 19:18:55 +03:00
Jordan Petridis
14a90e7138
Remove Futures_Cpupool.
...
The performance boost is not good enough to justify the
code complexity it add and the memory overhead of
yeat another threadpool.
We will start refactoring the whole pipeline implemantation
and might transition to either rayon-futures or tokio-runtime.
2018-04-06 18:18:03 +03:00
Jordan Petridis
dd2366a15e
Change the git url of the html2pango crate.
2018-04-05 20:44:28 +03:00
Jordan Petridis
370ba2d461
dlmanager: minor cleanup.
2018-04-04 21:36:23 +03:00
Jordan Petridis
ef655ef5e0
EpisodeWidget: Keep the widget's heigth contant. Fixes #57
2018-04-04 18:44:23 +03:00
Jordan Petridis
5cc550c830
NewEpisode: refactor a closure to that returned Option<T> to use .and_then instead.
2018-04-04 16:32:03 +03:00
Jordan Petridis
52cbe67756
NewEpisode: refactor another if else statement and document it.
2018-04-04 16:31:59 +03:00
Jordan Petridis
c910e0af40
NewPodcast: refactor an if else statement and document it.
2018-04-04 16:31:50 +03:00
Jordan Petridis
7a74534285
Merge branch '25-render-show-description' into 'master'
...
Resolve "Render link/bold/url attributes in ShowWidget description"
Closes #25
See merge request alatiera/hammond!30
2018-04-03 19:51:49 +00:00
Jordan Petridis
916775462d
Update changelog.
2018-04-03 19:42:13 +00:00
Jordan Petridis
3d98600126
h-data: Sanitize html during Podcast/Episode parsing.
2018-04-03 19:42:13 +00:00
Jordan Petridis
7ba834ee8d
Update deps now that we are at it.
2018-04-03 19:42:12 +00:00
Jordan Petridis
1c527cba03
Remove more commented out dead code.
2018-04-03 19:42:12 +00:00
Jordan Petridis
2d7ba7b246
h-data/source.rs: Reduce boilerplate.
2018-04-03 19:42:11 +00:00
Jordan Petridis
4ed70a8011
Rss::Error is now Send!
2018-04-03 19:42:11 +00:00
Jordan Petridis
7a3a148359
Remove more dead code.
2018-04-03 19:42:11 +00:00
Jordan Petridis
e07e35110d
Use pretty assertions!
2018-04-03 19:42:10 +00:00
Jordan Petridis
a463753c84
NewEpidode: Use parse rss.description instead of itunes.summary.
...
We can deal with(sort of) html now, so we should start indexing
the proper rss description. Also cleanup commented out code.
2018-04-03 19:42:10 +00:00
Jordan Petridis
a946ddfab1
html_to_pango: Switch to use the new library spawn from this.
...
Thanks to @danigm for spinning that part of fractal to a shared library.
2018-04-03 19:42:09 +00:00
Jordan Petridis
af1cb43bd6
NewPodcast: Prefer the rss.description attribute.
...
Since we can handle rendering html stuff by converting it to pango
we no longer need the text-only itunes summary attribure.
2018-04-03 19:42:09 +00:00
Jordan Petridis
935d61324f
ShowWidget: Convert html to pango markup and render it.
...
Instead of stipping all the html tags and just using the text
in the label we could *try* converting it to pango markup
which is a bit more flexible than plain text.
The code was copied from Fractal.
2018-04-03 19:42:08 +00:00
Jordan Petridis
10e016f2ea
update appdata.xml
2018-04-03 21:41:53 +03:00
Jordan Petridis
154655d571
Readme: Fix the dependancies listed to include rustc and cargo.
2018-04-03 20:49:30 +03:00
Jordan Petridis
491cd8f01c
cargo fmt
2018-03-30 17:24:38 +03:00
Jordan Petridis
2b711ff04c
Update .doap file
2018-03-30 16:47:09 +03:00
Jordan Petridis
07eadd2364
h-gtk/utils: Improve itunes resolver and add extra test cases.
2018-03-30 16:38:59 +03:00
Jordan Petridis
7086afe73d
h-gtk/utils: More refactor to improve formatting.
2018-03-30 15:33:19 +03:00
Jordan Petridis
f21398357b
h-gtk/utils: Refactor some mutex locks, improve formatting.
2018-03-30 14:39:30 +03:00
Jordan Petridis
c338802329
Update deps.
2018-03-30 11:49:54 +03:00
Jordan Petridis
c3076e748e
cargo fmt
2018-03-30 10:22:34 +03:00
Jordan Petridis
1595256c86
Use rayon to manage all the threads.
2018-03-30 09:31:25 +03:00
Jordan Petridis
0623592f75
Merge branch '7-async-image-loading' into 'master'
...
Resolve "Make image loading not blocking the programs execution."
Closes #7
See merge request alatiera/Hammond!29
2018-03-29 14:57:44 +00:00
Jordan Petridis
f2444f151c
h-gtk/utils: Re-work format_err! calls and improve formatting
2018-03-29 15:26:44 +03:00
Jordan Petridis
710a3f2552
Use SendCell::try_get instead of SendCell::into_inner
2018-03-29 15:19:13 +03:00
Jordan Petridis
6071c664e7
Update changelog
2018-03-29 13:32:57 +03:00
Jordan Petridis
e203815f4f
hammond-gtk/utils.rs: Use a hashset to keep track of cover downloads.
...
Use a HashSet to check if a download of a cover is already active. If
it is, schedule a callback that will try to set the image from the
cached pixbuf later.
2018-03-29 13:07:46 +03:00
Jordan Petridis
c3658080d3
Comment out a test.
2018-03-29 11:37:31 +03:00
Jordan Petridis
8703470010
h-gtk/utils: Use a threadpool to avoid spawning a million threads
2018-03-29 10:24:02 +03:00
Jordan Petridis
88cc7e6fec
Fix set_image_from_path test
2018-03-29 09:21:49 +03:00
Jordan Petridis
badcbc32c6
Implement async loading of the Show covers.
2018-03-28 22:41:45 +03:00
Jordan Petridis
daa8f15ce9
hammond-gtk::utils: change the signature of get_pixbug_from_path and rename it
...
Requires a gtk::Image as argument now, it sets the pixbuf to the
img directly instead of returning it.
New name is set_image_from_path.
This is ground work so we can later keep the image reference, and
use it to set the image with a callback.
2018-03-28 21:47:10 +03:00
Jordan Petridis
89ee174ded
Version bump.
2018-03-28 14:48:43 +03:00
Jordan Petridis
cc03c2407b
Merge branch '44-empty-show-widget' into 'master'
...
Resolve "Unpleasant ShowWidget behaviour if the show has no Episodes"
Closes #44
See merge request alatiera/Hammond!28
2018-03-28 11:25:35 +00:00
Jordan Petridis
89254025f3
Update changelog
2018-03-28 13:33:29 +03:00
Jordan Petridis
f693c986ec
Add an empty_show if Show has no episodes.
2018-03-28 13:24:26 +03:00
Jordan Petridis
3c7f3ecb56
NewPodcast: Fix Image parsing if Itunes ext is Some(None).
...
Instead of checking if the itunes img url was Some we were assuming
that if an itunes extension existed, it would have an image. That's
not always the case as it turns out there can be an Itunes Ext but
img still be None resulting to not falling back to the Rss image tag.
2018-03-28 12:08:41 +03:00
Jordan Petridis
ef3809ed25
Update about dialog.
2018-03-27 16:53:12 +03:00
Jordan Petridis
f5ddb7107e
Update changelog
2018-03-27 16:43:06 +03:00
Jordan Petridis
1d32018c02
Merge branch 'feature/persist-window-geometry' into 'master'
...
Issue #50 : Persist window geometry
See merge request alatiera/Hammond!25
2018-03-27 12:27:33 +00:00
Jordan Petridis
d525d1fe59
InAppNofitication: Make revealer field private, change show signature
...
Accept an overlay widget that the revealer will be attached to into
the show method. Thus revealer field no longer need to be public.
2018-03-27 12:01:53 +03:00
Jordan Petridis
bdc6264701
app.rs: Minor formatting improvments.
2018-03-27 11:50:31 +03:00
Jordan Petridis
7e2640e2d0
ShowWidget: When unsub notification expires, remove show from the ignore list.
...
This should not make any difference regarding the behaviour since
the Show id is eq to the sqlite rowid which means that even
if the same show was removed and readded it would have diff id.
2018-03-27 11:09:53 +03:00
Jordan Petridis
822a72efde
gitlabci: Enable the ubuntu/rust stable build, disable tests in flatpak
...
Due to meson not understanding cargo, it's actually faster to have
a separate build + test job than trying to compile the cargo
tests twice inside the flatpak enviroment
2018-03-27 10:04:02 +03:00
Jordan Petridis
192b13e393
Merge branch 'issue/52' into 'master'
...
Fix #52 : Double border around main window
Closes #52
See merge request alatiera/Hammond!24
2018-03-26 19:21:04 +00:00
Jordan Petridis
3d39638c99
Merge branch '36-add-undo-for-unsubscribing-from-shows' into 'master'
...
Resolve "Add "undo" for unsubscribing from shows"
Closes #36
See merge request alatiera/Hammond!27
2018-03-26 18:39:19 +00:00
Jordan Petridis
69e87d129a
ShowWidget: Hide shows from the Views when unsub is hit.
2018-03-26 14:34:54 +03:00
Jordan Petridis
f7a7510322
Implement the shared HashSet with the ignored Shows ids
2018-03-26 13:25:39 +03:00
Jordan Petridis
e9f2ba47f2
dbquerries: Add get_episodes and get_podcasts querries that can filters.
2018-03-26 12:46:13 +03:00