void ReportProperties::sLoadBgImage() { QString fn = QFileDialog::getOpenFileName(this, tr("Choose a file"), QString::null, tr("Images(*.png *.jpg *.xpm)")); if(!fn.isEmpty()) { QFile file(fn); setBgImageData(QUUEncode(file)); } }
void image::sSave() { XSqlQuery newImage; if (__image.isNull()) { QMessageBox::warning(this, tr("No Image Specified"), tr("You must load an image before you may save this record.") ); return; } if (_mode == cNew) { XSqlQuery imageid("SELECT NEXTVAL('image_image_id_seq') AS _image_id"); if (imageid.first()) _imageid = imageid.value("_image_id").toInt(); // ToDo QImageWriter imageIo; QBuffer imageBuffer; QString imageString; imageBuffer.open(QIODevice::ReadWrite); imageIo.setDevice(&imageBuffer); imageIo.setFormat("PNG"); if (!imageIo.write(__image)) { QMessageBox::critical(this, tr("Error Saving Image"), tr("There was an error trying to save the image.") ); return; } imageBuffer.close(); imageString = QUUEncode(imageBuffer); newImage.prepare( "INSERT INTO image " "(image_id, image_name, image_descrip, image_data) " "VALUES " "(:image_id, :image_name, :image_descrip, :image_data);" ); newImage.bindValue(":image_id", _imageid); newImage.bindValue(":image_name", _name->text()); newImage.bindValue(":image_descrip", _descrip->toPlainText()); newImage.bindValue(":image_data", imageString); } else if (_mode == cEdit) { newImage.prepare( "UPDATE image " "SET image_name=:image_name, image_descrip=:image_descrip " "WHERE (image_id=:image_id);" ); newImage.bindValue(":image_id", _imageid); newImage.bindValue(":image_name", _name->text()); newImage.bindValue(":image_descrip", _descrip->toPlainText()); } newImage.exec(); done(_imageid); }
void ImageEditor::btnLoad_clicked() { QString fn = QFileDialog::getOpenFileName(this, tr("Choose a file"), QString::null, tr("Images(*.png *.jpg *.xpm)")); if(!fn.isEmpty()) { QFile file(fn); setImageData(QUUEncode(file)); } }
void imageview::sSave() { XSqlQuery newImage; if (_mode == cNew) { if (!__imageview.isNull()) { XSqlQuery imageid("SELECT NEXTVAL('image_image_id_seq') AS _image_id"); if (imageid.first()) _imageviewid = imageid.value("_image_id").toInt(); // ToDo QImageWriter imageIo; QBuffer imageBuffer; QString imageString; imageBuffer.open(QIODevice::ReadWrite); imageIo.setDevice(&imageBuffer); imageIo.setFormat("PNG"); if (!imageIo.write(__imageview)) { // ToDo - should issue an error here reject(); return; } imageBuffer.close(); imageString = QUUEncode(imageBuffer); newImage.prepare( "INSERT INTO image " "(image_id, image_name, image_descrip, image_data) " "VALUES " "(:image_id, :image_name, :image_descrip, :image_data);" ); newImage.bindValue(":image_id", _imageviewid); newImage.bindValue(":image_name", _name->text()); newImage.bindValue(":image_descrip", _descrip->toPlainText()); newImage.bindValue(":image_data", imageString); } } else if (_mode == cEdit) { newImage.prepare( "UPDATE image " "SET image_name=:image_name, image_descrip=:image_descrip " "WHERE (image_id=:image_id);" ); newImage.bindValue(":image_id", _imageviewid); newImage.bindValue(":image_name", _name->text()); newImage.bindValue(":image_descrip", _descrip->toPlainText()); } newImage.exec(); done(_imageviewid); }
int LoadImage::writeToDB(const QByteArray &pdata, const QString pkgname, QString &errMsg) { if (pdata.isEmpty()) { errMsg = TR("<font color=orange>The image %1 is empty.</font>") .arg(_name); return -2; } QString encodeddata; if (DEBUG) qDebug("LoadImage::writeToDB(): image starts with %s", pdata.left(10).data()); if (QString(pdata.left(pdata.indexOf("\n"))).contains(QRegExp("^\\s*begin \\d+ \\S+"))) { if (DEBUG) qDebug("LoadImage::writeToDB() image is already uuencoded"); encodeddata = pdata; } else { // there's just GOT to be a better way to do this QImageWriter imageIo; QBuffer imageBuffer; imageBuffer.open(QIODevice::ReadWrite); imageIo.setDevice(&imageBuffer); imageIo.setFormat(_filename.right(_filename.size() - _filename.lastIndexOf(".") - 1).toAscii()); if (DEBUG) qDebug("LoadImage::writeToDB() image has format %s", imageIo.format().data()); QImage image; image.loadFromData(pdata); if (!imageIo.write(image)) { errMsg = TR("<font color=orange>Error processing image %1: " "<br>%2</font>") .arg(_name).arg(imageIo.errorString()); return -3; } imageBuffer.close(); encodeddata = QUUEncode(imageBuffer); if (DEBUG) qDebug("LoadImage::writeToDB() image was uuencoded: %s", qPrintable(encodeddata.left(160))); } QSqlQuery select; QSqlQuery upsert; int imageid = -1; int pkgheadid = -1; int pkgitemid = -1; if (pkgname.isEmpty()) select.prepare(QString("SELECT image_id, -1, -1" " FROM %1image " " WHERE (image_name=:name);") .arg(_system ? "" : "pkg")); else select.prepare(_pkgitemQueryStr); select.bindValue(":name", _name); select.bindValue(":pkgname", pkgname); select.bindValue(":grade", _grade); select.bindValue(":type", _pkgitemtype); select.exec(); if(select.first()) { imageid = select.value(0).toInt(); pkgheadid = select.value(1).toInt(); pkgitemid = select.value(2).toInt(); } else if (select.lastError().type() != QSqlError::NoError) { QSqlError err = select.lastError(); errMsg = _sqlerrtxt.arg(_filename).arg(err.driverText()).arg(err.databaseText()); return -5; } if (imageid >= 0) upsert.prepare(QString("UPDATE %1image " " SET image_data=:source," " image_descrip=:notes " " WHERE (image_id=:id); ") .arg(_system ? "" : "pkg")); else { upsert.prepare("SELECT NEXTVAL('image_image_id_seq');"); upsert.exec(); if (upsert.first()) imageid = upsert.value(0).toInt(); else if (upsert.lastError().type() != QSqlError::NoError) { QSqlError err = upsert.lastError(); errMsg = _sqlerrtxt.arg(_filename).arg(err.driverText()).arg(err.databaseText()); return -6; } upsert.prepare(QString("INSERT INTO %1image " "(image_id, image_name, image_data, image_descrip) " "VALUES (:id, :name, :source, :notes);") .arg(_system ? "" : "pkg")); } upsert.bindValue(":id", imageid); upsert.bindValue(":source", encodeddata); upsert.bindValue(":notes", _comment); upsert.bindValue(":name", _name); if (!upsert.exec()) { QSqlError err = upsert.lastError(); errMsg = _sqlerrtxt.arg(_filename).arg(err.driverText()).arg(err.databaseText()); return -7; } if (pkgheadid >= 0) { int tmp = upsertPkgItem(pkgitemid, pkgheadid, imageid, errMsg); if (tmp < 0) return tmp; } return imageid; }
int LoadImage::writeToDB(const QByteArray &pdata, const QString pkgname, QString &errMsg) { if (pdata.isEmpty()) { errMsg = TR("<font color=orange>The image %1 is empty.</font>") .arg(_name); return -2; } QByteArray encodeddata; if (DEBUG) qDebug("LoadImage::writeToDB(): image starts with %s", pdata.left(10).data()); if (QString(pdata.left(pdata.indexOf("\n"))).contains(QRegExp("^\\s*begin \\d+ \\S+"))) { if (DEBUG) qDebug("LoadImage::writeToDB() image is already uuencoded"); encodeddata = pdata; } else { // there's just GOT to be a better way to do this QImageWriter imageIo; QBuffer imageBuffer; imageBuffer.open(QIODevice::ReadWrite); imageIo.setDevice(&imageBuffer); imageIo.setFormat(_filename.right(_filename.size() - _filename.lastIndexOf(".") - 1).toAscii()); if (DEBUG) qDebug("LoadImage::writeToDB() image has format %s", imageIo.format().data()); QImage image; image.loadFromData(pdata); if (!imageIo.write(image)) { errMsg = TR("<font color=orange>Error processing image %1: " "<br>%2</font>") .arg(_name).arg(imageIo.errorString()); return -3; } imageBuffer.close(); encodeddata = QUUEncode(imageBuffer).toAscii(); if (DEBUG) qDebug("LoadImage::writeToDB() image was uuencoded: %s", encodeddata.left(160).data()); } _selectMql = new MetaSQLQuery("SELECT image_id, -1, -1" " FROM <? literal(\"tablename\") ?> " " WHERE (image_name=<? value(\"name\") ?>);"); _updateMql = new MetaSQLQuery("UPDATE <? literal(\"tablename\") ?> " " SET image_data=<? value(\"source\") ?>," " image_descrip=<? value(\"notes\") ?> " " WHERE (image_id=<? value(\"id\") ?>) " "RETURNING image_id AS id;"); _insertMql = new MetaSQLQuery("INSERT INTO <? literal(\"tablename\") ?> (" " image_id, image_name, image_data, image_descrip" ") VALUES (" " DEFAULT, <? value(\"name\") ?>," " <? value(\"source\") ?>, <? value(\"notes\") ?>) " "RETURNING image_id AS id;"); ParameterList params; params.append("tablename", "image"); return Loadable::writeToDB(encodeddata, pkgname, errMsg, params); }