//brows.h
#include <qapplication.h>
#include <qdir.h>
#include <qevent.h>
#include <qfileinfo.h>
#include <qimage.h>
#include <QTime>
#include "pictureflow.h"
class Browser: public PictureFlow
{
public:
QLabel* label;
QString filename;
QStringList files;
int cnt;
Browser(): PictureFlow()
{
setWindowTitle("PictureFlow");
findFiles();
label = new QLabel(this);
QPalette pa;
pa.setColor(QPalette::WindowText,Qt::white);
label->setPalette(pa);
QFont labelfont("Times", 20, QFont::Bold);
label->setFont(labelfont);
cnt = 2;
filename = files[cnt];
connect(this,SIGNAL(doshowpre()),this,SLOT(setLabelpre()));
connect(this,SIGNAL(doshowpre()),this,SLOT(setLabelnext()));
}
void findFiles()
{
//files << "*.XML"<<"*.xml";
QDir dir("xml");
//dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
//dir.setNameFilters(files);
QFileInfoList list = dir.entryInfoList();
for (int i = 0; i < list.size(); ++i)
{
QFileInfo fileInfo = list.at(i);
files.append(dir.relativeFilePath(fileInfo.fileName()));
}
}
void keyPressEvent(QKeyEvent* event)
{
if(event->key() == Qt::Key_Escape || event->key() == Qt::Key_Enter ||
event->key() == Qt::Key_Return)
{
event->accept();
close();
}
// checking the speed of rendering
if(event->key() == Qt::Key_F10)
if(event->modifiers() == Qt::AltModifier)
{
qDebug("benchmarking.... please wait");
const int blit_count = 10;
QTime stopwatch;
stopwatch.start();
for(int i = 0; i < blit_count; i++)
{
render(); repaint(); QApplication::flush(); QApplication::syncX();
render(); repaint(); QApplication::flush(); QApplication::syncX();
render(); repaint(); QApplication::flush(); QApplication::syncX();
render(); repaint(); QApplication::flush(); QApplication::syncX();
render(); repaint(); QApplication::flush(); QApplication::syncX();
render(); repaint(); QApplication::flush(); QApplication::syncX();
render(); repaint(); QApplication::flush(); QApplication::syncX();
render(); repaint(); QApplication::flush(); QApplication::syncX();
render(); repaint(); QApplication::flush(); QApplication::syncX();
render(); repaint(); QApplication::flush(); QApplication::syncX();
}
QString msg;
int elapsed = stopwatch.elapsed();
if( elapsed > 0 )
msg = QString("FPS: %1").arg( blit_count*10*1000.0/elapsed );
else
msg = QString("Too fast. Increase blit_count");
setWindowTitle( msg );
event->accept();
return;
}
// for debugging only: Alt+F11 cycles the reflection effect
if(event->key() == Qt::Key_F11)
if(event->modifiers() == Qt::AltModifier)
{
qDebug("changing reflection effect...");
switch(reflectionEffect())
{
//case NoReflection: setReflectionEffect(PlainReflection); break;
case PlainReflection: setReflectionEffect(BlurredReflection); break;
case BlurredReflection: setReflectionEffect(PlainReflection); break;
default: setReflectionEffect(PlainReflection); break;
}
event->accept();
return;
}
PictureFlow::keyPressEvent(event);
}
public slots:
void setLabelpre()
{
if (cnt == 2)
{
cnt = files.size()-2;
}
else
{
cnt--;
}
filename = files[cnt];
label->setText(filename);
label->show();
}
void setLabelnext()
{
if (cnt == files.size())
{
cnt = 2;
}
else
{
cnt++;
}
filename = files[cnt];
label->setText(filename);
label->show();
}
};