Browse Source

Merge pull request #6720 from sledgehammer999/implicit_value_for_tristate_options

Don't enforce an explicit value for TriState cmd options.
adaptive-webui-19844
sledgehammer999 7 years ago committed by GitHub
parent
commit
e38829218e
  1. 4
      src/app/CMakeLists.txt
  2. 6
      src/app/app.pri
  3. 2
      src/app/application.h
  4. 62
      src/app/cmdoptions.cpp
  5. 0
      src/app/cmdoptions.h
  6. 3
      src/app/main.cpp

4
src/app/CMakeLists.txt

@ -3,14 +3,14 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR}) @@ -3,14 +3,14 @@ include_directories(${CMAKE_CURRENT_BINARY_DIR})
set(QBT_APP_HEADERS
application.h
cmdoptions.h
filelogger.h
options.h
)
set(QBT_APP_SOURCES
application.cpp
cmdoptions.cpp
filelogger.cpp
options.cpp
main.cpp
)

6
src/app/app.pri

@ -16,13 +16,13 @@ usesystemqtsingleapplication { @@ -16,13 +16,13 @@ usesystemqtsingleapplication {
HEADERS += \
$$PWD/application.h \
$$PWD/filelogger.h \
$$PWD/options.h
$$PWD/cmdoptions.h \
$$PWD/filelogger.h
SOURCES += \
$$PWD/application.cpp \
$$PWD/cmdoptions.cpp \
$$PWD/filelogger.cpp \
$$PWD/options.cpp \
$$PWD/main.cpp
unix: HEADERS += $$PWD/stacktrace.h

2
src/app/application.h

@ -51,7 +51,7 @@ typedef QtSingleCoreApplication BaseApplication; @@ -51,7 +51,7 @@ typedef QtSingleCoreApplication BaseApplication;
#endif
#include "base/utils/misc.h"
#include "options.h"
#include "cmdoptions.h"
#ifndef DISABLE_WEBUI
class WebUI;

62
src/app/options.cpp → src/app/cmdoptions.cpp

@ -30,7 +30,7 @@ @@ -30,7 +30,7 @@
* Contact : chris@qbittorrent.org
*/
#include "options.h"
#include "cmdoptions.h"
#include <iostream>
@ -242,45 +242,59 @@ namespace @@ -242,45 +242,59 @@ namespace
// Option that is explicitly set to true or false, and whose value is undefined when unspecified.
// May not have a shortcut.
class TriStateBoolOption: protected StringOption
class TriStateBoolOption: protected Option
{
public:
constexpr TriStateBoolOption(const char *name)
: StringOption {name}
constexpr TriStateBoolOption(const char *name, bool defaultValue)
: Option {name, 0}
, m_defaultValue(defaultValue)
{
}
using StringOption::operator==;
bool operator==(const QString &arg) const
{
QStringList parts = arg.split(QLatin1Char('='));
return parts[0] == fullParameter();
}
QString usage() const
{
return StringOption::usage(QLatin1String("true|false"));
return padUsageText(fullParameter() + QLatin1String("=<true|false>"));
}
TriStateBool value(const QString &arg) const
{
QString val = StringOption::value(arg);
if (val.toUpper() == QLatin1String("TRUE") || val == QLatin1String("1")) {
return TriStateBool::True;
}
else if (val.toUpper() == QLatin1String("FALSE") || val == QLatin1String("0")) {
return TriStateBool::False;
QStringList parts = arg.split(QLatin1Char('='));
if (parts.size() == 1) {
return TriStateBool(m_defaultValue);
}
else {
throw CommandLineParameterError(QObject::tr("Parameter '%1' must follow syntax '%1=%2'",
"e.g. Parameter '--add-paused' must follow syntax "
"'--add-paused=<true|false>'")
.arg(fullParameter())
.arg(QLatin1String("<true|false>")));
else if (parts.size() == 2) {
QString val = parts[1];
if (val.toUpper() == QLatin1String("TRUE") || val == QLatin1String("1")) {
return TriStateBool::True;
}
else if (val.toUpper() == QLatin1String("FALSE") || val == QLatin1String("0")) {
return TriStateBool::False;
}
}
throw CommandLineParameterError(QObject::tr("Parameter '%1' must follow syntax '%1=%2'",
"e.g. Parameter '--add-paused' must follow syntax "
"'--add-paused=<true|false>'")
.arg(fullParameter())
.arg(QLatin1String("<true|false>")));
}
TriStateBool value(const QProcessEnvironment &env) const
{
QString val = env.value(envVarName());
QString val = env.value(envVarName(), "-1");
if (val.isEmpty()) {
return TriStateBool(m_defaultValue);
}
else if (val == QLatin1String("-1")) {
return TriStateBool::Undefined;
}
else if (val.toUpper() == QLatin1String("TRUE") || val == QLatin1String("1")) {
@ -295,6 +309,8 @@ namespace @@ -295,6 +309,8 @@ namespace
return TriStateBool::Undefined;
}
}
bool m_defaultValue;
};
bool operator==(const QString &s, const TriStateBoolOption &o)
@ -315,12 +331,12 @@ namespace @@ -315,12 +331,12 @@ namespace
constexpr const BoolOption PORTABLE_OPTION = {"portable"};
constexpr const BoolOption RELATIVE_FASTRESUME = {"relative-fastresume"};
constexpr const StringOption SAVE_PATH_OPTION = {"save-path"};
constexpr const TriStateBoolOption PAUSED_OPTION = {"add-paused"};
constexpr const TriStateBoolOption PAUSED_OPTION = {"add-paused", true};
constexpr const BoolOption SKIP_HASH_CHECK_OPTION = {"skip-hash-check"};
constexpr const StringOption CATEGORY_OPTION = {"category"};
constexpr const BoolOption SEQUENTIAL_OPTION = {"sequential"};
constexpr const BoolOption FIRST_AND_LAST_OPTION = {"first-and-last"};
constexpr const TriStateBoolOption SKIP_DIALOG_OPTION = {"skip-dialog"};
constexpr const TriStateBoolOption SKIP_DIALOG_OPTION = {"skip-dialog", true};
}
QBtCommandLineParameters::QBtCommandLineParameters(const QProcessEnvironment &env)

0
src/app/options.h → src/app/cmdoptions.h

3
src/app/main.cpp

@ -69,11 +69,12 @@ Q_IMPORT_PLUGIN(QICOPlugin) @@ -69,11 +69,12 @@ Q_IMPORT_PLUGIN(QICOPlugin)
#include <cstdlib>
#include <iostream>
#include "application.h"
#include "options.h"
#include "base/profile.h"
#include "base/utils/misc.h"
#include "base/preferences.h"
#include "cmdoptions.h"
#include "upgrade.h"

Loading…
Cancel
Save