<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2009 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. -->
    <!-- TODO: check if this is correct for Passion -->
    <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>

    <!-- User-Agent parameter used in MMS http request -->
    <string name="userAgent">sami515</string>

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

    <!-- UAProf URL -->
    <string name="uaProfUrl">http://uaprof.vtext.com/sam/i515/i515.xml</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##LINE1##|X-VzW-MDN: 1##LINE1##</string>

    <!-- Substitution key to be used when adding the users telephone number (Line1) to the
         httpPrams at runtime. Optional. -->
    <string name="httpParamsLine1Key">##LINE1##</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>

