diff options
author | Daniel Teske <daniel.teske@digia.com> | 2014-02-14 15:19:31 +0100 |
---|---|---|
committer | Daniel Teske <daniel.teske@digia.com> | 2014-02-19 14:51:05 +0100 |
commit | d6781f18ff8c10f445ea9fc54712fe9f44941730 (patch) | |
tree | 3e1d7f401146f79f2ea28d5960e708e046a8ebce /src/plugins/resourceeditor/qrceditor/resourcefile.cpp | |
parent | ae781b191975c7653cc1886087ceb3ee52db1a1c (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.cpp | 43 |
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; |