* Got rid of the useless fTrackerMessenger field.

* Ordered the methods in declaration order. Ordered BWindow hooks in "run"
  order.
* Renamed private methods to have the '_' prefix.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39286 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Axel Dörfler
2010-11-03 21:26:08 +00:00
parent 36272f0d4c
commit 745226bd2f
2 changed files with 99 additions and 105 deletions
+86 -92
View File
@@ -48,65 +48,6 @@ ShowImageApp::~ShowImageApp()
} }
void
ShowImageApp::AboutRequested()
{
const char* authors[] = {
"Fernando F. Oliveira",
"Michael Wilber",
"Michael Pfeiffer",
"Ryan Leavengood",
NULL
};
BAboutWindow about(B_TRANSLATE("ShowImage"), 2003, authors);
about.Show();
}
void
ShowImageApp::ReadyToRun()
{
if (CountWindows() == WINDOWS_TO_IGNORE)
fOpenPanel->Show();
else {
// If image windows are already open
// (paths supplied on the command line)
// start checking the number of open windows
StartPulse();
}
be_clipboard->StartWatching(be_app_messenger);
// tell the clipboard to notify this app when its contents change
}
void
ShowImageApp::StartPulse()
{
if (!fPulseStarted) {
// Tell the app to begin checking
// for the number of open windows
fPulseStarted = true;
SetPulseRate(250000);
// Set pulse to every 1/4 second
}
}
void
ShowImageApp::Pulse()
{
// Bug: The BFilePanel is automatically closed if the volume that
// is displayed is unmounted.
if (!IsLaunching() && CountWindows() <= WINDOWS_TO_IGNORE) {
// If the application is not launching and
// all windows are closed except for the file open panel,
// quit the application
PostMessage(B_QUIT_REQUESTED);
}
}
void void
ShowImageApp::ArgvReceived(int32 argc, char **argv) ShowImageApp::ArgvReceived(int32 argc, char **argv)
{ {
@@ -143,6 +84,23 @@ ShowImageApp::ArgvReceived(int32 argc, char **argv)
} }
void
ShowImageApp::ReadyToRun()
{
if (CountWindows() == WINDOWS_TO_IGNORE)
fOpenPanel->Show();
else {
// If image windows are already open
// (paths supplied on the command line)
// start checking the number of open windows
_StartPulse();
}
be_clipboard->StartWatching(be_app_messenger);
// tell the clipboard to notify this app when its contents change
}
void void
ShowImageApp::MessageReceived(BMessage* message) ShowImageApp::MessageReceived(BMessage* message)
{ {
@@ -157,11 +115,11 @@ ShowImageApp::MessageReceived(BMessage* message)
case B_CANCEL: case B_CANCEL:
// File open panel was closed, // File open panel was closed,
// start checking count of open windows // start checking count of open windows
StartPulse(); _StartPulse();
break; break;
case B_CLIPBOARD_CHANGED: case B_CLIPBOARD_CHANGED:
CheckClipboard(); _CheckClipboard();
break; break;
default: default:
@@ -172,35 +130,84 @@ ShowImageApp::MessageReceived(BMessage* message)
void void
ShowImageApp::RefsReceived(BMessage* message) ShowImageApp::AboutRequested()
{ {
// If a tracker window opened me, get a messenger from it. const char* authors[] = {
if (message->HasMessenger("TrackerViewToken")) "Fernando F. Oliveira",
message->FindMessenger("TrackerViewToken", &fTrackerMessenger); "Michael Wilber",
"Michael Pfeiffer",
"Ryan Leavengood",
NULL
};
BAboutWindow about(B_TRANSLATE("ShowImage"), 2003, authors);
about.Show();
}
uint32 type;
int32 count;
status_t ret = message->GetInfo("refs", &type, &count);
if (ret != B_OK || type != B_REF_TYPE)
return;
entry_ref ref; void
for (int32 i = 0; i < count; i++) { ShowImageApp::Pulse()
if (message->FindRef("refs", i, &ref) == B_OK) {
Open(&ref); // Bug: The BFilePanel is automatically closed if the volume that
// is displayed is unmounted.
if (!IsLaunching() && CountWindows() <= WINDOWS_TO_IGNORE) {
// If the application is not launching and
// all windows are closed except for the file open panel,
// quit the application
PostMessage(B_QUIT_REQUESTED);
} }
} }
void void
ShowImageApp::Open(const entry_ref* ref) ShowImageApp::RefsReceived(BMessage* message)
{ {
new ShowImageWindow(ref, fTrackerMessenger); // If a tracker window opened me, get a messenger from it.
BMessenger trackerMessenger;
if (message->HasMessenger("TrackerViewToken"))
message->FindMessenger("TrackerViewToken", &trackerMessenger);
entry_ref ref;
for (int32 i = 0; message->FindRef("refs", i, &ref) == B_OK; i++) {
_Open(&ref, trackerMessenger);
}
}
bool
ShowImageApp::QuitRequested()
{
// Give the windows a chance to prompt the user if there are changes
bool result = BApplication::QuitRequested();
if (result)
be_clipboard->StopWatching(be_app_messenger);
// tell clipboard we don't want anymore notification
return result;
} }
void void
ShowImageApp::BroadcastToWindows(BMessage* message) ShowImageApp::_StartPulse()
{
if (!fPulseStarted) {
// Tell the app to begin checking
// for the number of open windows
fPulseStarted = true;
SetPulseRate(250000);
// Set pulse to every 1/4 second
}
}
void
ShowImageApp::_Open(const entry_ref* ref, BMessenger& trackerMessenger)
{
new ShowImageWindow(ref, trackerMessenger);
}
void
ShowImageApp::_BroadcastToWindows(BMessage* message)
{ {
const int32 count = CountWindows(); const int32 count = CountWindows();
for (int32 i = 0; i < count; i ++) { for (int32 i = 0; i < count; i ++) {
@@ -212,7 +219,7 @@ ShowImageApp::BroadcastToWindows(BMessage* message)
void void
ShowImageApp::CheckClipboard() ShowImageApp::_CheckClipboard()
{ {
// Determines if the contents of the clipboard contain // Determines if the contents of the clipboard contain
// data that is useful to this application. // data that is useful to this application.
@@ -233,20 +240,7 @@ ShowImageApp::CheckClipboard()
BMessage msg(MSG_CLIPBOARD_CHANGED); BMessage msg(MSG_CLIPBOARD_CHANGED);
msg.AddBool("data_available", dataAvailable); msg.AddBool("data_available", dataAvailable);
BroadcastToWindows(&msg); _BroadcastToWindows(&msg);
}
bool
ShowImageApp::QuitRequested()
{
// Give the windows a chance to prompt the user if there are changes
bool result = BApplication::QuitRequested();
if (result)
be_clipboard->StopWatching(be_app_messenger);
// tell clipboard we don't want anymore notification
return result;
} }
+13 -13
View File
@@ -1,5 +1,5 @@
/* /*
* Copyright 2003-2009, Haiku, Inc. All Rights Reserved. * Copyright 2003-2010, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License. * Distributed under the terms of the MIT License.
* *
* Authors: * Authors:
@@ -23,33 +23,33 @@ public:
ShowImageApp(); ShowImageApp();
virtual ~ShowImageApp(); virtual ~ShowImageApp();
virtual void AboutRequested(); virtual void ArgvReceived(int32 argc, char** argv);
virtual void ArgvReceived(int32 argc, char **argv);
virtual void MessageReceived(BMessage *message);
virtual void ReadyToRun(); virtual void ReadyToRun();
virtual void MessageReceived(BMessage* message);
virtual void AboutRequested();
virtual void Pulse(); virtual void Pulse();
virtual void RefsReceived(BMessage *message); virtual void RefsReceived(BMessage* message);
virtual bool QuitRequested(); virtual bool QuitRequested();
ShowImageSettings* Settings() { return &fSettings; } ShowImageSettings* Settings() { return &fSettings; }
private: private:
void StartPulse(); void _StartPulse();
void Open(const entry_ref *ref); void _Open(const entry_ref* ref,
void BroadcastToWindows(BMessage *message); BMessenger& trackerMessenger);
void CheckClipboard(); void _BroadcastToWindows(BMessage* message);
void _CheckClipboard();
BMessenger fTrackerMessenger; private:
BFilePanel *fOpenPanel; BFilePanel* fOpenPanel;
bool fPulseStarted; bool fPulseStarted;
ShowImageSettings fSettings; ShowImageSettings fSettings;
}; };
extern const char *kApplicationSignature; extern const char* kApplicationSignature;
#define my_app dynamic_cast<ShowImageApp*>(be_app) #define my_app dynamic_cast<ShowImageApp*>(be_app)
#endif // SHOW_IMAGE_APP_H #endif // SHOW_IMAGE_APP_H