// // C++ Implementation: komposesystray // // Description: // // // Author: Hans Oischinger , (C) 2004 // // Copyright: See COPYING file that comes with this distribution // // #include "komposesystray.h" #include "komposeviewmanager.h" #include "komposefullscreenwidget.h" #include "komposesettings.h" #include "komposeglobal.h" #include "komposetaskmanager.h" #include #include #include #include #include #include #include #include KomposeSysTray::KomposeSysTray(TQWidget *parent, const char *name) : KSystemTray(parent, name) { // Create Menu menu = contextMenu(); move( -1000, -1000 ); // Fill Menu KomposeGlobal::instance()->getActShowWorldView()->plug(menu); KomposeGlobal::instance()->getActShowVirtualDesktopView()->plug(menu); KomposeGlobal::instance()->getActShowCurrentDesktopView()->plug(menu); menu->insertSeparator(); KomposeGlobal::instance()->getActPreferencesDialog()->plug(menu); KomposeGlobal::instance()->getActConfigGlobalShortcuts()->plug(menu); KomposeGlobal::instance()->getActAboutDlg()->plug(menu); slotConfigChanged(); connect( KomposeSettings::instance(), SIGNAL(settingsChanged()), this, SLOT(slotConfigChanged()) ); } KomposeSysTray::~KomposeSysTray() {} void KomposeSysTray::slotConfigChanged( ) { // set the icon here TQPixmap iconPixmap = loadIcon("kompose"); setPixmap(iconPixmap); icon = iconPixmap.convertToImage(); currentDesktopChanged(KomposeTaskManager::instance()->getCurrentDesktopNum()); } void KomposeSysTray::mouseReleaseEvent (TQMouseEvent * ) {} void KomposeSysTray::mousePressEvent ( TQMouseEvent * e ) { if ( !rect().contains( e->pos() ) ) return; switch ( e->button() ) { case LeftButton: KomposeViewManager::instance()->createView( KomposeSettings::instance()->getDefaultView() ); break; case MidButton: // fall through case RightButton: contextMenuAboutToShow( menu ); menu->popup( e->globalPos() ); break; default: // nothing break; } } void KomposeSysTray::currentDesktopChanged(int desktop) { if (!KomposeSettings::instance()->getShowDesktopNum()) return; // update the icon to display the current desktop number // tqDebug("Displaying current desktop number on the tray icon....\n"); // copying from aKregator/src/trayicon.cpp // from KMSystemTray int oldW = pixmap()->size().width(); int oldH = pixmap()->size().height(); TQString uStr=TQString::number( desktop ); TQFont f=KGlobalSettings::generalFont(); f.setBold(true); f.setItalic(true); float pointSize=f.pointSizeFloat(); TQFontMetrics fm(f); int w=fm.width(uStr); if( w > (oldW) ) { pointSize *= float(oldW) / float(w); f.setPointSizeFloat(pointSize); } TQPixmap pix(oldW, oldH); pix.fill(TQt::white); TQPainter p(&pix); p.setFont(f); p.setPen(TQt::black); p.drawText(pix.rect(), TQt::AlignCenter, uStr); pix.setMask(pix.createHeuristicMask()); TQImage img=pix.convertToImage(); // overlay TQImage overlayImg=icon.copy(); KIconEffect::overlay(overlayImg, img); TQPixmap newIcon; newIcon.convertFromImage(overlayImg); setPixmap(newIcon); } #include "komposesystray.moc"