summaryrefslogtreecommitdiff
path: root/noncore/unsupported/filebrowser/filebrowser.cpp
Side-by-side diff
Diffstat (limited to 'noncore/unsupported/filebrowser/filebrowser.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/filebrowser/filebrowser.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/noncore/unsupported/filebrowser/filebrowser.cpp b/noncore/unsupported/filebrowser/filebrowser.cpp
index 8cf8a60..92a688a 100644
--- a/noncore/unsupported/filebrowser/filebrowser.cpp
+++ b/noncore/unsupported/filebrowser/filebrowser.cpp
@@ -167,196 +167,196 @@ bool FileItem::rename( const QString & name )
return FALSE;
if ( name.contains( QRegExp("[/\\$\"\'\\*\\?]") ) )
return FALSE;
oldpath = fileInfo.filePath();
newpath = fileInfo.dirPath() + "/" + name;
if ( ::rename( (const char *) oldpath, (const char *) newpath ) != 0 )
return FALSE;
else
return TRUE;
}
QPixmap FileItem::drawThumbnail(const QFileInfo &file) {
/*
* this thing is sloooooow, and it also doesn't load
* dynamicly (like a web browser). if anyone knows how to
* do that, please do!
*/
QString cacheDir = "/tmp/filebrowserThumbnailCache";
QFileInfo cachedFile (cacheDir + file.filePath());
if (cachedFile.exists() && cachedFile.lastModified() == file.lastModified()) {
QPixmap cachedImage (cachedFile.filePath());
return cachedImage;
}
else {
QImage image (file.filePath());
// if inside of cache dir, don't render thumbnails! recursive error!
if (image.isNull() || file.filePath().contains(QRegExp("^" + cacheDir))) {
DocLnk doc (file.filePath());
return doc.pixmap();
}
Config cfg("Filebrowser");
cfg.setGroup("View");
int size;
size =cfg.readNumEntry("ThumbSize", 72);
QPixmap thumb (size, size);
double scale = (double)image.height() / (double)image.width();
int newHeight = int(size * scale);
thumb.convertFromImage (image.smoothScale(size, newHeight));
if (!cachedFile.dir().exists()) {
QString cmd = "/bin/mkdir -p \"" + cachedFile.dirPath() +"\"";
system( (const char *) cmd );
}
if (thumb.save(cachedFile.filePath(), QPixmap::imageFormat(file.filePath()), 70)) {
// make thumbnail modify time the same as the image
QString cmd = "/bin/touch -r \"" + file.filePath() +"\" " +
"\"" + cachedFile.filePath() + "\"";
system( (const char *) cmd );
}
return thumb;
}
}
//
// FileView
//
FileView::FileView( const QString & dir, QWidget * parent,
const char * name,
bool hidden, bool symlinks, bool thumbnails )
: QListView( parent, name ),
menuTimer( this ),
le( NULL ),
itemToRename( NULL ),
showHidden( hidden ),
showSymlinks( symlinks ),
showThumbnails( thumbnails ),
menuKeepsOpen( FALSE )
{
addColumn( "Name" );
addColumn( "Size" );
addColumn( "Date" );
addColumn( "Type" );
setMultiSelection( TRUE );
//header()->hide();
setColumnWidthMode( 0, Manual );
setColumnWidthMode( 3, Manual );
// right align yize column
setColumnAlignment( 1, AlignRight );
generateDir( dir );
- connect( this, SIGNAL( clicked( QListViewItem * )),
- SLOT( itemClicked( QListViewItem * )) );
- connect( this, SIGNAL( doubleClicked( QListViewItem * )),
- SLOT( itemDblClicked( QListViewItem * )) );
+ connect( this, SIGNAL( clicked(QListViewItem*)),
+ SLOT( itemClicked(QListViewItem*)) );
+ connect( this, SIGNAL( doubleClicked(QListViewItem*)),
+ SLOT( itemDblClicked(QListViewItem*)) );
connect( this, SIGNAL( selectionChanged() ), SLOT( cancelMenuTimer() ) );
connect( &menuTimer, SIGNAL( timeout() ), SLOT( showFileMenu() ) );
}
void FileView::resizeEvent( QResizeEvent *e )
{
setColumnWidth( 0, width() - 2 * lineWidth() - 20 - columnWidth( 1 ) - columnWidth( 2 ) );
// hide type column, we use it for "sort by type" only
//setColumnWidth( 3, 0 );
QListView::resizeEvent( e );
}
void FileView::updateDir()
{
generateDir( currentDir );
}
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;
}
dirHistory += currentDir;
generateDir( dir );
}
void FileView::generateDir( const QString & dir )
{
if(menuKeepsOpen){
cancelMenuTimer();
}
QDir d( dir );
if( d.exists() && !d.isReadable() ) return;
currentDir = d.canonicalPath();
if( !showHidden)
d.setFilter( QDir::Dirs | QDir::Files );
else
d.setFilter( QDir::Dirs | QDir::Files |QDir::Hidden | QDir::All);
d.setSorting( QDir::Name | QDir::DirsFirst | QDir::IgnoreCase | QDir::Reversed );
const QFileInfoList * list = d.entryInfoList();
QFileInfoListIterator it( *list );
QFileInfo *fi;
QProgressBar *thumbProgress = 0;
if (showThumbnails) {
thumbProgress = new QProgressBar(it.count(), this);
thumbProgress->show();
}
clear();
int fileCount = 1; // used in the thumbnail progress meter
while( (fi = it.current()) ){
if( (fi->fileName() == ".") || (fi->fileName() == "..") ){
++it;
continue;
}
if(!showSymlinks && fi->isSymLink()){
++it;
continue;
}
// thumbnail progress
if (showThumbnails) {
thumbProgress->setProgress(fileCount);
}
(void) new FileItem( (QListView *) this, *fi );
++it;
++fileCount;
}
if (showThumbnails) {
thumbProgress->close();
}
emit dirChanged();
}
void FileView::rename()
{
itemToRename = (FileItem *) currentItem();
const QPixmap * pm;
int pmw;
if( itemToRename == NULL ) return;
@@ -815,194 +815,194 @@ FileBrowser::FileBrowser( const QString & dir, QWidget * parent,
init( dir );
}
void FileBrowser::init(const QString & dir)
{
setCaption( tr("File Manager") );
setIcon( Resource::loadPixmap( "filebrowser_icon" ) );
connect( qApp,SIGNAL( aboutToQuit()),SLOT( cleanUp()) );
Config cfg("Filebrowser");
cfg.setGroup("View");
bool showHidden=(cfg.readEntry("Hidden","FALSE") == "TRUE");
bool showSymlinks=(cfg.readEntry("Symlinks","FALSE") == "TRUE");
bool showThumbnails=(cfg.readEntry("Thumbnails","FALSE") == "TRUE");
cfg.setGroup("Menu");
bool menuKeepsOpen=(cfg.readEntry("KeepOpen", "FALSE") == "TRUE");
fileView = new FileView( dir, this, 0, showHidden, showSymlinks, showThumbnails );
fileView->setAllColumnsShowFocus( TRUE );
fileView->setMenuKeepsOpen(menuKeepsOpen);
setCentralWidget( fileView );
setToolBarsMovable( FALSE );
QToolBar* toolBar = new QToolBar( this );
toolBar->setHorizontalStretchable( TRUE );
QMenuBar* menuBar = new QMenuBar( toolBar );
dirMenu = new QPopupMenu( this );
menuBar->insertItem( tr( "Dir" ), dirMenu );
sortMenu = new QPopupMenu( this );
menuBar->insertItem( tr( "Sort" ), sortMenu );
sortMenu->insertItem( tr( "by Name "), this, SLOT( sortName() ) );
sortMenu->insertItem( tr( "by Size "), this, SLOT( sortSize() ) );
sortMenu->insertItem( tr( "by Date "), this, SLOT( sortDate() ) );
sortMenu->insertItem( tr( "by Type "), this, SLOT( sortType() ) );
sortMenu->insertSeparator();
sortMenu->insertItem( tr( "Ascending" ), this, SLOT( updateSorting() ) );
sortMenu->setItemChecked( sortMenu->idAt( 5 ), TRUE );
sortMenu->setItemChecked( sortMenu->idAt( 0 ), TRUE );
viewMenu = new QPopupMenu( this);
viewMenu->insertItem( tr( "Hidden"), this, SLOT( updateShowHidden() ) );
viewMenu->insertItem( tr( "Symlinks"), this, SLOT( updateShowSymlinks() ) );
viewMenu->insertItem( tr( "Thumbnails"), this, SLOT( updateShowThumbnails() ) );
viewMenu->setItemChecked( viewMenu->idAt( 0 ), showHidden );
viewMenu->setItemChecked( viewMenu->idAt( 1 ), showSymlinks );
viewMenu->setItemChecked( viewMenu->idAt( 2 ), showThumbnails );
menuBar->insertItem( tr("View"), viewMenu );
toolBar = new QToolBar( this );
lastAction = new QAction( tr("Previous dir"), Resource::loadIconSet( "back" ),
QString::null, 0, this, 0 );
connect( lastAction, SIGNAL( activated() ), fileView, SLOT( lastDir() ) );
lastAction->addTo( toolBar );
lastAction->setEnabled( FALSE );
upAction = new QAction( tr("Parent dir"), Resource::loadIconSet( "up" ),
QString::null, 0, this, 0 );
connect( upAction, SIGNAL( activated() ), fileView, SLOT( parentDir() ) );
upAction->addTo( toolBar );
QAction *a = new QAction( tr("New folder"), Resource::loadPixmap( "newfolder" ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), fileView, SLOT( newFolder() ) );
a->addTo( toolBar );
a = new QAction( tr("Cut"), Resource::loadPixmap( "cut" ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), fileView, SLOT( cut() ) );
a->addTo( toolBar );
a = new QAction( tr("Copy"), Resource::loadPixmap( "copy" ),
QString::null, 0, this, 0 );
connect( a, SIGNAL( activated() ), fileView, SLOT( copy() ) );
a->addTo( toolBar );
pasteAction = new QAction( tr("Paste"), Resource::loadPixmap( "paste" ),
QString::null, 0, this, 0 );
connect( pasteAction, SIGNAL( activated() ), fileView, SLOT( paste() ) );
pasteAction->addTo( toolBar );
// dirLabel = new QLabel(this, "DirLabel");
connect( fileView, SIGNAL( dirChanged() ), SLOT( updateDirMenu() ) );
updateDirMenu();
QCopChannel* pcmciaChannel = new QCopChannel( "QPE/Card", this );
- connect( pcmciaChannel, SIGNAL(received(const QCString &, const QByteArray &)),
- this, SLOT(pcmciaMessage( const QCString &, const QByteArray &)) );
+ connect( pcmciaChannel, SIGNAL(received(const QCString&,const QByteArray&)),
+ this, SLOT(pcmciaMessage(const QCString&,const QByteArray&)) );
}
void FileBrowser::pcmciaMessage( const QCString &msg, const QByteArray &)
{
if ( msg == "mtabChanged()" ) {
// ## Only really needed if current dir is on a card
fileView->updateDir();
}
}
void FileBrowser::changeCaption(const QString & dir) {
setCaption( dir);
}
void FileBrowser::dirSelected( int id )
{
int i = 0, j;
QString dir;
// Bulid target dir from menu
while( (j = dirMenu->idAt( i )) != id ){
dir += dirMenu->text( j ).stripWhiteSpace();
if( dirMenu->text( j ) != "/" ) dir += "/";
i++;
}
dir += dirMenu->text( dirMenu->idAt( i ) ).stripWhiteSpace();
fileView->setDir( dir );
}
void FileBrowser::updateDirMenu()
{
QString spc, cd = fileView->cd();
QStringList l = QStringList::split( "/", cd );
int i = 0;
dirMenu->clear();
dirMenu->insertItem( tr( "/" ), this, SLOT( dirSelected(int) ) );
for ( QStringList::Iterator it = l.begin(); it != l.end(); ++it ) {
spc.fill( ' ', i++);
dirMenu->insertItem( spc + (*it), this,
SLOT( dirSelected(int) ) );
}
dirMenu->setItemChecked( dirMenu->idAt( l.count() ), TRUE );
lastAction->setEnabled( fileView->history().count() != 0 );
upAction->setEnabled( cd != "/" );
}
void FileBrowser::sortName()
{
fileView->setSorting( 0, sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
fileView->sort();
sortMenu->setItemChecked( sortMenu->idAt( 0 ), TRUE );
sortMenu->setItemChecked( sortMenu->idAt( 1 ), FALSE );
sortMenu->setItemChecked( sortMenu->idAt( 2 ), FALSE );
sortMenu->setItemChecked( sortMenu->idAt( 3 ), FALSE );
}
void FileBrowser::sortSize()
{
fileView->setSorting( 1, sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
fileView->sort();
sortMenu->setItemChecked( sortMenu->idAt( 0 ), FALSE );
sortMenu->setItemChecked( sortMenu->idAt( 1 ), TRUE );
sortMenu->setItemChecked( sortMenu->idAt( 2 ), FALSE );
sortMenu->setItemChecked( sortMenu->idAt( 3 ), FALSE );
}
void FileBrowser::sortDate()
{
fileView->setSorting( 2, sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
fileView->sort();
sortMenu->setItemChecked( sortMenu->idAt( 0 ), FALSE );
sortMenu->setItemChecked( sortMenu->idAt( 1 ), FALSE );
sortMenu->setItemChecked( sortMenu->idAt( 2 ), TRUE );
sortMenu->setItemChecked( sortMenu->idAt( 3 ), FALSE );
}
void FileBrowser::sortType()
{
fileView->setSorting( 3, sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
fileView->sort();
sortMenu->setItemChecked( sortMenu->idAt( 0 ), FALSE );
sortMenu->setItemChecked( sortMenu->idAt( 1 ), FALSE );
sortMenu->setItemChecked( sortMenu->idAt( 2 ), FALSE );
sortMenu->setItemChecked( sortMenu->idAt( 3 ), TRUE );
}
void FileBrowser::updateSorting()
{
sortMenu->setItemChecked( sortMenu->idAt( 5 ), !sortMenu->isItemChecked( sortMenu->idAt( 5 ) ) );
if ( sortMenu->isItemChecked( sortMenu->idAt( 0 ) ) )
sortName();