OSDN Git Service

・スレタイの特定ワードを非表示にする機能に「©bbspink.com」も追加
[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     CenterForm: TCustomForm;
66 begin
67     CenterForm := TCustomForm(Owner);
68     if Assigned(CenterForm) then begin
69         Left := ((CenterForm.Width - Width) div 2) + CenterForm.Left;
70         Top := ((CenterForm.Height - Height) div 2) + CenterForm.Top;
71     end else begin
72         Left := (Screen.Width - Width) div 2;
73         Top := (Screen.Height - Height) div 2;
74     end;
75
76         FList := TList.Create;
77
78   for k := 0 to Length( BBSs ) - 1 do begin
79     for i := 0 to BBSs[ k ].Count - 1 do begin
80       Category := BBSs[ k ].Items[i];
81       for j := 0 to Category.Count - 1 do begin
82         Board := Category.Items[j];
83         KoteData := TKotehanData.Create;
84         KoteData.FBoard := Board;
85         KoteData.FKotehanName := Board.KotehanName;
86         KoteData.FKotehanMail := Board.KotehanMail;
87         FList.Add(KoteData);
88       end;
89     end;
90         end;
91         ViewComboBox.Items.Add('\82·\82×\82Ä\95\\8e¦');
92         ViewComboBox.Items.Add('\90Ý\92è\8dÏ\82Ì\82Ý\95\\8e¦');
93         ViewComboBox.Items.Add('\96¢\90Ý\92è\82Ì\82Ý\95\\8e¦');
94         ViewComboBox.ItemIndex := 0;
95         SetKotehanList(gkvAll);
96 end;
97
98 procedure TKotehanDialog.ViewComboBoxChange(Sender: TObject);
99 var
100         View: TGikoKotehanView;
101 begin
102         View := gkvAll;
103         if ViewComboBox.ItemIndex = 1 then
104                 View := gkvEntry
105         else if ViewComboBox.ItemIndex = 2 then
106                 View := gkvBlank;
107         SetKotehanList(View);
108 end;
109
110 procedure TKotehanDialog.SetKotehanList(View: TGikoKotehanView);
111 var
112         i: Integer;
113         Item: TListItem;
114         KoteData: TKotehanData;
115 begin
116         KotehanListView.Items.BeginUpdate;
117         try
118                 KotehanListView.Items.Clear;
119                 for i := 0 to FList.Count - 1 do begin
120                         if TObject(FList[i]) is TKotehanData then begin
121                                 KoteData := TKotehanData(FList[i]);
122                                 case View of
123                                         gkvEntry:
124                                                 if (KoteData.FKotehanName = '') and (KoteData.FKotehanMail = '') then
125                                                         Continue;
126                                         gkvBlank:
127                                                 if (KoteData.FKotehanName <> '') or (KoteData.FKotehanMail <> '') then
128                                                         Continue;
129                                 end;
130                                 Item := KotehanListView.Items.Add;
131                                 Item.Caption := KoteData.FBoard.Title;
132                                 Item.SubItems.Add(KoteData.FKotehanName);
133                                 Item.SubItems.Add(KoteData.FKotehanMail);
134                                 Item.Data := KoteData;
135                         end;
136                 end;
137         finally
138                 KotehanListView.Items.EndUpdate;
139         end;
140 end;
141
142 procedure TKotehanDialog.FormDestroy(Sender: TObject);
143 var
144         i: Integer;
145 begin
146         for i := 0 to FList.Count - 1 do
147                 TObject(FList[i]).Free;
148         FList.Free;
149 end;
150
151 procedure TKotehanDialog.KotehanListViewChange(Sender: TObject;
152         Item: TListItem; Change: TItemChange);
153 begin
154         HandleLabel.Enabled := KotehanListView.SelCount <> 0;
155         HandleEdit.Enabled := KotehanListView.SelCount <> 0;
156         MailEdit.Enabled := KotehanListView.SelCount <> 0;
157         MailLabel.Enabled := KotehanListView.SelCount <> 0;
158         ApplyButton.Enabled := KotehanListView.SelCount <> 0;
159         if KotehanListView.SelCount = 1 then begin
160                 HandleEdit.Text := Item.SubItems[0];
161                 MailEdit.Text := Item.SubItems[1];
162         end else begin
163                 HandleEdit.Text := '';
164                 MailEdit.Text := '';
165         end;
166 end;
167
168 procedure TKotehanDialog.ApplyButtonClick(Sender: TObject);
169 var
170         Item: TListItem;
171         KoteData: TKotehanData;
172 begin
173         if KotehanListView.SelCount = 0 then
174                 Exit;
175
176         Item := KotehanListView.Selected;
177         while Item <> nil do begin
178                 if TObject(Item.Data) is TKotehanData then begin
179                         KoteData := TKotehanData(Item.Data);
180                         KoteData.FKotehanName := HandleEdit.Text;
181                         KoteData.FKotehanMail := MailEdit.Text;
182                         Item.SubItems[0] := HandleEdit.Text;
183                         Item.SubItems[1] := MailEdit.Text;
184                 end;
185                 Item := KotehanListView.GetNextItem(Item, sdAll, [isSelected]);
186         end;
187
188 end;
189
190 procedure TKotehanDialog.OKButtonClick(Sender: TObject);
191 var
192         i: Integer;
193         KoteData: TKotehanData;
194 begin
195         for i := 0 to FList.Count - 1 do begin
196                 if TObject(FList[i]) is TKotehanData then begin
197                         KoteData := TKotehanData(FList[i]);
198                         KoteData.FBoard.KotehanName := KoteData.FKotehanName;
199                         KoteData.FBoard.KotehanMail := KoteData.FKotehanMail;
200                 end;
201         end;
202 end;
203
204 end.