[PATCH] advancedfm: implement file info dialog without stat(1) command

Paul Eggleton <[email protected]>
Newsgroups gmane.comp.handhelds.opie.devel
Message-ID <[email protected]>
Hi all,

Attached patch fixes bug #1553 (http://opie-bugs.oszine.de/view.php?id=1553).

Cheers,
Paul

_______________________________________________

http://opie.handhelds.org/cgi-bin/moin.cgi/DeveloperWikiIndex

Opie-devel mailing list
[email protected]
https://handhelds.org/mailman/listinfo/opie-devel
advancedfm_fileinfodlg.patch (text/x-diff, 20.3 KB)
--- advancedfm/advancedfm.pro	2006-12-28 20:04:08.000000000 +1300
+++ advancedfm/advancedfm.pro	2006-12-28 19:58:12.000000000 +1300
@@ -3,6 +3,7 @@
 HEADERS   = advancedfm.h filePermissions.h output.h
 SOURCES   = advancedfm.cpp advancedfmData.cpp advancedfmMenu.cpp filePermissions.cpp output.cpp main.cpp
 TARGET    = advancedfm
+INTERFACES  += fileInfoDialog.ui
 INCLUDEPATH += $(OPIEDIR)/include
 DEPENDPATH  += $(OPIEDIR)/include
 LIBS        += -lqpe -lopiecore2 -lopieui2
--- advancedfm/advancedfmMenu.cpp	2006-12-28 20:04:09.000000000 +1300
+++ advancedfm/advancedfmMenu.cpp	2006-12-28 19:58:12.000000000 +1300
@@ -13,6 +13,7 @@
 #include "advancedfm.h"
 #include "output.h"
 #include "filePermissions.h"
+#include "fileInfoDialog.h"
 
 /* OPIE */
 #include <opie2/odebug.h>
@@ -26,6 +27,7 @@
 #include <qmessagebox.h>
 #include <qpopupmenu.h>
 #include <qlistview.h>
+#include <qlabel.h>
 
 /* STD */
 
@@ -653,33 +655,91 @@
 }
 
 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;
-*/
-		}
+	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();
+	qApp->processEvents();
 }
 
 
--- advancedfm/fileInfoDialog.ui	1970-01-01 12:00:00.000000000 +1200
+++ advancedfm/fileInfoDialog.ui	2006-12-28 20:03:26.000000000 +1300
@@ -0,0 +1,418 @@
+<!DOCTYPE UI><UI>
+<class>FileInfoDialog</class>
+<widget>
+    <class>QDialog</class>
+    <property stdset="1">
+        <name>name</name>
+        <cstring>FileInfoDialog</cstring>
+    </property>
+    <property stdset="1">
+        <name>geometry</name>
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>225</width>
+            <height>303</height>
+        </rect>
+    </property>
+    <property stdset="1">
+        <name>caption</name>
+        <string>FileInfoDialog</string>
+    </property>
+    <vbox>
+        <property stdset="1">
+            <name>margin</name>
+            <number>11</number>
+        </property>
+        <property stdset="1">
+            <name>spacing</name>
+            <number>6</number>
+        </property>
+        <widget>
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>GroupBox1</cstring>
+            </property>
+            <property stdset="1">
+                <name>sizePolicy</name>
+                <sizepolicy>
+                    <hsizetype>5</hsizetype>
+                    <vsizetype>5</vsizetype>
+                </sizepolicy>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>General</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="1" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>typeLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>executable file</string>
+                    </property>
+                </widget>
+                <widget row="1"  column="1" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>sizeLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>3kb (3100 bytes)</string>
+                    </property>
+                </widget>
+                <widget row="2"  column="1" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>ownerLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>maximumSize</name>
+                        <size>
+                            <width>32767</width>
+                            <height>32767</height>
+                        </size>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>bill (100)</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignVCenter|AlignLeft</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="2"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>ownerCaptionLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>maximumSize</name>
+                        <size>
+                            <width>32767</width>
+                            <height>32767</height>
+                        </size>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Owner:</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignVCenter|AlignLeft</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>sizeCaptionLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>maximumSize</name>
+                        <size>
+                            <width>32767</width>
+                            <height>32767</height>
+                        </size>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Size:</string>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>typeCaptionLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>maximumSize</name>
+                        <size>
+                            <width>60</width>
+                            <height>32767</height>
+                        </size>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Type:</string>
+                    </property>
+                </widget>
+                <widget row="3"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>groupCaptionLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Group:</string>
+                    </property>
+                </widget>
+                <widget row="3"  column="1" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>groupLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>users (500)</string>
+                    </property>
+                </widget>
+                <widget row="4"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>permsCaptionLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Permissions:</string>
+                    </property>
+                </widget>
+                <widget row="4"  column="1" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>permsLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>rwxrwxrwx</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <widget>
+            <class>QGroupBox</class>
+            <property stdset="1">
+                <name>name</name>
+                <cstring>GroupBox2</cstring>
+            </property>
+            <property stdset="1">
+                <name>title</name>
+                <string>Times</string>
+            </property>
+            <grid>
+                <property stdset="1">
+                    <name>margin</name>
+                    <number>11</number>
+                </property>
+                <property stdset="1">
+                    <name>spacing</name>
+                    <number>6</number>
+                </property>
+                <widget row="0"  column="1" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>lastReadLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>users (500)</string>
+                    </property>
+                </widget>
+                <widget row="1"  column="1" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>lastModifiedLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>maximumSize</name>
+                        <size>
+                            <width>32767</width>
+                            <height>32767</height>
+                        </size>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>users (500)</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignVCenter|AlignLeft</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="0"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>lastReadCaptionLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>maximumSize</name>
+                        <size>
+                            <width>60</width>
+                            <height>32767</height>
+                        </size>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Accessed:</string>
+                    </property>
+                    <property stdset="1">
+                        <name>alignment</name>
+                        <set>AlignVCenter|AlignLeft</set>
+                    </property>
+                    <property>
+                        <name>hAlign</name>
+                    </property>
+                </widget>
+                <widget row="1"  column="0" >
+                    <class>QLabel</class>
+                    <property stdset="1">
+                        <name>name</name>
+                        <cstring>lastModifiedCaptionLabel</cstring>
+                    </property>
+                    <property stdset="1">
+                        <name>sizePolicy</name>
+                        <sizepolicy>
+                            <hsizetype>1</hsizetype>
+                            <vsizetype>1</vsizetype>
+                        </sizepolicy>
+                    </property>
+                    <property stdset="1">
+                        <name>text</name>
+                        <string>Modified:</string>
+                    </property>
+                </widget>
+            </grid>
+        </widget>
+        <spacer>
+            <property>
+                <name>name</name>
+                <cstring>Spacer1</cstring>
+            </property>
+            <property stdset="1">
+                <name>orientation</name>
+                <enum>Vertical</enum>
+            </property>
+            <property stdset="1">
+                <name>sizeType</name>
+                <enum>Expanding</enum>
+            </property>
+            <property>
+                <name>sizeHint</name>
+                <size>
+                    <width>20</width>
+                    <height>20</height>
+                </size>
+            </property>
+        </spacer>
+    </vbox>
+</widget>
+</UI>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.