From 730a45ee8f314649f7989e1014287b4766875fe1 Mon Sep 17 00:00:00 2001 From: John Scipione Date: Tue, 13 Nov 2012 01:12:44 -0500 Subject: [PATCH] Rework NetworkStatus to use a non-modal BAboutWindow --- src/apps/networkstatus/Jamfile | 2 +- src/apps/networkstatus/NetworkStatusView.cpp | 41 ++++++++++---------- src/apps/networkstatus/NetworkStatusView.h | 3 ++ 3 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/apps/networkstatus/Jamfile b/src/apps/networkstatus/Jamfile index 9cc32fba80..c05d505124 100644 --- a/src/apps/networkstatus/Jamfile +++ b/src/apps/networkstatus/Jamfile @@ -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 ; diff --git a/src/apps/networkstatus/NetworkStatusView.cpp b/src/apps/networkstatus/NetworkStatusView.cpp index 626cb60757..73a55f24c5 100644 --- a/src/apps/networkstatus/NetworkStatusView.cpp +++ b/src/apps/networkstatus/NetworkStatusView.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include #include @@ -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(); } diff --git a/src/apps/networkstatus/NetworkStatusView.h b/src/apps/networkstatus/NetworkStatusView.h index 8508efe6cc..53e6b3ab37 100644 --- a/src/apps/networkstatus/NetworkStatusView.h +++ b/src/apps/networkstatus/NetworkStatusView.h @@ -16,6 +16,8 @@ #include + +class BAboutWindow; class BMessageRunner; class BNetworkInterface; @@ -64,6 +66,7 @@ class NetworkStatusView : public BView { std::map fInterfaceStatuses; + BAboutWindow* fAboutWindow; bool fInDeskbar; BBitmap* fTrayIcons[kStatusCount]; BBitmap* fNotifyIcons[kStatusCount];