Changeset - 931a5c76852f
[Not reviewed]
0 2 0
HanzZ - 14 years ago 2011-09-21 22:53:37
hanzz.k@gmail.com
Way to disable privacy lists
2 files changed with 38 insertions and 31 deletions:
0 comments (0 inline, 0 general)
backends/libpurple/main.cpp
Show inline comments
 
@@ -277,13 +277,15 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
 
			purple_account_set_bool(account, "custom_smileys", FALSE);
 
			purple_account_set_bool(account, "direct_connect", FALSE);
 

	
 
			setDefaultAccountOptions(account);
 

	
 
			purple_account_set_enabled(account, "spectrum", TRUE);
 
			purple_account_set_privacy_type(account, PURPLE_PRIVACY_DENY_USERS);
 
			if (CONFIG_BOOL(np->config, "service.enable_privacy_lists")) {
 
				purple_account_set_privacy_type(account, PURPLE_PRIVACY_DENY_USERS);
 
			}
 

	
 
			const PurpleStatusType *status_type = purple_account_get_status_type_with_primitive(account, PURPLE_STATUS_AVAILABLE);
 
			if (status_type != NULL) {
 
				purple_account_set_status(account, purple_status_type_get_id(status_type), TRUE, NULL);
 
			}
 
		}
 
@@ -501,19 +503,21 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
 
					purple_account_add_buddy(account, buddy);
 
				}
 
			}
 
		}
 

	
 
		void handleBuddyBlockToggled(const std::string &user, const std::string &buddyName, bool blocked) {
 
			PurpleAccount *account = m_sessions[user];
 
			if (account) {
 
				if (blocked) {
 
					purple_privacy_deny(account, buddyName.c_str(), FALSE, FALSE);
 
				}
 
				else {
 
					purple_privacy_allow(account, buddyName.c_str(), FALSE, FALSE);
 
			if (CONFIG_BOOL(np->config, "service.enable_privacy_lists")) {
 
				PurpleAccount *account = m_sessions[user];
 
				if (account) {
 
					if (blocked) {
 
						purple_privacy_deny(account, buddyName.c_str(), FALSE, FALSE);
 
					}
 
					else {
 
						purple_privacy_allow(account, buddyName.c_str(), FALSE, FALSE);
 
					}
 
				}
 
			}
 
		}
 

	
 
		void handleTypingRequest(const std::string &user, const std::string &buddyName) {
 
			PurpleAccount *account = m_sessions[user];
 
@@ -648,40 +652,42 @@ static void buddyListNewNode(PurpleBlistNode *node) {
 

	
 
	// Tooltip
 
	PurplePlugin *prpl = purple_find_prpl(purple_account_get_protocol_id(account));
 
	PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
 

	
 
	bool blocked = false;
 
	if (prpl_info && prpl_info->tooltip_text) {
 
		PurpleNotifyUserInfo *user_info = purple_notify_user_info_new();
 
		prpl_info->tooltip_text(buddy, user_info, true);
 
		GList *entries = purple_notify_user_info_get_entries(user_info);
 

	
 
		while (entries) {
 
			PurpleNotifyUserInfoEntry *entry = (PurpleNotifyUserInfoEntry *)(entries->data);
 
			if (purple_notify_user_info_entry_get_label(entry) && purple_notify_user_info_entry_get_value(entry)) {
 
				std::string label = purple_notify_user_info_entry_get_label(entry);
 
				if (label == "Blocked" ) {
 
					if (std::string(purple_notify_user_info_entry_get_value(entry)) == "Yes") {
 
						blocked = true;
 
						break;
 
	if (CONFIG_BOOL(np->config, "service.enable_privacy_lists")) {
 
		if (prpl_info && prpl_info->tooltip_text) {
 
			PurpleNotifyUserInfo *user_info = purple_notify_user_info_new();
 
			prpl_info->tooltip_text(buddy, user_info, true);
 
			GList *entries = purple_notify_user_info_get_entries(user_info);
 

	
 
			while (entries) {
 
				PurpleNotifyUserInfoEntry *entry = (PurpleNotifyUserInfoEntry *)(entries->data);
 
				if (purple_notify_user_info_entry_get_label(entry) && purple_notify_user_info_entry_get_value(entry)) {
 
					std::string label = purple_notify_user_info_entry_get_label(entry);
 
					if (label == "Blocked" ) {
 
						if (std::string(purple_notify_user_info_entry_get_value(entry)) == "Yes") {
 
							blocked = true;
 
							break;
 
						}
 
					}
 
				}
 
				entries = entries->next;
 
			}
 
			entries = entries->next;
 
			purple_notify_user_info_destroy(user_info);
 
		}
 
		purple_notify_user_info_destroy(user_info);
 
	}
 

	
 
	if (!blocked) {
 
		blocked = purple_privacy_check(account, purple_buddy_get_name(buddy)) == false;
 
	}
 
	else {
 
		bool purpleBlocked = purple_privacy_check(account, purple_buddy_get_name(buddy)) == false;
 
		if (blocked != purpleBlocked) {
 
			purple_privacy_deny(account, purple_buddy_get_name(buddy), FALSE, FALSE);
 
		if (!blocked) {
 
			blocked = purple_privacy_check(account, purple_buddy_get_name(buddy)) == false;
 
		}
 
		else {
 
			bool purpleBlocked = purple_privacy_check(account, purple_buddy_get_name(buddy)) == false;
 
			if (blocked != purpleBlocked) {
 
				purple_privacy_deny(account, purple_buddy_get_name(buddy), FALSE, FALSE);
 
			}
 
		}
 
	}
 

	
 
	std::cout << "BLOCKED?" << (purple_privacy_check(account, purple_buddy_get_name(buddy)) == false) << "\n";
 
	np->handleBuddyChanged(np->m_accounts[account], purple_buddy_get_name(buddy), getAlias(buddy), getGroups(buddy)[0], status.getType(), message, getIconHash(buddy),
 
		blocked
src/config.cpp
Show inline comments
 
@@ -65,12 +65,13 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description
 
		("service.cert_password", value<std::string>()->default_value(""), "PKCS#12 Certificate password.")
 
		("service.admin_username", value<std::string>()->default_value(""), "Administrator username.")
 
		("service.admin_password", value<std::string>()->default_value(""), "Administrator password.")
 
		("service.reuse_old_backends", value<bool>()->default_value(true), "True if Spectrum should use old backends which were full in the past.")
 
		("service.idle_reconnect_time", value<int>()->default_value(0), "Time in seconds after which idle users are reconnected to let their backend die.")
 
		("service.more_resources", value<bool>()->default_value(false), "Allow more resources to be connected in server mode at the same time.")
 
		("service.enable_privacy_lists", value<bool>()->default_value(true), "")
 
		("identity.name", value<std::string>()->default_value("Spectrum 2 Transport"), "Name showed in service discovery.")
 
		("identity.category", value<std::string>()->default_value("gateway"), "Disco#info identity category. 'gateway' by default.")
 
		("identity.type", value<std::string>()->default_value(""), "Type of transport ('icq','msn','gg','irc', ...)")
 
		("registration.enable_public_registration", value<bool>()->default_value(true), "True if users should be able to register.")
 
		("registration.language", value<std::string>()->default_value("en"), "Default language for registration form")
 
		("registration.instructions", value<std::string>()->default_value(""), "Instructions showed to user in registration form")
0 comments (0 inline, 0 general)