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"