summaryrefslogtreecommitdiffstats
path: root/twin/popupinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'twin/popupinfo.cpp')
-rw-r--r--twin/popupinfo.cpp147
1 files changed, 147 insertions, 0 deletions
diff --git a/twin/popupinfo.cpp b/twin/popupinfo.cpp
new file mode 100644
index 000000000..638bd9354
--- /dev/null
+++ b/twin/popupinfo.cpp
@@ -0,0 +1,147 @@
+/*****************************************************************
+ KWin - the KDE window manager
+ This file is part of the KDE project.
+
+Copyright (C) 1999, 2000 Matthias Ettrich <ettrich@kde.org>
+Copyright (C) 2002 Alexander Kellett <lypanov@kde.org>
+Copyright (C) 2003 Lubos Lunak <l.lunak@kde.org>
+
+You can Freely distribute this program under the GNU General Public
+License. See the file "COPYING" for the exact licensing terms.
+******************************************************************/
+
+//#define QT_CLEAN_NAMESPACE
+#include "popupinfo.h"
+#include "workspace.h"
+#include "client.h"
+#include <tqpainter.h>
+#include <tqlabel.h>
+#include <tqdrawutil.h>
+#include <tqstyle.h>
+#include <tdeglobal.h>
+#include <fixx11h.h>
+#include <tdeconfig.h>
+#include <kdebug.h>
+#include <tdelocale.h>
+#include <tqapplication.h>
+#include <tqdesktopwidget.h>
+#include <kstringhandler.h>
+#include <tdeglobalsettings.h>
+
+// specify externals before namespace
+
+namespace KWinInternal
+{
+
+PopupInfo::PopupInfo( Workspace* ws, const char *name )
+ : TQWidget( 0, name ), workspace( ws )
+ {
+ m_infoString = "";
+ m_shown = false;
+ reset();
+ reconfigure();
+ connect(&m_delayedHideTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(hide()));
+
+ TQFont f = font();
+ f.setBold( TRUE );
+ f.setPointSize( 14 );
+ setFont( f );
+
+ }
+
+PopupInfo::~PopupInfo()
+ {
+ }
+
+
+/*!
+ Resets the popup info
+ */
+void PopupInfo::reset()
+ {
+ TQRect r = workspace->screenGeometry( workspace->activeScreen());
+
+ int w = fontMetrics().width( m_infoString ) + 30;
+
+ setGeometry(
+ (r.width()-w)/2 + r.x(), r.height()/2-fontMetrics().height()-10 + r.y(),
+ w, fontMetrics().height() + 20 );
+ }
+
+
+/*!
+ Paints the popup info
+ */
+void PopupInfo::paintEvent( TQPaintEvent* )
+ {
+ TQPainter p( this );
+ style().tqdrawPrimitive( TQStyle::PE_Panel, &p, TQRect( 0, 0, width(), height() ),
+ colorGroup(), TQStyle::Style_Default );
+ paintContents();
+ }
+
+
+/*!
+ Paints the contents of the tab popup info box.
+ Used in paintEvent() and whenever the contents changes.
+ */
+void PopupInfo::paintContents()
+ {
+ TQPainter p( this );
+ TQRect r( 6, 6, width()-12, height()-12 );
+
+ p.fillRect( r, colorGroup().brush( TQColorGroup::Background ) );
+
+ /*
+ p.setPen(Qt::white);
+ p.drawText( r, AlignCenter, m_infoString );
+ p.setPen(Qt::black);
+ r.moveBy( -1, -1 );
+ p.drawText( r, AlignCenter, m_infoString );
+ r.moveBy( -1, 0 );
+ */
+ p.drawText( r, AlignCenter, m_infoString );
+ }
+
+void PopupInfo::hide()
+ {
+ m_delayedHideTimer.stop();
+ TQWidget::hide();
+ TQApplication::syncX();
+ XEvent otherEvent;
+ while (XCheckTypedEvent (tqt_xdisplay(), EnterNotify, &otherEvent ) )
+ ;
+ m_shown = false;
+ }
+
+void PopupInfo::reconfigure()
+ {
+ TDEConfig * c(TDEGlobal::config());
+ c->setGroup("PopupInfo");
+ m_show = c->readBoolEntry("ShowPopup", false );
+ m_delayTime = c->readNumEntry("PopupHideDelay", 350 );
+ }
+
+void PopupInfo::showInfo(TQString infoString)
+ {
+ if (m_show)
+ {
+ m_infoString = infoString;
+ reset();
+ if (m_shown)
+ {
+ paintContents();
+ }
+ else
+ {
+ show();
+ raise();
+ m_shown = true;
+ }
+ m_delayedHideTimer.start(m_delayTime, true);
+ }
+ }
+
+} // namespace
+
+#include "popupinfo.moc"