diff options
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/qrceditor/qrceditor.cpp | 1 | ||||
-rw-r--r-- | src/shared/qrceditor/resourcefile.cpp | 29 | ||||
-rw-r--r-- | src/shared/qrceditor/resourcefile_p.h | 1 | ||||
-rw-r--r-- | src/shared/qrceditor/resourceview.cpp | 5 | ||||
-rw-r--r-- | src/shared/qrceditor/resourceview.h | 1 |
5 files changed, 27 insertions, 10 deletions
diff --git a/src/shared/qrceditor/qrceditor.cpp b/src/shared/qrceditor/qrceditor.cpp index 8ac36dc299c..82751b81583 100644 --- a/src/shared/qrceditor/qrceditor.cpp +++ b/src/shared/qrceditor/qrceditor.cpp @@ -417,6 +417,7 @@ void QrcEditor::onAddFiles() : m_treeview->model()->parent(current).row(); int const cursorFileArrayIndex = currentIsPrefixNode ? 0 : current.row(); QStringList fileNames = m_treeview->fileNamesToAdd(); + fileNames = m_treeview->existingFilesSubtracted(prefixArrayIndex, fileNames); resolveLocationIssues(fileNames); if (fileNames.isEmpty()) return; diff --git a/src/shared/qrceditor/resourcefile.cpp b/src/shared/qrceditor/resourcefile.cpp index 9b2466c8b96..9699632b462 100644 --- a/src/shared/qrceditor/resourcefile.cpp +++ b/src/shared/qrceditor/resourcefile.cpp @@ -793,36 +793,45 @@ QModelIndex ResourceModel::addFiles(const QModelIndex &model_idx, const QStringL return index(lastFileArrayIndex, 0, prefixModelIndex); } +QStringList ResourceModel::existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const +{ + const QModelIndex prefixModelIdx = index(prefixIndex, 0, QModelIndex()); + QStringList uniqueList; + + if (prefixModelIdx.isValid()) { + foreach (const QString &file, fileNames) { + if (!m_resource_file.contains(prefixIndex, file) && !uniqueList.contains(file)) + uniqueList.append(file); + } + } + return uniqueList; +} + void ResourceModel::addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile) { Q_UNUSED(cursorFile) const QModelIndex prefix_model_idx = index(prefixIndex, 0, QModelIndex()); - const QStringList &file_list = fileNames; firstFile = -1; lastFile = -1; if (!prefix_model_idx.isValid()) { return; } - const int prefix_idx = prefixIndex; - QStringList unique_list; - foreach (const QString &file, file_list) { - if (!m_resource_file.contains(prefix_idx, file) && !unique_list.contains(file)) - unique_list.append(file); - } + QStringList unique_list = existingFilesSubtracted(prefixIndex, fileNames); if (unique_list.isEmpty()) { return; } - const int cnt = m_resource_file.fileCount(prefix_idx); + + const int cnt = m_resource_file.fileCount(prefixIndex); beginInsertRows(prefix_model_idx, cnt, cnt + unique_list.count() - 1); // ### FIXME foreach (const QString &file, unique_list) - m_resource_file.addFile(prefix_idx, file); + m_resource_file.addFile(prefixIndex, file); - const QFileInfo fi(file_list.last()); + const QFileInfo fi(unique_list.last()); m_lastResourceDir = fi.absolutePath(); endInsertRows(); diff --git a/src/shared/qrceditor/resourcefile_p.h b/src/shared/qrceditor/resourcefile_p.h index 4ae20763090..ebcde729d8d 100644 --- a/src/shared/qrceditor/resourcefile_p.h +++ b/src/shared/qrceditor/resourcefile_p.h @@ -216,6 +216,7 @@ public: virtual QModelIndex addNewPrefix(); virtual QModelIndex addFiles(const QModelIndex &idx, const QStringList &file_list); + QStringList existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const; void addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile); void insertPrefix(int prefixIndex, const QString &prefix, const QString &lang); void insertFile(int prefixIndex, int fileIndex, const QString &fileName, const QString &alias); diff --git a/src/shared/qrceditor/resourceview.cpp b/src/shared/qrceditor/resourceview.cpp index 07fd1f36b38..4437a7fad5e 100644 --- a/src/shared/qrceditor/resourceview.cpp +++ b/src/shared/qrceditor/resourceview.cpp @@ -305,6 +305,11 @@ EntryBackup * ResourceView::removeEntry(const QModelIndex &index) return m_qrcModel->removeEntry(index); } +QStringList ResourceView::existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const +{ + return m_qrcModel->existingFilesSubtracted(prefixIndex, fileNames); +} + void ResourceView::addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile) { diff --git a/src/shared/qrceditor/resourceview.h b/src/shared/qrceditor/resourceview.h index a00afd95a47..5b8a458fa9b 100644 --- a/src/shared/qrceditor/resourceview.h +++ b/src/shared/qrceditor/resourceview.h @@ -117,6 +117,7 @@ public: void findSamePlacePostDeletionModelIndex(int &row, QModelIndex &parent) const; EntryBackup *removeEntry(const QModelIndex &index); + QStringList existingFilesSubtracted(int prefixIndex, const QStringList &fileNames) const; void addFiles(int prefixIndex, const QStringList &fileNames, int cursorFile, int &firstFile, int &lastFile); void removeFiles(int prefixIndex, int firstFileIndex, int lastFileIndex); |