void DrawField(BField* field, BRect rect, BView* parent) { BDateField* dateField = (BDateField*)field; if (dateField->UnixTime() == -1) { DrawString(B_TRANSLATE("Session cookie"), parent, rect); } else { BDateColumn::DrawField(field, rect, parent); } }
void BDateColumn::DrawField(BField* _field, BRect rect, BView* parent) { float width = rect.Width() - (2 * kTEXT_MARGIN); BDateField* field = (BDateField*)_field; if (field->Width() != rect.Width()) { char dateString[256]; time_t curtime = field->UnixTime(); tm time_data; BFont font; parent->GetFont(&font); localtime_r(&curtime, &time_data); for (int32 index = 0; ; index++) { if (!kTIME_FORMATS[index]) break; strftime(dateString, 256, kTIME_FORMATS[index], &time_data); if (font.StringWidth(dateString) <= width) break; } if (font.StringWidth(dateString) > width) { BString out_string(dateString); parent->TruncateString(&out_string, B_TRUNCATE_MIDDLE, width + 2); strcpy(dateString, out_string.String()); } field->SetClippedString(dateString); field->SetWidth(width); } DrawString(field->ClippedString(), parent, rect); }