Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/FavoriteAdd.pas

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


Revision 1.8 - (show annotations) (download) (as text)
Tue Aug 3 17:11:19 2004 UTC (19 years, 8 months ago) by yoffy
Branch: MAIN
Changes since 1.7: +41 -30 lines
File MIME type: text/x-pascal
お気に入りに追加ダイアログの初期化を最適化。
※最適化と言ってもお気に入り全体をコピーしているので、
 絶対的に時間がかかる。

1 unit FavoriteAdd;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ComCtrls, StdCtrls, Favorite, ImgList, BoardGroup, NewFavoriteFolder;
8
9 type
10 TFavoriteAddDialog = class(TForm)
11 TitleLabel: TLabel;
12 NameLabel: TLabel;
13 Label3: TLabel;
14 NameEdit: TEdit;
15 CaptionEdit: TEdit;
16 OKButton: TButton;
17 CancelButton: TButton;
18 NewFolderButton: TButton;
19 FolderTreeView: TTreeView;
20 Label4: TLabel;
21 procedure FormCreate(Sender: TObject);
22 procedure OKButtonClick(Sender: TObject);
23 procedure CancelButtonClick(Sender: TObject);
24 procedure NewFolderButtonClick(Sender: TObject);
25 private
26 { Private ?辿?転 }
27 FBoard: TBoard;
28 FThreadItem: TThreadItem;
29 // procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
30 function GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
31 public
32 { Public ?辿?転 }
33 procedure SetBoard(Board: TBoard);
34 procedure SetThreadItem(ThreadItem: TThreadItem);
35 end;
36
37 var
38 FavoriteAddDialog: TFavoriteAddDialog;
39
40 implementation
41
42 uses Giko;
43
44 {$R *.dfm}
45
46 procedure TFavoriteAddDialog.FormCreate(Sender: TObject);
47 var
48 Node : TTreeNode;
49 TmpNode : TTreeNode;
50 begin
51 FolderTreeView.Items.BeginUpdate;
52 FolderTreeView.Items := FavoriteDM.TreeView.Items;
53 Node := FolderTreeView.Items.GetFirstNode;
54 while Node <> nil do begin
55 if not (TObject(Node.Data) is TFavoriteFolder) then begin
56 TmpNode := Node;
57 Node := Node.GetNext;
58 TmpNode.Delete;
59 end else begin
60 Node := Node.GetNext;
61 end;
62 end;
63
64 if FolderTreeView.Items.GetFirstNode <> nil then begin
65 FolderTreeView.Items.GetFirstNode.Expanded := True;
66 FolderTreeView.Items.GetFirstNode.Selected := True;
67 end;
68 FolderTreeView.Items.EndUpdate;
69
70 { Node := FolderTreeView.Items.AddChild(nil, GikoForm.Favorite.Root.Title);
71 Node.ImageIndex := 0;
72 Node.Data := GikoForm.Favorite.Root;
73 PrepareFavoriteTree(GikoForm.Favorite.Root, Node);
74 Node.Expanded := True;
75 Node.Selected := True;}
76 end;
77
78
79 {procedure TFavoriteAddDialog.PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
80 var
81 i: Integer;
82 ChildFavo: TFavoriteItem;
83 ChildNode: TTreeNode;
84 begin
85 for i := 0 to TFavoriteFolder(Favo).Count - 1 do begin
86
87 ChildFavo := TFavoriteFolder(Favo).Items[i];
88 if ChildFavo is TFavoriteFolder then begin
89 ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
90 ChildNode.ImageIndex := 0;
91 ChildNode.Data := ChildFavo;
92 PrepareFavoriteTree(ChildFavo, ChildNode);
93 end else if ChildFavo is TFavoriteBoardItem then begin
94 end else if ChildFavo is TFavoriteThreadItem then begin
95 end;
96 end;
97 end;}
98
99 procedure TFavoriteAddDialog.OKButtonClick(Sender: TObject);
100 var
101 Node : TTreeNode;
102 NewNode : TTreeNode;
103 FavoBoardItem : TFavoriteBoardItem;
104 FavoThreadItem : TFavoriteThreadItem;
105 FavNode : TTreeNode;
106 begin
107 if FolderTreeView.Selected = nil then
108 Exit;
109
110 NewNode := nil;
111 Node := FolderTreeView.Items.GetFirstNode;
112 while Node <> nil do begin
113 FavNode := GetGikoFavoriteNode(Node.Data);
114 if FavNode = nil then begin
115 FavNode := GetGikoFavoriteNode(Node.Parent.Data);
116 if FavNode <> nil then begin
117 NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, Node.Text, Node.Data);
118 NewNode.ImageIndex := 14;
119 NewNode.SelectedIndex := 14;
120 end;
121 end;
122 Node := Node.GetNext;
123 end;
124
125 FavNode := GetGikoFavoriteNode(FolderTreeView.Selected.Data);
126 if FavNode <> nil then begin
127 if FBoard <> nil then begin
128 FavoBoardItem := TFavoriteBoardItem.Create( FBoard.URL, FBoard.Title, FBoard );
129 NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoBoardItem);
130 NewNode.ImageIndex := 15;
131 NewNode.SelectedIndex := 15;
132 end else if FThreadItem <> nil then begin
133 FavoThreadItem := TFavoriteThreadItem.Create( FThreadItem.URL, FThreadItem.Title, FThreadItem );
134 NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoThreadItem);
135 NewNode.ImageIndex := 16;
136 NewNode.SelectedIndex := 16;
137 end;
138 end;
139
140 FavoriteDM.WriteFavorite;
141 Close;
142 end;
143
144 procedure TFavoriteAddDialog.CancelButtonClick(Sender: TObject);
145 begin
146 Close;
147 end;
148
149 procedure TFavoriteAddDialog.NewFolderButtonClick(Sender: TObject);
150 var
151 Dlg: TNewFavoriteFolderDialog;
152 Node: TTreeNode;
153 FavFolder: TFavoriteFolder;
154 begin
155 if FolderTreeView.Selected = nil then
156 Exit;
157
158 Dlg := TNewFavoriteFolderDialog.Create(Self);
159 try
160 Dlg.ShowModal;
161 if Dlg.ModalResult = mrOK then begin
162 if Length(Dlg.FolderEdit.Text) = 0 then
163 Exit;
164 FavFolder := TFavoriteFolder.Create;
165 Node := FolderTreeView.Items.AddChildObject(FolderTreeView.Selected, Dlg.FolderEdit.Text, FavFolder);
166 Node.ImageIndex := 14;
167 Node.SelectedIndex := 14;
168 FolderTreeView.Selected := Node;
169 end;
170 finally
171 Dlg.Free;
172 end;
173 end;
174
175 procedure TFavoriteAddDialog.SetBoard(Board: TBoard);
176 begin
177 FBoard := Board;
178 if Board = nil then Exit;
179
180 NameEdit.Text := Board.Title;
181 CaptionEdit.Text := Board.Title;
182 TitleLabel.Caption := '?????????即?C???端????????????????';
183 NameLabel.Caption := '???添:';
184 end;
185
186 procedure TFavoriteAddDialog.SetThreadItem(ThreadItem: TThreadItem);
187 begin
188 FThreadItem := ThreadItem;
189 if ThreadItem = nil then Exit;
190
191 NameEdit.Text := ThreadItem.Title;
192 CaptionEdit.Text := ThreadItem.Title;
193 TitleLabel.Caption := '?????X???b?h???即?C???端????????????????';
194 NameLabel.Caption := '?X???b?h?添:';
195 end;
196
197 function TFavoriteAddDialog.GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
198 var
199 Node : TTreeNode;
200 begin
201 Result := nil;
202 Node := FavoriteDM.TreeView.Items.GetFirstNode;
203 while Node <> nil do begin
204 if Node.Data = FavFolder then begin
205 Result := Node;
206 Exit;
207 end;
208 Node := Node.GetNext;
209 end;
210 end;
211
212 end.

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