Added the 'Start Conversation' menu to the RosterListView. Disabled the menus referring to unimplemented features.

This commit is contained in:
barrett 2012-09-28 21:19:24 +00:00
parent 133d3be911
commit 8a27f1f3db

View File

@ -20,9 +20,11 @@
#include "ContactLinker.h" #include "ContactLinker.h"
#include "RosterItem.h" #include "RosterItem.h"
const int32 kGetInfo = 'GINF';
const int32 kShowLogs = 'SHLG';
const int32 kAddPeople = 'ADPL'; const int32 kAddPeople = 'ADPL';
const int32 kSendFile = 'SDFL';
const int32 kShowLogs = 'SHLG';
const int32 kStartConv = 'SRCV';
const int32 kGetInfo = 'GINF';
static int static int
@ -58,11 +60,27 @@ RosterListView::RosterListView(const char* name)
{ {
// Context menu // Context menu
fPopUp = new BPopUpMenu("contextMenu", false, false); fPopUp = new BPopUpMenu("contextMenu", false, false);
fPopUp->AddItem(new BMenuItem("Get Informations", new BMessage(kGetInfo))); BMenuItem* item = NULL;
fPopUp->AddItem(new BMenuItem("Show Logs", new BMessage(kShowLogs)));
fPopUp->AddItem(new BMenuItem("Start a Conversation", new BMessage(kStartConv)));
item = new BMenuItem("Send a File", new BMessage(kSendFile));
item->SetEnabled(false);
fPopUp->AddItem(item);
fPopUp->AddItem(new BSeparatorItem()); fPopUp->AddItem(new BSeparatorItem());
fPopUp->AddItem(new BMenuItem("Add to Address Book",
new BMessage(kAddPeople))); fPopUp->AddItem(new BMenuItem("Get Informations", new BMessage(kGetInfo)));
item = new BMenuItem("Show Logs", new BMessage(kShowLogs));
item->SetEnabled(false);
fPopUp->AddItem(item);
fPopUp->AddItem(new BSeparatorItem());
item = new BMenuItem("Add to Address Book", new BMessage(kAddPeople));
item->SetEnabled(false);
fPopUp->AddItem(item);
fPopUp->SetTargetForItems(this); fPopUp->SetTargetForItems(this);
} }
@ -81,21 +99,31 @@ RosterListView::AttachedToWindow()
void void
RosterListView::MessageReceived(BMessage* msg) RosterListView::MessageReceived(BMessage* msg)
{ {
switch (msg->what) {
case kGetInfo:
{
BPoint where; BPoint where;
uint32 buttons; uint32 buttons;
GetMouse(&where, &buttons); GetMouse(&where, &buttons);
BListItem* item = ItemAt(IndexOf(where)); BListItem* item = ItemAt(IndexOf(where));
RosterItem* ritem = reinterpret_cast<RosterItem*>(item); RosterItem* ritem = reinterpret_cast<RosterItem*>(item);
switch (msg->what) {
case kGetInfo:
{
if (ritem == NULL) if (ritem == NULL)
return; return;
_InfoWindow(ritem->GetContactLinker()); _InfoWindow(ritem->GetContactLinker());
break; break;
} }
case kStartConv:
{
if (ritem == NULL)
return;
ContactLinker* link = ritem->GetContactLinker();
link->ShowWindow(false, true);
break;
}
default: default:
BListView::MessageReceived(msg); BListView::MessageReceived(msg);
} }