comparison src/ccnframe.cpp @ 22:05f76f9f9186

index buttons move to main-frame.
author pyon@macmini
date Wed, 27 Jul 2011 19:01:09 +0900
parents eb3f5c7c990f
children
comparison
equal deleted inserted replaced
21:eb3f5c7c990f 22:05f76f9f9186
1 // Filename : ccnframe.cpp 1 // Filename : ccnframe.cpp
2 // Last Change: 23-Jul-2011. 2 // Last Change: 27-Jul-2011.
3 // 3 //
4 4
5 #include "common.h" 5 #include "common.h"
6 #include "main.h" 6 #include "main.h"
7 #include "ccnframe.h" 7 #include "ccnframe.h"
15 15
16 wxBoxSizer* bSizer; 16 wxBoxSizer* bSizer;
17 bSizer = new wxBoxSizer( wxHORIZONTAL ); 17 bSizer = new wxBoxSizer( wxHORIZONTAL );
18 18
19 // DB表示 19 // DB表示
20 wxFlexGridSizer* fgSizer = new wxFlexGridSizer( 2, 5, 0, 0 ); 20 wxFlexGridSizer* fgSizer = new wxFlexGridSizer( 2, 6, 0, 0 );
21 fgSizer->AddGrowableRow(1); 21 fgSizer->AddGrowableRow(1);
22 22
23 m_staticText1 = new wxStaticText( m_Panel, wxID_ANY, wxT("開催年月日"), wxDefaultPosition, wxDefaultSize, 0 ); 23 m_staticText1 = new wxStaticText( m_Panel, wxID_ANY, wxT("開催年月日"), wxDefaultPosition, wxDefaultSize, 0 );
24 fgSizer->Add( m_staticText1, 0, wxALL, 5 ); 24 fgSizer->Add( m_staticText1, 0, wxALL, 5 );
25
26 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); 25 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 );
27 26
28 m_staticText2 = new wxStaticText( m_Panel, wxID_ANY, wxT("合議体"), wxDefaultPosition, wxDefaultSize, 0 ); 27 m_staticText2 = new wxStaticText( m_Panel, wxID_ANY, wxT("合議体"), wxDefaultPosition, wxDefaultSize, 0 );
29 fgSizer->Add( m_staticText2, 0, wxALL, 5 ); 28 fgSizer->Add( m_staticText2, 0, wxALL, 5 );
30
31 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 ); 29 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 );
32 30
33 m_staticText3 = new wxStaticText( m_Panel, wxID_ANY, wxT("被保険者"), wxDefaultPosition, wxDefaultSize, 0 ); 31 m_staticText3 = new wxStaticText( m_Panel, wxID_ANY, wxT("被保険者"), wxDefaultPosition, wxDefaultSize, 0 );
34 fgSizer->Add( m_staticText3, 0, wxALL, 5 ); 32 fgSizer->Add( m_staticText3, 0, wxALL, 5 );
35 33 fgSizer->Add( 0, 0, 1, wxEXPAND, 5 );
36 m_listCtrlYmd = new wxListCtrl( m_Panel, ID_YMD, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); 34
35 m_listCtrlYmd = new wxListCtrl( m_Panel, ID_YMD, wxDefaultPosition, wxSize( 300, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL );
37 fgSizer->Add( m_listCtrlYmd, 1, wxALL|wxEXPAND, 5 ); 36 fgSizer->Add( m_listCtrlYmd, 1, wxALL|wxEXPAND, 5 );
38 37
39 m_staticText4 = new wxStaticText( m_Panel, wxID_ANY, wxT("→"), wxDefaultPosition, wxDefaultSize, 0 ); 38 m_staticText4 = new wxStaticText( m_Panel, wxID_ANY, wxT("→"), wxDefaultPosition, wxDefaultSize, 0 );
40 fgSizer->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 39 fgSizer->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
41 40
46 fgSizer->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 ); 45 fgSizer->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
47 46
48 m_listCtrlHhs = new wxListCtrl( m_Panel, ID_HHS, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL ); 47 m_listCtrlHhs = new wxListCtrl( m_Panel, ID_HHS, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL );
49 fgSizer->Add( m_listCtrlHhs, 1, wxALL|wxEXPAND, 5 ); 48 fgSizer->Add( m_listCtrlHhs, 1, wxALL|wxEXPAND, 5 );
50 49
50 m_btnClose = new wxButton( m_Panel, ID_CLOSE, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 );
51 fgSizer->Add( m_btnClose, 0, wxALIGN_BOTTOM|wxALIGN_RIGHT|wxALL, 5 );
52 m_btnClose->SetFocus();
53
51 bSizer->Add( fgSizer, 1, wxEXPAND|wxALL, 5 ); 54 bSizer->Add( fgSizer, 1, wxEXPAND|wxALL, 5 );
52
53 // Index作成
54 wxGridBagSizer* gbSizer = new wxGridBagSizer( 0, 0 );
55 gbSizer->SetFlexibleDirection( wxVERTICAL );
56 gbSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
57 gbSizer->AddGrowableRow(3);
58
59 m_btnPrevThu = new wxButton( m_Panel, ID_PRVTHU, wxT("<< 前木"), wxDefaultPosition, wxDefaultSize, 0 );
60 gbSizer->Add( m_btnPrevThu, wxGBPosition( 0, 0 ), wxGBSpan( 1, 1 ), wxALL, 5 );
61
62 m_btnNextThu = new wxButton( m_Panel, ID_NXTTHU, wxT("次木 >>"), wxDefaultPosition, wxDefaultSize, 0 );
63 gbSizer->Add( m_btnNextThu, wxGBPosition( 0, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
64
65 m_datePicker = new wxDatePickerCtrl( m_Panel, ID_DTPICKER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxDP_DROPDOWN|wxDP_SHOWCENTURY );
66 gbSizer->Add( m_datePicker, wxGBPosition( 1, 0 ), wxGBSpan( 1, 2 ), wxALIGN_CENTER|wxALL, 5 );
67
68 m_btnMkIdX = new wxButton( m_Panel, ID_MKIDX, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 );
69 gbSizer->Add( m_btnMkIdX, wxGBPosition( 2, 1 ), wxGBSpan( 1, 1 ), wxALL, 5 );
70
71 m_btnClose = new wxButton( m_Panel, ID_CLOSE, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 );
72 gbSizer->Add( m_btnClose, wxGBPosition( 3, 1 ), wxGBSpan( 1, 1 ), wxALIGN_BOTTOM|wxALL, 5 );
73
74 bSizer->Add( gbSizer, 0, wxEXPAND|wxALL, 5 );
75 55
76 m_Panel->SetSizer( bSizer ); 56 m_Panel->SetSizer( bSizer );
77 m_Panel->Layout(); 57 m_Panel->Layout();
78 58
79 this->SetSize( 1000, 400 ); 59 this->SetSize( 1000, 500 );
80 this->Centre( wxBOTH ); 60 this->Centre( wxBOTH );
81 InitListCtrl(); 61 InitListCtrl();
82 } 62 }
83 63
84 // Destructor 64 // Destructor
88 68
89 // Event Table 69 // Event Table
90 BEGIN_EVENT_TABLE( FrameCcn, wxFrame ) 70 BEGIN_EVENT_TABLE( FrameCcn, wxFrame )
91 EVT_LIST_ITEM_SELECTED( ID_YMD, FrameCcn::OnSelectYmd ) 71 EVT_LIST_ITEM_SELECTED( ID_YMD, FrameCcn::OnSelectYmd )
92 EVT_LIST_ITEM_SELECTED( ID_CCN, FrameCcn::OnSelectCcn ) 72 EVT_LIST_ITEM_SELECTED( ID_CCN, FrameCcn::OnSelectCcn )
93 EVT_BUTTON( ID_PRVTHU, FrameCcn::OnPrevThu )
94 EVT_BUTTON( ID_NXTTHU, FrameCcn::OnNextThu )
95 EVT_BUTTON( ID_MKIDX, FrameCcn::OnMkIndex )
96 EVT_BUTTON( ID_CLOSE, FrameCcn::OnClose ) 73 EVT_BUTTON( ID_CLOSE, FrameCcn::OnClose )
97 END_EVENT_TABLE() 74 END_EVENT_TABLE()
98 75
99 // Event Handlers 76 // Event Handlers
100 void FrameCcn::OnSelectYmd(wxListEvent& WXUNUSED(event)) 77 void FrameCcn::OnSelectYmd(wxListEvent& event)
101 { 78 {
102 m_listCtrlCcn->DeleteAllItems(); 79 long i = event.GetIndex();
80 wxString ymd = m_listCtrlYmd->GetItemText( i );
81 ymd.Replace( wxT("-"), wxEmptyString, true );
103 82
104 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); 83 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db");
105 wxSQLite3Database ccndb; 84 wxSQLite3Database ccndb;
106 ccndb.Open( gszFile ); 85 ccndb.Open( gszFile );
107 86
108 wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT path FROM path WHERE hhsno = ?"); 87 wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT hhsno, path FROM path WHERE path LIKE ?");
109 stmt.Bind( 1, wxT("0300012345") ); 88 stmt.Bind( 1, wxT("08") );
110 wxSQLite3ResultSet q = stmt.ExecuteQuery(); 89 wxSQLite3ResultSet q = stmt.ExecuteQuery();
111 if ( q.IsNull(0) ) { 90 if ( q.IsNull(0) ) {
112 return; 91 return;
113 } 92 }
93
114 long r=0; 94 long r=0;
115 while ( q.NextRow() ) { 95 while ( q.NextRow() ) {
116 wxString ccn = q.GetString(0); 96 wxMessageBox(wxT("aaa"));
97 wxString hhsno = q.GetString(0);
117 //wxString cnt = q.GetString(1); 98 //wxString cnt = q.GetString(1);
118 m_listCtrlCcn->InsertItem( r, ccn ); 99 m_listCtrlHhs->InsertItem( r, hhsno );
119 //m_listCtrlCcn->SetItem( r, 1, cnt, -1 ); 100 //m_listCtrlCcn->SetItem( r, 1, cnt, -1 );
120 r++; 101 r++;
121 } 102 }
122 stmt.Finalize(); 103 stmt.Finalize();
123 ccndb.Close(); 104 ccndb.Close();
144 125
145 stmt.Finalize(); 126 stmt.Finalize();
146 ccndb.Close(); 127 ccndb.Close();
147 } 128 }
148 129
149 // 前木
150 void FrameCcn::OnPrevThu(wxCommandEvent& WXUNUSED(event))
151 {
152 wxDateTime dt = m_datePicker->GetValue();
153 wxDateSpan ds( 0, 0, 0, 1 );
154 dt -= ds;
155 dt.SetToPrevWeekDay( wxDateTime::Thu );
156 m_datePicker->SetValue( dt );
157
158 }
159 // 次木
160 void FrameCcn::OnNextThu(wxCommandEvent& WXUNUSED(event))
161 {
162 wxDateTime dt = m_datePicker->GetValue();
163 wxDateSpan ds( 0, 0, 0, 1 );
164 dt += ds;
165 dt.SetToNextWeekDay( wxDateTime::Thu );
166 m_datePicker->SetValue( dt );
167 }
168
169 /* インデックス作成 */
170 void FrameCcn::OnMkIndex(wxCommandEvent& WXUNUSED(event))
171 {
172 wxDateTime dt = m_datePicker->GetValue();
173 wxString month = dt.Format(wxT("%m"));
174 wxString year = dt.Format(wxT("%Y"));
175 if ( month.IsSameAs(wxT("01")) || month.IsSameAs(wxT("02")) || month.IsSameAs(wxT("03")) ) {
176 long y;
177 year.ToLong( &y, 10 );
178 y--;
179 year = wxString::Format(wxT("%d"),y);
180 }
181 wxString pathroot = wxGetApp().rootdir + wxFILE_SEP_PATH + year + dt.Format(wxT("\\%Y%m%d"));
182 wxDir rootd(pathroot);
183 if ( !wxDir::Exists(pathroot) ) {
184 wxMessageBox( wxT("フォルダが存在しません.")+pathroot );
185 return;
186 }
187
188 wxProgressDialog pd( wxT("進行状況"), wxT("処理開始..."), 200, this, wxPD_APP_MODAL|wxPD_REMAINING_TIME|wxPD_AUTO_HIDE );
189 pd.SetSize( wxSize(320,140) );
190 int count=0;
191
192 wxString ccndir;
193 bool cont = rootd.GetFirst( &ccndir, wxT("*.*"), wxDIR_DIRS );
194 while ( cont ) {
195 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db");
196 wxSQLite3Database ccndb;
197 ccndb.Open( gszFile );
198
199 wxSQLite3Statement stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO ccn VALUES( ?, datetime('now','localtime') )");
200 stmt.Bind( 1, dt.Format(wxT("%Y-%m-%d")) );
201 stmt.ExecuteQuery();
202
203 stmt.Finalize();
204
205 wxDir ccnd( pathroot + wxFILE_SEP_PATH + ccndir );
206 if ( !ccnd.IsOpened() ) return;
207 wxString hhsdir;
208 bool c = ccnd.GetFirst( &hhsdir, wxT("*.*"), wxDIR_DIRS );
209 wxRegEx reHhs(wxT("^0[1238][0-9]{8}$")); // 被保番チェック
210 while ( c ) {
211 if ( reHhs.Matches(hhsdir) ) {
212 wxString path = pathroot + wxFILE_SEP_PATH + ccndir + wxFILE_SEP_PATH + hhsdir;
213
214 stmt = ccndb.PrepareStatement("INSERT OR REPLACE INTO path VALUES( ?, ? )");
215 stmt.Bind( 1, hhsdir );
216 stmt.Bind( 2, path );
217 stmt.ExecuteQuery();
218
219 stmt.Finalize();
220 }
221 c = ccnd.GetNext(&hhsdir);
222 pd.Update( count++, hhsdir+wxT("@")+ccndir+wxT("を処理しました.") );
223 }
224 ccndb.Close();
225
226 cont = rootd.GetNext(&ccndir);
227 }
228 wxMessageBox(wxT("インデックス作成が終了しました."));
229 }
230
231 // 閉じる 130 // 閉じる
232 void FrameCcn::OnClose(wxCommandEvent& WXUNUSED(event)) 131 void FrameCcn::OnClose(wxCommandEvent& WXUNUSED(event))
233 { 132 {
234 this->Close(); 133 this->Close();
235 } 134 }
241 itemCol.SetText( wxT("年-月-日") ); 140 itemCol.SetText( wxT("年-月-日") );
242 m_listCtrlYmd->InsertColumn( 0, itemCol ); 141 m_listCtrlYmd->InsertColumn( 0, itemCol );
243 m_listCtrlYmd->SetColumnWidth( 0, 100 ); 142 m_listCtrlYmd->SetColumnWidth( 0, 100 );
244 itemCol.SetText( wxT("更新時刻") ); 143 itemCol.SetText( wxT("更新時刻") );
245 m_listCtrlYmd->InsertColumn( 1, itemCol ); 144 m_listCtrlYmd->InsertColumn( 1, itemCol );
246 m_listCtrlYmd->SetColumnWidth( 1, 200 ); 145 m_listCtrlYmd->SetColumnWidth( 1, 180 );
247 146
248 itemCol.SetText( wxT("合議体名") ); 147 itemCol.SetText( wxT("合議体名") );
249 m_listCtrlCcn->InsertColumn( 0, itemCol ); 148 m_listCtrlCcn->InsertColumn( 0, itemCol );
250 m_listCtrlCcn->SetColumnWidth( 0, 100 ); 149 m_listCtrlCcn->SetColumnWidth( 0, 100 );
251 itemCol.SetText( wxT("件数") ); 150 itemCol.SetText( wxT("件数") );
257 m_listCtrlHhs->SetColumnWidth( 0, 100 ); 156 m_listCtrlHhs->SetColumnWidth( 0, 100 );
258 itemCol.SetText( wxT("氏名") ); 157 itemCol.SetText( wxT("氏名") );
259 m_listCtrlHhs->InsertColumn( 1, itemCol ); 158 m_listCtrlHhs->InsertColumn( 1, itemCol );
260 m_listCtrlHhs->SetColumnWidth( 1, 100 ); 159 m_listCtrlHhs->SetColumnWidth( 1, 100 );
261 160
262 // read from db 161 // Ymd: read from db
263 m_listCtrlCcn->DeleteAllItems(); 162 m_listCtrlCcn->DeleteAllItems();
264 163
265 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db"); 164 wxString gszFile = wxGetCwd() + wxT("/db/ccn.db");
266 wxSQLite3Database ccndb; 165 wxSQLite3Database ccndb;
267 ccndb.Open( gszFile ); 166 ccndb.Open( gszFile );
272 while ( q.NextRow() ) { 171 while ( q.NextRow() ) {
273 wxString ymd = q.GetString(0); 172 wxString ymd = q.GetString(0);
274 wxString time = q.GetString(1); 173 wxString time = q.GetString(1);
275 m_listCtrlYmd->InsertItem( r, ymd ); 174 m_listCtrlYmd->InsertItem( r, ymd );
276 m_listCtrlYmd->SetItem( r, 1, time, -1 ); 175 m_listCtrlYmd->SetItem( r, 1, time, -1 );
176 if ( r % 2 )
177 m_listCtrlYmd->SetItemBackgroundColour( r, wxColour(wxT("WHEAT")) );
277 r++; 178 r++;
278 } 179 }
279 180
280 stmt.Finalize(); 181 stmt.Finalize();
281 ccndb.Close(); 182 ccndb.Close();
282 } 183
283 184 // Ccn
185 m_listCtrlCcn->InsertItem( 0, wxT("六郷1") );
186 m_listCtrlCcn->InsertItem( 1, wxT("六郷2") );
187 m_listCtrlCcn->InsertItem( 2, wxT("六郷3") );
188 m_listCtrlCcn->InsertItem( 3, wxT("千畑1") );
189 m_listCtrlCcn->InsertItem( 4, wxT("千畑2") );
190 m_listCtrlCcn->InsertItem( 5, wxT("千畑3") );
191 m_listCtrlCcn->InsertItem( 6, wxT("大曲1") );
192 m_listCtrlCcn->InsertItem( 7, wxT("大曲2") );
193 m_listCtrlCcn->InsertItem( 8, wxT("大曲3") );
194 m_listCtrlCcn->InsertItem( 9, wxT("大曲4") );
195 m_listCtrlCcn->InsertItem( 10, wxT("大曲5") );
196 m_listCtrlCcn->InsertItem( 11, wxT("大曲6") );
197 m_listCtrlCcn->InsertItem( 12, wxT("西仙1") );
198 m_listCtrlCcn->InsertItem( 13, wxT("西仙2") );
199 m_listCtrlCcn->InsertItem( 14, wxT("西仙3") );
200 m_listCtrlCcn->InsertItem( 15, wxT("角館1") );
201 m_listCtrlCcn->InsertItem( 16, wxT("角館2") );
202 m_listCtrlCcn->InsertItem( 17, wxT("角館3") );
203 m_listCtrlCcn->InsertItem( 18, wxT("角館4") );
204 m_listCtrlCcn->InsertItem( 19, wxT("合計") );
205 }
206