#ifndef SETTINGS_H #define SETTINGS_H #include #include #include #include #include // Theme definition struct Theme { QString name; QString accentColor; QString accentColorDark; QString accentColorLight; QString backgroundColor; QString panelColor; QString borderColor; QString textColor; QString textColorMuted; }; class Settings : public QObject { Q_OBJECT public: static Settings& instance(); // Theme QString currentTheme() const; void setCurrentTheme(const QString& themeName); Theme theme() const; QStringList availableThemes() const; static Theme getTheme(const QString& name); // General QString exportDirectory() const; void setExportDirectory(const QString& path); bool autoExportOnParse() const; void setAutoExportOnParse(bool enable); // Debug/Logging bool debugLoggingEnabled() const; void setDebugLoggingEnabled(bool enable); bool verboseParsingEnabled() const; void setVerboseParsingEnabled(bool enable); bool logToFileEnabled() const; void setLogToFileEnabled(bool enable); // View QString fontFamily() const; void setFontFamily(const QString& family); int fontSize() const; void setFontSize(int size); int viewZoom() const; void setViewZoom(int zoom); // Tree Widget bool showItemCounts() const; void setShowItemCounts(bool show); bool collapseByDefault() const; void setCollapseByDefault(bool collapse); bool groupByExtension() const; void setGroupByExtension(bool group); bool naturalSorting() const; void setNaturalSorting(bool enable); // Hex Viewer int hexBytesPerLine() const; void setHexBytesPerLine(int bytes); bool hexShowAscii() const; void setHexShowAscii(bool show); // Audio Preview bool audioAutoPlay() const; void setAudioAutoPlay(bool enable); // Image Preview bool imageShowGrid() const; void setImageShowGrid(bool show); bool imageAutoZoom() const; void setImageAutoZoom(bool enable); // Window State QByteArray windowGeometry() const; void setWindowGeometry(const QByteArray& geometry); QByteArray windowState() const; void setWindowState(const QByteArray& state); // Recent Files QStringList recentFiles() const; void addRecentFile(const QString& path); void clearRecentFiles(); // Sync to disk void sync(); signals: void debugLoggingChanged(bool enabled); void themeChanged(const Theme& theme); void settingsChanged(); private: explicit Settings(QObject *parent = nullptr); ~Settings() = default; Settings(const Settings&) = delete; Settings& operator=(const Settings&) = delete; QSettings m_settings; }; #endif // SETTINGS_H