summaryrefslogtreecommitdiff
authordrw <drw>2002-12-16 01:55:56 (UTC)
committer drw <drw>2002-12-16 01:55:56 (UTC)
commit64bc40080abc56e6bd804dadb44d2510f25f2efa (patch) (side-by-side diff)
tree20d1840b63dc76608aee6f80bf011811d392fbac
parente4057ee7fe74c83e2dc44f8b9870f65da60fc4fa (diff)
downloadopie-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
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/sysinfo/load.cpp2
-rw-r--r--noncore/settings/sysinfo/memory.cpp2
-rw-r--r--noncore/settings/sysinfo/modulesdetail.cpp2
-rw-r--r--noncore/settings/sysinfo/modulesinfo.cpp83
-rw-r--r--noncore/settings/sysinfo/modulesinfo.h14
-rw-r--r--noncore/settings/sysinfo/processdetail.cpp2
-rw-r--r--noncore/settings/sysinfo/storage.cpp28
-rw-r--r--noncore/settings/sysinfo/storage.h2
-rw-r--r--noncore/settings/sysinfo/sysinfo.cpp2
-rw-r--r--noncore/settings/sysinfo/sysinfo.pro2
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 \