MauiKit Controls

share.mm
1#include "share.h"
2#include <QtCore>
3
4QString QfShareItem::stripHTMLTags(QString body)
5{
6 body.replace("<br>","");
7 body.replace("</br>","");
8 body.replace("</p>","");
9 body.replace("</td>","");
10 body.remove(QRegExp("<head>(.''')</head>"));
11 body.remove(QRegExp("<form(.''')</form>"));
12 body.remove(QRegExp( "<(.)[</sup>>]'''>"));
13
14 return body.trimmed();
15}
16
17bool QfShareItem::eventFilter(QObject *obj, QEvent* event)
18{
19 if(obj == this)
20 {
21 if(parentItem())
22 {
24 }
25 }
26
27return QObject::eventFilter(obj, event);
28}
29
30void QfShareItem::shareCurrentContent()
31{
33 if(!m_shareString.isEmpty() && parentItem)
34 {
36 NSView* view = reinterpret_cast<NSView *>(parentItem->window()->winId());
37 NSRect frame = NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height());
38
39 m_shareString = m_shareString.replace("<style type=quot;text/cssquot;>a {color:#44a51c;text-decoration:none;}</style>", "");
40 QString content = stripHTMLTags(m_shareString).trimmed();
41 NSMutableArray* datas = [NSMutableArray arrayWithObject: content.toNSString()];
42 if(!m_shareUrl.isEmpty())
43 {
44 NSURL* url = [NSURL URLWithString: m_shareUrl.toString().toNSString()];
45 if(url)
46 {
47 [datas addObject: url];
48 }
49 }
50 QfSharePicker* sharePicker = [[QfSharePicker alloc] initWithView:view frame:frame datasArray:datas onItemClicked:nil];
51 [sharePicker autorelease];
52 }
53}
54
55QfShareItem::QfShareItem(QQuickPaintedItem '''parent) :
56 QQuickPaintedItem(parent)
57{
58 m_shareString.clear();
59 m_shareUrl.clear();
60
61 connect(this, &QQuickPaintedItem::parentChanged, [this](QQuickItem''' newParent){
62
63 if(newParent)
64 {
65 newParent->setFiltersChildMouseEvents(true);
66 }
67 });
68 this->installEventFilter(this);
69
74}
75
76void QfShareItem::paint(QPainter *painter)
77{
78 try
79 {
80 Q_UNUSED(painter);
81 }
82 catch(std::exception& exception)
83 {
84 qDebug()<<"exception: "<<exception.what();
85 }
86}
87
88void QfShareItem::shareContent(QString text, QUrl url)
89{
90 if(!text.isEmpty())
91 {
92 m_shareString = text;
93 }
94
95if(!url.isEmpty())
96 {
97 m_shareUrl = url;
98 }
99
100shareCurrentContent();
101}
virtual bool eventFilter(QObject *watched, QEvent *event)
virtual QRectF boundingRect() const const
virtual bool event(QEvent *ev) override
QRectF mapRectToItem(const QQuickItem *item, const QRectF &rect) const const
QQuickItem * parentItem() const const
void setFiltersChildMouseEvents(bool filter)
QQuickWindow * window() const const
qreal height() const const
qreal width() const const
qreal x() const const
qreal y() const const
bool isEmpty() const const
QString & remove(QChar ch, Qt::CaseSensitivity cs)
QString & replace(QChar before, QChar after, Qt::CaseSensitivity cs)
NSString * toNSString() const const
QString trimmed() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)
bool isEmpty() const const
QString toString(FormattingOptions options) const const
WId winId() const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2024 The KDE developers.
Generated on Fri May 17 2024 11:56:16 by doxygen 1.10.0 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.