1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
#include "soundkonverterapp.h"
#include "soundkonverter.h"
#include <KCmdLineArgs>
#include <KStandardDirs>
#include <KUrl>
#include <QFile>
soundKonverterApp::soundKonverterApp()
: KUniqueApplication()
{
mainWindow = new soundKonverter();
setActiveWindow( mainWindow );
}
soundKonverterApp::~soundKonverterApp()
{}
int soundKonverterApp::newInstance()
{
KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
static bool first = true;
bool visible = true;
bool autoclose = false;
bool autostart = false;
bool activateMainWindow = true;
if( ( first || !mainWindow->isVisible() ) && args->isSet("replaygain") && args->count() > 0 )
visible = false;
autoclose = args->isSet( "autoclose" );
autostart = args->isSet( "autostart" );
const QString profile = args->getOption( "profile" );
const QString format = args->getOption( "format" );
const QString directory = args->getOption( "output" );
const QString notifyCommand = args->getOption( "command" );
const QString fileListPath = args->getOption( "file-list" );
if( args->isSet( "invisible" ) )
{
autoclose = true;
autostart = true;
visible = false;
mainWindow->showSystemTray();
}
if( first && fileListPath.isEmpty() && QFile::exists(KStandardDirs::locateLocal("data","soundkonverter/filelist_autosave.xml")) )
{
if( !visible )
{
visible = true;
autoclose = false;
autostart = false;
mainWindow->show();
}
mainWindow->show();
kapp->processEvents();
mainWindow->loadAutosaveFileList();
}
else if( !fileListPath.isEmpty() && QFile::exists(fileListPath) )
{
mainWindow->loadFileList(fileListPath);
}
const QString device = args->getOption( "rip" );
if( !device.isEmpty() )
{
const bool success = mainWindow->ripCd( device, profile, format, directory, notifyCommand );
if( !success && first )
{
kapp->quit();
return 0;
}
}
if( visible )
mainWindow->show();
mainWindow->setAutoClose( autoclose );
if( args->isSet( "replaygain" ) )
{
KUrl::List urls;
for( int i=0; i<args->count(); i++ )
{
urls.append( args->arg(i) );
}
if( !urls.isEmpty() )
{
mainWindow->addReplayGainFiles( urls );
activateMainWindow = false;
}
}
else
{
KUrl::List urls;
for( int i=0; i<args->count(); i++ )
{
urls.append( args->arg(i) );
}
if( !urls.isEmpty() )
mainWindow->addConvertFiles( urls, profile, format, directory, notifyCommand );
}
args->clear();
if( activateMainWindow )
mainWindow->activateWindow();
if( autostart )
mainWindow->startConversion();
if( first )
mainWindow->startupChecks();
first = false;
return 0;
}
|