Example #1
0
QString DirNameFromString(QString string, QString inDir)
{
	int num = 0;
	QString dirName = RemoveInvalidFilenameChars(string, '-');
	while (QFileInfo(PathCombine(inDir, dirName)).exists())
	{
		num++;
		dirName = RemoveInvalidFilenameChars(dirName, '-') + QString::number(num);
		
		// If it's over 9000
		if (num > 9000)
			return "";
	}
	return dirName;
}
Example #2
0
void GetContactReceivedFilesDir(HANDLE hContact, TCHAR *szDir, int cchDir, BOOL patchVars)
{
	DBVARIANT dbv;
	TCHAR szTemp[MAX_PATH];
	szTemp[0] = 0;

	if ( !DBGetContactSettingTString( NULL, "SRFile", "RecvFilesDirAdv", &dbv)) {
		if ( lstrlen( dbv.ptszVal ) > 0 )
			lstrcpyn( szTemp, dbv.ptszVal, SIZEOF( szTemp ));
		DBFreeVariant( &dbv );
	}

	if ( !szTemp[0] )
#ifdef _UNICODE
		mir_sntprintf( szTemp, SIZEOF(szTemp), _T("%%mydocuments%%\\%s\\%%userid%%"), TranslateT("My Received Files"));
#else
		mir_sntprintf( szTemp, SIZEOF(szTemp), _T("%%mydocuments%%\\%s\\%%userid%%"), "My Received Files");
#endif

	if ( hContact ) {
		REPLACEVARSDATA dat = { 0 };
		REPLACEVARSARRAY rvaVarsToReplace[4];
		rvaVarsToReplace[0].lptzKey   = _T("nick");
		rvaVarsToReplace[0].lptzValue = mir_tstrdup((TCHAR *)CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM)hContact, GCDNF_TCHAR));
		rvaVarsToReplace[1].lptzKey   = _T("userid");
		rvaVarsToReplace[1].lptzValue = GetContactID(hContact);
		rvaVarsToReplace[2].lptzKey   = _T("proto");
		rvaVarsToReplace[2].lptzValue = mir_a2t((char *)CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)hContact,0));
		rvaVarsToReplace[3].lptzKey   = NULL;
		rvaVarsToReplace[3].lptzValue = NULL;
		for (int i=0; i < (SIZEOF(rvaVarsToReplace)-1);i++)
			RemoveInvalidFilenameChars(rvaVarsToReplace[i].lptzValue);

		dat.cbSize = sizeof( dat );
		dat.dwFlags = RVF_TCHAR;
		dat.variables = rvaVarsToReplace;
		dat.hContact = hContact;
		TCHAR* result = ( TCHAR* )CallService( MS_UTILS_REPLACEVARS, (WPARAM)szTemp, (LPARAM)&dat );
		if ( result ) {
			_tcsncpy( szTemp, result, SIZEOF(szTemp));
			mir_free( result );
			for (int i=0; i < (SIZEOF(rvaVarsToReplace)-1);i++)
				mir_free(rvaVarsToReplace[i].lptzValue);
	}	}

	if (patchVars)
		patchDir( szTemp, SIZEOF(szTemp));
	RemoveInvalidPathChars(szTemp);
	lstrcpyn( szDir, szTemp, cchDir );
}
Example #3
0
void GetContactReceivedFilesDir(MCONTACT hContact, TCHAR *szDir, int cchDir, BOOL patchVars)
{
	TCHAR tszTemp[MAX_PATH];

	ptrT tszRecvPath(db_get_tsa(NULL, "SRFile", "RecvFilesDirAdv"));
	if (tszRecvPath)
		_tcsncpy_s(tszTemp, tszRecvPath, _TRUNCATE);
	else
		mir_sntprintf(tszTemp, _T("%%mydocuments%%\\%s\\%%userid%%"), TranslateT("My received files"));

	if (hContact) {
		hContact = db_mc_tryMeta(hContact);

		REPLACEVARSARRAY rvaVarsToReplace[4];
		rvaVarsToReplace[0].key.t = _T("nick");
		rvaVarsToReplace[0].value.t = mir_tstrdup((TCHAR *)pcli->pfnGetContactDisplayName(hContact, 0));
		rvaVarsToReplace[1].key.t = _T("userid");
		rvaVarsToReplace[1].value.t = GetContactID(hContact);
		rvaVarsToReplace[2].key.t = _T("proto");
		rvaVarsToReplace[2].value.t = mir_a2t(GetContactProto(hContact));
		rvaVarsToReplace[3].key.t = NULL;
		rvaVarsToReplace[3].value.t = NULL;
		for (int i = 0; i < (_countof(rvaVarsToReplace) - 1); i++)
			RemoveInvalidFilenameChars(rvaVarsToReplace[i].value.t);

		TCHAR *result = Utils_ReplaceVarsT(tszTemp, hContact, rvaVarsToReplace);
		if (result) {
			_tcsncpy(tszTemp, result, _countof(tszTemp));
			mir_free(result);
			for (int i = 0; i < (_countof(rvaVarsToReplace) - 1); i++)
				mir_free(rvaVarsToReplace[i].value.t);
		}
	}

	if (patchVars)
		patchDir(tszTemp, _countof(tszTemp));
	RemoveInvalidPathChars(tszTemp);
	mir_tstrncpy(szDir, tszTemp, cchDir);
}