Mercurial > mercurial > hgweb_searcher03.cgi
annotate src/index.cpp @ 22:92188f60323d default tip
Implement Masking function on Preview Dialog.
| author | pyon@macmini |
|---|---|
| date | Sat, 04 Apr 2015 17:23:46 +0900 |
| parents | 52958cd4a073 |
| children |
| rev | line source |
|---|---|
| 0 | 1 // Filename : index.cpp |
|
12
52958cd4a073
Implement Force Mask button in Batch Print Mode.
pyon@macmini
parents:
10
diff
changeset
|
2 // Last Change: 12-May-2014. |
| 0 | 3 // |
| 4 | |
| 5 #include "index.h" | |
| 2 | 6 #include "db.h" |
| 7 #include "wx/wxsqlite3.h" | |
| 0 | 8 |
| 9 IndexDialog::IndexDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) | |
| 10 : wxDialog( parent, id, title, pos, size, style ) | |
| 11 { | |
| 12 this->SetSizeHints( wxDefaultSize, wxDefaultSize ); | |
| 13 | |
| 14 wxBoxSizer* bSizerTop = new wxBoxSizer( wxHORIZONTAL ); | |
| 15 | |
| 16 m_listCtrl = new wxListCtrl( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLC_REPORT ); | |
| 17 | |
| 18 wxListItem itemCol; | |
| 2 | 19 itemCol.SetText( wxT("通番") ); |
| 0 | 20 m_listCtrl->InsertColumn( 0, itemCol ); |
| 21 m_listCtrl->SetColumnWidth( 0, 50 ); | |
| 22 itemCol.SetText( wxT("年月日") ); | |
| 23 m_listCtrl->InsertColumn( 1, itemCol ); | |
| 24 m_listCtrl->SetColumnWidth( 1, 80 ); | |
| 25 itemCol.SetText( wxT("合議体") ); | |
| 26 m_listCtrl->InsertColumn( 2, itemCol ); | |
| 2 | 27 m_listCtrl->SetColumnWidth( 2, 60 ); |
| 0 | 28 itemCol.SetText( wxT("被保険者番号") ); |
| 29 m_listCtrl->InsertColumn( 3, itemCol ); | |
| 30 m_listCtrl->SetColumnWidth( 3, 100 ); | |
| 31 itemCol.SetText( wxT("氏名") ); | |
| 32 m_listCtrl->InsertColumn( 4, itemCol ); | |
| 2 | 33 m_listCtrl->SetColumnWidth( 4, 120 ); |
| 0 | 34 |
| 35 bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 ); | |
| 36 | |
| 37 wxBoxSizer* bSizerR = new wxBoxSizer( wxVERTICAL ); | |
| 38 | |
| 39 m_calendar = new wxCalendarCtrl( this, ID_CALNENDER, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxCAL_SHOW_HOLIDAYS ); | |
| 40 bSizerR->Add( m_calendar, 0, wxALL, 5 ); | |
| 41 | |
| 42 m_buttonMake = new wxButton( this, ID_MKINDEX, wxT("作成"), wxDefaultPosition, wxDefaultSize, 0 ); | |
| 2 | 43 bSizerR->Add( m_buttonMake, 0, wxALIGN_RIGHT|wxALL, 5 ); |
| 0 | 44 |
| 2 | 45 bSizerR->Add( 0, 300, 1, wxEXPAND, 5 ); |
| 46 | |
|
12
52958cd4a073
Implement Force Mask button in Batch Print Mode.
pyon@macmini
parents:
10
diff
changeset
|
47 m_richText = new wxRichTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize( -1, 160 ), wxVSCROLL|wxBORDER_NONE|wxWANTS_CHARS ); |
| 2 | 48 bSizerR->Add( m_richText, 0, wxEXPAND|wxALL, 5 ); |
| 49 | |
| 0 | 50 m_buttonClose = new wxButton( this, wxID_CANCEL, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 ); |
| 2 | 51 bSizerR->Add( m_buttonClose, 0, wxALIGN_RIGHT|wxALL, 5 ); |
| 0 | 52 |
| 53 bSizerTop->Add( bSizerR, 0, wxALIGN_RIGHT, 5 ); | |
| 54 | |
| 55 this->SetSizer( bSizerTop ); | |
| 56 this->Layout(); | |
| 57 | |
| 58 this->Centre( wxBOTH ); | |
| 2 | 59 |
| 60 CheckHhs(); | |
| 0 | 61 } |
| 62 | |
| 63 IndexDialog::~IndexDialog() | |
| 64 { | |
| 65 } | |
| 66 | |
| 67 // Event Table | |
| 68 BEGIN_EVENT_TABLE( IndexDialog, wxDialog ) | |
| 2 | 69 EVT_CALENDAR_PAGE_CHANGED( ID_CALNENDER, IndexDialog::OnPage ) |
| 70 EVT_CALENDAR( ID_CALNENDER, IndexDialog::OnSelect ) | |
| 71 EVT_BUTTON( ID_MKINDEX, IndexDialog::OnMakeIndex ) | |
| 0 | 72 END_EVENT_TABLE() |
| 73 | |
| 2 | 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") ); | |
| 8 | 94 wxString datadir = m_rootdir + wxFILE_SEP_PATH + year + wxFILE_SEP_PATH + date; |
| 95 if ( !wxDir::Exists( datadir ) ) { | |
| 96 wxMessageBox( wxT("フォルダが存在しません.") + datadir ); | |
| 2 | 97 return; |
| 98 } | |
| 99 | |
| 8 | 100 UpdateIndex( datadir, date ); |
| 2 | 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 ); | |
| 10 | 120 buf.Printf( wxT("%03d"), i + 1 ); |
| 2 | 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 { | |
| 7 | 139 wxArrayString date = GetLastUpdate(); |
| 2 | 140 wxArrayString result = CheckDBs(); |
| 141 | |
| 7 | 142 m_richText->BeginBold(); |
| 143 m_richText->WriteText( wxT("最終更新年月日") ); | |
| 144 m_richText->EndBold(); | |
| 145 m_richText->Newline(); | |
| 146 m_richText->BeginTextColour( wxColour( 0, 0, 255 ) ); | |
| 147 m_richText->WriteText( wxT("インデックス:") ); | |
| 148 m_richText->EndTextColour(); | |
| 149 m_richText->WriteText( date[0] ); | |
| 150 m_richText->Newline(); | |
| 151 | |
| 152 m_richText->BeginTextColour( wxColour( 0, 0, 255 ) ); | |
| 153 m_richText->WriteText( wxT("被保険者情報:") ); | |
| 154 m_richText->EndTextColour(); | |
| 155 m_richText->WriteText( date[1] ); | |
| 156 m_richText->Newline(); | |
| 157 m_richText->Newline(); | |
| 158 | |
| 2 | 159 for ( int i = 0; i < result.GetCount(); i++ ) { |
| 160 m_richText->WriteText( wxT("チェック対象 : ") ); | |
| 7 | 161 m_richText->BeginTextColour( wxColour( 255, 0, 0 ) ); |
| 2 | 162 m_richText->WriteText( result[i] ); |
| 7 | 163 m_richText->EndTextColour(); |
| 2 | 164 m_richText->Newline(); |
| 165 } | |
| 166 m_richText->SetEditable( false ); | |
| 167 } | |
| 168 |
