Fix URL clicks in NOTE labels

This commit is contained in:
Craig Drummond
2018-01-10 18:32:44 +00:00
committed by Craig Drummond
parent 60315420d6
commit 5d713012a1
6 changed files with 27 additions and 42 deletions

View File

@@ -523,11 +523,6 @@
<extends>QLabel</extends>
<header>widgets/actionlabel.h</header>
</customwidget>
<customwidget>
<class>UrlNoteLabel</class>
<extends>QLabel</extends>
<header>widgets/notelabel.h</header>
</customwidget>
<customwidget>
<class>SplitLabelWidget</class>
<extends>QLabel</extends>

View File

@@ -29,10 +29,12 @@
UrlLabel::UrlLabel(QWidget *p)
: QLabel(p)
, pressed(false)
{
setCursor(QCursor(Qt::PointingHandCursor));
setContextMenuPolicy(Qt::NoContextMenu);
setTextInteractionFlags(Qt::TextBrowserInteraction);
setOpenExternalLinks(false);
connect(this, SIGNAL(linkActivated(QString)), this, SIGNAL(leftClickedUrl()));
}
void UrlLabel::setText(const QString &t)
@@ -47,19 +49,3 @@ void UrlLabel::setProperty(const char *name, const QVariant &value)
}
}
void UrlLabel::mousePressEvent(QMouseEvent *ev)
{
if (Qt::LeftButton==ev->buttons()) {
pressed=true;
}
}
void UrlLabel::mouseReleaseEvent(QMouseEvent *)
{
if (pressed) {
pressed=false;
if (this==QApplication::widgetAt(QCursor::pos())) {
emit leftClickedUrl();
}
}
}

View File

@@ -40,13 +40,6 @@ public:
Q_SIGNALS:
void leftClickedUrl();
protected:
void mousePressEvent(QMouseEvent *ev) override;
void mouseReleaseEvent(QMouseEvent *) override;
private:
bool pressed;
};
#endif // URLLABEL_H

View File

@@ -265,11 +265,6 @@
<extends>QLabel</extends>
<header>widgets/notelabel.h</header>
</customwidget>
<customwidget>
<class>PlainUrlNoteLabel</class>
<extends>QLabel</extends>
<header>widgets/notelabel.h</header>
</customwidget>
<customwidget>
<class>RatingWidget</class>
<extends>QWidget</extends>

View File

@@ -25,6 +25,7 @@
#include "support/utils.h"
#include <QVBoxLayout>
#include <QFont>
#include <QVariant>
static void init(QLabel *label)
{
@@ -32,7 +33,6 @@ static void init(QLabel *label)
label->setAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop);
label->setWordWrap(true);
label->setTextInteractionFlags(Qt::NoTextInteraction);
if (label->font().pointSize()>constMinFontSize) {
label->setFont(Utils::smallFont(label->font()));
}
@@ -61,9 +61,9 @@ static QLabel * init(QWidget *p, bool url)
return label;
}
void NoteLabel::setText(QLabel *l, const QString &text)
QString NoteLabel::formatText(const QString &text)
{
l->setText(tr("<i><b>NOTE:</b> %1</i>").arg(text));
return tr("<i><b>NOTE:</b> %1</i>").arg(text);
}
NoteLabel::NoteLabel(QWidget *parent)
@@ -72,6 +72,13 @@ NoteLabel::NoteLabel(QWidget *parent)
label=static_cast<StateLabel *>(init(this, false));
}
void NoteLabel::setProperty(const char *name, const QVariant &value)
{
if (name && !strcmp(name, "text") && QVariant::String==value.type()) {
setText(value.toString());
}
}
UrlNoteLabel::UrlNoteLabel(QWidget *parent)
: QWidget(parent)
{
@@ -79,6 +86,13 @@ UrlNoteLabel::UrlNoteLabel(QWidget *parent)
connect(label, SIGNAL(leftClickedUrl()), this, SIGNAL(leftClickedUrl()));
}
void UrlNoteLabel::setProperty(const char *name, const QVariant &value)
{
if (name && !strcmp(name, "text") && QVariant::String==value.type()) {
setText(value.toString());
}
}
PlainNoteLabel::PlainNoteLabel(QWidget *parent)
: StateLabel(parent)
{

View File

@@ -32,11 +32,12 @@ class NoteLabel : public QWidget
{
Q_OBJECT
public:
static void setText(QLabel *l, const QString &text);
static QString formatText(const QString &text);
NoteLabel(QWidget *parent=nullptr);
void setText(const QString &text) { setText(label, text); }
void setText(const QString &text) { label->setText(formatText(text)); }
void appendText(const QString &text) { label->setText(label->text()+text); }
QString text() const { return label->text(); }
void setProperty(const char *name, const QVariant &value);
void setOn(bool o) { label->setOn(o); }
private:
StateLabel *label;
@@ -47,9 +48,10 @@ class UrlNoteLabel : public QWidget
Q_OBJECT
public:
UrlNoteLabel(QWidget *parent=nullptr);
void setText(const QString &text) { NoteLabel::setText(label, text); }
void setText(const QString &text) { label->setText(NoteLabel::formatText(text)); }
void appendText(const QString &text) { label->setText(label->text()+text); }
QString text() const { return label->text(); }
void setProperty(const char *name, const QVariant &value);
Q_SIGNALS:
void leftClickedUrl();
private:
@@ -60,14 +62,14 @@ class PlainNoteLabel : public StateLabel
{
public:
PlainNoteLabel(QWidget *parent=nullptr);
void setText(const QString &text) { NoteLabel::setText(this, text); }
void setText(const QString &text) { StateLabel::setText(NoteLabel::formatText(text)); }
};
class PlainUrlNoteLabel : public UrlLabel
{
public:
PlainUrlNoteLabel(QWidget *parent=nullptr);
void setText(const QString &text) { NoteLabel::setText(this, text); }
void setText(const QString &text) { UrlLabel::setText(NoteLabel::formatText(text)); }
};
#endif