From 59f1bfcf315a77834ddbce20cc05892d211ab55c Mon Sep 17 00:00:00 2001 From: Kevin Smith <git@kismith.co.uk> Date: Thu, 31 May 2012 10:22:18 +0100 Subject: Render & in group names correctly in edit dialog. Resolves: #1117 diff --git a/Swift/QtUI/QtContactEditWidget.cpp b/Swift/QtUI/QtContactEditWidget.cpp index 9d071b9..a347a00 100644 --- a/Swift/QtUI/QtContactEditWidget.cpp +++ b/Swift/QtUI/QtContactEditWidget.cpp @@ -52,8 +52,9 @@ QtContactEditWidget::QtContactEditWidget(const std::set<std::string>& allGroups, QVBoxLayout* scrollLayout = new QVBoxLayout(groups); foreach (std::string group, allGroups) { + QString groupName = doubleAmpersand(group); QCheckBox* check = new QCheckBox(groups); - check->setText(P2QSTRING(group)); + check->setText(groupName); check->setCheckState(Qt::Unchecked); checkBoxes_[group] = check; scrollLayout->addWidget(check); @@ -83,7 +84,7 @@ std::string QtContactEditWidget::getName() const { if (button == nameRadioButton_) { name = Q2PSTRING(name_->text()); } else { - name = Q2PSTRING(button->text()); + name = singleAmpersand(button->text()); } break; } @@ -115,7 +116,7 @@ void QtContactEditWidget::setNameSuggestions(const std::vector<std::string>& sug throbberLabel_->hide(); foreach(const std::string& name, suggestions) { - suggestionsLayout_->insertWidget(nameLayout_->count() - 2, new QRadioButton(P2QSTRING(name), this)); + suggestionsLayout_->insertWidget(nameLayout_->count() - 2, new QRadioButton(doubleAmpersand(name), this)); } nameRadioButton_ = new QRadioButton(tr("Name:"), this); @@ -135,6 +136,15 @@ void QtContactEditWidget::setNameSuggestions(const std::vector<std::string>& sug nameRadioButton_->setChecked(true); } } +QString QtContactEditWidget::doubleAmpersand(const std::string& name) const { + return P2QSTRING(name).replace("&", "&&"); + +} + +std::string QtContactEditWidget::singleAmpersand(const QString& name) const { + return Q2PSTRING(QString(name).replace("&&", "&")); +} + void QtContactEditWidget::clear() { name_->clear(); diff --git a/Swift/QtUI/QtContactEditWidget.h b/Swift/QtUI/QtContactEditWidget.h index 5350762..6d55b80 100644 --- a/Swift/QtUI/QtContactEditWidget.h +++ b/Swift/QtUI/QtContactEditWidget.h @@ -38,6 +38,10 @@ namespace Swift { void clear(); + + private: + QString doubleAmpersand(const std::string& name) const; + std::string singleAmpersand(const QString& name) const; private: typedef std::map<std::string, QCheckBox*> CheckBoxMap; CheckBoxMap checkBoxes_; -- cgit v0.10.2-6-g49f6