we now save the settings when test button is clicked

tabs are reworked to avoid data loss


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14105 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2005-09-02 15:15:37 +00:00
parent 4cbe4925ea
commit ae4f21862f
3 changed files with 42 additions and 35 deletions
@@ -10,9 +10,7 @@
#define PASSWORDWINDOW_H #define PASSWORDWINDOW_H
#include <Window.h> #include <Window.h>
#include <CheckBox.h>
#include <String.h> #include <String.h>
#include <Box.h>
#include <TextControl.h> #include <TextControl.h>
#include <Button.h> #include <Button.h>
#include <Constants.h> #include <Constants.h>
@@ -64,31 +64,31 @@ UnitsToSlider(bigtime_t val)
} }
class ModulesTab : public BTab class CustomTab : public BTab
{ {
public: public:
ModulesTab(ScreenSaverWin *win, BView *view = NULL); CustomTab(ScreenSaverWin *win, BView *view = NULL);
virtual ~ModulesTab(); virtual ~CustomTab();
virtual void Select(BView *view); virtual void Select(BView *view);
private: private:
ScreenSaverWin *fWin; ScreenSaverWin *fWin;
}; };
ModulesTab::ModulesTab(ScreenSaverWin *win, BView *view = NULL) CustomTab::CustomTab(ScreenSaverWin *win, BView *view = NULL)
: BTab(view), : BTab(view),
fWin(win) fWin(win)
{ {
} }
ModulesTab::~ModulesTab() CustomTab::~CustomTab()
{ {
} }
void void
ModulesTab::Select(BView *view) CustomTab::Select(BView *view)
{ {
BTab::Select(view); BTab::Select(view);
fWin->SelectCurrentModule(); fWin->SelectCurrentModule();
@@ -98,9 +98,10 @@ ModulesTab::Select(BView *view)
ScreenSaverWin::ScreenSaverWin() ScreenSaverWin::ScreenSaverWin()
: BWindow(BRect(50,50,496,375),"OBOS Screen Saver", : BWindow(BRect(50,50,496,375),"OBOS Screen Saver",
B_TITLED_WINDOW,B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_NOT_RESIZABLE) , B_TITLED_WINDOW,B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_NOT_RESIZABLE) ,
fFadeState(0),fNoFadeState(0), fFadeState(0),fNoFadeState(0), fListView1(NULL),
fSelectedAddonFileName(NULL), fSelectedAddonFileName(NULL),
fCurrentAddon(NULL), fTestButton(NULL), fCurrentAddon(NULL), fTestButton(NULL),
fEnableCheckbox(NULL),
fTurnOffMinutes(NULL), fRunMinutes(NULL), fTurnOffMinutes(NULL), fRunMinutes(NULL),
fPasswordMinutes(NULL), fPasswordButton(NULL), fPasswordMinutes(NULL), fPasswordButton(NULL),
fFadeNowString(NULL), fFadeNowString(NULL),
@@ -109,6 +110,7 @@ ScreenSaverWin::ScreenSaverWin()
fFadeNow(NULL),fFadeNever(NULL), fFadeNow(NULL),fFadeNever(NULL),
fPwMessenger(NULL), fFilePanel(NULL), fPwMessenger(NULL), fFilePanel(NULL),
fSettingsArea(NULL) fSettingsArea(NULL)
{ {
SetupForm(); SetupForm();
} }
@@ -125,6 +127,7 @@ ScreenSaverWin::SaverSelected()
{ {
CALLED(); CALLED();
UpdateStatus(); UpdateStatus();
fPrefs.SaveSettings();
if (fListView1->CurrentSelection()>=0) { if (fListView1->CurrentSelection()>=0) {
if (fPreviewDisplay->ScreenSaver()) if (fPreviewDisplay->ScreenSaver())
fPreviewDisplay->ScreenSaver()->StopConfig(); fPreviewDisplay->ScreenSaver()->StopConfig();
@@ -143,7 +146,7 @@ ScreenSaverWin::SaverSelected()
if (fPreviewDisplay->ScreenSaver()) if (fPreviewDisplay->ScreenSaver())
fPreviewDisplay->ScreenSaver()->StartConfig(fSettingsArea); fPreviewDisplay->ScreenSaver()->StartConfig(fSettingsArea);
} }
} }
@@ -256,7 +259,7 @@ ScreenSaverWin::SetupForm()
fFilePanel = new BFilePanel(); fFilePanel = new BFilePanel();
BRect r = Bounds(); BRect r = Bounds();
BTab *tab; BTab *tab1, *tab2;
// Create a background view // Create a background view
BView *background = new BView(r,"background",B_FOLLOW_NONE,0); BView *background = new BView(r,"background",B_FOLLOW_NONE,0);
@@ -274,28 +277,29 @@ ScreenSaverWin::SetupForm()
// Time to load the settings into a message and implement them... // Time to load the settings into a message and implement them...
fPrefs.LoadSettings(); fPrefs.LoadSettings();
tab = new BTab(); tab2 = new BTab();
fTab2 = new BView(r,"Fade",B_FOLLOW_NONE,0); fTab2 = new BView(r,"Fade",B_FOLLOW_NONE,0);
fTabView->AddTab(fTab2, tab); tab2->SetLabel("Fade");
tab->SetLabel("Fade");
tab = new ModulesTab(this); tab1 = new CustomTab(this);
fTab1 = new BView(r,"Modules",B_FOLLOW_NONE,0); fTab1 = new BView(r,"Modules",B_FOLLOW_NONE,0);
fTabView->AddTab(fTab1, tab); tab1->SetLabel("Modules");
tab->SetLabel("Modules");
background->AddChild(fTabView);
// Create the controls inside the tabs // Create the controls inside the tabs
SetupTab2(); SetupTab2();
SetupTab1(); SetupTab1();
fTabView->AddTab(fTab2, tab2);
fTabView->AddTab(fTab1, tab1);
background->AddChild(fTabView);
// Create the password editing window // Create the password editing window
fPwWin = new PasswordWindow(fPrefs); fPwWin = new PasswordWindow(fPrefs);
fPwMessenger = new BMessenger(NULL,fPwWin); fPwMessenger = new BMessenger(NULL,fPwWin);
fPwWin->Run(); fPwWin->Run();
MoveTo(fPrefs.WindowFrame().left,fPrefs.WindowFrame().top); MoveTo(fPrefs.WindowFrame().left,fPrefs.WindowFrame().top);
fTabView->Select(fPrefs.WindowTab());
fEnableCheckbox->SetValue(fPrefs.TimeFlags()); fEnableCheckbox->SetValue(fPrefs.TimeFlags());
fRunSlider->SetValue(UnitsToSlider(fPrefs.BlankTime())); fRunSlider->SetValue(UnitsToSlider(fPrefs.BlankTime()));
fTurnOffSlider->SetValue(UnitsToSlider(fPrefs.OffTime())); fTurnOffSlider->SetValue(UnitsToSlider(fPrefs.OffTime()));
@@ -303,6 +307,8 @@ ScreenSaverWin::SetupForm()
fFadeNever->setDirection(fPrefs.GetNeverBlankCorner()); fFadeNever->setDirection(fPrefs.GetNeverBlankCorner());
fPasswordCheckbox->SetValue(fPrefs.LockEnable()); fPasswordCheckbox->SetValue(fPrefs.LockEnable());
fPasswordSlider->SetValue(UnitsToSlider(fPrefs.PasswordTime())); fPasswordSlider->SetValue(UnitsToSlider(fPrefs.PasswordTime()));
fTabView->Select(fPrefs.WindowTab());
SelectCurrentModule(); SelectCurrentModule();
UpdateStatus(); UpdateStatus();
} }
@@ -311,17 +317,19 @@ ScreenSaverWin::SetupForm()
void void
ScreenSaverWin::SelectCurrentModule() ScreenSaverWin::SelectCurrentModule()
{ {
CALLED();
int32 count = fListView1->CountItems(); int32 count = fListView1->CountItems();
for (int32 i=0; i<count; i++) { for (int32 i=0; i<count; i++) {
ScreenSaverItem *item = dynamic_cast<ScreenSaverItem*>(fListView1->ItemAt(i)); ScreenSaverItem *item = dynamic_cast<ScreenSaverItem*>(fListView1->ItemAt(i));
if ((strcmp(fPrefs.ModuleName(), item->Text()) == 0) if ((strcmp(fPrefs.ModuleName(), item->Text()) == 0)
|| (strcmp(fPrefs.ModuleName(),"") == 0 && strcmp(item->Text(), "Blackness") ==0)) { || (strcmp(fPrefs.ModuleName(),"") == 0 && strcmp(item->Text(), "Blackness") ==0)) {
fListView1->Select(i); fListView1->Select(i);
SaverSelected(); SaverSelected();
fListView1->ScrollToSelection(); fListView1->ScrollToSelection();
break; break;
} }
} }
} }
@@ -454,12 +462,12 @@ ScreenSaverWin::SetupTab2()
// Run Module // Run Module
topEdge=26; topEdge=26;
fEnableScreenSaverBox->AddChild( fStringView1 = new BStringView(BRect(21,topEdge,101,topEdge+stringHeight),"StringView1","Run module")); fEnableScreenSaverBox->AddChild( fStringView1 = new BStringView(BRect(40,topEdge,101,topEdge+stringHeight),"StringView1","Run module"));
commonLookAndFeel(fStringView1,false,false); commonLookAndFeel(fStringView1,false,false);
fStringView1->SetText("Run module"); fStringView1->SetText("Run module");
fStringView1->SetAlignment(B_ALIGN_LEFT); fStringView1->SetAlignment(B_ALIGN_LEFT);
fEnableScreenSaverBox->AddChild( fRunSlider = new BSlider(BRect(132,topEdge,415,topEdge+sliderHeight),"RunSlider","minutes", new BMessage(kRunSliderChanged), 0, 25)); fEnableScreenSaverBox->AddChild( fRunSlider = new BSlider(BRect(135,topEdge,420,topEdge+sliderHeight),"RunSlider","minutes", new BMessage(kRunSliderChanged), 0, 25));
fRunSlider->SetModificationMessage(new BMessage(kRunSliderChanged)); fRunSlider->SetModificationMessage(new BMessage(kRunSliderChanged));
commonLookAndFeel(fRunSlider,true,true); commonLookAndFeel(fRunSlider,true,true);
float w,h; float w,h;
@@ -473,7 +481,7 @@ ScreenSaverWin::SetupTab2()
fTurnOffScreenCheckBox->SetLabel("Turn off screen"); fTurnOffScreenCheckBox->SetLabel("Turn off screen");
fTurnOffScreenCheckBox->SetResizingMode(B_FOLLOW_NONE); fTurnOffScreenCheckBox->SetResizingMode(B_FOLLOW_NONE);
fEnableScreenSaverBox->AddChild( fTurnOffSlider = new BSlider(BRect(132,topEdge,415,topEdge+sliderHeight),"TurnOffSlider","", new BMessage(kTurnOffSliderChanged), 0, 25)); fEnableScreenSaverBox->AddChild( fTurnOffSlider = new BSlider(BRect(135,topEdge,420,topEdge+sliderHeight),"TurnOffSlider","", new BMessage(kTurnOffSliderChanged), 0, 25));
fTurnOffSlider->SetModificationMessage(new BMessage(kTurnOffSliderChanged)); fTurnOffSlider->SetModificationMessage(new BMessage(kTurnOffSliderChanged));
commonLookAndFeel(fTurnOffSlider,true,true); commonLookAndFeel(fTurnOffSlider,true,true);
@@ -483,7 +491,7 @@ ScreenSaverWin::SetupTab2()
commonLookAndFeel(fPasswordCheckbox,false,true); commonLookAndFeel(fPasswordCheckbox,false,true);
fPasswordCheckbox->SetLabel("Password lock"); fPasswordCheckbox->SetLabel("Password lock");
fEnableScreenSaverBox->AddChild( fPasswordSlider = new BSlider(BRect(132,topEdge,415,topEdge+sliderHeight),"PasswordSlider","", new BMessage(kPasswordSliderChanged), 0, 25)); fEnableScreenSaverBox->AddChild( fPasswordSlider = new BSlider(BRect(135,topEdge,420,topEdge+sliderHeight),"PasswordSlider","", new BMessage(kPasswordSliderChanged), 0, 25));
fPasswordSlider->SetModificationMessage(new BMessage(kPasswordSliderChanged)); fPasswordSlider->SetModificationMessage(new BMessage(kPasswordSliderChanged));
commonLookAndFeel(fPasswordSlider,true,true); commonLookAndFeel(fPasswordSlider,true,true);
@@ -9,6 +9,7 @@
#ifndef _ScreenSaverWindow_H #ifndef _ScreenSaverWindow_H
#define _ScreenSaverWindow_H #define _ScreenSaverWindow_H
#include <CheckBox.h>
#include <FilePanel.h> #include <FilePanel.h>
#include "PasswordWindow.h" #include "PasswordWindow.h"
#include "ScreenSaverPrefs.h" #include "ScreenSaverPrefs.h"