diff options
Diffstat (limited to 'plugins/SendScreenshotPlus/src/CSend.cpp')
| -rw-r--r-- | plugins/SendScreenshotPlus/src/CSend.cpp | 98 | 
1 files changed, 85 insertions, 13 deletions
diff --git a/plugins/SendScreenshotPlus/src/CSend.cpp b/plugins/SendScreenshotPlus/src/CSend.cpp index 7de9574cf6..b79fd340cd 100644 --- a/plugins/SendScreenshotPlus/src/CSend.cpp +++ b/plugins/SendScreenshotPlus/src/CSend.cpp @@ -27,6 +27,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */  #include "global.h" +#define CSEND_DIALOG 8800  //---------------------------------------------------------------------------  CSend::CSend(HWND /*Owner*/, MCONTACT hContact, bool bAsync, bool bSilent) : @@ -35,6 +36,8 @@ CSend::CSend(HWND /*Owner*/, MCONTACT hContact, bool bAsync, bool bSilent) :  	m_bSilent(bSilent),  	m_pszFile(NULL),  	m_pszFileDesc(NULL), +	m_URL(NULL), +	m_URLthumb(NULL),  	m_pszSendTyp(NULL),  	m_pszProto(NULL),  //	m_hContact(hContact), // initialized below @@ -54,6 +57,8 @@ CSend::CSend(HWND /*Owner*/, MCONTACT hContact, bool bAsync, bool bSilent) :  CSend::~CSend(){  	mir_free(m_pszFile);  	mir_free(m_pszFileDesc); +	mir_free(m_URL); +	mir_free(m_URLthumb);  	mir_free(m_szEventMsg);  	mir_free(m_ErrorMsg);  	mir_free(m_ErrorTitle); @@ -88,19 +93,80 @@ INT_PTR CALLBACK CSend::ResultDialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LP  		mir_tcsadd(tmp,self->m_pszSendTyp);  		SetDlgItemText(hwndDlg,IDC_HEADERBAR,tmp);  		mir_free(tmp); -		SendMessage(GetDlgItem(hwndDlg,IDC_HEADERBAR),WM_SETICON,ICON_BIG,(LPARAM)Skin_GetIcon(ICO_COMMON_ARROWR,1)); -		SetDlgItemText(hwndDlg,ID_edtURL,self->m_ErrorTitle); -		if(self->m_pszFileDesc) +		SendDlgItemMessage(hwndDlg,IDC_HEADERBAR,WM_SETICON,ICON_BIG,(LPARAM)Skin_GetIcon(ICO_COMMON_ARROWR,1)); +		SetDlgItemTextA(hwndDlg,ID_edtURL,self->m_URL); +		if(self->m_URLthumb){ +			SetDlgItemTextA(hwndDlg,ID_edtURLthumb,self->m_URLthumb); +		}else{ +			SetDlgItemTextA(hwndDlg,ID_edtURLthumb,"-"); +			for(int i=ID_btnThumbCopy; i<=ID_edtURLthumb; ++i){ +				EnableWindow(GetDlgItem(hwndDlg,i),FALSE); +			} +		} +		if(!self->m_pszFileDesc) +			SetDlgItemText(hwndDlg,ID_bvlDesc,self->m_ErrorTitle); +		else  			SetDlgItemText(hwndDlg,ID_bvlDesc,self->m_pszFileDesc); -		SendMessage(GetDlgItem(hwndDlg,IDOK),BUTTONSETDEFAULT,1,NULL); -		SendMessage(GetDlgItem(hwndDlg,IDOK),BM_SETIMAGE,IMAGE_ICON,(LPARAM)Skin_GetIcon(ICO_BTN_EDIT)); -		SendMessage(GetDlgItem(hwndDlg,IDCANCEL),BM_SETIMAGE,IMAGE_ICON,(LPARAM)Skin_GetIcon(ICO_BTN_CANCEL)); +		SendDlgItemMessage(hwndDlg,IDOK,BM_SETIMAGE,IMAGE_ICON,(LPARAM)Skin_GetIcon(ICO_BTN_COPY)); +		SendDlgItemMessage(hwndDlg,IDOK,BUTTONTRANSLATE,0,0); +		SendDlgItemMessage(hwndDlg,IDCANCEL,BM_SETIMAGE,IMAGE_ICON,(LPARAM)Skin_GetIcon(ICO_BTN_CANCEL)); +		SendDlgItemMessage(hwndDlg,IDCANCEL,BUTTONTRANSLATE,0,0); +		for(int i=ID_btnCopy; i<=ID_btnThumbBBC2; ++i){ +			SendDlgItemMessage(hwndDlg,i,BUTTONSETASTHEMEDBTN,0,0); +			SendDlgItemMessage(hwndDlg,i,BUTTONSETASFLATBTN,1,0); +			switch(i){ +			case ID_btnCopy: +			case ID_btnThumbCopy: +				SendDlgItemMessage(hwndDlg,i,BM_SETIMAGE,IMAGE_ICON,(LPARAM)Skin_GetIcon(ICO_BTN_COPY)); +				SendDlgItemMessage(hwndDlg,i,BUTTONADDTOOLTIP,(WPARAM)LPGENT("Copy"),BATF_TCHAR); +				break; +			case ID_btnBBC: +			case ID_btnThumbBBC: +				SendDlgItemMessage(hwndDlg,i,BM_SETIMAGE,IMAGE_ICON,(LPARAM)Skin_GetIcon(ICO_BTN_BBC)); +				SendDlgItemMessage(hwndDlg,i,BUTTONADDTOOLTIP,(WPARAM)LPGENT("Copy BBCode"),BATF_TCHAR); +				break; +			default: +				SendDlgItemMessage(hwndDlg,i,BM_SETIMAGE,IMAGE_ICON,(LPARAM)Skin_GetIcon(ICO_BTN_BBC2)); +				SendDlgItemMessage(hwndDlg,i,BUTTONADDTOOLTIP,(WPARAM)LPGENT("Copy BBCode w/ link"),BATF_TCHAR); +			} +		} +		TranslateDialogDefault(hwndDlg);  		return TRUE;}  	case WM_COMMAND:  		switch(LOWORD(wParam)) { -		case IDOK:{ -			TCHAR tmp[1024]; -			size_t len=GetDlgItemText(hwndDlg,ID_edtURL,tmp,1024); +		case IDOK: +		case ID_btnCopy: +		case ID_btnThumbCopy: +		case ID_btnBBC: +		case ID_btnThumbBBC: +		case ID_btnThumbBBC2:{ +			TCHAR tmp[2048]; +			int edtID=ID_edtURL; +			int bbc=0; +			switch(LOWORD(wParam)){ +			case ID_btnThumbBBC2: ++bbc; +			case ID_btnThumbBBC: ++bbc; +			case ID_btnThumbCopy: +				edtID=ID_edtURLthumb; +				break; +			case ID_btnBBC: ++bbc; +				break; +			} +			size_t len; +			if(bbc){ +				if(bbc==1){ +					memcpy(tmp,_T("[img]"),5*sizeof(TCHAR)); len=5; +					len+=GetDlgItemText(hwndDlg,edtID,tmp+len,2048-11); +					memcpy(tmp+len,_T("[/img]"),7*sizeof(TCHAR)); len+=7; +				}else{ +					memcpy(tmp,_T("[url="),5*sizeof(TCHAR)); len=5; +					len+=GetDlgItemText(hwndDlg,ID_edtURL,tmp+len,1024); +					memcpy(tmp+len,_T("][img]"),6*sizeof(TCHAR)); len+=6; +					len+=GetDlgItemText(hwndDlg,edtID,tmp+len,1024); +					memcpy(tmp+len,_T("[/img][/url]"),13*sizeof(TCHAR)); len+=12; +				} +			}else +				len=GetDlgItemText(hwndDlg,edtID,tmp,2048);  			int retries=3;  			do{  				if(!OpenClipboard(hwndDlg)){ @@ -116,7 +182,8 @@ INT_PTR CALLBACK CSend::ResultDialogProc(HWND hwndDlg,UINT uMsg,WPARAM wParam,LP  				CloseClipboard();  				break;  			}while(--retries); -			DestroyWindow(hwndDlg); +			if(LOWORD(wParam)==IDOK) +				DestroyWindow(hwndDlg);  			return TRUE;}  		case IDCANCEL:  			DestroyWindow(hwndDlg); @@ -130,9 +197,9 @@ void CSend::svcSendMsgExit(const char* szMessage) {  		Exit(ACKRESULT_SUCCESS); return;  	}  	if(!m_hContact){ -		mir_free(m_ErrorTitle), m_ErrorTitle=mir_a2t(szMessage); -		DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_UResultForm),0, ResultDialogProc,(LPARAM)this); -		Exit(ACKRESULT_SUCCESS); return; +		if(!m_pszFileDesc) +			m_pszFileDesc=mir_a2t(szMessage); +		Exit(CSEND_DIALOG); return;  	}  	if(m_ChatRoom){  		TCHAR* tmp = mir_a2t(szMessage); @@ -339,6 +406,11 @@ void CSend::Exit(unsigned int Result) {  	if(!m_bSilent){  		bool err = true;  		switch(Result) { +			case CSEND_DIALOG: +				SkinPlaySound("FileDone"); +				DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_UResultForm),0, ResultDialogProc,(LPARAM)this); +				err = false; +				break;  			case ACKRESULT_SUCCESS:  			case GC_RESULT_SUCCESS:  				SkinPlaySound("FileDone");  | 
