void ProjectNewLocal::slotInsertFolderAfterCopying(const KURL::List& a_urlList) { KURL::List::ConstIterator it; KURL dirURL; for (it = a_urlList.begin(); it != a_urlList.end(); ++it) { dirURL = *it; // dirURL.adjustPath(1); KURL::List files = QExtFileInfo::allFilesRelative(dirURL, "*", this, false); progressBar->setTotalSteps(files.count() - 1); progressBar->setTextEnabled(true); KURL u; for (uint i = 0; i < files.count(); i++) { u = files[i]; if ( !fileList.contains(u) && u.path() != "." && u.path() != ".." ) { fileList.append(u); listView->addItem(u, KFileItem(KFileItem::Unknown, KFileItem::Unknown, KURL())); QListViewItem *it = listView->itemByUrl(u); if (it) { it->setSelected(true); listView->slotSelectFile(it); } progressBar->setValue(i); } } //listView->selectAll(false); progressBar->setTotalSteps(1); progressBar->setValue(0); progressBar->setTextEnabled(false); } }
bool InformationPanel::urlChanged() { if (!url().isValid()) { return false; } if (!isVisible()) { return true; } cancelRequest(); m_selection.clear(); if (!isEqualToShownUrl(url())) { m_shownUrl = url(); m_fileItem = KFileItem(); // Update the content with a delay. This gives // the directory lister the chance to show the content // before expensive operations are done to show // meta information. m_urlChangedTimer->start(); } return true; }
void UploadDialog::imageSelected(QTreeWidgetItem* item) { if( !item || m_transferring ) { m_imagePreview->clear(); return; } ImageListItem* pitem = static_cast<ImageListItem*>( item ); if ( !pitem ) return; m_imagePreview->clear(); QString IdemIndexed = "file:" + pitem->pathSrc(); KUrl url( IdemIndexed ); if ( !url.isValid() ) return; #if KDE_IS_VERSION(4,7,0) KFileItemList items; items.append(KFileItem(KFileItem::Unknown, KFileItem::Unknown, url, true)); KIO::PreviewJob* m_thumbJob = KIO::filePreview(items, QSize(m_imagePreview->height(), m_imagePreview->height())); #else KIO::PreviewJob* m_thumbJob = KIO::filePreview(url, m_imagePreview->height()); #endif connect(m_thumbJob, SIGNAL(gotPreview(const KFileItem*,QPixmap)), this, SLOT(gotImagePreview(const KFileItem*,QPixmap)) ); }
void KIOPasteTest::testPasteActionText() { QFETCH(QList<QUrl>, urls); QFETCH(bool, data); QFETCH(bool, expectedEnabled); QFETCH(QString, expectedText); QMimeData mimeData; if (!urls.isEmpty()) { mimeData.setUrls(urls); } if (data) { mimeData.setText(QStringLiteral("foo")); } QCOMPARE(KIO::canPasteMimeData(&mimeData), expectedEnabled); bool canPaste; KFileItem destItem(QUrl::fromLocalFile(QDir::homePath())); QCOMPARE(KIO::pasteActionText(&mimeData, &canPaste, destItem), expectedText); QCOMPARE(canPaste, expectedEnabled); KFileItem nonWritableDestItem(QUrl::fromLocalFile(QStringLiteral("/nonwritable"))); QCOMPARE(KIO::pasteActionText(&mimeData, &canPaste, nonWritableDestItem), expectedText); QCOMPARE(canPaste, false); KFileItem emptyUrlDestItem = KFileItem(QUrl()); QCOMPARE(KIO::pasteActionText(&mimeData, &canPaste, emptyUrlDestItem), expectedText); QCOMPARE(canPaste, false); KFileItem nullDestItem; QCOMPARE(KIO::pasteActionText(&mimeData, &canPaste, nullDestItem), expectedText); QCOMPARE(canPaste, false); }
bool MenuEntryEditor::canEdit(const QString& entryPath) const { KFileItemList itemList; itemList << KFileItem(QUrl::fromLocalFile(entryPath)); return KPropertiesDialog::canDisplay(itemList); }
void ProjectNewLocal::slotInsertFilesAfterCopying(const KURL::List& a_urlList) { KURL::List::ConstIterator it; KURL u; progressBar->setTotalSteps(a_urlList.count() - 1); progressBar->setTextEnabled(true); for (it = a_urlList.begin(); it != a_urlList.end(); ++it) { u = QExtFileInfo::toRelative(*it, baseURL, false); if ( !fileList.contains(u)) { fileList.append(u); QListViewItem *it = listView->addItem(u, KFileItem(KFileItem::Unknown, KFileItem::Unknown, KURL())); if (it) { it->setSelected(true); listView->slotSelectFile(it); } progressBar->advance(1); } } progressBar->setTotalSteps(1); progressBar->setValue(0); progressBar->setTextEnabled(false); }
void BatchProcessImagesDialog::slotImageSelected(QTreeWidgetItem * item) { if (!item || m_listFiles->topLevelItemCount() == 0) { m_ui->m_imageLabel->clear(); return; } BatchProcessImagesItem *pitem = static_cast<BatchProcessImagesItem*>(item); m_ui->m_imageLabel->clear(); QString IdemIndexed = "file:" + pitem->pathSrc(); KUrl url(IdemIndexed); if ( !url.isValid() ) return; #if KDE_IS_VERSION(4,7,0) KFileItemList items; items.append(KFileItem(KFileItem::Unknown, KFileItem::Unknown, url, true)); KIO::PreviewJob* m_thumbJob = KIO::filePreview(items, QSize(m_ui->m_imageLabel->height(), m_ui->m_imageLabel->height())); #else KIO::PreviewJob* m_thumbJob = KIO::filePreview(url, m_ui->m_imageLabel->height()); #endif connect(m_thumbJob, SIGNAL(gotPreview(KFileItem,QPixmap)), this, SLOT(slotGotPreview(KFileItem,QPixmap))); }
void InformationPanel::requestDelayedItemInfo(const KFileItem& item) { if (!isVisible() || (item.isNull() && m_fileItem.isNull())) { return; } if (QApplication::mouseButtons() & Qt::LeftButton) { // Ignore the request of an item information when a rubberband // selection is ongoing. return; } cancelRequest(); if (item.isNull()) { // The cursor is above the viewport. If files are selected, // show information regarding the selection. if (m_selection.size() > 0) { m_fileItem = KFileItem(); m_infoTimer->start(); } } else if (item.url().isValid() && !isEqualToShownUrl(item.url())) { // The cursor is above an item that is not shown currently m_urlCandidate = item.url(); m_fileItem = item; m_infoTimer->start(); } }
void InformationPanel::setSelection(const KFileItemList& selection) { if (!isVisible()) { return; } if (selection.isEmpty() && m_selection.isEmpty()) { // The selection has not really changed, only the current index. // QItemSelectionModel emits a signal in this case and it is less // expensive doing the check this way instead of patching // DolphinView::emitSelectionChanged(). return; } m_selection = selection; m_fileItem = KFileItem(); const int count = selection.count(); if (count == 0) { if (!isEqualToShownUrl(url())) { m_shownUrl = url(); showItemInfo(); } } else { if ((count == 1) && !selection.first().url().isEmpty()) { m_urlCandidate = selection.first().url(); } m_infoTimer->start(); } }
void DirModel::delayedPreview() { QHash<QUrl, QPersistentModelIndex>::const_iterator i = m_filesToPreview.constBegin(); KFileItemList list; while (i != m_filesToPreview.constEnd()) { QUrl file = i.key(); QPersistentModelIndex index = i.value(); if (!m_previewJobs.contains(file) && file.isValid()) { list.append(KFileItem(file, QString(), 0)); m_previewJobs.insert(file, QPersistentModelIndex(index)); } ++i; } if (list.size() > 0) { KIO::PreviewJob* job = KIO::filePreview(list, m_screenshotSize); job->setIgnoreMaximumSize(true); // qDebug() << "Created job" << job; connect(job, &KIO::PreviewJob::gotPreview, this, &DirModel::showPreview); connect(job, &KIO::PreviewJob::failed, this, &DirModel::previewFailed); } m_filesToPreview.clear(); }
KFileItem SortedDirModel::itemForSourceIndex(const QModelIndex& sourceIndex) const { if (!sourceIndex.isValid()) { return KFileItem(); } return d->mSourceModel->itemForIndex(sourceIndex); }
void FileMetadataWidgetTest::slotChooseFiles() { KUrl::List urlList = KFileDialog::getOpenUrls(); KFileItemList list; foreach(const KUrl& url, urlList) list << KFileItem( url, QString(), mode_t() ); m_metadataWidget->setItems( list ); }
KFileItem SortedDirModel::itemForIndex(const QModelIndex& index) const { if (!index.isValid()) { return KFileItem(); } QModelIndex sourceIndex = mapToSource(index); return d->mSourceModel->itemForIndex(sourceIndex); }
void FoldersPanel::slotViewContextMenuRequested(const QPointF& pos) { Q_UNUSED(pos); QPointer<TreeViewContextMenu> contextMenu = new TreeViewContextMenu(this, KFileItem()); contextMenu.data()->open(); if (contextMenu.data()) { delete contextMenu.data(); } }
void PreviewTest::slotGenerate() { KFileItemList items; items.append(KFileItem(QUrl::fromUserInput(m_url->text()))); KIO::PreviewJob *job = KIO::filePreview(items, QSize(m_preview->width(), m_preview->height())); connect(job, SIGNAL(result(KJob*)), SLOT(slotResult(KJob*))); connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)), SLOT(slotPreview(KFileItem,QPixmap))); connect(job, SIGNAL(failed(KFileItem)), SLOT(slotFailed())); }
/** No descriptions */ void ProjectNewLocal::slotAddFiles() { QExtFileInfo::createDir(baseURL, this); KURL::List list = KFileDialog::getOpenURLs( baseURL.url(), i18n("*"), this, i18n("Insert Files in Project")); if ( !list.isEmpty() ) { KURL u = list.first(); u = QExtFileInfo::toRelative( u, baseURL, false ); if ( u.path().startsWith("..") || u.path().startsWith("/")) { KURLRequesterDlg *urlRequesterDlg = new KURLRequesterDlg( baseURL.prettyURL(), this, ""); urlRequesterDlg->setCaption(i18n("Files: Copy to Project")); urlRequesterDlg->urlRequester()->setMode( KFile::Directory | KFile::ExistingOnly); urlRequesterDlg->exec(); KURL destination = urlRequesterDlg->selectedURL(); delete urlRequesterDlg; if ( !destination.isEmpty()) { CopyTo *dlg = new CopyTo( baseURL); connect(dlg, SIGNAL(addFilesToProject(const KURL::List&)), SLOT (slotInsertFilesAfterCopying(const KURL::List&))); connect(dlg, SIGNAL(deleteDialog(CopyTo *)), SLOT (slotDeleteCopyToDialog(CopyTo *))); list = dlg->copy( list, destination ); return; } else { return; } } progressBar->setTotalSteps(list.count() - 1); progressBar->setTextEnabled(true); for (uint i = 0; i < list.count(); i++) { list[i] = QExtFileInfo::toRelative(list[i], baseURL, false); if (!fileList.contains(list[i])) { fileList.append(list[i]); QListViewItem *it = listView->addItem(list[i], KFileItem(KFileItem::Unknown, KFileItem::Unknown, KURL())); if (it) it->setSelected(true); progressBar->setValue(i); } } progressBar->setTotalSteps(1); progressBar->setValue(0); progressBar->setTextEnabled(false); } }
/** * Check if the popupFileDirectory exists and if the permissions are ok. * Should return true in almost every situation. */ bool KLinPopup::checkPopupFileDirectory() { QDir dir(POPUP_DIR); if (! dir.exists()) { int tmpYesNo = KMessageBox::warningYesNo(this, i18n("Working directory /var/lib/klinpopup/ does not exist!\n" "Shall I create it? (May need root password)")); if (tmpYesNo == KMessageBox::Yes) { QStringList kdesuArgs; kdesuArgs += "-c"; kdesuArgs += "mkdir -p -m 0777 /var/lib/klinpopup"; if (KApplication::kdeinitExecWait("kdesu", kdesuArgs) == 0) return true; } } else { KFileItem tmpFileItem = KFileItem(KFileItem::Unknown, KFileItem::Unknown, "/var/lib/klinpopup"); mode_t tmpPerms = tmpFileItem.permissions(); #ifdef MY_EXTRA_DEBUG kdDebug() << tmpPerms << endl; #endif if (tmpPerms != 0777) { kdDebug() << "Perms not ok!" << endl; int tmpYesNo = KMessageBox::warningYesNo(this, i18n("Permissions of the working directory /var/lib/klinpopup/ are wrong!\n" "Fix? (May need root password)")); if (tmpYesNo == KMessageBox::Yes) { QStringList kdesuArgs; kdesuArgs += "-c"; kdesuArgs += "chmod 0777 /var/lib/klinpopup"; if (KApplication::kdeinitExecWait("kdesu", kdesuArgs) == 0) return true; } } else { return true; } } int tmpContinueQuit = KMessageBox::warningYesNo(this, i18n("There is a serious problem with the working directory!\n" "Only sending messages will work, " "else you can manually fix and restart KLinPopup."), i18n("Warning"), i18n("&Continue"), i18n("&Quit"), "ShowWarningContinueQuit"); if (tmpContinueQuit != KMessageBox::Yes) slotQuit(); return false; }
void ThumbnailLoadJob::removeItems(const KFileItemList& itemList) { Q_FOREACH(const KFileItem & item, itemList) { // If we are removing the next item, update to be the item after or the // first if we removed the last item mItems.removeAll(item); if (item == mCurrentItem) { // Abort current item mCurrentItem = KFileItem(); if (hasSubjobs()) { KJob* job = subjobs().first(); job->kill(); removeSubjob(job); } } }
void InformationPanelContent::showItems(const KFileItemList& items) { m_pendingPreview = false; KIconLoader iconLoader; QPixmap icon = iconLoader.loadIcon("dialog-information", KIconLoader::NoGroup, KIconLoader::SizeEnormous); m_preview->setPixmap(icon); setNameLabelText(i18ncp("@label", "%1 item selected", "%1 items selected", items.count())); if (m_metaDataWidget) { m_metaDataWidget->setItems(items); } m_phononWidget->hide(); m_item = KFileItem(); }
void TaskJuggler::load(const KURL& fileURL) { if (KFileItem(fileURL, "application/x-tjp", KFileItem::Unknown).size() == 0) { if (KMessageBox::warningContinueCancel (this, i18n("The project file '%1' cannot be opened. If you " "continue, a new file with this name will be " "created.").arg(fileURL.url()), i18n("File not found"), KStdGuiItem::cont(), "WarnOnNewFileCreation") == KMessageBox::Cancel) return; // Create a new project with the specified name.` m_view->newProject(fileURL); } else m_view->openURL(fileURL); }
void Interface::thumbnails(const KUrl::List& list, int size) { PrintWarningMessageFeature("HostSupportsThumbnails"); #if KDE_IS_VERSION(4,7,0) KFileItemList items; for (KUrl::List::ConstIterator it = list.begin() ; it != list.end() ; ++it) { if ((*it).isValid()) items.append(KFileItem(KFileItem::Unknown, KFileItem::Unknown, *it, true)); } KIO::PreviewJob* job = KIO::filePreview(items, QSize(size, size)); #else KIO::PreviewJob *job = KIO::filePreview(list, size); #endif connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)), this, SLOT(gotKDEPreview(KFileItem,QPixmap))); connect(job, SIGNAL(failed(KFileItem)), this, SLOT(failedKDEPreview(KFileItem))); }
void KipiInterface::slotRawThumb(const KUrl& url, const QImage& img) { if (img.isNull()) { #if KDE_IS_VERSION(4,7,0) KFileItemList items; items.append(KFileItem(KFileItem::Unknown, KFileItem::Unknown, url, true)); KIO::PreviewJob* job = KIO::filePreview(items, QSize(256, 256)); #else KIO::PreviewJob *job = KIO::filePreview(KUrl::List() << url, 256); #endif connect(job, SIGNAL(gotPreview(KFileItem, QPixmap)), this, SLOT(slotGotKDEPreview(KFileItem, QPixmap))); connect(job, SIGNAL(failed(KFileItem)), this, SLOT(slotFailedKDEPreview(KFileItem))); } else { emit gotThumbnail(url, QPixmap::fromImage(img)); } }
void ProjectNewLocal::slotSetFiles(bool) { if ( checkInsert->isChecked() ) { KURL::List files = projectFiles(); progressBar->setTotalSteps(files.count() - 1); progressBar->setTextEnabled(true); for (uint i = 0; i < files.count(); i++) { if ( !fileList.contains(files[i])) { fileList.append(files[i]); QListViewItem *it = listView->addItem(files[i], KFileItem(KFileItem::Unknown, KFileItem::Unknown, KURL())); if (it) it->setSelected(true); progressBar->setValue(i); } } progressBar->setTotalSteps(1); progressBar->setValue(0); progressBar->setTextEnabled(false); listView->checkboxTree(); } }
KFileItem ProjectModel::itemForIndex(const QModelIndex& index) const { if (!index.isValid()) { //file item for root node. return m_poModel.itemForIndex(index); } QModelIndex poIndex = poIndexForOuter(index); QModelIndex potIndex = potIndexForOuter(index); if (poIndex.isValid()) return m_poModel.itemForIndex(poIndex); else if (potIndex.isValid()) return m_potModel.itemForIndex(potIndex); kWarning()<<"returning empty KFileItem()"<<index.row()<<index.column(); kWarning()<<"returning empty KFileItem()"<<index.parent().isValid(); kWarning()<<"returning empty KFileItem()"<<index.parent().internalPointer(); kWarning()<<"returning empty KFileItem()"<<index.parent().data().toString(); kWarning()<<"returning empty KFileItem()"<<index.internalPointer(); kWarning()<<"returning empty KFileItem()"<<static_cast<ProjectNode*>(index.internalPointer())->untranslated<<static_cast<ProjectNode*>(index.internalPointer())->sourceDate; return KFileItem(); }
void InformationPanelContent::showItems(const KFileItemList& items) { // If there is a preview job, kill it to prevent that we have jobs for // multiple items running, and thus a race condition (bug 250787). if (m_previewJob) { m_previewJob->kill(); } KIconLoader iconLoader; QPixmap icon = iconLoader.loadIcon(QStringLiteral("dialog-information"), KIconLoader::NoGroup, KIconLoader::SizeEnormous); m_preview->setPixmap(icon); setNameLabelText(i18ncp("@label", "%1 item selected", "%1 items selected", items.count())); if (m_metaDataWidget) { m_metaDataWidget->setItems(items); } m_phononWidget->hide(); m_item = KFileItem(); }
//------------------------------------------------------------------------ // // ThumbnailLoadJob implementation // //------------------------------------------------------------------------ ThumbnailLoadJob::ThumbnailLoadJob(const KFileItemList& items, ThumbnailGroup::Enum group) : KIO::Job() , mState(STATE_NEXTTHUMB) , mThumbnailGroup(group) { LOG(this); // Make sure we have a place to store our thumbnails QString thumbnailDir = ThumbnailLoadJob::thumbnailBaseDir(mThumbnailGroup); KStandardDirs::makeDir(thumbnailDir, 0700); // Look for images and store the items in our todo list Q_ASSERT(!items.empty()); mItems = items; mCurrentItem = KFileItem(); connect(&mThumbnailThread, SIGNAL(done(QImage, QSize)), SLOT(thumbnailReady(QImage, QSize)), Qt::QueuedConnection); connect(&mThumbnailThread, SIGNAL(thumbnailReadyToBeCached(QString, QImage)), sThumbnailCache, SLOT(queueThumbnail(QString, QImage)), Qt::QueuedConnection); }
void KWebKitPart::slotLinkHovered(const QString& _link, const QString& /*title*/, const QString& /*content*/) { QString message; if (_link.isEmpty()) { message = QL1S(""); emit m_browserExtension->mouseOverInfo(KFileItem()); } else { QUrl linkUrl (_link); const QString scheme = linkUrl.scheme(); // Protect the user against URL spoofing! linkUrl.setUserName(QString()); const QString link (linkUrl.toString()); if (QString::compare(scheme, QL1S("mailto"), Qt::CaseInsensitive) == 0) { message += i18nc("status bar text when hovering email links; looks like \"Email: [email protected] - CC: [email protected] -BCC: [email protected] - Subject: Hi translator\"", "Email: "); // Workaround: for QUrl's parsing deficiencies of "mailto:[email protected]". if (!linkUrl.hasQuery()) linkUrl = QUrl(scheme + '?' + linkUrl.path()); QMap<QString, QStringList> fields; QList<QPair<QString, QString> > queryItems = linkUrl.queryItems(); const int count = queryItems.count(); for(int i = 0; i < count; ++i) { const QPair<QString, QString> queryItem (queryItems.at(i)); //kDebug() << "query: " << queryItem.first << queryItem.second; if (queryItem.first.contains(QL1C('@')) && queryItem.second.isEmpty()) fields["to"] << queryItem.first; if (QString::compare(queryItem.first, QL1S("to"), Qt::CaseInsensitive) == 0) fields["to"] << queryItem.second; if (QString::compare(queryItem.first, QL1S("cc"), Qt::CaseInsensitive) == 0) fields["cc"] << queryItem.second; if (QString::compare(queryItem.first, QL1S("bcc"), Qt::CaseInsensitive) == 0) fields["bcc"] << queryItem.second; if (QString::compare(queryItem.first, QL1S("subject"), Qt::CaseInsensitive) == 0) fields["subject"] << queryItem.second; } if (fields.contains(QL1S("to"))) message += fields.value(QL1S("to")).join(QL1S(", ")); if (fields.contains(QL1S("cc"))) message += i18nc("status bar text when hovering email links; looks like \"Email: [email protected] - CC: [email protected] -BCC: [email protected] - Subject: Hi translator\"", " - CC: ") + fields.value(QL1S("cc")).join(QL1S(", ")); if (fields.contains(QL1S("bcc"))) message += i18nc("status bar text when hovering email links; looks like \"Email: [email protected] - CC: [email protected] -BCC: [email protected] - Subject: Hi translator\"", " - BCC: ") + fields.value(QL1S("bcc")).join(QL1S(", ")); if (fields.contains(QL1S("subject"))) message += i18nc("status bar text when hovering email links; looks like \"Email: [email protected] - CC: [email protected] -BCC: [email protected] - Subject: Hi translator\"", " - Subject: ") + fields.value(QL1S("subject")).join(QL1S(" ")); } else if (scheme == QL1S("javascript")) { message = KStringHandler::rsqueeze(link, 150); if (link.startsWith(QL1S("javascript:window.open"))) message += i18n(" (In new window)"); } else { message = link; QWebFrame* frame = page() ? page()->currentFrame() : 0; if (frame) { QWebHitTestResult result = frame->hitTestContent(page()->view()->mapFromGlobal(QCursor::pos())); QWebFrame* target = result.linkTargetFrame(); if (frame->parentFrame() && target == frame->parentFrame()) { message += i18n(" (In parent frame)"); } else if (!target || target != frame) { message += i18n(" (In new window)"); } } KFileItem item (linkUrl, QString(), KFileItem::Unknown); emit m_browserExtension->mouseOverInfo(item); } } emit setStatusBarText(message); }
void BracketStackList::addItems(const KUrl::List& list) { if (list.count() == 0) return; KUrl::List urls; for ( KUrl::List::ConstIterator it = list.constBegin(); it != list.constEnd(); ++it ) { KUrl imageUrl = *it; // Check if the new item already exist in the list. bool found = false; QTreeWidgetItemIterator iter(this); while (*iter) { BracketStackItem* item = dynamic_cast<BracketStackItem*>(*iter); if (item->url() == imageUrl) found = true; ++iter; } if (!found) { BracketStackItem* item = new BracketStackItem(this); item->setUrl(imageUrl); item->setOn(true); urls.append(imageUrl); } } if (d->iface) { d->iface->thumbnails(urls, iconSize().width()); } else { #if KDE_IS_VERSION(4,7,0) KFileItemList items; for (KUrl::List::ConstIterator it = urls.begin() ; it != urls.end() ; ++it) { if ((*it).isValid()) items.append(KFileItem(KFileItem::Unknown, KFileItem::Unknown, *it, true)); } KIO::PreviewJob* job = KIO::filePreview(items, iconSize()); #else KIO::PreviewJob *job = KIO::filePreview(urls, iconSize().width()); #endif connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)), this, SLOT(slotKDEPreview(KFileItem,QPixmap))); connect(job, SIGNAL(failed(KFileItem)), this, SLOT(slotKDEPreviewFailed(KFileItem))); } emit signalAddItems(urls); }
void KPImageDialogPreview::showPreview(const KUrl& url) { if (!url.isValid()) { clearPreview(); return; } if (url != d->currentUrl) { QString make, model, dateTime, aperture, focalLength, exposureTime, sensitivity; QString unavailable(i18n("<i>unavailable</i>")); clearPreview(); d->currentUrl = url; if (d->iface) { d->iface->thumbnail(d->currentUrl, 256); } else { if ( !d->currentUrl.isValid() ) return; #if KDE_IS_VERSION(4,7,0) KFileItemList items; items.append(KFileItem(KFileItem::Unknown, KFileItem::Unknown, d->currentUrl, true)); KIO::PreviewJob* job = KIO::filePreview(items, QSize(256, 256)); #else KIO::PreviewJob* job = KIO::filePreview(d->currentUrl, 256); #endif connect(job, SIGNAL(gotPreview(KFileItem,QPixmap)), this, SLOT(slotKDEPreview(KFileItem,QPixmap))); connect(job, SIGNAL(failed(KFileItem)), this, SLOT(slotKDEPreviewFailed(KFileItem))); } // Try to use libkexiv2 to identify image. if (d->metaIface.load(d->currentUrl.path()) && (d->metaIface.hasExif() || d->metaIface.hasXmp())) { make = d->metaIface.getExifTagString("Exif.Image.Make"); if (make.isEmpty()) make = d->metaIface.getXmpTagString("Xmp.tiff.Make"); model = d->metaIface.getExifTagString("Exif.Image.Model"); if (model.isEmpty()) model = d->metaIface.getXmpTagString("Xmp.tiff.Model"); if (d->metaIface.getImageDateTime().isValid()) dateTime = KGlobal::locale()->formatDateTime(d->metaIface.getImageDateTime(), KLocale::ShortDate, true); aperture = d->metaIface.getExifTagString("Exif.Photo.FNumber"); if (aperture.isEmpty()) { aperture = d->metaIface.getExifTagString("Exif.Photo.ApertureValue"); if (aperture.isEmpty()) { aperture = d->metaIface.getXmpTagString("Xmp.exif.FNumber"); if (aperture.isEmpty()) aperture = d->metaIface.getXmpTagString("Xmp.exif.ApertureValue"); } } focalLength = d->metaIface.getExifTagString("Exif.Photo.FocalLength"); if (focalLength.isEmpty()) focalLength = d->metaIface.getXmpTagString("Xmp.exif.FocalLength"); exposureTime = d->metaIface.getExifTagString("Exif.Photo.ExposureTime"); if (exposureTime.isEmpty()) { exposureTime = d->metaIface.getExifTagString("Exif.Photo.ShutterSpeedValue"); if (exposureTime.isEmpty()) { exposureTime = d->metaIface.getXmpTagString("Xmp.exif.ExposureTime"); if (exposureTime.isEmpty()) exposureTime = d->metaIface.getXmpTagString("Xmp.exif.ShutterSpeedValue"); } } sensitivity = d->metaIface.getExifTagString("Exif.Photo.ISOSpeedRatings"); if (sensitivity.isEmpty()) { sensitivity = d->metaIface.getExifTagString("Exif.Photo.ExposureIndex"); if (sensitivity.isEmpty()) { sensitivity = d->metaIface.getXmpTagString("Xmp.exif.ISOSpeedRatings"); if (sensitivity.isEmpty()) sensitivity = d->metaIface.getXmpTagString("Xmp.exif.ExposureIndex"); } } } else { // Try to use libkdcraw interface to identify image. DcrawInfoContainer info; KDcraw dcrawIface; dcrawIface.rawFileIdentify(info, d->currentUrl.path()); if (info.isDecodable) { if (!info.make.isEmpty()) make = info.make; if (!info.model.isEmpty()) model = info.model; if (info.dateTime.isValid()) dateTime = KGlobal::locale()->formatDateTime(info.dateTime, KLocale::ShortDate, true); if (info.aperture != -1.0) aperture = QString::number(info.aperture); if (info.focalLength != -1.0) focalLength = QString::number(info.focalLength); if (info.exposureTime != -1.0) exposureTime = QString::number(info.exposureTime); if (info.sensitivity != -1) sensitivity = QString::number(info.sensitivity); } else { d->infoLabel->clear(); return; } } if (make.isEmpty()) make = unavailable; if (model.isEmpty()) model = unavailable; if (dateTime.isEmpty()) dateTime = unavailable; if (aperture.isEmpty()) aperture = unavailable; if (focalLength.isEmpty()) focalLength = unavailable; if (exposureTime.isEmpty()) exposureTime = unavailable; if (sensitivity.isEmpty()) sensitivity = unavailable; else sensitivity = i18n("%1 ISO", sensitivity); QString identify("<qt><center>"); QString cellBeg("<tr><td><nobr><font size=-1>"); QString cellMid("</font></nobr></td><td><nobr><font size=-1>"); QString cellEnd("</font></nobr></td></tr>"); identify += "<table cellspacing=0 cellpadding=0>"; identify += cellBeg + i18n("<i>Make:</i>") + cellMid + make + cellEnd; identify += cellBeg + i18n("<i>Model:</i>") + cellMid + model + cellEnd; identify += cellBeg + i18n("<i>Created:</i>") + cellMid + dateTime + cellEnd; identify += cellBeg + i18n("<i>Aperture:</i>") + cellMid + aperture + cellEnd; identify += cellBeg + i18n("<i>Focal:</i>") + cellMid + focalLength + cellEnd; identify += cellBeg + i18n("<i>Exposure:</i>") + cellMid + exposureTime + cellEnd; identify += cellBeg + i18n("<i>Sensitivity:</i>") + cellMid + sensitivity + cellEnd; identify += "</table></center></qt>"; d->infoLabel->setText(identify); } }
void DolphinViewContainer::dropUrls(const KUrl& destination, QDropEvent* event) { DragAndDropHelper::instance().dropUrls(KFileItem(), destination, event, this); }