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

Commit e7d2ee3e authored by Jean Chalard's avatar Jean Chalard
Browse files

Add a kind to the suggestion for bookkeeping (A1)

This will help for debug as well as serve as groundwork for
Bug: 6252660
Bug: 6166228
Bug: 2704000
Bug: 6225530

Change-Id: I74d0a7b943fb22c514ad79dc064d69ddf336d3ef
parent e21a092b
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -173,12 +173,11 @@ public class SettingsValues {

    // Helper functions to create member values.
    private static SuggestedWords createSuggestPuncList(final String[] puncs) {
        final ArrayList<SuggestedWords.SuggestedWordInfo> puncList =
                new ArrayList<SuggestedWords.SuggestedWordInfo>();
        final ArrayList<SuggestedWordInfo> puncList = new ArrayList<SuggestedWordInfo>();
        if (puncs != null) {
            for (final String puncSpec : puncs) {
                puncList.add(new SuggestedWords.SuggestedWordInfo(
                        KeySpecParser.getLabel(puncSpec), SuggestedWordInfo.MAX_SCORE));
                puncList.add(new SuggestedWordInfo(KeySpecParser.getLabel(puncSpec),
                        SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_HARDCODED));
            }
        }
        return new SuggestedWords(puncList,
+8 −6
Original line number Diff line number Diff line
@@ -335,15 +335,16 @@ public class Suggest implements Dictionary.WordCallback {
                for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) {
                    sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE);
                }
                mSuggestions.add(0, new SuggestedWordInfo(
                        sb.toString(), SuggestedWordInfo.MAX_SCORE));
                mSuggestions.add(0, new SuggestedWordInfo(sb.toString(),
                        SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_WHITELIST));
            } else {
                mSuggestions.add(0, new SuggestedWordInfo(
                        whitelistedWord, SuggestedWordInfo.MAX_SCORE));
                mSuggestions.add(0, new SuggestedWordInfo(whitelistedWord,
                        SuggestedWordInfo.MAX_SCORE, SuggestedWordInfo.KIND_WHITELIST));
            }
        }

        mSuggestions.add(0, new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE));
        mSuggestions.add(0, new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE,
                SuggestedWordInfo.KIND_TYPED));
        SuggestedWordInfo.removeDups(mSuggestions);

        final ArrayList<SuggestedWordInfo> suggestionsList;
@@ -495,7 +496,8 @@ public class Suggest implements Dictionary.WordCallback {
        for (int i = mTrailingSingleQuotesCount - 1; i >= 0; --i) {
            sb.appendCodePoint(Keyboard.CODE_SINGLE_QUOTE);
        }
        suggestions.add(pos, new SuggestedWordInfo(sb, score));
        // TODO: figure out what type of suggestion this is
        suggestions.add(pos, new SuggestedWordInfo(sb, score, SuggestedWordInfo.KIND_CORRECTION));
        if (suggestions.size() > prefMaxSuggestions) {
            suggestions.remove(prefMaxSuggestions);
        } else {
+14 −3
Original line number Diff line number Diff line
@@ -91,7 +91,8 @@ public class SuggestedWords {
        final ArrayList<SuggestedWordInfo> result = new ArrayList<SuggestedWordInfo>();
        for (CompletionInfo info : infos) {
            if (null != info && info.getText() != null) {
                result.add(new SuggestedWordInfo(info.getText(), SuggestedWordInfo.MAX_SCORE));
                result.add(new SuggestedWordInfo(info.getText(), SuggestedWordInfo.MAX_SCORE,
                        SuggestedWordInfo.KIND_APP_DEFINED));
            }
        }
        return result;
@@ -103,7 +104,8 @@ public class SuggestedWords {
            final CharSequence typedWord, final SuggestedWords previousSuggestions) {
        final ArrayList<SuggestedWordInfo> suggestionsList = new ArrayList<SuggestedWordInfo>();
        final HashSet<String> alreadySeen = new HashSet<String>();
        suggestionsList.add(new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE));
        suggestionsList.add(new SuggestedWordInfo(typedWord, SuggestedWordInfo.MAX_SCORE,
                SuggestedWordInfo.KIND_TYPED));
        alreadySeen.add(typedWord.toString());
        final int previousSize = previousSuggestions.size();
        for (int pos = 1; pos < previousSize; pos++) {
@@ -120,16 +122,25 @@ public class SuggestedWords {

    public static class SuggestedWordInfo {
        public static final int MAX_SCORE = Integer.MAX_VALUE;
        public static final int KIND_TYPED = 0; // What user typed
        public static final int KIND_CORRECTION = 1; // Simple correction/suggestion
        public static final int KIND_COMPLETION = 2; // Completion (suggestion with appended chars)
        public static final int KIND_WHITELIST = 3; // Whitelisted word
        public static final int KIND_BLACKLIST = 4; // Blacklisted word
        public static final int KIND_HARDCODED = 5; // Hardcoded suggestion, e.g. punctuation
        public static final int KIND_APP_DEFINED = 6; // Suggested by the application
        private final String mWordStr;
        public final CharSequence mWord;
        public final int mScore;
        public final int mKind;
        public final int mCodePointCount;
        private String mDebugString = "";

        public SuggestedWordInfo(final CharSequence word, final int score) {
        public SuggestedWordInfo(final CharSequence word, final int score, final int kind) {
            mWordStr = word.toString();
            mWord = word;
            mScore = score;
            mKind = kind;
            mCodePointCount = mWordStr.codePointCount(0, mWordStr.length());
        }