diff options
author | Roland Knall <roland.knall@br-automation.com> | 2017-07-05 16:56:45 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-07-11 21:30:29 +0000 |
commit | ee699eb7200aa4470622abe4d1b8a80c461dae0c (patch) | |
tree | ff6fbc4f0769a2b5af107ee9485943836b97e64d /ui/qt/widgets/elided_label.cpp | |
parent | 66cc2ed39ddd28fc2d8b22ce2d07783a35a9f10d (diff) |
Qt: Move all utility widgets to widgets subdirectory
Move all utility widgets to the widgets subdirectory and
add separate source_group for their files
Correct some alphabetization in ui/qt/CMakeLists.txt noticed
during compare.
Change-Id: I2d664edc2b32f126438fb673ea53a5ae94cd43d1
Reviewed-on: https://code.wireshark.org/review/22531
Petri-Dish: Michael Mann <mmann78@netscape.net>
Reviewed-by: Roland Knall <rknall@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'ui/qt/widgets/elided_label.cpp')
-rw-r--r-- | ui/qt/widgets/elided_label.cpp | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/ui/qt/widgets/elided_label.cpp b/ui/qt/widgets/elided_label.cpp new file mode 100644 index 0000000000..eb33cbccac --- /dev/null +++ b/ui/qt/widgets/elided_label.cpp @@ -0,0 +1,78 @@ +/* elided_label.cpp + * + * Wireshark - Network traffic analyzer + * By Gerald Combs <gerald@wireshark.org> + * Copyright 1998 Gerald Combs + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include "elided_label.h" + +#include <QFontMetrics> +#include <QResizeEvent> + +ElidedLabel::ElidedLabel(QWidget *parent) : + QLabel(parent), + small_text_(false) +{ + QFontMetrics fm(font()); + setMinimumWidth(fm.height() * 5); // em-widths +} + +void ElidedLabel::setUrl(const QString &url) +{ + url_ = url; + updateText(); +} + +void ElidedLabel::resizeEvent(QResizeEvent *) +{ + updateText(); +} + +void ElidedLabel::updateText() +{ + // XXX We should probably move text drawing to PaintEvent to match + // LabelStack. + int fudged_width = small_text_ ? width() * 1.2 : width(); + QString elided_text = fontMetrics().elidedText(full_text_, Qt::ElideMiddle, fudged_width); + QString label_text = small_text_ ? "<small><i>" : "<i>"; + + if (url_.length() > 0) { + label_text.append(QString("<a href=\"%1\">%2</a>") + .arg(url_) + .arg(elided_text) + ); + } else { + label_text += elided_text; + } + label_text += small_text_ ? "</i></small>" : "</i>"; + QLabel::setText(label_text); +} + +void ElidedLabel::clear() +{ + full_text_.clear(); + url_.clear(); + setToolTip(""); + updateText(); +} + +void ElidedLabel::setText(const QString &text) +{ + full_text_ = text; + updateText(); +} |