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;}
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();
+1 -1
View File
@@ -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
+21 -31
View File
@@ -14,8 +14,9 @@
#include <Screen.h>
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;
}
}
+3 -1
View File
@@ -16,11 +16,12 @@
#include <TextControl.h>
#include <Button.h>
#include <Constants.h>
#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;
};
@@ -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();