예제 #1
0
        public async Task SetActiveZoneViewModel(string zoneUdn)
        {
            if (string.IsNullOrEmpty(zoneUdn))
            {
                zoneUdn = await ApplicationData.Current.LocalSettings.ReadAsync <string>("ACTIVEZONE");

                zoneUdn = ZoneViewModels.Select(z => z).Where(z => z.Udn == zoneUdn).FirstOrDefault()?.Udn;
                if (string.IsNullOrEmpty(zoneUdn))
                {
                    zoneUdn = ZoneViewModels.First().Udn;
                    await ApplicationData.Current.LocalSettings.SaveAsync("ACTIVEZONE", zoneUdn);
                }
            }

            foreach (var zone in ZoneViewModels)
            {
                if (zone.Udn == zoneUdn)
                {
                    zone.IsActive = true;
                    (SecondaryItems.Select(i => i).Where(i => i.GetType() == typeof(ManageZonesNavigationViewModel)).FirstOrDefault()).Label = zone.Name;
                    ActiveZoneViewModel = zone;

                    await ApplicationData.Current.LocalSettings.SaveAsync("ACTIVEZONE", zone.Udn);
                }
                else
                {
                    zone.IsActive = false;
                }
            }
        }
예제 #2
0
        public async Task DeleteZone(object obj)
        {
            if (NotNetOrConnection)
            {
                return;
            }

            try
            {
                ZoneViewModel zvm = (ZoneViewModel)obj;
                State = ModelState.Loading;
                Zone zone = new Zone();
                zvm.SaveFields(zone);
                await NAV.DeleteZone(zone, ACD.Default).ConfigureAwait(true);

                ZoneViewModels.Remove(zvm);
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine(e.Message);
                ErrorText = e.Message;
                State     = ModelState.Error;
            }
            finally
            {
                State         = ModelState.Normal;
                LoadAnimation = false;
            }
        }
        public override async void SaveChangesAsync()
        {
            if (NotNetOrConnection)
            {
                return;
            }

            List <ZoneViewModel> list = ZoneViewModels.ToList().FindAll(x => x.IsSelected == true);

            foreach (ZoneViewModel zvm in list)
            {
                try
                {
                    Zone zone = new Zone();
                    zvm.SaveFields(zone);
                    await NAV.ModifyZone(zone, ACD.Default).ConfigureAwait(true);
                }
                catch (Exception e)
                {
                    System.Diagnostics.Debug.WriteLine(e.Message);
                    State     = ModelState.Error;
                    ErrorText = e.Message;
                }
            }

            UpdateMinSizes();
        }
 public void ClearAll()
 {
     foreach (ZoneViewModel zvm in ZoneViewModels)
     {
         zvm.DisposeModel();
     }
     ZoneViewModels.Clear();
 }
예제 #5
0
        public async void OnZonesFound(object sender, EventArgs <ObservableCollection <ZoneViewModel> > e)
        {
            await DispatcherHelper.ExecuteOnUIThreadAsync(async() => {
                if ((ZoneViewModels?.Count() ?? 0) > 0)
                {
                    ZoneViewModels.Clear();
                }

                //Get saved settings
                ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
                string udn = localSettings.Values["ACTIVEZONE"] as string;

                //Check is there were settings
                //If not, get UDN from active Renderer
                if (string.IsNullOrEmpty(udn))
                {
                    udn = PivotItemViewModel.ActiveRenderer?.UDN ?? string.Empty;
                }
                bool notChecked    = true;
                ZoneViewModel zone = null;

                if ((e?.Value?.Count() ?? 0) > 0)
                {
                    foreach (var vm in e.Value)
                    {
                        vm.IsActive = false;


                        //Save pointer to previous selected zone
                        if (notChecked)
                        {
                            zone = vm;
                            if (udn == vm.Udn)
                            {
                                notChecked = false;
                            }
                        }

                        ZoneViewModels.Add(vm);
                    }

                    if (zone.MediaRenderer != null)
                    {
                        zone.IsActive = true;
                    }

                    await Task.Delay(TimeSpan.FromMilliseconds(500));
                    foreach (var vm in ZoneViewModels)
                    {
                        await vm.InitVolumes();
                    }
                }
            });
        }
        public async Task DeleteZone(object obj)
        {
            if (NotNetOrConnection)
            {
                return;
            }

            ZoneViewModel zvm = (ZoneViewModel)obj;

            //string request = String.Format(AppResources.ZonesPlanViewModel_DeleteZone, zvm.Name);

            string variant1 = String.Format(AppResources.ZonesPlanViewModel_DeleteZone, zvm.Code);
            string variant2 = String.Format(AppResources.ZonesPlanViewModel_DeleteZone2, zvm.Code);
            var    action   = await App.Current.MainPage.DisplayActionSheet(
                AppResources.ZonesPlanViewModel_DeleteQuestion,
                AppResources.ZonesPlanViewModel_DeleteCancel,
                null,
                variant1,
                variant2);

            if ((action != null) && (action != AppResources.ZonesPlanViewModel_DeleteCancel))
            {
                if (action == variant1)
                {
                    await zvm.SaveToZoneSchemeVisible(false);
                }
                if (action == variant2)
                {
                    try
                    {
                        State = ModelState.Loading;
                        Zone zone = new Zone();
                        zvm.SaveFields(zone);
                        await NAV.DeleteZone(zone, ACD.Default).ConfigureAwait(true);

                        ZoneViewModels.Remove(zvm);
                        State = ModelState.Normal;
                    }
                    catch (Exception e)
                    {
                        System.Diagnostics.Debug.WriteLine(e.Message);
                        ErrorText = e.Message;
                        State     = ModelState.Error;
                    }
                    finally
                    {
                        LoadAnimation = false;
                    }
                }
                await Load();
            }
        }
예제 #7
0
        public async Task InitViewModel()
        {
            await DispatcherHelper.ExecuteOnUIThreadAsync(async() => {
                ZoneViewModels.Clear();
                foreach (var vm in Shell.Instance.ViewModel.ZoneViewModels)
                {
                    ZoneViewModels.Add(vm);
                    await vm.InitVolumes();
                }
            });

            App.UpnpBaseUnit.ZoneLoaded += OnZonesFound;
        }
예제 #8
0
 private void FillModel(List <Zone> zones)
 {
     if (zones.Count > 0)
     {
         ClearAll();
         foreach (Zone zone in zones)
         {
             ZoneViewModel zvm = new ZoneViewModel(Navigation, zone);
             ZoneViewModels.Add(zvm);
         }
         State = ModelState.Normal;
     }
     else
     {
         State = ModelState.NoData;
     }
 }
예제 #9
0
        public void ComboBoxLoaded(ComboBox obj)
        {
            bool handled = false;

            for (int i = 0; i < (ZoneViewModels?.Count() ?? 0); i++)
            {
                if (ZoneViewModels[0].IsActive)
                {
                    obj.SelectedIndex = i;
                    handled           = true;
                    break;
                }
            }

            if (!handled && (ZoneViewModels?.Count ?? 0) > 0)
            {
                obj.SelectedIndex          = 0;
                ZoneViewModels[0].IsActive = true;
            }
        }
예제 #10
0
 private void FillModel(List <Zone> zones)
 {
     if (zones.Count > 0)
     {
         ClearAll();
         foreach (Zone zone in zones)
         {
             SetDefaultSizes(zone);
             ZoneViewModel zvm = new ZoneViewModel(Navigation, zone);
             zvm.OnTap += Zvm_OnTap;
             ZoneViewModels.Add(zvm);
         }
         State = ModelState.Normal;
         UpdateMinSizes();
         Rebuild(true);
     }
     else
     {
         State = ModelState.NoData;
     }
 }