From 5e7558d87c1859c8e1c0d50a85cc3ed7bb4610ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Wed, 31 Aug 2005 15:36:40 +0000 Subject: [PATCH] fixed password behaviour for screensaver kit git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14096 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../private/screen_saver/ScreenSaverPrefs.h | 4 +- src/bin/screen_blanker/ScreenSaverApp.cpp | 2 +- .../screensaver/PasswordWindow.cpp | 52 ++++++++----------- src/preferences/screensaver/PasswordWindow.h | 4 +- .../screensaver/ScreenSaverWindow.cpp | 2 +- 5 files changed, 29 insertions(+), 35 deletions(-) diff --git a/headers/private/screen_saver/ScreenSaverPrefs.h b/headers/private/screen_saver/ScreenSaverPrefs.h index c286ec06c4..8348104951 100644 --- a/headers/private/screen_saver/ScreenSaverPrefs.h +++ b/headers/private/screen_saver/ScreenSaverPrefs.h @@ -40,6 +40,7 @@ public: bool LockEnable() {return fLockEnabled;} bigtime_t PasswordTime() {return fPasswordTime;} const char *Password() { return fPassword.String(); } + const char *LockMethod() { return fLockMethod.String(); } bool IsNetworkPassword() {return fIsNetworkPassword;} const char *ModuleName() {return fModuleName.String();} status_t GetState(const char *name, BMessage *stateMsg); @@ -55,7 +56,8 @@ public: void SetNeverBlankCorner(arrowDirection in) {fNeverBlankCorner = in;} void SetLockEnable(bool en) {fLockEnabled = en;} void SetPasswordTime(bigtime_t pt) {fPasswordTime = pt;} - void SetPassword(char *pw) {fPassword = pw;} // Can not set network password from here. + void SetPassword(const char *pw) {fPassword = pw;} // Can not set network password from here. + void SetLockMethod(const char *method) {fLockMethod = method;} void SetModuleName(const char *mn) {fModuleName = mn;} void SetState(const char *name, BMessage *stateMsg); void SaveSettings(); diff --git a/src/bin/screen_blanker/ScreenSaverApp.cpp b/src/bin/screen_blanker/ScreenSaverApp.cpp index 43b1fa7b1f..a9c784bc6a 100755 --- a/src/bin/screen_blanker/ScreenSaverApp.cpp +++ b/src/bin/screen_blanker/ScreenSaverApp.cpp @@ -129,7 +129,7 @@ ScreenSaverApp::MessageReceived(BMessage *message) bool ScreenSaverApp::QuitRequested() { - if (system_time()-fBlankTime > fPref.PasswordTime()) { + if (fPref.LockEnable() && (system_time()-fBlankTime > fPref.PasswordTime())) { ShowPW(); return false; } else diff --git a/src/preferences/screensaver/PasswordWindow.cpp b/src/preferences/screensaver/PasswordWindow.cpp index a53fac5518..aaee838323 100644 --- a/src/preferences/screensaver/PasswordWindow.cpp +++ b/src/preferences/screensaver/PasswordWindow.cpp @@ -14,8 +14,9 @@ #include -PasswordWindow::PasswordWindow() - : BWindow(BRect(100,100,380,250),"",B_MODAL_WINDOW_LOOK,B_MODAL_APP_WINDOW_FEEL,B_NOT_RESIZABLE) +PasswordWindow::PasswordWindow(ScreenSaverPrefs &prefs) + : BWindow(BRect(100,100,380,250),"",B_MODAL_WINDOW_LOOK,B_MODAL_APP_WINDOW_FEEL,B_NOT_RESIZABLE), + fPrefs(prefs) { Setup(); BRect screenFrame = BScreen(B_MAIN_SCREEN_ID).Frame(); @@ -35,7 +36,6 @@ PasswordWindow::Setup() owner->SetViewColor(216,216,216); AddChild(owner); fUseNetwork=new BRadioButton(BRect(15,10,160,20),"useNetwork","Use Network password",new BMessage(kButton_changed),B_FOLLOW_NONE); - fUseNetwork->SetValue(1); owner->AddChild(fUseNetwork); fUseCustom=new BRadioButton(BRect(30,50,130,60),"fUseCustom","Use custom password",new BMessage(kButton_changed),B_FOLLOW_NONE); @@ -65,6 +65,10 @@ PasswordWindow::Setup() void PasswordWindow::Update() { + if (strcmp(fPrefs.LockMethod(), "custom") == 0) + fUseCustom->SetValue(B_CONTROL_ON); + else + fUseNetwork->SetValue(B_CONTROL_ON); fUseNetPassword=(fUseCustom->Value()>0); fConfirm->SetEnabled(fUseNetPassword); fPassword->SetEnabled(fUseNetPassword); @@ -75,20 +79,21 @@ void PasswordWindow::MessageReceived(BMessage *message) { switch(message->what) { - case kDone_clicked: - if (fUseCustom->Value()) + case kDone_clicked: + fPrefs.SetLockMethod(fUseCustom->Value() ? "custom" : "network"); + if (fUseCustom->Value()) { if (strcmp(fPassword->Text(),fConfirm->Text())) { BAlert *alert=new BAlert("noMatch","Passwords don't match. Try again.","OK"); alert->Go(); - } else { - fThePassword=fPassword->Text(); - Hide(); - } - else { - fPassword->SetText(""); - fConfirm->SetText(""); - Hide(); - } + break; + } + fPrefs.SetPassword(crypt(fPassword->Text(), fPassword->Text())); + } else { + fPrefs.SetPassword(""); + } + fPassword->SetText(""); + fConfirm->SetText(""); + Hide(); break; case kCancel_clicked: fPassword->SetText(""); @@ -101,23 +106,8 @@ PasswordWindow::MessageReceived(BMessage *message) case kShow: Show(); break; - case kPopulate: - message->ReplaceString("lockpassword", ((fUseNetPassword)?"":fThePassword)); - message->ReplaceString("lockmethod", (fUseNetPassword?"network":"custom")); - message->SendReply(message); - break; - case kUtilize: { - BString temp; - message->FindString("lockmethod",&temp); - fUseNetPassword=(temp=="custom"); - if (!fUseNetPassword) { - message->FindString("lockpassword",&temp); - fThePassword=temp; - } - break; - } default: BWindow::MessageReceived(message); - break; - } + break; + } } diff --git a/src/preferences/screensaver/PasswordWindow.h b/src/preferences/screensaver/PasswordWindow.h index a64af67fef..09d5e99e27 100644 --- a/src/preferences/screensaver/PasswordWindow.h +++ b/src/preferences/screensaver/PasswordWindow.h @@ -16,11 +16,12 @@ #include #include #include +#include "ScreenSaverPrefs.h" class PasswordWindow : public BWindow { public: - PasswordWindow(); + PasswordWindow(ScreenSaverPrefs &prefs); void Setup(); void Update(); virtual void MessageReceived(BMessage *message); @@ -32,6 +33,7 @@ class PasswordWindow : public BWindow BButton *fCancel,*fDone; BString fThePassword; bool fUseNetPassword; + ScreenSaverPrefs &fPrefs; }; diff --git a/src/preferences/screensaver/ScreenSaverWindow.cpp b/src/preferences/screensaver/ScreenSaverWindow.cpp index 210e5121a6..2240d2b49e 100644 --- a/src/preferences/screensaver/ScreenSaverWindow.cpp +++ b/src/preferences/screensaver/ScreenSaverWindow.cpp @@ -290,7 +290,7 @@ ScreenSaverWin::SetupForm() SetupTab1(); // Create the password editing window - fPwWin = new PasswordWindow(); + fPwWin = new PasswordWindow(fPrefs); fPwMessenger = new BMessenger(NULL,fPwWin); fPwWin->Run();