author | llornkcor <llornkcor> | 2002-02-24 15:27:06 (UTC) |
---|---|---|
committer | llornkcor <llornkcor> | 2002-02-24 15:27:06 (UTC) |
commit | a43106c752dae2404f33a07dc80851c4a745d2bc (patch) (side-by-side diff) | |
tree | 1bddeba58034bc08c6a24d656098d9104df99ee6 /noncore/unsupported/filebrowser/filebrowser.cpp | |
parent | 7dd14b051a5c1bad0fd0c76c00d06b0d51e1f17f (diff) | |
download | opie-a43106c752dae2404f33a07dc80851c4a745d2bc.zip opie-a43106c752dae2404f33a07dc80851c4a745d2bc.tar.gz opie-a43106c752dae2404f33a07dc80851c4a745d2bc.tar.bz2 |
added permissions dialog
Diffstat (limited to 'noncore/unsupported/filebrowser/filebrowser.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/unsupported/filebrowser/filebrowser.cpp | 422 |
1 files changed, 226 insertions, 196 deletions
diff --git a/noncore/unsupported/filebrowser/filebrowser.cpp b/noncore/unsupported/filebrowser/filebrowser.cpp index 9439bb8..384d7da 100644 --- a/noncore/unsupported/filebrowser/filebrowser.cpp +++ b/noncore/unsupported/filebrowser/filebrowser.cpp @@ -22,3 +22,3 @@ #include "filebrowser.h" - +#include "filePermissions.h" #include <qpe/resource.h> @@ -62,7 +62,7 @@ FileItem::FileItem( QListView * parent, const QFileInfo & fi ) if( fi.isDir() ) - setText( 3, "directory" ); + setText( 3, "directory" ); else if( isLib() ) - setText( 3, "library" ); + setText( 3, "library" ); else - setText( 3, mt.description() ); + setText( 3, mt.description() ); @@ -70,15 +70,15 @@ FileItem::FileItem( QListView * parent, const QFileInfo & fi ) if( fi.isDir() ){ - if( !QDir( fi.filePath() ).isReadable() ) - pm = Resource::loadPixmap( "lockedfolder" ); - else - pm = Resource::loadPixmap( "folder" ); + if( !QDir( fi.filePath() ).isReadable() ) + pm = Resource::loadPixmap( "lockedfolder" ); + else + pm = Resource::loadPixmap( "folder" ); } else if( !fi.isReadable() ) - pm = Resource::loadPixmap( "locked" ); + pm = Resource::loadPixmap( "locked" ); else if( isLib() ) - pm = Resource::loadPixmap( "library" ); + pm = Resource::loadPixmap( "library" ); else - pm = mt.pixmap(); + pm = mt.pixmap(); if ( pm.isNull() ) - pm = Resource::loadPixmap("UnknownDocument-14"); + pm = Resource::loadPixmap("UnknownDocument-14"); setPixmap(0,pm); @@ -91,9 +91,9 @@ QString FileItem::sizeString( unsigned int s ) if ( size > 1024 * 1024 * 1024 ) - return QString().sprintf( "%.1f", size / ( 1024 * 1024 * 1024 ) ) + "G"; + return QString().sprintf( "%.1f", size / ( 1024 * 1024 * 1024 ) ) + "G"; else if ( size > 1024 * 1024 ) - return QString().sprintf( "%.1f", size / ( 1024 * 1024 ) ) + "M"; + return QString().sprintf( "%.1f", size / ( 1024 * 1024 ) ) + "M"; else if ( size > 1024 ) - return QString().sprintf( "%.1f", size / ( 1024 ) ) + "K"; + return QString().sprintf( "%.1f", size / ( 1024 ) ) + "K"; else - return QString::number( size ) + "B"; + return QString::number( size ) + "B"; } @@ -107,13 +107,13 @@ QString FileItem::key( int column, bool ascending ) const if( (column == 0) && fileInfo.isDir() ){ // Sort by name - // We want the directories to appear at the top of the list - tmp = (char) 0; - return (tmp + text( column ).lower()); + // We want the directories to appear at the top of the list + tmp = (char) 0; + return (tmp + text( column ).lower()); } else if( column == 2 ) { // Sort by date - QDateTime epoch( QDate( 1980, 1, 1 ) ); + QDateTime epoch( QDate( 1980, 1, 1 ) ); tmp.sprintf( "%08d", epoch.secsTo( fileInfo.lastModified() ) ); - return tmp; + return tmp; } else if( column == 1 ) { // Sort by size - return tmp.sprintf( "%08d", fileInfo.size() ); + return tmp.sprintf( "%08d", fileInfo.size() ); } @@ -127,7 +127,7 @@ bool FileItem::isLib() if( !qstrncmp("lib", fileInfo.baseName(), 3) && - ( fileInfo.extension().contains( "so" ) || - fileInfo.extension().contains( "a" ) ) ) - return TRUE; + ( fileInfo.extension().contains( "so" ) || + fileInfo.extension().contains( "a" ) ) ) + return TRUE; else - return FALSE; + return FALSE; } @@ -147,6 +147,6 @@ bool FileItem::rename( const QString & name ) if ( name.isEmpty() ) - return FALSE; + return FALSE; if ( name.contains( QRegExp("[/\\$\"\'\\*\\?]") ) ) - return FALSE; + return FALSE; @@ -156,5 +156,5 @@ bool FileItem::rename( const QString & name ) if ( ::rename( (const char *) oldpath, (const char *) newpath ) != 0 ) - return FALSE; + return FALSE; else - return TRUE; + return TRUE; } @@ -165,3 +165,3 @@ bool FileItem::rename( const QString & name ) FileView::FileView( const QString & dir, QWidget * parent, - const char * name ) + const char * name ) : QListView( parent, name ), @@ -188,5 +188,5 @@ FileView::FileView( const QString & dir, QWidget * parent, connect( this, SIGNAL( clicked( QListViewItem * )), - SLOT( itemClicked( QListViewItem * )) ); + SLOT( itemClicked( QListViewItem * )) ); connect( this, SIGNAL( doubleClicked( QListViewItem * )), - SLOT( itemDblClicked( QListViewItem * )) ); + SLOT( itemDblClicked( QListViewItem * )) ); connect( this, SIGNAL( selectionChanged() ), SLOT( cancelMenuTimer() ) ); @@ -212,5 +212,5 @@ void FileView::setDir( const QString & dir ) if ( dir.startsWith( "/dev" ) ) { - QMessageBox::warning( this, tr( "File Manager" ), - tr( "Can't show /dev/ directory." ), tr( "&Ok" ) ); - return; + QMessageBox::warning( this, tr( "File Manager" ), + tr( "Can't show /dev/ directory." ), tr( "&Ok" ) ); + return; } @@ -230,3 +230,3 @@ void FileView::generateDir( const QString & dir ) d.setSorting( QDir::Name | QDir::DirsFirst | QDir::IgnoreCase | - QDir::Reversed ); + QDir::Reversed ); @@ -238,8 +238,8 @@ void FileView::generateDir( const QString & dir ) while( (fi = it.current()) ){ - if( (fi->fileName() == ".") || (fi->fileName() == "..") ){ - ++it; - continue; - } - (void) new FileItem( (QListView *) this, *fi ); - ++it; + if( (fi->fileName() == ".") || (fi->fileName() == "..") ){ + ++it; + continue; + } + (void) new FileItem( (QListView *) this, *fi ); + ++it; } @@ -258,5 +258,5 @@ void FileView::rename() if( ( pm = itemToRename->pixmap( 0 ) ) == NULL ) - pmw = 0; + pmw = 0; else - pmw = pm->width(); + pmw = pm->width(); @@ -271,5 +271,5 @@ void FileView::rename() if( le == NULL ){ - le = new InlineEdit( this ); - le->setFrame( FALSE ); - connect( le, SIGNAL( lostFocus() ), SLOT( endRenaming() ) ); + le = new InlineEdit( this ); + le->setFrame( FALSE ); + connect( le, SIGNAL( lostFocus() ), SLOT( endRenaming() ) ); } @@ -292,14 +292,14 @@ void FileView::endRenaming() if( le && itemToRename ){ - le->hide(); - setSelected( itemToRename, selected ); + le->hide(); + setSelected( itemToRename, selected ); - if( !itemToRename->rename( le->text() ) ){ - QMessageBox::warning( this, tr( "Rename file" ), - tr( "Rename failed!" ), tr( "&Ok" ) ); - } else { - updateDir(); - } - itemToRename = NULL; - horizontalScrollBar()->setEnabled( TRUE ); - verticalScrollBar()->setEnabled( TRUE ); + if( !itemToRename->rename( le->text() ) ){ + QMessageBox::warning( this, tr( "Rename file" ), + tr( "Rename failed!" ), tr( "&Ok" ) ); + } else { + updateDir(); + } + itemToRename = NULL; + horizontalScrollBar()->setEnabled( TRUE ); + verticalScrollBar()->setEnabled( TRUE ); } @@ -320,6 +320,6 @@ void FileView::copy() while( i ){ - if( i->isSelected() /*&& !i->isDir()*/ ){ - flist += i->getFilePath(); - } - i = (FileItem *) i->nextSibling(); + if( i->isSelected() /*&& !i->isDir()*/ ){ + flist += i->getFilePath(); + } + i = (FileItem *) i->nextSibling(); } @@ -335,45 +335,45 @@ void FileView::paste() for ( QStringList::Iterator it = flist.begin(); it != flist.end(); ++it ) { - basename = (*it).mid((*it).findRev("/") + 1, (*it).length()); - - dest = cd + "/" + basename; - if( QFile( dest ).exists() ){ - i = 1; - dest = cd + "/Copy of " + basename; - while( QFile( dest ).exists() ){ - dest.sprintf( "%s/Copy (%d) of %s", (const char *) cd, i++, - (const char *) basename ); - } - } - - // - // Copy a directory recursively using the "cp" command - - // may have to be changed - // - if( QFileInfo( (*it) ).isDir() ){ - cmd = "/bin/cp -fpR \"" + (*it) +"\" " + "\"" + dest + "\""; - err = system( (const char *) cmd ); - } else if( !copyFile( dest, (*it) ) ){ - err = -1; - } else { - err = 0; - } - - if ( err != 0 ) { - QMessageBox::warning( this, tr("Paste file"), tr("Paste failed!"), - tr("Ok") ); - break; - } else { - updateDir(); - QListViewItem * i = firstChild(); - basename = dest.mid( dest.findRev("/") + 1, dest.length() ); - - while( i ){ - if( i->text(0) == basename ){ - setCurrentItem( i ); - ensureItemVisible( i ); - break; - } - i = i->nextSibling(); - } - } + basename = (*it).mid((*it).findRev("/") + 1, (*it).length()); + + dest = cd + "/" + basename; + if( QFile( dest ).exists() ){ + i = 1; + dest = cd + "/Copy of " + basename; + while( QFile( dest ).exists() ){ + dest.sprintf( "%s/Copy (%d) of %s", (const char *) cd, i++, + (const char *) basename ); + } + } + + // + // Copy a directory recursively using the "cp" command - + // may have to be changed + // + if( QFileInfo( (*it) ).isDir() ){ + cmd = "/bin/cp -fpR \"" + (*it) +"\" " + "\"" + dest + "\""; + err = system( (const char *) cmd ); + } else if( !copyFile( dest, (*it) ) ){ + err = -1; + } else { + err = 0; + } + + if ( err != 0 ) { + QMessageBox::warning( this, tr("Paste file"), tr("Paste failed!"), + tr("Ok") ); + break; + } else { + updateDir(); + QListViewItem * i = firstChild(); + basename = dest.mid( dest.findRev("/") + 1, dest.length() ); + + while( i ){ + if( i->text(0) == basename ){ + setCurrentItem( i ); + ensureItemVisible( i ); + break; + } + i = i->nextSibling(); + } + } } @@ -392,17 +392,17 @@ bool FileView::copyFile( const QString & dest, const QString & src ) if( s.open( IO_ReadOnly | IO_Raw ) && - d.open( IO_WriteOnly | IO_Raw ) ) + d.open( IO_WriteOnly | IO_Raw ) ) { - while( (bytesRead = s.readBlock( bf, sizeof( bf ) )) == - sizeof( bf ) ) - { - if( d.writeBlock( bf, sizeof( bf ) ) != sizeof( bf ) ){ - success = FALSE; - break; - } - } - if( success && (bytesRead > 0) ){ - d.writeBlock( bf, bytesRead ); - } + while( (bytesRead = s.readBlock( bf, sizeof( bf ) )) == + sizeof( bf ) ) + { + if( d.writeBlock( bf, sizeof( bf ) ) != sizeof( bf ) ){ + success = FALSE; + break; + } + } + if( success && (bytesRead > 0) ){ + d.writeBlock( bf, bytesRead ); + } } else { - success = FALSE; + success = FALSE; } @@ -411,3 +411,3 @@ bool FileView::copyFile( const QString & dest, const QString & src ) if( stat( (const char *) src, &status ) == 0 ){ - chmod( (const char *) dest, status.st_mode ); + chmod( (const char *) dest, status.st_mode ); } @@ -423,9 +423,9 @@ void FileView::cut() QString cmd, dest, basename, cd = "/tmp/qpemoving"; - QStringList newflist; - newflist.clear(); - - cmd = "rm -rf " + cd; - system ( (const char *) cmd ); - cmd = "mkdir " + cd; - system( (const char *) cmd ); + QStringList newflist; + newflist.clear(); + + cmd = "rm -rf " + cd; + system ( (const char *) cmd ); + cmd = "mkdir " + cd; + system( (const char *) cmd ); @@ -450,3 +450,3 @@ void FileView::cut() - newflist += dest; + newflist += dest; @@ -475,4 +475,4 @@ void FileView::cut() - // update the filelist to point to tmp dir so paste works nicely - flist = newflist; + // update the filelist to point to tmp dir so paste works nicely + flist = newflist; } @@ -489,6 +489,6 @@ void FileView::del() while( i ){ - if( i->isSelected() ){ - fl += i->getFilePath(); - } - i = (FileItem *) i->nextSibling(); + if( i->isSelected() ){ + fl += i->getFilePath(); + } + i = (FileItem *) i->nextSibling(); } @@ -497,17 +497,17 @@ void FileView::del() if( QMessageBox::warning( this, tr("Delete"), tr("Are you sure?"), - tr("Yes"), tr("No") ) == 0) + tr("Yes"), tr("No") ) == 0) { - // - // Dependant upon the "rm" command - will probably have to be replaced - // - for ( QStringList::Iterator it = fl.begin(); it != fl.end(); ++it ) { - cmd = "/bin/rm -rf \"" + (*it) + "\""; - err = system( (const char *) cmd ); - if ( err != 0 ) { - QMessageBox::warning( this, tr("Delete"), tr("Delete failed!"), - tr("Ok") ); - break; - } - } - updateDir(); + // + // Dependant upon the "rm" command - will probably have to be replaced + // + for ( QStringList::Iterator it = fl.begin(); it != fl.end(); ++it ) { + cmd = "/bin/rm -rf \"" + (*it) + "\""; + err = system( (const char *) cmd ); + if ( err != 0 ) { + QMessageBox::warning( this, tr("Delete"), tr("Delete failed!"), + tr("Ok") ); + break; + } + } + updateDir(); } @@ -522,3 +522,3 @@ void FileView::newFolder() while( QFile( nd ).exists() ){ - nd.sprintf( "%s/NewFolder (%d)", (const char *) currentDir, t++ ); + nd.sprintf( "%s/NewFolder (%d)", (const char *) currentDir, t++ ); } @@ -526,6 +526,6 @@ void FileView::newFolder() if( mkdir( (const char *) nd, 0777 ) != 0){ - QMessageBox::warning( this, tr( "New folder" ), - tr( "Folder creation failed!" ), - tr( "Ok" ) ); - return; + QMessageBox::warning( this, tr( "New folder" ), + tr( "Folder creation failed!" ), + tr( "Ok" ) ); + return; } @@ -536,8 +536,8 @@ void FileView::newFolder() while( i ){ - if( i->isDir() && ( i->getFilePath() == nd ) ){ - setCurrentItem( i ); - rename(); - break; - } - i = (FileItem *) i->nextSibling(); + if( i->isDir() && ( i->getFilePath() == nd ) ){ + setCurrentItem( i ); + rename(); + break; + } + i = (FileItem *) i->nextSibling(); } @@ -557,3 +557,3 @@ void FileView::itemClicked( QListViewItem * i) if( t->isDir() ){ - setDir( t->getFilePath() ); + setDir( t->getFilePath() ); } @@ -567,4 +567,4 @@ void FileView::itemDblClicked( QListViewItem * i) if(t->launch() == -1){ - QMessageBox::warning( this, tr( "Launch Application" ), - tr( "Launch failed!" ), tr( "Ok" ) ); + QMessageBox::warning( this, tr( "Launch Application" ), + tr( "Launch failed!" ), tr( "Ok" ) ); } @@ -601,3 +601,3 @@ void FileView::cancelMenuTimer() if( menuTimer.isActive() ) - menuTimer.stop(); + menuTimer.stop(); } @@ -625,3 +625,3 @@ void FileView::showFileMenu() if ( !i ) - return; + return; @@ -630,4 +630,4 @@ void FileView::showFileMenu() if ( !i->isDir() ) { - m->insertItem( tr( "Add to Documents" ), this, SLOT( addToDocuments() ) ); - m->insertSeparator(); + m->insertItem( tr( "Add to Documents" ), this, SLOT( addToDocuments() ) ); + m->insertSeparator(); } @@ -638,11 +638,11 @@ void FileView::showFileMenu() if ( !i->isDir() ) { - if ( app ) - m->insertItem( app->pixmap(), tr( "Open in " + app->name() ), this, SLOT( run() ) ); - else if( i->isExecutable() ) - m->insertItem( Resource::loadPixmap( i->text( 0 ) ), tr( "Run" ), this, SLOT( run() ) ); + if ( app ) + m->insertItem( app->pixmap(), tr( "Open in " + app->name() ), this, SLOT( run() ) ); + else if( i->isExecutable() ) + m->insertItem( Resource::loadPixmap( i->text( 0 ) ), tr( "Run" ), this, SLOT( run() ) ); - m->insertItem( Resource::loadPixmap( "txt" ), tr( "View as text" ), - this, SLOT( viewAsText() ) ); + m->insertItem( Resource::loadPixmap( "txt" ), tr( "View as text" ), + this, SLOT( viewAsText() ) ); - m->insertSeparator(); + m->insertSeparator(); } @@ -651,7 +651,8 @@ void FileView::showFileMenu() m->insertItem( Resource::loadPixmap("cut"), - tr( "Cut" ), this, SLOT( cut() ) ); + tr( "Cut" ), this, SLOT( cut() ) ); m->insertItem( Resource::loadPixmap("copy"), - tr( "Copy" ), this, SLOT( copy() ) ); + tr( "Copy" ), this, SLOT( copy() ) ); m->insertItem( Resource::loadPixmap("paste"), - tr( "Paste" ), this, SLOT( paste() ) ); + tr( "Paste" ), this, SLOT( paste() ) ); + m->insertItem( tr( "change permissions" ), this, SLOT( chPerm() ) ); m->insertItem( tr( "Delete" ), this, SLOT( del() ) ); @@ -668,3 +669,3 @@ void FileView::showFileMenu() FileBrowser::FileBrowser( QWidget * parent, - const char * name, WFlags f ) : + const char * name, WFlags f ) : QMainWindow( parent, name, f ) @@ -675,3 +676,3 @@ FileBrowser::FileBrowser( QWidget * parent, FileBrowser::FileBrowser( const QString & dir, QWidget * parent, - const char * name, WFlags f ) : + const char * name, WFlags f ) : QMainWindow( parent, name, f ) @@ -714,3 +715,3 @@ void FileBrowser::init(const QString & dir) lastAction = new QAction( tr("Previous dir"), Resource::loadIconSet( "back" ), - QString::null, 0, this, 0 ); + QString::null, 0, this, 0 ); connect( lastAction, SIGNAL( activated() ), fileView, SLOT( lastDir() ) ); @@ -720,3 +721,3 @@ void FileBrowser::init(const QString & dir) upAction = new QAction( tr("Parent dir"), Resource::loadIconSet( "up" ), - QString::null, 0, this, 0 ); + QString::null, 0, this, 0 ); connect( upAction, SIGNAL( activated() ), fileView, SLOT( parentDir() ) ); @@ -725,3 +726,3 @@ void FileBrowser::init(const QString & dir) QAction *a = new QAction( tr("New folder"), Resource::loadPixmap( "newfolder" ), - QString::null, 0, this, 0 ); + QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), fileView, SLOT( newFolder() ) ); @@ -730,3 +731,3 @@ void FileBrowser::init(const QString & dir) a = new QAction( tr("Cut"), Resource::loadPixmap( "cut" ), - QString::null, 0, this, 0 ); + QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), fileView, SLOT( cut() ) ); @@ -735,3 +736,3 @@ void FileBrowser::init(const QString & dir) a = new QAction( tr("Copy"), Resource::loadPixmap( "copy" ), - QString::null, 0, this, 0 ); + QString::null, 0, this, 0 ); connect( a, SIGNAL( activated() ), fileView, SLOT( copy() ) ); @@ -740,3 +741,3 @@ void FileBrowser::init(const QString & dir) pasteAction = new QAction( tr("Paste"), Resource::loadPixmap( "paste" ), - QString::null, 0, this, 0 ); + QString::null, 0, this, 0 ); connect( pasteAction, SIGNAL( activated() ), fileView, SLOT( paste() ) ); @@ -750,3 +751,3 @@ void FileBrowser::init(const QString & dir) connect( pcmciaChannel, SIGNAL(received(const QCString &, const QByteArray &)), - this, SLOT(pcmciaMessage( const QCString &, const QByteArray &)) ); + this, SLOT(pcmciaMessage( const QCString &, const QByteArray &)) ); } @@ -756,3 +757,3 @@ void FileBrowser::pcmciaMessage( const QCString &msg, const QByteArray &) if ( msg == "mtabChanged()" ) { - // ## Only really needed if current dir is on a card + // ## Only really needed if current dir is on a card fileView->updateDir(); @@ -768,5 +769,5 @@ void FileBrowser::dirSelected( int id ) while( (j = dirMenu->idAt( i )) != id ){ - dir += dirMenu->text( j ).stripWhiteSpace(); - if( dirMenu->text( j ) != "/" ) dir += "/"; - i++; + dir += dirMenu->text( j ).stripWhiteSpace(); + if( dirMenu->text( j ) != "/" ) dir += "/"; + i++; } @@ -787,5 +788,5 @@ void FileBrowser::updateDirMenu() for ( QStringList::Iterator it = l.begin(); it != l.end(); ++it ) { - spc.fill( ' ', i++); - dirMenu->insertItem( spc + (*it), this, - SLOT( dirSelected(int) ) ); + spc.fill( ' ', i++); + dirMenu->insertItem( spc + (*it), this, + SLOT( dirSelected(int) ) ); } @@ -842,9 +843,38 @@ void FileBrowser::updateSorting() if ( sortMenu->isItemChecked( sortMenu->idAt( 0 ) ) ) - sortName(); + sortName(); else if ( sortMenu->isItemChecked( sortMenu->idAt( 1 ) ) ) - sortSize(); + sortSize(); else if ( sortMenu->isItemChecked( sortMenu->idAt( 2 ) ) ) - sortDate(); + sortDate(); else - sortType(); + sortType(); +} + +void FileView::chPerm() { + FileItem * i; + QStringList fl; + QString cmd; + int err; + + if((i = (FileItem *) firstChild()) == 0) return; + + while( i ){ + if( i->isSelected() ){ + fl += i->getFilePath(); + } + i = (FileItem *) i->nextSibling(); + } + if( fl.count() < 1 ) return; + if( QMessageBox::warning( this, tr("Change permissions"), tr("Are you sure?"), + tr("Yes"), tr("No") ) == 0) { + for ( QStringList::Iterator it = fl.begin(); it != fl.end(); ++it ) { + filePermissions *filePerm; + filePerm = new filePermissions(this, "Permissions",true,0,(const QString &)(*it)); + filePerm->exec(); + if( filePerm) + delete filePerm; + break; + } + updateDir(); + } } |