Example #1
0
        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;
        }
Example #4
0
        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);
        }
Example #5
0
        /// <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;
        }
Example #6
0
        /// <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;
        }
Example #7
0
        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();
            }
        }
Example #9
0
        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);
            }
        }
Example #11
0
        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());
            }
        }
Example #15
0
        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();
        }
Example #16
0
        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());
            }
        }