Screenshots: Optimize image loading and memory use, fix list and button layout.

This commit is contained in:
Petr Mrázek 2014-02-25 01:21:46 +01:00
parent cb5cfe7242
commit 9d4e840a6e
5 changed files with 38 additions and 15 deletions

View File

@ -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

View File

@ -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>
@ -45,6 +48,20 @@
</item>
<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">
@ -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>

View File

@ -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;
}

View File

@ -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;

View File

@ -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();