From 08b627c59c98d67d057e061612f165b4ff3cb966 Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 22 Nov 2019 17:46:39 +0100 Subject: Get rid of HoverWindow It depended on X11, because the hover center wasn't where it was supposed to be, so I worked around it with Xfixes.h, which unfortunately isn't even available in MSYS2. So another fix for compiling this under Windows. --- hoverwindow.cpp | 138 -------------------------------------------------------- 1 file changed, 138 deletions(-) delete mode 100644 hoverwindow.cpp (limited to 'hoverwindow.cpp') diff --git a/hoverwindow.cpp b/hoverwindow.cpp deleted file mode 100644 index 101265c..0000000 --- a/hoverwindow.cpp +++ /dev/null @@ -1,138 +0,0 @@ -/* - 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. -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "hoverwindow.h" -#include "smglobals.h" - -HoverWindow::HoverWindow(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f), mAlignCenter(false), mDesktopHeight(-1){ - setVisible(false); - QSettings s; - int opacity = s.value("ui/hoveropacity", 7).toInt(); - setWindowOpacity(opacity / 10.0); - setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum); - setStyleSheet("QLabel { background-color: #D6A583; color: black; border-width: 2px; border-style: solid; padding: 4px; }"); - mDesktopHeight = qApp->screens().at(0)->availableGeometry().height(); - QSize curSize = SmGlobals::instance()->cursorSize(); - setHoverOffset(QPoint(curSize.width() + 30, 0)); - mMainLayout = new QHBoxLayout; - mMainLayout->setSizeConstraint(QLayout::SetMinAndMaxSize); - mMainLayout->setContentsMargins(4, 4, 4, 4); - mLabel = new QLabel; - mMainLayout->addWidget(mLabel); - setLayout(mMainLayout); -} - -void HoverWindow::setContent(const QString &parent, const QStringList &children){ - mAlignCenter = false; - QString curText = QString("

%1

").arg(parent); - curText.append("
    "); - int count = qMin(6, children.size()); - int i = 0; - for(i = 0; i < count; ++i){ - curText.append(QString("
  • %1
  • ").arg(children.at(i))); - } - if(i < children.count()){ - curText.append("
  • ...
  • "); - } - curText.append("
"); - QTextDocument doc; - doc.setHtml(curText); - mLabel->setText(curText); - setMinimumSize(doc.size().width() + 10, doc.size().height() + 10); - setMaximumSize(doc.size().width() + 10, doc.size().height() + 10); - raise(); -} - -void HoverWindow::setPixmap(const QPixmap &pm, bool scale){ - mAlignCenter = true; - QPixmap curPm = pm; - if(scale){ - if(curPm.height() > 500){ - curPm = curPm.scaledToHeight(500); - } - if(curPm.width() > 300){ - curPm = curPm.scaledToWidth(300); - } - } - mLabel->setPixmap(curPm); - setMaximumSize(curPm.width() + 10, curPm.height() + 10); - setMinimumSize(curPm.width() + 10, curPm.height() + 10); - raise(); -} - -void HoverWindow::setData(const QList &data){ - if(data.isEmpty()){ - return; - } - if(data.at(0).canConvert(QVariant::Pixmap)){ - setPixmap(data.at(0).value()); - return; - } - if(data.size() != 2){ - return; - } - QStringList dataList = data.at(1).toStringList(); - if(dataList.isEmpty()){ - dataList << tr("<empty>"); - } - setContent(data.at(0).toString(), dataList); -} - -void HoverWindow::setCaption(const QString &caption){ - const QPixmap *pm = mLabel->pixmap(); - if(!pm){ - return; - } - QFontMetrics fm = qApp->fontMetrics(); - QString elidedCap = fm.elidedText(caption, Qt::ElideLeft, pm->size().width() - 18, Qt::TextSingleLine); - QStaticText myCap(elidedCap); - QImage img = pm->toImage(); - QPainter *p = new QPainter(&img); - QColor bgColor(Qt::white); - p->setBrush(QBrush(bgColor)); - p->setPen(Qt::NoPen); - p->setOpacity(0.4); - qreal xStart = (mLabel->width() - myCap.size().width() - 9) / 2.0; - p->drawRect(QRect(QPoint(xStart, 5), QSize(myCap.size().toSize()))); - p->setOpacity(1.0); - p->setPen(Qt::black); - p->drawStaticText(xStart, 5, myCap); - delete p; - mLabel->setPixmap(QPixmap::fromImage(img)); -} - -void HoverWindow::setPos(){ - const QPoint globalPos(QCursor::pos()); - QPoint hoverPos(globalPos.x() + mHoverOffset.x(), globalPos.y() + mHoverOffset.y()); - if(mAlignCenter){ - hoverPos = QPoint(hoverPos.x(), hoverPos.y() - height() / 2); - } - if(hoverPos.y() < 0){ - hoverPos = QPoint(hoverPos.x(), 0); - } - if(hoverPos.y() + height() > mDesktopHeight){ - hoverPos = QPoint(hoverPos.x(), mDesktopHeight - height()); - } - move(hoverPos); -} -- cgit v1.2.3-70-g09d2