コード例 #1
0
ファイル: OpenFileHelper.cs プロジェクト: vividos/WhereToFly
        /// <summary>
        /// Asks user if locations or tracks should be imported
        /// </summary>
        /// <param name="geoDataFile">geo data file to import from</param>
        /// <returns>task to wait on</returns>
        private static async Task AskUserImportLocationsOrTracks(IGeoDataFile geoDataFile)
        {
            string question = "What do you want to import?";

            var choices = new string[2]
            {
                "Import Locations",
                "Import Tracks"
            };

            string choice = await App.Current.MainPage.DisplayActionSheet(
                question,
                null,
                null,
                choices[0],
                choices[1]);

            if (choice == choices[0])
            {
                await ImportLocationListAsync(geoDataFile.LoadLocationList());
            }
            else if (choice == choices[1])
            {
                await SelectAndImportTrackAsync(geoDataFile);
            }
        }
コード例 #2
0
ファイル: OpenFileHelper.cs プロジェクト: vividos/WhereToFly
        /// <summary>
        /// Selects a single file in the track list and imports the track
        /// </summary>
        /// <param name="geoDataFile">geo data file to import from</param>
        /// <returns>true when loading track was successful, false when not</returns>
        private static async Task <bool> SelectAndImportTrackAsync(IGeoDataFile geoDataFile)
        {
            var trackList = geoDataFile.GetTrackList();

            if (trackList.Count == 1)
            {
                return(await ImportTrackAsync(geoDataFile, 0));
            }

            string question = "Select track to import";

            var choices = new List <string>();
            int count   = 0;

            foreach (var trackName in trackList)
            {
                count++;
                choices.Add($"{count}. {trackName}");
            }

            string choice = await App.Current.MainPage.DisplayActionSheet(
                question,
                "Cancel",
                null,
                choices.ToArray());

            int index = choices.IndexOf(choice);

            if (index != -1)
            {
                return(await ImportTrackAsync(geoDataFile, index));
            }

            return(false);
        }
コード例 #3
0
ファイル: OpenFileHelper.cs プロジェクト: vividos/WhereToFly
        /// <summary>
        /// Imports a single track and adds it to the map
        /// </summary>
        /// <param name="geoDataFile">geo data file to import track from</param>
        /// <param name="trackIndex">track index</param>
        /// <returns>true when loading track was successful, false when not</returns>
        private static async Task <bool> ImportTrackAsync(IGeoDataFile geoDataFile, int trackIndex)
        {
            var track = geoDataFile.LoadTrack(trackIndex);

            if (track == null)
            {
                return(false);
            }

            track.Description = HtmlConverter.Sanitize(track.Description);

            track.CalculateStatistics();

            await CloseWaitingPopupPageAsync();

            track = await AddTrackPopupPage.ShowAsync(track);

            if (track == null)
            {
                return(false); // user canceled editing track properties
            }

            // sample track heights only when it's a flight; non-flight tracks are draped onto
            // the ground
            if (track.IsFlightTrack)
            {
                await AdjustTrackHeightsAsync(track);
            }

            var dataService      = DependencyService.Get <IDataService>();
            var trackDataService = dataService.GetTrackDataService();

            await trackDataService.Add(track);

            if (track.IsLiveTrack)
            {
                var liveWaypointRefreshService = DependencyService.Get <LiveDataRefreshService>();
                liveWaypointRefreshService.AddLiveTrack(track);
            }

            await App.AddTrack(track);

            App.MapView.ZoomToTrack(track);

            App.ShowToast("Track was loaded.");

            return(true);
        }
コード例 #4
0
        /// <summary>
        /// Imports a single track and adds it to the map
        /// </summary>
        /// <param name="geoDataFile">geo data file to import track from</param>
        /// <param name="trackIndex">track index</param>
        /// <returns>true when loading track was successful, false when not</returns>
        private static async Task <bool> ImportTrackAsync(IGeoDataFile geoDataFile, int trackIndex)
        {
            var track = geoDataFile.LoadTrack(trackIndex);

            if (track == null)
            {
                return(false);
            }

            track.CalculateStatistics();

            await CloseWaitingPopupPageAsync();

            track = await AddTrackPopupPage.ShowAsync(track);

            if (track == null)
            {
                return(false); // user canceled editing track properties
            }

            // sample track heights only when it's a flight; non-flight tracks are draped onto
            // the ground
            if (track.IsFlightTrack)
            {
                await SampleTrackHeightsAsync(track);
            }

            var dataService = DependencyService.Get <IDataService>();

            var currentList = await dataService.GetTrackListAsync(CancellationToken.None);

            currentList.Add(track);

            await dataService.StoreTrackListAsync(currentList);

            App.AddMapTrack(track);
            App.ZoomToTrack(track);

            App.ShowToast("Track was loaded.");

            return(true);
        }