069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync/* $Id$ */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync/** @file
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * VBox Console COM Class implementation - Guest drag'n drop source.
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync/*
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * Copyright (C) 2014 Oracle Corporation
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync *
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * available from http://www.virtualbox.org. This file is free software;
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * you can redistribute it and/or modify it under the terms of the GNU
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * General Public License (GPL) as published by the Free Software
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync#ifndef ____H_GUESTDNDSOURCEIMPL
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync#define ____H_GUESTDNDSOURCEIMPL
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync#include "GuestDnDSourceWrap.h"
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync#include "GuestDnDPrivate.h"
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsyncclass ATL_NO_VTABLE GuestDnDSource :
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync public GuestDnDSourceWrap,
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync protected GuestDnDBase
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync{
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsyncpublic:
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync /** @name COM and internal init/term/mapping cruft.
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * @{ */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync DECLARE_EMPTY_CTOR_DTOR(GuestDnDSource)
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync int init(const ComObjPtr<Guest>& pGuest);
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync void uninit(void);
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync HRESULT FinalConstruct(void);
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync void FinalRelease(void);
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync /** @} */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsyncprivate:
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync /** Private wrapped @name IDnDBase methods.
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync * @{ */
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync HRESULT isFormatSupported(const com::Utf8Str &aFormat, BOOL *aSupported);
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync HRESULT getFormats(std::vector<com::Utf8Str> &aFormats);
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync HRESULT addFormats(const std::vector<com::Utf8Str> &aFormats);
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync HRESULT removeFormats(const std::vector<com::Utf8Str> &aFormats);
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync /** @} */
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync
aa08d96e9f8a68de2d11b24f680757cb02d1f16bvboxsync /** Private wrapped @name IDnDSource methods.
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * @{ */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync HRESULT dragIsPending(ULONG uScreenId, std::vector<com::Utf8Str> &aFormats, std::vector<DnDAction_T> &aAllowedActions, DnDAction_T *aDefaultAction);
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync HRESULT drop(const com::Utf8Str &aFormat, DnDAction_T aAction, ComPtr<IProgress> &aProgress);
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync HRESULT receiveData(std::vector<BYTE> &aData);
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync /** @} */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsyncprotected:
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync /** @name Attributes.
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync * @{ */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync /** Pointer to guest implementation. */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync const ComObjPtr<Guest> m_pGuest;
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync /** @} */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync};
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync#endif /* !____H_GUESTDNDSOURCEIMPL */
069b9101fbd3b049610c5511b1cc9534d01ea472vboxsync