public FieldLocationScreen (Logg _logg, Action<FieldLocationScreen> callback) : base("FieldLocationScreen", null)
		{
			Title = "Posisjon";
			_callback = callback;
			CurrentLogg = _logg;
			Latitude = CurrentLogg.Latitude;
			Longitude = CurrentLogg.Longitude;
		}
		public FieldLocationScreen (Logg _logg, Action<FieldLocationScreen> callback) : base("FieldLocationScreen", null)
		{
			Title = Utils.Translate("position");
			_callback = callback;
			CurrentLogg = _logg;
			Latitude = CurrentLogg.Latitude;
			Longitude = CurrentLogg.Longitude;
		}
Пример #3
0
		public void Refresh()
		{
			logg = _tableSource.loggItem;
			JaktLoggApp.instance.SaveLoggItem(logg);
			_tableSource.loggItem = logg;

			if(logg.ID > 0){
				Title = Utils.Translate("log");
				NavigationItem.RightBarButtonItem = null;
			}
			TableView.ReloadData();
		}
Пример #4
0
		/*public void SaveArtItem(Art item){
			var itemToUpdate = ArtList.Where(j=>j.ID == item.ID).FirstOrDefault();
			if(itemToUpdate == null)
			{
				item.ID = ArtList.Count == 0 ? 1 : ArtList.Last().ID + 1;
				ArtList.Add(item);
			}
			else
				itemToUpdate = item;
			
			_repository.SaveArtList(ArtList);
		}*/
		public void SaveLoggItem(Logg item){
			LoggList = LoggList.OrderBy(o => o.ID).ToList<Logg>();
			var itemToUpdate = LoggList.Where(j=>j.ID == item.ID).FirstOrDefault();
			if(itemToUpdate == null)
			{
				item.ID = LoggList.Count == 0 ? 1 : LoggList.Last().ID + 1;
				LoggList.Add(item);
			}
			else
				itemToUpdate = item;
			
			_repository.SaveLoggList(LoggList);
		}
Пример #5
0
		public HeaderLoggItem (Logg logg) : base("HeaderLoggItem", null)
		{
			_logg = logg;
		}
Пример #6
0
		protected void AddLocation(Logg logg)
		{
			if(Filter != "")
			{
				if(Filter == "Treff" && logg.Treff == 0)
					return;
				if(Filter == "Bom" && (logg.Skudd == 0 || logg.Treff > 0))
					return;
				if(Filter == "Obs" && (logg.Sett == 0 || logg.Skudd > 0 || logg.Treff > 0))
					return;
			}
			var id = logg.ID;
			var lat = double.Parse(logg.Latitude);
			var lon = double.Parse(logg.Longitude);
			var title = logg.Dato.ToNorwegianDateString() + " kl." +logg.Dato.ToNorwegianTimeString();
			var description = GetPinDescription(logg);
			
			var a = new MyAnnotation(new CLLocationCoordinate2D(lat,lon), title, description);
			a.CurrentLogg = logg;
			Pins.Add(id, a);
			mapView.AddAnnotation(a);
		}
Пример #7
0
		private string GetPinDescription(Logg l){
			var desc =  "";
			if(l.Skudd > 0)
				desc += l.Skudd + " skudd. " + l.Treff + " treff. "; 
			
			if(l.Sett > 0)
				desc += l.Sett + " sett. ";
			
			if(l.ArtId > 0)
				desc += JaktLoggApp.instance.GetArt(l.ArtId).Navn + ". ";
			
			if(l.JegerId > 0)
				desc += "Av " + JaktLoggApp.instance.GetJeger(l.JegerId).Fornavn;
			
			return desc;
		}
Пример #8
0
		public void DeleteLogg(Logg item)
		{
			DeleteFile(Utils.GetPath(item.ImagePath));
			LoggList.Remove(item);
			_repository.SaveLoggList(LoggList);
		}
Пример #9
0
		private string GenerateLoggItemHtml(Logg logg)
		{
			StringBuilder s = new StringBuilder();
			s.Append("<tr>");
			
			s.Append("<td>" + logg.Dato.ToNorwegianDateString()+" kl."+logg.Dato.ToNorwegianTimeString() + "</td>");
			s.Append("<td>" + (logg.JegerId > 0 ? JaktLoggApp.instance.GetJeger(logg.JegerId).Fornavn : "") + "</td>");
			s.Append("<td>" + (logg.ArtId == 0 ? "" : JaktLoggApp.instance.GetArt(logg.ArtId).Navn) + "</td>");
			s.Append("<td>" + logg.Skudd + "</td>");
			s.Append("<td>" + logg.Treff + "</td>");
			s.Append("<td>" + logg.Sett + "</td>");
			s.Append("<td>" + logg.Latitude + "</td>");
			s.Append("<td>" + logg.Longitude + "</td>");
			s.Append("<td>" + logg.Notes + "</td>");
			
			foreach(var loggTypeId in JaktLoggApp.instance.SelectedLoggTypeIds)
			{
				var lt = JaktLoggApp.instance.LoggTypeList.Where(x => x.Key == loggTypeId).FirstOrDefault();
				if(lt != null){
					s.Append("<td>"+logg.GetType().GetProperty(lt.Key).GetValue(logg, null)+"</td>");
				}
			}
			
			s.Append("</tr>");
			
			
			//if(logg.ImagePath.Length > 0)
				//s.Append("<img style='padding:20px; border:ridge 10px #5272a7; -webkit-transform:rotate(7deg);width:200px' src='file://"+logg.ImagePath+"' />");

				/*var mapstr = string.Format("http://maps.google.com/maps/api/staticmap?center={0},{1}&zoom=12&size=200x200&sensor=true&&markers=color:green%7Clabel:PONG%7C{0},{1}", 
				                           logg.Latitude, logg.Longitude);
				s.Append("<img style='padding:10px;' src='"+mapstr+"' />");*/
			
			return s.ToString();
		}
Пример #10
0
		public LoggItemScreen (Logg _logg, Action<LoggItemScreen> callback) : base("LoggItemScreen", null)
		{
			logg = _logg;
			_callback = callback;
		}
Пример #11
0
		public LoggItemScreen (int jaktId, Action<LoggItemScreen> callback) : base("LoggItemScreen", null)
		{
			logg = new Logg(jaktId);
			_callback = callback;
			IsNewItem = true;
		}
Пример #12
0
		public LoggItemTableSource(LoggItemScreen controller, Logg logg)
		{
			loggItem = logg;
			_controller = controller;

			//views
			CellDelete = new CellDeleteButton(HandleDeleteButtonTouchUpInside);
			NSBundle.MainBundle.LoadNib("CellDeleteButton", CellDelete, null);
			delcell = CellDelete.Cell;

			headerLoggItemView = new HeaderLoggItem(loggItem);
			headerLoggItemView.HandleButtonImageTouchUpInside = HandleButtonImageTouchUpInside;
			headerLoggItemView.HandleButtonDogTouchUpInside = HandleButtonDogTouchUpInside;
			headerLoggItemView.HandleButtonJegerTouchUpInside = HandleButtonJegerTouchUpInside;

			//Sections and cells
			var section1 = new SectionMapping("", "");
			var section2 = new SectionMapping("", "");
			var section3 = new SectionMapping("", "");
			var sectionSlett = new SectionMapping("", "");
#region fields

			section1.Rows.Add(new RowItemMapping {
				Label = Utils.Translate("log.header.results"),
				GetValue = () => {
					var lbl = "";
					var art = JaktLoggApp.instance.GetArt(loggItem.ArtId);
					if(art != null)
						lbl = loggItem.Treff + " " + art.Navn + " / " + loggItem.Skudd + " " + Utils.Translate("shots");
					else 
						lbl = loggItem.Skudd + " "+ Utils.Translate("shots") +", " + loggItem.Treff + " "+ Utils.Translate("hits");
					
					if(loggItem.Sett > 0)
						lbl += ", " + loggItem.Sett + " "+ Utils.Translate("seen") +" ";
					
					return lbl;
				},
				RowSelected = () => {
					var fieldScreen = new FieldLoggCatch(Utils.Translate("log.header.results"), screen => {
						loggItem.ArtId = screen.CurrentArtId;
						loggItem.Treff = screen.CurrentHits;
						loggItem.Skudd = screen.CurrentShots;
						loggItem.Sett = screen.CurrentSeen;
						_controller.Refresh();
					});
					fieldScreen.CurrentArtId = loggItem.ArtId;
					fieldScreen.CurrentHits = loggItem.Treff;
					fieldScreen.CurrentShots = loggItem.Skudd;
					fieldScreen.CurrentSeen = loggItem.Sett;
					_controller.NavigationController.PushViewController(fieldScreen, true);
				},
				ImageFile = "Images/Icons/target.png"
			});
			
			section1.Rows.Add(new RowItemMapping {
				Label = Utils.Translate("log.header.position"),
				GetValue = () => {
					return string.IsNullOrEmpty(loggItem.Latitude) ? "-" : Utils.Translate("log.viewinmap");
				},
				RowSelected = () => {
					var fieldScreen = new FieldLocationScreen(loggItem, screen => {
						loggItem.Latitude = screen.Latitude;
						loggItem.Longitude = screen.Longitude;
						_controller.Refresh();
					});
					fieldScreen.Latitude = loggItem.Latitude;
					fieldScreen.Longitude = loggItem.Longitude;
					_controller.NavigationController.PushViewController(fieldScreen, true);
				},
				ImageFile = "Images/Icons/pin.png"
			});
			
			/*
			 * 
			var jeger = new Jeger();
			if(JaktLoggApp.instance.CurrentJakt.JegerIds.Count > 0)
				jeger = JaktLoggApp.instance.GetJeger(JaktLoggApp.instance.CurrentJakt.JegerIds[0]);

			 * section1.Rows.Add(new RowItemMapping {
				Label = "Jeger",
				GetValue = () => {
					
					if(loggItem.JegerId == 0 && JaktLoggApp.instance.CurrentJakt.JegerIds.Count == 1){
						loggItem.JegerId = jeger.ID;
						_controller.Refresh();
					}
					else if(loggItem.JegerId == 0)
						return string.Empty;
					
					else
						jeger = JaktLoggApp.instance.GetJeger(loggItem.JegerId);
					
					
					return jeger.Navn;
				},
				RowSelected = () => {
					ShowJegerView();
				},
				ImageFile = "Images/Icons/user.png"
			});
			
			section1.Rows.Add(new RowItemMapping {
				Label = "Hund",
				GetValue = () => {
					
					if(loggItem.DogId == 0)
						return string.Empty;

					return JaktLoggApp.instance.GetDog(loggItem.DogId).Navn;
					
				},
				RowSelected = () => {
					ShowDogView();
				},
				ImageFile =  "Images/Icons/Tabs/dog-paw.png"
			});
			*/
			section2.Rows.Add(new RowItemMapping {
				Label = Utils.Translate("log.header.time"),
				GetValue = () => {
					return loggItem.Dato.ToLocalDateAndYearString();
				},
				RowSelected = () => {
					var fieldScreen = new FieldDatePickerScreen(screen => {
						loggItem.Dato = screen.Date;
						_controller.Refresh();
					}); 
					fieldScreen.Date = new DateTime(JaktLoggApp.instance.CurrentJakt.DatoFra.Year, 
					                                loggItem.Dato.Month, 
					                                loggItem.Dato.Day, 
					                                loggItem.Dato.Hour, 
					                                loggItem.Dato.Minute, 
					                                loggItem.Dato.Second);
					fieldScreen.Mode = UIDatePickerMode.DateAndTime;
					fieldScreen.Title = Utils.Translate("log.header.time");
					_controller.NavigationController.PushViewController(fieldScreen, true);
				},
				ImageFile = "Images/Icons/calendar.png"
			});
			
			section2.Rows.Add(new RowItemMapping {
				Label = Utils.Translate("log.header.notes"),
				GetValue = () => {
					return loggItem.Notes;
				},
				RowSelected = () => {
					var fieldScreen = new FieldNotesScreen(Utils.Translate("log.header.notes"), screen => {
						loggItem.Notes = screen.Value;
						_controller.Refresh();
					});
					fieldScreen.Value = loggItem.Notes;
					_controller.NavigationController.PushViewController(fieldScreen, true);
				},
				ImageFile = "Images/Icons/notepad.png"
			});
			/*
			section2.Rows.Add(new RowItemMapping {
				Label = "Bilde",
				GetValue = () => {
					return loggItem != null && loggItem.ImagePath.Length > 0 ? "Vis / endre" : "Legg til";
				},
				RowSelected = () => {
					ShowImageView();
				},
				ImageFile = "Images/Icons/camera.png"
			});
			*/
			/*section3.Rows.Add(new RowItemMapping {
				Label = "Værforhold",
				GetValue = () => {
					return loggItem.Weather;
				},
				RowSelected = () => {
					var options = new List<SingleSelectRowItem>();
					options.Add(new SingleSelectRowItem(){ Key = "Sol", TextLabel = "Soll" });
					options.Add(new SingleSelectRowItem(){ Key = "Overskyet", TextLabel = "Overskyet" });
					options.Add(new SingleSelectRowItem(){ Key = "Regn", TextLabel = "Regn" });
					var fieldScreen = new FieldSingleChoiceListScreen("Værforhold", options, screen => {
						loggItem.Weather = screen.SelectedKey;
						_controller.Refresh();
					});
					_controller.NavigationController.PushViewController(fieldScreen, true);
				}
			});*/
			
			foreach(var selectedLoggTypeId in JaktLoggApp.instance.SelectedLoggTypeIds)
			{
				var item = JaktLoggApp.instance.LoggTypeList.SingleOrDefault(i => i.Key == selectedLoggTypeId);
				if(item == null)
					continue;
				
				switch(item.Key){
					case "Weather":
					
						section3.Rows.Add(new RowItemMapping {
						Label = Utils.Translate("log.header.weather"),
						GetValue = () => {
							return loggItem.Weather;
						},
						RowSelected = () => 
							{
								var fieldScreen = new FieldStringScreen(Utils.Translate("log.header.weather"), screen => {
									loggItem.Weather = screen.Value;
									_controller.Refresh();
								});
								fieldScreen.Placeholder = Utils.Translate("log.header.weather");
								fieldScreen.Value = loggItem.Weather;
								//autosuggest:
								var autoitems = (from x in JaktLoggApp.instance.LoggList
								              where x.Weather != string.Empty
											  select x.Weather.ToUpper()).Distinct();
								var autosuggests = new List<ItemCount>();
								foreach(var autoitem in autoitems){
									autosuggests.Add(new ItemCount{
										Name = autoitem,
										Count = JaktLoggApp.instance.LoggList.Where(y => y.Weather.ToUpper() == autoitem).Count()
									});
								}
								fieldScreen.AutoSuggestions = autosuggests.OrderByDescending( o => o.Count ).Take(15).ToList();          
								_controller.NavigationController.PushViewController(fieldScreen, true);
							}
						
						});
					break;
					case "Gender":
					
						section3.Rows.Add(new RowItemMapping {
						Label = Utils.Translate("log.header.gender"),
						GetValue = () => {
							return loggItem.Gender;
						},
						RowSelected = () => 
						{
							var options = new List<SingleSelectRowItem>();
							options.Add(new SingleSelectRowItem(){ Key = Utils.Translate("log.gender.male"), TextLabel = Utils.Translate("log.gender.male") });
							options.Add(new SingleSelectRowItem(){ Key = Utils.Translate("log.gender.female"), TextLabel = Utils.Translate("log.gender.female") });
							
							var fieldScreen = new FieldSingleChoiceListScreen(Utils.Translate("log.header.gender"), options, screen => {
								loggItem.Gender = screen.SelectedKey;
								_controller.Refresh();
							});
							fieldScreen.SelectedKey = loggItem.Gender;
							_controller.NavigationController.PushViewController(fieldScreen, true);
							}
						
						});
					break;
					
					case "Tags":
					
						section3.Rows.Add(new RowItemMapping {
						Label = Utils.Translate("log.header.tags"),
						GetValue = () => {
							return loggItem.Tags == 0 ? "" : loggItem.Tags.ToString();
						},
						RowSelected = () => 
							{
								var fieldScreen = new FieldNumberPickerScreen(screen => {
									loggItem.Tags = Int32.Parse(screen.Value);
									_controller.Refresh();
								});
							fieldScreen.Value = loggItem.Tags.ToString();
							fieldScreen.Title = Utils.Translate("log.header.tags");
							fieldScreen.LabelExtension = " " + Utils.Translate("log.tags");
							
							_controller.NavigationController.PushViewController(fieldScreen, true);
							}
						
						});
					break;
					
					case "Age":
					
						section3.Rows.Add(new RowItemMapping {
						Label = Utils.Translate("log.header.largeage"),
						GetValue = () => {
							return loggItem.Age;
						},
						RowSelected = () => 
							{
								var options = new List<SingleSelectRowItem>();
								options.Add(new SingleSelectRowItem(){ Key = Utils.Translate("log.kalv.name"), TextLabel = Utils.Translate("log.kalv.name") });
								options.Add(new SingleSelectRowItem(){ Key = Utils.Translate("log.kalv.age1"), TextLabel = Utils.Translate("log.kalv.age1") });
								options.Add(new SingleSelectRowItem(){ Key = Utils.Translate("log.kalv.age2"), TextLabel = Utils.Translate("log.kalv.age2") });
								
								var fieldScreen = new FieldSingleChoiceListScreen(Utils.Translate("log.header.largeage"), options, screen => {
								loggItem.Age = screen.SelectedKey;
								_controller.Refresh();
								});
							fieldScreen.SelectedKey = loggItem.Age;
							controller.NavigationController.PushViewController(fieldScreen, true);
							
							}
						});
					break;
					
					case "Weight":
					
						section3.Rows.Add(new RowItemMapping {
						Label = Utils.Translate("log.header.weight"),
						GetValue = () => {
							return loggItem.Weight == 0 ? "" : loggItem.Weight + " kg";
						},
						RowSelected = () => 
							{
								var fieldScreen = new FieldNumberPickerScreen(screen => {
									loggItem.Weight = Int32.Parse(screen.Value);
									_controller.Refresh();
								});
							fieldScreen.Value = loggItem.Weight.ToString();
							fieldScreen.Title = Utils.Translate("log.header.weight");
							fieldScreen.LabelExtension = " kg";
							_controller.NavigationController.PushViewController(fieldScreen, true);
							}
						
						});
					break;
					
					case "ButchWeight":
					
						section3.Rows.Add(new RowItemMapping {
						Label = Utils.Translate("log.header.butchweight"),
						GetValue = () => {
							return loggItem.ButchWeight == 0 ? "" : loggItem.ButchWeight + " kg";
						},
						RowSelected = () => 
							{
								var fieldScreen = new FieldNumberPickerScreen(screen => {
									loggItem.ButchWeight = Int32.Parse(screen.Value);
									_controller.Refresh();
								});
							fieldScreen.Value = loggItem.ButchWeight.ToString();
							fieldScreen.Title = Utils.Translate("log.header.butchweight");
							fieldScreen.LabelExtension = " kg";
							_controller.NavigationController.PushViewController(fieldScreen, true);
							}
						
						});
					break;
					
					case "WeaponType":
					
						section3.Rows.Add(new RowItemMapping {
							Label = Utils.Translate("log.header.weapontype"),
							GetValue = () => {
								return loggItem.WeaponType;
							},
							RowSelected = () => {
								var fieldScreen = new FieldStringScreen(Utils.Translate("log.header.weapontype"), screen => {
									loggItem.WeaponType = screen.Value;
									_controller.Refresh();
								});
								fieldScreen.Placeholder = Utils.Translate("log.writeweapontype");
								fieldScreen.Value = loggItem.WeaponType;
								//autosuggest:
								var autoitems = (from x in JaktLoggApp.instance.LoggList
								              where x.WeaponType != string.Empty
											  select x.WeaponType.ToUpper()).Distinct();
								var autosuggests = new List<ItemCount>();
								foreach(var autoitem in autoitems){
									autosuggests.Add(new ItemCount{
										Name = autoitem,
										Count = JaktLoggApp.instance.LoggList.Where(y => y.WeaponType.ToUpper() == autoitem).Count()
									});
								}
								fieldScreen.AutoSuggestions = autosuggests.OrderByDescending( o => o.Count ).ToList();          
								_controller.NavigationController.PushViewController(fieldScreen, true);
							},
							ImageFile = ""
						});
					
					break;
				}
			}
#endregion

			
			if(!_controller.IsNewItem){
				sectionSlett.Rows.Add(new RowItemMapping {
					Label = Utils.Translate("log.delete"),
					GetValue = () => {
						return "";
					}
				});
			}
			
			sections.Add(section1);
			sections.Add(section2);
			
			if(section3.Rows.Count > 0)
				sections.Add(section3);
			
			sections.Add(sectionSlett);

			foreach(var s in sections){
				headers.Add(new HeaderTableSection(s.Header));
			}
			
		}
Пример #13
0
		public void DeleteLogg(Logg item)
		{
			DeleteFile(Utils.GetPath("jaktlogg_" + item.ID + ".jpg"));
			LoggList.Remove(item);
			_repository.SaveLoggList(LoggList);
		}