00001 00002 using System; 00003 using Gtk; 00004 using Foodolini.Activities; 00005 using Foodolini.BusinessLogic; 00006 00007 namespace Foodolini.Activities.RegisterExercise 00008 { 00009 00010 [System.ComponentModel.ToolboxItem(true)] 00011 public partial class ChooseSportsActivity : Gtk.Bin, IActivity 00012 { 00013 private NodeStore sportsNode = new NodeStore(typeof(SportsAdapter)); 00014 private IOwner owner; 00015 00019 00020 public ChooseSportsActivity() 00021 { 00022 this.Build(); 00023 this.nvSportsActivity.NodeStore = this.sportsNode; 00024 this.nvSportsActivity.AppendColumn("Sports Activity", new CellRendererText(), "text", 0); 00025 00026 this.nvSportsActivity.AppendColumn("METs", new CellRendererText(), delegate(TreeViewColumn tree_column, CellRenderer cell, ITreeNode node){ 00027 SportsAdapter n = (SportsAdapter)node; 00028 CellRendererText c = (CellRendererText)cell; 00029 c.Text = n.METs.ToString(); 00030 }); 00031 00032 foreach (SportsActivity spo in SportsActivity.ListActivities()) { 00033 sportsNode.AddNode(new SportsAdapter(spo)); 00034 } 00035 00036 btEditSportsActivity.Sensitive = false; 00037 btDeleteSportsActivity.Sensitive = false; 00038 00039 nvSportsActivity.ShowAll(); 00040 } 00041 00042 public void Register(IOwner owner){ 00043 this.owner = owner; 00044 } 00045 00046 public void Unregister(){ 00047 this.owner = null; 00048 } 00049 00059 protected virtual void OnBtCreateSportsActivityClicked (object sender, System.EventArgs e) 00060 { 00061 00062 CreateSportsActivityDialog dialog = new CreateSportsActivityDialog(); 00063 ResponseType res = (ResponseType)dialog.Run(); 00064 00065 string spName; 00066 double spMet; 00067 SportsActivity spSport; 00068 00069 if (res == ResponseType.Ok) { 00070 spName = dialog.SportsActivityName; 00071 spMet = dialog.SportsActivityMet; 00072 spSport = new SportsActivity(spName, spMet); 00073 spSport.Save(); 00074 this.sportsNode.AddNode(new SportsAdapter(spSport)); 00075 Console.WriteLine("It does"); 00076 } 00077 00078 dialog.Destroy(); 00079 00080 } 00081 00091 protected virtual void OnBtDeleteSportsActivityClicked (object sender, System.EventArgs e) 00092 { 00093 var sport = (SportsAdapter)this.nvSportsActivity.NodeSelection.SelectedNode; 00094 if (sport != null){ 00095 ConfirmDialog dialog = new ConfirmDialog(); 00096 00097 ResponseType res = (ResponseType)dialog.Run(); 00098 00099 if (res == ResponseType.Ok) { 00100 this.sportsNode.RemoveNode(sport); 00101 sport.SportsActivity.Delete(); 00102 if(SportsActivityChanged != null) 00103 this.SportsActivityChanged(this, new EventArgs()); 00104 } 00105 dialog.Destroy(); 00106 } 00107 00108 } 00109 00119 protected virtual void OnBtEditSportsActivityClicked (object sender, System.EventArgs e) 00120 { 00121 var sport = (SportsAdapter)this.nvSportsActivity.NodeSelection.SelectedNode; 00122 if (sport.SportsActivity != null){ 00123 00124 CreateSportsActivityDialog dialog = new CreateSportsActivityDialog(sport.SportsActivity); 00125 00126 ResponseType res = (ResponseType)dialog.Run(); 00127 00128 if (res == ResponseType.Ok) { 00129 sport.SportsActivity.Name = dialog.SportsActivityName; 00130 sport.SportsActivity.METS = dialog.SportsActivityMet; 00131 sport.SportsActivity.Save(); 00132 nvSportsActivity.QueueDraw(); 00133 } 00134 00135 dialog.Destroy(); 00136 } 00137 00138 } 00139 00140 protected virtual void OnNvSportsActivityCursorChanged (object sender, System.EventArgs e) 00141 { 00142 if(nvSportsActivity.NodeSelection.SelectedNode != null) { 00143 btEditSportsActivity.Sensitive = true; 00144 btDeleteSportsActivity.Sensitive = true; 00145 } else { 00146 btEditSportsActivity.Sensitive = false; 00147 btDeleteSportsActivity.Sensitive = false; 00148 } 00149 if(SportsActivityChanged != null) 00150 this.SportsActivityChanged(this, new EventArgs()); 00151 } 00152 00156 public event EventHandler SportsActivityChanged; 00157 00161 public SportsActivity SportsActivity { 00162 get { 00163 if(this.nvSportsActivity.NodeSelection.SelectedNode != null) { 00164 return ((SportsAdapter)this.nvSportsActivity.NodeSelection.SelectedNode).SportsActivity; 00165 } 00166 return null; 00167 } 00168 set { 00169 foreach (SportsAdapter s in sportsNode) { 00170 if (s.SportsActivity.Name == value.Name) 00171 nvSportsActivity.NodeSelection.SelectNode(s); 00172 } 00173 } 00174 } 00175 00176 00177 00178 public Widget Widget{ 00179 get{ 00180 return this; 00181 } 00182 } 00183 } 00184 }