From e90e08301a03a4ad562a35e60927815d43daebec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Remko=20Tron=C3=A7on?= Date: Sun, 12 Dec 2010 17:49:18 +0100 Subject: Removing nickname change functionality from roster header. diff --git a/Swift/Controllers/RosterController.cpp b/Swift/Controllers/RosterController.cpp index 1feeb58..282f041 100644 --- a/Swift/Controllers/RosterController.cpp +++ b/Swift/Controllers/RosterController.cpp @@ -69,8 +69,6 @@ RosterController::RosterController(const JID& jid, XMPPRoster* xmppRoster, Avata mainWindow_->setMyJID(jid); mainWindow_->setMyNick(nickManager_->getOwnNick()); - mainWindow_->onChangeNickRequest.connect(boost::bind(&NickManager::setOwnNick, nickManager_, _1)); - if (settings->getBoolSetting(SHOW_OFFLINE, false)) { uiEventStream->onUIEvent(boost::shared_ptr(new ToggleShowOfflineUIEvent(true))); } diff --git a/Swift/Controllers/UIInterfaces/MainWindow.h b/Swift/Controllers/UIInterfaces/MainWindow.h index 124d229..125aae5 100644 --- a/Swift/Controllers/UIInterfaces/MainWindow.h +++ b/Swift/Controllers/UIInterfaces/MainWindow.h @@ -36,7 +36,6 @@ namespace Swift { boost::signal onChangeStatusRequest; boost::signal onSignOutRequest; - boost::signal onChangeNickRequest; private: bool canDelete_; diff --git a/Swift/QtUI/QtMainWindow.cpp b/Swift/QtUI/QtMainWindow.cpp index fb84da4..5cbc40c 100644 --- a/Swift/QtUI/QtMainWindow.cpp +++ b/Swift/QtUI/QtMainWindow.cpp @@ -40,7 +40,6 @@ QtMainWindow::QtMainWindow(UIEventStream* uiEventStream) : QWidget(), MainWindow meView_ = new QtRosterHeader(this); mainLayout->addWidget(meView_); connect(meView_, SIGNAL(onChangeStatusRequest(StatusShow::Type, const QString&)), this, SLOT(handleStatusChanged(StatusShow::Type, const QString&))); - connect(meView_, SIGNAL(onChangeNickRequest(const QString&)), this, SLOT(handleChangeNickRequest(const QString&))); tabs_ = new QtTabWidget(this); #if QT_VERSION >= 0x040500 @@ -187,9 +186,5 @@ void QtMainWindow::setConnecting() { meView_->setConnecting(); } -void QtMainWindow::handleChangeNickRequest(const QString& nick) { - onChangeNickRequest(Q2PSTRING(nick)); -} - } diff --git a/Swift/QtUI/QtMainWindow.h b/Swift/QtUI/QtMainWindow.h index ccec12c..62aafba 100644 --- a/Swift/QtUI/QtMainWindow.h +++ b/Swift/QtUI/QtMainWindow.h @@ -56,7 +56,6 @@ namespace Swift { void handleAddContactDialogComplete(const JID& contact, const QString& name); void handleAddActionTriggered(bool checked); void handleEventCountUpdated(int count); - void handleChangeNickRequest(const QString& nick); private: std::vector menus_; diff --git a/Swift/QtUI/QtNameWidget.cpp b/Swift/QtUI/QtNameWidget.cpp index bf38da8..d123bad 100644 --- a/Swift/QtUI/QtNameWidget.cpp +++ b/Swift/QtUI/QtNameWidget.cpp @@ -6,52 +6,25 @@ #include "QtNameWidget.h" -#include #include +#include #include +#include #include -#include -#include namespace Swift { -QtNameWidget::QtNameWidget(QWidget *parent) : QWidget(parent) { +QtNameWidget::QtNameWidget(QWidget *parent) : QWidget(parent), mode(ShowNick) { QHBoxLayout* mainLayout = new QHBoxLayout(this); mainLayout->setSpacing(0); mainLayout->setContentsMargins(0,0,0,0); - stack = new QStackedWidget(this); - mainLayout->addWidget(stack); - textLabel = new QtElidingLabel(this); QFont font = textLabel->font(); font.setBold(true); textLabel->setFont(font); - stack->addWidget(textLabel); - - nickEdit = new QtLineEdit(this); - connect(nickEdit, SIGNAL(returnPressed()), this, SLOT(handleEditComplete())); - connect(nickEdit, SIGNAL(escapePressed()), this, SLOT(handleEditCancelled())); - stack->addWidget(nickEdit); -} - -void QtNameWidget::mouseDoubleClickEvent(QMouseEvent* event) { - if (stack->currentWidget() != nickEdit) { - if (event->button() == Qt::LeftButton) { - nickEdit->setText(nick); - stack->setCurrentWidget(nickEdit); - } - } -} - -void QtNameWidget::handleEditComplete() { - stack->setCurrentWidget(textLabel); - emit onChangeNickRequest(nickEdit->text()); -} - -void QtNameWidget::handleEditCancelled() { - stack->setCurrentWidget(textLabel); + mainLayout->addWidget(textLabel); } void QtNameWidget::setNick(const QString& nick) { @@ -64,13 +37,40 @@ void QtNameWidget::setJID(const QString& jid) { updateText(); } +void QtNameWidget::mousePressEvent(QMouseEvent* event) { + QMenu menu; + + QAction* showAsNick = new QAction("Show nickname", this); + showAsNick->setCheckable(true); + if (mode == ShowNick) { + showAsNick->setChecked(true); + } + menu.addAction(showAsNick); + + QAction* showAsJID = new QAction("Show ID", this); + showAsJID->setCheckable(true); + if (mode == ShowJID) { + showAsJID->setChecked(true); + } + menu.addAction(showAsJID); + + QAction* result = menu.exec(event->globalPos()); + if (result == showAsJID) { + mode = ShowJID; + } + else { + mode = ShowNick; + } + updateText(); +} + void QtNameWidget::updateText() { QString text; - if (nick.isEmpty()) { - text = jid; + if (mode == ShowNick && !nick.isEmpty()) { + text = nick; } else { - text = nick + " (" + jid + ")"; + text = jid; } text.replace("<","<"); textLabel->setText(text); diff --git a/Swift/QtUI/QtNameWidget.h b/Swift/QtUI/QtNameWidget.h index c1c3e07..52586b7 100644 --- a/Swift/QtUI/QtNameWidget.h +++ b/Swift/QtUI/QtNameWidget.h @@ -8,12 +8,8 @@ #include -class QLabel; -class QStackedWidget; - namespace Swift { class QtElidingLabel; - class QtLineEdit; class QtNameWidget : public QWidget { Q_OBJECT @@ -24,25 +20,18 @@ namespace Swift { void setNick(const QString& text); void setJID(const QString& jid); - signals: - /** - * When this is emitted, the widget is disabled until - * setNick() is called. - */ - void onChangeNickRequest(const QString& nick); - - private slots: - void handleEditComplete(); - void handleEditCancelled(); - virtual void mouseDoubleClickEvent(QMouseEvent* event); - private: void updateText(); + virtual void mousePressEvent(QMouseEvent* event); private: - QStackedWidget* stack; + enum Mode { + ShowNick, + ShowJID, + }; + + Mode mode; QtElidingLabel* textLabel; - QtLineEdit* nickEdit; QString jid; QString nick; }; diff --git a/Swift/QtUI/QtRosterHeader.cpp b/Swift/QtUI/QtRosterHeader.cpp index efc198a..4649839 100644 --- a/Swift/QtUI/QtRosterHeader.cpp +++ b/Swift/QtUI/QtRosterHeader.cpp @@ -40,7 +40,6 @@ QtRosterHeader::QtRosterHeader(QWidget* parent) : QWidget(parent) { topLayout->addLayout(rightLayout); nameWidget_ = new QtNameWidget(this); - connect(nameWidget_, SIGNAL(onChangeNickRequest(const QString&)), this, SIGNAL(onChangeNickRequest(const QString&))); rightLayout->addWidget(nameWidget_); diff --git a/Swift/QtUI/QtRosterHeader.h b/Swift/QtUI/QtRosterHeader.h index cd5f26c..23e6be0 100644 --- a/Swift/QtUI/QtRosterHeader.h +++ b/Swift/QtUI/QtRosterHeader.h @@ -37,7 +37,6 @@ namespace Swift { void setConnecting(); signals: void onChangeStatusRequest(StatusShow::Type showType, const QString &statusMessage); - void onChangeNickRequest(const QString &nick); private slots: void handleChangeStatusRequest(StatusShow::Type type, const QString &statusMessage); diff --git a/Swiften/Client/NickManagerImpl.cpp b/Swiften/Client/NickManagerImpl.cpp index 09f8de5..fd37222 100644 --- a/Swiften/Client/NickManagerImpl.cpp +++ b/Swiften/Client/NickManagerImpl.cpp @@ -14,6 +14,8 @@ namespace Swift { NickManagerImpl::NickManagerImpl(const JID& ownJID, VCardManager* vcardManager) : ownJID(ownJID), vcardManager(vcardManager) { vcardManager->onVCardChanged.connect(boost::bind(&NickManagerImpl::handleVCardReceived, this, _1, _2)); + + updateOwnNickFromVCard(vcardManager->getVCard(ownJID.toBare())); } NickManagerImpl::~NickManagerImpl() { @@ -21,7 +23,7 @@ NickManagerImpl::~NickManagerImpl() { } String NickManagerImpl::getOwnNick() const { - return ownJID; + return ownNick; } void NickManagerImpl::setOwnNick(const String&) { @@ -31,9 +33,12 @@ void NickManagerImpl::handleVCardReceived(const JID& jid, VCard::ref vcard) { if (!jid.equals(ownJID, JID::WithoutResource)) { return; } + updateOwnNickFromVCard(vcard); +} +void NickManagerImpl::updateOwnNickFromVCard(VCard::ref vcard) { String nick; - if (!vcard->getNickname().isEmpty()) { + if (vcard && !vcard->getNickname().isEmpty()) { nick = vcard->getNickname(); } if (ownNick != nick) { diff --git a/Swiften/Client/NickManagerImpl.h b/Swiften/Client/NickManagerImpl.h index 87c9711..8796dbe 100644 --- a/Swiften/Client/NickManagerImpl.h +++ b/Swiften/Client/NickManagerImpl.h @@ -24,6 +24,7 @@ namespace Swift { private: void handleVCardReceived(const JID& jid, VCard::ref vCard); + void updateOwnNickFromVCard(VCard::ref vcard); private: JID ownJID; -- cgit v0.10.2-6-g49f6