WindowArranger.h
1 #pragma once 2 3 #include <WindowCreationHandler.h> 4 5 #include <WorkspacesLib/AppUtils.h> 6 #include <WorkspacesLib/IPCHelper.h> 7 #include <WorkspacesLib/LaunchingStatus.h> 8 #include <WorkspacesLib/PwaHelper.h> 9 #include <WorkspacesLib/WorkspacesData.h> 10 11 struct WindowWithDistance 12 { 13 int distance; 14 HWND window; 15 }; 16 17 class WindowArranger 18 { 19 public: 20 WindowArranger(WorkspacesData::WorkspacesProject project); 21 ~WindowArranger() = default; 22 23 private: 24 const WorkspacesData::WorkspacesProject m_project; 25 const std::vector<HWND> m_windowsBefore; 26 const std::vector<WorkspacesData::WorkspacesProject::Monitor> m_monitors; 27 const Utils::Apps::AppList m_installedApps; 28 //const WindowCreationHandler m_windowCreationHandler; 29 IPCHelper m_ipcHelper; 30 LaunchingStatus m_launchingStatus; 31 std::optional<WindowWithDistance> GetNearestWindow(const WorkspacesData::WorkspacesProject::Application& app, const std::vector<HWND>& movedWindows, Utils::PwaHelper& pwaHelper); 32 bool TryMoveWindow(const WorkspacesData::WorkspacesProject::Application& app, HWND windowToMove); 33 34 //void onWindowCreated(HWND window); 35 bool processWindows(bool processAll); 36 bool processWindow(HWND window); 37 bool moveWindow(HWND window, const WorkspacesData::WorkspacesProject::Application& app); 38 39 void receiveIpcMessage(const std::wstring& message); 40 void sendUpdatedState(const WorkspacesData::LaunchingAppState& data) const; 41 };