Mercurial > bellaciao
diff layout_widget.h @ 8:c63d67895cbe
layout designer: first draft
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 24 Aug 2011 20:38:55 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/layout_widget.h Wed Aug 24 20:38:55 2011 +0200 @@ -0,0 +1,83 @@ +/* +Bellaciao: a Salut à Toi frontend +Copyright (C) 2011 Jérôme Poisson (goffi@goffi.org) + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU Affero 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 Affero General Public License for more details. + +You should have received a copy of the GNU Affero General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef LAYOUT_WIDGETS_H +#define LAYOUT_WIDGETS_H + +#include <QtGui> + +#define LAYOUT_WIDGET_MIME "application/x-bellaciao-widget" + +typedef enum { + NONE, BOOL, LIST +} WidgetPropertyType; + +class WidgetProperty +{ + public: + WidgetProperty(const QString& name, const QString& tooltip); + + protected: + QString m_name, m_tooltip; + WidgetPropertyType m_type; + +}; + +class WidgetPropertyBool: public WidgetProperty +{ + public: + WidgetPropertyBool(const QString& name, bool checked=false, const QString& tooltip = QString()); + + protected: + bool m_checked; +}; + + + +class LayoutWidget +{ + public: + LayoutWidget(const QString &name, const QString& icon=""); + ~LayoutWidget(); + const QString& getName() const; + + private: + QString m_name, m_icon; + QList<WidgetProperty> m_properties; +}; + +class LayoutWidgetModel: public QAbstractListModel +{ + Q_OBJECT + + public: + LayoutWidgetModel(QObject* parent=0); + ~LayoutWidgetModel(); + int rowCount(const QModelIndex &parent = QModelIndex()) const; + QVariant data(const QModelIndex &index, int role) const; + Qt::ItemFlags flags (const QModelIndex& index) const; + QStringList mimeTypes() const; + QMimeData* mimeData (const QModelIndexList& indexes ) const; + void append(LayoutWidget* layout_widget); + const QList<LayoutWidget*>& getLayoutWidgets() const; + const QHash<QString, LayoutWidget*>& getLayoutWidgetsDict() const; + private: + QList<LayoutWidget*> m_layout_widgets; + QHash<QString, LayoutWidget*> m_layout_widgets_dict; +}; +#endif