void TFilePanel::SaveState(bool) { BNode defaultingNode; if (DefaultStateSourceNode(kDefaultFilePanelTemplate, &defaultingNode, true, false)) { AttributeStreamFileNode streamNodeDestination(&defaultingNode); SaveWindowState(&streamNodeDestination); PoseView()->SaveState(&streamNodeDestination); } }
void OpenWithContainerWindow::SaveState(bool) { BNode defaultingNode; if (DefaultStateSourceNode(kDefaultOpenWithTemplate, &defaultingNode, true, false)) { AttributeStreamFileNode streamNodeDestination(&defaultingNode); SaveWindowState(&streamNodeDestination); fPoseView->SaveState(&streamNodeDestination); } }
void OpenWithContainerWindow::RestoreState() { BNode defaultingNode; if (DefaultStateSourceNode(kDefaultOpenWithTemplate, &defaultingNode, false)) { AttributeStreamFileNode streamNodeSource(&defaultingNode); RestoreWindowState(&streamNodeSource); fPoseView->Init(&streamNodeSource); } else { RestoreWindowState(NULL); fPoseView->Init(NULL); } }
void TFilePanel::RestoreState() { BNode defaultingNode; if (DefaultStateSourceNode(kDefaultFilePanelTemplate, &defaultingNode, false)) { AttributeStreamFileNode streamNodeSource(&defaultingNode); RestoreWindowState(&streamNodeSource); PoseView()->Init(&streamNodeSource); } else { RestoreWindowState(NULL); PoseView()->Init(NULL); } }
void BQueryContainerWindow::SetUpDefaultState() { BNode defaultingNode; WindowStateNodeOpener opener(this, true); // this is our destination node, whatever it is for this window if (!opener.StreamNode()) return; BString defaultStatePath(kQueryTemplates); BString sanitizedType(PoseView()->SearchForType()); defaultStatePath += '/'; int32 length = sanitizedType.Length(); char *buf = sanitizedType.LockBuffer(length); for (int32 index = length - 1; index >= 0; index--) if (buf[index] == '/') buf[index] = '_'; sanitizedType.UnlockBuffer(length); defaultStatePath += sanitizedType; PRINT(("looking for default query state at %s\n", defaultStatePath.String())); if (!DefaultStateSourceNode(defaultStatePath.String(), &defaultingNode, false)) { TRACE(); return; } // copy over the attributes // set up a filter of the attributes we want copied const char *allowAttrs[] = { kAttrWindowFrame, kAttrViewState, kAttrViewStateForeign, kAttrColumns, kAttrColumnsForeign, 0 }; // do it AttributeStreamMemoryNode memoryNode; NamesToAcceptAttrFilter filter(allowAttrs); AttributeStreamFileNode fileNode(&defaultingNode); *opener.StreamNode() << memoryNode << filter << fileNode; }
void TFilePanel::RestoreState() { BNode defaultingNode; if (DefaultStateSourceNode(kDefaultFilePanelTemplate, &defaultingNode, false)) { AttributeStreamFileNode streamNodeSource(&defaultingNode); RestoreWindowState(&streamNodeSource); PoseView()->Init(&streamNodeSource); } else { RestoreWindowState(NULL); PoseView()->Init(NULL); } // Finish UI creation now that the PoseView is initialized BLayoutItem* item = fBorderedView->GroupLayout()->AddView(0, fPoseView->TitleView()); BSize minSize = item->MinSize(); BSize maxSize = item->MaxSize(); item->SetExplicitMinSize(BSize(minSize.Width(), kTitleViewHeight)); item->SetExplicitMaxSize(BSize(maxSize.Width(), kTitleViewHeight)); BRect rect(fBorderedView->Frame()); rect.right = rect.left + kCountViewWidth; rect.top = rect.bottom + 1; rect.bottom = rect.top + PoseView()->HScrollBar()->Bounds().Height() - 1; PoseView()->CountView()->MoveTo(rect.LeftTop()); PoseView()->CountView()->ResizeTo(rect.Size()); PoseView()->CountView()->SetResizingMode(B_FOLLOW_LEFT | B_FOLLOW_BOTTOM); fBackView->AddChild(PoseView()->CountView(), fBorderedView); PoseView()->HScrollBar()->MoveBy(kCountViewWidth + 1, 0); PoseView()->HScrollBar()->ResizeBy(-kCountViewWidth - 1, 0); // The Be Book states that the BTitleView will have a name of "TitleView", // and so some apps will try to grab it by that name and move it around. // They don't need to, because resizing "PoseView" (really the BorderedView) // will resize the BTitleView as well. So just create a dummy view here // so that they don't get NULL when trying to find the view. BView* dummyTitleView = new BView(BRect(), "TitleView", B_FOLLOW_NONE, 0); fBackView->AddChild(dummyTitleView); dummyTitleView->Hide(); }