Diffstat (limited to 'noncore/settings/sysinfo/processinfo.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/settings/sysinfo/processinfo.cpp | 37 |
1 files changed, 15 insertions, 22 deletions
diff --git a/noncore/settings/sysinfo/processinfo.cpp b/noncore/settings/sysinfo/processinfo.cpp index 225da63..ad81d7b 100644 --- a/noncore/settings/sysinfo/processinfo.cpp +++ b/noncore/settings/sysinfo/processinfo.cpp @@ -22,13 +22,12 @@ #include <qlayout.h> #include <qtimer.h> #include <qfile.h> #include <qdir.h> #include "processinfo.h" -#include "processdetail.h" ProcessInfo::ProcessInfo( QWidget* parent, const char* name, WFlags fl ) : QWidget( parent, name, fl ) { QVBoxLayout *layout = new QVBoxLayout( this, 5 ); @@ -46,62 +45,58 @@ ProcessInfo::ProcessInfo( QWidget* parent, const char* name, WFlags fl ) QTimer *t = new QTimer( this ); connect( t, SIGNAL( timeout() ), this, SLOT( updateData() ) ); t->start( 5000 ); updateData(); + + ProcessDtl = new ProcessDetail( 0, 0, 0 ); + ProcessDtl->ProcessView->setTextFormat( RichText ); } ProcessInfo::~ProcessInfo() { } void ProcessInfo::updateData() { - QString processnum(""); - QString processcmd(""); - QString processstatus(""); - QString processtime(""); int pid, ppid, pgrp, session, tty, tpgid, utime, stime, cutime, cstime, counter, priority, starttime, signal, blocked, sigignore, sigcatch; uint flags, minflt, cminflt, majflt, cmajflt, timeout, itrealvalue, vsize, rss, rlim, startcode, endcode, startstack, kstkesp, kstkeip, wchan; char state; - char comm[255]; + char comm[64]; ProcessView->clear(); - QDir *procdir = new QDir("/proc"); - procdir->setFilter(QDir::Dirs); - procdir->setSorting(QDir::Name); + QDir *procdir = new QDir("/proc", 0, QDir::Name, QDir::Dirs); QFileInfoList *proclist = new QFileInfoList(*(procdir->entryInfoList())); if ( proclist ) { QFileInfoListIterator it(*proclist); QFileInfo *f; while ( ( f = it.current() ) != 0 ) { ++it; - processnum = f->fileName(); - if ( processnum >= "0" && processnum <= "99999" ) + QString processnum = f->fileName(); + if ( processnum >= "1" && processnum <= "99999" ) { FILE *procfile = fopen( ( QString ) ( "/proc/" + processnum + "/stat"), "r"); if ( procfile ) { fscanf( procfile, "%d %s %c %d %d %d %d %d %u %u %u %u %u %d %d %d %d %d %d %u %u %d %u %u %u %u %u %u %u %u %d %d %d %d %u", &pid, comm, &state, &ppid, &pgrp, &session,&tty, &tpgid, &flags, &minflt, &cminflt, &majflt, &cmajflt, &utime, &stime, &cutime, &cstime, &counter, &priority, &timeout, &itrealvalue, &starttime, &vsize, &rss, &rlim, &startcode, &endcode, &startstack, &kstkesp, &kstkeip, &signal, &blocked, &sigignore, &sigcatch, &wchan ); processnum = processnum.rightJustify( 5, ' ' ); - processcmd = QString( comm ).replace( QRegExp( "(" ), "" ); - processcmd = processcmd.replace( QRegExp( ")" ), "" ); - processstatus = state; - processtime.setNum( ( utime + stime ) / 100 ); + QString processcmd = QString( comm ).replace( QRegExp( "[()]" ), "" ); + QString processstatus = QChar(state); + QString processtime = QString::number( ( utime + stime ) / 100 ); processtime = processtime.rightJustify( 9, ' ' ); fclose( procfile ); ( void ) new QListViewItem( ProcessView, processnum, processcmd, processstatus, processtime ); } } @@ -113,25 +108,23 @@ void ProcessInfo::updateData() } void ProcessInfo::viewProcess(QListViewItem *process) { QString pid= process->text(0).stripWhiteSpace(); QString command = process->text(1); - ProcessDetail *processdtl = new ProcessDetail( this, 0, TRUE, 0); - processdtl->setCaption( pid + " - " + command ); - processdtl->pid = pid.toUInt(); - processdtl->ProcessView->setTextFormat( RichText ); + ProcessDtl->setCaption( pid + " - " + command ); + ProcessDtl->pid = pid.toUInt(); FILE *statfile = fopen( ( QString ) ( "/proc/" + pid + "/status"), "r"); if ( statfile ) { char line[81]; fgets( line, 81, statfile ); - processdtl->ProcessView->setText( line ); + ProcessDtl->ProcessView->setText( line ); while ( fgets( line, 81, statfile ) ) { - processdtl->ProcessView->append( line ); + ProcessDtl->ProcessView->append( line ); } fclose( statfile ); } - processdtl->showMaximized(); + ProcessDtl->showMaximized(); } |