diff options
| author | George Hazan <george.hazan@gmail.com> | 2024-09-27 20:41:06 +0300 | 
|---|---|---|
| committer | George Hazan <george.hazan@gmail.com> | 2024-09-27 20:41:11 +0300 | 
| commit | b2f4da66f2affc8a53f79eef2a74cf447c8b0db8 (patch) | |
| tree | 264aa8ed10526892839cb18238f34e400e402091 /plugins/SeenPlugin | |
| parent | a39926c9f33f53fe57492ed4960d817a9c95d3e6 (diff) | |
SeenPlugin: old ugly schema of storing protocol settings replaced with more convenient one
Diffstat (limited to 'plugins/SeenPlugin')
| -rw-r--r-- | plugins/SeenPlugin/src/main.cpp | 6 | ||||
| -rw-r--r-- | plugins/SeenPlugin/src/options.cpp | 15 | ||||
| -rw-r--r-- | plugins/SeenPlugin/src/stdafx.h | 2 | ||||
| -rw-r--r-- | plugins/SeenPlugin/src/utils.cpp | 30 | 
4 files changed, 19 insertions, 34 deletions
| diff --git a/plugins/SeenPlugin/src/main.cpp b/plugins/SeenPlugin/src/main.cpp index 1e2b114f73..80b5379fbc 100644 --- a/plugins/SeenPlugin/src/main.cpp +++ b/plugins/SeenPlugin/src/main.cpp @@ -55,12 +55,7 @@ DBVTranslation idleTr[TRANSNUMBER] = {  	{ any_to_Idle, L"Any to /Idle or empty", 0 }
  };
 -static int CompareProtos(const char *p1, const char *p2)
 -{	return mir_strcmp(p1, p2);
 -}
 -
  BOOL includeIdle;
 -LIST<char> arWatchedProtos(10, CompareProtos);
  LIST<logthread_info> arContacts(16, NumericKeySortT);
  mir_cs csContacts;
 @@ -144,7 +139,6 @@ int CMPlugin::Load()  int CMPlugin::Unload()
  {
  	UninitFileOutput();
 -	UnloadWatchedProtos();
  	WindowList_Destroy(g_pUserInfo);
 diff --git a/plugins/SeenPlugin/src/options.cpp b/plugins/SeenPlugin/src/options.cpp index 765fedb421..e3e2ef05b5 100644 --- a/plugins/SeenPlugin/src/options.cpp +++ b/plugins/SeenPlugin/src/options.cpp @@ -342,22 +342,11 @@ public:  		g_plugin.setByte("IdleSupport", IsDlgButtonChecked(m_hwnd, IDC_IDLESUPPORT));
  		// save protocol list
 -		CMStringA watchedProtocols;
 -
  		int nItems = protocols.GetItemCount();
 -		for (int i=0; i < nItems; i++) {
 -			if (!protocols.GetCheckState(i))
 -				continue;
 -
 +		for (int i = 0; i < nItems; i++) {
  			char *szProto = (char *)protocols.GetItemData(i);
 -			if (!watchedProtocols.IsEmpty())
 -				watchedProtocols.AppendChar('\n');
 -			watchedProtocols.Append(szProto);
 +			db_set_b(0, szProto, MODULENAME "Enabled", protocols.GetCheckState(i));
  		}
 -		g_plugin.setString("WatchedAccounts", watchedProtocols);
 -
 -		UnloadWatchedProtos();
 -		LoadWatchedProtos();
  		return true;
  	}
 diff --git a/plugins/SeenPlugin/src/stdafx.h b/plugins/SeenPlugin/src/stdafx.h index 61f6009db6..7246708e02 100644 --- a/plugins/SeenPlugin/src/stdafx.h +++ b/plugins/SeenPlugin/src/stdafx.h @@ -138,8 +138,6 @@ extern uint32_t dwmirver;  extern bool g_bFileActive;
  void   LoadWatchedProtos();
 -void   UnloadWatchedProtos();
 -extern LIST<char> arWatchedProtos;
  extern LIST<logthread_info> arContacts;
  extern mir_cs csContacts;
 diff --git a/plugins/SeenPlugin/src/utils.cpp b/plugins/SeenPlugin/src/utils.cpp index 7897bec510..aacad823a3 100644 --- a/plugins/SeenPlugin/src/utils.cpp +++ b/plugins/SeenPlugin/src/utils.cpp @@ -38,18 +38,22 @@ void LoadWatchedProtos()  	}
  	ptrA szProtos(g_plugin.getStringA("WatchedAccounts"));
 -	if (szProtos == NULL)
 -		return;
 -
 -	for (char *p = strtok(szProtos, "\n"); p != nullptr; p = strtok(nullptr, "\n"))
 -		arWatchedProtos.insert(mir_strdup(p));
 -}
 -
 -void UnloadWatchedProtos()
 -{
 -	for (auto &it : arWatchedProtos)
 -		mir_free(it);
 -	arWatchedProtos.destroy();
 +	if (szProtos != NULL) {
 +		OBJLIST<char> oldProtos(1);
 +		for (char *p = strtok(szProtos, "\n"); p != nullptr; p = strtok(nullptr, "\n"))
 +			oldProtos.insert(newStr(rtrim(p)));
 +
 +		for (auto *pa : Accounts()) {
 +			db_set_b(0, pa->szModuleName, MODULENAME "Enabled", false);
 +			for (auto &it: oldProtos) {
 +				if (!mir_strcmp(pa->szModuleName, it)) {
 +					db_set_b(0, pa->szModuleName, MODULENAME "Enabled", true);
 +					break;
 +				}
 +			}
 +		}
 +		g_plugin.delSetting("WatchedAccounts");
 +	}
  }
  /////////////////////////////////////////////////////////////////////////////////////////
 @@ -64,7 +68,7 @@ int IsWatchedProtocol(const char* szProto)  	if (pd == nullptr || CallProtoService(szProto, PS_GETCAPS, PFLAGNUM_2, 0) == 0)
  		return 0;
 -	return arWatchedProtos.find((char*)szProto) != nullptr;
 +	return db_get_b(0, szProto, MODULENAME "Enabled", true);
  }
  bool isJabber(const char *protoname)
 | 
