Develop and Download Open Source Software

Browse CVS Repository

Diff of /gikonavigoeson/gikonavi/FavoriteArrange.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.6 by yoffy, Sun Aug 15 16:07:00 2004 UTC revision 1.7 by h677, Mon Aug 14 08:22:46 2006 UTC
# Line 5  interface Line 5  interface
5  uses  uses
6          Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,          Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7          Dialogs, ComCtrls, StdCtrls, ExtCtrls, Favorite, ImgList, NewFavoriteFolder,          Dialogs, ComCtrls, StdCtrls, ExtCtrls, Favorite, ImgList, NewFavoriteFolder,
8          GikoSystem, GikoUtil;          GikoSystem, GikoUtil, Menus;
9    
10  type  type
11    TFavoriteArrangeDialog = class(TForm)    TFavoriteArrangeDialog = class(TForm)
# Line 19  type Line 19  type
19      FolderTreeView: TTreeView;      FolderTreeView: TTreeView;
20      Panel4: TPanel;      Panel4: TPanel;
21      CloseButton: TButton;      CloseButton: TButton;
22        SortPopupMenu: TPopupMenu;
23        SortAscName: TMenuItem;
24        SortDscName: TMenuItem;
25        N1: TMenuItem;
26        SortURL: TMenuItem;
27        SortAscURL: TMenuItem;
28        SortDscURL: TMenuItem;
29        SortTitle: TMenuItem;
30        SortAscTitle: TMenuItem;
31        SortDscTitle: TMenuItem;
32      procedure CloseButtonClick(Sender: TObject);      procedure CloseButtonClick(Sender: TObject);
33      procedure FormCreate(Sender: TObject);      procedure FormCreate(Sender: TObject);
34      procedure NewFolderButtonClick(Sender: TObject);      procedure NewFolderButtonClick(Sender: TObject);
# Line 31  type Line 41  type
41                  procedure FolderTreeViewDragDrop(Sender, Source: TObject; X,                  procedure FolderTreeViewDragDrop(Sender, Source: TObject; X,
42                          Y: Integer);                          Y: Integer);
43                  procedure FormDestroy(Sender: TObject);                  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);
50          private          private
51                  { Private 宣言 }                  { Private 宣言 }
 //              FDragNode: TTreeNode;  
52                  FDeleteList: TList;                  FDeleteList: TList;
 //              procedure PrepareFavoriteTree(Favo: TFavoriteItem; Node: TTreeNode);  
53                  procedure SetDeleteItemList(Node: TTreeNode);                  procedure SetDeleteItemList(Node: TTreeNode);
54          public          public
55                  { Public 宣言 }                  { Public 宣言 }
# Line 44  type Line 58  type
58  var  var
59          FavoriteArrangeDialog: TFavoriteArrangeDialog;          FavoriteArrangeDialog: TFavoriteArrangeDialog;
60    
61    function SortProc(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
62    
63  implementation  implementation
64    
65  uses Giko;  uses Giko;
66    
67    const
68        SORT_ASC    = 0;
69        SORT_DSC    = 1;
70        SORT_NAME   = 8;
71        SORT_URL    = 16;
72        SORT_TITLE  = 32;
73    
74  {$R *.dfm}  {$R *.dfm}
75    
76  procedure TFavoriteArrangeDialog.CloseButtonClick(Sender: TObject);  procedure TFavoriteArrangeDialog.CloseButtonClick(Sender: TObject);
# Line 64  begin Line 87  begin
87                  FolderTreeView.Items.GetFirstNode.Expanded := True;                  FolderTreeView.Items.GetFirstNode.Expanded := True;
88                  FolderTreeView.Items.GetFirstNode.Selected := True;                  FolderTreeView.Items.GetFirstNode.Selected := True;
89          end;          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;}  
90  end;  end;
91    
 {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;  }  
   
92  procedure TFavoriteArrangeDialog.NewFolderButtonClick(Sender: TObject);  procedure TFavoriteArrangeDialog.NewFolderButtonClick(Sender: TObject);
93  var  var
94          Dlg: TNewFavoriteFolderDialog;          Dlg: TNewFavoriteFolderDialog;
# Line 229  begin Line 215  begin
215                          SetDeleteItemList(Node.item[i]);                          SetDeleteItemList(Node.item[i]);
216          end;          end;
217  end;  end;
218    {
219    \brief  ツリーのソート処理
220    \pram   Node1   ノード
221    \param  Node2   ノード
222    \param  Data    ソートオプション
223    \return Node1(>0) Node1=Node2(=0)  Node2(<0)
224    }
225    function SortProc(Node1, Node2: TTreeNode; Data: Longint): Integer;
226    stdcall;
227    var
228        folder1, folder2 : TFavoriteFolder;
229        item1, item2 : TFavoriteItem;
230    begin
231        if (TObject(Node1.Data) is TFavoriteItem) then begin
232            item1 := TFavoriteItem(Node1.Data);
233            folder1 := nil;
234        end else begin
235            item1 := nil;
236            folder1 := TFavoriteFolder(Node1.Data);
237        end;
238        if (TObject(Node2.Data) is TFavoriteItem) then begin
239            item2 := TFavoriteItem(Node2.Data);
240            folder2 := nil;
241        end else begin
242            item2 := nil;
243            folder2 := TFavoriteFolder(Node2.Data);
244        end;
245    
246        if (folder1 <> nil) and (folder2 = nil) then begin
247            Result := 1;
248        end else
249        if (folder1 = nil) and (folder2 <> nil) then begin
250            Result := -1;
251        end else begin
252            if (folder1 <> nil) and (folder2 <> nil) then begin
253                Result := CompareStr(Node1.Text, Node2.Text);
254            end else
255            if (folder1 = nil) and (folder2 = nil) then begin
256                if ((Data and SORT_NAME) > 0) then begin
257                    Result := CompareStr(Node1.Text, Node2.Text);
258                end else
259                if ((Data and SORT_URL) > 0) then begin
260                    Result := CompareStr(item1.URL, item2.URL);
261                end else
262                if ((Data and SORT_TITLE) > 0) then begin
263                    Result := CompareStr(item1.Title, item2.Title);
264                end;
265            end;
266            if ((Data and SORT_DSC) > 0) then begin
267                Result := -1 * Result;
268            end;
269        end;
270    end;
271    
272    {
273    \brief  名前の降順ソート
274    }
275    procedure TFavoriteArrangeDialog.SortDscNameClick(Sender: TObject);
276    begin
277            if (FolderTreeView.Selected <> nil) and
278            (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
279            FolderTreeView.Selected
280                .CustomSort(@SortProc, SORT_NAME or SORT_DSC, False);
281        end;
282    end;
283    
284    {
285    \brief  名前の昇順ソート
286    }
287    procedure TFavoriteArrangeDialog.SortAscNameClick(Sender: TObject);
288    begin
289            if (FolderTreeView.Selected <> nil) and
290            (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
291            FolderTreeView.Selected
292                .CustomSort(@SortProc, SORT_NAME or SORT_ASC, False);
293        end;
294    end;
295    {
296    \brief  URLの降順ソート
297    }
298    procedure TFavoriteArrangeDialog.SortDscURLClick(Sender: TObject);
299    begin
300            if (FolderTreeView.Selected <> nil) and
301            (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
302            FolderTreeView.Selected
303                .CustomSort(@SortProc, SORT_URL or SORT_DSC, False);
304        end;
305    end;
306    {
307    \brief  URLの昇順ソート
308    }
309    procedure TFavoriteArrangeDialog.SortAscURLClick(Sender: TObject);
310    begin
311            if (FolderTreeView.Selected <> nil) and
312            (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
313            FolderTreeView.Selected
314                .CustomSort(@SortProc, SORT_URL or SORT_ASC, False);
315        end;
316    end;
317    {
318    \brief  タイトルの降順ソート
319    }
320    procedure TFavoriteArrangeDialog.SortDscTitleClick(Sender: TObject);
321    begin
322            if (FolderTreeView.Selected <> nil) and
323            (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
324            FolderTreeView.Selected
325                .CustomSort(@SortProc, SORT_TITLE or SORT_DSC, False);
326        end;
327    end;
328    {
329    \brief  タイトルの昇順ソート
330    }
331    procedure TFavoriteArrangeDialog.SortAscTitleClick(Sender: TObject);
332    begin
333            if (FolderTreeView.Selected <> nil) and
334            (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then begin
335            FolderTreeView.Selected
336                .CustomSort(@SortProc, SORT_TITLE or SORT_ASC, False);
337        end;
338    end;
339    
340  end.  end.
341    

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26