Source Code (Use browser search to find items of interest.)
Class Index
ktop'TopLevel (./kdeutils/ktop/gui/ktop.h:46)
class TopLevel : public KTMainWindow, public SensorClient
{
Q_OBJECT
public:
TopLevel(const char *name = 0, int sfolder = 0);
~TopLevel();
void closeEvent(QCloseEvent*)
{
quitSlot();
}
virtual void answerReceived(int id, const QString& s);
protected:
virtual void timerEvent(QTimerEvent*);
private:
MainMenu* menubar;
KStatusBar* statusbar;
QSplitter* splitter;
SensorBrowser* sb;
Workspace* ws;
int timerID;
SensorAgent* localhost;
protected slots:
void quitSlot();
};
ktop'TopLevel::TopLevel() (./kdeutils/ktop/gui/ktop.cc:61)
TopLevel::TopLevel(const char *name, int)
: KTMainWindow(name)
{
setCaption(i18n("KDE Task Manager"));
// Create main menu
menubar = new MainMenu(this, "MainMenu");
CHECK_PTR(menubar);
connect(menubar, SIGNAL(quit()), this, SLOT(quitSlot()));
// register the menu bar with KTMainWindow
setMenu(menubar);
splitter = new QSplitter(this, "Splitter");
CHECK_PTR(splitter);
splitter->setOrientation(Horizontal);
setView(splitter);
sb = new SensorBrowser(splitter, SensorMgr, "SensorBrowser");
CHECK_PTR(sb);
ws = new Workspace(splitter, "Workspace");
CHECK_PTR(ws);
connect(menubar, SIGNAL(newWorkSheet()), ws, SLOT(newWorkSheet()));
connect(menubar, SIGNAL(deleteWorkSheet()), ws, SLOT(deleteWorkSheet()));
/* Create the status bar. It displays some information about the
* number of processes and the memory consumption of the local
* host. */
statusbar = new KStatusBar(this, "statusbar");
CHECK_PTR(statusbar);
statusbar->insertItem(i18n("88888 Processes"), 0);
statusbar->insertItem(i18n("Memory: 8888888 kB used, "
"8888888 kB free"), 1);
statusbar->insertItem(i18n("Swap: 8888888 kB used, "
"8888888 kB free"), 2);
setStatusBar(statusbar);
localhost = SensorMgr->engage("localhost");
/* Request info about the swapspace size and the units it is measured in.
* The requested info will be received by answerReceived(). */
localhost->sendRequest("memswap?", (SensorClient*) this, 5);
// call timerEvent to fill the status bar with real values
timerEvent(0);
/* Restore size of the dialog box that was used at end of last
* session. Due to a bug in Qt we need to set the width to one
* more than the defined min width. If this is not done the widget
* is not drawn properly the first time. Subsequent redraws after
* resize are no problem.
*
* I need to implement a propper session management some day! */
QString t = kapp->config()->readEntry(QString("G_Toplevel"));
if(!t.isNull())
{
if (t.length() == 19)
{
int xpos, ypos, ww, wh;
sscanf(t.data(), "%04d:%04d:%04d:%04d", &xpos, &ypos, &ww, &wh);
setGeometry(xpos, ypos,
ww <= KTOP_MIN_W ? KTOP_MIN_W + 1 : ww,
wh <= KTOP_MIN_H ? KTOP_MIN_H : wh);
}
}
setMinimumSize(sizeHint());
readProperties(kapp->config());
timerID = startTimer(2000);
// show the dialog box
show();
}
ktop'TopLevel::~TopLevel() (./kdeutils/ktop/gui/ktop.cc:136)
TopLevel::~TopLevel()
{
killTimer(timerID);
delete menubar;
delete statusbar;
delete splitter;
}
void
ktop'TopLevel::quitSlot() (./kdeutils/ktop/gui/ktop.cc:146)
TopLevel::quitSlot()
{
saveProperties(kapp->config());
kapp->config()->sync();
qApp->quit();
}
void
ktop'TopLevel::timerEvent() (./kdeutils/ktop/gui/ktop.cc:155)
TopLevel::timerEvent(QTimerEvent*)
{
/* Request some info about the memory status. The requested information
* will be received by answerReceived(). */
localhost->sendRequest("pscount", (SensorClient*) this, 0);
localhost->sendRequest("memfree", (SensorClient*) this, 1);
localhost->sendRequest("memused", (SensorClient*) this, 2);
localhost->sendRequest("memswap", (SensorClient*) this, 3);
}
void
ktop'TopLevel::answerReceived() (./kdeutils/ktop/gui/ktop.cc:166)
TopLevel::answerReceived(int id, const QString& answer)
{
QString s;
static QString unit;
static long mUsed = 0;
static long mFree = 0;
static long sTotal = 0;
static long sFree = 0;
switch (id)
{
case 0:
s = i18n("%1 Processes").arg(answer);
statusbar->changeItem(s, 0);
break;
case 1:
mFree = answer.toLong();
break;
case 2:
mUsed = answer.toLong();
s = i18n("Memory: %1 %2 used, %3 %4 free")
.arg(mUsed).arg(unit).arg(mFree).arg(unit);
statusbar->changeItem(s, 1);
break;
case 3:
sFree = answer.toLong();
s = i18n("Swap: %1 %2 used, %3 %4 free")
.arg(sTotal - sFree).arg(unit).arg(sFree).arg(unit);
statusbar->changeItem(s, 2);
break;
case 5:
SensorIntegerInfo info(answer);
sTotal = info.getMax();
unit = info.getUnit();
break;
}
}