/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.java.sip.communicator.service.protocol;
import java.io.*;
import java.util.*;
import org.jitsi.service.neomedia.*;
import org.jitsi.service.neomedia.codec.*;
/**
* An interface to get/set settings in the encodings panel.
*
* @author Boris Grozev
* @author Pawel Domas
*/
public class EncodingsRegistrationUtil
implements Serializable
{
/**
* Whether to override global encoding settings.
*/
private boolean overrideEncodingSettings = false;
/**
* Encoding properties associated with this account.
*/
private Map<String, String> encodingProperties
= new HashMap<String, String>();
/**
* Get the stored encoding properties
*
* @return The stored encoding properties.
*/
public Map<String, String> getEncodingProperties()
{
return encodingProperties;
}
/**
* Set the encoding properties
*
* @param encodingProperties The encoding properties to set.
*/
public void setEncodingProperties(Map<String, String> encodingProperties)
{
this.encodingProperties = encodingProperties;
}
/**
* Whether override encodings is enabled
*
* @return Whether override encodings is enabled
*/
public boolean isOverrideEncodings()
{
return overrideEncodingSettings;
}
/**
* Set the override encodings setting to <tt>override</tt>
*
* @param override The value to set the override encoding settings to.
*/
public void setOverrideEncodings(boolean override)
{
this.overrideEncodingSettings = override;
}
/**
* Loads encoding properties from given <tt>accountID</tt> into this
* encodings registration object.
* @param accountID the <tt>AccountID</tt> to be loaded.
* @param mediaService the <tt>MediaService</tt> that will be used to create
* <tt>EncodingConfiguration</tt>.
*/
public void loadAccount(AccountID accountID, MediaService mediaService)
{
String overrideEncodings = accountID.getAccountPropertyString(
ProtocolProviderFactory.OVERRIDE_ENCODINGS);
boolean isOverrideEncodings = Boolean.parseBoolean(overrideEncodings);
setOverrideEncodings(isOverrideEncodings);
Map<String, String> encodingProperties = new HashMap<String, String>();
EncodingConfiguration encodingConfiguration =
mediaService.createEmptyEncodingConfiguration();
encodingConfiguration
.loadProperties(
accountID.getAccountProperties(),
ProtocolProviderFactory.ENCODING_PROP_PREFIX);
encodingConfiguration
.storeProperties(
encodingProperties,
ProtocolProviderFactory.ENCODING_PROP_PREFIX + ".");
setEncodingProperties(encodingProperties);
}
/**
* Stores encoding configuration properties in given <tt>propertiesMap</tt>.
* @param propertiesMap the properties map that will be used.
*/
public void storeProperties(Map<String, String> propertiesMap)
{
propertiesMap.put(
ProtocolProviderFactory.OVERRIDE_ENCODINGS,
Boolean.toString(isOverrideEncodings()));
propertiesMap.putAll(getEncodingProperties());
}
/**
* Creates new instance of <tt>EncodingConfiguration</tt> reflecting this
* object's encoding configuration state.
* @param mediaService the <tt>MediaService</tt> that will be used to create
* new instance of <tt>EncodingConfiguration</tt>.
* @return <tt>EncodingConfiguration</tt> reflecting this object's encoding
* configuration state.
*/
public EncodingConfiguration createEncodingConfig(MediaService mediaService)
{
EncodingConfiguration encodingConfiguration =
mediaService.createEmptyEncodingConfiguration();
encodingConfiguration
.loadProperties(
encodingProperties,
ProtocolProviderFactory.ENCODING_PROP_PREFIX + ".");
return encodingConfiguration;
}
}