Commit Graph

1001 Commits

Author SHA1 Message Date
Anna Schumaker b95ad55c9a audio: Give the BassPlayer an artwork signal
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-07 14:46:29 -04:00
Anna Schumaker 08696dd17a audio: Give the BassPlayer signals for eos and about-to-finish
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-07 14:46:00 -04:00
Anna Schumaker e467b784e4 audio: Give the BassPlayer a play_percent property
For calculating what percentage of a song has been played, which is used
to determine if a track can be marked as played or not

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-07 14:46:00 -04:00
Anna Schumaker 51e8bc295d audio: Give the BassPlayer a volume property
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-07 14:46:00 -04:00
Anna Schumaker fa2cbcc261 audio: Give the BassPlayer a position property
I use the state change callbacks to send a position-changed signal on a
regular interval when playback is going. Seeking is handled by setting
the position property to a new value.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-07 14:45:42 -04:00
Anna Schumaker a4595eab93 audio: Give the BassPlayer a duration property
I also add a duration-changed signal so the seek scale can update its
range.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-07 14:45:42 -04:00
Anna Schumaker a4464cd7d9 audio: Give the BassPlayer a playing property
To set either Gst.State.PLAYING or Gst.State.PAUSED on the playbin. I
also add two signals for playback-start and playback-paused that the
PlayPause button can use.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-07 14:45:34 -04:00
Anna Schumaker c2c6ac7890 audio: Give the BassPlayer a uri property
With both setter and getter to change the playbin uri

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-06 10:48:03 -04:00
Anna Schumaker 574e49ef09 audio: Give the BassPlayer a bus property
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-04 08:33:15 -04:00
Anna Schumaker 990a8047d9 audio: Create a new BassPlayer class
My intention is to use this to handle GStreamer stuff so I can separate
out the higher level functions like next(), previous(), and load_track()

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-04 08:32:14 -04:00
Anna Schumaker 94235b1ce8 Emmental 2.4
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:33:18 -04:00
Anna Schumaker 76bf68f484 audio: Replace the old Controls widget with AudioControls
And grab the global Player instance during construction.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:26:58 -04:00
Anna Schumaker ef1d3f0985 audio: Create a custom AudioControls widget
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:26:58 -04:00
Anna Schumaker ca47bd052f audio: Create a custom MenuButton and MenuIcon
This mimics the behavior of the Gtk.MenuButton(), except it allows
updating the ToggleButton child widget with the current autopause count.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:26:58 -04:00
Anna Schumaker bd49396210 audio: Create a custom ControlsPopover widget
For displaying our menu controls

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:26:58 -04:00
Anna Schumaker 68f0541079 audio: Create a custom AutoPauseControlBox
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:26:58 -04:00
Anna Schumaker d551e0ea13 audio: Create a custom VolumeControlBox
I also create a shared base class at the same time so autopause controls
can use it as well.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:26:57 -04:00
Anna Schumaker da1211f595 audio: Add a custom AutoPauseScale widget
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:23:38 -04:00
Anna Schumaker edc3e7f876 audio: Add a custom VolumeScale widget
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:23:37 -04:00
Anna Schumaker 33c7bdf517 audio: Add a custom PlayPause button
And update the image based on the current playback state

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:15:43 -04:00
Anna Schumaker ec9ed14474 audio: Create custom PreviousButton and NextButton buttons
Along with a shared base class for these buttons, and soon the
PlayPause button

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:15:43 -04:00
Anna Schumaker e4f6018195 audio: Replace the old Seeker widget with a ScaleButtonbox
And make the widget separate from the audio Player

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:15:43 -04:00
Anna Schumaker e4236b0bf4 audio: Create a custom ScaleButtonBox
This configures the buttons for a scale and places them into a GtkBox
widget for us to use.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:15:43 -04:00
Anna Schumaker 644706ef50 audio: Add custom ScaleButtons
Thes buttons handle Increment and Decrement operations

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:15:43 -04:00
Anna Schumaker 1c53886152 audio: Add a custom SeekScale widget
For handling seeks to the audio player

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:15:43 -04:00
Anna Schumaker 753f6477a7 audio: Create a custom ScalePlus widget
For giving GtkScales increment() and decrement() functionality that
triggers the "change-value" signal

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-09-02 16:15:41 -04:00
Anna Schumaker e884dc5a6e audio: Clean up the NowPlaying widget
It now uses the TrackTitle and TrackArtist labels. Additonally, I move
it out of the Player class and create a shortcut function for
instantiating one using the global Player instance

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-31 15:13:18 -04:00
Anna Schumaker ae7c2010e9 audio: Add a custom TrackArtist label
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-31 10:09:18 -04:00
Anna Schumaker 4ab66ef7ab audio: Add a custom TrackTitle label
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-31 10:04:27 -04:00
Anna Schumaker 5c2e4bb016 audio: Convert the Player into a GObject
And give it "state-changed" and "track-changed" signals.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 17:30:55 -04:00
Anna Schumaker 596b34eb5a Emmental 2.3 AUR commit
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 15:17:48 -04:00
Anna Schumaker cf912cc9f5 Emmental 2.3
Implemented new code for scanning files using idle tasks. I keep the
thread-based approach for now, since we're still using the tagdb and not
sqlite yet.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 15:00:25 -04:00
Anna Schumaker 98ef8bf3f3 scanner: Add shortcuts for creating widgets
These use the global queue instance to create appropriate widgets with
the same name.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 11:34:19 -04:00
Anna Schumaker 5f6f3f9f42 scanner: Create a global Queue instance
And some convenience functions for using it

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 11:13:49 -04:00
Anna Schumaker e09d892a46 scanner: Create a custom AddFolderButton widget
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 11:13:49 -04:00
Anna Schumaker 0157b1d4c0 scanner: Create a custom DirectoryChooser widget
It is set up to view and select directories only, with a shortcut added
for the user's Music directory.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 11:13:49 -04:00
Anna Schumaker 7535b71724 scanner: Create a custom UpdateAllButton widget
For updating all libraries in the database.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 11:13:49 -04:00
Anna Schumaker 8f837b40c1 scanner: Create a custom RemoveButton widget
For removing a specific library from the database.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 11:13:49 -04:00
Anna Schumaker 5e08088462 scanner: Create a custom UpdateButton widget
When clicked, it updates a specific Library instance

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 11:13:49 -04:00
Anna Schumaker 94b53aff5f scanner: Create a custom ProgressBar widget
For use tracking the progress we make through the TaskQueue

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 11:13:49 -04:00
Anna Schumaker a102087ece scanner: Create a TaskQueue
For running tasks with a GLib idle callback

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-30 11:13:48 -04:00
Anna Schumaker da78887783 scanner: Add a RemoveLibraryScheduler task
For breaking the tracklist into chunks, and then following up their
removal with a library table removal

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:11:12 -04:00
Anna Schumaker 88ebde085b scanner: Add a RemoveLibraryTask
For removing a library's database entry

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:11:08 -04:00
Anna Schumaker 0f57b10500 scanner: Add a RemoveTask
For unconditionally removing a list of tracks

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:11:05 -04:00
Anna Schumaker 19278af3b8 scanner: Add a CheckSchedulerTask
This task breaks a library's tracks into chunks and schedules a
CheckTask for each chunk.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:11:02 -04:00
Anna Schumaker 8946df3ce4 scanner: Add a CheckTask for checking if tracks still exist
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:10:59 -04:00
Anna Schumaker 7ea14392ec scanner: Add a DirectoryTask
For iterating through a directory and creating tasks based on the files
found. I had to add a subdirectory to the Test Album to make sure
subdirs are handled properly here.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:10:55 -04:00
Anna Schumaker 9cced017ad scanner: Add an ImportTask
For importing tracks from the tagdb

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:10:27 -04:00
Anna Schumaker 3402ce16ee scanner: Add a new FileTask for scanning music files
This task is also responsible for checking if the file already exists in
the database before scanning.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:06:58 -04:00
Anna Schumaker 91d0922518 scanner: Add a CommitTask
For committing the database during scanning

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
2021-08-26 17:06:55 -04:00