root/MainAddressBookDlg.cpp

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. CMainAddressBookDlg
  2. DoDataExchange
  3. BEGIN_MESSAGE_MAP
  4. OnDel
  5. OnOK
  6. OnAdd
  7. OnEdit
  8. OnItemchanged

/*
 * Copyright (C) 2002-2003 chik, s.hiranaka
 * For license terms, see the file COPYING in this directory.
 */

// MainAddressBookDlg.cpp : インプリメンテーション ファイル
//

#include "stdafx.h"
#include "pochy.h"
#include "MainAddressBookDlg.h"
#include "MainAddressBookAddDlg.h"
#include "MainAddressBookEditDlg.h"
#include "Csv.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CMainAddressBookDlg ダイアログ


CMainAddressBookDlg::CMainAddressBookDlg(CWnd* pParent /*=NULL*/)
        : CDialog(CMainAddressBookDlg::IDD, pParent)
{
        //{{AFX_DATA_INIT(CMainAddressBookDlg)
                // メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。
        //}}AFX_DATA_INIT
}


void CMainAddressBookDlg::DoDataExchange(CDataExchange* pDX)
{
        CDialog::DoDataExchange(pDX);
        //{{AFX_DATA_MAP(CMainAddressBookDlg)
        DDX_Control(pDX, IDC_MAINFRAME_ADDRESSBOOK_EDIT, m_button_edit);
        DDX_Control(pDX, IDC_MAINFRAME_ADDRESSBOOK_DEL, m_button_del);
        DDX_Control(pDX, IDC_MAINFRAME_ADDRESS_LIST, m_lc);
        //}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMainAddressBookDlg, CDialog)
        //{{AFX_MSG_MAP(CMainAddressBookDlg)
        ON_BN_CLICKED(IDC_MAINFRAME_ADDRESSBOOK_DEL, OnDel)
        ON_BN_CLICKED(IDC_MAINFRAME_ADDRESSBOOK_ADD, OnAdd)
        ON_BN_CLICKED(IDC_MAINFRAME_ADDRESSBOOK_EDIT, OnEdit)
        ON_NOTIFY(LVN_ITEMCHANGED, IDC_MAINFRAME_ADDRESS_LIST, OnItemchanged)
        //}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMainAddressBookDlg メッセージ ハンドラ

BOOL CMainAddressBookDlg::OnInitDialog() 
{
        CDialog::OnInitDialog();
        CPochyApp *app = (CPochyApp*)AfxGetApp();

        this->m_button_del.EnableWindow(FALSE);
        this->m_button_edit.EnableWindow(FALSE);

        CCsv csv(app->m_app_path+"\\address.csv");
        int n, i;
        int column_width[] = { 100, 200, 170 };
        char* column[] = { "名前", "メールアドレス", "備考" };
        LV_COLUMN lvc;
        lvc.mask = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH|LVCF_SUBITEM;
        lvc.fmt = LVCFMT_LEFT;
        for(n=0; n<3; n++){
                lvc.pszText = column[n];
                lvc.cx = column_width[n];
                m_lc.InsertColumn(n, &lvc);
        }
        m_lc.SetExtendedStyle(LVS_EX_FULLROWSELECT);
        m_lc.ModifyStyle(0, LVS_SHOWSELALWAYS);

        for(n=0; n<csv.GetRowSize(); n++){
                m_lc.InsertItem(n, csv.GetValue(n, 0));
                m_lc.SetItemData(n, 0);
                for(i=1; i<3; i++){
                        m_lc.SetItemText(n, i, csv.GetValue(n, i));
                }
        }

        return FALSE;  // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
                      // 例外: OCX プロパティ ページの戻り値は FALSE となります
}

void CMainAddressBookDlg::OnDel() 
{
        CString address;
        CString name;
        CString buf;
        int item;
        int i;

        POSITION pos = m_lc.GetFirstSelectedItemPosition();
        while(pos){
                item = m_lc.GetNextSelectedItem(pos);
                m_lc.SetItemData(item, 1);
        }
        i=0;
        while(i<m_lc.GetItemCount()){
                if(m_lc.GetItemData(i) == 1){
                        m_lc.DeleteItem(i);
                        continue;
                }
                i++;
        }       
}

void CMainAddressBookDlg::OnOK() 
{
        CPochyApp *app = (CPochyApp*)AfxGetApp();

        CString data;
        CCsv csv(NULL);
        csv.RemoveAll();
        CStringArray row;
        row.RemoveAll();
        for(int i=0; i<m_lc.GetItemCount(); i++){
                for(int j=0; j<3; j++){
//                      AfxMessageBox(m_lc.GetItemText(i,j));
                        row.Add(m_lc.GetItemText(i, j));
                }
                csv.AddRow(&row);
                row.RemoveAll();
        }
        csv.Save(app->m_app_path+"\\address.csv");
        CDialog::OnOK();
}

void CMainAddressBookDlg::OnAdd() 
{
        CMainAddressBookAddDlg ad;
        ad.DoModal();
}

void CMainAddressBookDlg::OnEdit() 
{
        CMainAddressBookEditDlg ad;
        ad.DoModal();
}

void CMainAddressBookDlg::OnItemchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
        NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
        // TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
        if(0 < this->m_lc.GetSelectedCount()){
                if(!this->m_button_del.IsWindowEnabled()){
                        this->m_button_del.EnableWindow();
                }
                if(!this->m_button_edit.IsWindowEnabled()){
                        this->m_button_edit.EnableWindow();
                }
        }else{
                this->m_button_del.EnableWindow(FALSE);
                this->m_button_edit.EnableWindow(FALSE);
        }
        *pResult = 0;
}

/* [<][>][^][v][top][bottom][index][help] */