diff options
| -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();  | 
 Swift