Settings.cpp 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197
  1. /*
  2. * Copyright (c) 2022, Filiph Sandström <filiph.sandstrom@filfatstudios.com>
  3. * Copyright (c) 2023, Cameron Youell <cameronyouell@gmail.com>
  4. * Copyright (c) 2024, Jamie Mansfield <jmansfield@cadixdev.org>
  5. *
  6. * SPDX-License-Identifier: BSD-2-Clause
  7. */
  8. #include <AK/LexicalPath.h>
  9. #include <UI/DefaultSettings.h>
  10. #include <UI/Qt/Settings.h>
  11. #include <UI/Qt/StringUtils.h>
  12. namespace Ladybird {
  13. Settings::Settings()
  14. : m_search_engine(WebView::default_search_engine())
  15. {
  16. m_qsettings = make<QSettings>(QSettings::IniFormat, QSettings::UserScope, "Ladybird", "Ladybird", this);
  17. auto default_search_engine = WebView::default_search_engine();
  18. auto default_search_engine_name = qstring_from_ak_string(default_search_engine.name);
  19. auto search_engine_name = m_qsettings->value("search_engine_name", default_search_engine_name).toString();
  20. auto search_engine = WebView::find_search_engine_by_name(ak_string_from_qstring(search_engine_name));
  21. if (search_engine.has_value())
  22. m_search_engine = search_engine.release_value();
  23. else
  24. set_search_engine(move(default_search_engine));
  25. }
  26. ByteString Settings::directory()
  27. {
  28. return LexicalPath::dirname(ak_byte_string_from_qstring(m_qsettings->fileName()));
  29. }
  30. Optional<QPoint> Settings::last_position()
  31. {
  32. if (m_qsettings->contains("last_position"))
  33. return m_qsettings->value("last_position", QPoint()).toPoint();
  34. return {};
  35. }
  36. void Settings::set_last_position(QPoint const& last_position)
  37. {
  38. m_qsettings->setValue("last_position", last_position);
  39. }
  40. QSize Settings::last_size()
  41. {
  42. return m_qsettings->value("last_size", QSize(800, 600)).toSize();
  43. }
  44. void Settings::set_last_size(QSize const& last_size)
  45. {
  46. m_qsettings->setValue("last_size", last_size);
  47. }
  48. bool Settings::is_maximized()
  49. {
  50. return m_qsettings->value("is_maximized", QVariant(false)).toBool();
  51. }
  52. void Settings::set_is_maximized(bool is_maximized)
  53. {
  54. m_qsettings->setValue("is_maximized", is_maximized);
  55. }
  56. void Settings::set_search_engine(WebView::SearchEngine search_engine)
  57. {
  58. m_qsettings->setValue("search_engine_name", qstring_from_ak_string(search_engine.name));
  59. m_search_engine = move(search_engine);
  60. emit search_engine_changed(m_search_engine);
  61. }
  62. QStringList Settings::preferred_languages()
  63. {
  64. return m_qsettings->value("preferred_languages").toStringList();
  65. }
  66. void Settings::set_preferred_languages(QStringList const& languages)
  67. {
  68. m_qsettings->setValue("preferred_languages", languages);
  69. emit preferred_languages_changed(languages);
  70. }
  71. Settings::EngineProvider Settings::autocomplete_engine()
  72. {
  73. EngineProvider engine_provider;
  74. engine_provider.name = m_qsettings->value("autocomplete_engine_name", "Google").toString();
  75. engine_provider.url = m_qsettings->value("autocomplete_engine", "https://www.google.com/complete/search?client=chrome&q={}").toString();
  76. return engine_provider;
  77. }
  78. void Settings::set_autocomplete_engine(EngineProvider const& engine_provider)
  79. {
  80. m_qsettings->setValue("autocomplete_engine_name", engine_provider.name);
  81. m_qsettings->setValue("autocomplete_engine", engine_provider.url);
  82. }
  83. QString Settings::new_tab_page()
  84. {
  85. static auto const default_new_tab_url = qstring_from_ak_string(Browser::default_new_tab_url);
  86. return m_qsettings->value("new_tab_page", default_new_tab_url).toString();
  87. }
  88. void Settings::set_new_tab_page(QString const& page)
  89. {
  90. m_qsettings->setValue("new_tab_page", page);
  91. }
  92. bool Settings::enable_autocomplete()
  93. {
  94. return m_qsettings->value("enable_autocomplete", false).toBool();
  95. }
  96. void Settings::set_enable_autocomplete(bool enable)
  97. {
  98. m_qsettings->setValue("enable_autocomplete", enable);
  99. }
  100. bool Settings::enable_search()
  101. {
  102. return m_qsettings->value("enable_search", false).toBool();
  103. }
  104. void Settings::set_enable_search(bool enable)
  105. {
  106. m_qsettings->setValue("enable_search", enable);
  107. emit enable_search_changed(enable);
  108. }
  109. bool Settings::enable_do_not_track()
  110. {
  111. return m_qsettings->value("enable_do_not_track", false).toBool();
  112. }
  113. void Settings::set_enable_do_not_track(bool enable)
  114. {
  115. m_qsettings->setValue("enable_do_not_track", enable);
  116. emit enable_do_not_track_changed(enable);
  117. }
  118. bool Settings::enable_autoplay()
  119. {
  120. return m_qsettings->value("enable_autoplay", false).toBool();
  121. }
  122. void Settings::set_enable_autoplay(bool enable)
  123. {
  124. m_qsettings->setValue("enable_autoplay", enable);
  125. emit enable_autoplay_changed(enable);
  126. }
  127. int Settings::scrolling_speed()
  128. {
  129. return m_qsettings->value("scrolling_speed", (int)100).toInt();
  130. }
  131. void Settings::set_scrolling_speed(int value)
  132. {
  133. m_qsettings->setValue("scrolling_speed", value);
  134. }
  135. bool Settings::invert_vertical_scrolling()
  136. {
  137. return m_qsettings->value("invert_vertical_scrolling", false).toBool();
  138. }
  139. void Settings::set_invert_vertical_scrolling(bool enable)
  140. {
  141. m_qsettings->setValue("invert_vertical_scrolling", enable);
  142. }
  143. bool Settings::invert_horizontal_scrolling()
  144. {
  145. return m_qsettings->value("invert_horizontal_scrolling", false).toBool();
  146. }
  147. void Settings::set_invert_horizontal_scrolling(bool enable)
  148. {
  149. m_qsettings->setValue("invert_horizontal_scrolling", enable);
  150. }
  151. bool Settings::show_menubar()
  152. {
  153. return m_qsettings->value("show_menubar", false).toBool();
  154. }
  155. void Settings::set_show_menubar(bool show_menubar)
  156. {
  157. m_qsettings->setValue("show_menubar", show_menubar);
  158. emit show_menubar_changed(show_menubar);
  159. }
  160. }