diff options
author | Dominik Wenger <domonoky@googlemail.com> | 2007-08-21 18:24:55 +0000 |
---|---|---|
committer | Dominik Wenger <domonoky@googlemail.com> | 2007-08-21 18:24:55 +0000 |
commit | 0ef0d6730aee4c5e9dd49d0e198fd5df36f6ec71 (patch) | |
tree | 60c8c864bf0f9209f704016f337fa582d3b73de6 /rbutil | |
parent | f01cbee1b95f8520dc65978d0b0782003facf150 (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.cpp | 12 | ||||
-rw-r--r-- | rbutil/rbutilqt/installthemesfrm.ui | 9 | ||||
-rw-r--r-- | rbutil/rbutilqt/preview.cpp | 107 | ||||
-rw-r--r-- | rbutil/rbutilqt/preview.h | 70 | ||||
-rw-r--r-- | rbutil/rbutilqt/previewfrm.ui | 60 | ||||
-rw-r--r-- | rbutil/rbutilqt/rbutilqt.pro | 9 |
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 |