Rework NetworkStatus to use a non-modal BAboutWindow

This commit is contained in:
John Scipione 2012-11-13 01:12:44 -05:00
parent 5bf91175bc
commit 730a45ee8f
3 changed files with 25 additions and 21 deletions

View File

@ -17,7 +17,7 @@ Application NetworkStatus :
RadioView.cpp
WirelessNetworkMenuItem.cpp
: be $(HAIKU_LOCALE_LIBS) $(icon_libs) $(TARGET_NETWORK_LIBS)
: be libshared.a $(HAIKU_LOCALE_LIBS) $(icon_libs) $(TARGET_NETWORK_LIBS)
libbnetapi.so $(TARGET_LIBSTDC++)
: NetworkStatus.rdef NetworkStatusIcons.rdef
;

View File

@ -23,6 +23,7 @@
#include <sys/sockio.h>
#include <unistd.h>
#include <AboutWindow.h>
#include <Alert.h>
#include <Application.h>
#include <Catalog.h>
@ -138,6 +139,9 @@ NetworkStatusView::NetworkStatusView(BMessage* archive)
NetworkStatusView::~NetworkStatusView()
{
// replicant deleted, destroy the about window
if (fAboutWindow != NULL)
fAboutWindow->Quit();
}
@ -150,6 +154,7 @@ NetworkStatusView::_Init()
}
_UpdateBitmaps();
fAboutWindow = NULL;
}
@ -216,7 +221,7 @@ NetworkStatusView::_Quit()
}
NetworkStatusView *
NetworkStatusView*
NetworkStatusView::Instantiate(BMessage* archive)
{
if (!validate_instantiation(archive, "NetworkStatusView"))
@ -503,26 +508,22 @@ NetworkStatusView::MouseDown(BPoint point)
void
NetworkStatusView::_AboutRequested()
{
BString about = B_TRANSLATE(
"NetworkStatus\n\twritten by %1 and Hugo Santos\n\t%2, Haiku, Inc.\n"
);
about.ReplaceFirst("%1", "Axel Dörfler");
// Append a new developer here
about.ReplaceFirst("%2", "Copyright 2007-2010");
// Append a new year here
BAlert* alert = new BAlert("about", about, B_TRANSLATE("OK"));
alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE);
BTextView *view = alert->TextView();
BFont font;
if (fAboutWindow == NULL) {
const char* authors[] = {
"Axel Dörfler",
"Hugo Santos",
NULL
};
view->SetStylable(true);
view->GetFont(&font);
font.SetSize(18);
font.SetFace(B_BOLD_FACE);
view->SetFontAndColor(0, 13, &font);
alert->Go();
fAboutWindow = new BAboutWindow(
B_TRANSLATE_SYSTEM_NAME("NetworkStatus"), kSignature);
fAboutWindow->AddCopyright(2007, "Haiku, Inc.");
fAboutWindow->AddAuthors(authors);
fAboutWindow->Show();
} else if (fAboutWindow->IsHidden())
fAboutWindow->Show();
else
fAboutWindow->Activate();
}

View File

@ -16,6 +16,8 @@
#include <map>
class BAboutWindow;
class BMessageRunner;
class BNetworkInterface;
@ -64,6 +66,7 @@ class NetworkStatusView : public BView {
std::map<BString, int32>
fInterfaceStatuses;
BAboutWindow* fAboutWindow;
bool fInDeskbar;
BBitmap* fTrayIcons[kStatusCount];
BBitmap* fNotifyIcons[kStatusCount];