⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kfiledialog.cpp

📁 一种效率高
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	int choice= bookmarksMenu->exec();	QEvent ev(Event_Leave);	QMouseEvent mev (Event_MouseButtonRelease,			 QCursor::pos(), LeftButton, LeftButton);	QApplication::sendEvent(btn, &ev);	QApplication::sendEvent(btn, &mev);		if (choice == 0) {	    // add current to bookmarks	  addToBookmarks();	}	else if (choice > 0) {	  // Select a bookmark (this will not work if there are submenus)	  int i= 1;	  fprintf(stderr, "choice was %d\n", choice);	  KFileBookmark *root= bookmarks->getRoot();	  for (KFileBookmark *b= root->getChildren().first();	       b != 0; b= root->getChildren().next()) {	    if (i == choice) {	      fprintf(stderr, "opening bookmark to %s\n", b->getURL());	      setDir(b->getURL(), true);	    }	    i++;	  }	}		delete bookmarksMenu;	bookmarksMenu= 0;    }}void KFileBaseDialog::dirActivated(KFileInfo *item){    QString tmp = dir->url();    if (tmp.right(1)[0] != '/')	tmp += "/";    QString tmps = item->fileName();    KURL::encodeURL(tmps);    tmp += tmps;    tmp += "/";    debugC("dirActivated %s", tmp.data());    setDir(tmp, true);}void KFileBaseDialog::fileActivated(KFileInfo *item){    debugC("fileAct");    if (acceptUrls)	filename_ = dir->url();    else	filename_ = dir->path();    if (filename_.right(1)[0] != '/')	filename_ += "/";    QString tmps= item->fileName();    KURL::encodeURL(tmps);    filename_ += tmps;    emit fileSelected(filename_);    if (!finished)	QApplication::restoreOverrideCursor();    finished = false;    accept();}void KFileBaseDialog::fileHighlighted(KFileInfo *item){    // remove the predefined selection    selection = 0;    const char *highlighted = item->fileName();    if (acceptUrls)	filename_ = dir->url();    else	filename_ = dir->path();    if (filename_.right(1)[0] != '/')	filename_ += "/";    QString tmp = highlighted;    KURL::encodeURL(tmp);    filename_ += tmp;    locationEdit->setText(filename_);    emit fileHighlighted(highlighted);}KFileInfoContents *KFileDialog::initFileList( QWidget *parent ){    bool mixDirsAndFiles =	kapp->getConfig()->readBoolEntry("MixDirsAndFiles",					 DefaultMixDirsAndFiles);    bool showDetails =	(kapp->getConfig()->readEntry("ViewStyle",				      DefaultViewStyle) == "DetailView");    bool useSingleClick =	kapp->getConfig()->readBoolEntry("SingleClick", DefaultSingleClick);    QDir::SortSpec sort = static_cast<QDir::SortSpec>(dir->sorting() &                                                      QDir::SortByMask);    if (kapp->getConfig()->readBoolEntry("KeepDirsFirst",					 DefaultKeepDirsFirst))        sort = static_cast<QDir::SortSpec>(sort | QDir::DirsFirst);    dir->setSorting(sort);    if (!mixDirsAndFiles)		return new KCombiView(KCombiView::DirList,				  showDetails ? KCombiView::DetailView				  : KCombiView::SimpleView,				  useSingleClick, dir->sorting(),				  parent, "_combi");    else		if (showDetails)	    return new KFileDetailList(useSingleClick, dir->sorting(), parent, "_details");	else	    return new KFileSimpleView(useSingleClick, dir->sorting(), parent, "_simple");}void KFileBaseDialog::setSelection(const char *name){    debugC("setSelection %s", name);    if (!name) {	selection = 0;	return;    }    KURL u(name);    if (u.isMalformed()) // perhaps we have a relative path!?	u = dir->url() + name;    if (u.isMalformed()) { // if it still is	warning("%s is not a correct argument for setSelection!", name);	return;    }    if (!u.isLocalFile()) { // no way to detect, if we have a directory!?	filename_ = u.url();	return;    }    KFileInfo i(u.path());    if (i.isDir())	setDir(u.path(), true);    else {	QString filename = u.path();	int sep = filename.findRev('/');	if (sep >= 0) { // there is a / in it	    setDir(filename.left(sep), true);	    filename = filename.mid(sep+1, filename.length() - sep);	    debugC("filename %s", filename.data());	    selection = filename;	}	if (acceptUrls)	    filename_ = dir->url() + filename;	else	    filename_ = dir->path() + filename;	locationEdit->setText(filename_);    }}void KFileBaseDialog::completion() // SLOT{    QString base;    if (acceptUrls)	base = dir->url().copy();    else	base = dir->path();    // if someone uses completion, he doesn't like the current    // selection    selection = 0;    QString text = locationEdit->currentText();    if ( KURL(text).isMalformed() )	return;                         // invalid entry in location    if (text.left(base.length()) == base) {	QString complete =	    fileList->findCompletion(text.right(text.length() -						base.length()));		if (!complete.isNull()) {	    debugC("Complete %s", complete.data());	    if ( complete != "../" ) {                locationEdit->setText(base + complete);		filename_ = base + complete;	    }	} else {	    // warning("no complete");	}    } else {    // we changed into a parent directory -> go there first	int l = text.length() - 1;	while (!text.isEmpty() && text[l] != '/')	    l--;	setDir(text.left(l), true);	locationEdit->setText(text);	filename_ = text;	// this recursion is very dangerous.	// I'm not *that* sure, that it works in every case        // dg: added a little timeout: time to reread the new directory        QTimer::singleShot( 500, this, SLOT(completion()) );    }}void KFileBaseDialog::resizeEvent(QResizeEvent *){    toolbar->updateRects(true);    toolbar->setMinimumHeight(toolbar->height());}/** * Returns the url for the selected filename */QString KFileBaseDialog::selectedFileURL(){    if (filename_.isNull())	return 0;    else {	KURL u = filename_.data();	return u.url(); // let KURL check the rest    }}QString KFileDialog::getOpenFileURL(const char *url, const char *filter,				    QWidget *parent, const char *name){    QString retval;    KFileDialog *dlg = new KFileDialog(url, filter, parent, name, true, true);    dlg->setCaption(i18n("Open"));    if (dlg->exec() == QDialog::Accepted)	retval = dlg->selectedFileURL();    else	retval = 0;    delete dlg;    if (!retval.isNull())	debugC("getOpenFileURL: returning %s", retval.data());    return retval;}KDirDialog::KDirDialog(const char *url, QWidget *parent, const char *name)    : KFileBaseDialog(url, 0, parent, name, true, false){    init();}KFileInfoContents *KDirDialog::initFileList( QWidget *parent ){    bool useSingleClick =	kapp->getConfig()->readBoolEntry("SingleClick", DefaultSingleClick);    return new KDirListBox( useSingleClick, dir->sorting(), parent, "_dirs" );}QString KFileBaseDialog::getDirectory(const char *url,				  QWidget *parent, const char *name){    QString retval;    KDirDialog *dlg = new KDirDialog(url, parent, name);    dlg->setCaption(i18n("Choose Directory"));    if (dlg->exec() == QDialog::Accepted)	retval = dlg->selectedFile();    else	retval= 0;    delete dlg;    if (!retval.isNull())	debugC("getDirectory: returning %s", retval.data());    return retval;}QString KFileDialog::getSaveFileURL(const char *url, const char *filter,				    QWidget *parent, const char *name){    QString retval;    KFileDialog *dlg= new KFileDialog(url, filter, parent, name, true, true);    dlg->setCaption(i18n("Save"));    if (dlg->exec() == QDialog::Accepted)	retval= dlg->selectedFileURL();    delete dlg;    return retval;}/** * Returns the selected filesQStrList KFileDialog::selectedFileURLList(){  // TODO}QStrList KFileDialog::getOpenFileURLList(const char *,					 const char *,					 QWidget *,					 const char *){  // TODO}QStrList KFileDialog::getSaveFileURLList(const char *, const char *,		       QWidget *, const char *){  // TODO}*//** * If the argument is true the dialog will accept multiple selections. */void KFileBaseDialog::setMultiSelection(bool){    warning("WARNING: Multi Select is not supported yet");    // fileList->setMultiSelection(isMulti);}void KFileBaseDialog::updateStatusLine(){    QString lStatusText;    QString lFileText, lDirText;    if ( fileList->numDirs() == 1 )        lDirText = i18n("directory");    else	lDirText = i18n("directories");    if ( fileList->numFiles() == 1 )        lFileText = i18n("file");    else	lFileText = i18n("files");    lStatusText.sprintf(i18n("%d %s and %d %s"),			fileList->numDirs(), lDirText.data(),			fileList->numFiles(), lFileText.data());    myStatusLine->setText(lStatusText);}void KDirDialog::updateStatusLine(){    QString lDirText;    if ( fileList->numDirs() == 1 )        lDirText = i18n("one directory");    else	lDirText.sprintf(i18n("%d directories"), fileList->numDirs());    myStatusLine->setText(lDirText);}KFilePreviewDialog::KFilePreviewDialog(const char *dirName, const char *filter,                                       QWidget *parent, const char *name,                                       bool modal, bool acceptURLs )    : KFileBaseDialog(dirName, filter, parent, name, modal, acceptURLs){    init();}KFileInfoContents *KFilePreviewDialog::initFileList( QWidget *parent ){    bool useSingleClick =	kapp->getConfig()->readBoolEntry("SingleClick", DefaultSingleClick);    QDir::SortSpec sort = static_cast<QDir::SortSpec>(dir->sorting() &                                                      QDir::SortByMask);    if (kapp->getConfig()->readBoolEntry("KeepDirsFirst",					 DefaultKeepDirsFirst))        sort = static_cast<QDir::SortSpec>(sort | QDir::DirsFirst);    dir->setSorting(sort);    return new KFilePreview( dir, useSingleClick, dir->sorting(), parent, "_prev" );}QString KFilePreviewDialog::getOpenFileName(const char *dir, const char *filter,				            QWidget *parent, const char *name){    QString filename;    KFilePreviewDialog *dlg= new KFilePreviewDialog(dir, filter, parent, name, true, false);    dlg->setCaption(i18n("Open"));    if (dlg->exec() == QDialog::Accepted)	filename = dlg->selectedFile();    delete dlg;    return filename;}QString KFilePreviewDialog::getSaveFileName(const char *dir, const char *filter,				            QWidget *parent, const char *name){    KFilePreviewDialog *dlg= new KFilePreviewDialog(dir, filter, parent, name, true, false);    dlg->setCaption(i18n("Save As"));    QString filename;    if (dlg->exec() == QDialog::Accepted)	filename= dlg->selectedFile();    delete dlg;    return filename;}QString KFilePreviewDialog::getOpenFileURL(const char *url, const char *filter,				           QWidget *parent, const char *name){    QString retval;    KFilePreviewDialog *dlg= new KFilePreviewDialog(url, filter, parent, name, true, true);    dlg->setCaption(i18n("Open"));    if (dlg->exec() == QDialog::Accepted)	retval = dlg->selectedFileURL();    else	retval= 0;    delete dlg;    if (!retval.isNull())	debugC("getOpenFileURL: returning %s", retval.data());    return retval;}QString KFilePreviewDialog::getSaveFileURL(const char *url, const char *filter,				           QWidget *parent, const char *name){    QString retval;    KFilePreviewDialog *dlg= new KFilePreviewDialog(url, filter, parent, name, true, true);    dlg->setCaption(i18n("Save"));    if (dlg->exec() == QDialog::Accepted)	retval= dlg->selectedFileURL();    delete dlg;    return retval;}bool KFilePreviewDialog::getShowFilter(){    return kapp->getConfig()->readBoolEntry("ShowFilter", DefaultShowFilter);}void KFilePreviewDialog::registerPreviewModule( const char * format,						PreviewHandler readPreview,                                                PreviewType inType){    KPreview::registerPreviewModule( format, readPreview, inType );}#include "kfiledialog.moc"

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -