Skip to content

Commit 6a56396

Browse files
committed
App: modify CFavoriteDatabase::Item
1 parent 43e5288 commit 6a56396

4 files changed

Lines changed: 28 additions & 28 deletions

File tree

App/Client/Favorite/FavoriteDatabase.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -315,8 +315,7 @@ bool CFavoriteDatabase::UpdateFavorite(
315315

316316
CFavoriteDatabase::Item CFavoriteDatabase::GetFavorite(int id)
317317
{
318-
Item item;
319-
item.type = TreeItem::Leaf;
318+
Item item(TreeItem::Leaf);
320319
auto leaf = GetLeaf(id);
321320
if(leaf.GetId() == 0)
322321
return item;
@@ -351,8 +350,7 @@ CFavoriteDatabase::Item CFavoriteDatabase::GetFavorite(int id)
351350
QList<CFavoriteDatabase::Item> CFavoriteDatabase::GetFavorite(const QString &szFile)
352351
{
353352
QList<CFavoriteDatabase::Item> lstItems;
354-
Item item;
355-
item.type = TreeItem::Leaf;
353+
Item item(TreeItem::Leaf);
356354

357355
QSqlQuery query(GetDatabase());
358356
query.prepare(
@@ -389,11 +387,10 @@ QList<CFavoriteDatabase::Item> CFavoriteDatabase::GetFavorite(const QString &szF
389387
CFavoriteDatabase::Item CFavoriteDatabase::GetGroup(int id)
390388
{
391389
auto f = GetNode(id);
392-
Item item;
390+
Item item(f.GetType());
393391
item.id = f.GetId();
394392
item.parentId = f.GetParentId();
395393
item.szName = f.GetName();
396-
item.type = f.GetType();
397394
return item;
398395
}
399396

@@ -403,11 +400,10 @@ QList<CFavoriteDatabase::Item> CFavoriteDatabase::GetChildren(int parentId)
403400
// Get nodes
404401
auto folders = GetSubNodes(parentId);
405402
foreach(auto f, folders) {
406-
Item item;
403+
Item item(f.GetType());
407404
item.id = f.GetId();
408405
item.parentId = f.GetParentId();
409406
item.szName = f.GetName();
410-
item.type = f.GetType();
411407
children << item;
412408
}
413409
// Get leaves

App/Client/Favorite/FavoriteDatabase.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,10 @@ class CFavoriteDatabase : public CDatabaseTree
2626
QString szFile;
2727
QString szDescription;
2828
TreeItem::TYPE type;
29-
Item()
29+
explicit Item(TreeItem::TYPE t = TreeItem::Node)
3030
: id(0)
3131
, parentId(0)
32-
, type(TreeItem::Leaf)
32+
, type(t)
3333
{}
3434
QIcon GetIcon() {
3535
if(!icon.isNull())
@@ -40,6 +40,10 @@ class CFavoriteDatabase : public CDatabaseTree
4040
}
4141
bool isFolder() const { return type == TreeItem::Node; }
4242
bool isFavorite() const { return type == TreeItem::Leaf; }
43+
// 添加有效性检查
44+
bool isValid() const {
45+
return id > 0 || !szFile.isEmpty();
46+
}
4347
};
4448

4549
int AddFavorite(const QString &szFile, const QString& szName,

App/Client/Favorite/FavoriteModel.cpp

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -232,8 +232,7 @@ bool CFavoriteModel::AddFavorite(
232232
{
233233
if(!m_pDatabase || !m_Folders.contains(parentId)) return false;
234234
int id = 0;
235-
CFavoriteDatabase::Item item;
236-
item.type = TreeItem::Leaf;
235+
CFavoriteDatabase::Item item(TreeItem::Leaf);
237236
// Check if it already exists
238237
auto items = m_pDatabase->GetFavorite(szFile);
239238
if(items.isEmpty()) {
@@ -318,7 +317,7 @@ bool CFavoriteModel::Copy(QModelIndex index, QModelIndex parentIndex)
318317

319318
CFavoriteDatabase::Item CFavoriteModel::GetFavorite(const QString &szFile)
320319
{
321-
CFavoriteDatabase::Item item;
320+
CFavoriteDatabase::Item item(TreeItem::TYPE::Leaf);
322321
if(!m_pDatabase) return item;
323322
auto items = m_pDatabase->GetFavorite(szFile);
324323
if(!items.isEmpty()) {
@@ -484,7 +483,7 @@ bool CFavoriteModel::MoveTree(const CFavoriteDatabase::Item &item, int newParent
484483
int sourcePos = parent->children.indexOf(cur);
485484
if(sourcePos < 0)
486485
return false;
487-
int desPos = parent->GetInserIndex(cur);
486+
int desPos = newParent->GetInserIndex(cur);
488487
QModelIndex index = CreateIndex(parent);
489488
QModelIndex newIndex = CreateIndex(newParent);
490489
beginMoveRows(index, sourcePos, sourcePos, newIndex, desPos);
@@ -495,7 +494,7 @@ bool CFavoriteModel::MoveTree(const CFavoriteDatabase::Item &item, int newParent
495494
return true;
496495
}
497496

498-
CFavoriteModel::tree::tree()
497+
CFavoriteModel::tree::tree(): item(TreeItem::TYPE::Node)
499498
{}
500499

501500
CFavoriteModel::tree::tree(CFavoriteDatabase::Item i)

App/Client/Favorite/FavoriteView.cpp

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -561,10 +561,11 @@ void CFavoriteView::dropEvent(QDropEvent *event)
561561
#else
562562
auto idxParent = m_pTreeView->indexAt(event->pos());
563563
#endif
564-
CFavoriteDatabase::Item item
565-
= m_pModel->data(idxParent, CFavoriteModel::RoleItem)
566-
.value<CFavoriteDatabase::Item>();
567-
if(0 < item.id && item.isFolder())
564+
QVariant v = m_pModel->data(idxParent, CFavoriteModel::RoleItem);
565+
CFavoriteDatabase::Item item(TreeItem::TYPE::Node);
566+
if(v.isValid())
567+
item = v.value<CFavoriteDatabase::Item>();
568+
if(0 <= item.id && item.isFolder())
568569
{
569570
foreach(auto i, pData->m_Items)
570571
{
@@ -614,15 +615,15 @@ void CFavoriteView::mousePressEvent(QMouseEvent *event)
614615
drag->setMimeData(pData);
615616
Qt::DropAction dropAction = Qt::MoveAction;
616617
/*
617-
if(event->modifiers() & Qt::ControlModifier) {
618-
dropAction = Qt::CopyAction;
619-
// 设置拖拽时的光标
620-
// QIcon icon = QIcon::fromTheme("edit-copy");
621-
// QSize size(16, 16);
622-
// if(!icon.availableSizes().isEmpty())
623-
// size = icon.availableSizes().at(0);
624-
// drag->setDragCursor(icon.pixmap(size), Qt::MoveAction);
625-
}//*/
618+
if(event->modifiers() & Qt::ControlModifier) {
619+
dropAction = Qt::CopyAction;
620+
// 设置拖拽时的光标
621+
// QIcon icon = QIcon::fromTheme("edit-copy");
622+
// QSize size(16, 16);
623+
// if(!icon.availableSizes().isEmpty())
624+
// size = icon.availableSizes().at(0);
625+
// drag->setDragCursor(icon.pixmap(size), Qt::MoveAction);
626+
}//*/
626627
drag->exec(dropAction);
627628
} while(0);
628629
if(drag)

0 commit comments

Comments
 (0)