/* Speed Climbing Stopwatch - Simple Stopwatch for Climbers Copyright (C) 2018 Itsblue Development - Dorian Zeder 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, version 3 of the License. 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 . */ #include "headers/sqlprofilemodel.h" static void createTable() { if (QSqlDatabase::database().tables().contains(QStringLiteral("Contacts"))) { // The table already exists; we don't need to do anything. return; } QSqlQuery query; //creat eth etable to store the profiles if (!query.exec( "CREATE TABLE IF NOT EXISTS `profiles` ( " " `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE," " `name` TEXT NOT NULL " " );")) { qFatal("Failed to query database: %s", qPrintable(query.lastError().text())); } //create the table to store the times if (!query.exec( "CREATE TABLE IF NOT EXISTS `times` (" " `id` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT UNIQUE," " `profileid` INTEGER NOT NULL," " `time` INTEGER NOT NULL, " " `timestamp` INTEGER NOT NULL" " );")) { qFatal("Failed to query database: %s", qPrintable(query.lastError().text())); } } SqlProfileModel::SqlProfileModel(QObject *parent) : QSqlTableModel(parent) { qDebug("ProfileModel constructor"); createTable(); setTable("profiles"); setEditStrategy(QSqlTableModel::OnManualSubmit); select(); } QVariant SqlProfileModel::data(const QModelIndex &index, int role) const { if (role < Qt::UserRole) return QSqlTableModel::data(index, role); const QSqlRecord sqlRecord = record(index.row()); return sqlRecord.value(role - Qt::UserRole); } QHash SqlProfileModel::roleNames() const { QHash names; names[Qt::UserRole + 0] = "id"; names[Qt::UserRole + 1] = "name"; return names; } bool SqlProfileModel::append(QString name) { qDebug() << name; QSqlRecord newRecord = record(); newRecord.setValue("name", name); if (!insertRecord(rowCount(), newRecord)) { qWarning() << "Failed to add profile:" << lastError().text(); return(false); } submitAll(); return(true); } void SqlProfileModel::remove(int row) { removeRows(row, 1); submitAll(); }