Files
qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/Plugins/AudioVideoManagement/Data/avs_session_context.h
T

94 lines
1.6 KiB
C++
Executable File

#pragma once
#include <AudioVideoManagement/ava_types.h>
#include <QString>
#include <memory>
#include <functional>
namespace OperatorManagement
{
namespace Interface
{
class Dtc;
}
}
namespace AudioVideoManagement
{
namespace Interface
{
class Dtc;
}
class AvaSession;
class AvaState;
class StreamNameMapping;
class AvsMenus;
class VdSession;
class AvmExerciseContextHandle;
class AvsApp;
class PlaybackApp;
class AvsSessionContext
{
public:
struct Composite;
AvsSessionContext();
~AvsSessionContext();
bool canAcquire(int exerciseId) const;
Composite *acquire(int exerciseId, int operatorId, const QString &langCode, AvaGuiStyle, const AvmExerciseContextHandle &exerciseContextHandle);
void release(Composite *composite);
private:
std::unique_ptr<Composite> m_composite;
int m_refCount{0};
};
class AvsSessionContextHandle
{
public:
AvsSessionContextHandle() = default;
AvsSessionContextHandle(AvsSessionContext *context, int exerciseId, int operatorId, const QString &langCode, AvaGuiStyle, const AvmExerciseContextHandle &exerciseContextHandle);
operator bool() const { return m_composite.get(); }
AvaSession *avaSession() const;
AvaState *avaState() const;
AvsMenus *menus() const;
VdSession *vdSession() const;
AvsApp *liveVideoApp() const;
PlaybackApp *videoPlaybackApp() const;
PlaybackApp *audioPlaybackApp() const;
PlaybackApp *videoPresentationApp() const;
PlaybackApp *audioPresentationApp() const;
private:
using Releaser = std::function<void (AvsSessionContext::Composite *)>;
std::unique_ptr<AvsSessionContext::Composite, Releaser> m_composite;
};
}