Split 'Contact' class into two
This dichotomy is useful and necessary in multi-user chats, so I split Contact into a parent class, User. User should be used for generic members of rooms, Contact used mainly with the roster.
This commit is contained in:
parent
fc16b9b090
commit
7822ec0449
|
@ -9,35 +9,18 @@
|
||||||
*/
|
*/
|
||||||
#include "Contact.h"
|
#include "Contact.h"
|
||||||
|
|
||||||
#include <libinterface/BitmapUtils.h>
|
|
||||||
|
|
||||||
#include "CayaUtils.h"
|
|
||||||
#include "CayaPreferences.h"
|
#include "CayaPreferences.h"
|
||||||
#include "CayaProtocolAddOn.h"
|
|
||||||
#include "CayaResources.h"
|
|
||||||
#include "ChatWindow.h"
|
#include "ChatWindow.h"
|
||||||
#include "ContactPopUp.h"
|
|
||||||
#include "NotifyMessage.h"
|
|
||||||
#include "ProtocolLooper.h"
|
|
||||||
#include "ProtocolManager.h"
|
|
||||||
#include "RosterItem.h"
|
#include "RosterItem.h"
|
||||||
#include "WindowsManager.h"
|
#include "WindowsManager.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
|
|
||||||
|
|
||||||
Contact::Contact(BString id, BMessenger msgn)
|
Contact::Contact(BString id, BMessenger msgn)
|
||||||
:
|
:
|
||||||
|
User::User(id, msgn),
|
||||||
fChatWindow(NULL),
|
fChatWindow(NULL),
|
||||||
fID(id),
|
|
||||||
fName(id),
|
|
||||||
fMessenger(msgn),
|
|
||||||
fLooper(NULL),
|
|
||||||
fStatus(CAYA_OFFLINE),
|
|
||||||
fPopUp(NULL),
|
|
||||||
fNewWindow(true)
|
fNewWindow(true)
|
||||||
{
|
{
|
||||||
// Create the roster item and register it as observer
|
|
||||||
fRosterItem = new RosterItem(id.String(), this);
|
fRosterItem = new RosterItem(id.String(), this);
|
||||||
RegisterObserver(fRosterItem);
|
RegisterObserver(fRosterItem);
|
||||||
}
|
}
|
||||||
|
@ -47,7 +30,7 @@ ChatWindow*
|
||||||
Contact::GetChatWindow()
|
Contact::GetChatWindow()
|
||||||
{
|
{
|
||||||
if (fChatWindow == NULL)
|
if (fChatWindow == NULL)
|
||||||
CreateChatWindow();
|
_CreateChatWindow();
|
||||||
return fChatWindow;
|
return fChatWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +53,7 @@ void
|
||||||
Contact::ShowWindow(bool typing, bool userAction)
|
Contact::ShowWindow(bool typing, bool userAction)
|
||||||
{
|
{
|
||||||
if (fChatWindow == NULL)
|
if (fChatWindow == NULL)
|
||||||
CreateChatWindow();
|
_CreateChatWindow();
|
||||||
|
|
||||||
fChatWindow->AvoidFocus(true);
|
fChatWindow->AvoidFocus(true);
|
||||||
|
|
||||||
|
@ -103,41 +86,6 @@ Contact::HideWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Contact::ShowPopUp(BPoint where)
|
|
||||||
{
|
|
||||||
if (fPopUp == NULL) {
|
|
||||||
fPopUp = new ContactPopUp(this);
|
|
||||||
RegisterObserver(fPopUp);
|
|
||||||
}
|
|
||||||
|
|
||||||
fPopUp->Show();
|
|
||||||
fPopUp->MoveTo(where);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Contact::HidePopUp()
|
|
||||||
{
|
|
||||||
if ((fPopUp != NULL) && !fPopUp->IsHidden())
|
|
||||||
fPopUp->Hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Contact::DeletePopUp()
|
|
||||||
{
|
|
||||||
if (fPopUp == NULL)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (fPopUp->Lock()) {
|
|
||||||
UnregisterObserver(fPopUp);
|
|
||||||
fPopUp->Quit();
|
|
||||||
fPopUp = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
RosterItem*
|
RosterItem*
|
||||||
Contact::GetRosterItem() const
|
Contact::GetRosterItem() const
|
||||||
{
|
{
|
||||||
|
@ -145,133 +93,17 @@ Contact::GetRosterItem() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BString
|
|
||||||
Contact::GetId() const
|
|
||||||
{
|
|
||||||
return fID;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BMessenger
|
|
||||||
Contact::Messenger() const
|
|
||||||
{
|
|
||||||
return fMessenger;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Contact::SetMessenger(BMessenger messenger)
|
|
||||||
{
|
|
||||||
fMessenger = messenger;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
ProtocolLooper*
|
|
||||||
Contact::GetProtocolLooper() const
|
|
||||||
{
|
|
||||||
return fLooper;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BString
|
|
||||||
Contact::GetName() const
|
|
||||||
{
|
|
||||||
return fName;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BBitmap*
|
|
||||||
Contact::AvatarBitmap() const
|
|
||||||
{
|
|
||||||
return fAvatarBitmap;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BBitmap*
|
|
||||||
Contact::ProtocolBitmap() const
|
|
||||||
{
|
|
||||||
CayaProtocol* protocol = fLooper->Protocol();
|
|
||||||
CayaProtocolAddOn* addOn
|
|
||||||
= ProtocolManager::Get()->ProtocolAddOn(protocol->Signature());
|
|
||||||
|
|
||||||
return addOn->ProtoIcon();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
CayaStatus
|
|
||||||
Contact::GetNotifyStatus() const
|
|
||||||
{
|
|
||||||
return fStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
BString
|
|
||||||
Contact::GetNotifyPersonalStatus() const
|
|
||||||
{
|
|
||||||
return fPersonalStatus;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Contact::SetProtocolLooper(ProtocolLooper* looper)
|
|
||||||
{
|
|
||||||
if (looper) {
|
|
||||||
fLooper = looper;
|
|
||||||
|
|
||||||
// By default we use the Person icon as avatar icon
|
|
||||||
BResources* res = CayaResources();
|
|
||||||
BBitmap* bitmap = IconFromResources(res,
|
|
||||||
kPersonIcon, B_LARGE_ICON);
|
|
||||||
|
|
||||||
SetNotifyAvatarBitmap(bitmap);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Contact::SetNotifyName(BString name)
|
|
||||||
{
|
|
||||||
if (fName.Compare(name) != 0) {
|
|
||||||
fName = name;
|
|
||||||
NotifyString(STR_CONTACT_NAME, name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Contact::SetNotifyAvatarBitmap(BBitmap* bitmap)
|
Contact::SetNotifyAvatarBitmap(BBitmap* bitmap)
|
||||||
{
|
{
|
||||||
if ((fAvatarBitmap != bitmap) && (bitmap != NULL)) {
|
User::SetNotifyAvatarBitmap(bitmap);
|
||||||
fAvatarBitmap = bitmap;
|
if (fAvatarBitmap != NULL && fChatWindow != NULL)
|
||||||
NotifyPointer(PTR_AVATAR_BITMAP, (void*)bitmap);
|
fChatWindow->UpdateAvatar();
|
||||||
if (fChatWindow != NULL)
|
|
||||||
fChatWindow->UpdateAvatar();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Contact::SetNotifyStatus(CayaStatus status)
|
Contact::_CreateChatWindow()
|
||||||
{
|
|
||||||
if (fStatus != status) {
|
|
||||||
fStatus = status;
|
|
||||||
NotifyInteger(INT_CONTACT_STATUS, (int32)fStatus);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Contact::SetNotifyPersonalStatus(BString personalStatus)
|
|
||||||
{
|
|
||||||
if (fPersonalStatus.Compare(personalStatus) != 0) {
|
|
||||||
fPersonalStatus = personalStatus;
|
|
||||||
NotifyString(STR_PERSONAL_STATUS, personalStatus);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Contact::CreateChatWindow()
|
|
||||||
{
|
{
|
||||||
fChatWindow = new ChatWindow(this);
|
fChatWindow = new ChatWindow(this);
|
||||||
WindowsManager::Get()->RelocateWindow(fChatWindow);
|
WindowsManager::Get()->RelocateWindow(fChatWindow);
|
||||||
|
|
|
@ -10,17 +10,17 @@
|
||||||
#include <Message.h>
|
#include <Message.h>
|
||||||
#include <Messenger.h>
|
#include <Messenger.h>
|
||||||
|
|
||||||
#include "Notifier.h"
|
|
||||||
#include "CayaConstants.h"
|
#include "CayaConstants.h"
|
||||||
|
#include "User.h"
|
||||||
|
|
||||||
class BBitmap;
|
class BBitmap;
|
||||||
|
|
||||||
class ChatWindow;
|
class ChatWindow;
|
||||||
class ContactPopUp;
|
|
||||||
class ProtocolLooper;
|
class ProtocolLooper;
|
||||||
class RosterItem;
|
class RosterItem;
|
||||||
|
|
||||||
class Contact : public Notifier {
|
|
||||||
|
class Contact : public User {
|
||||||
public:
|
public:
|
||||||
Contact(BString id, BMessenger msgn);
|
Contact(BString id, BMessenger msgn);
|
||||||
|
|
||||||
|
@ -30,46 +30,15 @@ public:
|
||||||
void ShowWindow(bool typing = false, bool userAction = false);
|
void ShowWindow(bool typing = false, bool userAction = false);
|
||||||
void HideWindow();
|
void HideWindow();
|
||||||
|
|
||||||
void ShowPopUp(BPoint where);
|
|
||||||
void DeletePopUp();
|
|
||||||
void HidePopUp();
|
|
||||||
|
|
||||||
RosterItem* GetRosterItem() const;
|
RosterItem* GetRosterItem() const;
|
||||||
|
|
||||||
BString GetId() const;
|
|
||||||
|
|
||||||
BMessenger Messenger() const;
|
|
||||||
void SetMessenger(BMessenger messenger);
|
|
||||||
|
|
||||||
ProtocolLooper* GetProtocolLooper() const;
|
|
||||||
void SetProtocolLooper(ProtocolLooper* looper);
|
|
||||||
BBitmap* ProtocolBitmap() const;
|
|
||||||
|
|
||||||
BString GetName() const;
|
|
||||||
BBitmap* AvatarBitmap() const;
|
|
||||||
CayaStatus GetNotifyStatus() const;
|
|
||||||
BString GetNotifyPersonalStatus() const;
|
|
||||||
|
|
||||||
void SetNotifyName(BString name);
|
|
||||||
void SetNotifyAvatarBitmap(BBitmap* bitmap);
|
void SetNotifyAvatarBitmap(BBitmap* bitmap);
|
||||||
void SetNotifyStatus(CayaStatus status);
|
|
||||||
void SetNotifyPersonalStatus(BString personalStatus);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void CreateChatWindow();
|
void _CreateChatWindow();
|
||||||
|
|
||||||
RosterItem* fRosterItem;
|
RosterItem* fRosterItem;
|
||||||
ChatWindow* fChatWindow;
|
ChatWindow* fChatWindow;
|
||||||
BMessenger fMessenger;
|
|
||||||
ProtocolLooper* fLooper;
|
|
||||||
|
|
||||||
BString fID;
|
|
||||||
bigtime_t fInstance;
|
|
||||||
BString fName;
|
|
||||||
BString fPersonalStatus;
|
|
||||||
BBitmap* fAvatarBitmap;
|
|
||||||
CayaStatus fStatus;
|
|
||||||
ContactPopUp* fPopUp;
|
|
||||||
|
|
||||||
bool fNewWindow;
|
bool fNewWindow;
|
||||||
};
|
};
|
||||||
|
|
|
@ -49,6 +49,7 @@ SRCS = \
|
||||||
application/ProtocolSettings.cpp \
|
application/ProtocolSettings.cpp \
|
||||||
application/Server.cpp \
|
application/Server.cpp \
|
||||||
application/TheApp.cpp \
|
application/TheApp.cpp \
|
||||||
|
application/User.cpp \
|
||||||
application/WindowsManager.cpp \
|
application/WindowsManager.cpp \
|
||||||
application/preferences/AccountDialog.cpp \
|
application/preferences/AccountDialog.cpp \
|
||||||
application/preferences/AccountListItem.cpp \
|
application/preferences/AccountListItem.cpp \
|
||||||
|
@ -59,17 +60,17 @@ SRCS = \
|
||||||
application/preferences/PreferencesBehavior.cpp \
|
application/preferences/PreferencesBehavior.cpp \
|
||||||
application/preferences/PreferencesReplicant.cpp \
|
application/preferences/PreferencesReplicant.cpp \
|
||||||
application/preferences/PreferencesChatWindow.cpp \
|
application/preferences/PreferencesChatWindow.cpp \
|
||||||
application/views/ContactPopUp.cpp \
|
|
||||||
application/views/SearchBarTextControl.cpp \
|
application/views/SearchBarTextControl.cpp \
|
||||||
application/views/NicknameTextControl.cpp \
|
application/views/NicknameTextControl.cpp \
|
||||||
application/views/RosterItem.cpp \
|
application/views/RosterItem.cpp \
|
||||||
application/views/RosterListView.cpp \
|
application/views/RosterListView.cpp \
|
||||||
application/views/ContactInfoWindow.cpp \
|
|
||||||
application/views/StatusMenuItem.cpp \
|
application/views/StatusMenuItem.cpp \
|
||||||
application/views/StatusView.cpp \
|
application/views/StatusView.cpp \
|
||||||
application/views/CayaRenderView.cpp \
|
application/views/CayaRenderView.cpp \
|
||||||
application/views/ReplicantStatusView.cpp \
|
application/views/ReplicantStatusView.cpp \
|
||||||
application/views/ReplicantMenuItem.cpp
|
application/views/ReplicantMenuItem.cpp \
|
||||||
|
application/views/UserInfoWindow.cpp \
|
||||||
|
application/views/UserPopUp.cpp
|
||||||
|
|
||||||
|
|
||||||
# Specify the resource definition files to use. Full or relative paths can be
|
# Specify the resource definition files to use. Full or relative paths can be
|
||||||
|
|
|
@ -0,0 +1,192 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2009-2011, Andrea Anzani. All rights reserved.
|
||||||
|
* Copyright 2012, Dario Casalinuovo. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Andrea Anzani, andrea.anzani@gmail.com
|
||||||
|
* Dario Casalinuovo
|
||||||
|
*/
|
||||||
|
#include "User.h"
|
||||||
|
|
||||||
|
#include <libinterface/BitmapUtils.h>
|
||||||
|
|
||||||
|
#include "CayaProtocolAddOn.h"
|
||||||
|
#include "CayaResources.h"
|
||||||
|
#include "CayaUtils.h"
|
||||||
|
#include "NotifyMessage.h"
|
||||||
|
#include "ProtocolLooper.h"
|
||||||
|
#include "ProtocolManager.h"
|
||||||
|
#include "UserPopUp.h"
|
||||||
|
|
||||||
|
|
||||||
|
User::User(BString id, BMessenger msgn)
|
||||||
|
:
|
||||||
|
fID(id),
|
||||||
|
fName(id),
|
||||||
|
fMessenger(msgn),
|
||||||
|
fLooper(NULL),
|
||||||
|
fStatus(CAYA_OFFLINE),
|
||||||
|
fPopUp(NULL)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
User::ShowPopUp(BPoint where)
|
||||||
|
{
|
||||||
|
if (fPopUp == NULL) {
|
||||||
|
fPopUp = new UserPopUp(this);
|
||||||
|
RegisterObserver(fPopUp);
|
||||||
|
}
|
||||||
|
|
||||||
|
fPopUp->Show();
|
||||||
|
fPopUp->MoveTo(where);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
User::HidePopUp()
|
||||||
|
{
|
||||||
|
if ((fPopUp != NULL) && !fPopUp->IsHidden())
|
||||||
|
fPopUp->Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
User::DeletePopUp()
|
||||||
|
{
|
||||||
|
if (fPopUp == NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (fPopUp->Lock()) {
|
||||||
|
UnregisterObserver(fPopUp);
|
||||||
|
fPopUp->Quit();
|
||||||
|
fPopUp = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BString
|
||||||
|
User::GetId() const
|
||||||
|
{
|
||||||
|
return fID;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BMessenger
|
||||||
|
User::Messenger() const
|
||||||
|
{
|
||||||
|
return fMessenger;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
User::SetMessenger(BMessenger messenger)
|
||||||
|
{
|
||||||
|
fMessenger = messenger;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ProtocolLooper*
|
||||||
|
User::GetProtocolLooper() const
|
||||||
|
{
|
||||||
|
return fLooper;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BString
|
||||||
|
User::GetName() const
|
||||||
|
{
|
||||||
|
return fName;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BBitmap*
|
||||||
|
User::AvatarBitmap() const
|
||||||
|
{
|
||||||
|
return fAvatarBitmap;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BBitmap*
|
||||||
|
User::ProtocolBitmap() const
|
||||||
|
{
|
||||||
|
CayaProtocol* protocol = fLooper->Protocol();
|
||||||
|
CayaProtocolAddOn* addOn
|
||||||
|
= ProtocolManager::Get()->ProtocolAddOn(protocol->Signature());
|
||||||
|
|
||||||
|
return addOn->ProtoIcon();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CayaStatus
|
||||||
|
User::GetNotifyStatus() const
|
||||||
|
{
|
||||||
|
return fStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BString
|
||||||
|
User::GetNotifyPersonalStatus() const
|
||||||
|
{
|
||||||
|
return fPersonalStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
User::SetProtocolLooper(ProtocolLooper* looper)
|
||||||
|
{
|
||||||
|
if (looper) {
|
||||||
|
fLooper = looper;
|
||||||
|
|
||||||
|
// By default we use the Person icon as avatar icon
|
||||||
|
BResources* res = CayaResources();
|
||||||
|
BBitmap* bitmap = IconFromResources(res,
|
||||||
|
kPersonIcon, B_LARGE_ICON);
|
||||||
|
|
||||||
|
SetNotifyAvatarBitmap(bitmap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
User::SetNotifyName(BString name)
|
||||||
|
{
|
||||||
|
if (fName.Compare(name) != 0) {
|
||||||
|
fName = name;
|
||||||
|
NotifyString(STR_CONTACT_NAME, name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
User::SetNotifyAvatarBitmap(BBitmap* bitmap)
|
||||||
|
{
|
||||||
|
if ((fAvatarBitmap != bitmap) && (bitmap != NULL)) {
|
||||||
|
fAvatarBitmap = bitmap;
|
||||||
|
NotifyPointer(PTR_AVATAR_BITMAP, (void*)bitmap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
User::SetNotifyStatus(CayaStatus status)
|
||||||
|
{
|
||||||
|
if (fStatus != status) {
|
||||||
|
fStatus = status;
|
||||||
|
NotifyInteger(INT_CONTACT_STATUS, (int32)fStatus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
User::SetNotifyPersonalStatus(BString personalStatus)
|
||||||
|
{
|
||||||
|
if (fPersonalStatus.Compare(personalStatus) != 0) {
|
||||||
|
fPersonalStatus = personalStatus;
|
||||||
|
NotifyString(STR_PERSONAL_STATUS, personalStatus);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2009-2011, Andrea Anzani. All rights reserved.
|
||||||
|
* Copyright 2012, Dario Casalinuovo. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef _USER_H_
|
||||||
|
#define _USER_H_
|
||||||
|
|
||||||
|
#include <String.h>
|
||||||
|
#include <Message.h>
|
||||||
|
#include <Messenger.h>
|
||||||
|
|
||||||
|
#include "Notifier.h"
|
||||||
|
#include "CayaConstants.h"
|
||||||
|
|
||||||
|
class BBitmap;
|
||||||
|
|
||||||
|
class ChatWindow;
|
||||||
|
class UserPopUp;
|
||||||
|
class ProtocolLooper;
|
||||||
|
class RosterItem;
|
||||||
|
|
||||||
|
class User : public Notifier {
|
||||||
|
public:
|
||||||
|
User(BString id, BMessenger msgn);
|
||||||
|
|
||||||
|
void ShowPopUp(BPoint where);
|
||||||
|
void DeletePopUp();
|
||||||
|
void HidePopUp();
|
||||||
|
|
||||||
|
BString GetId() const;
|
||||||
|
|
||||||
|
BMessenger Messenger() const;
|
||||||
|
void SetMessenger(BMessenger messenger);
|
||||||
|
|
||||||
|
ProtocolLooper* GetProtocolLooper() const;
|
||||||
|
void SetProtocolLooper(ProtocolLooper* looper);
|
||||||
|
BBitmap* ProtocolBitmap() const;
|
||||||
|
|
||||||
|
BString GetName() const;
|
||||||
|
BBitmap* AvatarBitmap() const;
|
||||||
|
CayaStatus GetNotifyStatus() const;
|
||||||
|
BString GetNotifyPersonalStatus() const;
|
||||||
|
|
||||||
|
void SetNotifyName(BString name);
|
||||||
|
void SetNotifyAvatarBitmap(BBitmap* bitmap);
|
||||||
|
void SetNotifyStatus(CayaStatus status);
|
||||||
|
void SetNotifyPersonalStatus(BString personalStatus);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
BMessenger fMessenger;
|
||||||
|
ProtocolLooper* fLooper;
|
||||||
|
|
||||||
|
BString fID;
|
||||||
|
bigtime_t fInstance;
|
||||||
|
BString fName;
|
||||||
|
BString fPersonalStatus;
|
||||||
|
BBitmap* fAvatarBitmap;
|
||||||
|
CayaStatus fStatus;
|
||||||
|
UserPopUp* fPopUp;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _USER_H_
|
|
@ -16,7 +16,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "ContactInfoWindow.h"
|
#include "UserInfoWindow.h"
|
||||||
#include "Contact.h"
|
#include "Contact.h"
|
||||||
#include "RosterItem.h"
|
#include "RosterItem.h"
|
||||||
|
|
||||||
|
@ -223,6 +223,6 @@ RosterListView::Sort()
|
||||||
void
|
void
|
||||||
RosterListView::_InfoWindow(Contact* linker)
|
RosterListView::_InfoWindow(Contact* linker)
|
||||||
{
|
{
|
||||||
ContactInfoWindow* win = new ContactInfoWindow(linker);
|
UserInfoWindow* win = new UserInfoWindow(linker);
|
||||||
win->Show();
|
win->Show();
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Casalinuovo Dario
|
* Casalinuovo Dario
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ContactInfoWindow.h"
|
#include "UserInfoWindow.h"
|
||||||
|
|
||||||
#include <Alert.h>
|
#include <Alert.h>
|
||||||
#include <Application.h>
|
#include <Application.h>
|
||||||
|
@ -24,34 +24,34 @@
|
||||||
|
|
||||||
#include "CayaMessages.h"
|
#include "CayaMessages.h"
|
||||||
#include "CayaProtocolMessages.h"
|
#include "CayaProtocolMessages.h"
|
||||||
#include "Contact.h"
|
|
||||||
#include "CayaConstants.h"
|
#include "CayaConstants.h"
|
||||||
#include "CayaRenderView.h"
|
#include "CayaRenderView.h"
|
||||||
#include "CayaUtils.h"
|
#include "CayaUtils.h"
|
||||||
#include "NotifyMessage.h"
|
#include "NotifyMessage.h"
|
||||||
|
#include "User.h"
|
||||||
|
|
||||||
|
|
||||||
ContactInfoWindow::ContactInfoWindow(Contact* linker)
|
UserInfoWindow::UserInfoWindow(User* user)
|
||||||
:
|
:
|
||||||
BWindow(BRect(200, 200, 500, 400),
|
BWindow(BRect(200, 200, 500, 400),
|
||||||
"Contact Informations", B_FLOATING_WINDOW,
|
"User information", B_FLOATING_WINDOW,
|
||||||
B_NOT_ZOOMABLE | B_NOT_RESIZABLE),
|
B_NOT_ZOOMABLE | B_NOT_RESIZABLE),
|
||||||
fContact(linker)
|
fUser(user)
|
||||||
{
|
{
|
||||||
fPersonalMessage = new BTextView("personalMessage", B_WILL_DRAW);
|
fPersonalMessage = new BTextView("personalMessage", B_WILL_DRAW);
|
||||||
fPersonalMessage->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT,
|
fPersonalMessage->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT,
|
||||||
B_ALIGN_MIDDLE));
|
B_ALIGN_MIDDLE));
|
||||||
|
|
||||||
fPersonalMessage->SetText(fContact->GetNotifyPersonalStatus());
|
fPersonalMessage->SetText(fUser->GetNotifyPersonalStatus());
|
||||||
fPersonalMessage->SetExplicitMaxSize(BSize(200, 200));
|
fPersonalMessage->SetExplicitMaxSize(BSize(200, 200));
|
||||||
fPersonalMessage->MakeEditable(false);
|
fPersonalMessage->MakeEditable(false);
|
||||||
fPersonalMessage->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
fPersonalMessage->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
|
|
||||||
BString status(fContact->GetName());
|
BString status(fUser->GetName());
|
||||||
status << CayaStatusToString(fContact->GetNotifyStatus());
|
status << CayaStatusToString(fUser->GetNotifyStatus());
|
||||||
|
|
||||||
status << "\n\n ID : ";
|
status << "\n\n ID : ";
|
||||||
status << fContact->GetId();
|
status << fUser->GetId();
|
||||||
|
|
||||||
fStatus = new BTextView("status", B_WILL_DRAW);
|
fStatus = new BTextView("status", B_WILL_DRAW);
|
||||||
fStatus->SetText(status);
|
fStatus->SetText(status);
|
||||||
|
@ -60,12 +60,12 @@ ContactInfoWindow::ContactInfoWindow(Contact* linker)
|
||||||
|
|
||||||
SetLayout(new BGroupLayout(B_HORIZONTAL));
|
SetLayout(new BGroupLayout(B_HORIZONTAL));
|
||||||
|
|
||||||
fAvatar = new BitmapView("ContactIcon");
|
fAvatar = new BitmapView("UserIcon");
|
||||||
fAvatar->SetExplicitMaxSize(BSize(70, 70));
|
fAvatar->SetExplicitMaxSize(BSize(70, 70));
|
||||||
fAvatar->SetExplicitMinSize(BSize(50, 50));
|
fAvatar->SetExplicitMinSize(BSize(50, 50));
|
||||||
fAvatar->SetExplicitPreferredSize(BSize(50, 50));
|
fAvatar->SetExplicitPreferredSize(BSize(50, 50));
|
||||||
fAvatar->SetExplicitAlignment(BAlignment(B_ALIGN_RIGHT, B_ALIGN_MIDDLE));
|
fAvatar->SetExplicitAlignment(BAlignment(B_ALIGN_RIGHT, B_ALIGN_MIDDLE));
|
||||||
fAvatar->SetBitmap(fContact->AvatarBitmap());
|
fAvatar->SetBitmap(fUser->AvatarBitmap());
|
||||||
|
|
||||||
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
AddChild(BGroupLayoutBuilder(B_VERTICAL, 10)
|
||||||
.AddGroup(B_HORIZONTAL)
|
.AddGroup(B_HORIZONTAL)
|
||||||
|
@ -83,7 +83,7 @@ ContactInfoWindow::ContactInfoWindow(Contact* linker)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ContactInfoWindow::MessageReceived(BMessage* message)
|
UserInfoWindow::MessageReceived(BMessage* message)
|
||||||
{
|
{
|
||||||
switch (message->what) {
|
switch (message->what) {
|
||||||
default:
|
default:
|
|
@ -5,8 +5,8 @@
|
||||||
* Authors:
|
* Authors:
|
||||||
* Casalinuovo Dario
|
* Casalinuovo Dario
|
||||||
*/
|
*/
|
||||||
#ifndef _CONTACT_INFO_WINDOW_H
|
#ifndef _USER_INFO_WINDOW_H
|
||||||
#define _CONTACT_INFO_WINDOW_H
|
#define _USER_INFO_WINDOW_H
|
||||||
|
|
||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
#include <TextView.h>
|
#include <TextView.h>
|
||||||
|
@ -16,19 +16,22 @@
|
||||||
#include "CayaConstants.h"
|
#include "CayaConstants.h"
|
||||||
|
|
||||||
class BitmapView;
|
class BitmapView;
|
||||||
class Contact;
|
class User;
|
||||||
|
|
||||||
class ContactInfoWindow: public BWindow, public Observer {
|
|
||||||
|
class UserInfoWindow: public BWindow, public Observer {
|
||||||
public:
|
public:
|
||||||
ContactInfoWindow(Contact* linker);
|
UserInfoWindow(User* user);
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage* message);
|
virtual void MessageReceived(BMessage* message);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BTextView* fStatus;
|
BTextView* fStatus;
|
||||||
Contact* fContact;
|
User* fUser;
|
||||||
BTextView* fPersonalMessage;
|
BTextView* fPersonalMessage;
|
||||||
BitmapView* fAvatar;
|
BitmapView* fAvatar;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
|
||||||
|
#endif // _USER_INFO_WINDOW_H
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
* Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
|
* Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ContactPopUp.h"
|
#include "UserPopUp.h"
|
||||||
|
|
||||||
#include <GroupLayout.h>
|
#include <GroupLayout.h>
|
||||||
#include <GroupLayoutBuilder.h>
|
#include <GroupLayoutBuilder.h>
|
||||||
|
@ -15,7 +15,7 @@
|
||||||
|
|
||||||
#include <libinterface/BitmapView.h>
|
#include <libinterface/BitmapView.h>
|
||||||
|
|
||||||
#include "Contact.h"
|
#include "User.h"
|
||||||
#include "NotifyMessage.h"
|
#include "NotifyMessage.h"
|
||||||
|
|
||||||
|
|
||||||
|
@ -24,23 +24,23 @@ const window_feel kMenuWindowFeel = window_feel(B_NORMAL_WINDOW_FEEL);
|
||||||
const int32 kNickChanged = 'NICH';
|
const int32 kNickChanged = 'NICH';
|
||||||
|
|
||||||
|
|
||||||
ContactPopUp::ContactPopUp(Contact* contact)
|
UserPopUp::UserPopUp(User* user)
|
||||||
: BWindow(BRect(0, 0, 1, 1), "ContactPopUp", B_BORDERED_WINDOW_LOOK,
|
: BWindow(BRect(0, 0, 1, 1), "UserPopUp", B_BORDERED_WINDOW_LOOK,
|
||||||
kMenuWindowFeel, B_NOT_MOVABLE | B_NOT_CLOSABLE | B_NOT_MINIMIZABLE |
|
kMenuWindowFeel, B_NOT_MOVABLE | B_NOT_CLOSABLE | B_NOT_MINIMIZABLE |
|
||||||
B_NOT_ZOOMABLE | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS |
|
B_NOT_ZOOMABLE | B_NOT_RESIZABLE | B_ASYNCHRONOUS_CONTROLS |
|
||||||
B_AVOID_FOCUS | B_AUTO_UPDATE_SIZE_LIMITS),
|
B_AVOID_FOCUS | B_AUTO_UPDATE_SIZE_LIMITS),
|
||||||
fCoords(B_ORIGIN)
|
fCoords(B_ORIGIN)
|
||||||
{
|
{
|
||||||
// Box to change nick name
|
// Box to change nick name
|
||||||
fNickBox = new BTextControl("nickBox", NULL, contact->GetName(),
|
fNickBox = new BTextControl("nickBox", NULL, user->GetName(),
|
||||||
new BMessage(kNickChanged));
|
new BMessage(kNickChanged));
|
||||||
|
|
||||||
// Real nick name
|
// Real nick name
|
||||||
fLabel = new BStringView("label", contact->GetId());
|
fLabel = new BStringView("label", user->GetId());
|
||||||
|
|
||||||
// Avatar bitmap
|
// Avatar bitmap
|
||||||
fAvatarView = new BitmapView("avatarView");
|
fAvatarView = new BitmapView("avatarView");
|
||||||
fAvatarView->SetBitmap(contact->AvatarBitmap());
|
fAvatarView->SetBitmap(user->AvatarBitmap());
|
||||||
|
|
||||||
// Layout
|
// Layout
|
||||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||||
|
@ -58,7 +58,7 @@ ContactPopUp::ContactPopUp(Contact* contact)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ContactPopUp::MessageReceived(BMessage* msg)
|
UserPopUp::MessageReceived(BMessage* msg)
|
||||||
{
|
{
|
||||||
switch (msg->what) {
|
switch (msg->what) {
|
||||||
case kNickChanged:
|
case kNickChanged:
|
||||||
|
@ -70,7 +70,7 @@ ContactPopUp::MessageReceived(BMessage* msg)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ContactPopUp::MoveTo(BPoint where)
|
UserPopUp::MoveTo(BPoint where)
|
||||||
{
|
{
|
||||||
if (fCoords != where) {
|
if (fCoords != where) {
|
||||||
if (Lock()) {
|
if (Lock()) {
|
||||||
|
@ -83,7 +83,7 @@ ContactPopUp::MoveTo(BPoint where)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ContactPopUp::ObserveString(int32 what, BString str)
|
UserPopUp::ObserveString(int32 what, BString str)
|
||||||
{
|
{
|
||||||
switch (what) {
|
switch (what) {
|
||||||
case STR_CONTACT_NAME:
|
case STR_CONTACT_NAME:
|
||||||
|
@ -97,7 +97,7 @@ ContactPopUp::ObserveString(int32 what, BString str)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ContactPopUp::ObservePointer(int32 what, void* ptr)
|
UserPopUp::ObservePointer(int32 what, void* ptr)
|
||||||
{
|
{
|
||||||
switch (what) {
|
switch (what) {
|
||||||
case PTR_AVATAR_BITMAP:
|
case PTR_AVATAR_BITMAP:
|
||||||
|
@ -111,7 +111,7 @@ ContactPopUp::ObservePointer(int32 what, void* ptr)
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ContactPopUp::ObserveInteger(int32 what, int32 val)
|
UserPopUp::ObserveInteger(int32 what, int32 val)
|
||||||
{
|
{
|
||||||
switch (what) {
|
switch (what) {
|
||||||
case INT_CONTACT_STATUS:
|
case INT_CONTACT_STATUS:
|
|
@ -2,8 +2,8 @@
|
||||||
* Copyright 2009, Pier Luigi Fiorini. All rights reserved.
|
* Copyright 2009, Pier Luigi Fiorini. All rights reserved.
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
#ifndef _CONTACT_POPUP_H
|
#ifndef _USER_POPUP_H
|
||||||
#define _CONTACT_POPUP_H
|
#define _USER_POPUP_H
|
||||||
|
|
||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
|
|
||||||
|
@ -13,11 +13,11 @@ class BTextControl;
|
||||||
class BStringView;
|
class BStringView;
|
||||||
|
|
||||||
class BitmapView;
|
class BitmapView;
|
||||||
class Contact;
|
class User;
|
||||||
|
|
||||||
class ContactPopUp : public BWindow, public Observer {
|
class UserPopUp : public BWindow, public Observer {
|
||||||
public:
|
public:
|
||||||
ContactPopUp(Contact* contact);
|
UserPopUp(User* user);
|
||||||
|
|
||||||
virtual void MessageReceived(BMessage* msg);
|
virtual void MessageReceived(BMessage* msg);
|
||||||
|
|
||||||
|
@ -35,4 +35,6 @@ private:
|
||||||
BitmapView* fAvatarView;
|
BitmapView* fAvatarView;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _CONTACT_POPUP_H
|
|
||||||
|
#endif // _USER_POPUP_H
|
||||||
|
|
Ŝarĝante…
Reference in New Issue