public void StorageTest() { Debug.WriteLine("StorageTest start."); NavigraphStorage.DeleteAllNavigraph(); NavigraphStorage.SaveNavigraphInformation("test1", ""); NavigraphStorage.SaveNavigraphInformation("test1", ""); string[] Maps = NavigraphStorage.GetAllNavigraphs(); Assert.AreEqual(1, Maps.Length); NavigraphStorage.SaveNavigraphInformation("test2", ""); NavigraphStorage.SaveNavigraphInformation("test3", ""); Maps = NavigraphStorage.GetAllNavigraphs(); Assert.AreEqual(3, Maps.Length); NavigraphStorage.DeleteNavigraph("test4"); Maps = NavigraphStorage.GetAllNavigraphs(); Assert.AreEqual(3, Maps.Length); NavigraphStorage.DeleteNavigraph("test3"); Maps = NavigraphStorage.GetAllNavigraphs(); Assert.AreEqual(2, Maps.Length); NavigraphStorage.DeleteAllNavigraph(); Maps = NavigraphStorage.GetAllNavigraphs(); Assert.AreEqual(0, Maps.Length); TestClose(); Debug.WriteLine("StorageTest done."); }
private async Task HandleCLeanMapAsync() { try { if (CleanMapPicker.SelectedItem.ToString() == "--全部--") { if (await DisplayAlert("警告", "確定要刪除所有地圖嗎?", "Yes", "No")) { // 刪除所有地圖資料 NavigraphStorage.DeleteAllNavigraph(); await DisplayAlert("訊息", "刪除成功", "OK"); } } else { if (await DisplayAlert("警告", string.Format("確定要刪除 地圖:{0} 嗎?", CleanMapPicker.SelectedItem), "Yes", "No")) { // 刪除選擇的地圖資料 NavigraphStorage.DeleteNavigraph(CleanMapPicker.SelectedItem.ToString()); await DisplayAlert("訊息", "刪除成功", "OK"); } } } catch { await DisplayAlert("錯誤", "刪除地圖時發生不明錯誤", "確定"); } CleanMapPicker.SelectedItem = ""; ReloadNaviGraphItems(); }
public NavigatorPageViewModel(string navigationGraphName, Guid destinationRegionID, Guid destinationWaypointID, string destinationWaypointName, XMLInformation informationXML) { _firsrDirectionInstructionScaleVale = 1; _destinationID = destinationWaypointID; _destinationWaypointName = destinationWaypointName; CurrentStepImage = "waittingscan.gif"; _instructionLocation = _originalInstructionLocation; _navigationModule = new NavigationModule(navigationGraphName, destinationRegionID, destinationWaypointID); _navigationModule._event._eventHandler += GetNavigationResultEvent; const string resourceId = "IndoorNavigation.Resources.AppResources"; _resourceManager = new ResourceManager(resourceId, typeof(TranslateExtension).GetTypeInfo().Assembly); CurrentWaypointName = _resourceManager.GetString("NULL_STRING", CrossMultilingual.Current.CurrentCultureInfo); CurrentStepLabel = _resourceManager.GetString("NO_SIGNAL_STRING", CrossMultilingual.Current.CurrentCultureInfo); var currentLanguage = CrossMultilingual.Current.CurrentCultureInfo; if (CrossMultilingual.Current.CurrentCultureInfo.ToString() == "en" || CrossMultilingual.Current.CurrentCultureInfo.ToString() == "en-US") { _firstDirectionInstruction = NavigraphStorage.LoadFirstDirectionXML(navigationGraphName + "_en-US.xml"); } else if (CrossMultilingual.Current.CurrentCultureInfo.ToString() == "zh" || CrossMultilingual.Current.CurrentCultureInfo.ToString() == "zh-TW") { _firstDirectionInstruction = NavigraphStorage.LoadFirstDirectionXML(navigationGraphName + "_zh.xml"); } _navigationGraph = NavigraphStorage.LoadNavigationGraphXML(navigationGraphName); _xmlInformation = informationXML; }
public DestinationPickPage(string navigraphName, CategoryType category) { InitializeComponent(); DestinationItems = new ObservableCollection <DestinationItem>(); _navigraphName = navigraphName; IEnumerable <Waypoint> waypoints = from region in NavigraphStorage.LoadNavigraphXML(navigraphName).Regions from waypoint in region.Waypoints where waypoint.Category.Equals(category) select waypoint; foreach (Waypoint waypoint in waypoints) { DestinationItems.Add(new DestinationItem { ID = waypoint.ID, WaypointName = waypoint.Name, Floor = waypoint.Floor }); } MyListView.ItemsSource = from waypoint in DestinationItems group waypoint by waypoint.Floor into waypointGroup orderby waypointGroup.Key select new Grouping <int, DestinationItem>(waypointGroup.Key, waypointGroup); }
/// <summary> /// If it is the first time to get waypoint then get the value of /// route options and start the corresponding session. /// </summary> private void ConstructSession() { List <ConnectionType> avoidList = new List <ConnectionType>(); Console.WriteLine("-- setup preference --- "); if (Application.Current.Properties.ContainsKey("AvoidStair")) { avoidList.Add( (bool)Application.Current.Properties["AvoidStair"] ? ConnectionType.Stair : ConnectionType.NormalHallway); avoidList.Add( (bool)Application.Current.Properties["AvoidElevator"] ? ConnectionType.Elevator : ConnectionType.NormalHallway); avoidList.Add( (bool)Application.Current.Properties["AvoidEscalator"] ? ConnectionType.Escalator : ConnectionType.NormalHallway); avoidList = avoidList.Distinct().ToList(); avoidList.Remove(ConnectionType.NormalHallway); } Console.WriteLine("-- end of setup preference --- "); // Start the session _session = new Session( NavigraphStorage.LoadNavigationGraphXML(_navigationGraphName), _destinationRegionID, _destinationWaypointID, avoidList.ToArray()); _navigationResultEventHandler = new EventHandler(HandleNavigationResult); _session._event._eventHandler += _navigationResultEventHandler; }
/// <summary> /// If it is the first time to get waypoint then get the value of /// route options and start the corresponding session. /// </summary> private void StartSession(EventArgs args) { const int falseInt = -100; List <int> avoidList = new List <int>(); if (Application.Current.Properties.ContainsKey("AvoidStair")) { avoidList.Add( (bool)Application.Current.Properties["AvoidStair"] ? (int)ConnectionType.Stair : falseInt); avoidList.Add( (bool)Application.Current.Properties["AvoidElevator"] ? (int)ConnectionType.Elevator : falseInt); avoidList.Add( (bool)Application.Current.Properties["AvoidEscalator"] ? (int)ConnectionType.Escalator : falseInt); avoidList = avoidList.Distinct().ToList(); avoidList.Remove(falseInt); } // Start the session _session = new Session( NavigraphStorage.LoadNavigraphXML(_navigraphName), (args as WaypointScanEventArgs).WaypointID, _destinationID, avoidList.ToArray()); _navigationResultHandler = new EventHandler(HandleNavigationResult); _session.Event.SessionResultHandler += _navigationResultHandler; WaypointEvent.CurrentWaypointEventHandler += _session.DetectRoute; }
public DestinationPickPage(string navigationGraphName, CategoryType category) { InitializeComponent(); const string resourceId = "IndoorNavigation.Resources.AppResources"; _resourceManager = new ResourceManager(resourceId, typeof(TranslateExtension).GetTypeInfo().Assembly); _destinationItems = new ObservableCollection <DestinationItem>(); _navigationGraphName = navigationGraphName; _navigationGraph = NavigraphStorage.LoadNavigationGraphXML(navigationGraphName); if (CrossMultilingual.Current.CurrentCultureInfo.ToString() == "en" || CrossMultilingual.Current.CurrentCultureInfo.ToString() == "en-US") { _nameInformation = NavigraphStorage.LoadInformationML(navigationGraphName + "_info_en-US.xml"); } else if (CrossMultilingual.Current.CurrentCultureInfo.ToString() == "zh" || CrossMultilingual.Current.CurrentCultureInfo.ToString() == "zh-TW") { _nameInformation = NavigraphStorage.LoadInformationML(navigationGraphName + "_info_zh.xml"); } NavigationPage.SetBackButtonTitle(this, _resourceManager.GetString("BACK_STRING", CrossMultilingual.Current.CurrentCultureInfo)); foreach (KeyValuePair <Guid, IndoorNavigation.Models.Region> pairRegion in _navigationGraph.GetRegions()) { string floorName = _nameInformation.GiveRegionName(pairRegion.Value._id); if (pairRegion.Value._waypointsByCategory.ContainsKey(category)) { foreach (Waypoint waypoint in pairRegion.Value._waypointsByCategory[category]) { string waypointName = waypoint._name; waypointName = _nameInformation.GiveWaypointName(waypoint._id); if (waypoint._type.ToString() == "terminal" || waypoint._type.ToString() == "landmark") { Console.WriteLine("check type : " + waypoint._type.ToString()); _destinationItems.Add(new DestinationItem { _regionID = pairRegion.Key, _waypointID = waypoint._id, _waypointName = waypointName, _floor = floorName }); } else { Console.WriteLine("Portal, No need to add!!"); } } } } MyListView.ItemsSource = from waypoint in _destinationItems group waypoint by waypoint._floor into waypointGroup orderby waypointGroup.Key select new Grouping <string, DestinationItem>(waypointGroup.Key, waypointGroup); }
void Item_Delete(object sender, EventArgs e) { var item = (Location)((MenuItem)sender).CommandParameter; if (item != null) { NavigraphStorage.DeleteNavigraph(item.UserNaming); viewModel.LoadNavigationGraph(); } }
private async Task HandleCLeanMapAsync() { var ci = CrossMultilingual.Current.CurrentCultureInfo; try { if (CleanMapPicker.SelectedItem.ToString() == _resourceManager.GetString("ALL_STRING", ci)) { if (await DisplayAlert(_resourceManager.GetString("WARN_STRING", ci), _resourceManager.GetString("ASK_IF_CANCEL_ALL_MAP_STRING", ci), _resourceManager.GetString("OK_STRING", ci), _resourceManager.GetString("CANCEL_STRING", ci))) { // Cancel All Map NavigraphStorage.DeleteAllNavigationGraph(); NavigraphStorage.DeleteAllFirstDirectionXML(); NavigraphStorage.DeleteAllInformationXML(); await DisplayAlert(_resourceManager.GetString("MESSAGE_STRING", ci), _resourceManager.GetString("SUCCESSFULLY_DELETE_STRING", ci), _resourceManager.GetString("OK_STRING", ci)); } } else { if (await DisplayAlert(_resourceManager.GetString("WARN_STRING", ci), //_resourceManager.GetString("ASK_IF_CANCEL_MAP_STRING", ci), //_resourceManager.GetString("MAP_STRING", ci), //string.Format(":{0}?", CleanMapPicker.SelectedItem), string.Format(_resourceManager.GetString("ASK_IF_CANCEL_MAP_STRING", ci) + _resourceManager.GetString("MAP_STRING", ci) + ":{0}?", CleanMapPicker.SelectedItem), _resourceManager.GetString("OK_STRING", ci), _resourceManager.GetString("CANCEL_STRING", ci))) { // Delete selected map NavigraphStorage.DeleteNavigationGraph(CleanMapPicker.SelectedItem.ToString()); NavigraphStorage.DeleteFirstDirectionXML(CleanMapPicker.SelectedItem.ToString()); NavigraphStorage.DeleteInformationML(CleanMapPicker.SelectedItem.ToString()); await DisplayAlert(_resourceManager.GetString("MESSAGE_STRING", ci), _resourceManager.GetString("SUCCESSFULLY_DELETE_STRING", ci), _resourceManager.GetString("OK_STRING", ci)); } } } catch { await DisplayAlert(_resourceManager.GetString("ERROR_STRING", ci), _resourceManager.GetString("ERROR_TO_DELETE_STRING", ci), _resourceManager.GetString("OK_STRING", ci)); } CleanMapPicker.SelectedItem = ""; ReloadNaviGraphItems(); }
private void ReloadNaviGraphItems() { SelectNaviGraphItems.Clear(); SelectNaviGraphItems.Add("--請選擇圖資--"); CleanNaviGraphItems.Clear(); CleanNaviGraphItems.Add("--全部--"); foreach (var naviGraphName in NavigraphStorage.GetAllNavigraphs()) { SelectNaviGraphItems.Add(naviGraphName); CleanNaviGraphItems.Add(naviGraphName); } }
private void ReloadNaviGraphItems() { var ci = CrossMultilingual.Current.CurrentCultureInfo; _selectNaviGraphItems.Clear(); _selectNaviGraphItems.Add(_resourceManager.GetString("CHOOSE_MAP_STRING", ci)); _cleanNaviGraphItems.Clear(); _cleanNaviGraphItems.Add(_resourceManager.GetString("ALL_STRING", ci)); foreach (var naviGraphName in NavigraphStorage.GetAllNavigationGraphs()) { _selectNaviGraphItems.Add(naviGraphName); _cleanNaviGraphItems.Add(naviGraphName); } }
async void Handle_ItemTapped(object sender, ItemTappedEventArgs e) { if (e.Item is Location location) { switch (NavigraphStorage.LoadNavigraphXML(location.UserNaming).Name) { case "NTUH_YunLin": var answser = await DisplayAlert("Go to navigation homepage", location.UserNaming, "OK", "Cancel"); if (answser) { await Navigation.PushAsync(new NavigationHomePage(location.UserNaming)); } break; default: break; } } }
async void Handle_ItemTapped(object sender, ItemTappedEventArgs e) { var currentLanguage = CrossMultilingual.Current.CurrentCultureInfo; if (e.Item is Location location) { NavigationGraph navigationGraph = NavigraphStorage.LoadNavigationGraphXML(location.UserNaming); switch (navigationGraph.GetIndustryServer()) { case "hospital": var answser = await DisplayAlert( _resourceManager.GetString("GO_NAVIGATION_HOME_PAGE_STRING", currentLanguage), location.UserNaming, _resourceManager.GetString("OK_STRING", currentLanguage), _resourceManager.GetString("CANCEL_STRING", currentLanguage)); if (answser) { await Navigation.PushAsync(new NavigationHomePage(location.UserNaming)); } break; case "city_hall": var answser_city_hall = await DisplayAlert( _resourceManager.GetString("GO_NAVIGATION_HOME_PAGE_STRING", currentLanguage), location.UserNaming, _resourceManager.GetString("OK_STRING", currentLanguage), _resourceManager.GetString("CANCEL_STRING", currentLanguage)); if (answser_city_hall) { await Navigation.PushAsync(new CityHallHomePage(location.UserNaming)); } break; default: Console.WriteLine("Unknown _industryService"); break; } } }
public async void LoadNavigationGraph() { _locations = new ObservableRangeCollection <Location>(); var ci = CrossMultilingual.Current.CurrentCultureInfo; if (!Application.Current.Properties.ContainsKey("FirstUse")) { string NTUH_YunLin = _resourceManager.GetString("HOSPITAL_NAME_STRING", ci).ToString(); string Taipei_City_Hall = _resourceManager.GetString("TAIPEI_CITY_HALL_STRING", ci).ToString(); NavigraphStorage.GenerateFileRoute(NTUH_YunLin, "NTUH_YunLin"); NavigraphStorage.GenerateFileRoute(Taipei_City_Hall, "Taipei_City_Hall"); Application.Current.Properties["FirstUse"] = false; } foreach (string naviGraphName in NavigraphStorage.GetAllNavigationGraphs()) { _locations.Add(new Location { UserNaming = naviGraphName }); } if (_locations.Any()) { NavigationGraphFiles = _locations; } else { var currentLanguage = CrossMultilingual.Current.CurrentCultureInfo; Page mainPage = Application.Current.MainPage; await mainPage.DisplayAlert( _resourceManager.GetString("GO_SETTING_PAGE_STRING", currentLanguage), _resourceManager.GetString("DOWNLOAD_NAVIGATION_GRAPH_STRING", currentLanguage), _resourceManager.GetString("OK_STRING", currentLanguage)); await mainPage.Navigation.PushAsync(new SettingTableViewPage()); } }
private async void HandleChooseMap() { var ci = CrossMultilingual.Current.CurrentCultureInfo; string NTUH_YunLin = _resourceManager.GetString("HOSPITAL_NAME_STRING", ci).ToString(); string Taipei_City_Hall = _resourceManager.GetString("TAIPEI_CITY_HALL_STRING", ci).ToString(); string Lab = _resourceManager.GetString("LAB_STRING", ci).ToString(); if (OptionPicker.SelectedItem.ToString().Trim() == NTUH_YunLin) { NavigraphStorage.GenerateFileRoute(NTUH_YunLin, "NTUH_YunLin"); } else if (OptionPicker.SelectedItem.ToString().Trim() == Taipei_City_Hall) { NavigraphStorage.GenerateFileRoute(Taipei_City_Hall, "Taipei_City_Hall"); } else if (OptionPicker.SelectedItem.ToString().Trim() == Lab) { NavigraphStorage.GenerateFileRoute(Lab, "Lab"); } ReloadNaviGraphItems(); }
public async void LoadNavigationGraph() { locations = new ObservableRangeCollection <Location>(); foreach (string naviGraphName in NavigraphStorage.GetAllNavigraphs()) { locations.Add(new Location { UserNaming = naviGraphName }); } if (locations.Any()) { NavigationGraphFiles = locations; } else { Page mainPage = Application.Current.MainPage; await mainPage.DisplayAlert("Go to the Setting page", "You should download the navigation graph first", "OK"); await mainPage.Navigation.PushAsync(new SettingTableViewPage()); } }