OSDN Git Service

This commit was manufactured by cvs2svn to create branch 'Bb62'.
[gikonavigoeson/gikonavi.git] / Kotehan.pas
1 unit Kotehan;
2
3 interface
4
5 uses
6         Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
7         Dialogs, StdCtrls, ComCtrls, ExtCtrls,
8         GikoSystem, BoardGroup;
9
10 type
11         TGikoKotehanView = (gkvAll, gkvEntry, gkvBlank);
12
13         TKotehanDialog = class(TForm)
14                 Panel1: TPanel;
15                 Panel2: TPanel;
16     OKButton: TButton;
17     CancelButton: TButton;
18                 Panel3: TPanel;
19                 KotehanListView: TListView;
20                 Panel4: TPanel;
21                 ViewComboBox: TComboBox;
22                 Label1: TLabel;
23                 Label2: TLabel;
24     HandleEdit: TEdit;
25     HandleLabel: TLabel;
26     MailLabel: TLabel;
27     MailEdit: TEdit;
28     ApplyButton: TButton;
29     StatusBar1: TStatusBar;
30                 procedure FormCreate(Sender: TObject);
31     procedure ViewComboBoxChange(Sender: TObject);
32     procedure FormDestroy(Sender: TObject);
33     procedure KotehanListViewChange(Sender: TObject; Item: TListItem;
34       Change: TItemChange);
35     procedure ApplyButtonClick(Sender: TObject);
36     procedure OKButtonClick(Sender: TObject);
37         private
38                 { Private \90é\8c¾ }
39                 FList: TList;
40                 procedure SetKotehanList(View: TGikoKotehanView);
41         public
42                 { Public \90é\8c¾ }
43         end;
44
45         TKotehanData = class
46         private
47                 FBoard: TBoard;
48                 FKotehanName: string;
49                 FKotehanMail: string;
50         end;
51
52 var
53         KotehanDialog: TKotehanDialog;
54
55 implementation
56
57 {$R *.dfm}
58
59 procedure TKotehanDialog.FormCreate(Sender: TObject);
60 var
61         i, j, k: Integer;
62         Category: TCategory;
63         Board: TBoard;
64         KoteData: TKotehanData;
65 begin
66         FList := TList.Create;
67
68   for k := 0 to Length( BBSs ) - 1 do begin
69     for i := 0 to BBSs[ k ].Count - 1 do begin
70       Category := BBSs[ k ].Items[i];
71       for j := 0 to Category.Count - 1 do begin
72         Board := Category.Items[j];
73         KoteData := TKotehanData.Create;
74         KoteData.FBoard := Board;
75         KoteData.FKotehanName := Board.KotehanName;
76         KoteData.FKotehanMail := Board.KotehanMail;
77         FList.Add(KoteData);
78       end;
79     end;
80         end;
81         ViewComboBox.Items.Add('\82·\82×\82Ä\95\\8e¦');
82         ViewComboBox.Items.Add('\90Ý\92è\8dÏ\82Ì\82Ý\95\\8e¦');
83         ViewComboBox.Items.Add('\96¢\90Ý\92è\82Ì\82Ý\95\\8e¦');
84         ViewComboBox.ItemIndex := 0;
85         SetKotehanList(gkvAll);
86 end;
87
88 procedure TKotehanDialog.ViewComboBoxChange(Sender: TObject);
89 var
90         View: TGikoKotehanView;
91 begin
92         View := gkvAll;
93         if ViewComboBox.ItemIndex = 1 then
94                 View := gkvEntry
95         else if ViewComboBox.ItemIndex = 2 then
96                 View := gkvBlank;
97         SetKotehanList(View);
98 end;
99
100 procedure TKotehanDialog.SetKotehanList(View: TGikoKotehanView);
101 var
102         i: Integer;
103         Item: TListItem;
104         KoteData: TKotehanData;
105 begin
106         KotehanListView.Items.BeginUpdate;
107         try
108                 KotehanListView.Items.Clear;
109                 for i := 0 to FList.Count - 1 do begin
110                         if TObject(FList[i]) is TKotehanData then begin
111                                 KoteData := TKotehanData(FList[i]);
112                                 case View of
113                                         gkvEntry:
114                                                 if (KoteData.FKotehanName = '') and (KoteData.FKotehanMail = '') then
115                                                         Continue;
116                                         gkvBlank:
117                                                 if (KoteData.FKotehanName <> '') or (KoteData.FKotehanMail <> '') then
118                                                         Continue;
119                                 end;
120                                 Item := KotehanListView.Items.Add;
121                                 Item.Caption := KoteData.FBoard.Title;
122                                 Item.SubItems.Add(KoteData.FKotehanName);
123                                 Item.SubItems.Add(KoteData.FKotehanMail);
124                                 Item.Data := KoteData;
125                         end;
126                 end;
127         finally
128                 KotehanListView.Items.EndUpdate;
129         end;
130 end;
131
132 procedure TKotehanDialog.FormDestroy(Sender: TObject);
133 var
134         i: Integer;
135 begin
136         for i := 0 to FList.Count - 1 do
137                 TObject(FList[i]).Free;
138         FList.Free;
139 end;
140
141 procedure TKotehanDialog.KotehanListViewChange(Sender: TObject;
142         Item: TListItem; Change: TItemChange);
143 begin
144         HandleLabel.Enabled := KotehanListView.SelCount <> 0;
145         HandleEdit.Enabled := KotehanListView.SelCount <> 0;
146         MailEdit.Enabled := KotehanListView.SelCount <> 0;
147         MailLabel.Enabled := KotehanListView.SelCount <> 0;
148         ApplyButton.Enabled := KotehanListView.SelCount <> 0;
149         if KotehanListView.SelCount = 1 then begin
150                 HandleEdit.Text := Item.SubItems[0];
151                 MailEdit.Text := Item.SubItems[1];
152         end else begin
153                 HandleEdit.Text := '';
154                 MailEdit.Text := '';
155         end;
156 end;
157
158 procedure TKotehanDialog.ApplyButtonClick(Sender: TObject);
159 var
160         Item: TListItem;
161         KoteData: TKotehanData;
162 begin
163         if KotehanListView.SelCount = 0 then
164                 Exit;
165
166         Item := KotehanListView.Selected;
167         while Item <> nil do begin
168                 if TObject(Item.Data) is TKotehanData then begin
169                         KoteData := TKotehanData(Item.Data);
170                         KoteData.FKotehanName := HandleEdit.Text;
171                         KoteData.FKotehanMail := MailEdit.Text;
172                         Item.SubItems[0] := HandleEdit.Text;
173                         Item.SubItems[1] := MailEdit.Text;
174                 end;
175                 Item := KotehanListView.GetNextItem(Item, sdAll, [isSelected]);
176         end;
177
178 end;
179
180 procedure TKotehanDialog.OKButtonClick(Sender: TObject);
181 var
182         i: Integer;
183         KoteData: TKotehanData;
184 begin
185         for i := 0 to FList.Count - 1 do begin
186                 if TObject(FList[i]) is TKotehanData then begin
187                         KoteData := TKotehanData(FList[i]);
188                         KoteData.FBoard.KotehanName := KoteData.FKotehanName;
189                         KoteData.FBoard.KotehanMail := KoteData.FKotehanMail;
190                 end;
191         end;
192 end;
193
194 end.