/usr/include/KF5/KWidgetsAddons/ksqueezedtextlabel.h is in libkf5widgetsaddons-dev 5.44.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 | /* This file is part of the KDE libraries
Copyright (C) 2000 Ronny Standtke <Ronny.Standtke@gmx.de>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License version 2 as published by the Free Software Foundation.
This library 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
Library General Public License for more details.
You should have received a copy of the GNU Library General Public License
along with this library; see the file COPYING.LIB. If not, write to
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02110-1301, USA.
*/
#ifndef KSQUEEZEDTEXTLABEL_H
#define KSQUEEZEDTEXTLABEL_H
#include <kwidgetsaddons_export.h>
#include <QLabel>
class KSqueezedTextLabelPrivate;
/**
* @class KSqueezedTextLabel ksqueezedtextlabel.h KSqueezedTextLabel
*
* @short A replacement for QLabel that squeezes its text into the label
*
* If the text is too long to fit into the label it is divided into
* remaining left and right parts which are separated by three dots.
* Hovering the mouse over the label shows the full text in a tooltip.
*
* Example:
* http://www.kde.org/documentation/index.html could be squeezed to
* http://www.kde...ion/index.html
*
* \image html ksqueezedtextlabel.png "KSqueezedTextLabel Widget"
*
* To change the position of the elision mark to the left or right end
* of the text, use setTextElideMode().
*
* @anchor non-virtual-warning
* @note Several functions of KSqueezedTextLabel (indicated by a warning
* in their description) reimplement non-virtual functions of QLabel.
* Therefore, you may need to cast the object to KSqueezedTextLabel in
* some situations:
* \Example
* \code
* KSqueezedTextLabel* squeezed = new KSqueezedTextLabel("text", parent);
* QLabel* label = squeezed;
* label->setText("new text"); // this will not work
* squeezed->setText("new text"); // works as expected
* static_cast<KSqueezedTextLabel*>(label)->setText("new text"); // works as expected
* \endcode
*
* @author Ronny Standtke <Ronny.Standtke@gmx.de>
*/
// TODO KF6:
// - make more functions virtual (to benefit subclasses of KSqueezedTextLabel)
// - try to eliminate need for non-virtual-warning (to benefit use as QLabel),
// see https://phabricator.kde.org/D7164 for some ideas/considerations
/*
* QLabel
*/
class KWIDGETSADDONS_EXPORT KSqueezedTextLabel : public QLabel
{
Q_OBJECT
Q_PROPERTY(Qt::TextElideMode textElideMode READ textElideMode WRITE setTextElideMode)
Q_PROPERTY(int indent READ indent WRITE setIndent)
Q_PROPERTY(int margin READ margin WRITE setMargin)
public:
/**
* Default constructor.
* @param parent the label's parent object
*/
explicit KSqueezedTextLabel(QWidget *parent = nullptr);
/**
* @param text the text that will be displayed
* @param parent the label's parent object
*/
explicit KSqueezedTextLabel(const QString &text, QWidget *parent = nullptr);
virtual ~KSqueezedTextLabel();
/**
* @return the label's minimum size, where the horizontal component
* will be -1 to indicate the label's ability to shrink its width
* by squeezing the text
*/
QSize minimumSizeHint() const Q_DECL_OVERRIDE;
/**
* @return the label's preferred size, which is wide enough
* to display the text without squeezing it
*/
QSize sizeHint() const Q_DECL_OVERRIDE;
/**
* Sets the indentation of the label.
*
* @param indent the amount of indentation in pixels
*
* Reimplementation of QLabel::setIndent().
*
* @warning The corresponding function in the base class is not virtual.
* Therefore make sure to call this function on objects of type KSqueezedTextLabel,
* as shown in the @ref non-virtual-warning "example in the class description".
*
* @since 5.39
*/
void setIndent(int indent);
/**
* Sets the margin of the label.
*
* @param margin the margin size in pixels
*
* Reimplementation of QLabel::setMargin().
*
* @warning The corresponding function in the base class is not virtual.
* Therefore make sure to call this function on objects of type KSqueezedTextLabel,
* as shown in the @ref non-virtual-warning "example in the class description".
*
* @since 5.39
*/
void setMargin(int margin);
/**
* Overridden for internal reasons; the API remains unaffected.
*/
virtual void setAlignment(Qt::Alignment);
/**
* @return the text elide mode
*/
Qt::TextElideMode textElideMode() const;
/**
* Sets the text elide mode.
* @param mode The text elide mode.
*/
void setTextElideMode(Qt::TextElideMode mode);
/**
* @return the full text set via setText()
*
* @since 4.4
*/
QString fullText() const;
/**
* @returns true if the text displayed is currently squeezed,
* i.e. the original text does not fit inside the space available
* and elide mode is set to a value other than Qt::ElideNone.
*
* @since 5.38
*/
bool isSqueezed() const;
/**
* @return the rectangle to squeeze the text into
*
* Reimplementation of QLabel::contentsRect().
*
* @warning The corresponding function in the base class is not virtual.
* Therefore make sure to call this function on objects of type KSqueezedTextLabel,
* as shown in the @ref non-virtual-warning "example in the class description".
*
* @since 5.39
*/
QRect contentsRect() const;
public Q_SLOTS:
/**
* Sets the text.
* @param text The new text.
*
* Reimplementation of QLabel::setText().
*
* @warning The corresponding function in the base class is not virtual.
* Therefore make sure to call this function on objects of type KSqueezedTextLabel,
* as shown in the @ref non-virtual-warning "example in the class description".
*/
void setText(const QString &text);
/**
* Clears the text.
*
* Reimplementation of QLabel::clear().
*
* @warning The corresponding function in the base class is not virtual.
* Therefore make sure to call this function on objects of type KSqueezedTextLabel,
* as shown in the @ref non-virtual-warning "example in the class description".
*/
void clear();
protected:
/**
* \reimp
*/
void mouseReleaseEvent(QMouseEvent *) Q_DECL_OVERRIDE;
/**
* Called when widget is resized
*/
void resizeEvent(QResizeEvent *) Q_DECL_OVERRIDE;
/**
* \reimp
*/
void contextMenuEvent(QContextMenuEvent *) Q_DECL_OVERRIDE;
/**
* does the dirty work
*/
void squeezeTextToLabel();
private:
KSqueezedTextLabelPrivate *const d;
};
#endif // KSQUEEZEDTEXTLABEL_H
|