- ui.setupUi(this);
-
- ui.addNick->setIcon(SmallIcon("list-add"));
- ui.deleteNick->setIcon(SmallIcon("edit-delete"));
- ui.renameNick->setIcon(SmallIcon("edit-rename"));
- ui.nickUp->setIcon(SmallIcon("go-up"));
- ui.nickDown->setIcon(SmallIcon("go-down"));
-
- // We need to know whenever the state of input widgets changes...
- connect(ui.realName, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
- connect(ui.nicknameList, SIGNAL(itemChanged(QListWidgetItem *)), this, SIGNAL(widgetHasChanged()));
- connect(ui.awayNick, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
- connect(ui.awayNickEnabled, SIGNAL(clicked(bool)), this, SIGNAL(widgetHasChanged()));
- connect(ui.awayReason, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
- connect(ui.awayReasonEnabled, SIGNAL(clicked(bool)), this, SIGNAL(widgetHasChanged()));
- connect(ui.autoAwayEnabled, SIGNAL(clicked(bool)), this, SIGNAL(widgetHasChanged()));
- connect(ui.autoAwayTime, SIGNAL(valueChanged(int)), this, SIGNAL(widgetHasChanged()));
- connect(ui.autoAwayReason, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
- connect(ui.autoAwayReasonEnabled, SIGNAL(clicked(bool)), this, SIGNAL(widgetHasChanged()));
- connect(ui.detachAwayEnabled, SIGNAL(clicked(bool)), this, SIGNAL(widgetHasChanged()));
- connect(ui.detachAwayReason, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
- connect(ui.detachAwayReasonEnabled, SIGNAL(clicked(bool)), this, SIGNAL(widgetHasChanged()));
- connect(ui.ident, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
- connect(ui.kickReason, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
- connect(ui.partReason, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
- connect(ui.quitReason, SIGNAL(textEdited(const QString &)), this, SIGNAL(widgetHasChanged()));
-
- setWidgetStates();
- connect(ui.nicknameList, SIGNAL(itemSelectionChanged()), this, SLOT(setWidgetStates()));
-
- connect(ui.continueUnsecured, SIGNAL(clicked()), this, SIGNAL(requestEditSsl()));
-
- // we would need this if we enabled drag and drop in the nicklist...
- //connect(ui.nicknameList, SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SLOT(setWidgetStates()));
- //connect(ui.nicknameList->model(), SIGNAL(rowsInserted(const QModelIndex &, int, int)), this, SLOT(nicklistHasChanged()));
-
-#ifdef HAVE_SSL
- ui.sslKeyGroupBox->setAcceptDrops(true);
- ui.sslKeyGroupBox->installEventFilter(this);
- ui.sslCertGroupBox->setAcceptDrops(true);
- ui.sslCertGroupBox->installEventFilter(this);
-#endif
+ ui.setupUi(this);
+
+ ui.addNick->setIcon(icon::get("list-add"));
+ ui.deleteNick->setIcon(icon::get("edit-delete"));
+ ui.renameNick->setIcon(icon::get("edit-rename"));
+ ui.nickUp->setIcon(icon::get("go-up"));
+ ui.nickDown->setIcon(icon::get("go-down"));
+
+ // We need to know whenever the state of input widgets changes...
+ connect(ui.realName, &QLineEdit::textEdited, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.nicknameList, &QListWidget::itemChanged, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.awayNick, &QLineEdit::textEdited, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.awayReason, &QLineEdit::textEdited, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.autoAwayEnabled, &QGroupBox::clicked, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.autoAwayTime, selectOverload<int>(&QSpinBox::valueChanged), this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.autoAwayReason, &QLineEdit::textEdited, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.autoAwayReasonEnabled, &QAbstractButton::clicked, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.detachAwayEnabled, &QGroupBox::clicked, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.detachAwayReason, &QLineEdit::textEdited, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.ident, &QLineEdit::textEdited, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.kickReason, &QLineEdit::textEdited, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.partReason, &QLineEdit::textEdited, this, &IdentityEditWidget::widgetHasChanged);
+ connect(ui.quitReason, &QLineEdit::textEdited, this, &IdentityEditWidget::widgetHasChanged);
+
+ setWidgetStates();
+ connect(ui.nicknameList, &QListWidget::itemSelectionChanged, this, &IdentityEditWidget::setWidgetStates);
+
+ connect(ui.continueUnsecured, &QAbstractButton::clicked, this, &IdentityEditWidget::requestEditSsl);
+
+ // we would need this if we enabled drag and drop in the nicklist...
+ // connect(ui.nicknameList, &QListWidget::rowsInserted, this, &IdentityEditWidget::setWidgetStates);
+ // connect(ui.nicknameList->model(), &NickListModel::rowsInserted, this, IdentityEditWidget::nicklistHasChanged);
+
+ // disabling unused stuff
+ ui.autoAwayEnabled->hide();
+ ui.awayNick->hide();
+ ui.awayNickLabel->hide();
+
+ ui.detachAwayEnabled->setVisible(!Client::internalCore());
+
+ ui.sslKeyGroupBox->setAcceptDrops(true);
+ ui.sslKeyGroupBox->installEventFilter(this);
+ ui.sslCertGroupBox->setAcceptDrops(true);
+ ui.sslCertGroupBox->installEventFilter(this);
+
+ if (Client::isCoreFeatureEnabled(Quassel::Feature::AwayFormatTimestamp)) {
+ // Core allows formatting %%timestamp%% messages in away strings. Update tooltips.
+ QString strFormatTooltip;
+ QTextStream formatTooltip(&strFormatTooltip, QIODevice::WriteOnly);
+ formatTooltip << "<qt><style>.bold { font-weight: bold; } "
+ ".italic { font-style: italic; }</style>";
+
+ // Function to add a row to the tooltip table
+ auto addRow = [&](const QString& key, const QString& value, bool condition) {
+ if (condition) {
+ formatTooltip << "<tr><td class='bold' align='right'>" << key << "</td><td>" << value << "</td></tr>";
+ }
+ };
+
+ // Original tooltip goes here
+ formatTooltip << "<p>%1</p>";
+ // New timestamp formatting guide here
+ formatTooltip << "<p>"
+ << tr("You can add date/time to this message "
+ "using the syntax: "
+ "<br/>%%<span class='italic'><format></span>%%, where "
+ "<span class='italic'><format></span> is:")
+ << "</p>";
+ formatTooltip << "<table cellspacing='5' cellpadding='0'>";
+ addRow("hh", tr("the hour"), true);
+ addRow("mm", tr("the minutes"), true);
+ addRow("ss", tr("seconds"), true);
+ addRow("AP", tr("AM/PM"), true);
+ addRow("dd", tr("day"), true);
+ addRow("MM", tr("month"), true);
+ addRow("t", tr("current timezone"), true);
+ formatTooltip << "</table>";
+ formatTooltip << "<p>" << tr("Example: Away since %%hh:mm%% on %%dd.MM%%.") << "</p>";
+ formatTooltip << "<p>"
+ << tr("%%%% without anything inside represents %%. Other format "
+ "codes are available.")
+ << "</p>";
+ formatTooltip << "</qt>";
+
+ // Split up the message to allow re-using translations:
+ // [Original tool-tip] [Timestamp format message]
+ ui.awayReason->setToolTip(strFormatTooltip.arg(ui.awayReason->toolTip()));
+ ui.detachAwayEnabled->setToolTip(strFormatTooltip.arg(ui.detachAwayEnabled->toolTip()));
+ } // else: Do nothing, leave the original translated string