* Add Behavior tab in Preferences with options in ticket #476
* Implement enabled ones * Add canditate preferences * Implement singleton-like preferences class CayaPreferences. These are working but they are not stored in file at closing
This commit is contained in:
parent
8d1c0d1a9d
commit
818c28d43d
|
@ -17,6 +17,7 @@
|
||||||
#include "RosterItem.h"
|
#include "RosterItem.h"
|
||||||
#include "WindowsManager.h"
|
#include "WindowsManager.h"
|
||||||
|
|
||||||
|
#include "CayaPreferences.h"
|
||||||
|
|
||||||
ContactLinker::ContactLinker(BString id, BMessenger msgn)
|
ContactLinker::ContactLinker(BString id, BMessenger msgn)
|
||||||
: fChatWindow(NULL),
|
: fChatWindow(NULL),
|
||||||
|
@ -37,7 +38,7 @@ ContactLinker::ContactLinker(BString id, BMessenger msgn)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ChatWindow*
|
ChatWindow*
|
||||||
ContactLinker::GetChatWindow()
|
ContactLinker::GetChatWindow()
|
||||||
{
|
{
|
||||||
if (fChatWindow == NULL)
|
if (fChatWindow == NULL)
|
||||||
|
@ -46,7 +47,7 @@ ContactLinker::GetChatWindow()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ContactLinker::DeleteWindow()
|
ContactLinker::DeleteWindow()
|
||||||
{
|
{
|
||||||
if (fChatWindow != NULL) {
|
if (fChatWindow != NULL) {
|
||||||
|
@ -64,10 +65,15 @@ ContactLinker::ShowWindow()
|
||||||
{
|
{
|
||||||
if (fChatWindow == NULL)
|
if (fChatWindow == NULL)
|
||||||
CreateChatWindow();
|
CreateChatWindow();
|
||||||
fChatWindow->SetWorkspaces(B_CURRENT_WORKSPACE);
|
|
||||||
|
if (CayaPreferences::Item()->MoveToCurrentWorkspace)
|
||||||
|
fChatWindow->SetWorkspaces(B_CURRENT_WORKSPACE);
|
||||||
|
|
||||||
if (fChatWindow->IsHidden())
|
if (fChatWindow->IsHidden())
|
||||||
fChatWindow->Show();
|
fChatWindow->Show();
|
||||||
fChatWindow->Activate(true);
|
|
||||||
|
if (CayaPreferences::Item()->ActivateWindow)
|
||||||
|
fChatWindow->Activate(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,8 +151,8 @@ ContactLinker::SetProtocolLooper(ProtocolLooper* looper)
|
||||||
|
|
||||||
void
|
void
|
||||||
ContactLinker::SetNotifyName(BString name)
|
ContactLinker::SetNotifyName(BString name)
|
||||||
{
|
{
|
||||||
if (fName.Compare(name) != 0) {
|
if (fName.Compare(name) != 0) {
|
||||||
fName = name;
|
fName = name;
|
||||||
NotifyString(STR_CONTACT_NAME, name);
|
NotifyString(STR_CONTACT_NAME, name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,7 @@ Application Caya :
|
||||||
AccountView.cpp
|
AccountView.cpp
|
||||||
PreferencesDialog.cpp
|
PreferencesDialog.cpp
|
||||||
PreferencesAccounts.cpp
|
PreferencesAccounts.cpp
|
||||||
|
PreferencesBehavior.cpp
|
||||||
|
|
||||||
# views
|
# views
|
||||||
ContactPopUp.cpp
|
ContactPopUp.cpp
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010, Oliver Ruiz Dorantes. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef _CAYA_PREFERENCES_H
|
||||||
|
#define _CAYA_PREFERENCES_H
|
||||||
|
|
||||||
|
#include "PreferencesContainer.h"
|
||||||
|
|
||||||
|
typedef struct CayaPreferencesData
|
||||||
|
{
|
||||||
|
bool MoveToCurrentWorkspace;
|
||||||
|
bool ActivateWindow;
|
||||||
|
// Add here as much fields as desired
|
||||||
|
|
||||||
|
CayaPreferencesData()
|
||||||
|
:
|
||||||
|
MoveToCurrentWorkspace(true),
|
||||||
|
ActivateWindow(true)
|
||||||
|
// Add here its default values
|
||||||
|
{ }
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef PreferencesContainer<CayaPreferencesData> CayaPreferences;
|
||||||
|
|
||||||
|
#endif // _CAYA_PREFERENCES_H
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
* 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';
|
||||||
|
|
||||||
|
PreferencesBehavior::PreferencesBehavior()
|
||||||
|
: BView("Behavior", B_WILL_DRAW)
|
||||||
|
{
|
||||||
|
|
||||||
|
fOnIncomming = new BStringView("onIncomming", "On incomming message ... ");
|
||||||
|
fOnIncomming->SetExplicitAlignment(BAlignment(B_ALIGN_LEFT, B_ALIGN_MIDDLE));
|
||||||
|
fOnIncomming->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
|
||||||
|
|
||||||
|
fHideEmoticons = new BCheckBox("HideEmoticons",
|
||||||
|
"Hide Emoticons", NULL);
|
||||||
|
fHideEmoticons->SetEnabled(false); // not implemented
|
||||||
|
|
||||||
|
fMarkUnreadWindow = new BCheckBox("MarkUnreadWindow",
|
||||||
|
"Mark unread window chat", NULL);
|
||||||
|
fMarkUnreadWindow->SetEnabled(false); // not implemented
|
||||||
|
|
||||||
|
const float spacing = be_control_look->DefaultItemSpacing();
|
||||||
|
|
||||||
|
SetLayout(new BGroupLayout(B_HORIZONTAL, spacing));
|
||||||
|
AddChild(BGroupLayoutBuilder(B_VERTICAL)
|
||||||
|
.Add(fOnIncomming)
|
||||||
|
.AddGroup(B_VERTICAL, spacing)
|
||||||
|
.Add(fToCurrentWorkspace)
|
||||||
|
.Add(fActivateChatWindow)
|
||||||
|
.Add(fMarkUnreadWindow)
|
||||||
|
.Add(fPlaySoundOnMessageReceived)
|
||||||
|
.SetInsets(spacing * 2, spacing, spacing * 5, spacing)
|
||||||
|
.End()
|
||||||
|
.Add(fHideEmoticons)
|
||||||
|
.SetInsets(spacing, spacing, spacing, spacing)
|
||||||
|
.End()
|
||||||
|
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
PreferencesBehavior::AttachedToWindow()
|
||||||
|
{
|
||||||
|
fToCurrentWorkspace->SetTarget(this);
|
||||||
|
fActivateChatWindow->SetTarget(this);
|
||||||
|
|
||||||
|
fToCurrentWorkspace->SetValue(CayaPreferences::Item()->MoveToCurrentWorkspace);
|
||||||
|
fActivateChatWindow->SetValue(CayaPreferences::Item()->ActivateWindow);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
PreferencesBehavior::MessageReceived(BMessage* message)
|
||||||
|
{
|
||||||
|
switch (message->what) {
|
||||||
|
case kToCurrentWorkspace:
|
||||||
|
CayaPreferences::Item()->MoveToCurrentWorkspace = fToCurrentWorkspace->Value();
|
||||||
|
break;
|
||||||
|
case kActivateChatWindow:
|
||||||
|
CayaPreferences::Item()->ActivateWindow = fActivateChatWindow->Value();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
BView::MessageReceived(message);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010, Oliver Ruiz Dorantes. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef _PREFERENCES_BEHAVIOR_H
|
||||||
|
#define _PREFERENCES_BEHAVIOR_H
|
||||||
|
|
||||||
|
#include <View.h>
|
||||||
|
|
||||||
|
class BCheckBox;
|
||||||
|
class BStringView;
|
||||||
|
|
||||||
|
class PreferencesBehavior : public BView {
|
||||||
|
public:
|
||||||
|
PreferencesBehavior();
|
||||||
|
|
||||||
|
virtual void AttachedToWindow();
|
||||||
|
virtual void MessageReceived(BMessage* msg);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
BStringView* fOnIncomming;
|
||||||
|
BCheckBox* fToCurrentWorkspace;
|
||||||
|
BCheckBox* fActivateChatWindow;
|
||||||
|
BCheckBox* fPlaySoundOnMessageReceived;
|
||||||
|
BCheckBox* fMarkUnreadWindow;
|
||||||
|
|
||||||
|
BCheckBox* fHideEmoticons;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _PREFERENCES_BEHAVIOR_H
|
|
@ -0,0 +1,36 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2010, Oliver Ruiz Dorantes. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef _PREFERENCES_CONTAINER_H
|
||||||
|
#define _PREFERENCES_CONTAINER_H
|
||||||
|
|
||||||
|
#include <libsupport/Singleton.h>
|
||||||
|
|
||||||
|
// TODO: added to main singleton class?
|
||||||
|
template<typename T> T* Singleton<T>::fInstance = 0;
|
||||||
|
|
||||||
|
|
||||||
|
template<class SettingsType>
|
||||||
|
class PreferencesContainer : public Singleton<PreferencesContainer<SettingsType> > {
|
||||||
|
|
||||||
|
public:
|
||||||
|
static const char* fFilename;
|
||||||
|
|
||||||
|
static SettingsType*
|
||||||
|
Item()
|
||||||
|
{
|
||||||
|
return &Get()->fSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
// status_t Save();
|
||||||
|
// status_t Load();
|
||||||
|
|
||||||
|
private:
|
||||||
|
SettingsType fSettings;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // _PREFERENCES_CONTAINER_H
|
|
@ -14,6 +14,7 @@
|
||||||
|
|
||||||
#include "PreferencesDialog.h"
|
#include "PreferencesDialog.h"
|
||||||
#include "PreferencesAccounts.h"
|
#include "PreferencesAccounts.h"
|
||||||
|
#include "PreferencesBehavior.h"
|
||||||
|
|
||||||
const uint32 kApply = 'SAVE';
|
const uint32 kApply = 'SAVE';
|
||||||
|
|
||||||
|
@ -24,6 +25,7 @@ PreferencesDialog::PreferencesDialog()
|
||||||
{
|
{
|
||||||
BTabView* tabView = new BTabView("tabView", B_WIDTH_AS_USUAL);
|
BTabView* tabView = new BTabView("tabView", B_WIDTH_AS_USUAL);
|
||||||
tabView->AddTab(new PreferencesAccounts());
|
tabView->AddTab(new PreferencesAccounts());
|
||||||
|
tabView->AddTab(new PreferencesBehavior());
|
||||||
|
|
||||||
BButton* ok = new BButton("OK", new BMessage(kApply));
|
BButton* ok = new BButton("OK", new BMessage(kApply));
|
||||||
|
|
||||||
|
|
Ŝarĝante…
Reference in New Issue