1// InfoApplication.cpp 2 3 4 5#include "InfoApplication.h" 6 7const char *XCONTAINER_APP = "application/x-vnd.reh-XContainer"; 8 9 10#define CMD_UPDATE_CONTAINER_ITEM 'updC' 11 12 13InfoApplication :: InfoApplication() 14 : IEApplication("application/x-vnd.reh-XShelfInspector") 15{ 16 // instantiate a new window 17 fLaunched = true; 18 fInfoWindow = new InfoWindow(); 19} 20 21InfoApplication :: ~InfoApplication() 22{ 23 be_roster -> StopWatching(fMsgnr); 24} 25 26 27void InfoApplication :: MessageReceived(BMessage *msg) 28{ 29 switch (msg->what) 30 { 31 case B_SOME_APP_QUIT: 32 case B_SOME_APP_ACTIVATED: 33 case B_SOME_APP_LAUNCHED: 34 { 35 if ( (be_roster -> IsRunning(XCONTAINER_APP)) == false ) 36 { 37 be_roster->Launch(XCONTAINER_APP); // Launch the XContainer 38 39 if (fLaunched == true) 40 { 41 fInfoWindow -> GetPrefs(); 42 fInfoWindow -> Show(); 43 fLaunched = false; 44 break; 45 } 46 BMessenger messenger; 47 BMessage msg(CMD_UPDATE_CONTAINER_ITEM); // Update XContainer 48 messenger = BMessenger(fInfoWindow); 49 messenger.SendMessage(&msg); 50 } 51 } 52 break; 53 54 default: 55 BApplication :: MessageReceived(msg); 56 break; 57 } 58} 59 60void InfoApplication::ReadyToRun() 61{ 62 fMsgnr = BMessenger(this); 63 be_roster -> StartWatching(fMsgnr); 64 PostMessage(B_SOME_APP_LAUNCHED); 65} 66 67 68int main() 69{ 70 InfoApplication infoApplication; 71 infoApplication.Run(); 72 return(0); 73} 74