2010-05-14 15:04:01 +02:00
|
|
|
#include "UsersDialog.h"
|
|
|
|
|
2010-07-04 16:33:25 +02:00
|
|
|
enum {BUTTON_OK_ID=1, BUTTON_CANCEL_ID, BUTTON_NEW_USER_ID};
|
2010-05-14 15:04:01 +02:00
|
|
|
|
|
|
|
BEGIN_EVENT_TABLE(UsersDialog, wxDialog)
|
2010-07-04 16:33:25 +02:00
|
|
|
EVT_BUTTON(BUTTON_OK_ID, UsersDialog::OnOK)
|
|
|
|
EVT_BUTTON(BUTTON_CANCEL_ID, UsersDialog::OnCancel)
|
|
|
|
EVT_BUTTON(BUTTON_NEW_USER_ID, UsersDialog::OnNewUser)
|
2010-05-14 15:04:01 +02:00
|
|
|
END_EVENT_TABLE()
|
|
|
|
|
|
|
|
UsersDialog::UsersDialog(KissCount* kiss, wxUI *parent) : wxDialog(&(*parent), -1, _("Users")), _kiss(kiss), _wxUI(parent)
|
|
|
|
{
|
2010-06-27 21:39:49 +02:00
|
|
|
wxGridBagSizer *gridBagSizer;
|
|
|
|
wxStaticText* label;
|
2010-07-04 16:33:25 +02:00
|
|
|
wxCommandEvent event;
|
2010-05-14 15:04:01 +02:00
|
|
|
|
2010-06-27 21:39:49 +02:00
|
|
|
gridBagSizer = new wxGridBagSizer(4, 4);
|
2010-05-15 11:21:42 +02:00
|
|
|
|
2010-06-27 21:39:49 +02:00
|
|
|
label = new wxStaticText(this, -1, _("User "));
|
|
|
|
gridBagSizer->Add(label, wxGBPosition(0, 0));
|
|
|
|
_users = new wxChoice(this, wxID_ANY);
|
|
|
|
gridBagSizer->Add(_users, wxGBPosition(0, 1));
|
2010-05-14 15:04:01 +02:00
|
|
|
|
2010-06-27 21:39:49 +02:00
|
|
|
label = new wxStaticText(this, -1, _("Password "));
|
|
|
|
gridBagSizer->Add(label, wxGBPosition(1, 0));
|
|
|
|
_password = new wxTextCtrl(this, wxID_ANY);
|
|
|
|
gridBagSizer->Add(_password, wxGBPosition(1, 1));
|
|
|
|
|
|
|
|
_password->SetWindowStyle(wxTE_PASSWORD);
|
|
|
|
|
2010-07-04 16:33:25 +02:00
|
|
|
wxButton* ok = new wxButton(this, BUTTON_OK_ID, _("OK"));
|
|
|
|
wxButton* cancel = new wxButton(this, BUTTON_CANCEL_ID, _("Cancel"));
|
|
|
|
wxButton* newUser = new wxButton(this, BUTTON_NEW_USER_ID, _("New User"));
|
2010-06-27 21:39:49 +02:00
|
|
|
gridBagSizer->Add(ok, wxGBPosition(3, 1));
|
|
|
|
gridBagSizer->Add(cancel, wxGBPosition(3, 2));
|
|
|
|
gridBagSizer->Add(newUser, wxGBPosition(3, 3));
|
|
|
|
|
|
|
|
std::list<wxString> users_list = _kiss->GetUsers();
|
|
|
|
|
|
|
|
for(std::list<wxString>::iterator i = users_list.begin(); i != users_list.end(); i++)
|
|
|
|
{
|
|
|
|
_users->Append(*i);
|
|
|
|
}
|
2010-05-14 15:04:01 +02:00
|
|
|
|
2010-06-27 21:39:49 +02:00
|
|
|
_users->Select(0);
|
2010-05-14 15:04:01 +02:00
|
|
|
|
2010-06-27 21:39:49 +02:00
|
|
|
SetSizer(gridBagSizer);
|
2010-05-14 15:04:01 +02:00
|
|
|
|
2010-06-27 21:39:49 +02:00
|
|
|
_users->SetFocus();
|
|
|
|
Layout();
|
|
|
|
Center();
|
2010-07-04 16:33:25 +02:00
|
|
|
|
|
|
|
if (users_list.size() == 0)
|
|
|
|
OnNewUser(event);
|
2010-05-14 15:04:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
void UsersDialog::OnOK(wxCommandEvent& event)
|
|
|
|
{
|
|
|
|
// No users in database
|
|
|
|
if (!_users->GetStringSelection().Length())
|
|
|
|
{
|
2010-06-27 21:39:49 +02:00
|
|
|
return;
|
2010-05-14 15:04:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if (!_kiss->IsValidUser(_users->GetStringSelection(), _password->GetLineText(0)))
|
|
|
|
{
|
2010-06-27 21:39:49 +02:00
|
|
|
wxMessageBox(_("Invalid password"), _("Error"), wxICON_ERROR | wxOK);
|
2010-05-14 15:04:01 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
_kiss->LoadUser(_users->GetStringSelection());
|
|
|
|
Close();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void UsersDialog::OnCancel(wxCommandEvent& event)
|
|
|
|
{
|
|
|
|
Close();
|
|
|
|
}
|
2010-06-27 21:39:49 +02:00
|
|
|
|
|
|
|
void UsersDialog::OnNewUser(wxCommandEvent& event)
|
|
|
|
{
|
|
|
|
wxString name;
|
2010-07-03 11:19:02 +02:00
|
|
|
wxTextEntryDialog u(this, wxT(""), _("New User"));
|
2010-06-27 21:39:49 +02:00
|
|
|
|
|
|
|
if (u.ShowModal() == wxID_CANCEL)
|
|
|
|
return;
|
|
|
|
|
|
|
|
name = u.GetValue();
|
|
|
|
|
|
|
|
if (!name.size()) return;
|
|
|
|
|
|
|
|
if (_kiss->UserExists(name))
|
|
|
|
{
|
|
|
|
wxMessageBox(_("User ") + name + _(" already exists"), _("Error"), wxICON_ERROR | wxOK);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
_kiss->NewUser(name);
|
|
|
|
_kiss->LoadUser(name);
|
|
|
|
|
|
|
|
Close();
|
|
|
|
}
|