Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/FavoriteArrange.pas

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


Revision 1.8 - (show annotations) (download) (as text)
Sat Aug 19 15:00:36 2006 UTC (17 years, 8 months ago) by h677
Branch: MAIN
CVS Tags: v1_59_0_771, v1_59_0_770, v1_59_0_773, v1_59_0_772, v1_59_0_775, v1_59_0_774, v1_59_0_777, v1_59_0_776, v1_56_0_715, v1_59_0_778, v1_63_1_819, v1_57_0_737, v1_62_0_812, v1_57_0_735, v1_57_0_734, v1_57_0_733, v1_57_0_732, v1_57_0_731, v1_57_0_730, v1_57_0_739, v1_57_0_738, v1_59_1_765, v1_60_0_788, v1_60_0_789, v1_58_0_748, v1_58_0_745, v1_60_0_781, v1_60_0_782, v1_58_0_746, v1_60_0_784, v1_60_0_786, v1_60_0_787, v1_56_0_707, v1_59_0_767, v1_56_0_705, v1_56_0_704, v1_56_0_703, v1_56_0_702, v1_56_0_701, v1_56_0_700, v1_59_1_778, v1_57_0_723, v1_59_0_768, v1_59_0_769, v1_57_0_725, v1_57_0_726, v1_57_0_727, v1_57_0_720, v1_57_0_722, v1_57_1_744, v1_57_0_728, v1_57_0_729, v1_57_0_736, v1_58_0_752, v1_58_0_750, v1_58_0_751, v1_58_0_756, v1_58_0_757, v1_58_0_754, v1_58_0_755, v1_58_0_759, v1_57_0_719, v1_57_0_718, v1_56_0_716, v1_54_0_687, v1_56_0_710, v1_56_0_711, v1_56_1_717, v1_56_1_716, v1_54_0_688, v1_54_0_689, v1_54_0_684, v1_54_0_685, v1_61_0_796, v1_61_0_797, v1_61_0_795, v1_61_0_798, v1_61_0_799, v1_55_0_692, v1_55_0_693, v1_55_0_696, v1_55_0_697, v1_55_0_694, v1_55_0_695, v1_54_1_691, v1_56_2_724, v1_56_2_722, v1_55_1_697, v1_56_0_714, v1_63_0_818, v1_63_0_817, v1_63_0_816, v1_63_0_815, v1_54_0_686, v1_54_0_681, v1_62_0_805, v1_62_0_804, v1_62_0_807, v1_62_0_806, v1_56_0_712, v1_62_0_803, v1_62_0_802, v1_56_0_713, v1_62_0_809, v1_54_0_682, v1_56_0_721, v1_54_0_683, v1_60_0_780, v1_60_0_779, v1_62_0_810, v1_62_0_811, v1_58_0_747, v1_60_0_783, v1_59_2_785, marged_bRESPOPUP, v1_56_0_706, v1_60_1_793, v1_54_0_690, v1_58_0_763, v1_58_0_762, v1_58_0_761, v1_58_0_760, v1_62_1_813, v1_57_2_749, v1_57_0_742, v1_57_0_743, v1_57_0_740, v1_57_0_741, v1_56_0_709, v1_57_0_744, v1_56_0_708, v1_61_0_800, v1_56_0_699, v1_56_0_698, v1_60_0_793, v1_60_0_792, v1_60_0_791, v1_60_0_790, v1_60_2_794, v1_61_1_801, HEAD
Branch point for: Bb57, Bb56, Bb55, Bb62, Bb63, Bb60, Bb61, Bb59, Bb58, bRESPOPUP, bListSU, Bb54
Changes since 1.7: +1 -0 lines
File MIME type: text/x-pascal
ソート関数でのコンパイラの警告が出ないように変数の初期化を追加

1 unit FavoriteArrange;
2
3 interface
4
5 uses
6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7 Dialogs, ComCtrls, StdCtrls, ExtCtrls, Favorite, ImgList, NewFavoriteFolder,
8 GikoSystem, GikoUtil, Menus;
9
10 type
11 TFavoriteArrangeDialog = class(TForm)
12 Panel1: TPanel;
13 Panel2: TPanel;
14 Panel3: TPanel;
15 Label1: TLabel;
16 DeleteButton: TButton;
17 RenameButton: TButton;
18 NewFolderButton: TButton;
19 FolderTreeView: TTreeView;
20 Panel4: TPanel;
21 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);
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;
38 var S: String);
39 procedure FolderTreeViewDragOver(Sender, Source: TObject; X,
40 Y: Integer; State: TDragState; var Accept: Boolean);
41 procedure FolderTreeViewDragDrop(Sender, Source: TObject; X,
42 Y: Integer);
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);
50 private
51 { Private 鐃緒申鐃緒申 }
52 FDeleteList: TList;
53 procedure SetDeleteItemList(Node: TTreeNode);
54 public
55 { Public 鐃緒申鐃緒申 }
56 end;
57
58 var
59 FavoriteArrangeDialog: TFavoriteArrangeDialog;
60
61 function SortProc(Node1, Node2: TTreeNode; Data: Longint): Integer; stdcall;
62
63 implementation
64
65 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}
75
76 procedure TFavoriteArrangeDialog.CloseButtonClick(Sender: TObject);
77 begin
78 Close;
79 end;
80
81 procedure TFavoriteArrangeDialog.FormCreate(Sender: TObject);
82 begin
83 FDeleteList := TList.Create;
84 FolderTreeView.Items := FavoriteDM.TreeView.Items;
85
86 if FolderTreeView.Items.GetFirstNode <> nil then begin
87 FolderTreeView.Items.GetFirstNode.Expanded := True;
88 FolderTreeView.Items.GetFirstNode.Selected := True;
89 end;
90 end;
91
92 procedure TFavoriteArrangeDialog.NewFolderButtonClick(Sender: TObject);
93 var
94 Dlg: TNewFavoriteFolderDialog;
95 NewFavFolder: TFavoriteFolder;
96 Node: TTreeNode;
97 begin
98 if FolderTreeView.Selected = nil then
99 Exit;
100 Dlg := TNewFavoriteFolderDialog.Create(Self);
101 try
102 Dlg.ShowModal;
103 if Dlg.ModalResult = mrOK then begin
104 if Length(Dlg.FolderEdit.Text) = 0 then
105 Exit;
106 if not (TObject(FolderTreeView.Selected.Data) is TFavoriteFolder) then
107 FolderTreeView.Selected := FolderTreeView.Selected.Parent;
108
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;
115 end;
116 finally
117 Dlg.Release;
118 end;
119 end;
120
121 procedure TFavoriteArrangeDialog.RenameButtonClick(Sender: TObject);
122 begin
123 if FolderTreeView.Selected = nil then
124 Exit;
125 if FolderTreeView.Selected.IsFirstNode then
126 Exit;
127 if FolderTreeView.Selected.Text = Favorite.FAVORITE_LINK_NAME then
128 Exit;
129 FolderTreeView.ReadOnly := False;
130 FolderTreeView.Selected.EditText;
131 end;
132
133 procedure TFavoriteArrangeDialog.DeleteButtonClick(Sender: TObject);
134 const
135 DEL_LINK_MSG = '鐃?鐃緒申鐃緒申鐃?鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?鐃?鐃?鐃?鐃緒申鐃?鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
136 DEL_MSG = '鐃?^0鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃緒申鐃?';
137 DEL_TITLE = '鐃緒申鐃緒申鐃?鐃?';
138 begin
139 if FolderTreeView.Selected = nil then
140 Exit;
141 if FolderTreeView.Selected.IsFirstNode then
142 Exit;
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
146 Exit;
147 end else begin
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
149 Exit;
150 end;
151 end;
152
153 FDeleteList.Add(FolderTreeView.Selected.Data);
154 SetDeleteItemList(FolderTreeView.Selected);
155
156 FolderTreeView.Selected.Delete;
157 end;
158
159 procedure TFavoriteArrangeDialog.FolderTreeViewEdited(Sender: TObject;
160 Node: TTreeNode; var S: String);
161 begin
162 FolderTreeView.ReadOnly := True;
163 end;
164
165 procedure TFavoriteArrangeDialog.FolderTreeViewDragOver(Sender,
166 Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
167 begin
168 if Source = FolderTreeView then begin
169 if FolderTreeView.Selected = FolderTreeView.Items.GetFirstNode then begin
170 Accept := False;
171 Exit;
172 end;
173 Accept := True;
174 end else
175 Accept := False;
176 end;
177
178 procedure TFavoriteArrangeDialog.FolderTreeViewDragDrop(Sender,
179 Source: TObject; X, Y: Integer);
180 begin
181 if FolderTreeView.GetNodeAt(X, Y) = nil then
182 Exit;
183 if Source <> FolderTreeView then
184 Exit;
185 if FolderTreeView.Selected = FolderTreeView.GetNodeAt(X, Y) then
186 Exit;
187
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);
194 end;
195
196 procedure TFavoriteArrangeDialog.FormDestroy(Sender: TObject);
197 var
198 i: Integer;
199 begin
200 FavoriteDM.TreeView.Items := FolderTreeView.Items;
201
202 for i := FDeleteList.Count - 1 downto 0 do
203 TObject(FDeleteList[i]).Free;
204 FDeleteList.Free;
205 FavoriteDM.WriteFavorite;
206 end;
207
208 procedure TFavoriteArrangeDialog.SetDeleteItemList(Node: TTreeNode);
209 var
210 i: Integer;
211 begin
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]);
216 end;
217 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 Result := 0;
253 if (folder1 <> nil) and (folder2 <> nil) then begin
254 Result := CompareStr(Node1.Text, Node2.Text);
255 end else
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);
259 end else
260 if ((Data and SORT_URL) > 0) then begin
261 Result := CompareStr(item1.URL, item2.URL);
262 end else
263 if ((Data and SORT_TITLE) > 0) then begin
264 Result := CompareStr(item1.Title, item2.Title);
265 end;
266 end;
267 if ((Data and SORT_DSC) > 0) then begin
268 Result := -1 * Result;
269 end;
270 end;
271 end;
272
273 {
274 \brief 鐃緒申鐃?鐃緒申鐃?鐃緒申鐃?鐃?鐃?
275 }
276 procedure TFavoriteArrangeDialog.SortDscNameClick(Sender: TObject);
277 begin
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);
282 end;
283 end;
284
285 {
286 \brief 鐃緒申鐃?鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?
287 }
288 procedure TFavoriteArrangeDialog.SortAscNameClick(Sender: TObject);
289 begin
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);
294 end;
295 end;
296 {
297 \brief URL鐃緒申鐃?鐃緒申鐃?鐃?鐃?
298 }
299 procedure TFavoriteArrangeDialog.SortDscURLClick(Sender: TObject);
300 begin
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);
305 end;
306 end;
307 {
308 \brief URL鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?
309 }
310 procedure TFavoriteArrangeDialog.SortAscURLClick(Sender: TObject);
311 begin
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);
316 end;
317 end;
318 {
319 \brief 鐃?鐃?鐃?鐃緒申鐃緒申鐃?鐃緒申鐃?鐃?鐃?
320 }
321 procedure TFavoriteArrangeDialog.SortDscTitleClick(Sender: TObject);
322 begin
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);
327 end;
328 end;
329 {
330 \brief 鐃?鐃?鐃?鐃緒申鐃緒申鐃緒申鐃緒申鐃?鐃?鐃?
331 }
332 procedure TFavoriteArrangeDialog.SortAscTitleClick(Sender: TObject);
333 begin
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);
338 end;
339 end;
340
341 end.
342

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