File indexing completed on 2024-05-05 04:57:29
0001 /* 0002 This file is part of Choqok, the KDE micro-blogging client 0003 0004 SPDX-FileCopyrightText: 2012 Mehrdad Momeny <mehrdad.momeny@gmail.com> 0005 0006 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0007 */ 0008 0009 #include "dummynotification.h" 0010 0011 #include <QIcon> 0012 #include <QMouseEvent> 0013 0014 #include <KLocalizedString> 0015 0016 #include "choqokappearancesettings.h" 0017 #include "choqoktools.h" 0018 #include "notifysettings.h" 0019 #include "postwidget.h" 0020 0021 DummyNotification::DummyNotification(const QFont &font, const QColor &color, const QColor &background, QWidget *parent) 0022 : QTextBrowser(parent), isMoving(false) 0023 { 0024 setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); 0025 setWindowOpacity(0.8); 0026 setWindowFlags(Qt::ToolTip); 0027 setFrameShape(QFrame::NoFrame); 0028 setOpenExternalLinks(false); 0029 setOpenLinks(false); 0030 setTextInteractionFlags(Qt::LinksAccessibleByMouse); 0031 document()->addResource(QTextDocument::ImageResource, QUrl(QLatin1String("img://profileImage")), QIcon::fromTheme(QLatin1String("choqok")).pixmap(48)); 0032 document()->addResource(QTextDocument::ImageResource, QUrl(QLatin1String("icon://close")), 0033 QIcon::fromTheme(QLatin1String("dialog-ok")).pixmap(16)); 0034 setText(baseText.arg(i18n("Choqok")).arg(i18n("KDE Rocks! :)")).arg(i18n("OK"))); 0035 connect(this, &DummyNotification::anchorClicked, this, &DummyNotification::slotProcessAnchor); 0036 0037 QString fntStr = QLatin1String("font-family:\"") + font.family() + QLatin1String("\"; font-size:") + QString::number(font.pointSize()) + QLatin1String("pt;"); 0038 fntStr += (font.bold() ? QLatin1String(" font-weight:bold;") : QString()) + (font.italic() ? QLatin1String(" font-style:italic;") : QString()); 0039 QString style = Choqok::UI::PostWidget::getBaseStyle().arg(Choqok::getColorString(color), Choqok::getColorString(background), fntStr); 0040 0041 setStyleSheet(style); 0042 } 0043 0044 DummyNotification::~DummyNotification() 0045 { 0046 disconnect(this, &DummyNotification::anchorClicked, this, &DummyNotification::slotProcessAnchor); 0047 } 0048 0049 void DummyNotification::mouseMoveEvent(QMouseEvent *ev) 0050 { 0051 QTextBrowser::mouseMoveEvent(ev); 0052 if (isMoving) { 0053 QPoint diff = ev->globalPos() - lastPressedPosition; 0054 lastPressedPosition = ev->globalPos(); 0055 QPoint newPos = pos() + diff; 0056 move(newPos); 0057 } 0058 } 0059 0060 void DummyNotification::mousePressEvent(QMouseEvent *ev) 0061 { 0062 QTextBrowser::mousePressEvent(ev); 0063 isMoving = true; 0064 lastPressedPosition = ev->globalPos(); 0065 } 0066 0067 void DummyNotification::mouseReleaseEvent(QMouseEvent *ev) 0068 { 0069 QTextBrowser::mouseReleaseEvent(ev); 0070 isMoving = false; 0071 } 0072 0073 void DummyNotification::slotProcessAnchor(const QUrl &url) 0074 { 0075 if (url.scheme() == QLatin1String("choqok")) { 0076 if (url.host() == QLatin1String("close")) { 0077 Q_EMIT positionSelected(pos()); 0078 } 0079 } 0080 } 0081 0082 #include "moc_dummynotification.cpp"