Mercurial > bellaciao
view layout_view.h @ 10:877a005c2b42
Layout designer: WidgetView class, with two types: WidgetViewItem and WidgetViewBox which contains items.
author | Goffi <goffi@goffi.org> |
---|---|
date | Fri, 26 Aug 2011 15:58:46 +0200 |
parents | 0d7875c26974 |
children |
line wrap: on
line source
/* 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_VIEW_H #define LAYOUT_VIEW_H #include <QWidget> #include <QDragEnterEvent> #include "layout_widget.h" #define LAYOUT_WIDGET_MIME "application/x-bellaciao-widget" typedef enum { HORIZONTAL, VERTICAL } LayoutDirection; class WidgetView { public: WidgetView(const QString& name); ~WidgetView(); }; class WidgetViewItem : public QLabel, public WidgetView { Q_OBJECT public: WidgetViewItem(const QString& name); }; class WidgetViewBox : public QScrollArea, public WidgetView { Q_OBJECT public: WidgetViewBox(const QString& name); }; class LayoutView : public QWidget { Q_OBJECT public: LayoutView(QWidget* parent = 0, LayoutDirection direction = VERTICAL); ~LayoutView(); void setLayoutWidgets(const QHash<QString, LayoutWidget*>& layout_widgets); void dragEnterEvent (QDragEnterEvent* event ); void dragLeaveEvent (QDragLeaveEvent* event ); void dragMoveEvent (QDragMoveEvent* event ); void dropEvent (QDropEvent * event); protected: void addWidget(const QString& name); void paintEvent(QPaintEvent* event); private: QHash<QString, LayoutWidget*> m_layout_widgets; QList<LayoutWidget> m_widgets_list; QBoxLayout* m_layout; QRect m_loc_hint; int m_insert_pos; //position in the layout when a widget must be inserted LayoutDirection m_direction; }; #endif