6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ComCtrls, StdCtrls, ExtCtrls, Favorite, ImgList, NewFavoriteFolder,
8 GikoSystem, GikoUtil, Menus;
11 TFavoriteArrangeDialog = class(TForm)
16 DeleteButton: TButton;
17 RenameButton: TButton;
18 NewFolderButton: TButton;
19 FolderTreeView: TTreeView;
22 SortPopupMenu: TPopupMenu;
23 SortAscName: TMenuItem;
24 SortDscName: TMenuItem;
27 SortAscURL: TMenuItem;
28 SortDscURL: TMenuItem;
30 SortAscTitle: TMenuItem;
31 SortDscTitle: TMenuItem;
32 procedure CloseButtonClick(Sender: TObject);
33 procedure FormCreate(Sender: TObject);
34 procedure NewFolderButtonClick(Sender: TObject);
35 procedure RenameButtonClick(Sender: TObject);
36 procedure DeleteButtonClick(Sender: TObject);
37 procedure FolderTreeViewEdited(Sender: TObject; Node: TTreeNode;
39 procedure FolderTreeViewDragOver(Sender, Source: TObject; X,
40 Y: Integer; State: TDragState; var Accept: Boolean);
41 procedure FolderTreeViewDragDrop(Sender, Source: TObject; X,
43 procedure FormDestroy(Sender: TObject);
44 procedure SortDscNameClick(Sender: TObject);
45 procedure SortAscNameClick(Sender: TObject);
46 procedure SortDscURLClick(Sender: TObject);
47 procedure SortAscURLClick(Sender: TObject);
48 procedure SortDscTitleClick(Sender: TObject);
49 procedure SortAscTitleClick(Sender: TObject);
53 procedure SetDeleteItemList(Node: TTreeNode);
59 FavoriteArrangeDialog: TFavoriteArrangeDialog;
61 function SortProc(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
76 procedure TFavoriteArrangeDialog.CloseButtonClick(Sender: TObject);
81 procedure TFavoriteArrangeDialog.FormCreate(Sender: TObject);
83 FDeleteList := TList.Create;
84 FolderTreeView.Items := FavoriteDM.TreeView.Items;
86 if FolderTreeView.Items.GetFirstNode <> nil then begin
87 FolderTreeView.Items.GetFirstNode.Expanded := True;
88 FolderTreeView.Items.GetFirstNode.Selected := True;
92 procedure TFavoriteArrangeDialog.NewFolderButtonClick(Sender: TObject);
94 Dlg: TNewFavoriteFolderDialog;
95 NewFavFolder: TFavoriteFolder;
98 if FolderTreeView.Selected = nil then
100 Dlg := TNewFavoriteFolderDialog.Create(Self);
103 if Dlg.ModalResult = mrOK then begin
104 if Length(Dlg.FolderEdit.Text) = 0 then
106 if not (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then
107 FolderTreeView.Selected := FolderTreeView.Selected.Parent;
109 NewFavFolder := TFavoriteFolder.Create;
110 Node := FolderTreeView.Items.AddChildObject(FolderTreeView.Selected, Dlg.FolderEdit.Text, NewFavFolder);
111 Node.ImageIndex := 14;
112 Node.SelectedIndex := 14;
113 // FolderTreeView.Selected.Expanded := True;
114 FolderTreeView.Selected := Node;
121 procedure TFavoriteArrangeDialog.RenameButtonClick(Sender: TObject);
123 if FolderTreeView.Selected = nil then
125 if FolderTreeView.Selected.IsFirstNode then
127 if FolderTreeView.Selected.Text = Favorite.FAVORITE_LINK_NAME then
129 FolderTreeView.ReadOnly := False;
130 FolderTreeView.Selected.EditText;
133 procedure TFavoriteArrangeDialog.DeleteButtonClick(Sender: TObject);
135 DEL_LINK_MSG = '
\81g
\83\8a\83\93\83N
\81h
\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';
136 DEL_MSG = '
\81g^0
\81h
\82ð
\8dí
\8f\9c\82µ
\82Ü
\82·
\81B
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
137 DEL_TITLE = '
\8dí
\8f\9c\8am
\94F';
139 if FolderTreeView.Selected = nil then
141 if FolderTreeView.Selected.IsFirstNode then
143 if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
144 if FolderTreeView.Selected.Text = Favorite.FAVORITE_LINK_NAME then begin
145 if MsgBox(Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
148 if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FolderTreeView.Selected.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
153 FDeleteList.Add(FolderTreeView.Selected.Data);
154 SetDeleteItemList(FolderTreeView.Selected);
156 FolderTreeView.Selected.Delete;
159 procedure TFavoriteArrangeDialog.FolderTreeViewEdited(Sender: TObject;
160 Node: TTreeNode; var S: String);
162 FolderTreeView.ReadOnly := True;
165 procedure TFavoriteArrangeDialog.FolderTreeViewDragOver(Sender,
166 Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
168 if Source = FolderTreeView then begin
169 if FolderTreeView.Selected = FolderTreeView.Items.GetFirstNode then begin
178 procedure TFavoriteArrangeDialog.FolderTreeViewDragDrop(Sender,
179 Source: TObject; X, Y: Integer);
181 if FolderTreeView.GetNodeAt(X, Y) = nil then
183 if Source <> FolderTreeView then
185 if FolderTreeView.Selected = FolderTreeView.GetNodeAt(X, Y) then
188 if TObject(FolderTreeView.GetNodeAt(X, Y).Data) is TFavoriteFolder then
189 FolderTreeView.Selected.MoveTo(FolderTreeView.GetNodeAt(X, Y), naAddChild)
190 else if TObject(FolderTreeView.GetNodeAt(X, Y).Data) is TFavoriteBoardItem then
191 FolderTreeView.Selected.MoveTo(FolderTreeView.GetNodeAt(X, Y), naInsert)
192 else if TObject(FolderTreeView.GetNodeAt(X, Y).Data) is TFavoriteThreadItem then
193 FolderTreeView.Selected.MoveTo(FolderTreeView.GetNodeAt(X, Y), naInsert);
196 procedure TFavoriteArrangeDialog.FormDestroy(Sender: TObject);
200 FavoriteDM.TreeView.Items := FolderTreeView.Items;
202 for i := FDeleteList.Count - 1 downto 0 do
203 TObject(FDeleteList[i]).Free;
205 FavoriteDM.WriteFavorite;
208 procedure TFavoriteArrangeDialog.SetDeleteItemList(Node: TTreeNode);
212 for i := 0 to Node.Count - 1 do begin
213 FDeleteList.Add(Node.Item[i].Data);
214 if Node.Item[i].Count > 0 then
215 SetDeleteItemList(Node.item[i]);
219 \brief
\83c
\83\8a\81[
\82Ì
\83\
\81[
\83g
\8f\88\97\9d
220 \pram Node1
\83m
\81[
\83h
221 \param Node2
\83m
\81[
\83h
222 \param Data
\83\
\81[
\83g
\83I
\83v
\83V
\83\87\83\93
223 \return Node1(>0) Node1=Node2(=0) Node2(<0)
225 function SortProc(Node1, Node2: TTreeNode; Data: Longint): Integer;
228 folder1, folder2 : TFavoriteFolder;
229 item1, item2 : TFavoriteItem;
231 if (TObject(Node1.Data) is TFavoriteItem) then begin
232 item1 := TFavoriteItem(Node1.Data);
236 folder1 := TFavoriteFolder(Node1.Data);
238 if (TObject(Node2.Data) is TFavoriteItem) then begin
239 item2 := TFavoriteItem(Node2.Data);
243 folder2 := TFavoriteFolder(Node2.Data);
246 if (folder1 <> nil) and (folder2 = nil) then begin
249 if (folder1 = nil) and (folder2 <> nil) then begin
253 if (folder1 <> nil) and (folder2 <> nil) then begin
254 Result := CompareStr(Node1.Text, Node2.Text);
256 if (folder1 = nil) and (folder2 = nil) then begin
257 if ((Data and SORT_NAME) > 0) then begin
258 Result := CompareStr(Node1.Text, Node2.Text);
260 if ((Data and SORT_URL) > 0) then begin
261 Result := CompareStr(item1.URL, item2.URL);
263 if ((Data and SORT_TITLE) > 0) then begin
264 Result := CompareStr(item1.Title, item2.Title);
267 if ((Data and SORT_DSC) > 0) then begin
268 Result := -1 * Result;
274 \brief
\96¼
\91O
\82Ì
\8d~
\8f\87\83\
\81[
\83g
276 procedure TFavoriteArrangeDialog.SortDscNameClick(Sender: TObject);
278 if (FolderTreeView.Selected <> nil) and
279 (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
280 FolderTreeView.Selected
281 .CustomSort(@SortProc, SORT_NAME or SORT_DSC, False);
286 \brief
\96¼
\91O
\82Ì
\8f¸
\8f\87\83\
\81[
\83g
288 procedure TFavoriteArrangeDialog.SortAscNameClick(Sender: TObject);
290 if (FolderTreeView.Selected <> nil) and
291 (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
292 FolderTreeView.Selected
293 .CustomSort(@SortProc, SORT_NAME or SORT_ASC, False);
297 \brief URL
\82Ì
\8d~
\8f\87\83\
\81[
\83g
299 procedure TFavoriteArrangeDialog.SortDscURLClick(Sender: TObject);
301 if (FolderTreeView.Selected <> nil) and
302 (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
303 FolderTreeView.Selected
304 .CustomSort(@SortProc, SORT_URL or SORT_DSC, False);
308 \brief URL
\82Ì
\8f¸
\8f\87\83\
\81[
\83g
310 procedure TFavoriteArrangeDialog.SortAscURLClick(Sender: TObject);
312 if (FolderTreeView.Selected <> nil) and
313 (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
314 FolderTreeView.Selected
315 .CustomSort(@SortProc, SORT_URL or SORT_ASC, False);
319 \brief
\83^
\83C
\83g
\83\8b\82Ì
\8d~
\8f\87\83\
\81[
\83g
321 procedure TFavoriteArrangeDialog.SortDscTitleClick(Sender: TObject);
323 if (FolderTreeView.Selected <> nil) and
324 (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
325 FolderTreeView.Selected
326 .CustomSort(@SortProc, SORT_TITLE or SORT_DSC, False);
330 \brief
\83^
\83C
\83g
\83\8b\82Ì
\8f¸
\8f\87\83\
\81[
\83g
332 procedure TFavoriteArrangeDialog.SortAscTitleClick(Sender: TObject);
334 if (FolderTreeView.Selected <> nil) and
335 (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
336 FolderTreeView.Selected
337 .CustomSort(@SortProc, SORT_TITLE or SORT_ASC, False);