OSDN Git Service

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