void KFileDetailView::contentsDropEvent( TQDropEvent *e ) { d->dropItem = 0; d->autoOpenTimer.stop(); if ( ! acceptDrag( e ) ) { // can we decode this ? e->ignore(); // No return; } e->acceptAction(); // Yes KFileListViewItem *item = dynamic_cast<KFileListViewItem*>(itemAt( contentsToViewport( e->pos() ) )); KFileItem * fileItem = 0; if (item) fileItem = item->fileInfo(); emit dropped(e, fileItem); KURL::List urls; if (KURLDrag::decode( e, urls ) && !urls.isEmpty()) { emit dropped(e, urls, fileItem ? fileItem->url() : KURL()); sig->dropURLs(fileItem, e, urls); } }
bool SortedDirModel::filterAcceptsRow(int row, const QModelIndex& parent) const { QModelIndex index = d->mSourceModel->index(row, 0, parent); KFileItem fileItem = d->mSourceModel->itemForIndex(index); MimeTypeUtils::Kinds kind = MimeTypeUtils::fileItemKind(fileItem); if (d->mKindFilter != MimeTypeUtils::Kinds() && !(d->mKindFilter & kind)) { return false; } if (kind != MimeTypeUtils::KIND_DIR && kind != MimeTypeUtils::KIND_ARCHIVE) { int dotPos = fileItem.name().lastIndexOf('.'); if (dotPos >= 1) { QString extension = fileItem.name().mid(dotPos + 1).toLower(); if (d->mBlackListedExtensions.contains(extension)) { return false; } } #ifndef GWENVIEW_SEMANTICINFO_BACKEND_NONE if (!d->mSourceModel->semanticInfoAvailableForIndex(index)) { Q_FOREACH(const AbstractSortedDirModelFilter * filter, d->mFilters) { // Make sure we have semanticinfo, otherwise retrieve it and // return false, we will be called again later when it is // there. if (filter->needsSemanticInfo()) { d->mSourceModel->retrieveSemanticInfoForIndex(index); return false; } } }
bool MediaNotifier::execAutorun(const KFileItem &medium, const QString &path, const QString &autorunFile) { // The desktop environment MUST prompt the user for confirmation // before automatically starting an application. QString mediumType = medium.mimeTypePtr()->name(); QString text = i18n( "An autorun file has been found on your '%1'." " Do you want to execute it?\n" "Note that executing a file on a medium may compromise" " your system's security") .arg(mediumType); QString caption = i18n("Autorun - %1").arg(medium.url().prettyURL()); KGuiItem yes = KStdGuiItem::yes(); KGuiItem no = KStdGuiItem::no(); int options = KMessageBox::Notify | KMessageBox::Dangerous; int answer = KMessageBox::warningYesNo(0L, text, caption, yes, no, QString::null, options); if(answer == KMessageBox::Yes) { // When an Autostart file has been detected and the user has // confirmed its execution the autostart file MUST be executed // with the current working directory ( CWD ) set to the root // directory of the medium. KProcess proc; proc << "sh" << autorunFile; proc.setWorkingDirectory(path); proc.start(); proc.detach(); } return true; }
void AsyncFileTester::checkIfFolder(const QModelIndex &index, QObject *object, const char *method) { if (!index.isValid()) { callResultMethod(object, method, index, false); return; } KFileItem item = static_cast<const ProxyModel*>(index.model())->itemForIndex(index); KUrl url = item.targetUrl(); if (item.isDir()) { callResultMethod(object, method, index, true); return; } if (item.isDesktopFile()) { // Check if the desktop file is a link to a local folder KDesktopFile file(url.path()); if (file.readType() == "Link") { url = file.readUrl(); if (url.isLocalFile()) { KFileItem destItem(KFileItem::Unknown, KFileItem::Unknown, url); callResultMethod(object, method, index, destItem.isDir()); return; } if (KProtocolInfo::protocolClass(url.protocol()) == QString(":local")) { AsyncFileTester *tester = new AsyncFileTester(index, object, method); tester->delayedFolderCheck(url); return; } } } callResultMethod(object, method, index, false); }
bool KFileItemListWidgetInformant::itemIsLink(int index, const KItemListView* view) const { Q_ASSERT(qobject_cast<KFileItemModel*>(view->model())); KFileItemModel* fileItemModel = static_cast<KFileItemModel*>(view->model()); const KFileItem item = fileItemModel->fileItem(index); return item.isLink(); }
bool KFileItemModelFilter::matchesPattern(const KFileItem& item) const { if (m_useRegExp) { return m_regExp->exactMatch(item.text()); } else { return item.text().toLower().contains(m_lowerCasePattern); } }
void KfindWindow::openFolder() { KFileItem fileitem = ((KfFileLVI *)currentItem())->fileitem; KURL url = fileitem.url(); url.setFileName(TQString::null); (void) new KRun(url); }
void FileBrowser::selectAll() { KFileItemList list( *m_dir->view()->items() ); // Select all items which represent files for( KFileItem* item = list.first(); item; item = list.next() ) m_dir->view()->setSelected( item, item->isFile() ); }
QString KFileItem::mimetype() const { if (!d) { return QString(); } KFileItem *that = const_cast<KFileItem *>(this); return that->determineMimeType().name(); }
void View::openIndex(const QModelIndex &index) { KFileItem item = index.data(DirModel::FileItemRole).value<KFileItem>(); if (item.isDir()) { m_freezeUrlUpdates = true; openUrl(item.url()); } }
void IconView::deleteSelectedItems() { KUrl::List urls; foreach (const QModelIndex &index, m_selectionModel->selectedIndexes()) { KFileItem item = m_model->itemForIndex( m_proxyModel->mapToSource( index ) ); urls.append( item.url() ); } KonqOperations::del( QApplication::desktop(), KonqOperations::DEL, urls ); }
void KFindTreeView::saveResults() { KFileDialog *dlg = new KFileDialog(QUrl(), QString(), this); dlg->setOperationMode (KFileDialog::Saving); dlg->setWindowTitle( i18nc("@title:window", "Save Results As") ); dlg->setFilter( QString::fromLatin1("*.html|%1\n*.txt|%2").arg( i18n("HTML page"), i18n("Text file") ) ); dlg->setConfirmOverwrite(true); dlg->exec(); QUrl u = dlg->selectedUrl(); QString filter = dlg->currentFilter(); delete dlg; if (!u.isValid() || !u.isLocalFile()) return; QString filename = u.toLocalFile(); QFile file(filename); if ( !file.open(QIODevice::WriteOnly) ) { KMessageBox::error(parentWidget(), i18n("Unable to save results.")); } else { QTextStream stream( &file ); stream.setCodec( QTextCodec::codecForLocale() ); QList<KFindItem> itemList = m_model->getItemList(); if ( filter == QLatin1String("*.html") ) { stream << QString::fromLatin1("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"" "\"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\">\n" "<head>\n" "<title>%2</title></head>\n" "<meta charset=\"%1\">\n" "<body>\n<h1>%2</h1>\n" "<dl>\n") .arg(QString::fromLatin1(QTextCodec::codecForLocale()->name())) .arg(i18n("KFind Results File")); Q_FOREACH( const KFindItem & item, itemList ) { const KFileItem fileItem = item.getFileItem(); stream << QString::fromLatin1("<dt><a href=\"%1\">%2</a></dt>\n").arg( fileItem.url().url(), fileItem.url().toDisplayString() ); } stream << QString::fromLatin1("</dl>\n</body>\n</html>\n"); } else {
QString FolderModel::iconName() const { const KFileItem rootItem(m_dirModel->dirLister()->url()); if (!rootItem.isFinalIconKnown()) { rootItem.determineMimeType(); } return rootItem.iconName(); }
void FileManager::fillContextMenu(KFileItem item, QMenu* menu) { menu->addSeparator(); menu->addAction(newFileAction); if (item.isFile()) { KDevelop::FileContext context(item.url()); QList<KDevelop::ContextMenuExtension> extensions = KDevelop::ICore::self()->pluginController()->queryPluginsForContextMenuExtensions( &context ); KDevelop::ContextMenuExtension::populateMenu(menu, extensions); } }
void IconView::mouseDoubleClickEvent( QMouseEvent* event ) { if ( event->button() == Qt::LeftButton ) { const QModelIndex index = indexAt( event->pos() ); if ( !index.isValid() ) return; const KFileItem item = m_model->itemForIndex( m_proxyModel->mapToSource( index ) ); item.run(); m_selectionModel->clearSelection(); } }
void KFileTreeBranch::slotDirlisterClearURL( const KURL& url ) { kdDebug(250)<< "*** Clear for URL !" << url.prettyURL() << endl; KFileItem *item = findByURL( url ); if( item ) { KFileTreeViewItem *ftvi = static_cast<KFileTreeViewItem *>(item->extraData( this )); deleteChildrenOf( ftvi ); } }
void DolphinView::slotCompleted() { m_refreshing = true; KFileView* view = fileView(); view->clearView(); // TODO: in Qt4 the code should get a lot // simpler and nicer due to Interview... if (m_iconsView != 0) { m_iconsView->beginItemUpdates(); } if (m_detailsView != 0) { m_detailsView->beginItemUpdates(); } if (m_showProgress) { m_statusBar->setProgressText(QString::null); m_statusBar->setProgress(100); m_showProgress = false; } KFileItemList items(m_dirLister->items()); KFileItemListIterator it(items); m_fileCount = 0; m_folderCount = 0; KFileItem* item = 0; while ((item = it.current()) != 0) { view->insertItem(item); if (item->isDir()) { ++m_folderCount; } else { ++m_fileCount; } ++it; } updateStatusBar(); if (m_iconsView != 0) { // Prevent a flickering of the icon view widget by giving a small // timeslot to swallow asynchronous update events. m_iconsView->setUpdatesEnabled(false); QTimer::singleShot(10, this, SLOT(slotDelayedUpdate())); } if (m_detailsView != 0) { m_detailsView->endItemUpdates(); m_refreshing = false; } }
void KoRecentDocumentsPane::selectionChanged(const QModelIndex& index) { if (index.isValid()) { KoFileListItem* item = static_cast<KoFileListItem*>(model()->itemFromIndex(index)); const KFileItem fileItem = item->fileItem(); m_openButton->setEnabled(true); m_titleLabel->setText(item->data(Qt::DisplayRole).toString()); QPixmap preview = item->data(PreviewRole).value<QPixmap>(); if (preview.isNull()) { // need to fetch preview const KFileItemList fileList = KFileItemList() << fileItem; #if KDE_IS_VERSION(4,6,80) QStringList availablePlugins = KIO::PreviewJob::availablePlugins(); KIO::PreviewJob *previewJob = KIO::filePreview(fileList, QSize(PreviewExtent, PreviewExtent), &availablePlugins); #else KIO::PreviewJob *previewJob = KIO::filePreview(fileList, PreviewExtent, PreviewExtent, 0); #endif d->m_previewJobs.append(previewJob); connect(previewJob, SIGNAL(result(KJob*)), SLOT(previewResult(KJob*))); connect(previewJob, SIGNAL(gotPreview(KFileItem,QPixmap)), SLOT(updatePreview(KFileItem,QPixmap))); // for now set preview to icon preview = item->icon().pixmap(PreviewExtent); if (preview.width() < PreviewExtent && preview.height() < PreviewExtent) { preview = preview.scaled(PreviewExtent, PreviewExtent, Qt::KeepAspectRatio, Qt::SmoothTransformation); } } m_previewLabel->setPixmap(preview); if (!fileItem.isNull()) { QString details = QString("<center>%1<br>").arg(fileItem.url().path()) + "<table border=\"0\">" + i18nc("File modification date and time. %1 is date time", "<tr><td><b>Modified:</b></td><td>%1</td></tr>", QString(fileItem.timeString(KFileItem::ModificationTime))) + i18nc("File access date and time. %1 is date time", "<tr><td><b>Accessed:</b></td><td>%1</td></tr>", QString(fileItem.timeString(KFileItem::AccessTime))) + "</table></center>"; m_detailsLabel->setHtml(details); } else { m_detailsLabel->clear(); } } else { m_openButton->setEnabled(false); m_titleLabel->clear(); m_previewLabel->setPixmap(QPixmap()); m_detailsLabel->clear(); } }
void IconView::pasteTo() { KUrl::List urls; foreach (const QModelIndex &index, m_selectionModel->selectedIndexes()) { KFileItem item = m_model->itemForIndex( m_proxyModel->mapToSource( index ) ); urls.append( item.url() ); } Q_ASSERT(urls.count() == 1); KonqOperations::doPaste( QApplication::desktop(), urls.first() ); }
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; }
K3FileTreeViewItem::K3FileTreeViewItem( K3FileTreeView* parent, const KFileItem &item, KFileTreeBranch *brnch ) :K3ListViewItem( (Q3ListView*)parent ), m_kfileitem(item ), m_branch( brnch ), m_wasListed(false) { setPixmap(0, item.pixmap( KIconLoader::SizeSmall )); setText( 0, item.text()); m_kfileitem.setExtraData( m_branch, this ); }
void ClipboardJob::iconResult(const KFileItem& item) { QVariantMap res; res.insert(s_urlKey, item.url()); QPixmap pix = QIcon::fromTheme(item.determineMimeType().iconName()).pixmap(128, 128); res.insert(s_previewKey, pix); res.insert(s_iconKey, true); res.insert(QStringLiteral("iconName"), item.currentMimeType().iconName()); res.insert(s_previewWidthKey, pix.size().width()); res.insert(s_previewHeightKey, pix.size().height()); setResult(res); emitResult(); }
bool KindProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const { if (d->mKindFilter == MimeTypeUtils::Kinds()) { return true; } QModelIndex index = sourceModel()->index(sourceRow, 0, sourceParent); KFileItem fileItem = index.data(KDirModel::FileItemRole).value<KFileItem>(); if (fileItem.isNull()) { return false; } MimeTypeUtils::Kinds kind = MimeTypeUtils::fileItemKind(fileItem); return d->mKindFilter & kind; }
void DirModel::showPreview(const KFileItem &item, const QPixmap &preview) { QPersistentModelIndex index = m_previewJobs.value(item.url()); m_previewJobs.remove(item.url()); if (!index.isValid()) { return; } m_imageCache->insertImage(item.url().toString(), preview.toImage()); //qDebug() << "preview size:" << preview.size(); emit dataChanged(index, index); }
void LicensePropsPlugin::applyChanges() { KFileItem *item = properties->item(); QByteArray byteArray = licenseChooser->licenseURI().toUtf8(); //watch out: we can't do uriEdit->text().toUtf8().data() because the result is //only valid as long as the QByteArray is around char *license = byteArray.data(); if (license[0] == '\0') license = NULL; QByteArray pathData = item->localPath().toUtf8(); ll_write(pathData.data(),license); }
void StackFolder::dataAdded(const QModelIndex &parent, int start, int end) { for (int i = start; i < end + 1; i++) { const QModelIndex index = m_model->index(i, 0); const KFileItem item = m_model->itemForIndex(index); if (item.isFile()) { const KFileItem parentItem = m_model->itemForIndex(parent); if (m_downloadUrl.isParentOf(parentItem.url())) { startAnimation(); return; } } } }
QVariantMap DirModel::get(int i) const { QModelIndex modelIndex = index(i, 0); KFileItem item = itemForIndex(modelIndex); QString url = item.url().toString(); QString mimeType = item.mimetype(); QVariantMap ret; ret.insert(QStringLiteral("url"), QVariant(url)); ret.insert(QStringLiteral("mimeType"), QVariant(mimeType)); return ret; }
void KoRecentDocumentsPane::openFile(const QModelIndex& index) { if (!index.isValid()) return; KConfigGroup cfgGrp(componentData().config(), "TemplateChooserDialog"); cfgGrp.writeEntry("LastReturnType", "File"); KoFileListItem* item = static_cast<KoFileListItem*>(model()->itemFromIndex(index)); KFileItem fileItem = item->fileItem(); if (!fileItem.isNull()) { emit openUrl(fileItem.url()); } }
void DolphinViewContainer::showItemInfo(const KFileItem& item) { if (item.isNull()) { // Only clear the status bar if unimportant messages are shown. // This prevents that information- or error-messages get hidden // by moving the mouse above the viewport or when closing the // context menu. if (m_statusBar->type() == DolphinStatusBar::Default) { m_statusBar->clear(); } } else { m_statusBar->setMessage(item.getStatusBarInfo(), DolphinStatusBar::Default); } }
void IconView::moveToTrash( Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers ) { if ( modifiers & Qt::ShiftModifier ) { deleteSelectedItems(); return; } KUrl::List urls; foreach (const QModelIndex &index, m_selectionModel->selectedIndexes()) { KFileItem item = m_model->itemForIndex( m_proxyModel->mapToSource( index ) ); urls.append( item.url() ); } KonqOperations::del( QApplication::desktop(), KonqOperations::TRASH, urls ); }