示例#1
0
        private async void LocationsPanel_DragItemsCompleted(ListViewBase sender, DragItemsCompletedEventArgs args)
        {
            if (!(args.Items.First() is LocationPanelViewModel panel))
            {
                return;
            }

            var data = await Settings.GetFavorites();

            int newIndex = LocationPanels.IndexOf(panel);
            int oldIndex = data.FindIndex(location => location.query == panel.LocationData.query);

            if (oldIndex != newIndex)
            {
                MoveData(panel, oldIndex, newIndex);
            }

            // Make sure we're still in EditMode after
            if (!EditMode)
            {
                ToggleEditMode();
            }

            if (oldIndex != newIndex)
            {
                DataChanged = true;
            }
            if (newIndex == App.HomeIdx)
            {
                HomeChanged = true;
            }
        }
示例#2
0
        private void ToggleEditMode()
        {
            // Toggle EditMode
            EditMode = !EditMode;

            EditButton.Icon  = new SymbolIcon(EditMode ? Symbol.Accept : Symbol.Edit);
            EditButton.Label = EditMode ? App.ResLoader.GetString("Label_Done") : App.ResLoader.GetString("Label_Edit");
            LocationsPanel.IsItemClickEnabled = !EditMode;

            foreach (LocationPanelViewModel view in LocationPanels)
            {
                view.EditMode = EditMode;

                if (!EditMode && DataChanged)
                {
                    string query = view.LocationData.query;
                    int    pos   = LocationPanels.IndexOf(view);
                    Task.Run(() => Settings.MoveLocation(query, pos));
                }
            }

            if (!EditMode && HomeChanged)
            {
                Task.Run(WeatherUpdateBackgroundTask.RequestAppTrigger);
            }

            DataChanged = false;
            HomeChanged = false;
        }
示例#3
0
 private void MoveData(LocationPanelViewModel view, int fromIdx, int toIdx)
 {
     // Only move panels if we haven't already
     if (LocationPanels.IndexOf(view) != toIdx)
     {
         LocationPanels.Move(fromIdx, toIdx);
     }
 }