1
0

ThemeManager.qml 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. pragma Singleton
  2. import QtQuick 2.15
  3. import Qt.labs.settings 1.0
  4. QtObject {
  5. id: themeManager
  6. // Theme state - loaded from settings
  7. property bool darkMode: settings.darkMode
  8. // Background colors
  9. property color backgroundColor: darkMode ? "#1a1a1a" : "#f5f5f5"
  10. property color surfaceColor: darkMode ? "#2d2d2d" : "#ffffff"
  11. property color cardColor: darkMode ? "#3d3d3d" : "#f8f9fa"
  12. // Text colors
  13. property color textPrimary: darkMode ? "#ffffff" : "#333333"
  14. property color textSecondary: darkMode ? "#b0b0b0" : "#666666"
  15. property color textTertiary: darkMode ? "#808080" : "#999999"
  16. // Border colors
  17. property color borderColor: darkMode ? "#4d4d4d" : "#e5e7eb"
  18. property color borderLight: darkMode ? "#3d3d3d" : "#f0f0f0"
  19. // Accent colors (consistent in both themes)
  20. property color accentBlue: "#2563eb"
  21. property color accentBlueHover: "#1e40af"
  22. property color accentRed: "#dc2626"
  23. property color accentRedHover: "#b91c1c"
  24. property color accentGray: "#6b7280"
  25. property color accentGrayHover: "#525252"
  26. property color accentGrayDisabled: "#9ca3af"
  27. // Control colors
  28. property color buttonBackground: darkMode ? "#3d3d3d" : "#f0f0f0"
  29. property color buttonBackgroundHover: darkMode ? "#4d4d4d" : "#e0e0e0"
  30. property color buttonBorder: darkMode ? "#5d5d5d" : "#cccccc"
  31. // Selected/Active colors
  32. property color selectedBackground: "#2196F3"
  33. property color selectedBorder: "#1976D2"
  34. // Placeholder colors
  35. property color placeholderBackground: darkMode ? "#2d2d2d" : "#f0f0f0"
  36. property color placeholderText: darkMode ? "#606060" : "#cccccc"
  37. // Preview background - lighter in dark mode for better pattern visibility
  38. property color previewBackground: darkMode ? "#707070" : "#f8f9fa"
  39. // Shadow colors
  40. property color shadowColor: darkMode ? "#000000" : "#00000020"
  41. // Navigation colors
  42. property color navBackground: darkMode ? "#1f1f1f" : "#ffffff"
  43. property color navBorder: darkMode ? "#3d3d3d" : "#e5e7eb"
  44. property color navIconActive: "#2196F3"
  45. property color navIconInactive: darkMode ? "#808080" : "#9ca3af"
  46. property color navTextActive: darkMode ? "#ffffff" : "#333333"
  47. property color navTextInactive: darkMode ? "#808080" : "#666666"
  48. // Persistent settings
  49. property Settings settings: Settings {
  50. category: "Appearance"
  51. property bool darkMode: false // Default to light mode
  52. }
  53. onDarkModeChanged: {
  54. // Save preference
  55. settings.darkMode = darkMode
  56. console.log("🎨 Dark mode:", darkMode ? "enabled" : "disabled")
  57. }
  58. // Helper function to get contrast color
  59. function getContrastColor(baseColor) {
  60. return darkMode ? Qt.lighter(baseColor, 1.2) : Qt.darker(baseColor, 1.1)
  61. }
  62. }