X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=FavoriteArrange.pas;h=456148a0662bfd44bd2e594a0a96bf0b25c1cf9c;hb=refs%2Fheads%2Fmaster;hp=114a7e828ba3e0190c601a023d5408cea7250449;hpb=5740caab25a3b0ec7d0a998f49f4e55f541ae649;p=gikonavigoeson%2Fgikonavi.git diff --git a/FavoriteArrange.pas b/FavoriteArrange.pas index 114a7e8..456148a 100644 --- a/FavoriteArrange.pas +++ b/FavoriteArrange.pas @@ -5,7 +5,7 @@ interface 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) @@ -19,6 +19,16 @@ type 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); @@ -31,11 +41,15 @@ type 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 éŒ¾ } -// FDragNode: TTreeNode; FDeleteList: TList; -// procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode); procedure SetDeleteItemList(Node: TTreeNode); public { Public éŒ¾ } @@ -44,10 +58,19 @@ type 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); @@ -56,7 +79,18 @@ begin end; procedure TFavoriteArrangeDialog.FormCreate(Sender: TObject); +var + CenterForm: TCustomForm; begin + CenterForm := TCustomForm(Owner); + if Assigned(CenterForm) then begin + Left := ((CenterForm.Width - Width) div 2) + CenterForm.Left; + Top := ((CenterForm.Height - Height) div 2) + CenterForm.Top; + end else begin + Left := (Screen.Width - Width) div 2; + Top := (Screen.Height - Height) div 2; + end; + FDeleteList := TList.Create; FolderTreeView.Items := FavoriteDM.TreeView.Items; @@ -64,45 +98,8 @@ begin 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; @@ -229,5 +226,128 @@ begin SetDeleteItemList(Node.item[i]); end; end; +{ +\brief ƒcƒŠ[‚̃\[ƒgˆ— +\pram Node1 ƒm[ƒh +\param Node2 ƒm[ƒh +\param Data ƒ\[ƒgƒIƒvƒVƒ‡ƒ“ +\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 –¼‘O‚̍~‡ƒ\[ƒg +} +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 –¼‘O‚̏¸‡ƒ\[ƒg +} +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‚̍~‡ƒ\[ƒg +} +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‚̏¸‡ƒ\[ƒg +} +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 ƒ^ƒCƒgƒ‹‚̍~‡ƒ\[ƒg +} +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 ƒ^ƒCƒgƒ‹‚̏¸‡ƒ\[ƒg +} +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. +