Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/HistoryList.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (hide annotations) (download) (as text)
Sun Dec 31 04:23:28 2006 UTC (17 years, 3 months ago) by h677
Branch: MAIN
CVS Tags: v1_59_0_771, v1_59_0_770, v1_59_0_773, v1_59_0_772, v1_59_0_775, v1_59_0_774, v1_59_0_777, v1_59_0_776, v1_56_0_715, v1_59_0_778, v1_63_1_819, v1_57_0_737, v1_62_0_812, v1_57_0_735, v1_57_0_734, v1_57_0_733, v1_57_0_732, v1_57_0_731, v1_57_0_730, v1_57_0_739, v1_57_0_738, v1_59_1_765, v1_60_0_788, v1_60_0_789, v1_58_0_748, v1_58_0_745, v1_60_0_781, v1_60_0_782, v1_58_0_746, v1_60_0_784, v1_60_0_786, v1_60_0_787, v1_56_0_707, v1_59_0_767, v1_56_0_705, v1_56_0_704, v1_56_0_703, v1_56_0_702, v1_56_0_701, v1_56_0_700, v1_59_1_778, v1_57_0_723, v1_59_0_768, v1_59_0_769, v1_57_0_725, v1_57_0_726, v1_57_0_727, v1_57_0_720, v1_57_0_722, v1_57_1_744, v1_57_0_728, v1_57_0_729, v1_57_0_736, v1_58_0_752, v1_58_0_750, v1_58_0_751, v1_58_0_756, v1_58_0_757, v1_58_0_754, v1_58_0_755, v1_58_0_759, v1_57_0_719, v1_57_0_718, v1_56_0_716, v1_54_0_687, v1_56_0_710, v1_56_0_711, v1_56_1_717, v1_56_1_716, v1_54_0_688, v1_54_0_689, v1_61_0_796, v1_61_0_797, v1_61_0_795, v1_61_0_798, v1_61_0_799, v1_55_0_692, v1_55_0_693, v1_55_0_696, v1_55_0_697, v1_55_0_694, v1_55_0_695, v1_54_1_691, v1_56_2_724, v1_56_2_722, v1_55_1_697, v1_56_0_714, v1_63_0_818, v1_63_0_817, v1_63_0_816, v1_63_0_815, v1_62_0_805, v1_62_0_804, v1_62_0_807, v1_62_0_806, v1_56_0_712, v1_62_0_803, v1_62_0_802, v1_56_0_713, v1_62_0_809, v1_56_0_721, v1_60_0_780, v1_60_0_779, v1_62_0_810, v1_62_0_811, v1_58_0_747, v1_60_0_783, v1_59_2_785, marged_bRESPOPUP, v1_56_0_706, v1_60_1_793, v1_54_0_690, v1_58_0_763, v1_58_0_762, v1_58_0_761, v1_58_0_760, v1_62_1_813, v1_57_2_749, v1_57_0_742, v1_57_0_743, v1_57_0_740, v1_57_0_741, v1_56_0_709, v1_57_0_744, v1_56_0_708, v1_61_0_800, v1_56_0_699, v1_56_0_698, v1_60_0_793, v1_60_0_792, v1_60_0_791, v1_60_0_790, v1_60_2_794, v1_61_1_801, HEAD
Branch point for: Bb57, Bb56, Bb55, Bb62, Bb63, Bb60, Bb61, Bb59, Bb58, bRESPOPUP, bListSU, Bb54
Changes since 1.1: +34 -0 lines
File MIME type: text/x-pascal
HistoryListにメソッドを移動

1 h677 1.1 unit HistoryList;
2    
3     interface
4    
5     uses
6     Windows, Messages, SysUtils, Classes, Graphics, Controls,
7     BoardGroup, Favorite, ComCtrls, GikoXMLDoc;
8    
9     type
10     TGikoTreeType = (gttNone, gtt2ch, gttHistory, gttFavorite);
11    
12     THistoryList = class(TList)
13     public
14     function AddHistory( favItem : TFavoriteThreadItem; TreeView : TTreeView;
15     TreeType: TGikoTreeType): Boolean;
16     procedure DeleteHistory( threadItem: TThreadItem; TreeView : TTreeView;
17     TreeType: TGikoTreeType );
18     procedure Clear; override;
19     procedure SaveToFile(const FileName: String);
20     procedure LoadFromFile(const FileName: String;
21     TreeView : TTreeView; TreeType: TGikoTreeType);
22 h677 1.2 procedure SetTreeNode( TreeView : TTreeView );
23    
24 h677 1.1 end;
25    
26    
27     implementation
28    
29     uses
30     Giko, GikoSystem, Setting, YofUtils, MojuUtils;
31    
32     const
33     ITEM_ICON_THREADLOG1 = 6; //?鴻???≪?ゃ?潟?鰹????違????鐚?
34     ITEM_ICON_THREADLOG2 = 7; //?鴻???≪?ゃ?潟?鰹????違????鐚?
35    
36    
37     function THistoryList.AddHistory(
38     favItem : TFavoriteThreadItem; TreeView : TTreeView;
39     TreeType: TGikoTreeType ): Boolean;
40     var
41     i: Integer;
42     Item: TFavoriteThreadItem;
43     Node: TTreeNode;
44     begin
45     Result := True;
46     if TreeType = gttHistory then
47     TreeView.Selected := nil;
48    
49     for i := 0 to Self.Count - 1 do begin
50     if TObject(Self[i]) is TFavoriteThreadItem then begin
51     Item := TFavoriteThreadItem(Self[i]);
52     if Item.URL = favItem.URL then begin
53     Self.Move(i, 0);
54     if TreeType = gttHistory then
55     if TreeView.Items.GetFirstNode <> TreeView.Items[ i ] then
56     TreeView.Items[ i ].MoveTo( TreeView.Items.GetFirstNode, naInsert );
57     Result := false;
58     Exit;
59     end;
60     end;
61     end;
62    
63     if Self.Count > 0 then
64     Self.Insert( 0, favItem )
65     else
66     Self.Add( favItem );
67    
68     while GikoSys.Setting.MaxRecordCount < Self.Count do begin
69     i := Self.Count - 1;
70     TObject( Self.Items[ i ] ).Free;
71     Self.Delete( i );
72     end;
73    
74     if TreeType = gttHistory then begin
75     Node := TreeView.Items.Add( nil, favItem.Title );
76     Node.MoveTo( TreeView.Items.GetFirstNode, naInsert );
77     {
78     if favItem.NewArrival then begin
79     Node.ImageIndex := ITEM_ICON_THREADNEW1;
80     Node.SelectedIndex := ITEM_ICON_THREADNEW2;
81     end else begin
82     Node.ImageIndex := ITEM_ICON_THREADLOG1;
83     Node.SelectedIndex := ITEM_ICON_THREADLOG2;
84     end;
85     }
86     // 莢??激???????????????? NewArrival ?????с??????茵??????
87     // ??avItem.Item ?????????c? dat ????粋昭?帥??綽?荀???????
88     Node.ImageIndex := ITEM_ICON_THREADLOG1;
89     Node.SelectedIndex := ITEM_ICON_THREADLOG2;
90     Node.Data := favItem;
91     //while GikoSys.Setting.AddressHistoryCount < TreeView.Items.Count do begin
92     while GikoSys.Setting.MaxRecordCount < TreeView.Items.Count do begin
93     i := TreeView.Items.Count - 1;
94     TreeView.Items.Item[ i ].Delete;
95     end;
96     end;
97     end;
98    
99     procedure THistoryList.DeleteHistory( threadItem: TThreadItem;
100     TreeView : TTreeView; TreeType: TGikoTreeType );
101     var
102     i: Integer;
103     node: TTreeNode;
104     begin
105     // ???c??????????吋罩眼??茵?ず??????????????
106     // ???c?????????????≪?ゃ?????????ゃ??????
107     if (TreeType = gttHistory) then begin
108     node := TreeView.Items.GetFirstNode;
109     while (node <> nil) do begin
110     if ( TFavoriteThreadItem(node.Data).Item = threadItem ) then begin
111     TreeView.Items.Delete(node);
112     TreeView.Refresh;
113     node := nil;
114     end else begin
115     node := node.GetNext;
116     end;
117     end;
118     end;
119     for i := 0 to Self.Count - 1 do begin
120     if threadItem = TFavoriteThreadItem( Self.Items[i] ).Item then begin
121     TFavoriteThreadItem( Self.Items[ i ] ).Free;
122     Self.Delete(i);
123     Self.Capacity := Self.Count;
124     Break;
125     end;
126     end;
127     end;
128    
129     procedure THistoryList.Clear;
130     var
131     i : Integer;
132     begin
133     try
134     for i := Self.Count - 1 downto 0 do begin
135     if TObject(Self[ i ]) is TFavoriteThreadItem then
136     TFavoriteThreadItem(Self[ i ]).Free
137     else if TObject(Self[ i ]) is TFavoriteBoardItem then
138     TFavoriteBoardItem(Self[ i ]).Free;
139     end;
140     except
141     end;
142    
143     inherited Clear;
144     Self.Capacity := Self.Count;
145    
146     end;
147    
148     procedure THistoryList.SaveToFile(const FileName: String);
149     var
150     i, bound : Integer;
151     saveList : TstringList;
152     begin
153    
154     saveList := TStringList.Create;
155     try
156     Self.Pack;
157     Self.Capacity := Self.Count;
158     saveList.Add('<?xml version="1.0" encoding="Shift_JIS" standalone="yes"?>');
159     saveList.Add('<address>');
160     bound := Self.Count - 1;
161     for i := bound downto 0 do begin
162     // title ???????????篏帥?c????????
163     saveList.Add(
164     '<history url="' + HtmlEncode( TFavoriteThreadItem( Self[ i ] ).URL ) + '"' +
165     ' title="' + HtmlEncode( MojuUtils.Sanitize(TFavoriteThreadItem( Self[ i ] ).Title )) + '"/>');
166     end;
167     saveList.Add('</address>');
168     saveList.SaveToFile( FileName );
169     finally
170     saveList.Free;
171     end;
172    
173     end;
174    
175     procedure THistoryList.LoadFromFile(const FileName: String;
176     TreeView : TTreeView; TreeType: TGikoTreeType);
177     var
178     i, bound : Integer;
179     XMLDoc : IXMLDocument;
180     XMLNode : IXMLNode;
181     HistoryNode : IXMLNode;
182     s : string;
183     favItem : TFavoriteThreadItem;
184     {$IFDEF DEBUG}
185     st, rt : Cardinal;
186     {$ENDIF}
187     begin
188     {$IFDEF DEBUG}
189     st := GetTickCount;
190     {$ENDIF}
191     if FileExists( FileName ) then begin
192     try
193     XMLDoc := IXMLDocument.Create;
194     //XMLDoc := LoadXMLDocument(FileName);
195     LoadXMLDocument(FileName, XMLDoc);
196     try
197     XMLNode := XMLDoc.DocumentElement;
198    
199     if XMLNode.NodeName = 'address' then begin
200     bound := XMLNode.ChildNodes.Count - 1;
201     for i := 0 to bound do begin
202     HistoryNode := XMLNode.ChildNodes[i];
203     if HistoryNode.NodeName = 'history' then begin
204     //if FReadCount >= sl.Count then begin
205     s := Trim(HistoryNode.Attributes['url']);
206     if s <> '' then begin
207     favItem := TFavoriteThreadItem.Create(
208     s, MojuUtils.UnSanitize(HistoryNode.Attributes[ 'title' ]) );
209     if not AddHistory( favItem, TreeView, TreeType ) then
210     favItem.Free;
211     end;
212     //end;
213     end;
214     end;
215     end;
216     finally
217     XMLDoc.Free;
218     end;
219     except
220     end;
221     end;
222     {$IFDEF DEBUG}
223     rt := GetTickCount - st;
224     Writeln('Runtime(Load Histroy) : ' + IntToStr(rt) + ' ms');
225     {$ENDIF}
226    
227     end;
228 h677 1.2 procedure THistoryList.SetTreeNode(
229     TreeView : TTreeView );
230     var
231     i: Integer;
232     Node: TTreeNode;
233     Item: TFavoriteThreadItem;
234     begin
235     TreeView.Items.BeginUpdate;
236     try
237     TreeView.Items.Clear;
238     for i := 0 to Self.Count - 1 do begin
239     Item := TFavoriteThreadItem(Self[i]);
240     Node := TreeView.Items.Add(nil, Item.Title);
241     {
242     if Item.Item.NewArrival then begin
243     Node.ImageIndex := ITEM_ICON_THREADNEW1;
244     Node.SelectedIndex := ITEM_ICON_THREADNEW2;
245     end else begin
246     Node.ImageIndex := ITEM_ICON_THREADLOG1;
247     Node.SelectedIndex := ITEM_ICON_THREADLOG2;
248     end;
249     }
250     // 莢??激???????????????? NewArrival ?????с??????茵??????
251     // ??tem.Item ?????????c? dat ????粋昭?帥??綽?荀???????
252     Node.ImageIndex := ITEM_ICON_THREADLOG1;
253     Node.SelectedIndex := ITEM_ICON_THREADLOG2;
254     Node.Data := Item;
255     end;
256     finally
257     TreeView.Items.EndUpdate;
258     end;
259     end;
260 h677 1.1
261     end.

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26