Пример #1
0
  private boolean parseCaseCondition(final XmlPullParser parser) {
    final KeyboardId id = mParams.mId;
    if (id == null) {
      return true;
    }
    final AttributeSet attr = Xml.asAttributeSet(parser);
    final TypedArray caseAttr = mResources.obtainAttributes(attr, R.styleable.Keyboard_Case);
    try {
      final boolean keyboardLayoutSetMatched =
          matchString(
              caseAttr,
              R.styleable.Keyboard_Case_keyboardLayoutSet,
              SubtypeLocaleUtils.getKeyboardLayoutSetName(id.mSubtype));
      final boolean keyboardLayoutSetElementMatched =
          matchTypedValue(
              caseAttr,
              R.styleable.Keyboard_Case_keyboardLayoutSetElement,
              id.mElementId,
              KeyboardId.elementIdToName(id.mElementId));
      final boolean modeMatched =
          matchTypedValue(
              caseAttr, R.styleable.Keyboard_Case_mode, id.mMode, KeyboardId.modeName(id.mMode));
      final boolean navigateNextMatched =
          matchBoolean(caseAttr, R.styleable.Keyboard_Case_navigateNext, id.navigateNext());
      final boolean navigatePreviousMatched =
          matchBoolean(caseAttr, R.styleable.Keyboard_Case_navigatePrevious, id.navigatePrevious());
      final boolean passwordInputMatched =
          matchBoolean(caseAttr, R.styleable.Keyboard_Case_passwordInput, id.passwordInput());
      final boolean clobberSettingsKeyMatched =
          matchBoolean(
              caseAttr, R.styleable.Keyboard_Case_clobberSettingsKey, id.mClobberSettingsKey);
      final boolean shortcutKeyEnabledMatched =
          matchBoolean(
              caseAttr, R.styleable.Keyboard_Case_shortcutKeyEnabled, id.mShortcutKeyEnabled);
      final boolean shortcutKeyOnSymbolsMatched =
          matchBoolean(
              caseAttr, R.styleable.Keyboard_Case_shortcutKeyOnSymbols, id.mShortcutKeyOnSymbols);
      final boolean hasShortcutKeyMatched =
          matchBoolean(caseAttr, R.styleable.Keyboard_Case_hasShortcutKey, id.mHasShortcutKey);
      final boolean languageSwitchKeyEnabledMatched =
          matchBoolean(
              caseAttr,
              R.styleable.Keyboard_Case_languageSwitchKeyEnabled,
              id.mLanguageSwitchKeyEnabled);
      final boolean isMultiLineMatched =
          matchBoolean(caseAttr, R.styleable.Keyboard_Case_isMultiLine, id.isMultiLine());
      final boolean imeActionMatched =
          matchInteger(caseAttr, R.styleable.Keyboard_Case_imeAction, id.imeAction());
      final boolean localeCodeMatched =
          matchString(caseAttr, R.styleable.Keyboard_Case_localeCode, id.mLocale.toString());
      final boolean languageCodeMatched =
          matchString(caseAttr, R.styleable.Keyboard_Case_languageCode, id.mLocale.getLanguage());
      final boolean countryCodeMatched =
          matchString(caseAttr, R.styleable.Keyboard_Case_countryCode, id.mLocale.getCountry());
      final boolean selected =
          keyboardLayoutSetMatched
              && keyboardLayoutSetElementMatched
              && modeMatched
              && navigateNextMatched
              && navigatePreviousMatched
              && passwordInputMatched
              && clobberSettingsKeyMatched
              && shortcutKeyEnabledMatched
              && shortcutKeyOnSymbolsMatched
              && hasShortcutKeyMatched
              && languageSwitchKeyEnabledMatched
              && isMultiLineMatched
              && imeActionMatched
              && localeCodeMatched
              && languageCodeMatched
              && countryCodeMatched;

      if (DEBUG) {
        startTag(
            "<%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s>%s",
            TAG_CASE,
            textAttr(
                caseAttr.getString(R.styleable.Keyboard_Case_keyboardLayoutSet),
                "keyboardLayoutSet"),
            textAttr(
                caseAttr.getString(R.styleable.Keyboard_Case_keyboardLayoutSetElement),
                "keyboardLayoutSetElement"),
            textAttr(caseAttr.getString(R.styleable.Keyboard_Case_mode), "mode"),
            textAttr(caseAttr.getString(R.styleable.Keyboard_Case_imeAction), "imeAction"),
            booleanAttr(caseAttr, R.styleable.Keyboard_Case_navigateNext, "navigateNext"),
            booleanAttr(caseAttr, R.styleable.Keyboard_Case_navigatePrevious, "navigatePrevious"),
            booleanAttr(
                caseAttr, R.styleable.Keyboard_Case_clobberSettingsKey, "clobberSettingsKey"),
            booleanAttr(caseAttr, R.styleable.Keyboard_Case_passwordInput, "passwordInput"),
            booleanAttr(
                caseAttr, R.styleable.Keyboard_Case_shortcutKeyEnabled, "shortcutKeyEnabled"),
            booleanAttr(
                caseAttr, R.styleable.Keyboard_Case_shortcutKeyOnSymbols, "shortcutKeyOnSymbols"),
            booleanAttr(caseAttr, R.styleable.Keyboard_Case_hasShortcutKey, "hasShortcutKey"),
            booleanAttr(
                caseAttr,
                R.styleable.Keyboard_Case_languageSwitchKeyEnabled,
                "languageSwitchKeyEnabled"),
            booleanAttr(caseAttr, R.styleable.Keyboard_Case_isMultiLine, "isMultiLine"),
            textAttr(caseAttr.getString(R.styleable.Keyboard_Case_localeCode), "localeCode"),
            textAttr(caseAttr.getString(R.styleable.Keyboard_Case_languageCode), "languageCode"),
            textAttr(caseAttr.getString(R.styleable.Keyboard_Case_countryCode), "countryCode"),
            selected ? "" : " skipped");
      }

      return selected;
    } finally {
      caseAttr.recycle();
    }
  }