Sorting of RosterWindow by accounts
This commit is contained in:
parent
9d72c53dd9
commit
fdeb533d6e
|
@ -11,6 +11,8 @@
|
||||||
#include <Directory.h>
|
#include <Directory.h>
|
||||||
#include <FindDirectory.h>
|
#include <FindDirectory.h>
|
||||||
#include <IconUtils.h>
|
#include <IconUtils.h>
|
||||||
|
#include <Menu.h>
|
||||||
|
#include <MenuItem.h>
|
||||||
#include <Path.h>
|
#include <Path.h>
|
||||||
#include <StringList.h>
|
#include <StringList.h>
|
||||||
|
|
||||||
|
@ -88,6 +90,26 @@ CayaResources()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BMenu*
|
||||||
|
CreateAccountMenu(AccountInstances accounts, BMessage msg, BMessage* allMsg)
|
||||||
|
{
|
||||||
|
BMenu* menu = new BMenu("accountMenu");
|
||||||
|
|
||||||
|
if (allMsg != NULL)
|
||||||
|
menu->AddItem(new BMenuItem("All", new BMessage(*allMsg)));
|
||||||
|
|
||||||
|
for (int i = 0; i < accounts.CountItems(); i++)
|
||||||
|
menu->AddItem(new BMenuItem(accounts.KeyAt(i).String(), new BMessage(msg)));
|
||||||
|
menu->SetRadioMode(true);
|
||||||
|
menu->SetLabelFromMarked(true);
|
||||||
|
menu->ItemAt(0)->SetMarked(true);
|
||||||
|
|
||||||
|
if (accounts.CountItems() == 0)
|
||||||
|
menu->SetEnabled(false);
|
||||||
|
return menu;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
CayaAccountsPath()
|
CayaAccountsPath()
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,6 +14,10 @@
|
||||||
#include <Resources.h>
|
#include <Resources.h>
|
||||||
|
|
||||||
#include "CayaConstants.h"
|
#include "CayaConstants.h"
|
||||||
|
#include "Server.h"
|
||||||
|
|
||||||
|
class BMenu;
|
||||||
|
|
||||||
|
|
||||||
const char* CayaStatusToString(CayaStatus status);
|
const char* CayaStatusToString(CayaStatus status);
|
||||||
|
|
||||||
|
@ -23,6 +27,9 @@ BString CommandArgs(BString line);
|
||||||
|
|
||||||
BResources* CayaResources();
|
BResources* CayaResources();
|
||||||
|
|
||||||
|
BMenu* CreateAccountMenu(AccountInstances accounts, BMessage msg,
|
||||||
|
BMessage* allMsg = NULL);
|
||||||
|
|
||||||
const char* CayaAccountsPath();
|
const char* CayaAccountsPath();
|
||||||
const char* CayaAccountPath(const char* signature);
|
const char* CayaAccountPath(const char* signature);
|
||||||
const char* CayaAccountPath(const char* signature, const char* subsignature);
|
const char* CayaAccountPath(const char* signature, const char* subsignature);
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <StringView.h>
|
#include <StringView.h>
|
||||||
|
|
||||||
#include "CayaProtocolMessages.h"
|
#include "CayaProtocolMessages.h"
|
||||||
|
#include "CayaUtils.h"
|
||||||
|
|
||||||
|
|
||||||
const uint32 kJoinRoom = 'JWjr';
|
const uint32 kJoinRoom = 'JWjr';
|
||||||
|
@ -26,7 +27,6 @@ JoinWindow::JoinWindow(BMessenger* messenger, AccountInstances accounts)
|
||||||
fSelectedAcc(0)
|
fSelectedAcc(0)
|
||||||
{
|
{
|
||||||
_InitInterface();
|
_InitInterface();
|
||||||
|
|
||||||
CenterOnScreen();
|
CenterOnScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,9 +77,10 @@ JoinWindow::MessageReceived(BMessage* msg)
|
||||||
void
|
void
|
||||||
JoinWindow::_InitInterface()
|
JoinWindow::_InitInterface()
|
||||||
{
|
{
|
||||||
fMenuField = new BMenuField("accountMenuField", NULL, _CreateAccountMenu());
|
|
||||||
BButton* join = new BButton("Join", new BMessage(kJoinRoom));
|
BButton* join = new BButton("Join", new BMessage(kJoinRoom));
|
||||||
fTextBox = new BTextControl("Room ID:", "", NULL);
|
fTextBox = new BTextControl("Room ID:", "", NULL);
|
||||||
|
fMenuField = new BMenuField("accountMenuField", NULL,
|
||||||
|
CreateAccountMenu(fAccounts, BMessage(kAccSelected)));
|
||||||
|
|
||||||
BLayoutBuilder::Group<>(this, B_VERTICAL)
|
BLayoutBuilder::Group<>(this, B_VERTICAL)
|
||||||
.SetInsets(B_USE_DEFAULT_SPACING)
|
.SetInsets(B_USE_DEFAULT_SPACING)
|
||||||
|
@ -95,25 +96,3 @@ JoinWindow::_InitInterface()
|
||||||
fTextBox->MakeFocus(true);
|
fTextBox->MakeFocus(true);
|
||||||
join->MakeDefault(true);
|
join->MakeDefault(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BMenu*
|
|
||||||
JoinWindow::_CreateAccountMenu()
|
|
||||||
{
|
|
||||||
BMenu* menu = new BMenu("accountMenu");
|
|
||||||
|
|
||||||
for (int i = 0; i < fAccounts.CountItems(); i++)
|
|
||||||
menu->AddItem(new BMenuItem(fAccounts.KeyAt(i).String(),
|
|
||||||
new BMessage(kAccSelected)));
|
|
||||||
|
|
||||||
menu->SetRadioMode(true);
|
|
||||||
menu->SetLabelFromMarked(true);
|
|
||||||
menu->ItemAt(fSelectedAcc)->SetMarked(true);
|
|
||||||
|
|
||||||
if (fAccounts.CountItems() == 0)
|
|
||||||
menu->SetEnabled(false);
|
|
||||||
|
|
||||||
return menu;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,6 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void _InitInterface();
|
void _InitInterface();
|
||||||
BMenu* _CreateAccountMenu();
|
|
||||||
|
|
||||||
BMessenger* fTarget;
|
BMessenger* fTarget;
|
||||||
AccountInstances fAccounts;
|
AccountInstances fAccounts;
|
||||||
|
|
|
@ -10,43 +10,55 @@
|
||||||
* Jaidyn Levesque, jadedctrl@teknik.io
|
* Jaidyn Levesque, jadedctrl@teknik.io
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "RosterWindow.h"
|
#include "RosterWindow.h"
|
||||||
|
|
||||||
|
#include <Button.h>
|
||||||
#include <LayoutBuilder.h>
|
#include <LayoutBuilder.h>
|
||||||
|
#include <MenuField.h>
|
||||||
#include <Notification.h>
|
#include <Notification.h>
|
||||||
#include <ScrollView.h>
|
#include <ScrollView.h>
|
||||||
|
|
||||||
#include "CayaMessages.h"
|
#include "CayaMessages.h"
|
||||||
#include "CayaPreferences.h"
|
#include "CayaPreferences.h"
|
||||||
#include "CayaProtocolMessages.h"
|
#include "CayaProtocolMessages.h"
|
||||||
|
#include "CayaUtils.h"
|
||||||
#include "RosterItem.h"
|
#include "RosterItem.h"
|
||||||
#include "RosterListView.h"
|
#include "RosterListView.h"
|
||||||
#include "RosterView.h"
|
#include "RosterView.h"
|
||||||
#include "Server.h"
|
|
||||||
|
|
||||||
|
|
||||||
const uint32 kSendMessage = 'RWSM';
|
const uint32 kSendMessage = 'RWSM';
|
||||||
|
const uint32 kSelAccount = 'RWSA';
|
||||||
|
const uint32 kSelNoAccount = 'RWNA';
|
||||||
|
|
||||||
|
|
||||||
RosterWindow::RosterWindow(const char* title, BMessage* selectMsg,
|
RosterWindow::RosterWindow(const char* title, BMessage* selectMsg,
|
||||||
BMessenger* messenger, Server* server)
|
BMessenger* messenger, Server* server, bigtime_t instance)
|
||||||
:
|
:
|
||||||
BWindow(BRect(0, 0, 300, 400), title, B_FLOATING_WINDOW, 0),
|
BWindow(BRect(0, 0, 300, 400), title, B_FLOATING_WINDOW, 0),
|
||||||
fTarget(messenger),
|
fTarget(messenger),
|
||||||
fMessage(selectMsg),
|
fMessage(selectMsg),
|
||||||
|
fAccounts(server->GetAccounts()),
|
||||||
fServer(server)
|
fServer(server)
|
||||||
{
|
{
|
||||||
fRosterView = new RosterView("buddyView", server);
|
fRosterView = new RosterView("buddyView", server, instance),
|
||||||
fRosterView->SetInvocationMessage(new BMessage(kSendMessage));
|
fRosterView->SetInvocationMessage(new BMessage(kSendMessage));
|
||||||
|
|
||||||
|
fOkButton = new BButton("OK", new BMessage(kSendMessage));
|
||||||
|
fAccountField = new BMenuField("accountMenuField", NULL,
|
||||||
|
CreateAccountMenu(fAccounts, BMessage(kSelAccount),
|
||||||
|
new BMessage(kSelNoAccount)));
|
||||||
|
|
||||||
BLayoutBuilder::Group<>(this, B_VERTICAL, 0.0f)
|
BLayoutBuilder::Group<>(this, B_VERTICAL, 0.0f)
|
||||||
.AddGroup(B_VERTICAL)
|
.SetInsets(B_USE_DEFAULT_SPACING)
|
||||||
.SetInsets(5, 5, 5, 10)
|
.Add(fRosterView)
|
||||||
.Add(fRosterView)
|
.AddGroup(B_HORIZONTAL)
|
||||||
|
.Add(fAccountField)
|
||||||
|
.AddGlue()
|
||||||
|
.Add(new BButton("Cancel", new BMessage(B_QUIT_REQUESTED)))
|
||||||
|
.Add(fOkButton)
|
||||||
.End()
|
.End()
|
||||||
.End();
|
.End();
|
||||||
|
|
||||||
CenterOnScreen();
|
CenterOnScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -68,9 +80,19 @@ RosterWindow::MessageReceived(BMessage* message)
|
||||||
fMessage->AddInt64("instance", user->GetProtocolLooper()->GetInstance());
|
fMessage->AddInt64("instance", user->GetProtocolLooper()->GetInstance());
|
||||||
fTarget->SendMessage(fMessage);
|
fTarget->SendMessage(fMessage);
|
||||||
PostMessage(B_QUIT_REQUESTED);
|
PostMessage(B_QUIT_REQUESTED);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case kSelAccount:
|
||||||
|
{
|
||||||
|
int index = message->FindInt32("index") - 1;
|
||||||
|
if (index < 0 || index > (fAccounts.CountItems() - 1))
|
||||||
|
return;
|
||||||
|
fRosterView->SetAccount(fAccounts.ValueAt(index));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case kSelNoAccount:
|
||||||
|
fRosterView->SetAccount(-1);
|
||||||
|
break;
|
||||||
case IM_MESSAGE:
|
case IM_MESSAGE:
|
||||||
fRosterView->MessageReceived(message);
|
fRosterView->MessageReceived(message);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -14,9 +14,11 @@
|
||||||
|
|
||||||
#include <Window.h>
|
#include <Window.h>
|
||||||
|
|
||||||
|
#include "Server.h"
|
||||||
|
|
||||||
|
class BMenuField;
|
||||||
class RosterItem;
|
class RosterItem;
|
||||||
class RosterView;
|
class RosterView;
|
||||||
class Server;
|
|
||||||
|
|
||||||
|
|
||||||
/* A window with the a list of the user's contacts, will send a message to
|
/* A window with the a list of the user's contacts, will send a message to
|
||||||
|
@ -24,14 +26,19 @@ class Server;
|
||||||
class RosterWindow : public BWindow {
|
class RosterWindow : public BWindow {
|
||||||
public:
|
public:
|
||||||
RosterWindow(const char* title, BMessage* selectMsg, BMessenger* messenger,
|
RosterWindow(const char* title, BMessage* selectMsg, BMessenger* messenger,
|
||||||
Server* server);
|
Server* server, bigtime_t instance = -1);
|
||||||
|
|
||||||
void MessageReceived(BMessage* message);
|
void MessageReceived(BMessage* message);
|
||||||
|
|
||||||
void UpdateListItem(RosterItem* item);
|
void UpdateListItem(RosterItem* item);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
BButton* fOkButton;
|
||||||
|
BMenuField* fAccountField;
|
||||||
|
AccountInstances fAccounts;
|
||||||
|
|
||||||
Server* fServer;
|
Server* fServer;
|
||||||
|
|
||||||
RosterView* fRosterView;
|
RosterView* fRosterView;
|
||||||
BMessenger* fTarget;
|
BMessenger* fTarget;
|
||||||
BMessage* fMessage;
|
BMessage* fMessage;
|
||||||
|
|
Ŝarĝante…
Reference in New Issue