File: ksqueezedtextlabel.h

package info (click to toggle)
kde4libs 4%3A4.14.2-5%2Bdeb8u2
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 82,428 kB
  • ctags: 99,415
  • sloc: cpp: 761,864; xml: 12,344; ansic: 6,295; java: 4,060; perl: 2,938; yacc: 2,507; python: 1,207; sh: 1,179; ruby: 337; lex: 278; makefile: 29
file content (131 lines) | stat: -rw-r--r-- 3,580 bytes parent folder | download | duplicates (5)
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
/* 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 <kdeui_export.h>
#include <QtGui/QLabel>

class KSqueezedTextLabelPrivate;

/**
 * @short A replacement for QLabel that squeezes its text
 *
 * A label class 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.
 *
 * Example:
 * http://www.kde.org/documentation/index.html could be squeezed to
 * http://www.kde...ion/index.html
 *
 * \image html ksqueezedtextlabel.png "KSqueezedTextLabel Widget"
 *
 * @author Ronny Standtke <Ronny.Standtke@gmx.de>
 */

/*
 * QLabel
 */
class KDEUI_EXPORT KSqueezedTextLabel : public QLabel {
  Q_OBJECT
  Q_PROPERTY( Qt::TextElideMode textElideMode READ textElideMode WRITE setTextElideMode )

public:
  /**
   * Default constructor.
   */
  explicit KSqueezedTextLabel( QWidget *parent = 0 );
  explicit KSqueezedTextLabel( const QString &text, QWidget *parent = 0 );

  virtual ~KSqueezedTextLabel();

  virtual QSize minimumSizeHint() const;
  virtual QSize sizeHint() const;
  /**
   * Overridden for internal reasons; the API remains unaffected.
   */
  virtual void setAlignment( Qt::Alignment );

  /**
   *  Returns the text elide mode.
   */
  Qt::TextElideMode textElideMode() const;

  /**
   * Sets the text elide mode.
   * @param mode The text elide mode.
   */
  void setTextElideMode( Qt::TextElideMode mode );

  /**
   * Get the full text set via setText.
   *
   * @since 4.4
   */
  QString fullText() const;

public Q_SLOTS:
  /**
   * Sets the text. Note that this is not technically a reimplementation of QLabel::setText(),
   * which is not virtual (in Qt 4.3). 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
   * @param mode The new text.
   */
  void setText( const QString &text );
  /**
   * Clears the text. Same remark as above.
   *
   */
  void clear();

protected:
    /**
     * \reimp
     */
    void mouseReleaseEvent(QMouseEvent*);
    
    /**
     * Called when widget is resized
     */
    void resizeEvent( QResizeEvent * );
    /**
     * \reimp
     */
    void contextMenuEvent(QContextMenuEvent* );
    /**
     * does the dirty work
     */
    void squeezeTextToLabel();

private:
    Q_PRIVATE_SLOT(d, void _k_copyFullText())
  KSqueezedTextLabelPrivate * const d;
};

#endif // KSQUEEZEDTEXTLABEL_H