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;
|
qDebug() << "updateImage(bool) =" << error;
|
||||||
if(error) return;
|
if(error) return;
|
||||||
|
|
||||||
QPixmap p, q;
|
QPixmap p;
|
||||||
QSize img;
|
|
||||||
img.setHeight(ui.themePreview->height());
|
|
||||||
img.setWidth(ui.themePreview->width());
|
|
||||||
if(!error) {
|
if(!error) {
|
||||||
imgData = igetter.readAll();
|
imgData = igetter.readAll();
|
||||||
if(imgData.isNull()) return;
|
if(imgData.isNull()) return;
|
||||||
p.loadFromData(imgData);
|
p.loadFromData(imgData);
|
||||||
q = p.scaled(img, Qt::KeepAspectRatio, Qt::SmoothTransformation);
|
if(p.isNull()) {
|
||||||
ui.themePreview->setScaledContents(false);
|
|
||||||
if(q.isNull()) {
|
|
||||||
ui.themePreview->clear();
|
ui.themePreview->clear();
|
||||||
ui.themePreview->setText(tr("no theme preview"));
|
ui.themePreview->setText(tr("no theme preview"));
|
||||||
}
|
}
|
||||||
else ui.themePreview->setPixmap(q);
|
else
|
||||||
|
ui.themePreview->setPixmap(p);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" >
|
<layout class="QGridLayout" >
|
||||||
<item row="0" column="0" >
|
<item row="0" column="0" >
|
||||||
<widget class="QLabel" name="themePreview" >
|
<widget class="PreviewLabel" name="themePreview" >
|
||||||
<property name="sizePolicy" >
|
<property name="sizePolicy" >
|
||||||
<sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
|
<sizepolicy vsizetype="MinimumExpanding" hsizetype="MinimumExpanding" >
|
||||||
<horstretch>0</horstretch>
|
<horstretch>0</horstretch>
|
||||||
|
|
@ -126,6 +126,13 @@
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>PreviewLabel</class>
|
||||||
|
<extends>QLabel</extends>
|
||||||
|
<header>preview.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="rbutilqt.qrc" />
|
<include location="rbutilqt.qrc" />
|
||||||
</resources>
|
</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 \
|
installthemes.cpp \
|
||||||
uninstall.cpp \
|
uninstall.cpp \
|
||||||
uninstallwindow.cpp \
|
uninstallwindow.cpp \
|
||||||
browseof.cpp
|
browseof.cpp \
|
||||||
|
preview.cpp
|
||||||
|
|
||||||
HEADERS += rbutilqt.h \
|
HEADERS += rbutilqt.h \
|
||||||
install.h \
|
install.h \
|
||||||
|
|
@ -67,7 +68,8 @@ HEADERS += rbutilqt.h \
|
||||||
installthemes.h \
|
installthemes.h \
|
||||||
uninstall.h \
|
uninstall.h \
|
||||||
uninstallwindow.h \
|
uninstallwindow.h \
|
||||||
browseof.h
|
browseof.h \
|
||||||
|
preview.h
|
||||||
|
|
||||||
# Needed by QT on Win
|
# Needed by QT on Win
|
||||||
INCLUDEPATH = . irivertools zip zlib ../ipodpatcher ../sansapatcher
|
INCLUDEPATH = . irivertools zip zlib ../ipodpatcher ../sansapatcher
|
||||||
|
|
@ -88,7 +90,8 @@ FORMS += rbutilqtfrm.ui \
|
||||||
installtalkfrm.ui \
|
installtalkfrm.ui \
|
||||||
installthemesfrm.ui \
|
installthemesfrm.ui \
|
||||||
uninstallfrm.ui \
|
uninstallfrm.ui \
|
||||||
browseoffrm.ui
|
browseoffrm.ui \
|
||||||
|
previewfrm.ui
|
||||||
|
|
||||||
RESOURCES += rbutilqt.qrc
|
RESOURCES += rbutilqt.qrc
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue