diff options
| author | George Hazan <george.hazan@gmail.com> | 2013-04-09 21:40:22 +0000 | 
|---|---|---|
| committer | George Hazan <george.hazan@gmail.com> | 2013-04-09 21:40:22 +0000 | 
| commit | 3dc0d9b0b7c30ea2f77d74c4ce5b6ccd67bd525c (patch) | |
| tree | efee912ee654baafeb98efcd117921db6b7489bc /plugins/QuickContacts/src | |
| parent | bcb27264ba737778e5d3edad36088bacf74f0236 (diff) | |
- the kernel filters out contacts by proto names much faster than a plugin;
- database cycles simplified
git-svn-id: http://svn.miranda-ng.org/main/trunk@4404 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/QuickContacts/src')
| -rw-r--r-- | plugins/QuickContacts/src/quickcontacts.cpp | 124 | 
1 files changed, 62 insertions, 62 deletions
diff --git a/plugins/QuickContacts/src/quickcontacts.cpp b/plugins/QuickContacts/src/quickcontacts.cpp index 1a978df72b..d554ecf031 100644 --- a/plugins/QuickContacts/src/quickcontacts.cpp +++ b/plugins/QuickContacts/src/quickcontacts.cpp @@ -361,89 +361,89 @@ void LoadContacts(HWND hwndDlg, BOOL show_all)  	for (HANDLE hContact = db_find_first(); hContact; hContact = db_find_next(hContact)) {
  		char *pszProto = GetContactProto(hContact);
 -		if(pszProto != NULL)
 +		if(pszProto == NULL)
 +			continue;
 +
 +		// Get meta
 +		HANDLE hMeta = NULL;
 +		if (metacontactsEnabled)
  		{
 -			// Get meta
 -			HANDLE hMeta = NULL;
 -			if (metacontactsEnabled)
 -			{
 -				if ((!show_all && opts.hide_subcontacts) || opts.group_append)
 -					hMeta = (HANDLE) CallService(MS_MC_GETMETACONTACT, (WPARAM)hContact, 0);
 -			}
 -			else
 -			{
 -				if (metacontacts_proto != NULL && strcmp(metacontacts_proto, pszProto) == 0)
 -					continue;
 -			}
 +			if ((!show_all && opts.hide_subcontacts) || opts.group_append)
 +				hMeta = (HANDLE) CallService(MS_MC_GETMETACONTACT, (WPARAM)hContact, 0);
 +		}
 +		else
 +		{
 +			if (metacontacts_proto != NULL && strcmp(metacontacts_proto, pszProto) == 0)
 +				continue;
 +		}
 -			if (!show_all)
 +		if (!show_all)
 +		{
 +			// Check if is offline and have to show
 +			if (GetStatus(hContact, pszProto) <= ID_STATUS_OFFLINE)
  			{
 -				// Check if is offline and have to show
 -				if (GetStatus(hContact, pszProto) <= ID_STATUS_OFFLINE)
 -				{
 -					// See if has to show
 -					char setting[128];
 -					mir_snprintf(setting, sizeof(setting), "ShowOffline%s", pszProto);
 +				// See if has to show
 +				char setting[128];
 +				mir_snprintf(setting, sizeof(setting), "ShowOffline%s", pszProto);
 -					if (!db_get_b(NULL, MODULE_NAME, setting, FALSE))
 -						continue;
 +				if (!db_get_b(NULL, MODULE_NAME, setting, FALSE))
 +					continue;
 -					// Check if proto offline
 -					else if (opts.hide_from_offline_proto 
 -							&& CallProtoService(pszProto, PS_GETSTATUS, 0, 0) <= ID_STATUS_OFFLINE)
 -						continue;
 +				// Check if proto offline
 +				else if (opts.hide_from_offline_proto 
 +						&& CallProtoService(pszProto, PS_GETSTATUS, 0, 0) <= ID_STATUS_OFFLINE)
 +					continue;
 -				}
 +			}
 -				// Check if is subcontact
 -				if (opts.hide_subcontacts && hMeta != NULL) 
 -				{
 -					if (!opts.keep_subcontacts_from_offline)
 -						continue;
 +			// Check if is subcontact
 +			if (opts.hide_subcontacts && hMeta != NULL) 
 +			{
 +				if (!opts.keep_subcontacts_from_offline)
 +					continue;
 -					if (GetStatus(hMeta, metacontacts_proto) > ID_STATUS_OFFLINE)
 -					{
 +				if (GetStatus(hMeta, metacontacts_proto) > ID_STATUS_OFFLINE)
 +				{
 +					continue;
 +				}
 +				else 
 +				{
 +					char setting[128];
 +					mir_snprintf(setting, sizeof(setting), "ShowOffline%s", metacontacts_proto);
 +					if (db_get_b(NULL, MODULE_NAME, setting, FALSE))
  						continue;
 -					}
 -					else 
 -					{
 -						char setting[128];
 -						mir_snprintf(setting, sizeof(setting), "ShowOffline%s", metacontacts_proto);
 -						if (db_get_b(NULL, MODULE_NAME, setting, FALSE))
 -							continue;
 -					}
  				}
  			}
 +		}
 -			// Add to list
 +		// Add to list
 -			// Get group
 -			c_struct *contact = new c_struct();
 +		// Get group
 +		c_struct *contact = new c_struct();
 -			if (opts.group_append)
 +		if (opts.group_append)
 +		{
 +			DBVARIANT dbv;
 +			if (db_get_ts(hMeta == NULL ? hContact : hMeta, "CList", "Group", &dbv) == 0)
  			{
 -				DBVARIANT dbv;
 -				if (db_get_ts(hMeta == NULL ? hContact : hMeta, "CList", "Group", &dbv) == 0)
 -				{
 -					if (dbv.ptszVal != NULL)
 -						lstrcpyn(contact->szgroup, dbv.ptszVal, SIZEOF(contact->szgroup));
 +				if (dbv.ptszVal != NULL)
 +					lstrcpyn(contact->szgroup, dbv.ptszVal, SIZEOF(contact->szgroup));
 -					db_free(&dbv);
 -				}
 +				db_free(&dbv);
  			}
 +		}
 -			// Make contact name
 -			TCHAR *tmp = (TCHAR *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM) hContact, GCDNF_TCHAR);
 -			lstrcpyn(contact->szname, tmp, SIZEOF(contact->szname));
 +		// Make contact name
 +		TCHAR *tmp = (TCHAR *) CallService(MS_CLIST_GETCONTACTDISPLAYNAME, (WPARAM) hContact, GCDNF_TCHAR);
 +		lstrcpyn(contact->szname, tmp, SIZEOF(contact->szname));
 -			PROTOACCOUNT *acc = ProtoGetAccount(pszProto);
 -			if (acc != NULL)
 -				lstrcpyn(contact->proto, acc->tszAccountName, SIZEOF(contact->proto));
 +		PROTOACCOUNT *acc = ProtoGetAccount(pszProto);
 +		if (acc != NULL)
 +			lstrcpyn(contact->proto, acc->tszAccountName, SIZEOF(contact->proto));
 -			contact->hcontact = hContact;
 -			contacts.insert(contact);
 -		}
 +		contact->hcontact = hContact;
 +		contacts.insert(contact);
  	}
  	SortArray();
  | 
