uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls, ExtCtrls, Favorite, ImgList, NewFavoriteFolder,
- GikoSystem, GikoUtil;
+ GikoSystem, GikoUtil, Menus;
type
TFavoriteArrangeDialog = class(TForm)
FolderTreeView: TTreeView;
Panel4: TPanel;
CloseButton: TButton;
+ SortPopupMenu: TPopupMenu;
+ SortAscName: TMenuItem;
+ SortDscName: TMenuItem;
+ N1: TMenuItem;
+ SortURL: TMenuItem;
+ SortAscURL: TMenuItem;
+ SortDscURL: TMenuItem;
+ SortTitle: TMenuItem;
+ SortAscTitle: TMenuItem;
+ SortDscTitle: TMenuItem;
procedure CloseButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure NewFolderButtonClick(Sender: TObject);
procedure FolderTreeViewDragDrop(Sender, Source: TObject; X,
Y: Integer);
procedure FormDestroy(Sender: TObject);
+ procedure SortDscNameClick(Sender: TObject);
+ procedure SortAscNameClick(Sender: TObject);
+ procedure SortDscURLClick(Sender: TObject);
+ procedure SortAscURLClick(Sender: TObject);
+ procedure SortDscTitleClick(Sender: TObject);
+ procedure SortAscTitleClick(Sender: TObject);
private
{ Private \90é\8c¾ }
-// FDragNode: TTreeNode;
FDeleteList: TList;
-// procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
procedure SetDeleteItemList(Node: TTreeNode);
public
{ Public \90é\8c¾ }
var
FavoriteArrangeDialog: TFavoriteArrangeDialog;
+function SortProc(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
+
implementation
uses Giko;
+const
+ SORT_ASC = 0;
+ SORT_DSC = 1;
+ SORT_NAME = 8;
+ SORT_URL = 16;
+ SORT_TITLE = 32;
+
{$R *.dfm}
procedure TFavoriteArrangeDialog.CloseButtonClick(Sender: TObject);
FolderTreeView.Items.GetFirstNode.Expanded := True;
FolderTreeView.Items.GetFirstNode.Selected := True;
end;
-
-
-{ Node := FolderTreeView.Items.AddChild(nil, GikoForm.Favorite.Root.Title);
- Node.ImageIndex := 0;
- Node.Data := GikoForm.Favorite.Root;
- PrepareFavoriteTree(GikoForm.Favorite.Root, Node);
- Node.Expanded := True;
- Node.Selected := True;}
end;
-{procedure TFavoriteArrangeDialog.PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);
-var
- i: Integer;
- ChildFavo: TFavoriteItem;
- ChildNode: TTreeNode;
-begin
-{ for i := 0 to TFavoriteFolder(Favo).Count - 1 do begin
-
- ChildFavo := TFavoriteFolder(Favo).Items[i];
- if ChildFavo is TFavoriteFolder then begin
- ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
- ChildNode.ImageIndex := 0;
- ChildNode.SelectedIndex := 0;
- ChildNode.Data := ChildFavo;
- PrepareFavoriteTree(ChildFavo, ChildNode);
- end else if ChildFavo is TFavoriteBoardItem then begin
- ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
- ChildNode.ImageIndex := 1;
- ChildNode.SelectedIndex := 1;
- ChildNode.Data := ChildFavo;
- end else if ChildFavo is TFavoriteThreadItem then begin
- ChildNode := FolderTreeView.Items.AddChild(Node, ChildFavo.Title);
- ChildNode.ImageIndex := 2;
- ChildNode.SelectedIndex := 2;
- ChildNode.Data := ChildFavo;
- end;
- end;
-end; }
-
procedure TFavoriteArrangeDialog.NewFolderButtonClick(Sender: TObject);
var
Dlg: TNewFavoriteFolderDialog;
Exit;
if FolderTreeView.Selected.IsFirstNode then
Exit;
- if FolderTreeView.Selected.Text = Favorite.FAVORITE_LINK_NAME then begin
- if MsgBox(Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONQUESTION) <> ID_YES then
- Exit;
- end else if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
- if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FolderTreeView.Selected.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONQUESTION) <> ID_YES then
- Exit;
+ if (GetKeyState( VK_SHIFT ) and $80000000) = 0 then begin
+ if FolderTreeView.Selected.Text = Favorite.FAVORITE_LINK_NAME then begin
+ if MsgBox(Handle, DEL_LINK_MSG, DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
+ Exit;
+ end else begin
+ if MsgBox(Handle, StringReplace( DEL_MSG, '^0', FolderTreeView.Selected.Text, [rfReplaceAll] ) , DEL_TITLE, MB_YESNO or MB_ICONWARNING or MB_DEFBUTTON2) <> ID_YES then
+ Exit;
+ end;
end;
FDeleteList.Add(FolderTreeView.Selected.Data);
SetDeleteItemList(Node.item[i]);
end;
end;
+{
+\brief \83c\83\8a\81[\82Ì\83\\81[\83g\8f\88\97\9d
+\pram Node1 \83m\81[\83h
+\param Node2 \83m\81[\83h
+\param Data \83\\81[\83g\83I\83v\83V\83\87\83\93
+\return Node1(>0) Node1=Node2(=0) Node2(<0)
+}
+function SortProc(Node1, Node2: TTreeNode; Data: Longint): Integer;
+stdcall;
+var
+ folder1, folder2 : TFavoriteFolder;
+ item1, item2 : TFavoriteItem;
+begin
+ if (TObject(Node1.Data) is TFavoriteItem) then begin
+ item1 := TFavoriteItem(Node1.Data);
+ folder1 := nil;
+ end else begin
+ item1 := nil;
+ folder1 := TFavoriteFolder(Node1.Data);
+ end;
+ if (TObject(Node2.Data) is TFavoriteItem) then begin
+ item2 := TFavoriteItem(Node2.Data);
+ folder2 := nil;
+ end else begin
+ item2 := nil;
+ folder2 := TFavoriteFolder(Node2.Data);
+ end;
+
+ if (folder1 <> nil) and (folder2 = nil) then begin
+ Result := 1;
+ end else
+ if (folder1 = nil) and (folder2 <> nil) then begin
+ Result := -1;
+ end else begin
+ Result := 0;
+ if (folder1 <> nil) and (folder2 <> nil) then begin
+ Result := CompareStr(Node1.Text, Node2.Text);
+ end else
+ if (folder1 = nil) and (folder2 = nil) then begin
+ if ((Data and SORT_NAME) > 0) then begin
+ Result := CompareStr(Node1.Text, Node2.Text);
+ end else
+ if ((Data and SORT_URL) > 0) then begin
+ Result := CompareStr(item1.URL, item2.URL);
+ end else
+ if ((Data and SORT_TITLE) > 0) then begin
+ Result := CompareStr(item1.Title, item2.Title);
+ end;
+ end;
+ if ((Data and SORT_DSC) > 0) then begin
+ Result := -1 * Result;
+ end;
+ end;
+end;
+
+{
+\brief \96¼\91O\82Ì\8d~\8f\87\83\\81[\83g
+}
+procedure TFavoriteArrangeDialog.SortDscNameClick(Sender: TObject);
+begin
+ if (FolderTreeView.Selected <> nil) and
+ (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
+ FolderTreeView.Selected
+ .CustomSort(@SortProc, SORT_NAME or SORT_DSC, False);
+ end;
+end;
+
+{
+\brief \96¼\91O\82Ì\8f¸\8f\87\83\\81[\83g
+}
+procedure TFavoriteArrangeDialog.SortAscNameClick(Sender: TObject);
+begin
+ if (FolderTreeView.Selected <> nil) and
+ (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
+ FolderTreeView.Selected
+ .CustomSort(@SortProc, SORT_NAME or SORT_ASC, False);
+ end;
+end;
+{
+\brief URL\82Ì\8d~\8f\87\83\\81[\83g
+}
+procedure TFavoriteArrangeDialog.SortDscURLClick(Sender: TObject);
+begin
+ if (FolderTreeView.Selected <> nil) and
+ (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
+ FolderTreeView.Selected
+ .CustomSort(@SortProc, SORT_URL or SORT_DSC, False);
+ end;
+end;
+{
+\brief URL\82Ì\8f¸\8f\87\83\\81[\83g
+}
+procedure TFavoriteArrangeDialog.SortAscURLClick(Sender: TObject);
+begin
+ if (FolderTreeView.Selected <> nil) and
+ (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
+ FolderTreeView.Selected
+ .CustomSort(@SortProc, SORT_URL or SORT_ASC, False);
+ end;
+end;
+{
+\brief \83^\83C\83g\83\8b\82Ì\8d~\8f\87\83\\81[\83g
+}
+procedure TFavoriteArrangeDialog.SortDscTitleClick(Sender: TObject);
+begin
+ if (FolderTreeView.Selected <> nil) and
+ (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
+ FolderTreeView.Selected
+ .CustomSort(@SortProc, SORT_TITLE or SORT_DSC, False);
+ end;
+end;
+{
+\brief \83^\83C\83g\83\8b\82Ì\8f¸\8f\87\83\\81[\83g
+}
+procedure TFavoriteArrangeDialog.SortAscTitleClick(Sender: TObject);
+begin
+ if (FolderTreeView.Selected <> nil) and
+ (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
+ FolderTreeView.Selected
+ .CustomSort(@SortProc, SORT_TITLE or SORT_ASC, False);
+ end;
+end;
end.
+