-rw-r--r-- | libopie/ofileselector.cc | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libopie/ofileselector.cc b/libopie/ofileselector.cc index 1807575..128292f 100644 --- a/libopie/ofileselector.cc +++ b/libopie/ofileselector.cc @@ -79,363 +79,371 @@ OFileSelector::OFileSelector(QWidget *wid, int mode, int selector, const QString m_autoMime = true; m_mode = mode; m_shTool = true; m_shPerm = true; m_shLne = true; m_shChooser = true; m_shYesNo = true; // for FILESELECTOR only view is interesting m_location = 0; m_homeButton = 0; m_docButton = 0; m_hideButton = 0; m_ok = 0; m_cancel = 0; m_reread = 0; m_up = 0; m_View = 0; m_select = 0; m_stack = 0; m_select = 0; m_stack = 0; m_lay = 0; m_boxToolbar = 0; m_boxOk = 0; m_edit = 0; m_fnLabel = 0; m_checkPerm = 0; m_mimeCheck = 0; m_viewCheck = 0; m_dir = true; m_files = true; if(m_pixmaps == 0 ) // init the pixmaps initPics(); m_lay = new QVBoxLayout(this); init(); m_edit->setText( fileName ); } void OFileSelector::initPics() { qWarning("init pics" ); m_pixmaps = new QMap<QString,QPixmap>; QPixmap pm = Resource::loadPixmap( "folder" ); QPixmap lnk = Resource::loadPixmap( "symlink" ); QPainter painter( &pm ); painter.drawPixmap( pm.width()-lnk.width(), pm.height()-lnk.height(), lnk ); pm.setMask( pm.createHeuristicMask( FALSE ) ); m_pixmaps->insert("dirsymlink", pm ); QPixmap pm2 = Resource::loadPixmap( "lockedfolder" ); QPainter pen(&pm2 ); pen.drawPixmap(pm2.width()-lnk.width(), pm2.height()-lnk.height(), lnk ); pm2.setMask( pm2.createHeuristicMask( FALSE ) ); m_pixmaps->insert("symlinkedlocked", pm2 ); }; // let's initialize the gui /** -------------------- | cmbBox Button | -------------------- | FileSlector | | or | | OSelector | | | | | ____________________ | LineEdit | ____________________ | Permission Bar | ____________________ | ViewChoose | ____________________ | Save Cancel| ____________________ */ void OFileSelector::delItems() { QLayoutIterator it = m_lay->iterator(); while ( it.current() != 0 ){ it.deleteCurrent(); } } void OFileSelector::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 ); }else { 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(); }; void OFileSelector::setYesCancelVisible( bool show ) { if ( show == m_shYesNo ) return; m_shYesNo = show; if( !show ){ delete m_ok; delete m_cancel; m_ok = 0; m_cancel = 0; // delete m_boxOk; all ready deleted in delItems } updateLay(); // recreate it and save the other states } void OFileSelector::setToolbarVisible( bool show ) { if ( m_shTool == show ) return; /* if( show ){ }else { }*/ } void OFileSelector::setPermissionBarVisible( bool show ) { if( show == m_shPerm ) return; m_shPerm = show; updateLay(); } void OFileSelector::setLineEditVisible( bool show ) { if( show == m_shLne ) return; m_shLne = show; if( !show ){ delete m_edit; delete m_fnLabel; m_edit = 0; m_fnLabel = 0; //delete m_boxName; will be deleted } updateLay(); } void OFileSelector::setChooserVisible( bool show ) { if( show = m_shChooser ) return; m_shChooser = show; if( !show ){ delete m_mimeCheck; delete m_viewCheck; m_mimeCheck = 0; m_viewCheck = 0; } updateLay(); } QCheckBox* OFileSelector::permissionCheckbox( ) { return m_checkPerm; } void OFileSelector::setCaseSensetive( bool caSe ) { m_case = caSe; reparse(); } void OFileSelector::setShowFiles(bool files ){ m_files = files; reparse(); } void OFileSelector::setPopupMenu(const QPopupMenu * ) { //delete oldpopup; } bool OFileSelector::setPermission( ) const { if( m_checkPerm == 0 ) return false; else return m_checkPerm->isChecked(); } void OFileSelector::setPermissionChecked( bool check ) { if( m_checkPerm == 0 ) return; m_checkPerm->setChecked( check ); } QString OFileSelector::selectedName( )const { QString string; if( m_selector == NORMAL ){ const DocLnk *lnk = m_select->selected(); string = lnk->file(); }else if(m_selector == EXTENDED || m_selector == EXTENDED_ALL ) { QListViewItem *item = m_View->currentItem(); if(item != 0 ){ string = item->text( 1 ); } } return string; } QStringList OFileSelector::selectedNames()const { QStringList list; return list; } DocLnk OFileSelector::selectedDocument( )const { DocLnk lnk; return lnk; } void OFileSelector::updateLay() { /* if( m_shTool ) // else // hide */ // save the state bool check = false; if( m_checkPerm != 0 ) check = m_checkPerm->isChecked(); QString text; if( m_edit != 0 ) text = m_edit->text(); // save current mimetype delItems(); delete m_checkPerm; + m_checkPerm = 0; delete m_edit; + m_edit = 0; delete m_fnLabel; + m_fnLabel = 0; delete m_ok; + m_ok = 0; delete m_cancel; + m_cancel = 0; delete m_mimeCheck; + m_mimeCheck = 0; delete m_viewCheck; + m_viewCheck = 0; delete m_select; // test delete m_stack; //delete m_list; init(); if( m_shLne ) m_edit->setText(text ); if( m_shPerm ) m_checkPerm->setChecked(check ); } // let's update the mimetypes. Use the current mimefilter for the 2nd QDir retrieve // insert QListViewItems with the right options bool OFileSelector::compliesMime(const QString &path, const QString &mime ) { if( mime == "All" ) return true; MimeType type( path ); if( type.id() == mime ) return true; return false; } void OFileSelector::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 ); const QFileInfoList *list = dir.entryInfoList(); QFileInfoListIterator it( *list ); QFileInfo *fi; while( (fi=it.current()) ){ if(fi->extension() == QString::fromLatin1("desktop") ){ ++it; continue; } MimeType type(fi->filePath() ); if( !m_mimetypes.contains( type.id() ) ) m_mimetypes.append( type.id() ); ++it; } m_mimetypes.prepend("All" ); m_mimeCheck->insertStringList(m_mimetypes ); // set it to the current mimetype m_mimeCheck->setCurrentItem( indexByString( m_mimeCheck, currMime ) ); }; QDir dir( m_currentDir ); //dir.setFilter(-1 ); dir.setSorting(QDir::Name | QDir::DirsFirst | QDir::Reversed | QDir::IgnoreCase ); 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() ); if(fi->isSymLink() ){ qWarning("Symlink %s", fi->fileName().latin1() ); QString file = fi->dirPath(true)+"/"+ fi->readLink(); 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" ); addSymlink(currMime, fi, TRUE ); break; }else if( info.isDir() ){ qWarning("isDir" ); addDir(currMime, fi, TRUE ); break; }else if( info.isFile() ){ qWarning("isFile" ); addFile(currMime, fi, TRUE ); break; }else if( info.isSymLink() ){ file = info.dirPath(true)+ "/"+ info.readLink(); 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" ); } } }else if( fi->isDir() ){ addDir(currMime, fi ); |