summaryrefslogtreecommitdiffstats
path: root/src/main.cpp
blob: 7a7d0c03ba9e37713f4a5318c641bb3e7f0e46ec (plain)
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
/***************************************************************************
 *   Copyright (C) 2003 by Sébastien Laoût                                 *
 *   [email protected]                                                    *
 *                                                                         *
 *   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, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.             *
 ***************************************************************************/

#include <stdlib.h>

#include <kcmdlineargs.h>
#include <kaboutdata.h>
#include <kiconloader.h>
#include <qpixmap.h>
#include <klocale.h>
#include <kglobalaccel.h>
#include <kmessagebox.h>
#include <kstandarddirs.h>
#include <kdebug.h>
#include <qfile.h>
#include <qfileinfo.h>

#include <kconfig.h> // TMP IN ALPHA 1

#include "application.h"
#include "backgroundmanager.h"
#include "mainwindow.h"
#include "settings.h"
#include "global.h"
#include "debugwindow.h"
#include "notedrag.h"
#include "basket.h"
#include "aboutdata.h"
#include "basket_options.h"
#include "backup.h"

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

/* Thanks to JuK for this Application class */
/*#if KDE_IS_VERSION( 3, 1, 90 )
typedef KUniqueApplication Application; // KDE 3.2 and later already re-show the main window
#else
class Application : public KUniqueApplication
{
  public:
	Application() : KUniqueApplication(true, true, false) {}
	virtual ~Application() {}
	virtual int newInstance() {
		if (win)
			win->setActive(true);
		return KUniqueApplication::newInstance();
	}
};
#endif
*/

int main(int argc, char *argv[])
{
	// KCmdLineArgs::init will modify argv[0] so we remember it:
	const char *argv0 = (argc >= 1 ? argv[0] : "");

	KCmdLineArgs::init(argc, argv, Global::about());
	KCmdLineArgs::addCmdLineOptions(basket_options);

	KUniqueApplication::addCmdLineOptions();
	//KUniqueApplication app;
	Application app;

	Backup::figureOutBinaryPath(argv0, app);

	/* Main Window */
	MainWindow* win = new MainWindow();
	Global::bnpView->handleCommandLine();
	app.setMainWidget(win);
//	if (!(Settings::useSystray() && KCmdLineArgs::parsedArgs() && KCmdLineArgs::parsedArgs()->isSet("start-hidden")))
//		win->show();

	if (Settings::useSystray()) {
		// The user wanted to not show the window (but it is already hidden by default, so we do nothing):
		if (KCmdLineArgs::parsedArgs() && KCmdLineArgs::parsedArgs()->isSet("start-hidden"))
			;
		// When the application is restored by KDE session, restore its state:
		else if (app.isRestored())
			win->setShown(!Settings::startDocked());
		// Else, the application has been launched explicitely by the user (KMenu, keyboard shortcut...), so he need it, we show it:
		else
			win->show();
	} else
		// No system tray icon: always show:
		win->show();

	// Self-test of the presence of basketui.rc (the only requiered file after basket executable)
	if (Global::bnpView->popupMenu("basket") == 0L)
		// An error message will be show by BNPView::popupMenu()
		return 1;

	/* Go */
	int result = app.exec();
	//return result;
	exit(result); // Do not clean up memory to not crash while deleting the KApplication, or do not hang up on KDE exit
}