From cbd4bc95732d8effec986f41fd877beec55cf19b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 17 Apr 2008 19:46:52 +0000 Subject: [PATCH] Made ActivityMonitor buildable under BeOS (at least BONE). This is only temporary, to help test adding data sources, so the gross #ifdef __HAIKU__ are intentional to keep BeOS-only code (without layout support) trackable. It is not fully functional but sufficient for testing and will go away later. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25009 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/activitymonitor/ActivityView.cpp | 6 +++ src/apps/activitymonitor/ActivityView.h | 2 + src/apps/activitymonitor/ActivityWindow.cpp | 48 +++++++++++++++++++++ src/apps/activitymonitor/ActivityWindow.h | 2 + src/apps/activitymonitor/Jamfile | 5 ++- src/apps/activitymonitor/SystemInfo.cpp | 7 +++ 6 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/apps/activitymonitor/ActivityView.cpp b/src/apps/activitymonitor/ActivityView.cpp index 140f539baf..73da319667 100644 --- a/src/apps/activitymonitor/ActivityView.cpp +++ b/src/apps/activitymonitor/ActivityView.cpp @@ -140,7 +140,11 @@ ActivityView::ActivityView(BRect frame, const char* name, ActivityView::ActivityView(const char* name, const BMessage* settings) +#ifdef __HAIKU__ : BView(name, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_FRAME_EVENTS) +#else + : BView(BRect(0,0,300,200), name, B_FOLLOW_NONE, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE | B_FRAME_EVENTS) +#endif { _Init(settings); @@ -359,6 +363,7 @@ ActivityView::DetachedFromWindow() } +#ifdef __HAIKU__ BSize ActivityView::MinSize() { @@ -368,6 +373,7 @@ ActivityView::MinSize() return size; } +#endif void diff --git a/src/apps/activitymonitor/ActivityView.h b/src/apps/activitymonitor/ActivityView.h index cb0bcb62eb..5f4b11a877 100644 --- a/src/apps/activitymonitor/ActivityView.h +++ b/src/apps/activitymonitor/ActivityView.h @@ -64,7 +64,9 @@ protected: virtual void AttachedToWindow(); virtual void DetachedFromWindow(); +#ifdef __HAIKU__ virtual BSize MinSize(); +#endif virtual void FrameResized(float width, float height); virtual void MouseDown(BPoint where); diff --git a/src/apps/activitymonitor/ActivityWindow.cpp b/src/apps/activitymonitor/ActivityWindow.cpp index 7c12e4c8d6..4814666b7f 100644 --- a/src/apps/activitymonitor/ActivityWindow.cpp +++ b/src/apps/activitymonitor/ActivityWindow.cpp @@ -11,7 +11,9 @@ #include #include #include +#ifdef __HAIKU__ #include +#endif #include #include #include @@ -39,6 +41,7 @@ ActivityWindow::ActivityWindow() ResizeTo(frame.Width(), frame.Height()); } +#ifdef __HAIKU__ BGroupLayout* layout = new BGroupLayout(B_VERTICAL); SetLayout(layout); @@ -66,6 +69,41 @@ ActivityWindow::ActivityWindow() if (count == 0) fLayout->AddView(new ActivityView("ActivityMonitor", NULL)); +#else + BView *layout = new BView(Bounds(), "topmost", B_FOLLOW_NONE, 0); + AddChild(layout); + + // create GUI + BRect mbRect(Bounds()); + mbRect.bottom = 10; + BMenuBar* menuBar = new BMenuBar(mbRect, "menu"); + layout->AddChild(menuBar); + + BRect topRect(Bounds()); + topRect.top = menuBar->Bounds().bottom + 1; + + BView* top = new BView(topRect, "top", B_FOLLOW_ALL, 0); + top->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR)); + layout->AddChild(top); + + BMessage viewState; + int32 count = 0; + ActivityView *aview; + BRect rect; + for (int32 i = 0; settings.FindMessage("activity view", i, &viewState) + == B_OK; i++) { + aview = new ActivityView("ActivityMonitor", &viewState); + if (!rect.IsValid()) + rect = aview->Bounds(); + else + rect.OffsetBySelf(0.0, aview->Bounds().Height()); + top->AddChild(aview); + count++; + } + if (count == 0) + top->AddChild(new ActivityView("ActivityMonitor", NULL)); + +#endif // add menu // "File" menu @@ -134,7 +172,11 @@ ActivityWindow::_SaveSettings() if (status != B_OK) return status; +#ifdef __HAIKU__ BView* top = GetLayout()->View(); +#else + BView *top = ChildAt(0); +#endif int32 count = top->CountChildren(); for (int32 i = 0; i < count; i++) { ActivityView* view = dynamic_cast(top->ChildAt(i)); @@ -161,10 +203,12 @@ ActivityWindow::_SaveSettings() void ActivityWindow::_UpdateRemoveItem() { +#ifdef __HAIKU__ BView* view = fLayout->View(); int32 count = view->CountChildren(); fRemoveItem->SetEnabled(count >= 2); +#endif } @@ -194,16 +238,19 @@ ActivityWindow::MessageReceived(BMessage* message) case kMsgAddView: { +#ifdef __HAIKU__ BView* view = fLayout->View()->ChildAt(0); fLayout->AddView(new ActivityView("ActivityMonitor", NULL)); if (view != NULL) ResizeBy(0, view->Bounds().Height() + fLayout->Spacing()); +#endif _UpdateRemoveItem(); break; } case kMsgRemoveView: { +#ifdef __HAIKU__ BView* view = fLayout->View(); int32 count = view->CountChildren(); if (count == 1) @@ -213,6 +260,7 @@ ActivityWindow::MessageReceived(BMessage* message) fLayout->RemoveView(last); ResizeBy(0, -last->Bounds().Height() - fLayout->Spacing()); delete last; +#endif _UpdateRemoveItem(); break; diff --git a/src/apps/activitymonitor/ActivityWindow.h b/src/apps/activitymonitor/ActivityWindow.h index bdfa6442ff..9e45db22c9 100644 --- a/src/apps/activitymonitor/ActivityWindow.h +++ b/src/apps/activitymonitor/ActivityWindow.h @@ -30,7 +30,9 @@ private: void _UpdateRemoveItem(); void _MessageDropped(BMessage *message); +#ifdef __HAIKU__ BGroupLayout* fLayout; +#endif BMenuItem* fRemoveItem; }; diff --git a/src/apps/activitymonitor/Jamfile b/src/apps/activitymonitor/Jamfile index 1607a5b4a0..07832f3def 100644 --- a/src/apps/activitymonitor/Jamfile +++ b/src/apps/activitymonitor/Jamfile @@ -1,5 +1,8 @@ SubDir HAIKU_TOP src apps activitymonitor ; +# XXX: Temporary only +SetSubDirSupportedPlatformsBeOSCompatible ; + UsePrivateHeaders shared ; Application ActivityMonitor : @@ -9,6 +12,6 @@ Application ActivityMonitor : DataSource.cpp SystemInfo.cpp - : be tracker $(TARGET_LIBSTDC++) libnetwork.so + : be tracker $(TARGET_LIBSTDC++) $(TARGET_NETWORK_LIBS) : ActivityMonitor.rdef ; diff --git a/src/apps/activitymonitor/SystemInfo.cpp b/src/apps/activitymonitor/SystemInfo.cpp index 557b889f83..e308c6620a 100644 --- a/src/apps/activitymonitor/SystemInfo.cpp +++ b/src/apps/activitymonitor/SystemInfo.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -30,7 +31,11 @@ SystemInfo::~SystemInfo() uint64 SystemInfo::CachedMemory() const { +#ifdef __HAIKU__ return fSystemInfo.cached_pages * B_PAGE_SIZE; +#else + return 0LL; +#endif } @@ -122,10 +127,12 @@ SystemInfo::_RetrieveNetwork() ifreq request; strlcpy(request.ifr_name, interface->ifr_name, IF_NAMESIZE); +#ifdef __HAIKU__ if (ioctl(socket, SIOCGIFSTATS, &request, sizeof(struct ifreq)) == 0) { fBytesReceived += request.ifr_stats.receive.bytes; fBytesSent += request.ifr_stats.send.bytes; } +#endif interface = (ifreq *)((addr_t)interface + IF_NAMESIZE + interface->ifr_addr.sa_len);