diff options
-rw-r--r-- | user.cpp | 12 | ||||
-rw-r--r-- | user.h | 5 |
2 files changed, 17 insertions, 0 deletions
@@ -27,6 +27,7 @@ #include <QtCore/QTimer> #include <QtCore/QDebug> #include <QtGui/QIcon> +#include <QtCore/QRegularExpression> #include <algorithm> using namespace QMatrixClient; @@ -52,6 +53,7 @@ class User::Private bool avatarValid; bool avatarOngoingRequest; QVector<QPixmap> scaledAvatars; + QString bridged; void requestAvatar(); }; @@ -84,6 +86,10 @@ QString User::displayname() const return d->userId; } +QString User::bridged() const { + return d->bridged; +} + QPixmap User::avatar(int width, int height) { return croppedAvatar(width, height); // FIXME: Return an uncropped avatar; @@ -141,6 +147,12 @@ void User::processEvent(Event* event) { const auto oldName = d->name; d->name = e->displayName(); + QRegularExpression reSuffix(" \\((IRC|Gitter)\\)$"); + auto match = reSuffix.match(d->name); + if (match.hasMatch()) { + d->bridged = match.captured(1); + d->name = d->name.left(match.capturedStart(0)); + } emit nameChanged(this, oldName); } if( d->avatarUrl != e->avatarUrl() ) @@ -47,6 +47,11 @@ namespace QMatrixClient */ Q_INVOKABLE QString displayname() const; + /** + * Returns the name of bridge the user is connected from or empty. + */ + Q_INVOKABLE QString bridged() const; + QPixmap avatar(int requestedWidth, int requestedHeight); QPixmap croppedAvatar(int requestedWidth, int requestedHeight); |