Jordan Petridis
7d598bb1d0
h-gtk: Smooth out some stack transitions.
2018-05-16 19:40:36 +03:00
Jordan Petridis
ccd3e3ab2c
h-gtk: Show error notifications when OPML import fails.
2018-05-16 17:54:32 +03:00
Jordan Petridis
118dac5a1a
app.rs: Add an action for showing error notification.
2018-05-16 17:30:43 +03:00
Jordan Petridis
7035fe05c4
InAppNotification: Extend the widget to allow showing notifications without an undo button.
2018-05-16 16:58:03 +03:00
Jordan Petridis
af7331c6c6
h-gtk: Rename EpisodeViewWidget to HomeEpisode.
2018-05-16 16:33:54 +03:00
Jordan Petridis
4d2b64e79d
h-gtk: Remember the vertical allingment of the ShowsView.
2018-05-13 22:47:56 +03:00
Jordan Petridis
d47bbd6131
Remove explicit and not needed inline calls.
...
This code is not performance critical and the compiler will already
inline whatever it thinks it might benefit it.
2018-05-13 22:08:25 +03:00
Jordan Petridis
54fafa07a2
h-gtk: Use clone! macro to replace some boilerplate.
2018-05-13 21:51:32 +03:00
Jordan Petridis
97eef9149c
import_dialog: Do not show hidden files in the FileChooser.
2018-05-13 00:22:54 +03:00
Jordan Petridis
b95e70a8c4
import_dialog: Only show xml files in the FileChooser.
2018-05-13 00:06:35 +03:00
Jordan Petridis
00e747eb5f
h-gtk: Wire the import_shows button on the hamburger menu to the the opml import.
2018-05-12 22:55:35 +03:00
Jordan Petridis
be1a8df3ef
Headerbar: simplify the naming scheme a bit.
...
The type of the widgets is already a Button so there's no need in
repeating that in the struct field.
Also remove some type annotations since the compiler can infer them
from the type of the struct fields.
2018-05-12 14:45:00 +03:00
Jordan Petridis
e8ca2faaa7
Headerbar: Add import and export items in the hamburger menu.
...
I strongly believe that these do not belong there and should be moved
elsewhere. But for the time being and prototyping they are "good enough".
People most of the time tend to import from an OPML file only on the first
use of the App. Then the functionality sits there and is never used again.
That's why I think import should be moved into a preferences dialogs and
have the empty view suggest the action.
Exporting OPML files is also not that common, I also believe this should be
moved into a preference dialog instead of the hamburger menu.
2018-05-12 14:17:40 +03:00
Jordan Petridis
f06dbd0562
Version bump.
2018-05-07 19:48:21 +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
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
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
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
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
Ivan Augusto
2f1ea12cfa
Update links to new repo
2018-04-19 17:23:46 -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
0e4430bae4
EpisodeView: Initial refactor to make loading non-blocking.
2018-04-19 02:52:58 +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
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
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
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
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
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
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
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
491cd8f01c
cargo fmt
2018-03-30 17:24:38 +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
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
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
f693c986ec
Add an empty_show if Show has no episodes.
2018-03-28 13:24:26 +03:00
Jordan Petridis
ef3809ed25
Update about dialog.
2018-03-27 16:53:12 +03:00
Rowan Lewis
c458b27573
Handle window geometry with a new struct.
2018-03-27 11:54:36 +00:00
Rowan Lewis
524e0bb0a8
Persist window geometry including maximized state for issue #50 .
2018-03-27 11:54:36 +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
Rowan Lewis
2497cb31d0
Remove shadow_type from the show widget.
2018-03-26 18:53:48 +00:00
Rowan Lewis
446a0ede54
Fix #52 by removing the specified shadow_type from the episodes and shows scrolled windows.
2018-03-26 18:53:47 +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
Jordan Petridis
b2c95e5a73
ShowWidget: display a notification before removing the show.
2018-03-26 10:57:44 +03:00
Jordan Petridis
1af06f2e0d
Neaw gtk-rs release, yay!
2018-03-19 06:34:28 +02:00
Rowan Lewis
f182d441d1
Allow the Copy trait to do the work for us.
2018-03-18 00:29:52 +01:00
Rowan Lewis
e14f215793
Allow cleanup to be blocking on startup and remove cleanup from automatic content refreshes.
2018-03-17 23:50:59 +01:00
Rowan Lewis
34536f4e21
Set dark theme at application startup based on settings.
2018-03-17 23:46:37 +01:00
Rowan Lewis
afdedc7575
Use crono types instead of unsigned integers for time periods.
2018-03-17 01:10:10 +01:00
Rowan Lewis
69a7a9b180
Renamed the 'auto-refresh' settings to 'refresh-interval' so that they represent the internal behaviour better.
2018-03-16 23:31:12 +01:00
Rowan Lewis
a7540583d6
Connect settings for auto refresh and cleanup.
2018-03-16 23:23:06 +01:00
Jordan Petridis
a253d7ebf5
Merge branch 'feature/gsettings-schema' into 'master'
...
Added initial settings schema.
See merge request alatiera/Hammond!22
2018-03-16 20:05:19 +00:00
Rowan Lewis
3886402f8e
Spelling correction.
2018-03-16 20:45:40 +01:00
Rowan Lewis
97e402b980
Added initial settings schema.
2018-03-16 20:38:37 +01:00
Jordan Petridis
93e15af209
Compress gresource ui files.
2018-03-16 21:29:54 +02:00
Jordan Petridis
9f3a5a13b3
EpisodeWidget: Some RefCell are not really necessary.
2018-03-16 20:11:17 +02:00
Jordan Petridis
3a0fb4bdec
Upgrade dependancies.
2018-03-14 04:07:44 +02:00
Jordan Petridis
a11c4c9bd2
InAppNotification: Twek the margins around the text label.
2018-03-14 00:43:17 +02:00
Jordan Petridis
d4b98b5cb2
I hate everything that has to do with centering stuff.
2018-03-14 00:40:29 +02:00
Jordan Petridis
030fed6d12
EpisodeWidget: Just in case there was a deadlock.
2018-03-13 04:57:11 +02:00
Jordan Petridis
fc9579cd51
EpisodeWidget: Replace some Mutexs with RefCells.
...
The state machines are not send and the code is sequnecial.
We only need `&mut machine` refference to pass to `take_mut::take`
to change the state of the machine. In 2/3 cases we can even use
`.get_mut()` method and even avoid the dynamic borrow checks at
runtime. For the `TitleMachine` The only thing that will hold
a refference to it after initialization will be the play_button
callback. So it's justifiable to use `RefCell` insetead of a `Mutex`.
2018-03-13 04:44:06 +02:00
Jordan Petridis
74712b5410
EpisodeWidget: Remove unnecessary Arcs.
...
`DateMachine` and `DurationMachine` are only mutated during initialization
and thus do not need shared ownership.
`TitleMachine` is only mutated during initialization and after that only
the callback will keep holding a referrence to it. The `EpisodeWidget`s
get dropped after initialization. So it's justifiable to use `Rc<Mutex<T>>`
instead of `Arc`.
2018-03-13 03:47:46 +02:00
Jordan Petridis
05628a2529
Update changelog.
2018-03-12 22:32:52 +02:00
Jordan Petridis
1bdd2f2f5b
Merge branch 'master' into state-machines-experiements
2018-03-12 22:10:14 +02:00
Jordan Petridis
8a18630ae5
Initial integration of the itunes resolver with the Add button.
2018-03-12 20:49:02 +02:00
Jordan Petridis
b87c331b12
Make the itunes_resolver functions inlined.
2018-03-12 07:28:09 +02:00
Jordan Petridis
9da2414e8b
Initial implementation of an itunes_to_rss url resolver. #49
2018-03-12 06:48:05 +02:00
Jordan Petridis
285291b2ed
Ignore tests that need access to the host system.
2018-03-12 03:35:07 +02:00
Jordan Petridis
dbbb4e589e
InAppNotification: Fix autohiding after the callback is executed.
2018-03-09 20:24:28 +02:00
Jordan Petridis
064879c4ce
InAppNotification: Remove reduntant Overlay.
2018-03-09 19:46:46 +02:00
Jordan Petridis
8614922213
InAppNotification: Change box margins.
2018-03-09 19:36:43 +02:00
Jordan Petridis
99bc80c15b
ShowWidget: Add a 6px margin to the settings popup.
2018-03-09 17:04:11 +02:00
Jordan Petridis
3423d854e1
ShowWidget: Change the mark_all notif wording.
2018-03-09 16:43:13 +02:00
Jordan Petridis
483fd090f1
InAppNotification: Add close button.
2018-03-09 15:25:53 +02:00
Jordan Petridis
82988b6011
Implement in-app notifications as App wide actions.
...
At first I tried creating custom InAppNotifications and send
them to the main loop to be added. That does not work sicne gtk
widgets are not thread safe. For now we can try having Action messages
that create them on demand. As oppose to create first then pass them.
2018-03-09 14:53:13 +02:00
Jordan Petridis
d1821163c2
Factor out the In-app notification into something generic.
2018-03-09 01:21:54 +02:00
Jordan Petridis
7de118adeb
Minor style changes.
2018-03-08 23:14:48 +02:00
Jordan Petridis
7b064e63b9
ShowWidget: Fix undo notif.
2018-03-08 16:21:42 +02:00
Jordan Petridis
f6890c709f
ShowWidget: Instantly dim episode titles when mark_all is clicked.
...
This is would have been way prettier, easier and safer if we could
have custom widgets. But till then I am not sure how to do it better.
2018-03-07 23:04:02 +02:00
Jordan Petridis
e4814dbfbc
ShowWidget: Initial prototype of an undo notification.
2018-03-07 16:37:10 +02:00
Jordan Petridis
10db4f7210
ShowWidget: Initial implementation of a menu popup.
...
Re implement mark_all_episodes_as_watched functionality too.
2018-03-05 20:14:06 +02:00
Jordan Petridis
94f6fdcbe7
Clippy.
2018-03-03 18:52:38 +02:00
Jordan Petridis
bb467b7aba
Rustfmt.
2018-03-03 16:45:37 +02:00
Jordan Petridis
b062f0a19f
EpisodeWidget Machine: Remove unused From impls.
2018-02-22 13:16:33 +00:00
Jordan Petridis
2a6e0b0e07
Merge branch 'master' into state-machines-experiements
2018-02-22 12:14:55 +00:00
Jordan Petridis
1558ee2177
EpisodeWidget: Fix Date states.
2018-02-22 12:01:07 +00:00
Jordan Petridis
c61938ba62
Update dependancies.
2018-02-20 06:19:05 +00:00
Jordan Petridis
c856b88008
EpisodeWidget: Add a Date state machine.
2018-02-19 18:14:34 +00:00
Jordan Petridis
ae25dd65bf
Cargo clippy and fmt.
2018-02-19 09:58:47 +00:00
Jordan Petridis
a88a1c5f1f
MediaMachine: Expose an interface to update the ProgressBar and local_size.
2018-02-17 19:49:43 +02:00
Jordan Petridis
0cd678cc1d
MediaMachine: Expose an interface to update total_size label.
2018-02-16 17:18:02 +02:00
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
038d28779c
ShowWidget: Limit description to 100 chars width.
2018-02-16 07:45:29 +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
e803e11c81
Fix EpisodeWidget Vertical alignment.
2018-02-15 11:56:56 +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
5ccdb5d100
Minor cleanup.
2018-02-15 05:31:36 +02:00
Jordan Petridis
4b8fceaa7d
Nothing makes sense.
2018-02-15 05:15:25 +02:00
Jordan Petridis
a24c9b1350
EpisodesView: Fix EpisodeWidget spacing.
2018-02-14 12:44:30 +02:00
Jordan Petridis
8913b7aedb
SHowWidet: Experiement with dynamic size. Relevant to #35 .
2018-02-14 08:44:02 +02:00
Jordan Petridis
978edfc11f
EpisodeWidget: Allow the title to ellipsize. Releavnt to #35 .
2018-02-14 08:04:59 +02:00
Jordan Petridis
f4b41d0fd3
ShowWidget: Restrict horizontal scrolling. Relevant to #35 .
2018-02-14 07:56:27 +02:00
Jordan Petridis
20162a16a8
EpisodesView: Re-work box/frame layout
...
Restrict horizontal scrolling,
Allow the episode widget to expand along when more space becomes available.
2018-02-14 07:03:26 +02:00
Jordan Petridis
73f7bfa64b
I dont even know what I am doing at this point.
2018-02-14 04:18:05 +02:00
Jordan Petridis
159b0d92dd
EpisodeWidget: Merge Size and Progress machines, Split total_size to it's own machine.
2018-02-13 07:51:00 +02:00
Jordan Petridis
02de2059db
EpisodeWidget: Shrink the Size state Machine.
2018-02-13 05:03:16 +02:00