File indexing completed on 2024-05-26 05:40:54
0001 /*************************************************************************** 0002 * Copyright (C) 2016 by Renaud Guezennec * 0003 * http://www.rolisteam.org/contact * 0004 * * 0005 * rolisteam is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (at your option) any later version. * 0009 * * 0010 * This program is distributed in the hope that it will be useful, * 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0013 * GNU General Public License for more details. * 0014 * * 0015 * You should have received a copy of the GNU General Public License * 0016 * along with this program; if not, write to the * 0017 * Free Software Foundation, Inc., * 0018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 0019 ***************************************************************************/ 0020 #include "typedelegate.h" 0021 #include <QComboBox> 0022 0023 TypeDelegate::TypeDelegate(QWidget* parent) : QStyledItemDelegate(parent) 0024 { 0025 m_data << tr("TextInput") << tr("TextField") << tr("TextArea") << tr("Select") << tr("Checkbox") << tr("Image") 0026 << tr("RLabel") << tr("Dice Button") << tr("Function Button") << tr("WebView") << tr("Slider") 0027 << tr("Hidden") << tr("Next Page Button") << tr("Previous Page Button"); 0028 } 0029 0030 QWidget* TypeDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const 0031 { 0032 // ComboBox ony in column 2 0033 if(index.column() != 4) 0034 return QStyledItemDelegate::createEditor(parent, option, index); 0035 0036 QComboBox* cm= new QComboBox(parent); 0037 for(const QString& item : m_data) 0038 { 0039 cm->addItem(item, m_data.indexOf(item)); 0040 } 0041 return cm; 0042 } 0043 void TypeDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const 0044 { 0045 if(QComboBox* cb= qobject_cast<QComboBox*>(editor)) 0046 { 0047 int currentIndex= index.data(Qt::EditRole).toInt(); 0048 qDebug() << currentIndex; 0049 if(currentIndex >= 0) 0050 { 0051 cb->setCurrentIndex(currentIndex); 0052 } 0053 } 0054 else 0055 { 0056 QStyledItemDelegate::setEditorData(editor, index); 0057 } 0058 } 0059 void TypeDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const 0060 { 0061 if(QComboBox* cb= qobject_cast<QComboBox*>(editor)) 0062 { 0063 model->setData(index, cb->currentIndex(), Qt::EditRole); 0064 } 0065 else 0066 QStyledItemDelegate::setModelData(editor, model, index); 0067 } 0068 0069 QString TypeDelegate::displayText(const QVariant& value, const QLocale& locale) const 0070 { 0071 Q_UNUSED(locale); 0072 bool b; 0073 int i= value.toInt(&b); 0074 if((b) && (i >= 0) && (i < m_data.size())) 0075 { 0076 return m_data.at(i); 0077 } 0078 return m_data.at(0); 0079 }