author | drw <drw> | 2002-12-16 01:55:56 (UTC) |
---|---|---|
committer | drw <drw> | 2002-12-16 01:55:56 (UTC) |
commit | 64bc40080abc56e6bd804dadb44d2510f25f2efa (patch) (side-by-side diff) | |
tree | 20d1840b63dc76608aee6f80bf011811d392fbac | |
parent | e4057ee7fe74c83e2dc44f8b9870f65da60fc4fa (diff) | |
download | opie-64bc40080abc56e6bd804dadb44d2510f25f2efa.zip opie-64bc40080abc56e6bd804dadb44d2510f25f2efa.tar.gz opie-64bc40080abc56e6bd804dadb44d2510f25f2efa.tar.bz2 |
1. Added RAM disk to storage tab (could someone verify works on Z?) 2. QScrollView for storage tab 3. Removed module detail dialog since it did not provide any useful information 4. Fix compiler warnings 5. Removed unneeded qDebugs
-rw-r--r-- | noncore/settings/sysinfo/load.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/sysinfo/memory.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/sysinfo/modulesdetail.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/sysinfo/modulesinfo.cpp | 83 | ||||
-rw-r--r-- | noncore/settings/sysinfo/modulesinfo.h | 14 | ||||
-rw-r--r-- | noncore/settings/sysinfo/processdetail.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/sysinfo/storage.cpp | 28 | ||||
-rw-r--r-- | noncore/settings/sysinfo/storage.h | 2 | ||||
-rw-r--r-- | noncore/settings/sysinfo/sysinfo.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/sysinfo/sysinfo.pro | 2 |
10 files changed, 80 insertions, 59 deletions
diff --git a/noncore/settings/sysinfo/load.cpp b/noncore/settings/sysinfo/load.cpp index 900b3d3..d9d7a66 100644 --- a/noncore/settings/sysinfo/load.cpp +++ b/noncore/settings/sysinfo/load.cpp @@ -119,25 +119,25 @@ Load::Load( QWidget *parent, const char *name, WFlags f ) userLoad[i] = 0.0; systemLoad[i] = 0.0; } maxLoad = 1.3; QTimer *timer = new QTimer( this ); connect( timer, SIGNAL(timeout()), SLOT(timeout()) ); timer->start( 2000 ); gettimeofday( &last, 0 ); first = TRUE; timeout(); } -void Load::paintEvent( QPaintEvent *ev ) +void Load::paintEvent( QPaintEvent * ) { QPainter p( this ); int h = height() - 5; int mult = (int)(h / maxLoad); p.setPen( gray ); p.drawLine( 0, h - mult, width(), h - mult ); p.drawText( 0, h - mult, "100" ); p.drawText( 0, h, "0" ); diff --git a/noncore/settings/sysinfo/memory.cpp b/noncore/settings/sysinfo/memory.cpp index 30d42d5..4f612d8 100644 --- a/noncore/settings/sysinfo/memory.cpp +++ b/noncore/settings/sysinfo/memory.cpp @@ -19,25 +19,25 @@ **********************************************************************/ #include <qlabel.h> #include <qfile.h> #include <qlayout.h> #include <qtextstream.h> #include <qtimer.h> #include <qwhatsthis.h> #include "graph.h" #include "memory.h" -MemoryInfo::MemoryInfo( QWidget *parent, const char *name, WFlags f ) +MemoryInfo::MemoryInfo( QWidget *parent, const char *name, WFlags ) : QWidget( parent, name, WStyle_ContextHelp ) { QVBoxLayout *vb = new QVBoxLayout( this, 5 ); totalMem = new QLabel( this ); vb->addWidget( totalMem ); data = new GraphData(); // graph = new PieGraph( this ); graph = new BarGraph( this ); graph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); vb->addWidget( graph, 1 ); diff --git a/noncore/settings/sysinfo/modulesdetail.cpp b/noncore/settings/sysinfo/modulesdetail.cpp index ea5f352..ea9cdfa 100644 --- a/noncore/settings/sysinfo/modulesdetail.cpp +++ b/noncore/settings/sysinfo/modulesdetail.cpp @@ -23,25 +23,25 @@ #include <sys/types.h> #include <stdio.h> #include <qcombobox.h> #include <qlayout.h> #include <qlistview.h> #include <qmessagebox.h> #include <qpushbutton.h> #include <qtextview.h> #include <qwhatsthis.h> -ModulesDetail::ModulesDetail( QWidget* parent, const char* name, WFlags fl ) +ModulesDetail::ModulesDetail( QWidget* parent, const char* name, WFlags ) : QWidget( parent, name, WStyle_ContextHelp ) { modname = ""; QGridLayout *layout = new QGridLayout( this ); layout->setSpacing( 4 ); layout->setMargin( 4 ); CommandCB = new QComboBox( FALSE, this, "CommandCB" ); CommandCB->insertItem( "modprobe -r" ); CommandCB->insertItem( "rmmod" ); // I can't think of other useful commands yet. Anyone? diff --git a/noncore/settings/sysinfo/modulesinfo.cpp b/noncore/settings/sysinfo/modulesinfo.cpp index a0d26c7..c558fad 100644 --- a/noncore/settings/sysinfo/modulesinfo.cpp +++ b/noncore/settings/sysinfo/modulesinfo.cpp @@ -12,111 +12,122 @@ ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** **********************************************************************/ #include <qpe/qpeapplication.h> +#include <qcombobox.h> #include <qfile.h> #include <qheader.h> #include <qlayout.h> #include <qlistview.h> +#include <qmessagebox.h> +#include <qpushbutton.h> +#include <qstring.h> #include <qtimer.h> #include <qwhatsthis.h> #include "modulesinfo.h" ModulesInfo::ModulesInfo( QWidget* parent, const char* name, WFlags fl ) : QWidget( parent, name, fl ) { - QVBoxLayout *layout = new QVBoxLayout( this, 5 ); + QGridLayout *layout = new QGridLayout( this ); + layout->setSpacing( 4 ); + layout->setMargin( 4 ); - ModulesView = new QListView( this, "ModulesView" ); + ModulesView = new QListView( this ); int colnum = ModulesView->addColumn( tr( "Module" ) ); colnum = ModulesView->addColumn( tr( "Size" ) ); ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); colnum = ModulesView->addColumn( tr( "Use#" ) ); ModulesView->setColumnAlignment( colnum, Qt::AlignRight ); colnum = ModulesView->addColumn( tr( "Used By" ) ); ModulesView->setAllColumnsShowFocus( TRUE ); - QPEApplication::setStylusOperation( ModulesView->viewport(), QPEApplication::RightOnHold ); - connect( ModulesView, SIGNAL( rightButtonPressed( QListViewItem *, const QPoint &, int ) ), - this, SLOT( viewModules( QListViewItem * ) ) ); - layout->addWidget( ModulesView ); + layout->addMultiCellWidget( ModulesView, 0, 0, 0, 1 ); QWhatsThis::add( ModulesView, tr( "This is a list of all the kernel modules currently loaded on this handheld device.\n\nClick and hold on a module to see additional information about the module, or to unload it." ) ); + CommandCB = new QComboBox( FALSE, this ); + CommandCB->insertItem( "modprobe -r" ); + CommandCB->insertItem( "rmmod" ); + // I can't think of other useful commands yet. Anyone? + layout->addWidget( CommandCB, 1, 0 ); + QWhatsThis::add( CommandCB, tr( "Select a command here and then click the Send button to the right to send the command to module selected above." ) ); + + QPushButton *btn = new QPushButton( this ); + btn->setMinimumSize( QSize( 50, 24 ) ); + btn->setMaximumSize( QSize( 50, 24 ) ); + btn->setText( tr( "Send" ) ); + connect( btn, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) ); + layout->addWidget( btn, 1, 1 ); + QWhatsThis::add( btn, tr( "Click here to send the selected command to the module selected above." ) ); + QTimer *t = new QTimer( this ); connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); t->start( 5000 ); updateData(); - - ModulesDtl = new ModulesDetail( 0, 0, 0 ); - ModulesDtl->ModulesView->setTextFormat( PlainText ); } ModulesInfo::~ModulesInfo() { } void ModulesInfo::updateData() { char modname[64]; char usage[200]; int modsize, usecount; - + ModulesView->clear(); FILE *procfile = fopen( ( QString ) ( "/proc/modules"), "r"); if ( procfile ) { - while ( true ) { + while ( true ) { int success = fscanf( procfile, "%s%d%d%[^\n]", modname, &modsize, &usecount, usage ); - + if ( success == EOF ) break; QString qmodname = QString( modname ); QString qmodsize = QString::number( modsize ).rightJustify( 6, ' ' ); QString qusecount = QString::number( usecount ).rightJustify( 2, ' ' ); QString qusage = QString( usage ); - + ( void ) new QListViewItem( ModulesView, qmodname, qmodsize, qusecount, qusage ); } - + fclose( procfile ); } } -void ModulesInfo::viewModules( QListViewItem *modules ) +void ModulesInfo::slotSendClicked() { - QString modname = modules->text( 0 ); - ModulesDtl->setCaption( QString( "Module: " ) + modname ); - ModulesDtl->modname = modname; - QString command = QString( "/sbin/modinfo " ) + modules->text( 0 ); - - FILE* modinfo = popen( command, "r" ); - - if ( modinfo ) + QString capstr = tr( "You really want to execute\n" ); + capstr.append( CommandCB->currentText() ); + capstr.append( "\nfor this module?" ); + + if ( QMessageBox::warning( this, caption(), capstr, + QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape ) == QMessageBox::Yes ) { - char line[200]; - ModulesDtl->ModulesView->setText( " Details:\n------------\n" ); - - while( true ) - { - int success = fscanf( modinfo, "%[^\n]\n", line ); - if ( success == EOF ) - break; - ModulesDtl->ModulesView->append( line ); - } - - pclose( modinfo ); + QString command = "/sbin/"; + command.append( CommandCB->currentText() ); + command.append( " " ); + command.append( ModulesView->currentItem()->text( 0 ) ); + + FILE* stream = popen( command, "r" ); + if ( stream ) + pclose( stream ); + //{ + // hide(); + //} } - ModulesDtl->showMaximized(); } diff --git a/noncore/settings/sysinfo/modulesinfo.h b/noncore/settings/sysinfo/modulesinfo.h index c702f24..ef1f805 100644 --- a/noncore/settings/sysinfo/modulesinfo.h +++ b/noncore/settings/sysinfo/modulesinfo.h @@ -14,33 +14,33 @@ ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** **********************************************************************/ #ifndef MODULESINFO_H #define MODULESINFO_H #include <qwidget.h> -#include <qlistview.h> -#include "modulesdetail.h" +class QComboBox; +class QListView; class ModulesInfo : public QWidget { Q_OBJECT public: ModulesInfo( QWidget *parent = 0, const char *name = 0, WFlags f = 0 ); ~ModulesInfo(); -private slots: - void updateData(); - void viewModules( QListViewItem * ); - private: QListView* ModulesView; - ModulesDetail *ModulesDtl; + QComboBox* CommandCB; + +private slots: + void updateData(); + void slotSendClicked(); }; #endif diff --git a/noncore/settings/sysinfo/processdetail.cpp b/noncore/settings/sysinfo/processdetail.cpp index 661e32c..fcb871f 100644 --- a/noncore/settings/sysinfo/processdetail.cpp +++ b/noncore/settings/sysinfo/processdetail.cpp @@ -21,25 +21,25 @@ #include <sys/types.h> #include <signal.h> #include <qcombobox.h> #include <qlayout.h> #include <qlistview.h> #include <qmessagebox.h> #include <qpushbutton.h> #include <qtextview.h> #include <qwhatsthis.h> -ProcessDetail::ProcessDetail( QWidget* parent, const char* name, WFlags fl ) +ProcessDetail::ProcessDetail( QWidget* parent, const char* name, WFlags ) : QWidget( parent, name, WStyle_ContextHelp ) { pid = 0; QGridLayout *layout = new QGridLayout( this ); layout->setSpacing( 4 ); layout->setMargin( 4 ); SignalCB = new QComboBox( FALSE, this, "SignalCB" ); SignalCB->insertItem( " 1: SIGHUP" ); SignalCB->insertItem( " 2: SIGINT" ); SignalCB->insertItem( " 3: SIGQUIT" ); diff --git a/noncore/settings/sysinfo/storage.cpp b/noncore/settings/sysinfo/storage.cpp index c33663e..5d6cd1b 100644 --- a/noncore/settings/sysinfo/storage.cpp +++ b/noncore/settings/sysinfo/storage.cpp @@ -11,41 +11,50 @@ ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ // additions copyright 2002 by L.J. Potter #include <qlabel.h> #include <qlayout.h> +#include <qscrollview.h> #include <qtimer.h> #include <qwhatsthis.h> #include "graph.h" #include "storage.h" #include <stdio.h> #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) #include <sys/vfs.h> #include <mntent.h> #endif StorageInfo::StorageInfo( QWidget *parent, const char *name ) : QWidget( parent, name ) { - vb = 0; - disks.setAutoDelete(TRUE); + QVBoxLayout *tmpvb = new QVBoxLayout( this ); + QScrollView *sv = new QScrollView( this ); + tmpvb->addWidget( sv, 0, 0 ); + sv->setResizePolicy( QScrollView::AutoOneFit ); + sv->setFrameStyle( QFrame::NoFrame ); + container = new QWidget( sv->viewport() ); + sv->addChild( container ); + vb = 0x0; + + disks.setAutoDelete(TRUE); lines.setAutoDelete(TRUE); updateMounts(); startTimer( 5000 ); } void StorageInfo::timerEvent(QTimerEvent*) { updateMounts(); } static bool isCF(const QString& m) { @@ -75,118 +84,119 @@ void StorageInfo::updateMounts() #if defined(_OS_LINUX_) || defined(Q_OS_LINUX) struct mntent *me; FILE *mntfp = setmntent( "/etc/mtab", "r" ); QStringList curdisks; QStringList curfs; QStringList mountList; QStringList fsT; bool rebuild = FALSE; int n=0; if ( mntfp ) { while ( (me = getmntent( mntfp )) != 0 ) { QString fs = me->mnt_fsname; - qDebug(fs+" "+(QString)me->mnt_type); if ( fs.left(7)=="/dev/hd" || fs.left(7)=="/dev/sd" || fs.left(8)=="/dev/mtd" || fs.left(9) == "/dev/mmcd" - || fs.left(9) == "/dev/root" || fs.left(5) == "/ramfs") { + || fs.left(9) == "/dev/root" || fs.left(5) == "/ramfs" || fs.left(5) == "tmpfs" ) { n++; curdisks.append(fs); QString d = me->mnt_dir; curfs.append(d); QString mount = me->mnt_dir; mountList.append(mount); QString t = me->mnt_type; fsT.append(t); if ( !disks.find(d) ) rebuild = TRUE; } } endmntent( mntfp ); } if ( rebuild || n != (int)disks.count() ) { disks.clear(); lines.clear(); delete vb; - vb = new QVBoxLayout( this, n > 3 ? 1 : 5 ); + vb = new QVBoxLayout( container/*, n > 3 ? 1 : 5*/ ); bool frst=TRUE; QStringList::ConstIterator it=curdisks.begin(); QStringList::ConstIterator fsit=curfs.begin(); QStringList::ConstIterator fsmount=mountList.begin(); QStringList::ConstIterator fsTit=fsT.begin(); for (; it!=curdisks.end(); ++it, ++fsit) { if ( !frst ) { - QFrame *f = new QFrame( this ); + QFrame *f = new QFrame( container ); vb->addWidget(f); f->setFrameStyle( QFrame::HLine | QFrame::Sunken ); lines.append(f); f->show(); } frst=FALSE; QString humanname=*it; -// qDebug(humanname); if ( isCF(humanname) ) humanname = tr( "CF Card: " ); else if ( humanname == "/dev/hda1" ) humanname = tr( "Hard Disk " ); else if ( humanname.left(9) == "/dev/mmcd" ) humanname = tr( "SD Card " ); else if ( humanname.left(7) == "/dev/hd" ) humanname = tr( "Hard Disk /dev/hd " ); else if ( humanname.left(7) == "/dev/sd" ) humanname = tr( "SCSI Hard Disk /dev/sd " ); else if ( humanname == "/dev/mtdblock1" || humanname == "/dev/mtdblock/1" ) humanname = tr( "Int. Storage " ); else if ( humanname.left(14) == "/dev/mtdblock/" ) humanname = tr( "Int. Storage /dev/mtdblock/ " ); else if ( humanname.left(13) == "/dev/mtdblock" ) humanname = tr( "Int. Storage /dev/mtdblock " ); else if ( humanname.left(9) == "/dev/root" ) humanname = tr( "Int. Storage " ); + else if ( humanname.left(5) == "tmpfs" ) + humanname = tr( "RAM disk" ); // etc. humanname.append( *fsmount ); humanname.append( " " ); humanname.append( *fsTit ); humanname.append( " " ); - MountInfo* mi = new MountInfo( *fsit, humanname, this ); + MountInfo* mi = new MountInfo( *fsit, humanname, container ); vb->addWidget(mi); disks.insert(*fsit,mi); mi->show(); fsmount++;fsTit++; QString tempstr = humanname.left( 2 ); if ( tempstr == tr( "CF" ) ) QWhatsThis::add( mi, tr( "This graph represents how much memory is currently used on this Compact Flash memory card." ) ); else if ( tempstr == tr( "Ha" ) ) QWhatsThis::add( mi, tr( "This graph represents how much storage is currently used on this hard drive." ) ); else if ( tempstr == tr( "SD" ) ) QWhatsThis::add( mi, tr( "This graph represents how much memory is currently used on this Secure Digital memory card." ) ); else if ( tempstr == tr( "SC" ) ) QWhatsThis::add( mi, tr( "This graph represents how much storage is currently used on this hard drive." ) ); else if ( tempstr == tr( "In" ) ) QWhatsThis::add( mi, tr( "This graph represents how much memory is currently used of the built-in memory (i.e. Flash memory) on this handheld device." ) ); + else if ( tempstr == tr( "RA" ) ) + QWhatsThis::add( mi, tr( "This graph represents how much memory is currently used of the temporary RAM disk." ) ); } vb->addStretch(); } else { // just update them for (QDictIterator<MountInfo> i(disks); i.current(); ++i) i.current()->updateData(); } #endif } MountInfo::MountInfo( const QString &path, const QString &ttl, QWidget *parent, const char *name ) : QWidget( parent, name ), title(ttl) { - qDebug("new path is "+path); fs = new FileSystem( path ); QVBoxLayout *vb = new QVBoxLayout( this, 3 ); totalSize = new QLabel( this ); vb->addWidget( totalSize ); data = new GraphData(); graph = new BarGraph( this ); graph->setFrameStyle( QFrame::Panel | QFrame::Sunken ); vb->addWidget( graph, 1 ); graph->setData( data ); diff --git a/noncore/settings/sysinfo/storage.h b/noncore/settings/sysinfo/storage.h index 3fa5b79..7e8b4e0 100644 --- a/noncore/settings/sysinfo/storage.h +++ b/noncore/settings/sysinfo/storage.h @@ -20,40 +20,42 @@ #include <qwidget.h> #include <qframe.h> #include <qlist.h> #include <qdict.h> class QLabel; class GraphData; class Graph; class GraphLegend; class FileSystem; class MountInfo; class QVBoxLayout; +class QWidget; class StorageInfo : public QWidget { Q_OBJECT public: StorageInfo( QWidget *parent=0, const char *name=0 ); protected: void timerEvent(QTimerEvent*); private: void updateMounts(); QDict<MountInfo> disks; QList<QFrame> lines; QVBoxLayout *vb; + QWidget *container; }; class MountInfo : public QWidget { Q_OBJECT public: MountInfo( const QString &path, const QString &ttl, QWidget *parent=0, const char *name=0 ); ~MountInfo(); void updateData(); private: diff --git a/noncore/settings/sysinfo/sysinfo.cpp b/noncore/settings/sysinfo/sysinfo.cpp index 6d2a64f..872492e 100644 --- a/noncore/settings/sysinfo/sysinfo.cpp +++ b/noncore/settings/sysinfo/sysinfo.cpp @@ -28,25 +28,25 @@ #include "processinfo.h" #include "modulesinfo.h" #include "versioninfo.h" #include "sysinfo.h" #include <opie/otabwidget.h> #include <qpe/config.h> #include <qpe/resource.h> #include <qlayout.h> -SystemInfo::SystemInfo( QWidget *parent, const char *name, WFlags f ) +SystemInfo::SystemInfo( QWidget *parent, const char *name, WFlags ) : QWidget( parent, name, WStyle_ContextHelp ) { setIcon( Resource::loadPixmap( "system_icon" ) ); setCaption( tr("System Info") ); resize( 220, 180 ); Config config( "qpe" ); config.setGroup( "Appearance" ); bool advanced = config.readBoolEntry( "Advanced", TRUE ); QVBoxLayout *lay = new QVBoxLayout( this ); diff --git a/noncore/settings/sysinfo/sysinfo.pro b/noncore/settings/sysinfo/sysinfo.pro index 236fc02..7e66451 100644 --- a/noncore/settings/sysinfo/sysinfo.pro +++ b/noncore/settings/sysinfo/sysinfo.pro @@ -1,34 +1,32 @@ TEMPLATE = app CONFIG = qt warn_on release DESTDIR = $(OPIEDIR)/bin HEADERS = memory.h \ graph.h \ load.h \ storage.h \ processinfo.h \ processdetail.h \ modulesinfo.h \ - modulesdetail.h \ versioninfo.h \ sysinfo.h SOURCES = main.cpp \ memory.cpp \ graph.cpp \ load.cpp \ storage.cpp \ processinfo.cpp \ modulesinfo.cpp \ processdetail.cpp \ - modulesdetail.cpp \ versioninfo.cpp \ sysinfo.cpp INTERFACES = INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include LIBS += -lqpe -lopie TARGET = sysinfo TRANSLATIONS = ../../../i18n/de/sysinfo.ts \ ../../../i18n/xx/sysinfo.ts \ ../../../i18n/en/sysinfo.ts \ ../../../i18n/es/sysinfo.ts \ |