File indexing completed on 2024-05-12 16:35:36

0001 /* This file is part of the KDE project
0002    Copyright 2008 Stefan Nikolaus stefan.nikolaus@kdemail.net
0003 
0004    This library is free software; you can redistribute it and/or
0005    modify it under the terms of the GNU Library General Public
0006    License as published by the Free Software Foundation; either
0007    version 2 of the License, or (at your option) any later version.
0008 
0009    This library is distributed in the hope that it will be useful,
0010    but WITHOUT ANY WARRANTY; without even the implied warranty of
0011    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012    Library General Public License for more details.
0013 
0014    You should have received a copy of the GNU Library General Public License
0015    along with this library; see the file COPYING.LIB.  If not, write to
0016    the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0017    Boston, MA 02110-1301, USA.
0018 */
0019 
0020 #include "ReadWriteTableModel.h"
0021 
0022 // Sheets
0023 #include "Cell.h"
0024 #include "Sheet.h"
0025 
0026 // Qt
0027 #include <QSize>
0028 
0029 using namespace KSpread;
0030 
0031 class ReadWriteTableModel::Private
0032 {
0033 public:
0034 };
0035 
0036 ReadWriteTableModel::ReadWriteTableModel(Sheet* sheet, int columns, int rows)
0037         : ReadOnlyTableModel(sheet, columns, rows)
0038         , d(new Private)
0039 {
0040 }
0041 
0042 ReadWriteTableModel::~ReadWriteTableModel()
0043 {
0044     delete d;
0045 }
0046 
0047 Qt::ItemFlags ReadWriteTableModel::flags(const QModelIndex& index) const
0048 {
0049     if (!index.isValid() || !hasIndex(index.row(), index.column(), index.parent())) {
0050         return 0;
0051     }
0052     return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled;
0053 }
0054 
0055 bool ReadWriteTableModel::setData(const QModelIndex& index, const QVariant& value, int role)
0056 {
0057     // NOTE Model indices start from 0, while Calligra Sheets column/row indices start from 1.
0058     Cell cell = Cell(sheet(), index.column() + 1, index.row() + 1).masterCell();
0059     if (role == Qt::EditRole) {
0060         cell.parseUserInput(value.toString());
0061         emit dataChanged(index, index);
0062         return true;
0063     }
0064     return false;
0065 }