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;
	}
}