Example #1
0
        private async void RootFrame_Navigated(object sender, NavigationEventArgs e)
        {
            RootView newView = e.Content as RootView;

            DebugHelper.Assert(newView != null, "The RootFrame should only navigate to a RootView");

            // Build up the RootView's ViewModel and event handlers
            this.trackedRoot = new TrackedPage(newView, e.Parameter, this.container);
            await this.trackedRoot.InitialActivation;

            newView.Container = this.container;
        }
Example #2
0
        /// <summary>
        /// Having list of pages, fill them with correct IsTracked values from the storage.
        /// </summary>
        public void LoadIsTrackedIndicators(IEnumerable <Page> pages, Tracker tracker)
        {
            if (pages == null || tracker?.ID == null)
            {
                throw new ArgumentNullException("Cannot ensure-dont-tracks of undefined pages and/or tracker.");
            }

            foreach (Page page in pages)
            {
                if (page.ID == null)
                {
                    throw new ArgumentNullException("Cannot ensure-dont-track of unregistered page.");
                }

                TrackedPage asssociatedTrackedPage = TrackedPages.Single(tp => tp.PageID == page.ID && tp.TrackerID == tracker.ID);
                page.IsTracked = asssociatedTrackedPage.IsTracked;
            }
        }
Example #3
0
        /// <summary>
        /// Remove page for tracker forever, losing all tracking history.
        /// </summary>
        public void RemovePageFromTracker(Page page, Tracker tracker)
        {
            if (page?.ID == null || tracker?.ID == null)
            {
                throw new ArgumentNullException("Cannot remove from tracking the undefined or unregistered page and/or tracker.");
            }

            TrackedPage subject = TrackedPages.Single(tp => tp.PageID == page.ID && tp.TrackerID == tracker.ID);

            TrackedPages.Remove((int)subject.ID);

            var thisPageTrackedTimes = TrackedPages.Count(tp => tp.PageID == page.ID);

            if (thisPageTrackedTimes < 1)
            {
                RemovePageCascade((int)page.ID);
            }
        }