Esempio n. 1
0
QImage IconProvider::loadImage(const QString &fileName) const
{
    QFile file(fileName);
    if (file.open(QIODevice::ReadOnly)) {
        QImageReader imgReader(&file);
        if (imgReader.canRead()) {
            QImage image;
            if (imgReader.read(&image))
                return image;
        }
    }
    return QImage();
}
Esempio n. 2
0
void ImageView::saveImage()
{
	Exiv2::Image::AutoPtr image;
	bool exifError = false;

	if (newImage)
	{
		saveImageAs();
		return;
	}

	setFeedback(tr("Saving..."));

	try
	{
		image = Exiv2::ImageFactory::open(currentImageFullPath.toStdString());
		image->readMetadata();
	}
	catch (Exiv2::Error &error)
	{
		exifError = true;
	}

	QImageReader imgReader(currentImageFullPath);
	if (!displayPixmap.save(currentImageFullPath, imgReader.format().toUpper(),
																			GData::defaultSaveQuality))
	{
		QMessageBox msgBox;
		msgBox.critical(this, tr("Error"), tr("Failed to save image."));
		return;
	}

	if (!exifError)
	{
		try
		{
			image->writeMetadata();
		}
		catch (Exiv2::Error &error)
		{
			QMessageBox msgBox;
			msgBox.critical(this, tr("Error"), tr("Failed to save Exif metadata."));
		}
	}

	reload();
	setFeedback(tr("Image saved."));
}
QSize mainTaskWidget::getImageSize(QString filename)
{
    QImageReader imgReader(m_currentfile);

     return imgReader.size();
}
void SdtpCatalogDataProvider::parseNetworkReply( QNetworkReply *reply )
{
    //
    //
    //
    if( !m_netRequests.contains(reply) ) {
        qDebug("Orphan request found with url = '%s'",
               reply->url().toString().toLatin1().constData());
        reply->deleteLater();
        return;
    }

#ifdef QT_DEBUG
    qDebug("Network request '%s' took %d ms",
           reply->url().toString().toLatin1().constData(),
           m_debug_requestStart[reply].elapsed() );
    m_debug_requestStart[reply].restart();

    if ( reply->error() != QNetworkReply::NoError ) {
        qDebug("QNetworkReply error! Code: %d", reply->error());
    }
#endif

    QPair<void*, RequestType> pair = m_netRequests[reply];
    void* param = pair.first;
    RequestType type = pair.second;

    //
    // HANDLE REDIRECTION
    //
    QUrl redirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();

    if ( !redirectUrl.isEmpty() && redirectUrl != reply->url()) {
        // all non-local thumbnail redirects are disabled!
        QString redirUrl = redirectUrl.toString();
        if ( Thumbnail != type || !redirUrl.contains(QRegExp("is74.ru/", Qt::CaseInsensitive, QRegExp::Wildcard)) )
        {
            QNetworkReply* newReply = m_network->get(QNetworkRequest(redirectUrl));
#ifdef QT_DEBUG
            debug_addRequestTime(newReply);
#endif
            // replace reply ptr in hash
            m_netRequests[newReply] = m_netRequests[reply];
            m_netRequests.remove(reply);
            return;
        }
    }

    m_netRequests.remove(reply);

    switch ( type ) {
    case FoldersRecursive: {
        XFolder* parent = static_cast<XFolder*>(param);
        XFolderList *list = new XFolderList;
        XFolderDict *dict = new XFolderDict;
        bool ok = parseFoldersRecursiveData(parent, *reply, *dict, *list);
        if ( ok ) {
            emit data(FoldersRecursive, parent, list);
            emit data(FoldersRecursiveDictionary, parent, dict);
        } else {
            delete list;
            delete dict;
            emit error(FoldersRecursive, parent);
        }
        break;
    }

    case Folders: {
        XFolder* parent = static_cast<XFolder*>(param);
        XFolderList *list = new XFolderList;
        bool ok = parseFoldersData(parent, *reply, *list);
        if ( ok )
            emit data(Folders, parent, list);
        else {
            delete list;
            emit error(Folders, parent);
        }
        break;
    }

    case Files: {
        XFolder *parent = static_cast<XFolder*>(param);
        XFileList *list = new XFileList;
        bool ok = parseFilesData(parent, *reply, *list);
        if ( ok )
            emit data(Files, parent, list);
        else {
            delete list;
            emit error(Files, parent);
        }
        break;
    }

    case FileDetails: {
        XFile *file = static_cast<XFile*>(param);
        XFile *dummy = new XFile(0,0,QString());;
        bool ok = parseFileDetailsData(dummy, *reply);
        if ( ok )
            emit data(FileDetails, file, dummy);
        else {
            delete dummy;
            emit error(FileDetails, file);
        }
        break;
    }

    case Thumbnail: {
        XFile *file = static_cast<XFile*>(param);
        QImageReader imgReader(reply);
        QImage *image = new QImage();
        *image = imgReader.read();
        if ( !image->isNull() ) {
            emit data(Thumbnail, file, image);
        } else {
            delete image;
            emit error(Thumbnail, file);
        }

        break;
    }

    case Search: {
        XFileList *list = new XFileList;
        bool ok = parseSearchData(*reply, *list);
        if ( ok )
            emit data(Search, NULL, list);
        else {
            delete list;
            emit error(Search, NULL);
        }

        break;
    }

    case FoldersRecursiveDictionary:
    default:
    {
        qDebug("Unsupported RequetType reply '%d'", type);
    }

    }

#ifdef QT_DEBUG
    qDebug("Parsing took %d ms", m_debug_requestStart[reply].elapsed() );
    m_debug_requestStart.remove(reply);
#endif

    reply->deleteLater();
}
Esempio n. 5
0
void DsWindow::uploadNextPhoto()
{
    if (m_transferQueue.isEmpty())
    {
        m_widget->progressBar()->hide();
        return;
    }

    m_widget->m_imgList->processing(m_transferQueue.first());
    QString imgPath = m_transferQueue.first().toLocalFile();

    m_widget->progressBar()->setMaximum(m_imagesTotal);
    m_widget->progressBar()->setValue(m_imagesCount);

    // screenshots.debian.net only accepts PNG images, 800x600 max
    MassageType massageRequired = DsWindow::None;

    // check if format is PNG
    QImageReader imgReader(imgPath);
    QByteArray imgFormat = imgReader.format();

    if( QString::compare(QString(imgFormat), QString("PNG"), Qt::CaseInsensitive) != 0 )
    {
        massageRequired = DsWindow::NotPNG;
    }

    // check if image > 800x600
    QImage img = imgReader.read();

    if( (img.width() > maxWidth) || (img.height() > maxHeight) )
    {
        massageRequired = DsWindow::ResizeRequired;
    }

    // check if we have to RAW file -> use preview image then
    if( KPMetadata::isRawFile(imgPath) )
    {
        massageRequired = DsWindow::ImageIsRaw;
    }

    bool res;

    if (massageRequired)
    {
        if (!prepareImageForUpload(imgPath, massageRequired))
        {
            slotAddScreenshotDone(666, i18n("Cannot open file"));
            return;
        }
        res = m_talker->addScreenshot(m_tmpPath, m_widget->m_pkgLineEdit->text(),
                                      m_widget->m_versionsComboBox->currentText(),
                                      m_widget->m_descriptionLineEdit->text());
    }
    else
    {
        m_tmpPath.clear();
        res = m_talker->addScreenshot(imgPath, m_widget->m_pkgLineEdit->text(), 
                                      m_widget->m_versionsComboBox->currentText(),
                                      m_widget->m_descriptionLineEdit->text());
    }

    if (!res)
    {
        slotAddScreenshotDone(666, i18n("Cannot open file"));
        return;
    }
}