示例#1
0
        private async void OnFileListViewSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (FileListView.SelectedItem is FileItem f)
            {
                if (HitListView.SelectedItem == null || HitListView.SelectedItem is HitItem h && h.Fid != f.Fid)
                {
                    if (f.HitRows > 0 && HitListView.ItemsSource is ObservableCollection <HitItem> hh)
                    {
                        HitListView.SelectedItem = hh.Where(x => x.Fid == f.Fid).FirstOrDefault();
                    }
                    else
                    {
                        HitListView.SelectedItem = null;
                    }
                    if (HitListView.SelectedItem == null)
                    {
                        await client.OnSelectionChanged(f);

                        ContentListView.SelectedIndex = 0;
                        ContentListView.ScrollIntoView(ContentListView.SelectedItem);
                        ContentListView.SelectedIndex = -1;
                    }
                }
            }
        }
        private async void ContentListView_ItemClick(object sender, ItemClickEventArgs e)
        {
            if (IsIndexPanelOpen)
            {
                IsIndexPanelOpen = false;
                return;
            }

            var line = (LineViewModel)e.ClickedItem;

            if (!line.IsImage && !ViewModel.EnableComments)
            {
                return;
            }

            var container = ContentListView.ContainerFromItem(line);

            ((FrameworkElement)CommentsFlyout.Content).DataContext = line;
            CommentsFlyout.ShowAt((FrameworkElement)container);
            //CommentInputBox.Focus(Windows.UI.Xaml.FocusState.Unfocused);
            if (line.HasComments && !line.IsLoading)
            {
                await line.LoadCommentsAsync();
            }
        }
示例#3
0
        private async void JumpToButton_Click(object sender, RoutedEventArgs e)
        {
            int lineNo;
            var keyword = JumpToInputBox.Text.Trim();
            var succ    = int.TryParse(keyword, out lineNo);

            if (succ)
            {
                if (lineNo >= 1 && lineNo <= ViewModel.Contents.Count)
                {
                    ContentListView.ScrollIntoView(ContentListView.Items[lineNo - 1], ScrollIntoViewAlignment.Leading);
                }
                else
                {
                    MessageDialog dialog = new MessageDialog("Line No out of range", "Jump Failed");
                    await dialog.ShowAsync();
                }
            }
            else
            {
                lineNo = GetCurrentLineNo();
                var list = ViewModel.ChapterData.Lines as List <Service.Line>;
                lineNo = list.FindIndex(lineNo, l => (l.ContentType == LineContentType.TextContent && l.Content.Contains(keyword)));
                if (lineNo >= 0)
                {
                    ContentListView.ScrollIntoView(ContentListView.Items[lineNo], ScrollIntoViewAlignment.Leading);
                }
                else
                {
                    MessageDialog dialog = new MessageDialog("Cannot find specified keyword", "Jump Failed");
                    await dialog.ShowAsync();
                }
            }
        }
示例#4
0
        public void GetContentListView(IContentModel model, ContentListView parent, int parentLevel = 0, int sortChildLevel = 4)
        {
            if (parentLevel > sortChildLevel)
            {
                return;
            }
            parentLevel++;
            var result = new ContentListView();

            result.Id           = model.Id;
            result.Title        = model.Title;
            result.ParentId     = model.ParentId;
            result.DisplayOrder = model.DisplayOrder;

            if (parent != null)
            {
                parent.Children.Add(result);
            }
            var children = model.Children;

            foreach (var item in children)
            {
                GetContentListView(item, result, parentLevel);
            }
            return;
        }
示例#5
0
        public static ContentListView GetContentListView(long?id, int parentLevel = 0)
        {
            if (id.HasValue)
            {
                var model = GetContent(id);
                if (model == null)
                {
                    return(null);
                }
                var result = new ContentListView()
                {
                    Id       = model.Id,
                    ParentId = model.ParentId,
                    Title    = model.Title,
                };

                GetContentListView(model, result, 0);
                return(result.Children.FirstOrDefault());
            }
            else
            {
                var roots  = ModelManager.Read <BaseContent>(b => b.ParentId == null).ToList();
                var result = new ContentListView();
                roots.ForEach(b => GetContentListView(b, result, 0));
                return(result);
            }
        }
 protected override async void OnAppearing()
 {
     base.OnAppearing();
     MessagingCenter.Subscribe <IKeyEventSender, string>(this, "KeyDown", (s, e) => { HandleKeyEvent(e); });
     ContentListView.SetFocus();
     await UpdateContentInfo();
 }
示例#7
0
        private void setContent()
        {
            Route route = routes[routeIndex];

            if (stop == route.TravelRoute.Last().Stop)
            {
                this.stop = route.TravelRoute.First().Stop;
            }

            var list = route.TravelRoute
                       .Select(e => new TimeStopListModel <StopGroup> {
                Time = e.Time.ToString(), Stop = e.Stop
            })
                       .ToList();

            list.Last().Disabled = true;

            ContentListView.ItemsSource = list;
            changeContent();

            int current = list.IndexOf(list.First(x => x.Position == 0));
            int ind     = Math.Max(0, current - 4);

            if (ind != 0)
            {
                ContentListView.ForceScrollIntoView(list[ind]);
            }
        }
示例#8
0
        public ContentListView GetContentListView(long?id, int parentLevel = 0, int?langKey = null)
        {
            if (id.HasValue && id.Value > 0)
            {
                var model = GetContent(id);
                if (model == null)
                {
                    return(null);
                }
                var result = new ContentListView()
                {
                    Id       = model.Id,
                    ParentId = model.ParentId,
                    Title    = model.Title,
                };

                GetContentListView(model, result, 0);
                return(result.Children.FirstOrDefault());
            }
            else
            {
                var roots  = Read <IContentModel>(BaseIContentModelType, b => b.ParentId == null && b.Lang == langKey).ToList();
                var result = new ContentListView();
                roots.ForEach(b => GetContentListView(b, result, 0));
                return(result);
            }
        }
示例#9
0
        public void ShowSpaceContent(Space space)
        {
            _parent.Caption = "Confluence " + space.Name + " Content";
            this.EnableCommand(false, _service, Guids.COMMAND_REFRESH_ID);

            this._contentListView = new ContentListView(space, this);
            this._historyNavigator.AddView(this._contentListView);

            SelectedView = this._contentListView;
        }
示例#10
0
 private void UpdateItem()
 {
     foreach (var content in ((ContentListPageViewModel)BindingContext).ContentList)
     {
         var item = new ContentItem
         {
             BindingContext = content
         };
         ContentListView.Add(item);
     }
 }
        void ContentListView_SizeChanged(object sender, SizeChangedEventArgs e)
        {
            int index = (int)ContentListView.GetValue(ContentListViewChangeViewRequestProperty);

            if (index >= 0 && e.NewSize.Height > 10 && ContentListView.Items.Count > 0 && index < ContentListView.Items.Count)
            {
                ContentListView.UpdateLayout();
                ContentListView.ScrollIntoView(ViewModel.Contents[index], ScrollIntoViewAlignment.Leading);
                index = -1;
                ContentListView.SizeChanged -= ContentListView_SizeChanged;
            }
        }
示例#12
0
        private void RestorePageState(object obj)
        {
            this.ViewModel = (StopViewModel)obj;
            var viewSource = (CollectionViewSource)Resources["src"];

            viewSource.Source = ViewModel.ItemsSource;
            if (ViewModel.ScrollPosition != null)
            {
                ContentListView.ScrollToGroupedPosition((ListViewPositionResult)ViewModel.ScrollPosition);
            }
            registerBottomObserver();
        }
 private void UpdateItem()
 {
     foreach (DetailContentData content in ((ContentListPageViewModel)BindingContext).ContentList)
     {
         ContentItem item = new ContentItem()
         {
             BindingContext = content
         };
         item.OnContentSelect += new ContentSelectHandler(ContentSelected);
         ContentListView.Add(item);
     }
 }
示例#14
0
 private void RestorePageState()
 {
     ViewModel.ScrollIntoViewRequired += ViewModel_ScrollIntoViewRequired;
     if (ViewModel.usePivotPageing)
     {
         addContentToPivot();
     }
     setFavoriteIcon();
     if (ViewModel.ScrollPosition != null)
     {
         ContentListView.ScrollToGroupedPosition((ListViewPositionResult)ViewModel.ScrollPosition);
     }
 }
示例#15
0
        private void ContentListView_Loaded(object sender, RoutedEventArgs e)
        {
            int lineNo = ViewModel.CurrentLineNo;

            if (ContentListView.ItemsSource.Count > 0 && ContentListView.ItemsSource.Count > lineNo)
            {
                Dispatcher.BeginInvoke(() => ContentListView.ScrollTo(ContentListView.ItemsSource[lineNo]));
            }
            else
            {
                throw new System.IndexOutOfRangeException("ContentListView don't have a line at No." + lineNo);
            }
        }
示例#16
0
        protected override void OnSizeAllocated(double width, double height)
        {
            base.OnSizeAllocated(width, height);

            if (width == -1 || height == -1)
            {
                return;
            }

            // FIXME: Workaround for Tizen
            // Sometimes height of list is calculated as wrong
            // Set the height explicitly for fixing this issue
            ContentListView.SetHeight(height * 0.21);
        }
示例#17
0
        public bool HandleUrl(string url)
        {
            var contentList = ((ContentListPageViewModel)BindingContext).ContentList;
            var index       = contentList.FindIndex(content => content.Source.Equals(url));

            if (index == -1)
            {
                return(false);
            }
            var item = ContentListView.GetItem(index);

            ContentSelected(item);
            return(true);
        }
示例#18
0
        private async void IllustrationRefreshButton_Click(object sender, RoutedEventArgs e)
        {
            var lvm = ((FrameworkElement)sender).DataContext as LineViewModel;

            if (lvm.IsImageCached)             // LocalUri
            {
                var container = ContentListView.ContainerFromIndex(lvm.No - 1) as SelectorItem;
                if (container != null)
                {
                    var iv = container.ContentTemplateRoot as Grid;
                    HideImageRefreshButton();
                    await RefreshCruptedImageItem(iv);
                }
            }
        }
示例#19
0
        private async void OnHitListViewSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (HitListView.SelectedItem is HitItem h)
            {
                await client.OnSelectionChanged(h);

                int v = h.Line - 1;
                ContentListView.SelectedIndex = v;
                ContentListView.ScrollIntoView(ContentListView.SelectedItem);
            }
            else
            {
                ContentListView.SelectedIndex = -1;
            }
        }
 void ChangeView(int page, int line = -1)
 {
     if (line >= 0)
     {
         ContentListView.UpdateLayout();
         if (ContentListView.Items.Count == 0)
         {
             ContentListView.SetValue(ContentListViewChangeViewRequestProperty, line);
             ContentListView.SizeChanged += ContentListView_SizeChanged;
         }
         else if (line < ContentListView.Items.Count)
         {
             ContentListView.ScrollIntoView(ViewModel.Contents[line], ScrollIntoViewAlignment.Leading);
         }
     }
 }
示例#21
0
 void ViewModel_CommentsListLoaded(object sender, IEnumerable <int> e)
 {
     foreach (int idx in e)
     {
         var container = ContentListView.ContainerFromIndex(idx - 1) as SelectorItem;
         if (container != null)
         {
             var iv = container.ContentTemplateRoot as Grid;
             if (iv == null)
             {
                 continue;
             }
             var commentIndicator = iv.FindName("CommentIndicator") as Rectangle;
             commentIndicator.Opacity = 1;
         }
     }
 }
示例#22
0
        private void changeContent()
        {
            var list = ContentListView.ItemsSource <TimeStopListModel <StopGroup> >();
            var selectedItem = list.FirstOrDefault(x => x.Stop == stop) ?? list.First();
            int delta = Int32.Parse(selectedItem.Time);
            int n = 1, sgn = -1;

            foreach (var item in list)
            {
                item.Position = sgn * n++;
                item.Time     = (Int32.Parse(item.Time) - delta).ToString();
                if (item.Stop == selectedItem.Stop)
                {
                    item.Position = 0;
                    sgn           = 1;
                }
            }
        }
示例#23
0
        public bool HandleUrl(string url)
        {
            var contentListPageViewModel = (ContentListPageViewModel)BindingContext;
            var contentList = contentListPageViewModel.ContentList;
            var index       = contentList.FindIndex(content => content.Source.Equals(url));

            if (index == -1)
            {
                return(false);
            }
            contentListPageViewModel.IsBusy = true;
            var item = ContentListView.GetItem(index);

            ContentListView.SetFocusedContent(item).ContinueWith(async _ =>
            {
                await UpdateContentInfo();
                await ContentSelected(ContentListView.FocusedContent);
                contentListPageViewModel.IsBusy = false;
            }, TaskScheduler.FromCurrentSynchronizationContext());

            return(true);
        }
示例#24
0
        private async Task HandleScrollEvent(KeyCode keyCode)
        {
            Task <bool> ScrollTask()
            {
                if (keyCode == KeyCode.Next)
                {
                    return(ContentListView.ScrollToNext());
                }
                if (keyCode == KeyCode.Previous)
                {
                    return(ContentListView.ScrollToPrevious());
                }
                throw new ArgumentOutOfRangeException(nameof(keyCode), keyCode, null);
            }

            var listScrolled = await ScrollTask();

            if (listScrolled)
            {
                await UpdateContentInfo();
            }
        }
示例#25
0
 private object SavePageState()
 {
     ViewModel.ScrollPosition = ContentListView.GetGroupedScrollPosition(ViewModel.ItemsSource);
     return(ViewModel);
 }
示例#26
0
        private async void ViewModel_ScrollIntoViewRequired(object sender, object scrollTargetItem)
        {
            await Task.Delay(100);

            ContentListView.ScrollTo(scrollTargetItem);
        }
示例#27
0
 void ContentListView_ItemRealized_ScrollToCurrentLine(object sender, ItemRealizationEventArgs e)
 {
     ContentListView.ItemRealized -= ContentListView_ItemRealized_ScrollToCurrentLine;
     ContentListView.ScrollTo(ContentListView.ItemsSource[ViewModel.CurrentLineNo - 1]);
 }
 int GetCurrentLineNo()
 {
     return(ContentListView.GetFirstVisibleIndex());
 }
 private void TopScroller_OnTopScrollingRequested(object sender, EventArgs e)
 {
     ContentListView.ScrollToTheTop();
 }
示例#30
0
        protected override void OnAppearing()
        {
            base.OnAppearing();

            ContentListView.SetFocus();
        }