프로젝트

일반

사용자정보

통계
| 브랜치(Branch): | 개정판:

markus / KCOM / Controls / PageNavigator.xaml.cs @ cdfb57ff

이력 | 보기 | 이력해설 | 다운로드 (7.4 KB)

1 787a4489 KangIngu
using KCOM.Common;
2
using KCOMDataModel.DataModel;
3
using System;
4
using System.Collections.Generic;
5
using System.Collections.ObjectModel;
6
using System.ComponentModel;
7
using System.Linq;
8
using System.Text;
9
using System.Windows;
10
using System.Windows.Controls;
11
using System.Windows.Data;
12
using System.Windows.Documents;
13
using System.Windows.Input;
14
using System.Windows.Media;
15
using System.Windows.Media.Imaging;
16
using System.Windows.Navigation;
17
using System.Windows.Shapes;
18
19
namespace KCOM.Controls
20
{
21
    /// <summary>
22
    /// Interaction logic for PageNavigator.xaml
23
    /// </summary>
24
    public partial class PageNavigator : UserControl, INotifyPropertyChanged
25
    {
26 992a98b4 KangIngu
        public List<FAVORITE_DOC> _FavoriteSet { get; set; }
27 787a4489 KangIngu
        public event PropertyChangedEventHandler PropertyChanged;
28
        public PageNavigator()
29 e0cfc73c ljiyeon
        {            
30 787a4489 KangIngu
            InitializeComponent();
31
            _Initialize = true;
32
        }
33
        public ObservableCollection<ThumbnailItem> _thumbnailItems;
34
        private List<DOCPAGE> _PageList = null;
35
        private string _DefaultUri = null;
36
        public ThumbnailItem CurrentPage = null;
37
        public ThumbnailItem _NextPage = null;
38
39
        private bool _Initialize;
40
        public event EventHandler<PageChangeEventArgs> PageChanged;
41
        public event EventHandler<PageChangeEventArgs> PageChanging;
42
43
        public class PageChangeEventArgs : EventArgs
44
        {
45
            public DOCPAGE CurrentPage { get; set; }
46
            public string PageUri { get; set; }
47
            public int PageNumber { get; set; }
48
        }
49
50
        private bool _IsFitOn { get; set; }
51
        public bool IsFitOn
52
        {
53
            get
54
            {
55
                return _IsFitOn;
56
            }
57
            set
58
            {
59
                _IsFitOn = value;
60
                RaisePropertyChanged("IsFitOn");
61
            }
62
        }
63
64
        public void RaisePropertyChanged(string propName)
65
        {
66
            if (PropertyChanged != null)
67
                PropertyChanged(this, new PropertyChangedEventArgs(propName));
68
        }
69
70
        public void SetPageNavi(List<DOCPAGE> PageList, string DefaultUri)
71
        {
72
            this._PageList = PageList;
73
            this._DefaultUri = DefaultUri;
74
            ThumbnailSet();
75
            //ThumbNmailSet();
76
            //rdoAllPages.Checked += new RoutedEventHandler(rdoCommented_Checked);
77
            //rdoFavoritePages.Checked += new RoutedEventHandler(rdoFavoritePages_Checked);
78
            //expCommentPages.PreviewCollapsed += new RadRoutedEventHandler(expCommentPages_PreviewCollapsed);
79
            //expCommentPages.PreviewExpanded += new RadRoutedEventHandler(expCommentPages_PreviewExpanded);
80
        }
81
        private void ImgListbox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
82
        {
83
            //tmStart = false;
84
            //tm.Stop();
85
            //tm.Tick -= new EventHandler(tm_Tick);
86
            int _PageNo = -1;
87
88
            if (this.CurrentPage != null)
89
            {
90
                _PageNo = this.CurrentPage.PageNumber;
91
            };
92
93
            if (_PageNo != (ImgListbox.SelectedItem as ThumbnailItem).PageNumber)
94
            {
95
                GotoPage((ImgListbox.SelectedItem as ThumbnailItem).PageNumber);
96
            }
97
        }
98
99
        public bool GotoPageFlag = false;
100
101
        public void GotoPage(int _pageNumber)
102
        {
103
            int _PageNo = -1;
104
            if (int.TryParse(_pageNumber.ToString(), out _PageNo))
105
            {
106
                var _page = _thumbnailItems.Where(item => item.PageNumber == _PageNo);
107
                if (_page.Count() > 0)
108
                {
109
                    ThumbnailItem _item = _page.First();
110
                    setPageChange(_item);
111
                }
112
            }
113
        }
114
115
        private void setPageChange(ThumbnailItem thumbnailItem)
116
        {
117
            if (thumbnailItem != null)
118
            {
119
                if (PageChanging != null)
120
                {
121
                    CurrentPage = _NextPage;
122
                    _NextPage = thumbnailItem;
123
                    PageChanging(this, new PageChangeEventArgs
124
                    {
125
                        CurrentPage = _PageList.Where(p => p.PAGE_NUMBER == thumbnailItem.PageNumber).First(),
126
                        PageNumber = Convert.ToInt32(thumbnailItem.PageNumber),
127
                        PageUri = null
128
                    });
129
130
                }
131
            }
132
        }
133
134
        private void Grid_LeftButtonDown(object sender, MouseButtonEventArgs e)
135
        {
136
137
        }
138
        private void ThumbnailSet()
139
        {
140
            if (!_Initialize) return;
141
142
            this._thumbnailItems = new ObservableCollection<ThumbnailItem>();
143
144
            //if (this.lstSelectComment.ItemsSource != null)
145
            //{
146
            //    var _pages = from commentPage in this.lstSelectComment.ItemsSource.Cast<UsersCommentPagesMember>()
147
            //                 where commentPage.IsSelected == true
148
            //                 select commentPage.PageNumber;
149
150
            //    foreach (var item in _pages)
151
            //    {
152
            //        item.ForEach(pp => _selectComment.Add(pp));
153
            //    }
154
155
            //    _selectComment.Distinct();
156
            //}
157
158
            var uri = _DefaultUri.Replace("{0}/{1}_{2}", "8/0_0");
159
            this._PageList = this._PageList.OrderBy(data => data.PAGE_NUMBER).ToList();
160
            this._PageList.ForEach(page =>
161
            {
162
                var _pageNo = page.PAGE_NUMBER;
163
                bool _addFlag = false;
164
165 cdfb57ff taeseongkim
166 787a4489 KangIngu
                this._thumbnailItems.Add(new ThumbnailItem
167
                {
168
                    ImageUri = new Uri(uri.Replace("{PageNo}", _pageNo.ToString())),
169
170
                    //ImageUri = new Uri(@"http://www.honeyhead.net/Pages/000000/111111/11111111/1.cmp"),
171
172
                    //ImageUri = new Uri(@"https://image.freepik.com/free-vector/abstract-logo-in-flame-shape_1043-44.jpg"),
173
174
175
                    PageNumber = Convert.ToInt32(_pageNo),
176
                    Angle = Convert.ToInt32(page.PAGE_ANGLE),
177
                });
178
            });
179
180
            txtTotPageNo.Text = this._PageList.Count().ToString();
181
182
            txtThumbCount.Text = String.Format("Count : {0}", (this._thumbnailItems.Count).ToString());
183
184
            if (ImgListbox.ItemsSource == null)
185
            {
186
                ImgListbox.ItemsSource = this._thumbnailItems;
187
188
189
                if (ImgListbox.Items.Count > 0)
190
                {
191
                    //int StartPageIdx = Convert.ToInt32(App.ViewInfo.StartPage) - 1;
192
                    int StartPageIdx = 1;
193
                    //if (App.ViewInfo.IsCustomPage)
194
                    //{
195
                    //    ImgListbox.SelectedItem = ImgListbox.Items.Where(data => (data as ThumbnailItem).PageNumber == Convert.ToInt32(App.ViewInfo.StartPage)).FirstOrDefault();
196
                    //}
197
                    //else
198
                    //{
199
200
                        if (StartPageIdx <= 0 || StartPageIdx > ImgListbox.Items.Count || StartPageIdx == 1)
201
                        {
202
                            ImgListbox.SelectedItem = ImgListbox.Items[0];
203
                        }
204
                        else
205
                        {
206
                            ImgListbox.SelectedItem = ImgListbox.Items[StartPageIdx];
207
                        }
208
                    //}
209
                }
210
            }
211
            else
212
            {
213
                ImgListbox.UpdateLayout();
214
                ImgListbox.ItemsSource = this._thumbnailItems;
215
            }
216
        }
217
    }
218
}
클립보드 이미지 추가 (최대 크기: 500 MB)