void BtTreeModel::copySelected(QList< QPair<QModelIndex, QString> > toBeCopied) { while ( ! toBeCopied.isEmpty() ) { QPair<QModelIndex,QString> thisPair = toBeCopied.takeFirst(); QModelIndex ndx = thisPair.first; QString name = thisPair.second; switch ( type(ndx) ) { case BtTreeItem::EQUIPMENT: Equipment *copyKit, *oldKit; oldKit = equipment(ndx); copyKit = Database::instance().newEquipment(oldKit); // Create a deep copy. copyKit->setName(name); break; case BtTreeItem::FERMENTABLE: Fermentable *copyFerm, *oldFerm; oldFerm = fermentable(ndx); copyFerm = Database::instance().newFermentable(oldFerm); // Create a deep copy. copyFerm->setName(name); break; case BtTreeItem::HOP: Hop *copyHop, *oldHop; oldHop = hop(ndx); copyHop = Database::instance().newHop(oldHop); // Create a deep copy. copyHop->setName(name); break; case BtTreeItem::MISC: Misc *copyMisc, *oldMisc; oldMisc = misc(ndx); copyMisc = Database::instance().newMisc(oldMisc); // Create a deep copy. copyMisc->setName(name); break; case BtTreeItem::RECIPE: Recipe *copyRec, *oldRec; oldRec = recipe(ndx); copyRec = Database::instance().newRecipe(oldRec); // Create a deep copy. copyRec->setName(name); break; case BtTreeItem::STYLE: Style *copyStyle, *oldStyle; oldStyle = style(ndx); copyStyle = Database::instance().newStyle(oldStyle); // Create a deep copy. copyStyle->setName(name); break; case BtTreeItem::YEAST: Yeast *copyYeast, *oldYeast; oldYeast = yeast(ndx); copyYeast = Database::instance().newYeast(oldYeast); // Create a deep copy. copyYeast->setName(name); break; default: Brewtarget::logW(QString("deleteSelected:: unknown type %1").arg(type(ndx))); } } }
void BtTreeModel::deleteSelected(QModelIndexList victims) { QModelIndexList toBeDeleted = victims; // trust me while ( ! toBeDeleted.isEmpty() ) { QModelIndex ndx = toBeDeleted.takeFirst(); switch ( type(ndx) ) { case BtTreeItem::EQUIPMENT: Database::instance().remove( equipment(ndx) ); break; case BtTreeItem::FERMENTABLE: Database::instance().remove( fermentable(ndx) ); break; case BtTreeItem::HOP: Database::instance().remove( hop(ndx) ); break; case BtTreeItem::MISC: Database::instance().remove( misc(ndx) ); break; case BtTreeItem::RECIPE: Database::instance().remove( recipe(ndx) ); break; case BtTreeItem::STYLE: Database::instance().remove( style(ndx) ); break; case BtTreeItem::YEAST: Database::instance().remove( yeast(ndx) ); break; case BtTreeItem::BREWNOTE: Database::instance().remove( brewNote(ndx) ); break; case BtTreeItem::FOLDER: // This one is weird. toBeDeleted += allChildren(ndx); removeFolder(ndx); break; default: Brewtarget::logW(QString("deleteSelected:: unknown type %1").arg(type(ndx))); } } }
void BtTreeModel::copySelected(QList< QPair<QModelIndex, QString> > toBeCopied) { bool failed = false; while ( ! toBeCopied.isEmpty() ) { QPair<QModelIndex,QString> thisPair = toBeCopied.takeFirst(); QModelIndex ndx = thisPair.first; QString name = thisPair.second; switch ( type(ndx) ) { case BtTreeItem::EQUIPMENT: Equipment *copyKit, *oldKit; oldKit = equipment(ndx); copyKit = Database::instance().newEquipment(oldKit); // Create a deep copy. if ( copyKit) copyKit->setName(name); else failed = true; break; case BtTreeItem::FERMENTABLE: Fermentable *copyFerm, *oldFerm; oldFerm = fermentable(ndx); copyFerm = Database::instance().newFermentable(oldFerm); // Create a deep copy. if ( copyFerm ) copyFerm->setName(name); else failed = true; break; case BtTreeItem::HOP: Hop *copyHop, *oldHop; oldHop = hop(ndx); copyHop = Database::instance().newHop(oldHop); // Create a deep copy. if ( copyHop ) copyHop->setName(name); else failed = true; break; case BtTreeItem::MISC: Misc *copyMisc, *oldMisc; oldMisc = misc(ndx); copyMisc = Database::instance().newMisc(oldMisc); // Create a deep copy. if ( copyMisc ) copyMisc->setName(name); else failed = true; break; case BtTreeItem::RECIPE: Recipe *copyRec, *oldRec; oldRec = recipe(ndx); copyRec = Database::instance().newRecipe(oldRec); // Create a deep copy. if ( copyRec ) copyRec->setName(name); else failed = true; break; case BtTreeItem::STYLE: Style *copyStyle, *oldStyle; oldStyle = style(ndx); copyStyle = Database::instance().newStyle(oldStyle); // Create a deep copy. if ( copyStyle ) copyStyle->setName(name); else failed = true; break; case BtTreeItem::YEAST: Yeast *copyYeast, *oldYeast; oldYeast = yeast(ndx); copyYeast = Database::instance().newYeast(oldYeast); // Create a deep copy. if ( copyYeast ) copyYeast->setName(name); else failed = true; break; default: Brewtarget::logW(QString("copySelected:: unknown type %1").arg(type(ndx))); } if ( failed ) { QMessageBox::warning(0, tr("Could not copy"), tr("There was an unexpected error creating %1").arg(name)); return; } } }