Explicit multi instance mode.

This commit is contained in:
Martin Rotter 2020-11-14 11:31:26 +01:00
parent 421de5e9d4
commit 4c8b4d59e1
2 changed files with 16 additions and 3 deletions

View File

@ -85,6 +85,8 @@
#define CLI_LOG_LONG "log" #define CLI_LOG_LONG "log"
#define CLI_DAT_SHORT "d" #define CLI_DAT_SHORT "d"
#define CLI_DAT_LONG "data" #define CLI_DAT_LONG "data"
#define CLI_SIN_SHORT "s"
#define CLI_SIN_LONG "no-single-instance"
#define HTTP_HEADERS_ACCEPT "Accept" #define HTTP_HEADERS_ACCEPT "Accept"
#define HTTP_HEADERS_CONTENT_TYPE "Content-Type" #define HTTP_HEADERS_CONTENT_TYPE "Content-Type"

View File

@ -557,7 +557,10 @@ void Application::onFeedUpdatesFinished(const FeedDownloadResults& results) {
void Application::setupCustomDataFolder(const QString& data_folder) { void Application::setupCustomDataFolder(const QString& data_folder) {
if (!QDir().mkpath(data_folder)) { if (!QDir().mkpath(data_folder)) {
qCriticalNN << "Failed to create custom data path" << QUOTE_W_SPACE(data_folder) << "thus falling back to standard setup."; qCriticalNN << LOGSEC_CORE
<< "Failed to create custom data path"
<< QUOTE_W_SPACE(data_folder)
<< "thus falling back to standard setup.";
m_customDataFolder = QString(); m_customDataFolder = QString();
return; return;
} }
@ -585,8 +588,10 @@ void Application::parseCmdArguments() {
QCommandLineOption custom_data_folder(QStringList() << CLI_DAT_SHORT << CLI_DAT_LONG, QCommandLineOption custom_data_folder(QStringList() << CLI_DAT_SHORT << CLI_DAT_LONG,
"Use custom folder for user data and disable single instance application mode.", "Use custom folder for user data and disable single instance application mode.",
"user-data-folder"); "user-data-folder");
QCommandLineOption disable_singleinstance(QStringList() << CLI_SIN_SHORT << CLI_SIN_LONG,
"Allow running of multiple application instances.");
m_cmdParser.addOptions({ log_file, custom_data_folder }); m_cmdParser.addOptions({ log_file, custom_data_folder, disable_singleinstance });
m_cmdParser.addHelpOption(); m_cmdParser.addHelpOption();
m_cmdParser.addVersionOption(); m_cmdParser.addVersionOption();
m_cmdParser.setApplicationDescription(APP_NAME); m_cmdParser.setApplicationDescription(APP_NAME);
@ -598,7 +603,8 @@ void Application::parseCmdArguments() {
if (!m_cmdParser.value(CLI_DAT_SHORT).isEmpty()) { if (!m_cmdParser.value(CLI_DAT_SHORT).isEmpty()) {
auto data_folder = QDir::toNativeSeparators(m_cmdParser.value(CLI_DAT_SHORT)); auto data_folder = QDir::toNativeSeparators(m_cmdParser.value(CLI_DAT_SHORT));
qDebugNN << "User wants to use custom directory for user data (and disable single instance mode):" qDebugNN << LOGSEC_CORE
<< "User wants to use custom directory for user data (and disable single instance mode):"
<< QUOTE_W_SPACE_DOT(data_folder); << QUOTE_W_SPACE_DOT(data_folder);
setupCustomDataFolder(data_folder); setupCustomDataFolder(data_folder);
@ -606,6 +612,11 @@ void Application::parseCmdArguments() {
else { else {
m_allowMultipleInstances = false; m_allowMultipleInstances = false;
} }
if (m_cmdParser.isSet(CLI_SIN_SHORT)) {
m_allowMultipleInstances = true;
qDebugNN << LOGSEC_CORE << "Explicitly allowing this instance to run.";
}
} }
QString Application::customDataFolder() const { QString Application::customDataFolder() const {