Enabled notifications using the BNotification API, including enable/disable settings. The plugins that support it are XMPP and MSN. Added another tab in the preferences window named Replicant and moved the replicant settings here.

This commit is contained in:
barrett 2012-03-08 22:55:13 +00:00
parent 2f417339f4
commit 8516381043
7 changed files with 56 additions and 53 deletions

View File

@ -44,6 +44,7 @@ Application Caya :
PreferencesDialog.cpp PreferencesDialog.cpp
PreferencesAccounts.cpp PreferencesAccounts.cpp
PreferencesBehavior.cpp PreferencesBehavior.cpp
PreferencesReplicant.cpp
PreferencesChatWindow.cpp PreferencesChatWindow.cpp
# views # views

View File

@ -289,7 +289,9 @@ MainWindow::ImMessage(BMessage* msg)
// Sort list view again // Sort list view again
fListView->Sort(); fListView->Sort();
#if 0 if (!CayaPreferences::Item()->NotifyContactStatus)
break;
switch (status) { switch (status) {
case CAYA_ONLINE: case CAYA_ONLINE:
case CAYA_OFFLINE: case CAYA_OFFLINE:
@ -314,7 +316,6 @@ MainWindow::ImMessage(BMessage* msg)
default: default:
break; break;
} }
#endif
} }
break; break;
} }

View File

@ -23,6 +23,7 @@
#include "ProtocolLooper.h" #include "ProtocolLooper.h"
#include "CayaMessages.h" #include "CayaMessages.h"
#include "CayaProtocol.h" #include "CayaProtocol.h"
#include "CayaPreferences.h"
#include "CayaProtocolMessages.h" #include "CayaProtocolMessages.h"
#include "ChatWindow.h" #include "ChatWindow.h"
#include "ImageCache.h" #include "ImageCache.h"
@ -97,7 +98,7 @@ Server::SendProtocolMessage(BMessage* msg)
looper->PostMessage(msg); looper->PostMessage(msg);
} }
} }
void void
Server::SendAllProtocolMessage(BMessage* msg) Server::SendAllProtocolMessage(BMessage* msg)
@ -343,7 +344,9 @@ Server::ImMessage(BMessage* msg)
return result; return result;
if (msg->FindFloat("progress", &progress) != B_OK) if (msg->FindFloat("progress", &progress) != B_OK)
return result; return result;
#if 0
if (!CayaPreferences::Item()->NotifyProtocolStatus)
break;
CayaProtocolAddOn* addOn CayaProtocolAddOn* addOn
= ProtocolManager::Get()->ProtocolAddOn(protocol); = ProtocolManager::Get()->ProtocolAddOn(protocol);
@ -355,7 +358,7 @@ Server::ImMessage(BMessage* msg)
notification.SetContent(message); notification.SetContent(message);
notification.SetProgress(progress); notification.SetProgress(progress);
notification.Send(); notification.Send();
#endif
break; break;
} }
case IM_NOTIFICATION: case IM_NOTIFICATION:
@ -374,17 +377,20 @@ Server::ImMessage(BMessage* msg)
if (msg->FindString("message", &message) != B_OK) if (msg->FindString("message", &message) != B_OK)
return result; return result;
#if 0 if (!CayaPreferences::Item()->NotifyProtocolStatus)
break;
CayaProtocolAddOn* addOn CayaProtocolAddOn* addOn
= ProtocolManager::Get()->ProtocolAddOn(protocol); = ProtocolManager::Get()->ProtocolAddOn(protocol);
BNotification notification((notification_type)type); BNotification notification((notification_type)type);
notification.SetGroup(BString("Caya")); notification.SetGroup(BString("Caya"));
notification.SetTitle(title); notification.SetTitle(title);
notification.SetIcon(addOn->Icon()); notification.SetIcon(addOn->Icon());
notification.SetContent(message); notification.SetContent(message);
notification.Send(); notification.Send();
#endif
break; break;
} }

View File

@ -11,17 +11,24 @@ typedef struct _CayaPreferencesData
{ {
bool MoveToCurrentWorkspace; bool MoveToCurrentWorkspace;
bool ActivateWindow; bool ActivateWindow;
bool IgnoreEmoticons;
bool HideCayaDeskbar; bool HideCayaDeskbar;
bool DisableReplicant; bool DisableReplicant;
bool IgnoreEmoticons;
bool NotifyProtocolStatus;
bool NotifyContactStatus;
_CayaPreferencesData() _CayaPreferencesData()
: :
MoveToCurrentWorkspace(true), MoveToCurrentWorkspace(true),
ActivateWindow(true), ActivateWindow(true),
IgnoreEmoticons(false),
HideCayaDeskbar(false), HideCayaDeskbar(false),
DisableReplicant(false) DisableReplicant(true),
IgnoreEmoticons(false),
NotifyProtocolStatus(true),
NotifyContactStatus(false)
{ {
} }
} CayaPreferencesData; } CayaPreferencesData;

View File

@ -25,10 +25,8 @@
const uint32 kToCurrentWorkspace = 'CBcw'; const uint32 kToCurrentWorkspace = 'CBcw';
const uint32 kActivateChatWindow = 'CBac'; const uint32 kActivateChatWindow = 'CBac';
const uint32 kDisableReplicant = 'DSrp'; const uint32 kNotifyProtocolsLogin = 'NTpl';
const uint32 kPermanentReplicant ='PRpt'; const uint32 kNotifyContactStatus = 'NTcl';
const uint32 kHideCayaDeskbar = 'HCtk';
PreferencesBehavior::PreferencesBehavior() PreferencesBehavior::PreferencesBehavior()
@ -60,19 +58,15 @@ PreferencesBehavior::PreferencesBehavior()
fMarkUnreadReplicant->SetEnabled(false); fMarkUnreadReplicant->SetEnabled(false);
// not implemented // not implemented
fReplicantString = new BStringView("ReplicantString", "Deskbar Replicant"); fNotifications = new BStringView("notifications", "Deskbar Notifications");
fReplicantString->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_MIDDLE)); fNotifications->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_MIDDLE));
fReplicantString->SetFont(be_bold_font); fNotifications->SetFont(be_bold_font);
fDisableReplicant = new BCheckBox("DisableReplicant", fNotifyProtocols = new BCheckBox("EnableProtocolNotify",
"Disable Deskbar replicant", new BMessage(kDisableReplicant)); "Enable protocol status notifications",new BMessage(kNotifyProtocolsLogin));
fPermanentReplicant = new BCheckBox("PermanentReplicant", fNotifyContactStatus = new BCheckBox("EnableContactNotify",
"Permanent Deskbar Replicant", NULL); "Enable contact status notifications",new BMessage(kNotifyContactStatus));
fPermanentReplicant->SetEnabled(false);
fHideCayaDeskbar = new BCheckBox("HideCayaDeskbar",
"Hide Caya field in Deskbar", new BMessage(kHideCayaDeskbar));
const float spacing = be_control_look->DefaultItemSpacing(); const float spacing = be_control_look->DefaultItemSpacing();
@ -85,14 +79,13 @@ PreferencesBehavior::PreferencesBehavior()
.Add(fMarkUnreadWindow) .Add(fMarkUnreadWindow)
.Add(fMarkUnreadReplicant) .Add(fMarkUnreadReplicant)
.Add(fPlaySoundOnMessageReceived) .Add(fPlaySoundOnMessageReceived)
.SetInsets(spacing * 2, spacing, spacing, spacing) . SetInsets(spacing * 2, spacing, spacing, spacing)
.End() .End()
.Add(fReplicantString) .Add(fNotifications)
.AddGroup(B_VERTICAL, spacing) .AddGroup(B_VERTICAL, spacing)
.Add(fDisableReplicant) .Add(fNotifyProtocols)
.Add(fPermanentReplicant) .Add(fNotifyContactStatus)
.Add(fHideCayaDeskbar) . SetInsets(spacing * 2, spacing, spacing, spacing)
.SetInsets(spacing * 2, spacing, spacing, spacing)
.End() .End()
.AddGlue() .AddGlue()
.SetInsets(spacing, spacing, spacing, spacing) .SetInsets(spacing, spacing, spacing, spacing)
@ -106,17 +99,17 @@ PreferencesBehavior::AttachedToWindow()
{ {
fToCurrentWorkspace->SetTarget(this); fToCurrentWorkspace->SetTarget(this);
fActivateChatWindow->SetTarget(this); fActivateChatWindow->SetTarget(this);
fHideCayaDeskbar->SetTarget(this); fNotifyProtocols->SetTarget(this);
fDisableReplicant->SetTarget(this); fNotifyContactStatus->SetTarget(this);
fToCurrentWorkspace->SetValue( fToCurrentWorkspace->SetValue(
CayaPreferences::Item()->MoveToCurrentWorkspace); CayaPreferences::Item()->MoveToCurrentWorkspace);
fActivateChatWindow->SetValue( fActivateChatWindow->SetValue(
CayaPreferences::Item()->ActivateWindow); CayaPreferences::Item()->ActivateWindow);
fHideCayaDeskbar->SetValue( fNotifyProtocols->SetValue(
CayaPreferences::Item()->HideCayaDeskbar); CayaPreferences::Item()->NotifyProtocolStatus);
fDisableReplicant->SetValue( fNotifyContactStatus->SetValue(
CayaPreferences::Item()->DisableReplicant); CayaPreferences::Item()->NotifyContactStatus);
} }
@ -132,19 +125,13 @@ PreferencesBehavior::MessageReceived(BMessage* message)
CayaPreferences::Item()->ActivateWindow CayaPreferences::Item()->ActivateWindow
= fActivateChatWindow->Value(); = fActivateChatWindow->Value();
break; break;
case kHideCayaDeskbar: case kNotifyProtocolsLogin:
CayaPreferences::Item()->HideCayaDeskbar CayaPreferences::Item()->NotifyProtocolStatus
= fHideCayaDeskbar->Value(); = fNotifyProtocols->Value();
break; break;
case kDisableReplicant: case kNotifyContactStatus:
CayaPreferences::Item()->DisableReplicant CayaPreferences::Item()->NotifyContactStatus
= fDisableReplicant->Value(); = fNotifyContactStatus->Value();
if (fDisableReplicant->Value() == true)
ReplicantStatusView::RemoveReplicant();
else
ReplicantStatusView::InstallReplicant();
break; break;
default: default:
BView::MessageReceived(message); BView::MessageReceived(message);

View File

@ -27,10 +27,9 @@ private:
BCheckBox* fMarkUnreadWindow; BCheckBox* fMarkUnreadWindow;
BCheckBox* fMarkUnreadReplicant; BCheckBox* fMarkUnreadReplicant;
BStringView* fReplicantString; BStringView* fNotifications;
BCheckBox* fDisableReplicant; BCheckBox* fNotifyProtocols;
BCheckBox* fPermanentReplicant; BCheckBox* fNotifyContactStatus;
BCheckBox* fHideCayaDeskbar;
}; };

View File

@ -15,6 +15,7 @@
#include "PreferencesAccounts.h" #include "PreferencesAccounts.h"
#include "PreferencesBehavior.h" #include "PreferencesBehavior.h"
#include "PreferencesChatWindow.h" #include "PreferencesChatWindow.h"
#include "PreferencesReplicant.h"
const uint32 kApply = 'SAVE'; const uint32 kApply = 'SAVE';
@ -27,6 +28,7 @@ PreferencesDialog::PreferencesDialog()
tabView->AddTab(new PreferencesAccounts()); tabView->AddTab(new PreferencesAccounts());
tabView->AddTab(new PreferencesBehavior()); tabView->AddTab(new PreferencesBehavior());
tabView->AddTab(new PreferencesChatWindow()); tabView->AddTab(new PreferencesChatWindow());
tabView->AddTab(new PreferencesReplicant());
BButton* ok = new BButton("OK", new BMessage(kApply)); BButton* ok = new BButton("OK", new BMessage(kApply));