/*
QAD - Qt ADvanced
Ivan Pelipenko peri4ko@yandex.ru, Andrey Bychkov work.a.b@yandex.ru
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 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 Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see .
*/
#ifndef SESSION_MANAGER_H
#define SESSION_MANAGER_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include "spinslider.h"
#include "evalspinbox.h"
#include "qpiconfig.h"
/// for all children widgets of "QMainWindow"s and MainWidgets
/// check for slots
/// * void sessionSave(QByteArray * data);
/// * void sessionLoad(QByteArray * data);
class QAD_EXPORT SessionManager: public QObject
{
Q_OBJECT
public:
SessionManager(QString file = QString());
void setFile(const QString & file);
void addEntry(QMainWindow * e) {mwindows.push_back(QPair(e->objectName(), e));}
void addEntry(QCheckBox * e) {checks.push_back(QPair(e->objectName(), e));}
void addEntry(QLineEdit * e) {lines.push_back(QPair(e->objectName(), e));}
void addEntry(QComboBox * e) {combos.push_back(QPair(e->objectName(), e));}
void addEntry(QDoubleSpinBox * e) {dspins.push_back(QPair(e->objectName(), e));}
void addEntry(QSpinBox * e) {spins.push_back(QPair(e->objectName(), e));}
void addEntry(SpinSlider * e) {spinsliders.push_back(QPair(e->objectName(), e));}
void addEntry(EvalSpinBox * e) {evals.push_back(QPair(e->objectName(), e));}
void addEntry(QTabWidget * e) {tabs.push_back(QPair(e->objectName(), e));}
void addEntry(QGroupBox * e) {groups.push_back(QPair(e->objectName(), e));}
void addEntry(QAction * e) {actions.push_back(QPair(e->objectName(), e));}
void addEntry(QAbstractButton * e) {buttons.push_back(QPair(e->objectName(), e));}
void addEntry(QStackedWidget * e) {stacks.push_back(QPair(e->objectName(), e));}
void addMainWidget(QWidget * e) {widgets.push_back(QPair(e->objectName(), e));}
void removeMainWidget(QWidget * e);
void addEntry(const QString & name, QMainWindow * e) {mwindows.push_back(QPair(name, e));}
void addEntry(const QString & name, QCheckBox * e) {checks.push_back(QPair(name, e));}
void addEntry(const QString & name, QLineEdit * e) {lines.push_back(QPair(name, e));}
void addEntry(const QString & name, QComboBox * e) {combos.push_back(QPair(name, e));}
void addEntry(const QString & name, QDoubleSpinBox * e) {dspins.push_back(QPair(name, e));}
void addEntry(const QString & name, QSpinBox * e) {spins.push_back(QPair(name, e));}
void addEntry(const QString & name, SpinSlider * e) {spinsliders.push_back(QPair(name, e));}
void addEntry(const QString & name, EvalSpinBox * e) {evals.push_back(QPair(name, e));}
void addEntry(const QString & name, QTabWidget * e) {tabs.push_back(QPair(name, e));}
void addEntry(const QString & name, QGroupBox * e) {groups.push_back(QPair(name, e));}
void addEntry(const QString & name, QAbstractButton * e) {buttons.push_back(QPair(name, e));}
void addEntry(const QString & name, QStackedWidget * e) {stacks.push_back(QPair(name, e));}
void addEntry(const QString & name, QAction * e) {actions.push_back(QPair(name, e));}
void addEntry(const QString & name, QStringList * e) {stringlists.push_back(QPair(name, e));}
void addEntry(const QString & name, QString * e) {strings.push_back(QPair(name, e));}
void addEntry(const QString & name, QColor * e) {colors.push_back(QPair(name, e));}
void addEntry(const QString & name, bool * e) {bools.push_back(QPair(name, e));}
void addEntry(const QString & name, int * e) {ints.push_back(QPair(name, e));}
void addEntry(const QString & name, float * e) {floats.push_back(QPair(name, e));}
void addMainWidget(const QString & name, QWidget * e) {widgets.push_back(QPair(name, e));}
private:
QMap metaFunctions(const QSet & objects, QByteArray fname);
QVector > mwindows;
QVector > widgets;
QVector > checks;
QVector > lines;
QVector > combos;
QVector > dspins;
QVector > spins;
QVector > spinsliders;
QVector > evals;
QVector > tabs;
QVector > groups;
QVector > buttons;
QVector > stacks;
QVector > actions;
QVector > stringlists;
QVector > strings;
QVector > colors;
QVector > bools;
QVector > ints;
QVector > floats;
QString file_;
public slots:
void save();
void load(bool onlyMainwindow = false);
void clear(bool with_filename = true);
signals:
void loading(QPIConfig & );
void saving(QPIConfig & );
};
#endif // SESSION_MANAGER_H