void NavigatorEditor::InsertNewList(BListView *source) { TRACE(); int32 selection = -1; BaseListItem *item = NULL; selection = source->CurrentSelection(0); if (selection>=0) { item =(BaseListItem *) source->ItemAt(selection); //vorher alle überfüssigen Views löschen BView *sibling=source->Parent()->NextSibling(); while (sibling != NULL) { RemoveChild(sibling); sibling=source->Parent()->NextSibling(); } if (item->GetSupportedType() == P_C_CLASS_TYPE) { BRect listrect = Bounds(); listrect.left = source->Parent()->Frame().right+5; listrect.right = listrect.left +400; if (listrect.right > Bounds().right) { ResizeTo(listrect.right+B_V_SCROLL_BAR_WIDTH+5,Bounds().bottom); } BListView *list = new MessageListView(doc,listrect,((NodeItem *)item)->GetNode()); BMessage *invoked = new BMessage(N_A_INVOKATION); invoked->AddPointer("ListView",list); list->SetInvocationMessage(invoked); list->SetTarget(this); AddChild(new BScrollView("root",list,B_FOLLOW_LEFT | B_FOLLOW_TOP_BOTTOM,0,false,true)); } Invalidate(); } }
status_t PListView::SetProperty(const char *name, PValue *value, const int32 &index) { if (!name || !value) return B_ERROR; BString str(name); PProperty *prop = FindProperty(name,index); if (!prop) return B_NAME_NOT_FOUND; if (FlagsForProperty(prop) & PROPERTY_READ_ONLY) return B_READ_ONLY; BListView *backend = (BListView*)fView; BoolValue boolval; CharValue charval; ColorValue colorval; FloatValue floatval; IntValue intval; PointValue pointval; RectValue rectval; StringValue stringval; status_t status = prop->SetValue(value); if (status != B_OK) return status; if (backend->Window()) backend->Window()->Lock(); else if (str.ICompare("SelectionMessage") == 0) { BMessage selMsg(*intval.value); backend->SetSelectionMessage(&selMsg); } else if (str.ICompare("InvocationMessage") == 0) { BMessage invMsg(*intval.value); backend->SetInvocationMessage(&invMsg); } else if (str.ICompare("SelectionType") == 0) { prop->GetValue(&intval); backend->SetListType((list_view_type)*intval.value); } else { if (backend->Window()) backend->Window()->Unlock(); return PView::SetProperty(name, value, index); } if (backend->Window()) backend->Window()->Unlock(); return prop->GetValue(value); }