1/* 2 * Copyright 2018-2023, Andrew Lindesay <apl@lindesay.co.nz>. 3 * All rights reserved. Distributed under the terms of the MIT License. 4 */ 5#ifndef PROCESS_COORDINATOR_FACTORY_H 6#define PROCESS_COORDINATOR_FACTORY_H 7 8#include <SupportDefs.h> 9 10#include "PackageInfo.h" 11#include "PackageScreenshotRepository.h" 12 13class Model; 14class PackageInfoListener; 15class ProcessCoordinator; 16class ProcessCoordinatorListener; 17class UserDetailVerifierListener; 18 19/*! This class is able to create ProcessCoordinators that are loaded-up with 20 Processes that together complete some larger job. 21*/ 22 23class ProcessCoordinatorFactory { 24public: 25 static ProcessCoordinator* CreateIncrementViewCounter(Model* model, 26 const PackageInfoRef package); 27 28 static ProcessCoordinator* CreateBulkLoadCoordinator( 29 PackageInfoListenerRef packageInfoListener, 30 Model* model, bool forceLocalUpdate); 31 32 static ProcessCoordinator* CreateUserDetailVerifierCoordinator( 33 UserDetailVerifierListener* 34 userDetailVerifierListener, 35 Model* model); 36 37 static ProcessCoordinator* CreatePackageActionCoordinator( 38 Model* model, BMessage* message); 39 40 static ProcessCoordinator* CacheScreenshotCoordinator( 41 Model* model, ScreenshotCoordinate& screenshotCoordinate); 42 43private: 44 static uint32 _CalculateServerProcessOptions(); 45 46 static PackageInfoRef _ExtractPackageFromMessage( 47 Model* model, BMessage* message); 48 49 static ProcessCoordinator* _CreateInstallPackageActionCoordinator( 50 Model* model, BMessage* message); 51 52 static ProcessCoordinator* _CreateUninstallPackageActionCoordinator( 53 Model* model, BMessage* message); 54 55 static ProcessCoordinator* _CreateOpenPackageActionCoordinator( 56 Model* model, BMessage* message); 57 58}; 59 60#endif // PROCESS_COORDINATOR_FACTORY_H 61