Jordan Petridis
5d6fbb6f04
Headerbar: ::new() method now returns Rc<Self>.
2018-06-27 18:20:45 +03:00
Jordan Petridis
301ebdbcd8
Content: ::new() method now returns Rc<Self>.
2018-06-27 18:18:11 +03:00
Jordan Petridis
49bcf46b4f
app.rs: Group the gactions declarations.
2018-06-27 17:11:32 +03:00
Jordan Petridis
f7263c8ab8
app.rs: Move the action channel to it's own function.
2018-06-27 16:48:35 +03:00
Jordan Petridis
c69772131a
app.rs: Refactor into an object/struct again.
2018-06-27 16:32:08 +03:00
Jordan Petridis
e8c025b898
app.rs: Minor style change.
2018-06-26 23:37:14 +03:00
Jordan Petridis
8fb5c16bce
Upgrade crossbeam-channel.
2018-06-26 23:37:06 +03:00
Jordan Petridis
f4551ddf3a
Update deps.
2018-06-26 23:37:02 +03:00
Jordan Petridis
32e8f952fd
Even more lints!
2018-06-24 02:21:27 +03:00
Jordan Petridis
faeafc329c
PlayerWidget: Tweak rewind on pause behavior.
...
Only rewind on pause if the stream position is passed a certain point.
Else it can feel a bit weird if you just started the stream and it
immediatly rewinds.
2018-06-23 22:45:21 +00:00
Jordan Petridis
eeef0d13ff
PlayerWidget: Use the Gtk Main Context for the gst_player as well.
...
There is no longer a need for sending stuff to the main-thread `Action`
channel anymore thanks to this.
2018-06-23 22:45:21 +00:00
Jordan Petridis
0686fca3b0
h-gtk: Increase the polling rate of the main thread channel.
...
When dragging the PlayerWidget.timer.slider widget PlayerDurationChanged
messaged pile up in the channel and get out of sync with the
slider.connect_value_changed() signal.
2018-06-23 22:45:21 +00:00
Jordan Petridis
2d879b9604
PlayerRate: Change the container widget to GtkBox and add padding.
2018-06-23 22:45:20 +00:00
Jordan Petridis
38eb14b013
Delete commented out code.
2018-06-23 22:45:19 +00:00
Jordan Petridis
ff2f43766e
PlayerWidget: Add a widget to change the playback speed of the stream.
...
Only 3 options are offered currently since the design of the feature
is still in progress and this is only a throw a away prototype.
2018-06-23 22:45:19 +00:00
Jordan Petridis
593d66ea54
EpisodeWidget: Mark an episode as played when the play button is hit.
...
Ideally episodes would be marked as played only when they have
passed a cerain point in their duration, but till thats ready
we should keep marking them.
2018-06-23 22:45:19 +00:00
Jordan Petridis
ee8cbbf7ef
PlayerWidget: Delete commented out stuff.
2018-06-23 22:45:19 +00:00
Jordan Petridis
474cb49d2c
PlayerInfo: Increase the size of the cover.
2018-06-23 22:45:19 +00:00
Jordan Petridis
590f815dc0
PlayerInfo: Limit label widths and add tooltips.
2018-06-23 22:45:18 +00:00
Jordan Petridis
a93d5246d2
PlayerInfo: Swap bold properties of the labels.
2018-06-23 22:45:18 +00:00
Jordan Petridis
3e2ab8e7ee
PlayerExt: Add a stop method.
...
Also connect on the gst_player::Player::connect_on_stream_end method.
The main reason for this is to be able to reset the slider bar to 0
upon a stream ends.
2018-06-23 22:45:18 +00:00
Jordan Petridis
a83270699f
PlayerWidget: refactor seek method.
2018-06-23 22:45:17 +00:00
Jordan Petridis
745afb32a3
PlayerWidget: Rewind on pause.
2018-06-23 22:45:17 +00:00
Jordan Petridis
2fcb8d915d
PlayerWidget: Remove an .expect() occurrence.
2018-06-23 22:45:17 +00:00
Jordan Petridis
a596b62a5f
PlayerWidget: Tweak gst_player config.
2018-06-23 22:45:16 +00:00
Jordan Petridis
55b1504aab
PlayerTimes: Display human-friendly values.
2018-06-23 22:45:16 +00:00
Jordan Petridis
c42822669b
PlayerTimes: Replace unnecessary Arc with Rc.
2018-06-23 22:45:16 +00:00
Jordan Petridis
b58d28c723
PlayerTimes: create wrapper struct of gst::ClockTime.
...
Now on_duration_changed requires a `Duration` type and
on_position_updated requires a `Position` type as oppose to
both accepting `ClockTime` as their argument.
2018-06-23 22:45:16 +00:00
Jordan Petridis
a6a34d8246
PlayerWidget: Group the button connect_clicked methods.
2018-06-23 22:45:16 +00:00
Jordan Petridis
0080399db2
PlayerWidget: Move on_duration_change and on_postion_updated methods.
...
Previously they depended on the player/pipeline to get the ClockTime
values, and only `PlayerWidget` had access to the `gst_player::Player`
object.
Now that it uses the gst_player methods instead of the raw pipeline
methods to get the ClockTime values it no longer needs access to the whole
PlayerWidget object.
2018-06-23 22:45:15 +00:00
Jordan Petridis
50b480ee23
PlayerWidget: Refactor the position_changed/updated callback.
...
It now uses gst_player::Player::connect_position_updated callback
to send, cross threads, the `position` value to the gtk main loop
which then updates the widget.
2018-06-23 22:45:15 +00:00
Jordan Petridis
da467b7837
PlayerWidget::seek handle the case where the offset might be none.
2018-06-23 22:45:15 +00:00
Jordan Petridis
70914b6c3e
PlayerWigdet: Refactor the way the duration label is updated.
...
This now connect's directly to gst_player::Player::connect_duration_changed
method.
The method then sends a cross-thread msg to the Action channel in the main loop that
then updates the widget.
2018-06-23 22:45:14 +00:00
Jordan Petridis
6c3fbfe0ca
PlayerWiget: refactor the seekbar connect signal.
2018-06-23 22:45:14 +00:00
Jordan Petridis
8e4b705e60
PlayerWidget: Log the gst warnings.
2018-06-23 22:45:14 +00:00
Jordan Petridis
48d80d3194
PlayerWidget: Remove unused vars an Enum.
2018-06-23 22:45:14 +00:00
Jordan Petridis
38768c777d
PlayerWidget: Connect the fast-forward and rewind buttons, sort of.
...
There appears to be a bug where it seeks 17 seconds instead of 10.
2018-06-23 22:45:13 +00:00
Jordan Petridis
1daa841f31
PlayerWidget: Connect to the errors callback.
2018-06-23 22:45:13 +00:00
Jordan Petridis
a9f81d0ad3
PlayerWidget: Refactor the timers callbacks.
...
Should use the gst_player::Player callbacks instead but they require
the Send Trait which means we would need to use SendCell and that's
not something I am going to deal with right now.
2018-06-23 22:45:13 +00:00
Jordan Petridis
76720424ab
PlayerWidget: Set a custom config for the gst Player.
2018-06-23 22:45:13 +00:00
Jordan Petridis
a7b639a66b
PlayerWidget: Wire the PlayerTimes labels and scale.
...
Adapted from gstreamer basic-tutorial-5.
https://gstreamer.freedesktop.org/documentation/tutorials/basic/toolkit-integration.html
2018-06-23 22:45:12 +00:00
Jordan Petridis
1b78d221b6
PlayerWidget: Wire the play and pause buttons and add style classes to the Info Labels.
...
This also includes the yak shaving of a ::new and ::inti methods.
2018-06-23 22:45:12 +00:00
Jordan Petridis
039c3182aa
h-gtk: Remove unused .ui file.
2018-06-23 22:45:12 +00:00
Jordan Petridis
3baa69b43b
cargo fmt
2018-06-23 22:45:11 +00:00
Jordan Petridis
5f92df97e6
PlayerWidget: Wire the widget to the GUI.
...
This commit also removes the majority of the playback widget,
though most of it's code will make it to the PlayerWidget once
it starts to get wired to the gtreamer_plaer::Player.
2018-06-23 22:45:11 +00:00
Jordan Petridis
47f297c495
PlayerWidget: Intial draft of the the PlayerExt trait.
2018-06-23 22:45:11 +00:00
Jordan Petridis
58f09ba150
h-gtk: Bind the new player widget to code.
2018-06-23 22:45:10 +00:00
Jordan Petridis
1142948945
Rework the player widget.
2018-06-23 22:45:10 +00:00
Zander Brown
9528160b03
Start hooking things up
...
Still doesn't accept input
2018-06-23 22:45:10 +00:00
Zander Brown
4afdc54914
Initial playback control area
...
(not plumbed in)
2018-06-23 22:45:10 +00:00
Zander Brown
09973a6a56
Initial playback
...
... and not a lot more. Hit play and the podcast will play, press play on something else and that will play instead
2018-06-23 22:45:09 +00:00
Jordan Petridis
c4c7bbf46b
Content: Change the user-facing string of the home stack.
2018-06-23 16:11:00 +03:00
Jordan Petridis
bbabc6f5e9
h-gtk: Add resources/ to the cargo check list.
2018-06-11 14:23:29 +03:00
Zander Brown
ee23df176d
Our GActions don't need to be in the app namespace
2018-06-07 18:06:36 +01:00
Jordan Petridis
a9feed56fe
Replace html2pango with html2text.
2018-06-06 15:28:44 +03:00
Jordan Petridis
6d93ceb910
EpisodeWidget: Minor style change.
2018-06-05 14:33:18 +03:00
Jordan Petridis
9b0ac5b83d
EpisodeWidget: Do not lock the Proggress struck when running update callbacks.
...
Previously each time we wanted to inspect the `Progress` struct we
were blocking which was problematic since the downloader also wants
to block to update it.
Now we use try_lock() and if a lock can't be aquired we requeue another
callback. That way we can also be way more aggressive about the interval
in whihc it the callbacks will run.
2018-06-05 14:17:37 +03:00
Jordan Petridis
ced686e1cd
EpisodeWidget: Remove explicit type declarations.
2018-06-02 22:33:00 +03:00
Jordan Petridis
272aab2397
EpisodeWidget: Document determine_state method.
2018-06-02 22:00:30 +03:00
Jordan Petridis
a7f87f2ac8
ShowWidget: Fix markallplayed functionality.
...
cfe79a73d6 changed the structure
of the EpisodeWidget and broke this.
2018-06-02 21:34:19 +03:00
Jordan Petridis
f9e85155a8
Remove unused dependancy.
2018-06-02 21:13:30 +03:00
Jordan Petridis
d281c18951
EpisodeWidget: Pass EpisodeWidgetQuery by refference.
2018-06-02 21:03:07 +03:00
Jordan Petridis
04e7f4f8a7
EpisodeWidget: Wire the download_checker callback again.
...
If an episode is being downloaded we setup a callback that will
supervise the widget and update it's state once the download action is
completed and the episode rowid is removed from `manager::ACTIVEDOWNLOADS`.
2018-06-02 21:03:00 +03:00
Jordan Petridis
a090c11f4a
EpisodeWidget: Wire the progressbar again.
2018-06-02 19:42:19 +03:00
Jordan Petridis
c303c697a9
EpisodeWidget: Wire the total_size label again.
...
The size might be provided by the rss feed but not alwasy. Additionally it might be
missleading so when a download starts we replace the label with the
HTTP ContentLength header.
2018-06-02 19:25:25 +03:00
Jordan Petridis
9466c5ea10
EpisodeWidget: Wire the cancel button.
2018-06-01 21:30:56 +03:00
Jordan Petridis
1268fcf1cc
EpisodeWidget: Wire the download button.
2018-06-01 19:08:56 +03:00
Jordan Petridis
86d06fa879
EpisodeWidget: Wire the play button again.
2018-06-01 16:49:06 +03:00
Jordan Petridis
cfe79a73d6
EpisodeWidget: Initial refactor.
...
State machines were a fun experiement but a nightmare to deal with
after the fact. This is the first steps for a refactor in a tradition
style with the goal to ultimatly making it easy to and port to relm.
2018-06-01 16:19:33 +03:00
Zander Brown
2fe612d392
Avoid un-closable AboutDialog
2018-05-31 08:35:09 +00:00
Jordan Petridis
14d72b92cb
h-gtk: Move appnotif.rs into the widgets module.
2018-05-30 16:45:46 +03:00
Jordan Petridis
8c0055723c
cargo fmt
2018-05-30 16:25:15 +03:00
Zander Brown
2c203acbd2
Use a macro when setting up simple SimpleActions
2018-05-29 17:16:05 +00:00
Jordan Petridis
e626c6f286
app.rs: Factor out the GAction definitions.
2018-05-29 14:04:09 +03:00
Jordan Petridis
24058f9534
h-gtk: Write doc comment for aboutdialog.
2018-05-29 13:36:22 +03:00
Jordan Petridis
a8d47e9a72
app.rs: Remove unused variable.
2018-05-29 13:26:36 +03:00
Jordan Petridis
667deef5f2
Use a mpmc channel instead of the mspc from the std.
2018-05-28 20:49:12 +03:00
Zander Brown
ffbab0136f
Bind F10 to open the menu
...
Because we aren't using app-menu accels aren't automatically binded
2018-05-27 15:48:27 +01:00
Zander Brown
b5f7399b2c
RIP appmenu
...
F5 -> <primary>r for refresh
2018-05-27 14:34:58 +01:00
Zander Brown
f1892eeba2
Always show hamburger menu
2018-05-22 10:46:50 +01:00
Zander Brown
e7128a57db
Resolve some comments
2018-05-22 10:28:13 +01:00
Zander Brown
793cafd294
Formatting updates
2018-05-22 09:55:00 +01:00
Zander Brown
079ae0e1f3
Fallback to hamburger when the environment doesn't like app menus
2018-05-21 13:01:06 +01:00
Zander Brown
e181a9837a
Merge upstream master
2018-05-21 12:01:32 +01:00
Zander Brown
ca5c7022ef
Fixed some shortcut display issues
...
Also give FileChooserNative arguments in the right order & add F5 to refresh
2018-05-21 11:49:35 +01:00
Zander Brown
75c50392cb
Everything works (ish)
...
Also use FileChooserNative for flatpak nicities
2018-05-21 10:06:10 +01:00
Zander Brown
8c2ea052de
Keyboard shortcut overview!
...
(shame everything else is broken...)
2018-05-20 13:59:00 +01:00
Zander Brown
095dd73c52
Move refresh
2018-05-19 22:11:44 +01:00
Zander Brown
ac6ac42860
Move import
2018-05-19 21:48:38 +01:00
Zander Brown
c6ce888cc7
Define an app-menu with About & Quit actions
...
Rename some paths for auto resource magic
2018-05-19 20:38:36 +01:00
Jordan Petridis
c4e6fcc451
Version bump.
2018-05-19 13:11:02 +03:00
Jordan Petridis
4d77281249
Update deps.
2018-05-19 12:17:55 +03:00
Jordan Petridis
41073615e9
Clippy: Derive Copy for appnotif::UndoState
2018-05-16 19:54:07 +03:00
Jordan Petridis
bd12b09cbc
ShowsView: Fix a bug where the last show would not be shown.
...
utils::lazy_load() now calls widget.show() for each widget it adds
to the parent container.
2018-05-16 19:44:58 +03:00
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