summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/ofileselector.cc135
-rw-r--r--libopie/ofileselector.h4
2 files changed, 69 insertions, 70 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index d1f1e1f..ce66f51 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -81,17 +81,18 @@ namespace {
OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString &dirName,
const QString &fileName, const QStringList &mimetypes ) : QWidget( wid )
{
if(wid!=0)
resize(wid->width(),wid->height());
m_selector = selector;
m_currentDir = dirName;
m_name = fileName;
- m_mimetypes = mimetypes;
+ requestedMimeTypesList = m_mimetypes = mimetypes;
+
// if( mimetypes.isEmpty() )
// m_autoMime = true;
m_mode = mode;
m_shTool = true;
m_shPerm = true;
m_shLne = true;
m_shChooser = true;
@@ -181,50 +182,46 @@ void OFileSelector::delItems()
QLayoutIterator it = m_lay->iterator();
while ( it.current() != 0 ){
it.deleteCurrent();
}
}
void OFileSelector::init()
{
-
+// qDebug("init");
m_stack = new QWidgetStack(this, "wstack" );
- if( m_selector == NORMAL ){
QString currMime;
if( m_mimeCheck != 0 )
currMime = m_mimeCheck->currentText();
-
updateMimes();
m_select = new FileSelector( currMime == "All" ? QString::null : currMime , m_stack, "fileselector", FALSE, FALSE );
m_stack->addWidget(m_select, NORMAL );
m_lay->addWidget(m_stack );
m_stack->raiseWidget(NORMAL );
connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) );
m_pseudoLayout = 0l;
- }else {
+ if( m_selector != NORMAL ) {
initializeListView();
}
-
if(m_shLne ){
initializeName();
}
-
if(m_shPerm ){
m_checkPerm = new QCheckBox(tr("Set Permission"), this, "Permission" );
m_checkPerm->setChecked( false );
m_lay->addWidget(m_checkPerm );
}
-
if( m_shChooser )
initializeChooser();
-
if(m_shYesNo )
initializeYes();
-
+
+ m_mimeCheck->setCurrentItem(indexByString( m_mimeCheck, requestedMimeTypesList.first()) );
+ reparse();
}
void OFileSelector::setYesCancelVisible( bool show )
{
if ( show == m_shYesNo )
return;
m_shYesNo = show;
@@ -411,22 +408,20 @@ bool OFileSelector::compliesMime(const QString &path, const QString &mime )
MimeType type( path );
if( type.id() == mime )
return true;
return false;
}
void OFileSelector::reparse()
{
+ qDebug("reparse");
if(m_View== 0 || m_selector == NORMAL)
return;
-
m_View->clear();
-
-
QString currMime =m_mimeCheck->currentText();
// update the mimetype now
if( m_autoMime ) {
QDir dir( m_currentDir );
m_mimetypes.clear();
m_mimeCheck->clear();
dir.setFilter( QDir::Files | QDir::Readable );
dir.setSorting(QDir::Size );
@@ -465,60 +460,61 @@ void OFileSelector::reparse()
else
filter |= QDir::All;
*/
if( m_selector == EXTENDED_ALL )
filter = QDir::Files | QDir::Dirs | QDir::Hidden | QDir::All;
else
filter = QDir::Files | QDir::Dirs | QDir::All;
dir.setFilter( filter );
-
+ qDebug("infoList");
const QFileInfoList *list = dir.entryInfoList();
QFileInfoListIterator it( *list );
QFileInfo *fi;
while( (fi=it.current()) ){
if(fi->fileName() == ".." || fi->fileName() == "." ){
++it;
continue;
}
- qWarning("Test: %s", fi->fileName().latin1() );
+// qWarning("Test: %s", fi->fileName().latin1() );
if(fi->isSymLink() ){
- qWarning("Symlink %s", fi->fileName().latin1() );
+// qWarning("Symlink %s", fi->fileName().latin1() );
QString file = fi->dirPath(true)+"/"+ fi->readLink();
- qWarning("File ->%s", file.latin1() );
+// qWarning("File ->%s", file.latin1() );
for(int i=0; i<=4; i++ ){ // prepend from dos
QFileInfo info( file );
if( !info.exists() ){
- qWarning("does not exist" );
+// qWarning("does not exist" );
addSymlink(currMime, fi, TRUE );
break;
}else if( info.isDir() ){
- qWarning("isDir" );
+// qWarning("isDir" );
addDir(currMime, fi, TRUE );
break;
}else if( info.isFile() ){
- qWarning("isFile" );
+// qWarning("isFile" );
addFile(currMime, fi, TRUE );
break;
}else if( info.isSymLink() ){
file = info.dirPath(true)+ "/"+ info.readLink();
- qWarning("isSymlink again %s", file.latin1() );
+// qWarning("isSymlink again %s", file.latin1() );
}else if( i == 4 ){ // just insert it and have the symlink symbol
addSymlink(currMime, fi );
- qWarning("level too deep" );
+// qWarning("level too deep" );
}
}
}else if( fi->isDir() ){
addDir(currMime, fi );
}else if( fi->isFile() ) { // file ?
addFile(currMime, fi );
}
++it;
}
m_View->sort();
+// m_View->ensureItemVisible();
}
QString OFileSelector::directory()const
{
QDir d( m_currentDir);
return d.absPath();
}
@@ -581,17 +577,17 @@ void OFileSelector::initializeChooser()
m_viewCheck->insertItem(tr("Documents") );
m_viewCheck->insertItem(tr("Files") );
m_viewCheck->insertItem(tr("All Files") );
// if(!m_autoMime )
// m_mimeCheck->insertItem(m_mimetypes.join("," ) );
// else{ // check
updateMimes();
- m_mimeCheck->insertStringList( m_mimetypes );
+ m_mimeCheck->insertStringList( m_mimetypes );
// }
connect( m_viewCheck, SIGNAL(activated(const QString &) ),
this, SLOT(slotViewCheck(const QString & ) ) );
connect( m_mimeCheck, SIGNAL(activated(const QString &) ),
this, SLOT(slotMimeCheck(const QString & ) ) );
}
@@ -641,91 +637,93 @@ void OFileSelector::slotViewCheck(const QString &view ){
m_stack->addWidget( m_select, NORMAL );
m_mimeCheck->clear();
m_selector = NORMAL;
updateMimes();
m_mimeCheck->insertStringList( m_mimetypes );
m_stack->raiseWidget( NORMAL );
connect(m_select, SIGNAL(fileSelected( const DocLnk &) ), this, SLOT(slotFileBridgeSelected(const DocLnk &) ) );
- }else if(view == QString::fromLatin1("Files") ){
+ } else if(view == QString::fromLatin1("Files") ){
// remove from the stack
delete m_select;
m_select = 0;
delete m_View;
m_View = 0;
-
-
m_selector = EXTENDED;
- // create the ListView or IconView
initializeListView();
-
reparse();
- }else if(view == QString::fromLatin1("All Files") ) {
+ } else if(view == QString::fromLatin1("All Files") ) {
// remove from the stack
delete m_select;
m_select = 0;
delete m_View;
m_View = 0;
m_selector = EXTENDED_ALL;
initializeListView();
reparse();
- };
+ }
}
void OFileSelector::updateMimes() // lets check which mode is active
// check the current dir for items then
{
m_mimetypes.clear();
m_mimetypes.append("All" );
- if( m_selector == NORMAL ){
+// if( m_selector == NORMAL ){
DocLnkSet set;
Global::findDocuments(&set, QString::null );
QListIterator<DocLnk> dit( set.children() );
for ( ; dit.current(); ++dit ) {
if( !m_mimetypes.contains((*dit)->type() ) )
m_mimetypes.append( (*dit)->type() );
}
- }else{
+// }else{
// should be allreday updatet
- ;
- }
+ // ;
+ // }
}
void OFileSelector::initializeListView()
-{
+{
+ // in the instance that a developer selected the view to be Files or Entended,
+ // in the initial initialization, you are deleting objects here
+ // that aren't even existing yet.
+
// just to make sure but clean it up better FIXME
- delete m_View;
- m_View = 0;
- delete m_boxToolbar;
- delete m_homeButton;
- delete m_docButton;
- delete m_location;
- delete m_up;
+ // if( m_View) delete m_View;
+// m_View = 0;
+// if(m_boxToolbar) delete m_boxToolbar;
+// if(m_homeButton) delete m_homeButton;
+// if(m_docButton) delete m_docButton;
+// if( m_location) delete m_location;
+// if(m_up) delete m_up;
//delete m_pseudo;
//if(m_pseudoLayout!=0 ) // why did you overload malloc
//delete m_pseudoLayout;
m_boxToolbar = 0;
m_homeButton = 0;
m_docButton = 0;
m_location = 0;
m_up = 0;
m_pseudo = 0;
m_pseudoLayout = 0;
- // time for the toolbar
+ qDebug(" time for the toolbar ");
m_pseudo = new QWidget(m_stack, "Pseudo Widget");
m_pseudoLayout = new QVBoxLayout(m_pseudo );
if(m_shTool ){
m_boxToolbar = new QHBoxLayout( );
m_boxToolbar->setAutoAdd( true );
m_location = new QComboBox(m_pseudo );
+ m_location ->setEditable(TRUE);
connect( m_location, SIGNAL(activated(const QString &) ), this, SLOT( locationComboActivated(const QString & ) ) );
+ connect( m_location->lineEdit(),SIGNAL(returnPressed()), this,SLOT( locationComboChanged()));
m_up = new QPushButton(Resource::loadIconSet("up"),"", m_pseudo,"cdUpButton");
m_up->setFixedSize( QSize( 20, 20 ) );
connect(m_up ,SIGNAL(clicked()),this,SLOT(cdUP() ) );
m_up->setFlat(TRUE);
m_homeButton = new QPushButton(Resource::loadIconSet("home") , "", m_pseudo);
m_homeButton->setFixedSize( QSize( 20, 20 ) );
@@ -737,29 +735,30 @@ void OFileSelector::initializeListView()
connect(m_homeButton,SIGNAL(clicked()),this,SLOT(slotDoc() ) );
m_docButton->setFlat(TRUE);
m_boxToolbar->addWidget(m_location );
m_boxToolbar->addWidget(m_up );
m_boxToolbar->addWidget(m_homeButton );
m_boxToolbar->addWidget(m_docButton );
m_pseudoLayout->addLayout(m_boxToolbar );
- // lets fill the combobox
+ qDebug("lets fill the combobox");
StorageInfo storage;
const QList<FileSystem> &fs = storage.fileSystems();
QListIterator<FileSystem> it ( fs );
for( ; it.current(); ++it ){
const QString disk = (*it)->name();
const QString path = (*it)->path();
m_location->insertItem(path+ "<-"+disk );
}
int count = m_location->count();
m_location->insertItem(m_currentDir );
m_location->setCurrentItem( count );
};
+
m_View = new QListView(m_pseudo, "Extended view" );
m_stack->addWidget( m_pseudo, EXTENDED );
m_stack->raiseWidget( EXTENDED );
m_pseudoLayout->addWidget(m_View );
QPEApplication::setStylusOperation( m_View->viewport(),QPEApplication::RightOnHold);
// set up the stuff
// Pixmap Name Date Size mime
//(m_View->header() )->hide();
@@ -778,28 +777,29 @@ void OFileSelector::initializeListView()
connect(m_View, SIGNAL(currentChanged(QListViewItem *) ), this, SLOT(slotCurrentChanged(QListViewItem * ) ) );
connect(m_View, SIGNAL(mouseButtonClicked(int, QListViewItem*, const QPoint &, int) ),
this, SLOT(slotClicked( int, QListViewItem *, const QPoint &, int) ) );
connect(m_View, SIGNAL(mouseButtonPressed(int, QListViewItem *, const QPoint &, int )),
this, SLOT(slotRightButton(int, QListViewItem *, const QPoint &, int ) ) );
};
+
/* If a item is locked depends on the mode
if we're in OPEN !isReadable is locked
if we're in SAVE !isWriteable is locked
*/
void OFileSelector::addFile(const QString &mime, QFileInfo *info, bool symlink ){
- qWarning("Add Files" );
+// qWarning("Add Files" );
if( !m_files ){
- qWarning("not mfiles" );
+// qWarning("not mfiles" );
return;
}
MimeType type( info->filePath() );
QString name;
QString dir;
bool locked= false;
if(mime == "All" ){
@@ -896,53 +896,53 @@ void OFileSelector::slotFileBridgeSelected( const DocLnk &lnk )
void OFileSelector::slotSelectionChanged() // get the current items
// fixme
{
qWarning("selection changed" );
}
void OFileSelector::slotCurrentChanged(QListViewItem *item )
{
- qWarning("current changed" );
+// qWarning("current changed" );
if( item == 0 )
return;
if( m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
OFileSelectorItem *sel = (OFileSelectorItem*)item;
if(!sel->isDir() ){
- qWarning("is not dir" );
+// qWarning("is not dir" );
if(m_shLne ){
m_edit->setText(sel->text(1) );
- qWarning("setTexy" );
+// qWarning("setTexy" );
}
}
}else {
qWarning("mode not extended" );
}
}
// either select or change dir
void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &point, int )
{
if( item == 0 )
return;
if( button != Qt::LeftButton )
return;
- qWarning("clicked" );
+// qWarning("clicked" );
if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ){
- qWarning("inside" );
+// qWarning("inside" );
OFileSelectorItem *sel = (OFileSelectorItem*)item;
if(!sel->isLocked() ){ // not locked either changedir or open
QStringList str = QStringList::split("->", sel->text(1) );
if(sel->isDir() ){
cd( sel->directory() + "/" + str[0] );
} else {
- qWarning("file" );
+// qWarning("file" );
if(m_shLne )
m_edit->setText(str[0] );
emit fileSelected(str[0] );
// emit DocLnk need to do it
}
} else {
qWarning( "locked" );
}
@@ -951,23 +951,23 @@ void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &
void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoint &, int )
{
if (item == 0 )
return;
if( button != Qt::RightButton )
return;
- qWarning("right button" );
+// qWarning("right button" );
slotContextMenu(item);
}
void OFileSelector::slotContextMenu(QListViewItem *item)
{
- qWarning("context menu" );
+// qWarning("context menu" );
if( item ==0 || !m_showPopup )
return;
if( m_custom !=0){
m_custom->exec();
}else{
QPopupMenu menu;
QAction up;
@@ -1009,37 +1009,40 @@ void OFileSelector::slotContextMenu(QListViewItem *item)
this, SLOT(slotDelete() ) );
menu.exec(QCursor::pos() );
}
}
bool OFileSelector::cd(const QString &str )
{
- qWarning(" dir %s", str.latin1() );
+// qWarning(" dir %s", str.latin1() );
QDir dir( str);
if(dir.exists() ){
m_currentDir = dir.absPath();
reparse();
if(m_shTool ){
int count = m_location->count();
insertLocationPath( str ,count );
m_location->setCurrentItem( count );
}
return true;
}
return false;
}
void OFileSelector::insertLocationPath(const QString &currentPath, int count) {
QStringList pathList;
+ bool underDog = FALSE;
for(int i=0;i<count;i++) {
pathList << m_location->text(i);
+ if( m_location->text(i) == currentPath)
+ underDog = TRUE;
}
- if( pathList.grep( currentPath,TRUE).isEmpty() ) {
+ if( !underDog) {
m_location->clear();
if( currentPath.left(2)=="//")
pathList.append( currentPath.right(currentPath.length()-1) );
else
pathList.append( currentPath );
m_location->insertStringList( pathList,-1);
}
}
@@ -1070,17 +1073,17 @@ void OFileSelector::slotRescan()
void OFileSelector::slotRename()
{
// rename inline
}
void OFileSelector::slotDelete()
{
- qWarning("delete slot" );
+// qWarning("delete slot" );
OFileSelectorItem *sel = (OFileSelectorItem*)m_View->currentItem();
QStringList list = QStringList::split("->", sel->text(1) );
if( sel->isDir() ){
QString str = QString::fromLatin1("rm -rf ") + list[0]; //better safe than sorry
switch ( QMessageBox::warning(this,tr("Delete"),tr("Do you really want to delete\n")+list[0],
tr("Yes"),tr("No"),0,1,1) ) {
case 0:
::system(str.utf8().data() );
@@ -1096,32 +1099,23 @@ void OFileSelector::slotDelete()
void OFileSelector::cdUP()
{
QDir dir( m_currentDir );
dir.cdUp();
if(dir.exists() ){
m_currentDir = dir.absPath();
reparse();
int count = m_location->count();
- insertLocationPath( m_currentDir,count );
- m_location->setCurrentItem( indexFromString(m_currentDir ));
+ insertLocationPath( m_currentDir, count);
+ m_location->setCurrentItem( indexByString( m_location, m_currentDir));
//this wont work in all instances
// FIXME
}
}
-int OFileSelector::indexFromString(const QString &str) {
-
- for(int i=0;i< m_location->count();i++) {
- if(str == m_location->text(i))
- return i;
- }
- return 0;
-}
-
void OFileSelector::slotHome()
{
cd(QDir::homeDirPath() );
}
void OFileSelector::slotDoc()
{
cd(QDir::homeDirPath() + "/Documents" );
@@ -1131,8 +1125,13 @@ void OFileSelector::slotNavigate()
{
}
void OFileSelector::locationComboActivated(const QString & file ) {
cd(file.left(file.find("<-",0,TRUE)));
reparse();
}
+
+void OFileSelector::locationComboChanged() {
+ cd( m_location->lineEdit()->text());
+ reparse();
+}
diff --git a/libopie/ofileselector.h b/libopie/ofileselector.h
index 81a9e63..babe09f 100644
--- a/libopie/ofileselector.h
+++ b/libopie/ofileselector.h
@@ -187,17 +187,17 @@ class OFileSelector : public QWidget {
protected slots:
void slotOk();
void slotCancel();
void slotViewCheck(const QString & );
void slotMimeCheck(const QString & );
void locationComboActivated(const QString & );
void insertLocationPath(const QString &, int);
- int indexFromString(const QString &);
+ void locationComboChanged();
protected:
void init();
void updateMimes();
protected:
private:
int m_mode, m_selector;
@@ -206,17 +206,17 @@ class OFileSelector : public QWidget {
QPushButton *m_reread, *m_up;
QListView *m_View;
QCheckBox *m_checkPerm;
QWidget *m_pseudo;
QVBoxLayout *m_pseudoLayout;
QString m_currentDir;
QString m_name;
- QStringList m_mimetypes;
+ QStringList m_mimetypes, requestedMimeTypesList;
FileSelector *m_select;
QWidgetStack *m_stack;
QVBoxLayout *m_lay;
QGridLayout *m_Oselector;
QHBoxLayout *m_boxToolbar;
QHBoxLayout *m_boxOk;