summaryrefslogtreecommitdiffstats
path: root/listmodel.cpp
diff options
context:
space:
mode:
authoram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-07-17 17:36:23 +0000
committeram <am@f440f766-f032-0410-8965-dc7d17de2ca0>2009-07-17 17:36:23 +0000
commita477a1998c03bc0e7251463aff5486e3c0872d23 (patch)
tree1de3c2d32f1f1811a7dcc2058bfaf26c18f7e296 /listmodel.cpp
parent1b1e48aa11c4518e100004dac594540e6024fa68 (diff)
downloadSheMov-a477a1998c03bc0e7251463aff5486e3c0872d23.tar.gz
SheMov-a477a1998c03bc0e7251463aff5486e3c0872d23.tar.bz2
SheMov-a477a1998c03bc0e7251463aff5486e3c0872d23.zip
Huge changes:
-Created an application icon and one for archives -implemented database configuration dialog -implemented listeditor -implemented covereditor -implemented md5sum helper -implemented archivefilewidget -Debugging spree: fixed SQL-statements and ListModel git-svn-id: file:///var/svn/repos2/shemov/trunk@389 f440f766-f032-0410-8965-dc7d17de2ca0
Diffstat (limited to 'listmodel.cpp')
-rw-r--r--listmodel.cpp39
1 files changed, 26 insertions, 13 deletions
diff --git a/listmodel.cpp b/listmodel.cpp
index d8b6ccc..437ec3e 100644
--- a/listmodel.cpp
+++ b/listmodel.cpp
@@ -9,18 +9,25 @@
#include <QString>
#include <QSqlQuery>
+#include <QSqlError>
+#include <QDebug>
+
#include "listmodel.h"
#include "listitem.h"
ListModel::ListModel(const QString table, QObject *parent) : QAbstractItemModel(parent), mTable(table){
QString updateQuery = QString("UPDATE %1 SET t%1name = :name WHERE i%1id = :id").arg(mTable);
- mUpdateQuery = new QSqlQuery(updateQuery);
- QString insertQuery = QString("INSERT INTO %1(t%1name) VALUES(:name)").arg(mTable);
- mInsertQuery = new QSqlQuery(insertQuery);
+ mUpdateQuery = new QSqlQuery;
+ mUpdateQuery->prepare(updateQuery);
+ QString insertQuery = QString("INSERT INTO %1 (t%1name) VALUES(:name)").arg(mTable);
+ mInsertQuery = new QSqlQuery;
+ mInsertQuery->prepare(insertQuery);
QString deleteQuery = QString("DELETE FROM %1 WHERE t%1name = :name").arg(mTable);
- mDeleteQuery = new QSqlQuery(deleteQuery);
+ mDeleteQuery = new QSqlQuery;
+ mDeleteQuery->prepare(deleteQuery);
QString idQuery = QString("SELECT i%1id FROM %1 WHERE t%1name = :name").arg(mTable);
- mIdQuery = new QSqlQuery(idQuery);
+ mIdQuery = new QSqlQuery;
+ mIdQuery->prepare(idQuery);
populate();
}
@@ -29,13 +36,20 @@ ListModel::~ListModel(){
}
QModelIndex ListModel::index(int row, int column, const QModelIndex &) const{
- if(column != 0){
+ if((column != 0) || (row >= mItems.size()) || (row < 0)){
return QModelIndex();
}
- if(row > mItems.size()){
- return QModelIndex();
+ return createIndex(row, 0, mItems.at(row));
+}
+
+QModelIndex ListModel::index(const QVariant &data) const{
+ for(int i = 0; i < rowCount(); ++i){
+ ListItem *item = mItems.at(i);
+ if(data.toString() == item->name()){
+ return createIndex(i, 0, item);
+ }
}
- return createIndex(row, 0);
+ return QModelIndex();
}
int ListModel::rowCount(const QModelIndex &) const{
@@ -78,7 +92,7 @@ bool ListModel::removeRows(int row, int count, const QModelIndex&){
if(row > mItems.size()){
return false;
}
- if((row - count - mItems.size()) < 0){
+ if((row + count) > rowCount()){
return false;
}
beginRemoveRows(QModelIndex(), row, row + (count - 1));
@@ -99,7 +113,7 @@ bool ListModel::setData(const QModelIndex &idx, const QVariant &data, int role){
Q_ASSERT(item != 0);
int id = item->id();
bool success = false;
- if(id == -1){
+ if(id > -1){
//this is an update
mUpdateQuery->bindValue(":id", id);
success = mUpdateQuery->exec();
@@ -132,7 +146,7 @@ bool ListModel::addItem(const QVariant &item){
if(insertRows(0, 1, QModelIndex())){
QModelIndex idx = index(0, 0);
if(idx.isValid()){
- success = setData(idx, item);
+ success = setData(idx, item, Qt::EditRole);
}
}
return success;
@@ -174,7 +188,6 @@ bool ListModel::renameItem(const QVariant &oldName, const QVariant &newName){
void ListModel::populate(){
QString query = QString("SELECT i%1id, t%1name FROM %1 ORDER BY t%1name").arg(mTable);
QSqlQuery q(query);
- q.exec();
while(q.next()){
ListItem *newItem = new ListItem(q.value(1).toString(), q.value(0).toInt());
mItems << newItem;