public OpenPath[] listFiles(String rootRelative) throws IOException {
   if (DEBUG) Logger.LogDebug("OpenLZMA.listFiles(" + rootRelative + ")");
   if (!mFamily.containsKey(rootRelative)) {
     Logger.LogWarning("No children found for [" + rootRelative + "]");
     return new OpenPath[0];
   }
   List<OpenPath> ret = mFamily.get(rootRelative);
   if (DEBUG) Logger.LogVerbose(ret.size() + " children found for [" + rootRelative + "]");
   return ret.toArray(new OpenPath[ret.size()]);
 }
 private void addFamilyEntry(String path, OpenLZMAEntry entry) {
   List<OpenPath> list = mFamily.get(path);
   if (list == null) list = new ArrayList<OpenPath>();
   if (DEBUG) Logger.LogDebug("Adding [" + entry.getName() + "] into [" + path + "]");
   list.add(entry);
   mFamily.put(path, list);
 }
 public CarouselFragment(OpenPath mParent) {
   super();
   if (OpenExplorer.BEFORE_HONEYCOMB) {
     Logger.LogError("Who is making me?", new Exception("WTF!"));
   }
   mPath = mParent;
   // getExplorer().updateTitle(mParent.getPath());
   refreshData(getArguments(), false);
 }
  @Override
  public OpenPath[] listFiles() throws IOException {
    if (DEBUG) Logger.LogVerbose("Listing OpenLZMA " + mFile);
    if (mLZMA == null) return mChildren;

    getAllEntries();

    mChildren = listFiles("");

    return mChildren;
  }
 public OpenLZMA(OpenFile file) {
   mFile = file;
   try {
     mRAF = new MyRandomAccessFile(file.getPath(), "r");
     mLZMA = new Handler();
     mLZMA.Open(mRAF);
     // Logger.LogInfo("LZMA file " + LZMAFile + " has " + length() +
     // " entries");
   } catch (IOException e) {
     Logger.LogError("Couldn't open LZMA file (" + file + ")");
   }
 }
  @Override
  public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    if (!isVisible() || isDetached()) return;
    super.onCreateOptionsMenu(menu, inflater);
    if (mPath == null || !mPath.isFile() || !IntentManager.isIntentAvailable(mPath, getExplorer()))
      MenuUtils.setMenuVisible(menu, false, R.id.menu_context_edit, R.id.menu_context_view);
    Logger.LogVerbose("ContentFragment.onCreateOptionsMenu");
    if (!menu.hasVisibleItems()) inflater.inflate(R.menu.content, menu);
    MenuUtils.setMenuVisible(menu, OpenExplorer.IS_DEBUG_BUILD, R.id.menu_debug);
    if (!OpenExplorer.BEFORE_HONEYCOMB && OpenExplorer.USE_ACTION_BAR) {
      MenuUtils.setMenuVisible(menu, false, R.id.menu_more);
      try {
        final SearchView mSearchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
        if (mSearchView != null)
          mSearchView.setOnQueryTextListener(
              new SearchView.OnQueryTextListener() {
                @TargetApi(11)
                public boolean onQueryTextSubmit(String query) {
                  mSearchView.clearFocus();
                  Intent intent = getExplorer().getIntent();
                  if (intent == null) intent = new Intent();
                  intent.setAction(Intent.ACTION_SEARCH);
                  Bundle appData = new Bundle();
                  appData.putString(
                      "path", getExplorer().getDirContentFragment(false).getPath().getPath());
                  intent.putExtra(SearchManager.APP_DATA, appData);
                  intent.putExtra(SearchManager.QUERY, query);
                  getExplorer().handleIntent(intent);
                  return true;
                }

                public boolean onQueryTextChange(String newText) {
                  return false;
                }
              });
      } catch (NullPointerException e) {
        Logger.LogError("Couldn't set up Search ActionView", e);
      }
    }
  }
 /**
  * Compare two OpenPath files, with sorting taken into account
  *
  * @param fa First OpenPath
  * @param fb Second OpenPath
  * @return an int determined by comparing the two paths. Possible values are described in the
  *     Comparable interface.
  * @see Comparable
  */
 public static int compare(OpenPath fa, OpenPath fb) {
   try {
     if (fa == null && fb != null) return 1;
     if (fb == null && fa != null) return 0;
     if (fb == null || fa == null) return 0;
     if (Sorting.foldersFirst()) {
       if (fb.isDirectory() && !fa.isDirectory()) return 1;
       if (fa.isDirectory() && !fb.isDirectory()) return -1;
     }
     String a = fa.getName();
     String b = fb.getName();
     Long sa = fa.length();
     Long sb = fb.length();
     Long ma = fa.lastModified();
     Long mb = fb.lastModified();
     if (a == null && b != null) return 1;
     if (a == null || b == null) return 0;
     switch (Sorting.getType()) {
       case ALPHA_DESC:
         return b.toLowerCase().compareTo(a.toLowerCase());
       case ALPHA:
         return a.toLowerCase().compareTo(b.toLowerCase());
       case SIZE_DESC:
         if (sa == null && sb != null) return 1;
         if (sa == null || sb == null) return 0;
         return sa.compareTo(sb);
       case SIZE:
         if (sb == null && sa != null) return 1;
         if (sa == null || sb == null) return 0;
         return sb.compareTo(sa);
       case DATE_DESC:
         if (ma == null && mb != null) return 1;
         if (ma == null || mb == null) return 0;
         return ma.compareTo(mb);
       case DATE:
         if (mb == null && ma != null) return 1;
         if (ma == null || mb == null) return 0;
         return mb.compareTo(ma);
       case TYPE:
         String ea = a.substring(a.lastIndexOf(".") + 1, a.length()).toLowerCase();
         String eb = b.substring(b.lastIndexOf(".") + 1, b.length()).toLowerCase();
         return ea.compareTo(eb);
       case NONE:
         return 0;
       default:
         return a.toLowerCase().compareTo(b.toLowerCase());
     }
   } catch (Exception e) {
     Logger.LogError("Unable to sort.", e);
     return 0;
   }
 }
 private void addFamilyPath(String path) {
   String parent = path;
   if (parent.endsWith("/")) parent = parent.substring(0, parent.length() - 1);
   parent = parent.substring(0, parent.lastIndexOf("/") + 1);
   if (!parent.equals("") && !parent.endsWith("/")) parent += "/";
   if (DEBUG) Logger.LogDebug("FamilyPath adding [" + path + "] to [" + parent + "]");
   List<OpenPath> kids = mFamily.get(parent);
   if (kids == null) kids = new ArrayList<OpenPath>();
   OpenPath vp = findVirtualPath(path);
   if (!kids.contains(vp)) kids.add(vp);
   mFamily.put(parent, kids);
   if (!parent.equals("")) addFamilyPath(parent);
 }
  @Override
  public void onViewCreated(View mParent, Bundle savedInstanceState) {
    super.onViewCreated(mParent, savedInstanceState);
    Logger.LogDebug("Carousel onViewCreated!");
    mView.getHolder().setFormat(PixelFormat.RGBA_8888);
    mPaint.setColor(0xffffffff);

    final Resources res = getResources();
    mHelper.setCarouselView(mView);
    mView.setSlotCount(CARD_SLOTS);
    mView.createCards(INCREMENTAL_ADD ? 1 : size());
    mView.setVisibleSlots(SLOTS_VISIBLE);
    mView.setStartAngle((float) -(2.0f * Math.PI * 5 / CARD_SLOTS));
    mBorder = BitmapFactory.decodeResource(res, R.drawable.border);
    mView.setDefaultBitmap(mBorder);
    mView.setLoadingBitmap(mBorder);
    // mView.setDetailTextureAlignment(CarouselView.DetailAlignment.CENTER_VERTICAL |
    // CarouselView.DetailAlignment.LEFT);
    mView.setBackgroundColor(0.25f, 0.25f, 0.5f, 0.25f);
    // Theme t = getActivity().getTheme();
    // mView.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.screen_background_dark));
    mView.setRezInCardCount(3.0f);
    mView.setFadeInDuration(200);
    mView.setVisibleDetails(VISIBLE_DETAIL_COUNT);
    mView.setDragModel(CarouselView.DRAG_MODEL_PLANE);
    if (INCREMENTAL_ADD) {
      mView.postDelayed(mAddCardRunnable, 2000);
    }

    try {
      mGlossyOverlay = BitmapFactory.decodeResource(res, R.drawable.glossy_overlay);
    } catch (OutOfMemoryError e) {
      Logger.LogError("Out of memory!", e);
      mGlossyOverlay = null;
    }
  }
 // @Override
 public void onHiddenFilesChanged(boolean toShow) {
   Logger.LogInfo("onHiddenFilesChanged(" + toShow + ")");
   setShowHiddenFiles(toShow);
   // getManager().setShowHiddenFiles(state);
   refreshData(null, false);
 }