[haiku-commits] r41215 - haiku/trunk/src/add-ons/input_server/devices/keyboard

  • From: jonas@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 11 Apr 2011 17:22:41 +0200 (CEST)

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;
 };


Other related posts: