Tracker: style fixes to WidgetAttributeText

This commit is contained in:
John Scipione
2014-06-20 21:30:12 -04:00
parent 69e5768d45
commit 92199e801c
2 changed files with 284 additions and 255 deletions
+64 -34
View File
@@ -240,40 +240,54 @@ WidgetAttributeText::NewWidgetText(const Model* model,
if (strcmp(attrName, kAttrPath) == 0) if (strcmp(attrName, kAttrPath) == 0)
return new PathAttributeText(model, column); return new PathAttributeText(model, column);
if (strcmp(attrName, kAttrMIMEType) == 0) if (strcmp(attrName, kAttrMIMEType) == 0)
return new KindAttributeText(model, column); return new KindAttributeText(model, column);
if (strcmp(attrName, kAttrStatName) == 0) if (strcmp(attrName, kAttrStatName) == 0)
return new NameAttributeText(model, column); return new NameAttributeText(model, column);
if (strcmp(attrName, kAttrRealName) == 0) if (strcmp(attrName, kAttrRealName) == 0)
return new RealNameAttributeText(model, column); return new RealNameAttributeText(model, column);
if (strcmp(attrName, kAttrStatSize) == 0) if (strcmp(attrName, kAttrStatSize) == 0)
return new SizeAttributeText(model, column); return new SizeAttributeText(model, column);
if (strcmp(attrName, kAttrStatModified) == 0) if (strcmp(attrName, kAttrStatModified) == 0)
return new ModificationTimeAttributeText(model, column); return new ModificationTimeAttributeText(model, column);
if (strcmp(attrName, kAttrStatCreated) == 0) if (strcmp(attrName, kAttrStatCreated) == 0)
return new CreationTimeAttributeText(model, column); return new CreationTimeAttributeText(model, column);
#ifdef OWNER_GROUP_ATTRIBUTES #ifdef OWNER_GROUP_ATTRIBUTES
if (strcmp(attrName, kAttrStatOwner) == 0) if (strcmp(attrName, kAttrStatOwner) == 0)
return new OwnerAttributeText(model, column); return new OwnerAttributeText(model, column);
if (strcmp(attrName, kAttrStatGroup) == 0) if (strcmp(attrName, kAttrStatGroup) == 0)
return new GroupAttributeText(model, column); return new GroupAttributeText(model, column);
#endif #endif
if (strcmp(attrName, kAttrStatMode) == 0) if (strcmp(attrName, kAttrStatMode) == 0)
return new ModeAttributeText(model, column); return new ModeAttributeText(model, column);
if (strcmp(attrName, kAttrOpenWithRelation) == 0) if (strcmp(attrName, kAttrOpenWithRelation) == 0)
return new OpenWithRelationAttributeText(model, column, view); return new OpenWithRelationAttributeText(model, column, view);
if (strcmp(attrName, kAttrAppVersion) == 0) if (strcmp(attrName, kAttrAppVersion) == 0)
return new AppShortVersionAttributeText(model, column); return new AppShortVersionAttributeText(model, column);
if (strcmp(attrName, kAttrSystemVersion) == 0) if (strcmp(attrName, kAttrSystemVersion) == 0)
return new SystemShortVersionAttributeText(model, column); return new SystemShortVersionAttributeText(model, column);
if (strcmp(attrName, kAttrOriginalPath) == 0) if (strcmp(attrName, kAttrOriginalPath) == 0)
return new OriginalPathAttributeText(model, column); return new OriginalPathAttributeText(model, column);
if (column->DisplayAs() != NULL) { if (column->DisplayAs() != NULL) {
if (!strncmp(column->DisplayAs(), "checkbox", 8)) if (!strncmp(column->DisplayAs(), "checkbox", 8))
return new CheckboxAttributeText(model, column); return new CheckboxAttributeText(model, column);
if (!strncmp(column->DisplayAs(), "duration", 8)) if (!strncmp(column->DisplayAs(), "duration", 8))
return new DurationAttributeText(model, column); return new DurationAttributeText(model, column);
if (!strncmp(column->DisplayAs(), "rating", 6)) if (!strncmp(column->DisplayAs(), "rating", 6))
return new RatingAttributeText(model, column); return new RatingAttributeText(model, column);
} }
@@ -283,7 +297,7 @@ WidgetAttributeText::NewWidgetText(const Model* model,
WidgetAttributeText::WidgetAttributeText(const Model* model, WidgetAttributeText::WidgetAttributeText(const Model* model,
const BColumn* column) const BColumn* column)
: :
fModel(const_cast<Model*>(model)), fModel(const_cast<Model*>(model)),
fColumn(column), fColumn(column),
@@ -304,8 +318,9 @@ const char*
WidgetAttributeText::FittingText(const BPoseView* view) WidgetAttributeText::FittingText(const BPoseView* view)
{ {
if (fDirty || fColumn->Width() != fOldWidth || CheckSettingsChanged() if (fDirty || fColumn->Width() != fOldWidth || CheckSettingsChanged()
|| !fValueIsDefined ) || !fValueIsDefined) {
CheckViewChanged(view); CheckViewChanged(view);
}
ASSERT(!fDirty); ASSERT(!fDirty);
return fText.String(); return fText.String();
@@ -469,7 +484,7 @@ WidgetAttributeText::SetDirty(bool value)
} }
// #pragma mark - // #pragma mark - StringAttributeText
StringAttributeText::StringAttributeText(const Model* model, StringAttributeText::StringAttributeText(const Model* model,
@@ -570,7 +585,7 @@ StringAttributeText::CommitEditedText(BTextView* textView)
} }
// #pragma mark - // #pragma mark - ScalarAttributeText
ScalarAttributeText::ScalarAttributeText(const Model* model, ScalarAttributeText::ScalarAttributeText(const Model* model,
@@ -599,7 +614,8 @@ ScalarAttributeText::CheckAttributeChanged()
return false; return false;
fValue = newValue; fValue = newValue;
fDirty = true; // have to redo fitted string fDirty = true;
// have to redo fitted string
return true; return true;
} }
@@ -629,7 +645,7 @@ ScalarAttributeText::Compare(WidgetAttributeText& attr, BPoseView*)
} }
// #pragma mark - // #pragma mark - PathAttributeText
PathAttributeText::PathAttributeText(const Model* model, const BColumn* column) PathAttributeText::PathAttributeText(const Model* model, const BColumn* column)
@@ -651,11 +667,12 @@ PathAttributeText::ReadValue(BString* result)
TruncateLeaf(result); TruncateLeaf(result);
} else } else
*result = "-"; *result = "-";
fValueDirty = false; fValueDirty = false;
} }
// #pragma mark - // #pragma mark - OriginalPathAttributeText
OriginalPathAttributeText::OriginalPathAttributeText(const Model* model, OriginalPathAttributeText::OriginalPathAttributeText(const Model* model,
@@ -677,15 +694,15 @@ OriginalPathAttributeText::ReadValue(BString* result)
*result = path.Path(); *result = path.Path();
else else
*result = "-"; *result = "-";
fValueDirty = false; fValueDirty = false;
} }
// #pragma mark - // #pragma mark - KindAttributeText
KindAttributeText::KindAttributeText(const Model* model, KindAttributeText::KindAttributeText(const Model* model, const BColumn* column)
const BColumn* column)
: :
StringAttributeText(model, column) StringAttributeText(model, column)
{ {
@@ -701,20 +718,21 @@ KindAttributeText::ReadValue(BString* result)
// get the mime type // get the mime type
if (mime.SetType(fModel->MimeType()) != B_OK) if (mime.SetType(fModel->MimeType()) != B_OK)
*result = B_TRANSLATE("Unknown"); *result = B_TRANSLATE("Unknown");
// get the short mime type description else if (mime.GetShortDescription(desc) == B_OK) {
else if (mime.GetShortDescription(desc) == B_OK) // get the short mime type description
*result = desc; *result = desc;
else } else
*result = fModel->MimeType(); *result = fModel->MimeType();
fValueDirty = false; fValueDirty = false;
} }
// #pragma mark - // #pragma mark - NameAttributeText
NameAttributeText::NameAttributeText(const Model* model, NameAttributeText::NameAttributeText(const Model* model,
const BColumn* column) const BColumn* column)
: :
StringAttributeText(model, column) StringAttributeText(model, column)
{ {
@@ -791,9 +809,7 @@ NameAttributeText::CommitEditedTextFlavor(BTextView* textView)
B_TRANSLATE("Replace other file"), B_TRANSLATE("Replace other file"),
B_TRANSLATE("OK"), B_TRANSLATE("OK"),
NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT); NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT);
alert->SetShortcut(0, 'r'); alert->SetShortcut(0, 'r');
if (alert->Go()) if (alert->Go())
return false; return false;
@@ -847,7 +863,7 @@ NameAttributeText::IsEditable() const
} }
// #pragma mark - // #pragma mark - RealNameAttributeText
RealNameAttributeText::RealNameAttributeText(const Model* model, RealNameAttributeText::RealNameAttributeText(const Model* model,
@@ -981,8 +997,6 @@ RealNameAttributeText::SetSortFolderNamesFirst(bool enabled)
#ifdef OWNER_GROUP_ATTRIBUTES #ifdef OWNER_GROUP_ATTRIBUTES
OwnerAttributeText::OwnerAttributeText(const Model* model, OwnerAttributeText::OwnerAttributeText(const Model* model,
const BColumn* column) const BColumn* column)
: :
@@ -1035,11 +1049,12 @@ GroupAttributeText::ReadValue(BString* result)
fValueDirty = false; fValueDirty = false;
} }
#endif // OWNER_GROUP_ATTRIBUTES #endif // OWNER_GROUP_ATTRIBUTES
// #pragma mark - ModeAttributeText
ModeAttributeText::ModeAttributeText(const Model* model, ModeAttributeText::ModeAttributeText(const Model* model,
const BColumn* column) const BColumn* column)
: :
@@ -1080,7 +1095,7 @@ ModeAttributeText::ReadValue(BString* result)
} }
// #pragma mark - // #pragma mark - SizeAttributeText
SizeAttributeText::SizeAttributeText(const Model* model, SizeAttributeText::SizeAttributeText(const Model* model,
@@ -1137,7 +1152,7 @@ SizeAttributeText::PreferredWidth(const BPoseView* pose) const
} }
// #pragma mark - time related // #pragma mark - TimeAttributeText
TimeAttributeText::TimeAttributeText(const Model* model, TimeAttributeText::TimeAttributeText(const Model* model,
@@ -1176,6 +1191,9 @@ TimeAttributeText::CheckSettingsChanged(void)
} }
// #pragma mark - CreationTimeAttributeText
CreationTimeAttributeText::CreationTimeAttributeText(const Model* model, CreationTimeAttributeText::CreationTimeAttributeText(const Model* model,
const BColumn* column) const BColumn* column)
: :
@@ -1193,6 +1211,9 @@ CreationTimeAttributeText::ReadValue()
} }
// #pragma mark - ModificationTimeAttributeText
ModificationTimeAttributeText::ModificationTimeAttributeText( ModificationTimeAttributeText::ModificationTimeAttributeText(
const Model* model, const BColumn* column) const Model* model, const BColumn* column)
: :
@@ -1210,7 +1231,7 @@ ModificationTimeAttributeText::ReadValue()
} }
// #pragma mark - // #pragma mark - GenericAttributeText
GenericAttributeText::GenericAttributeText(const Model* model, GenericAttributeText::GenericAttributeText(const Model* model,
@@ -1326,11 +1347,13 @@ GenericAttributeText::ReadValue(BString* result)
default: default:
TRESPASS(); TRESPASS();
break;
} }
} else { } else {
// handle the standard data types // handle the standard data types
switch (info.size) { switch (info.size) {
case sizeof(char): // Takes care of bool too. case sizeof(char):
// Takes care of bool too.
fValueIsDefined = true; fValueIsDefined = true;
fValue.int8t = tmp.int8t; fValue.int8t = tmp.int8t;
break; break;
@@ -1340,18 +1363,21 @@ GenericAttributeText::ReadValue(BString* result)
fValue.int16t = tmp.int16t; fValue.int16t = tmp.int16t;
break; break;
case sizeof(int32): // Takes care of time_t too. case sizeof(int32):
// Takes care of time_t too.
fValueIsDefined = true; fValueIsDefined = true;
fValue.int32t = tmp.int32t; fValue.int32t = tmp.int32t;
break; break;
case sizeof(int64): // Takes care of off_t too. case sizeof(int64):
// Takes care of off_t too.
fValueIsDefined = true; fValueIsDefined = true;
fValue.int64t = tmp.int64t; fValue.int64t = tmp.int64t;
break; break;
default: default:
TRESPASS(); TRESPASS();
break;
} }
} }
} }
@@ -1528,9 +1554,10 @@ GenericAttributeText::Compare(WidgetAttributeText& attr, BPoseView*)
if (compareTo->fValueDirty) if (compareTo->fValueDirty)
compareTo->ReadValue(&compareTo->fFullValueText); compareTo->ReadValue(&compareTo->fFullValueText);
// Sort undefined values last, regardless of the other value: // sort undefined values last, regardless of the other value
if (!fValueIsDefined) if (!fValueIsDefined)
return compareTo->fValueIsDefined ? 1 : 0; return compareTo->fValueIsDefined ? 1 : 0;
if (!compareTo->fValueIsDefined) if (!compareTo->fValueIsDefined)
return -1; return -1;
@@ -1598,6 +1625,7 @@ GenericAttributeText::Compare(WidgetAttributeText& attr, BPoseView*)
return fValue.uint64t >= compareTo->fValue.uint64t ? return fValue.uint64t >= compareTo->fValue.uint64t ?
(fValue.uint64t == compareTo->fValue.uint64t ? 0 : 1) : -1; (fValue.uint64t == compareTo->fValue.uint64t ? 0 : 1) : -1;
} }
return 0; return 0;
} }
@@ -1794,7 +1822,6 @@ GenericAttributeText::CommitEditedTextFlavor(BTextView* textView)
default: default:
TRESPASS(); TRESPASS();
} }
size = fModel->WriteAttr(columnName, type, 0, &tmp, scalarSize); size = fModel->WriteAttr(columnName, type, 0, &tmp, scalarSize);
@@ -1819,7 +1846,7 @@ GenericAttributeText::CommitEditedTextFlavor(BTextView* textView)
} }
// #pragma mark - display as: duration // #pragma mark - DurationAttributeText (display as: duration)
DurationAttributeText::DurationAttributeText(const Model* model, DurationAttributeText::DurationAttributeText(const Model* model,
@@ -1901,7 +1928,7 @@ DurationAttributeText::FitValue(BString* result, const BPoseView* view)
} }
// #pragma mark - display as: checkbox // #pragma mark - CheckboxAttributeText (display as: checkbox)
CheckboxAttributeText::CheckboxAttributeText(const Model* model, CheckboxAttributeText::CheckboxAttributeText(const Model* model,
@@ -1981,7 +2008,7 @@ CheckboxAttributeText::FitValue(BString* result, const BPoseView* view)
} }
// #pragma mark - display as: rating // #pragma mark - RatingAttributeText (display as: rating)
RatingAttributeText::RatingAttributeText(const Model* model, RatingAttributeText::RatingAttributeText(const Model* model,
@@ -2052,7 +2079,7 @@ RatingAttributeText::FitValue(BString* result, const BPoseView* view)
} }
// #pragma mark - // #pragma mark - OpenWithRelationAttributeText
OpenWithRelationAttributeText::OpenWithRelationAttributeText(const Model* model, OpenWithRelationAttributeText::OpenWithRelationAttributeText(const Model* model,
@@ -2110,6 +2137,9 @@ OpenWithRelationAttributeText::FitValue(BString* result, const BPoseView* view)
} }
// #pragma mark - VersionAttributeText
VersionAttributeText::VersionAttributeText(const Model* model, VersionAttributeText::VersionAttributeText(const Model* model,
const BColumn* column, bool app) const BColumn* column, bool app)
: :
+220 -221
View File
@@ -31,8 +31,8 @@ of Be Incorporated in the United States and other countries. Other brand product
names are registered trademarks or trademarks of their respective holders. names are registered trademarks or trademarks of their respective holders.
All rights reserved. All rights reserved.
*/ */
#ifndef __TEXT_WIDGET_ATTRIBUTE__ #ifndef _TEXT_WIDGET_ATTRIBUTE_H
#define __TEXT_WIDGET_ATTRIBUTE__ #define _TEXT_WIDGET_ATTRIBUTE_H
#include <String.h> #include <String.h>
@@ -56,83 +56,83 @@ class WidgetAttributeText {
// corresponding text, fitted into a specified width using a given // corresponding text, fitted into a specified width using a given
// view // view
// It is being asked for the string value by the TextWidget object // It is being asked for the string value by the TextWidget object
public: public:
WidgetAttributeText(const Model*, const BColumn*); WidgetAttributeText(const Model*, const BColumn*);
virtual ~WidgetAttributeText(); virtual ~WidgetAttributeText();
virtual bool CheckAttributeChanged() = 0; virtual bool CheckAttributeChanged() = 0;
// returns true if attribute value changed // returns true if attribute value changed
bool CheckViewChanged(const BPoseView*); bool CheckViewChanged(const BPoseView*);
// returns true if fitted text changed, either because value // returns true if fitted text changed, either because value
// changed or because width/view changed // changed or because width/view changed
virtual bool CheckSettingsChanged(); virtual bool CheckSettingsChanged();
// override if the text rendering depends on a setting // override if the text rendering depends on a setting
const char* FittingText(const BPoseView*); const char* FittingText(const BPoseView*);
// returns text, recalculating if not yet calculated // returns text, recalculating if not yet calculated
virtual int Compare(WidgetAttributeText&, BPoseView* view) = 0; virtual int Compare(WidgetAttributeText&, BPoseView* view) = 0;
// override to define a compare of two different attributes for // override to define a compare of two different attributes for
// sorting // sorting
static WidgetAttributeText* NewWidgetText(const Model*, static WidgetAttributeText* NewWidgetText(const Model*,
const BColumn*, const BPoseView*); const BColumn*, const BPoseView*);
// WidgetAttributeText factory // WidgetAttributeText factory
// call this to make the right WidgetAttributeText type for a // call this to make the right WidgetAttributeText type for a
// given column // given column
float Width(const BPoseView*); float Width(const BPoseView*);
// respects the width of the corresponding column // respects the width of the corresponding column
float CurrentWidth() const; float CurrentWidth() const;
// return the item width we got during our last fitting attempt // return the item width we got during our last fitting attempt
virtual void SetUpEditing(BTextView*); virtual void SetUpEditing(BTextView*);
// set up the passed textView for the specifics of a given // set up the passed textView for the specifics of a given
// attribute editing // attribute editing
virtual bool CommitEditedText(BTextView*) = 0; virtual bool CommitEditedText(BTextView*) = 0;
// return true if attribute actually changed // return true if attribute actually changed
virtual float PreferredWidth(const BPoseView*) const = 0; virtual float PreferredWidth(const BPoseView*) const = 0;
static status_t AttrAsString(const Model* model, BString* result, static status_t AttrAsString(const Model* model, BString* result,
const char* attrName, int32 attrType, float width, const char* attrName, int32 attrType, float width,
BView* view, int64* value = 0); BView* view, int64* value = 0);
Model* TargetModel() const; Model* TargetModel() const;
virtual bool IsEditable() const; virtual bool IsEditable() const;
void SetDirty(bool); void SetDirty(bool);
protected: protected:
// generic fitting routines used by the different attributes // generic fitting routines used by the different attributes
static float TruncString(BString* result, const char* src, static float TruncString(BString* result, const char* src,
int32 length, const BPoseView*, float width, int32 length, const BPoseView*, float width,
uint32 truncMode = B_TRUNCATE_MIDDLE); uint32 truncMode = B_TRUNCATE_MIDDLE);
static float TruncTime(BString* result, int64 src, static float TruncTime(BString* result, int64 src,
const BPoseView* view, float width); const BPoseView* view, float width);
static float TruncFileSize(BString* result, int64 src, static float TruncFileSize(BString* result, int64 src,
const BPoseView* view, float width); const BPoseView* view, float width);
virtual void FitValue(BString* result, const BPoseView*) = 0; virtual void FitValue(BString* result, const BPoseView*) = 0;
// override FitValue to do a specific text fitting for a given // override FitValue to do a specific text fitting for a given
// attribute // attribute
mutable Model* fModel; mutable Model* fModel;
const BColumn* fColumn; const BColumn* fColumn;
// TODO: make these int32 only // TODO: make these int32 only
float fOldWidth; float fOldWidth;
float fTruncatedWidth; float fTruncatedWidth;
bool fDirty; bool fDirty;
// if true, need to recalculate text next time we try to use it // if true, need to recalculate text next time we try to use it
bool fValueIsDefined; bool fValueIsDefined;
BString fText; BString fText;
// holds the truncated text, fit to the parameters passed in // holds the truncated text, fit to the parameters passed in
// in the last FittingText call // in the last FittingText call
}; };
inline Model* inline Model*
@@ -143,49 +143,50 @@ WidgetAttributeText::TargetModel() const
class StringAttributeText : public WidgetAttributeText { class StringAttributeText : public WidgetAttributeText {
public: public:
StringAttributeText(const Model*, const BColumn*); StringAttributeText(const Model*, const BColumn*);
virtual const char* ValueAsText(const BPoseView* view); virtual const char* ValueAsText(const BPoseView* view);
// returns the untrucated text that corresponds to // returns the untrucated text that corresponds to
// the attribute value // the attribute value
virtual bool CheckAttributeChanged(); virtual bool CheckAttributeChanged();
virtual float PreferredWidth(const BPoseView*) const; virtual float PreferredWidth(const BPoseView*) const;
virtual bool CommitEditedText(BTextView*); virtual bool CommitEditedText(BTextView*);
protected: protected:
virtual bool CommitEditedTextFlavor(BTextView*) { return false; } virtual bool CommitEditedTextFlavor(BTextView*) { return false; }
virtual void FitValue(BString* result, const BPoseView*); virtual void FitValue(BString* result, const BPoseView*);
virtual void ReadValue(BString* result) = 0; virtual void ReadValue(BString* result) = 0;
virtual int Compare(WidgetAttributeText &, BPoseView* view); virtual int Compare(WidgetAttributeText &, BPoseView* view);
BString fFullValueText; BString fFullValueText;
bool fValueDirty; bool fValueDirty;
// used for lazy read, managed by ReadValue // used for lazy read, managed by ReadValue
}; };
class ScalarAttributeText : public WidgetAttributeText { class ScalarAttributeText : public WidgetAttributeText {
public: public:
ScalarAttributeText(const Model*, const BColumn*); ScalarAttributeText(const Model*, const BColumn*);
int64 Value();
virtual bool CheckAttributeChanged();
virtual float PreferredWidth(const BPoseView*) const; int64 Value();
virtual bool CheckAttributeChanged();
virtual bool CommitEditedText(BTextView*) { return false; } virtual float PreferredWidth(const BPoseView*) const;
// return true if attribute actually changed
protected: virtual bool CommitEditedText(BTextView*) { return false; }
virtual int64 ReadValue() = 0; // return true if attribute actually changed
virtual int Compare(WidgetAttributeText&, BPoseView* view); protected:
int64 fValue; virtual int64 ReadValue() = 0;
bool fValueDirty; virtual int Compare(WidgetAttributeText&, BPoseView* view);
// used for lazy read, managed by ReadValue int64 fValue;
bool fValueDirty;
// used for lazy read, managed by ReadValue
}; };
@@ -211,184 +212,178 @@ union GenericValueStruct {
//! Used for displaying mime extra attributes. Supports different formats. //! Used for displaying mime extra attributes. Supports different formats.
class GenericAttributeText : public StringAttributeText { class GenericAttributeText : public StringAttributeText {
public: public:
GenericAttributeText(const Model* model, GenericAttributeText(const Model* model, const BColumn* column);
const BColumn* column);
virtual bool CheckAttributeChanged(); virtual bool CheckAttributeChanged();
virtual float PreferredWidth(const BPoseView* view) const; virtual float PreferredWidth(const BPoseView* view) const;
virtual int Compare(WidgetAttributeText& other, virtual int Compare(WidgetAttributeText& other, BPoseView* view);
BPoseView* view);
virtual void SetUpEditing(BTextView* view); virtual void SetUpEditing(BTextView* view);
virtual bool CommitEditedText(BTextView* view); virtual bool CommitEditedText(BTextView* view);
virtual const char* ValueAsText(const BPoseView* view); virtual const char* ValueAsText(const BPoseView* view);
protected: protected:
virtual bool CommitEditedTextFlavor(BTextView* view); virtual bool CommitEditedTextFlavor(BTextView* view);
virtual void FitValue(BString* result, virtual void FitValue(BString* result, const BPoseView* view);
const BPoseView* view); virtual void ReadValue(BString* result);
virtual void ReadValue(BString* result);
protected: protected:
// TODO: split this up into a scalar flavor and string flavor // TODO: split this up into a scalar flavor and string flavor
// to save memory // to save memory
GenericValueStruct fValue; GenericValueStruct fValue;
}; };
//! Used for the display-as type "duration" //! Used for the display-as type "duration"
class DurationAttributeText : public GenericAttributeText { class DurationAttributeText : public GenericAttributeText {
public: public:
DurationAttributeText(const Model* model, DurationAttributeText(const Model* model, const BColumn* column);
const BColumn* column);
private: private:
virtual void FitValue(BString* result, virtual void FitValue(BString* result, const BPoseView* view);
const BPoseView* view);
}; };
//! Used for the display-as type "checkbox" //! Used for the display-as type "checkbox"
class CheckboxAttributeText : public GenericAttributeText { class CheckboxAttributeText : public GenericAttributeText {
public: public:
CheckboxAttributeText(const Model* model, CheckboxAttributeText(const Model* model, const BColumn* column);
const BColumn* column);
virtual void SetUpEditing(BTextView* view); virtual void SetUpEditing(BTextView* view);
private: private:
virtual void FitValue(BString* result, virtual void FitValue(BString* result, const BPoseView* view);
const BPoseView* view);
private: private:
BString fOnChar; BString fOnChar;
BString fOffChar; BString fOffChar;
}; };
//! Used for the display-as type "rating" //! Used for the display-as type "rating"
class RatingAttributeText : public GenericAttributeText { class RatingAttributeText : public GenericAttributeText {
public: public:
RatingAttributeText(const Model* model, RatingAttributeText(const Model* model, const BColumn* column);
const BColumn* column);
virtual void SetUpEditing(BTextView* view); virtual void SetUpEditing(BTextView* view);
private: private:
virtual void FitValue(BString* result, virtual void FitValue(BString* result, const BPoseView* view);
const BPoseView* view);
private: private:
int32 fCount; int32 fCount;
int32 fMax; int32 fMax;
}; };
class TimeAttributeText : public ScalarAttributeText { class TimeAttributeText : public ScalarAttributeText {
public: public:
TimeAttributeText(const Model*, const BColumn*); TimeAttributeText(const Model*, const BColumn*);
protected:
virtual float PreferredWidth(const BPoseView*) const;
virtual void FitValue(BString* result, const BPoseView*);
virtual bool CheckSettingsChanged();
TrackerSettings fSettings; protected:
bool fLastClockIs24; virtual float PreferredWidth(const BPoseView*) const;
DateOrder fLastDateOrder; virtual void FitValue(BString* result, const BPoseView*);
FormatSeparator fLastTimeFormatSeparator; virtual bool CheckSettingsChanged();
TrackerSettings fSettings;
bool fLastClockIs24;
DateOrder fLastDateOrder;
FormatSeparator fLastTimeFormatSeparator;
}; };
class PathAttributeText : public StringAttributeText { class PathAttributeText : public StringAttributeText {
public: public:
PathAttributeText(const Model*, const BColumn*); PathAttributeText(const Model*, const BColumn*);
protected:
virtual void ReadValue(BString* result); protected:
virtual void ReadValue(BString* result);
}; };
class OriginalPathAttributeText : public StringAttributeText { class OriginalPathAttributeText : public StringAttributeText {
public: public:
OriginalPathAttributeText(const Model*, const BColumn*); OriginalPathAttributeText(const Model*, const BColumn*);
protected:
virtual void ReadValue(BString* result); protected:
virtual void ReadValue(BString* result);
}; };
class KindAttributeText : public StringAttributeText { class KindAttributeText : public StringAttributeText {
public: public:
KindAttributeText(const Model*, const BColumn*); KindAttributeText(const Model*, const BColumn*);
protected:
virtual void ReadValue(BString* result); protected:
virtual void ReadValue(BString* result);
}; };
class NameAttributeText : public StringAttributeText { class NameAttributeText : public StringAttributeText {
public: public:
NameAttributeText(const Model*, const BColumn*); NameAttributeText(const Model*, const BColumn*);
virtual void SetUpEditing(BTextView*); virtual void SetUpEditing(BTextView*);
virtual void FitValue(BString* result, const BPoseView*); virtual void FitValue(BString* result, const BPoseView*);
virtual bool IsEditable() const; virtual bool IsEditable() const;
static void SetSortFolderNamesFirst(bool); static void SetSortFolderNamesFirst(bool);
protected:
virtual bool CommitEditedTextFlavor(BTextView*);
virtual int Compare(WidgetAttributeText&, BPoseView* view);
virtual void ReadValue(BString* result);
static bool sSortFolderNamesFirst; protected:
virtual bool CommitEditedTextFlavor(BTextView*);
virtual int Compare(WidgetAttributeText&, BPoseView* view);
virtual void ReadValue(BString* result);
static bool sSortFolderNamesFirst;
}; };
class RealNameAttributeText : public StringAttributeText { class RealNameAttributeText : public StringAttributeText {
public: public:
RealNameAttributeText(const Model*, RealNameAttributeText(const Model*, const BColumn*);
const BColumn*);
virtual void SetUpEditing(BTextView*);
virtual void FitValue(BString* result, const BPoseView*);
static void SetSortFolderNamesFirst(bool); virtual void SetUpEditing(BTextView*);
virtual void FitValue(BString* result, const BPoseView*);
static void SetSortFolderNamesFirst(bool);
protected: protected:
virtual bool CommitEditedTextFlavor(BTextView*); virtual bool CommitEditedTextFlavor(BTextView*);
virtual int Compare(WidgetAttributeText&, BPoseView* view); virtual int Compare(WidgetAttributeText&, BPoseView* view);
virtual void ReadValue(BString* result); virtual void ReadValue(BString* result);
static bool sSortFolderNamesFirst; static bool sSortFolderNamesFirst;
}; };
#ifdef OWNER_GROUP_ATTRIBUTES #ifdef OWNER_GROUP_ATTRIBUTES
class OwnerAttributeText : public StringAttributeText { class OwnerAttributeText : public StringAttributeText {
public: public:
OwnerAttributeText(const Model*, const BColumn*); OwnerAttributeText(const Model*, const BColumn*);
protected: protected:
virtual void ReadValue(BString* result); virtual void ReadValue(BString* result);
}; };
class GroupAttributeText : public StringAttributeText { class GroupAttributeText : public StringAttributeText {
public: public:
GroupAttributeText(const Model*, const BColumn*); GroupAttributeText(const Model*, const BColumn*);
protected: protected:
virtual void ReadValue(BString* result); virtual void ReadValue(BString* result);
}; };
#endif // OWNER_GROUP_ATTRIBUTES
#endif // OWNER_GROUP_ATTRIBUTES
class ModeAttributeText : public StringAttributeText { class ModeAttributeText : public StringAttributeText {
public: public:
ModeAttributeText(const Model*, const BColumn*); ModeAttributeText(const Model*, const BColumn*);
protected: protected:
virtual void ReadValue(BString* result); virtual void ReadValue(BString* result);
}; };
@@ -396,77 +391,80 @@ const int64 kUnknownSize = -1;
class SizeAttributeText : public ScalarAttributeText { class SizeAttributeText : public ScalarAttributeText {
public: public:
SizeAttributeText(const Model*, const BColumn*); SizeAttributeText(const Model*, const BColumn*);
protected: protected:
virtual void FitValue(BString* result, const BPoseView*); virtual void FitValue(BString* result, const BPoseView*);
virtual int64 ReadValue(); virtual int64 ReadValue();
virtual float PreferredWidth(const BPoseView*) const; virtual float PreferredWidth(const BPoseView*) const;
}; };
class CreationTimeAttributeText : public TimeAttributeText { class CreationTimeAttributeText : public TimeAttributeText {
public: public:
CreationTimeAttributeText(const Model*, const BColumn*); CreationTimeAttributeText(const Model*, const BColumn*);
protected:
virtual int64 ReadValue(); protected:
virtual int64 ReadValue();
}; };
class ModificationTimeAttributeText : public TimeAttributeText { class ModificationTimeAttributeText : public TimeAttributeText {
public: public:
ModificationTimeAttributeText(const Model*, const BColumn*); ModificationTimeAttributeText(const Model*, const BColumn*);
protected: protected:
virtual int64 ReadValue(); virtual int64 ReadValue();
}; };
class OpenWithRelationAttributeText : public ScalarAttributeText { class OpenWithRelationAttributeText : public ScalarAttributeText {
public: public:
OpenWithRelationAttributeText(const Model*, const BColumn*, OpenWithRelationAttributeText(const Model*, const BColumn*,
const BPoseView*); const BPoseView*);
protected: protected:
virtual void FitValue(BString* result, const BPoseView*); virtual void FitValue(BString* result, const BPoseView*);
virtual int64 ReadValue(); virtual int64 ReadValue();
virtual float PreferredWidth(const BPoseView*) const; virtual float PreferredWidth(const BPoseView*) const;
const BPoseView* fPoseView; const BPoseView* fPoseView;
BString fRelationText; BString fRelationText;
}; };
class VersionAttributeText : public StringAttributeText { class VersionAttributeText : public StringAttributeText {
public: public:
VersionAttributeText(const Model*, const BColumn*, bool appVersion); VersionAttributeText(const Model*, const BColumn*, bool appVersion);
protected: protected:
virtual void ReadValue(BString* result); virtual void ReadValue(BString* result);
private: private:
bool fAppVersion; bool fAppVersion;
}; };
class AppShortVersionAttributeText : public VersionAttributeText { class AppShortVersionAttributeText : public VersionAttributeText {
public: public:
AppShortVersionAttributeText(const Model* model, AppShortVersionAttributeText(const Model* model,
const BColumn* column) const BColumn* column)
: VersionAttributeText(model, column, true) :
{ VersionAttributeText(model, column, true)
} {
}
}; };
class SystemShortVersionAttributeText : public VersionAttributeText { class SystemShortVersionAttributeText : public VersionAttributeText {
public: public:
SystemShortVersionAttributeText(const Model* model, SystemShortVersionAttributeText(const Model* model,
const BColumn* column) const BColumn* column)
: VersionAttributeText(model, column, false) :
{ VersionAttributeText(model, column, false)
} {
}
}; };
} // namespace BPrivate } // namespace BPrivate
@@ -477,4 +475,5 @@ extern status_t TimeFormat(BString &string, int32 index,
using namespace BPrivate; using namespace BPrivate;
#endif // __TEXT_WIDGET_ATTRIBUTE__
#endif // _TEXT_WIDGET_ATTRIBUTE_H