|
|
|
/*************************************************************************
|
|
|
|
|
|
|
|
Main KSirc start
|
|
|
|
|
|
|
|
$$Id$$
|
|
|
|
|
|
|
|
Main start file that defines 3 global vars, etc
|
|
|
|
|
|
|
|
*************************************************************************/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Needed items
|
|
|
|
* 4. Send a /quit and/or kill dsirc on exit
|
|
|
|
* */
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
|
|
|
#include <tqsessionmanager.h>
|
|
|
|
|
|
|
|
#include <kuniqueapplication.h>
|
|
|
|
#include <tdeaboutdata.h>
|
|
|
|
#include <tdecmdlineargs.h>
|
|
|
|
#include <tdelocale.h>
|
|
|
|
#include <tdeconfig.h>
|
|
|
|
#include <kdebug.h>
|
|
|
|
|
|
|
|
//#include "cdate.h"
|
|
|
|
#include "ksopts.h"
|
|
|
|
#include "servercontroller.h"
|
|
|
|
#include "version.h"
|
|
|
|
|
|
|
|
static const char description[] =
|
|
|
|
I18N_NOOP("TDE IRC client");
|
|
|
|
|
|
|
|
//TQDict<KSircTopLevel> TopList;
|
|
|
|
//TQDict<KSircMessageReceiver> TopList;
|
|
|
|
|
|
|
|
class TDECmdLineOptions options[] =
|
|
|
|
{
|
|
|
|
{ "nick <nickname>", I18N_NOOP( "Nickname to use" ), 0 } ,
|
|
|
|
{ "server <server>", I18N_NOOP( "Server to connect to on startup" ), 0 },
|
|
|
|
{ "channel <#channel>", I18N_NOOP( "Channel to connect to on startup" ), 0 },
|
|
|
|
{ "o", 0, 0 },
|
|
|
|
{ "noautoconnect", I18N_NOOP( "Do not autoconnect on startup" ), 0 },
|
|
|
|
TDECmdLineLastOption
|
|
|
|
};
|
|
|
|
|
|
|
|
class KSircSessionManaged : public KSessionManaged
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
KSircSessionManaged() {}
|
|
|
|
|
|
|
|
virtual bool commitData( TQSessionManager &sm )
|
|
|
|
{
|
|
|
|
servercontroller *controller = servercontroller::self();
|
|
|
|
if ( !controller || !sm.allowsInteraction() ) return true;
|
|
|
|
|
|
|
|
// if the controller is hidden KMWSessionManaged won't send the fake close event.
|
|
|
|
// we want it in any way however.
|
|
|
|
if ( controller->isHidden() ) {
|
|
|
|
TQCloseEvent e;
|
|
|
|
TQApplication::sendEvent( controller, &e );
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
extern "C" TDE_EXPORT int kdemain( int argc, char ** argv )
|
|
|
|
{
|
|
|
|
TDEAboutData aboutData( "ksirc", I18N_NOOP("KSirc"),
|
|
|
|
KSIRC_VERSION, description, TDEAboutData::License_Artistic,
|
|
|
|
I18N_NOOP("(c) 1997-2002, The KSirc Developers"));
|
|
|
|
aboutData.addAuthor("Andrew Stanley-Jones",I18N_NOOP("Original Author"), "asj-ksirc@cban.com");
|
|
|
|
aboutData.addAuthor("Waldo Bastian",0, "bastian@kde.org");
|
|
|
|
aboutData.addAuthor("Carsten Pfeiffer",0, "pfeiffer@kde.org");
|
|
|
|
aboutData.addAuthor("Malte Starostik",0, "malte@kde.org");
|
|
|
|
aboutData.addAuthor("Daniel Molkentin",0, "molkentin@kde.org");
|
|
|
|
aboutData.addAuthor("Simon Hausmann",0, "hausmann@kde.org");
|
|
|
|
aboutData.addAuthor("Alyssa Mejawohld", I18N_NOOP("Icons Author"), "amejawohld@bellsouth.net");
|
|
|
|
TDECmdLineArgs::init( argc, argv, &aboutData );
|
|
|
|
TDECmdLineArgs::addCmdLineOptions( options );
|
|
|
|
KUniqueApplication::addCmdLineOptions();
|
|
|
|
|
|
|
|
if (!KUniqueApplication::start()) {
|
|
|
|
exit(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
// Start the KDE application
|
|
|
|
KUniqueApplication app;
|
|
|
|
|
|
|
|
KSircSessionManaged sm;
|
|
|
|
|
|
|
|
// Options
|
|
|
|
KSOptions opts;
|
|
|
|
opts.load();
|
|
|
|
|
|
|
|
servercontroller *sc = new servercontroller(0, "servercontroller");
|
|
|
|
app.setMainWidget(sc);
|
|
|
|
|
|
|
|
if (TDEMainWindow::canBeRestored(1))
|
|
|
|
{
|
|
|
|
sc->restore(1, false );
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{ // no Session management -> care about docking, geometry, etc.
|
|
|
|
|
|
|
|
if( !opts.geometry.isEmpty() )
|
|
|
|
sc->setGeometry( opts.geometry );
|
|
|
|
|
|
|
|
TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
|
|
|
|
|
|
|
|
TQCString nickName = args->getOption( "nick" );
|
|
|
|
TQCString server = args->getOption( "server" );
|
|
|
|
TQCString channel = args->getOption( "channel" );
|
|
|
|
|
|
|
|
if ( !nickName.isEmpty() )
|
|
|
|
ksopts->server["global"].nick = nickName;
|
|
|
|
|
|
|
|
if ( !server.isEmpty() ) {
|
|
|
|
TQString ser = TQString::fromLocal8Bit( server );
|
|
|
|
TQString port = "6667";
|
|
|
|
if(ser.contains(":")){
|
|
|
|
port = ser.section(":", 1, 1);
|
|
|
|
ser = ser.section(":", 0, 0);
|
|
|
|
}
|
|
|
|
KSircServer kss(ser, port, "", "", false);
|
|
|
|
sc->new_ksircprocess( kss );
|
|
|
|
if ( !channel.isEmpty() ) {
|
|
|
|
TQStringList channels = TQStringList::split( ',', TQString::fromLocal8Bit( channel ) );
|
|
|
|
TQStringList::ConstIterator it = channels.begin();
|
|
|
|
TQStringList::ConstIterator end = channels.end();
|
|
|
|
for ( ; it != end; ++it ) {
|
|
|
|
sc->new_toplevel( KSircChannel(ser, *it), true );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
if(args->isSet("autoconnect") == TRUE){
|
|
|
|
sc->start_autoconnect();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
args->clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
return app.exec();
|
|
|
|
}
|