diff --git a/demos/chartviewer/main.cpp b/demos/chartviewer/main.cpp index d52bc43..4c5cddf 100644 --- a/demos/chartviewer/main.cpp +++ b/demos/chartviewer/main.cpp @@ -22,10 +22,45 @@ #include #include +QVariantHash parseArgs(QStringList args) +{ + QVariantHash parameters; + + while (!args.isEmpty()) { + + QString param = args.takeFirst(); + if (param.startsWith("--")) { + param.remove(0, 2); + + if (args.isEmpty() || args.first().startsWith("--")) { + parameters[param] = true; + } + else { + + QString value = args.takeFirst(); + if (value == "true" || value == "on" || value == "enabled") { + parameters[param] = true; + } + else if (value == "false" || value == "off" || value == "disable") { + parameters[param] = false; + } + else { + if(value.endsWith( '"' )) value.chop(1); + if(value.startsWith( '"' )) value.remove(0,1); + parameters[param] = value; + } + } + } + } + + return parameters; +} + int main(int argc, char *argv[]) { QApplication a(argc, argv); - Window window; + QVariantHash parameters = parseArgs(QApplication::arguments()); + Window window(parameters); window.show(); return a.exec(); } diff --git a/demos/chartviewer/window.cpp b/demos/chartviewer/window.cpp index cb6739d..008f008 100644 --- a/demos/chartviewer/window.cpp +++ b/demos/chartviewer/window.cpp @@ -40,7 +40,7 @@ #include #include -Window::Window(QWidget *parent) : +Window::Window(const QVariantHash& parameters,QWidget *parent) : QMainWindow(parent), m_listCount(3), m_valueMax(10), @@ -111,6 +111,7 @@ Window::Window(QWidget *parent) : // Set defaults m_antialiasCheckBox->setChecked(true); + initializeFromParamaters(parameters); updateUI(); setCentralWidget(m_view); @@ -210,6 +211,49 @@ QComboBox *Window::createTempleteBox() return templateComboBox; } +void Window::initializeFromParamaters(const QVariantHash& parameters) +{ + if (parameters.contains("template")) { + QString t = parameters["template"].toString(); + for (int i = 0; i < m_templateComboBox->count(); ++i) { + if (m_templateComboBox->itemText(i) == t) { + m_templateComboBox->setCurrentIndex(i); + break; + } + } + } + if (parameters.contains("opengl")) { + bool checked = parameters["opengl"].toBool(); + m_openGLCheckBox->setChecked(checked); + } + if (parameters.contains("theme")) { + QString t = parameters["theme"].toString(); + for (int i = 0; i < m_themeComboBox->count(); ++i) { + if (m_themeComboBox->itemText(i) == t) { + m_themeComboBox->setCurrentIndex(i); + break; + } + } + } + if (parameters.contains("animation")) { + QString t = parameters["animation"].toString(); + for (int i = 0; i < m_animatedComboBox->count(); ++i) { + if (m_animatedComboBox->itemText(i) == t) { + m_animatedComboBox->setCurrentIndex(i); + break; + } + } + } + if (parameters.contains("legend")) { + QString t = parameters["legend"].toString(); + for (int i = 0; i < m_legendComboBox->count(); ++i) { + if (m_legendComboBox->itemText(i) == t) { + m_legendComboBox->setCurrentIndex(i); + break; + } + } + } +} void Window::updateUI() { diff --git a/demos/chartviewer/window.h b/demos/chartviewer/window.h index 3e63351..14eecf1 100644 --- a/demos/chartviewer/window.h +++ b/demos/chartviewer/window.h @@ -46,7 +46,7 @@ class Window: public QMainWindow Q_OBJECT enum State { NoState = 0, ZoomState, ScrollState}; public: - explicit Window(QWidget *parent = 0); + explicit Window(const QVariantHash& parameters, QWidget *parent = 0); ~Window(); private Q_SLOTS: @@ -69,6 +69,7 @@ private: QMenu *createMenu(); void handleMenu(QChart *chart); QAction *createMenuAction(QMenu *menu, const QIcon &icon, const QString &text, const QVariant &data); + void initializeFromParamaters(const QVariantHash& parameters); protected: void mousePressEvent(QMouseEvent *event);