settingspage.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. #include "settingspage.h"
  2. #include <utils/widgetutils.h>
  3. #include <widgets/propertydefs.h>
  4. using namespace vnotex;
  5. SettingsPage::SettingsPage(QWidget *p_parent)
  6. : QWidget(p_parent)
  7. {
  8. }
  9. SettingsPage::~SettingsPage()
  10. {
  11. }
  12. bool SettingsPage::search(const QString &p_key)
  13. {
  14. bool hit = false;
  15. if (!p_key.isEmpty() && title().contains(p_key, Qt::CaseInsensitive)) {
  16. hit = true;
  17. }
  18. for (const auto& item : m_searchItems) {
  19. if (!p_key.isEmpty() && item.m_words.contains(p_key, Qt::CaseInsensitive)) {
  20. // Continue to search all the matched targets.
  21. hit = true;
  22. searchHit(item.m_target, true);
  23. } else {
  24. searchHit(item.m_target, false);
  25. }
  26. }
  27. return hit;
  28. }
  29. void SettingsPage::searchHit(QWidget *p_target, bool p_hit)
  30. {
  31. if (!p_target) {
  32. return;
  33. }
  34. if (p_target->property(PropertyDefs::c_hitSettingWidget).toBool() == p_hit) {
  35. return;
  36. }
  37. WidgetUtils::setPropertyDynamically(p_target, PropertyDefs::c_hitSettingWidget, p_hit);
  38. }
  39. void SettingsPage::addSearchItem(const QString &p_words, QWidget *p_target)
  40. {
  41. m_searchItems.push_back(SearchItem(p_words, p_target));
  42. }
  43. void SettingsPage::addSearchItem(const QString &p_name, const QString &p_tooltip, QWidget *p_target)
  44. {
  45. addSearchItem(p_name + QStringLiteral(" ") + p_tooltip, p_target);
  46. }
  47. void SettingsPage::pageIsChanged()
  48. {
  49. m_changed = true;
  50. emit changed();
  51. }
  52. void SettingsPage::pageIsChangedWithRestartNeeded()
  53. {
  54. m_changed = true;
  55. m_restartNeeded = true;
  56. emit changed();
  57. }
  58. void SettingsPage::load()
  59. {
  60. m_loading = true;
  61. loadInternal();
  62. m_loading = false;
  63. m_changed = false;
  64. m_restartNeeded = false;
  65. }
  66. bool SettingsPage::save()
  67. {
  68. if (!m_changed) {
  69. return true;
  70. }
  71. if (saveInternal()) {
  72. m_changed = false;
  73. return true;
  74. }
  75. return false;
  76. }
  77. void SettingsPage::reset()
  78. {
  79. if (!m_changed) {
  80. return;
  81. }
  82. load();
  83. }
  84. const QString &SettingsPage::error() const
  85. {
  86. return m_error;
  87. }
  88. void SettingsPage::setError(const QString &p_err)
  89. {
  90. m_error = p_err;
  91. }
  92. bool SettingsPage::isRestartNeeded() const
  93. {
  94. return m_restartNeeded;
  95. }
  96. bool SettingsPage::isLoading() const
  97. {
  98. return m_loading;
  99. }