Diffstat (limited to 'noncore/apps/advancedfm/advancedfmMenu.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/apps/advancedfm/advancedfmMenu.cpp | 114 |
1 files changed, 87 insertions, 27 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 @@ -10,12 +10,13 @@ * (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> @@ -23,12 +24,13 @@ 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> @@ -650,39 +652,97 @@ void AdvancedFm::runCommandStd() { 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; -*/ - } - - qApp->processEvents(); + if( !CurrentView()->currentItem()) return; + + QString curFile; + curFile = CurrentView()->currentItem()->text(0); + + 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(); } |