Commit 1a009f46 authored by Laurent Montel's avatar Laurent Montel 😁
Browse files

Use QStringLiteral

parent d7d1d131
......@@ -145,7 +145,7 @@ void ActionManager::toggleMenubar(bool dontShowWarning)
KMessageBox::information(mCalendarView,
i18n("<qt>This will hide the menu bar completely."
" You can show it again by typing %1.</qt>", accel),
i18n("Hide menu bar"), QLatin1String("HideMenuBarWarning"));
i18n("Hide menu bar"), QStringLiteral("HideMenuBarWarning"));
}
mMenuBar->hide();
}
......@@ -271,14 +271,14 @@ void ActionManager::initActions()
a = mACollection->addAction(KStandardAction::PrintPreview, mCalendarView, SLOT(print()));
mACollection->addAction(QStringLiteral("korganizer_print_preview"), a);
a->setEnabled(
!KMimeTypeTrader::self()->query(QLatin1String("application/pdf"), QLatin1String("KParts/ReadOnlyPart")).isEmpty());
!KMimeTypeTrader::self()->query(QLatin1String("application/pdf"), QStringLiteral("KParts/ReadOnlyPart")).isEmpty());
} else {
KStandardAction::open(this, SLOT(file_open()), mACollection);
KStandardAction::print(mCalendarView, SLOT(print()), mACollection);
QAction *preview =
KStandardAction::printPreview(mCalendarView, SLOT(printPreview()), mACollection);
preview->setEnabled(
!KMimeTypeTrader::self()->query(QLatin1String("application/pdf"), QLatin1String("KParts/ReadOnlyPart")).isEmpty());
!KMimeTypeTrader::self()->query(QLatin1String("application/pdf"), QStringLiteral("KParts/ReadOnlyPart")).isEmpty());
}
//~~~~~~~~~~~~~~~~~~~~~~~~ IMPORT / EXPORT ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......@@ -333,15 +333,15 @@ void ActionManager::initActions()
Akonadi::History *history = mCalendarView->history();
if (mIsPart) {
// edit menu
mCutAction = mACollection->addAction(KStandardAction::Cut, QLatin1String("korganizer_cut"),
mCutAction = mACollection->addAction(KStandardAction::Cut, QStringLiteral("korganizer_cut"),
mCalendarView, SLOT(edit_cut()));
mCopyAction = mACollection->addAction(KStandardAction::Copy, QLatin1String("korganizer_copy"),
mCopyAction = mACollection->addAction(KStandardAction::Copy, QStringLiteral("korganizer_copy"),
mCalendarView, SLOT(edit_copy()));
pasteAction = mACollection->addAction(KStandardAction::Paste, QLatin1String("korganizer_paste"),
pasteAction = mACollection->addAction(KStandardAction::Paste, QStringLiteral("korganizer_paste"),
mCalendarView, SLOT(edit_paste()));
mUndoAction = mACollection->addAction(KStandardAction::Undo, QLatin1String("korganizer_undo"),
mUndoAction = mACollection->addAction(KStandardAction::Undo, QStringLiteral("korganizer_undo"),
history, SLOT(undo()));
mRedoAction = mACollection->addAction(KStandardAction::Redo, QLatin1String("korganizer_redo"),
mRedoAction = mACollection->addAction(KStandardAction::Redo, QStringLiteral("korganizer_redo"),
history, SLOT(redo()));
} else {
mCutAction = KStandardAction::cut(mCalendarView, SLOT(edit_cut()), mACollection);
......@@ -713,7 +713,7 @@ void ActionManager::initActions()
mACollection->addAction(QStringLiteral("korganizer_configure"), action);
connect(action, SIGNAL(triggered(bool)), mCalendarView,
SLOT(edit_options()));
mACollection->addAction(KStandardAction::KeyBindings, QLatin1String("korganizer_configure_shortcuts"),
mACollection->addAction(KStandardAction::KeyBindings, QStringLiteral("korganizer_configure_shortcuts"),
this, SLOT(keyBindings()));
} else {
KStandardAction::preferences(mCalendarView, SLOT(edit_options()), mACollection);
......@@ -845,7 +845,7 @@ void ActionManager::file_new()
void ActionManager::file_open()
{
const QString defaultPath = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation) + QLatin1String("/korganizer/") ;
const QUrl url = KFileDialog::getOpenUrl(defaultPath, QLatin1String("text/calendar"), dialogParent());
const QUrl url = KFileDialog::getOpenUrl(defaultPath, QStringLiteral("text/calendar"), dialogParent());
file_open(url);
}
......@@ -982,7 +982,7 @@ bool ActionManager::saveURL()
}
QString filename = mURL.fileName();
filename.replace(filename.length() - 4, 4, QLatin1String(".ics"));
filename.replace(filename.length() - 4, 4, QStringLiteral(".ics"));
mURL = mURL.adjusted(QUrl::RemoveFilename);
mURL.setPath(mURL.path() + filename);
if (mURL.isLocalFile()) {
......
......@@ -430,7 +430,7 @@ void CalendarView::readSettings()
}
mViewManager->readSettings(config);
mTodoList->restoreLayout(config, QLatin1String("Sidebar Todo View"), true);
mTodoList->restoreLayout(config, QStringLiteral("Sidebar Todo View"), true);
readFilterSettings(config);
......@@ -461,7 +461,7 @@ void CalendarView::writeSettings()
}
mViewManager->writeSettings(config);
mTodoList->saveLayout(config, QLatin1String("Sidebar Todo View"));
mTodoList->saveLayout(config, QStringLiteral("Sidebar Todo View"));
Akonadi::CalendarSettings::self()->save();
KOPrefs::instance()->save();
......@@ -489,7 +489,7 @@ void CalendarView::readFilterSettings(KConfig *config)
QStringList::ConstIterator end = filterList.constEnd();
while (it != end) {
KCalCore::CalFilter *filter = new KCalCore::CalFilter(*it);
KConfigGroup filterConfig(config, QLatin1String("Filter_") + (*it));
KConfigGroup filterConfig(config, QStringLiteral("Filter_") + (*it));
filter->setCriteria(filterConfig.readEntry("Criteria", 0));
filter->setCategoryList(filterConfig.readEntry("CategoryList", QStringList()));
if (filter->criteria() & KCalCore::CalFilter::HideNoMatchingAttendeeTodos) {
......@@ -523,7 +523,7 @@ void CalendarView::writeFilterSettings(KConfig *config)
filterList.reserve(mFilters.count());
foreach (KCalCore::CalFilter *filter, mFilters) {
filterList << filter->name();
KConfigGroup filterConfig(config, QLatin1String("Filter_") + filter->name());
KConfigGroup filterConfig(config, QStringLiteral("Filter_") + filter->name());
filterConfig.writeEntry("Criteria", filter->criteria());
filterConfig.writeEntry("CategoryList", filter->categoryList());
filterConfig.writeEntry("HideTodoDays", filter->completedTimeSpan());
......@@ -1836,7 +1836,7 @@ void CalendarView::exportWeb()
void CalendarView::exportICalendar()
{
QString filename =
QFileDialog::getSaveFileName(this, QString(), QLatin1String("icalout.ics"), i18n("*.ics|iCalendars"));
QFileDialog::getSaveFileName(this, QString(), QStringLiteral("icalout.ics"), i18n("*.ics|iCalendars"));
if (!filename.isEmpty()) {
// Force correct extension
if (filename.right(4) != QLatin1String(".ics")) {
......@@ -1885,7 +1885,7 @@ void CalendarView::exportVCalendar()
}
}
QString filename = QFileDialog::getSaveFileName(this, QString(), QLatin1String("vcalout.vcs"), i18n("*.vcs|vCalendars"));
QString filename = QFileDialog::getSaveFileName(this, QString(), QStringLiteral("vcalout.vcs"), i18n("*.vcs|vCalendars"));
if (!filename.isEmpty()) {
// Force correct extension
if (filename.right(4) != QLatin1String(".vcs")) {
......
......@@ -844,19 +844,19 @@ void HtmlExportJob::createFooter(QTextStream *ts)
QString cleanChars(const QString &text)
{
QString txt = text;
txt = txt.replace(QLatin1Char('&'), QLatin1String("&amp;"));
txt = txt.replace(QLatin1Char('<'), QLatin1String("&lt;"));
txt = txt.replace(QLatin1Char('>'), QLatin1String("&gt;"));
txt = txt.replace(QLatin1Char('\"'), QLatin1String("&quot;"));
txt = txt.replace(QString::fromUtf8("ä"), QLatin1String("&auml;"));
txt = txt.replace(QString::fromUtf8("Ä"), QLatin1String("&Auml;"));
txt = txt.replace(QString::fromUtf8("ö"), QLatin1String("&ouml;"));
txt = txt.replace(QString::fromUtf8("Ö"), QLatin1String("&Ouml;"));
txt = txt.replace(QString::fromUtf8("ü"), QLatin1String("&uuml;"));
txt = txt.replace(QString::fromUtf8("Ü"), QLatin1String("&Uuml;"));
txt = txt.replace(QString::fromUtf8("ß"), QLatin1String("&szlig;"));
txt = txt.replace(QString::fromUtf8("€"), QLatin1String("&euro;"));
txt = txt.replace(QString::fromUtf8("é"), QLatin1String("&eacute;"));
txt = txt.replace(QLatin1Char('&'), QStringLiteral("&amp;"));
txt = txt.replace(QLatin1Char('<'), QStringLiteral("&lt;"));
txt = txt.replace(QLatin1Char('>'), QStringLiteral("&gt;"));
txt = txt.replace(QLatin1Char('\"'), QStringLiteral("&quot;"));
txt = txt.replace(QString::fromUtf8("ä"), QStringLiteral("&auml;"));
txt = txt.replace(QString::fromUtf8("Ä"), QStringLiteral("&Auml;"));
txt = txt.replace(QString::fromUtf8("ö"), QStringLiteral("&ouml;"));
txt = txt.replace(QString::fromUtf8("Ö"), QStringLiteral("&Ouml;"));
txt = txt.replace(QString::fromUtf8("ü"), QStringLiteral("&uuml;"));
txt = txt.replace(QString::fromUtf8("Ü"), QStringLiteral("&Uuml;"));
txt = txt.replace(QString::fromUtf8("ß"), QStringLiteral("&szlig;"));
txt = txt.replace(QString::fromUtf8("€"), QStringLiteral("&euro;"));
txt = txt.replace(QString::fromUtf8("é"), QStringLiteral("&eacute;"));
return txt;
}
......
......@@ -395,7 +395,7 @@ void KCMDesignerFields::updatePreview()
"<tr><td align=\"right\"><b>%7</b></td><td>%8</td></tr>"
"</table></qt>")
.arg(i18n("Key:"))
.arg(item->text(0).replace(QLatin1String("X_"), QLatin1String("X-")))
.arg(item->text(0).replace(QLatin1String("X_"), QStringLiteral("X-")))
.arg(i18n("Type:"))
.arg(item->text(1))
.arg(i18n("Classname:"))
......
......@@ -63,8 +63,8 @@ void SummaryEventTester::test_Multiday()
// Test date a multiday event in the future has to correct DaysTo set
QString multiDayWithTimeFuture = QLatin1String("Multiday, with time, in the future");
event = KCalCore::Event::Ptr(new KCalCore::Event());
event->setDtStart(KDateTime(today.addDays(100), QTime::fromString(QLatin1String("12:00"), QLatin1String("hh:mm"))));
event->setDtEnd(KDateTime(today.addDays(106), QTime::fromString(QLatin1String("12:00"), QLatin1String("hh:mm"))));
event->setDtStart(KDateTime(today.addDays(100), QTime::fromString(QLatin1String("12:00"), QStringLiteral("hh:mm"))));
event->setDtEnd(KDateTime(today.addDays(106), QTime::fromString(QLatin1String("12:00"), QStringLiteral("hh:mm"))));
event->setSummary(multiDayWithTimeFuture);
QVERIFY(cal->addEvent(event));
for (int i = 100; i <= 106; ++i) {
......@@ -90,8 +90,8 @@ void SummaryEventTester::test_Multiday()
QVERIFY(cal->addEvent(event));
event = KCalCore::Event::Ptr(new KCalCore::Event());
event->setDtStart(KDateTime(today.addDays(2), QTime::fromString(QLatin1String("12:00"), QLatin1String("hh:mm"))));
event->setDtEnd(KDateTime(today.addDays(5), QTime::fromString(QLatin1String("12:00"), QLatin1String("hh:mm"))));
event->setDtStart(KDateTime(today.addDays(2), QTime::fromString(QLatin1String("12:00"), QStringLiteral("hh:mm"))));
event->setDtEnd(KDateTime(today.addDays(5), QTime::fromString(QLatin1String("12:00"), QStringLiteral("hh:mm"))));
event->setSummary(QLatin1String("Multiday, time specified, in future"));
QVERIFY(cal->addEvent(event));
......@@ -103,8 +103,8 @@ void SummaryEventTester::test_Multiday()
QVERIFY(cal->addEvent(event));
event = KCalCore::Event::Ptr(new KCalCore::Event());
event->setDtStart(KDateTime(today.addDays(-10), QTime::fromString(QLatin1String("12:00"), QLatin1String("hh:mm"))));
event->setDtEnd(KDateTime(today.addDays(-5), QTime::fromString(QLatin1String("10:00"), QLatin1String("hh:mm"))));
event->setDtStart(KDateTime(today.addDays(-10), QTime::fromString(QLatin1String("12:00"), QStringLiteral("hh:mm"))));
event->setDtEnd(KDateTime(today.addDays(-5), QTime::fromString(QLatin1String("10:00"), QStringLiteral("hh:mm"))));
event->setSummary(QLatin1String("Some event in the past"));
QVERIFY(cal->addEvent(event));
......@@ -112,19 +112,19 @@ void SummaryEventTester::test_Multiday()
QCOMPARE(3, eventsToday.size());
foreach (const SummaryEventInfo *ev, eventsToday) {
if (ev->summaryText == multidayWithTimeInProgress + QLatin1String(" (2/7)")) {
QCOMPARE(ev->timeRange, QLatin1String("00:00 - 23:59"));
QCOMPARE(ev->startDate, QLatin1String("Today"));
QCOMPARE(ev->daysToGo, QLatin1String("now"));
QCOMPARE(ev->timeRange, QStringLiteral("00:00 - 23:59"));
QCOMPARE(ev->startDate, QStringLiteral("Today"));
QCOMPARE(ev->daysToGo, QStringLiteral("now"));
QCOMPARE(ev->makeBold, true);
} else if (ev->summaryText == multiDayAllDayStartingToday) {
QVERIFY(ev->timeRange.isEmpty());
QCOMPARE(ev->startDate, QLatin1String("Today"));
QCOMPARE(ev->daysToGo, QLatin1String("all day"));
QCOMPARE(ev->startDate, QStringLiteral("Today"));
QCOMPARE(ev->daysToGo, QStringLiteral("all day"));
QCOMPARE(ev->makeBold, true);
} else if (ev->summaryText == multiDayAllDayStartingYesterday) {
QVERIFY(ev->timeRange.isEmpty());
QCOMPARE(ev->startDate, QLatin1String("Today"));
QCOMPARE(ev->daysToGo, QLatin1String("all day"));
QCOMPARE(ev->startDate, QStringLiteral("Today"));
QCOMPARE(ev->daysToGo, QStringLiteral("all day"));
QCOMPARE(ev->makeBold, true);
} else {
qDebug() << "Unexpected " << ev->summaryText << ev->startDate << ev->timeRange << ev->daysToGo;
......
......@@ -60,7 +60,7 @@ TodoSummaryWidget::TodoSummaryWidget(TodoPlugin *plugin, QWidget *parent)
mainLayout->setSpacing(3);
mainLayout->setMargin(3);
QWidget *header = createHeader(this, QLatin1String("korg-todo"), i18n("Pending To-dos"));
QWidget *header = createHeader(this, QStringLiteral("korg-todo"), i18n("Pending To-dos"));
mainLayout->addWidget(header);
mLayout = new QGridLayout();
......
......@@ -139,7 +139,7 @@ SDSummaryWidget::SDSummaryWidget(KontactInterface::Plugin *plugin, QWidget *pare
//TODO: we want our own special dates icon
QWidget *header = createHeader(
this, QLatin1String("favorites"), i18n("Upcoming Special Dates"));
this, QStringLiteral("favorites"), i18n("Upcoming Special Dates"));
mainLayout->addWidget(header);
mLayout = new QGridLayout();
......
......@@ -60,9 +60,9 @@ const KAboutData SpecialdatesPlugin::aboutData()
i18n("Copyright © 2003 Tobias Koenig\n"
"Copyright © 2004–2010 Allen Winter"));
aboutData.addAuthor(i18n("Allen Winter"),
i18n("Current Maintainer"), QLatin1String("winter@kde.org"));
i18n("Current Maintainer"), QStringLiteral("winter@kde.org"));
aboutData.addAuthor(i18n("Tobias Koenig"),
QString(), QLatin1String("tokoe@kde.org"));
QString(), QStringLiteral("tokoe@kde.org"));
aboutData.setProductName("kontact/specialdates");
return aboutData;
}
......
......@@ -244,7 +244,7 @@ QUrl POTDElement::thumbnailUrl(const QUrl &fullSizeUrl, const int width) const
thumbUrl.replace(QRegExp(QLatin1String("//upload.wikimedia.org/wikipedia/commons/(.*)/([^/]*)")),
QLatin1String("//upload.wikimedia.org/wikipedia/commons/thumb/\\1/\\2"));
}
thumbUrl.replace(QRegExp(QLatin1String("^file:////")), QLatin1String("http://"));
thumbUrl.replace(QRegExp(QLatin1String("^file:////")), QStringLiteral("http://"));
return QUrl(thumbUrl);
}
......
......@@ -430,7 +430,7 @@ public:
CalendarSupport::KCalPrefs::instance()->defaultAudioFileRemindersItem())->checkBox();
if (CalendarSupport::KCalPrefs::instance()->audioFilePathItem()->value().isEmpty()) {
const QString defAudioFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QLatin1String("sound/") + QLatin1String("KDE-Sys-Warning.ogg"));
const QString defAudioFile = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("sound/") + QLatin1String("KDE-Sys-Warning.ogg"));
CalendarSupport::KCalPrefs::instance()->audioFilePathItem()->setValue(defAudioFile);
}
QString filter =
......
......@@ -65,9 +65,9 @@ void SearchCollectionHelper::onSearchCollectionsFetched(KJob *job)
} else {
Akonadi::CollectionFetchJob *fetchJob = static_cast<Akonadi::CollectionFetchJob *>(job);
Q_FOREACH (const Akonadi::Collection &col, fetchJob->collections()) {
if (col.name() == QStringLiteral("OpenInvitations")) {
if (col.name() == QLatin1String("OpenInvitations")) {
mOpenInvitationCollection = col;
} else if (col.name() == QStringLiteral("DeclinedInvitations")) {
} else if (col.name() == QLatin1String("DeclinedInvitations")) {
mDeclineCollection = col;
}
}
......@@ -133,10 +133,10 @@ void SearchCollectionHelper::createSearchJobFinished(KJob *job)
}
qCDebug(KORGANIZER_LOG) << "Created search folder successfully " << searchCollection.name();
if (searchCollection.name() == QStringLiteral("OpenInvitations")) {
if (searchCollection.name() == QLatin1String("OpenInvitations")) {
mOpenInvitationCollection = searchCollection;
updateOpenInvitation();
} else if (searchCollection.name() == QStringLiteral("DeclinedInvitations")) {
} else if (searchCollection.name() == QLatin1String("DeclinedInvitations")) {
mDeclineCollection = searchCollection;
updateDeclinedInvitation();
}
......
......@@ -430,7 +430,7 @@ void ModelTest::data()
Q_ASSERT(model->index(0, 0).isValid());
// shouldn't be able to set data on an invalid index
Q_ASSERT(model->setData(QModelIndex(), QLatin1String("foo"), Qt::DisplayRole) == false);
Q_ASSERT(model->setData(QModelIndex(), QStringLiteral("foo"), Qt::DisplayRole) == false);
// General Purpose roles that should return a QString
QVariant variant = model->data(model->index(0, 0), Qt::ToolTipRole);
......
......@@ -695,14 +695,14 @@ public:
private:
void checkSourceIndex(const QModelIndex &sourceIndex)
{
if (sourceIndex.data().toString() == QStringLiteral("personfolder")) {
if (sourceIndex.data().toString() == QLatin1String("personfolder")) {
model.addNode(ReparentingModel::Node::Ptr(new DummyNode(model, QStringLiteral("personnode"))));
}
}
void checkSourceIndexRemoval(const QModelIndex &sourceIndex)
{
if (sourceIndex.data().toString() == QStringLiteral("personfolder")) {
if (sourceIndex.data().toString() == QLatin1String("personfolder")) {
model.removeNode(DummyNode(model, QStringLiteral("personnode")));
}
}
......
......@@ -295,7 +295,7 @@ void Controller::setSearchString(const QString &searchString)
//TODO: Delay and abort when results are found
mSearchModel->clear();
Q_EMIT searchIsActive(!searchString.isEmpty());
const bool showAllPersonalFolders = (searchString == QStringLiteral("*"));
const bool showAllPersonalFolders = (searchString == QLatin1String("*"));
if (searchString.size() < 2 && !showAllPersonalFolders) {
Q_EMIT searching(false);
return;
......
......@@ -371,7 +371,7 @@ void ReparentingModel::setSourceModel(QAbstractItemModel *sourceModel)
endResetModel();
}
void ReparentingModel::onSourceRowsAboutToBeInserted(QModelIndex parent, int start, int end)
void ReparentingModel::onSourceRowsAboutToBeInserted(const QModelIndex &parent, int start, int end)
{
Q_UNUSED(parent);
Q_UNUSED(start);
......@@ -452,7 +452,7 @@ void ReparentingModel::removeDuplicates(const QModelIndex &sourceIndex)
}
}
void ReparentingModel::onSourceRowsInserted(QModelIndex parent, int start, int end)
void ReparentingModel::onSourceRowsInserted(const QModelIndex &parent, int start, int end)
{
// qCDebug(KORGANIZER_LOG) << objectName() << parent << start << end;
for (int row = start; row <= end; row++) {
......@@ -498,7 +498,7 @@ void ReparentingModel::onSourceRowsInserted(QModelIndex parent, int start, int e
}
}
void ReparentingModel::onSourceRowsAboutToBeRemoved(QModelIndex parent, int start, int end)
void ReparentingModel::onSourceRowsAboutToBeRemoved(const QModelIndex &parent, int start, int end)
{
// qCDebug(KORGANIZER_LOG) << objectName() << parent << start << end;
//we remove in reverse order as otherwise the indexes in parentNode->children wouldn't be correct
......@@ -524,18 +524,18 @@ void ReparentingModel::onSourceRowsAboutToBeRemoved(QModelIndex parent, int star
}
}
void ReparentingModel::onSourceRowsRemoved(QModelIndex /* parent */, int /* start */, int /* end */)
void ReparentingModel::onSourceRowsRemoved(const QModelIndex & /* parent */, int /* start */, int /* end */)
{
}
void ReparentingModel::onSourceRowsAboutToBeMoved(QModelIndex /* sourceParent */, int /* sourceStart */, int /* sourceEnd */, QModelIndex /* destParent */, int /* dest */)
void ReparentingModel::onSourceRowsAboutToBeMoved(const QModelIndex & /* sourceParent */, int /* sourceStart */, int /* sourceEnd */, const QModelIndex & /* destParent */, int /* dest */)
{
qCWarning(KORGANIZER_LOG) << "not implemented";
//TODO
beginResetModel();
}
void ReparentingModel::onSourceRowsMoved(QModelIndex /* sourceParent */, int /* sourceStart */, int /* sourceEnd */, QModelIndex /* destParent */, int /* dest */)
void ReparentingModel::onSourceRowsMoved(const QModelIndex & /* sourceParent */, int /* sourceStart */, int /* sourceEnd */, const QModelIndex & /* destParent */, int /* dest */)
{
qCWarning(KORGANIZER_LOG) << "not implemented";
//TODO
......@@ -582,7 +582,7 @@ void ReparentingModel::onSourceLayoutChanged()
// layoutChanged();
}
void ReparentingModel::onSourceDataChanged(QModelIndex begin, QModelIndex end)
void ReparentingModel::onSourceDataChanged(const QModelIndex &begin, const QModelIndex &end)
{
// qCDebug(KORGANIZER_LOG) << objectName() << begin << end;
for (int row = begin.row(); row <= end.row(); row++) {
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment