00001 using System;
00002 using Gtk;
00003 using Foodolini.Activities;
00004 using Foodolini.BusinessLogic;
00005
00006 namespace Foodolini.Activities.Administration
00007 {
00008 [FoodoliniActivity("User administration", false, "Administration.admin.png")]
00009 [System.ComponentModel.ToolboxItem(true)]
00010 public partial class AdministrationActivity : Gtk.Bin, IActivity
00011 {
00015 public AdministrationActivity()
00016 {
00017
00018 this.Build();
00019
00020 this.UserView.NodeStore = this.userList;
00021
00022 this.UserView.AppendColumn("Name", new CellRendererText(), "text", 0);
00023 this.UserView.AppendColumn("User name", new CellRendererText(), "text", 1);
00024
00025
00026 foreach (var per in Person.ListUsers()){
00027 this.userList.AddNode(new PersonAdapter(per));
00028 }
00029
00030 this.UserView.NodeSelection.Mode = SelectionMode.Single;
00031
00032 this.Shown += HandleShown;
00033 }
00034
00038 private NodeStore userList = new NodeStore(typeof(PersonAdapter));
00039
00043 void HandleShown (object sender, EventArgs e){
00044 this.CreatePersonTable.Hide();
00045 this.Login();
00046 }
00047
00051 private IOwner owner;
00052
00056 public void Register(IOwner owner){
00057 this.owner = owner;
00058 }
00062 private void Login(){
00063 var login = new LoginDialog(this.owner.Window);
00064 if(login.Run() != (int)ResponseType.Ok || login.Password != "hello")
00065 if(!this.owner.PopActivity())
00066 this.owner.HomeActivity();
00067 login.Destroy();
00068 }
00072 public void Unregister(){
00073
00074 this.owner = null;
00075 }
00079 public Widget Widget{
00080 get{
00081 return this;
00082 }
00083 }
00087 protected virtual void OnCreateNewUserClicked (object sender, System.EventArgs e){
00088 this.CreatePersonTable.Show();
00089 this.CreateNewUser.Sensitive = false;
00090 }
00094 protected virtual void OnDeleteUserButtonClicked (object sender, System.EventArgs e){
00095
00096 var per = (PersonAdapter)this.UserView.NodeSelection.SelectedNode;
00097 if (per != null){
00098 per.Person.Delete();
00099 this.userList.RemoveNode(per);
00100 this.owner.UpdateUserList();
00101 OnUserViewCursorChanged(this, new EventArgs());
00102 }
00103
00104 }
00108 protected virtual void OnCancelNewUserButtonClicked (object sender, System.EventArgs e){
00109 this.CreatePersonTable.Hide();
00110 this.UserNameEntry.Text="";
00111 this.FullNameEntry.Text="";
00112 this.CreateNewUser.Sensitive = true;
00113 }
00117 protected virtual void OnSaveNewUserButtonClicked (object sender, System.EventArgs e){
00118
00119 Person per = new Person(UserNameEntry.Text ,FullNameEntry.Text, BirthDayCalendar.Date, (Gender)GenderCombobox.Active, HeightSpinbutton.Value, WeightSpinbutton.Value, 1.2);
00120 per.Save();
00121
00122 this.userList.AddNode(new PersonAdapter(per));
00123 this.CreatePersonTable.Hide();
00124 this.UserNameEntry.Text="";
00125 this.FullNameEntry.Text="";
00126 this.CreateNewUser.Sensitive = true;
00127 this.owner.UpdateUserList();
00128 }
00132 protected virtual void OnUserViewCursorChanged (object sender, System.EventArgs e){
00133 if (this.UserView.NodeSelection.SelectedNode!=null){
00134 this.DeleteUserButton.Sensitive = true;
00135 }
00136
00137 else{
00138 this.DeleteUserButton.Sensitive = false;
00139 }
00140
00141 }
00145 protected virtual void ValidateEntry (object sender, System.EventArgs e)
00146 {
00147 if (this.FullNameEntry.Text == "" || this.UserNameEntry.Text == ""){
00148 this.SaveNewUserButton.Sensitive = false;
00149 }
00150 else{
00151 this.SaveNewUserButton.Sensitive = true;
00152 }
00153 }
00154 }
00155 }