void CollectionListView::deleteCollection() { int collectionId = MetadataEngine::getInstance().getCurrentCollectionId(); if ((collectionId == 0) || SyncSession::IS_READ_ONLY) return; //0 stands for invalid //ask for confirmation QMessageBox box(QMessageBox::Question, tr("Delete Collection"), tr("Are you sure you want to delete the selected collection?" "<br><br><b>Warning:</b> This cannot be undone!"), QMessageBox::Yes | QMessageBox::No, this); box.setDefaultButton(QMessageBox::Yes); box.setWindowModality(Qt::WindowModal); int r = box.exec(); if (r == QMessageBox::No) return; //check all fields for delete triggers CollectionFieldCleaner cleaner(this); cleaner.cleanCollection(collectionId); //delete metadata and tables MetadataEngine::getInstance().deleteCollection(collectionId); //delete from model m_model->removeRow(currentIndex().row()); //delete settings about collection's column positions in TableView SettingsManager s; QString settingsKey = QString("collection_") + QString::number(collectionId); s.deleteObjectProperties(settingsKey); //reset cached id m_currentCollectionId = 0; //clear undo stack since this action is not undoable QUndoStack *stack = MainWindow::getUndoStack(); if (stack) stack->clear(); //set first collection as current one QModelIndex first = m_model->index(0, 1); if (first.isValid()) setCurrentIndex(first); else MetadataEngine::getInstance().setCurrentCollectionId(0); //set invalid //set local data changed SyncSession::LOCAL_DATA_CHANGED = true; }
static PyObject *meth_QUndoStack_clear(PyObject *sipSelf, PyObject *sipArgs) { PyObject *sipParseErr = NULL; { QUndoStack *sipCpp; if (sipParseArgs(&sipParseErr, sipArgs, "B", &sipSelf, sipType_QUndoStack, &sipCpp)) { Py_BEGIN_ALLOW_THREADS sipCpp->clear(); Py_END_ALLOW_THREADS Py_INCREF(Py_None); return Py_None; } } /* Raise an exception if the arguments couldn't be parsed. */ sipNoMethod(sipParseErr, sipName_QUndoStack, sipName_clear, NULL); return NULL; }