diff options
Diffstat (limited to 'Swift/QtUI')
| -rw-r--r-- | Swift/QtUI/QtMainWindow.cpp | 4 | ||||
| -rw-r--r-- | Swift/QtUI/QtMainWindow.h | 1 | ||||
| -rw-r--r-- | Swift/QtUI/QtRosterHeader.cpp | 28 | ||||
| -rw-r--r-- | Swift/QtUI/QtRosterHeader.h | 8 | 
4 files changed, 35 insertions, 6 deletions
| diff --git a/Swift/QtUI/QtMainWindow.cpp b/Swift/QtUI/QtMainWindow.cpp index 1acc519..31a8234 100644 --- a/Swift/QtUI/QtMainWindow.cpp +++ b/Swift/QtUI/QtMainWindow.cpp @@ -334,18 +334,22 @@ void QtMainWindow::setMyAvatarPath(const std::string& path) {  void QtMainWindow::setMyStatusText(const std::string& status) {  	meView_->setStatusText(P2QSTRING(status));  }  void QtMainWindow::setMyStatusType(StatusShow::Type type) {  	meView_->setStatusType(type);  } +void QtMainWindow::setMyContactRosterItem(boost::shared_ptr<ContactRosterItem> contact) { +	meView_->setContactRosterItem(contact); +} +  void QtMainWindow::setConnecting() {  	meView_->setConnecting();  }  void QtMainWindow::setStreamEncryptionStatus(bool tlsInPlaceAndValid) {  	meView_->setStreamEncryptionStatus(tlsInPlaceAndValid);  }  void QtMainWindow::openCertificateDialog(const std::vector<Certificate::ref>& chain) { diff --git a/Swift/QtUI/QtMainWindow.h b/Swift/QtUI/QtMainWindow.h index c489a9e..f1f6900 100644 --- a/Swift/QtUI/QtMainWindow.h +++ b/Swift/QtUI/QtMainWindow.h @@ -41,18 +41,19 @@ namespace Swift {  		public:  			QtMainWindow(SettingsProvider*, UIEventStream* eventStream, QtLoginWindow::QtMenus loginMenus, StatusCache* statusCache, bool emoticonsExist);  			virtual ~QtMainWindow();  			std::vector<QMenu*> getMenus() {return menus_;}  			void setMyNick(const std::string& name);  			void setMyJID(const JID& jid);  			void setMyAvatarPath(const std::string& path);  			void setMyStatusText(const std::string& status);  			void setMyStatusType(StatusShow::Type type); +			void setMyContactRosterItem(boost::shared_ptr<ContactRosterItem> contact);  			void setConnecting();  			void setStreamEncryptionStatus(bool tlsInPlaceAndValid);  			void openCertificateDialog(const std::vector<Certificate::ref>& chain);  			static void openCertificateDialog(const std::vector<Certificate::ref>& chain, QWidget* parent);  			QtEventWindow* getEventWindow();  			QtChatListWindow* getChatListWindow();  			void setRosterModel(Roster* roster);  			void setAvailableAdHocCommands(const std::vector<DiscoItems::Item>& commands);  			void setBlockingCommandAvailable(bool isAvailable); diff --git a/Swift/QtUI/QtRosterHeader.cpp b/Swift/QtUI/QtRosterHeader.cpp index 2c8f244..69a0ef6 100644 --- a/Swift/QtUI/QtRosterHeader.cpp +++ b/Swift/QtUI/QtRosterHeader.cpp @@ -1,31 +1,34 @@  /*   * Copyright (c) 2010-2014 Kevin Smith   * Licensed under the GNU General Public License v3.   * See Documentation/Licenses/GPLv3.txt for more information.   */  #include "QtRosterHeader.h" -#include <QHBoxLayout> -#include <QVBoxLayout> +#include <QBitmap> +#include <qdebug.h>  #include <QFileInfo> +#include <QHBoxLayout> +#include <QHelpEvent>  #include <QIcon> -#include <QSizePolicy> -#include <qdebug.h>  #include <QMouseEvent>  #include <QPainter> -#include <QBitmap> +#include <QSizePolicy> +#include <QToolTip> +#include <QVBoxLayout>  #include "QtStatusWidget.h"  #include <Swift/QtUI/QtElidingLabel.h>  #include <Swift/QtUI/QtClickableLabel.h>  #include <Swift/QtUI/QtNameWidget.h> +#include <Swift/QtUI/Roster/RosterTooltip.h>  #include "QtScaledAvatarCache.h"  namespace Swift {  QtRosterHeader::QtRosterHeader(SettingsProvider* settings, StatusCache* statusCache, QWidget* parent) : QWidget(parent), statusEdit_(NULL) {  	QHBoxLayout* topLayout = new QHBoxLayout();  	topLayout->setSpacing(3);  	topLayout->setContentsMargins(4,4,4,4);  	setLayout(topLayout);  	setMinimumHeight(50); @@ -83,34 +86,49 @@ void QtRosterHeader::setStatusType(StatusShow::Type type) {  void QtRosterHeader::setConnecting() {  	statusWidget_->setConnecting();  }  void QtRosterHeader::setStreamEncryptionStatus(bool tlsInPlace) {  	securityInfoButton_->setVisible(tlsInPlace);  } +bool QtRosterHeader::event(QEvent* event) { +	if (event->type() == QEvent::ToolTip) { +		QHelpEvent *helpEvent = static_cast<QHelpEvent *>(event); +		QtScaledAvatarCache scaledAvatarCache(avatarSize_); +		QString text = RosterTooltip::buildDetailedTooltip(contact_.get(), &scaledAvatarCache); +		QToolTip::showText(helpEvent->globalPos(), text); +		return true; +	} +	return QWidget::event(event); +} +  void QtRosterHeader::setAvatar(const QString& path) {  	QString scaledAvatarPath = QtScaledAvatarCache(avatarSize_).getScaledAvatarPath(path);  	QPixmap avatar;  	if (QFileInfo(scaledAvatarPath).exists()) {  		avatar.load(scaledAvatarPath);  	}  	else {  		avatar = QPixmap(":/icons/avatar.png").scaled(avatarSize_, avatarSize_, Qt::KeepAspectRatio, Qt::SmoothTransformation);  	}  	avatarLabel_->setPixmap(avatar);  }  void QtRosterHeader::setNick(const QString& nick) {  	nameWidget_->setNick(nick);  } +void QtRosterHeader::setContactRosterItem(boost::shared_ptr<ContactRosterItem> contact) { +	contact_ = contact; +} +  void QtRosterHeader::setJID(const QString& jid) {  	nameWidget_->setJID(jid);  }  const int QtRosterHeader::avatarSize_ = 40;  } diff --git a/Swift/QtUI/QtRosterHeader.h b/Swift/QtUI/QtRosterHeader.h index ad19178..eafbc02 100644 --- a/Swift/QtUI/QtRosterHeader.h +++ b/Swift/QtUI/QtRosterHeader.h @@ -7,19 +7,21 @@  #pragma once  #include <QWidget>  #include <QLabel>  #include <QPixmap>  #include <QSize>  #include <QToolButton>  #include <string> -#include "Swiften/Elements/StatusShow.h" +#include <Swiften/Elements/StatusShow.h> +#include <Swiften/Elements/VCard.h> +#include <Swift/Controllers/Roster/ContactRosterItem.h>  #include "QtTextEdit.h"  class QHBoxLayout;  namespace Swift {  	class QtClickableLabel;  	class QtStatusWidget;  	class QtNameWidget; @@ -28,31 +30,35 @@ namespace Swift {  	class QtRosterHeader : public QWidget {  		Q_OBJECT  	public:  		QtRosterHeader(SettingsProvider* settings, StatusCache* statusCache, QWidget* parent = NULL);  		void setAvatar(const QString& path);  		void setJID(const QString& jid);  		void setNick(const QString& nick); +		void setContactRosterItem(boost::shared_ptr<ContactRosterItem> contact);  		void setStatusText(const QString& statusMessage);  		void setStatusType(StatusShow::Type type);  		void setConnecting();  		void setStreamEncryptionStatus(bool tlsInPlace); +	private: +		bool event(QEvent* event);  	signals:  		void onChangeStatusRequest(StatusShow::Type showType, const QString &statusMessage);  		void onEditProfileRequest();  		void onShowCertificateInfo();  	private slots:  		void handleChangeStatusRequest(StatusShow::Type type, const QString &statusMessage);  	private:  		QString name_;  		QtClickableLabel* avatarLabel_;  		QtNameWidget* nameWidget_;  		QtTextEdit* statusEdit_;  		QtStatusWidget* statusWidget_;  		QToolButton* securityInfoButton_;  		static const int avatarSize_; +		boost::shared_ptr<ContactRosterItem> contact_;  	};  } | 
 Swift
 Swift