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 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 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 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(); }
bool TrashImpl::synchronousDel( const TQString& path, bool setLastErrorCode, bool isDir ) { const int oldErrorCode = m_lastErrorCode; const TQString oldErrorMsg = m_lastErrorMessage; KURL url; url.setPath( path ); // First ensure that all dirs have u+w permissions, // otherwise we won't be able to delete files in them (#130780). if ( isDir ) { kdDebug() << k_funcinfo << "chmod'ing " << url << endl; KFileItem fileItem( url, "inode/directory", KFileItem::Unknown ); KFileItemList fileItemList; fileItemList.append( &fileItem ); TDEIO::ChmodJob* chmodJob = TDEIO::chmod( fileItemList, 0200, 0200, TQString::null, TQString::null, true /*recursive*/, false /*showProgressInfo*/ ); connect( chmodJob, TQT_SIGNAL( result(TDEIO::Job *) ), this, TQT_SLOT( jobFinished(TDEIO::Job *) ) ); tqApp->eventLoop()->enterLoop(); } kdDebug() << k_funcinfo << "deleting " << url << endl; TDEIO::DeleteJob *job = TDEIO::del( url, false, false ); connect( job, TQT_SIGNAL( result(TDEIO::Job *) ), this, TQT_SLOT( jobFinished(TDEIO::Job *) ) ); tqApp->eventLoop()->enterLoop(); bool ok = m_lastErrorCode == 0; if ( !setLastErrorCode ) { m_lastErrorCode = oldErrorCode; m_lastErrorMessage = oldErrorMsg; } return ok; }
void ThumbView::slImageChanged( KFileItem *kfit ) { if( ! kfit ) return; // kdDebug(28000) << "changes to one thumbnail!" << endl; KURL thumbDir = currentDir(); KURL itemUrl = kfit->url(); /* delete filename */ itemUrl.setFileName( QString()); if( !itemUrl.equals( thumbDir, true )) { // kdDebug(28000) << "returning, because directory does not match: " << itemUrl.prettyURL() << endl; // kdDebug(28000) << "and my URL: " << thumbDir.prettyURL() << endl; return; } if( deleteImage( kfit )) { kdDebug(28000) << "was changed, deleted first!" << endl; } /* Trigger a new reading */ KFileItemList li; li.append( kfit ); slNewFileItems( li ); }
void KDirModelV2Private::newItemsFromLister(const KFileItemList& items) { qDebug() << "newItemsFromLister delay:" << m_time.elapsed(); m_time.restart(); const int itemCount = items.count(); const int newItemListLength = m_itemList.count() + itemCount; // We can already determine the number of items in this list. Reserve them manyally. m_itemList.reserve(newItemListLength); m_model->beginInsertRows(m_currentIndex, rowCount, itemCount); QTime time; time.start(); /* #pragma omp parallel for schedule(dynamic, 100) for(int i = 0; i < itemCount; i++) { ItemData newData; newData.item = new KFileItem(items.at(i)); // newData.collationSequence = new CNaturalString(newData.item->name().toAscii().constData()); newData.modelIndex = m_model->createIndex(i, 0); #pragma omp critical m_itemList.append(newData); } #pragma omp parallel for schedule(dynamic, 100) for(int i = 0; i < itemCount; i++) { ItemData * newData = &m_itemList[iBase + i]; newData->collationSequence = new CNaturalString(newData->item->name().toAscii().constData()); } */ for(int i = 0; i < itemCount; i++) { ItemData newData; newData.item = new KFileItem(items.at(i)); newData.collationSequence = new CNaturalString(newData.item->name().toAscii().constData()); newData.modelIndex = m_model->createIndex(i, 0); m_itemList.append(newData); } qDebug() << "Time elapsed:" << time.elapsed() << "ms"; rowCount = m_itemList.count(); // std::sort(m_itemList.begin(), m_itemList.end(), lessThan); // qSort(m_itemList.begin(), m_itemList.end(), lessThan); m_model->endInsertRows(); emit m_model->layoutChanged(); // Move the current index to the last inserted item. ItemData lastItem = m_itemList.last(); m_currentIndex = lastItem.modelIndex; qDebug() << "KDirModelV2Private::newItemsFromLister rowCount:" << rowCount; }
void ThumbView::slCheckForUpdate( KFileItem *kfit ) { if( ! kfit ) return; kdDebug(28000) << "Checking for update of thumbview!" << endl; KURL searchUrl = kfit->url(); bool haveItem = false; /* iterate over all icon items and compare urls. * TODO: Check the parent url to avoid iteration over all */ for ( QIconViewItem *item = m_iconView->firstItem(); item && !haveItem; item = item->nextItem() ) { if( searchUrl == static_cast<ThumbViewItem*>(item)->itemUrl() ) { haveItem = true; } } /* if we still do not have the item, it is not in the thumbview. */ if( ! haveItem ) { KFileItemList kfiList; kfiList.append( kfit ); slNewFileItems( kfiList ); } }
void KrPreviewJob::slotStartJob() { ASSERT(_job == 0); ASSERT(!_scheduled.isEmpty()); _hash.clear(); sort(); int size = _parent->_view->fileIconSize(); KFileItemList list; for(int i = 0; i < _scheduled.count() && i < MAX_CHUNK_SIZE; i++) { KFileItem fi(_scheduled[i]->getVfile()->vfile_getUrl(), 0, 0); list.append(fi); _hash.insert(fi, _scheduled[i]); } QStringList allPlugins = KIO::PreviewJob::availablePlugins(); _job = new KIO::PreviewJob(list, QSize(size, size), &allPlugins); _job->setOverlayIconAlpha(0); _job->setOverlayIconSize(0); _job->setScaleType(KIO::PreviewJob::ScaledAndCached); connect(_job, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)), SLOT(slotGotPreview(const KFileItem&, const QPixmap&))); connect(_job, SIGNAL(failed(const KFileItem&)), SLOT(slotFailed(const KFileItem&))); connect(_job, SIGNAL(result(KJob*)), SLOT(slotJobResult(KJob*))); }
KoRecentDocumentsPane::KoRecentDocumentsPane(QWidget* parent, const KComponentData &_componentData, const QString& header) : KoDetailsPane(parent, _componentData, header) , d(new KoRecentDocumentsPanePrivate) { setFocusProxy(m_documentList); KGuiItem openGItem(i18n("Open This Document"), "document-open"); m_openButton->setGuiItem(openGItem); m_alwaysUseCheckBox->hide(); model()->setSortRole(0); // Disable sorting KConfigGroup config(componentData().config(), "RecentFiles"); int i = 1; QString path; KFileItemList fileList; QStandardItem* rootItem = model()->invisibleRootItem(); do { path = config.readPathEntry(QString("File%1").arg(i), QString()); if (!path.isEmpty()) { QString name = config.readPathEntry(QString("Name%1").arg(i), QString()); KUrl url(path); if (name.isEmpty()) name = url.fileName(); if (!url.isLocalFile() || QFile::exists(url.toLocalFile())) { KFileItem fileItem(KFileItem::Unknown, KFileItem::Unknown, url); fileList.prepend(fileItem); //center all icons in 64x64 area QImage icon = fileItem.pixmap(64).toImage(); icon = icon.convertToFormat(QImage::Format_ARGB32); icon = icon.copy((icon.width() - 64) / 2, (icon.height() - 64) / 2, 64, 64); KoFileListItem* item = new KoFileListItem(QPixmap::fromImage(icon), name); item->setEditable(false); item->setData(fileItem.pixmap(128), Qt::UserRole); item->setFileItem(fileItem); rootItem->insertRow(0, item); } } i++; } while (!path.isEmpty() || i <= 10); //Select the first file QModelIndex firstIndex = model()->indexFromItem(model()->item(0)); m_documentList->selectionModel()->select(firstIndex, QItemSelectionModel::Select); m_documentList->selectionModel()->setCurrentIndex(firstIndex, QItemSelectionModel::Select); d->m_previewJob = KIO::filePreview(fileList, QSize(200, 200), 0); connect(d->m_previewJob, SIGNAL(result(KJob*)), this, SLOT(previewResult(KJob*))); connect(d->m_previewJob, SIGNAL(gotPreview(const KFileItem&, const QPixmap&)), this, SLOT(updatePreview(const KFileItem&, const QPixmap&))); }
KoRecentDocumentsPane::KoRecentDocumentsPane(QWidget* parent, const KComponentData &_componentData, const QString& header) : KoDetailsPane(parent, _componentData, header) , d(new KoRecentDocumentsPanePrivate) { setFocusProxy(m_documentList); KGuiItem openGItem(i18n("Open This Document"), koIconName("document-open")); m_openButton->setGuiItem(openGItem); m_alwaysUseCheckBox->hide(); model()->setSortRole(0); // Disable sorting KConfigGroup config(componentData().config(), "RecentFiles"); int i = 1; QString path; KFileItemList fileList; QStandardItem* rootItem = model()->invisibleRootItem(); do { path = config.readPathEntry(QString("File%1").arg(i), QString()); if (!path.isEmpty()) { QString name = config.readPathEntry(QString("Name%1").arg(i), QString()); QUrl url(path); if (name.isEmpty()) name = url.fileName(); if (!url.isLocalFile() || QFile::exists(url.toLocalFile())) { KFileItem fileItem(KFileItem::Unknown, KFileItem::Unknown, url); fileList.prepend(fileItem); const QIcon icon = QIcon::fromTheme(fileItem.iconName()); KoFileListItem* item = new KoFileListItem(icon, name, fileItem); item->setEditable(false); rootItem->insertRow(0, item); } } i++; } while (!path.isEmpty() || i <= 10); //Select the first file QModelIndex firstIndex = model()->indexFromItem(model()->item(0)); m_documentList->selectionModel()->select(firstIndex, QItemSelectionModel::Select); m_documentList->selectionModel()->setCurrentIndex(firstIndex, QItemSelectionModel::Select); QStringList availablePlugins = KIO::PreviewJob::availablePlugins(); KIO::PreviewJob *previewJob = KIO::filePreview(fileList, QSize(IconExtent, IconExtent), &availablePlugins); d->m_previewJobs.append(previewJob); connect(previewJob, SIGNAL(result(KJob*)), SLOT(previewResult(KJob*))); connect(previewJob, SIGNAL(gotPreview(KFileItem,QPixmap)), SLOT(updateIcon(KFileItem,QPixmap))); }
void FileBrowserWidget::emitFileSelectedSignal() { KFileItemList itemList = m_dirOperator->selectedItems(); for(KFileItemList::iterator it = itemList.begin(); it != itemList.end(); ++it) { emit(fileSelected(*it)); } m_dirOperator->view()->clearSelection(); }
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())); }
// caller needs to delete the returned list! static KFileItemList * fileItemList( const TDECmdLineArgs *args ) { KFileItemList * items = new KFileItemList(); items->setAutoDelete( true ); for ( int i = 0; i < args->count(); i++ ) items->append( new KFileItem( KFileItem::Unknown, KFileItem::Unknown, args->url( i ) )); return items; }
void SearchPane::searchMatches( const KFileItemList &list ) { for( KFileItemList::ConstIterator it = list.begin(), end = list.end(); it != end; ++it ) { if( (*it)->isDir() ) m_dirs += (*it)->url(); else if( m_filter.exactMatch( (*it)->name() ) ) new KURLView::Item( (*it)->url(), static_cast<KURLView*>( m_listView ) ); } }
void KSysinfoPart::slotResult( KIO::Job *job ) { KIO::StatJob *sjob = dynamic_cast<KIO::StatJob*>( job ); if (!job) return; KFileItem item(sjob->statResult(), sjob->url()); KFileItemList list; list.append(&item); emit browserExtension()->popupMenu( 0, QCursor::pos(), list ); }
void IconView::contextMenuEvent( QContextMenuEvent* event ) { QModelIndex index = indexAt( event->pos() ); if ( !index.isValid() || m_selectionModel->selectedIndexes().isEmpty() ) { QMenu* menu = new QMenu; menu->addAction( m_actionCollection.action( "new_menu" ) ); menu->addSeparator(); menu->addAction( m_actionCollection.action( "undo" ) ); menu->addAction( m_actionCollection.action( "paste" ) ); menu->addSeparator(); menu->addAction( m_actionCollection.action( "refresh" ) ); menu->addSeparator(); menu->addAction( m_actionCollection.action( "wallpaper" ) ); if ( event->reason() == QContextMenuEvent::Keyboard ) menu->exec( QPoint( 0, 0 ) ); else menu->exec( event->pos() ); delete menu; return; } KFileItemList items; foreach ( const QModelIndex &index, m_selectionModel->selectedIndexes() ) { KFileItem item = m_model->itemForIndex( m_proxyModel->mapToSource( index ) ); if ( !item.isNull() ) items.append( item ); } QAction* pasteTo = m_actionCollection.action( "pasteto" ); if ( pasteTo ) { pasteTo->setEnabled( m_actionCollection.action( "paste" )->isEnabled() ); pasteTo->setText( m_actionCollection.action( "paste" )->text() ); } QList<QAction*> editActions; editActions.append( m_actionCollection.action( "rename" ) ); editActions.append( m_actionCollection.action( "trash" ) ); KConfigGroup configGroup( KGlobal::config(), "KDE" ); bool showDeleteCommand = configGroup.readEntry( "ShowDeleteCommand", false ); if ( showDeleteCommand ) editActions.append( m_actionCollection.action( "del" ) ); KParts::BrowserExtension::ActionGroupMap actionGroups; actionGroups.insert( "editactions", editActions ); KParts::BrowserExtension::PopupFlags flags = KParts::BrowserExtension::ShowProperties; flags |= KParts::BrowserExtension::ShowUrlOperations; KonqPopupMenu* contextMenu = new KonqPopupMenu( items, KUrl(QDir::homePath()), m_actionCollection, m_newMenu, KonqPopupMenu::ShowNewWindow, flags, QApplication::desktop(), KBookmarkManager::userBookmarksManager(), actionGroups ); contextMenu->exec( event->pos() ); delete contextMenu; }
bool LicensePropsPlugin::supports( const KFileItemList& items ) { KFileItemList::const_iterator kit = items.begin(); const KFileItemList::const_iterator kend = items.end(); for ( ; kit != kend; ++kit ) { bool isLocal = (*kit)->isLocalFile(); // We only support local dirs if ( !(*kit)->isDir() || !isLocal ) return false; } return true; }
bool KPreviewPropsPlugin::supports(KFileItemList _items) { if(_items.count() != 1) return false; if(!KGlobalSettings::showFilePreview(_items.first()->url())) return false; KMimeType::Ptr mt = KMimeType::findByURL(_items.first()->url()); if(mt->inherits("inode/directory") || mt->name() == "application/octet-stream") return false; // TODO Copy everything of KFileMetaPreview::previewProviderFor() ? return true; }
bool KPreviewPropsPlugin::supports( const KFileItemList &_items ) { if ( _items.count() != 1 ) return false; bool metaDataEnabled = KGlobalSettings::showFilePreview(_items.first().url()); if (!metaDataEnabled) return false; const KMimeType::Ptr mime = _items.first().mimeTypePtr(); const QStringList supportedMimeTypes = KIO::PreviewJob::supportedMimeTypes(); foreach(const QString& supportedMime, supportedMimeTypes) { if (mime->is(supportedMime)) return true; } return false; }
void RemoteLister::_completed() { //m_directory is set to the directory we should operate on KFileItemList items = KDirLister::items(); for( KFileItemList::ConstIterator it = items.begin(), end = items.end(); it != end; ++it ) { if( (*it)->isDir() ) m_store->stores += new Store( (*it)->url(), (*it)->name(), m_store ); else m_store->directory->append( (*it)->name().local8Bit(), (*it)->size() / 1024 ); ScanManager::s_files++; } if( m_store->stores.isEmpty() ) //no directories to scan, so we need to append ourselves to the parent directory //propagate() will return the next ancestor that has stores left to be scanned, or root if we are done m_store = m_store->propagate(); if( !m_store->stores.isEmpty() ) { Store::List::Iterator first = m_store->stores.begin(); const KURL url( (*first)->url ); Store *currentStore = m_store; //we should operate with this store next time this function is called m_store = *first; //we don't want to handle this store again currentStore->stores.remove( first ); //this returns _immediately_ debug() << "scanning: " << url << endl; openURL( url ); } else { debug() << "I think we're done\n"; Q_ASSERT( m_root == m_store ); delete this; } }
AkregatorMenu::AkregatorMenu( KonqPopupMenu * popupmenu, const char *name, const QStringList& /* list */ ) : KonqPopupMenuPlugin( popupmenu, name), PluginBase(), m_conf(0), m_part(0) { kdDebug() << "AkregatorMenu::AkregatorMenu()" << endl; if ( QCString( kapp->name() ) == "kdesktop" && !kapp->authorize("editable_desktop_icons" ) ) return; // Do nothing if user has turned us off. // TODO: Not yet implemented in aKregator settings. /*m_conf = new KConfig( "akregatorrc" ); m_conf->setGroup( "AkregatorKonqPlugin" ); if ( !m_conf->readBoolEntry( "Enable", true ) ) return; */ KHTMLView* view = 0L; if (popupmenu && popupmenu->parent() && popupmenu->parent()->inherits("KHTMLView")) view = static_cast<KHTMLView*>(popupmenu->parent()); if (view) m_part = view->part(); KGlobal::locale()->insertCatalogue("akregator_konqplugin"); m_feedMimeTypes << "text/rss" << "text/rdf" << "text/xml"; // Get the list of URLs clicked on from Konqi. //KFileItemList m_list = popupmenu->fileItemList(); // See if any are RSS feeds. KFileItemList list = popupmenu->fileItemList(); KFileItem* it = list.first(); while (it != 0) { if (isFeedUrl(it)) { kdDebug() << "AkregatorMenu: found feed URL " << it->url().prettyURL() << endl; KAction *action = new KAction( i18n( "Add Feed to Akregator" ), "akregator", 0, this, SLOT( slotAddFeed() ), actionCollection(), "akregatorkonqplugin_mnu" ); addAction( action ); addSeparator(); m_feedURL = it->url().url(); break; } it = list.next(); } }
void KFileItemListPropertiesPrivate::determineMimeTypeAndGroup() const { if (!m_items.isEmpty()) { m_mimeType = m_items.first().mimetype(); m_mimeGroup = m_mimeType.left(m_mimeType.indexOf('/')); } foreach (const KFileItem &item, m_items) { const QString itemMimeType = item.mimetype(); // Determine if common mimetype among all items if (m_mimeType != itemMimeType) { m_mimeType.clear(); if (m_mimeGroup != itemMimeType.left(itemMimeType.indexOf('/'))) { m_mimeGroup.clear(); // mimetype groups are different as well! } } } }
void CFontFileListView::properties() { QList<QTreeWidgetItem *> items(selectedItems()); QTreeWidgetItem *item; KFileItemList files; foreach(item, items) if(item->parent()) files.append(KFileItem(KUrl::fromPath(item->text(0)), KMimeType::findByPath(item->text(0))->name(), item->text(COL_LINK).isEmpty() ? S_IFREG : S_IFLNK)); if(files.count()) { KPropertiesDialog dlg(files, this); dlg.exec(); } }
void IconManager::updatePreviews() { if (!m_showPreview) { return; } killPreviewJobs(); m_pendingItems.clear(); m_dispatchedItems.clear(); KFileItemList itemList; const int rowCount = m_model->rowCount(); for (int row = 0; row < rowCount; ++row) { const QModelIndex index = m_model->index(row, 0); KFileItem item = m_model->itemForIndex(index); itemList.append(item); } generatePreviews(itemList); }
void Capture::checkSeqBoundary(const KFileItemList & items) { int newFileIndex; QString tempName; KFileItemList::const_iterator it = items.begin(); const KFileItemList::const_iterator end = items.end(); for ( ; it != end; ++it ) { tempName = (*it).name(); // find the prefix first if (tempName.startsWith(seqPrefix) == false || tempName.endsWith(".fits") == false) continue; if (seqPrefix.isEmpty() == false) tempName.remove(seqPrefix + "_"); int usIndex = tempName.indexOf('_'); if (usIndex == -1) usIndex = tempName.indexOf('.'); tempName.remove(usIndex, tempName.size() - usIndex); bool indexOK = false; newFileIndex = tempName.toInt(&indexOK); if (indexOK && newFileIndex >= seqCount) seqCount = newFileIndex + 1; //qDebug() << "Now the tempName is " << tempName << " conversion is " << (indexOK ? "OK" : "Failed") << " and valu is " << newFileIndex // << " and seqCount is " << seqCount << endl; } currentCCD->setSeqCount(seqCount); }
void KFileItemListPropertiesPrivate::setItems(const KFileItemList &items) { const bool initialValue = !items.isEmpty(); m_items = items; m_urlList = items.targetUrlList(); m_supportsReading = initialValue; m_supportsDeleting = initialValue; m_supportsWriting = initialValue; m_supportsMoving = initialValue; m_isDirectory = initialValue; m_isLocal = true; m_mimeType.clear(); m_mimeGroup.clear(); QFileInfo parentDirInfo; foreach (const KFileItem &item, items) { const QUrl url = item.url(); m_isLocal = m_isLocal && url.isLocalFile(); m_supportsReading = m_supportsReading && KProtocolManager::supportsReading(url); m_supportsDeleting = m_supportsDeleting && KProtocolManager::supportsDeleting(url); m_supportsWriting = m_supportsWriting && KProtocolManager::supportsWriting(url) && item.isWritable(); m_supportsMoving = m_supportsMoving && KProtocolManager::supportsMoving(url); // For local files we can do better: check if we have write permission in parent directory // TODO: if we knew about the parent KFileItem, we could even do that for remote protocols too if (m_isLocal && (m_supportsDeleting || m_supportsMoving)) { const QString directory = url.adjusted(QUrl::RemoveFilename | QUrl::StripTrailingSlash).path(); if (parentDirInfo.filePath() != directory) { parentDirInfo.setFile(directory); } if (!parentDirInfo.isWritable()) { m_supportsDeleting = false; m_supportsMoving = false; } } if (m_isDirectory && !item.isDir()) { m_isDirectory = false; } } }
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))); }
QList<QAction*> VersionControlObserver::actions(const KFileItemList& items) const { QList<QAction*> actions; bool hasNullItems = false; foreach (const KFileItem& item, items) { if (item.isNull()) { kWarning() << "Requesting version-control-actions for empty items"; hasNullItems = true; break; } } if (!m_model || hasNullItems) { return actions; } KVersionControlPlugin2* pluginV2 = qobject_cast<KVersionControlPlugin2*>(m_plugin); if (pluginV2) { // Use version 2 of the KVersionControlPlugin which allows providing actions // also for non-versioned directories. actions = pluginV2->actions(items); } else if (isVersioned()) { // Support deprecated interfaces from KVersionControlPlugin version 1. // Context menu actions where only available for versioned directories. QString directory; if (items.count() == 1) { const KFileItem rootItem = m_model->rootItem(); if (!rootItem.isNull() && items.first().url() == rootItem.url()) { directory = rootItem.url().path(KUrl::AddTrailingSlash); } } actions = directory.isEmpty() ? m_plugin->contextMenuActions(items) : m_plugin->contextMenuActions(directory); } return actions; }
void KuickShow::performDeleteCurrentImage(QWidget *parent) { assert(fileWidget != 0L); KFileItemList list; KFileItem *item = fileWidget->getCurrentItem(false); list.append (item); if (KMessageBox::warningContinueCancel( parent, i18n("<qt>Do you really want to delete\n <b>'%1'</b>?</qt>").arg(item->url().pathOrURL()), i18n("Delete File"), KStdGuiItem::del(), "Kuick_delete_current_image") != KMessageBox::Continue) { return; } tryShowNextImage(); fileWidget->del(list, false, false); }