diff --git a/rbutil/rbutilqt/installthemes.cpp b/rbutil/rbutilqt/installthemes.cpp
index 53cf41d496..ae7b02d978 100644
--- a/rbutil/rbutilqt/installthemes.cpp
+++ b/rbutil/rbutilqt/installthemes.cpp
@@ -191,21 +191,17 @@ void ThemesInstallWindow::updateImage(bool error)
qDebug() << "updateImage(bool) =" << error;
if(error) return;
- QPixmap p, q;
- QSize img;
- img.setHeight(ui.themePreview->height());
- img.setWidth(ui.themePreview->width());
+ QPixmap p;
if(!error) {
imgData = igetter.readAll();
if(imgData.isNull()) return;
p.loadFromData(imgData);
- q = p.scaled(img, Qt::KeepAspectRatio, Qt::SmoothTransformation);
- ui.themePreview->setScaledContents(false);
- if(q.isNull()) {
+ if(p.isNull()) {
ui.themePreview->clear();
ui.themePreview->setText(tr("no theme preview"));
}
- else ui.themePreview->setPixmap(q);
+ else
+ ui.themePreview->setPixmap(p);
}
}
diff --git a/rbutil/rbutilqt/installthemesfrm.ui b/rbutil/rbutilqt/installthemesfrm.ui
index 42d0550d00..afe7ff39a0 100644
--- a/rbutil/rbutilqt/installthemesfrm.ui
+++ b/rbutil/rbutilqt/installthemesfrm.ui
@@ -49,7 +49,7 @@
-
-
+
0
@@ -126,6 +126,13 @@
+
+
+ PreviewLabel
+ QLabel
+
+
+
diff --git a/rbutil/rbutilqt/preview.cpp b/rbutil/rbutilqt/preview.cpp
new file mode 100644
index 0000000000..6fff0d5943
--- /dev/null
+++ b/rbutil/rbutilqt/preview.cpp
@@ -0,0 +1,107 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2007 by Dominik Wenger
+ * $Id: preview.cpp 13990 2007-07-25 22:26:10Z domonoky $
+ *
+ * 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 "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)
+{
+ this->setFixedSize(p.size());
+ ui.themePreview->setPixmap(p);
+}
+
+void PreviewDlg::mouseMoveEvent(QMouseEvent * event)
+{
+ this->close();
+}
+
+void PreviewDlg::leaveEvent(QEvent * event)
+{
+ this->close();
+}
+
+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();
+ mousex = event->globalX();
+ mousey = event->globalY();
+}
+void PreviewLabel::enterEvent(QEvent * event)
+{
+ hovertimer.start();
+}
+void PreviewLabel::leaveEvent(QEvent * event)
+{
+ hovertimer.stop();
+}
+
+void PreviewLabel::timeout()
+{
+ preview->move(mousex-(preview->width()/2) ,mousey-(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);
+}
+
diff --git a/rbutil/rbutilqt/preview.h b/rbutil/rbutilqt/preview.h
new file mode 100644
index 0000000000..97a2de6518
--- /dev/null
+++ b/rbutil/rbutilqt/preview.h
@@ -0,0 +1,70 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ *
+ * Copyright (C) 2007 by Dominik Wenger
+ * $Id: preview.h 13990 2007-07-25 22:26:10Z domonoky $
+ *
+ * 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.
+ *
+ ****************************************************************************/
+
+#ifndef PREVIEW_H
+#define PREVIEW_H
+
+#include
+#include "ui_previewfrm.h"
+
+
+class PreviewDlg : public QDialog
+{
+ Q_OBJECT
+
+public:
+ PreviewDlg(QWidget *parent = 0);
+ void setPixmap(QPixmap p);
+ void setText(QString text);
+
+private slots:
+ void mouseMoveEvent(QMouseEvent * event);
+ void leaveEvent(QEvent * event);
+
+private:
+ Ui::PreviewFrm ui;
+
+
+};
+
+
+class PreviewLabel : public QLabel
+{
+ Q_OBJECT
+
+public:
+ PreviewLabel(QWidget * parent = 0, Qt::WindowFlags f = 0);
+
+ void setPixmap(QPixmap p);
+ void setText(QString text);
+private slots:
+ void mouseMoveEvent(QMouseEvent * event);
+ void enterEvent(QEvent * event);
+ void leaveEvent(QEvent * event);
+ void timeout();
+
+private:
+ QTimer hovertimer;
+ int mousex;
+ int mousey;
+ PreviewDlg* preview;
+};
+
+
+#endif
diff --git a/rbutil/rbutilqt/previewfrm.ui b/rbutil/rbutilqt/previewfrm.ui
new file mode 100644
index 0000000000..e336019b3f
--- /dev/null
+++ b/rbutil/rbutilqt/previewfrm.ui
@@ -0,0 +1,60 @@
+
+ PreviewFrm
+
+
+ true
+
+
+
+ 0
+ 0
+ 335
+ 228
+
+
+
+ Preview
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+ -
+
+
+ true
+
+
+
+ 0
+ 0
+
+
+
+
+
+
+ true
+
+
+ Qt::AlignCenter
+
+
+
+
+
+
+
+
diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro
index 708dde052d..9d7d14e59b 100644
--- a/rbutil/rbutilqt/rbutilqt.pro
+++ b/rbutil/rbutilqt/rbutilqt.pro
@@ -33,7 +33,8 @@ SOURCES += rbutilqt.cpp \
installthemes.cpp \
uninstall.cpp \
uninstallwindow.cpp \
- browseof.cpp
+ browseof.cpp \
+ preview.cpp
HEADERS += rbutilqt.h \
install.h \
@@ -67,7 +68,8 @@ HEADERS += rbutilqt.h \
installthemes.h \
uninstall.h \
uninstallwindow.h \
- browseof.h
+ browseof.h \
+ preview.h
# Needed by QT on Win
INCLUDEPATH = . irivertools zip zlib ../ipodpatcher ../sansapatcher
@@ -88,7 +90,8 @@ FORMS += rbutilqtfrm.ui \
installtalkfrm.ui \
installthemesfrm.ui \
uninstallfrm.ui \
- browseoffrm.ui
+ browseoffrm.ui \
+ previewfrm.ui
RESOURCES += rbutilqt.qrc