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
@@ -83,97 +83,97 @@ QString LoadInfo::getCpuInfo()
double mhz = s.mid( s.find( ':' ) + 2 ).toDouble();
info += " " + QString::number( mhz, 'f', 0 );
info += "MHz";
break;
} else if ( s.find( "Processor" ) == 0 ) {
info += s.mid( s.find( ':' ) + 2 );
haveInfo = TRUE;
break;
#ifdef __MIPSEL__
} else if ( s.find( "cpu model" ) == 0 ) {
info += " " + s.mid( s.find( ':' ) + 2 );
break;
} else if ( s.find( "cpu" ) == 0 ) {
info += s.mid( s.find( ':' ) + 2 );
haveInfo = TRUE;
#endif
}
}
}
if ( !haveInfo )
info = QString();
return info;
}
Load::Load( QWidget *parent, const char *name, WFlags f )
: QWidget( parent, name, f )
{
setMinimumHeight( 30 );
setBackgroundColor( black );
points = 100;
setMinimumWidth( points );
userLoad = new double [points];
systemLoad = new double [points];
for ( int i = 0; i < points; i++ ) {
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" );
p.setPen( green );
for ( int i = 1; i < points; i++ ) {
int x1 = (i - 1) * width() / points;
int x2 = i * width() / points;
p.drawLine( x1, h - systemLoad[i-1] * mult,
x2, h - systemLoad[i] * mult );
}
p.setPen( red );
for ( int i = 1; i < points; i++ ) {
int x1 = (i - 1) * width() / points;
int x2 = i * width() / points;
p.drawLine( x1, h - userLoad[i-1] * mult,
x2, h - userLoad[i] * mult );
}
}
void Load::timeout()
{
int user;
int usernice;
int sys;
int idle;
FILE *fp;
fp = fopen( "/proc/stat", "r" );
fscanf( fp, "cpu %d %d %d %d", &user, &usernice, &sys, &idle );
fclose( fp );
struct timeval now;
gettimeofday( &now, 0 );
int tdiff = now.tv_usec - last.tv_usec;
tdiff += (now.tv_sec - last.tv_sec) * 1000000;
tdiff /= 10000;
int udiff = user - lastUser;
int sdiff = sys - lastSys;
if ( tdiff > 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
@@ -1,79 +1,79 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** 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.
**
** 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.
**
**********************************************************************/
#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 );
graph->setData( data );
legend = new GraphLegend( this );
vb->addWidget( legend );
legend->setData( data );
vb->addStretch( 1 );
updateData();
QTimer *t = new QTimer( this );
connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) );
t->start( 5000 );
QWhatsThis::add( this, tr( "This page shows how memory (i.e. RAM) is being allocated on your handheld device.\nMemory is categorized as follows:\n\n1. Used - memory used to by Opie and any running applications.\n2. Buffers - temporary storage used to improve performance\n3. Cached - information that has recently been used, but has not been freed yet.\n4. Free - memory not currently used by Opie or any running applications." ) );
}
MemoryInfo::~MemoryInfo()
{
delete data;
}
void MemoryInfo::updateData()
{
QFile file( "/proc/meminfo" );
if ( file.open( IO_ReadOnly ) ) {
QTextStream t( &file );
QString dummy = t.readLine(); // title
t >> dummy;
int total, used, memfree, shared, buffers, cached;
t >> total;
total /= 1000;
t >> used;
used /= 1000;
t >> memfree;
memfree /= 1000;
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
@@ -1,83 +1,83 @@
/**********************************************************************
** ModulesDetail
**
** Display module information
**
** Copyright (C) 2002, Michael Lauer
** mickey@tm.informatik.uni-frankfurt.de
** http://www.Vanille.de
**
** Based on ProcessDetail by Dan Williams <williamsdr@acm.org>
**
** 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 "modulesdetail.h"
#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?
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." ) );
ModulesView = new QTextView( this, "ModulesView" );
layout->addMultiCellWidget( ModulesView, 0, 0, 0, 1 );
QWhatsThis::add( ModulesView, tr( "This area shows detailed information about this module." ) );
SendButton = new QPushButton( this, "SendButton" );
SendButton->setMinimumSize( QSize( 50, 24 ) );
SendButton->setMaximumSize( QSize( 50, 24 ) );
SendButton->setText( tr( "Send" ) );
connect( SendButton, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) );
layout->addWidget( SendButton, 1, 1 );
QWhatsThis::add( SendButton, tr( "Click here to send the selected command to this module." ) );
}
ModulesDetail::~ModulesDetail()
{
}
void ModulesDetail::slotSendClicked()
{
QString command = QString( "/sbin/" )
+ CommandCB->currentText()
+ QString( " " ) + modname;
if ( QMessageBox::warning( this, caption(),
tr( "You really want to \n" + CommandCB->currentText() + "\nthis Module?"),
QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape )
== QMessageBox::Yes )
{
FILE* stream = popen( command, "r" );
if ( stream )
pclose( stream );
{
hide();
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
@@ -1,122 +1,133 @@
/**********************************************************************
** ModulesInfo
**
** Display Modules information
**
** Copyright (C) 2002, Michael Lauer
** mickey@tm.informatik.uni-frankfurt.de
** http://www.Vanille.de
**
** Based on ProcessInfo by Dan Williams <williamsdr@acm.org>
**
** 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
@@ -1,46 +1,46 @@
/**********************************************************************
** ModulesInfo
**
** Display modules information
**
** Copyright (C) 2002, Michael Lauer
** mickey@tm.informatik.uni-frankfurt.de
** http://www.Vanille.de
**
** Based on ProcessInfo by Dan Williams <williamsdr@acm.org>
**
** 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.
**
**********************************************************************/
#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
@@ -1,81 +1,81 @@
/**********************************************************************
** ProcessDetail
**
** Display process information
**
** Copyright (C) 2002, Dan Williams
** williamsdr@acm.org
** http://draknor.net
**
** 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 "processdetail.h"
#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" );
SignalCB->insertItem( " 5: SIGTRAP" );
SignalCB->insertItem( " 6: SIGABRT" );
SignalCB->insertItem( " 9: SIGKILL" );
SignalCB->insertItem( "14: SIGALRM" );
SignalCB->insertItem( "15: SIGTERM" );
SignalCB->insertItem( "18: SIGCONT" );
SignalCB->insertItem( "19: SIGSTOP" );
layout->addWidget( SignalCB, 1, 0 );
QWhatsThis::add( SignalCB, tr( "Select a signal here and then click the Send button to the right to send to this process." ) );
ProcessView = new QTextView( this, "ProcessView" );
layout->addMultiCellWidget( ProcessView, 0, 0, 0, 1 );
QWhatsThis::add( ProcessView, tr( "This area shows detailed information about this process." ) );
SendButton = new QPushButton( this, "SendButton" );
SendButton->setMinimumSize( QSize( 50, 24 ) );
SendButton->setMaximumSize( QSize( 50, 24 ) );
SendButton->setText( tr( "Send" ) );
connect( SendButton, SIGNAL( clicked() ), this, SLOT( slotSendClicked() ) );
layout->addWidget( SendButton, 1, 1 );
QWhatsThis::add( SendButton, tr( "Click here to send the selected signal to this process." ) );
}
ProcessDetail::~ProcessDetail()
{
}
void ProcessDetail::slotSendClicked()
{
QString sigstr = SignalCB->currentText();
sigstr.truncate(2);
int sigid = sigstr.toUInt();
if ( QMessageBox::warning( this, caption(),
tr( "You really want to send\n" + SignalCB->currentText() + "\nto this process?"),
QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape )
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
@@ -1,228 +1,238 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** 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.
**
** 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)
{
FILE* f = fopen("/var/run/stab", "r");
if (!f) f = fopen("/var/state/pcmcia/stab", "r");
if (!f) f = fopen("/var/lib/pcmcia/stab", "r");
if ( f ) {
char line[1024];
char devtype[80];
char devname[80];
while ( fgets( line, 1024, f ) ) {
// 0 ide ide-cs 0 hda 3 0
if ( sscanf(line,"%*d %s %*s %*s %s", devtype, devname )==2 ) {
if ( QString(devtype) == "ide" && m.find(devname)>0 ) {
fclose(f);
return TRUE;
}
}
}
fclose(f);
}
return FALSE;
}
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 );
legend = new GraphLegend( this );
legend->setOrientation(Horizontal);
vb->addWidget( legend );
legend->setData( data );
updateData();
}
MountInfo::~MountInfo()
{
delete data;
delete fs;
}
void MountInfo::updateData()
{
fs->update();
long mult = fs->blockSize() / 1024;
long div = 1024 / fs->blockSize();
if ( !mult ) mult = 1;
if ( !div ) div = 1;
long total = fs->totalBlocks() * mult / div;
long avail = fs->availBlocks() * mult / div;
long used = total - avail;
totalSize->setText( title + tr(" : %1 kB").arg( total ) );
data->clear();
data->addItem( tr("Used (%1 kB)").arg(used), used );
data->addItem( tr("Available (%1 kB)").arg(avail), avail );
graph->repaint( FALSE );
legend->update();
graph->show();
legend->show();
}
//---------------------------------------------------------------------------
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
@@ -1,87 +1,89 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** 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.
**
** 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.
**
**********************************************************************/
#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:
QString title;
FileSystem *fs;
QLabel *totalSize;
GraphData *data;
Graph *graph;
GraphLegend *legend;
};
class FileSystem
{
public:
FileSystem( const QString &p );
void update();
const QString &path() const { return fspath; }
long blockSize() const { return blkSize; }
long totalBlocks() const { return totalBlks; }
long availBlocks() const { return availBlks; }
private:
QString fspath;
long blkSize;
long totalBlks;
long availBlks;
};
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
@@ -1,70 +1,70 @@
/**********************************************************************
** Copyright (C) 2000 Trolltech AS. All rights reserved.
**
** This file is part of Qtopia Environment.
**
** 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.
**
** 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.
**
**********************************************************************
**
** Enhancements by: Dan Williams, <williamsdr@acm.org>
**
**********************************************************************/
#include "memory.h"
#include "load.h"
#include "storage.h"
#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 );
OTabWidget *tab = new OTabWidget( this, "tabwidget", OTabWidget::Global );
lay->addWidget( tab );
tab->addTab( new MemoryInfo( tab ), "sysinfo/memorytabicon.png", tr("Memory") );
#if defined(_OS_LINUX_) || defined(Q_OS_LINUX)
tab->addTab( new StorageInfo( tab ), "sysinfo/storagetabicon.png", tr("Storage") );
#endif
tab->addTab( new LoadInfo( tab ), "sysinfo/cputabicon.png", tr("CPU") );
if ( advanced )
{
tab->addTab( new ProcessInfo( tab ), "sysinfo/processtabicon.png", tr("Process") );
tab->addTab( new ModulesInfo( tab ), "sysinfo/moduletabicon.png", tr("Modules") );
}
tab->addTab( new VersionInfo( tab ), "sysinfo/versiontabicon.png", tr("Version") );
tab->setCurrentTab( tr( "Memory" ) );
}
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,46 +1,44 @@
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 \
../../../i18n/fr/sysinfo.ts \
../../../i18n/hu/sysinfo.ts \
../../../i18n/ja/sysinfo.ts \
../../../i18n/ko/sysinfo.ts \
../../../i18n/no/sysinfo.ts \
../../../i18n/pl/sysinfo.ts \
../../../i18n/pt/sysinfo.ts \
../../../i18n/pt_BR/sysinfo.ts \
../../../i18n/sl/sysinfo.ts \
../../../i18n/zh_CN/sysinfo.ts \
../../../i18n/zh_TW/sysinfo.ts \
../../../i18n/da/sysinfo.ts