comparison src/index.cpp @ 2:c066fde99517

Added Batch Print Mode.
author pyon@macmini
date Fri, 23 Aug 2013 18:32:09 +0900
parents 0c0701a935f8
children 7ac7d28699af
comparison
equal deleted inserted replaced
1:7b6dab24f4b8 2:c066fde99517
1 // Filename : index.cpp 1 // Filename : index.cpp
2 // Last Change: 21-Jul-2013. 2 // Last Change: 23-Aug-2013.
3 // 3 //
4 4
5 #include "index.h" 5 #include "index.h"
6 #include "db.h"
7 #include "wx/wxsqlite3.h"
6 8
7 IndexDialog::IndexDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) 9 IndexDialog::IndexDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style )
8 : wxDialog( parent, id, title, pos, size, style ) 10 : wxDialog( parent, id, title, pos, size, style )
9 { 11 {
10 this->SetSizeHints( wxDefaultSize, wxDefaultSize ); 12 this->SetSizeHints( wxDefaultSize, wxDefaultSize );
12 wxBoxSizer* bSizerTop = new wxBoxSizer( wxHORIZONTAL ); 14 wxBoxSizer* bSizerTop = new wxBoxSizer( wxHORIZONTAL );
13 15
14 m_listCtrl = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT ); 16 m_listCtrl = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT );
15 17
16 wxListItem itemCol; 18 wxListItem itemCol;
17 itemCol.SetText( wxT("歴番") ); 19 itemCol.SetText( wxT("通番") );
18 m_listCtrl->InsertColumn( 0, itemCol ); 20 m_listCtrl->InsertColumn( 0, itemCol );
19 m_listCtrl->SetColumnWidth( 0, 50 ); 21 m_listCtrl->SetColumnWidth( 0, 50 );
20 itemCol.SetText( wxT("年月日") ); 22 itemCol.SetText( wxT("年月日") );
21 m_listCtrl->InsertColumn( 1, itemCol ); 23 m_listCtrl->InsertColumn( 1, itemCol );
22 m_listCtrl->SetColumnWidth( 1, 80 ); 24 m_listCtrl->SetColumnWidth( 1, 80 );
23 itemCol.SetText( wxT("合議体") ); 25 itemCol.SetText( wxT("合議体") );
24 m_listCtrl->InsertColumn( 2, itemCol ); 26 m_listCtrl->InsertColumn( 2, itemCol );
25 m_listCtrl->SetColumnWidth( 2, 80 ); 27 m_listCtrl->SetColumnWidth( 2, 60 );
26 itemCol.SetText( wxT("被保険者番号") ); 28 itemCol.SetText( wxT("被保険者番号") );
27 m_listCtrl->InsertColumn( 3, itemCol ); 29 m_listCtrl->InsertColumn( 3, itemCol );
28 m_listCtrl->SetColumnWidth( 3, 100 ); 30 m_listCtrl->SetColumnWidth( 3, 100 );
29 itemCol.SetText( wxT("氏名") ); 31 itemCol.SetText( wxT("氏名") );
30 m_listCtrl->InsertColumn( 4, itemCol ); 32 m_listCtrl->InsertColumn( 4, itemCol );
31 m_listCtrl->SetColumnWidth( 4, 100 ); 33 m_listCtrl->SetColumnWidth( 4, 120 );
32 34
33 bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); 35 bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 );
34 36
35 wxBoxSizer* bSizerR = new wxBoxSizer( wxVERTICAL ); 37 wxBoxSizer* bSizerR = new wxBoxSizer( wxVERTICAL );
36 38
37 m_calendar = new wxCalendarCtrl( this, ID_CALNENDER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxCAL_SHOW_HOLIDAYS ); 39 m_calendar = new wxCalendarCtrl( this, ID_CALNENDER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxCAL_SHOW_HOLIDAYS );
38 bSizerR->Add( m_calendar, 0, wxALL, 5 ); 40 bSizerR->Add( m_calendar, 0, wxALL, 5 );
39 41
40 wxBoxSizer* bSizerBtn = new wxBoxSizer( wxHORIZONTAL ); 42 m_buttonMake = new wxButton( this, ID_MKINDEX, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 );
43 bSizerR->Add( m_buttonMake, 0, wxALIGN_RIGHT|wxALL, 5 );
41 44
42 m_buttonMake = new wxButton( this, ID_MKINDEX, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 ); 45 bSizerR->Add( 0, 300, 1, wxEXPAND, 5 );
43 bSizerBtn->Add( m_buttonMake, 0, wxALL, 5 ); 46
44 47 m_richText = new wxRichTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1, 100 ), wxVSCROLL|wxBORDER_NONE|wxWANTS_CHARS );
48 bSizerR->Add( m_richText, 0, wxEXPAND|wxALL, 5 );
49
45 m_buttonClose = new wxButton( this, wxID_CANCEL, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 ); 50 m_buttonClose = new wxButton( this, wxID_CANCEL, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 );
46 bSizerBtn->Add( m_buttonClose, 0, wxALL, 5 ); 51 bSizerR->Add( m_buttonClose, 0, wxALIGN_RIGHT|wxALL, 5 );
47
48 bSizerR->Add( bSizerBtn, 1, wxALIGN_RIGHT, 5 );
49 52
50 bSizerTop->Add( bSizerR, 0, wxALIGN_RIGHT, 5 ); 53 bSizerTop->Add( bSizerR, 0, wxALIGN_RIGHT, 5 );
51 54
52 this->SetSizer( bSizerTop ); 55 this->SetSizer( bSizerTop );
53 this->Layout(); 56 this->Layout();
54 57
55 this->Centre( wxBOTH ); 58 this->Centre( wxBOTH );
59
60 CheckHhs();
56 } 61 }
57 62
58 IndexDialog::~IndexDialog() 63 IndexDialog::~IndexDialog()
59 { 64 {
60 } 65 }
61 66
62 // Event Table 67 // Event Table
63 BEGIN_EVENT_TABLE( IndexDialog, wxDialog ) 68 BEGIN_EVENT_TABLE( IndexDialog, wxDialog )
64 //EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnOpenHhsDir ) 69 EVT_CALENDAR_PAGE_CHANGED( ID_CALNENDER, IndexDialog::OnPage )
65 //EVT_BUTTON( ID_HIST, MyFrame::OnHistory ) 70 EVT_CALENDAR( ID_CALNENDER, IndexDialog::OnSelect )
71 EVT_BUTTON( ID_MKINDEX, IndexDialog::OnMakeIndex )
66 END_EVENT_TABLE() 72 END_EVENT_TABLE()
67 73
74 // Event Handlers & Functions
75 void IndexDialog::OnSelect( wxCalendarEvent& WXUNUSED(event) )
76 {
77 UpdateList();
78 }
79
80 void IndexDialog::OnMakeIndex( wxCommandEvent& WXUNUSED(event) )
81 {
82 wxDateTime dt = m_calendar->GetDate();
83 wxString month = dt.Format( wxT("%m") );
84 wxString year = dt.Format( wxT("%Y") );
85 if ( month.IsSameAs( wxT("01") ) || month.IsSameAs( wxT("02") ) || month.IsSameAs( wxT("03") ) ) {
86 long y;
87 year.ToLong( &y, 10 );
88 y--;
89 year = wxString::Format( wxT("%d"), y );
90 }
91
92
93 wxString date = dt.Format( wxT("%Y%m%d") );
94 wxString datedir = m_rootdir + wxFILE_SEP_PATH + year + wxFILE_SEP_PATH + date;
95 if ( !wxDir::Exists( datedir ) ) {
96 wxMessageBox( wxT("フォルダが存在しません.") + datedir );
97 return;
98 }
99
100 UpdateIndex( datedir, date );
101
102 UpdateList();
103 wxMessageBox( wxT("インデックス作成が終了しました.") );
104 }
105
106 void IndexDialog::OnPage( wxCalendarEvent& WXUNUSED(event) ) {}
107
108 void IndexDialog::UpdateList( void )
109 {
110 wxDateTime dt = m_calendar->GetDate();
111 wxString ymd = dt.Format( wxT("%Y%m%d") );
112
113 wxArrayString ccn = GetCcnByDate( ymd );
114
115 m_listCtrl->DeleteAllItems();
116
117 wxString buf;
118 for ( int i = 0; i < ccn.GetCount(); i++ ) {
119 m_listCtrl->InsertItem( i, -1 );
120 buf.Printf( wxT("%02d"), i + 1 );
121 m_listCtrl->SetItem( i, 0, buf, -1 ); // No
122
123 wxArrayString ary = wxSplit( ccn[i], '_', '\\' ); // hhsno, path, date
124 buf = GetHhsInfoByHhsNo( ary[0] );
125 wxString name = buf.BeforeFirst( '_' );
126 wxString ccnn = ary[1].Mid( 17, 3 );
127
128 m_listCtrl->SetItem( i, 1, ary[2], -1 ); // date
129 m_listCtrl->SetItem( i, 2, ccnn, -1 ); // ccn
130 m_listCtrl->SetItem( i, 3, ary[0], -1 ); // hhsno
131 m_listCtrl->SetItem( i, 4, name, -1 ); // name
132
133 if ( i % 2 ) m_listCtrl->SetItemBackgroundColour( i, wxColour(wxT("WHEAT")) );
134 }
135 }
136
137 void IndexDialog::CheckHhs( void )
138 {
139 wxArrayString result = CheckDBs();
140
141 for ( int i = 0; i < result.GetCount(); i++ ) {
142 m_richText->WriteText( wxT("チェック対象 : ") );
143 m_richText->WriteText( result[i] );
144 m_richText->Newline();
145 }
146 m_richText->SetEditable( false );
147 }
148