// ============================================================================
//  mainwindow.h —— Day3 下午版：上午版 + QSS 界面美化（双主题）
//
//  相对 ../calculator_mainwindow/（上午版）的改动：
//    ① 视图菜单新增「深色主题」可勾选项；
//    ② applyStyle(bool dark) 按主题切换 setStyleSheet；
//    ③ runSelfTest() 增加「主题切换确实改变 styleSheet」的断言。
//  计算器面板、菜单/停靠窗/状态栏结构与上午版完全一致——QSS 与逻辑正交，
//  正是 Day3 下午「美化」环节要传达的核心点。
// ============================================================================
#ifndef CALCULATOR_MAINWINDOW_QSS_H
#define CALCULATOR_MAINWINDOW_QSS_H

#include <QMainWindow>

class CalculatorDesigner;
class QListWidget;
class QListWidgetItem;
class QDockWidget;
class QAction;

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    explicit MainWindow(QWidget* parent = nullptr);
    ~MainWindow() override;

    bool runSelfTest();

private slots:
    void onAbout();
    void onClearHistory();
    void onToggleHistoryVisible(bool checked);
    void onToggleTheme(bool dark);                  // 【下午版新增】深/浅主题切换
    void onEvaluated(const QString& expr, const QString& result);
    void onHistoryDoubleClicked(QListWidgetItem* item);

private:
    void buildMenu();
    void buildDock();
    void buildStatusBar();
    void refreshStatus(const QString& msg);
    void applyStyle(bool dark);                     // 【下午版新增】

    CalculatorDesigner* m_calc = nullptr;
    QListWidget*        m_history = nullptr;
    QDockWidget*        m_dock = nullptr;
    QAction*            m_actQuit = nullptr;
    QAction*            m_actClearHistory = nullptr;
    QAction*            m_actToggleHistory = nullptr;
    QAction*            m_actToggleTheme = nullptr;  // 【下午版新增】
    QAction*            m_actAbout = nullptr;
    bool                m_dark = false;              // 【下午版新增】当前是否深色主题
};

#endif  // CALCULATOR_MAINWINDOW_QSS_H
