Source Code (Use browser search to find items of interest.)
Class Index
kfind'KfDirDialog (./kdeutils/kfind/kfdird.h:17)
class KfDirDialog : public KDialogBase
{
Q_OBJECT
public:
KfDirDialog( const QString& dirName,
QWidget *parent=0, const char *name=0, bool modal=FALSE );
~KfDirDialog();
QString selectedDir() const;
signals:
private slots:
void dirSelected( int );
void pathSelected();
protected:
private:
void init();
void checkDir( const QString&, bool );
void rereadDir();
QDir d;
QString dirName;
QLabel *pathL;
QLineEdit *path;
QLabel *dirL;
QListBox *dirs;
private: // Disabled copy constructor and operator=
KfDirDialog( const KfDirDialog & );
KfDirDialog &operator=( const KfDirDialog & );
};
kfind'KfDirDialog::KfDirDialog() (./kdeutils/kfind/kfdird.cpp:21)
KfDirDialog::KfDirDialog( const QString& dirName,
QWidget *parent, const char *name, bool modal )
: KDialogBase( parent, name, modal, i18n("Select directory"), Ok|Cancel, Ok )
{
init();
if ( !dirName.isNull() )
d.setPath( dirName );
d.convertToAbs();
rereadDir();
setInitialSize( QSize(250, 300) );
}
kfind'KfDirDialog::init() (./kdeutils/kfind/kfdird.cpp:35)
void KfDirDialog::init( void )
{
QWidget *page = new QWidget( this );
setMainWidget(page);
QVBoxLayout *topLayout = new QVBoxLayout( page, 0, spacingHint() );
pathL = new QLabel( i18n("Current directory:"), page, "pathLabel" );
path = new QLineEdit( page, "path" );
dirL = new QLabel( i18n("Directories:"), page, "dirLabel" );
dirs = new QListBox( page, "dirList" );
topLayout->addWidget(pathL);
topLayout->addWidget(path);
topLayout->addSpacing( spacingHint() );
topLayout->addWidget(dirL);
topLayout->addWidget(dirs);
connect( dirs, SIGNAL(selected(int)),
this, SLOT(dirSelected(int)) );
connect( path, SIGNAL(returnPressed()),
this, SLOT(pathSelected()));
d.setMatchAllDirs( TRUE );
d.setSorting( d.sorting() | QDir::DirsFirst );
}
#if 0
KfDirDialog::KfDirDialog( const QString& dirName,
QWidget *parent, const char *name, bool modal )
: QDialog( parent, name, modal )
{
init();
if ( !dirName.isNull() )
d.setPath( dirName );
d.convertToAbs();
rereadDir();
resize( 200, 300 );
}
void KfDirDialog::init()
{
setCaption(i18n("Select directory"));
pathL = new QLabel( i18n("Current directory:"), this, "pathLabel" );
path = new QLineEdit( this, "path" );
dirL = new QLabel( i18n("Directories:"), this, "dirLabel" );
dirs = new QListBox( this, "dirList" );
okB = new QPushButton( i18n("OK"), this, "okButton" );
cancelB = new QPushButton( i18n("Cancel") , this, "cancelButton" );
QVBoxLayout *vbox = new QVBoxLayout(this, 5);
vbox->addWidget(pathL);
vbox->addWidget(path);
vbox->addSpacing(5);
vbox->addWidget(dirL);
vbox->addWidget(dirs);
QHBoxLayout *hbox = new QHBoxLayout(vbox);
hbox->addWidget(okB);
hbox->addStretch(1);
hbox->addWidget(cancelB);
vbox->activate();
connect( dirs, SIGNAL(selected(int)),
this, SLOT(dirSelected(int)) );
connect( path, SIGNAL(returnPressed()),
this, SLOT(pathSelected()));
connect( okB, SIGNAL(clicked()),
this, SLOT(accept()) );
connect( cancelB, SIGNAL(clicked()),
this, SLOT(reject()) );
d.setMatchAllDirs( TRUE );
d.setSorting( d.sorting() | QDir::DirsFirst );
}
kfind'KfDirDialog::~KfDirDialog() (./kdeutils/kfind/kfdird.cpp:117)
KfDirDialog::~KfDirDialog()
{}
/*!
Returns the selected dir name.
*/
kfind'KfDirDialog::selectedDir() (./kdeutils/kfind/kfdird.cpp:124)
QString KfDirDialog::selectedDir() const
{
QString tmp;
if (dirs->currentItem()!=-1)
{
tmp = QString("%1/%2")
.arg(d.path())
.arg(dirs->text((dirs->currentItem())));
tmp= d.cleanDirPath(tmp);
}
else
tmp = d.path();
return tmp;
}
/*!
Re-reads the active directory in the file dialog.
It is seldom necessary to call this function. It is provided in
case the directory contents change and you want to refresh the
directory list box.
*/
kfind'KfDirDialog::rereadDir() (./kdeutils/kfind/kfdird.cpp:149)
void KfDirDialog::rereadDir()
{
qApp ->setOverrideCursor( waitCursor );
dirs ->clear();
const QFileInfoList *filist = d.entryInfoList();
if ( filist ) {
QFileInfoListIterator it( *filist );
QFileInfo *fi = it.current();
while ( fi && fi->isDir() ) {
dirs->insertItem( fi->fileName() );
fi = ++it;
}
} else {
qApp->restoreOverrideCursor();
KMessageBox::sorry( this, i18n("Cannot open or read directory."));
qApp ->setOverrideCursor( waitCursor );
}
dirs ->repaint();
path->setText( d.path() );
qApp->restoreOverrideCursor();
}
/*!
\internal
Activated when a directory name in the directory list has been selected.
*/
kfind'KfDirDialog::dirSelected() (./kdeutils/kfind/kfdird.cpp:177)
void KfDirDialog::dirSelected( int index )
{
checkDir(dirs->text(index), false);
}
kfind'KfDirDialog::pathSelected() (./kdeutils/kfind/kfdird.cpp:182)
void KfDirDialog::pathSelected()
{
checkDir(path->text(), true);
}
/*!
\internal
Checks dir validity
*/
kfind'KfDirDialog::checkDir() (./kdeutils/kfind/kfdird.cpp:192)
void KfDirDialog::checkDir(const QString& subdir, bool abs)
{
QDir tmp = d;
if ( tmp.cd( subdir, abs) && tmp.isReadable()) {
d = tmp;
rereadDir();
return;
}
KMessageBox::sorry(this, i18n("Cannot open or read directory."));
}