/************************************************************************** * Copyright (C) 2005 by Christian Hubinger * * e9806056@student.tuwien.ac.at * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program 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 General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ // QT includes #include #include // KDE includes #include #include #include #include #include #include #include #include #include #include #include #include // Project includes #include "kmfsystray.h" #include "kmfiptwatcher.h" #include "mainwidget.h" #include "../core/kmfiptdoc.h" #include "../core/kmfappstate.h" KMFSysTray::KMFSysTray( TQWidget* w ) : KSystemTray ( w ) , DCOPObject( "KMFSysTray" ) { mainView = w; ksConfig = kapp->config(); KMFIPTWatcher *watch = new KMFIPTWatcher( this, "KMFIPTWatcher" ); baseIcon = KSystemTray::loadIcon( "kmyfirewall" ); setPixmap( baseIcon ); // Connect the watch deamon connect( watch, TQT_SIGNAL( sigUpdateActive( bool ) ), this, TQT_SLOT( slotSetRunningStatus( bool ) ) ); connect( watch, TQT_SIGNAL( sigUpdateRuleCount( const TQString&, const TQString&, int ) ), this, TQT_SIGNAL( sigUpdateRuleCount( const TQString&, const TQString&, int ) ) ); connect( watch, TQT_SIGNAL( sigUpdateIPTDoc( KMFIPTDoc* ) ), this, TQT_SIGNAL( sigUpdateIPTDoc( KMFIPTDoc* ) ) ); connect( this, TQT_SIGNAL( sigQueryDetails( bool ) ), watch, TQT_SLOT( slotQueryDetails( bool ) ) ); // Connect view connect( w, TQT_SIGNAL( closing() ), this, TQT_SLOT ( slotDetailsClosed() ) ); connect( w, TQT_SIGNAL( showing() ), this, TQT_SLOT ( slotQueryDetails() ) ); connect( this, TQT_SIGNAL( sigUpdateIPTDoc( KMFIPTDoc* ) ), w, TQT_SLOT( slotLoadDoc( KMFIPTDoc* ) ) ); initMenu(); show(); emit sigQueryDetails( false ); KMFAppState::setUpAndRunning( true ); KMFAppState::setHasOpenDoc( true ); } KMFSysTray::~KMFSysTray() {} void KMFSysTray::initMenu() { KPopupMenu* menu = contextMenu (); menu->insertItem( KGlobal::iconLoader()->loadIcon( "kmyfirewall", KIcon::Small ), i18n( "Launch KMyFirewall..."), this, TQT_SLOT( slotLaunchKMF() ), CTRL+Key_K ); } void KMFSysTray::slotSetRunningStatus( bool on ) { if ( on ) { baseIcon = KSystemTray::loadIcon( "kmyfirewall" ); } else { baseIcon = KSystemTray::loadIcon( "kmyfirewall" ); } setPixmap( baseIcon ); } void KMFSysTray::slotLaunchKMF () { KProcess *childproc = new KProcess(); *childproc << "tdesu"; *childproc << "kmyfirewall"; childproc->start( KProcess:: DontCare, KProcess::NoCommunication ); } void KMFSysTray::slotShowDetails() { kdDebug() << "MFSysTray::slotshowDetails()" << endl; slotQueryDetails(); mainView->show(); } void KMFSysTray::slotQueryDetails() { emit sigQueryDetails( true ); } void KMFSysTray::slotDetailsClosed() { kdDebug() << "KMFSysTray::slotDetailsClosed()" << endl; emit sigQueryDetails( false ); } void KMFSysTray::about() { /* if(!_aboutData) { _aboutData = new KAboutData("KMFSysTray", I18N_NOOP("KMFSysTray"), "1.0", I18N_NOOP("KMyFirewall Pannel Applet.\n\n" "Some basic informaddAuthor("Christian Hubinger", 0, "e9806056@student.tuwien.ac.at"); } KAboutApplication dialog(_aboutData); dialog.show();*/ } void KMFSysTray::help() { KMessageBox::information( 0, i18n( "This is a help box" ) ); } void KMFSysTray::preferences() { KMessageBox::information( 0, i18n( "This is a preferences box" ) ); } int KMFSysTray::widthForHeight( int ) const { return width(); } int KMFSysTray::heightForWidth( int ) const { return height(); } void KMFSysTray::resizeEvent( TQResizeEvent *e ) {} // extern "C" { // KPanelApplet * init( TQWidget * parent, const TQString & configFile ) { // KGlobal::locale() ->insertCatalogue( "kmfsystray" ); // return new KMFSysTray( configFile, KPanelApplet::Normal, // KPanelApplet::About | KPanelApplet::Help | KPanelApplet::Preferences, // parent, "kmfsystray" ); // } // }