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:
parent
f01cbee1b9
commit
0ef0d6730a
6 changed files with 255 additions and 12 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
107
rbutil/rbutilqt/preview.cpp
Normal 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
70
rbutil/rbutilqt/preview.h
Normal 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
|
60
rbutil/rbutilqt/previewfrm.ui
Normal file
60
rbutil/rbutilqt/previewfrm.ui
Normal 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>
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue