Mercurial > bellaciao
view layout_widget.cpp @ 11:98485ebbdb86 default tip
LayoutView: WidgetViewBox fix
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 27 Aug 2011 00:31:20 +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/>. */ #include "layout_widget.h" WidgetProperty::WidgetProperty(const QString& name, const QString& tooltip) : m_name(name), m_type(NONE) { } WidgetPropertyBool::WidgetPropertyBool(const QString& name, bool checked, const QString& tooltip) : WidgetProperty(name, tooltip), m_checked(checked) { m_type = BOOL; } LayoutWidget::LayoutWidget(const QString& name, const QString& icon) : m_name(name), m_icon(icon) { } LayoutWidget::~LayoutWidget() { } const QString& LayoutWidget::getName() const { return m_name; } LayoutWidgetModel::LayoutWidgetModel(QObject* parent) : QAbstractListModel(parent) { } LayoutWidgetModel::~LayoutWidgetModel() { while (!m_layout_widgets.isEmpty()) delete m_layout_widgets.takeFirst(); } int LayoutWidgetModel::rowCount(const QModelIndex &parent) const { return m_layout_widgets.size(); } QVariant LayoutWidgetModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) return QVariant(); if (index.row() >= m_layout_widgets.size()) return QVariant(); if (role == Qt::DisplayRole) return m_layout_widgets[index.row()]->getName(); return QVariant(); } Qt::ItemFlags LayoutWidgetModel::flags (const QModelIndex& index) const { Qt::ItemFlags default_flags = QAbstractListModel::flags(index); if (index.isValid()) return default_flags | Qt::ItemIsDragEnabled; return default_flags; } QStringList LayoutWidgetModel::mimeTypes() const { QStringList types; types << LAYOUT_WIDGET_MIME; return types; } QMimeData* LayoutWidgetModel::mimeData (const QModelIndexList& indexes ) const { QMimeData *mimeData = new QMimeData(); QByteArray encodedData; QDataStream stream(&encodedData, QIODevice::WriteOnly); foreach (const QModelIndex &index, indexes) { if (index.isValid()) { QString text = m_layout_widgets[index.row()]->getName(); stream << text; } } mimeData->setData(LAYOUT_WIDGET_MIME, encodedData); return mimeData; } void LayoutWidgetModel::append(LayoutWidget* layout_widget) { if (m_layout_widgets_dict.contains(layout_widget->getName())) { qWarning() << "Layout widget of this name already exists, can't add an other one: " << layout_widget->getName(); delete layout_widget; return; } beginInsertRows(QModelIndex(), m_layout_widgets.size(), m_layout_widgets.size()+1); m_layout_widgets.append(layout_widget); m_layout_widgets_dict.insert(layout_widget->getName(), layout_widget); endInsertRows(); } const QList<LayoutWidget*>& LayoutWidgetModel::getLayoutWidgets() const { return m_layout_widgets; } const QHash<QString, LayoutWidget*>& LayoutWidgetModel::getLayoutWidgetsDict() const { return m_layout_widgets_dict; }