Clean and order documentation in source files. Source ready to beta 2 release
[mdictionary] / src / mdictionary / gui / main.cpp
1 /*******************************************************************************
2
3     This file is part of mDictionary.
4
5     mDictionary is free software: you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9
10     mDictionary is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with mDictionary.  If not, see <http://www.gnu.org/licenses/>.
17
18     Copyright 2010 Comarch S.A.
19
20 *******************************************************************************/
21
22 /*! \file main.cpp
23     \brief mDictionary's main file
24     \author Mateusz Półrola <mateusz.polrola@comarch.pl>
25 */
26
27 #include <QtGui/QApplication>
28 #include "MainWindow.h"
29 #include "../backbone/backbone.h"
30 #include "../../include/translation.h"
31 #include "../../include/Notify.h"
32 #include "DBusAdapter.h"
33 #include <QDebug>
34 #include <QDBusConnection>
35
36
37
38 QStringList parseParameters(int argc, char *argv[]) {
39     bool wordListStarted = false;
40     QStringList result;
41     for(int i=1; i<argc; i++) {
42         QString argument(argv[i]);
43         if(!wordListStarted) {
44             if(argument == "-s" || argument == "--search") {
45                 wordListStarted = true;
46             }
47         }
48         else {
49             if(!argument.startsWith("-") &&
50                !argument.startsWith("--")) {
51                 result << argument;
52             }
53         }
54     }
55
56     return result;
57 }
58
59 void retranslate() {
60     QString locale = QLocale::system().name();
61
62     QTranslator *translator = new QTranslator;
63     QTranslator *qtTranslator = new QTranslator;
64
65     qtTranslator->load("qt_" + locale,
66     QLibraryInfo::location(QLibraryInfo::TranslationsPath));
67     QCoreApplication::installTranslator(qtTranslator);
68
69     if(!translator->load(":/translations/" + locale)) {
70         translator->load(":/translations/en_US");
71
72     }
73
74     QCoreApplication::installTranslator(translator);
75 }
76
77 int main(int argc, char *argv[]) {
78     QApplication a(argc, argv);
79     QApplication::setOrganizationName("Comarch S.A.");
80     QApplication::setOrganizationDomain("comarch.com");
81     QApplication::setApplicationName("mDictionary");
82
83     QStringList search = parseParameters(argc, argv);
84
85     qRegisterMetaType<Translation*>("Translation*");
86     qRegisterMetaType<QList<Translation*> >("QList<Translation*>");
87     qRegisterMetaType<Notify>("Notify");
88     qRegisterMetaType<Notify::NotifyType>("Notify::NotifyType");
89
90     retranslate();
91
92     Backbone* backbone = new Backbone();
93     MainWindow* mainWindow = new MainWindow(backbone);
94
95     DBusAdapter* adapter = new DBusAdapter(mainWindow);
96
97     QDBusConnection::sessionBus().registerObject("/mainWindow",
98                                                  mainWindow);
99     QDBusConnection::sessionBus().registerService("com.comarch.mdictionary");
100
101     mainWindow->show();
102
103     if(search.count() > 0) {
104         mainWindow->setExactSearch(true);
105         mainWindow->searchExact(search[0]);
106     }
107
108     int res = a.exec();
109
110     QDBusConnection::sessionBus().unregisterObject("/mainWindow");
111     QDBusConnection::sessionBus().unregisterService("com.comarch.mdictionary");
112
113     delete adapter;
114     delete mainWindow;
115     delete backbone;
116
117     return res;
118 }