aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
diff options
context:
space:
mode:
authorDaniel Teske <daniel.teske@digia.com>2014-02-14 15:19:31 +0100
committerDaniel Teske <daniel.teske@digia.com>2014-02-19 14:51:05 +0100
commitd6781f18ff8c10f445ea9fc54712fe9f44941730 (patch)
tree3e1d7f401146f79f2ea28d5960e708e046a8ebce /src/plugins/resourceeditor/qrceditor/resourcefile.cpp
parentae781b191975c7653cc1886087ceb3ee52db1a1c (diff)
ResourceEditor: Small interface tweaks for ResourceNode
Change-Id: I13886ac8e8850efe312d101c154a6add70d780ec Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
Diffstat (limited to 'src/plugins/resourceeditor/qrceditor/resourcefile.cpp')
-rw-r--r--src/plugins/resourceeditor/qrceditor/resourcefile.cpp43
1 files changed, 37 insertions, 6 deletions
diff --git a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
index a7cbea3b39..d6b084fab0 100644
--- a/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
+++ b/src/plugins/resourceeditor/qrceditor/resourcefile.cpp
@@ -240,7 +240,7 @@ void ResourceFile::refresh()
}
}
-void ResourceFile::addFile(int prefix_idx, const QString &file, int file_idx)
+int ResourceFile::addFile(int prefix_idx, const QString &file, int file_idx)
{
Prefix * const p = m_prefix_list[prefix_idx];
Q_ASSERT(p);
@@ -249,19 +249,21 @@ void ResourceFile::addFile(int prefix_idx, const QString &file, int file_idx)
if (file_idx == -1)
file_idx = files.size();
files.insert(file_idx, new File(p, absolutePath(file)));
+ return file_idx;
}
-void ResourceFile::addPrefix(const QString &prefix, const QString &lang, int prefix_idx)
+int ResourceFile::addPrefix(const QString &prefix, const QString &lang, int prefix_idx)
{
QString fixed_prefix = fixPrefix(prefix);
if (indexOfPrefix(fixed_prefix, lang) != -1)
- return;
+ return -1;
Q_ASSERT(prefix_idx >= -1 && prefix_idx <= m_prefix_list.size());
if (prefix_idx == -1)
prefix_idx = m_prefix_list.size();
m_prefix_list.insert(prefix_idx, new Prefix(fixed_prefix));
m_prefix_list[prefix_idx]->lang = lang;
+ return prefix_idx;
}
void ResourceFile::removePrefix(int prefix_idx)
@@ -281,16 +283,37 @@ void ResourceFile::removeFile(int prefix_idx, int file_idx)
fileList.removeAt(file_idx);
}
-void ResourceFile::replacePrefix(int prefix_idx, const QString &prefix)
+bool ResourceFile::replacePrefix(int prefix_idx, const QString &prefix)
{
+ const QString fixed_prefix = fixPrefix(prefix);
Q_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count());
- m_prefix_list[prefix_idx]->name = fixPrefix(prefix);
+ const int existingIndex = indexOfPrefix(fixed_prefix, m_prefix_list.at(prefix_idx)->lang, prefix_idx);
+ if (existingIndex != -1) // prevent duplicated prefix + lang combinations
+ return false;
+ m_prefix_list[prefix_idx]->name = fixed_prefix;
+ return true;
}
-void ResourceFile::replaceLang(int prefix_idx, const QString &lang)
+bool ResourceFile::replaceLang(int prefix_idx, const QString &lang)
{
Q_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count());
+ const int existingIndex = indexOfPrefix(m_prefix_list.at(prefix_idx)->name, lang, prefix_idx);
+ if (existingIndex != -1) // prevent duplicated prefix + lang combinations
+ return false;
+
m_prefix_list[prefix_idx]->lang = lang;
+ return true;
+}
+
+bool ResourceFile::replacePrefixAndLang(int prefix_idx, const QString &prefix, const QString &lang)
+{
+ const QString fixed_prefix = fixPrefix(prefix);
+ Q_ASSERT(prefix_idx >= 0 && prefix_idx < m_prefix_list.count());
+ const int existingIndex = indexOfPrefix(fixed_prefix, lang, prefix_idx);
+ if (existingIndex != -1) // prevent duplicated prefix + lang combinations
+ return false;
+ m_prefix_list[prefix_idx]->name = fixed_prefix;
+ return true;
}
void ResourceFile::replaceAlias(int prefix_idx, int file_idx, const QString &alias)
@@ -347,8 +370,16 @@ void ResourceFile::replaceFile(int pref_idx, int file_idx, const QString &file)
int ResourceFile::indexOfPrefix(const QString &prefix, const QString &lang) const
{
+ return indexOfPrefix(prefix, lang, -1);
+}
+
+int ResourceFile::indexOfPrefix(const QString &prefix, const QString &lang, int skip) const
+{
+
QString fixed_prefix = fixPrefix(prefix);
for (int i = 0; i < m_prefix_list.size(); ++i) {
+ if (i == skip)
+ continue;
if (m_prefix_list.at(i)->name == fixed_prefix
&& m_prefix_list.at(i)->lang == lang)
return i;