haiku/src/preferences/screensaver/PasswordWindow.cpp
Jérôme Duval c566b0927d added license headers
changed the way prefs is stored, so that we have default settings
general cleanup
time sliders are now linked together as on R5
password window is centered onscreen


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13849 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-29 07:41:58 +00:00

120 lines
3.2 KiB
C++

/*
* Copyright 2003, Michael Phipps. All rights reserved.
* Distributed under the terms of the MIT License.
*/
#include "PasswordWindow.h"
#include <stdio.h>
#include <Alert.h>
#include <RadioButton.h>
#include <Screen.h>
PasswordWindow::PasswordWindow()
: BWindow(BRect(100,100,380,250),"",B_MODAL_WINDOW_LOOK,B_MODAL_APP_WINDOW_FEEL,B_NOT_RESIZABLE)
{
Setup();
BRect screenFrame = BScreen(B_MAIN_SCREEN_ID).Frame();
BPoint point;
point.x = (screenFrame.Width() - Bounds().Width()) / 2;
point.y = (screenFrame.Height() - Bounds().Height()) / 2;
if (screenFrame.Contains(point))
MoveTo(point);
}
void
PasswordWindow::Setup()
{
BView *owner=new BView(Bounds(),"ownerView",B_FOLLOW_NONE,B_WILL_DRAW);
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);
fCustomBox=new BBox(BRect(10,30,270,105),"custBeBox",B_FOLLOW_NONE);
fCustomBox->SetLabel(fUseCustom);
fPassword=new BTextControl(BRect(10,20,250,35),"pwdCntrl","Password:",NULL,B_FOLLOW_NONE);
fConfirm=new BTextControl(BRect(10,45,250,60),"fConfirmCntrl","Confirm fPassword:",NULL,B_FOLLOW_NONE);
fPassword->SetAlignment(B_ALIGN_RIGHT,B_ALIGN_LEFT);
fPassword->SetDivider(90);
fPassword->TextView()->HideTyping(true);
fConfirm->SetAlignment(B_ALIGN_RIGHT,B_ALIGN_LEFT);
fConfirm->SetDivider(90);
fConfirm->TextView()->HideTyping(true);
fCustomBox->AddChild(fPassword);
fCustomBox->AddChild(fConfirm);
owner->AddChild(fCustomBox);
fDone=new BButton(BRect(200,120,275,130),"done","Done",new BMessage (kDone_clicked),B_FOLLOW_NONE);
fCancel=new BButton(BRect(115,120,190,130),"cancel","Cancel",new BMessage (kCancel_clicked),B_FOLLOW_NONE);
owner->AddChild(fDone);
owner->AddChild(fCancel);
fDone->MakeDefault(true);
Update();
}
void
PasswordWindow::Update()
{
fUseNetPassword=(fUseCustom->Value()>0);
fConfirm->SetEnabled(fUseNetPassword);
fPassword->SetEnabled(fUseNetPassword);
}
void
PasswordWindow::MessageReceived(BMessage *message)
{
switch(message->what) {
case kDone_clicked:
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;
case kCancel_clicked:
fPassword->SetText("");
fConfirm->SetText("");
Hide();
break;
case kButton_changed:
Update();
break;
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;
}
}