| 654 | } |
| 655 | |
| 656 | bool CRemoteFileSystemModel::setData( |
| 657 | const QModelIndex &index, const QVariant &value, int role) |
| 658 | { |
| 659 | qDebug(log) << Q_FUNC_INFO << index << value << role; |
| 660 | if(!index.isValid()) |
| 661 | return false; |
| 662 | if(Qt::EditRole != role) { |
| 663 | return QAbstractItemModel::setData(index, value, role); |
| 664 | } |
| 665 | |
| 666 | // Rename |
| 667 | auto p = GetRemoteFileSystemFromIndex(index); |
| 668 | QString szName = value.toString(); |
| 669 | if(p && !p->GetPath().isEmpty() && p->GetName() != szName) { |
| 670 | QFileInfo fi(p->GetPath()); |
| 671 | szName = fi.path() + "/" + szName; |
| 672 | emit sigRename(p->GetPath(), szName); |
| 673 | auto pParent = p->GetParent(); |
| 674 | if(pParent) { |
| 675 | Q_ASSERT(pParent == GetRemoteFileSystemFromIndex(index.parent())); |
| 676 | int nIdx = pParent->IndexOf(p); |
| 677 | beginRemoveRows(index.parent(), nIdx, nIdx); |
| 678 | pParent->RemoveChild(nIdx); |
| 679 | DeleteRemoteFileSystem(p); |
| 680 | endRemoveRows(); |
| 681 | pParent->SetState(CRemoteFileSystem::State::No); |
| 682 | fetchMore(index.parent()); |
| 683 | } |
| 684 | } |
| 685 | return true; |
| 686 | } |
| 687 | |
| 688 | Qt::ItemFlags CRemoteFileSystemModel::flags(const QModelIndex &index) const |
| 689 | { |