From 48540940b6c28bb4378abfeb500ec45a625b37b6 Mon Sep 17 00:00:00 2001 From: Vadim Dashevskiy Date: Tue, 15 May 2012 10:38:20 +0000 Subject: initial commit git-svn-id: http://svn.miranda-ng.org/main/trunk@2 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- .../ExtFrames/modern_ext_frames_intern.c | 195 +++++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 plugins/modernb/_disabled_src/ExtFrames/modern_ext_frames_intern.c (limited to 'plugins/modernb/_disabled_src/ExtFrames/modern_ext_frames_intern.c') diff --git a/plugins/modernb/_disabled_src/ExtFrames/modern_ext_frames_intern.c b/plugins/modernb/_disabled_src/ExtFrames/modern_ext_frames_intern.c new file mode 100644 index 0000000000..4eed16663a --- /dev/null +++ b/plugins/modernb/_disabled_src/ExtFrames/modern_ext_frames_intern.c @@ -0,0 +1,195 @@ +/**************************************************************************\ + +Miranda IM: the free IM client for Microsoft* Windows* + +Copyright 2000-2008 Miranda ICQ/IM project, +all portions of this code base are copyrighted to Artem Shpynov and/or +the people listed in contributors.txt. + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +**************************************************************************** + +Created: Mar 19, 2007 + +Author and Copyright: Artem Shpynov aka FYR: ashpynov@gmail.com + +**************************************************************************** + +File contains realization of internal only available procedures +for modern_ext_frames.c module. + +This file have to be excluded from compilation and need to be adde to project via +#include preprocessor derective in modern_ext_frames.c + +\**************************************************************************/ + +#include "..\commonheaders.h" //only for precompiled headers + +#ifdef __modern_ext_frames_c__include_c_file //protection from adding to compilation +// Closed module methods +static int _ExtFrames_GetMinParentSize(IN SortedList* pList, OUT SIZE * size ) +{ + EXTFRAME * clcFrame=(EXTFRAME *) pList->items[pList->realCount-1]; + int minCX=clcFrame->minCX; + int minCY=clcFrame->minCY; + int i=pList->realCount-1; + for (; i>0; --i) + { + EXTFRAME * extFrame=(EXTFRAME *)pList->items[i]; + if (extFrame && (extFrame->dwFlags&F_VISIBLE) && !extFrame->bFloat && !extFrame->bNotRegistered) + { + if (extFrame->nType==EFT_VERTICAL) + { + minCX+=extFrame->minCX; + minCY=max( minCY, extFrame->minCY ); + } + else + { + minCY+=extFrame->minCY; + minCX=max( minCX,extFrame->minCX ); + } + } + } + if (size) + { + size->cx=minCX; + size->cy=minCY; + } + return minCY; +} + +static int _ExtFrames_CalcFramesRect(IN SortedList* pList, IN int width, IN int height, OUT RECT * pOutRect ) +{ + int outHeight=height; + int i; + SIZE size; + RECT outRect={0}; + int frmCount=pList->realCount-1; + EXTFRAME * clcFrame=(EXTFRAME *)pList->items[frmCount]; + if (ExtFrames_GetMinWindowSize(&size)) //ensure that we provide normal size + { + width=max(size.cx,width); + height=max(size.cy,height); + } + outRect.right=width; + outRect.bottom=height; + + for (i=0; iitems[i]; + if (extFrame && (extFrame->dwFlags&F_VISIBLE) && !extFrame->bFloat && !extFrame->bNotRegistered) + { + extFrame->rcFrameRect=outRect; + switch(extFrame->nEdge) + { + case EFP_LEFT: + extFrame->rcFrameRect.right=extFrame->rcFrameRect.left+extFrame->minCX; + outRect.left+=extFrame->minCX; + break; + case EFP_RIGHT: + extFrame->rcFrameRect.left=extFrame->rcFrameRect.right-extFrame->minCX; + outRect.right-=extFrame->minCX; + break; + case EFP_TOP: + extFrame->rcFrameRect.bottom=extFrame->rcFrameRect.top+extFrame->minCY; + outRect.top+=extFrame->minCY; + break; + case EFP_BOTTOM: + extFrame->rcFrameRect.top=extFrame->rcFrameRect.bottom-extFrame->minCY; + outRect.bottom-=extFrame->minCY; + break; + } + } + } + clcFrame->rcFrameRect=outRect; + if (pOutRect) + { + pOutRect->top=0; + pOutRect->left=0; + pOutRect->right=width; + pOutRect->bottom=height; + } + outHeight=height; + return height; +} + +static void _ExtFrames_DestructorOf_EXTFRAMEWND(void * extFrame) +{ + EXTFRAMEWND * pExtFrameWnd = (EXTFRAMEWND *) extFrame; + if (!pExtFrameWnd) return; //early exit + if ( pExtFrameWnd->efrm.szFrameNameID ) mir_free( pExtFrameWnd->efrm.szFrameNameID ); + mir_free( pExtFrameWnd ); + return; +} + +static void _ExtFrames_GetFrameDBOption(EXTFRAMEWND * pExtFrm) +{ + // Each known frame order per 1 000 000 + // Each Unknown frame but absent during saving per 10 000 + // Each new unknown per 100 + static DWORD NextUnknownOrder=100; + char szKey[100]={0}; + DWORD dwOrderInDB; + if (!mir_strcmpi(pExtFrm->efrm.szFrameNameID,"My Contacts")) + dwOrderInDB=0xFFFFFFFF; + else + { + _snprintf(szKey,sizeof(szKey), EXTFRAMEORDERDBPREFIX "%s",pExtFrm->efrm.szFrameNameID); + dwOrderInDB=DBGetContactSettingDword(NULL,EXTFRAMEMODULE,szKey,0); + if (!dwOrderInDB) + { + dwOrderInDB=NextUnknownOrder; + NextUnknownOrder+=100; + } + else + NextUnknownOrder = dwOrderInDB + 100; + } + pExtFrm->efrm.dwOrder=dwOrderInDB; + +} +static int _ExtFramesUtils_CopmareFrames(void * first, void * last) +{ + EXTFRAMEWND * pExtFrmWnd1=(EXTFRAMEWND *)first; + EXTFRAMEWND * pExtFrmWnd2=(EXTFRAMEWND *)last; + if (!pExtFrmWnd1 || ! pExtFrmWnd2) return 0; + return pExtFrmWnd1->efrm.dwOrder-pExtFrmWnd2->efrm.dwOrder; +} +static void _ExtFramesUtils_CheckAlighment(EXTFRAMEWND * pExtFrm) +{ + if (!(pExtFrm->efrm.dwFlags&F_CANBEVERTICAL) && pExtFrm->efrm.nType == EFT_VERTICAL) + { + //issue have not be ever Vertical + int minsize = pExtFrm->efrm.minCX; + pExtFrm->efrm.minCX = pExtFrm->efrm.minCY; + pExtFrm->efrm.minCY = minsize; + + pExtFrm->efrm.nType = EFT_HORIZONTAL; + pExtFrm->efrm.nEdge&=(~alVertFrameMask); + + } + else if (pExtFrm->efrm.dwFlags&F_CANBEVERTICAL && !(pExtFrm->efrm.dwFlags&F_CANNOTBEHORIZONTAL) && (pExtFrm->efrm.nType == EFT_HORIZONTAL)) + { + //issue have not be Horizontal + int minsize = pExtFrm->efrm.minCX; + pExtFrm->efrm.minCX = pExtFrm->efrm.minCY; + pExtFrm->efrm.minCY = minsize; + + pExtFrm->efrm.nType=EFT_VERTICAL; + pExtFrm->efrm.nEdge|=alVertFrameMask; + } +} + +#endif \ No newline at end of file -- cgit v1.2.3