public static int getFontPreviewCount(ThemePackage tp) {
   List<String> list = tp.getPreviewNames();
   int count = 0;
   if (list != null) {
     for (String str : list) {
       if ((str != null) && (str.contains("preview_font"))) {
         count++;
       }
     }
   }
   return count;
 }
  public static int useTheme(
      ThemePackage tp, Context context, MultiTheme mixTheme, String type, boolean isFontChanged) {
    if (tp == null) return RESULT_FAIL;
    try {
      MultiTheme multiTheme = mixTheme;
      String font = null, lockscreen = null;
      String fontPackage = null, lockPackage = null;
      String thirdLockPackageName = null;
      String lockwallpaper = null;
      if (tp != null && tp.isDefault()) {
        multiTheme = null;
        lockscreen = AuiThemeConstant.DEFAULT_LOCK_STYLE;
        lockPackage = tp.getThemePackage();
      }
      MultiTheme currentTheme = MultiThemeManagerProxy.getInstance().getCurrentAuiTheme();

      if (multiTheme == null && tp != null && !tp.isDefault()) {
        multiTheme = new MultiTheme(tp);
      }
      if (multiTheme != null) {
        font = multiTheme.getFont();
        lockscreen = multiTheme.getLockScreenStyle();
        fontPackage = multiTheme.getFontPackage();
        lockPackage = multiTheme.getStylePackage();
        thirdLockPackageName = multiTheme.getThirdLockPackageName();
        lockwallpaper = multiTheme.getLockScreenWallpaper();
      }
      if (!TextUtils.isEmpty(thirdLockPackageName)
          && !ThemePackageUtils.isThirdLockNeeded(thirdLockPackageName, context, true)) {
        return RESULT_CANCEL;
      }
      if (ThemeDetailHelper.THEME_TYPE_FONT.equals(type)) {
        multiTheme = new MultiTheme(currentTheme);
        multiTheme.setFont(font);
        multiTheme.setFontPackage(fontPackage);
        multiTheme.setWallpaper(null); // won't set wallpaper fix bug:43359
      } else if (ThemeDetailHelper.THEME_TYPE_LOCK_STYLE.equals(type)) {
        multiTheme = new MultiTheme(currentTheme);
        multiTheme.setLockScreenStyle(lockscreen);
        multiTheme.setStylePackage(lockPackage);
        multiTheme.setLockScreenWallpaper(lockwallpaper);
        UserSettingsSharPre.getInstance()
            .backupLockWallpaperAndType(lockwallpaper, UserSettingsSharPre.TYPE_THME);
        multiTheme.setThirdLockPackageName(thirdLockPackageName);
        multiTheme.setWallpaper(null); // won't set wallpaper fix bug:43359
      } else {
        UserSettingsSharPre.getInstance()
            .backupWallpaperAndType(
                multiTheme == null ? "" : multiTheme.getWallpaper(), UserSettingsSharPre.TYPE_THME);
      }
      isFontChanged = isFontChanged && font != null;

      if (!isFontChanged && multiTheme != null) {
        multiTheme.setFont(null);
        multiTheme.setFontPackage(null);
      }
      if (multiTheme != null) {
        multiTheme.setGoHome(true);
      }
      if (MultiThemeManagerProxy.getInstance()
          .updateAuiThemeConfig(SystemGlobal.instance().getApplicationContext(), multiTheme)) {
        if (!TextUtils.isEmpty(thirdLockPackageName)) {
          if (!thirdLockPackageName.equals(Utils.getSetThirdLockPkg(context))) {
            setThirdLock(thirdLockPackageName, context);
            Settings.Secure.putString(
                context.getContentResolver(), _3RD_PARTY_LOCKSCREEN, thirdLockPackageName);
          } else {
            openLock(thirdLockPackageName, context);
          }
        } else if (!TextUtils.isEmpty(lockscreen)) {
          // set yunos lockstyle, stop the Third lock
          closeLock(context);
          Settings.Secure.putString(context.getContentResolver(), _3RD_PARTY_LOCKSCREEN, null);
        }

        // YUNOS BEGIN PB
        // ##modules(AliTheme): ##author:[email protected]
        // ##BugID:(166388) ##date:2014/10/26
        // ##decrpition: Added support for HomeShell editmode
        DBManager.getInstance(context).updateThemeChecked(tp);
        // YUNOS END PB
        return RESULT_OK;
      }
    } catch (Exception e) {
      e.printStackTrace();
      return RESULT_FAIL;
    }
    return RESULT_FAIL;
  }