Commit Graph

1139 Commits

Author SHA1 Message Date
Jordan Petridis
7aeedc84e2
PlayerWidget: Group the button connect_clicked methods. 2018-06-15 18:19:17 +03:00
Jordan Petridis
1f205220b8
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-15 18:05:19 +03:00
Jordan Petridis
2c720545c3
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-15 17:56:47 +03:00
Jordan Petridis
d44be276c2
PlayerWidget::seek handle the case where the offset might be none. 2018-06-15 17:34:05 +03:00
Jordan Petridis
9b9793efbf
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-15 17:30:49 +03:00
Jordan Petridis
582b445cde
PlayerWiget: refactor the seekbar connect signal. 2018-06-15 13:52:33 +03:00
Jordan Petridis
bbed3f645c
PlayerWidget: Log the gst warnings. 2018-06-15 13:02:27 +03:00
Jordan Petridis
196b2064d3
PlayerWidget: Remove unused vars an Enum. 2018-06-14 10:55:50 +03:00
Jordan Petridis
567b3a556b
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-14 10:32:41 +03:00
Jordan Petridis
123248c016
PlayerWidget: Connect to the errors callback. 2018-06-14 10:07:25 +03:00
Jordan Petridis
04e0a10c6b
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-14 09:54:35 +03:00
Jordan Petridis
24cb376551
PlayerWidget: Set a custom config for the gst Player. 2018-06-14 09:24:24 +03:00
Jordan Petridis
c15636ff8c
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-14 05:08:37 +03:00
Jordan Petridis
5a36eb1ac4
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-14 05:08:25 +03:00
Jordan Petridis
67f14397f8
CI: disable debian builds fow now.
Debian stable provides gst 1.10 but the gst-rs bindings requiere
v 1.12 to build.

I will make custom images Soon™
2018-06-14 02:58:07 +03:00
Jordan Petridis
429bacd7ab
h-gtk: Remove unused .ui file. 2018-06-14 00:18:56 +03:00
Jordan Petridis
e3f1174cee
CI: Add gstreamer as a dep for the debian build. 2018-06-14 00:06:45 +03:00
Jordan Petridis
9cbc68a0a9
cargo fmt 2018-06-13 22:42:07 +03:00
Jordan Petridis
0d22a2e53d
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-13 22:38:28 +03:00
Jordan Petridis
1455772d4e
PlayerWidget: Intial draft of the the PlayerExt trait. 2018-06-13 18:10:45 +03:00
Jordan Petridis
dc043ebc5c
h-gtk: Bind the new player widget to code. 2018-06-12 17:43:21 +03:00
Jordan Petridis
76236f486a
Rework the player widget. 2018-06-12 15:42:43 +03:00
Zander Brown
f84b177ba4
Start hooking things up
Still doesn't accept input
2018-06-12 15:42:39 +03:00
Zander Brown
1456e196fc
Initial playback control area
(not plumbed in)
2018-06-12 15:42:35 +03:00
Zander Brown
910a453a8e
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-12 15:42:31 +03:00
Jordan Petridis
bbabc6f5e9
h-gtk: Add resources/ to the cargo check list. 2018-06-11 14:23:29 +03:00
Jordan Petridis
2060579bb4
gitlab templates: Fix markdown formatting. 2018-06-09 16:16:57 +03:00
Jordan Petridis
b0f0940605 Merge branch 'master' into 'master'
Our GActions don't need to be in the app namespace

See merge request World/hammond!39
2018-06-07 17:37:12 +00: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
d53865d81b
Update deps. 2018-06-07 16:14:40 +03:00
Jordan Petridis
7becfd8adb
Commit Updated Cargo.lock.
This was part of a9feed56fe but
forgot to commit it.
2018-06-07 15:47:41 +03:00
Jordan Petridis
a9feed56fe
Replace html2pango with html2text. 2018-06-06 15:28:44 +03:00
Jordan Petridis
dea517c17c
Update the Changelog. 2018-06-05 14:58:29 +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
acabb40171 CI and Flatpak: Use the 3.28 runtime till fdo 1.8 is fixed. 2018-06-04 14:25:38 +00:00
Jordan Petridis
04cd56ca16 CI: change the image of the flatpak job. 2018-06-02 20:55:09 +00:00
Jordan Petridis
4371512ba2 Merge branch 'episode-wiget-refactor' into 'master'
Episode wiget refactor

See merge request World/hammond!38
2018-06-02 20:42:46 +00: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