From c876d3bbefe0dc00c27ca0c12d29da5874946962 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Wed, 15 Dec 2021 21:04:28 +0100 Subject: rbutil: Merge rbutil with utils folder. rbutil uses several components from the utils folder, and can be considered part of utils too. Having it in a separate folder is an arbitrary split that doesn't help anymore these days, so merge them. This also allows other utils to easily use libtools.make without the need to navigate to a different folder. Change-Id: I3fc2f4de19e3e776553efb5dea5f779dfec0dc21 --- utils/rbutilqt/preview.cpp | 122 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 utils/rbutilqt/preview.cpp (limited to 'utils/rbutilqt/preview.cpp') diff --git a/utils/rbutilqt/preview.cpp b/utils/rbutilqt/preview.cpp new file mode 100644 index 0000000000..5006a03a09 --- /dev/null +++ b/utils/rbutilqt/preview.cpp @@ -0,0 +1,122 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * + * All files in this archive are subject to the GNU General Public License. + * See the file COPYING in the source tree root for full license agreement. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + +#include +#include + +#include "preview.h" + +PreviewDlg::PreviewDlg(QWidget *parent) : QDialog(parent) +{ + ui.setupUi(this); + this->setModal(true); + this->setMouseTracking(true); + this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); + +} + +void PreviewDlg::setText(QString text) +{ + ui.themePreview->setText(text); +} + +void PreviewDlg::setPixmap(QPixmap p) +{ + ui.themePreview->setFixedSize(p.size()); + this->resize(QSize(10,10)); + ui.themePreview->setPixmap(p); +} + +void PreviewDlg::mouseMoveEvent(QMouseEvent * event) +{ + (void) event; + this->close(); +} + +void PreviewDlg::leaveEvent(QEvent * event) +{ + (void) event; + this->close(); +} + + +void PreviewDlg::changeEvent(QEvent *e) +{ + if(e->type() == QEvent::LanguageChange) { + ui.retranslateUi(this); + } else { + QWidget::changeEvent(e); + } +} + +PreviewLabel::PreviewLabel(QWidget * parent, Qt::WindowFlags f) + :QLabel(parent,f) +{ + this->setMouseTracking(true); + + preview = new PreviewDlg(parent); + + hovertimer.setInterval(1500); // wait for 1.5 seconds before showing the Fullsize Preview + hovertimer.setSingleShot(true); + connect(&hovertimer,SIGNAL(timeout ()),this,SLOT(timeout())); +} + +void PreviewLabel::mouseMoveEvent(QMouseEvent * event) +{ + hovertimer.start(); + mousepos = event->globalPos(); +} +void PreviewLabel::enterEvent(QEvent * event) +{ + (void) event; + hovertimer.start(); +} +void PreviewLabel::leaveEvent(QEvent * event) +{ + (void) event; + hovertimer.stop(); +} + +void PreviewLabel::timeout() +{ + preview->move(mousepos.x() - (preview->width() / 2), + mousepos.y() - (preview->height() / 2)); + preview->setVisible(true); +} + +void PreviewLabel::setPixmap(QPixmap p) +{ + // set the image for the Fullsize Preview + preview->setPixmap(p); + + //scale the image for use in the label + QSize img; + img.setHeight(this->height()); + img.setWidth(this->width()); + QPixmap q; + q = p.scaled(img, Qt::KeepAspectRatio, Qt::SmoothTransformation); + this->setScaledContents(false); + QLabel::setPixmap(q); +} + +void PreviewLabel::setText(QString text) +{ + QLabel::setText(text); + preview->setText(text); +} + -- cgit v1.2.3