summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie/ofileselector.cc123
-rw-r--r--libopie/ofileselector.h4
2 files changed, 63 insertions, 64 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc
index d1f1e1f..ce66f51 100644
--- a/libopie/ofileselector.cc
+++ b/libopie/ofileselector.cc
@@ -85,9 +85,10 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString
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;
@@ -185,42 +186,38 @@ void OFileSelector::delItems()
}
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 )
@@ -415,14 +412,12 @@ bool OFileSelector::compliesMime(const QString &path, const QString &mime )
}
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 );
@@ -469,42 +464,42 @@ void OFileSelector::reparse()
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 );
@@ -513,8 +508,9 @@ void OFileSelector::reparse()
}
++it;
}
m_View->sort();
+// m_View->ensureItemVisible();
}
QString OFileSelector::directory()const
{
@@ -652,14 +648,10 @@ void OFileSelector::slotViewCheck(const QString &view ){
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") ) {
// remove from the stack
delete m_select;
@@ -669,41 +661,45 @@ void OFileSelector::slotViewCheck(const QString &view ){
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;
@@ -712,16 +708,18 @@ void OFileSelector::initializeListView()
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() ) );
@@ -741,9 +739,9 @@ void OFileSelector::initializeListView()
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 ){
@@ -754,8 +752,9 @@ void OFileSelector::initializeListView()
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 );
@@ -782,8 +781,9 @@ void OFileSelector::initializeListView()
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
@@ -791,11 +791,11 @@ void OFileSelector::initializeListView()
*/
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() );
@@ -900,19 +900,19 @@ void OFileSelector::slotSelectionChanged() // get the current items
}
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" );
@@ -927,18 +927,18 @@ void OFileSelector::slotClicked( int button, QListViewItem *item, const QPoint &
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
@@ -955,15 +955,15 @@ void OFileSelector::slotRightButton(int button, QListViewItem *item, const QPoin
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){
@@ -1013,9 +1013,9 @@ void OFileSelector::slotContextMenu(QListViewItem *item)
}
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();
@@ -1030,12 +1030,15 @@ bool OFileSelector::cd(const QString &str )
}
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
@@ -1074,9 +1077,9 @@ void OFileSelector::slotRename()
}
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
@@ -1101,23 +1104,14 @@ void OFileSelector::cdUP()
m_currentDir = dir.absPath();
reparse();
int count = m_location->count();
insertLocationPath( m_currentDir,count );
- m_location->setCurrentItem( indexFromString(m_currentDir ));
+ 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() );
}
@@ -1135,4 +1129,9 @@ 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
@@ -191,9 +191,9 @@ class OFileSelector : public QWidget {
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();
@@ -210,9 +210,9 @@ class OFileSelector : public QWidget {
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;