Home | History | Annotate | Download | only in common
      1 /*
      2  * Copyright (C) 2013 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.inputmethod.latin.common;
     18 
     19 public class NativeSuggestOptions {
     20     // Need to update suggest_options.h when you add, remove or reorder options.
     21     private static final int IS_GESTURE = 0;
     22     private static final int USE_FULL_EDIT_DISTANCE = 1;
     23     private static final int BLOCK_OFFENSIVE_WORDS = 2;
     24     private static final int SPACE_AWARE_GESTURE_ENABLED = 3;
     25     private static final int WEIGHT_FOR_LOCALE_IN_THOUSANDS = 4;
     26     private static final int OPTIONS_SIZE = 5;
     27 
     28     private final int[] mOptions;
     29 
     30     public NativeSuggestOptions() {
     31         mOptions = new int[OPTIONS_SIZE];
     32     }
     33 
     34     public void setIsGesture(final boolean value) {
     35         setBooleanOption(IS_GESTURE, value);
     36     }
     37 
     38     public void setUseFullEditDistance(final boolean value) {
     39         setBooleanOption(USE_FULL_EDIT_DISTANCE, value);
     40     }
     41 
     42     public void setBlockOffensiveWords(final boolean value) {
     43         setBooleanOption(BLOCK_OFFENSIVE_WORDS, value);
     44     }
     45 
     46     public void setWeightForLocale(final float value) {
     47         // We're passing this option as a fixed point value, in thousands. This is decoded in
     48         // native code by SuggestOptions#weightForLocale().
     49         setIntegerOption(WEIGHT_FOR_LOCALE_IN_THOUSANDS, (int) (value * 1000));
     50     }
     51 
     52     public int[] getOptions() {
     53         return mOptions;
     54     }
     55 
     56     private void setBooleanOption(final int key, final boolean value) {
     57         mOptions[key] = value ? 1 : 0;
     58     }
     59 
     60     private void setIntegerOption(final int key, final int value) {
     61         mOptions[key] = value;
     62     }
     63 }
     64