/**************************************************************************** ** ** Copyright (C) 2016 Pelagicore AG ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Neptune IVI UI. ** ** $QT_BEGIN_LICENSE:GPL-QTAS$ ** Commercial License Usage ** Licensees holding valid commercial Qt Automotive Suite licenses may use ** this file in accordance with the commercial license agreement provided ** with the Software or, alternatively, in accordance with the terms ** contained in a written agreement between you and The Qt Company. For ** licensing terms and conditions see https://www.qt.io/terms-conditions. ** For further information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 or (at your option) any later version ** approved by the KDE Free Qt Foundation. The licenses are as published by ** the Free Software Foundation and appearing in the file LICENSE.GPL3 ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ** SPDX-License-Identifier: GPL-3.0 ** ****************************************************************************/ #include "sqltablemodel.h" #include #include SqlTableModel::SqlTableModel(QObject *parent, QSqlDatabase db) : QSqlTableModel(parent, db) { connect(this, SIGNAL(rowsAboutToBeInserted(QModelIndex,int,int)), this, SLOT(notifyCount())); connect(this, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), this, SLOT(notifyCount())); } void SqlTableModel::updateRoleNames() { qDebug() << "SqlTableModel::updateRoleNames()"; m_roleNames.clear(); for (int i = 0; i < record().count(); i++) { m_roleNames[Qt::UserRole + i + 1] = record().fieldName(i).toLatin1(); } qDebug() << " role names: " << m_roleNames.values(); } QHash SqlTableModel::roleNames() const { return m_roleNames; } QVariantMap SqlTableModel::get(int row) const { QVariantMap map; QModelIndex index = createIndex(row, 0); foreach (int role, m_roleNames.keys()) { map.insert(m_roleNames.value(role), data(index, role)); } return map; } QVariant SqlTableModel::data(const QModelIndex &index, int role) const { QVariant value = QSqlTableModel::data(index, role); if (role < Qt::UserRole) { value = QSqlTableModel::data(index, role); } else { int columnIdx = role - Qt::UserRole - 1; QModelIndex modelIndex = this->index(index.row(), columnIdx); value = QSqlTableModel::data(modelIndex, Qt::DisplayRole); } return value; } int SqlTableModel::count() const { return rowCount(); } void SqlTableModel::notifyCount() { emit countChanged(rowCount()); }