Commit Graph

990 Commits

Author SHA1 Message Date
Jim Broadus 2e921c6584 organise: Add a tag override mechanism to OrganiseFormat
Add a method to set override tag values when formatting a song name.
The use case for this is transcoding where the extension will change.
2020-06-07 14:45:50 +01:00
Jim Broadus 22cfade4a4 organise: Refresh filename after transcode 2020-06-07 05:34:08 +01:00
Jim Broadus 84099f2491 Name all threads created by Application
In Application::MoveToNewThread, name the new thread after the object being
moved. Give those objects names as well.

The thread names display in gdb with "info threads".
2020-05-27 10:22:00 +01:00
Jim Broadus 32367d2d45 Add a name to the application class for debug purposes 2020-05-26 16:57:59 +01:00
Jim Broadus 8f56fbb83b Fix timer errors on exit
The NetworkRemote is moved to a new thread after creation. On that thread, its
child classes create timers. When the network remote class is deleted on the
main thread, we see "Timers cannot be stopped from another thread".

To avoid this error, use deleteLater to delete NetworkRemote and its composition
classes on its own thread.
2020-05-19 10:39:06 +01:00
Jim Broadus e338939c8b Add optional auth info to LoadResult.
Add auth_header_ to LoadResult. If it exists, populate the MediaPlaybackRequests
headers with an Authorization header with that value.
2020-03-12 18:08:14 +00:00
Jim Broadus 9ed5503ee3 Add MediaPlaybackRequest class.
Add a class to wrap the URL in the playback engines. In the future, this will
contain authentication information for the specified URL. It can also include
the start and end time as well as other data that is currently specified along
with the URL.
2020-03-11 10:57:21 +00:00
Jim Broadus 2179027a6d Prevent global shortcut crash on wayland.
The 3rd party qxt library assumes X11 on linux systems. Don't register
QxtGlobalShortcutBackend when using Wayland.
2020-02-23 16:05:57 +00:00
Jim Broadus bb736d1156 Prevent accidental usage of /usr/bin/data
Clementine detects a data directory in the same directory as the executable to
determine portable configuration. But there are some packages that create
/usr/bin/data, causing Clementine to run in portable mode.

Use a more unique data directory name, clementine-data, as the portable data
directory. For backwards compatibility, use the legacy data directory if the
already exists there.
2020-02-23 16:04:42 +00:00
Jim Broadus 9116dfde7d Remove query string that may include auth info. 2020-02-17 20:31:06 +00:00
Jim Broadus 5dd6d6725a Add a function that scrubs URL queries from strings.
In some cases, URL queries contain auth information. For cases where error
strings are passed from other libraries, such as from gstreamer, add a utility
function, ScrubUrlQueries, to strip queries from URLs in strings.
2020-02-17 20:31:06 +00:00
Jim Broadus 52fd6ffadc Add a logging category to log all network requests.
New logging class NetworkRequests disabled by default, but can be enabled with
the command line option.
2020-02-13 11:09:51 +00:00
Jim Broadus 415e4aa2ec Don't attempt to resolve URL if not relative. 2020-02-12 09:53:12 +00:00
Jim Broadus e7b0667196 Fix loading songs on portable setup.
QUrl considers a URL relative if it does not include a scheme and QUrl::resolve
will fail if passed a non-relative url. Strip the scheme for the portable cases.

https://doc.qt.io/qt-5/qurl.html#relative-urls-vs-relative-paths
2020-02-12 09:53:12 +00:00
Jim Broadus b9f57c574f Add QString version of GetRelativePathToClementineBin.
Avoid converting paths to and from URLs when calling this function.
2020-02-12 09:53:12 +00:00
Jim Broadus bc99ff80a9 Move LibraryDirectoryModel out of LibraryModel.
There are several instances of the LibraryModel class used in the system. Each
of these creates a LibraryDirectoryModel instance, but only the instance held
by the main library is every used. Move this out of the LibraryModel class and
into the Library class.
2020-02-11 08:09:22 +00:00
Jim Broadus 18a08e87c2 Add a directory_model accessor to Application class. 2020-02-11 08:09:22 +00:00
Jim Broadus d3d6c1ff3c Fix UNC paths.
The fix-up for URLs for files that that begin with // no longer works since the
QUrl class determines that these modifications are invalid, resulting in an
empty string when converted. Instead of attempting to modify the QUrl, add a
utility function that makes the correction on the encoded byte array at time of
usage.
2020-01-29 00:38:43 -08:00
Jim Broadus fe84ad4e66 Return boolean from FileSystemWatcherInterface::AddPath to indicate success.
QFileSystemWatcher::addPath returns a boolean to indicate success. Modify
QtFSListener::AddPath to reflect that. For now, the MacFSListener version will
always return true.
2020-01-16 21:06:11 -08:00
Pavel Liavonau 3f4c788339 Fixed lastfm workflow with "now playing" and scrobbling feature
(Maybe Issue #2672)
2020-01-07 22:29:23 +00:00
John Maguire 7d2c622d0f
Merge pull request #6507 from jonaski/sprintf
Replace use of QString::sprintf with QString::asprintf
2020-01-05 00:40:43 +00:00
Jonas Kvinge 7f6e7f8b30 Fix formatting 2020-01-05 00:17:18 +01:00
Jonas Kvinge f81a3aa8d8 Replace use of QString::sprintf with QString::asprintf 2020-01-05 00:12:32 +01:00
Jonas Kvinge a4a8726ddf Fix formatting 2020-01-04 17:44:07 +01:00
Jonas Kvinge 30413767cb Fix macOS filesystem listener (library watcher) 2020-01-04 17:38:55 +01:00
Jim Broadus 77d5d8bdea Add a timeout option to NetworkAccessManager.
In most cases, timeouts can be applied to a reply after a request has been made.
But some APIs, such as libmygpo-qt, don't always provide access to the reply or
provide abort methods. For these cases, add an optional timeout to
NetworkAccessManager. If set, create a NetworkTimeouts instance in createRequest
and add the reply. Use the reply as the parent so that it is destroyed when the
reply is destroyed.
2019-12-25 23:53:45 -08:00
John Maguire 672b90659b
Merge pull request #6472 from cquike/xdg
Support  for XDG_CONFIG_HOME and XDG_CACHE_HOME
2019-12-10 18:56:41 +00:00
Cesar Enrique Garcia Dabo a7ad66d028 Fix issues reported by clang-format 2019-12-10 18:45:06 +01:00
Luis Caceres 7ef917008a Fix formatting again 2019-12-09 17:02:42 +00:00
Luis Caceres 344989785b Fix multiple triggers of shortcut actions
Also properly connect/disconnect from DBus signal upons register/unregister.
2019-12-09 16:58:32 +00:00
Luis Caceres 2307c15227 Fix style 2019-12-09 16:25:29 +00:00
Cesar Enrique Garcia Dabo f5ec88b529 Add support in GetConfigPath() for /pixmapcache directory 2019-12-07 23:30:14 +01:00
Cesar Enrique Garcia Dabo ab2f7c03ea Use QStandardPaths to define Path_Root and Path_CacheRoot.
These two directories use QStandardPaths::ConfigLocation and
QStandardPaths::GenericCacheLocation respectively, with the
application name (Clementine) appended. The QStandardPaths class from QT
honors the XDG standards:

https://specifications.freedesktop.org/basedir-spec/basedir-spec-0.6.html
https://doc.qt.io/qt-5/qstandardpaths.html#writableLocation
2019-12-07 23:22:13 +01:00
Luis Caceres a3531d749a Actually fix formatting 2019-12-07 19:30:10 +00:00
Luis Caceres 0b6519bad4 Fix build with DBus disabled 2019-12-06 23:56:15 +00:00
Luis Caceres 8cab8fe180 Fix formatting 2019-12-06 23:53:40 +00:00
Luis Caceres 24a571769a Initial KGlobalAccel support 2019-12-06 22:34:13 +00:00
John Maguire b7c3173001
Merge pull request #6439 from jonaski/signalmapper
Replace all uses of QSignalMapper with C++11 lambda expressions
2019-11-10 19:13:31 +00:00
Jonas Kvinge 344023e6dd Fix formatting 2019-11-10 15:16:39 +01:00
Jonas Kvinge ba31c755ef Replace all uses of QSignalMapper with C++11 lambda expressions 2019-11-10 15:07:12 +01:00
John Maguire 21da802630
Merge pull request #6438 from jonaski/remove-extra-semicolon
Remove extra ';'
2019-11-10 00:53:37 +00:00
Jonas Kvinge d09c27f719 Remove extra ';' 2019-11-10 00:30:18 +01:00
Jonas Kvinge 0da490a5e1 Replace QString::null with QString() 2019-11-09 23:45:28 +01:00
John Maguire cb6cd7c485 Merge remote-tracking branch 'origin/master' into qt5 2019-10-04 16:51:43 +01:00
Antonio Russo e66fdd86da Periodically save settings
Instead of immediately saving, which leads to poor performance,
and possible hardware damage (see #6057), limit saves to once
per second (similar to how KDE does it).  It also guarantees
that only one save is required per second, by sharing a QSettings
object, and establishes a signaling framework to put other
setting save events into (but only uses this for the two major
offenders: playlist tab switching and window resizing).

This is in contrast to 6a312e7, which simply deferred the save
until program exit, and caused problems for some people (see #6217
and #6209).

Signed-off-by: Antonio Russo <antonio.e.russo@gmail.com>
2019-09-10 18:41:18 -06:00
Jonas Kvinge 8d921c15be Fix memory leaks in database 2019-07-25 19:02:43 +02:00
John Maguire 75f18dab23
Merge pull request #6374 from jonaski/qt5-update
Qt5 update
2019-07-24 11:51:48 +01:00
Andrew Reading c76697b42c Introduce limit for number of tag client processes.
Previously, the number of processes spawned was always
QThread::idealThreadCount() (returning the number of logical CPU
cores). On new systems with many cores, however, this can result
in 12, 16, 24, or ... processes being spawned, which is a bit
excessive.

This establishes a new config variable,
'max_numprocs_tagclients' within the Settings group, in order
to limit the maximum number of tag client processes that get
spawned. It also adds a means of setting this via the Behavior
page in Settings. It can be set to any integer in the interval
[1, QThread::idealThreadCount()]; it defaults to the maximal value
so as to emulate the old behavior.
2019-07-21 10:53:13 -07:00
Jonas Kvinge 1a2274bd2b Merge branch 'master' into qt5-update 2019-07-21 14:20:59 +02:00
Jim Broadus babff78025 Add error handling path for async song loading.
Async song loading can fail without user feedback. This change adds return codes
to these async load functions. It will now produce an error dialog in simple
scenarios (test case is user selecting a file that is not readable). Other cases,
such as directories and playlists, aren't yet covered.
2019-04-10 11:49:09 -07:00