void NewGameTab::editImageProperties() { QListWidgetItem* item = m_images->currentItem(); if (!item || item->isHidden()) { return; } QString filename = item->data(ImageRole).toString(); ImagePropertiesDialog dialog(item->icon(), item->text(), m_image_tags, filename, window()); if (dialog.exec() == QDialog::Accepted) { // Update name item->setText(dialog.name()); if (item->text() != item->data(NameRole).toString()) { item->setData(NameRole, item->text()); QSettings details(Path::image("details"), QSettings::IniFormat); details.setValue(filename + "/Name", item->text()); emit imageRenamed(filename, item->text()); m_images->sortItems(); m_images->scrollToItem(item); } // Update tags item->setData(TagsRole, m_image_tags->tags(item->data(ImageRole).toString())); updateToolTip(item); } }
bool ImageListModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (!index.isValid() || index.row() >= m_imageInfoList.count()) return false; if (role == Qt::EditRole) { QFileInfo &fileInfo = m_imageInfoList[index.row()].fileInfo(); QString oldName = fileInfo.fileName(); QString newName = value.toString(); if (newName != oldName) { // rename the actual file QString oldPath = fileInfo.absoluteFilePath(); QString newPath = fileInfo.dir().filePath(newName); if (QFile::rename(oldPath, newPath)) { // update the file info reference fileInfo.setFile(newPath); emit imageRenamed(index, newPath); return true; } qWarning("File \"%s\" could not be renamed to \"%s\"", qPrintable(oldPath), qPrintable(newPath)); } } return false; }