/**
   * @param origPath 源图片文件路径
   * @param width 缩略图设定宽度
   * @param height 缩略图设定高度
   * @return 返回缩略图,失败返回null
   */
  public Bitmap getImageThumbFromMK(String origPath, int width, int height) {

    // 产生缩略图,并把该文件存到指定目录下,更新数据库中图片信息
    Bitmap thumbnail = null;
    Log.d(TAG, origPath + ":make thumbnail and insert message in database");
    ThumbnailCreator mCreator = new ThumbnailCreator(width, height);
    thumbnail = mCreator.createThumbnail(origPath);
    if (thumbnail == null) {
      return null;
    }
    String name = null;
    try {
      name = origPath.substring(origPath.lastIndexOf("/") + 1, origPath.lastIndexOf("."));
    } catch (IndexOutOfBoundsException e) {
      e.printStackTrace();
      return null;
    }
    try {
      File f = new File(imageDB.getAppDir() + "/" + name);
      FileOutputStream fOut = null;
      fOut = new FileOutputStream(f);
      thumbnail.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
      fOut.flush();
      fOut.close();
      imageDB.insert(origPath, f.getPath());
    } catch (Exception e) {
      // TODO Auto-generated catch block
      Log.d(TAG, "create temp file false");
      e.printStackTrace();
    }
    return thumbnail;
  }
    private View getView_tree(int position, View convertView, ViewGroup parent) {
      ViewHolder holder;
      int num_items = 0;
      String temp = mFileMang.getCurrentDir();
      File file = new File(temp + "/" + mDataSource.get(position));
      String[] list = file.list();

      if (list != null) num_items = list.length;

      if (convertView == null) {
        LayoutInflater inflater =
            (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.tablerow, parent, false);

        holder = new ViewHolder();
        holder.topView = (TextView) convertView.findViewById(R.id.top_view);
        holder.bottomView = (TextView) convertView.findViewById(R.id.bottom_view);
        holder.icon = (ImageView) convertView.findViewById(R.id.row_image);
        holder.mSelect = (ImageView) convertView.findViewById(R.id.multiselect_icon);

        convertView.setTag(holder);
      } else {
        holder = (ViewHolder) convertView.getTag();
      }

      /* This will check if the thumbnail cache needs to be cleared by checking
       * if the user has changed directories. This way the cache wont show
       * a wrong thumbnail image for the new image file
       */
      if (!dir_name.equals(temp) && thumbnail_flag) {
        thumbnail.clearBitmapCache();
        dir_name = temp;
      }

      if (positions != null && positions.contains(position))
        holder.mSelect.setVisibility(ImageView.VISIBLE);
      else holder.mSelect.setVisibility(ImageView.GONE);

      holder.topView.setTextColor(mColor);
      holder.bottomView.setTextColor(mColor);

      if (file != null && file.isFile()) {
        String ext = file.toString();
        String sub_ext = ext.substring(ext.lastIndexOf(".") + 1);

        /* This series of else if statements will determine which
         * icon is displayed
         */
        if (TypeFilter.getInstance().isPdfFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.pdf);

        } else if (TypeFilter.getInstance().isMusicFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.music);

        } else if (TypeFilter.getInstance().isPictureFile(sub_ext)) {
          if (thumbnail_flag && file.length() != 0) {
            Bitmap thumb = thumbnail.hasBitmapCached(position);
            boolean isJPG = false;
            if (sub_ext.equalsIgnoreCase("jpeg") || sub_ext.equalsIgnoreCase("jpg")) {
              isJPG = true;
            }
            if (thumb == null) {
              holder.icon.setImageResource(R.drawable.image);
              final Handler mHandler = new Handler();
              thumbnail.setBitmapToImageView(
                  file.getPath(), mHandler, holder.icon, isJPG, position);

            } else {
              holder.icon.setImageBitmap(thumb);
            }

          } else {
            holder.icon.setImageResource(R.drawable.image);
          }

        } else if (TypeFilter.getInstance().isZipFile(sub_ext)
            || TypeFilter.getInstance().isGZipFile(sub_ext)
            || TypeFilter.getInstance().isRarFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.zip);

        } else if (TypeFilter.getInstance().isMovieFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.movies);

        } else if (TypeFilter.getInstance().isWordFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.word);

        } else if (TypeFilter.getInstance().isExcelFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.excel);

        } else if (TypeFilter.getInstance().isPptFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.ppt);

        } else if (TypeFilter.getInstance().isHtml32File(sub_ext)) {
          holder.icon.setImageResource(R.drawable.html32);

        } else if (TypeFilter.getInstance().isXml32File(sub_ext)) {
          holder.icon.setImageResource(R.drawable.xml32);

        } else if (TypeFilter.getInstance().isConfig32File(sub_ext)) {
          holder.icon.setImageResource(R.drawable.config32);

        } else if (TypeFilter.getInstance().isApkFile(sub_ext)) {
          holder.icon.setImageDrawable(getApkIcon(ext, mContext));

        } else if (TypeFilter.getInstance().isJarFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.jar32);

        } else if (TypeFilter.getInstance().isTxtFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.text);
        } else if (TypeFilter.getInstance().isPadFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.text);
        } else {
          holder.icon.setImageResource(R.drawable.config32);
        }

      } else if (file != null && file.isDirectory()) {
        holder.icon.setImageResource(R.drawable.folder);
      } else {
        holder.icon.setImageResource(R.drawable.text);
      }
      String permission = getFilePermissions(file);

      if (file.isFile()) {
        double size = file.length();
        if (size > GB) display_size = String.format("%.2f Gb ", (double) size / GB);
        else if (size < GB && size > MG)
          display_size = String.format("%.2f Mb ", (double) size / MG);
        else if (size < MG && size > KB)
          display_size = String.format("%.2f Kb ", (double) size / KB);
        else display_size = String.format("%.2f bytes ", (double) size);

        if (file.isHidden())
          holder.bottomView.setText("(hidden) | " + display_size + " | " + permission);
        else holder.bottomView.setText(display_size + " | " + permission);

      } else {
        if (file.isHidden())
          holder.bottomView.setText("(hidden) | " + num_items + " items | " + permission);
        else holder.bottomView.setText(num_items + " items | " + permission);
      }

      holder.topView.setText(file.getName());

      return convertView;
    }
    private View getView_catalog(int position, View convertView, ViewGroup parent) {
      ViewHolder holder;
      File file = new File(mDataSource.get(position));

      if (convertView == null) {
        LayoutInflater inflater =
            (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        convertView = inflater.inflate(R.layout.tablerow, parent, false);

        holder = new ViewHolder();
        holder.topView = (TextView) convertView.findViewById(R.id.top_view);
        holder.bottomView = (TextView) convertView.findViewById(R.id.bottom_view);
        holder.icon = (ImageView) convertView.findViewById(R.id.row_image);
        holder.mSelect = (ImageView) convertView.findViewById(R.id.multiselect_icon);

        convertView.setTag(holder);
      } else {
        holder = (ViewHolder) convertView.getTag();
      }

      if (positions != null && positions.contains(position))
        holder.mSelect.setVisibility(ImageView.VISIBLE);
      else holder.mSelect.setVisibility(ImageView.GONE);

      holder.topView.setTextColor(mColor);
      holder.bottomView.setTextColor(mColor);

      if (file != null && file.isFile()) {
        String ext = file.toString();
        String sub_ext = ext.substring(ext.lastIndexOf(".") + 1);

        /* This series of else if statements will determine which
         * icon is displayed
         */
        if (TypeFilter.getInstance().isPdfFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.pdf);

        } else if (TypeFilter.getInstance().isMusicFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.music);

        } else if (TypeFilter.getInstance().isPictureFile(sub_ext)) {
          if (thumbnail_flag && file.length() != 0) {
            Bitmap thumb = thumbnail.hasBitmapCached(position);
            if (thumb == null) {

              holder.icon.setImageResource(R.drawable.image);
              final Handler mHandler = new Handler();
              boolean isJPG = false;
              if (sub_ext.equalsIgnoreCase("jpeg") || sub_ext.equalsIgnoreCase("jpg")) {
                isJPG = true;
              }
              thumbnail.setBitmapToImageView(
                  file.getPath(), mHandler, holder.icon, isJPG, position);

            } else {
              holder.icon.setImageBitmap(thumb);
            }

          } else {
            holder.icon.setImageResource(R.drawable.image);
          }

        } else if (TypeFilter.getInstance().isMovieFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.movies);

        } else if (TypeFilter.getInstance().isTxtFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.text);
        } else if (TypeFilter.getInstance().isWordFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.word);
        } else if (TypeFilter.getInstance().isExcelFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.excel);
        } else if (TypeFilter.getInstance().isPptFile(sub_ext)) {
          holder.icon.setImageResource(R.drawable.ppt);
        } else if (TypeFilter.getInstance().isApkFile(sub_ext)) {
          holder.icon.setImageDrawable(getApkIcon(ext, mContext));
        } else {
          holder.icon.setImageResource(R.drawable.text);
        }
      }

      String permission = getFilePermissions(file);

      if (file.isFile()) {
        double size = file.length();
        if (size > GB) display_size = String.format("%.2f Gb ", (double) size / GB);
        else if (size < GB && size > MG)
          display_size = String.format("%.2f Mb ", (double) size / MG);
        else if (size < MG && size > KB)
          display_size = String.format("%.2f Kb ", (double) size / KB);
        else display_size = String.format("%.2f bytes ", (double) size);

        if (file.isHidden())
          holder.bottomView.setText("(hidden) | " + display_size + " | " + permission);
        else holder.bottomView.setText(display_size + " | " + permission);
      }

      holder.topView.setText(file.getName());

      return convertView;
    }
 public void clearThumbnail() {
   if (thumbnail_flag) {
     thumbnail.clearBitmapCache();
   }
 }