summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/shared/qrceditor/qrceditor.cpp1
-rw-r--r--src/shared/qrceditor/resourcefile.cpp29
-rw-r--r--src/shared/qrceditor/resourcefile_p.h1
-rw-r--r--src/shared/qrceditor/resourceview.cpp5
-rw-r--r--src/shared/qrceditor/resourceview.h1
5 files changed, 27 insertions, 10 deletions
diff --git a/src/shared/qrceditor/qrceditor.cpp b/src/shared/qrceditor/qrceditor.cpp
index 8ac36dc299..82751b8158 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 9b2466c8b9..9699632b46 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 4ae2076309..ebcde729d8 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 07fd1f36b3..4437a7fad5 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 a00afd95a4..5b8a458fa9 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);