void AccessTreeViewListener::OnDropIndex(DesktopDragObject* drag_object, index_gid_t source, index_gid_t dest) { AccessModel* model = static_cast<AccessModel*>(m_treeview.GetTreeModel()); Indexer* indexer = g_m2_engine->GetIndexer(); if (dest == 0) dest = model->GetCategoryID(); else if (drag_object->GetInsertType() == DesktopDragObject::INSERT_BEFORE || drag_object->GetInsertType() == DesktopDragObject::INSERT_AFTER) dest = indexer->GetIndexById(dest)->GetParentId(); if (!CanDropIndex(source, dest)) return; // corner case, changing the order of two folders OpINT32Vector children; indexer->GetChildren(source, children, FALSE); if (children.Find(dest) != -1) { Index* index = indexer->GetIndexById(dest); while (index->GetParentId() != source) { index = indexer->GetIndexById(index->GetParentId()); } index->SetParentId(indexer->GetIndexById(source)->GetParentId()); } indexer->GetIndexById(source)->SetParentId(dest); }
OP_STATUS OPMLM2ImportHandler::OnOutlineBegin(const OpStringC& text, const OpStringC& xml_url, const OpStringC& title, const OpStringC& description) { if (xml_url.HasContent()) { const OpStringC& folder_name = title.HasContent() ? title : text; // First we see if this index already exists. Index* index = m_indexer->GetSubscribedFolderIndex(m_newsfeed_account, xml_url, 0, folder_name, FALSE, FALSE); if (index == 0) { // Didn't exist; create it. if ((index = m_indexer->GetSubscribedFolderIndex(m_newsfeed_account, xml_url, 0, folder_name, TRUE, FALSE)) == 0) return OpStatus::ERR; g_m2_engine->RefreshFolder(index->GetId()); if (m_parent_folder) index->SetParentId(m_parent_folder->GetId()); ++m_import_count; } } else { // this is a folder m_parent_folder = m_indexer->GetFeedFolderIndexByName(m_parent_folder->GetId(), title.HasContent() ? title : text); } return OpStatus::OK; }