Check keyword name before accepting in KeywordDialog in Todo plugin.

* Make sure keyword name is not already used in existing keywords.
* Make sure keyword name doesn't contain spaces or a colon.

Change-Id: I2856d122ba2fc6a7a60dc760dcd3d536523db5bc
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
This commit is contained in:
Dmitry Savchenko
2012-03-15 18:51:52 +03:00
committed by Eike Ziller
parent 71d9f33bef
commit 8563d032f7
5 changed files with 112 additions and 34 deletions

View File

@@ -71,6 +71,17 @@ void OptionsDialog::addToKeywordsList(const Keyword &keyword)
ui->keywordsList->addItem(item);
}
QSet<QString> OptionsDialog::keywordNames()
{
KeywordList keywords = settingsFromUi().keywords;
QSet<QString> result;
foreach (const Keyword &keyword, keywords)
result << keyword.name;
return result;
}
Settings OptionsDialog::settings()
{
return settingsFromUi();
@@ -79,9 +90,9 @@ Settings OptionsDialog::settings()
void OptionsDialog::addButtonClicked()
{
Keyword keyword;
KeywordDialog *addKeywordDialog = new KeywordDialog(keyword, this);
if (addKeywordDialog->exec() == QDialog::Accepted) {
keyword = addKeywordDialog->keyword();
KeywordDialog *keywordDialog = new KeywordDialog(keyword, keywordNames(), this);
if (keywordDialog->exec() == QDialog::Accepted) {
keyword = keywordDialog->keyword();
addToKeywordsList(keyword);
}
}
@@ -95,9 +106,12 @@ void OptionsDialog::editButtonClicked()
keyword.iconResource = item->data(Qt::UserRole).toString();
keyword.color = item->backgroundColor();
KeywordDialog *addKeywordDialog = new KeywordDialog(keyword, this);
if (addKeywordDialog->exec() == QDialog::Accepted) {
keyword = addKeywordDialog->keyword();
QSet<QString> keywordNamesButThis = keywordNames();
keywordNamesButThis.remove(keyword.name);
KeywordDialog *keywordDialog = new KeywordDialog(keyword, keywordNamesButThis, this);
if (keywordDialog->exec() == QDialog::Accepted) {
keyword = keywordDialog->keyword();
item->setIcon(QIcon(keyword.iconResource));
item->setText(keyword.name);
item->setData(Qt::UserRole, keyword.iconResource);