OSDN Git Service

コンパイル時に[警告][ヒント]がなるべく出ないように修正。
[gikonavigoeson/gikonavi.git] / FavoriteAdd.pas
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 \90é\8c¾ }
27                 FBoard: TBoard;
28                 FThreadItem: TThreadItem;
29 //              procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
30                 function GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
31         public
32                 { Public \90é\8c¾ }
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         i: Integer;
49 begin
50         FolderTreeView.Items := FavoriteDM.TreeView.Items;
51
52         for i := FolderTreeView.Items.Count - 1 downto 0 do begin
53                 if not (TObject(FolderTreeView.Items[i].Data) is TFavoriteFolder) then
54                         FolderTreeView.Items[i].Delete;
55         end;
56
57         if FolderTreeView.Items.GetFirstNode <> nil then begin
58                 FolderTreeView.Items.GetFirstNode.Expanded := True;
59                 FolderTreeView.Items.GetFirstNode.Selected := True;
60         end;
61 {       Node := FolderTreeView.Items.AddChild(nil, GikoForm.Favorite.Root.Title);
62         Node.ImageIndex := 0;
63         Node.Data := GikoForm.Favorite.Root;
64         PrepareFavoriteTree(GikoForm.Favorite.Root, Node);
65         Node.Expanded := True;
66         Node.Selected := True;}
67 end;
68
69
70 {procedure TFavoriteAddDialog.PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
71 var
72         i: Integer;
73         ChildFavo: TFavoriteItem;
74         ChildNode: TTreeNode;
75 begin
76         for i := 0 to TFavoriteFolder(Favo).Count - 1 do begin
77
78                 ChildFavo := TFavoriteFolder(Favo).Items[i];
79                 if ChildFavo is TFavoriteFolder then begin
80                         ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
81                         ChildNode.ImageIndex := 0;
82                         ChildNode.Data := ChildFavo;
83                         PrepareFavoriteTree(ChildFavo, ChildNode);
84                 end else if ChildFavo is TFavoriteBoardItem then begin
85                 end else if ChildFavo is TFavoriteThreadItem then begin
86                 end;
87         end;
88 end;}
89
90 procedure TFavoriteAddDialog.OKButtonClick(Sender: TObject);
91 var
92         i: Integer;
93         Node: TTreeNode;
94         FavoBoardItem: TFavoriteBoardItem;
95         FavoThreadItem: TFavoriteThreadItem;
96         FavNode: TTreeNode;
97 begin
98         if FolderTreeView.Selected = nil then
99                 Exit;
100     Node := nil;
101         for i := 0 to FolderTreeView.Items.Count - 1 do begin
102
103                 FavNode := GetGikoFavoriteNode(FolderTreeView.Items[i].Data);
104                 if FavNode = nil then begin
105                         FavNode := GetGikoFavoriteNode(FolderTreeView.Items[i].Parent.Data);
106                         if FavNode <> nil then
107                                 Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, FolderTreeView.Items[i].Text, FolderTreeView.Items[i].Data);
108                                 Node.ImageIndex := 14;
109                                 Node.SelectedIndex := 14;
110                 end;
111         end;
112
113
114         FavNode := GetGikoFavoriteNode(FolderTreeView.Selected.Data);
115         if FavNode <> nil then begin
116                 if FBoard <> nil then begin
117                         FavoBoardItem := TFavoriteBoardItem.Create;
118                         FavoBoardItem.BBSID := FBoard.BBSID;
119                         FavoBoardItem.BoardName := FBoard.Title;
120                         Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoBoardItem);
121                         Node.ImageIndex := 15;
122                         Node.SelectedIndex := 15;
123                 end else if FThreadItem <> nil then begin
124                         FavoThreadItem := TFavoriteThreadItem.Create;
125                         FavoThreadItem.BBSID := FThreadItem.ParentBoard.BBSID;
126                         FavoThreadItem.ThreadID := FThreadItem.FileName;
127                         FavoThreadItem.ThreadName := FThreadItem.Title;
128                         Node := FavoriteDM.TreeView.Items.AddChildObject(FavNode, CaptionEdit.Text, FavoThreadItem);
129                         Node.ImageIndex := 16;
130                         Node.SelectedIndex := 16;
131                 end;
132         end;
133
134         FavoriteDM.WriteFavorite;
135         Close;
136 end;
137
138 procedure TFavoriteAddDialog.CancelButtonClick(Sender: TObject);
139 begin
140         Close;
141 end;
142
143 procedure TFavoriteAddDialog.NewFolderButtonClick(Sender: TObject);
144 var
145         Dlg: TNewFavoriteFolderDialog;
146         Node: TTreeNode;
147         FavFolder: TFavoriteFolder;
148 begin
149         if FolderTreeView.Selected = nil then
150                 Exit;
151
152         Dlg := TNewFavoriteFolderDialog.Create(Self);
153         try
154                 Dlg.ShowModal;
155                 if Dlg.ModalResult = mrOK then begin
156                         if Length(Dlg.FolderEdit.Text) = 0 then
157                                 Exit;
158                         FavFolder := TFavoriteFolder.Create;
159                         Node := FolderTreeView.Items.AddChildObject(FolderTreeView.Selected, Dlg.FolderEdit.Text, FavFolder);
160                         Node.ImageIndex := 14;
161                         Node.SelectedIndex := 14;
162                         FolderTreeView.Selected := Node;
163                 end;
164         finally
165                 Dlg.Free;
166         end;
167 end;
168
169 procedure TFavoriteAddDialog.SetBoard(Board: TBoard);
170 begin
171         FBoard := Board;
172         if Board = nil then Exit;
173
174         NameEdit.Text := Board.Title;
175         CaptionEdit.Text := Board.Title;
176         TitleLabel.Caption := '\82±\82Ì\94Â\82ª\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82³\82ê\82Ü\82·';
177         NameLabel.Caption := '\94Â\96¼:';
178 end;
179
180 procedure TFavoriteAddDialog.SetThreadItem(ThreadItem: TThreadItem);
181 begin
182         FThreadItem := ThreadItem;
183         if ThreadItem = nil then Exit;
184
185         NameEdit.Text := ThreadItem.Title;
186         CaptionEdit.Text := ThreadItem.Title;
187         TitleLabel.Caption := '\82±\82Ì\83X\83\8c\83b\83h\82ª\82¨\8bC\82É\93ü\82è\82É\92Ç\89Á\82³\82ê\82Ü\82·';
188         NameLabel.Caption := '\83X\83\8c\83b\83h\96¼:';
189 end;
190
191 function TFavoriteAddDialog.GetGikoFavoriteNode(FavFolder: TFavoriteFolder): TTreeNode;
192 var
193         i: Integer;
194 begin
195         Result := nil;
196         for i := 0 to FavoriteDM.TreeView.Items.Count - 1 do begin
197                 if FavoriteDM.TreeView.Items[i].Data = FavFolder then begin
198                         Result := FavoriteDM.TreeView.Items[i];
199                         Exit;
200                 end;
201         end;
202 end;
203
204 end.