* More NULL checks for ContactLinkers.

* When you edit an account in the preferences dialog, this is not readded to the list anymore and so its login is not triggered another time.
This commit is contained in:
plfiorini 2010-05-30 04:28:04 +00:00
parent 9d075c91a0
commit 95657d52ba
5 changed files with 29 additions and 23 deletions

View File

@ -240,6 +240,7 @@ MainWindow::ImMessage(BMessage* msg)
}
case IM_AVATAR_SET:
case IM_CONTACT_INFO:
case IM_EXTENDED_CONTACT_INFO:
{
RosterItem* rosterItem
= fServer->RosterItemForId(msg->FindString("id"));

View File

@ -219,15 +219,18 @@ Server::ImMessage(BMessage* msg)
return B_SKIP_MESSAGE;
ContactLinker* linker = _EnsureContactLinker(msg);
if (linker) {
linker->SetNotifyStatus((CayaStatus)status);
linker->SetNotifyPersonalStatus(msg->FindString("message"));
}
if (!linker)
break;
linker->SetNotifyStatus((CayaStatus)status);
linker->SetNotifyPersonalStatus(msg->FindString("message"));
break;
}
case IM_CONTACT_INFO:
{
ContactLinker* linker = _EnsureContactLinker(msg);
if (!linker)
break;
const char* name = NULL;
@ -239,9 +242,11 @@ Server::ImMessage(BMessage* msg)
case IM_EXTENDED_CONTACT_INFO:
{
ContactLinker* linker = _EnsureContactLinker(msg);
if (!linker)
break;
if (linker->GetName().Length() > 0)
return result;
break;
const char* name = NULL;
@ -253,17 +258,16 @@ Server::ImMessage(BMessage* msg)
case IM_AVATAR_SET:
{
ContactLinker* linker = _EnsureContactLinker(msg);
if (!linker)
break;
entry_ref ref;
if (linker) {
if (msg->FindRef("ref", &ref) == B_OK) {
// BPath fullPath(&ref);
// BBitmap* bitmap = ImageCache::GetImage(
// BString(fullPath.Path()), BString(fullPath.Path()));
BBitmap* bitmap = BTranslationUtils::GetBitmap(&ref);
linker->SetNotifyAvatarBitmap(bitmap);
} else
linker->SetNotifyAvatarBitmap(NULL);
}
if (msg->FindRef("ref", &ref) == B_OK) {
BBitmap* bitmap = BTranslationUtils::GetBitmap(&ref);
linker->SetNotifyAvatarBitmap(bitmap);
} else
linker->SetNotifyAvatarBitmap(NULL);
break;
}
case IM_SEND_MESSAGE: {

View File

@ -84,9 +84,10 @@ AccountDialog::MessageReceived(BMessage* msg)
{
switch (msg->what) {
case kOK: {
// Are we renaming settings?
// Are we renaming or adding?
bool renaming = ((fAccount.Length() > 0)
&& (fAccount != fAccountName->Text()));
bool adding = fAccount.Length() == 0;
// Rename account settings
if (renaming) {
@ -102,9 +103,9 @@ AccountDialog::MessageReceived(BMessage* msg)
// Save account settings
if (fSettings->Save(fAccountName->Text(), fTop) == B_OK) {
if (fTarget) {
if (fTarget && (adding || renaming)) {
BMessage* saveMsg = new BMessage(renaming
? kAccountRenamed : kAccountSaved);
? kAccountRenamed : kAccountAdded);
saveMsg->AddPointer("settings", fSettings);
if (renaming) {
saveMsg->AddString("from", fAccount.String());

View File

@ -13,8 +13,8 @@ class BTextControl;
class AccountView;
class ProtocolSettings;
const uint32 kAccountSaved = 'acsd';
const uint32 kAccountRenamed = 'acrd';
const uint32 kAccountAdded = 'acad';
const uint32 kAccountRenamed = 'acrd';
class AccountDialog : public BWindow {
public:

View File

@ -164,7 +164,7 @@ PreferencesAccounts::MessageReceived(BMessage* msg)
}
break;
}
case kAccountSaved:
case kAccountAdded:
case kAccountRenamed: {
void* pointer = NULL;
BString account;
@ -172,7 +172,7 @@ PreferencesAccounts::MessageReceived(BMessage* msg)
if (msg->FindPointer("settings", &pointer) != B_OK)
return;
if (msg->what == kAccountSaved) {
if (msg->what == kAccountAdded) {
if (msg->FindString("account", &account) != B_OK)
return;
} else {
@ -187,7 +187,7 @@ PreferencesAccounts::MessageReceived(BMessage* msg)
if (!settings)
return;
if (msg->what == kAccountSaved) {
if (msg->what == kAccountAdded) {
// Add list item
AccountListItem* listItem
= new AccountListItem(settings, account.String());