summaryrefslogtreecommitdiffstats
path: root/mappingtablemodel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mappingtablemodel.cpp')
-rw-r--r--mappingtablemodel.cpp52
1 files changed, 39 insertions, 13 deletions
diff --git a/mappingtablemodel.cpp b/mappingtablemodel.cpp
index 84c242a..ad569ee 100644
--- a/mappingtablemodel.cpp
+++ b/mappingtablemodel.cpp
@@ -33,7 +33,10 @@ MappingTableModel::MappingTableModel(QStringList &headers, const QString &table,
QString addMappingQuery = QString("INSERT INTO %1 (iseriesparts_id, %2) VALUES (:id1, :id2)").arg(mMappingTable).arg(mIdColumnName);
mAddMappingQuery = new QSqlQuery(mDb);
mAddMappingQuery->prepare(addMappingQuery);
- QString mappingQuery = QString("SELECT %1 FROM %2, %3 WHERE %1.%4 = %3.%4 AND %3.iseriesparts_id = :id").arg(mNameColumnName).arg(mTable).arg(mMappingTable).arg(mIdColumnName);
+ QString removeMappingQuery = QString("DELETE FROM %1 WHERE iseriesparts_id = :id1 AND %2 = :id2").arg(mMappingTable).arg(mIdColumnName);
+ mRemoveMappingQuery = new QSqlQuery(mDb);
+ mRemoveMappingQuery->prepare(removeMappingQuery);
+ QString mappingQuery = QString("SELECT %1 FROM %2, %3 WHERE %2.%4 = %3.%4 AND %3.iseriesparts_id = :id").arg(mNameColumnName).arg(mTable).arg(mMappingTable).arg(mIdColumnName);
mMappingQuery = new QSqlQuery(mDb);
mMappingQuery->prepare(mappingQuery);
@@ -46,6 +49,7 @@ MappingTableModel::~MappingTableModel(){
delete mInsertItemQuery;
delete mDeleteItemQuery;
delete mAddMappingQuery;
+ delete mRemoveMappingQuery;
delete mMappingQuery;
mDb = QSqlDatabase();
}
@@ -98,6 +102,24 @@ bool MappingTableModel::setData(const QModelIndex &index, const QVariant &value,
return false;
}
+bool MappingTableModel::contains(const QString &value) const{
+ return mItemNames.contains(value);
+}
+
+QModelIndex MappingTableModel::find(const QVariant &value, int column, const QModelIndex &parent) const{
+ SmTreeItem *parentItem = root();
+ if(parent.isValid()){
+ parentItem = static_cast<SmTreeItem*>(parent.internalPointer());
+ }
+ for(int i = 0; i < parentItem->childCount(); ++i){
+ SmTreeItem *cur = parentItem->child(i);
+ if(cur->data(column) == value){
+ return index(i, column, parent);
+ }
+ }
+ return QModelIndex();
+}
+
bool MappingTableModel::addItem(const QVariant &name){
QString newValue = name.toString().toLower().trimmed();
if(mItemNames.contains(newValue)){
@@ -138,22 +160,24 @@ bool MappingTableModel::removeItem(const QModelIndex &idx){
return false;
}
-bool MappingTableModel::addMapping(int seriesId, const QList<int> &itemIds){
- if(itemIds.isEmpty()){
- return false;
- }
+bool MappingTableModel::addMapping(int seriesId, int itemId){
mDb.transaction();
- foreach(int id, itemIds){
- mAddMappingQuery->bindValue(":id1", seriesId);
- mAddMappingQuery->bindValue(":id2", id);
- if(!mAddMappingQuery->exec()){
- mDb.rollback();
- return false;
- }
+ mAddMappingQuery->bindValue(":id1", seriesId);
+ mAddMappingQuery->bindValue(":id2", itemId);
+ if(!mAddMappingQuery->exec()){
+ mDb.rollback();
+ return false;
}
+ mDb.commit();
return true;
}
+bool MappingTableModel::removeMapping(int seriesId, int itemId){
+ mRemoveMappingQuery->bindValue(":id1", seriesId);
+ mRemoveMappingQuery->bindValue(":id2", itemId);
+ return mRemoveMappingQuery->exec();
+}
+
QList<QVariant> MappingTableModel::mappings(int seriesId){
QList<QVariant> retval;
mMappingQuery->bindValue(":id", seriesId);
@@ -167,7 +191,9 @@ QList<QVariant> MappingTableModel::mappings(int seriesId){
void MappingTableModel::populate(){
QString query = QString("SELECT %1, %2 FROM %3 ORDER BY %2").arg(mIdColumnName).arg(mNameColumnName).arg(mTable);
- SmTreeItem *root = new SmTreeItem(2);
+ QList<QVariant> rootData;
+ rootData << QString(tr("%1 name")).arg(mTable) << tr("Id");
+ SmTreeItem *root = new SmTreeItem(rootData);
QSqlQuery dataQuery(query, mDb);
while(dataQuery.next()){
QList<QVariant> data;