Today in IRC, someone suggested that it should be easier for gTalk users
to set up their account in Kopete.

Enclosed is a patch for this. This method can be extended beyond just
gmail.com addresses though.

Here is how it works:
QMap <QString, JabberWellKnownServer> is a mapping of some well known
addresses (ex"@gmail.com") to well known setting (enable SSL, server,
etc).

It can be populated in the constructor of EditAccountWidget:
wellKnownServers.insert("gmail.com", JabberWellKnownServer(true, true,
true, "talk.google.com", 5223));

Now, when the jabber ID changes, we query this object for the
configuration, and, if it fails, we use the default values (this
shouldn't affect kopete's behaviour in any way to the user).
JabberWellKnownServer values = wellKnownServers.value(newServer,
JabberWellKnownServer(newServer, cbUseSSL->isChecked()));

Please tell me if I can commit this
-- 
Tejas Dinkar
http://gja.in
diff --git a/kopete/protocols/jabber/ui/jabbereditaccountwidget.cpp b/kopete/protocols/jabber/ui/jabbereditaccountwidget.cpp
index 31e69b5..87fd0dd 100644
--- a/kopete/protocols/jabber/ui/jabbereditaccountwidget.cpp
+++ b/kopete/protocols/jabber/ui/jabbereditaccountwidget.cpp
@@ -24,6 +24,7 @@
 #include <qspinbox.h>
 #include <q3combobox.h>
 #include <qlabel.h>
+#include <QMap>
 
 #include <kconfig.h>
 #include <kmessagebox.h>
@@ -52,6 +53,33 @@
 #include "alsaio.h"
 #endif
 
+struct JabberWellKnownServer {
+	bool sslToggled;
+	bool allowPlainTextPassword;
+	bool override;
+	QString server;
+	int port;
+
+	JabberWellKnownServer(bool asslToggled, bool aallowPlainTextPassword, bool aoverride, QString aserver, int aport)
+	{
+		sslToggled = asslToggled;
+		allowPlainTextPassword = aallowPlainTextPassword;
+		override = aoverride;
+		server = aserver;
+		port = aport;
+	}
+
+	JabberWellKnownServer(const QString &s, bool asslToggled = false)
+	{
+		JabberWellKnownServer(asslToggled, true, false, s, 5222);
+	}
+};
+
+// Use wellKnownServers to query a username for a well known server
+// ex, @gmail.com
+// Populate this in the constructor please
+QMap <QString, JabberWellKnownServer> wellKnownServers;
+
 JabberEditAccountWidget::JabberEditAccountWidget (JabberProtocol * proto, JabberAccount * ident, QWidget * parent)
 						: QWidget(parent), DlgJabberEditAccountWidget(), KopeteEditAccountWidget (ident)
 {
@@ -82,6 +110,9 @@ JabberEditAccountWidget::JabberEditAccountWidget (JabberProtocol * proto, Jabber
 	}
 #endif
 
+	// Add all the Well Known Servers
+	wellKnownServers.insert("gmail.com", JabberWellKnownServer(true, true, true, "talk.google.com", 5223));
+
 	if (account())
 	{
 		// we are working with an existing account
@@ -315,13 +346,16 @@ bool JabberEditAccountWidget::validateData ()
 void JabberEditAccountWidget::updateServerField ()
 {
 
+	QString newServer = mID->text().section("@", 1);
+	JabberWellKnownServer values = wellKnownServers.value(newServer, JabberWellKnownServer(newServer, cbUseSSL->isChecked()));
+
 	if(!cbCustomServer->isChecked())
 	{
-		QString newServer = mID->text().section("@", 1);
-		mPort->setValue(5222);
+		mPort->setValue(values.port);
 		// check if ssl is enabled and set the port correctly
-		sslToggled(cbUseSSL->isChecked());
-		mServer->setText(newServer);
+		cbUseSSL->setChecked(values.sslToggled);
+		sslToggled(values.sslToggled);
+		mServer->setText(values.server);
 		labelServer->setEnabled(false);
 		mServer->setEnabled(false);
 		labelPort->setEnabled(false);
_______________________________________________
kopete-devel mailing list
kopete-devel@kde.org
https://mail.kde.org/mailman/listinfo/kopete-devel

Reply via email to