small cleanups
password window is now font sensitiv, can be seen as part of ticket #705 git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23547 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
3b4fa1664e
commit
c0a4294edd
@ -1,15 +1,16 @@
|
||||
/*
|
||||
* Copyright 2003-2006, Haiku.
|
||||
* Copyright 2003-2007, Haiku, Inc. All Rights Reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
* Michael Phipps
|
||||
* Jérôme Duval, jerome.duval@free.fr
|
||||
* Julun <host.haiku@gmx.de>
|
||||
*/
|
||||
|
||||
|
||||
#include "PasswordWindow.h"
|
||||
|
||||
|
||||
#include <Alert.h>
|
||||
#include <Box.h>
|
||||
#include <Button.h>
|
||||
@ -17,9 +18,6 @@
|
||||
#include <Screen.h>
|
||||
#include <TextControl.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
|
||||
|
||||
const uint32 kMsgDone = 'done';
|
||||
const uint32 kMsgPasswordTypeChanged = 'pwtp';
|
||||
@ -27,10 +25,11 @@ const uint32 kMsgPasswordTypeChanged = 'pwtp';
|
||||
|
||||
PasswordWindow::PasswordWindow(ScreenSaverSettings& settings)
|
||||
: BWindow(BRect(100, 100, 380, 249), "Password Window", B_MODAL_WINDOW_LOOK,
|
||||
B_MODAL_APP_WINDOW_FEEL, B_ASYNCHRONOUS_CONTROLS | B_NOT_ZOOMABLE | B_NOT_RESIZABLE),
|
||||
B_MODAL_APP_WINDOW_FEEL, B_ASYNCHRONOUS_CONTROLS | B_NOT_RESIZABLE),
|
||||
fSettings(settings)
|
||||
{
|
||||
_Setup();
|
||||
Update();
|
||||
|
||||
BRect screenFrame = BScreen(B_MAIN_SCREEN_ID).Frame();
|
||||
BPoint point;
|
||||
@ -45,41 +44,68 @@ PasswordWindow::PasswordWindow(ScreenSaverSettings& settings)
|
||||
void
|
||||
PasswordWindow::_Setup()
|
||||
{
|
||||
BView* topView = new BView(Bounds(), "mainView", B_FOLLOW_ALL, B_WILL_DRAW);
|
||||
BRect bounds = Bounds();
|
||||
BView* topView = new BView(bounds, "topView", B_FOLLOW_ALL, B_WILL_DRAW);
|
||||
topView->SetViewColor(ui_color(B_PANEL_BACKGROUND_COLOR));
|
||||
AddChild(topView);
|
||||
|
||||
fUseNetwork = new BRadioButton(BRect(14,10,159,20), "useNetwork",
|
||||
"Use Network password", new BMessage(kMsgPasswordTypeChanged), B_FOLLOW_NONE);
|
||||
bounds.InsetBy(10.0, 10.0);
|
||||
fUseNetwork = new BRadioButton(bounds, "useNetwork", "Use Network password",
|
||||
new BMessage(kMsgPasswordTypeChanged), B_FOLLOW_NONE);
|
||||
topView->AddChild(fUseNetwork);
|
||||
fUseCustom = new BRadioButton(BRect(30,50,130,60), "fUseCustom",
|
||||
"Use custom password", new BMessage(kMsgPasswordTypeChanged), B_FOLLOW_NONE);
|
||||
fUseNetwork->ResizeToPreferred();
|
||||
fUseCustom->ResizeToPreferred();
|
||||
fUseNetwork->MoveBy(10.0, 0.0);
|
||||
|
||||
BBox *customBox = new BBox(BRect(9,30,269,105), "custBeBox", B_FOLLOW_NONE);
|
||||
customBox->SetLabel(fUseCustom);
|
||||
fPasswordControl = new BTextControl(BRect(10,20,251,35), "pwdCntrl", "Password:", NULL, B_FOLLOW_NONE);
|
||||
fConfirmControl = new BTextControl(BRect(10,45,251,60), "fConfirmCntrl", "Confirm password:", NULL, B_FOLLOW_NONE);
|
||||
fPasswordControl->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||
float divider = be_plain_font->StringWidth("Confirm password:") + 5.0;
|
||||
fPasswordControl->SetDivider(divider);
|
||||
fPasswordControl->TextView()->HideTyping(true);
|
||||
fConfirmControl->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||
fConfirmControl->SetDivider(divider);
|
||||
fConfirmControl->TextView()->HideTyping(true);
|
||||
customBox->AddChild(fPasswordControl);
|
||||
customBox->AddChild(fConfirmControl);
|
||||
bounds.OffsetBy(0.0, fUseNetwork->Bounds().Height());
|
||||
BBox *customBox = new BBox(bounds, "customBox", B_FOLLOW_NONE);
|
||||
topView->AddChild(customBox);
|
||||
|
||||
BButton* button = new BButton(BRect(194,118,269,129), "done", "Done", new BMessage(kMsgDone), B_FOLLOW_NONE);
|
||||
fUseCustom = new BRadioButton(BRect(), "useCustom", "Use custom password",
|
||||
new BMessage(kMsgPasswordTypeChanged), B_FOLLOW_NONE);
|
||||
customBox->SetLabel(fUseCustom);
|
||||
fUseCustom->ResizeToPreferred();
|
||||
|
||||
fPasswordControl = new BTextControl(bounds, "passwordControl", "Password:",
|
||||
NULL, B_FOLLOW_NONE);
|
||||
customBox->AddChild(fPasswordControl);
|
||||
fPasswordControl->ResizeToPreferred();
|
||||
fPasswordControl->TextView()->HideTyping(true);
|
||||
fPasswordControl->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||
|
||||
bounds.OffsetBy(0.0, fPasswordControl->Bounds().Height() + 5.0);
|
||||
fConfirmControl = new BTextControl(bounds, "confirmControl",
|
||||
"Confirm password:", "VeryLongPasswordPossible", B_FOLLOW_NONE);
|
||||
customBox->AddChild(fConfirmControl);
|
||||
fConfirmControl->TextView()->HideTyping(true);
|
||||
fConfirmControl->SetAlignment(B_ALIGN_RIGHT, B_ALIGN_LEFT);
|
||||
|
||||
float width, height;
|
||||
fConfirmControl->GetPreferredSize(&width, &height);
|
||||
fPasswordControl->ResizeTo(width, height);
|
||||
|
||||
float divider = be_plain_font->StringWidth("Confirm password:") + 5.0;
|
||||
fConfirmControl->SetDivider(divider);
|
||||
fPasswordControl->SetDivider(divider);
|
||||
|
||||
customBox->ResizeTo(fConfirmControl->Frame().right + 10.0,
|
||||
fConfirmControl->Frame().bottom + 10.0);
|
||||
|
||||
BButton* button = new BButton(BRect(), "done", "Done", new BMessage(kMsgDone));
|
||||
topView->AddChild(button);
|
||||
button->ResizeToPreferred();
|
||||
|
||||
BRect frame = customBox->Frame();
|
||||
button->MoveTo(frame.right - button->Bounds().Width(), frame.bottom + 10.0);
|
||||
|
||||
frame = button->Frame();
|
||||
button->MakeDefault(true);
|
||||
|
||||
button = new BButton(BRect(109,118,184,129), "cancel", "Cancel", new BMessage(B_CANCEL), B_FOLLOW_NONE);
|
||||
button = new BButton(frame, "cancel", "Cancel", new BMessage(B_CANCEL));
|
||||
topView->AddChild(button);
|
||||
button->ResizeToPreferred();
|
||||
button->MoveBy(-(button->Bounds().Width() + 10.0), 0.0);
|
||||
|
||||
Update();
|
||||
ResizeTo(customBox->Frame().right + 10.0, frame.bottom + 10.0);
|
||||
}
|
||||
|
||||
|
||||
@ -90,7 +116,8 @@ PasswordWindow::Update()
|
||||
fUseNetwork->SetValue(B_CONTROL_ON);
|
||||
else
|
||||
fUseCustom->SetValue(B_CONTROL_ON);
|
||||
bool useNetPassword=(fUseCustom->Value()>0);
|
||||
|
||||
bool useNetPassword = (fUseCustom->Value() > 0);
|
||||
fConfirmControl->SetEnabled(useNetPassword);
|
||||
fPasswordControl->SetEnabled(useNetPassword);
|
||||
}
|
||||
@ -103,17 +130,20 @@ PasswordWindow::MessageReceived(BMessage *message)
|
||||
case kMsgDone:
|
||||
fSettings.SetLockMethod(fUseCustom->Value() ? "custom" : "network");
|
||||
if (fUseCustom->Value()) {
|
||||
if (strcmp(fPasswordControl->Text(),fConfirmControl->Text())) {
|
||||
BAlert *alert=new BAlert("noMatch","Passwords don't match. Try again.","OK");
|
||||
if (strcmp(fPasswordControl->Text(), fConfirmControl->Text())) {
|
||||
BAlert *alert = new BAlert("noMatch",
|
||||
"Passwords don't match. Try again.","OK");
|
||||
alert->Go();
|
||||
break;
|
||||
}
|
||||
fSettings.SetPassword(crypt(fPasswordControl->Text(), fPasswordControl->Text()));
|
||||
fSettings.SetPassword(crypt(fPasswordControl->Text(),
|
||||
fPasswordControl->Text()));
|
||||
} else {
|
||||
fSettings.SetPassword("");
|
||||
}
|
||||
fPasswordControl->SetText("");
|
||||
fConfirmControl->SetText("");
|
||||
fSettings.Save();
|
||||
Hide();
|
||||
break;
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2003-2006, Haiku.
|
||||
* Copyright 2003-2007, Haiku, Inc. All Rights Reserved.
|
||||
* Distributed under the terms of the MIT License.
|
||||
*
|
||||
* Authors:
|
||||
@ -12,11 +12,14 @@
|
||||
|
||||
#include "ScreenSaverSettings.h"
|
||||
|
||||
|
||||
#include <Window.h>
|
||||
|
||||
|
||||
class BRadioButton;
|
||||
class BTextControl;
|
||||
|
||||
|
||||
class PasswordWindow : public BWindow {
|
||||
public:
|
||||
PasswordWindow(ScreenSaverSettings &settings);
|
||||
@ -28,8 +31,11 @@ class PasswordWindow : public BWindow {
|
||||
private:
|
||||
void _Setup();
|
||||
|
||||
BRadioButton *fUseNetwork, *fUseCustom;
|
||||
BTextControl *fPasswordControl, *fConfirmControl;
|
||||
BRadioButton *fUseCustom;
|
||||
BRadioButton *fUseNetwork;
|
||||
BTextControl *fConfirmControl;
|
||||
BTextControl *fPasswordControl;
|
||||
|
||||
ScreenSaverSettings &fSettings;
|
||||
};
|
||||
|
||||
|
@ -5,28 +5,27 @@
|
||||
#include <Rect.h>
|
||||
|
||||
|
||||
int secondsToSlider(int val);
|
||||
|
||||
inline BPoint
|
||||
scale_direct(float x, float y, BRect area)
|
||||
{
|
||||
return BPoint(area.Width()*x+area.left,area.Height()*y+area.top);
|
||||
return BPoint(area.Width() * x + area.left, area.Height() * y + area.top);
|
||||
}
|
||||
|
||||
|
||||
inline BRect
|
||||
scale_direct(float x1,float x2,float y1,float y2,BRect area)
|
||||
scale_direct(float x1, float x2, float y1, float y2, BRect area)
|
||||
{
|
||||
return BRect(area.Width()*x1+area.left,area.Height()*y1+area.top, area.Width()*x2+area.left,area.Height()*y2+area.top);
|
||||
return BRect(area.Width() * x1 + area.left, area.Height() * y1 + area.top,
|
||||
area.Width()* x2 + area.left, area.Height() * y2 + area.top);
|
||||
}
|
||||
|
||||
static const float kPositionalX[] = {0,.1,.25,.3,.7,.75,.9,1.0};
|
||||
static const float kPositionalY[] = {0,.1,.7,.8,.9,1.0};
|
||||
static const float kPositionalX[] = { 0, .1, .25, .3, .7, .75, .9, 1.0 };
|
||||
static const float kPositionalY[] = { 0, .1, .7, .8, .9, 1.0 };
|
||||
|
||||
inline BPoint
|
||||
scale(int x, int y,BRect area)
|
||||
{
|
||||
return scale_direct(kPositionalX[x],kPositionalY[y],area);
|
||||
return scale_direct(kPositionalX[x], kPositionalY[y], area);
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user