1/*
2 * Copyright 2002-2021, Haiku. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 *
5 * Authors:
6 *		Andrew McCall <mccall@digitalparadise.co.uk>
7 *		Mike Berg <mike@berg-net.us>
8 *		Julun <host.haiku@gmx.de>
9 *		Hamish Morrison <hamish@lavabit.com>
10 *		Panagiotis "Ivory" Vasilopoulos <git@n0toose.net>
11 */
12
13
14#include "Time.h"
15
16#include <locale.h>
17#include <stdio.h>
18#include <unistd.h>
19
20#include <AboutWindow.h>
21#include <Alert.h>
22#include <Catalog.h>
23#include <Locale.h>
24#include <LocaleRoster.h>
25
26#include "NetworkTimeView.h"
27#include "TimeMessages.h"
28#include "TimeWindow.h"
29
30
31#undef B_TRANSLATION_CONTEXT
32#define B_TRANSLATION_CONTEXT "Time"
33
34
35const char* kAppSignature = "application/x-vnd.Haiku-Time";
36
37
38TimeApplication::TimeApplication()
39	:
40	BApplication(kAppSignature),
41	fWindow(NULL)
42{
43	fWindow = new TTimeWindow();
44}
45
46
47TimeApplication::~TimeApplication()
48{
49}
50
51
52void
53TimeApplication::ReadyToRun()
54{
55	fWindow->Show();
56}
57
58
59void
60TimeApplication::AboutRequested()
61{
62	BAboutWindow* window = new BAboutWindow(B_TRANSLATE_SYSTEM_NAME(
63		"Time & Date"), kAppSignature);
64
65	const char* authors[] = {
66		"Mike Berg",
67		"Andrew Edward McCall",
68		"Hamish Morrison",
69		"Philippe Saint-Pierre",
70		"Panagiotis \"Ivory\" Vasilopoulos",
71		"Julun",
72		NULL
73	};
74
75	window->AddCopyright(2021, "Haiku, Inc.");
76	window->AddAuthors(authors);
77
78	window->Show();
79}
80
81
82void
83TimeApplication::MessageReceived(BMessage* message)
84{
85	switch (message->what) {
86		case kSelectClockTab:
87		case kShowHideTime:
88		case B_LOCALE_CHANGED:
89			fWindow->PostMessage(message);
90			break;
91
92		default:
93			BApplication::MessageReceived(message);
94			break;
95	}
96}
97
98
99int
100main(int argc, char** argv)
101{
102	if (argc > 1) {
103		if (strcmp(argv[1], "--update") != 0)
104			return 0;
105
106		Settings settings;
107		const char* errorString = NULL;
108		int32 errorCode = 0;
109		if (update_time(settings, &errorString, &errorCode) == B_OK) {
110			printf("Synchronization successful\n");
111		} else if (errorCode != 0) {
112			printf("The following error occured "
113					"while synchronizing:\n%s: %s\n",
114				errorString, strerror(errorCode));
115		} else {
116			printf("The following error occured while synchronizing:\n%s\n",
117				errorString);
118		}
119	} else {
120		setlocale(LC_ALL, "");
121
122		TimeApplication app;
123		setuid(0);
124		app.Run();
125	}
126
127	return 0;
128}
129
130