The personal message of a contact is now show in the chat window, added also the needed code in Server.cpp to update the windows. Solved a bug with the contact avatar that was causing Caya to crash.
This commit is contained in:
parent
c22310f510
commit
3f2f2783ff
|
@ -51,12 +51,14 @@ ChatWindow::ChatWindow(ContactLinker* cl)
|
|||
AddCommonFilter(new EditingFilter(fSendView));
|
||||
fSendView->MakeFocus(true);
|
||||
|
||||
/*
|
||||
BStringView* personalMessage = new BStringView("personalMessage", "");
|
||||
personalMessage->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_MIDDLE));
|
||||
personalMessage->SetText(fContactLinker->GetNotifyPersonalStatus());
|
||||
personalMessage->SetExplicitMaxSize(BSize(200, 200));
|
||||
*/
|
||||
|
||||
fPersonalMessage = new BTextView("personalMessage", B_WILL_DRAW);
|
||||
fPersonalMessage->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_MIDDLE));
|
||||
fPersonalMessage->SetText(fContactLinker->GetNotifyPersonalStatus());
|
||||
fPersonalMessage->SetExplicitMaxSize(BSize(400, 200));
|
||||
fPersonalMessage->MakeEditable(false);
|
||||
fPersonalMessage->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||
|
||||
|
||||
fStatus = new BStringView("status", "");
|
||||
fStatus->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_MIDDLE));
|
||||
|
@ -65,13 +67,16 @@ ChatWindow::ChatWindow(ContactLinker* cl)
|
|||
|
||||
fAvatar = new BitmapView("ContactIcon");
|
||||
fAvatar->SetExplicitMaxSize(BSize(50, 50));
|
||||
fAvatar->SetExplicitMinSize(BSize(50, 50));
|
||||
fAvatar->SetExplicitPreferredSize(BSize(50, 50));
|
||||
fAvatar->SetExplicitAlignment(BAlignment(B_ALIGN_RIGHT, B_ALIGN_MIDDLE));
|
||||
fAvatar->SetBitmap(fContactLinker->AvatarBitmap());
|
||||
|
||||
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||
// .Add(personalMessage)
|
||||
.Add(fAvatar, 1)
|
||||
.AddGroup(B_HORIZONTAL)
|
||||
.Add(fPersonalMessage)
|
||||
.Add(fAvatar)
|
||||
.End()
|
||||
.Add(scrollViewReceive, 2)
|
||||
.Add(scrollViewSend)
|
||||
.Add(fStatus, 3)
|
||||
|
@ -97,10 +102,23 @@ ChatWindow::QuitRequested()
|
|||
void
|
||||
ChatWindow::UpdateAvatar()
|
||||
{
|
||||
if (fContactLinker->AvatarBitmap() != NULL)
|
||||
fAvatar->SetBitmap(fContactLinker->AvatarBitmap());
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ChatWindow::UpdatePersonalMessage()
|
||||
{
|
||||
|
||||
if (fContactLinker->GetNotifyPersonalStatus() != NULL) {
|
||||
LockLooper();
|
||||
fPersonalMessage->SetText(fContactLinker->GetNotifyPersonalStatus());
|
||||
UnlockLooper();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
ChatWindow::MessageReceived(BMessage* message)
|
||||
{
|
||||
|
|
|
@ -24,6 +24,7 @@ public:
|
|||
virtual bool QuitRequested();
|
||||
|
||||
void UpdateAvatar();
|
||||
void UpdatePersonalMessage();
|
||||
void ImMessage(BMessage* msg);
|
||||
|
||||
void ObserveString(int32 what, BString str);
|
||||
|
@ -36,6 +37,7 @@ private:
|
|||
ContactLinker* fContactLinker;
|
||||
CayaRenderView* fReceiveView;
|
||||
BStringView* fStatus;
|
||||
BTextView* fPersonalMessage;
|
||||
BitmapView* fAvatar;
|
||||
|
||||
};
|
||||
|
|
|
@ -247,8 +247,11 @@ Server::ImMessage(BMessage* msg)
|
|||
break;
|
||||
|
||||
linker->SetNotifyStatus((CayaStatus)status);
|
||||
linker->SetNotifyPersonalStatus(msg->FindString("message"));
|
||||
|
||||
BString statusMsg;
|
||||
if (msg->FindString("message", &statusMsg) == B_OK) {
|
||||
linker->SetNotifyPersonalStatus(statusMsg);
|
||||
linker->GetChatWindow()->UpdatePersonalMessage();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IM_CONTACT_INFO:
|
||||
|
@ -264,9 +267,10 @@ Server::ImMessage(BMessage* msg)
|
|||
linker->SetNotifyName(name);
|
||||
|
||||
BString status;
|
||||
if (msg->FindString("message", &status) == B_OK)
|
||||
if (msg->FindString("message", &status) == B_OK) {
|
||||
linker->SetNotifyPersonalStatus(status);
|
||||
|
||||
linker->GetChatWindow()->UpdatePersonalMessage();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case IM_EXTENDED_CONTACT_INFO:
|
||||
|
|
Ŝarĝante…
Reference in New Issue