Ejemplo n.º 1
0
void
SizeAttributeText::FitValue(BString *result, const BPoseView *view)
{
	if (fValueDirty)
		fValue = ReadValue();
	fOldWidth = fColumn->Width();
	fTruncatedWidth = TruncFileSize(result, fValue, view, fOldWidth);
	fDirty = false;
}
Ejemplo n.º 2
0
float
SizeAttributeText::PreferredWidth(const BPoseView *pose) const
{
	if (fValueIsDefined) {
		BString widthString;
		TruncFileSize(&widthString, fValue, pose, 100000);
		return pose->StringWidth(widthString.String());
	}
	return pose->StringWidth("-");
}
Ejemplo n.º 3
0
void
GenericAttributeText::FitValue(BString* outString, const BPoseView* view)
{
	if (fValueDirty)
		ReadValue(&fFullValueText);

	fOldWidth = fColumn->Width();

	if (!fValueIsDefined) {
		*outString = "-";
		fTruncatedWidth = TruncString(outString, fFullValueText.String(),
			fFullValueText.Length(), view, fOldWidth);
		fDirty = false;
		return;
	}

	char buffer[256];

	switch (fColumn->AttrType()) {
		case B_SIZE_T_TYPE:
			TruncFileSizeBase(outString, fValue.int32t, view, fOldWidth);
			return;

		case B_SSIZE_T_TYPE:
			if (fValue.int32t > 0) {
				TruncFileSizeBase(outString, fValue.int32t, view, fOldWidth);
				return;
			}
			sprintf(buffer, "%s", strerror(fValue.int32t));
			fFullValueText = buffer;
			break;

		case B_STRING_TYPE:
			fTruncatedWidth = TruncString(outString, fFullValueText.String(),
				fFullValueText.Length(), view, fOldWidth);
			fDirty = false;
			return;

		case B_OFF_T_TYPE:
			// As a side effect update the fFullValueText to the string
			// representation of value
			TruncFileSize(&fFullValueText, fValue.off_tt, view, 100000);
			fTruncatedWidth = TruncFileSize(outString, fValue.off_tt, view,
				fOldWidth);
			fDirty = false;
			return;

		case B_TIME_TYPE:
			// As a side effect update the fFullValueText to the string
			// representation of value
			TruncTime(&fFullValueText, fValue.time_tt, view, 100000);
			fTruncatedWidth = TruncTime(outString, fValue.time_tt, view,
				fOldWidth);
			fDirty = false;
			return;

		case B_BOOL_TYPE:
			// For now use true/false, would be nice to be able to set
			// the value text

 			sprintf(buffer, "%s", fValue.boolt ? "true" : "false");
			fFullValueText = buffer;
			break;

		case B_CHAR_TYPE:
			// Make sure no non-printable characters are displayed:
			if (!isprint(fValue.uint8t)) {
				*outString = "-";
				fTruncatedWidth = TruncString(outString, fFullValueText.String(),
					fFullValueText.Length(), view, fOldWidth);
				fDirty = false;
				return;
			}

			sprintf(buffer, "%c", fValue.uint8t);
			fFullValueText = buffer;
			break;

		case B_INT8_TYPE:
			sprintf(buffer, "%d", fValue.int8t);
			fFullValueText = buffer;
			break;

		case B_UINT8_TYPE:
			sprintf(buffer, "%d", fValue.uint8t);
			fFullValueText = buffer;
			break;

		case B_INT16_TYPE:
			sprintf(buffer, "%d", fValue.int16t);
			fFullValueText = buffer;
			break;

		case B_UINT16_TYPE:
			sprintf(buffer, "%d", fValue.uint16t);
			fFullValueText = buffer;
			break;

		case B_INT32_TYPE:
			sprintf(buffer, "%" B_PRId32, fValue.int32t);
			fFullValueText = buffer;
			break;

		case B_UINT32_TYPE:
			sprintf(buffer, "%" B_PRId32, fValue.uint32t);
			fFullValueText = buffer;
			break;

		case B_INT64_TYPE:
			sprintf(buffer, "%" B_PRId64, fValue.int64t);
			fFullValueText = buffer;
			break;

		case B_UINT64_TYPE:
			sprintf(buffer, "%" B_PRId64, fValue.uint64t);
			fFullValueText = buffer;
			break;

		case B_FLOAT_TYPE:
			snprintf(buffer, sizeof(buffer), "%g", fValue.floatt);
			fFullValueText = buffer;
			break;

		case B_DOUBLE_TYPE:
			snprintf(buffer, sizeof(buffer), "%g", fValue.doublet);
			fFullValueText = buffer;
			break;

		default:
			*outString = "-";
			fTruncatedWidth = TruncString(outString, fFullValueText.String(),
				fFullValueText.Length(), view, fOldWidth);
			fDirty = false;
			return;
	}
	fTruncatedWidth = TruncString(outString, buffer, (ssize_t)strlen(buffer),
		view, fOldWidth);
	fDirty = false;
}