00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
#include <qlayout.h>
00018
#include <qpushbutton.h>
00019
#include <qhbox.h>
00020
#include <qlabel.h>
00021
#include <qstrlist.h>
00022
#include <qtooltip.h>
00023
#include <qregexp.h>
00024
00025
#include <kiconloader.h>
00026
#include <kurlcombobox.h>
00027
#include <kurlcompletion.h>
00028
#include <kprotocolinfo.h>
00029
#include <kconfig.h>
00030
#include <klocale.h>
00031
#include <kcombobox.h>
00032
00033
#include <kdebug.h>
00034
00035
#include "fileselectorwidget.h"
00036
#include <kdiroperator.h>
00037
#include <kcombiview.h>
00038
#include <kfilepreview.h>
00039
#include <kfileview.h>
00040
#include <kfileitem.h>
00041
#include <kimagefilepreview.h>
00042
00043
#include "autoprojectwidget.h"
00044
#include "autoprojectpart.h"
00045
#include "kdevlanguagesupport.h"
00046
00047
#include "kfilednddetailview.h"
00048
#include "kfiledndiconview.h"
00049
00050 KDnDDirOperator::KDnDDirOperator (
const KURL &urlName,
QWidget* parent,
const char* name ) :
KDirOperator ( urlName, parent, name )
00051 {
00052
00053 }
00054
00055 KFileView*
KDnDDirOperator::createView(
QWidget* parent, KFile::FileView view )
00056 {
00057
KFileView* new_view = 0L;
00058
00059
if( (view & KFile::Detail) == KFile::Detail ) {
00060 new_view =
new KFileDnDDetailView( parent,
"detail view");
00061 }
00062
else if ((view & KFile::Simple) == KFile::Simple ) {
00063 new_view =
new KFileDnDIconView( parent,
"simple view");
00064 new_view->
setViewName( i18n(
"Short View") );
00065 }
00066
00067
return new_view;
00068 }
00069
00070
00071 FileSelectorWidget::FileSelectorWidget(
AutoProjectPart* part, KFile::Mode mode,
QWidget* parent,
const char* name ) :
QWidget(parent, name)
00072 {
00073
m_part = part;
00074
00075
00076
QVBoxLayout* lo =
new QVBoxLayout(
this);
00077
00078
QHBox *hlow =
new QHBox (
this);
00079 lo->addWidget(hlow);
00080
00081
home =
new QPushButton( hlow );
00082
home->setPixmap(SmallIcon(
"gohome"));
00083 QToolTip::add(
home, i18n(
"Home directory"));
00084
up =
new QPushButton( hlow );
00085
up->setPixmap(SmallIcon(
"up"));
00086 QToolTip::add(
up, i18n(
"Up one level"));
00087
back =
new QPushButton( hlow );
00088
back->setPixmap(SmallIcon(
"back"));
00089 QToolTip::add(
back, i18n(
"Previous directory"));
00090
forward =
new QPushButton( hlow );
00091
forward->setPixmap(SmallIcon(
"forward"));
00092 QToolTip::add(
forward, i18n(
"Next directory"));
00093
00094
00095
QWidget* spacer =
new QWidget(hlow);
00096 hlow->setStretchFactor(spacer, 1);
00097 hlow->setMaximumHeight(
up->height());
00098
00099
cmbPath =
new KURLComboBox( KURLComboBox::Directories,
true,
this,
"path combo" );
00100
cmbPath->setSizePolicy(
QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ));
00101
KURLCompletion* cmpl =
new KURLCompletion();
00102
cmbPath->
setCompletionObject( cmpl );
00103 lo->addWidget(
cmbPath);
00104
00105
dir =
new KDnDDirOperator(QString::null,
this,
"operator");
00106
dir->
setView(KFile::Simple);
00107
dir->
setMode(mode);
00108
00109 lo->addWidget(
dir);
00110 lo->setStretchFactor(
dir, 2);
00111
00112 QHBox* filterBox =
new QHBox(
this);
00113
filterIcon =
new QLabel(filterBox);
00114
filterIcon->setPixmap( BarIcon(
"filter") );
00115
filter =
new KHistoryCombo(filterBox,
"filter");
00116
filter->setSizePolicy(
QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ));
00117 filterBox->setStretchFactor(
filter, 2);
00118 lo->addWidget(filterBox);
00119
00120
00121 connect(
filter, SIGNAL( activated(
const QString&) ), SLOT(
slotFilterChanged(
const QString&) ) );
00122 connect(
filter, SIGNAL( returnPressed(
const QString&) ), SLOT(
filterReturnPressed(
const QString&) ) );
00123
00124 connect(
home, SIGNAL( clicked() ),
dir, SLOT(
home() ) );
00125 connect(
up, SIGNAL( clicked() ),
dir, SLOT( cdUp() ) );
00126 connect(
back, SIGNAL( clicked() ),
dir, SLOT(
back() ) );
00127 connect(
forward, SIGNAL( clicked() ),
dir, SLOT(
forward() ) );
00128
00129 connect(
cmbPath, SIGNAL( urlActivated(
const KURL& )),
this, SLOT(
cmbPathActivated(
const KURL& ) ));
00130 connect(
cmbPath, SIGNAL( returnPressed(
const QString& )),
this, SLOT(
cmbPathReturnPressed(
const QString& ) ));
00131 connect(
dir, SIGNAL(urlEntered(
const KURL&)),
this, SLOT(
dirUrlEntered(
const KURL&)) );
00132
00133 connect(
dir, SIGNAL(finishedLoading()),
this, SLOT(
dirFinishedLoading()) );
00134
00135
00136
00137
QStringList list;
00138
00139
00140
QDomElement docEl =
m_part->
projectDom()->documentElement();
00141
QDomElement fileviewEl = docEl.namedItem(
"kdevfileview").toElement();
00142
QDomElement groupsEl = fileviewEl.namedItem(
"groups").toElement();
00143
QDomElement groupEl = groupsEl.firstChild().toElement();
00144
00145
while ( !groupEl.isNull() )
00146 {
00147
if (groupEl.tagName() ==
"group")
00148 {
00149 list << groupEl.attribute(
"pattern").replace (
QRegExp (
";" ),
" " ) +
" (" + groupEl.attribute(
"name") +
")";
00150 }
00151 groupEl = groupEl.nextSibling().toElement();
00152 }
00153
00154
filter->
setHistoryItems ( list );
00155
00156
00157 }
00158
00159
00160 FileSelectorWidget::~FileSelectorWidget()
00161 {
00162 }
00163
00164 void FileSelectorWidget::dragEnterEvent (
QDragEnterEvent* )
00165 {
00166 }
00167
00168 void FileSelectorWidget::dropEvent (
QDropEvent* )
00169 {
00170
kdDebug ( 9000 ) <<
"Dropped" <<
endl;
00171
00172
QString path =
"Something was dropped in the Destination directory file-selector";
00173
00174 emit
dropped ( path );
00175
00176 }
00177
00178 void FileSelectorWidget::filterReturnPressed (
const QString& nf )
00179 {
00180
00181
setDir ( nf );
00182 }
00183
00184 void FileSelectorWidget::slotFilterChanged(
const QString & nf )
00185 {
00186
dir->
setNameFilter( nf );
00187
dir->
rereadDir();
00188 }
00189
00190 void FileSelectorWidget::cmbPathActivated(
const KURL& u )
00191 {
00192
dir->
setURL( u,
true );
00193 }
00194
00195 void FileSelectorWidget::cmbPathReturnPressed(
const QString& u )
00196 {
00197
dir->setFocus();
00198
dir->
setURL(
KURL(u),
true );
00199 }
00200
00201
00202 void FileSelectorWidget::dirUrlEntered(
const KURL& u )
00203 {
00204
cmbPath->
removeURL( u );
00205
QStringList urls =
cmbPath->
urls();
00206 urls.prepend( u.
url() );
00207
while ( urls.count() >= (uint)
cmbPath->
maxItems() )
00208 urls.remove( urls.last() );
00209
cmbPath->
setURLs( urls );
00210 }
00211
00212
00213 void FileSelectorWidget::dirFinishedLoading()
00214 {
00215
00216
00217
up->setEnabled(
dir->
actionCollection()->
action(
"up" )->
isEnabled() );
00218
back->setEnabled(
dir->
actionCollection()->
action(
"back" )->
isEnabled() );
00219
forward->setEnabled(
dir->
actionCollection()->
action(
"forward" )->
isEnabled() );
00220
home->setEnabled(
dir->
actionCollection()->
action(
"home" )->
isEnabled() );
00221 }
00222
00223
00224 void FileSelectorWidget::focusInEvent(
QFocusEvent*)
00225 {
00226
dir->setFocus();
00227 }
00228
00229 void FileSelectorWidget::setDir(
KURL u )
00230 {
00231
dir->
setURL(u,
true);
00232 }
00233
00234 void FileSelectorWidget::setDir(
const QString& path)
00235 {
00236
KURL u ( path );
00237
dir->
setURL ( u,
true );
00238 }
00239
00240
00241
#include "fileselectorwidget.moc"
00242