kontact
korg_uniqueapp.cpp
00001 /* 00002 This file is part of KDE Kontact. 00003 00004 Copyright (c) 2003 David Faure <faure@kde.org> 00005 00006 This library is free software; you can redistribute it and/or 00007 modify it under the terms of the GNU Library General Public 00008 License as published by the Free Software Foundation; either 00009 version 2 of the License, or (at your option) any later version. 00010 00011 This library is distributed in the hope that it will be useful, 00012 but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00014 Library General Public License for more details. 00015 00016 You should have received a copy of the GNU Library General Public License 00017 along with this library; see the file COPYING.LIB. If not, write to 00018 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00019 Boston, MA 02110-1301, USA. 00020 */ 00021 00022 #include "korg_uniqueapp.h" 00023 #include "../../korganizer/korganizer_options.h" 00024 00025 #include "core.h" 00026 #include <dcopref.h> 00027 #include <tdeapplication.h> 00028 #include <tdestartupinfo.h> 00029 #include <twin.h> 00030 00031 void KOrganizerUniqueAppHandler::loadCommandLineOptions() 00032 { 00033 TDECmdLineArgs::addCmdLineOptions( korganizer_options ); 00034 } 00035 00036 int KOrganizerUniqueAppHandler::newInstance() 00037 { 00038 // Ensure part is loaded 00039 (void)plugin()->part(); 00040 DCOPRef korganizer( "korganizer", "KOrganizerIface" ); 00041 korganizer.send( "handleCommandLine" ); 00042 00043 // Bring korganizer's plugin to front 00044 // This bit is duplicated from KUniqueApplication::newInstance() 00045 if ( kapp->mainWidget() ) { 00046 kapp->mainWidget()->show(); 00047 KWin::forceActiveWindow( kapp->mainWidget()->winId() ); 00048 TDEStartupInfo::appStarted(); 00049 } 00050 00051 // Then ensure the part appears in kontact. 00052 // ALWAYS use the korganizer plugin; i.e. never show the todo nor journal 00053 // plugins when creating a new instance via the command line, even if 00054 // the command line options are empty; else we'd need to examine the 00055 // options and then figure out which plugin we should show. 00056 // kolab/issue3971 00057 plugin()->core()->selectPlugin( "kontact_korganizerplugin" ); 00058 return 0; 00059 }