Skip to content

Instantly share code, notes, and snippets.

@jessicah
Created April 18, 2013 00:23
Show Gist options
  • Save jessicah/5408885 to your computer and use it in GitHub Desktop.
Save jessicah/5408885 to your computer and use it in GitHub Desktop.
void
FindPanel::AddAttrRow()
{
BBox* box = dynamic_cast<BBox*>(FindView("Box"));
BGridView* grid = dynamic_cast<BGridView*>(box->FindView("AttrFields"));
if (grid == NULL) {
grid = new BGridView("AttrFields");
box->AddChild(grid);
grid->SetLayout(new BGridLayout());
}
BGridLayout *layout = grid->GridLayout();
BPopUpMenu* menu = new BPopUpMenu("PopUp");
// add NAME attribute to popup
BMenu *submenu = new BMenu(B_TRANSLATE("Name"));
submenu->SetRadioMode(true);
submenu->SetFont(be_plain_font);
BMessage* message = new BMessage(kAttributeItemMain);
message->AddString("name", "name");
message->AddInt32("type", B_STRING_TYPE);
BMenuItem* item = new BMenuItem(submenu, message);
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++) {
message = new BMessage(kAttributeItem);
message->AddInt32("operator", operators[i]);
submenu->AddItem(new BMenuItem(B_TRANSLATE_NOCOLLECT(
operatorLabels[i]), message));
}
// mark first item
menu->ItemAt(0)->SetMarked(true);
submenu->ItemAt(0)->SetMarked(true);
// add SIZE attribute
submenu = new BMenu(B_TRANSLATE("Size"));
submenu->SetRadioMode(true);
submenu->SetFont(be_plain_font);
message = new BMessage(kAttributeItemMain);
message->AddString("name", "size");
message->AddInt32("type", B_OFF_T_TYPE);
item = new BMenuItem(submenu, message);
menu->AddItem(item);
message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_GE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("greater than"), message));
message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_LE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("less than"), message));
message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_EQ);
submenu->AddItem(new BMenuItem(B_TRANSLATE("is"), message));
// add "modified" field
submenu = new BMenu(B_TRANSLATE("Modified"));
submenu->SetRadioMode(true);
submenu->SetFont(be_plain_font);
message = new BMessage(kAttributeItemMain);
message->AddString("name", "last_modified");
message->AddInt32("type", B_TIME_TYPE);
item = new BMenuItem(submenu, message);
menu->AddItem(item);
message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_LE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("before"), message));
message = new BMessage(kAttributeItem);
message->AddInt32("operator", B_GE);
submenu->AddItem(new BMenuItem(B_TRANSLATE("after"), message));
int nextRow = layout->CountRows();
BMenuField* menuField = new BMenuField("MenuField", "", menu);
menuField->SetDivider(0.0f);
layout->AddItem(menuField->CreateMenuBarLayoutItem(), 0, nextRow);
BString title("TextEntry");
title << (nextRow + 1);
BTextControl* textControl = new BTextControl(title.String(), "", "", NULL);
textControl->SetDivider(0.0f);
layout->AddItem(textControl->GetLayout(), 1, nextRow);
// add logic to previous attrview
if (layout->CountRows() > 1)
; // previous->AddLogicMenu()
SetUpAddRemoveButtons(NULL); // needs fixing
// populate mime popup
AddMimeTypeAttrs(menu);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment