diff --git a/src/apps/processcontroller/TeamBarMenuItem.cpp b/src/apps/processcontroller/TeamBarMenuItem.cpp index 5806a6ebac..e0d19681a4 100644 --- a/src/apps/processcontroller/TeamBarMenuItem.cpp +++ b/src/apps/processcontroller/TeamBarMenuItem.cpp @@ -1,20 +1,20 @@ /* ProcessController © 2000, Georges-Edouard Berenger, All Rights Reserved. - Copyright (C) 2004 beunited.org + Copyright (C) 2004 beunited.org - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ @@ -33,7 +33,8 @@ TeamBarMenuItem::TeamBarMenuItem(BMenu* menu, BMessage* kill_team, team_id team, BBitmap* icon, bool deleteIcon) - : BMenuItem(menu, kill_team), + : + BMenuItem(menu, kill_team), fTeamID(team), fIcon(icon), fDeleteIcon(deleteIcon) @@ -49,11 +50,12 @@ TeamBarMenuItem::Init() get_team_info(fTeamID, &teamInfo); get_team_usage_info(fTeamID, B_USAGE_SELF, &fTeamUsageInfo); if (fTeamID == B_SYSTEM_TEAM) { - thread_info thinfos; + thread_info thinfos; bigtime_t idle = 0; - for (unsigned int t = 1; t <= gCPUcount; t++) + for (unsigned int t = 1; t <= gCPUcount; t++) { if (get_thread_info(t, &thinfos) == B_OK) idle += thinfos.kernel_time + thinfos.user_time; + } fTeamUsageInfo.kernel_time += fTeamUsageInfo.user_time; fTeamUsageInfo.user_time = idle; } @@ -82,6 +84,7 @@ TeamBarMenuItem::DrawContent() BarUpdate(); else DrawBar(true); + loc = ContentLocation(); loc.x += 20; Menu()->MovePenTo(loc); @@ -92,7 +95,7 @@ TeamBarMenuItem::DrawContent() void TeamBarMenuItem::DrawIcon() { - if (!fIcon) + if (fIcon == NULL) return; BPoint loc = ContentLocation(); @@ -130,30 +133,39 @@ TeamBarMenuItem::DrawBar(bool force) if (fGrenze1 < 0) force = true; + if (force) { if (selected) menu->SetHighColor(gFrameColorSelected); else menu->SetHighColor(gFrameColor); + menu->StrokeRect(frame); } frame.InsetBy(1, 1); BRect r = frame; - float grenze1 = frame.left + (frame.right - frame.left) * fKernel / gCPUcount; - float grenze2 = frame.left + (frame.right - frame.left) * (fKernel + fUser) / gCPUcount; + float grenze1 = frame.left + (frame.right - frame.left) + * fKernel / gCPUcount; + float grenze2 = frame.left + (frame.right - frame.left) + * (fKernel + fUser) / gCPUcount; + if (grenze1 > frame.right) grenze1 = frame.right; + if (grenze2 > frame.right) grenze2 = frame.right; + r.right = grenze1; if (!force) r.left = fGrenze1; + if (r.left < r.right) { if (selected) menu->SetHighColor(gKernelColorSelected); else menu->SetHighColor(gKernelColor); + menu->FillRect(r); } @@ -163,15 +175,22 @@ TeamBarMenuItem::DrawBar(bool force) if (!force) { if (fGrenze2 > r.left && r.left >= fGrenze1) r.left = fGrenze2; - if (fGrenze1 < r.right && r.right <= fGrenze2) + + if (fGrenze1 < r.right && r.right <= fGrenze2) r.right = fGrenze1; } if (r.left < r.right) { - if (selected) - menu->SetHighColor(fTeamID == B_SYSTEM_TEAM ? gIdleColorSelected : gUserColorSelected); - else - menu->SetHighColor(fTeamID == B_SYSTEM_TEAM ? gIdleColor : gUserColor); + if (selected) { + menu->SetHighColor(fTeamID == B_SYSTEM_TEAM + ? gIdleColorSelected + : gUserColorSelected); + } else { + menu->SetHighColor(fTeamID == B_SYSTEM_TEAM + ? gIdleColor + : gUserColor); + } + menu->FillRect(r); } @@ -180,11 +199,13 @@ TeamBarMenuItem::DrawBar(bool force) if (!force) r.right = fGrenze2; + if (r.left < r.right) { if (selected) menu->SetHighColor(gWhiteSelected); else menu->SetHighColor(kWhite); + menu->FillRect(r); } @@ -207,12 +228,12 @@ TeamBarMenuItem::GetContentSize(float* width, float* height) void TeamBarMenuItem::BarUpdate() { - team_usage_info usage; + team_usage_info usage; if (get_team_usage_info(fTeamID, B_USAGE_SELF, &usage) == B_OK) { bigtime_t now = system_time(); bigtime_t idle = 0; if (fTeamID == B_SYSTEM_TEAM) { - thread_info thinfos; + thread_info thinfos; for (unsigned int t = 1; t <= gCPUcount; t++) { if (get_thread_info(t, &thinfos) == B_OK) idle += thinfos.kernel_time + thinfos.user_time; @@ -225,10 +246,12 @@ TeamBarMenuItem::BarUpdate() fKernel = double(usage.kernel_time - fTeamUsageInfo.kernel_time - idle) / double(now - fLastTime); - fUser = double(usage.user_time - fTeamUsageInfo.user_time) / double(now - fLastTime); + fUser = double(usage.user_time - fTeamUsageInfo.user_time) + / double(now - fLastTime); if (fKernel < 0) fKernel = 0; + fLastTime = now; fTeamUsageInfo = usage; DrawBar(false); diff --git a/src/apps/processcontroller/TeamBarMenuItem.h b/src/apps/processcontroller/TeamBarMenuItem.h index eef3bdd39e..925f191ba7 100644 --- a/src/apps/processcontroller/TeamBarMenuItem.h +++ b/src/apps/processcontroller/TeamBarMenuItem.h @@ -1,20 +1,20 @@ /* ProcessController © 2000, Georges-Edouard Berenger, All Rights Reserved. - Copyright (C) 2004 beunited.org + Copyright (C) 2004 beunited.org - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _TEAM_BAR_MENU_ITEM_H_ #define _TEAM_BAR_MENU_ITEM_H_ @@ -26,31 +26,32 @@ class BBitmap; class TeamBarMenuItem : public BMenuItem { - public: - TeamBarMenuItem(BMenu* menu, BMessage* kill_team, team_id team, - BBitmap* icon, bool deleteIcon); +public: + TeamBarMenuItem(BMenu* menu, BMessage* kill_team, team_id team, + BBitmap* icon, bool deleteIcon); - virtual ~TeamBarMenuItem(); + virtual ~TeamBarMenuItem(); - virtual void DrawContent(); - virtual void GetContentSize(float* width, float* height); - void DrawIcon(); - void DrawBar(bool force); - void BarUpdate(); - void Init(); - void Reset(char* name, team_id team, BBitmap* icon, bool deleteIcon); + virtual void DrawContent(); + virtual void GetContentSize(float* width, float* height); + void DrawIcon(); + void DrawBar(bool force); + void BarUpdate(); + void Init(); + void Reset(char* name, team_id team, BBitmap* icon, bool deleteIcon); - double fUser; - double fKernel; + double fUser; + double fKernel; - private: - team_id fTeamID; - BBitmap* fIcon; - team_usage_info fTeamUsageInfo; - bigtime_t fLastTime; - float fGrenze1; - float fGrenze2; - bool fDeleteIcon; +private: + team_id fTeamID; + BBitmap* fIcon; + team_usage_info fTeamUsageInfo; + bigtime_t fLastTime; + float fGrenze1; + float fGrenze2; + bool fDeleteIcon; }; + #endif // _TEAM_BAR_MENU_ITEM_H_