Ejemplo n.º 1
0
        /// <summary>
        /// Adds user page into top navigation menu.
        /// </summary>
        /// <param name="page">Page which should be added to top navigation menu.</param>
        /// <param name="vm">ViewModel for page.</param>
        /// <param name="navMenuLabelKey">Localization key for label in navigation menu.</param>
        /// <param name="navMenuIconKey">Localization key for icon in navigation menu.</param>
        private void AddUserPage(UserControl page, BaseClosableVM vm, string navMenuLabelKey = "", string navMenuIconKey = "")
        {
            page.DataContext = vm;

            ContentPageData pageData = new ContentPageData(new NavMenuItemData()
            {
                IsDropdownItem = false, IsSelected = false
            },
                                                           navMenuLabelKey,
                                                           navMenuIconKey,
                                                           PageKind.UserPages,
                                                           page,
                                                           ChangePage);

            //vm.Closed += (object sender, EventArgs e) => { DelPageFromMenu(pageData); };
            vm.Closed += delPageEventHandler;

            PagesData.Add(pageData);
            TopItemSource.Add(pageData.NavData);

            ResetSelectedItems();
            MainContent = page;
            pageData.NavData.IsSelected = true;
            TitleKey = pageData.LocalizedKey;
        }
Ejemplo n.º 2
0
        public MainWindowVM()
        {
            ContentPageData buf = new ContentPageData(new NavMenuItemData()
            {
                IsDropdownItem = false, IsSelected = false
            },
                                                      "#appSettingsMenu",
                                                      "AppSettingsPageIcon",
                                                      PageKind.Settings,
                                                      new AppSettingsPage(),
                                                      ChangePage);

            PagesData.Add(buf);
            BottomItemSource.Add(buf.NavData);
            ChangePage(buf);

            buf = new ContentPageData(new NavMenuItemData()
            {
                IsDropdownItem = false, IsSelected = false
            },
                                      "#addBomberPageMenu",
                                      "AddBomberPageIcon",
                                      PageKind.Settings,
                                      (data) => { AddUserPage(new BomberPage(), new BomberPageVM(), "#NavMenuBomberPage", "BomberPageIcon"); });
            PagesData.Add(buf);
            BottomItemSource.Insert(0, buf.NavData);

            buf = new ContentPageData(new NavMenuItemData()
            {
                IsDropdownItem = false, IsSelected = false
            },
                                      "#addTransmitFilePageMenu",
                                      "AddTransmitFilePageIcon",
                                      PageKind.Settings,
                                      (data) => { AddUserPage(new TransmitFilePage(), new TransmitFilePageVM(), "#NavMenuTransmitFilePage", "TransmitFilePageIcon"); });
            PagesData.Add(buf);
            BottomItemSource.Insert(0, buf.NavData);

            buf = new ContentPageData(new NavMenuItemData()
            {
                IsDropdownItem = false, IsSelected = false
            },
                                      "#addTransmitPageMenu",
                                      "AddTransmitPageIcon",
                                      PageKind.Settings,
                                      (data) => { AddUserPage(new TransmitPage(), new TransmitPageVM(), "#NavMenuTransmitPage", "TransmitPageIcon"); });
            PagesData.Add(buf);
            BottomItemSource.Insert(0, buf.NavData);


            Settings.Instance.Proxies.CollectionChanged += OnProxiesCollectionChanged;
            Settings.Instance.PropertyChanged           += OnDevicePropertyChanged;
            PropertyChanged += TitleKey_PropertyChanged;

            Manager <LanguageCultureInfo> .StaticInstance.CultureChanged += Language_CultureChanged;
            Manager <ThemeCultureInfo> .StaticInstance.CultureChanged    += Theme_CultureChanged;

            TitleKey_PropertyChanged(this, new PropertyChangedEventArgs("TitleKey"));
        }
Ejemplo n.º 3
0
        public ActionResult DeleteConfirmed(int id)
        {
            PagesData pagesData = db.pageDataList.Find(id);

            db.pageDataList.Remove(pagesData);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
Ejemplo n.º 4
0
 public ActionResult Edit([Bind(Include = "Id,PageUrl,PageTitle,Keywords,Descriptions,PageContent")] PagesData pagesData)
 {
     if (ModelState.IsValid)
     {
         db.Entry(pagesData).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     return(View(pagesData));
 }
Ejemplo n.º 5
0
        public ActionResult Create([Bind(Include = "Id,PageUrl,PageTitle,Keywords,Descriptions,PageContent")] PagesData pagesData)
        {
            if (ModelState.IsValid)
            {
                db.pageDataList.Add(pagesData);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(pagesData));
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Delete page from navigation menu.
        /// </summary>
        /// <param name="page">Page which should be deleted</param>
        private void DelPageFromMenu(ContentPageData page)
        {
            MainContent = null;
            ResetSelectedItems();

            PagesData.Remove(page);
            TopItemSource.Remove(page.NavData);
            BottomItemSource.Remove(page.NavData);
            GC.Collect();
            TitleKey = "";
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Remove all pages with PageKind == PageKind.Proxy.
        /// </summary>
        private void ClearProxies()
        {
            //clear proxies
            var deletePageData = PagesData.Where(x => x.Kind == PageKind.Proxy);
            var deleteObjects  = deletePageData.Select(x => x.NavData);

            _context.Send((s) =>
            {
                TopItemSource.RemoveAll(x => deleteObjects.Contains(x));
            }, null);

            PagesData.RemoveAll(x => x.Kind == PageKind.Proxy);
        }
Ejemplo n.º 8
0
        // GET: Admin/PagesDatas/Delete/5
        public ActionResult Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            PagesData pagesData = db.pageDataList.Find(id);

            if (pagesData == null)
            {
                return(HttpNotFound());
            }
            return(View(pagesData));
        }
Ejemplo n.º 9
0
        private void NavMenuClicked_Execute(NavMenuItemData arg)
        {
            ContentPageData pageData = PagesData.FirstOrDefault(x => x.NavData == arg);

            if ((pageData == null))
            {
                return;
            }

            _context.Post((s) =>
            {
                pageData?.ClickAction?.Invoke(pageData);
            }, null);
        }
Ejemplo n.º 10
0
        private void delPageEventHandler(object sender, EventArgs e)
        {
            if (sender is BaseClosableVM vm)
            {
                var a = PagesData.FirstOrDefault(x => x.Page != null && x.Page.DataContext == sender);
                if (a != null)
                {
                    DelPageFromMenu(a);
                }


                vm.Closed -= delPageEventHandler;
                if (vm is IDisposable d)
                {
                    d.Dispose();
                }

                var settingsData = PagesData.FirstOrDefault(x => x.Page is AppSettingsPage);
                settingsData?.ClickAction?.Invoke(settingsData);
            }
        }
Ejemplo n.º 11
0
        private void OnProxiesCollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
        {
            if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Add)
            {
                foreach (var el in e.NewItems)
                {
                    if (el is IChannelProxy proxy)
                    {
                        //recievePage
                        RecieveChannelPage recievePage = null;
                        _context.Send((s) =>
                        {
                            recievePage             = new RecieveChannelPage();
                            recievePage.DataContext = new RecieveChannelPageVM(proxy);
                        }, null);

                        ContentPageData recievePageData = new ContentPageData(new NavMenuItemData()
                        {
                            IsDropdownItem = false, IsSelected = false
                        },
                                                                              "#NavMenuRecieveProxyPage",
                                                                              "RecievedProxyPageIcon",
                                                                              PageKind.Proxy,
                                                                              recievePage,
                                                                              ChangePage);
                        PagesData.Add(recievePageData);


                        //monitorPage
                        MonitorChannelPage monitorPage = null;
                        _context.Send((s) =>
                        {
                            monitorPage             = new MonitorChannelPage();
                            monitorPage.DataContext = new MonitorChannelPageVM(proxy);
                        }, null);

                        ContentPageData monitorPageData = new ContentPageData(new NavMenuItemData()
                        {
                            IsDropdownItem = false, IsSelected = false
                        },
                                                                              "#NavMenuMonitorProxyPage",
                                                                              "MonitorProxyPageIcon",
                                                                              PageKind.Proxy,
                                                                              monitorPage,
                                                                              ChangePage);
                        PagesData.Add(monitorPageData);


                        ContentPageDataForProxy channelViewData = new ContentPageDataForProxy(new NavMenuItemData()
                        {
                            IsDropdownItem = true, IsSelected = false
                        },
                                                                                              "NavMenuProxyIcon",
                                                                                              proxy,
                                                                                              PageKind.Proxy);
                        channelViewData.NavData.AddDropdownItem(recievePageData.NavData);
                        channelViewData.NavData.AddDropdownItem(monitorPageData.NavData);

                        PagesData.Add(channelViewData);

                        _context.Post((s) =>
                        {
                            int insertIndex = PagesData.Where(x => x.Kind == PageKind.Channel || x.Kind == PageKind.Proxy).Max(x => TopItemSource.IndexOf(x.NavData));
                            if (insertIndex < 0)
                            {
                                insertIndex = 0;
                            }
                            else
                            {
                                insertIndex++;
                            }

                            TopItemSource.Insert(insertIndex, channelViewData.NavData);
                        }, null);
                    }
                }
            }


            if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Reset)
            {
                ClearProxies();
            }


            if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
            {
                var objectsToRemove = PagesData.Where(x => IsContentPageDataContainsProxies(x, e.OldItems)).Select(x => x.NavData);

                _context.Send((s) =>
                {
                    TopItemSource.RemoveAll(x => objectsToRemove.Contains(x));
                }, null);

                if (e.OldItems != null)
                {
                    foreach (var el in e.OldItems)
                    {
                        if (el is IChannelProxy proxy)
                        {
                            proxy.Dispose();
                        }
                    }
                }
            }
        }
Ejemplo n.º 12
0
        private void OnDevicePropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e != null && e.PropertyName != "Device")
            {
                return;
            }


            ClearChannels();


            if (Settings.Instance.Device == null)
            {
                return;
            }


            Settings.Instance.Device.IsConnectedChanged += (object s, EventArgs args) =>
            {
                if (s == Settings.Instance.Device)
                {
                    if (Settings.Instance.Device.IsConnected)
                    {
                        OnDevicePropertyChanged(null, null);
                    }
                    else
                    {
                        ClearChannels();
                    }
                }
            };

            if (!Settings.Instance.Device.IsConnected)
            {
                return;
            }


            //create views
            foreach (var el in Settings.Instance.Device.Channels.Reverse())
            {
                //recievePage
                var recievePage = new RecieveChannelPage();
                recievePage.DataContext = new RecieveChannelPageVM(el);

                ContentPageData recievePageData = new ContentPageData(new NavMenuItemData()
                {
                    IsDropdownItem = false, IsSelected = false
                },
                                                                      "#NavMenuRecieveChannelPage",
                                                                      "RecievedChannelPageIcon",
                                                                      PageKind.Channel,
                                                                      recievePage,
                                                                      ChangePage);
                PagesData.Add(recievePageData);


                //monitorPage
                var monitorPage = new MonitorChannelPage();
                monitorPage.DataContext = new MonitorChannelPageVM(el);

                ContentPageData monitorPageData = new ContentPageData(new NavMenuItemData()
                {
                    IsDropdownItem = false, IsSelected = false
                },
                                                                      "#NavMenuMonitorChannelPage",
                                                                      "MonitorChannelPageIcon",
                                                                      PageKind.Channel,
                                                                      monitorPage,
                                                                      ChangePage);
                PagesData.Add(monitorPageData);


                ContentPageData channelViewData = new ContentPageData(new NavMenuItemData()
                {
                    IsDropdownItem = true, IsSelected = false
                },
                                                                      "#" + el.ToString() + "NavMenu",
                                                                      el.ToString() + "Icon",
                                                                      PageKind.Channel);
                channelViewData.NavData.AddDropdownItem(recievePageData.NavData);
                channelViewData.NavData.AddDropdownItem(monitorPageData.NavData);

                PagesData.Add(channelViewData);

                _context.Post((s) =>
                {
                    int insertIndex = PagesData.Where(x => x.Kind == PageKind.Channel).Max(x => TopItemSource.IndexOf(x.NavData));
                    if (insertIndex < 0)
                    {
                        insertIndex = 0;
                    }
                    TopItemSource.Insert(insertIndex, channelViewData.NavData);
                }, null);
            }
        }