private IEnumerable <PoiViewItem> GetMyPois()
        {
            var poiList = Context.Database.GetMyItems();
            List <PoiViewItem> items = new PoiViewItemList(poiList, _location, _iGpsUtilities);

            return(items);
        }
        private IEnumerable <PoiViewItem> GetByName()
        {
            var country = (_spinnerCountry.Adapter as CountryAdapter)[_spinnerCountry.SelectedItemPosition];

            var category = (_spinnerCategory.Adapter as CategoryAdapter)[_spinnerCategory.SelectedItemPosition];

            string poiName = null;

            if (_editTextSearch.Query.Length > 0)
            {
                poiName = _editTextSearch.Query;
            }

            IEnumerable <Poi> poiList;

            if (!string.IsNullOrEmpty(poiName) || country.HasValue || category.HasValue || Context.ShowFavoritePoisOnly)
            {
                poiList = Context.Database.FindItems(poiName, category, country, Context.ShowFavoritePoisOnly);
            }
            else
            {
                poiList = new List <Poi>();
            }
            List <PoiViewItem> items = new PoiViewItemList(poiList, _location, _iGpsUtilities);

            return(items);
        }
Example #3
0
        internal PoiViewItem GetNearestPoi(GpsLocation loc, IGpsUtilities iGpsUtilities)
        {
            var candidates           = GetItems(loc, 0.2);
            List <PoiViewItem> items = new PoiViewItemList(candidates, loc, iGpsUtilities);
            var item = items.OrderBy(x => x.GpsLocation.Distance).FirstOrDefault();

            return(item);
        }
Example #4
0
        private void AddMyLocation(PoiViewItemList poiViewItems)
        {
            var myLocation = new PoiViewItem(GetMyLocationPoi(AppContext));

            myLocation.GpsLocation.Distance          = 0;
            myLocation.GpsLocation.Bearing           = 0;
            myLocation.GpsLocation.VerticalViewAngle = 0;

            poiViewItems.Insert(0, myLocation);
        }
Example #5
0
        public void SetPoiViewItemList(PoiViewItemList srcList)
        {
            lock (syncLock)
            {
                _poisInVisibilityRange = srcList;

                _poisToBeDisplayed = FilterPoisDoBeDisplayed(_poisInVisibilityRange);
            }

            Invalidate();
        }
Example #6
0
        protected void NotifyDataChanged(PoiViewItemList poiData = null)
        {
            if (GpsUtils.HasLocation(MyLocation))
            {
                if (poiData is null)
                {
                    var poiList = Database.GetItems(MyLocation, Settings.MaxDistance);
                    PoiData = new PoiViewItemList(poiList, MyLocation, Settings.MaxDistance, Settings.Categories, iGpsUtilities);
                }
                else
                {
                    PoiData = poiData;
                }

                //fetch selected point again
                if (SelectedPoi != null)
                {
                    var selectedPoi = PoiData.Find(x => x.Poi.Id == SelectedPoi.Poi.Id);
                    if (selectedPoi != null)
                    {
                        selectedPoi.Selected = true;
                        SelectedPoi          = selectedPoi;
                    }
                    else
                    {
                        SelectedPoi = null;
                    }
                }

                var args = new DataChangedEventArgs()
                {
                    PoiData = PoiData
                };
                DataChanged?.Invoke(this, args);
            }
            else
            {
                var args = new DataChangedEventArgs()
                {
                    PoiData = null
                };
                DataChanged?.Invoke(this, args);
            }
        }
Example #7
0
        public void FilterPlaces(string name, PoiCountry?country, PoiCategory?category)
        {
            Task.Run(() =>
            {
                IEnumerable <Poi> poiList;
                if (!string.IsNullOrEmpty(name) || country.HasValue || category.HasValue)
                {
                    poiList = AppContext.Database.FindItems(name, category, country, false);
                }
                else
                {
                    poiList = new List <Poi>();
                }

                IEnumerable <PoiViewItem> items = new PoiViewItemList(poiList, _centerGpsLocation ?? AppContext.MyLocation, _iGpsUtilities);
                items = (_sortBy == SortBy.Name) ? items.OrderBy(x => x.Poi.Name) : items.OrderBy(x => x.GpsLocation.Distance);
                MainThread.BeginInvokeOnMainThread(() => _adapter.SetItems(items));
            });
        }
Example #8
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            if (DeviceDisplay.MainDisplayInfo.Orientation == DisplayOrientation.Portrait)
            {
                SetContentView(Resource.Layout.PoiSelectActivityPortrait);
            }
            else
            {
                SetContentView(Resource.Layout.PoiSelectActivityLandscape);
            }


            var toolbar = FindViewById <Toolbar>(Resource.Id.toolbar);

            SetActionBar(toolbar);

            ActionBar.SetDisplayShowHomeEnabled(true);
            ActionBar.SetDisplayHomeAsUpEnabled(true);
            ActionBar.SetDisplayShowTitleEnabled(true);
            ActionBar.SetTitle(Resource.String.PoiSelectActivity);

            _changeFilterTimer.Interval  = 1000;
            _changeFilterTimer.Elapsed  += OnChangeFilterTimerElapsed;
            _changeFilterTimer.AutoReset = false;

            var longitude = Intent.GetDoubleExtra("Longitude", Double.NaN);
            var latitude  = Intent.GetDoubleExtra("Latitude", Double.NaN);
            var sortBy    = Intent.GetStringExtra("SortBy");

            if (longitude != Double.NaN && latitude != Double.NaN)
            {
                _centerGpsLocation = new GpsLocation(longitude, latitude, 0);
            }

            if (!Enum.TryParse(sortBy, out _sortBy))
            {
                _sortBy = SortBy.Name;
            }

            _searchViewText           = FindViewById <SearchView>(Resource.Id.editTextSearch);
            _searchViewText.Iconified = false;
            _searchViewText.SetQueryHint(Resources.GetText(Resource.String.Common_Search));
            _searchViewText.SetOnQueryTextListener(this);
            _searchViewText.FocusableViewAvailable(_listViewPoi);

            _spinnerCountry               = FindViewById <Spinner>(Resource.Id.spinnerCountry);
            _spinnerCountry.Adapter       = new CountryAdapter(this, true);
            _spinnerCountry.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs>(OnFilterCountryChanged);

            _spinnerCategory               = FindViewById <Spinner>(Resource.Id.spinnerCategory);
            _spinnerCategory.Adapter       = new CategoryAdapter(this, true);
            _spinnerCategory.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs>(OnFilterCategoryChanged);

            _listViewPoi = FindViewById <ListView>(Resource.Id.listViewPoi);

            var poiViewItems = new PoiViewItemList(null, AppContext.MyLocation, _iGpsUtilities);

            if (Intent.Action == REQUEST_SELECT_DOWNLOADELEVATIONDATAAREA.ToString())
            {
                if (Peaks360Lib.Utilities.GpsUtils.HasLocation(AppContext.MyLocation))
                {
                    AddMyLocation(poiViewItems);
                }
            }

            _adapter             = new PoiListItemAdapter(this, poiViewItems, this, false);
            _listViewPoi.Adapter = _adapter;
        }
Example #9
0
 protected AppContextBase()
 {
     PoiData  = new PoiViewItemList();
     Settings = new Settings();
     Settings.SettingsChanged += OnSettingsChanged;
 }