Commit Graph

32 Commits

Author SHA1 Message Date
Jim Broadus b989a674a4 application: Add splash during initialization
Since initialization on first startup or during a database schema update
can take several seconds, show a splash screen. In the initial
implementation, this is just a small Clementine logo.

The benefit of instantiating the splash in the Application class rather
than in main is that it could eventually show status messages during
startup. However, this implementation does not use the
QSplashScreen::finish mechanism that would synchronize the hiding of the
splash screen with the showing of the main window.
2021-02-21 14:18:54 +00:00
Jim Broadus 59864bf1b6 application: Add a Starting() slot to Application
Add a slot that is invoked when the main application loop starts. This
can be used to perform setup tasks after the initialization has
occurred. Initial use is to hide a splash.
2021-02-21 14:18:54 +00:00
Jim Broadus 7ba322b10b debug: Generalize debug feature check
Move the debug console variable check to a static method in the
Application class and use environment variable CLEMENTINE_DEBUG instead
of CLEMENTINE_DEBUG_CONSOLE. This will allow debug features to be
enabled elsewhere in the code.

Example:
CLEMENTINE_DEBUG=1 clementine
2021-01-27 15:14:40 +00:00
Jim Broadus 0ee64a32f6 console: Add a mechanism to allow components to add pages
Add a MainWindow signal that is emitted when a debug console is created. Relay
that signal to the Application. Add an AddPage method to the Console class that
allows components to populate pages when they receive the signal.
2021-01-01 16:26:29 +00:00
Matthieu Bruel 9714b0632d All changes for ClemRemote v1.0 (in one go) 2020-12-17 12:23:30 +00:00
John Maguire 341dc7326f Reformat all C++ 2020-09-22 14:56:06 +01: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 18a08e87c2 Add a directory_model accessor to Application class. 2020-02-11 08:09:22 +00: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
John Maguire b0322e7e7d Cleanup ApplicationImpl 2016-02-15 17:41:39 +00:00
John Maguire 20bfade965 Hide Application classes behind pimpl.
This should also fix the build on windows where gcc gets confused as
libmygpo declares DELETE as part of an enum and mingw #defines DELETE in
winnt.h
2016-02-15 17:39:50 +00:00
John Maguire d06f337ade Remove special deletion of objects in threads.
Fixes #5250
2016-02-11 16:31:08 +00:00
John Maguire f2daa772c1 Lazy initialise everything in Application. 2016-02-11 15:15:38 +00:00
Krzysztof Sobiecki 970e86aac5 Allows to download multiple podcasts at the same time
A new PodcastDeleter, it deletes podcast episodes
2014-12-10 00:47:52 +01:00
Krzysztof Sobiecki c0614dbe09 Fix copyright notices inside src/core 2014-11-05 17:48:03 +01:00
Krzysztof Sobiecki 0af1470cce Clean up src/core 2014-11-05 17:48:03 +01:00
John Maguire 4ab4bbc23f Remove Last.fm radio support.
Fixes #4259
2014-03-28 14:55:04 +01:00
John Maguire 5146bcdebc Some more NULL -> nullptr conversions. 2014-02-21 17:30:46 +01:00
John Maguire bebd781fdf Reformat all non-3rd-party C/C++/Objective-C++.
Command line:
find src ext -regex '.*\.\(h\|cpp\|mm\)' -exec clang-format -i
 -style='{BasedOnStyle: Google, DerivePointerBinding: false}' {} \;
2014-02-07 16:34:20 +01:00
Andreas acb18cdcde First tries on a portable version. 2013-09-29 10:43:34 +02:00
Arnaud Bienner fc1880161c Add a 'language_without_region' as this is not specific to networkremotesettingpage 2013-07-27 19:23:55 +02:00
David Sansome 1a3f6af1bd Clean up the network remote settings page, add a "Get it on Google Play" button. 2013-07-27 15:27:08 +10:00
Andreas f10292eb95 Added remote control for clementine 2012-12-31 23:37:39 +01:00
David Sansome 51229b88c5 Create or load moodbar data for songs 2012-05-25 17:18:07 +01:00
David Sansome d538b71809 Add buttons and menu items to open the Podcast settings page. Also route these requests through Application rather than InternetModel 2012-03-10 22:39:24 +00:00
David Sansome b0dd1bd284 Add a podcast downloader 2012-03-10 15:32:36 +00:00
David Sansome 1abf059d16 Add a Podcasts settings page and the start of some gpodder.net syncing 2012-03-09 15:26:38 +00:00
David Sansome b9e08bbfe6 Update podcasts on a schedule and on demand. Update them immediately after subscribing, and make episodes appear in the tree. 2012-03-09 15:26:15 +00:00
David Sansome f2885c0319 Return more useful aggregate information from the PodcastBackend, show something in the Internet service 2012-03-06 18:40:17 +00:00
David Sansome 90bbed1ec9 Add podcast parsing and database classes 2012-03-06 18:39:23 +00:00
David Sansome bacef04405 Refactoring: remove a couple of the AlbumCoverLoader instances and instead use a shared CurrentArtLoader. 2012-02-26 14:40:51 +00:00
David Sansome 48f15c9fc7 Refactoring: instead of passing individual pointers to useful core classes (like TaskManager or LibraryBackend) to each class that uses them, pass one singleton-like Application instance everywhere. 2012-02-26 14:40:51 +00:00