view src/hist.cpp @ 2:c066fde99517

Added Batch Print Mode.
author pyon@macmini
date Fri, 23 Aug 2013 18:32:09 +0900
parents 7b6dab24f4b8
children
line wrap: on
line source

// Filename   : hist.cpp
// Last Change: 22-Aug-2013.
//
#include "hist.h"

HistDialog::HistDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) 
    : wxDialog( parent, id, title, pos, size, style )
{
	this->SetSizeHints( wxDefaultSize, wxDefaultSize );
	
	wxBoxSizer* bSizerTop = new wxBoxSizer( wxVERTICAL );
	
	m_listCtrl = new wxListCtrl( this, ID_LISTHIST, wxDefaultPosition, wxDefaultSize, wxLC_REPORT|wxLC_SINGLE_SEL );

    wxListItem itemCol;
    itemCol.SetText( wxT("歴番") );
    m_listCtrl->InsertColumn( 0, itemCol );
    m_listCtrl->SetColumnWidth( 0, 40 );
    itemCol.SetText( wxT("被保険者番号") );
    m_listCtrl->InsertColumn( 1, itemCol );
    m_listCtrl->SetColumnWidth( 1, 90 );
    itemCol.SetText( wxT("氏名") );
    m_listCtrl->InsertColumn( 2, itemCol );
    m_listCtrl->SetColumnWidth( 2, 80 );
    itemCol.SetText( wxT("住所") );
    m_listCtrl->InsertColumn( 3, itemCol );
    m_listCtrl->SetColumnWidth( 3, 240 );
    itemCol.SetText( wxT("検索日時") );
    m_listCtrl->InsertColumn( 4, itemCol );
    m_listCtrl->SetColumnWidth( 4, 120 );

	bSizerTop->Add( m_listCtrl, 1, wxALL|wxEXPAND, 5 );
	
	wxBoxSizer* bSizerBtn = new wxBoxSizer( wxHORIZONTAL );
	
	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, ID_SETHIST, wxT("セット"), wxDefaultPosition, wxDefaultSize, 0 );
	bSizerBtn->Add( m_buttonSet, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
	
	bSizerTop->Add( bSizerBtn, 0, wxALIGN_RIGHT|wxALL, 5 );
	
	this->SetSizer( bSizerTop );
	this->Layout();
	
	this->Centre( wxBOTH );

    ReadHistoryList();
}

HistDialog::~HistDialog()
{
}

// Event Table
BEGIN_EVENT_TABLE( HistDialog, wxDialog )
    EVT_LIST_ITEM_ACTIVATED( ID_LISTHIST, HistDialog::OnSelectItem )
    EVT_BUTTON( ID_SETHIST, HistDialog::OnSet )
END_EVENT_TABLE()


void HistDialog::OnSelectItem( wxListEvent& event )
{
    int i = event.GetIndex();
    wxListItem item;
    item.SetId( i );

    item.SetColumn( 1 );
    item.SetMask( wxLIST_MASK_TEXT );
    m_listCtrl->GetItem( item );
    m_hhsno = item.GetText();

    if ( IsModal() ) 
        EndModal( wxID_OK );
    else {
        SetReturnCode( wxID_OK );
        Show( false );
    }
}

void HistDialog::OnSet( wxCommandEvent& WXUNUSED(event) )
{
    long i = -1;
    for ( ;; ) {
        i = m_listCtrl->GetNextItem( i, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED );
        if ( i == -1 ) break;

        wxListItem item;
        item.SetId( i );

        item.SetColumn( 1 );
        item.SetMask( wxLIST_MASK_TEXT );
        m_listCtrl->GetItem( item );
        m_hhsno = item.GetText();
    }

    if ( IsModal() ) 
        EndModal( wxID_OK );
    else {
        SetReturnCode( wxID_OK );
        Show( false );
    }
}

void HistDialog::ReadHistoryList( void )
{
    wxTextFile file;
    wxString filename = wxGetCwd() + wxFILE_SEP_PATH + wxT("tmp") + wxFILE_SEP_PATH + wxT("history");
    wxString buf;

    if ( file.Open( filename ) ) {

        for ( size_t i = 0; i < file.GetLineCount(); 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( 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") ) );
        }
    }
    file.Close();
}