bool FrissConfig::Save( const char* path ) { XmlNode* root = new XmlNode( NULL, "" ); XmlNode* fs = NULL, *f = NULL; BString s; fs = root->CreateChild("settings"); fs->AddAttribute("version", m_iVersion); f = new XmlNode(fs, "comment"); f->Comment("This file is auto-generated. See documentation for help."); fs->AddChild(f); f = fs->CreateChild("generic/feeds"); f->AddAttribute("a", m_iIndex); f->AddAttribute("b", m_iAnz); f = fs->CreateChild("generic/refresh"); f->AddAttribute("rate", RefreshRate ); if (RefreshAdvances) f->AddAttribute("advance", "true"); else f->AddAttribute("advance", "false"); fs->CreateChild("generic/language", Lang.String()); fs->CreateChild("generic/feedfile", Feedlist.String()); f = fs->CreateChild("window/position"); f->AddAttribute("x", m_rWindow.left); f->AddAttribute("y", m_rWindow.top); f->AddAttribute("width", m_rWindow.Width()); f->AddAttribute("height", m_rWindow.Height()); fs->CreateChild("window/background/mode", (int)ColBackMode); f = fs->CreateChild("window/background/colour"); f->AddAttribute("red", col.red); f->AddAttribute("green", col.green); f->AddAttribute("blue", col.blue); fs->CreateChild("window/foreground/mode", (int)ColForeMode); f = fs->CreateChild("window/foreground/colour"); f->AddAttribute("red", high.red); f->AddAttribute("green", high.green); f->AddAttribute("blue", high.blue); fs->CreateChild("window/windowmode", (int)WindowMode); fs->CreateChild("browser/mode", (int)BrowserType); fs->CreateChild("browser/mime", BrowserMime.String()); root->SaveToFile(path); delete root; return false; }
void PrefListView::MessageReceived(BMessage* msg) { switch (msg->what) { case 'ITEM': { puts("We have a winner, supposably ;-)"); BPoint dropzone; msg->FindPoint("_drop_point_", &dropzone); dropzone = ConvertFromScreen(dropzone); int32 i, nr; msg->FindInt32("Item", &i); msg->FindInt32("Item_nr", &nr); XmlNode* Item = (XmlNode*)i; XmlNode* toItem = dynamic_cast<XmlNode*>(ItemAt(IndexOf(dropzone))); // Only proceed if valid if (toItem && Item && toItem!=Item) { XmlNode* parent = Item->Parent(); uint32 index = parent->IndexOf(Item); uint32 toIndex = toItem->Parent()->IndexOf(toItem); if (index<toIndex) toIndex++; parent->DetachChild(index); if (toItem->Attribute(OPML_URL)!=NULL) { toItem->Parent()->AddChild(Item, toIndex); } else { toItem->AddChild(Item,0); } MakeEmpty(); BuildView(root); Invalidate(); } } break; default: BOutlineListView::MessageReceived(msg); } }