void ClipEditorModel::ItemChangedHandler(QStandardItem *item) { Q_ASSERT(item); if (item->column() != 0) { SetDataModified(true); return; } // Restore name if nothing entered or contains a group indicator if (item->text().isEmpty() || item->text().contains("/")) { QString name = item->data(FULLNAME_ROLE).toString(); name.replace(QRegularExpression("/$"), ""); if (name.contains("/")) { name = name.split("/").last(); } // Disconnect change signal while changing the items disconnect(this, SIGNAL(itemChanged(QStandardItem *)), this, SLOT(ItemChangedHandler(QStandardItem *))); item->setText(name); connect(this, SIGNAL(itemChanged(QStandardItem *)), this, SLOT(ItemChangedHandler(QStandardItem *))); return; }
bool ClipEditorModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) { QModelIndex new_parent(parent); if (parent.column() > 0) { // User is trying to drop onto a child column - treat it as though they are dropping in the initial column. new_parent = index(parent.row(), 0, parent.parent()); } if (column > 0) { // Same as above but for when user drops into the between row selector in a child column. column = 0; } // If dropped on an non-group entry convert to parent item group/row if (new_parent.isValid() && !itemFromIndex(new_parent)->data(IS_GROUP_ROLE).toBool()) { row = new_parent.row() + 1; new_parent = new_parent.parent(); } if (!QStandardItemModel::dropMimeData(data, action, row, column, new_parent)) { return false; } // As our drag/drop completed successfully, recalculate the fullname for all the items in the model UpdateFullName(invisibleRootItem()); // If we dropped onto a parent group, make sure it is expanded. if (new_parent.isValid()) { emit ItemDropped(new_parent); } SetDataModified(true); return true; }
void IndexEditorModel::ItemChangedHandler(QStandardItem *item) { Q_ASSERT(item); SetDataModified(true); if (item->column() != 0) { return; } // Split the entry into multiple entries if there is a return in it if (item->text().contains("\n")) { SplitEntry(item); } }
void IndexEditorModel::RowsRemovedHandler(const QModelIndex &parent, int start, int end) { SetDataModified(true); }