From 1437c09cb727368f7808a087b35fc0454d6ae5e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Mon, 1 Aug 2005 12:53:23 +0000 Subject: [PATCH] screen_blanker signature is at one place modules tab selection makes the right module selected git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13863 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../private/screen_saver/ScreenSaverPrefs.h | 5 +- .../filters/screensaver/SSInputFilter.cpp | 2 - src/kits/screensaver/ScreenSaverPrefs.cpp | 14 ++-- src/preferences/screensaver/PreviewView.cpp | 1 + .../screensaver/ScreenSaverWindow.cpp | 64 +++++++++++++++---- .../screensaver/ScreenSaverWindow.h | 2 +- 6 files changed, 64 insertions(+), 24 deletions(-) diff --git a/headers/private/screen_saver/ScreenSaverPrefs.h b/headers/private/screen_saver/ScreenSaverPrefs.h index 7eb3f4d5ac..fcb5f746d0 100644 --- a/headers/private/screen_saver/ScreenSaverPrefs.h +++ b/headers/private/screen_saver/ScreenSaverPrefs.h @@ -18,12 +18,15 @@ enum arrowDirection { CENTER }; +#define SCREEN_BLANKER_SIG "application/x-vnd.Be.screenblanker" + class ScreenSaverPrefs { public: ScreenSaverPrefs(); bool LoadSettings(); void Defaults(); + BPath & GetPath() { return fSSPath;} BRect WindowFrame() {return fWindowFrame;} int32 WindowTab() {return fWindowTab;} @@ -76,7 +79,7 @@ private: bool fIsNetworkPassword; BMessage fSettings; - BPath ssPath,networkPath; + BPath fSSPath, fNetworkPath; }; diff --git a/src/add-ons/input_server/filters/screensaver/SSInputFilter.cpp b/src/add-ons/input_server/filters/screensaver/SSInputFilter.cpp index e788e24525..bd6b7bce67 100644 --- a/src/add-ons/input_server/filters/screensaver/SSInputFilter.cpp +++ b/src/add-ons/input_server/filters/screensaver/SSInputFilter.cpp @@ -13,8 +13,6 @@ #include #define CALLED() SERIAL_PRINT(("%s\n", __PRETTY_FUNCTION__)) -#define SCREEN_BLANKER_SIG "application/x-vnd.Be.screenblanker" - extern "C" _EXPORT BInputServerFilter* instantiate_input_filter(); BInputServerFilter* instantiate_input_filter() { // required C func to build the IS Filter diff --git a/src/kits/screensaver/ScreenSaverPrefs.cpp b/src/kits/screensaver/ScreenSaverPrefs.cpp index 4de30b8c4d..ffab1ef16a 100755 --- a/src/kits/screensaver/ScreenSaverPrefs.cpp +++ b/src/kits/screensaver/ScreenSaverPrefs.cpp @@ -15,10 +15,10 @@ ScreenSaverPrefs::ScreenSaverPrefs() { - find_directory(B_USER_SETTINGS_DIRECTORY,&ssPath); - find_directory(B_USER_SETTINGS_DIRECTORY,&networkPath); - ssPath.Append("ScreenSaver_settings",true); - networkPath.Append("network",true); + find_directory(B_USER_SETTINGS_DIRECTORY,&fSSPath); + find_directory(B_USER_SETTINGS_DIRECTORY,&fNetworkPath); + fSSPath.Append("ScreenSaver_settings",true); + fNetworkPath.Append("network",true); Defaults(); } @@ -28,7 +28,7 @@ ScreenSaverPrefs::ScreenSaverPrefs() bool ScreenSaverPrefs::LoadSettings() { - BFile ssSettings(ssPath.Path(),B_READ_ONLY); + BFile ssSettings(fSSPath.Path(),B_READ_ONLY); if (B_OK==ssSettings.InitCheck()) { // File exists. Unflatten the message and call the settings parser. if (fSettings.Unflatten(&ssSettings)!=B_OK) return false; @@ -61,7 +61,7 @@ ScreenSaverPrefs::LoadSettings() FILE *networkFile=NULL; char buffer[512],*start; // This ugly piece opens the networking file and reads the password, if it exists. - if ((networkFile=fopen(networkPath.Path(),"r"))) + if ((networkFile=fopen(fNetworkPath.Path(),"r"))) while (buffer==fgets(buffer,512,networkFile)) if ((start=strstr(buffer,"PASSWORD ="))) { char password[12]; @@ -154,7 +154,7 @@ ScreenSaverPrefs::SaveSettings() { BMessage &settings = GetSettings(); settings.PrintToStream(); - BFile file(ssPath.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); + BFile file(fSSPath.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); if ((file.InitCheck()!=B_OK) || (settings.Flatten(&file)!=B_OK)) fprintf(stderr, "Problem while saving screensaver preferences file!\n"); } diff --git a/src/preferences/screensaver/PreviewView.cpp b/src/preferences/screensaver/PreviewView.cpp index 0506446f9a..32aab7a138 100644 --- a/src/preferences/screensaver/PreviewView.cpp +++ b/src/preferences/screensaver/PreviewView.cpp @@ -46,6 +46,7 @@ PreviewView::~PreviewView() { if (fThreadID>=0) kill_thread(fThreadID); + delete fSst; } diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp b/src/preferences/screensaver/ScreenSaverWindow.cpp index fe3b1dffcd..f15d0fc529 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.cpp +++ b/src/preferences/screensaver/ScreenSaverWindow.cpp @@ -60,6 +60,37 @@ UnitsToSlider(bigtime_t val) } +class ModulesTab : public BTab +{ +public: + ModulesTab(ScreenSaverWin *win, BView *view = NULL); + virtual ~ModulesTab(); + virtual void Select(BView *view); +private: + ScreenSaverWin *fWin; +}; + + +ModulesTab::ModulesTab(ScreenSaverWin *win, BView *view = NULL) + : BTab(view), + fWin(win) +{ + +} + +ModulesTab::~ModulesTab() +{ +} + + +void +ModulesTab::Select(BView *view) +{ + BTab::Select(view); + fWin->SelectCurrentModule(); +} + + ScreenSaverWin::ScreenSaverWin() : BWindow(BRect(50,50,496,375),"OBOS Screen Saver", B_TITLED_WINDOW,B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_NOT_RESIZABLE) , @@ -150,7 +181,7 @@ ScreenSaverWin::MessageReceived(BMessage *msg) case kTest_btn: { BMessage &settings = fPrefs.GetSettings(); - be_roster->Launch("application/x-vnd.haiku-ScreenSaverApp", &settings); + be_roster->Launch(SCREEN_BLANKER_SIG, &settings); break; } case kAdd_btn: @@ -246,7 +277,7 @@ ScreenSaverWin::SetupForm() fTabView->AddTab(fTab2, tab); tab->SetLabel("Fade"); - tab = new BTab(); + tab = new ModulesTab(this); fTab1 = new BView(r,"Modules",B_FOLLOW_NONE,0); fTabView->AddTab(fTab1, tab); tab->SetLabel("Modules"); @@ -270,21 +301,28 @@ ScreenSaverWin::SetupForm() fFadeNever->setDirection(fPrefs.GetNeverBlankCorner()); fPasswordCheckbox->SetValue(fPrefs.LockEnable()); fPasswordSlider->SetValue(UnitsToSlider(fPrefs.PasswordTime())); - int32 count = fListView1->CountItems(); - for (int32 i=0; i(fListView1->ItemAt(i)); - if ((strcmp(fPrefs.ModuleName(), item->Text()) == 0) - || (strcmp(fPrefs.ModuleName(),"") == 0 && strcmp(item->Text(), "Blackness") ==0)) { - fListView1->Select(i); - SaverSelected(); - fListView1->ScrollToSelection(); - break; - } - } + SelectCurrentModule(); UpdateStatus(); } +void +ScreenSaverWin::SelectCurrentModule() +{ + int32 count = fListView1->CountItems(); + for (int32 i=0; i(fListView1->ItemAt(i)); + if ((strcmp(fPrefs.ModuleName(), item->Text()) == 0) + || (strcmp(fPrefs.ModuleName(),"") == 0 && strcmp(item->Text(), "Blackness") ==0)) { + fListView1->Select(i); + SaverSelected(); + fListView1->ScrollToSelection(); + break; + } + } +} + + // Set the common Look and Feel stuff for a given control void commonLookAndFeel(BView *widget,bool isSlider,bool isControl) diff --git a/src/preferences/screensaver/ScreenSaverWindow.h b/src/preferences/screensaver/ScreenSaverWindow.h index ed7d083b19..38bd2af494 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.h +++ b/src/preferences/screensaver/ScreenSaverWindow.h @@ -20,7 +20,7 @@ public: void PopulateScreenSaverList(); void LoadSettings(); virtual ~ScreenSaverWin(); - + void SelectCurrentModule(); private: void SetupForm(); void SetupTab1();