summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2015-09-21 14:04:20 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2015-09-21 14:04:20 -0500
commit9cca766255e3c41c33470bb718e39f408d65367e (patch)
treec7c6372e776489e58e281502602db9bb8272f431
parentfeaced1b3cdb36d0b841207b92b40cab58d5437b (diff)
downloadtdelibs-9cca7662.tar.gz
tdelibs-9cca7662.zip
Add TDEPassivePopupStackContainer class
-rw-r--r--tdeui/CMakeLists.txt6
-rw-r--r--tdeui/tdepassivepopupstack.cpp88
-rw-r--r--tdeui/tdepassivepopupstack.h55
3 files changed, 146 insertions, 3 deletions
diff --git a/tdeui/CMakeLists.txt b/tdeui/CMakeLists.txt
index 581687833..53a4fca6a 100644
--- a/tdeui/CMakeLists.txt
+++ b/tdeui/CMakeLists.txt
@@ -70,7 +70,7 @@ install( FILES
kcommand.h twindowlistmenu.h tdefontcombo.h tdeaccelgen.h ktip.h
kdatewidget.h karrowbutton.h kguiitem.h kstdguiitem.h
kstringvalidator.h twindowinfo.h
- ktextedit.h kpassivepopup.h
+ ktextedit.h kpassivepopup.h tdepassivepopupstack.h
kdatetimewidget.h ktimewidget.h ktimezonewidget.h kscrollview.h
tdespell.h ksconfig.h tdespelldlg.h ksyntaxhighlighter.h
ktabbar.h ktabwidget.h ksplashscreen.h tdeconfigdialog.h
@@ -135,8 +135,8 @@ set( ${target}_SRCS
tdemainwindowiface.skel kguiitem.cpp kstdguiitem.cpp
kstringvalidator.cpp kactivelabel.cpp
twindowinfo.cpp ktextedit.cpp kwizard.cpp kpassivepopup.cpp
- tdetoolbarhandler.cpp kdatetimewidget.cpp ktimewidget.cpp ktimezonewidget.cpp
- ksconfig.cpp tdespelldlg.cpp
+ tdepassivepopupstack.cpp tdetoolbarhandler.cpp kdatetimewidget.cpp
+ ktimewidget.cpp ktimezonewidget.cpp ksconfig.cpp tdespelldlg.cpp
tdespell.cpp ksyntaxhighlighter.cpp ktabbar.cpp ktabwidget.cpp
ksplashscreen.cpp tdespellui.ui tdeconfigdialog.cpp
tdeactionselector.cpp klanguagebutton.cpp tdelistviewsearchline.cpp
diff --git a/tdeui/tdepassivepopupstack.cpp b/tdeui/tdepassivepopupstack.cpp
new file mode 100644
index 000000000..42de3c053
--- /dev/null
+++ b/tdeui/tdepassivepopupstack.cpp
@@ -0,0 +1,88 @@
+/* This file is part of the TDE libraries
+ * Copyright (C) 2011 - 2015 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "tdepassivepopupstack.h"
+
+TDEPassivePopupStackContainer::TDEPassivePopupStackContainer(TQWidget *parent, const char *name) : TQWidget(parent, name) {
+ mPopupList.clear();
+
+ // Determine bottom of desktop
+ TQPoint cursorPos = TQCursor::pos();
+ TQRect r = TDEGlobalSettings::desktopGeometry(cursorPos);
+ mTopOfStack = r.height();
+ mRightOfStack = r.width();
+}
+
+TDEPassivePopupStackContainer::~TDEPassivePopupStackContainer() {
+ //
+}
+
+KPassivePopup* TDEPassivePopupStackContainer::displayMessage(TQString title, TQString message, TQString icon, int x, int y) {
+ TQPixmap px;
+ TDEIconLoader* il = TDEGlobal::iconLoader();
+ px = il->loadIcon(icon, TDEIcon::NoGroup);
+
+ KPassivePopup *pop = new KPassivePopup(KPassivePopup::Boxed, this, "");
+ pop->setAutoDelete(true);
+ pop->setView(title, message, icon);
+ pop->setTimeout(-1);
+ TQPoint leftCorner(x, y);
+ if (leftCorner.isNull()) {
+ if (mPopupList.isEmpty()) {
+ // Determine bottom of desktop
+ TQPoint cursorPos = TQCursor::pos();
+ TQRect r = TDEGlobalSettings::desktopGeometry(cursorPos);
+ mTopOfStack = r.height();
+ mRightOfStack = r.width();
+ }
+ TQSize popupSize = pop->sizeHint();
+ 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*)));
+ connect(pop, SIGNAL(clicked(TQPoint)), this, SLOT(popupClicked(TQPoint)));
+ mPopupList.append(pop);
+ pop->show(leftCorner);
+
+ return pop;
+}
+
+void TDEPassivePopupStackContainer::processEvents() {
+ tqApp->processEvents();
+}
+
+void TDEPassivePopupStackContainer::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 = TDEGlobalSettings::desktopGeometry(cursorPos);
+ mTopOfStack = r.height();
+ mRightOfStack = r.width();
+ }
+}
+
+void TDEPassivePopupStackContainer::popupClicked(TQPoint point) {
+ emit(popupClicked(dynamic_cast<KPassivePopup*>(const_cast<TQObject*>(TQObject::sender())), point));
+}
+
+#include "tdepassivepopupstack.moc" \ No newline at end of file
diff --git a/tdeui/tdepassivepopupstack.h b/tdeui/tdepassivepopupstack.h
new file mode 100644
index 000000000..0da1c85ea
--- /dev/null
+++ b/tdeui/tdepassivepopupstack.h
@@ -0,0 +1,55 @@
+/* This file is part of the TDE libraries
+ * Copyright (C) 2011 - 2015 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License version 2 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef TDEPASSIVEPOPUPSTACK_H
+#define TDEPASSIVEPOPUPSTACK_H
+
+#include <tqwidget.h>
+#include <tqcursor.h>
+
+#include "tdeapplication.h"
+#include "tdeglobal.h"
+#include "tdeglobalsettings.h"
+#include "kiconloader.h"
+#include "kpassivepopup.h"
+
+class TDEUI_EXPORT TDEPassivePopupStackContainer : public TQWidget
+{
+ Q_OBJECT
+
+public:
+ TDEPassivePopupStackContainer(TQWidget *parent=0, const char *name=0);
+ ~TDEPassivePopupStackContainer();
+
+ KPassivePopup* displayMessage(TQString title, TQString message, TQString icon, int x, int y);
+ void processEvents();
+
+signals:
+ void popupClicked(KPassivePopup*, TQPoint);
+
+private slots:
+ void popupClosed(KPassivePopup*);
+ void popupClicked(TQPoint);
+
+private:
+ TQPtrList<KPassivePopup> mPopupList;
+ long mTopOfStack;
+ long mRightOfStack;
+};
+
+#endif /* TDEPASSIVEPOPUPSTACK_H */