Theme Editor: Began integrating device configuration panel with renderer
[kugel-rb.git] / utils / themeeditor / gui / configdocument.h
blobe91c5cc357a05d3c54f47f13878204ae9e2e166b
1 /***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
10 * Copyright (C) 2010 Robert Bieber
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
20 ****************************************************************************/
22 #ifndef CONFIGDOCUMENT_H
23 #define CONFIGDOCUMENT_H
25 #include <QHBoxLayout>
26 #include <QLineEdit>
27 #include <QComboBox>
28 #include <QPushButton>
29 #include <QWidget>
30 #include <QLabel>
31 #include <QMap>
32 #include <QWheelEvent>
34 #include "tabcontent.h"
36 namespace Ui {
37 class ConfigDocument;
40 class NoScrollCombo: public QComboBox
42 public:
43 NoScrollCombo(QWidget* parent = 0) : QComboBox(parent) {}
44 virtual ~NoScrollCombo(){ }
46 void wheelEvent(QWheelEvent* event) { event->ignore(); }
49 class ConfigDocument : public TabContent {
50 Q_OBJECT
51 public:
52 ConfigDocument(QMap<QString, QString>& settings, QString file,
53 QWidget *parent = 0);
54 virtual ~ConfigDocument();
56 TabType type() const{ return TabContent::Config; }
57 QString file() const{ return filePath; }
58 QString title() const;
60 QString toPlainText() const;
62 void save();
63 void saveAs();
65 bool requestClose();
67 protected:
68 void changeEvent(QEvent *e);
70 signals:
71 void configFileChanged(QString);
73 private slots:
74 void deleteClicked();
75 void addClicked();
76 void textChanged();
78 private:
79 Ui::ConfigDocument *ui;
80 QList<QHBoxLayout*> containers;
81 QList<NoScrollCombo*> keys;
82 QList<QLineEdit*> values;
83 QList<QPushButton*> deleteButtons;
84 QList<QLabel*> labels;
86 QStringList primaryKeys;
87 QStringList secondaryKeys;
89 QString filePath;
90 QString saved;
92 void addRow(QString key, QString value);
95 #endif // CONFIGDOCUMENT_H