1 /* 2 Copyright © 2014-2019 by The qTox Project Contributors 3 4 This file is part of qTox, a Qt-based graphical interface for Tox. 5 6 qTox is libre software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 qTox is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with qTox. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 #ifndef CROPPINGLABEL_H 21 #define CROPPINGLABEL_H 22 23 #include <QLabel> 24 25 class QLineEdit; 26 27 class CroppingLabel : public QLabel 28 { 29 Q_OBJECT 30 public: 31 explicit CroppingLabel(QWidget* parent = nullptr); 32 33 public slots: 34 void editBegin(); 35 void setEditable(bool editable); 36 void setElideMode(Qt::TextElideMode elide); 37 38 QString fullText(); 39 40 public slots: 41 void setText(const QString& text); 42 void setPlaceholderText(const QString& text); 43 void minimizeMaximumWidth(); 44 45 signals: 46 void editFinished(const QString& newText); 47 void editRemoved(); 48 void clicked(); 49 50 protected: 51 void paintEvent(QPaintEvent* paintEvent) override; 52 void setElidedText(); 53 void hideTextEdit(); 54 void showTextEdit(); 55 virtual void resizeEvent(QResizeEvent* ev) final override; 56 virtual QSize sizeHint() const final override; 57 virtual QSize minimumSizeHint() const final override; 58 virtual void mouseReleaseEvent(QMouseEvent* e) final override; 59 60 private slots: 61 void editingFinished(); 62 63 private: 64 QString origText; 65 QLineEdit* textEdit; 66 bool blockPaintEvents; 67 bool editable; 68 Qt::TextElideMode elideMode; 69 }; 70 71 #endif // CROPPINGLABEL_H 72