add option to prevent the password from being saved

This commit is contained in:
Thomas Baumhauer 2009-01-13 22:31:03 +00:00
parent d947002ca4
commit ba0692ceb2
6 changed files with 167 additions and 14 deletions

View file

@ -160,6 +160,56 @@
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 1
border = "top"
border_size = 10
[spacer]
definition = "default"
[/spacer]
[/column]
[/row]
[row]
grow_factor = 1
[column]
grow_factor = 1
horizontal_alignment = "left"
[toggle_button]
id = "remember_password"
definition = "default"
label = _ "Save password to preferences (clear text)"
[/toggle_button]
[/column]
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 1
border = "top"
border_size = 30
[spacer]
definition = "default"
[/spacer]
[/column]
[/row]
[row]
grow_factor = 0

View file

@ -141,6 +141,56 @@
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 1
border = "top"
border_size = 10
[spacer]
definition = "default"
[/spacer]
[/column]
[/row]
[row]
grow_factor = 1
[column]
grow_factor = 1
horizontal_alignment = "left"
[toggle_button]
id = "remember_password"
definition = "default"
label = _ "Save password to preferences (clear text)"
[/toggle_button]
[/column]
[/row]
[row]
grow_factor = 0
[column]
grow_factor = 1
border = "top"
border_size = 30
[spacer]
definition = "default"
[/spacer]
[/column]
[/row]
[row]
grow_factor = 1
vertical_grow = "true"

View file

@ -337,19 +337,45 @@ std::string login()
return res;
}
std::string password()
{
return preferences::get("password");
}
void set_login(const std::string& username)
{
preferences::set("login", username);
}
namespace prv {
std::string password;
}
std::string password()
{
if(remember_password()) {
return preferences::get("password");
} else {
return prv::password;
}
}
void set_password(const std::string& password)
{
preferences::set("password", password);
prv::password = password;
if(remember_password()) {
preferences::set("password", password);
}
}
bool remember_password()
{
return utils::string_bool(preferences::get("remember_password"), false);
}
void set_remember_password(bool remember)
{
preferences::set("remember_password", remember ? "yes" : "no");
// Clear the password
if(!remember) {
preferences::set("password", "");
}
}
bool turn_dialog()

View file

@ -73,9 +73,16 @@ namespace preferences {
std::string login();
void set_login(const std::string& username);
namespace prv {
extern std::string password;
}
std::string password();
void set_password(const std::string& password);
bool remember_password();
void set_remember_password(bool remember);
bool turn_dialog();
void set_turn_dialog(bool ison);

View file

@ -22,6 +22,7 @@
#include "gui/widgets/button.hpp"
#include "gui/widgets/listbox.hpp"
#include "gui/widgets/label.hpp"
#include "gui/widgets/toggle_button.hpp"
namespace gui2 {
@ -234,21 +235,31 @@ void tmp_login::pre_show(CVideo& /*video*/, twindow& window)
dynamic_cast<tlabel*>(window.find_widget("login_label", false));
if(label) label->set_label(label_);
ttoggle_button* remember_password
= dynamic_cast<ttoggle_button*>(window.find_widget("remember_password", false));
if(remember_password) remember_password->set_value(preferences::remember_password());
}
void tmp_login::post_show(twindow& window)
{
ttext_box* username =
dynamic_cast<ttext_box*>(window.find_widget("user_name", false));
assert(username);
if(get_retval() == twindow::OK) {
ttoggle_button* remember_password
= dynamic_cast<ttoggle_button*>(window.find_widget("remember_password", false));
if(remember_password) preferences::set_remember_password(remember_password->get_value());
preferences::set_login(username->get_value());
ttext_box* username =
dynamic_cast<ttext_box*>(window.find_widget("user_name", false));
assert(username);
ttext_box* password =
dynamic_cast<ttext_box*>(window.find_widget("password", false));
assert(password);
preferences::set_login(username->get_value());
preferences::set_password(password->get_value());
ttext_box* password =
dynamic_cast<ttext_box*>(window.find_widget("password", false));
assert(password);
preferences::set_password(password->get_value());
}
}
} // namespace gui2

View file

@ -19,6 +19,7 @@
#include "gui/widgets/listbox.hpp"
#include "gui/widgets/window.hpp"
#include "gui/widgets/text_box.hpp"
#include "gui/widgets/toggle_button.hpp"
#include "multiplayer.hpp"
namespace gui2 {
@ -58,6 +59,10 @@ void tmp_method_selection::pre_show(CVideo& /*video*/, twindow& window)
password_widget->set_value(preferences::password());
ttoggle_button* remember_password
= dynamic_cast<ttoggle_button*>(window.find_widget("remember_password", false));
if(remember_password) remember_password->set_value(preferences::remember_password());
tlistbox* list = dynamic_cast<tlistbox*>(window.find_widget("method_list", false));
VALIDATE(list, missing_widget("method_list"));
@ -78,6 +83,10 @@ void tmp_method_selection::post_show(twindow& window)
tlistbox* list = dynamic_cast<tlistbox*>(window.find_widget("method_list", false));
assert(list);
ttoggle_button* remember_password
= dynamic_cast<ttoggle_button*>(window.find_widget("remember_password", false));
if(remember_password) preferences::set_remember_password(remember_password->get_value());
choice_ = list->get_selected_row();
user_widget->save_to_history();