From: Christian Kamm Date: Tue, 11 Jul 2017 13:50:56 +0000 (+0200) Subject: Add ElidedLabel X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~704^2^2~46 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e13b618a6574f3a47c12b12af6586dfc4e3efb69;p=nextcloud-desktop.git Add ElidedLabel A label that adjusts its text based on Qt::TextElideMode. --- diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index d123d58c5..9011c07ab 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -95,6 +95,7 @@ set(client_SRCS notificationconfirmjob.cpp servernotificationhandler.cpp guiutility.cpp + elidedlabel.cpp creds/credentialsfactory.cpp creds/httpcredentialsgui.cpp creds/oauth.cpp diff --git a/src/gui/elidedlabel.cpp b/src/gui/elidedlabel.cpp new file mode 100644 index 000000000..a5ce9bb22 --- /dev/null +++ b/src/gui/elidedlabel.cpp @@ -0,0 +1,49 @@ +/* + * Copyright (C) by Christian Kamm + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#include "elidedlabel.h" + +#include + +namespace OCC { + +ElidedLabel::ElidedLabel(const QString &text, QWidget *parent) + : QLabel(text, parent) + , _text(text) + , _elideMode(Qt::ElideNone) +{ +} + +void ElidedLabel::setText(const QString &text) +{ + _text = text; + QLabel::setText(text); + update(); +} + +void ElidedLabel::setElideMode(Qt::TextElideMode elideMode) +{ + _elideMode = elideMode; + update(); +} + +void ElidedLabel::resizeEvent(QResizeEvent *event) +{ + QLabel::resizeEvent(event); + + QFontMetrics fm = fontMetrics(); + QString elided = fm.elidedText(_text, _elideMode, event->size().width()); + QLabel::setText(elided); +} +} diff --git a/src/gui/elidedlabel.h b/src/gui/elidedlabel.h new file mode 100644 index 000000000..a06100c5e --- /dev/null +++ b/src/gui/elidedlabel.h @@ -0,0 +1,44 @@ +/* + * Copyright (C) by Christian Kamm + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + */ + +#ifndef ELIDEDLABEL_H +#define ELIDEDLABEL_H + +#include + +namespace OCC { + +/// Label that can elide its text +class ElidedLabel : public QLabel +{ + Q_OBJECT +public: + explicit ElidedLabel(const QString &text, QWidget *parent = 0); + + void setText(const QString &text); + const QString &text() const { return _text; } + + void setElideMode(Qt::TextElideMode elideMode); + Qt::TextElideMode elideMode() const { return _elideMode; } + +protected: + void resizeEvent(QResizeEvent *event) override; + +private: + QString _text; + Qt::TextElideMode _elideMode; +}; +} + +#endif