Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/FavoriteAdd.pas

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


Revision 1.8 - (hide 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 hi_ 1.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 yoffy 1.8 Node : TTreeNode;
49     TmpNode : TTreeNode;
50 hi_ 1.1 begin
51 h677 1.6 FolderTreeView.Items.BeginUpdate;
52 hi_ 1.1 FolderTreeView.Items := FavoriteDM.TreeView.Items;
53 yoffy 1.8 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 hi_ 1.1 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 yoffy 1.8 FolderTreeView.Items.EndUpdate;
69 h677 1.6
70 hi_ 1.1 { 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 yoffy 1.8 Node : TTreeNode;
102     NewNode : TTreeNode;
103     FavoBoardItem : TFavoriteBoardItem;
104     FavoThreadItem : TFavoriteThreadItem;
105     FavNode : TTreeNode;
106 hi_ 1.1 begin
107     if FolderTreeView.Selected = nil then
108     Exit;
109    
110 yoffy 1.8 NewNode := nil;
111     Node := FolderTreeView.Items.GetFirstNode;
112     while Node <> nil do begin
113     FavNode := GetGikoFavoriteNode(Node.Data);
114 hi_ 1.1 if FavNode = nil then begin
115 yoffy 1.8 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 hi_ 1.1 end;
122 yoffy 1.8 Node := Node.GetNext;
123 hi_ 1.1 end;
124    
125     FavNode := GetGikoFavoriteNode(FolderTreeView.Selected.Data);
126     if FavNode <> nil then begin
127     if FBoard <> nil then begin
128 yoffy 1.5 FavoBoardItem := TFavoriteBoardItem.Create( FBoard.URL, FBoard.Title, FBoard );
129 yoffy 1.8 NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoBoardItem);
130     NewNode.ImageIndex := 15;
131     NewNode.SelectedIndex := 15;
132 hi_ 1.1 end else if FThreadItem <> nil then begin
133 yoffy 1.5 FavoThreadItem := TFavoriteThreadItem.Create( FThreadItem.URL, FThreadItem.Title, FThreadItem );
134 yoffy 1.8 NewNode := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoThreadItem);
135     NewNode.ImageIndex := 16;
136     NewNode.SelectedIndex := 16;
137 hi_ 1.1 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 yoffy 1.2 Node.ImageIndex := 14;
167     Node.SelectedIndex := 14;
168 hi_ 1.1 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 yoffy 1.8 Node : TTreeNode;
200 hi_ 1.1 begin
201 yoffy 1.8 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 hi_ 1.1 Exit;
207     end;
208 yoffy 1.8 Node := Node.GetNext;
209 hi_ 1.1 end;
210     end;
211    
212     end.

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