|
|
|
@ -29,11 +29,11 @@
|
|
|
|
|
#include <tqpixmap.h>
|
|
|
|
|
#include <tqtimer.h>
|
|
|
|
|
#include <knotifyclient.h>
|
|
|
|
|
#include <kpassivepopup.h>
|
|
|
|
|
#include <kaboutdata.h>
|
|
|
|
|
#include <kcmdlineargs.h>
|
|
|
|
|
#include <klocale.h>
|
|
|
|
|
#include <kapplication.h>
|
|
|
|
|
#include <kiconloader.h>
|
|
|
|
|
#include <kglobalsettings.h>
|
|
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
@ -47,6 +47,13 @@ NotifierContainer* GTKNotifierContainer = NULL;
|
|
|
|
|
void real_handleGTKMain();
|
|
|
|
|
|
|
|
|
|
NotifierContainer::NotifierContainer() : TQWidget() {
|
|
|
|
|
mPopupList.clear();
|
|
|
|
|
|
|
|
|
|
// Determine bottom of desktop
|
|
|
|
|
TQPoint cursorPos = TQCursor::pos();
|
|
|
|
|
TQRect r = KGlobalSettings::desktopGeometry(cursorPos);
|
|
|
|
|
mTopOfStack = r.height();
|
|
|
|
|
mRightOfStack = r.width();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
NotifierContainer::~NotifierContainer() {
|
|
|
|
@ -58,7 +65,11 @@ void NotifierContainer::handleGTKMain() {
|
|
|
|
|
|
|
|
|
|
void NotifierContainer::displayMessage(TQString title, TQString message, TQString icon, int x, int y) {
|
|
|
|
|
TQPixmap px;
|
|
|
|
|
px.load( icon );
|
|
|
|
|
KIconLoader* il = KGlobal::iconLoader();
|
|
|
|
|
px = il->loadIcon( icon, KIcon::NoGroup );
|
|
|
|
|
// if (px.isNull()) {
|
|
|
|
|
// px = il->loadIcon( "gnome_apps", KIcon::NoGroup );
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
KPassivePopup *pop = new KPassivePopup( KPassivePopup::Boxed, this, "" );
|
|
|
|
|
pop->setAutoDelete( true );
|
|
|
|
@ -66,13 +77,21 @@ void NotifierContainer::displayMessage(TQString title, TQString message, TQStrin
|
|
|
|
|
pop->setTimeout( -1 );
|
|
|
|
|
TQPoint leftCorner( x, y);
|
|
|
|
|
if (leftCorner.isNull()) {
|
|
|
|
|
// FIXME: This should stack the popups on top of each other...
|
|
|
|
|
if (mPopupList.isEmpty()) {
|
|
|
|
|
// Determine bottom of desktop
|
|
|
|
|
TQPoint cursorPos = TQCursor::pos();
|
|
|
|
|
TQSize popupSize = pop->tqsizeHint();
|
|
|
|
|
TQRect r = KGlobalSettings::desktopGeometry(cursorPos);
|
|
|
|
|
leftCorner.setX(r.width()-popupSize.width());
|
|
|
|
|
leftCorner.setY(r.height()-popupSize.height());
|
|
|
|
|
mTopOfStack = r.height();
|
|
|
|
|
mRightOfStack = r.width();
|
|
|
|
|
}
|
|
|
|
|
TQSize popupSize = pop->tqsizeHint();
|
|
|
|
|
mTopOfStack = mTopOfStack-popupSize.height();
|
|
|
|
|
if (mTopOfStack < 0) mTopOfStack = 0;
|
|
|
|
|
leftCorner.setX(mRightOfStack-popupSize.width());
|
|
|
|
|
leftCorner.setY(mTopOfStack);
|
|
|
|
|
}
|
|
|
|
|
connect(pop, SIGNAL(hidden(KPassivePopup*)), this, SLOT(popupClosed(KPassivePopup*)));
|
|
|
|
|
mPopupList.append(pop);
|
|
|
|
|
pop->show(leftCorner);
|
|
|
|
|
|
|
|
|
|
processEvents();
|
|
|
|
@ -82,6 +101,19 @@ void NotifierContainer::processEvents() {
|
|
|
|
|
tqApp->processEvents();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void NotifierContainer::popupClosed(KPassivePopup* popup) {
|
|
|
|
|
// Remove the popup from our list of popups
|
|
|
|
|
mPopupList.remove(popup);
|
|
|
|
|
|
|
|
|
|
if (mPopupList.isEmpty()) {
|
|
|
|
|
// Determine bottom of desktop
|
|
|
|
|
TQPoint cursorPos = TQCursor::pos();
|
|
|
|
|
TQRect r = KGlobalSettings::desktopGeometry(cursorPos);
|
|
|
|
|
mTopOfStack = r.height();
|
|
|
|
|
mRightOfStack = r.width();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#undef signals
|
|
|
|
|
|
|
|
|
|
#include <dbus/dbus.h>
|
|
|
|
|