kdeui Library API Documentation

kwindowinfo.cpp

00001 /* 00002 * copyright : (C) 2001-2002 by Richard Moore 00003 * License : This file is released under the terms of the LGPL, version 2. 00004 * email : rich@kde.org 00005 */ 00006 00007 #include <qobjectlist.h> 00008 #include <qpixmap.h> 00009 #include <qtimer.h> 00010 #include <qtooltip.h> 00011 #include <ksystemtray.h> 00012 #include <kwin.h> 00013 00014 #include "kwindowinfo.h" 00015 #include "kwindowinfo.moc" 00016 00017 static const int UNSPECIFIED_TIMEOUT = -1; 00018 static const int DEFAULT_MESSAGE_TIMEOUT = 3000; 00019 00020 KWindowInfo::KWindowInfo( QWidget *parent, const char *name ) 00021 : QObject( parent, name ), win( parent ), autoDel( false ) 00022 { 00023 } 00024 00025 KWindowInfo::~KWindowInfo() 00026 { 00027 } 00028 00029 void KWindowInfo::showMessage( QWidget *window, const QString &text, int timeout ) 00030 { 00031 KWindowInfo *info = new KWindowInfo( window ); 00032 info->autoDel = true; 00033 info->message( text, timeout ); 00034 if ( timeout == 0 ) 00035 delete info; 00036 } 00037 00038 void KWindowInfo::showMessage( QWidget *window, const QString &text, const QPixmap &pix, int timeout ) 00039 { 00040 KWindowInfo *info = new KWindowInfo( window ); 00041 info->autoDel = true; 00042 info->message( text, pix, timeout ); 00043 } 00044 00045 void KWindowInfo::message( const QString &text ) 00046 { 00047 message( text, QPixmap(), UNSPECIFIED_TIMEOUT ); 00048 } 00049 00050 void KWindowInfo::message( const QString &text, const QPixmap &pix ) 00051 { 00052 message( text, pix, UNSPECIFIED_TIMEOUT ); 00053 } 00054 00055 void KWindowInfo::message( const QString &text, int timeout ) 00056 { 00057 message( text, QPixmap(), timeout ); 00058 } 00059 00060 void KWindowInfo::message( const QString &text, const QPixmap &pix, int timeout ) 00061 { 00062 if ( timeout != 0 ) 00063 save(); 00064 00065 display( text, pix ); 00066 00067 if ( timeout < 0 ) 00068 timeout = DEFAULT_MESSAGE_TIMEOUT; 00069 if ( timeout != 0 ) 00070 QTimer::singleShot( timeout, this, SLOT( restore() ) ); 00071 } 00072 00073 void KWindowInfo::permanent( const QString &text ) 00074 { 00075 oldMiniIcon = KWin::icon( win->winId(), 16, 16, true ); 00076 oldIcon = KWin::icon( win->winId(), 34, 34, false ); 00077 if ( oldIcon.isNull() ) 00078 oldIcon = KWin::icon( win->winId(), 32, 32, true ); 00079 00080 permanent( text, oldIcon ); 00081 } 00082 00083 void KWindowInfo::permanent( const QString &text, const QPixmap &pix ) 00084 { 00085 if ( !oldText.isNull() ) { 00086 QObjectList *l = queryList( "QTimer" ); 00087 QObjectListIt it( *l ); 00088 QObject *obj; 00089 00090 while ( (obj = it.current()) != 0 ) { 00091 ++it; 00092 delete obj; 00093 } 00094 delete l; 00095 } 00096 00097 oldText = QString::null; 00098 display( text, pix ); 00099 } 00100 00101 void KWindowInfo::display( const QString &text, const QPixmap &pix ) 00102 { 00103 QPixmap icon; 00104 if ( pix.isNull() ) 00105 icon.load( "bell.png" ); 00106 else 00107 icon = pix; 00108 00109 if ( win->inherits( "KSystemTray" ) ) { 00110 KSystemTray *tray = static_cast<KSystemTray *>( win ); 00111 tray->setPixmap( icon ); 00112 QToolTip::add( tray, text ); 00113 return; 00114 } 00115 00116 win->setCaption( text ); 00117 win->setIcon( icon ); 00118 KWin::setIcons( win->winId(), icon, icon ); 00119 } 00120 00121 void KWindowInfo::save() 00122 { 00123 if ( !oldText.isNull() ) 00124 return; 00125 00126 if ( win->inherits( "KSystemTray" ) ) { 00127 KSystemTray *tray = static_cast<KSystemTray *>( win ); 00128 oldIcon = *(tray->pixmap()); 00129 oldText = QToolTip::textFor( tray ); 00130 return; 00131 } 00132 00133 oldText = win->caption(); 00134 oldMiniIcon = KWin::icon( win->winId(), 16, 16, true ); 00135 oldIcon = KWin::icon( win->winId(), 34, 34, false ); 00136 if ( oldIcon.isNull() ) 00137 oldIcon = KWin::icon( win->winId(), 32, 32, true ); 00138 00139 if ( oldIcon.isNull() ) { 00140 const QPixmap *px = win->icon(); 00141 if ( px ) 00142 oldIcon = *px; 00143 else 00144 oldIcon.resize( 0, 0 ); 00145 } 00146 } 00147 00148 void KWindowInfo::restore() 00149 { 00150 if ( win->inherits( "KSystemTray" ) ) { 00151 KSystemTray *tray = static_cast<KSystemTray *>( win ); 00152 tray->setPixmap( oldIcon ); 00153 QToolTip::add( tray, oldText ); 00154 oldText = QString::null; 00155 return; 00156 } 00157 00158 win->setIcon( oldIcon ); 00159 KWin::setIcons( win->winId(), oldIcon, oldMiniIcon ); 00160 win->setCaption( oldText ); 00161 oldText = QString::null; 00162 00163 if ( autoDel ) 00164 delete this; 00165 } 00166 00167 00168 00169 00170
KDE Logo
This file is part of the documentation for kdeui Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Wed Sep 29 09:43:30 2004 by doxygen 1.3.8 written by Dimitri van Heesch, © 1997-2003