6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ComCtrls, StdCtrls, ExtCtrls, Favorite, ImgList, NewFavoriteFolder,
11 TFavoriteArrangeDialog = class(TForm)
16 DeleteButton: TButton;
17 RenameButton: TButton;
18 NewFolderButton: TButton;
19 FolderTreeView: TTreeView;
22 procedure CloseButtonClick(Sender: TObject);
23 procedure FormCreate(Sender: TObject);
24 procedure NewFolderButtonClick(Sender: TObject);
25 procedure RenameButtonClick(Sender: TObject);
26 procedure DeleteButtonClick(Sender: TObject);
27 procedure FolderTreeViewEdited(Sender: TObject; Node: TTreeNode;
29 procedure FolderTreeViewDragOver(Sender, Source: TObject; X,
30 Y: Integer; State: TDragState; var Accept: Boolean);
31 procedure FolderTreeViewDragDrop(Sender, Source: TObject; X,
33 procedure FormDestroy(Sender: TObject);
36 // FDragNode: TTreeNode;
38 // procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
39 procedure SetDeleteItemList(Node: TTreeNode);
45 FavoriteArrangeDialog: TFavoriteArrangeDialog;
53 procedure TFavoriteArrangeDialog.CloseButtonClick(Sender: TObject);
58 procedure TFavoriteArrangeDialog.FormCreate(Sender: TObject);
60 FDeleteList := TList.Create;
61 FolderTreeView.Items := FavoriteDM.TreeView.Items;
63 if FolderTreeView.Items.GetFirstNode <> nil then begin
64 FolderTreeView.Items.GetFirstNode.Expanded := True;
65 FolderTreeView.Items.GetFirstNode.Selected := True;
69 { Node := FolderTreeView.Items.AddChild(nil, GikoForm.Favorite.Root.Title);
71 Node.Data := GikoForm.Favorite.Root;
72 PrepareFavoriteTree(GikoForm.Favorite.Root, Node);
73 Node.Expanded := True;
74 Node.Selected := True;}
77 {procedure TFavoriteArrangeDialog.PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
80 ChildFavo: TFavoriteItem;
83 { for i := 0 to TFavoriteFolder(Favo).Count - 1 do begin
85 ChildFavo := TFavoriteFolder(Favo).Items[i];
86 if ChildFavo is TFavoriteFolder then begin
87 ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
88 ChildNode.ImageIndex := 0;
89 ChildNode.SelectedIndex := 0;
90 ChildNode.Data := ChildFavo;
91 PrepareFavoriteTree(ChildFavo, ChildNode);
92 end else if ChildFavo is TFavoriteBoardItem then begin
93 ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
94 ChildNode.ImageIndex := 1;
95 ChildNode.SelectedIndex := 1;
96 ChildNode.Data := ChildFavo;
97 end else if ChildFavo is TFavoriteThreadItem then begin
98 ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
99 ChildNode.ImageIndex := 2;
100 ChildNode.SelectedIndex := 2;
101 ChildNode.Data := ChildFavo;
106 procedure TFavoriteArrangeDialog.NewFolderButtonClick(Sender: TObject);
108 Dlg: TNewFavoriteFolderDialog;
109 NewFavFolder: TFavoriteFolder;
112 if FolderTreeView.Selected = nil then
114 Dlg := TNewFavoriteFolderDialog.Create(Self);
117 if Dlg.ModalResult = mrOK then begin
118 if Length(Dlg.FolderEdit.Text) = 0 then
120 if not (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then
121 FolderTreeView.Selected := FolderTreeView.Selected.Parent;
123 NewFavFolder := TFavoriteFolder.Create;
124 Node := FolderTreeView.Items.AddChildObject(FolderTreeView.Selected, Dlg.FolderEdit.Text, NewFavFolder);
125 Node.ImageIndex := 14;
126 Node.SelectedIndex := 14;
127 // FolderTreeView.Selected.Expanded := True;
128 FolderTreeView.Selected := Node;
135 procedure TFavoriteArrangeDialog.RenameButtonClick(Sender: TObject);
137 if FolderTreeView.Selected = nil then
139 if FolderTreeView.Selected.IsFirstNode then
141 if FolderTreeView.Selected.Text = Favorite.FAVORITE_LINK_NAME then
143 FolderTreeView.ReadOnly := False;
144 FolderTreeView.Selected.EditText;
147 procedure TFavoriteArrangeDialog.DeleteButtonClick(Sender: TObject);
149 if FolderTreeView.Selected = nil then
151 if FolderTreeView.Selected.IsFirstNode then
153 if FolderTreeView.Selected.Text = Favorite.FAVORITE_LINK_NAME then begin
154 if MsgBox(Handle, '
\81u
\83\8a\83\93\83N
\81v
\82Í
\83\8a\83\93\83N
\83o
\81[
\97p
\83t
\83H
\83\8b\83_
\82Å
\82·
\81B
\8dí
\8f\9c\82µ
\82Ä
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H', '
\8am
\94F', MB_YESNO or MB_ICONQUESTION) <> ID_YES then
158 FDeleteList.Add(FolderTreeView.Selected.Data);
159 SetDeleteItemList(FolderTreeView.Selected);
161 FolderTreeView.Selected.Delete;
164 procedure TFavoriteArrangeDialog.FolderTreeViewEdited(Sender: TObject;
165 Node: TTreeNode; var S: String);
167 FolderTreeView.ReadOnly := True;
170 procedure TFavoriteArrangeDialog.FolderTreeViewDragOver(Sender,
171 Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
173 if Source = FolderTreeView then begin
174 if FolderTreeView.Selected = FolderTreeView.Items.GetFirstNode then begin
183 procedure TFavoriteArrangeDialog.FolderTreeViewDragDrop(Sender,
184 Source: TObject; X, Y: Integer);
186 if FolderTreeView.GetNodeAt(X, Y) = nil then
188 if Source <> FolderTreeView then
190 if FolderTreeView.Selected = FolderTreeView.GetNodeAt(X, Y) then
193 if TObject(FolderTreeView.GetNodeAt(X, Y).Data) is TFavoriteFolder then
194 FolderTreeView.Selected.MoveTo(FolderTreeView.GetNodeAt(X, Y), naAddChild)
195 else if TObject(FolderTreeView.GetNodeAt(X, Y).Data) is TFavoriteBoardItem then
196 FolderTreeView.Selected.MoveTo(FolderTreeView.GetNodeAt(X, Y), naInsert)
197 else if TObject(FolderTreeView.GetNodeAt(X, Y).Data) is TFavoriteThreadItem then
198 FolderTreeView.Selected.MoveTo(FolderTreeView.GetNodeAt(X, Y), naInsert);
201 procedure TFavoriteArrangeDialog.FormDestroy(Sender: TObject);
205 FavoriteDM.TreeView.Items := FolderTreeView.Items;
207 for i := 0 to FDeleteList.Count - 1 do
208 TObject(FDeleteList[i]).Free;
210 FavoriteDM.WriteFavorite;
213 procedure TFavoriteArrangeDialog.SetDeleteItemList(Node: TTreeNode);
217 for i := 0 to Node.Count - 1 do begin
218 FDeleteList.Add(Node.Item[i].Data);
219 if Node.Item[i].Count > 0 then
220 SetDeleteItemList(Node.item[i]);