diff options
author | Petr Mrázek <peterix@gmail.com> | 2014-02-25 01:21:46 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2014-02-25 01:23:33 +0100 |
commit | 9d4e840a6e1a7169a2863fa1ff1812f8fe19e615 (patch) | |
tree | 5de17defaea9b4fc237493f0d19c00a096c8205b | |
parent | cb5cfe724208beb7d506868fc4e50d9f13e28a53 (diff) | |
download | MultiMC-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.
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | gui/dialogs/ScreenshotDialog.ui | 31 | ||||
-rw-r--r-- | logic/screenshots/Screenshot.cpp | 14 | ||||
-rw-r--r-- | logic/screenshots/Screenshot.h | 4 | ||||
-rw-r--r-- | logic/screenshots/ScreenshotList.cpp | 3 |
5 files changed, 38 insertions, 15 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index da7b0e0b..ee836cd2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -465,6 +465,7 @@ logic/lists/JavaVersionList.cpp # the screenshots feature logic/screenshots/Screenshot.h +logic/screenshots/Screenshot.cpp logic/screenshots/ScreenshotList.h logic/screenshots/ScreenshotList.cpp logic/screenshots/ImgurUpload.h diff --git a/gui/dialogs/ScreenshotDialog.ui b/gui/dialogs/ScreenshotDialog.ui index 4e42a548..eb3dafba 100644 --- a/gui/dialogs/ScreenshotDialog.ui +++ b/gui/dialogs/ScreenshotDialog.ui @@ -38,6 +38,9 @@ <property name="isWrapping" stdset="0"> <bool>true</bool> </property> + <property name="resizeMode"> + <enum>QListView::Adjust</enum> + </property> <property name="viewMode"> <enum>QListView::IconMode</enum> </property> @@ -46,6 +49,20 @@ <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> + <widget class="QPushButton" name="uploadBtn"> + <property name="text"> + <string>Upload</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="deleteBtn"> + <property name="text"> + <string>Delete</string> + </property> + </widget> + </item> + <item> <spacer name="horizontalSpacer"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -65,20 +82,6 @@ </property> </widget> </item> - <item> - <widget class="QPushButton" name="uploadBtn"> - <property name="text"> - <string>Upload</string> - </property> - </widget> - </item> - <item> - <widget class="QPushButton" name="deleteBtn"> - <property name="text"> - <string>Delete</string> - </property> - </widget> - </item> </layout> </item> </layout> 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(); |