main.cpp 5.46 KB
Newer Older
1 2
/***************************************************************************
    begin                : Mon Feb  4 23:40:41 EST 2002
3
    copyright            : (C) 2002 - 2007 by Scott Wheeler
4
    email                : wheeler@kde.org
5
***************************************************************************/
6 7 8 9 10 11 12 13 14 15

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

Scott Wheeler's avatar
Scott Wheeler committed
16
#include <kuniqueapplication.h>
17 18
#include <kcmdlineargs.h>
#include <kaboutdata.h>
19 20
#include <kconfigbase.h>
#include <kconfig.h>
21 22
#include <klocale.h>
#include <kglobal.h>
23
#include <kconfiggroup.h>
24 25 26

#include "juk.h"

27 28
static const char description[] = I18N_NOOP("Jukebox and music manager for KDE");
static const char scott[]       = I18N_NOOP("Author, chief dork and keeper of the funk");
29
static const char michael[]     = I18N_NOOP("Assistant super-hero, fixer of many things");
30 31 32
static const char daniel[]      = I18N_NOOP("System tray docking, \"inline\" tag editing,\nbug fixes, evangelism, moral support");
static const char tim[]         = I18N_NOOP("GStreamer port");
static const char stefan[]      = I18N_NOOP("Global keybindings support");
33
static const char stephen[]     = I18N_NOOP("Track announcement popups");
34 35
static const char frerich[]     = I18N_NOOP("Automagic track data guessing, bugfixes");
static const char zack[]        = I18N_NOOP("More automagical things, now using MusicBrainz");
36
static const char adam[]        = I18N_NOOP("Co-conspirator in MusicBrainz wizardry");
37
static const char matthias[]    = I18N_NOOP("Friendly, neighborhood aRts guru");
Malcolm Hunter's avatar
Malcolm Hunter committed
38
static const char maks[]        = I18N_NOOP("Making JuK friendlier to people with\nterabytes of music");
39
static const char antonio[]     = I18N_NOOP("DCOP interface");
40
static const char allan[]       = I18N_NOOP("FLAC and MPC support");
Scott Wheeler's avatar
Scott Wheeler committed
41
static const char nathan[]      = I18N_NOOP("Album cover manager");
42
static const char pascal[]      = I18N_NOOP("Gimper of splash screen");
43
static const char laurent[]     = I18N_NOOP("Porting to KDE 4 when no one else was around");
44

Michael Pyne's avatar
Michael Pyne committed
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
/**
 * Loading from the cache can take forever, so subclass KUniqueApplication to use a quicker
 * newInstance() function.
 */
class JuKApplication : public KUniqueApplication
{
    public:
    JuKApplication() : KUniqueApplication(), m_juk(0)
    {
    }

    virtual ~JuKApplication()
    {
        delete m_juk;
        m_juk = 0;
    }

    // Reimplementation
    virtual int newInstance()
    {
        m_juk = new JuK;

        KConfigGroup config(KGlobal::config(), "Settings");
        if(!config.readEntry("StartDocked", false))
            m_juk->show();

        // Some single shots will allow startup to continue at this point so we can
        // return.
        return 0;
    }

    private:
    JuK *m_juk;
};

80 81
int main(int argc, char *argv[])
{
82
    KAboutData aboutData("juk", 0, ki18n("JuK"),
83
                         "3.2", ki18n(description), KAboutData::License_GPL,
84
                         ki18n("© 2002 - 2008, Scott Wheeler"), KLocalizedString(),
85
                         "http://developer.kde.org/~wheeler/juk.html");
Scott Wheeler's avatar
Scott Wheeler committed
86

87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
    aboutData.addAuthor(ki18n("Scott Wheeler"), ki18n(scott), "wheeler@kde.org");
    aboutData.addAuthor(ki18n("Michael Pyne"), ki18n(michael), "michael.pyne@kdemail.net");
    aboutData.addCredit(ki18n("Daniel Molkentin"), ki18n(daniel), "molkentin@kde.org");
    aboutData.addCredit(ki18n("Tim Jansen"), ki18n(tim), "tim@tjansen.de");
    aboutData.addCredit(ki18n("Stefan Asserhäll"), ki18n(stefan), "stefan.asserhall@telia.com");
    aboutData.addCredit(ki18n("Stephen Douglas"), ki18n(stephen), "stephen_douglas@yahoo.com");
    aboutData.addCredit(ki18n("Frerich Raabe"), ki18n(frerich), "raabe@kde.org");
    aboutData.addCredit(ki18n("Zack Rusin"), ki18n(zack), "zack@kde.org");
    aboutData.addCredit(ki18n("Adam Treat"), ki18n(adam), "manyoso@yahoo.com");
    aboutData.addCredit(ki18n("Matthias Kretz"), ki18n(matthias), "kretz@kde.org");
    aboutData.addCredit(ki18n("Maks Orlovich"), ki18n(maks), "maksim@kde.org");
    aboutData.addCredit(ki18n("Antonio Larrosa Jimenez"), ki18n(antonio), "larrosa@kde.org");
    aboutData.addCredit(ki18n("Allan Sandfeld Jensen"), ki18n(allan), "kde@carewolf.com");
    aboutData.addCredit(ki18n("Nathan Toone"), ki18n(nathan), "nathan@toonetown.com");
    aboutData.addCredit(ki18n("Pascal Klein"), ki18n(pascal), "4pascal@tpg.com.au");
102
    aboutData.addCredit(ki18n("Laurent Montel"), ki18n(laurent), "montel@kde.org");
103 104

    KCmdLineArgs::init(argc, argv, &aboutData);
105 106 107

    KCmdLineOptions options;
    options.add("+[file(s)]", ki18n("File(s) to open"));
108
    KCmdLineArgs::addCmdLineOptions(options);
109

110
    KUniqueApplication::addCmdLineOptions();
111

Michael Pyne's avatar
Michael Pyne committed
112
    JuKApplication a;
113

114 115 116 117 118
    // If this flag gets set then JuK will quit if you click the cover on the track
    // announcement popup when JuK is only in the system tray (the systray has no widget).

    a.setQuitOnLastWindowClosed(false);

Michael Pyne's avatar
Michael Pyne committed
119
    // Create the main window and such
120

Michael Pyne's avatar
Michael Pyne committed
121
    a.start();
122

123
    return a.exec();
124
}
125

126
// vim: set et sw=4 tw=0 sta fileencoding=utf8: