[kde-doc-english] [trojita] src/Gui: GUI: settings: refactor the IMAP page to include an encryption dropdown, reworded text
Jan Kundrát
jkt at flaska.net
Sun Feb 2 15:32:53 UTC 2014
Git commit d29430e0193c0beb3efa7588b79921a654120f32 by Jan Kundrát, on behalf of Danny Rimmer.
Committed on 07/01/2014 at 05:21.
Pushed by jkt into branch 'master'.
GUI: settings: refactor the IMAP page to include an encryption dropdown, reworded text
REVIEW: 114878
M +71 -65 src/Gui/SettingsDialog.cpp
M +3 -1 src/Gui/SettingsDialog.h
M +79 -98 src/Gui/SettingsImapPage.ui
http://commits.kde.org/trojita/d29430e0193c0beb3efa7588b79921a654120f32
diff --git a/src/Gui/SettingsDialog.cpp b/src/Gui/SettingsDialog.cpp
index 29da8ef..3971f17 100644
--- a/src/Gui/SettingsDialog.cpp
+++ b/src/Gui/SettingsDialog.cpp
@@ -308,33 +308,46 @@ void EditIdentity::onReject()
ImapPage::ImapPage(QWidget *parent, QSettings &s): QScrollArea(parent), Ui_ImapPage()
{
Ui_ImapPage::setupUi(this);
- method->insertItem(0, tr("TCP"), QVariant(TCP));
- method->insertItem(1, tr("SSL"), QVariant(SSL));
- method->insertItem(2, tr("Local Process"), QVariant(PROCESS));
+ method->insertItem(NETWORK, tr("Network Connection"));
+ method->insertItem(PROCESS, tr("Local Process"));
+
+ encryption->insertItem(NONE, tr("No encryption"));
+ encryption->insertItem(STARTTLS, tr("Use encryption (STARTTLS)"));
+ encryption->insertItem(SSL, tr("Force encryption (TLS)"));
using Common::SettingsNames;
int defaultImapPort = Common::PORT_IMAPS;
+
if (s.value(SettingsNames::imapMethodKey).toString() == SettingsNames::methodTCP) {
- method->setCurrentIndex(0);
+ method->setCurrentIndex(NETWORK);
+
+ if (s.value(SettingsNames::imapStartTlsKey,true).toBool())
+ encryption->setCurrentIndex(STARTTLS);
+ else
+ encryption->setCurrentIndex(NONE);
+
defaultImapPort = Common::PORT_IMAP;
} else if (s.value(SettingsNames::imapMethodKey).toString() == SettingsNames::methodSSL) {
- method->setCurrentIndex(1);
+ method->setCurrentIndex(NETWORK);
+ encryption->setCurrentIndex(SSL);
} else if (s.value(SettingsNames::imapMethodKey).toString() == SettingsNames::methodProcess) {
- method->setCurrentIndex(2);
+ method->setCurrentIndex(PROCESS);
} else {
// Default settings -- let's assume SSL and hope that users who just press Cancel will configure when they see
// the network error...
- method->setCurrentIndex(1);
+ method->setCurrentIndex(NETWORK);
+ encryption->setCurrentIndex(SSL);
}
imapHost->setText(s.value(SettingsNames::imapHostKey).toString());
imapPort->setText(s.value(SettingsNames::imapPortKey, QString::number(defaultImapPort)).toString());
imapPort->setValidator(new QIntValidator(1, 65535, this));
connect(imapPort, SIGNAL(textChanged(QString)), this, SLOT(maybeShowPortWarning()));
+ connect(encryption, SIGNAL(currentIndexChanged(int)), this, SLOT(maybeShowPortWarning()));
connect(method, SIGNAL(currentIndexChanged(int)), this, SLOT(maybeShowPortWarning()));
+ connect(encryption, SIGNAL(currentIndexChanged(int)), this, SLOT(changePort()));
portWarning->setStyleSheet(SettingsDialog::warningStyleSheet);
passwordWarning->setStyleSheet(SettingsDialog::warningStyleSheet);
connect(imapPass, SIGNAL(textChanged(QString)), this, SLOT(maybeShowPasswordWarning()));
- startTls->setChecked(s.value(SettingsNames::imapStartTlsKey, true).toBool());
imapUser->setText(s.value(SettingsNames::imapUserKey).toString());
imapPass->setText(s.value(SettingsNames::imapPassKey).toString());
processPath->setText(s.value(SettingsNames::imapProcessKey).toString());
@@ -343,7 +356,6 @@ ImapPage::ImapPage(QWidget *parent, QSettings &s): QScrollArea(parent), Ui_ImapP
imapCapabilitiesBlacklist->setText(s.value(SettingsNames::imapBlacklistedCapabilities).toStringList().join(QLatin1String(" ")));
m_imapPort = s.value(SettingsNames::imapPortKey, QString::number(defaultImapPort)).value<quint16>();
- m_imapStartTls = s.value(SettingsNames::imapStartTlsKey, true).toBool();
connect(method, SIGNAL(currentIndexChanged(int)), this, SLOT(updateWidgets()));
updateWidgets();
@@ -358,51 +370,47 @@ void ImapPage::resizeEvent(QResizeEvent *event)
scrollAreaWidgetContents->adjustSize();
}
+void ImapPage::changePort()
+{
+ imapPort->setText(QString::number(encryption->currentIndex() == SSL ? Common::PORT_IMAPS : Common::PORT_IMAP));
+}
+
void ImapPage::updateWidgets()
{
QFormLayout *lay = formLayout;
Q_ASSERT(lay);
- switch (method->itemData(method->currentIndex()).toInt()) {
- case TCP:
- imapHost->setEnabled(true);
- lay->labelForField(imapHost)->setEnabled(true);
- imapPort->setEnabled(true);
+ switch (method->currentIndex()) {
+ case NETWORK:
+ imapHost->setVisible(true);
+ imapPort->setVisible(true);
+ encryption->setVisible(true);
+ lay->labelForField(imapHost)->setVisible(true);
+ lay->labelForField(imapPort)->setVisible(true);
+ lay->labelForField(encryption)->setVisible(true);
+ processPath->setVisible(false);
+ lay->labelForField(processPath)->setVisible(false);
+ break;
+ default:
+ imapHost->setVisible(false);
+ imapPort->setVisible(false);
+ encryption->setVisible(false);
+ lay->labelForField(imapHost)->setVisible(false);
+ lay->labelForField(imapPort)->setVisible(false);
+ lay->labelForField(encryption)->setVisible(false);
+ processPath->setVisible(true);
+ lay->labelForField(processPath)->setVisible(true);
+ }
+
+ switch (encryption->currentIndex()) {
+ case NONE:
+ case STARTTLS:
if (imapPort->text().isEmpty() || imapPort->text() == QString::number(Common::PORT_IMAPS))
imapPort->setText(QString::number(Common::PORT_IMAP));
- else
- imapPort->setText(QString::number(m_imapPort));
- lay->labelForField(imapPort)->setEnabled(true);
- startTls->setEnabled(true);
- startTls->setChecked(m_imapStartTls);
- lay->labelForField(startTls)->setEnabled(true);
- processPath->setEnabled(false);
- lay->labelForField(processPath)->setEnabled(false);
break;
- case SSL:
- imapHost->setEnabled(true);
- lay->labelForField(imapHost)->setEnabled(true);
- imapPort->setEnabled(true);
+ default:
if (imapPort->text().isEmpty() || imapPort->text() == QString::number(Common::PORT_IMAP))
imapPort->setText(QString::number(Common::PORT_IMAPS));
- else
- imapPort->setText(QString::number(m_imapPort));
- lay->labelForField(imapPort)->setEnabled(true);
- startTls->setEnabled(false);
- startTls->setChecked(true);
- lay->labelForField(startTls)->setEnabled(false);
- processPath->setEnabled(false);
- lay->labelForField(processPath)->setEnabled(false);
- break;
- default:
- imapHost->setEnabled(false);
- lay->labelForField(imapHost)->setEnabled(false);
- imapPort->setEnabled(false);
- lay->labelForField(imapPort)->setEnabled(false);
- startTls->setEnabled(false);
- lay->labelForField(startTls)->setEnabled(false);
- processPath->setEnabled(true);
- lay->labelForField(processPath)->setEnabled(true);
}
}
@@ -413,25 +421,21 @@ void ImapPage::save(QSettings &s)
s.remove(Common::SettingsNames::imapSslPemPubKey);
}
switch (method->currentIndex()) {
- case TCP:
+ case NETWORK:
if (imapHost->text().isEmpty()) {
s.remove(SettingsNames::imapMethodKey);
- } else {
+ } else if (encryption->currentIndex() == NONE){
s.setValue(SettingsNames::imapMethodKey, SettingsNames::methodTCP);
- }
- s.setValue(SettingsNames::imapHostKey, imapHost->text());
- s.setValue(SettingsNames::imapPortKey, imapPort->text());
- s.setValue(SettingsNames::imapStartTlsKey, startTls->isChecked());
- break;
- case SSL:
- if (imapHost->text().isEmpty()) {
- s.remove(SettingsNames::imapMethodKey);
+ s.setValue(SettingsNames::imapStartTlsKey, false);
+ } else if (encryption->currentIndex() == STARTTLS){
+ s.setValue(SettingsNames::imapMethodKey, SettingsNames::methodTCP);
+ s.setValue(SettingsNames::imapStartTlsKey, true);
} else {
s.setValue(SettingsNames::imapMethodKey, SettingsNames::methodSSL);
+ s.setValue(SettingsNames::imapStartTlsKey, true);
}
s.setValue(SettingsNames::imapHostKey, imapHost->text());
s.setValue(SettingsNames::imapPortKey, imapPort->text());
- s.setValue(SettingsNames::imapStartTlsKey, startTls->isChecked());
break;
default:
if (processPath->text().isEmpty()) {
@@ -456,8 +460,7 @@ QWidget *ImapPage::asWidget()
bool ImapPage::checkValidity() const
{
switch (method->currentIndex()) {
- case TCP:
- case SSL:
+ case NETWORK:
// We don't require the username, and that's on purpose. Some servers *could* possibly support PREAUTH :)
if (checkProblemWithEmptyTextField(imapHost, tr("The IMAP server hostname is missing here")))
return false;
@@ -480,16 +483,19 @@ void ImapPage::maybeShowPasswordWarning()
void ImapPage::maybeShowPortWarning()
{
- switch (method->currentIndex()) {
- case TCP:
- portWarning->setVisible(imapPort->text() != QLatin1String("143"));
- break;
- case SSL:
- portWarning->setVisible(imapPort->text() != QLatin1String("993"));
- break;
- default:
+ if (method->currentIndex() == PROCESS) {
portWarning->setVisible(false);
+ return;
}
+
+ if (encryption->currentIndex() == SSL) {
+ portWarning->setVisible(imapPort->text() != QString::number(Common::PORT_IMAPS));
+ portWarning->setText(tr("This port is nonstandard. The default port is 993."));
+ } else {
+ portWarning->setVisible(imapPort->text() != QString::number(Common::PORT_IMAP));
+ portWarning->setText(tr("This port is nonstandard. The default port is 143."));
+ }
+
}
diff --git a/src/Gui/SettingsDialog.h b/src/Gui/SettingsDialog.h
index e398969..f1ed64f 100644
--- a/src/Gui/SettingsDialog.h
+++ b/src/Gui/SettingsDialog.h
@@ -142,7 +142,8 @@ protected:
virtual void resizeEvent(QResizeEvent *event);
private:
- enum { TCP, SSL, PROCESS };
+ enum { NETWORK, PROCESS };
+ enum Encryption { NONE, STARTTLS, SSL };
quint16 m_imapPort;
bool m_imapStartTls;
@@ -150,6 +151,7 @@ private slots:
void updateWidgets();
void maybeShowPasswordWarning();
void maybeShowPortWarning();
+ void changePort();
private:
ImapPage(const ImapPage &); // don't implement
diff --git a/src/Gui/SettingsImapPage.ui b/src/Gui/SettingsImapPage.ui
index dcd0bf1..f9352df 100644
--- a/src/Gui/SettingsImapPage.ui
+++ b/src/Gui/SettingsImapPage.ui
@@ -42,76 +42,26 @@ p, li { white-space: pre-wrap; }
</widget>
</item>
<item row="1" column="0">
- <widget class="QLabel" name="imapHostLabel">
- <property name="text">
- <string>Ser&ver</string>
- </property>
- <property name="buddy">
- <cstring>imapHost</cstring>
- </property>
- </widget>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="imapPortLabel">
- <property name="text">
- <string>&Port</string>
- </property>
- <property name="buddy">
- <cstring>imapPort</cstring>
- </property>
- </widget>
- </item>
- <item row="4" column="0">
- <widget class="QLabel" name="startTlsLabel">
- <property name="text">
- <string>Perform S&TARTTLS</string>
- </property>
- <property name="buddy">
- <cstring>startTls</cstring>
- </property>
- </widget>
- </item>
- <item row="5" column="0">
- <widget class="QLabel" name="imapUserLabel">
+ <widget class="QLabel" name="label">
<property name="text">
- <string>&Username</string>
- </property>
- <property name="buddy">
- <cstring>imapUser</cstring>
+ <string>Encryption</string>
</property>
</widget>
</item>
- <item row="6" column="0">
- <widget class="QLabel" name="imapPassLabel">
- <property name="text">
- <string>Pass&word</string>
- </property>
- <property name="buddy">
- <cstring>imapPass</cstring>
- </property>
- </widget>
- </item>
- <item row="8" column="0">
- <widget class="QLabel" name="processPathLabel">
- <property name="text">
- <string>Path to Server &Binary</string>
- </property>
- <property name="buddy">
- <cstring>processPath</cstring>
- </property>
- </widget>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="encryption"/>
</item>
- <item row="9" column="0">
- <widget class="QLabel" name="startOfflineLabel">
+ <item row="2" column="0">
+ <widget class="QLabel" name="imapHostLabel">
<property name="text">
- <string>Start in O&ffline Mode</string>
+ <string>Ser&ver</string>
</property>
<property name="buddy">
- <cstring>startOffline</cstring>
+ <cstring>imapHost</cstring>
</property>
</widget>
</item>
- <item row="1" column="1">
+ <item row="2" column="1">
<widget class="LineEdit" name="imapHost">
<property name="toolTip">
<string>Hostname of the IMAP server</string>
@@ -124,7 +74,17 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="3" column="0">
+ <widget class="QLabel" name="imapPortLabel">
+ <property name="text">
+ <string>&Port</string>
+ </property>
+ <property name="buddy">
+ <cstring>imapPort</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
<widget class="LineEdit" name="imapPort">
<property name="toolTip">
<string>Port number of the IMAP server</string>
@@ -134,22 +94,23 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
- <item row="4" column="1">
- <widget class="QCheckBox" name="startTls">
- <property name="toolTip">
- <string>Transparently upgrade the plaintext connection to an encrypted one</string>
+ <item row="4" column="0" colspan="2">
+ <widget class="QLabel" name="portWarning">
+ <property name="text">
+ <string>This port number looks suspicious. The usual numbers for IMAP are 143 (with the TCP connection method or with STARTTLS) and 993 (when using SSL).</string>
</property>
- <property name="whatsThis">
- <string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
-<html><head><meta name="qrichtext" content="1" /><style type="text/css">
-p, li { white-space: pre-wrap; }
-</style></head><body style=" font-family:'DejaVu Sans'; font-size:8pt; font-weight:400; font-style:normal;">
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Choose this option to require that Trojitá performs a STARTTLS operation on the connection to the remote IMAP server. This means that it will make sure that while the connection starts in an unencrypted mode, it will get "upgraded" to encryption on the fly.</p>
-<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>
-<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">This option is enabled only for plain <span style=" font-style:italic;">TCP</span> method of connecting to the IMAP server, as the <span style=" font-style:italic;">Local process</span> doesn't support it and the <span style=" font-style:italic;">SSL</span> one is already encrypted.</p></body></html></string>
+ <property name="wordWrap">
+ <bool>true</bool>
</property>
+ </widget>
+ </item>
+ <item row="5" column="0">
+ <widget class="QLabel" name="imapUserLabel">
<property name="text">
- <string/>
+ <string>&Username</string>
+ </property>
+ <property name="buddy">
+ <cstring>imapUser</cstring>
</property>
</widget>
</item>
@@ -166,6 +127,16 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
+ <item row="6" column="0">
+ <widget class="QLabel" name="imapPassLabel">
+ <property name="text">
+ <string>Pass&word</string>
+ </property>
+ <property name="buddy">
+ <cstring>imapPass</cstring>
+ </property>
+ </widget>
+ </item>
<item row="6" column="1">
<widget class="LineEdit" name="imapPass">
<property name="toolTip">
@@ -190,6 +161,26 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
+ <item row="7" column="0" colspan="2">
+ <widget class="QLabel" name="passwordWarning">
+ <property name="text">
+ <string>The password will be stored in plaintext. Leave it blank for Trojitá to prompt when needed.</string>
+ </property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item row="8" column="0">
+ <widget class="QLabel" name="processPathLabel">
+ <property name="text">
+ <string>Path to Server &Binary</string>
+ </property>
+ <property name="buddy">
+ <cstring>processPath</cstring>
+ </property>
+ </widget>
+ </item>
<item row="8" column="1">
<widget class="LineEdit" name="processPath">
<property name="whatsThis">
@@ -206,6 +197,16 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
+ <item row="9" column="0">
+ <widget class="QLabel" name="startOfflineLabel">
+ <property name="text">
+ <string>Start in O&ffline Mode</string>
+ </property>
+ <property name="buddy">
+ <cstring>startOffline</cstring>
+ </property>
+ </widget>
+ </item>
<item row="9" column="1">
<widget class="QCheckBox" name="startOffline">
<property name="toolTip">
@@ -219,13 +220,13 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
- <item row="7" column="0" colspan="2">
- <widget class="QLabel" name="passwordWarning">
+ <item row="10" column="0">
+ <widget class="QLabel" name="imapEnableIdLabel">
<property name="text">
- <string>This password will be saved on disk in clear text. If you do not enter password here, Trojitá will prompt for one when needed.</string>
+ <string>Reveal I'm using Trojitá</string>
</property>
- <property name="wordWrap">
- <bool>true</bool>
+ <property name="buddy">
+ <cstring>imapEnableId</cstring>
</property>
</widget>
</item>
@@ -245,16 +246,6 @@ p, li { white-space: pre-wrap; }
</property>
</widget>
</item>
- <item row="10" column="0">
- <widget class="QLabel" name="imapEnableIdLabel">
- <property name="text">
- <string>Ask for IMAP &ID</string>
- </property>
- <property name="buddy">
- <cstring>imapEnableId</cstring>
- </property>
- </widget>
- </item>
<item row="11" column="0">
<widget class="QLabel" name="imapCapabilitiesBlacklistLabel">
<property name="text">
@@ -268,16 +259,6 @@ p, li { white-space: pre-wrap; }
<item row="11" column="1">
<widget class="LineEdit" name="imapCapabilitiesBlacklist"/>
</item>
- <item row="3" column="0" colspan="2">
- <widget class="QLabel" name="portWarning">
- <property name="text">
- <string>This port number looks suspicious. The usual numbers for IMAP are 143 (with the TCP connection method or with STARTTLS) and 993 (when using SSL).</string>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- </widget>
- </item>
</layout>
</widget>
</widget>
More information about the kde-doc-english
mailing list