Example #1
0
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);

	}
}
Example #2
0
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;
}