#include "stdafx.h"
#include "mainfunctions.h"
#include "apl_api.h"
#include "resVedomDlg.h"

//************************************************************************
__declspec(dllexport) bool GetFunctionsList(CArray<CaplItemInfo*, CaplItemInfo*> *strArray)
{
	CString str;
	for(int i= 0; i<functionArraySize; i++)
	{
		int j=strArray->Add(&functionArray[i]);

		if(CaplTranslate::IsNeedTranslate())
		{
			CaplItemInfo *item=strArray->GetAt(j);
			int k=item->m_menuName.Find(_T('\\'));
			if(k<0)
			{
				str=item->m_menuName;
				item->m_menuName==CaplTranslate::Translate(str);
			}
			else
			{
				str=item->m_menuName.Left(k+1);
				while(true)
				{
					k++;
					TCHAR c=item->m_menuName[k];
					if(c==_T('[') || c==_T(']') || c==_T('-') || (c>=_T('0') && c<=_T('9')))
					{
						str+=c;
						continue;
					}
					break;
				}
				k=item->m_menuName.GetLength()-k;
				if(k>0)	str+=CaplTranslate::Translate(item->m_menuName.Right(k));
				item->m_menuName=str;
			}
		}

		//
	}
	return true;
}

/* Отчет по ресурсам для бизнес-процесса */
__declspec (dllexport) bool add_ShowAllBPResources(CaplAPI* api, 
								 aplExtent& inExtent, bool bUpdateUI)
{
	if(!api || ! api->m_data.IsConnected()) return false;
	
	if(!bUpdateUI)
	{
		api->m_bp_mgr.LoadBPInfo(inExtent);//загрузка атрибутов выбранного бизнес-процесса

		for(int i= 0; i<inExtent.GetSize(); i++)
		{
			if(!inExtent[i]) continue;if(!inExtent[i]->GetId() || !inExtent[i]->GetType()) continue;

			if(api->m_data.IsKindOf(inExtent[i], api->m_bp_mgr.e_bp))
			{
				//Перестановка на ресурсы дополнения
				SetResources();

				CResVedomDlg dlg;
				dlg.m_api= api;
				dlg.m_bp=inExtent[i];
				dlg.DoModal();
		
				//Обратная перестановка по завершении 
				ResetResources();

			}
		}
	}
	return true;
}


/* Отчет по ресурсам для версии изделия  */
__declspec (dllexport) bool add_ShowAllPdfResources(CaplAPI* api, 
								 aplExtent& inExtent, bool bUpdateUI)
{
	if(!api || ! api->m_data.IsConnected()) return false;
	if(!bUpdateUI)
	{
		if(inExtent.GetSize()==0) return false;
		CaplInstance *pdf = inExtent[0];

		if(!api->m_data.IsKindOf(pdf, api->m_prd_mgr.e_apl_pdf))
		{
			AfxMessageBox(APL_T("Показ используемых ресурсов возможен только для версии изделия!"));
			return false;
		}
	
		api->m_prd_mgr.LoadPrdInfo(pdf);//загрузка атрибутов выбранной версии изделия 

// 		for(int i= 0; i<inExtent.GetSize(); i++)
//		{
			//CaplInstance *pdf = inExtent[i];
			//if(pdf==0) continue;
			if(pdf->GetId()==0 || pdf->GetType()==0) return false;//continue;

// 			if(api->m_data.IsKindOf(pdf, api->m_prd_mgr.e_apl_pdf))
//			{
				//Перестановка на ресурсы дополнения
				SetResources();

				CResVedomDlg dlg;
				dlg.m_api= api;
				dlg.m_pdf=pdf;
				dlg.DoModal();
		
				//Обратная перестановка по завершении 
				ResetResources();

// 			}
// 			else if(api->m_data.IsKindOf(pdf, api->m_prd_mgr.e_prd))
// 			{
// 				AfxMessageBox("Показ используемых ресурсов возможен только для версии изделия!");
// 			}
		//}
	}
	return true;
}
//************************************************************************
void SetResources()
{
	if(afxCurrentResourceHandle!=0) 
		_hProcessInstance = AfxGetResourceHandle();
	AfxSetResourceHandle(_hDllInstance);	
}

void ResetResources()
{
	if(_hProcessInstance!=0)
	{
		AfxSetResourceHandle(_hProcessInstance);	
		_hProcessInstance= 0;
	}
}
//************************************************************************
