From 5518a05a200d6531b5ee1d1409a1d451bc3b0749 Mon Sep 17 00:00:00 2001 From: Kevin Smith Date: Fri, 25 Jun 2010 19:36:42 +0100 Subject: Command-line option to not use tabs. Resolves: #476 diff --git a/Swift/QtUI/QtChatWindow.cpp b/Swift/QtUI/QtChatWindow.cpp index fcc1308..8fed3c6 100644 --- a/Swift/QtUI/QtChatWindow.cpp +++ b/Swift/QtUI/QtChatWindow.cpp @@ -222,7 +222,11 @@ void QtChatWindow::setName(const String& name) { } void QtChatWindow::updateTitleWithUnreadCount() { - setWindowTitle(contact_); + if (isWindow()) { + setWindowTitle(unreadCount_ > 0 ? QString("(%1) %2").arg(unreadCount_).arg(contact_) : contact_); + } else { + setWindowTitle(contact_); + } emit titleUpdated(); } @@ -318,7 +322,18 @@ void QtChatWindow::show() { } void QtChatWindow::activate() { + if (isWindow()) { + QWidget::show(); + } emit wantsToActivate(); } +void QtChatWindow::resizeEvent(QResizeEvent*) { + emit geometryChanged(); +} + +void QtChatWindow::moveEvent(QMoveEvent*) { + emit geometryChanged(); +} + } diff --git a/Swift/QtUI/QtChatWindow.h b/Swift/QtUI/QtChatWindow.h index 00d7f25..f68ff1c 100644 --- a/Swift/QtUI/QtChatWindow.h +++ b/Swift/QtUI/QtChatWindow.h @@ -48,12 +48,18 @@ namespace Swift { void setTabComplete(TabComplete* completer); int getCount(); + signals: + void geometryChanged(); + protected slots: void qAppFocusChanged(QWidget* old, QWidget* now); void closeEvent(QCloseEvent* event); + void resizeEvent(QResizeEvent* event); + void moveEvent(QMoveEvent* event); protected: void showEvent(QShowEvent* event); + private slots: void returnPressed(); void handleInputChanged(); diff --git a/Swift/QtUI/QtChatWindowFactory.cpp b/Swift/QtUI/QtChatWindowFactory.cpp index 5029324..9787c2c 100644 --- a/Swift/QtUI/QtChatWindowFactory.cpp +++ b/Swift/QtUI/QtChatWindowFactory.cpp @@ -19,7 +19,7 @@ QtChatWindowFactory::QtChatWindowFactory(QSplitter* splitter, QtSettingsProvider tabs_ = tabs; if (splitter) { splitter->addWidget(tabs_); - } else { + } else if (tabs_) { QVariant chatTabsGeometryVariant = settings_->getQSettings()->value("chatTabsGeometry"); if (chatTabsGeometryVariant.isValid()) { tabs_->restoreGeometry(chatTabsGeometryVariant.toByteArray()); @@ -30,12 +30,20 @@ QtChatWindowFactory::QtChatWindowFactory(QSplitter* splitter, QtSettingsProvider ChatWindow* QtChatWindowFactory::createChatWindow(const JID &contact,UIEventStream* eventStream) { QtChatWindow *chatWindow = new QtChatWindow(P2QSTRING(contact.toString()), eventStream); - tabs_->addTab(chatWindow); + if (tabs_) { + tabs_->addTab(chatWindow); + } else { + QVariant chatGeometryVariant = settings_->getQSettings()->value("chatTabsGeometry"); + if (chatGeometryVariant.isValid()) { + chatWindow->restoreGeometry(chatGeometryVariant.toByteArray()); + } + connect(chatWindow, SIGNAL(geometryChanged()), this, SLOT(handleWindowGeometryChanged())); + } return chatWindow; } void QtChatWindowFactory::handleWindowGeometryChanged() { - settings_->getQSettings()->setValue("chatTabsGeometry", tabs_->saveGeometry()); + settings_->getQSettings()->setValue("chatTabsGeometry", qobject_cast(sender())->saveGeometry()); } } diff --git a/Swift/QtUI/QtSwift.cpp b/Swift/QtUI/QtSwift.cpp index 2bf1fcf..3e8bc8b 100644 --- a/Swift/QtUI/QtSwift.cpp +++ b/Swift/QtUI/QtSwift.cpp @@ -45,6 +45,7 @@ po::options_description QtSwift::getOptionsDescription() { result.add_options() ("help", "produce help message") ("netbook-mode", "use netbook mode display") + ("no-tabs", "don't manage chat windows in tabs") ("latency-debug", "use latency debugging") ; return result; @@ -62,7 +63,7 @@ QtSwift::QtSwift(po::variables_map options) : autoUpdater_(NULL) { QCoreApplication::setOrganizationDomain(SWIFT_ORGANIZATION_DOMAIN); QCoreApplication::setApplicationVersion(buildVersion); - tabs_ = new QtChatTabs(); + tabs_ = options.count("no-tabs") && !splitter_ > 0 ? NULL : new QtChatTabs(); settings_ = new QtSettingsProvider(); application_ = new PlatformApplication(SWIFT_APPLICATION_NAME); systemTray_ = new QtSystemTray(); -- cgit v0.10.2-6-g49f6