/* Uprising - Windows Shell Extension for Subversion
 * Copyright (C) 2001-2002  Jay Freeman (saurik)
*/

/*
 *        Redistribution and use in source and binary
 * forms, with or without modification, are permitted
 * provided that the following conditions are met:
 * 
 * 1. Redistributions of source code must retain the
 *    above copyright notice, this list of conditions
 *    and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the
 *    above copyright notice, this list of conditions
 *    and the following disclaimer in the documentation
 *    and/or other materials provided with the
 *    distribution.
 * 3. The name of the author may not be used to endorse
 *    or promote products derived from this software
 *    without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING,
 * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#include "stdafx.h"

#include "General.h"
#include "IconOverlay.h"
#include "ColumnProvider.h"

#include "diapexis/LetsDoCom.h"

BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
	switch (ul_reason_for_call) {
		case DLL_PROCESS_ATTACH:
			Diapexis::Module = hModule;
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
		break;
	} return TRUE;
}

GUID NoneID = { /* bd101a9c-ef4d-4873-b036-d7abf06e9ca0 */
    0xbd101a9c, 0xef4d, 0x4873, {0xb0, 0x36, 0xd7, 0xab, 0xf0, 0x6e, 0x9c, 0xa0} };
GUID NormalID = { /* b045e58a-674a-4a65-b9d2-e4e2850b96da */
	0xb045e58a, 0x674a, 0x4a65, {0xb9, 0xd2, 0xe4, 0xe2, 0x85, 0x0b, 0x96, 0xda} };
GUID AddedID = { /* 25f6c6b1-529b-4f20-9ef7-b909c6cd89d6 */
    0x25f6c6b1, 0x529b, 0x4f20, {0x9e, 0xf7, 0xb9, 0x09, 0xc6, 0xcd, 0x89, 0xd6} };
GUID AbsentID = { /* a34caf9c-1d1f-44aa-8f4f-f30c8447663b */
    0xa34caf9c, 0x1d1f, 0x44aa, {0x8f, 0x4f, 0xf3, 0x0c, 0x84, 0x47, 0x66, 0x3b} };
GUID DeletedID = { /* 47dadea1-2017-43d4-8988-1ac405a64365 */
    0x47dadea1, 0x2017, 0x43d4, {0x89, 0x88, 0x1a, 0xc4, 0x05, 0xa6, 0x43, 0x65} };
GUID ReplacedID = { /* 7da3143e-58ed-484f-8dd2-e23d34eb7e68 */
    0x7da3143e, 0x58ed, 0x484f, {0x8d, 0xd2, 0xe2, 0x3d, 0x34, 0xeb, 0x7e, 0x68} };
GUID ModifiedID = { /* 36125516-5064-4972-abc7-80aedf75dc34 */
    0x36125516, 0x5064, 0x4972, {0xab, 0xc7, 0x80, 0xae, 0xdf, 0x75, 0xdc, 0x34} };
GUID MergedID =	{ /* dbd6db4f-e812-4c9c-a01f-4a642a4c052b */
    0xdbd6db4f, 0xe812, 0x4c9c, {0xa0, 0x1f, 0x4a, 0x64, 0x2a, 0x4c, 0x05, 0x2b} };
GUID ConflictedID = { /* c6aacea4-978c-43ee-8948-d37b1fed3321 */
    0xc6aacea4, 0x978c, 0x43ee, {0x89, 0x48, 0xd3, 0x7b, 0x1f, 0xed, 0x33, 0x21} };

DIAPEXIS_COMOBJ_BEGIN()
//	DIAPEXIS_COMOBJ_MAP_MANUAL(NoneID,			Uprising::IconOverlay<svn_wc_status_none>)
//	DIAPEXIS_COMOBJ_MAP_MANUAL(UnversionedID,	Uprising::IconOverlay<svn_wc_status_unversioned>)
	DIAPEXIS_COMOBJ_MAP_MANUAL(NormalID,		Uprising::IconOverlay<svn_wc_status_normal>)
	DIAPEXIS_COMOBJ_MAP_MANUAL(AddedID,			Uprising::IconOverlay<svn_wc_status_added>)
//	DIAPEXIS_COMOBJ_MAP_MANUAL(AbsentID,		Uprising::IconOverlay<svn_wc_status_absent>)
	DIAPEXIS_COMOBJ_MAP_MANUAL(DeletedID,		Uprising::IconOverlay<svn_wc_status_deleted>)
//	DIAPEXIS_COMOBJ_MAP_MANUAL(ReplacedID,		Uprising::IconOverlay<svn_wc_status_replaced>)
	DIAPEXIS_COMOBJ_MAP_MANUAL(ModifiedID,		Uprising::IconOverlay<svn_wc_status_modified>)
//	DIAPEXIS_COMOBJ_MAP_MANUAL(MergedID,		Uprising::IconOverlay<svn_wc_status_merged>)
	DIAPEXIS_COMOBJ_MAP_MANUAL(ConflictedID,	Uprising::IconOverlay<svn_wc_status_conflicted>)

	DIAPEXIS_COMOBJ_MAP_UUID(Uprising::General)
	DIAPEXIS_COMOBJ_MAP_UUID(Uprising::ColumnProvider)
DIAPEXIS_COMOBJ_END()

DIAPEXIS_COM_MAP_BEGIN()
//	DIAPEXIS_COM_MAP_MANUAL(NoneID,			"UprisingNone",			Diapexis::COM::IconOverlay)
//	DIAPEXIS_COM_MAP_MANUAL(UnversionedID,	"UprisingUnversioned",	Diapexis::COM::IconOverlay)
	DIAPEXIS_COM_MAP_MANUAL(NormalID,		"UprisingNormal",		Diapexis::COM::IconOverlay)
	DIAPEXIS_COM_MAP_MANUAL(AddedID,		"UprisingAdded",		Diapexis::COM::IconOverlay)
//	DIAPEXIS_COM_MAP_MANUAL(AbsentID,		"UprisingAbsent",		Diapexis::COM::IconOverlay)
	DIAPEXIS_COM_MAP_MANUAL(DeletedID,		"UprisingDeleted",		Diapexis::COM::IconOverlay)
//	DIAPEXIS_COM_MAP_MANUAL(ReplacedID,		"UprisingReplaced",		Diapexis::COM::IconOverlay)
	DIAPEXIS_COM_MAP_MANUAL(ModifiedID,		"UprisingModified",		Diapexis::COM::IconOverlay)
//	DIAPEXIS_COM_MAP_MANUAL(MergedID,		"UprisingMerged",		Diapexis::COM::IconOverlay)
	DIAPEXIS_COM_MAP_MANUAL(ConflictedID,	"UprisingConflicted",	Diapexis::COM::IconOverlay)

	DIAPEXIS_COM_MAP_UUID(Uprising::General,		"UprisingGeneral",
								Diapexis::COM::PropertySheet |
								Diapexis::COM::ContextMenu |
								Diapexis::COM::DragDropMenu)

	DIAPEXIS_COM_MAP_UUID(Uprising::ColumnProvider, "UprisingColumnProvider", Diapexis::COM::ColumnProvider)
DIAPEXIS_COM_MAP_END()
