added --set-opts

This commit is contained in:
arcan1s
2014-07-15 06:11:22 +04:00
parent 39b8ff834f
commit 51659c7a42
10 changed files with 100 additions and 20 deletions

View File

@ -22,7 +22,7 @@
#include <QLocale>
Language::Language(const QString configPath)
Language::Language()
{
}
@ -41,8 +41,13 @@ QString Language::checkLanguage(const QString language, const QString defaultLan
}
QString Language::defineLanguage(const QString configPath)
QString Language::defineLanguage(const QString configPath, const QString options)
{
QMap<QString, QString> optionsDict = parseOptions(options);
if (optionsDict.contains(QString("LANGUAGE")))
if (getAvailableLanguages().contains(optionsDict[QString("LANGUAGE")]))
return optionsDict[QString("LANGUAGE")];
QString language;
language = defineLanguageFromFile(configPath);
if (language.isEmpty())
@ -92,3 +97,17 @@ QStringList Language::getAvailableLanguages()
return languages;
}
QMap<QString, QString> Language::parseOptions(const QString options)
{
QMap<QString, QString> optionsDict;
for (int i=0; i<options.split(QChar(',')).count(); i++) {
if (options.split(QChar(','))[i].split(QChar('=')).count() < 2)
continue;
optionsDict[options.split(QChar(','))[i].split(QChar('='))[0]] =
options.split(QChar(','))[i].split(QChar('='))[1];
}
return optionsDict;
}

View File

@ -26,13 +26,17 @@ class Language : public QObject
Q_OBJECT
public:
explicit Language(const QString configPath);
explicit Language();
static QString checkLanguage(const QString language,
const QString defaultLanguage = QString("en"));
static QString defineLanguage(const QString configPath);
static QString defineLanguage(const QString configPath,
const QString options = QString("OPTIONS"));
static QString defineLanguageFromFile(const QString configPath);
static QString defineLanguageFromLocale();
static QStringList getAvailableLanguages();
private:
static QMap<QString, QString> parseOptions(const QString options);
};

View File

@ -64,6 +64,7 @@ int main(int argc, char *argv[])
// additional functions
bool debug = false;
bool defaultSettings = false;
QString options = QString("OPTIONS");
int tabNumber = 1;
// messages
bool showVersion = false;
@ -109,6 +110,11 @@ int main(int argc, char *argv[])
else if (QString(argv[i]) == QString("--default")) {
defaultSettings = true;
}
// options
else if (QString(argv[i]) == QString("--set-opts")) {
options = QString(argv[i+1]);
i++;
}
// tab number
else if ((QString(argv[i]) == QString("-t")) || (QString(argv[i]) == QString("--tab"))) {
if (atoi(argv[i+1]) > 3)
@ -151,7 +157,8 @@ int main(int argc, char *argv[])
helpMessage += QString("netctl-gui [ --about ] [ --netctl-auto ] [ --settings ]\n");
helpMessage += QString(" [ -e ESSID | --essid ESSID ] [ -o PROFILE | --open PROFILE ]\n");
helpMessage += QString(" [ -s PROFILE | --select PROFILE ]\n");
helpMessage += QString(" [ -d | --debug ] [ --default ] [ -t NUM | --tab NUM ]\n");
helpMessage += QString(" [ -d | --debug ] [ --default ] [ --set-opts OPTIONS ]\n");
helpMessage += QString(" [ -t NUM | --tab NUM ]\n");
helpMessage += QString(" [ -v | --version ] [ -i | --info ] [ -h | --help]\n\n");
helpMessage += QString("%1\n").arg(QApplication::translate("MainWindow", "Parametrs:"));
// windows
@ -184,6 +191,10 @@ int main(int argc, char *argv[])
helpMessage += QString("%1 --default - %2\n")
.arg(isParametrEnable(defaultSettings))
.arg(QApplication::translate("MainWindow", "start with default settings"));
helpMessage += QString(" --set-opts %1\n")
.arg(options, -10);
helpMessage += QString(" - %1\n")
.arg(QApplication::translate("MainWindow", "set options for this run, comma separated"));
helpMessage += QString(" -t %1 --tab %1 - %2\n")
.arg(QString::number(tabNumber), -3)
.arg(QApplication::translate("MainWindow", "open a tab with number %1").arg(QString::number(tabNumber)));
@ -202,6 +213,7 @@ int main(int argc, char *argv[])
infoMessage += QString("\n%1\n").arg(QApplication::translate("MainWindow", "cmake flags:"));
infoMessage += QString("\t-DCMAKE_BUILD_TYPE=%1 \\\n").arg(QString(CMAKE_BUILD_TYPE));
infoMessage += QString("\t-DCMAKE_INSTALL_PREFIX=%1 \\\n").arg(QString(CMAKE_INSTALL_PREFIX));
infoMessage += QString("\t-DBUILD_DOCS=%1 \\\n").arg(QString(PROJECT_BUILD_DOCS));
infoMessage += QString("\t-DBUILD_LIBRARY=%1 \\\n").arg(QString(PROJECT_BUILD_LIBRARY));
infoMessage += QString("\t-DBUILD_GUI=%1 \\\n").arg(QString(PROJECT_BUILD_GUI));
infoMessage += QString("\t-DUSE_QT5=%1 \\\n").arg(QString(PROJECT_USE_QT5));
@ -214,6 +226,12 @@ int main(int argc, char *argv[])
versionMessage += QApplication::translate("MainWindow", "Author : %1\n").arg(QString(AUTHOR));
versionMessage += QApplication::translate("MainWindow", "License : %1\n").arg(QString(LICENSE));
// reread translations
a.removeTranslator(&translator);
language = Language::defineLanguage(configPath, options);
translator.load(QString(":/translations/") + language);
a.installTranslator(&translator);
// running
if (error) {
cout << errorMessage.toUtf8().data() << endl;
@ -236,7 +254,7 @@ int main(int argc, char *argv[])
MainWindow w(0,
showAbout, showNetctlAuto, showSettings,
selectEssid, openProfile, selectProfile,
debug, defaultSettings, tabNumber);
debug, defaultSettings, options, tabNumber);
w.show();
return a.exec();
}

View File

@ -54,6 +54,7 @@ MainWindow::MainWindow(QWidget *parent,
const QString selectProfile,
const bool debugCmd,
const bool defaultSettings,
const QString options,
const int tabNum)
: QMainWindow(parent),
ui(new Ui::MainWindow),
@ -67,6 +68,7 @@ MainWindow::MainWindow(QWidget *parent,
if (debug) qDebug() << "[MainWindow]" << "[MainWindow]" << ":" << "selectProfile" << selectProfile;
if (debug) qDebug() << "[MainWindow]" << "[MainWindow]" << ":" << "debug" << debug;
if (debug) qDebug() << "[MainWindow]" << "[MainWindow]" << ":" << "defaultSettings" << defaultSettings;
if (debug) qDebug() << "[MainWindow]" << "[MainWindow]" << ":" << "options" << options;
if (debug) qDebug() << "[MainWindow]" << "[MainWindow]" << ":" << "tabNum" << tabNum;
// reading configuration
@ -76,6 +78,9 @@ MainWindow::MainWindow(QWidget *parent,
if (defaultSettings)
settingsWin->setDefault();
configuration = settingsWin->getSettings();
QMap<QString, QString> optionsDict = parseOptions(options);
for (int i=0; i<optionsDict.keys().count(); i++)
configuration[optionsDict.keys()[i]] = optionsDict[optionsDict.keys()[i]];
// backend
netctlCommand = new Netctl(debug, configuration);
@ -302,6 +307,26 @@ void MainWindow::setIconsToButtons()
}
QMap<QString, QString> MainWindow::parseOptions(const QString options)
{
if (debug) qDebug() << "[MainWindow]" << "[parseOptions]";
QMap<QString, QString> settings;
for (int i=0; i<options.split(QChar(',')).count(); i++) {
if (options.split(QChar(','))[i].split(QChar('=')).count() < 2)
continue;
settings[options.split(QChar(','))[i].split(QChar('='))[0]] =
options.split(QChar(','))[i].split(QChar('='))[1];
}
for (int i=0; i<settings.keys().count(); i++)
if (debug) qDebug() << "[MainWindow]" << "[parseOptions]" << ":" <<
settings.keys()[i] + QString("=") + settings[settings.keys()[i]];
return settings;
}
// window slots
void MainWindow::setMenuActionsShown(const bool state)
{

View File

@ -61,6 +61,7 @@ public:
const QString selectProfile = QString("PROFILE"),
const bool debugCmd = false,
const bool defaultSettings = false,
const QString options = QString("OPTIONS"),
const int tabNum = 1);
~MainWindow();
@ -133,6 +134,7 @@ private:
bool hiddenNetwork;
// configuration
QMap<QString, QString> configuration;
QMap<QString, QString> parseOptions(const QString options);
};

View File

@ -78,6 +78,7 @@ void NetctlAutoWindow::showWindow()
if (debug) qDebug() << "[NetctlAutoWindow]" << "[showWindow]";
netctlAutoUpdateTable();
show();
}

View File

@ -270,6 +270,7 @@ void SettingsWindow::showWindow()
setSettings(getSettings());
ui->label_info->hide();
show();
}