void ShowFoto::openUrls(const QList<QUrl> &urls) { if (!urls.isEmpty()) { ShowfotoItemInfoList infos; ShowfotoItemInfo iteminfo; DMetadata meta; for (QList<QUrl>::const_iterator it = urls.constBegin(); it != urls.constEnd(); ++it) { QFileInfo fi((*it).toLocalFile()); iteminfo.name = fi.fileName(); iteminfo.mime = fi.suffix(); iteminfo.size = fi.size(); iteminfo.url = QUrl::fromLocalFile(fi.filePath()); iteminfo.folder = fi.path(); iteminfo.dtime = fi.created(); meta.load(fi.filePath()); iteminfo.ctime = meta.getImageDateTime(); iteminfo.width = meta.getImageDimensions().width(); iteminfo.height = meta.getImageDimensions().height(); iteminfo.photoInfo = meta.getPhotographInformation(); infos.append(iteminfo); } if (d->droppedUrls) { //replace the equal sign with "<<" to keep the previous pics in the list d->infoList << infos; } else { d->infoList = infos; d->model->clearShowfotoItemInfos(); emit signalInfoList(d->infoList); slotOpenUrl(d->thumbBar->currentInfo()); } } }
void CameraItemPropertiesTab::setCurrentItem(const CamItemInfo& itemInfo, const DMetadata& meta) { if (itemInfo.isNull()) { d->labelFile->setAdjustedText(QString()); d->labelFolder->setAdjustedText(QString()); d->labelFileIsReadable->setAdjustedText(QString()); d->labelFileIsWritable->setAdjustedText(QString()); d->labelFileDate->setAdjustedText(QString()); d->labelFileSize->setAdjustedText(QString()); d->labelImageMime->setAdjustedText(QString()); d->labelImageDimensions->setAdjustedText(QString()); d->labelImageRatio->setAdjustedText(QString()); d->labelNewFileName->setAdjustedText(QString()); d->labelAlreadyDownloaded->setAdjustedText(QString()); d->labelPhotoMake->setAdjustedText(QString()); d->labelPhotoModel->setAdjustedText(QString()); d->labelPhotoDateTime->setAdjustedText(QString()); d->labelPhotoLens->setAdjustedText(QString()); d->labelPhotoAperture->setAdjustedText(QString()); d->labelPhotoFocalLength->setAdjustedText(QString()); d->labelPhotoExposureTime->setAdjustedText(QString()); d->labelPhotoSensitivity->setAdjustedText(QString()); d->labelPhotoExposureMode->setAdjustedText(QString()); d->labelPhotoFlash->setAdjustedText(QString()); d->labelPhotoWhiteBalance->setAdjustedText(QString()); d->labelVideoAspectRatio->setAdjustedText(QString()); d->labelVideoAudioBitRate->setAdjustedText(QString()); d->labelVideoAudioChannelType->setAdjustedText(QString()); d->labelVideoAudioCompressor->setAdjustedText(QString()); d->labelVideoDuration->setAdjustedText(QString()); d->labelVideoFrameRate->setAdjustedText(QString()); d->labelVideoVideoCodec->setAdjustedText(QString()); setEnabled(false); return; } setEnabled(true); QString str; QString unknown(i18n("<i>unknown</i>")); // -- Camera file system information ------------------------------------------ d->labelFile->setAdjustedText(itemInfo.name); d->labelFolder->setAdjustedText(itemInfo.folder); if (itemInfo.readPermissions < 0) { str = unknown; } else if (itemInfo.readPermissions == 0) { str = i18n("No"); } else { str = i18n("Yes"); } d->labelFileIsReadable->setAdjustedText(str); if (itemInfo.writePermissions < 0) { str = unknown; } else if (itemInfo.writePermissions == 0) { str = i18n("No"); } else { str = i18n("Yes"); } d->labelFileIsWritable->setAdjustedText(str); if (itemInfo.ctime.isValid()) { d->labelFileDate->setAdjustedText(QLocale().toString(itemInfo.ctime, QLocale::ShortFormat)); } else { d->labelFileDate->setAdjustedText(unknown); } str = i18n("%1 (%2)", ImagePropertiesTab::humanReadableBytesCount(itemInfo.size), QLocale().toString(itemInfo.size)); d->labelFileSize->setAdjustedText(str); // -- Image Properties -------------------------------------------------- if (itemInfo.mime == QLatin1String("image/x-raw")) { d->labelImageMime->setAdjustedText(i18n("RAW Image")); } else { QMimeType mimeType = QMimeDatabase().mimeTypeForName(itemInfo.mime); if (mimeType.isValid()) { d->labelImageMime->setAdjustedText(mimeType.comment()); } else { d->labelImageMime->setAdjustedText(itemInfo.mime); // last fallback } } QString mpixels; QSize dims; if (itemInfo.width == -1 && itemInfo.height == -1) { // delayed loading to list faster from UMSCamera if (itemInfo.mime == QLatin1String("image/x-raw")) { dims = meta.getImageDimensions(); } else { dims = meta.getPixelSize(); } } else { // if available (GPCamera), take dimensions directly from itemInfo dims = QSize(itemInfo.width, itemInfo.height); } mpixels.setNum(dims.width()*dims.height()/1000000.0, 'f', 2); str = (!dims.isValid()) ? unknown : i18n("%1x%2 (%3Mpx)", dims.width(), dims.height(), mpixels); d->labelImageDimensions->setAdjustedText(str); if (!dims.isValid()) str = unknown; else ImagePropertiesTab::aspectRatioToString(dims.width(), dims.height(), str); d->labelImageRatio->setAdjustedText(str); // -- Download information ------------------------------------------ d->labelNewFileName->setAdjustedText(itemInfo.downloadName.isEmpty() ? i18n("<i>unchanged</i>") : itemInfo.downloadName); if (itemInfo.downloaded == CamItemInfo::DownloadUnknown) { str = unknown; } else if (itemInfo.downloaded == CamItemInfo::DownloadedYes) { str = i18n("Yes"); } else { str = i18n("No"); } d->labelAlreadyDownloaded->setAdjustedText(str); // -- Photograph information ------------------------------------------ // Note: If something is changed here, please updated albumfiletip section too. QString unavailable(i18n("<i>unavailable</i>")); PhotoInfoContainer photoInfo = meta.getPhotographInformation(); if (photoInfo.isEmpty()) { widget(1)->hide(); } else { widget(1)->show(); } ImagePropertiesTab::shortenedMakeInfo(photoInfo.make); ImagePropertiesTab::shortenedModelInfo(photoInfo.model); d->labelPhotoMake->setAdjustedText(photoInfo.make.isEmpty() ? unavailable : photoInfo.make); d->labelPhotoModel->setAdjustedText(photoInfo.model.isEmpty() ? unavailable : photoInfo.model); if (photoInfo.dateTime.isValid()) { str = QLocale().toString(photoInfo.dateTime, QLocale::ShortFormat); d->labelPhotoDateTime->setAdjustedText(str); } else { d->labelPhotoDateTime->setAdjustedText(unavailable); } d->labelPhotoLens->setAdjustedText(photoInfo.lens.isEmpty() ? unavailable : photoInfo.lens); d->labelPhotoAperture->setAdjustedText(photoInfo.aperture.isEmpty() ? unavailable : photoInfo.aperture); if (photoInfo.focalLength35mm.isEmpty()) { d->labelPhotoFocalLength->setAdjustedText(photoInfo.focalLength.isEmpty() ? unavailable : photoInfo.focalLength); } else { str = i18n("%1 (%2)", photoInfo.focalLength, photoInfo.focalLength35mm); d->labelPhotoFocalLength->setAdjustedText(str); } d->labelPhotoExposureTime->setAdjustedText(photoInfo.exposureTime.isEmpty() ? unavailable : photoInfo.exposureTime); d->labelPhotoSensitivity->setAdjustedText(photoInfo.sensitivity.isEmpty() ? unavailable : i18n("%1 ISO", photoInfo.sensitivity)); if (photoInfo.exposureMode.isEmpty() && photoInfo.exposureProgram.isEmpty()) { d->labelPhotoExposureMode->setAdjustedText(unavailable); } else if (!photoInfo.exposureMode.isEmpty() && photoInfo.exposureProgram.isEmpty()) { d->labelPhotoExposureMode->setAdjustedText(photoInfo.exposureMode); } else if (photoInfo.exposureMode.isEmpty() && !photoInfo.exposureProgram.isEmpty()) { d->labelPhotoExposureMode->setAdjustedText(photoInfo.exposureProgram); } else { str = QString::fromUtf8("%1 / %2").arg(photoInfo.exposureMode).arg(photoInfo.exposureProgram); d->labelPhotoExposureMode->setAdjustedText(str); } d->labelPhotoFlash->setAdjustedText(photoInfo.flash.isEmpty() ? unavailable : photoInfo.flash); d->labelPhotoWhiteBalance->setAdjustedText(photoInfo.whiteBalance.isEmpty() ? unavailable : photoInfo.whiteBalance); // -- Video information ------------------------------------------ VideoInfoContainer videoInfo = meta.getVideoInformation(); if (videoInfo.isEmpty()) { widget(2)->hide(); } else { widget(2)->show(); } d->labelVideoAspectRatio->setAdjustedText(videoInfo.aspectRatio.isEmpty() ? unavailable : videoInfo.aspectRatio); d->labelVideoAudioBitRate->setAdjustedText(videoInfo.audioBitRate.isEmpty() ? unavailable : videoInfo.audioBitRate); d->labelVideoAudioChannelType->setAdjustedText(videoInfo.audioChannelType.isEmpty() ? unavailable : videoInfo.audioChannelType); d->labelVideoAudioCompressor->setAdjustedText(videoInfo.audioCompressor.isEmpty() ? unavailable : videoInfo.audioCompressor); d->labelVideoDuration->setAdjustedText(videoInfo.duration.isEmpty() ? unavailable : videoInfo.duration); d->labelVideoFrameRate->setAdjustedText(videoInfo.frameRate.isEmpty() ? unavailable : videoInfo.frameRate); d->labelVideoVideoCodec->setAdjustedText(videoInfo.videoCodec.isEmpty() ? unavailable : videoInfo.videoCodec); }
void ShowFoto::openFolder(const QUrl& url) { if (!url.isValid() || !url.isLocalFile()) { return; } // Parse image IO mime types registration to get files filter pattern. QString filter; QStringList mimeTypes = supportedImageMimeTypes(QIODevice::ReadOnly, filter); QString patterns = filter.toLower(); patterns.append (QLatin1String(" ")); patterns.append (filter.toUpper()); qCDebug(DIGIKAM_SHOWFOTO_LOG) << "patterns=" << patterns; // Get all image files from directory. QDir dir(url.toLocalFile(), patterns); dir.setFilter(QDir::Files); if (!dir.exists()) { return; } QFileInfoList fileinfolist = dir.entryInfoList(); if (fileinfolist.isEmpty()) { //emit signalSorry(); return; } QFileInfoList::const_iterator fi; ShowfotoItemInfoList infos; ShowfotoItemInfo iteminfo; DMetadata meta; // And open all items in image editor. for (fi = fileinfolist.constBegin(); fi != fileinfolist.constEnd(); ++fi) { iteminfo.name = (*fi).fileName(); iteminfo.mime = (*fi).suffix(); iteminfo.size = (*fi).size(); iteminfo.folder = (*fi).path(); iteminfo.url = QUrl::fromLocalFile((*fi).filePath()); iteminfo.dtime = (*fi).created(); meta.load((*fi).filePath()); iteminfo.ctime = meta.getImageDateTime(); iteminfo.width = meta.getImageDimensions().width(); iteminfo.height = meta.getImageDimensions().height(); iteminfo.photoInfo = meta.getPhotographInformation(); infos.append(iteminfo); } if (d->droppedUrls) { d->infoList << infos; } else { d->infoList = infos; d->model->clearShowfotoItemInfos(); emit signalInfoList(d->infoList); slotOpenUrl(d->thumbBar->currentInfo()); } d->lastOpenedDirectory = QUrl::fromLocalFile(dir.absolutePath()); }