diff options
Diffstat (limited to 'Swift')
-rw-r--r-- | Swift/QtUI/QtChatWindow.cpp | 17 | ||||
-rw-r--r-- | Swift/QtUI/QtChatWindow.h | 6 | ||||
-rw-r--r-- | Swift/QtUI/QtChatWindowFactory.cpp | 14 | ||||
-rw-r--r-- | Swift/QtUI/QtSwift.cpp | 3 |
4 files changed, 35 insertions, 5 deletions
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<QWidget*>(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(); |