Diffstat (limited to 'noncore/apps/advancedfm/advancedfmMenu.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/apps/advancedfm/advancedfmMenu.cpp | 102 |
1 files changed, 81 insertions, 21 deletions
diff --git a/noncore/apps/advancedfm/advancedfmMenu.cpp b/noncore/apps/advancedfm/advancedfmMenu.cpp index ed280aa..9181810 100644 --- a/noncore/apps/advancedfm/advancedfmMenu.cpp +++ b/noncore/apps/advancedfm/advancedfmMenu.cpp @@ -4,37 +4,39 @@ ** Created: Sat Mar 9 23:33:09 2002 copyright : (C) 2002 by ljp email : ljp@llornkcor.com * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * ***************************************************************************/ #include "advancedfm.h" #include "output.h" #include "filePermissions.h" +#include "fileInfoDialog.h" /* OPIE */ #include <opie2/odebug.h> #include <qpe/lnkproperties.h> #include <qpe/qpeapplication.h> #include <qpe/applnk.h> using namespace Opie::Core; /* QT*/ #include <qmessagebox.h> #include <qpopupmenu.h> #include <qlistview.h> +#include <qlabel.h> /* STD */ #include <errno.h> #include <stdlib.h> #include <unistd.h> #include <sys/stat.h> #include <dirent.h> #include <sys/sendfile.h> #include <fcntl.h> void AdvancedFm::doDirChange() { @@ -645,48 +647,106 @@ void AdvancedFm::runCommandStd() { fileDlg = new InputDialog(this,tr("Run Command"),TRUE, 0); fileDlg->setInputText(curFile); fileDlg->exec(); if( fileDlg->result() == 1 ) { qApp->processEvents(); startProcess( (const QString)fileDlg->LineEdit1->text().latin1()); } } void AdvancedFm::fileStatus() { if( !CurrentView()->currentItem()) return; + QString curFile; curFile = CurrentView()->currentItem()->text(0); - if(QFileInfo("/usr/bin/stat").exists()) { - QStringList command; - command << "/bin/sh"; - command << "-c"; - command << "stat -l "+ curFile; - Output *outDlg; - outDlg = new Output( command, this, tr("AdvancedFm Output"), true); - QPEApplication::execDialog( outDlg ); - } else { -/* struct stat buf; - stat( curFile.local8bit(), &buf); - - st_dev dev; - st_uid uid; - st_gid gid; - st_size size; - st_atime atime; - st_mtime mtime; - st_ctime ctime; - st_mode mode; -*/ + + QFileInfo curFileInfo(curFile); + + FileInfoDialog *infoDlg = new FileInfoDialog(this); + infoDlg->setCaption(tr("Info for %1").arg(curFile)); + + uint size = curFileInfo.size(); + QString sizestr; + if( size > 1048576 ) + sizestr = tr("%1MB (%2 bytes)").arg(QString().sprintf("%.0f", size / 1048576.0)).arg(size); + else if( size > 1024 ) + sizestr = tr("%1kB (%2 bytes)").arg(QString().sprintf("%.0f", size / 1024.0)).arg(size); + else + sizestr = tr("%1 bytes").arg(size); + + infoDlg->sizeLabel->setText(sizestr); + + if(curFileInfo.isSymLink()) + infoDlg->typeLabel->setText(tr("symbolic link")); + else if(curFileInfo.isFile()) { + if(curFileInfo.isExecutable()) + infoDlg->typeLabel->setText(tr("executable file")); + else + infoDlg->typeLabel->setText(tr("file")); } + else if(curFileInfo.isDir()) + infoDlg->typeLabel->setText(tr("directory")); + else + infoDlg->typeLabel->setText(tr("unknown")); + + infoDlg->ownerLabel->setText( QString("%1 (%2)").arg(curFileInfo.owner()).arg(curFileInfo.ownerId()) ); + infoDlg->groupLabel->setText( QString("%1 (%2)").arg(curFileInfo.group()).arg(curFileInfo.groupId()) ); + + infoDlg->lastReadLabel->setText( curFileInfo.lastRead().toString() ); + infoDlg->lastModifiedLabel->setText( curFileInfo.lastModified().toString() ); + + QString perms; + // User + if(curFileInfo.permission(QFileInfo::ReadUser)) + perms += "r"; + else + perms += "-"; + if(curFileInfo.permission(QFileInfo::WriteUser)) + perms += "w"; + else + perms += "-"; + if(curFileInfo.permission(QFileInfo::ExeUser)) + perms += "x"; + else + perms += "-"; + // Group + if(curFileInfo.permission(QFileInfo::ReadGroup)) + perms += "r"; + else + perms += "-"; + if(curFileInfo.permission(QFileInfo::WriteGroup)) + perms += "w"; + else + perms += "-"; + if(curFileInfo.permission(QFileInfo::ExeGroup)) + perms += "x"; + else + perms += "-"; + // Other + if(curFileInfo.permission(QFileInfo::ReadOther)) + perms += "r"; + else + perms += "-"; + if(curFileInfo.permission(QFileInfo::WriteOther)) + perms += "w"; + else + perms += "-"; + if(curFileInfo.permission(QFileInfo::ExeOther)) + perms += "x"; + else + perms += "-"; + infoDlg->permsLabel->setText( perms ); + + QPEApplication::execDialog( infoDlg ); qApp->processEvents(); } void AdvancedFm::mkDir() { makeDir(); } void AdvancedFm::rn() { renameIt(); } |