fixed password behaviour for screensaver kit

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14096 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2005-08-31 15:36:40 +00:00
parent 7f74cecda3
commit 5e7558d87c
5 changed files with 29 additions and 35 deletions
@@ -40,6 +40,7 @@ public:
bool LockEnable() {return fLockEnabled;} bool LockEnable() {return fLockEnabled;}
bigtime_t PasswordTime() {return fPasswordTime;} bigtime_t PasswordTime() {return fPasswordTime;}
const char *Password() { return fPassword.String(); } const char *Password() { return fPassword.String(); }
const char *LockMethod() { return fLockMethod.String(); }
bool IsNetworkPassword() {return fIsNetworkPassword;} bool IsNetworkPassword() {return fIsNetworkPassword;}
const char *ModuleName() {return fModuleName.String();} const char *ModuleName() {return fModuleName.String();}
status_t GetState(const char *name, BMessage *stateMsg); status_t GetState(const char *name, BMessage *stateMsg);
@@ -55,7 +56,8 @@ public:
void SetNeverBlankCorner(arrowDirection in) {fNeverBlankCorner = in;} void SetNeverBlankCorner(arrowDirection in) {fNeverBlankCorner = in;}
void SetLockEnable(bool en) {fLockEnabled = en;} void SetLockEnable(bool en) {fLockEnabled = en;}
void SetPasswordTime(bigtime_t pt) {fPasswordTime = pt;} 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 SetModuleName(const char *mn) {fModuleName = mn;}
void SetState(const char *name, BMessage *stateMsg); void SetState(const char *name, BMessage *stateMsg);
void SaveSettings(); void SaveSettings();
+1 -1
View File
@@ -129,7 +129,7 @@ ScreenSaverApp::MessageReceived(BMessage *message)
bool bool
ScreenSaverApp::QuitRequested() ScreenSaverApp::QuitRequested()
{ {
if (system_time()-fBlankTime > fPref.PasswordTime()) { if (fPref.LockEnable() && (system_time()-fBlankTime > fPref.PasswordTime())) {
ShowPW(); ShowPW();
return false; return false;
} else } else
+21 -31
View File
@@ -14,8 +14,9 @@
#include <Screen.h> #include <Screen.h>
PasswordWindow::PasswordWindow() PasswordWindow::PasswordWindow(ScreenSaverPrefs &prefs)
: BWindow(BRect(100,100,380,250),"",B_MODAL_WINDOW_LOOK,B_MODAL_APP_WINDOW_FEEL,B_NOT_RESIZABLE) : BWindow(BRect(100,100,380,250),"",B_MODAL_WINDOW_LOOK,B_MODAL_APP_WINDOW_FEEL,B_NOT_RESIZABLE),
fPrefs(prefs)
{ {
Setup(); Setup();
BRect screenFrame = BScreen(B_MAIN_SCREEN_ID).Frame(); BRect screenFrame = BScreen(B_MAIN_SCREEN_ID).Frame();
@@ -35,7 +36,6 @@ PasswordWindow::Setup()
owner->SetViewColor(216,216,216); owner->SetViewColor(216,216,216);
AddChild(owner); AddChild(owner);
fUseNetwork=new BRadioButton(BRect(15,10,160,20),"useNetwork","Use Network password",new BMessage(kButton_changed),B_FOLLOW_NONE); 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); owner->AddChild(fUseNetwork);
fUseCustom=new BRadioButton(BRect(30,50,130,60),"fUseCustom","Use custom password",new BMessage(kButton_changed),B_FOLLOW_NONE); 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 void
PasswordWindow::Update() PasswordWindow::Update()
{ {
if (strcmp(fPrefs.LockMethod(), "custom") == 0)
fUseCustom->SetValue(B_CONTROL_ON);
else
fUseNetwork->SetValue(B_CONTROL_ON);
fUseNetPassword=(fUseCustom->Value()>0); fUseNetPassword=(fUseCustom->Value()>0);
fConfirm->SetEnabled(fUseNetPassword); fConfirm->SetEnabled(fUseNetPassword);
fPassword->SetEnabled(fUseNetPassword); fPassword->SetEnabled(fUseNetPassword);
@@ -75,20 +79,21 @@ void
PasswordWindow::MessageReceived(BMessage *message) PasswordWindow::MessageReceived(BMessage *message)
{ {
switch(message->what) { switch(message->what) {
case kDone_clicked: case kDone_clicked:
if (fUseCustom->Value()) fPrefs.SetLockMethod(fUseCustom->Value() ? "custom" : "network");
if (fUseCustom->Value()) {
if (strcmp(fPassword->Text(),fConfirm->Text())) { if (strcmp(fPassword->Text(),fConfirm->Text())) {
BAlert *alert=new BAlert("noMatch","Passwords don't match. Try again.","OK"); BAlert *alert=new BAlert("noMatch","Passwords don't match. Try again.","OK");
alert->Go(); alert->Go();
} else { break;
fThePassword=fPassword->Text(); }
Hide(); fPrefs.SetPassword(crypt(fPassword->Text(), fPassword->Text()));
} } else {
else { fPrefs.SetPassword("");
fPassword->SetText(""); }
fConfirm->SetText(""); fPassword->SetText("");
Hide(); fConfirm->SetText("");
} Hide();
break; break;
case kCancel_clicked: case kCancel_clicked:
fPassword->SetText(""); fPassword->SetText("");
@@ -101,23 +106,8 @@ PasswordWindow::MessageReceived(BMessage *message)
case kShow: case kShow:
Show(); Show();
break; 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: default:
BWindow::MessageReceived(message); BWindow::MessageReceived(message);
break; break;
} }
} }
+3 -1
View File
@@ -16,11 +16,12 @@
#include <TextControl.h> #include <TextControl.h>
#include <Button.h> #include <Button.h>
#include <Constants.h> #include <Constants.h>
#include "ScreenSaverPrefs.h"
class PasswordWindow : public BWindow class PasswordWindow : public BWindow
{ {
public: public:
PasswordWindow(); PasswordWindow(ScreenSaverPrefs &prefs);
void Setup(); void Setup();
void Update(); void Update();
virtual void MessageReceived(BMessage *message); virtual void MessageReceived(BMessage *message);
@@ -32,6 +33,7 @@ class PasswordWindow : public BWindow
BButton *fCancel,*fDone; BButton *fCancel,*fDone;
BString fThePassword; BString fThePassword;
bool fUseNetPassword; bool fUseNetPassword;
ScreenSaverPrefs &fPrefs;
}; };
@@ -290,7 +290,7 @@ ScreenSaverWin::SetupForm()
SetupTab1(); SetupTab1();
// Create the password editing window // Create the password editing window
fPwWin = new PasswordWindow(); fPwWin = new PasswordWindow(fPrefs);
fPwMessenger = new BMessenger(NULL,fPwWin); fPwMessenger = new BMessenger(NULL,fPwWin);
fPwWin->Run(); fPwWin->Run();