OSDN Git Service

・スレタイの特定ワードを非表示にする機能に「©bbspink.com」も追加
[gikonavigoeson/gikonavi.git] / SambaTimer.pas
1 unit SambaTimer;
2
3 interface
4
5 uses
6         Windows, SysUtils, Classes, ExtCtrls,
7     BoardGroup, GikoSystem;
8
9 type
10     {
11     \brief  Samba24\91Î\8dô\83^\83C\83}\81[\83N\83\89\83X
12     }
13     TSambaTimer = class(TTimer)
14     private
15         FKey : string;
16         FWriteDeta : TDateTime;
17         FSambaInterval : Integer;
18         procedure ReadSambaTime;
19         procedure ReadSettingTime(Board: TBoard);
20     public
21         function SetBoard(Board : TBoard): integer;
22         function CheckSambaTime(ATime: TDateTime): Boolean;
23         procedure WriteSambaTime(ATime: TDateTime);
24         procedure UpdateSambaSetting(Interval : Integer);
25         function Update : TDateTime;
26         property WriteDeta : TDateTime read FWriteDeta;
27         property SambaInterval : Integer read FSambaInterval;
28     end;
29
30 implementation
31
32 uses
33     IniFiles, DateUtils;
34 {
35 \brief  \83T\83\93\83o\83^\83C\83}\81[\94Â\8fî\95ñ\90Ý\92è
36 \param  Board   \83\8c\83X\83G\83f\83B\83^\82Ì\94Â
37 \return Samba\82Ì\90Ý\92è\92l
38 }
39 function TSambaTimer.SetBoard(Board : TBoard): Integer;
40 begin
41     Result := -1;
42     Enabled := False;
43     if (GikoSys.Setting.UseSamba) and (Board <> nil) then begin
44         // \94Â\82ª2ch\82É\91®\82µ\82Ä\82¢\82é\8fê\8d\87\81C\83^\83C\83}\81[\82ð\97L\8cø\82É\82·\82é
45         if (Board.Is2ch) then begin
46             ReadSettingTime(Board);
47             ReadSambaTime;
48             Interval := 500;
49             Result := FSambaInterval;
50         end;
51     end;
52 end;
53 {
54 \brief Samba\82Ì\8bK\92è\92l\82ð\93Ç\82Ý\8d\9e\82Þ
55 }
56 procedure TSambaTimer.ReadSettingTime(Board: TBoard);
57 var
58         ini :TMemIniFile;
59         Protocol, Host, Path, Document, Port, Bookmark : string;
60 begin
61         Enabled := false; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOff\82É\82·\82é
62         ini := TMemIniFile.Create(GikoSys.GetSambaFileName);
63         try
64         if (Board <> nil) then begin
65             // \82Ü\82¸BBSID\82Å\8cÂ\95Ê\82É\90Ý\92è\82³\82ê\82Ä\82¢\82È\82¢\82©\8am\94F\82·\82é
66             FKey := '@' + Board.BBSID;
67             FSambaInterval := ini.ReadInteger('Setting', FKey, -1);
68             if (FSambaInterval = -1) then begin
69                 // \90Ý\92è\82³\82ê\82Ä\82¢\82È\82¢\82Ì\82Å\83z\83X\83g\96¼\82Ì\90Ý\92è\82ð\8eæ\82Á\82Ä\82­\82é
70                 GikoSys.ParseURI( Board.URL, Protocol, Host, Path, Document, Port, Bookmark );
71                 FKey := Copy(Host, 1, AnsiPos('.', Host) - 1);
72                 FSambaInterval := ini.ReadInteger('Setting', FKey, -1);
73                         //\90Ý\92è\82³\82ê\82Ä\82¢\82È\82¢\82Æ\82«\82Í\81A\83t\83@\83C\83\8b\82É\8f\91\82«\82½\82·\81B
74                         if FSambaInterval = -1 then begin
75                     FSambaInterval := 0;
76                             ini.WriteInteger('Setting', FKey, 0);
77                             ini.UpdateFile;
78                         end;
79             end;
80         end else begin
81             FSambaInterval := ini.ReadInteger('Setting', FKey, -1);
82         end;
83         finally
84                 ini.Free;
85         end;
86         Enabled := true; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOn\82É\82·\82é
87 end;
88
89 {
90 \brief Samba.ini\82Ì\8f\91\82«\8d\9e\82Ý\8e\9e\8aÔ\82ð\93Ç\82Ý\8d\9e\82Þ
91 }
92 procedure TSambaTimer.ReadSambaTime;
93 var
94         ini :TMemIniFile;
95 begin
96         Enabled := false; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOff\82É\82·\82é
97         ini := TMemIniFile.Create(GikoSys.GetSambaFileName);
98         try
99                  //\95\8e\9a\97ñ\82Å\93Ç\82Ý\8eæ\82Á\82Ä\81A\95Ï\8a·\8aÖ\90\94\82ÅTDateTime\82Ö
100                  FWriteDeta := ConvertDateTimeString(
101                 ini.ReadString('Send', FKey, ''));
102         finally
103                 ini.Free;
104         end;
105         Enabled := true; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOn\82É\82·\82é
106 end;
107 {
108 \brief  Samba.ini\82É\8dÅ\8fI\8f\91\82«\8d\9e\82Ý\8e\9e\8aÔ\82ð\8f\91\82«\8d\9e\82Þ
109 }
110 procedure TSambaTimer.WriteSambaTime(ATime: TDateTime);
111 var
112         ini :TMemIniFile;
113 begin
114         ini := TMemIniFile.Create(GikoSys.GetSambaFileName);
115         try
116                 ini.WriteDateTime('Send', FKey, ATime);
117                 ini.UpdateFile;
118         finally
119                 ini.Free;
120         end;
121 end;
122
123 {
124 \brief  \8dÅ\8fI\8f\91\82«\8d\9e\82Ý\8e\9e\8aÔ\82Æ\8c»\8dÝ\8e\9e\82ð\94ä\8ar\82·\82é
125 \return \90^\81F\8bK\92è\92l\88È\8fã\81@\8bU\81F\8bK\92è\92l\96¢\96\9e
126 }
127 function TSambaTimer.CheckSambaTime(ATime: TDateTime): Boolean;
128 var
129         pastsec: double;
130 begin
131         pastsec := SecondSpan(ATime, FWriteDeta);
132         Result := (pastsec > FSambaInterval);
133 end;
134 {
135 \breif  \83^\83C\83}\81[\8fî\95ñ\8dX\90V
136 }
137 function TSambaTimer.Update : TDateTime;
138 begin
139     ReadSettingTime( nil );
140     ReadSambaTime;
141     Result := Now();
142 end;
143 {
144 \biref  Samba\90Ý\92è\92l\8dX\90V
145 \param  Interval    \90Ý\92è\92l
146 }
147 procedure TSambaTimer.UpdateSambaSetting(Interval : Integer);
148 var
149         ini :TMemIniFile;
150 begin
151         Enabled := false; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOff\82É\82·\82é
152         ini := TMemIniFile.Create(GikoSys.GetSambaFileName);
153         try
154         FSambaInterval := Interval;
155         ini.WriteInteger('Setting', FKey, FSambaInterval);
156         ini.UpdateFile;
157         finally
158                 ini.Free;
159         end;
160         Enabled := true; //\8co\89ß\95b\90\94\95\\8e¦Timer\82ðOn\82É\82·\82é
161 end;
162
163 end.