virtual void Visit(BStringContactField* field) { int count = fOwner->fControls.CountItems(); BGridLayout* layout = fOwner->GridLayout(); if (field->FieldType() != B_CONTACT_SIMPLE_GROUP) { ContactFieldTextControl* control = new ContactFieldTextControl(field); layout->AddItem(control->CreateLabelLayoutItem(), 1, count); layout->AddItem(control->CreateTextViewLayoutItem(), 2, count); fOwner->fControls.AddItem(control); } else { const char* label = BContactField::ExtendedLabel(field); fOwner->fGroups = new BPopUpMenu(label); fOwner->fGroups->SetRadioMode(false); fOwner->BuildGroupMenu(field); BMenuField* field = new BMenuField("", "", fOwner->fGroups); BTextControl* control = new BTextControl("simpleGroup", NULL, NULL, NULL); field->SetEnabled(true); layout->AddItem(field->CreateLabelLayoutItem(), 1, 0, count); layout->AddItem(field->CreateMenuBarLayoutItem(), 1, 1, count); layout->AddItem(control->CreateLabelLayoutItem(), 2, 0, count); layout->AddItem(control->CreateTextViewLayoutItem(), 2, 1, count); } }
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; }
virtual void Visit(BStringContactField* field) { ContactFieldTextControl* control = new ContactFieldTextControl(field); // BGridLayout* layout = fOwner->fInfoView->GridLayout(); fOwner->GridLayout()->AddView(control, 0, fOwner->fControls.CountItems()); BGroupLayout* controlLayout = (BGroupLayout*)control->GetLayout(); controlLayout->AlignLayoutWith(fOwner->GridLayout(), B_VERTICAL); fOwner->fControls.AddItem(control); }
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; }