file handler fix, deleting snapmatic pictures added

This commit is contained in:
Rafael 2016-03-28 15:24:09 +02:00
parent 517f446d12
commit 2c6a0fa2a5
7 changed files with 82 additions and 6 deletions

View File

@ -223,13 +223,13 @@ fileDialogPreSave:
if (!isSaved)
{
QMessageBox::warning(this, tr("Snapmatic Picture Exporter"), tr("Failed to save the picture"));
QMessageBox::warning(this, tr("Export picture"), tr("Failed to save the picture"));
goto fileDialogPreSave;
}
}
else
{
QMessageBox::warning(this, tr("Snapmatic Picture Exporter"), tr("No valid file is selected"));
QMessageBox::warning(this, tr("Export picture"), tr("No valid file is selected"));
goto fileDialogPreSave;
}
}

View File

@ -55,11 +55,13 @@ ProfileInterface::~ProfileInterface()
}
foreach(SnapmaticPicture *picture, pictures)
{
pictures.removeAll(picture);
picture->deleteLater();
delete picture;
}
foreach(QWidget *widget, widgets)
{
widgets.removeAll(widget);
widget->deleteLater();
delete widget;
}
@ -101,6 +103,7 @@ void ProfileInterface::on_pictureLoaded(SnapmaticPicture *picture, QString pictu
ui->vlSnapmatic->addWidget(picWidget);
widgets.append(picWidget);
pictures.append(picture);
QObject::connect(picWidget, SIGNAL(pictureDeleted()), this, SLOT(on_pictureDeleted()));
}
void ProfileInterface::on_loadingProgress(int value, int maximum)
@ -118,6 +121,14 @@ void ProfileInterface::on_profileLoaded()
ui->cmdCloseProfile->setEnabled(true);
}
void ProfileInterface::on_pictureDeleted()
{
SnapmaticWidget *picWidget = (SnapmaticWidget*)sender();
widgets.removeAll(picWidget);
picWidget->deleteLater();
delete picWidget;
}
void ProfileInterface::on_cmdCloseProfile_clicked()
{
emit profileClosed();

View File

@ -20,6 +20,7 @@
#define PROFILEINTERFACE_H
#include "SnapmaticPicture.h"
#include "SnapmaticWidget.h"
#include "ProfileDatabase.h"
#include "DatabaseThread.h"
#include "ProfileLoader.h"
@ -46,6 +47,7 @@ private slots:
void on_pictureLoaded(SnapmaticPicture *picture, QString picturePath);
void on_savegameLoaded(SavegameData *savegame, QString savegamePath);
void on_loadingProgress(int value, int maximum);
void on_pictureDeleted();
void on_profileLoaded();
private:

View File

@ -39,6 +39,8 @@ bool SavegameData::readingSavegame()
if (!saveFile->open(QFile::ReadOnly))
{
lastStep = "1;/1,OpenFile," + convertDrawStringForLog(savegameFileName);
saveFile->deleteLater();
delete saveFile;
return false;
}
@ -46,6 +48,9 @@ bool SavegameData::readingSavegame()
if (!saveFile->isReadable())
{
lastStep = "2;/3,ReadingFile," + convertDrawStringForLog(savegameFileName) + ",1,NOHEADER";
saveFile->close();
saveFile->deleteLater();
delete saveFile;
return false;
}
QByteArray savegameHeaderLine = saveFile->read(savegameHeaderLength);
@ -58,6 +63,9 @@ bool SavegameData::readingSavegame()
}
}
saveFile->close();
saveFile->deleteLater();
delete saveFile;
return savegameOk;
}

View File

@ -60,6 +60,8 @@ bool SnapmaticPicture::readingPicture()
if (!picFile->open(QFile::ReadOnly))
{
lastStep = "1;/1,OpenFile," + convertDrawStringForLog(picFileName);
picFile->deleteLater();
delete picFile;
return false;
}
@ -67,6 +69,9 @@ bool SnapmaticPicture::readingPicture()
if (!picFile->isReadable())
{
lastStep = "2;/3,ReadingFile," + convertDrawStringForLog(picFileName) + ",1,NOHEADER";
picFile->close();
picFile->deleteLater();
delete picFile;
return false;
}
QByteArray snapmaticHeaderLine = picFile->read(snapmaticHeaderLength);
@ -76,6 +81,9 @@ bool SnapmaticPicture::readingPicture()
if (!picFile->isReadable())
{
lastStep = "2;/3,ReadingFile," + convertDrawStringForLog(picFileName) + ",2,NOHEADER";
picFile->close();
picFile->deleteLater();
delete picFile;
return false;
}
QByteArray jpegHeaderLine = picFile->read(jpegPreHeaderLength);
@ -85,6 +93,9 @@ bool SnapmaticPicture::readingPicture()
if (jpegHeaderLine.left(4) != "JPEG")
{
lastStep = "2;/3,ReadingFile," + convertDrawStringForLog(picFileName) + ",2,NOJPEG";
picFile->close();
picFile->deleteLater();
delete picFile;
return false;
}
@ -92,6 +103,9 @@ bool SnapmaticPicture::readingPicture()
if (!picFile->isReadable())
{
lastStep = "2;/3,ReadingFile," + convertDrawStringForLog(picFileName) + ",3,NOPIC";
picFile->close();
picFile->deleteLater();
delete picFile;
return false;
}
QByteArray jpegRawContent = picFile->read(jpegPicStreamLength);
@ -101,17 +115,26 @@ bool SnapmaticPicture::readingPicture()
if (!picFile->isReadable())
{
lastStep = "2;/3,ReadingFile," + convertDrawStringForLog(picFileName) + ",3,NOJSON";
picFile->close();
picFile->deleteLater();
delete picFile;
return picOk;
}
else if (picFile->read(4) != "JSON")
{
lastStep = "2;/3,ReadingFile," + convertDrawStringForLog(picFileName) + ",3,CTJSON";
picFile->close();
picFile->deleteLater();
delete picFile;
return picOk;
}
QByteArray jsonRawContent = picFile->read(jsonStreamLength);
jsonStr = getSnapmaticJSONString(jsonRawContent);
parseJsonContent(); // JSON parsing is own function
picFile->close();
picFile->deleteLater();
delete picFile;
return picOk;
}

View File

@ -21,7 +21,10 @@
#include "SnapmaticPicture.h"
#include "DatabaseThread.h"
#include "PictureDialog.h"
#include <QMessageBox>
#include <QPixmap>
#include <QDebug>
#include <QFile>
SnapmaticWidget::SnapmaticWidget(ProfileDatabase *profileDB, DatabaseThread *threadDB, QWidget *parent) :
QWidget(parent), profileDB(profileDB), threadDB(threadDB),
@ -29,6 +32,7 @@ SnapmaticWidget::SnapmaticWidget(ProfileDatabase *profileDB, DatabaseThread *thr
{
ui->setupUi(this);
picPath = "";
picStr = "";
smpic = 0;
}
@ -39,12 +43,14 @@ SnapmaticWidget::~SnapmaticWidget()
void SnapmaticWidget::setSnapmaticPicture(SnapmaticPicture *picture, QString picturePath)
{
QPixmap SnapmaticPixmap = QPixmap::fromImage(picture->getPicture(), Qt::AutoColor);
SnapmaticPixmap.scaled(ui->labPicture->width(), ui->labPicture->height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
ui->labPicStr->setText(picture->getPictureStr());
ui->labPicture->setPixmap(SnapmaticPixmap);
smpic = picture;
picPath = picturePath;
picStr = picture->getPictureStr();
QPixmap SnapmaticPixmap = QPixmap::fromImage(picture->getPicture(), Qt::AutoColor);
SnapmaticPixmap.scaled(ui->labPicture->width(), ui->labPicture->height(), Qt::KeepAspectRatio, Qt::SmoothTransformation);
ui->labPicStr->setText(picStr);
ui->labPicture->setPixmap(SnapmaticPixmap);
}
void SnapmaticWidget::on_cmdView_clicked()
@ -63,3 +69,24 @@ void SnapmaticWidget::on_cmdView_clicked()
picDialog->deleteLater();
delete picDialog;
}
void SnapmaticWidget::on_cmdDelete_clicked()
{
int uchoice = QMessageBox::question(this, tr("Delete picture"), tr("You're sure to delete %1 from your Snapmatic pictures?").arg(picStr), QMessageBox::No | QMessageBox::Yes, QMessageBox::No);
if (uchoice == QMessageBox::Yes)
{
QFile pictureFile(picPath);
if (!pictureFile.exists())
{
emit pictureDeleted();
}
else if(QFile::remove(picPath))
{
emit pictureDeleted();
}
else
{
QMessageBox::warning(this, tr("Delete picture"), tr("Failed at deleting %1 from your Snapmatic pictures").arg(picStr));
}
}
}

View File

@ -39,6 +39,7 @@ public:
private slots:
void on_cmdView_clicked();
void on_cmdDelete_clicked();
private:
ProfileDatabase *profileDB;
@ -46,6 +47,10 @@ private:
Ui::SnapmaticWidget *ui;
SnapmaticPicture *smpic;
QString picPath;
QString picStr;
signals:
void pictureDeleted();
};
#endif // SNAPMATICWIDGET_H