summaryrefslogtreecommitdiffstats
path: root/viewer.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2016-11-27 06:52:50 +0100
committerArno <arno@disconnect.de>2016-11-27 06:52:50 +0100
commit9c89e2f83415c876f28f15ebff31c8325754a936 (patch)
tree81262fcd178af3071187cf89b415fc70cdb8d977 /viewer.cpp
parentd1cf6c418855004a249d44fd383c889cbd1e7662 (diff)
downloadShemovCleaner-9c89e2f83415c876f28f15ebff31c8325754a936.tar.gz
ShemovCleaner-9c89e2f83415c876f28f15ebff31c8325754a936.tar.bz2
ShemovCleaner-9c89e2f83415c876f28f15ebff31c8325754a936.zip
Add picture viewer
Opens on doubleclick when it's image/*.
Diffstat (limited to 'viewer.cpp')
-rw-r--r--viewer.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/viewer.cpp b/viewer.cpp
new file mode 100644
index 0000000..e8d5f7f
--- /dev/null
+++ b/viewer.cpp
@@ -0,0 +1,79 @@
+#include <QLabel>
+#include <QHBoxLayout>
+#include <QDesktopWidget>
+#include <QApplication>
+#include <QFileInfo>
+#include <QMimeDatabase>
+#include <QDir>
+#include <QWheelEvent>
+
+#include "viewer.h"
+
+Viewer::Viewer(QWidget *parent, Qt::WindowFlags f) : QWidget(parent, f), mCurIndex(-1) {
+ QDesktopWidget *dw = qApp->desktop();
+ mLabel = new QLabel;
+ mLabel->setMaximumSize(dw->size() - QSize(20, 20));
+ QHBoxLayout *mainLayout = new QHBoxLayout;
+ mainLayout->addWidget(mLabel);
+ setLayout(mainLayout);
+}
+
+void Viewer::setFile(const QString &file, bool allFiles){
+ mCurIndex = -1;
+ QFileInfo fi(file);
+ QMimeDatabase db;
+ QMimeType mt = db.mimeTypeForFile(fi);
+ if(mt.name().startsWith("image")){
+ mFiles << fi.absoluteFilePath();
+ }
+ if(allFiles){
+ foreach(auto curFi, fi.dir().entryInfoList()){
+ if(!mFiles.contains(curFi.absoluteFilePath())){
+ QMimeType mt = db.mimeTypeForFile(curFi);
+ if(mt.name().startsWith("image")){
+ mFiles << curFi.absoluteFilePath();
+ }
+ }
+ }
+ }
+ if(!mFiles.isEmpty()){
+ mCurIndex = 0;
+ displayFile(mCurIndex);
+ }
+}
+
+void Viewer::wheelEvent(QWheelEvent *event){
+ QPoint numDeg = event->angleDelta() / 8;
+ if(numDeg.y() < 0){ //this is scrolling down -> next!
+ if(mCurIndex + 1 >= mFiles.count()){
+ mCurIndex = 0;
+ }else{
+ ++mCurIndex;
+ }
+ }else if(numDeg.y() > 0){
+ if(mCurIndex - 1 < 0){
+ mCurIndex = mFiles.count() - 1;
+ }else{
+ --mCurIndex;
+ }
+ }
+ displayFile(mCurIndex);
+ event->accept();
+}
+
+void Viewer::displayFile(int index){
+ if(index < 0){
+ return;
+ }
+ QPixmap pm(mFiles.at(mCurIndex));
+ if(pm.width() > mLabel->maximumWidth()){
+ pm = pm.scaledToWidth(mLabel->maximumWidth());
+ }
+ if(pm.height() > mLabel->maximumHeight()){
+ pm = pm.scaledToHeight(mLabel->maximumHeight());
+ }
+ mLabel->setPixmap(pm);
+ adjustSize();
+ QString winTitle = QString(tr("%1 Viewer [%2]")).arg(qApp->applicationName()).arg(mFiles.at(mCurIndex));
+ setWindowTitle(winTitle);
+}