Commit Graph

6299 Commits

Author SHA1 Message Date
Clementine Buildbot c0c9037677 Automatic merge of translations from Transifex 2021-07-19 02:44:08 +00:00
kentsangkm 6982b47819 Search song from Spotify via web api 2021-07-18 10:45:10 +01:00
Clementine Buildbot 98dd3e48a6 Automatic merge of translations from Transifex 2021-07-17 02:45:02 +00:00
Clementine Buildbot 1e39ce29a4 Automatic merge of translations from Transifex 2021-07-15 02:43:57 +00:00
Jonas Kvinge daa2f25e3c Replace Q_ENUMS with Q_ENUM
Q_ENUMS is obsolete. See: https://doc.qt.io/qt-5/qobject-obsolete.html
The replacement is Q_ENUM which was introduced in Qt 5.5, and Clementine
requires Qt 5.6.
2021-07-14 10:19:28 +01:00
Jonas Kvinge f379ad84d4 Fix use of emit
Adds missing emits.

QTreeView::collapse and QTreeView::expand are slots, not signals. So
remove emit.
2021-07-14 10:18:47 +01:00
Jonas Kvinge 320a1b81c9 Fix incorrect use of QFutureWatcher
To avoid a race condition, it is important to call setFuture() after doing the connections.

See: https://doc.qt.io/qt-6/qfuturewatcher.html
2021-07-14 10:18:15 +01:00
Jonas Kvinge 0c1b6a2a44 Fix setting task blocking library scans
TaskManager::SetTaskBlocksLibraryScans() takes the ID of the task.
2021-07-14 10:18:01 +01:00
Jonas Kvinge 598e660aeb Unref bus in SongLoader::LoadRemote()
See: https://developer.gnome.org/gstreamer/stable/GstPipeline.html#gst-pipeline-get-bus
2021-07-14 10:17:50 +01:00
Jonas Kvinge 4d34748401 Fix memory leak in global search context menu 2021-07-14 10:17:35 +01:00
Clementine Buildbot b3b769f0e7 Automatic merge of translations from Transifex 2021-07-14 02:43:05 +00:00
Clementine Buildbot 2902a8786e Automatic merge of translations from Transifex 2021-07-12 02:43:07 +00:00
Clementine Buildbot 4acfdae740 Automatic merge of translations from Transifex 2021-07-09 02:43:48 +00:00
Jim Broadus a5e84bbe98 internet: Add common InternetService::ConfigRequired() method.
This will allow some common handling of unconfigured services.
2021-07-07 10:47:01 +01:00
Clementine Buildbot 7cb5f5c804 Automatic merge of translations from Transifex 2021-07-06 02:43:44 +00:00
Clementine Buildbot db8de64abb Automatic merge of translations from Transifex 2021-07-03 02:40:42 +00:00
Jim Broadus a5fd484a61 internet: Consolidate ShowConfig methods.
InternetService::ShowConfig() and ShowSettingsPage() were used to show
the settings page for a service.
2021-07-02 11:54:21 +01:00
Adolfo Jayme Barrientos 25b537cf26 De-duplicate my translator credit 2021-07-02 10:29:17 +01:00
Clementine Buildbot 8c660e278c Automatic merge of translations from Transifex 2021-07-01 02:44:35 +00:00
kentsangkm f35a640ce3 clang-format 2021-06-30 22:05:18 +01:00
kentsangkm cbe384d142 Add override 2021-06-30 22:05:18 +01:00
Clementine Buildbot 4a83f8c817 Automatic merge of translations from Transifex 2021-06-30 02:47:46 +00:00
Clementine Buildbot 67a947f116 Automatic merge of translations from Transifex 2021-06-29 02:46:23 +00:00
Clementine Buildbot 1db1e3231f Automatic merge of translations from Transifex 2021-06-28 02:47:35 +00:00
Jim Broadus f9854e564d transcoder: Add options avenc_aac element.
Initially adding encoder and bitrate settings, but the gstreamer
element exposes a lot of ffmpeg options that can be added as needed.

Reference: https://gstreamer.freedesktop.org/documentation/libav/avenc_aac.html
2021-06-27 15:56:50 +01:00
Clementine Buildbot 5ab81fd8bc Automatic merge of translations from Transifex 2021-06-25 02:47:39 +00:00
Clementine Buildbot 62cb889a3f Automatic merge of translations from Transifex 2021-06-24 02:42:11 +00:00
Clementine Buildbot e46503d0c3 Automatic merge of translations from Transifex 2021-06-23 02:46:40 +00:00
Clementine Buildbot 54be35f528 Automatic merge of translations from Transifex 2021-06-22 02:51:35 +00:00
Jim Broadus 6240fd3d0a player: Fix crash on UrlHandler error.
In a case where a playlist is composed entirely of unresolvable
internet service URLs and the playlist is set to repeat, playing an
item will result in an infinite (until crash) recursive condition.
HandleLoadResult is called with a NoMoreTracks result. It then calls
NextItem, which calls PlayAt for the next item, which, again, calls
HandleLoadResult.

This can be reproduced by logging into a subsonic server, adding items
to an empty playlist, then signing out.

To solve this, separate the error condition from the NoMoreTracks
result. Handle URL resolution errors the same way that media playback
errors are handled, where an error count is incremented and the player
stops if a limit is reached. The common code also notifies the playlist
of the error and provides user feedback by graying out the item.
2021-06-21 12:52:25 +01:00
Lukas Prediger 57b5911f13 Fixes from code review for PR #7037 2021-06-21 12:51:44 +01:00
Lukas Prediger 6fa9cbcc65 Removing watch_for_disc_changes in CddaDevice constructor 2021-06-21 12:51:44 +01:00
Lukas Prediger 83b6bf28f3 No exceptions for error handling! ConnectedDevice::Init now returns bool, indicating success or failure.
As decreed by @hatstand.
2021-06-21 12:51:44 +01:00
Lukas Prediger a4ad507704 Removed some unused includes. 2021-06-21 12:51:44 +01:00
Lukas Prediger d2240ec0ae Device change watchdog timer no longer freezes main thread while CddaSongLoader is active. 2021-06-21 12:51:44 +01:00
Lukas Prediger 2dd566653f Dealing with cdio_open failures in CddaDevice constructor 2021-06-21 12:51:44 +01:00
Lukas Prediger e35e4195c2 Not using std::make_unique 2021-06-21 12:51:44 +01:00
Lukas Prediger 6ea20336c2 CddaSongLoader: Only run one song loading thread at once.
- CddaSongLoader destructor waits for thread to end.
- Added flag to interrupt LoadSongsFromCdda
- Only start song loading if not already running
- Removed (now obsolete) mutex
2021-06-21 12:51:44 +01:00
Lukas Prediger ae9824e26a RipCDDialog no longer needs to LoadSongs on show. 2021-06-21 12:51:44 +01:00
Lukas Prediger 63953e1045 RipCDDialog now allows selecting the CD drive 2021-06-21 12:51:44 +01:00
Lukas Prediger b68734c761 Fix: Missing include guard for cddadevice in mainwindow.cpp 2021-06-21 12:51:44 +01:00
Lukas Prediger 95799a911d Removing ConnectedDevice::Refresh altogether 2021-06-21 12:51:44 +01:00
Lukas Prediger 639b918557 Removing CddaDevice::Refresh 2021-06-21 12:51:44 +01:00
Lukas Prediger 3c06b92b24 Ripper now works with a cdio instance passed into constructor
which comes from a CddaDevice corresponding to the device
2021-06-21 12:51:44 +01:00
Lukas Prediger ae3037984c RipCDDialog now uses CddaSongLoader from passed in CddaDevice 2021-06-21 12:51:44 +01:00
Lukas Prediger 14d5c25d37 Integrated cddevice back into cddadevice 2021-06-21 12:51:44 +01:00
Lukas Prediger 9ca75ae357 RipCDDialog now relies on CddaDevice to be notified about disc changes 2021-06-21 12:51:44 +01:00
Lukas Prediger d2c636ab46 Introducing CdDevice, simple wrapper for cdio that watches disc changes.
CddaDevice now relies on this to update song list. CddaDevice::Refresh is now a no-op.
2021-06-21 12:51:44 +01:00
Clementine Buildbot 11bd0db03b Automatic merge of translations from Transifex 2021-06-21 02:54:22 +00:00
Clementine Buildbot c3c77aef19 Automatic merge of translations from Transifex 2021-06-16 02:55:57 +00:00
Jim Broadus ffdaeba09f cueparser: Be more lenient when parsing indexes.
Most specs have mm:ss:ff as the index time format, but cue files have
been found with single digit minutes. e.g. 0:00:00 instead of 00:00:00

Reference: https://www.gnu.org/software/ccd2cue/manual/html_node/CUE-sheet-format.html
2021-06-15 14:14:00 +01:00
Clementine Buildbot 2bf8f1388b Automatic merge of translations from Transifex 2021-06-15 02:57:02 +00:00
Clementine Buildbot 418a366931 Automatic merge of translations from Transifex 2021-06-14 02:55:24 +00:00
Clementine Buildbot 4aa4f4fce3 Automatic merge of translations from Transifex 2021-06-13 02:54:58 +00:00
Clementine Buildbot 7fb387b967 Automatic merge of translations from Transifex 2021-06-12 02:54:18 +00:00
Jim Broadus 4e4fccc07a playlistparser: Add error mechanism for parsers.
Add a new Error signal to parser implementations. Display an error when
user tries to use the unimplemented CueParser::Save.
2021-06-11 10:17:20 +01:00
Jim Broadus f4108b5a0c playlistparser: Display errors on failures.
Add an Error signal to PlayListParser and connect that to the
PlayListManager::Error signal. This is eventually connected to the
Application::AddError. Add error messages in some cases where
PlayListParser can fail silently.
2021-06-11 10:17:20 +01:00
Clementine Buildbot 612767c878 Automatic merge of translations from Transifex 2021-06-09 03:12:09 +00:00
Clementine Buildbot b09ab3ff37 Automatic merge of translations from Transifex 2021-06-04 04:25:11 +00:00
Robin Ekman 0dbefa3064 Add a shortcut to go to next album 2021-06-03 17:06:48 +01:00
Fabio Bas 058fe6f4be fall back to url if url_resolved is empty 2021-06-02 22:40:13 +01:00
Fabio Bas 38ac0d3ccb Radiobrowser.info: use the url_resolved field for radio stations 2021-06-02 22:40:13 +01:00
Clementine Buildbot f674753758 Automatic merge of translations from Transifex 2021-05-31 05:04:40 +00:00
Clementine Buildbot f7369d2c42 Automatic merge of translations from Transifex 2021-05-28 04:26:27 +00:00
Clementine Buildbot 2132e99fbe Automatic merge of translations from Transifex 2021-05-27 03:59:34 +00:00
Clementine Buildbot 684c9d232f Automatic merge of translations from Transifex 2021-05-26 03:51:04 +00:00
Clementine Buildbot d71eba97fb Automatic merge of translations from Transifex 2021-05-25 03:20:50 +00:00
Jim Broadus 776bd3b022 settings: Add option to guess song metadata
Add "Try to guess missing metadata" option to the Song Metadata page
that controls the setting in SongPathParser.
2021-05-24 15:23:05 +01:00
Jim Broadus cf88e47206 settings: Create a new Song Metadata settings page
Move tagreader process settings to the new page.
2021-05-24 15:23:05 +01:00
Jim Broadus 01be9f196a settings: Organize page enums by category. 2021-05-24 15:23:05 +01:00
Lukas Prediger 89831f8dca MusicBrainzClient: Log message for malformed XML in reply 2021-05-18 12:13:10 +01:00
Lukas Prediger e756f2d686 CddaSongLoader: explicitly reading discid as UTF8 2021-05-18 12:12:01 +01:00
Lukas Prediger 8d69da28f3 Fixing freeing of memory in cddasongloader 2021-05-18 12:12:01 +01:00
Lukas Prediger 8668699977 CddaSongLoader: handle potential multiple tag messages correctly 2021-05-18 12:12:01 +01:00
Lukas Prediger e9945bcbc6 do NOT free toc entries in CddaSongLoader (reverting previous change) 2021-05-18 12:12:01 +01:00
Lukas Prediger 86bbd2ace6 Formatting/linting fixes. 2021-05-18 12:12:01 +01:00
Lukas Prediger 81c0661e8c MusicBrainzClient stop result parsing after reading first medium with correct discid.
Tentative fix for #7020.
2021-05-18 12:12:01 +01:00
Lukas Prediger 54a497b302 RipCDDialog rejects metadata lists if number of tracks does not match disc.
First step for addressing #7020.
2021-05-18 12:12:01 +01:00
Lukas Prediger 436c53870a Correctly freeing memory in CddaSongLoader::LoadSongsFromCdda 2021-05-18 12:12:01 +01:00
Lukas Prediger 97800e613a Fix for #7019: CddaSongLoader obtaining metadata on first try. 2021-05-18 12:12:01 +01:00
Jim Broadus 1309c76bec tagreader: Relocate artist/album/title guessing code
Move the code that attempts to fill missing song metadata out of the
tagreader worker. In the main process, it will be controllable using
settings and calling context.

The methods were moved into a new SongPathParser class that checks new
settings to determine if action should be taken.
2021-05-17 13:20:34 +01:00
Lukas Prediger 75de59703c Fix: Transcoding for CD rips not starting.
due to making Transcoder::Start a non-slot in 8d11e9ff
2021-05-15 10:14:18 +01:00
Clementine Buildbot 89155ace70 Automatic merge of translations from Transifex 2021-05-14 03:06:05 +00:00
Clementine Buildbot a7468dcd41 Automatic merge of translations from Transifex 2021-05-13 03:03:53 +00:00
Clementine Buildbot 3f614464ee Automatic merge of translations from Transifex 2021-05-12 03:01:45 +00:00
Jim Broadus 9bfd458b15 playlistparsers: Handle m3u UTF-16 playlists.
Rather than assume UTF-8, use QTextStream to read data. This checks the
byte order mark of the file to determine encoding.

As an optimization, since the playlist already needs to be searched for \r
characters, just create a string list and work from that.
2021-05-11 10:22:18 +01:00
Clementine Buildbot d16d9ba282 Automatic merge of translations from Transifex 2021-05-11 02:59:45 +00:00
Clementine Buildbot 83157100c4 Automatic merge of translations from Transifex 2021-05-09 02:56:37 +00:00
Jim Broadus 33aa8c8579 build: Add libgpod link directory. 2021-05-08 15:53:20 +01:00
Clementine Buildbot f5d3079db8 Automatic merge of translations from Transifex 2021-05-08 02:56:24 +00:00
Clementine Buildbot 783213f9c1 Automatic merge of translations from Transifex 2021-05-07 02:58:09 +00:00
Jim Broadus d798c76e06 devices: Remove obsolete DeviceKit.
DeviceKit-disks, renamed udisks, was superseded by udisks2 in 2012.
2021-05-06 20:52:33 +01:00
Jim Broadus 079384c154 build: Add libmtp link directory.
If MTP is enabled, add library directory. This will allow it to be found
in brew installations.
2021-05-03 23:27:28 +01:00
Jim Broadus f48888a430 networkremote: Fix some log noise.
In avahi, don't log empty errors.
2021-05-03 14:45:00 +01:00
Jim Broadus 708385c71f devices: Fix guessed icons in DeviceIcons
In the initial implementation, DeviceLister::DeviceIcons returned a
string list and some listers would concatenate other lists to form that
list. When DeviceIcons was changed to return a variant list, that
logic wasn't changed in many places, so instead of appending, string
list variants are being added icon list.
2021-05-01 20:37:01 +01:00
Clementine Buildbot 20647e8a98 Automatic merge of translations from Transifex 2021-04-29 02:54:42 +00:00
diracsbracket 8c1bdc1a45 Changed to const reference 2021-04-28 21:51:12 +01:00
diracsbracket 1646ab2221 Corrected comments + Added reference to Song& + use non-default
constructor for QFileInfo.

Forgot to apply clang-format so applied 2nd commit and squashed
both
2021-04-28 21:51:12 +01:00
diracsbracket 66a34a906a Removed unneeded empty arguments already provided by defaults 2021-04-28 21:51:12 +01:00
diracsbracket 444f1e2e69 clang-format correction 2021-04-28 21:51:12 +01:00
diracsbracket b7a995d223 Re-added log message for URL and mime-type. 2021-04-28 21:51:12 +01:00
diracsbracket fb391a7fbe Optimization to avoid save+delete of remote playlists to temporary file 2021-04-28 21:51:12 +01:00
Clementine Buildbot fc83e41279 Automatic merge of translations from Transifex 2021-04-27 02:57:12 +00:00
Clementine Buildbot 7e48b78c15 Automatic merge of translations from Transifex 2021-04-26 03:01:00 +00:00
Clementine Buildbot 94f4f65a60 Automatic merge of translations from Transifex 2021-04-25 03:01:19 +00:00
Clementine Buildbot b2ed9499f6 Automatic merge of translations from Transifex 2021-04-24 02:56:55 +00:00
Jim Broadus 8258c78c0b dbus: Fix signal arg annotations
An earlier change attempted to fix qdbusxml2cpp parsing errors by adding
directions to arguments. However, signal arguments are always out and it
was the annotations that were incorrect.

Fixes: f17b79a10 (dbus: Fix qdbusxml2cpp unknown type warnings., 2021-04-19)
Reference: https://dbus.freedesktop.org/doc/dbus-specification.html
2021-04-22 11:24:12 +01:00
Jim Broadus f17b79a105 dbus: Fix qdbusxml2cpp unknown type warnings.
Add direction attributes to args where qdbusxml2cpp was looking for the
incorrect annotation.
2021-04-21 10:24:09 +01:00
Clementine Buildbot c51d2f954e Automatic merge of translations from Transifex 2021-04-21 02:57:30 +00:00
Jim Broadus 280a514ebc dbus: Fix annotation deprecation warnings
The com.trolltech was renamed to org.qtproject. The code generation tool
still handles the old name, but prints a deprecation error.

Reference: https://bugreports.qt.io/browse/QTBUG-23274
2021-04-20 22:49:21 +01:00
Jim Broadus f04657e7e7 Replace qrand usage with QRandomGenerator
QRandomGenerator was introduced in 5.10 and qrand has since been
deprecated. QRandomGenerator::global() returns a global instance that
has been securely seeded. QRandomGenerator provides methods that
generate values within ranges, so taking a modulus of the result isn't
necessary.
2021-04-20 10:31:07 +01:00
Jim Broadus 6b21079fd4 dbus: Fix xml format errors. 2021-04-20 10:30:06 +01:00
Jim Broadus 3690c41cb0 build: Remove CMP0011 OLD policy
This policy allowed included files and modules to affect policy in the
parent scope. Besides the top level, 3rdparty/libprojectm is the only
place where old policy is set.

Reference: https://cmake.org/cmake/help/latest/policy/CMP0011.html
2021-04-18 13:47:10 +01:00
Clementine Buildbot 7303f72ee8 Automatic merge of translations from Transifex 2021-04-18 02:57:04 +00:00
Clementine Buildbot 47f7b307f0 Automatic merge of translations from Transifex 2021-04-15 02:55:43 +00:00
Clementine Buildbot 009642d125 Automatic merge of translations from Transifex 2021-04-13 02:59:37 +00:00
Jim Broadus 3440f90a6b playbacksettings: Don't try to load empty icons
When populating output options, don't attempt to load an icon if that
field is empty. This cuts some log noise.
2021-04-12 10:58:46 +01:00
Clementine Buildbot 32944a15de Automatic merge of translations from Transifex 2021-04-12 02:58:52 +00:00
Clementine Buildbot 2d34588b84 Automatic merge of translations from Transifex 2021-04-11 02:57:39 +00:00
Jim Broadus a86558f9a6 playlist: Fix queued item painting
QueuedItemDelegate::DrawBox leaves the painter in a state that can cause
artifacts. Specifically, there are cases where the item text is not
visible. To fix this, push the painter state before making changes and
pop it after drawing.
2021-04-10 14:58:36 +01:00
Jim Broadus db55c541b2 Revert "↑↓ for "Up" and "Down" (#5841)"
This reverts commit 566708b778.

Escape sequences are not legal key sequences.

Reference: https://doc.qt.io/qt-5/qkeysequence.html#details
2021-04-10 14:57:55 +01:00
Clementine Buildbot 144bdc2495 Automatic merge of translations from Transifex 2021-04-09 02:55:40 +00:00
Clementine Buildbot 72c1f91c00 Automatic merge of translations from Transifex 2021-04-08 03:00:17 +00:00
Jim Broadus e8875faf83 visualisations: Properly scale projectM view
In version 5.6, Qt introduced an automatic scaling feature for high DPI
displays. Since projectM is not part of the Qt framework, it's necessary
to convert coordinates when specifying view size.

Reference: https://doc.qt.io/qt-5/highdpi.html
2021-04-07 21:49:18 +01:00
Fabio Bas 354f6a23e0 snake_case for variable names; reworked url resolution signals 2021-04-07 14:22:15 +01:00
Fabio Bas 91e1e5880d Fix compilation on older Qt, use Player::SongChangeRequestProcessed() signal to handle station play count 2021-04-07 14:22:15 +01:00
Fabio Bas cd561af516 radiobrowser url handler: emit metadata for radio stations 2021-04-07 14:22:15 +01:00
Clementine Buildbot 2d6bb4abd6 Automatic merge of translations from Transifex 2021-04-07 03:00:29 +00:00
Jim Broadus 3b8519fda3 internet: Move page creation to internet category class
This consolidates most of the knowledge of internet settings pages in
the internet subdirectory. The exception is the master page enumeration
in the settings dialog.
2021-04-06 14:05:00 +01:00
Jim Broadus 1de6a46e86 internet: Add InternetSettingsCategory class 2021-04-06 14:05:00 +01:00
Clementine Buildbot 8a7120e1e8 Automatic merge of translations from Transifex 2021-04-06 02:58:50 +00:00
Clementine Buildbot e077df22d3 Automatic merge of translations from Transifex 2021-04-05 02:58:16 +00:00
Clementine Buildbot 4f86e0b2b4 Automatic merge of translations from Transifex 2021-04-04 02:58:52 +00:00
Jim Broadus 2804a4d89f gstengine: Make output format configurable
Add an output format option in playback settings. The options are
Detect, S16LE, and F32LE. Selecting Detect will use the existing
behavior and detect the native format when the pipeline starts. The
other options will set the format when the pipeline is built.
2021-04-03 13:56:22 +01:00
Clementine Buildbot 15fdad3d51 Automatic merge of translations from Transifex 2021-04-03 02:57:07 +00:00
Jim Broadus ada6752eae gstengine: Don't modify caps when pipeline is running
When the decoder bin's src pad is added, only set caps to use the native
bit depth if the the pipeline is not already running.
2021-04-02 16:42:44 +01:00
Jim Broadus 4edf77082d settings: Remove unused page enum value
Remove unused Page_SoundCloud from SettingsDialog::Page.
2021-04-02 16:41:30 +01:00
Jim Broadus ae8a420690 settings: Move AddPage to SettingsCategory
This will allow future subclasses of SettingsCategory to populate their
own pages.
2021-04-02 16:41:30 +01:00
Clementine Buildbot d13410c91d Automatic merge of translations from Transifex 2021-04-02 03:02:29 +00:00
Jim Broadus f4e70face1 library: Fix rescan in case where library directory was recreated
If a root library directory is deleted and recreated, it is not
detected since inotify would need to watch the parent directory. On
rescan, if the subdirectory list for a directory is empty, re-add the
library's root directory.

This is an edge case on Linux systems. The issue may not exist on other
operating systems.
2021-04-01 14:53:49 +01:00
Jim Broadus fd3a2a2f12 library: Add accessors to directory structures
Add const accessors to the Directory and Subdirectory structures.
2021-04-01 14:53:49 +01:00
Jim Broadus 6412790723 smartplaylists: Escape pattern characters in search term
When using the LIKE function, use \ as an escape character and prepend
that to occurrences of the pattern characters _ and % in the search
term.
2021-04-01 14:52:48 +01:00
Jim Broadus b2e3f8ea6e smartplaylists: Cast filename to TEXT in queries
In some versions/builds of sqlite, the LIKE function won't match
blobs.

Reference: https://www.sqlite.org/compile.html#like_doesnt_match_blobs
2021-04-01 14:52:48 +01:00
Jim Broadus eb1b84b281 ratingwidget: Properly bind the ratings values
RatingPainter::RatingForPos should return a value in 0-1. But if the
passed position was outside of the widget's draw rectangle, a value
outside of that range could be returned.
2021-04-01 14:32:18 +01:00
Clementine Buildbot 86d782cb6a Automatic merge of translations from Transifex 2021-04-01 03:04:42 +00:00
Adolfo Jayme Barrientos 438e8ca61b Fix a typo in a translatable string 2021-03-31 18:10:50 +01:00
Clementine Buildbot 881898f845 Automatic merge of translations from Transifex 2021-03-31 02:57:36 +00:00
Jim Broadus c12294c5ec settings: Make the internet header selectable
Make the "Internet services" tab the internet providers category header instead of a tab under "User Interface".
2021-03-30 11:51:26 +01:00
Jim Broadus e77595fba6 widgets: Add option to draw selected GroupedIconView header 2021-03-30 11:51:26 +01:00
Jim Broadus 6b34d0435f settings: Add SettingsCategory class
Add a new category class for settings. This will eventually allow
category classes to maintain their own lists of subpages.
2021-03-30 11:51:26 +01:00