Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4c8b3594 authored by Debajit Ghosh's avatar Debajit Ghosh
Browse files

refactor copy-and-paste email address filtering code.

add a column to Calendar.Events contract class.
parent 82df16c6
Loading
Loading
Loading
Loading
+7 −0
Original line number Original line Diff line number Diff line
@@ -506,6 +506,13 @@ public final class Calendar {
         * <P>Type: INTEGER (boolean, readonly)</P>
         * <P>Type: INTEGER (boolean, readonly)</P>
         */
         */
        public static final String CAN_INVITE_OTHERS = "canInviteOthers";
        public static final String CAN_INVITE_OTHERS = "canInviteOthers";

        /**
         * The owner account for this calendar, based on the calendar (foreign
         * key into the calendars table).
         * <P>Type: String</P>
         */
        public static final String OWNER_ACCOUNT = "ownerAccount";
    }
    }


    /**
    /**
+58 −0
Original line number Original line Diff line number Diff line
package android.text.util;

import android.text.InputFilter;
import android.text.Spanned;
import android.text.SpannableStringBuilder;

/**
 * Implements special address cleanup rules:
 * The first space key entry following an "@" symbol that is followed by any combination
 * of letters and symbols, including one+ dots and zero commas, should insert an extra
 * comma (followed by the space).
 *
 * @hide
 */
public class Rfc822InputFilter implements InputFilter {

    public CharSequence filter(CharSequence source, int start, int end, Spanned dest,
        int dstart, int dend) {

        // quick check - did they enter a single space?
        if (end-start != 1 || source.charAt(start) != ' ') {
            return null;
        }

        // determine if the characters before the new space fit the pattern
        // follow backwards and see if we find a comma, dot, or @
        int scanBack = dstart;
        boolean dotFound = false;
        while (scanBack > 0) {
            char c = dest.charAt(--scanBack);
            switch (c) {
                case '.':
                    dotFound = true;    // one or more dots are req'd
                    break;
                case ',':
                    return null;
                case '@':
                    if (!dotFound) {
                        return null;
                    }
                    // we have found a comma-insert case.  now just do it
                    // in the least expensive way we can.
                    if (source instanceof Spanned) {
                        SpannableStringBuilder sb = new SpannableStringBuilder(",");
                        sb.append(source);
                        return sb;
                    } else {
                        return ", ";
                    }
                default:
                    // just keep going
            }
        }

        // no termination cases were found, so don't edit the input
        return null;
    }
}