PersonView::PersonView(const char* name, BContact* contact, BFile* file) : BGridView(B_VERTICAL), // fGroups(NULL), fControls(20, false), fAddrView(NULL), fPictureView(NULL), fSaving(false), fContact(contact), fPhotoField(NULL), fFile(file) { SetName(name); SetFlags(Flags() | B_WILL_DRAW); UpdatePicture(NULL); fInfoView = new BGridView(B_VERTICAL); fFieldsBox = new BBox("Contact informations", B_WILL_DRAW, B_FANCY_BORDER, fInfoView); //float spacing = be_control_look->DefaultItemSpacing(); //fInfoView->GridLayout()->SetInsets(spacing); GridLayout()->AddView(fFieldsBox, 0, GridLayout()->CountRows()); if (fFile) fFile->GetModificationTime(&fLastModificationTime); _LoadFieldsFromContact(); }
void PersonView::UpdatePicture(BBitmap* bitmap) { if (fPictureView == NULL) { fPictureView = new PictureView(70, 90, bitmap); GridLayout()->AddView(fPictureView, 0, 0, 1, 5); GridLayout()->ItemAt(0, 0)->SetExplicitAlignment( BAlignment(B_ALIGN_CENTER, B_ALIGN_TOP)); return; } if (fSaving) return; /* time_t modificationTime = 0; BEntry entry(ref); entry.GetModificationTime(&modificationTime); if (entry.InitCheck() == B_OK && modificationTime <= fLastModificationTime) { return; }*/ fPictureView->Update(bitmap); }
PersonView::PersonView(const char* name, const char* categoryAttribute, const entry_ref *ref) : BGridView(), fLastModificationTime(0), fGroups(NULL), fControls(20, false), fCategoryAttribute(categoryAttribute), fPictureView(NULL), fSaving(false) { SetName(name); SetFlags(Flags() | B_WILL_DRAW); fRef = ref; BFile* file = NULL; if (fRef != NULL) file = new BFile(fRef, B_READ_ONLY); // Add picture "field", using ID photo 35mm x 45mm ratio fPictureView = new PictureView(70, 90, ref); BGridLayout* layout = GridLayout(); float spacing = be_control_look->DefaultItemSpacing(); layout->SetInsets(spacing, spacing, spacing, spacing); layout->AddView(fPictureView, 0, 0, 1, 5); layout->ItemAt(0, 0)->SetExplicitAlignment( BAlignment(B_ALIGN_CENTER, B_ALIGN_TOP)); if (file != NULL) file->GetModificationTime(&fLastModificationTime); delete file; }
PersonView::PersonView(const char* name, BContact* contact, BFile* file) : BGridView(), // fGroups(NULL), fControls(20, false), fPictureView(NULL), fSaving(false), fSaved(true), fContact(contact), fPhotoField(NULL), fContactFile(file) { SetName(name); SetFlags(Flags() | B_WILL_DRAW); UpdatePicture(NULL); fAddressWindow = NULL; float spacing = be_control_look->DefaultItemSpacing(); GridLayout()->SetInsets(spacing, spacing, spacing, spacing); _LoadFieldsFromContact(); if (fContactFile) fContactFile->GetModificationTime(&fLastModificationTime); }
void PersonView::UpdatePicture(BBitmap* bitmap) { if (fPictureView == NULL) { fPictureView = new PictureView(70, 90, bitmap); GridLayout()->AddView(fPictureView, 0, 0, 1, 5); GridLayout()->ItemAt(0, 0)->SetExplicitAlignment( BAlignment(B_ALIGN_CENTER, B_ALIGN_TOP)); return; } if (fSaving) return; fPictureView->Update(bitmap); }
void PersonView::Draw(BRect updateRect) { if (!fPictureView) return; // Draw a alert/get info-like strip BRect stripeRect = Bounds(); stripeRect.right = GridLayout()->HorizontalSpacing() + fPictureView->Bounds().Width() / 2; SetHighColor(tint_color(ViewColor(), B_DARKEN_1_TINT)); FillRect(stripeRect); }
void LetterChooser::CalculatePositions() { switch(mLayoutScheme) { case GRID: GridLayout(); break; case SINE: SineLayout(); break; case RANDOM: default: RandomLayout(); break; } }
void PersonView::AddAttribute(const char* label, const char* attribute) { // Check if this attribute has already been added. AttributeTextControl* control = NULL; for (int32 i = fControls.CountItems() - 1; i >= 0; i--) { if (fControls.ItemAt(i)->Attribute() == attribute) { return; } } control = new AttributeTextControl(label, attribute); fControls.AddItem(control); BGridLayout* layout = GridLayout(); int32 row = fControls.CountItems(); if (fCategoryAttribute == attribute) { // Special case the category attribute. The Group popup field will // be added as the label instead. fGroups = new BPopUpMenu(label); fGroups->SetRadioMode(false); BuildGroupMenu(); BMenuField* field = new BMenuField("", "", fGroups); field->SetEnabled(true); layout->AddView(field, 1, row); control->SetLabel(""); layout->AddView(control, 2, row); } else { layout->AddItem(control->CreateLabelLayoutItem(), 1, row); layout->AddItem(control->CreateTextViewLayoutItem(), 2, row); } SetAttribute(attribute, true); }