void
PersonView::Save()
{
	fSaving = true;

	int32 count = fControls.CountItems();
	for (int32 i = 0; i < count; i++) {
		ContactFieldTextControl* control = fControls.ItemAt(i);
		control->UpdateField();
	}

	if (fAddrView != NULL)
		fAddrView->UpdateAddressField();

	if (fPictureView && fPictureView->HasChanged()) {
		fPictureView->Update();
		BBitmap* bitmap = fPictureView->Bitmap();

		if (fPhotoField == NULL) {
			fPhotoField = new BPhotoContactField(bitmap);
			fContact->AddField(fPhotoField);
		} else {
			fPhotoField->SetPhoto(bitmap);
		}
	}

	fFile->GetModificationTime(&fLastModificationTime);

	fContact->Commit();
	// TODO alert here if error

	fSaving = false;
}
void
PersonView::Save()
{
	fSaving = true;

	int32 count = fControls.CountItems();
	for (int32 i = 0; i < count; i++) {
		ContactFieldTextControl* control = fControls.ItemAt(i);
		control->UpdateField();
	}

	if (fAddressWindow)
		fAddressWindow->UpdateAddressField();

	if (fPictureView && fPictureView->HasChanged()) {
		fPictureView->Update();
		BBitmap* bitmap = fPictureView->Bitmap();

		if (fPhotoField == NULL) {
			fPhotoField = new BPhotoContactField(bitmap);
			fContact->AddField(fPhotoField);
		} else {
			fPhotoField->SetPhoto(bitmap);
		}
	}

	if (fContact->Commit() != B_OK) {
		BAlert* panel = new BAlert( "",
			"Error : BContact::Commit() != B_OK!\n", "OK");
		panel->Go();
	}

	fContactFile->GetModificationTime(&fLastModificationTime);

	fSaving = false;
	fSaved = true;
}