From 9cca766255e3c41c33470bb718e39f408d65367e Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Mon, 21 Sep 2015 14:04:20 -0500 Subject: Add TDEPassivePopupStackContainer class --- tdeui/CMakeLists.txt | 6 +-- tdeui/tdepassivepopupstack.cpp | 88 ++++++++++++++++++++++++++++++++++++++++++ tdeui/tdepassivepopupstack.h | 55 ++++++++++++++++++++++++++ 3 files changed, 146 insertions(+), 3 deletions(-) create mode 100644 tdeui/tdepassivepopupstack.cpp create mode 100644 tdeui/tdepassivepopupstack.h (limited to 'tdeui') 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 + * + * 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(const_cast(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 + * + * 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 +#include + +#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 mPopupList; + long mTopOfStack; + long mRightOfStack; +}; + +#endif /* TDEPASSIVEPOPUPSTACK_H */ -- cgit v1.2.1