// Copyright(c) 2017-2018 Alejandro Sirgo Rica & Contributors
//
// This file is part of Flameshot.
//
// Flameshot is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Flameshot is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Flameshot. If not, see .
#include "commandoption.h"
CommandOption::CommandOption(const QString &name, const QString &description,
const QString &valueName,
const QString &defaultValue) :
m_names(name), m_description(description), m_valueName(valueName),
m_value(defaultValue)
{
m_checker = [](QString const&){ return true; };
}
CommandOption::CommandOption(const QStringList &names,
const QString &description,
const QString &valueName,
const QString &defaultValue) :
m_names(names), m_description(description), m_valueName(valueName),
m_value(defaultValue)
{
m_checker = [](QString const&) -> bool { return true; };
}
void CommandOption::setName(const QString &name) {
m_names = QStringList() << name;
}
void CommandOption::setNames(const QStringList &names) {
m_names = names;
}
QStringList CommandOption::names() const {
return m_names;
}
QStringList CommandOption::dashedNames() const {
QStringList dashedNames;
for (const QString &name: m_names) {
// prepend "-" to single character options, and "--" to the others
QString dashedName = (name.length() == 1) ?
QStringLiteral("-%1").arg(name) :
QStringLiteral("--%1").arg(name);
dashedNames << dashedName;
}
return dashedNames;
}
void CommandOption::setValueName(const QString &name) {
m_valueName = name;
}
QString CommandOption::valueName() const {
return m_valueName;
}
void CommandOption::setValue(const QString &value) {
if (m_valueName.isEmpty()) {
m_valueName = "value";
}
m_value = value;
}
QString CommandOption::value() const {
return m_value;
}
void CommandOption::addChecker(const function checker,
const QString &errMsg)
{
m_checker = checker;
m_errorMsg = errMsg;
}
bool CommandOption::checkValue(const QString &value) const {
return m_checker(value);
}
QString CommandOption::description() const
{
return m_description;
}
void CommandOption::setDescription(const QString &description)
{
m_description = description;
}
QString CommandOption::errorMsg() const {
return m_errorMsg;
}
bool CommandOption::operator ==(const CommandOption &option) const
{
return m_description == option.m_description
&& m_names == option.m_names
&& m_valueName == option.m_valueName;
}