summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2014-06-02 22:09:21 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2014-06-03 00:06:42 -0700
commitdbdff1c0afe958c00cae9344ba50fe31e43b243d (patch)
treef6ab983e25c3644d941eba7d1f76f1b7204aab1b
parent3595ad029408cae855dcf3d7fdbb03c1a02a6714 (diff)
downloadsubsurface-dbdff1c0afe958c00cae9344ba50fe31e43b243d.tar.gz
Change from QPixmap to QImage due to thread issues.
QPixmap cannot be accessed from outside the Main thread, but QImage can. so change that. Also, make the Photo widget display in Icon mode. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-ui/divepicturewidget.cpp8
-rw-r--r--qt-ui/divepicturewidget.h2
-rw-r--r--qt-ui/maintab.ui18
3 files changed, 17 insertions, 11 deletions
diff --git a/qt-ui/divepicturewidget.cpp b/qt-ui/divepicturewidget.cpp
index 916345346..e5824e608 100644
--- a/qt-ui/divepicturewidget.cpp
+++ b/qt-ui/divepicturewidget.cpp
@@ -1,6 +1,7 @@
#include "divepicturewidget.h"
#include <dive.h>
#include <qtconcurrentmap.h>
+#include <qdir.h>
void DivePictureDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
@@ -11,11 +12,11 @@ DivePictureModel::DivePictureModel(QObject *parent): QAbstractTableModel(parent)
{
}
-typedef QPair<QString, QPixmap> SPixmap;
+typedef QPair<QString, QImage> SPixmap;
typedef QList<SPixmap> SPixmapList;
SPixmap scaleImages(const QString& s) {
- QPixmap p = QPixmap(s).scaled(128,128, Qt::KeepAspectRatio);
+ QImage p = QImage(s).scaled(128,128, Qt::KeepAspectRatio);
SPixmap ret;
ret.first = s;
ret.second = p;
@@ -63,8 +64,9 @@ QVariant DivePictureModel::data(const QModelIndex &index, int role) const
QString key = stringPixmapCache.keys().at(index.row());
switch(role){
- case Qt::DisplayRole : ret = key; break;
+ case Qt::ToolTipRole : ret = key; break;
case Qt::DecorationRole : ret = stringPixmapCache[key]; break;
+ case Qt::DisplayRole : ret = QFileInfo(key).fileName();
}
return ret;
}
diff --git a/qt-ui/divepicturewidget.h b/qt-ui/divepicturewidget.h
index 9fb5465df..4660bd070 100644
--- a/qt-ui/divepicturewidget.h
+++ b/qt-ui/divepicturewidget.h
@@ -19,7 +19,7 @@ private:
// Currently, load the images on the fly
// Later, use a thread to load the images
// Later, save the thumbnails so we don't need to reopen every time.
- QHash<QString, QPixmap> stringPixmapCache;
+ QHash<QString, QImage> stringPixmapCache;
};
class DivePictureDelegate : QStyledItemDelegate {
diff --git a/qt-ui/maintab.ui b/qt-ui/maintab.ui
index 0998db22f..904a49304 100644
--- a/qt-ui/maintab.ui
+++ b/qt-ui/maintab.ui
@@ -289,8 +289,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>100</width>
- <height>30</height>
+ <width>662</width>
+ <height>649</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_5">
@@ -369,8 +369,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>399</width>
- <height>325</height>
+ <width>662</width>
+ <height>649</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_6">
@@ -679,8 +679,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>267</width>
- <height>115</height>
+ <width>662</width>
+ <height>649</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_7">
@@ -819,7 +819,11 @@
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
- <widget class="DivePictureWidget" name="photosView"/>
+ <widget class="DivePictureWidget" name="photosView">
+ <property name="viewMode">
+ <enum>QListView::IconMode</enum>
+ </property>
+ </widget>
</item>
</layout>
</widget>