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 RadioView.cpp
WirelessNetworkMenuItem.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++) libbnetapi.so $(TARGET_LIBSTDC++)
: NetworkStatus.rdef NetworkStatusIcons.rdef : NetworkStatus.rdef NetworkStatusIcons.rdef
; ;

View File

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

View File

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