| 466 | } |
| 467 | |
| 468 | bool CFavoriteModel::MoveTree(const CFavoriteDatabase::Item &item, int newParentId) |
| 469 | { |
| 470 | if(0 == item.id) |
| 471 | return false; |
| 472 | |
| 473 | int parentId = item.parentId; |
| 474 | if(parentId == newParentId) |
| 475 | return true; |
| 476 | |
| 477 | if(item.isFolder() && item.id == newParentId) |
| 478 | return true; |
| 479 | |
| 480 | tree* parent = GetTree(parentId); |
| 481 | if(!parent) return false; |
| 482 | |
| 483 | tree* newParent = GetTree(newParentId); |
| 484 | if(!newParent) return false; |
| 485 | |
| 486 | auto children = parent->FindChild(item); |
| 487 | foreach(auto cur, children) { |
| 488 | int sourcePos = parent->children.indexOf(cur); |
| 489 | if(sourcePos < 0) |
| 490 | return false; |
| 491 | int desPos = newParent->GetInserIndex(cur); |
| 492 | QModelIndex index = CreateIndex(parent); |
| 493 | QModelIndex newIndex = CreateIndex(newParent); |
| 494 | beginMoveRows(index, sourcePos, sourcePos, newIndex, desPos); |
| 495 | parent->RemoveChild(cur); |
| 496 | newParent->AddChild(cur); |
| 497 | endMoveRows(); |
| 498 | } |
| 499 | return true; |
| 500 | } |
| 501 | |
| 502 | CFavoriteModel::tree::tree(): item(TreeItem::TYPE::Node) |
| 503 | {} |