* 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 "WindowsManager.h"
|
||||
|
||||
#include "CayaPreferences.h"
|
||||
|
||||
ContactLinker::ContactLinker(BString id, BMessenger msgn)
|
||||
: fChatWindow(NULL),
|
||||
|
@ -37,7 +38,7 @@ ContactLinker::ContactLinker(BString id, BMessenger msgn)
|
|||
}
|
||||
|
||||
|
||||
ChatWindow*
|
||||
ChatWindow*
|
||||
ContactLinker::GetChatWindow()
|
||||
{
|
||||
if (fChatWindow == NULL)
|
||||
|
@ -46,7 +47,7 @@ ContactLinker::GetChatWindow()
|
|||
}
|
||||
|
||||
|
||||
void
|
||||
void
|
||||
ContactLinker::DeleteWindow()
|
||||
{
|
||||
if (fChatWindow != NULL) {
|
||||
|
@ -64,10 +65,15 @@ ContactLinker::ShowWindow()
|
|||
{
|
||||
if (fChatWindow == NULL)
|
||||
CreateChatWindow();
|
||||
fChatWindow->SetWorkspaces(B_CURRENT_WORKSPACE);
|
||||
|
||||
if (CayaPreferences::Item()->MoveToCurrentWorkspace)
|
||||
fChatWindow->SetWorkspaces(B_CURRENT_WORKSPACE);
|
||||
|
||||
if (fChatWindow->IsHidden())
|
||||
fChatWindow->Show();
|
||||
fChatWindow->Activate(true);
|
||||
|
||||
if (CayaPreferences::Item()->ActivateWindow)
|
||||
fChatWindow->Activate(true);
|
||||
}
|
||||
|
||||
|
||||
|
@ -145,8 +151,8 @@ ContactLinker::SetProtocolLooper(ProtocolLooper* looper)
|
|||
|
||||
void
|
||||
ContactLinker::SetNotifyName(BString name)
|
||||
{
|
||||
if (fName.Compare(name) != 0) {
|
||||
{
|
||||
if (fName.Compare(name) != 0) {
|
||||
fName = name;
|
||||
NotifyString(STR_CONTACT_NAME, name);
|
||||
}
|
||||
|
|
|
@ -42,6 +42,7 @@ Application Caya :
|
|||
AccountView.cpp
|
||||
PreferencesDialog.cpp
|
||||
PreferencesAccounts.cpp
|
||||
PreferencesBehavior.cpp
|
||||
|
||||
# views
|
||||
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 "PreferencesAccounts.h"
|
||||
#include "PreferencesBehavior.h"
|
||||
|
||||
const uint32 kApply = 'SAVE';
|
||||
|
||||
|
@ -24,6 +25,7 @@ PreferencesDialog::PreferencesDialog()
|
|||
{
|
||||
BTabView* tabView = new BTabView("tabView", B_WIDTH_AS_USUAL);
|
||||
tabView->AddTab(new PreferencesAccounts());
|
||||
tabView->AddTab(new PreferencesBehavior());
|
||||
|
||||
BButton* ok = new BButton("OK", new BMessage(kApply));
|
||||
|
||||
|
|
Ŝarĝante…
Reference in New Issue