Skip to content

Commit ef0c66c

Browse files
committed
Additional debug info to trace drop row
1 parent e05b5c5 commit ef0c66c

File tree

7 files changed

+57
-56
lines changed

7 files changed

+57
-56
lines changed

plugins/gui/include/gui/context_manager_widget/context_manager_widget.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,6 @@ namespace hal
205205
void handleRenameClicked();
206206
void handleDuplicateContextClicked();
207207
void handleDeleteClicked();
208-
void handleMoveToplevelClicked();
209208

210209
void handleContextMenuRequest(const QPoint& point);
211210
void handleSelectionChanged(const QItemSelection& selected, const QItemSelection& deselected);
@@ -245,10 +244,6 @@ namespace hal
245244
QString mOpenIconPath;
246245
QString mOpenIconStyle;
247246

248-
QAction* mMoveToplevelAction;
249-
QString mMoveToplevelPath;
250-
QString mMoveToplevelStyle;
251-
252247
QString mSearchIconPath;
253248
QString mSearchIconStyle;
254249
QString mSearchActiveIconStyle;

plugins/gui/include/gui/user_action/action_move_item.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ namespace hal
4343
{
4444
u32 mSourceParentId;
4545
u32 mTargetParentId;
46+
int mTargetRow;
4647

4748
public:
4849
/**
@@ -51,7 +52,7 @@ namespace hal
5152
* Will move the tree item to new parent,
5253
* action object must indicate tree item
5354
*/
54-
ActionMoveItem(u32 tgtId = 0, u32 srcId = 0);
55+
ActionMoveItem(u32 tgtId = 0, u32 srcId = 0, int tgtRow = -1);
5556

5657
bool exec() override;
5758
QString tagname() const override;

plugins/gui/src/basic_tree_model/base_tree_item.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#include "gui/basic_tree_model/base_tree_item.h"
2-
2+
#include <iostream>
33

44
namespace hal
55
{
@@ -45,6 +45,7 @@ namespace hal
4545
void BaseTreeItem::insertChild(int index, BaseTreeItem *child)
4646
{
4747
child->setParent(this);
48+
std::cerr << "...chld " << index << std::endl;
4849
mChildren.insert(index, child);
4950
}
5051

plugins/gui/src/basic_tree_model/base_tree_model.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ namespace hal
154154
if (row < 0) row = parentItem->getChildCount();
155155
QModelIndex index = getIndexFromItem(parentItem);
156156
beginInsertRows(index, row, row);
157-
parentItem->appendChild(childItem);
157+
parentItem->insertChild(row,childItem);
158158
endInsertRows();
159159
}
160160

plugins/gui/src/context_manager_widget/context_manager_widget.cpp

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ namespace hal
4040
{
4141
ContextManagerWidget::ContextManagerWidget(GraphTabWidget* tab_view, QWidget* parent)
4242
: ContentWidget("Views", parent), mSearchbar(new Searchbar(this)), mNewDirectoryAction(new QAction(this)), mNewViewAction(new QAction(this)), mRenameAction(new QAction(this)), mDuplicateAction(new QAction(this)),
43-
mDeleteAction(new QAction(this)), mOpenAction(new QAction(this)), mMoveToplevelAction(new QAction(this))
43+
mDeleteAction(new QAction(this)), mOpenAction(new QAction(this))
4444
{
4545
//needed to load the properties
4646
ensurePolished();
@@ -52,7 +52,6 @@ namespace hal
5252
mRenameAction->setIcon(gui_utility::getStyledSvgIcon(mRenameIconStyle, mRenameIconPath));
5353
mDuplicateAction->setIcon(gui_utility::getStyledSvgIcon(mDuplicateIconStyle, mDuplicateIconPath));
5454
mDeleteAction->setIcon(gui_utility::getStyledSvgIcon(mDeleteIconStyle, mDeleteIconPath));
55-
mMoveToplevelAction->setIcon(gui_utility::getStyledSvgIcon(mMoveToplevelStyle, mMoveToplevelPath));
5655
mSearchAction->setIcon(gui_utility::getStyledSvgIcon(mSearchIconStyle, mSearchIconPath));
5756

5857
mOpenAction->setToolTip("Open");
@@ -61,7 +60,6 @@ namespace hal
6160
mRenameAction->setToolTip("Rename");
6261
mDuplicateAction->setToolTip("Duplicate");
6362
mDeleteAction->setToolTip("Delete");
64-
mMoveToplevelAction->setToolTip("to toplevel");
6563
mSearchAction->setToolTip("Search");
6664

6765
mOpenAction->setText("Open view");
@@ -70,7 +68,6 @@ namespace hal
7068
mRenameAction->setText("Rename item");
7169
mDuplicateAction->setText("Duplicate view");
7270
mDeleteAction->setText("Delete item");
73-
mMoveToplevelAction->setText("Move to toplevel");
7471
mSearchAction->setText("Search");
7572

7673
//mOpenAction->setEnabled(false);
@@ -110,7 +107,6 @@ namespace hal
110107
connect(mRenameAction, &QAction::triggered, this, &ContextManagerWidget::handleRenameClicked);
111108
connect(mDuplicateAction, &QAction::triggered, this, &ContextManagerWidget::handleDuplicateContextClicked);
112109
connect(mDeleteAction, &QAction::triggered, this, &ContextManagerWidget::handleDeleteClicked);
113-
connect(mMoveToplevelAction, &QAction::triggered, this, &ContextManagerWidget::handleMoveToplevelClicked);
114110
connect(mSearchAction, &QAction::triggered, this, &ContextManagerWidget::toggleSearchbar);
115111

116112
connect(mContextTreeView, &QTreeView::customContextMenuRequested, this, &ContextManagerWidget::handleContextMenuRequest);
@@ -175,30 +171,6 @@ namespace hal
175171
mTabView->showContext(defaultContext);
176172
}
177173

178-
void ContextManagerWidget::handleMoveToplevelClicked()
179-
{
180-
ContextTreeItem* clicked_item = getCurrentItem();
181-
if (!clicked_item) return;
182-
183-
UserActionObject uao;
184-
if (clicked_item->isContext())
185-
uao = UserActionObject(clicked_item->context()->id(), UserActionObjectType::ContextView);
186-
else if (clicked_item->isDirectory())
187-
uao = UserActionObject(clicked_item->directory()->id(), UserActionObjectType::ContextDir);
188-
else
189-
return;
190-
191-
BaseTreeItem* bti = clicked_item->getParent();
192-
while (bti->getParent())
193-
bti = bti->getParent();
194-
195-
ActionMoveItem* act = new ActionMoveItem(0);
196-
act->setObject(uao);
197-
act->exec();
198-
199-
mContextTreeModel->moveItem(clicked_item,bti);
200-
}
201-
202174
void ContextManagerWidget::handleItemDoubleClicked(const QModelIndex &proxyIndex)
203175
{
204176
QModelIndex sourceIndex = mContextTreeProxyModel->mapToSource(proxyIndex);
@@ -371,10 +343,6 @@ namespace hal
371343
context_menu.addAction(mRenameAction);
372344
}
373345

374-
// unless parent is rootItem thus not a ContextTreeItem
375-
if (dynamic_cast<ContextTreeItem*>(item->getParent()))
376-
context_menu.addAction(mMoveToplevelAction);
377-
378346
context_menu.exec(mContextTreeView->viewport()->mapToGlobal(point));
379347
}
380348

@@ -659,6 +627,7 @@ namespace hal
659627

660628
void ContextManagerWidget::handleFocusChanged(QWidget* oldWidget, QWidget* newWidget)
661629
{
630+
Q_UNUSED(oldWidget);
662631
if(!newWidget) return;
663632
if(newWidget->parent() == this)
664633
{
@@ -671,5 +640,4 @@ namespace hal
671640
return;
672641
}
673642
}
674-
675643
}

plugins/gui/src/context_manager_widget/models/context_tree_model.cpp

Lines changed: 41 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,8 @@ namespace hal
4646
{
4747
case 0:
4848
return mDirectory->name();
49+
case 1:
50+
return mDirectory->id();
4951
default:
5052
return "";
5153
}
@@ -230,10 +232,30 @@ namespace hal
230232
Q_UNUSED(column)
231233
Q_UNUSED(action)
232234
Q_UNUSED(row)
235+
236+
std::cerr << " test " << row << (parent.isValid() ? " valid" : " root") << std::endl;
237+
238+
if (!parent.isValid())
239+
return true; // can always drop on root
240+
233241
int moveRow = -1;
234242
quintptr moveParent = 0;
235243
if(!mimeData->formats().contains("contexttreemodel/item")) return false;
236244

245+
/*
246+
{
247+
if (parent.isValid())
248+
{
249+
ContextTreeItem* cti = dynamic_cast<ContextTreeItem*>(getItemFromIndex(parent));
250+
if (cti)
251+
qDebug() << "drop on " << (cti->isDirectory() ? "directory" : "view") << cti->getId() << row << column;
252+
else
253+
qDebug() << "drop on root " << row << column;
254+
}
255+
else
256+
qDebug() << "drop no parent " << row << column;
257+
}
258+
*/
237259
BaseTreeItem* targetParentItem = getItemFromIndex(parent);
238260
if (targetParentItem == mRootItem) return true;
239261
ContextTreeItem* parentItem = dynamic_cast<ContextTreeItem*>(getItemFromIndex(parent));
@@ -264,43 +286,50 @@ namespace hal
264286
int sourceRow = -1;
265287
quintptr sourceParent = 0;
266288

289+
std::cerr << "***drop " << row << (parent.isValid() ? " valid" : " root") << std::endl;
267290
auto encItem = mimeData->data("contexttreemodel/item");
268291
QDataStream dataStream(&encItem, QIODevice::ReadOnly);
269292
dataStream >> type >> id >> sourceRow >> sourceParent;
270-
271-
BaseTreeItem* targetParentItem = getItemFromIndex(parent);
272293
ContextTreeItem* sourceParentItem = dynamic_cast<ContextTreeItem*>((BaseTreeItem*) sourceParent);
273294

274-
u32 targetId = 0;
275-
ContextTreeItem* cti = dynamic_cast<ContextTreeItem*>(targetParentItem);
276-
if (cti) targetId = cti->getId();
277-
278-
UserActionObject uao;
279-
280295
QModelIndex moveInx = index(sourceRow, 0, getIndexFromItem((BaseTreeItem*) sourceParent));
281296
ContextTreeItem* itemToMove = dynamic_cast<ContextTreeItem*>(getItemFromIndex(moveInx));
297+
UserActionObject uao;
282298
if (itemToMove->isContext())
283299
uao = UserActionObject(itemToMove->context()->id(), UserActionObjectType::ContextView);
284300
else if (itemToMove->isDirectory())
285301
uao = UserActionObject(itemToMove->directory()->id(), UserActionObjectType::ContextDir);
286302
else
287303
return false;
288304

289-
ActionMoveItem* act = new ActionMoveItem(targetId, sourceParentItem ? sourceParentItem->getId() : 0);
305+
u32 targetId = 0;
306+
307+
if (parent.isValid())
308+
{
309+
BaseTreeItem* targetParentItem = getItemFromIndex(parent);
310+
ContextTreeItem* cti = dynamic_cast<ContextTreeItem*>(targetParentItem);
311+
if (cti)
312+
{
313+
if (!cti->isDirectory()) return false;
314+
targetId = cti->directory()->id();
315+
}
316+
317+
}
318+
319+
ActionMoveItem* act = new ActionMoveItem(targetId, sourceParentItem ? sourceParentItem->getId() : 0, row);
290320
act->setObject(uao);
291321
act->exec();
292322
return true;
293323
}
294324

295-
296325
BaseTreeItem* ContextTreeModel::getDirectory(u32 directoryId) const
297326
{
298327
return getItemInternal(mRootItem, directoryId, true);
299328
}
300329

301330
BaseTreeItem* ContextTreeModel::getContext(u32 contextId) const
302331
{
303-
return getItemInternal(mRootItem, contextId, true);
332+
return getItemInternal(mRootItem, contextId, false);
304333
}
305334

306335
BaseTreeItem* ContextTreeModel::getItemInternal(BaseTreeItem *parentItem, u32 id, bool isDirectory) const
@@ -511,6 +540,7 @@ namespace hal
511540

512541
bool ContextTreeModel::moveItem(ContextTreeItem* itemToMove, BaseTreeItem *newParent, int row)
513542
{
543+
std::cerr << "...move " << row << std::endl;
514544
if (!itemToMove || !newParent ) return false;
515545
if (newParent != mRootItem)
516546
{

plugins/gui/src/user_action/action_move_item.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ namespace hal
2020
return new ActionMoveItem;
2121
}
2222

23-
ActionMoveItem::ActionMoveItem(u32 tgtId, u32 srcId)
24-
: mSourceParentId(srcId), mTargetParentId(tgtId)
23+
ActionMoveItem::ActionMoveItem(u32 tgtId, u32 srcId, int tgtRow)
24+
: mSourceParentId(srcId), mTargetParentId(tgtId), mTargetRow(tgtRow)
2525
{;}
2626

2727
QString ActionMoveItem::tagname() const
@@ -54,16 +54,19 @@ namespace hal
5454

5555
bool ActionMoveItem::exec()
5656
{
57-
if (!mTargetParentId || !mObject.id()) return false;
57+
if (!mObject.id()) return false;
5858

59+
std::cerr << " actx " << mTargetRow << std::endl;
5960
BaseTreeItem* bti = nullptr;
61+
bool isDirectory = false;
6062

6163
switch (mObject.type()) {
6264
case UserActionObjectType::ContextView:
6365
bti = gGraphContextManager->getContextTreeModel()->getContext(mObject.id());
6466
break;
6567
case UserActionObjectType::ContextDir:
6668
bti = gGraphContextManager->getContextTreeModel()->getDirectory(mObject.id());
69+
isDirectory = true;
6770
break;
6871
default:
6972
break;
@@ -77,6 +80,9 @@ namespace hal
7780
}
7881

7982
mUndoAction = new ActionMoveItem(mSourceParentId, mTargetParentId);
83+
mUndoAction->setObject(mObject);
84+
85+
gGraphContextManager->moveItem(mObject.id(), isDirectory, mTargetParentId, mTargetRow);
8086

8187
return UserAction::exec();
8288
}

0 commit comments

Comments
 (0)