Fixes #682 - Core crashes on client connection
[quassel.git] / src / client / clientsettings.cpp
index 9a05459..217b673 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2005-08 by the Quassel Project                          *
+ *   Copyright (C) 2005-09 by the Quassel Project                          *
  *   devel@quassel-irc.org                                                 *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 
 #include <QStringList>
 
-#include "client.h"
+
 #include "clientsettings.h"
+
+#include <QHostAddress>
+#ifdef HAVE_SSL
+#include <QSslSocket>
+#endif
+
+
+#include "client.h"
 #include "quassel.h"
 
 ClientSettings::ClientSettings(QString g) : Settings(g, Quassel::buildInfo().clientApplicationName) {
@@ -140,3 +148,80 @@ void NotificationSettings::setNicksCaseSensitive(bool cs) {
 bool NotificationSettings::nicksCaseSensitive() {
   return localValue("Highlights/NicksCaseSensitive", false).toBool();
 }
+
+
+// ========================================
+//  KnownHostsSettings
+// ========================================
+KnownHostsSettings::KnownHostsSettings()
+  : ClientSettings("KnownHosts")
+{
+}
+
+QByteArray KnownHostsSettings::knownDigest(const QHostAddress &address) {
+  return localValue(address.toString(), QByteArray()).toByteArray();
+}
+
+void KnownHostsSettings::saveKnownHost(const QHostAddress &address, const QByteArray &certDigest) {
+  setLocalValue(address.toString(), certDigest);
+}
+
+bool KnownHostsSettings::isKnownHost(const QHostAddress &address, const QByteArray &certDigest) {
+  return certDigest == localValue(address.toString(), QByteArray()).toByteArray();
+}
+
+#ifdef HAVE_SSL
+QByteArray KnownHostsSettings::knownDigest(const QSslSocket *socket) {
+  return knownDigest(socket->peerAddress());
+}
+
+void KnownHostsSettings::saveKnownHost(const QSslSocket *socket) {
+  Q_ASSERT(socket);
+  saveKnownHost(socket->peerAddress(), socket->peerCertificate().digest());
+}
+
+bool KnownHostsSettings::isKnownHost(const QSslSocket *socket) {
+  Q_ASSERT(socket);
+  return isKnownHost(socket->peerAddress(), socket->peerCertificate().digest());
+}
+#endif
+
+
+// ========================================
+//  TabCompletionSettings
+// ========================================
+
+TabCompletionSettings::TabCompletionSettings() : ClientSettings("TabCompletion") {
+}
+
+void TabCompletionSettings::setCompletionSuffix(const QString &suffix) {
+  setLocalValue("CompletionSuffix", suffix);
+}
+
+QString TabCompletionSettings::completionSuffix() {
+  return localValue("CompletionSuffix", ": ").toString();
+}
+
+void TabCompletionSettings::setSortMode(SortMode mode) {
+  setLocalValue("SortMode", mode);
+}
+
+TabCompletionSettings::SortMode TabCompletionSettings::sortMode() {
+  return static_cast<SortMode>(localValue("SortMode"), LastActivity);
+}
+
+void TabCompletionSettings::setCaseSensitivity(Qt::CaseSensitivity cs) {
+  setLocalValue("CaseSensitivity", cs);
+}
+
+Qt::CaseSensitivity TabCompletionSettings::caseSensitivity() {
+  return (Qt::CaseSensitivity)localValue("CaseSensitivity", Qt::CaseInsensitive).toInt();
+}
+
+void TabCompletionSettings::setUseLastSpokenTo(bool use) {
+  setLocalValue("UseLastSpokenTo", use);
+}
+
+bool TabCompletionSettings::useLastSpokenTo() {
+  return localValue("UseLastSpokenTo", false).toBool();
+}