diff options
Diffstat (limited to 'saltoqd/cardmanager.cpp')
-rw-r--r-- | saltoqd/cardmanager.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/saltoqd/cardmanager.cpp b/saltoqd/cardmanager.cpp index 7465cc4..ab3a0bc 100644 --- a/saltoqd/cardmanager.cpp +++ b/saltoqd/cardmanager.cpp @@ -274,28 +274,37 @@ void CardManager::uninstallDeck(CardDeck *deck) disconnect(deck, 0, this, 0); } +QString CardManager::escapeString(const QString &s) +{ + QString e(s); + e.replace('\\', "\\\\"); + e.replace('\n', "\\n"); + e.replace('"', "\\\""); + return e; +} + QString CardManager::generateCardDescription(const QString &verb, Card *card) const { QString desc = verb + " { "; desc += QString("id = \"%1\", ").arg(card->id()); desc += QString("version = 2, cardevents = \"true\", "); if (!card->header().isEmpty()) { - desc += QString("header = \"%1\", ").arg(card->header()); + desc += QString("header = \"%1\", ").arg(escapeString(card->header())); } if (!card->title().isEmpty()) { - desc += QString("title = \"%1\", ").arg(card->title()); + desc += QString("title = \"%1\", ").arg(escapeString(card->title())); } if (card->dateTime().isValid()) { desc += QString("time = \"%1\", ").arg(card->dateTime().toMSecsSinceEpoch()); } if (!card->info().isEmpty()) { - desc += QString("info = \"%1\", ").arg(card->info()); + desc += QString("info = \"%1\", ").arg(escapeString(card->info())); } if (!card->isVibrate()) { desc += QString("suppressvibe = \"true\", "); } if (!card->text().isEmpty()) { - desc += QString("detail = { \"%1\" }").arg(card->text()); + desc += QString("detail = { \"%1\" }").arg(escapeString(card->text())); } desc += QString("}\n"); return desc; |