Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: [project] Optimize project tree icon loading and parsing #1013

Merged
merged 1 commit into from
Dec 6, 2024

Conversation

Kakueeen
Copy link
Contributor

@Kakueeen Kakueeen commented Dec 6, 2024

Refactored project tree icon loading mechanism and parsing process to improve
performance and maintainability:

  • Moved icon loading from individual items to ProjectModel data() method
  • Added ProjectItemRole enum for icon name and file path roles
  • Replaced direct icon setting with role-based data storage
  • Implemented stop mechanism for cmake async parsing
  • Moved cmake parser to separate thread for better responsiveness
  • Unified parsing state role usage across project types
  • Removed redundant icon loading code from various parsers
  • Added sorting capability to project tree

Log: Optimize project tree icon loading and parsing mechanism

Refactored project tree icon loading mechanism and parsing process to improve
performance and maintainability:

- Moved icon loading from individual items to ProjectModel data() method
- Added ProjectItemRole enum for icon name and file path roles
- Replaced direct icon setting with role-based data storage
- Implemented stop mechanism for cmake async parsing
- Moved cmake parser to separate thread for better responsiveness
- Unified parsing state role usage across project types
- Removed redundant icon loading code from various parsers
- Added sorting capability to project tree

Log: Optimize project tree icon loading and parsing mechanism
@deepin-ci-robot
Copy link

deepin pr auto review

代码审查意见:

  1. cmakeasynparse.cpp文件中,cmakeFolderIcon函数被移除,但其他地方可能仍然在使用这个函数。建议检查并更新所有引用该函数的地方,或者提供替代的实现。

  2. cmakeasynparse.cpp文件中,parseProject函数被修改为void类型,但之前的实现返回QStandardItem *。这可能会导致调用该函数的地方出现问题。建议确认修改后的函数签名是否满足需求,并更新所有相关的调用。

  3. cmakeasynparse.cpp文件中,CmakeAsynParse::CmakeAsynParse构造函数中,isStop成员变量被初始化为false。建议使用QAtomicInteger的默认构造函数,因为它会自动初始化为0。

  4. cmakeasynparse.cpp文件中,CmakeAsynParse::parseProject函数中,isStop变量被设置为false,但在if (isStop)条件判断中,return语句被注释掉了。这可能会导致逻辑错误。建议取消注释return语句,或者重新考虑isStop变量的使用方式。

  5. cmakeasynparse.cpp文件中,CmakeAsynParse::parseProject函数中,QMetaObject::invokeMethod被替换为直接设置ProjectItemRole::FileIconRole。这可能会影响图标显示的准确性。建议确认新的实现是否正确,并测试图标显示功能。

  6. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->asynItemThreadPolls被移除,但其他地方可能仍然在使用这个成员变量。建议检查并更新所有引用该成员变量的地方。

  7. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->asynItemThreadPolls被移除,但d->cmakeParser被添加。这可能会导致逻辑错误。建议确认新的实现是否正确,并测试相关的功能。

  8. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  9. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  10. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  11. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  12. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  13. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  14. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  15. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  16. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  17. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  18. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  19. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  20. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  21. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  22. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  23. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  24. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  25. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  26. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  27. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  28. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  29. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  30. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  31. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  32. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  33. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  34. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  35. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  36. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  37. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  38. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  39. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  40. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  41. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  42. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  43. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  44. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  45. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  46. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  47. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  48. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  49. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  50. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  51. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  52. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  53. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  54. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  55. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  56. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  57. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  58. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  59. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  60. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  61. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  62. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  63. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls。建议检查并更新所有引用这些成员变量的地方。

  64. cmakeprojectgenerator.cpp文件中,CmakeProjectGenerator::createRootItem函数中,d->cmakeParser被添加,但其他地方可能仍然在使用d->asynItemThreadPolls

@deepin-ci-robot
Copy link

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: deepin-mozart, Kakueeen, LiHua000

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@deepin-mozart deepin-mozart merged commit 7d53433 into linuxdeepin:master Dec 6, 2024
9 of 10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants