Chat-O-Matic/application/preferences/PreferencesBehavior.cpp

130 lines
3.4 KiB
C++
Raw Normal View History

/*
* Copyright 2010, Oliver Ruiz Dorantes. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#include <Button.h>
#include <CheckBox.h>
#include <ControlLook.h>
#include <GroupLayout.h>
#include <GroupLayoutBuilder.h>
#include <ScrollView.h>
#include <StringView.h>
#include "CayaProtocol.h"
#include "PreferencesBehavior.h"
#include "CayaPreferences.h"
#include "ProtocolManager.h"
#include "ProtocolSettings.h"
#include "MainWindow.h"
#include "TheApp.h"
const uint32 kToCurrentWorkspace = 'CBcw';
const uint32 kActivateChatWindow = 'CBac';
const uint32 kIgnoreEmoticons = 'CBhe';
PreferencesBehavior::PreferencesBehavior()
: BView("Behavior", B_WILL_DRAW)
{
2010-05-30 17:02:50 -05:00
fOnIncoming = new BStringView("onIncoming", "On incoming message...");
2010-05-30 17:00:09 -05:00
fOnIncoming->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_MIDDLE));
fOnIncoming->SetFont(be_bold_font);
fToCurrentWorkspace = new BCheckBox("ToCurrentWorkspace",
"Move window to current workspace",
new BMessage(kToCurrentWorkspace));
fActivateChatWindow = new BCheckBox("ActivateChatWindow",
"Get focus ",
new BMessage(kActivateChatWindow));
fPlaySoundOnMessageReceived = new BCheckBox("PlaySoundOnMessageReceived",
"Play sound event", NULL);
fPlaySoundOnMessageReceived->SetEnabled(false); // not implemented
fIgnoreEmoticons = new BCheckBox("IgnoreEmoticons",
"Ignore Emoticons",
new BMessage(kIgnoreEmoticons));
fIgnoreEmoticons->SetEnabled(true);
fMarkUnreadWindow = new BCheckBox("MarkUnreadWindow",
"Mark unread window chat", NULL);
2010-05-30 17:00:09 -05:00
fMarkUnreadWindow->SetEnabled(false);
// not implemented
fDisableReplicant = new BCheckBox("DisableReplicant",
"Disable Deskbar replicant", NULL);
fDisableReplicant->SetEnabled(true);
fPermanentReplicant = new BCheckBox("PermanentReplicant",
"Permanent Deskbar Replicant", NULL);
fPermanentReplicant->SetEnabled(true);
fHideCayaTracker = new BCheckBox("HideCayaTracker",
"Hide Caya in Tracker", NULL);
fHideCayaTracker->SetEnabled(false);
const float spacing = be_control_look->DefaultItemSpacing();
SetLayout(new BGroupLayout(B_HORIZONTAL, spacing));
AddChild(BGroupLayoutBuilder(B_VERTICAL)
2010-05-30 17:00:09 -05:00
.Add(fOnIncoming)
.AddGroup(B_VERTICAL, spacing)
.Add(fToCurrentWorkspace)
.Add(fActivateChatWindow)
.Add(fMarkUnreadWindow)
.Add(fPlaySoundOnMessageReceived)
.Add(fDisableReplicant)
.Add(fPermanentReplicant)
.Add(fHideCayaTracker)
2010-05-19 17:06:25 -05:00
.SetInsets(spacing * 2, spacing, spacing, spacing)
.End()
.Add(fIgnoreEmoticons)
2010-05-19 17:06:25 -05:00
.AddGlue()
.SetInsets(spacing, spacing, spacing, spacing)
.TopView()
);
}
void
PreferencesBehavior::AttachedToWindow()
{
fToCurrentWorkspace->SetTarget(this);
fActivateChatWindow->SetTarget(this);
fIgnoreEmoticons->SetTarget(this);
fToCurrentWorkspace->SetValue(
CayaPreferences::Item()->MoveToCurrentWorkspace);
fActivateChatWindow->SetValue(
CayaPreferences::Item()->ActivateWindow);
fIgnoreEmoticons->SetValue(
CayaPreferences::Item()->IgnoreEmoticons);
}
void
PreferencesBehavior::MessageReceived(BMessage* message)
{
switch (message->what) {
case kToCurrentWorkspace:
CayaPreferences::Item()->MoveToCurrentWorkspace
= fToCurrentWorkspace->Value();
break;
case kActivateChatWindow:
CayaPreferences::Item()->ActivateWindow
= fActivateChatWindow->Value();
break;
case kIgnoreEmoticons:
CayaPreferences::Item()->IgnoreEmoticons
= fIgnoreEmoticons->Value();
break;
default:
BView::MessageReceived(message);
}
}