view src/ccnframe.cpp @ 23:a10c2fe880f8

fix sizers.
author pyon@macmini
date Wed, 27 Jul 2011 21:27:56 +0900
parents 05f76f9f9186
children
line wrap: on
line source

// Filename   : ccnframe.cpp
// Last Change: 27-Jul-2011.
//

#include "common.h"
#include "main.h"
#include "ccnframe.h"
#include "wx/wxsqlite3.h"

FrameCcn::FrameCcn( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style )
    : wxFrame( parent, id, title, pos, size, style )
{
	this->SetSizeHints( wxDefaultSize, wxDefaultSize );
    m_Panel = new wxPanel( this );
	
	wxBoxSizer* bSizer;
	bSizer = new wxBoxSizer( wxHORIZONTAL );
	
    // DB表示
	wxFlexGridSizer* fgSizer = new wxFlexGridSizer( 2, 6, 0, 0 );
    fgSizer->AddGrowableRow(1);
	
	m_staticText1 = new wxStaticText( m_Panel, wxID_ANY, wxT("開催年月日"), wxDefaultPosition, wxDefaultSize, 0 );
	fgSizer->Add( m_staticText1, 0, wxALL, 5 );
	fgSizer->Add( 0, 0, 1, wxEXPAND, 5 );
	
	m_staticText2 = new wxStaticText( m_Panel, wxID_ANY, wxT("合議体"), wxDefaultPosition, wxDefaultSize, 0 );
	fgSizer->Add( m_staticText2, 0, wxALL, 5 );
	fgSizer->Add( 0, 0, 1, wxEXPAND, 5 );
	
	m_staticText3 = new wxStaticText( m_Panel, wxID_ANY, wxT("被保険者"), wxDefaultPosition, wxDefaultSize, 0 );
	fgSizer->Add( m_staticText3, 0, wxALL, 5 );
	fgSizer->Add( 0, 0, 1, wxEXPAND, 5 );
	
	m_listCtrlYmd = new wxListCtrl( m_Panel, ID_YMD, wxDefaultPosition, wxSize( 300, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL );
	fgSizer->Add( m_listCtrlYmd, 1, wxALL|wxEXPAND, 5 );
	
	m_staticText4 = new wxStaticText( m_Panel, wxID_ANY, wxT("→"), wxDefaultPosition, wxDefaultSize, 0 );
	fgSizer->Add( m_staticText4, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
	
	m_listCtrlCcn = new wxListCtrl( m_Panel, ID_CCN, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL );
	fgSizer->Add( m_listCtrlCcn, 1, wxALL|wxEXPAND, 5 );
	
	m_staticText5 = new wxStaticText( m_Panel, wxID_ANY, wxT("→"), wxDefaultPosition, wxDefaultSize, 0 );
	fgSizer->Add( m_staticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5 );
	
	m_listCtrlHhs = new wxListCtrl( m_Panel, ID_HHS, wxDefaultPosition, wxSize( 220, -1 ), wxLC_REPORT|wxLC_SINGLE_SEL );
	fgSizer->Add( m_listCtrlHhs, 1, wxALL|wxEXPAND, 5 );
	
	m_btnClose = new wxButton( m_Panel, ID_CLOSE, wxT("閉じる"), wxDefaultPosition, wxDefaultSize, 0 );
	fgSizer->Add( m_btnClose, 0, wxALIGN_BOTTOM|wxALIGN_RIGHT|wxALL, 5 );
    m_btnClose->SetFocus();
	
	bSizer->Add( fgSizer, 1, wxEXPAND|wxALL, 5 );
	
	m_Panel->SetSizer( bSizer );
	m_Panel->Layout();
	
    this->SetSize( 1000, 500 );
	this->Centre( wxBOTH );
    InitListCtrl();
}

// Destructor
FrameCcn::~FrameCcn()
{
}

// Event Table
BEGIN_EVENT_TABLE( FrameCcn, wxFrame )
    EVT_LIST_ITEM_SELECTED( ID_YMD, FrameCcn::OnSelectYmd )
    EVT_LIST_ITEM_SELECTED( ID_CCN, FrameCcn::OnSelectCcn )
    EVT_BUTTON( ID_CLOSE,  FrameCcn::OnClose )
END_EVENT_TABLE()

// Event Handlers
void FrameCcn::OnSelectYmd(wxListEvent& event)
{
    long i = event.GetIndex();
    wxString ymd = m_listCtrlYmd->GetItemText( i );
    ymd.Replace( wxT("-"), wxEmptyString, true );

    wxString gszFile = wxGetCwd() + wxT("/db/ccn.db");
    wxSQLite3Database ccndb;
    ccndb.Open( gszFile );

    wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT hhsno, path FROM path WHERE path LIKE ?");
    stmt.Bind( 1, wxT("08") );
    wxSQLite3ResultSet q = stmt.ExecuteQuery();
    if ( q.IsNull(0) ) {
        return;
    }

    long r=0;
    while ( q.NextRow() ) {
        wxMessageBox(wxT("aaa"));
        wxString hhsno = q.GetString(0);
        //wxString cnt = q.GetString(1);
        m_listCtrlHhs->InsertItem( r, hhsno );
        //m_listCtrlCcn->SetItem( r, 1, cnt, -1 );
        r++;
    }
    stmt.Finalize();
    ccndb.Close();
}

void FrameCcn::OnSelectCcn(wxListEvent& WXUNUSED(event))
{
    m_listCtrlHhs->DeleteAllItems();

    wxString gszFile = wxGetCwd() + wxT("/db/ccn.db");
    wxSQLite3Database ccndb;
    ccndb.Open( gszFile );

    wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT ymd, MAX(time) FROM ccn GROUP BY ymd ORDER BY ymd DESC, time DESC");
    wxSQLite3ResultSet q = stmt.ExecuteQuery();
    long r=0;
    while ( q.NextRow() ) {
        wxString ymd  = q.GetString(0);
        wxString time = q.GetString(1);
        m_listCtrlHhs->InsertItem( r, wxEmptyString );
        m_listCtrlHhs->SetItemText( r, ymd );
        r++;
    }

    stmt.Finalize();
    ccndb.Close();
}

// 閉じる
void FrameCcn::OnClose(wxCommandEvent& WXUNUSED(event))
{
    this->Close();
}

// Functions
void FrameCcn::InitListCtrl()
{
    wxListItem itemCol;
    itemCol.SetText( wxT("年-月-日") );
    m_listCtrlYmd->InsertColumn( 0, itemCol );
    m_listCtrlYmd->SetColumnWidth( 0, 100 );
    itemCol.SetText( wxT("更新時刻") );
    m_listCtrlYmd->InsertColumn( 1, itemCol );
    m_listCtrlYmd->SetColumnWidth( 1, 180 );

    itemCol.SetText( wxT("合議体名") );
    m_listCtrlCcn->InsertColumn( 0, itemCol );
    m_listCtrlCcn->SetColumnWidth( 0, 100 );
    itemCol.SetText( wxT("件数") );
    m_listCtrlCcn->InsertColumn( 1, itemCol );
    m_listCtrlCcn->SetColumnWidth( 1, 100 );

    itemCol.SetText( wxT("被保険者番号") );
    m_listCtrlHhs->InsertColumn( 0, itemCol );
    m_listCtrlHhs->SetColumnWidth( 0, 100 );
    itemCol.SetText( wxT("氏名") );
    m_listCtrlHhs->InsertColumn( 1, itemCol );
    m_listCtrlHhs->SetColumnWidth( 1, 100 );

    // Ymd: read from db
    m_listCtrlCcn->DeleteAllItems();

    wxString gszFile = wxGetCwd() + wxT("/db/ccn.db");
    wxSQLite3Database ccndb;
    ccndb.Open( gszFile );

    wxSQLite3Statement stmt = ccndb.PrepareStatement("SELECT ymd, MAX(time) FROM ccn GROUP BY ymd ORDER BY ymd DESC, time DESC");
    wxSQLite3ResultSet q = stmt.ExecuteQuery();
    long r=0;
    while ( q.NextRow() ) {
        wxString ymd  = q.GetString(0);
        wxString time = q.GetString(1);
        m_listCtrlYmd->InsertItem( r, ymd );
        m_listCtrlYmd->SetItem( r, 1, time, -1 );
        if ( r % 2 )
            m_listCtrlYmd->SetItemBackgroundColour( r, wxColour(wxT("WHEAT")) );
        r++;
    }

    stmt.Finalize();
    ccndb.Close();

    // Ccn
    m_listCtrlCcn->InsertItem(  0, wxT("六郷1") );
    m_listCtrlCcn->InsertItem(  1, wxT("六郷2") );
    m_listCtrlCcn->InsertItem(  2, wxT("六郷3") );
    m_listCtrlCcn->InsertItem(  3, wxT("千畑1") );
    m_listCtrlCcn->InsertItem(  4, wxT("千畑2") );
    m_listCtrlCcn->InsertItem(  5, wxT("千畑3") );
    m_listCtrlCcn->InsertItem(  6, wxT("大曲1") );
    m_listCtrlCcn->InsertItem(  7, wxT("大曲2") );
    m_listCtrlCcn->InsertItem(  8, wxT("大曲3") );
    m_listCtrlCcn->InsertItem(  9, wxT("大曲4") );
    m_listCtrlCcn->InsertItem( 10, wxT("大曲5") );
    m_listCtrlCcn->InsertItem( 11, wxT("大曲6") );
    m_listCtrlCcn->InsertItem( 12, wxT("西仙1") );
    m_listCtrlCcn->InsertItem( 13, wxT("西仙2") );
    m_listCtrlCcn->InsertItem( 14, wxT("西仙3") );
    m_listCtrlCcn->InsertItem( 15, wxT("角館1") );
    m_listCtrlCcn->InsertItem( 16, wxT("角館2") );
    m_listCtrlCcn->InsertItem( 17, wxT("角館3") );
    m_listCtrlCcn->InsertItem( 18, wxT("角館4") );
    m_listCtrlCcn->InsertItem( 19, wxT("合計") );
}