main.cpp 6.02 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
/**
 * Copyright (C) 2002-2007 Scott Wheeler <wheeler@kde.org>
 *
 * 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.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program.  If not, see <http://www.gnu.org/licenses/>.
 */
16

Michael Pyne's avatar
Michael Pyne committed
17 18 19 20 21 22 23
#include <KAboutData>
#include <KConfigBase>
#include <KConfig>
#include <KConfigGroup>
#include <KNotification>
#include <KSharedConfig>
#include <KLocalizedString>
24

Luigi Toscano's avatar
Luigi Toscano committed
25 26
#include <QCommandLineParser>
#include <QCommandLineOption>
Michael Pyne's avatar
Michael Pyne committed
27
#include <QApplication>
Luigi Toscano's avatar
Luigi Toscano committed
28

29 30
#include "juk.h"

31
static const char description[] = I18N_NOOP("Jukebox and music manager by KDE");
32
static const char scott[]       = I18N_NOOP("Author, chief dork and keeper of the funk");
33
static const char michael[]     = I18N_NOOP("Assistant super-hero, fixer of many things");
34
static const char georg[]       = I18N_NOOP("More KDE Platform 4 porting efforts");
35 36 37
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");
38
static const char stephen[]     = I18N_NOOP("Track announcement popups");
39 40
static const char frerich[]     = I18N_NOOP("Automagic track data guessing, bugfixes");
static const char zack[]        = I18N_NOOP("More automagical things, now using MusicBrainz");
41
static const char adam[]        = I18N_NOOP("Co-conspirator in MusicBrainz wizardry");
42
static const char matthias[]    = I18N_NOOP("Friendly, neighborhood aRts guru");
43
static const char maks[]        = I18N_NOOP("Making JuK friendlier to people with terabytes of music");
44
static const char antonio[]     = I18N_NOOP("DCOP interface");
45
static const char allan[]       = I18N_NOOP("FLAC and MPC support");
Scott Wheeler's avatar
Scott Wheeler committed
46
static const char nathan[]      = I18N_NOOP("Album cover manager");
47
static const char pascal[]      = I18N_NOOP("Gimper of splash screen");
48
static const char laurent[]     = I18N_NOOP("Porting to KDE 4 when no one else was around");
49
static const char giorgos[]     = I18N_NOOP("Badly-needed tag editor bugfixes.");
50
static const char sandsmark[]   = I18N_NOOP("Last.fm scrobbling support, lyrics, prepping for KDE Frameworks.");
Michael Pyne's avatar
Michael Pyne committed
51
static const char sho[]         = I18N_NOOP("MPRIS2 Interface implementation.");
52

53 54
int main(int argc, char *argv[])
{
55
    QApplication a(argc, argv);
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
    KLocalizedString::setApplicationDomain("juk");

    KAboutData aboutData(QStringLiteral("juk"), i18n("JuK"),
                         QStringLiteral("3.14"), i18n(description), KAboutLicense::GPL,
                         i18n("© 2002–2016, Scott Wheeler, Michael Pyne, and others"),
                         QStringLiteral(""),
                         QStringLiteral("http://www.kde.org/applications/multimedia/juk/"));

    aboutData.addAuthor(i18n("Scott Wheeler"), i18n(scott), "wheeler@kde.org");
    aboutData.addAuthor(i18n("Michael Pyne"), i18n(michael), "mpyne@kde.org");
    aboutData.addCredit(i18n("Γιώργος Κυλάφας (Giorgos Kylafas)"), i18n(giorgos), "gekylafas@gmail.com");
    aboutData.addCredit(i18n("Daniel Molkentin"), i18n(daniel), "molkentin@kde.org");
    aboutData.addCredit(i18n("Tim Jansen"), i18n(tim), "tim@tjansen.de");
    aboutData.addCredit(i18n("Stefan Asserhäll"), i18n(stefan), "stefan.asserhall@telia.com");
    aboutData.addCredit(i18n("Stephen Douglas"), i18n(stephen), "stephen_douglas@yahoo.com");
    aboutData.addCredit(i18n("Frerich Raabe"), i18n(frerich), "raabe@kde.org");
    aboutData.addCredit(i18n("Zack Rusin"), i18n(zack), "zack@kde.org");
    aboutData.addCredit(i18n("Adam Treat"), i18n(adam), "manyoso@yahoo.com");
    aboutData.addCredit(i18n("Matthias Kretz"), i18n(matthias), "kretz@kde.org");
    aboutData.addCredit(i18n("Maks Orlovich"), i18n(maks), "maksim@kde.org");
    aboutData.addCredit(i18n("Antonio Larrosa Jimenez"), i18n(antonio), "larrosa@kde.org");
    aboutData.addCredit(i18n("Allan Sandfeld Jensen"), i18n(allan), "kde@carewolf.com");
    aboutData.addCredit(i18n("Nathan Toone"), i18n(nathan), "nathan@toonetown.com");
    aboutData.addCredit(i18n("Pascal Klein"), i18n(pascal), "4pascal@tpg.com.au");
    aboutData.addCredit(i18n("Laurent Montel"), i18n(laurent), "montel@kde.org");
    aboutData.addCredit(i18n("Georg Grabler"), i18n(georg), "georg@grabler.net");
    aboutData.addCredit(i18n("Martin Sandsmark"), i18n(sandsmark), "martin.sandsmark@kde.org");
    aboutData.addCredit(i18n("Eike Hein"), i18n(sho), "hein@kde.org");
    KAboutData::setApplicationData(aboutData);

Luigi Toscano's avatar
Luigi Toscano committed
86 87 88 89 90 91 92
    QCommandLineParser parser;
    aboutData.setupCommandLine(&parser);
    parser.addVersionOption();
    parser.addHelpOption();
    parser.addPositionalArgument(QLatin1String("[file(s)]"), i18n("File(s) to open"));
    parser.process(a);
    aboutData.processCommandLine(&parser);
93

94 95 96
    // 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).

97
    a.setQuitOnLastWindowClosed(false);
98

Michael Pyne's avatar
Michael Pyne committed
99
    // Create the main window and such
100

Luigi Toscano's avatar
Luigi Toscano committed
101
    JuK *juk = new JuK(parser.positionalArguments());
102

103
    if(a.isSessionRestored() && KMainWindow::canBeRestored(1))
104 105
        juk->restore(1, false /* don't show */);

106
    KConfigGroup config(KSharedConfig::openConfig(), "Settings");
107
    if(!config.readEntry("StartDocked", false)) {
108
        juk->show();
109
    }
110
    else if(!a.isSessionRestored()) {
111
        QString message = i18n("JuK running in docked mode\nUse context menu in system tray to restore.");
112
        KNotification::event("dock_mode",i18n("JuK Docked"), message);
113
    }
114

115
    return a.exec();
116
}
117

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