File indexing completed on 2024-06-23 05:33:16

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 "alignmentdelegate.h"
0021 #include "charactersheet/charactersheetitem.h"
0022 #include <QComboBox>
0023 
0024 AlignmentDelegate::AlignmentDelegate(QWidget* parent) : QStyledItemDelegate(parent) {}
0025 
0026 QWidget* AlignmentDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option,
0027                                          const QModelIndex& index) const
0028 {
0029     // ComboBox ony in column 2
0030     if(index.column() != static_cast<int>(TreeSheetItem::TEXT_ALIGN))
0031         return QStyledItemDelegate::createEditor(parent, option, index);
0032 
0033     QStringList data;
0034     data << tr("TopRight") << tr("TopMiddle") << tr("TopLeft") << tr("CenterRight") << tr("CenterMiddle")
0035          << tr("CenterLeft") << tr("BottomRight") << tr("BottomMiddle") << tr("BottomLeft");
0036 
0037     QComboBox* cm= new QComboBox(parent);
0038     cm->addItems(data);
0039     return cm;
0040 }
0041 void AlignmentDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const
0042 {
0043     if(QComboBox* cb= qobject_cast<QComboBox*>(editor))
0044     {
0045         int currentIndex= index.data(Qt::EditRole).toInt();
0046         if(currentIndex >= 0)
0047         {
0048             cb->setCurrentIndex(currentIndex);
0049         }
0050     }
0051     else
0052     {
0053         QStyledItemDelegate::setEditorData(editor, index);
0054     }
0055 }
0056 void AlignmentDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const
0057 {
0058     if(QComboBox* cb= qobject_cast<QComboBox*>(editor))
0059     {
0060         model->setData(index, cb->currentIndex(), Qt::EditRole);
0061     }
0062     else
0063         QStyledItemDelegate::setModelData(editor, model, index);
0064 }