summaryrefslogtreecommitdiffstats
path: root/logic/screenshots
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2014-02-25 01:21:46 +0100
committerPetr Mrázek <peterix@gmail.com>2014-02-25 01:23:33 +0100
commit9d4e840a6e1a7169a2863fa1ff1812f8fe19e615 (patch)
tree5de17defaea9b4fc237493f0d19c00a096c8205b /logic/screenshots
parentcb5cfe724208beb7d506868fc4e50d9f13e28a53 (diff)
downloadMultiMC-9d4e840a6e1a7169a2863fa1ff1812f8fe19e615.tar
MultiMC-9d4e840a6e1a7169a2863fa1ff1812f8fe19e615.tar.gz
MultiMC-9d4e840a6e1a7169a2863fa1ff1812f8fe19e615.tar.lz
MultiMC-9d4e840a6e1a7169a2863fa1ff1812f8fe19e615.tar.xz
MultiMC-9d4e840a6e1a7169a2863fa1ff1812f8fe19e615.zip
Screenshots: Optimize image loading and memory use, fix list and button layout.
Diffstat (limited to 'logic/screenshots')
-rw-r--r--logic/screenshots/Screenshot.cpp14
-rw-r--r--logic/screenshots/Screenshot.h4
-rw-r--r--logic/screenshots/ScreenshotList.cpp3
3 files changed, 20 insertions, 1 deletions
diff --git a/logic/screenshots/Screenshot.cpp b/logic/screenshots/Screenshot.cpp
new file mode 100644
index 00000000..882e491f
--- /dev/null
+++ b/logic/screenshots/Screenshot.cpp
@@ -0,0 +1,14 @@
+#include "Screenshot.h"
+#include <QImage>
+#include <QIcon>
+QIcon ScreenShot::getImage()
+{
+ if(!imageloaded)
+ {
+ QImage image(file);
+ QImage thumbnail = image.scaledToWidth(256, Qt::SmoothTransformation);
+ m_image = QIcon(QPixmap::fromImage(thumbnail));
+ imageloaded = true;
+ }
+ return m_image;
+}
diff --git a/logic/screenshots/Screenshot.h b/logic/screenshots/Screenshot.h
index 194e70e5..815c0d47 100644
--- a/logic/screenshots/Screenshot.h
+++ b/logic/screenshots/Screenshot.h
@@ -3,9 +3,13 @@
#include <QDateTime>
#include <QString>
#include <memory>
+#include <QIcon>
struct ScreenShot
{
+ QIcon getImage();
+ QIcon m_image;
+ bool imageloaded = false;
QDateTime timestamp;
QString file;
QString url;
diff --git a/logic/screenshots/ScreenshotList.cpp b/logic/screenshots/ScreenshotList.cpp
index def1bdf7..8a64dc36 100644
--- a/logic/screenshots/ScreenshotList.cpp
+++ b/logic/screenshots/ScreenshotList.cpp
@@ -25,7 +25,7 @@ QVariant ScreenshotList::data(const QModelIndex &index, int role) const
switch (role)
{
case Qt::DecorationRole:
- return QIcon(m_screenshots.at(index.row())->file);
+ return m_screenshots.at(index.row())->getImage();
case Qt::DisplayRole:
return m_screenshots.at(index.row())->timestamp.toString("yyyy-MM-dd HH:mm:ss");
case Qt::ToolTipRole:
@@ -80,6 +80,7 @@ void ScreenshotLoadTask::executeTask()
m_list->loadShots(m_results);
emitSucceeded();
}
+
void ScreenshotList::deleteSelected(ScreenshotDialog *dialog)
{
auto screens = dialog->selected();