Files
haiku-beta6/src/apps/pulse/PrefsWindow.cpp
T
shatty 285c5708a2 fixed newline at end of file.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1220 a95241bf-73f2-0310-859d-f6bbb57e9c96
2002-09-28 00:54:25 +00:00

99 lines
2.8 KiB
C++

//****************************************************************************************
//
// File: PrefsWindow.cpp
//
// Written by: Daniel Switkin
//
// Copyright 1999, Be Incorporated
//
//****************************************************************************************
#include "PrefsWindow.h"
#include "Common.h"
#include "PulseApp.h"
#include "BottomPrefsView.h"
#include "ConfigView.h"
#include <interface/TabView.h>
#include <interface/TextControl.h>
#include <interface/Box.h>
#include <stdlib.h>
#include <stdio.h>
PrefsWindow::PrefsWindow(BRect rect, const char *name, BMessenger *messenger, Prefs *prefs) :
BWindow(rect, name, B_TITLED_WINDOW, B_NOT_RESIZABLE | B_NOT_ZOOMABLE |
B_NOT_MINIMIZABLE | B_ASYNCHRONOUS_CONTROLS) {
this->messenger = messenger;
this->prefs = prefs;
// This gives a nice look, and sets the background color correctly
BRect bounds = Bounds();
BBox *parent = new BBox(bounds, "ParentView", B_FOLLOW_NONE, B_PLAIN_BORDER);
AddChild(parent);
bounds.top += 10;
bounds.bottom -= 45;
BTabView *tabview = new BTabView(bounds, "TabView");
tabview->SetFont(be_plain_font);
tabview->SetViewColor(parent->ViewColor());
tabview->ContainerView()->SetViewColor(parent->ViewColor());
parent->AddChild(tabview);
BRect viewsize = tabview->ContainerView()->Bounds();
viewsize.InsetBy(5, 5);
ConfigView *normal = new ConfigView(viewsize, "Normal Mode", NORMAL_WINDOW_MODE, prefs);
normal->SetViewColor(tabview->ViewColor());
tabview->AddTab(normal);
ConfigView *mini = new ConfigView(viewsize, "Mini Mode", MINI_WINDOW_MODE, prefs);
mini->SetViewColor(tabview->ViewColor());
tabview->AddTab(mini);
ConfigView *deskbar = new ConfigView(viewsize, "Deskbar Mode", DESKBAR_MODE, prefs);
deskbar->SetViewColor(tabview->ViewColor());
tabview->AddTab(deskbar);
tabview->Select(0);
bounds.top = bounds.bottom + 1;
bounds.bottom += 45;
BottomPrefsView *bottomprefsview = new BottomPrefsView(bounds, "BottomPrefsView");
parent->AddChild(bottomprefsview);
}
void PrefsWindow::MessageReceived(BMessage *message) {
switch (message->what) {
case PRV_BOTTOM_OK: {
Hide();
BTabView *tabview = (BTabView *)FindView("TabView");
tabview->Select(2);
ConfigView *deskbar = (ConfigView *)FindView("Deskbar Mode");
deskbar->UpdateDeskbarIconWidth();
if (Lock()) Quit();
break;
}
case PRV_BOTTOM_DEFAULTS: {
BTabView *tabview = (BTabView *)FindView("TabView");
BTab *tab = tabview->TabAt(tabview->Selection());
BView *view = tab->View();
view->MessageReceived(message);
break;
}
default:
BWindow::MessageReceived(message);
break;
}
}
void PrefsWindow::Quit() {
messenger->SendMessage(new BMessage(PRV_QUIT));
BWindow::Quit();
}
PrefsWindow::~PrefsWindow() {
prefs->prefs_window_rect = Frame();
prefs->Save();
delete messenger;
}