Consolidate strings so they are added to the catalog just once.

This commit is contained in:
John Scipione 2013-04-28 23:41:34 -04:00
parent 337a12f63f
commit e001e604b9
1 changed files with 55 additions and 39 deletions

View File

@ -109,6 +109,28 @@ static const char* kDragNDropActionSpecifiers [] = {
const uint32 kAttachFile = 'attf'; const uint32 kAttachFile = 'attf';
static const int32 operators[] = {
B_CONTAINS,
B_EQ,
B_NE,
B_BEGINS_WITH,
B_ENDS_WITH,
B_GE,
B_LE
};
static const char* operatorLabels[] = {
B_TRANSLATE_MARK("contains"),
B_TRANSLATE_MARK("is"),
B_TRANSLATE_MARK("is not"),
B_TRANSLATE_MARK("starts with"),
B_TRANSLATE_MARK("ends with"),
B_TRANSLATE_MARK("greater than"),
B_TRANSLATE_MARK("less than"),
B_TRANSLATE_MARK("before"),
B_TRANSLATE_MARK("after")
};
namespace BPrivate { namespace BPrivate {
@ -2483,29 +2505,18 @@ FindPanel::AddAttributeControls(int32 gridRow)
BMenuItem* item = new BMenuItem(submenu, message); BMenuItem* item = new BMenuItem(submenu, message);
menu->AddItem(item); menu->AddItem(item);
const int32 operators[] = {
B_CONTAINS,
B_EQ,
B_NE,
B_BEGINS_WITH,
B_ENDS_WITH};
static const char* operatorLabels[] = {
B_TRANSLATE_MARK("contains"),
B_TRANSLATE_MARK("is"),
B_TRANSLATE_MARK("is not"),
B_TRANSLATE_MARK("starts with"),
B_TRANSLATE_MARK("ends with")};
for (int32 i = 0; i < 5; i++) { for (int32 i = 0; i < 5; i++) {
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", operators[i]); message->AddInt32("operator", operators[i]);
submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT( submenu->AddItem(new BMenuItem(
operatorLabels[i]), message)); B_TRANSLATE_NOCOLLECT(operatorLabels[i]), message));
} }
// mark first item // mark first items if not marked
menu->ItemAt(0)->SetMarked(true); if (menu->FindMarked() == NULL)
submenu->ItemAt(0)->SetMarked(true); menu->ItemAt(0)->SetMarked(true);
if (submenu->FindMarked() == NULL)
submenu->ItemAt(0)->SetMarked(true);
// add SIZE attribute // add SIZE attribute
submenu = new BMenu(B_TRANSLATE("Size")); submenu = new BMenu(B_TRANSLATE("Size"));
@ -2519,15 +2530,18 @@ FindPanel::AddAttributeControls(int32 gridRow)
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_GE); message->AddInt32("operator", B_GE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("greater than"), message)); submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[5]),
message));
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_LE); message->AddInt32("operator", B_LE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("less than"), message)); submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[6]),
message));
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_EQ); message->AddInt32("operator", B_EQ);
submenu->AddItem(new BMenuItem(B_TRANSLATE("is"), message)); submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[1]),
message));
// add "modified" field // add "modified" field
submenu = new BMenu(B_TRANSLATE("Modified")); submenu = new BMenu(B_TRANSLATE("Modified"));
@ -2541,16 +2555,24 @@ FindPanel::AddAttributeControls(int32 gridRow)
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_LE); message->AddInt32("operator", B_LE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("before"), message)); submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[7]),
message));
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_GE); message->AddInt32("operator", B_GE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("after"), message)); submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(operatorLabels[8]),
message));
BMenuField* menuField = new BMenuField("MenuField", "", menu); BMenuField* menuField = new BMenuField("MenuField", "", menu);
menuField->SetDivider(0.0f); menuField->SetDivider(0.0f);
fAttrGrid->AddView(menuField, 0, gridRow); fAttrGrid->AddView(menuField, 0, gridRow);
BStringView* stringView = new BStringView("",
menu->FindMarked()->Submenu()->FindMarked()->Label());
BLayoutItem* layoutItem = fAttrGrid->AddView(stringView, 1, gridRow);
layoutItem->SetExplicitAlignment(BAlignment(B_ALIGN_RIGHT,
B_ALIGN_VERTICAL_UNSET));
BString title("TextEntry"); BString title("TextEntry");
title << gridRow; title << gridRow;
BTextControl* textControl = new BTextControl(title.String(), "", "", NULL); BTextControl* textControl = new BTextControl(title.String(), "", "", NULL);
@ -2737,29 +2759,25 @@ FindPanel::AddAttributes(BMenu* menu, const BMimeType &mimeType)
case B_STRING_TYPE: case B_STRING_TYPE:
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_CONTAINS); message->AddInt32("operator", B_CONTAINS);
submenu->AddItem(new BMenuItem(B_TRANSLATE("contains"), submenu->AddItem(new BMenuItem(operatorLabels[0], message));
message));
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_EQ); message->AddInt32("operator", B_EQ);
submenu->AddItem(new BMenuItem(B_TRANSLATE("is"), message)); submenu->AddItem(new BMenuItem(operatorLabels[1], message));
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_NE); message->AddInt32("operator", B_NE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("is not"), submenu->AddItem(new BMenuItem(operatorLabels[2], message));
message));
submenu->SetTargetForItems(this); submenu->SetTargetForItems(this);
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_BEGINS_WITH); message->AddInt32("operator", B_BEGINS_WITH);
submenu->AddItem(new BMenuItem(B_TRANSLATE("starts with"), submenu->AddItem(new BMenuItem(operatorLabels[3], message));
message));
submenu->SetTargetForItems(this); submenu->SetTargetForItems(this);
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_ENDS_WITH); message->AddInt32("operator", B_ENDS_WITH);
submenu->AddItem(new BMenuItem(B_TRANSLATE("ends with"), submenu->AddItem(new BMenuItem(operatorLabels[4], message));
message));
break; break;
case B_BOOL_TYPE: case B_BOOL_TYPE:
@ -2776,27 +2794,25 @@ FindPanel::AddAttributes(BMenu* menu, const BMimeType &mimeType)
case B_DOUBLE_TYPE: case B_DOUBLE_TYPE:
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_EQ); message->AddInt32("operator", B_EQ);
submenu->AddItem(new BMenuItem(B_TRANSLATE("is"), message)); submenu->AddItem(new BMenuItem(operatorLabels[1], message));
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_GE); message->AddInt32("operator", B_GE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("greater than"), submenu->AddItem(new BMenuItem(operatorLabels[5], message));
message));
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_LE); message->AddInt32("operator", B_LE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("less than"), submenu->AddItem(new BMenuItem(operatorLabels[6], message));
message));
break; break;
case B_TIME_TYPE: case B_TIME_TYPE:
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_LE); message->AddInt32("operator", B_LE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("before"), message)); submenu->AddItem(new BMenuItem(operatorLabels[7], message));
message = new BMessage(kAttributeItem); message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_GE); message->AddInt32("operator", B_GE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("after"), message)); submenu->AddItem(new BMenuItem(operatorLabels[8], message));
break; break;
} }
submenu->SetTargetForItems(this); submenu->SetTargetForItems(this);