- fix BeOS build (it's getting nasty)

- add a media node count data source. Yes I do have work to do instead :P


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25022 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
François Revol 2008-04-18 14:01:48 +00:00
parent 43eda1cd8f
commit dc1ffc79ef
9 changed files with 222 additions and 6 deletions

View File

@ -10,7 +10,9 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#ifdef __HAIKU__
#include <AbstractLayoutItem.h> #include <AbstractLayoutItem.h>
#endif
#include <Application.h> #include <Application.h>
#include <Bitmap.h> #include <Bitmap.h>
#include <Dragger.h> #include <Dragger.h>
@ -30,6 +32,7 @@ struct data_item {
int64 value; int64 value;
}; };
#ifdef __HAIKU__
class ActivityView::HistoryLayoutItem : public BAbstractLayoutItem { class ActivityView::HistoryLayoutItem : public BAbstractLayoutItem {
public: public:
HistoryLayoutItem(ActivityView* parent); HistoryLayoutItem(ActivityView* parent);
@ -70,6 +73,7 @@ private:
ActivityView* fParent; ActivityView* fParent;
BRect fFrame; BRect fFrame;
}; };
#endif
const bigtime_t kInitialRefreshInterval = 500000LL; const bigtime_t kInitialRefreshInterval = 500000LL;
@ -166,6 +170,7 @@ DataHistory::SetRefreshInterval(bigtime_t interval)
// #pragma mark - // #pragma mark -
#ifdef __HAIKU__
ActivityView::HistoryLayoutItem::HistoryLayoutItem(ActivityView* parent) ActivityView::HistoryLayoutItem::HistoryLayoutItem(ActivityView* parent)
: :
fParent(parent), fParent(parent),
@ -299,6 +304,7 @@ ActivityView::LegendLayoutItem::BaseAlignment()
{ {
return BAlignment(B_ALIGN_USE_FULL_WIDTH, B_ALIGN_USE_FULL_HEIGHT); return BAlignment(B_ALIGN_USE_FULL_WIDTH, B_ALIGN_USE_FULL_HEIGHT);
} }
#endif
// #pragma mark - // #pragma mark -
@ -357,8 +363,10 @@ ActivityView::_Init(const BMessage* settings)
{ {
fBackgroundColor = (rgb_color){255, 255, 240}; fBackgroundColor = (rgb_color){255, 255, 240};
fOffscreen = NULL; fOffscreen = NULL;
#ifdef __HAIKU__
fHistoryLayoutItem = NULL; fHistoryLayoutItem = NULL;
fLegendLayoutItem = NULL; fLegendLayoutItem = NULL;
#endif
SetViewColor(B_TRANSPARENT_COLOR); SetViewColor(B_TRANSPARENT_COLOR);
SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR)); SetLowColor(ui_color(B_PANEL_BACKGROUND_COLOR));
@ -438,6 +446,7 @@ ActivityView::SaveState(BMessage& state) const
} }
#ifdef __HAIKU__
BLayoutItem* BLayoutItem*
ActivityView::CreateHistoryLayoutItem() ActivityView::CreateHistoryLayoutItem()
{ {
@ -456,7 +465,7 @@ ActivityView::CreateLegendLayoutItem()
return fLegendLayoutItem; return fLegendLayoutItem;
} }
#endif
DataSource* DataSource*
ActivityView::FindDataSource(const DataSource* search) ActivityView::FindDataSource(const DataSource* search)
@ -518,7 +527,9 @@ ActivityView::AddDataSource(const DataSource* source)
} }
} }
#ifdef __HAIKU__
InvalidateLayout(); InvalidateLayout();
#endif
return B_OK; return B_OK;
} }
@ -547,7 +558,9 @@ ActivityView::RemoveDataSource(const DataSource* remove)
removed = true; removed = true;
} }
#ifdef __HAIKU__
InvalidateLayout(); InvalidateLayout();
#endif
return B_OK; return B_OK;
} }
@ -645,6 +658,8 @@ ActivityView::MouseDown(BPoint where)
menu->SetFont(be_plain_font); menu->SetFont(be_plain_font);
BMenu* additionalMenu = new BMenu("Additional Items"); BMenu* additionalMenu = new BMenu("Additional Items");
additionalMenu->SetFont(be_plain_font);
SystemInfo info; SystemInfo info;
BMenuItem* item; BMenuItem* item;
@ -673,6 +688,7 @@ ActivityView::MouseDown(BPoint where)
new BMessage(kMsgToggleLegend))); new BMessage(kMsgToggleLegend)));
menu->SetTargetForItems(this); menu->SetTargetForItems(this);
additionalMenu->SetTargetForItems(this);
ConvertToScreen(&where); ConvertToScreen(&where);
menu->Go(where, true, false, true); menu->Go(where, true, false, true);
@ -755,11 +771,18 @@ ActivityView::MessageReceived(BMessage* message)
void void
ActivityView::_UpdateFrame() ActivityView::_UpdateFrame()
{ {
#ifdef __HAIKU__
if (fLegendLayoutItem == NULL || fHistoryLayoutItem == NULL) if (fLegendLayoutItem == NULL || fHistoryLayoutItem == NULL)
return; return;
BRect historyFrame = fHistoryLayoutItem->Frame(); BRect historyFrame = fHistoryLayoutItem->Frame();
BRect legendFrame = fLegendLayoutItem->Frame(); BRect legendFrame = fLegendLayoutItem->Frame();
#else
BRect historyFrame = Bounds();
BRect legendFrame = Bounds();
historyFrame.bottom -= 2 * Bounds().Height() / 3;
legendFrame.top += Bounds().Height() / 3;
#endif
MoveTo(historyFrame.left, historyFrame.top); MoveTo(historyFrame.left, historyFrame.top);
ResizeTo(legendFrame.left + legendFrame.Width() - historyFrame.left, ResizeTo(legendFrame.left + legendFrame.Width() - historyFrame.left,
legendFrame.top + legendFrame.Height() - historyFrame.top); legendFrame.top + legendFrame.Height() - historyFrame.top);
@ -797,9 +820,11 @@ BRect
ActivityView::_LegendFrame() const ActivityView::_LegendFrame() const
{ {
float height; float height;
#ifdef __HAIKU__
if (fLegendLayoutItem != NULL) if (fLegendLayoutItem != NULL)
height = fLegendLayoutItem->Frame().Height(); height = fLegendLayoutItem->Frame().Height();
else else
#endif
height = _LegendHeight(); height = _LegendHeight();
BRect frame = Bounds(); BRect frame = Bounds();

View File

@ -56,8 +56,10 @@ public:
status_t SaveState(BMessage& state) const; status_t SaveState(BMessage& state) const;
#ifdef __HAIKU__
BLayoutItem* CreateHistoryLayoutItem(); BLayoutItem* CreateHistoryLayoutItem();
BLayoutItem* CreateLegendLayoutItem(); BLayoutItem* CreateLegendLayoutItem();
#endif
DataSource* FindDataSource(const DataSource* source); DataSource* FindDataSource(const DataSource* source);
status_t AddDataSource(const DataSource* source); status_t AddDataSource(const DataSource* source);
@ -102,8 +104,10 @@ private:
rgb_color fBackgroundColor; rgb_color fBackgroundColor;
BBitmap* fOffscreen; BBitmap* fOffscreen;
#ifdef __HAIKU__
BLayoutItem* fHistoryLayoutItem; BLayoutItem* fHistoryLayoutItem;
BLayoutItem* fLegendLayoutItem; BLayoutItem* fLegendLayoutItem;
#endif
BObjectList<DataSource> fSources; BObjectList<DataSource> fSources;
BObjectList<DataHistory> fValues; BObjectList<DataHistory> fValues;
BMessageRunner* fRunner; BMessageRunner* fRunner;

View File

@ -28,7 +28,8 @@ const DataSource* kSources[] = {
new NetworkUsageDataSource(true), new NetworkUsageDataSource(true),
new NetworkUsageDataSource(false), new NetworkUsageDataSource(false),
new ClipboardSizeDataSource(false), new ClipboardSizeDataSource(false),
new ClipboardSizeDataSource(true) new ClipboardSizeDataSource(true),
new MediaNodesDataSource()
}; };
const size_t kSourcesCount = sizeof(kSources) / sizeof(kSources[0]); const size_t kSourcesCount = sizeof(kSources) / sizeof(kSources[0]);
@ -990,3 +991,50 @@ ClipboardSizeDataSource::AdaptiveScale() const
} }
// #pragma mark -
MediaNodesDataSource::MediaNodesDataSource()
{
SystemInfo info;
fMinimum = 0;
fMaximum = INT32_MAX;
fColor = (rgb_color){255, 150, 225};
}
MediaNodesDataSource::~MediaNodesDataSource()
{
}
DataSource*
MediaNodesDataSource::Copy() const
{
return new MediaNodesDataSource(*this);
}
int64
MediaNodesDataSource::NextValue(SystemInfo& info)
{
return info.MediaNodes();
}
const char*
MediaNodesDataSource::Label() const
{
return "Media Nodes";
}
bool
MediaNodesDataSource::AdaptiveScale() const
{
return true;
}

View File

@ -253,4 +253,17 @@ private:
bool fText; bool fText;
}; };
class MediaNodesDataSource : public DataSource {
public:
MediaNodesDataSource();
virtual ~MediaNodesDataSource();
virtual DataSource* Copy() const;
virtual int64 NextValue(SystemInfo& info);
virtual const char* Label() const;
virtual bool AdaptiveScale() const;
};
#endif // DATA_SOURCE_H #endif // DATA_SOURCE_H

View File

@ -13,6 +13,6 @@ Application ActivityMonitor :
SystemInfo.cpp SystemInfo.cpp
SystemInfoHandler.cpp SystemInfoHandler.cpp
: be tracker $(TARGET_LIBSTDC++) $(TARGET_NETWORK_LIBS) : be tracker media $(TARGET_LIBSTDC++) $(TARGET_NETWORK_LIBS)
: ActivityMonitor.rdef : ActivityMonitor.rdef
; ;

View File

@ -21,7 +21,10 @@ SystemInfo::SystemInfo(SystemInfoHandler* handler)
fRetrievedNetwork(false), fRetrievedNetwork(false),
fRunningApps(0), fRunningApps(0),
fClipboardSize(0), fClipboardSize(0),
fClipboardTextSize(0) fClipboardTextSize(0),
fMediaNodes(0),
fMediaConnections(0),
fMediaBuffers(0)
{ {
get_system_info(&fSystemInfo); get_system_info(&fSystemInfo);
@ -29,6 +32,9 @@ SystemInfo::SystemInfo(SystemInfoHandler* handler)
fRunningApps = handler->RunningApps(); fRunningApps = handler->RunningApps();
fClipboardSize = handler->ClipboardSize(); fClipboardSize = handler->ClipboardSize();
fClipboardTextSize = handler->ClipboardTextSize(); fClipboardTextSize = handler->ClipboardTextSize();
fMediaNodes = handler->MediaNodes();
fMediaConnections = handler->MediaConnections();
fMediaBuffers = handler->MediaBuffers();
} }
} }
@ -225,3 +231,24 @@ SystemInfo::ClipboardTextSize() const
} }
uint32
SystemInfo::MediaNodes() const
{
return fMediaNodes;
}
uint32
SystemInfo::MediaConnections() const
{
return fMediaConnections;
}
uint32
SystemInfo::MediaBuffers() const
{
return fMediaBuffers;
}

View File

@ -45,6 +45,10 @@ public:
uint32 ClipboardSize() const; uint32 ClipboardSize() const;
uint32 ClipboardTextSize() const; uint32 ClipboardTextSize() const;
uint32 MediaNodes() const;
uint32 MediaConnections() const; // UNIMPLEMENTED
uint32 MediaBuffers() const; // UNIMPLEMENTED
private: private:
void _RetrieveNetwork(); void _RetrieveNetwork();
@ -56,6 +60,9 @@ private:
uint32 fRunningApps; uint32 fRunningApps;
uint32 fClipboardSize; uint32 fClipboardSize;
uint32 fClipboardTextSize; uint32 fClipboardTextSize;
uint32 fMediaNodes;
uint32 fMediaConnections;
uint32 fMediaBuffers;
}; };
#endif // SYSTEM_INFO_H #endif // SYSTEM_INFO_H

View File

@ -12,7 +12,9 @@
#include <Clipboard.h> #include <Clipboard.h>
#include <Handler.h> #include <Handler.h>
#include <Input.h>
#include <List.h> #include <List.h>
#include <MediaRoster.h>
#include <Messenger.h> #include <Messenger.h>
#include <Roster.h> #include <Roster.h>
@ -20,6 +22,12 @@
SystemInfoHandler::SystemInfoHandler() SystemInfoHandler::SystemInfoHandler()
: BHandler("SystemInfoHandler") : BHandler("SystemInfoHandler")
{ {
fRunningApps = 0;
fClipboardSize = 0;
fClipboardTextSize = 0;
fMediaNodes = 0;
fMediaConnections = 0;
fMediaBuffers = 0;
} }
@ -40,9 +48,13 @@ SystemInfoHandler::Archive(BMessage* data, bool deep) const
void void
SystemInfoHandler::StartWatching() SystemInfoHandler::StartWatching()
{ {
status_t status;
fRunningApps = 0; fRunningApps = 0;
fClipboardSize = 0; fClipboardSize = 0;
fClipboardTextSize = 0; fClipboardTextSize = 0;
fMediaNodes = 0;
fMediaConnections = 0;
fMediaBuffers = 0;
// running applications count // running applications count
BList teamList; BList teamList;
@ -59,16 +71,50 @@ SystemInfoHandler::StartWatching()
be_clipboard->StartWatching(BMessenger(this)); be_clipboard->StartWatching(BMessenger(this));
_UpdateClipboardData(); _UpdateClipboardData();
} }
if (BMediaRoster::Roster(&status) && (status >= B_OK)) {
BMediaRoster::Roster()->StartWatching(BMessenger(this), B_MEDIA_NODE_CREATED);
BMediaRoster::Roster()->StartWatching(BMessenger(this), B_MEDIA_NODE_DELETED);
BMediaRoster::Roster()->StartWatching(BMessenger(this), B_MEDIA_CONNECTION_MADE);
BMediaRoster::Roster()->StartWatching(BMessenger(this), B_MEDIA_CONNECTION_BROKEN);
BMediaRoster::Roster()->StartWatching(BMessenger(this), B_MEDIA_BUFFER_CREATED);
BMediaRoster::Roster()->StartWatching(BMessenger(this), B_MEDIA_BUFFER_DELETED);
// XXX: this won't survive a media_server restart...
live_node_info nodeInfo; // I just need one
int32 nodeCount = 1;
if (BMediaRoster::Roster()->GetLiveNodes(&nodeInfo, &nodeCount)) {
if (nodeCount > 0)
fMediaNodes = (uint32)nodeCount;
// TODO: retry with an array, and use GetNodeInput/Output
// to find initial connection count
}
// TODO: get initial buffer count
}
// doesn't work on R5
watch_input_devices(BMessenger(this), true);
} }
void void
SystemInfoHandler::StopWatching() SystemInfoHandler::StopWatching()
{ {
if (be_roster) status_t status;
be_roster->StopWatching(BMessenger(this)); watch_input_devices(BMessenger(this), false);
if (BMediaRoster::Roster(&status) && (status >= B_OK)) {
BMediaRoster::Roster()->StopWatching(BMessenger(this), B_MEDIA_NODE_CREATED);
BMediaRoster::Roster()->StopWatching(BMessenger(this), B_MEDIA_NODE_DELETED);
BMediaRoster::Roster()->StopWatching(BMessenger(this), B_MEDIA_CONNECTION_MADE);
BMediaRoster::Roster()->StopWatching(BMessenger(this), B_MEDIA_CONNECTION_BROKEN);
BMediaRoster::Roster()->StopWatching(BMessenger(this), B_MEDIA_BUFFER_CREATED);
BMediaRoster::Roster()->StopWatching(BMessenger(this), B_MEDIA_BUFFER_DELETED);
}
if (be_clipboard) if (be_clipboard)
be_clipboard->StopWatching(BMessenger(this)); be_clipboard->StopWatching(BMessenger(this));
if (be_roster)
be_roster->StopWatching(BMessenger(this));
} }
@ -87,7 +133,26 @@ SystemInfoHandler::MessageReceived(BMessage* message)
case B_CLIPBOARD_CHANGED: case B_CLIPBOARD_CHANGED:
_UpdateClipboardData(); _UpdateClipboardData();
break; break;
case B_MEDIA_NODE_CREATED:
fMediaNodes++;
break;
case B_MEDIA_NODE_DELETED:
fMediaNodes--;
break;
case B_MEDIA_CONNECTION_MADE:
fMediaConnections++;
break;
case B_MEDIA_CONNECTION_BROKEN:
fMediaConnections--;
break;
case B_MEDIA_BUFFER_CREATED:
fMediaBuffers++;
break;
case B_MEDIA_BUFFER_DELETED:
fMediaBuffers--;
break;
default: default:
message->PrintToStream();
BHandler::MessageReceived(message); BHandler::MessageReceived(message);
} }
} }
@ -114,6 +179,27 @@ SystemInfoHandler::ClipboardTextSize() const
} }
uint32
SystemInfoHandler::MediaNodes() const
{
return fMediaNodes;
}
uint32
SystemInfoHandler::MediaConnections() const
{
return fMediaConnections;
}
uint32
SystemInfoHandler::MediaBuffers() const
{
return fMediaBuffers;
}
void void
SystemInfoHandler::_UpdateClipboardData() SystemInfoHandler::_UpdateClipboardData()
{ {

View File

@ -24,6 +24,9 @@ public:
uint32 RunningApps() const; uint32 RunningApps() const;
uint32 ClipboardSize() const; uint32 ClipboardSize() const;
uint32 ClipboardTextSize() const; uint32 ClipboardTextSize() const;
uint32 MediaNodes() const;
uint32 MediaConnections() const;
uint32 MediaBuffers() const;
private: private:
void _UpdateClipboardData(); void _UpdateClipboardData();
@ -31,6 +34,9 @@ private:
uint32 fRunningApps; uint32 fRunningApps;
uint32 fClipboardSize; uint32 fClipboardSize;
uint32 fClipboardTextSize; uint32 fClipboardTextSize;
uint32 fMediaNodes;
uint32 fMediaConnections;
uint32 fMediaBuffers;
}; };
#endif // SYSTEM_INFO_HANDLER_H #endif // SYSTEM_INFO_HANDLER_H