Advertisement
Guest User

Untitled

a guest
May 16th, 2017
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.06 KB | None | 0 0
  1.  
  2. package net.textreaderfb2epub.fileBrowser;
  3.  
  4. import java.io.File;
  5.  
  6. import net.textreaderfb2epub.common.BaseActivity;
  7. import net.textreaderfb2epub.common.DBSettings;
  8. import net.textreaderfb2epub.common.MenuItem;
  9. import net.textreaderfb2epub.common.CustomMenuView;
  10. import net.textreaderfb2epub.common.BaseCustomMenu.OnMenuListener;
  11. import net.textreaderfb2epub.library.CoverView;
  12. import net.textreaderfb2epub.library.FileInfo;
  13. import net.textreaderfb2epub.library.Library;
  14. import net.textreaderfb2epub.library.CoverView.OnCoverClickListener;
  15. import net.textreaderfb2epub.library.metaData.MetaDataFactory;
  16. import net.textreaderfb2epub.R;
  17. import android.content.Intent;
  18. import android.net.Uri;
  19. import android.os.Bundle;
  20. import android.util.DisplayMetrics;
  21. import android.util.Log;
  22. import android.view.KeyEvent;
  23. import android.view.LayoutInflater;
  24. import android.view.Menu;
  25. import android.view.MenuInflater;
  26. import android.view.View;
  27. import android.view.ViewGroup;
  28. import android.view.View.OnClickListener;
  29. import android.view.animation.Animation;
  30. import android.view.animation.AnimationUtils;
  31. import android.widget.FrameLayout;
  32. import android.widget.Toast;
  33.  
  34. public class FileBrowser extends BaseActivity implements OnClickListener, OnCoverClickListener, OnMenuListener
  35. {
  36. public static final int KEYCODE_PAGE_BOTTOMLEFT = 0x5d;
  37. public static final int KEYCODE_PAGE_BOTTOMRIGHT = 0x5f;
  38. public static final int KEYCODE_PAGE_TOPLEFT = 0x5c;
  39. public static final int KEYCODE_PAGE_TOPRIGHT = 0x5e;
  40.  
  41.  
  42. public static final int MODE_NONE = 0;
  43. public static final int MODE_COVERS = 1;
  44. public static final int MODE_LIST = 2;
  45. public static final int MODE_SHELF = 3;
  46.  
  47. private BookLibrary m_bookLibrary;
  48.  
  49. private FileInfoView m_fileInfoView;
  50. private FileBrowserView m_fileBrowserView;
  51. private CoverView m_coverView;
  52. private ViewGroup m_coversContainer;
  53. private ViewGroup m_infoContainer;
  54. private ViewGroup m_listContainer;
  55.  
  56. private CustomMenuView m_menuView;
  57. private ViewGroup m_menuScreen;
  58. private ViewGroup m_menuDialog;
  59.  
  60. private String m_lastBook;
  61. private String m_cacheLocation;
  62.  
  63. private int m_mode = MODE_NONE;
  64.  
  65. public String getCacheLocation()
  66. {
  67. return m_cacheLocation;
  68. }
  69.  
  70. public FileBrowser()
  71. {
  72. super("File Browser");
  73. }
  74.  
  75. @Override
  76. public void onCreate(Bundle savedInstanceState)
  77. {
  78. super.onCreate(savedInstanceState);
  79.  
  80. Uri uri = getIntent().getData();
  81.  
  82. if (uri == null)
  83. {
  84. int lastApplication = 0;
  85. try
  86. {
  87. DBSettings settings = new DBSettings(this);
  88. lastApplication = settings.getInt("lastApplication", 0);
  89. m_lastBook = settings.getString("readingNow", "");
  90. settings.close();
  91. }
  92. catch(Exception ex)
  93. {
  94. Log.d("FileBrowser", "Problem loading settings database: " + ex);
  95. }
  96.  
  97. if (lastApplication != 0 && m_lastBook != null && m_lastBook.length() > 0 && new File(m_lastBook).exists())
  98. {
  99. Intent intent = new Intent(Intent.ACTION_VIEW);
  100. intent.setClassName("net.textreaderfb2epub.textReader", "net.textreaderfb2epub.textReader.TextReader");
  101. intent.setData(Uri.parse("file://" + m_lastBook));
  102. startActivity(intent);
  103. terminate();
  104. return;
  105. }
  106. }
  107.  
  108. MetaDataFactory.initDB(this);
  109.  
  110. setContentView(R.layout.browser);
  111.  
  112. m_coversContainer = (ViewGroup)findViewById(R.id.covers);
  113. m_infoContainer = (ViewGroup)findViewById(R.id.details);
  114. m_listContainer = (ViewGroup)findViewById(R.id.list_view);
  115.  
  116. m_coverView = new CoverView(this, m_coversContainer);
  117. m_coverView.setCloseClickListener(this);
  118. m_coverView.setCoverClickListener(this);
  119.  
  120. m_bookLibrary = new BookLibrary(this);
  121.  
  122. updateCacheLocation(true);
  123.  
  124. m_fileInfoView = new FileInfoView(this, m_infoContainer);
  125. m_fileInfoView.setOnClickListener(this);
  126.  
  127. m_fileBrowserView = new FileBrowserView(this, m_listContainer, m_bookLibrary);
  128. m_fileBrowserView.setOnClickListener(this);
  129.  
  130. if (isNookTouch)
  131. {
  132. View coverBack = findViewById(R.id.back_plane);
  133. coverBack.setBackgroundColor(0xFFFFFFFF);
  134. }
  135.  
  136.  
  137. DisplayMetrics dm = new DisplayMetrics();
  138. getWindowManager().getDefaultDisplay().getMetrics(dm);
  139.  
  140. int widthPadding = dm.widthPixels / 50;
  141. if (widthPadding < dm.density * 2)
  142. widthPadding = (int)(dm.density * 2);
  143.  
  144. float dpi = dm.density * 160;
  145.  
  146. float iwidth = (dm.widthPixels - widthPadding * 2)/dpi;
  147.  
  148. if (!isNookColor && iwidth > 4)
  149. widthPadding = (int)((dm.widthPixels - 4 * dpi)/2);
  150.  
  151. int heightPadding = dm.heightPixels / 25;
  152. if (heightPadding < dm.density * 4)
  153. heightPadding = (int)(dm.density * 4);
  154.  
  155. float iheight = (dm.heightPixels - heightPadding * 2)/dpi;
  156.  
  157. if (!isNookColor && iheight > 3)
  158. heightPadding = (int)((dm.heightPixels - 3 * dpi)/2);
  159.  
  160. if (widthPadding < 0)
  161. widthPadding = 0;
  162. if (widthPadding > dm.widthPixels / 3)
  163. widthPadding = dm.widthPixels / 3;
  164.  
  165. if (heightPadding < 0)
  166. heightPadding = 0;
  167. if (heightPadding > dm.heightPixels / 3)
  168. heightPadding = dm.heightPixels / 3;
  169.  
  170. m_menuDialog = new FrameLayout(this);
  171. m_menuDialog.setPadding(widthPadding, heightPadding, widthPadding, heightPadding);
  172. m_menuDialog.setFocusable(true);
  173.  
  174. m_menuScreen = (ViewGroup) findViewById(R.id.menu);
  175. m_menuScreen.addView(m_menuDialog);
  176.  
  177. View menu = LayoutInflater.from(this).inflate(R.layout.menu_dialog, m_menuDialog);
  178. menu.findViewById(R.id.backButton).setOnClickListener(this);
  179.  
  180. m_menuView = new FileBrowserMenu(this, (FrameLayout) menu.findViewById(R.id.dialog_content), R.xml.browser_menu);
  181. //m_menuView.setBackButtonListener(this);
  182. m_menuView.setMenuListener(this);
  183.  
  184. hideMenu();
  185. updateMenu();
  186.  
  187. onChangeMode(MODE_COVERS);
  188. }
  189.  
  190. private void updateCacheLocation(boolean clean)
  191. {
  192. m_cacheLocation = getCacheDir().getAbsolutePath();
  193.  
  194. switch (m_bookLibrary.getCacheMode())
  195. {
  196. case Library.CACHE_INTERNAL:
  197. try
  198. {
  199. long longExpireDate = java.util.Calendar.getInstance().getTimeInMillis() - 3 * 24 * 60 * 60 * 1000; // 3 days
  200. long shortExpireDate = java.util.Calendar.getInstance().getTimeInMillis() - 1 * 24 * 60 * 60 * 1000; // 1 days
  201. for(File file : getCacheDir().listFiles())
  202. {
  203. if (file.lastModified() < longExpireDate || (file.lastModified() < shortExpireDate && file.length() >= 0x100000))
  204. {
  205. Log.d("FileBrowser", "Purged file " + file + " from cache");
  206. file.delete();
  207. }
  208. }
  209. }
  210. catch(Exception ex)
  211. {
  212. Log.d("FileBrowser", "Exception clearing cache: "+ ex);
  213. }
  214.  
  215. break;
  216. case Library.CACHE_NEAR:
  217. m_cacheLocation = null;
  218. break;
  219. case Library.CACHE_EXTERNAL:
  220. if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
  221. {
  222. String externalCard = android.os.Environment.getExternalStorageDirectory().getAbsolutePath();
  223.  
  224. File check = new File(externalCard + "/.nomadreader");
  225. if (check.exists())
  226. m_cacheLocation = check.getAbsolutePath();
  227. else
  228. {
  229. check = new File(externalCard + "/.nomedia");
  230. if (check.exists())
  231. m_cacheLocation = check.getAbsolutePath();
  232. else
  233. {
  234. check = new File(externalCard + "/tmp");
  235. if (check.exists())
  236. m_cacheLocation = check.getAbsolutePath();
  237. else
  238. {
  239. check = new File(externalCard + "/.nomadreader");
  240. try
  241. {
  242. if (check.createNewFile())
  243. m_cacheLocation = check.getAbsolutePath();
  244. }
  245. catch(Exception ex)
  246. {
  247. Log.d("FileBrowser", "Exception creating cache path");
  248. }
  249. }
  250. }
  251. }
  252. }
  253. break;
  254. }
  255. }
  256.  
  257. private void showMenu()
  258. {
  259. //findViewById(R.id.root).setEnabled(false);
  260. //findViewById(R.id.root).setDrawingCacheEnabled(true);
  261. m_coverView.suspend();
  262. m_menuScreen.setBackgroundColor(0x40000000);
  263. m_menuDialog.setVisibility(View.VISIBLE);
  264. }
  265.  
  266. private void hideMenu()
  267. {
  268. m_menuDialog.setVisibility(View.GONE);
  269. //findViewById(R.id.root).setEnabled(true);
  270. //findViewById(R.id.root).setDrawingCacheEnabled(false);
  271. m_coverView.resume();
  272. m_menuScreen.setBackgroundColor(0);
  273. // findViewById(R.id.body).setVisibility(View.VISIBLE);
  274. }
  275.  
  276. @Override
  277. public boolean onCreateOptionsMenu(Menu menu)
  278. {
  279. menu.clear();
  280. MenuInflater inflater = getMenuInflater();
  281. inflater.inflate(R.menu.browser_menu, menu);
  282. return true;
  283. }
  284.  
  285. @Override
  286. public boolean onPrepareOptionsMenu(Menu menu)
  287. {
  288. android.view.MenuItem item = menu.findItem(R.id.main_continue);
  289. if (item != null)
  290. item.setEnabled(m_lastBook != null && m_lastBook.length() > 0 && new File(m_lastBook).exists());
  291.  
  292. return true;
  293. }
  294.  
  295. // implements OnClickListener, for back button
  296. public void onClick(View view)
  297. {
  298. switch (view.getId())
  299. {
  300. case R.id.touchscreen:
  301. if (m_menuScreen.getVisibility() == View.VISIBLE)
  302. hideMenu();
  303. break;
  304. case R.id.cover_close_button:
  305. goBack();
  306. break;
  307. case R.id.details_open:
  308. if (!m_bookLibrary.onSelect(m_fileInfoView.getCurrentInfo()))
  309. {
  310. //finish(); // close while reading
  311. }
  312. break;
  313. case R.id.backButton:
  314. if (m_menuDialog.getVisibility() == View.VISIBLE)
  315. {
  316. if (m_menuView.isRoot())
  317. hideMenu();
  318. else
  319. m_menuView.goBack();
  320. }
  321. break;
  322. case FileBrowserView.FILE_ITEM_ID:
  323. FileInfo info = (FileInfo)view.getTag();
  324. onCoverClick(info, info.isDirectory());
  325. break;
  326. }
  327. }
  328.  
  329. public void onCoverClick(FileInfo info, boolean noDetails)
  330. {
  331. if (info == null)
  332. {
  333. info = m_bookLibrary.getParentItem();
  334. }
  335.  
  336. boolean same = m_mode != MODE_LIST && m_fileInfoView.getCurrentInfo() == info;
  337.  
  338. boolean folder = false;
  339. if (noDetails || same)
  340. {
  341. if (m_bookLibrary.onSelect(info))
  342. {
  343. if (m_bookLibrary.isInLibrary() && info.getItemSize() == 0)
  344. m_bookLibrary.scan(true);
  345.  
  346. folder = true;
  347. m_fileInfoView.showInfo(info);
  348. } else
  349. {
  350. if (m_mode == MODE_COVERS)
  351. m_coverView.advanceVersion();
  352. }
  353.  
  354.  
  355. if (m_bookLibrary.isInRecent() || folder)
  356. refresh(false);
  357. //m_coverView.setCovers(m_bookLibrary.getItems(), !m_bookLibrary.isRoot() ? isNook || isEpad || isNookTouch || isEmulator || isLegacyAndroid ? View.VISIBLE : View.INVISIBLE : View.GONE, m_cacheLocation, m_bookLibrary.getReturnIndex());
  358. } else
  359. {
  360. m_fileInfoView.showInfo(info);
  361. if (m_mode == MODE_LIST)
  362. {
  363. if (!BaseActivity.isXLarge)
  364. {
  365. if (!BaseActivity.isNookTouch && BaseActivity.SDKVersion > 4)
  366. {
  367. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);
  368. m_infoContainer.startAnimation(animation);
  369. }
  370. m_infoContainer.setVisibility(View.VISIBLE);
  371.  
  372. if (!BaseActivity.isNookTouch && BaseActivity.SDKVersion > 4)
  373. {
  374. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_out_left);
  375. m_listContainer.startAnimation(animation);
  376. }
  377. m_listContainer.setVisibility(View.GONE);
  378. } else
  379. m_fileBrowserView.setSelected(info);
  380. }
  381. }
  382. }
  383.  
  384. @Override
  385. protected void onPause()
  386. {
  387. super.onPause();
  388. m_coverView.advanceVersion();
  389. MetaDataFactory.flushDB();
  390. m_bookLibrary.saveSettings();
  391. /*DBSettings settings = new DBSettings(this, true);
  392. settings.putInt("lastApplication", 0);
  393. settings.close();*/
  394.  
  395. //DirectDraw.cancelInvalidate();
  396. //finish(); // do not work in background mode at all
  397. }
  398.  
  399. public void refresh(boolean firstPage)
  400. {
  401. switch(m_mode)
  402. {
  403. case MODE_LIST:
  404. m_fileBrowserView.setInfo(m_bookLibrary.getCurrentInfo(), m_cacheLocation, firstPage ? 0 : m_bookLibrary.getReturnIndex());
  405. if (m_bookLibrary != null)
  406. m_fileInfoView.showInfo(m_bookLibrary.getCurrentInfo());
  407. break;
  408. case MODE_COVERS:
  409. default:
  410. m_coverView.setInfo(m_bookLibrary.getCurrentInfo(), !m_bookLibrary.isRoot() ? /*isNook || isEpad || isNookTouch || isEmulator || isLegacyAndroid ? */View.VISIBLE /*: View.INVISIBLE*/ : View.GONE, m_cacheLocation, firstPage ? 0 : m_bookLibrary.getReturnIndex());
  411. if (m_bookLibrary != null)
  412. m_fileInfoView.showInfo(m_bookLibrary.getCurrentInfo());
  413. break;
  414. }
  415. }
  416.  
  417. private void continueReading()
  418. {
  419. DBSettings settings = new DBSettings(this);
  420. String book = settings.getString("readingNow", "");
  421. settings.close();
  422.  
  423. if (book == null || book.length() == 0 || !(new File(book).exists()))
  424. {
  425. Toast.makeText(this, getResources().getString(R.string.no_book), Toast.LENGTH_LONG).show();
  426. } else
  427. {
  428. Intent intent = new Intent();
  429. intent.setClassName("net.textreaderfb2epub.textReader", "net.textreaderfb2epub.textReader.TextReader");
  430. intent.setData(Uri.parse("file://" + book));
  431. //startActivityForResult(intent, REQUEST_INFORM_CLOSE);
  432. startActivity(intent);
  433. terminate();
  434. //finish(); // close after opening reader
  435. }
  436. }
  437.  
  438. @Override
  439. protected void onResume()
  440. {
  441. if (m_bookLibrary.refresh())
  442. {
  443. m_fileBrowserView.post(new Runnable()
  444. {
  445. @Override
  446. public void run()
  447. {
  448. refresh(false);
  449. }
  450. });
  451. }
  452.  
  453. if (m_coverView != null && m_mode == MODE_COVERS)
  454. m_coverView.onResume();
  455.  
  456. try
  457. {
  458. DBSettings settings = new DBSettings(this, true);
  459. m_lastBook = settings.getString("readingNow", "");
  460. settings.putInt("lastApplication", 0);
  461. settings.close();
  462. }
  463. catch(Exception ex)
  464. {
  465. Log.d("FileBrowser", "Problem saving settings database: " + ex);
  466. }
  467.  
  468.  
  469. updateMenu();
  470.  
  471. super.onResume();
  472. }
  473.  
  474. @Override
  475. public boolean onMenu(MenuItem item)
  476. {
  477. int itemId = item.getId();
  478. boolean hide = false;
  479. boolean update = false;
  480.  
  481. switch (itemId)
  482. {
  483. // show filter
  484. case R.id.show_all:
  485. m_bookLibrary.setShowMode(Library.ALL_FILES);
  486. hide = true;
  487. update = true;
  488. break;
  489. case R.id.show_books:
  490. m_bookLibrary.setShowMode(Library.BOOKS);
  491. hide = true;
  492. update = true;
  493. break;
  494. case R.id.show_documents:
  495. m_bookLibrary.setShowMode(Library.DOCUMENTS);
  496. hide = true;
  497. update = true;
  498. break;
  499.  
  500. // sort
  501. case R.id.sort_author:
  502. m_bookLibrary.setSortMode(Library.SORT_AUTHOR);
  503. hide = true;
  504. update = true;
  505. break;
  506. case R.id.sort_most_recent:
  507. m_bookLibrary.setSortMode(Library.SORT_DATE);
  508. hide = true;
  509. update = true;
  510. break;
  511. case R.id.sort_title:
  512. m_bookLibrary.setSortMode(Library.SORT_NAME);
  513. hide = true;
  514. update = true;
  515. break;
  516. case R.id.sort_series:
  517. m_bookLibrary.setSortMode(Library.SORT_SERIES);
  518. hide = true;
  519. update = true;
  520. break;
  521.  
  522. // hidden files
  523. case R.id.hidden_hide:
  524. m_bookLibrary.setShowHidden(false);
  525. hide = true;
  526. update = true;
  527. break;
  528. case R.id.hidden_show:
  529. m_bookLibrary.setShowHidden(true);
  530. hide = true;
  531. update = true;
  532. break;
  533.  
  534. // empty folders
  535. case R.id.empty_hide:
  536. m_bookLibrary.setShowEmpty(false);
  537. hide = true;
  538. update = true;
  539. break;
  540. case R.id.empty_show:
  541. m_bookLibrary.setShowEmpty(true);
  542. hide = true;
  543. update = true;
  544. break;
  545.  
  546. // cache
  547. case R.id.thumbs_external:
  548. m_bookLibrary.setCacheMode(Library.CACHE_EXTERNAL);
  549. updateCacheLocation(false);
  550. hide = true;
  551. update = true;
  552. break;
  553. case R.id.thumbs_internal:
  554. m_bookLibrary.setCacheMode(Library.CACHE_INTERNAL);
  555. updateCacheLocation(false);
  556. hide = true;
  557. update = true;
  558. break;
  559. case R.id.thumbs_near:
  560. m_bookLibrary.setCacheMode(Library.CACHE_NEAR);
  561. updateCacheLocation(false);
  562. hide = true;
  563. update = true;
  564. break;
  565. }
  566.  
  567. if (update)
  568. {
  569. updateMenu();
  570. m_bookLibrary.saveSettings();
  571. refresh(true);
  572. }
  573.  
  574. return hide;
  575. }
  576.  
  577. @Override
  578. public boolean onOptionsItemSelected(android.view.MenuItem item)
  579. {
  580. switch(item.getItemId())
  581. {
  582. case R.id.main_refresh:
  583. refresh(true);
  584. break;
  585. case R.id.main_exit:
  586. terminate();
  587. break;
  588. case R.id.main_scan:
  589. m_bookLibrary.scan(true);
  590. break;
  591. case R.id.main_continue:
  592. continueReading();
  593. break;
  594. case R.id.main_settings:
  595. showMenu();
  596. break;
  597. }
  598. return true;
  599. }
  600.  
  601.  
  602. @Override
  603. public boolean onMenuBack(int menuId)
  604. {
  605. return true;
  606. }
  607.  
  608. @Override
  609. public boolean onKeyDown(int keyCode, KeyEvent event)
  610. {
  611. switch (keyCode)
  612. {
  613. case KeyEvent.KEYCODE_BACK:
  614. if (m_menuDialog.getVisibility() == View.VISIBLE)
  615. {
  616. if (m_menuView.isRoot())
  617. hideMenu();
  618. else
  619. m_menuView.goBack();
  620. return false;
  621. }
  622.  
  623. if (!BaseActivity.isXLarge && m_mode == MODE_LIST && m_listContainer.getVisibility() == View.GONE)
  624. {
  625. if (!BaseActivity.isNookTouch && BaseActivity.SDKVersion > 4)
  626. {
  627. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_out_right);
  628. m_infoContainer.startAnimation(animation);
  629. }
  630. m_infoContainer.setVisibility(View.GONE);
  631.  
  632. if (!BaseActivity.isNookTouch && BaseActivity.SDKVersion > 4)
  633. {
  634. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_in_left);
  635. m_listContainer.startAnimation(animation);
  636. }
  637.  
  638. m_listContainer.setVisibility(View.VISIBLE);
  639. return false;
  640. }
  641.  
  642. if (!m_bookLibrary.isRoot())
  643. {
  644. onCoverClick(null, true);
  645. return false;
  646. }
  647. break;
  648. case KeyEvent.KEYCODE_MENU:
  649. case KeyEvent.KEYCODE_SPACE:
  650. if (m_menuDialog.getVisibility() == View.VISIBLE)
  651. {
  652. hideMenu();
  653. return false;
  654. }
  655. return false;
  656. case KEYCODE_PAGE_TOPLEFT:
  657. case KEYCODE_PAGE_TOPRIGHT:
  658. case KeyEvent.KEYCODE_DPAD_LEFT:
  659. switch (m_mode)
  660. {
  661. case MODE_LIST:
  662. m_fileBrowserView.prevPage();
  663. break;
  664. case MODE_COVERS:
  665. m_coverView.prevPage();
  666. break;
  667. }
  668. break;
  669. case KEYCODE_PAGE_BOTTOMRIGHT:
  670. case KEYCODE_PAGE_BOTTOMLEFT:
  671. case KeyEvent.KEYCODE_DPAD_RIGHT:
  672. switch (m_mode)
  673. {
  674. case MODE_LIST:
  675. m_fileBrowserView.nextPage();
  676. break;
  677. case MODE_COVERS:
  678. m_coverView.nextPage();
  679. break;
  680. }
  681. break;
  682. }
  683. return super.onKeyDown(keyCode, event);
  684. }
  685.  
  686. private void updateMenu()
  687. {
  688. // empty
  689. boolean showEmpty = m_bookLibrary.getShowEmpty();
  690. m_menuView.setMenuChecked(R.id.empty_show, showEmpty);
  691. m_menuView.setMenuChecked(R.id.empty_hide, !showEmpty);
  692. m_menuView.setMenuValue(R.id.show_empty, showEmpty ? R.string.show : R.string.hide);
  693.  
  694. // hidden
  695. boolean showHidden = m_bookLibrary.getShowHidden();
  696. m_menuView.setMenuChecked(R.id.hidden_show, showHidden);
  697. m_menuView.setMenuChecked(R.id.hidden_hide, !showHidden);
  698. m_menuView.setMenuValue(R.id.show_hidden, showHidden ? R.string.show : R.string.hide);
  699.  
  700. // show mode
  701. int showMode = m_bookLibrary.getShowMode();
  702. m_menuView.setMenuChecked(R.id.show_all, showMode == Library.ALL_FILES);
  703. m_menuView.setMenuChecked(R.id.show_documents, showMode == Library.DOCUMENTS);
  704. m_menuView.setMenuChecked(R.id.show_books, showMode == Library.BOOKS);
  705.  
  706. switch (showMode)
  707. {
  708. case Library.ALL_FILES:
  709. m_menuView.setMenuValue(R.id.show_show, R.string.all_files);
  710. break;
  711. case Library.DOCUMENTS:
  712. m_menuView.setMenuValue(R.id.show_show, R.string.documents_only);
  713. break;
  714. case Library.BOOKS:
  715. m_menuView.setMenuValue(R.id.show_show, R.string.books_only);
  716. break;
  717. }
  718.  
  719.  
  720. // sort mode
  721. int sortMode = m_bookLibrary.getSortMode();
  722. m_menuView.setMenuChecked(R.id.sort_author, sortMode == Library.SORT_AUTHOR);
  723. m_menuView.setMenuChecked(R.id.sort_title, sortMode == Library.SORT_NAME);
  724. m_menuView.setMenuChecked(R.id.sort_most_recent, sortMode == Library.SORT_DATE);
  725. m_menuView.setMenuChecked(R.id.sort_series, sortMode == Library.SORT_SERIES);
  726.  
  727. switch (sortMode)
  728. {
  729. case Library.SORT_AUTHOR:
  730. m_menuView.setMenuValue(R.id.show_sort, R.string.author);
  731. break;
  732. case Library.SORT_NAME:
  733. m_menuView.setMenuValue(R.id.show_sort, R.string.title);
  734. break;
  735. case Library.SORT_DATE:
  736. m_menuView.setMenuValue(R.id.show_sort, R.string.most_recent);
  737. break;
  738. case Library.SORT_SERIES:
  739. m_menuView.setMenuValue(R.id.show_sort, R.string.series);
  740. break;
  741. }
  742.  
  743. // cache mode
  744. int cacheMode = m_bookLibrary.getCacheMode();
  745. m_menuView.setMenuChecked(R.id.thumbs_external, cacheMode == Library.CACHE_EXTERNAL);
  746. m_menuView.setMenuChecked(R.id.thumbs_internal, cacheMode == Library.CACHE_INTERNAL);
  747. m_menuView.setMenuChecked(R.id.thumbs_near, cacheMode == Library.CACHE_NEAR);
  748.  
  749. switch (cacheMode)
  750. {
  751. case Library.CACHE_EXTERNAL:
  752. m_menuView.setMenuValue(R.id.save_thumbs, R.string.thumbs_external);
  753. break;
  754. case Library.CACHE_INTERNAL:
  755. m_menuView.setMenuValue(R.id.save_thumbs, R.string.thumbs_internal);
  756. break;
  757. case Library.CACHE_NEAR:
  758. m_menuView.setMenuValue(R.id.save_thumbs, R.string.thumbs_near);
  759. break;
  760. }
  761.  
  762. //m_menuView.setMenuEnabled(R.id.main_continue, m_lastBook != null && m_lastBook.length() > 0 && new File(m_lastBook).exists());
  763. }
  764.  
  765. @Override
  766. protected void onDestroy()
  767. {
  768. super.onDestroy();
  769. MetaDataFactory.closeDB();
  770.  
  771. unbindDrawables(findViewById(R.id.root));
  772. System.gc();
  773. }
  774.  
  775. private void unbindDrawables(View view)
  776. {
  777. if (view == null)
  778. return;
  779.  
  780. if (view.getBackground() != null)
  781. view.getBackground().setCallback(null);
  782.  
  783. if (view instanceof ViewGroup)
  784. {
  785. ViewGroup group = (ViewGroup)view;
  786. for (int i = 0; i < group.getChildCount(); i++)
  787. unbindDrawables(group.getChildAt(i));
  788.  
  789. group.removeAllViews();
  790. }
  791. }
  792.  
  793. public void onChangeMode(int mode)
  794. {
  795. switch(mode)
  796. {
  797. case MODE_LIST:
  798. if (m_mode == MODE_COVERS && !BaseActivity.isNookTouch && BaseActivity.SDKVersion > 4)
  799. {
  800. if (BaseActivity.isXLarge)
  801. {
  802. } else
  803. {
  804. {
  805. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_out_right);
  806. m_infoContainer.startAnimation(animation);
  807. }
  808. {
  809. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_in_left);
  810. m_listContainer.startAnimation(animation);
  811. }
  812. {
  813. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_out_right);
  814. m_coversContainer.startAnimation(animation);
  815. }
  816. }
  817. }
  818.  
  819. m_coversContainer.setVisibility(View.GONE);
  820. m_listContainer.setVisibility(View.VISIBLE);
  821. m_fileBrowserView.setFocusable(true);
  822.  
  823. //m_fileBrowserView.setDrawingCacheEnabled(true);
  824. //m_infoContainer.setDrawingCacheEnabled(true);
  825. //m_coverView.setDrawingCacheEnabled(true);
  826.  
  827. m_coverView.setFocusable(false);
  828.  
  829. if (BaseActivity.isXLarge)
  830. {
  831. m_infoContainer.setVisibility(View.VISIBLE);
  832. m_fileBrowserView.setSelected(m_fileInfoView.getCurrentInfo());
  833. } else
  834. {
  835. m_infoContainer.setVisibility(View.GONE);
  836. }
  837.  
  838. break;
  839. case MODE_COVERS:
  840. default:
  841. if (m_mode == MODE_LIST && !BaseActivity.isNookTouch && !BaseActivity.isXLarge && BaseActivity.SDKVersion > 4)
  842. {
  843. if (BaseActivity.isXLarge)
  844. {
  845. } else
  846. {
  847. {
  848. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);
  849. m_infoContainer.startAnimation(animation);
  850. }
  851. {
  852. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_out_left);
  853. m_listContainer.startAnimation(animation);
  854. }
  855. {
  856. Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_in_right);
  857. m_coversContainer.startAnimation(animation);
  858. }
  859. }
  860. }
  861.  
  862. //m_fileBrowserView.setDrawingCacheEnabled(false);
  863. //m_infoContainer.setDrawingCacheEnabled(false);
  864. //m_coverView.setDrawingCacheEnabled(false);
  865.  
  866. m_coversContainer.setVisibility(View.VISIBLE);
  867. m_infoContainer.setVisibility(View.VISIBLE);
  868. m_listContainer.setVisibility(View.GONE);
  869. m_fileBrowserView.setFocusable(false);
  870. m_coverView.setFocusable(true);
  871. break;
  872. }
  873. if (m_mode == MODE_NONE)
  874. m_mode = mode;
  875. else
  876. {
  877. m_mode = mode;
  878. refresh(false);
  879. }
  880. }
  881. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement