Updated the contacts list BMenuItem with a complete redesign of the item, added an experimental version of the Search BTextControl showing a text that disappear when the user click on it, updated the Nickname text control to be a BTextView, other minor updates already WIP like more organization of statuses.
This commit is contained in:
parent
de33c1be80
commit
710a3c6526
|
@ -13,7 +13,7 @@ resource app_version {
|
||||||
internal = 0,
|
internal = 0,
|
||||||
|
|
||||||
short_info = "Caya",
|
short_info = "Caya",
|
||||||
long_info = "©2009-2011 Andrea Anzani, Pier Luigi Fiorini"
|
long_info = "©2009-2012 Andrea Anzani, Pier Luigi Fiorini, Dario Casalinuovo"
|
||||||
};
|
};
|
||||||
|
|
||||||
resource app_flags B_SINGLE_LAUNCH;
|
resource app_flags B_SINGLE_LAUNCH;
|
||||||
|
@ -115,7 +115,7 @@ resource(kSearchIcon) #'VICN' array {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Connecting Green
|
// Connecting Green
|
||||||
resource(kConnectingReplicant) #'VICN' array {
|
resource(kOnlineReplicant) #'VICN' array {
|
||||||
$"6E636966070501040156020106023DB0753A5ED7B9F9EE3D18204A5B813F873F"
|
$"6E636966070501040156020106023DB0753A5ED7B9F9EE3D18204A5B813F873F"
|
||||||
$"C376A70251C9FF89020106023DE0000000000000003D40004A200049A0005376"
|
$"C376A70251C9FF89020106023DE0000000000000003D40004A200049A0005376"
|
||||||
$"A702CBC9FF89020106023F5C743B37D1BAB2F23ED1AC471CEC4937F8BF77A703"
|
$"A702CBC9FF89020106023F5C743B37D1BAB2F23ED1AC471CEC4937F8BF77A703"
|
||||||
|
@ -264,6 +264,24 @@ resource(kExitMenuReplicant) #'VICN' array {
|
||||||
$"00003FBBBB40CC7F4022220A05020203100117842004"
|
$"00003FBBBB40CC7F4022220A05020203100117842004"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Replicant message received
|
||||||
|
|
||||||
|
resource(kReplicantMessageReceived) #'VICN' array {
|
||||||
|
$"6E636966050500020106033D835C3C19B2BA8B0B3C20794769624A510E00FFCE"
|
||||||
|
$"CEB4FF0404FFC10505020106023D835C3C19B2BA8B0B3C20794769624A510E00"
|
||||||
|
$"FF0404FFC10505020106033D429E3C5148BB5ADA3C5C1B4A23AA46EC1800AAE4"
|
||||||
|
$"F3B40392B6FF03627A05FF0502093F404644383C273F2E3A244122482245224D"
|
||||||
|
$"2755245126572256245725582A5828592C5A315C2F5B345D3C5E385E425E4957"
|
||||||
|
$"475C4D4E02043F4044433D3FBC95BE953B3D333D3D493844424E4A5148534A4A"
|
||||||
|
$"04032E264DB84FC80CB673C6C93258385902085645C8FEC3AFCA30C0E55E3A5E"
|
||||||
|
$"405EBA4D5227592B4A2237263E21BA16B6DF33353130363E4A4641444D475346"
|
||||||
|
$"C657C27B554BCB01C635584F5A4F04032E36353F3DBD0FBD2D44404C42090A00"
|
||||||
|
$"01001001178400040A010100000A020101000A0401021001178210040A040102"
|
||||||
|
$"123FFD6238491FB8085D3F8C5843A1A3BE897201178210040A00010310011784"
|
||||||
|
$"00040A030103000A0401041001178210040A040104123FC0CBB65EEB3639DA3F"
|
||||||
|
$"FF4C40FECDC3C0A80117821004"
|
||||||
|
};
|
||||||
|
|
||||||
// Person icon
|
// Person icon
|
||||||
|
|
||||||
resource(kPersonIcon) #'VICN' array {
|
resource(kPersonIcon) #'VICN' array {
|
||||||
|
|
|
@ -30,9 +30,9 @@ const rgb_color CAYA_SELEND_COLOR = {230, 113, 9};
|
||||||
enum CayaStatus {
|
enum CayaStatus {
|
||||||
CAYA_ONLINE = 1,
|
CAYA_ONLINE = 1,
|
||||||
CAYA_AWAY = 2,
|
CAYA_AWAY = 2,
|
||||||
CAYA_EXTENDED_AWAY = 3,
|
CAYA_DO_NOT_DISTURB = 3,
|
||||||
CAYA_DO_NOT_DISTURB = 4,
|
CAYA_OFFLINE = 4,
|
||||||
CAYA_OFFLINE = 5,
|
CAYA_EXTENDED_AWAY = 5,
|
||||||
CAYA_STATUSES = 6
|
CAYA_STATUSES = 6
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -16,12 +16,13 @@ enum {
|
||||||
|
|
||||||
kProtocolSettingsTemplate = 1000,
|
kProtocolSettingsTemplate = 1000,
|
||||||
|
|
||||||
kConnectingReplicant = 1200,
|
kOnlineReplicant = 1200,
|
||||||
kCayaIconReplicant = 1220,
|
kCayaIconReplicant = 1220,
|
||||||
kOfflineReplicant = 1300,
|
kOfflineReplicant = 1300,
|
||||||
kBusyReplicant = 1333,
|
kBusyReplicant = 1333,
|
||||||
kAwayReplicant = 1400,
|
kAwayReplicant = 1400,
|
||||||
kExitMenuReplicant = 1401,
|
kExitMenuReplicant = 1401,
|
||||||
|
kReplicantMessageReceived = 1402,
|
||||||
|
|
||||||
kPersonIcon = 1500
|
kPersonIcon = 1500
|
||||||
};
|
};
|
||||||
|
|
|
@ -29,7 +29,7 @@ CayaStatusToString(CayaStatus status)
|
||||||
case CAYA_AWAY:
|
case CAYA_AWAY:
|
||||||
return "Away";
|
return "Away";
|
||||||
case CAYA_EXTENDED_AWAY:
|
case CAYA_EXTENDED_AWAY:
|
||||||
return "Extended Away";
|
return "Custom Status";
|
||||||
case CAYA_DO_NOT_DISTURB:
|
case CAYA_DO_NOT_DISTURB:
|
||||||
return "Busy";
|
return "Busy";
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
ChatWindow::ChatWindow(ContactLinker* cl)
|
ChatWindow::ChatWindow(ContactLinker* cl)
|
||||||
:
|
:
|
||||||
BWindow(BRect(200, 200, 500, 500),
|
BWindow(BRect(200, 200, 500, 500),
|
||||||
cl->GetName().String(), B_DOCUMENT_WINDOW, 0),
|
cl->GetName().String(), B_TITLED_WINDOW, 0),
|
||||||
fContactLinker(cl)
|
fContactLinker(cl)
|
||||||
{
|
{
|
||||||
fReceiveView = new CayaRenderView("fReceiveView");
|
fReceiveView = new CayaRenderView("fReceiveView");
|
||||||
|
@ -53,7 +53,9 @@ ChatWindow::ChatWindow(ContactLinker* cl)
|
||||||
|
|
||||||
|
|
||||||
fPersonalMessage = new BTextView("personalMessage", B_WILL_DRAW);
|
fPersonalMessage = new BTextView("personalMessage", B_WILL_DRAW);
|
||||||
fPersonalMessage->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_MIDDLE));
|
fPersonalMessage->SetExplicitAlignment(
|
||||||
|
BAlignment(B_ALIGN_LEFT, B_ALIGN_MIDDLE));
|
||||||
|
|
||||||
fPersonalMessage->SetText(fContactLinker->GetNotifyPersonalStatus());
|
fPersonalMessage->SetText(fContactLinker->GetNotifyPersonalStatus());
|
||||||
fPersonalMessage->SetExplicitMaxSize(BSize(400, 200));
|
fPersonalMessage->SetExplicitMaxSize(BSize(400, 200));
|
||||||
fPersonalMessage->MakeEditable(false);
|
fPersonalMessage->MakeEditable(false);
|
||||||
|
@ -83,8 +85,8 @@ ChatWindow::ChatWindow(ContactLinker* cl)
|
||||||
.Add(fAvatar)
|
.Add(fAvatar)
|
||||||
.End()
|
.End()
|
||||||
.Add(scrollViewReceive, 2)
|
.Add(scrollViewReceive, 2)
|
||||||
.Add(scrollViewSend)
|
.Add(scrollViewSend, 3)
|
||||||
.Add(fStatus, 3)
|
.Add(fStatus, 4)
|
||||||
.SetInsets(5, 5, 5, 5)
|
.SetInsets(5, 5, 5, 5)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -7,12 +7,15 @@
|
||||||
* Andrea Anzani, andrea.anzani@gmail.com
|
* Andrea Anzani, andrea.anzani@gmail.com
|
||||||
* Dario Casalinuovo
|
* Dario Casalinuovo
|
||||||
*/
|
*/
|
||||||
|
#include "ContactLinker.h"
|
||||||
|
|
||||||
#include <libinterface/BitmapUtils.h>
|
#include <libinterface/BitmapUtils.h>
|
||||||
|
|
||||||
|
#include "CayaUtils.h"
|
||||||
|
#include "CayaPreferences.h"
|
||||||
#include "CayaProtocolAddOn.h"
|
#include "CayaProtocolAddOn.h"
|
||||||
|
#include "CayaResources.h"
|
||||||
#include "ChatWindow.h"
|
#include "ChatWindow.h"
|
||||||
#include "ContactLinker.h"
|
|
||||||
#include "ContactPopUp.h"
|
#include "ContactPopUp.h"
|
||||||
#include "NotifyMessage.h"
|
#include "NotifyMessage.h"
|
||||||
#include "ProtocolLooper.h"
|
#include "ProtocolLooper.h"
|
||||||
|
@ -20,10 +23,6 @@
|
||||||
#include "RosterItem.h"
|
#include "RosterItem.h"
|
||||||
#include "WindowsManager.h"
|
#include "WindowsManager.h"
|
||||||
|
|
||||||
#include "CayaUtils.h"
|
|
||||||
#include "CayaResources.h"
|
|
||||||
#include "CayaPreferences.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -49,6 +49,7 @@ Application Caya :
|
||||||
|
|
||||||
# views
|
# views
|
||||||
ContactPopUp.cpp
|
ContactPopUp.cpp
|
||||||
|
SearchBarTextControl.cpp
|
||||||
NicknameTextControl.cpp
|
NicknameTextControl.cpp
|
||||||
RosterItem.cpp
|
RosterItem.cpp
|
||||||
RosterListView.cpp
|
RosterListView.cpp
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
#include "ReplicantStatusView.h"
|
#include "ReplicantStatusView.h"
|
||||||
#include "RosterItem.h"
|
#include "RosterItem.h"
|
||||||
#include "RosterListView.h"
|
#include "RosterListView.h"
|
||||||
|
#include "SearchBarTextControl.h"
|
||||||
#include "Server.h"
|
#include "Server.h"
|
||||||
#include "StatusView.h"
|
#include "StatusView.h"
|
||||||
|
|
||||||
|
@ -54,12 +55,12 @@ const uint32 kSearchContact = 'SRCH';
|
||||||
|
|
||||||
MainWindow::MainWindow()
|
MainWindow::MainWindow()
|
||||||
:
|
:
|
||||||
BWindow(BRect(0, 0, 300, 400), "Caya", B_DOCUMENT_WINDOW, 0),
|
BWindow(BRect(0, 0, 300, 400), "Caya", B_TITLED_WINDOW, 0),
|
||||||
fWorkspaceChanged(false)
|
fWorkspaceChanged(false)
|
||||||
{
|
{
|
||||||
fStatusView = new StatusView("statusView");
|
fStatusView = new StatusView("statusView");
|
||||||
|
|
||||||
BTextControl* searchBox = new BTextControl("searchBox", NULL, NULL,
|
SearchBarTextControl* searchBox = new SearchBarTextControl(
|
||||||
new BMessage(kSearchContact));
|
new BMessage(kSearchContact));
|
||||||
|
|
||||||
fListView = new RosterListView("buddyView");
|
fListView = new RosterListView("buddyView");
|
||||||
|
@ -89,8 +90,8 @@ MainWindow::MainWindow()
|
||||||
wrench->SetBitmap(toolIcon);
|
wrench->SetBitmap(toolIcon);
|
||||||
wrench->SetMenu(wrenchMenu);
|
wrench->SetMenu(wrenchMenu);
|
||||||
|
|
||||||
SetLayout(new BGridLayout(5, 5));
|
SetLayout(new BGridLayout(1, 2));
|
||||||
AddChild(BGridLayoutBuilder(5, 5)
|
AddChild(BGridLayoutBuilder(1, 2)
|
||||||
.Add(searchBox, 0, 0)
|
.Add(searchBox, 0, 0)
|
||||||
.Add(wrench, 1, 0)
|
.Add(wrench, 1, 0)
|
||||||
.Add(scrollView, 0, 1, 2)
|
.Add(scrollView, 0, 1, 2)
|
||||||
|
@ -141,7 +142,8 @@ MainWindow::MessageReceived(BMessage* message)
|
||||||
if (message->FindPointer("source", &control) != B_OK)
|
if (message->FindPointer("source", &control) != B_OK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
BTextControl* searchBox = static_cast<BTextControl*>(control);
|
SearchBarTextControl* searchBox
|
||||||
|
= static_cast<SearchBarTextControl*>(control);
|
||||||
if (searchBox == NULL)
|
if (searchBox == NULL)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ TheApp::AboutRequested()
|
||||||
const char* holders[] = {
|
const char* holders[] = {
|
||||||
"2009-2010 Andrea Anzani",
|
"2009-2010 Andrea Anzani",
|
||||||
"2009-2010 Pier Luigi Fiorini",
|
"2009-2010 Pier Luigi Fiorini",
|
||||||
"2011-2012 Casalinuovo Dario",
|
"2010-2012 Casalinuovo Dario",
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ TheApp::AboutRequested()
|
||||||
AboutWindow* about = new AboutWindow("Caya", holders,
|
AboutWindow* about = new AboutWindow("Caya", holders,
|
||||||
authors, extraInfo.String());
|
authors, extraInfo.String());
|
||||||
about->Show();
|
about->Show();
|
||||||
delete about;
|
//delete about;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -6,20 +6,24 @@
|
||||||
* Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
|
* Pier Luigi Fiorini, pierluigi.fiorini@gmail.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "CayaConstants.h"
|
||||||
#include "NicknameTextControl.h"
|
#include "NicknameTextControl.h"
|
||||||
|
|
||||||
|
#include <Font.h>
|
||||||
|
|
||||||
|
|
||||||
NicknameTextControl::NicknameTextControl(const char* name, BMessage* message)
|
NicknameTextControl::NicknameTextControl(const char* name, BMessage* message)
|
||||||
: BTextControl(name, NULL, NULL, message)
|
: BTextView(name, B_WILL_DRAW)
|
||||||
{
|
{
|
||||||
|
SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
void
|
void
|
||||||
NicknameTextControl::Draw(BRect updateRect)
|
NicknameTextControl::Draw(BRect updateRect)
|
||||||
{
|
{
|
||||||
BRect rect(Bounds());
|
// BRect rect(Bounds());
|
||||||
|
|
||||||
SetHighColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
// FillRect(rect);
|
||||||
FillRect(rect);
|
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
|
@ -5,13 +5,13 @@
|
||||||
#ifndef _NICKNAME_TEXT_CONTROL_H
|
#ifndef _NICKNAME_TEXT_CONTROL_H
|
||||||
#define _NICKNAME_TEXT_CONTROL_H
|
#define _NICKNAME_TEXT_CONTROL_H
|
||||||
|
|
||||||
#include <TextControl.h>
|
#include <TextView.h>
|
||||||
|
|
||||||
class NicknameTextControl : public BTextControl {
|
class NicknameTextControl : public BTextView {
|
||||||
public:
|
public:
|
||||||
NicknameTextControl(const char* name, BMessage* message);
|
NicknameTextControl(const char* name, BMessage* message);
|
||||||
|
|
||||||
virtual void Draw(BRect updateRect);
|
// virtual void Draw(BRect updateRect);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _NICKNAME_TEXT_CONTROL_H
|
#endif // _NICKNAME_TEXT_CONTROL_H
|
||||||
|
|
|
@ -65,9 +65,11 @@ ReplicantMenuItem::SetIcon()
|
||||||
|
|
||||||
switch (fStatus) {
|
switch (fStatus) {
|
||||||
case CAYA_ONLINE:
|
case CAYA_ONLINE:
|
||||||
num = kConnectingReplicant;
|
num = kOnlineReplicant;
|
||||||
break;
|
break;
|
||||||
case CAYA_EXTENDED_AWAY:
|
case CAYA_EXTENDED_AWAY:
|
||||||
|
num = kCayaIconReplicant;
|
||||||
|
break;
|
||||||
case CAYA_AWAY:
|
case CAYA_AWAY:
|
||||||
num = kAwayReplicant;
|
num = kAwayReplicant;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -151,9 +151,11 @@ ReplicantStatusView::SetStatus(CayaStatus status)
|
||||||
|
|
||||||
switch (status) {
|
switch (status) {
|
||||||
case CAYA_AWAY:
|
case CAYA_AWAY:
|
||||||
case CAYA_EXTENDED_AWAY:
|
|
||||||
fIcon = fAwayIcon;
|
fIcon = fAwayIcon;
|
||||||
break;
|
break;
|
||||||
|
case CAYA_EXTENDED_AWAY:
|
||||||
|
fIcon = fCayaIcon;
|
||||||
|
break;
|
||||||
case CAYA_DO_NOT_DISTURB:
|
case CAYA_DO_NOT_DISTURB:
|
||||||
fIcon = fBusyIcon;
|
fIcon = fBusyIcon;
|
||||||
break;
|
break;
|
||||||
|
@ -273,7 +275,7 @@ ReplicantStatusView::_Init()
|
||||||
fResources = CayaResources();
|
fResources = CayaResources();
|
||||||
|
|
||||||
//Get icons from resources
|
//Get icons from resources
|
||||||
fConnectingIcon = _GetIcon(kConnectingReplicant);
|
fConnectingIcon = _GetIcon(kOnlineReplicant);
|
||||||
fCayaIcon = _GetIcon(kCayaIconReplicant);
|
fCayaIcon = _GetIcon(kCayaIconReplicant);
|
||||||
fOfflineIcon = _GetIcon(kOfflineReplicant);
|
fOfflineIcon = _GetIcon(kOfflineReplicant);
|
||||||
fIcon = fOfflineIcon;
|
fIcon = fOfflineIcon;
|
||||||
|
@ -299,15 +301,11 @@ void
|
||||||
ReplicantStatusView::_BuildMenu()
|
ReplicantStatusView::_BuildMenu()
|
||||||
{
|
{
|
||||||
// Status menu
|
// Status menu
|
||||||
//fStatusMenu = new BPopUpMenu("Status", false, false);
|
|
||||||
fReplicantMenu = new BPopUpMenu(" - ", false, false);
|
fReplicantMenu = new BPopUpMenu(" - ", false, false);
|
||||||
// Add status menu items
|
// Add status menu items
|
||||||
int32 s = CAYA_ONLINE;
|
int32 s = CAYA_ONLINE;
|
||||||
while (s >= CAYA_ONLINE && s < CAYA_STATUSES) {
|
while (s >= CAYA_ONLINE && s < CAYA_STATUSES) {
|
||||||
if (s == CAYA_EXTENDED_AWAY) {
|
|
||||||
s++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
BMessage* msg = new BMessage(CAYA_REPLICANT_STATUS_SET);
|
BMessage* msg = new BMessage(CAYA_REPLICANT_STATUS_SET);
|
||||||
msg->AddInt32("status", s);
|
msg->AddInt32("status", s);
|
||||||
|
|
||||||
|
@ -315,20 +313,12 @@ ReplicantStatusView::_BuildMenu()
|
||||||
CayaStatusToString((CayaStatus)s), (CayaStatus)s);
|
CayaStatusToString((CayaStatus)s), (CayaStatus)s);
|
||||||
fReplicantMenu->AddItem(item);
|
fReplicantMenu->AddItem(item);
|
||||||
|
|
||||||
// Add items for custom messages
|
|
||||||
if (s == CAYA_ONLINE/* || s == CAYA_DO_NOT_DISTURB*/) {
|
|
||||||
item = new ReplicantMenuItem("Custom...", (CayaStatus) s, true);
|
|
||||||
fReplicantMenu->AddItem(item);
|
|
||||||
fReplicantMenu->AddItem(new BSeparatorItem());
|
|
||||||
}
|
|
||||||
|
|
||||||
// Mark offline status by default
|
// Mark offline status by default
|
||||||
if (s == CAYA_OFFLINE)
|
if (s == CAYA_OFFLINE)
|
||||||
item->SetMarked(true);
|
item->SetMarked(true);
|
||||||
s++;
|
s++;
|
||||||
}
|
}
|
||||||
|
|
||||||
//fReplicantMenu->AddItem(fStatusMenu);
|
|
||||||
fReplicantMenu->AddItem(new BSeparatorItem());
|
fReplicantMenu->AddItem(new BSeparatorItem());
|
||||||
|
|
||||||
fReplicantMenu->AddItem(new BitmapMenuItem("Preferences ",
|
fReplicantMenu->AddItem(new BitmapMenuItem("Preferences ",
|
||||||
|
@ -337,7 +327,6 @@ ReplicantStatusView::_BuildMenu()
|
||||||
fReplicantMenu->AddItem(new BitmapMenuItem("Exit",
|
fReplicantMenu->AddItem(new BitmapMenuItem("Exit",
|
||||||
new BMessage(CAYA_REPLICANT_EXIT), fExitMenuIcon));
|
new BMessage(CAYA_REPLICANT_EXIT), fExitMenuIcon));
|
||||||
|
|
||||||
//fStatusMenu->SetTargetForItems(fReplicantMenu);
|
|
||||||
fReplicantMenu->SetTargetForItems(this);
|
fReplicantMenu->SetTargetForItems(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -99,6 +99,7 @@ void RosterItem::DrawItem(BView* owner, BRect frame, bool complete)
|
||||||
rgb_color highlightColor = ui_color(B_CONTROL_HIGHLIGHT_COLOR);
|
rgb_color highlightColor = ui_color(B_CONTROL_HIGHLIGHT_COLOR);
|
||||||
rgb_color highColor = owner->HighColor();
|
rgb_color highColor = owner->HighColor();
|
||||||
rgb_color lowColor = owner->LowColor();
|
rgb_color lowColor = owner->LowColor();
|
||||||
|
float h = frame.Height();
|
||||||
|
|
||||||
// Draw selection
|
// Draw selection
|
||||||
if (IsSelected()) {
|
if (IsSelected()) {
|
||||||
|
@ -111,31 +112,33 @@ void RosterItem::DrawItem(BView* owner, BRect frame, bool complete)
|
||||||
owner->FillRect(frame);
|
owner->FillRect(frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
BResources* res = CayaResources();
|
/*BResources* res = CayaResources();
|
||||||
if (res) {
|
if (res) {
|
||||||
int32 num = 0;
|
int32 num = 0;
|
||||||
|
|
||||||
switch (fStatus) {
|
switch (fStatus) {
|
||||||
case CAYA_ONLINE:
|
case CAYA_ONLINE:
|
||||||
num = kOnlineIcon;
|
num = kOnlineReplicant;
|
||||||
break;
|
break;
|
||||||
case CAYA_EXTENDED_AWAY:
|
case CAYA_EXTENDED_AWAY:
|
||||||
|
num = kCayaIconReplicant;
|
||||||
|
break;
|
||||||
case CAYA_AWAY:
|
case CAYA_AWAY:
|
||||||
num = kAwayIcon;
|
num = kAwayReplicant;
|
||||||
break;
|
break;
|
||||||
case CAYA_DO_NOT_DISTURB:
|
case CAYA_DO_NOT_DISTURB:
|
||||||
num = kBusyIcon;
|
num = kBusyReplicant;
|
||||||
break;
|
break;
|
||||||
case CAYA_OFFLINE:
|
case CAYA_OFFLINE:
|
||||||
num = kOfflineIcon;
|
num = kOfflineReplicant;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
BBitmap* bitmap = IconFromResources(res, num, B_MINI_ICON);
|
BBitmap* bitmap = IconFromResources(res, num, B_MINI_ICON);
|
||||||
BRect bitmapRect(frame.left + 2, frame.top + 2,
|
BRect bitmapRect(frame.left + 40, frame.top + fBaselineOffset - 10,
|
||||||
frame.left + 2 + 14, frame.top + 2 + 14);
|
frame.left + 55, frame.top + 18);
|
||||||
|
|
||||||
owner->SetDrawingMode(B_OP_ALPHA);
|
owner->SetDrawingMode(B_OP_ALPHA);
|
||||||
owner->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
|
owner->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
|
||||||
|
@ -143,7 +146,7 @@ void RosterItem::DrawItem(BView* owner, BRect frame, bool complete)
|
||||||
bitmapRect, B_FILTER_BITMAP_BILINEAR);
|
bitmapRect, B_FILTER_BITMAP_BILINEAR);
|
||||||
|
|
||||||
delete res;
|
delete res;
|
||||||
} else {
|
} else {*/
|
||||||
// Draw contact status
|
// Draw contact status
|
||||||
switch (fStatus) {
|
switch (fStatus) {
|
||||||
case CAYA_ONLINE:
|
case CAYA_ONLINE:
|
||||||
|
@ -162,19 +165,31 @@ void RosterItem::DrawItem(BView* owner, BRect frame, bool complete)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
owner->FillEllipse(BRect(frame.left + 4, frame.top + 4,
|
owner->FillRect(BRect(frame.left,
|
||||||
frame.left + 4 + 10 , frame.top + 4 + 10));
|
frame.top,
|
||||||
|
frame.left + 5, frame.top + h - 1
|
||||||
|
));
|
||||||
|
//}
|
||||||
|
|
||||||
|
// Draw avatar icon
|
||||||
|
if (fBitmap != NULL) {
|
||||||
|
BRect rect(frame.left + 6, frame.top,
|
||||||
|
frame.left + 42, frame.top + h);
|
||||||
|
owner->SetDrawingMode(B_OP_ALPHA);
|
||||||
|
owner->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
|
||||||
|
owner->DrawBitmap(fBitmap, fBitmap->Bounds(),
|
||||||
|
rect, B_FILTER_BITMAP_BILINEAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw contact name
|
// Draw contact name
|
||||||
owner->MovePenTo(frame.left + 20, frame.top + fBaselineOffset);
|
owner->MovePenTo(frame.left + 48, frame.top + fBaselineOffset);
|
||||||
owner->SetHighColor(ui_color(B_CONTROL_TEXT_COLOR));
|
owner->SetHighColor(ui_color(B_CONTROL_TEXT_COLOR));
|
||||||
owner->DrawString(Text());
|
owner->DrawString(Text());
|
||||||
|
|
||||||
// Draw contact status string
|
// Draw contact status string
|
||||||
owner->MovePenTo(frame.left + 20, frame.top + fBaselineOffset +
|
owner->MovePenTo(frame.left + 48, frame.top + fBaselineOffset +
|
||||||
fBaselineOffset + 2);
|
fBaselineOffset + 3);
|
||||||
owner->SetHighColor(tint_color(lowColor, B_DARKEN_1_TINT));
|
owner->SetHighColor(tint_color(lowColor, B_DARKEN_2_TINT));
|
||||||
if (fPersonalStatus.Length() == 0)
|
if (fPersonalStatus.Length() == 0)
|
||||||
owner->DrawString(CayaStatusToString(fStatus));
|
owner->DrawString(CayaStatusToString(fStatus));
|
||||||
else
|
else
|
||||||
|
@ -184,21 +199,11 @@ void RosterItem::DrawItem(BView* owner, BRect frame, bool complete)
|
||||||
owner->StrokeLine(BPoint(frame.left, frame.bottom),
|
owner->StrokeLine(BPoint(frame.left, frame.bottom),
|
||||||
BPoint(frame.right, frame.bottom));
|
BPoint(frame.right, frame.bottom));
|
||||||
|
|
||||||
// Draw avatar icon
|
// Draw protocol bitmpap
|
||||||
if (fBitmap != NULL) {
|
|
||||||
float h = frame.Height() - 4;
|
|
||||||
BRect rect(frame.right - h - 2, frame.top + 2,
|
|
||||||
frame.right - 2, frame.top + h );
|
|
||||||
owner->SetDrawingMode(B_OP_ALPHA);
|
|
||||||
owner->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
|
|
||||||
owner->DrawBitmap(fBitmap, fBitmap->Bounds(),
|
|
||||||
rect, B_FILTER_BITMAP_BILINEAR);
|
|
||||||
}
|
|
||||||
|
|
||||||
BBitmap* protocolBitmap = contactLinker->ProtocolBitmap();
|
BBitmap* protocolBitmap = contactLinker->ProtocolBitmap();
|
||||||
float h = frame.Height();
|
|
||||||
BRect rect(frame.right - h - 20, frame.top + 2,
|
BRect rect(frame.right - 19, frame.top + 2,
|
||||||
frame.right - 40, frame.top + h - 20);
|
frame.right - 2, frame.top + 19 );;
|
||||||
owner->SetDrawingMode(B_OP_ALPHA);
|
owner->SetDrawingMode(B_OP_ALPHA);
|
||||||
owner->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
|
owner->SetBlendingMode(B_PIXEL_ALPHA, B_ALPHA_OVERLAY);
|
||||||
owner->DrawBitmap(protocolBitmap, protocolBitmap->Bounds(),
|
owner->DrawBitmap(protocolBitmap, protocolBitmap->Bounds(),
|
||||||
|
|
|
@ -50,7 +50,8 @@ compare_by_status(const void* _item1, const void* _item2)
|
||||||
|
|
||||||
|
|
||||||
RosterListView::RosterListView(const char* name)
|
RosterListView::RosterListView(const char* name)
|
||||||
: BListView(name, B_SINGLE_SELECTION_LIST, B_WILL_DRAW | B_FRAME_EVENTS |
|
: BOutlineListView(name, B_SINGLE_SELECTION_LIST,
|
||||||
|
B_WILL_DRAW | B_FRAME_EVENTS |
|
||||||
B_NAVIGABLE | B_FULL_UPDATE_ON_RESIZE),
|
B_NAVIGABLE | B_FULL_UPDATE_ON_RESIZE),
|
||||||
fPrevItem(NULL)
|
fPrevItem(NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,14 +5,14 @@
|
||||||
#ifndef _ROSTER_LIST_VIEW_H
|
#ifndef _ROSTER_LIST_VIEW_H
|
||||||
#define _ROSTER_LIST_VIEW_H
|
#define _ROSTER_LIST_VIEW_H
|
||||||
|
|
||||||
#include <ListView.h>
|
#include <OutlineListView.h>
|
||||||
|
|
||||||
class BPopUpMenu;
|
class BPopUpMenu;
|
||||||
|
|
||||||
class ContactLinker;
|
class ContactLinker;
|
||||||
class RosterItem;
|
class RosterItem;
|
||||||
|
|
||||||
class RosterListView : public BListView
|
class RosterListView : public BOutlineListView
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
RosterListView(const char* name);
|
RosterListView(const char* name);
|
||||||
|
|
|
@ -62,17 +62,19 @@ StatusMenuItem::SetIcon()
|
||||||
|
|
||||||
switch (fStatus) {
|
switch (fStatus) {
|
||||||
case CAYA_ONLINE:
|
case CAYA_ONLINE:
|
||||||
num = kOnlineIcon;
|
num = kOnlineReplicant;
|
||||||
break;
|
break;
|
||||||
case CAYA_EXTENDED_AWAY:
|
case CAYA_EXTENDED_AWAY:
|
||||||
|
num = kCayaIconReplicant;
|
||||||
|
break;
|
||||||
case CAYA_AWAY:
|
case CAYA_AWAY:
|
||||||
num = kAwayIcon;
|
num = kAwayReplicant;
|
||||||
break;
|
break;
|
||||||
case CAYA_DO_NOT_DISTURB:
|
case CAYA_DO_NOT_DISTURB:
|
||||||
num = kBusyIcon;
|
num = kBusyReplicant;
|
||||||
break;
|
break;
|
||||||
case CAYA_OFFLINE:
|
case CAYA_OFFLINE:
|
||||||
num = kOfflineIcon;
|
num = kOfflineReplicant;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -13,6 +13,7 @@
|
||||||
#include <MenuField.h>
|
#include <MenuField.h>
|
||||||
#include <MenuItem.h>
|
#include <MenuItem.h>
|
||||||
#include <PopUpMenu.h>
|
#include <PopUpMenu.h>
|
||||||
|
#include <StringView.h>
|
||||||
|
|
||||||
#include <libinterface/BitmapMenuItem.h>
|
#include <libinterface/BitmapMenuItem.h>
|
||||||
#include <libinterface/BitmapUtils.h>
|
#include <libinterface/BitmapUtils.h>
|
||||||
|
@ -32,8 +33,10 @@ StatusView::StatusView(const char* name)
|
||||||
BView(name, B_WILL_DRAW)
|
BView(name, B_WILL_DRAW)
|
||||||
{
|
{
|
||||||
// Nick name
|
// Nick name
|
||||||
fNickname = new NicknameTextControl("Nickname", new BMessage(kSetNickname));
|
fPersonalMessage = new NicknameTextControl("Nickname",
|
||||||
|
new BMessage(kSetNickname));
|
||||||
|
|
||||||
|
BStringView* personalMessageLabel = new BStringView("Nickname","Nickname:", B_WILL_DRAW);
|
||||||
// Status menu
|
// Status menu
|
||||||
fStatusMenu = new BPopUpMenu("-");
|
fStatusMenu = new BPopUpMenu("-");
|
||||||
|
|
||||||
|
@ -44,12 +47,12 @@ StatusView::StatusView(const char* name)
|
||||||
(CayaStatus)s), (CayaStatus)s);
|
(CayaStatus)s), (CayaStatus)s);
|
||||||
fStatusMenu->AddItem(item);
|
fStatusMenu->AddItem(item);
|
||||||
|
|
||||||
// Add items for custom messages
|
/*// Add items for custom messages
|
||||||
if (s == CAYA_ONLINE || s == CAYA_DO_NOT_DISTURB) {
|
if (s == CAYA_ONLINE || s == CAYA_DO_NOT_DISTURB) {
|
||||||
item = new StatusMenuItem("Custom...", (CayaStatus)s, true);
|
item = new StatusMenuItem("Custom...", (CayaStatus)s, true);
|
||||||
fStatusMenu->AddItem(item);
|
fStatusMenu->AddItem(item);
|
||||||
fStatusMenu->AddItem(new BSeparatorItem());
|
fStatusMenu->AddItem(new BSeparatorItem());
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// Mark offline status by default
|
// Mark offline status by default
|
||||||
if (s == CAYA_OFFLINE)
|
if (s == CAYA_OFFLINE)
|
||||||
|
@ -71,12 +74,14 @@ StatusView::StatusView(const char* name)
|
||||||
SetLayout(new BGroupLayout(B_VERTICAL));
|
SetLayout(new BGroupLayout(B_VERTICAL));
|
||||||
AddChild(BGroupLayoutBuilder(B_HORIZONTAL, 5)
|
AddChild(BGroupLayoutBuilder(B_HORIZONTAL, 5)
|
||||||
.AddGroup(B_VERTICAL)
|
.AddGroup(B_VERTICAL)
|
||||||
.Add(fNickname)
|
|
||||||
.Add(statusField)
|
.Add(statusField)
|
||||||
.AddGlue()
|
.AddGroup(B_HORIZONTAL)
|
||||||
|
.Add(personalMessageLabel)
|
||||||
|
.Add(fPersonalMessage)
|
||||||
|
.End()
|
||||||
.End()
|
.End()
|
||||||
.Add(fAvatar)
|
.Add(fAvatar)
|
||||||
.TopView()
|
// .TopView()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,8 +89,7 @@ StatusView::StatusView(const char* name)
|
||||||
void
|
void
|
||||||
StatusView::AttachedToWindow()
|
StatusView::AttachedToWindow()
|
||||||
{
|
{
|
||||||
fNickname->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
//fNickname->SetTarget(this);
|
||||||
fNickname->SetTarget(this);
|
|
||||||
fStatusMenu->SetTargetForItems(this);
|
fStatusMenu->SetTargetForItems(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,12 +98,12 @@ void
|
||||||
StatusView::MessageReceived(BMessage* msg)
|
StatusView::MessageReceived(BMessage* msg)
|
||||||
{
|
{
|
||||||
switch (msg->what) {
|
switch (msg->what) {
|
||||||
case kSetNickname:
|
/*case kSetNickname:
|
||||||
{
|
{
|
||||||
AccountManager* accountManager = AccountManager::Get();
|
AccountManager* accountManager = AccountManager::Get();
|
||||||
accountManager->SetNickname(fNickname->Text());
|
accountManager->SetNickname(fNickname->Text());
|
||||||
break;
|
break;
|
||||||
}
|
}*/
|
||||||
case kSetStatus:
|
case kSetStatus:
|
||||||
{
|
{
|
||||||
int32 status;
|
int32 status;
|
||||||
|
@ -120,7 +124,7 @@ StatusView::MessageReceived(BMessage* msg)
|
||||||
void
|
void
|
||||||
StatusView::SetName(BString name)
|
StatusView::SetName(BString name)
|
||||||
{
|
{
|
||||||
fNickname->SetText(name.String());
|
fPersonalMessage->SetText(name.String());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
BPopUpMenu* fStatusMenu;
|
BPopUpMenu* fStatusMenu;
|
||||||
NicknameTextControl* fNickname;
|
NicknameTextControl* fPersonalMessage;
|
||||||
BitmapView* fAvatar;
|
BitmapView* fAvatar;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Ŝarĝante…
Reference in New Issue