duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

win32_progress_callback.h (1667B)


      1 // SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com>
      2 // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0)
      3 
      4 #pragma once
      5 #include "common/progress_callback.h"
      6 #include "common/windows_headers.h"
      7 
      8 class Win32ProgressCallback final : public ProgressCallback
      9 {
     10 public:
     11   Win32ProgressCallback();
     12 
     13   void PushState() override;
     14   void PopState() override;
     15 
     16   void SetCancellable(bool cancellable) override;
     17   void SetTitle(const std::string_view title) override;
     18   void SetStatusText(const std::string_view text) override;
     19   void SetProgressRange(u32 range) override;
     20   void SetProgressValue(u32 value) override;
     21 
     22   void DisplayError(const std::string_view message) override;
     23   void DisplayWarning(const std::string_view message) override;
     24   void DisplayInformation(const std::string_view message) override;
     25   void DisplayDebugMessage(const std::string_view message) override;
     26 
     27   void ModalError(const std::string_view message) override;
     28   bool ModalConfirmation(const std::string_view message) override;
     29   void ModalInformation(const std::string_view message) override;
     30   
     31 private:
     32   enum : int
     33   {
     34     WINDOW_WIDTH = 600,
     35     WINDOW_HEIGHT = 300,
     36     WINDOW_MARGIN = 10,
     37     SUBWINDOW_WIDTH = WINDOW_WIDTH - 20 - WINDOW_MARGIN - WINDOW_MARGIN,
     38   };
     39 
     40   bool Create();
     41   void Destroy();
     42   void Redraw(bool force);
     43   void PumpMessages();
     44 
     45   static LRESULT CALLBACK WndProcThunk(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
     46   LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam);
     47 
     48   HWND m_window_hwnd{};
     49   HWND m_text_hwnd{};
     50   HWND m_progress_hwnd{};
     51   HWND m_list_box_hwnd{};
     52 
     53   int m_last_progress_percent = -1;
     54 };