1
0
Fork 0
forked from len0rd/rockbox

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
This commit is contained in:
Dominik Wenger 2007-08-21 18:24:55 +00:00
parent f01cbee1b9
commit 0ef0d6730a
6 changed files with 255 additions and 12 deletions

View file

@ -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);
}
}

View file

@ -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>

107
rbutil/rbutilqt/preview.cpp Normal file
View file

@ -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);
}

70
rbutil/rbutilqt/preview.h Normal file
View file

@ -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

View file

@ -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>

View file

@ -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