Add stack to kdbusdaemon

git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/applications/kdbusnotification@1259341 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
v3.5.13-sru
tpearson 13 years ago
parent 8e8432bc20
commit 49eb1758fe

@ -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...
TQPoint cursorPos = TQCursor::pos();
if (mPopupList.isEmpty()) {
// Determine bottom of desktop
TQPoint cursorPos = TQCursor::pos();
TQRect r = KGlobalSettings::desktopGeometry(cursorPos);
mTopOfStack = r.height();
mRightOfStack = r.width();
}
TQSize popupSize = pop->tqsizeHint();
TQRect r = KGlobalSettings::desktopGeometry(cursorPos);
leftCorner.setX(r.width()-popupSize.width());
leftCorner.setY(r.height()-popupSize.height());
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>

@ -23,6 +23,7 @@
#define NOTIFY_DAEMON_H
#include <tqwidget.h>
#include <kpassivepopup.h>
class NotifierContainer : public TQWidget
{
@ -38,6 +39,12 @@ public:
public slots:
void handleGTKMain();
void popupClosed(KPassivePopup*);
private:
TQPtrList<KPassivePopup> mPopupList;
long mTopOfStack;
long mRightOfStack;
};
#include <glib.h>

Loading…
Cancel
Save