* Copyright 2005, Axel DΓΆrfler, axeld@pinc-software.de. All rights reserved.
* Copyright 2010, Adrien Destugues <pulkomandy@pulkomandy.ath.cx>. All rightts reserved.
* Distributed under the terms of the MIT License.
*/
#include <AboutWindow.h>
#include <Alert.h>
#include <Application.h>
#include <Catalog.h>
#include <Locale.h>
#include <Roster.h>
#include <TextView.h>
#include "LocalePreflet.h"
#include "LocaleWindow.h"
#undef B_TRANSLATION_CONTEXT
#define B_TRANSLATION_CONTEXT "Locale Preflet"
const char* kAppName = B_TRANSLATE("Locale");
const char* kSignature = "application/x-vnd.Haiku-Locale";
class LocalePreflet : public BApplication {
public:
LocalePreflet();
virtual ~LocalePreflet();
virtual void MessageReceived(BMessage* message);
private:
status_t _RestartApp(const char* signature) const;
LocaleWindow* fLocaleWindow;
};
LocalePreflet::LocalePreflet()
:
BApplication(kSignature),
fLocaleWindow(new LocaleWindow())
{
fLocaleWindow->Show();
}
LocalePreflet::~LocalePreflet()
{
}
void
LocalePreflet::MessageReceived(BMessage* message)
{
switch (message->what) {
case B_LOCALE_CHANGED:
BLocaleRoster::Default()->Refresh();
fLocaleWindow->PostMessage(message);
break;
case kMsgRestartTrackerAndDeskbar:
if (message->FindInt32("which") == 1) {
_RestartApp("application/x-vnd.Be-TRAK");
_RestartApp("application/x-vnd.Be-TSKB");
}
break;
case B_ABOUT_REQUESTED:
{
BAboutWindow* window;
const char* authors[] = {
"Axel DΓΆrfler",
"Adrien Destugues",
"Oliver Tappe",
NULL
};
window = new BAboutWindow(kAppName, kSignature);
window->AddCopyright(2005, "Haiku, Inc.");
window->AddAuthors(authors);
window->Show();
break;
}
default:
BApplication::MessageReceived(message);
break;
}
}
status_t
LocalePreflet::_RestartApp(const char* signature) const
{
app_info info;
status_t status = be_roster->GetAppInfo(signature, &info);
if (status != B_OK)
return status;
BMessenger application(signature);
status = application.SendMessage(B_QUIT_REQUESTED);
if (status != B_OK)
return status;
status_t exit;
wait_for_thread(info.thread, &exit);
return be_roster->Launch(signature);
}
int
main(int argc, char** argv)
{
LocalePreflet app;
app.Run();
return 0;
}