diff --git a/src/gui/official/ConfigurationPanelImpl.cpp b/src/gui/official/ConfigurationPanelImpl.cpp new file mode 100644 index 0000000000000000000000000000000000000000..06dfc4c006719466b9fe05b1d457fc39be4ea63e --- /dev/null +++ b/src/gui/official/ConfigurationPanelImpl.cpp @@ -0,0 +1,71 @@ +/** + * Copyright (C) 2004-2005 Savoir-Faire Linux inc. + * Author: Jean-Philippe Barrette-LaPierre + * <jean-philippe.barrette-lapierre@savoirfairelinux.com> + * + * This program 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 2 of the License, or + * (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#include <qbutton.h> +#include <qhbox.h> +#include <qlabel.h> +#include <qlineedit.h> +#include <qsizepolicy.h> + +#include "ConfigurationPanelImpl.hpp" + +ConfigurationPanelImpl::ConfigurationPanelImpl(QWidget *parent) + : QDialog(parent) +{ + mLayout = new QVBoxLayout(this); + +} + +void +ConfigurationPanelImpl::add(const ConfigEntry &entry) +{ + mEntries[entry.section].push_back(entry); +} + +void +ConfigurationPanelImpl::generate() +{ + std::map< QString, std::list< ConfigEntry > >::iterator pos = mEntries.begin(); + while(pos != mEntries.end()) { + QVBoxLayout *l = new QVBoxLayout(this); + + std::list< ConfigEntry > entries = pos->second; + std::list< ConfigEntry >::iterator entrypos = entries.begin(); + while(entrypos != entries.end()) { + QHBox *hbox = new QHBox(this); + mLayout->addWidget(hbox); + + QLabel *label = new QLabel(hbox); + label->setText((*entrypos).name); + QLineEdit *edit = new QLineEdit(hbox); + edit->setText((*entrypos).value); + + entrypos++; + } + + pos++; + } + + QButton *ok = new QButton(this); + ok->setText(QObject::tr("Ok")); + mLayout->addWidget(ok); + + show(); +} diff --git a/src/gui/official/ConfigurationPanelImpl.hpp b/src/gui/official/ConfigurationPanelImpl.hpp index ea6ab975e7b9cc51c3de5c95844de6756a873274..b8aeeddafb376927e4e345fb36da9e1ca562913c 100644 --- a/src/gui/official/ConfigurationPanelImpl.hpp +++ b/src/gui/official/ConfigurationPanelImpl.hpp @@ -21,9 +21,34 @@ #ifndef __CONFIGURATION_PANEL_IMPL_HPP__ #define __CONFIGURATION_PANEL_IMPL_HPP__ +#include <list> +#include <map> #include <qlayout.h> #include <qdialog.h> +struct ConfigEntry +{ +public: + ConfigEntry(QString s, + QString n, + QString t, + QString d, + QString v) + { + section = s; + name = n; + type = t; + def = d; + value = v; + } + + QString section; + QString name; + QString type; + QString def; + QString value; +}; + class ConfigurationPanelImpl : public QDialog { Q_OBJECT @@ -32,9 +57,11 @@ public: ConfigurationPanelImpl(QWidget *parent = NULL); public slots: - void add(QString section, QString name, QString type, QString def, QString value); + void add(const ConfigEntry &entry); + void generate(); private: + std::map< QString, std::list< ConfigEntry > > mEntries; QVBoxLayout *mLayout; }; diff --git a/src/gui/official/SFLRequest.cpp b/src/gui/official/SFLRequest.cpp index 989d11659c44f3b96d98464498ac6003eb1a9944..895ecea750e3df8b453368944a7b6d53935ef315 100644 --- a/src/gui/official/SFLRequest.cpp +++ b/src/gui/official/SFLRequest.cpp @@ -315,7 +315,7 @@ ConfigGetAllRequest::onEntry(const QString &code, const QString &message) def = *args.begin(); args.pop_front(); val = *args.begin(); - ConfigurationPanel::instance().add(section, variable, type, def, val); + ConfigurationPanel::instance().add(ConfigEntry(section, variable, type, def, val)); } } @@ -325,5 +325,5 @@ ConfigGetAllRequest::onSuccess(const QString &code, const QString &message) DebugOutput::instance() << QObject::tr("ConfigGetAllRequest success: (%1) %1\n") .arg(code) .arg(message); - ConfigurationPanel::instance().show(); + ConfigurationPanel::instance().generate(); }