<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2013 The Android Open Source Project

     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.
-->

<!-- Version History
        version 1 - initial version.
        version 2 - added recipientLimit.
        version 3 - added min/max recycler values.
        version 4 - added sms to mms text threshold.
-->

<mms_config version="4">
    <!-- Maximum message size in bytes for a MMS message -->
    <int name="maxMessageSize">614400</int>

    <!-- Maximum height for an attached image -->
    <int name="maxImageHeight">1944</int>

    <!-- Maximum width for an attached image -->
    <int name="maxImageWidth">2592</int>

    <!-- Maximum number of recipients allowed per message. Use a value of -1
         to indicate no limit. -->
    <int name="recipientLimit">20</int>

    <!-- If enableMultipartSMS is true and smsToMmsTextThreshold > 1, then multi-part SMS messages
         will be converted into a single mms message. For example, if the mms_config.xml file
         specifies <int name="smsToMmsTextThreshold">7</int>, then on the 8th sms segment, the
         message will be converted to an mms. -->
    <int name="smsToMmsTextThreshold">8</int>

    <!-- Maximum length in chars of mms subject field -->
    <int name="maxSubjectLength">80</int>

    <!-- Email Gateway Number -->
    <string name="emailGatewayNumber">6245</string>

    <!-- Disable SMS to MMS conversion for multiple recipient SMS -->
    <bool name="enableGroupMms">false</bool>

</mms_config>
