Author: kirilla Date: 2011-04-11 17:22:40 +0200 (Mon, 11 Apr 2011) New Revision: 41215 Changeset: https://dev.haiku-os.org/changeset/41215 Modified: haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamListItem.cpp haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamListItem.h haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.cpp haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.h Log: Add a Quit button to the Team Monitor. Modified: haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamListItem.cpp =================================================================== --- haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamListItem.cpp 2011-04-11 12:23:51 UTC (rev 41214) +++ haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamListItem.cpp 2011-04-11 15:22:40 UTC (rev 41215) @@ -13,6 +13,7 @@ #include <FindDirectory.h> #include <NodeInfo.h> #include <Path.h> +#include <Roster.h> #include <View.h> @@ -34,6 +35,10 @@ nodeInfo.GetTrackerIcon(&fIcon, B_MINI_ICON); nodeInfo.GetTrackerIcon(&fLargeIcon, B_LARGE_ICON); } + + app_info appInfo; + if (be_roster->GetRunningAppInfo(fInfo.team, &appInfo) == B_OK) + fAppSignature = appInfo.signature; } @@ -145,3 +150,13 @@ return false; } + + +bool +TeamListItem::IsApplication() +{ + if (fAppSignature.Length() > 0) + return true; + else + return false; +} Modified: haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamListItem.h =================================================================== --- haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamListItem.h 2011-04-11 12:23:51 UTC (rev 41214) +++ haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamListItem.h 2011-04-11 15:22:40 UTC (rev 41215) @@ -12,6 +12,7 @@ #include <Bitmap.h> #include <ListItem.h> #include <Path.h> +#include <String.h> class TeamListItem : public BListItem { @@ -26,7 +27,9 @@ const team_info* GetInfo(); const BBitmap* LargeIcon() { return &fLargeIcon; }; const BPath* Path() { return &fPath; }; + const BString* AppSignature() { return &fAppSignature; }; bool IsSystemServer(); + bool IsApplication(); bool Found() const { return fFound; } void SetFound(bool found) { fFound = found; } @@ -37,6 +40,7 @@ team_info fInfo; BBitmap fIcon, fLargeIcon; BPath fPath; + BString fAppSignature; bool fFound; }; Modified: haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.cpp =================================================================== --- haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.cpp 2011-04-11 12:23:51 UTC (rev 41214) +++ haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.cpp 2011-04-11 15:22:40 UTC (rev 41215) @@ -59,6 +59,7 @@ const uint32 TM_CANCEL = 'TMca'; const uint32 TM_FORCE_REBOOT = 'TMfr'; const uint32 TM_KILL_APPLICATION = 'TMka'; +const uint32 TM_QUIT_APPLICATION = 'TMqa'; const uint32 TM_RESTART_DESKTOP = 'TMrd'; const uint32 TM_SELECTED_TEAM = 'TMst'; @@ -96,6 +97,11 @@ new BMessage(TM_KILL_APPLICATION)); groupView->AddChild(fKillButton); fKillButton->SetEnabled(false); + + fQuitButton = new BButton("quit", "Quit Application", + new BMessage(TM_QUIT_APPLICATION)); + groupView->AddChild(fQuitButton); + fQuitButton->SetEnabled(false); groupView->GroupLayout()->AddItem(BSpaceLayoutItem::CreateGlue()); @@ -195,6 +201,18 @@ } break; } + case TM_QUIT_APPLICATION: + { + TeamListItem* item = dynamic_cast<TeamListItem*>(fListView->ItemAt( + fListView->CurrentSelection())); + if (item != NULL) { + BMessenger messenger(item->AppSignature()->String(), + item->GetInfo()->team); + messenger.SendMessage(B_QUIT_REQUESTED); + UpdateList(); + } + break; + } case TM_RESTART_DESKTOP: { if (!be_roster->IsRunning(kTrackerSignature)) @@ -211,6 +229,7 @@ TeamListItem* item = (TeamListItem*)fListView->ItemAt( fListView->CurrentSelection()); fDescriptionView->SetItem(item); + fQuitButton->SetEnabled(item && item->IsApplication()); break; } case TM_CANCEL: @@ -273,6 +292,7 @@ if (item == fDescriptionView->Item()) { fDescriptionView->SetItem(NULL); fKillButton->SetEnabled(false); + fQuitButton->SetEnabled(false); } delete fListView->RemoveItem(i); Modified: haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.h =================================================================== --- haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.h 2011-04-11 12:23:51 UTC (rev 41214) +++ haiku/trunk/src/add-ons/input_server/devices/keyboard/TeamMonitorWindow.h 2011-04-11 15:22:40 UTC (rev 41215) @@ -39,6 +39,7 @@ BListView* fListView; BButton* fCancelButton; BButton* fKillButton; + BButton* fQuitButton; BButton* fRestartButton; TeamDescriptionView* fDescriptionView; };