summaryrefslogtreecommitdiff
path: root/rbutil
diff options
context:
space:
mode:
authorDominik Wenger <domonoky@googlemail.com>2007-08-21 18:24:55 +0000
committerDominik Wenger <domonoky@googlemail.com>2007-08-21 18:24:55 +0000
commit0ef0d6730aee4c5e9dd49d0e198fd5df36f6ec71 (patch)
tree60c8c864bf0f9209f704016f337fa582d3b73de6 /rbutil
parentf01cbee1b95f8520dc65978d0b0782003facf150 (diff)
rbutilqt: Added a fullsize preview for the Theme installation. It pops up when you hover over the normal preview.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14409 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'rbutil')
-rw-r--r--rbutil/rbutilqt/installthemes.cpp12
-rw-r--r--rbutil/rbutilqt/installthemesfrm.ui9
-rw-r--r--rbutil/rbutilqt/preview.cpp107
-rw-r--r--rbutil/rbutilqt/preview.h70
-rw-r--r--rbutil/rbutilqt/previewfrm.ui60
-rw-r--r--rbutil/rbutilqt/rbutilqt.pro9
6 files changed, 255 insertions, 12 deletions
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 @@
</property>
<layout class="QGridLayout" >
<item row="0" column="0" >
- <widget class="QLabel" name="themePreview" >
+ <widget class="PreviewLabel" name="themePreview" >
<property name="sizePolicy" >
<sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
<horstretch>0</horstretch>
@@ -126,6 +126,13 @@
</item>
</layout>
</widget>
+ <customwidgets>
+ <customwidget>
+ <class>PreviewLabel</class>
+ <extends>QLabel</extends>
+ <header>preview.h</header>
+ </customwidget>
+ </customwidgets>
<resources>
<include location="rbutilqt.qrc" />
</resources>
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 <QtGui>
+
+#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 <QtGui>
+#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 @@
+<ui version="4.0" >
+ <class>PreviewFrm</class>
+ <widget class="QDialog" name="PreviewFrm" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="geometry" >
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>335</width>
+ <height>228</height>
+ </rect>
+ </property>
+ <property name="windowTitle" >
+ <string>Preview</string>
+ </property>
+ <layout class="QHBoxLayout" >
+ <property name="spacing" >
+ <number>0</number>
+ </property>
+ <property name="leftMargin" >
+ <number>0</number>
+ </property>
+ <property name="topMargin" >
+ <number>0</number>
+ </property>
+ <property name="rightMargin" >
+ <number>0</number>
+ </property>
+ <property name="bottomMargin" >
+ <number>0</number>
+ </property>
+ <item>
+ <widget class="QLabel" name="themePreview" >
+ <property name="enabled" >
+ <bool>true</bool>
+ </property>
+ <property name="sizePolicy" >
+ <sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
+ <horstretch>0</horstretch>
+ <verstretch>0</verstretch>
+ </sizepolicy>
+ </property>
+ <property name="text" >
+ <string/>
+ </property>
+ <property name="scaledContents" >
+ <bool>true</bool>
+ </property>
+ <property name="alignment" >
+ <set>Qt::AlignCenter</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>
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