<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright 2014 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.
-->

<mms_config version="2">
    <!-- In case of single segment M-Notification.ind, this indicates whether
         TransactionID should be appended to URI or not. -->
    <bool name="enabledTransID">true</bool>

    <!-- Send M-Acknowledge.ind and M-NotifyResp.ind to the URL received by the
         M-Notification.ind (WAP-PUSH). -->
    <bool name="enabledNotifyWapMMSC">true</bool>

    <!-- Maximum message size in bytes for a MMS message -->
    <int name="maxMessageSize">1258291</int>

    <!-- UAProf parameter tag name -->
    <string name="uaProfTagName">Profile</string>

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

    <!-- Additional http parameters used in MMS http request.
         Parameters are seperated by '|'. Optional. -->
    <string name="httpParams">x-up-calling-line-id: 1##LINE1NOCOUNTRYCODE##|X-VzW-MDN: 1##LINE1NOCOUNTRYCODE##</string>

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

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

    <!-- Email Gateway Number -->
    <!-- TODO: check if this is correct for Passion -->
    <string name="emailGatewayNumber">6245</string>

    <!-- enable alias -->
    <bool name="aliasEnabled">true</bool>

    <!-- alias rule: min chars -->
    <int name="aliasMinChars">2</int>

    <!-- alias rule: max chars -->
    <int name="aliasMaxChars">48</int>

    <!-- disable the option to attach an audio attachment to an Mms message. Currently Verizon
         doesn't support OGG files and the only audio picker in the system allowed for picking
         ringtones. All of our ringtones are OGG files so it doesn't make sense to allow a user
         to select an audio file that eventually can't be handled. Therefore, the ability
         to select a ringtone to send is disabled. -->
    <bool name="allowAttachAudio">false</bool>

    <!-- Hide the MMS read reports UI in settings -->
    <bool name="enableMMSReadReports">false</bool>

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

    <!-- If true, The text message over 160 characters will be sent in multi part.
         If false, The text message over 160 characters will be sent
         via multi media message. -->
    <bool name="enableMultipartSMS">true</bool>

    <!-- 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">7</int>
</mms_config>

