From: Karai C. <ck...@us...> - 2006-06-26 19:47:59
|
Update of /cvsroot/krusader/krusader_kde3/krusader In directory sc8-pr-cvs2.sourceforge.net:/tmp/cvs-serv18709/krusader_kde3/krusader Modified Files: defaults.h krslots.cpp krusader.cpp krusader.h main.cpp Log Message: ADDED: single instance mode ADDED: start to system tray Index: krslots.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/krslots.cpp,v retrieving revision 1.122 retrieving revision 1.123 diff -C2 -d -r1.122 -r1.123 *** krslots.cpp 2 Mar 2006 19:16:07 -0000 1.122 --- krslots.cpp 26 Jun 2006 19:32:54 -0000 1.123 *************** *** 319,330 **** KrDetailedViewItem::itemHeightChanged(); // needed when icon size / font size changes ! KrBriefViewItem::itemHeightChanged(); MAIN_VIEW->leftMng->slotRecreatePanels(); MAIN_VIEW->rightMng->slotRecreatePanels(); ! MAIN_VIEW->fnKeys->updateShortcuts(); ! KrSelectionMode::resetSelectionHandler(); } delete konfigurator; } --- 319,331 ---- KrDetailedViewItem::itemHeightChanged(); // needed when icon size / font size changes ! KrBriefViewItem::itemHeightChanged(); MAIN_VIEW->leftMng->slotRecreatePanels(); MAIN_VIEW->rightMng->slotRecreatePanels(); ! MAIN_VIEW->fnKeys->updateShortcuts(); ! KrSelectionMode::resetSelectionHandler(); } + krApp->configChanged(); delete konfigurator; } Index: krusader.h =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/krusader.h,v retrieving revision 1.61 retrieving revision 1.62 diff -C2 -d -r1.61 -r1.62 *** krusader.h 19 Mar 2006 22:05:26 -0000 1.61 --- krusader.h 26 Jun 2006 19:32:55 -0000 1.62 *************** *** 48,51 **** --- 48,52 ---- #include <qtextstream.h> #include <kdebug.h> + #include <dcopobject.h> #ifdef __KJSEMBED__ *************** *** 71,80 **** #define krOut kdDebug(50010) ! class Krusader : public KParts::MainWindow { Q_OBJECT public: Krusader(); ! ~Krusader(); void refreshView(); // re-create the main view /** * This returns a defferent icon if krusader runs with root-privileges --- 72,82 ---- #define krOut kdDebug(50010) ! class Krusader : public KParts::MainWindow, public DCOPObject { Q_OBJECT public: Krusader(); ! virtual ~Krusader(); void refreshView(); // re-create the main view + void configChanged(); /** * This returns a defferent icon if krusader runs with root-privileges *************** *** 83,89 **** static char* privIcon(); static QStringList supportedTools(); // find supported tools ! void importKeyboardShortcuts(QString filename); ! void exportKeyboardShortcuts(QString filename); ! public slots: // increase the internal progress bar --- 85,94 ---- static char* privIcon(); static QStringList supportedTools(); // find supported tools ! void importKeyboardShortcuts(QString filename); ! void exportKeyboardShortcuts(QString filename); ! ! virtual bool process (const QCString &fun, const QByteArray &data, QCString &replyType, QByteArray &replyData); ! void moveToTop(); ! public slots: // increase the internal progress bar *************** *** 94,97 **** --- 99,103 ---- void savePosition(); void updateGUI( bool enforce = false ); + void slotClose(); protected: *************** *** 160,164 **** static KAction *actShowJSConsole; #endif ! signals: void changeMessage( QString ); --- 166,170 ---- static KAction *actShowJSConsole; #endif ! signals: void changeMessage( QString ); Index: main.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/main.cpp,v retrieving revision 1.74 retrieving revision 1.75 diff -C2 -d -r1.74 -r1.75 *** main.cpp 14 Mar 2006 19:23:42 -0000 1.74 --- main.cpp 26 Jun 2006 19:32:55 -0000 1.75 *************** *** 42,45 **** --- 42,46 ---- #include "krusaderapp.h" #include "defaults.h" + #include <dcopclient.h> static const char *description = *************** *** 164,168 **** // create the application KrusaderApp app; ! // splash screen - if the user wants one KSplashScreen *splash = 0; --- 165,187 ---- // create the application KrusaderApp app; ! ! { ! KConfigGroupSaver saver(app.config(), "Look&Feel"); ! bool singleInstanceMode = app.config()->readBoolEntry( "Single Instance Mode", _SingleInstanceMode ); ! ! // register with the dcop server ! DCOPClient* client = KApplication::kApplication() ->dcopClient(); ! if ( !client->attach() ) ! exit( 0 ); ! QCString regName = client->registerAs( KApplication::kApplication() ->name(), !singleInstanceMode ); ! if( singleInstanceMode && regName != KApplication::kApplication()->name() ) { ! fprintf( stderr, i18n( "Application already running!\n" ).ascii() ); ! ! DCOPClient::mainClient()->send( KApplication::kApplication() ->name(), "Krusader-Interface", ! "moveToTop()", QByteArray() ); ! exit( 0 ); ! } ! } ! // splash screen - if the user wants one KSplashScreen *splash = 0; *************** *** 183,190 **** QObject::connect(&app, SIGNAL(windowActive()), krusader->slot, SLOT(windowActive())); QObject::connect(&app, SIGNAL(windowInactive()), krusader->slot, SLOT(windowInactive())); ! // and set krusader to be the main widget in it app.setMainWidget(krusader); - krusader->show(); // hide splashscreen --- 202,208 ---- QObject::connect(&app, SIGNAL(windowActive()), krusader->slot, SLOT(windowActive())); QObject::connect(&app, SIGNAL(windowInactive()), krusader->slot, SLOT(windowInactive())); ! // and set krusader to be the main widget in it app.setMainWidget(krusader); // hide splashscreen Index: krusader.cpp =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/krusader.cpp,v retrieving revision 1.189 retrieving revision 1.190 diff -C2 -d -r1.189 -r1.190 *** krusader.cpp 23 Jun 2006 05:34:07 -0000 1.189 --- krusader.cpp 26 Jun 2006 19:32:54 -0000 1.190 *************** *** 42,46 **** #include <kmenubar.h> #include <kapplication.h> - #include <dcopclient.h> #include <kcmdlineargs.h> #include <kglobal.h> --- 42,45 ---- *************** *** 189,193 **** // construct the views, statusbar and menu bars and prepare Krusader to start Krusader::Krusader() : KParts::MainWindow(0,0,WType_TopLevel|WDestructiveClose|Qt::WStyle_ContextHelp), ! status(NULL), sysTray( 0 ), isStarting( true ), isExiting( false ) { // parse command line arguments KCmdLineArgs * args = KCmdLineArgs::parsedArgs(); --- 188,192 ---- // construct the views, statusbar and menu bars and prepare Krusader to start Krusader::Krusader() : KParts::MainWindow(0,0,WType_TopLevel|WDestructiveClose|Qt::WStyle_ContextHelp), ! DCOPObject("Krusader-Interface"), status(NULL), sysTray( 0 ), isStarting( true ), isExiting( false ) { // parse command line arguments KCmdLineArgs * args = KCmdLineArgs::parsedArgs(); *************** *** 220,230 **** } - - // register with the dcop server - DCOPClient* client = KApplication::kApplication() ->dcopClient(); - if ( !client->attach() ) - exit( 0 ); - client->registerAs( KApplication::kApplication() ->name() ); - // create an icon loader iconLoader = KGlobal::iconLoader(); --- 219,222 ---- *************** *** 326,332 **** --- 318,336 ---- sysTray->setPixmap( iconLoader->loadIcon( privIcon(), KIcon::Panel, 22 ) ); sysTray->hide(); + + connect( sysTray, SIGNAL( quitSelected() ), this, SLOT( slotClose() ) ); setCentralWidget( mainView ); + config->setGroup( "Startup" ); + bool startToTray = config->readBoolEntry( "Start To Tray", _StartToTray ); config->setGroup( "Look&Feel" ); + bool minimizeToTray = config->readBoolEntry( "Minimize To Tray", _MinimizeToTray ); + bool singleInstanceMode = config->readBoolEntry( "Single Instance Mode", _SingleInstanceMode ); + + startToTray = startToTray && minimizeToTray; + + if( singleInstanceMode && minimizeToTray ) + sysTray->show(); + // manage our keyboard short-cuts *************** *** 342,352 **** if ( krConfig->readBoolEntry( "Maximized" ) ) restoreWindowSize(config); ! else ! { ! // first, resize and move to starting point move( oldPos = krConfig->readPointEntry( "Start Position", _StartPosition ) ); ! resize( oldSize = krConfig->readSizeEntry( "Start Size", _StartSize ) ); ! show(); } } // let the good times rool :) --- 346,360 ---- if ( krConfig->readBoolEntry( "Maximized" ) ) restoreWindowSize(config); ! else { move( oldPos = krConfig->readPointEntry( "Start Position", _StartPosition ) ); ! resize( oldSize = krConfig->readSizeEntry( "Start Size", _StartSize )); } + + if( startToTray ) { + sysTray->show(); + hide(); + } + else + show(); } // let the good times rool :) *************** *** 409,413 **** if( isExiting ) return; ! sysTray->hide(); show(); // needed to make sure krusader is removed from // the taskbar when minimizing (system tray issue) --- 417,426 ---- if( isExiting ) return; ! config->setGroup( "Look&Feel" ); ! bool showTrayIcon = krConfig->readBoolEntry( "Minimize To Tray", _MinimizeToTray ); ! bool singleInstanceMode = krConfig->readBoolEntry( "Single Instance Mode", _SingleInstanceMode ); ! ! if( !showTrayIcon && !singleInstanceMode ) ! sysTray->hide(); show(); // needed to make sure krusader is removed from // the taskbar when minimizing (system tray issue) *************** *** 480,484 **** actionCollection(), "toggle actions toolbar"); actShowStatusBar = KStdAction::showStatusbar( SLOTS, SLOT( toggleStatusbar() ), actionCollection(), "std_statusbar" ); ! KStdAction::quit( this, SLOT( close() ), actionCollection(), "std_quit" ); KStdAction::configureToolbars( SLOTS, SLOT( configToolbar() ), actionCollection(), "std_config_toolbar" ); KStdAction::keyBindings( SLOTS, SLOT( configKeys() ), actionCollection(), "std_config_keys" ); --- 493,497 ---- actionCollection(), "toggle actions toolbar"); actShowStatusBar = KStdAction::showStatusbar( SLOTS, SLOT( toggleStatusbar() ), actionCollection(), "std_statusbar" ); ! KStdAction::quit( this, SLOT( slotClose() ), actionCollection(), "std_quit" ); KStdAction::configureToolbars( SLOTS, SLOT( configToolbar() ), actionCollection(), "std_config_toolbar" ); KStdAction::keyBindings( SLOTS, SLOT( configKeys() ), actionCollection(), "std_config_keys" ); *************** *** 674,678 **** SLOTS, SLOT( rename() ) , actionCollection(), "F9_Rename" ); actF10 = new KAction( i18n( "F10 - Quit" ), Key_F10, ! this, SLOT( close() ) , actionCollection(), "F10_Quit" ); actPopularUrls = new KAction( i18n("Popular URLs"), CTRL+Key_Z, popularUrls, SLOT( showDialog() ), actionCollection(), "Popular_Urls"); --- 687,691 ---- SLOTS, SLOT( rename() ) , actionCollection(), "F9_Rename" ); actF10 = new KAction( i18n( "F10 - Quit" ), Key_F10, ! this, SLOT( slotClose() ) , actionCollection(), "F10_Quit" ); actPopularUrls = new KAction( i18n("Popular URLs"), CTRL+Key_Z, popularUrls, SLOT( showDialog() ), actionCollection(), "Popular_Urls"); *************** *** 808,811 **** --- 821,825 ---- config->writeEntry( "Show Terminal Emulator", actToggleTerminal->isChecked() ); config->writeEntry( "Vertical Mode", actVerticalMode->isChecked()); + config->writeEntry( "Start To Tray", isHidden()); } *************** *** 827,836 **** } bool Krusader::queryClose() { if( isStarting ) return false; bool quit = true; ! krConfig->setGroup( "Look&Feel" ); if ( krConfig->readBoolEntry( "Warn On Exit", _WarnOnExit ) ) { switch ( KMessageBox::warningYesNo( this, --- 841,881 ---- } + void Krusader::configChanged() { + config->setGroup( "Look&Feel" ); + bool minimizeToTray = config->readBoolEntry( "Minimize To Tray", _MinimizeToTray ); + bool singleInstanceMode = config->readBoolEntry( "Single Instance Mode", _SingleInstanceMode ); + + if( !isHidden() ) { + if( singleInstanceMode && minimizeToTray ) + sysTray->show(); + else + sysTray->hide(); + } else { + if( minimizeToTray ) + sysTray->show(); + } + } + + void Krusader::slotClose() { + isExiting = true; + close(); + } + bool Krusader::queryClose() { if( isStarting ) return false; + + if( kapp->sessionSaving() ) // KDE is logging out, accept the close + return true; // this will also kill the pending jobs + + krConfig->setGroup( "Look&Feel" ); + if( !isExiting && krConfig->readBoolEntry( "Single Instance Mode", _SingleInstanceMode ) && + krConfig->readBoolEntry( "Minimize To Tray", _MinimizeToTray ) ) { + hide(); + return false; + } bool quit = true; ! if ( krConfig->readBoolEntry( "Warn On Exit", _WarnOnExit ) ) { switch ( KMessageBox::warningYesNo( this, *************** *** 891,901 **** hide(); // hide kapp->deref(); // FIX: krusader exits at closing the viewer when minimized to tray - - if( kapp->sessionSaving() ) // KDE is logging out, accept the close - return true; // this will also kill the pending jobs - kapp->deref(); // and close the application return false; // don't let the main widget close. It stops the pending copies! ! } else return false; } --- 936,943 ---- hide(); // hide kapp->deref(); // FIX: krusader exits at closing the viewer when minimized to tray kapp->deref(); // and close the application return false; // don't let the main widget close. It stops the pending copies! ! } else ! return false; } *************** *** 1113,1116 **** --- 1155,1174 ---- } + bool Krusader::process(const QCString &fun, const QByteArray &data, QCString &replyType, QByteArray &replyData) { + if (fun == "moveToTop()") { + moveToTop(); + return true; + } else { + fprintf( stderr, "Processing DCOP call failed. Function unknown!\n" ); + return false; + } + } + + void Krusader::moveToTop() { + if( isHidden() ) + show(); + + KWin::forceActiveWindow( winId() ); + } #include "krusader.moc" Index: defaults.h =================================================================== RCS file: /cvsroot/krusader/krusader_kde3/krusader/defaults.h,v retrieving revision 1.38 retrieving revision 1.39 diff -C2 -d -r1.38 -r1.39 *** defaults.h 17 Mar 2006 07:47:37 -0000 1.38 --- defaults.h 26 Jun 2006 19:32:54 -0000 1.39 *************** *** 47,50 **** --- 47,52 ---- // Remember Position #define _RememberPos true + // Start to tray + #define _StartToTray false // Left Tab Bar // Right Tab Bar *************** *** 112,115 **** --- 114,119 ---- // Show splashscreen #define _ShowSplashScreen true + // Single instance mode + #define _SingleInstanceMode false /////////////////////// [General] |