diff src/kana.cpp @ 1:7b6dab24f4b8

Gui parts complete.
author pyon@macmini
date Sun, 04 Aug 2013 21:42:49 +0900
parents 0c0701a935f8
children c066fde99517
line wrap: on
line diff
--- a/src/kana.cpp	Sun Jul 21 16:07:19 2013 +0900
+++ b/src/kana.cpp	Sun Aug 04 21:42:49 2013 +0900
@@ -1,5 +1,5 @@
 // Filename   : kana.cpp
-// Last Change: 21-Jul-2013.
+// Last Change: 04-Aug-2013.
 //
 
 #include "kana.h"
@@ -15,14 +15,14 @@
     //
 	wxBoxSizer* bSizerSearch = new wxBoxSizer( wxHORIZONTAL );
 
-	m_searchCtrl = new wxSearchCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
+	m_searchCtrl = new wxSearchCtrl( this, ID_SEARCHKANA, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER );
 	#ifndef __WXMAC__
 	m_searchCtrl->ShowSearchButton( true );
 	#endif
 	m_searchCtrl->ShowCancelButton( false );
 	bSizerSearch->Add( m_searchCtrl, 1, wxALL|wxEXPAND, 5 );
 
-    m_checkBox = new wxCheckBox( this, wxID_ANY, wxT("部分一致"), wxDefaultPosition, wxDefaultSize, 0 );
+    m_checkBox = new wxCheckBox( this, ID_FUZZY, wxT("部分一致"), wxDefaultPosition, wxDefaultSize, 0 );
 	bSizerSearch->Add( m_checkBox, 0, wxALL|wxEXPAND, 5 );
 
 	bSizerTop->Add( bSizerSearch, 0, wxALL|wxEXPAND, 5 );
@@ -31,21 +31,24 @@
 	m_listCtrl = new wxListCtrl( this, ID_LISTKANA, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL );
 
     wxListItem itemCol;
-    itemCol.SetText( wxT("被保険者番号") );
+    itemCol.SetText( wxT("通番") );
     m_listCtrl->InsertColumn( 0, itemCol );
-    m_listCtrl->SetColumnWidth( 0, 80 );
+    m_listCtrl->SetColumnWidth( 0, 40 );
+    itemCol.SetText( wxT("被保険者番号") );
+    m_listCtrl->InsertColumn( 1, itemCol );
+    m_listCtrl->SetColumnWidth( 1, 90 );
     itemCol.SetText( wxT("カナ") );
-    m_listCtrl->InsertColumn( 1, itemCol );
-    m_listCtrl->SetColumnWidth( 1, 100 );
-    itemCol.SetText( wxT("氏名") );
     m_listCtrl->InsertColumn( 2, itemCol );
     m_listCtrl->SetColumnWidth( 2, 100 );
-    itemCol.SetText( wxT("生年月日") );
+    itemCol.SetText( wxT("氏名") );
     m_listCtrl->InsertColumn( 3, itemCol );
-    m_listCtrl->SetColumnWidth( 3, 60 );
+    m_listCtrl->SetColumnWidth( 3, 100 );
+    itemCol.SetText( wxT("生年月日") );
+    m_listCtrl->InsertColumn( 4, itemCol );
+    m_listCtrl->SetColumnWidth( 4, 60 );
     itemCol.SetText( wxT("住所") );
-    m_listCtrl->InsertColumn( 4, itemCol );
-    m_listCtrl->SetColumnWidth( 4, 180 );
+    m_listCtrl->InsertColumn( 5, itemCol );
+    m_listCtrl->SetColumnWidth( 5, 180 );
 
 	bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 );
 	
@@ -55,7 +58,7 @@
 	m_buttonCancel = new wxButton( this, wxID_CANCEL, wxT("キャンセル"), wxDefaultPosition, wxDefaultSize, 0 );
 	bSizerBtn->Add( m_buttonCancel, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
 	
-	m_buttonSet = new wxButton( this, wxID_OK, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 );
+	m_buttonSet = new wxButton( this, ID_SETKANA, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 );
 	bSizerBtn->Add( m_buttonSet, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
 	
 	bSizerTop->Add( bSizerBtn, 0, wxALIGN_RIGHT|wxALL, 5 );
@@ -64,6 +67,10 @@
 	this->Layout();
 	
 	this->Centre( wxBOTH );
+
+    m_searchCtrl->SetFocus();
+    m_searchCtrl->SetValue( wxT("全角で入力してネ! (性と名の間は全角スペースで)") );
+    m_searchCtrl->SelectAll();
 }
 
 KanaDialog::~KanaDialog()
@@ -72,37 +79,90 @@
 
 // Event Table
 BEGIN_EVENT_TABLE( KanaDialog, wxDialog )
-    //EVT_LIST_ITEM_ACTIVATED( ID_LIST, MyFrame::OnOpenHhsDir )
-    //EVT_BUTTON( ID_HIST, MyFrame::OnHistory )
+    EVT_TEXT_ENTER( ID_SEARCHKANA, KanaDialog::OnSearch )
+    EVT_CHECKBOX( ID_FUZZY, KanaDialog::OnFuzzyCheck )
+    EVT_LIST_ITEM_ACTIVATED( ID_LISTKANA, KanaDialog::OnSelectItem )
+    EVT_BUTTON( ID_SETKANA, KanaDialog::OnSet )
 END_EVENT_TABLE()
 
 // Event Handlers & Functions
-/*
-void KanaDialog::Search( void ) {
+void KanaDialog::OnSearch( wxCommandEvent& WXUNUSED(event) ) 
+{
+    UpdateList();
+}
+
+void KanaDialog::OnFuzzyCheck( wxCommandEvent& WXUNUSED(event) ) 
+{
+    UpdateList();
+}
 
-    wxTextFile file;
-    wxString filename = wxGetCwd() + wxFILE_SEP_PATH + wxT(".history");
-    wxString buf;
+void KanaDialog::OnSelectItem( wxListEvent& WXUNUSED(event) ) 
+{
+    m_hhsno = wxT("hoge");
+    if ( IsModal() ) 
+        EndModal( wxID_OK );
+    else {
+        SetReturnCode( wxID_OK );
+        Show( false );
+    }
+}
 
-    if ( file.Open( filename ) ) {
+void KanaDialog::OnSet( wxCommandEvent& WXUNUSED(event) ) 
+{
+    m_hhsno = wxT("hoge");
+    if ( IsModal() ) 
+        EndModal( wxID_OK );
+    else {
+        SetReturnCode( wxID_OK );
+        Show( false );
+    }
+}
 
-        for ( size_t i = 0; i<file.GetLineCount(); i++ ) {
+void KanaDialog::UpdateList( void )
+{
+    m_listCtrl->DeleteAllItems();
 
-            int col = 0;
-            m_listCtrl->InsertItem( i, -1 );
-            buf.Printf( wxT("%02d"), i + 1 );
-            m_listCtrl->SetItem( i, col, buf, -1 ); // No
+    wxString s = m_searchCtrl->GetValue();
+    if ( s.Len() < 3 ) {
+        wxMessageBox( wxT("指定する文字列は 3文字以上としてください.") );
+        return;
+    }
+
+    /*
+    wxRegEx reKana( "^[アイウエオカキクケコサシスセソナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲコザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォャュョ ]+$" );
+    if ( !reKana.Matches( s ) ) {
+        wxMessageBox( wxT("カタカナで入力してください.") );
+        return;
+    }
+    */
+
+    bool fuzzy = m_checkBox->IsChecked();
+    m_hhs = GetHhsInfoByKana( s, fuzzy );
 
-            wxStringTokenizer tkz( file[i], wxT(":") );
-            while ( tkz.HasMoreTokens() ) {
-                col++;
-                wxString token = tkz.GetNextToken();
-                m_listCtrl->SetItem( i, col, token, -1 );
-            }
-            if ( i % 2 ) m_listCtrl->SetItemBackgroundColour( i, wxColour(wxT("WHEAT")) );
+    if ( m_hhs.GetCount() > 200 ) {
+        wxMessageBox( wxT("該当件数が 200 件を超えました.\n条件を変えてみてください.") );
+        return;
+    }
+    else if ( m_hhs.IsEmpty() ){
+        wxMessageBox( wxT("該当なし.") );
+        return;
+    }
+
+    wxString buf;
+    for ( int i = 0; i < m_hhs.GetCount(); i++ ) {
+        int col = 0;
+        m_listCtrl->InsertItem( i, -1 );
+        buf.Printf( wxT("%02d"), i + 1 );
+        m_listCtrl->SetItem( i, col, buf, -1 ); // No
+
+        wxStringTokenizer tkz( m_hhs[i], wxT("_") );
+        while ( tkz.HasMoreTokens() ) {
+            col++;
+            wxString token = tkz.GetNextToken();
+            m_listCtrl->SetItem( i, col, token, -1 );
         }
+        if ( i % 2 ) m_listCtrl->SetItemBackgroundColour( i, wxColour(wxT("WHEAT")) );
     }
-    file.Close();
 }
-*/
 
+