23 #include "kmessagebox.h"
24 #include "kshortcut.h"
25 #include "ksystemtray.h"
26 #include "kpopupmenu.h"
27 #include "kapplication.h"
29 #include "kaboutdata.h"
33 #include <kwinmodule.h>
37 #include <kimageeffect.h>
38 #include <kiconloader.h>
41 #include <tqapplication.h>
44 class KSystemTrayPrivate
54 delete actionCollection;
62 : TQLabel( parent, name, (WFlags)WType_TopLevel )
65 QXEmbed::initialize();
68 d =
new KSystemTrayPrivate;
74 setBackgroundMode(X11ParentRelative);
75 setBackgroundOrigin(WindowOrigin);
78 menu->
insertTitle( kapp->miniIcon(), kapp->caption() );
80 KStdAction::quit(TQT_TQOBJECT(
this), TQT_SLOT(maybeQuit()), d->actionCollection);
85 TQT_TQOBJECT(
this), TQT_SLOT( minimizeRestoreAction() ),
86 d->actionCollection,
"minimizeRestore");
91 d->on_all_desktops =
false;
96 d->on_all_desktops =
false;
99 setAlignment( alignment() | Qt::AlignVCenter | Qt::AlignHCenter );
102 setScaledContents(
true);
105 KSystemTray::~KSystemTray()
114 menu->insertSeparator();
115 KAction* action = d->actionCollection->action(
"minimizeRestore");
136 TQLabel::enterEvent( e );
147 if ( !rect().contains( e->pos() ) )
150 switch ( e->button() ) {
156 case Qt::RightButton:
157 if ( parentWidget() ) {
158 KAction* action = d->actionCollection->action(
"minimizeRestore");
159 if ( parentWidget()->isVisible() )
160 action->
setText( i18n(
"&Minimize") );
162 action->
setText( i18n(
"&Restore") );
165 menu->popup( e->globalPos() );
185 void KSystemTray::minimizeRestoreAction()
187 if ( parentWidget() ) {
188 bool restore = !( parentWidget()->isVisible() );
189 minimizeRestore( restore );
193 void KSystemTray::maybeQuit()
195 TQString query = i18n(
"<qt>Are you sure you want to quit <b>%1</b>?</qt>")
196 .arg(kapp->caption());
198 i18n(
"Confirm Quit From System Tray"),
200 TQString(
"systemtrayquit%1")
201 .arg(kapp->caption())) !=
202 KMessageBox::Continue)
214 parentWidget()->close();
218 tqApp->closeAllWindows();
229 minimizeRestore(
true );
234 minimizeRestore(
false );
240 void KSystemTray::activateOrHide()
242 TQWidget *pw = parentWidget();
256 minimizeRestore(
true );
260 for( TQValueList< WId >::ConstIterator it = module.
stackingOrder().fromLast();
268 if( !info2.
geometry().intersects( pw->geometry()))
281 minimizeRestore(
false );
286 void KSystemTray::minimizeRestore(
bool restore )
288 TQWidget* pw = parentWidget();
295 if( d->on_all_desktops )
299 pw->move( info.
geometry().topLeft() );
312 return d->actionCollection;
317 KConfig *appCfg = kapp->config();
319 int iconWidth = appCfg->
readNumEntry(
"systrayIconWidth", 22);
320 return instance->iconLoader()->loadIcon( icon,
KIcon::Panel, iconWidth );
325 return instance->iconLoader()->loadIcon( icon,
KIcon::Panel, iconWidth );
330 TQPixmap iconPixmapToSet = p;
331 if (TQPaintDevice::x11AppDepth() == 32) {
333 iconPixmapToSet.convertFromImage(correctedImage);
335 TQLabel::setPixmap( iconPixmapToSet );
343 TQLabel::setCaption( s );
346 void KSystemTray::virtual_hook(
int,
void* )
349 #include "ksystemtray.moc"
350 #include "kdockwindow.moc"