From 1e5df45927f6dec55e99bb5a5bd4213aad636edb Mon Sep 17 00:00:00 2001 From: Abdul Wadood Date: Sat, 4 Aug 2018 21:22:16 +0530 Subject: [PATCH] Add new tab menu item --- .../kiwix/kiwixmobile/main/MainActivity.java | 152 ++++++++++-------- .../res/drawable/ic_round_add_white_36dp.xml | 29 ++++ app/src/main/res/layout/activity_main.xml | 7 + app/src/main/res/layout/tab_switcher.xml | 11 -- app/src/main/res/menu/menu_main.xml | 5 + 5 files changed, 129 insertions(+), 75 deletions(-) create mode 100644 app/src/main/res/drawable/ic_round_add_white_36dp.xml diff --git a/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java index d2e07ae4f..052ca2ed2 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/main/MainActivity.java @@ -35,7 +35,6 @@ import android.net.Uri; import android.os.Build; import android.os.Bundle; import android.os.CountDownTimer; -import android.os.Handler; import android.provider.Settings; import android.support.annotation.NonNull; import android.support.constraint.ConstraintLayout; @@ -48,6 +47,7 @@ import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout; +import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.widget.AppCompatButton; import android.support.v7.widget.CardView; @@ -191,7 +191,10 @@ public class MainActivity extends BaseActivity implements WebViewCallback, ImageView bottomToolbarArrowForward; @Inject MainContract.Presenter presenter; - private ImageView addTab; + @BindView(R.id.tab_switcher_recycler_view) + RecyclerView tabRecyclerView; + @BindView(R.id.activity_main_tab_switcher) + View tabSwitcherRoot; private CountDownTimer hideBackToTopTimer = new CountDownTimer(1200, 1200) { @Override public void onTick(long millisUntilFinished) { @@ -227,7 +230,7 @@ public class MainActivity extends BaseActivity implements WebViewCallback, private boolean isFirstRun; private BooksAdapter booksAdapter; private AppCompatButton downloadBookButton; - private View tabSwitcherRoot; + private ActionBar actionBar; private TextView tabSwitcherIcon; private ItemTouchHelper.Callback tabCallback = new ItemTouchHelper.Callback() { @Override @@ -316,6 +319,7 @@ public class MainActivity extends BaseActivity implements WebViewCallback, handleLocaleCheck(); setContentView(R.layout.activity_main); setSupportActionBar(toolbar); + actionBar = getSupportActionBar(); RecyclerView tableDrawerRight = tableDrawerRightContainer.getHeaderView(0).findViewById(R.id.right_drawer_list); checkForRateDialog(); @@ -326,6 +330,13 @@ public class MainActivity extends BaseActivity implements WebViewCallback, documentParserJs = fileReader.readFile("js/documentParser.js", this); documentSections = new ArrayList<>(); tabsAdapter = new TabsAdapter(this, webViewList); + tabsAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { + @Override + public void onChanged() { + updateTabSwitcherIcon(); + } + }); + tableDrawerRight.setLayoutManager(new LinearLayoutManager(this)); TableDrawerAdapter tableDrawerAdapter = new TableDrawerAdapter(); @@ -421,22 +432,33 @@ public class MainActivity extends BaseActivity implements WebViewCallback, booksAdapter = new BooksAdapter(books, this); searchFiles(); - - tabSwitcherRoot = getLayoutInflater().inflate(R.layout.tab_switcher, drawerLayout, false); - RecyclerView tabRecyclerView = tabSwitcherRoot.findViewById(R.id.tab_switcher_recycler_view); - addTab = tabSwitcherRoot.findViewById(R.id.tab_switcher_add_tab); - addTab.setOnClickListener(v -> { - hideTabSwitcher(); - newTab(HOME_URL); - }); tabRecyclerView.setAdapter(tabsAdapter); new ItemTouchHelper(tabCallback).attachToRecyclerView(tabRecyclerView); } + private void showTabSwitcher() { + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setHomeAsUpIndicator(ContextCompat.getDrawable(this, R.drawable.ic_round_add_white_36dp)); + actionBar.setDisplayShowTitleEnabled(false); + + drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED); + bottomToolbar.setVisibility(View.GONE); + contentFrame.setVisibility(View.GONE); + progressBar.setVisibility(View.GONE); + backToTopButton.hide(); + tabSwitcherRoot.setVisibility(View.VISIBLE); + supportInvalidateOptionsMenu(); + } + private void hideTabSwitcher() { - drawerLayout.removeAllViews(); - drawerLayout.addView(root); - drawerLayout.addView(tableDrawerRightContainer); + actionBar.setDisplayHomeAsUpEnabled(false); + actionBar.setDisplayShowTitleEnabled(true); + + drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED); + tabSwitcherRoot.setVisibility(View.GONE); + progressBar.setVisibility(View.VISIBLE); + contentFrame.setVisibility(View.VISIBLE); + supportInvalidateOptionsMenu(); } @OnClick(R.id.bottom_toolbar_arrow_back) @@ -466,11 +488,6 @@ public class MainActivity extends BaseActivity implements WebViewCallback, } } - private void showTabSwitcher() { - drawerLayout.removeAllViews(); - drawerLayout.addView(tabSwitcherRoot); - } - @OnClick(R.id.bottom_toolbar_toc) void openToc() { drawerLayout.openDrawer(GravityCompat.END); @@ -553,12 +570,10 @@ public class MainActivity extends BaseActivity implements WebViewCallback, if (zimFileTitle == null) { zimFileTitle = getString(R.string.app_name); } - if (getSupportActionBar() != null) { - if (zimFileTitle.trim().isEmpty() || HOME_URL.equals(getCurrentWebView().getUrl())) { - getSupportActionBar().setTitle(createMenuText(getString(R.string.app_name))); - } else { - getSupportActionBar().setTitle(createMenuText(zimFileTitle)); - } + if (zimFileTitle.trim().isEmpty() || HOME_URL.equals(getCurrentWebView().getUrl())) { + actionBar.setTitle(createMenuText(getString(R.string.app_name))); + } else { + actionBar.setTitle(createMenuText(zimFileTitle)); } } @@ -638,8 +653,6 @@ public class MainActivity extends BaseActivity implements WebViewCallback, super.onDestroy(); tabCallback = null; downloadBookButton = null; - addTab.setOnClickListener(null); - addTab = null; hideBackToTopTimer.cancel(); hideBackToTopTimer = null; fileSearch = null; @@ -699,8 +712,10 @@ public class MainActivity extends BaseActivity implements WebViewCallback, webViewList.add(index, tempForUndo); tabsAdapter.notifyItemInserted(index); setUpWebView(); + updateTabSwitcherIcon(); }) .show(); + updateTabSwitcherIcon(); } private void selectTab(int position) { @@ -715,13 +730,10 @@ public class MainActivity extends BaseActivity implements WebViewCallback, contentFrame.addView(webView); tabsAdapter.setSelected(currentWebViewIndex); updateBottomToolbarVisibility(); - - if (drawerLayout.isDrawerOpen(GravityCompat.START)) { - new Handler().postDelayed(() -> drawerLayout.closeDrawers(), 150); - } loadPrefs(); refreshBookmarkSymbol(); updateTableOfContents(); + updateTitle(); if (!isHideToolbar && webView instanceof ToolbarScrollingKiwixWebView) { ((ToolbarScrollingKiwixWebView) webView).ensureToolbarDisplayed(); @@ -742,9 +754,15 @@ public class MainActivity extends BaseActivity implements WebViewCallback, KiwixWebView webView = getCurrentWebView(); switch (item.getItemId()) { + case R.id.menu_new_tab: + case android.R.id.home: + if (tabSwitcherRoot.getVisibility() == View.VISIBLE) { + hideTabSwitcher(); + } + newTab(HOME_URL); + return true; case R.id.menu_home: - case android.R.id.home: openMainPage(); break; @@ -838,12 +856,7 @@ public class MainActivity extends BaseActivity implements WebViewCallback, @OnClick(R.id.activity_main_fullscreen_button) void closeFullScreen() { toolbarContainer.setVisibility(View.VISIBLE); - if (sharedPreferenceUtil.getPrefBottomToolbar()) { - bottomToolbar.setVisibility(View.VISIBLE); - if (getCurrentWebView() instanceof ToolbarStaticKiwixWebView) { - contentFrame.setPadding(0, 0, 0, (int) getResources().getDimension(R.dimen.bottom_toolbar_height)); - } - } + updateBottomToolbarVisibility(); exitFullscreenButton.setVisibility(View.GONE); int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN; @@ -862,9 +875,6 @@ public class MainActivity extends BaseActivity implements WebViewCallback, public void showHomePage() { getCurrentWebView().removeAllViews(); getCurrentWebView().loadUrl(HOME_URL); - if (getSupportActionBar() != null) { - getSupportActionBar().setTitle(createMenuText(getString(R.string.app_name))); - } } @Override @@ -1188,7 +1198,8 @@ public class MainActivity extends BaseActivity implements WebViewCallback, } private void updateBottomToolbarVisibility() { - if (sharedPreferenceUtil.getPrefBottomToolbar() && !HOME_URL.equals(getCurrentWebView().getUrl())) { + if (sharedPreferenceUtil.getPrefBottomToolbar() && !HOME_URL.equals(getCurrentWebView().getUrl()) + && tabSwitcherRoot.getVisibility() != View.VISIBLE) { bottomToolbar.setVisibility(View.VISIBLE); if (getCurrentWebView() instanceof ToolbarStaticKiwixWebView && sharedPreferenceUtil.getPrefBottomToolbar()) { contentFrame.setPadding(0, 0, 0, (int) getResources().getDimension(R.dimen.bottom_toolbar_height)); @@ -1315,7 +1326,7 @@ public class MainActivity extends BaseActivity implements WebViewCallback, @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { - + hideTabSwitcher(); Log.i(TAG_KIWIX, "Intent data: " + data); switch (requestCode) { @@ -1415,15 +1426,12 @@ public class MainActivity extends BaseActivity implements WebViewCallback, if (isFullscreenOpened) { openFullScreen(); } - return true; - } - @Override - public boolean onMenuOpened(int featureId, Menu menu) { - if (drawerLayout.isDrawerOpen(tableDrawerRightContainer)) { - drawerLayout.closeDrawer(tableDrawerRightContainer); - } - return super.onMenuOpened(featureId, menu); + View tabSwitcher = menu.findItem(R.id.menu_tab_switcher).getActionView(); + tabSwitcherIcon = tabSwitcher.findViewById(R.id.ic_tab_switcher_text); + updateTabSwitcherIcon(); + tabSwitcher.setOnClickListener(v -> showTabSwitcher()); + return true; } // This method refreshes the menu for the bookmark system. @@ -1440,24 +1448,40 @@ public class MainActivity extends BaseActivity implements WebViewCallback, } else { menu.findItem(R.id.menu_read_aloud).setVisible(true); } - View tabSwitcher = menu.findItem(R.id.menu_tab_switcher).getActionView(); - tabSwitcherIcon = tabSwitcher.findViewById(R.id.ic_tab_switcher_text); - updateTabSwitcherIcon(); - tabSwitcher.setOnClickListener(v -> showTabSwitcher()); - tabsAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() { - @Override - public void onChanged() { - updateTabSwitcherIcon(); + + if (tabSwitcherRoot.getVisibility() == View.VISIBLE) { + menu.findItem(R.id.menu_search).setVisible(false); + menu.findItem(R.id.menu_fullscreen).setVisible(false); + menu.findItem(R.id.menu_home).setVisible(false); + menu.findItem(R.id.menu_random_article).setVisible(false); + menu.findItem(R.id.menu_searchintext).setVisible(false); + menu.findItem(R.id.menu_read_aloud).setVisible(false); + } else { + menu.findItem(R.id.menu_search).setVisible(true); + menu.findItem(R.id.menu_fullscreen).setVisible(true); + if (getCurrentWebView().getUrl() == null || + getCurrentWebView().getUrl().equals(HOME_URL)) { + menu.findItem(R.id.menu_read_aloud).setVisible(false); + menu.findItem(R.id.menu_home).setVisible(false); + menu.findItem(R.id.menu_random_article).setVisible(false); + menu.findItem(R.id.menu_searchintext).setVisible(false); + } else { + menu.findItem(R.id.menu_read_aloud).setVisible(true); + menu.findItem(R.id.menu_home).setVisible(true); + menu.findItem(R.id.menu_random_article).setVisible(true); + menu.findItem(R.id.menu_searchintext).setVisible(true); } - }); + } return true; } private void updateTabSwitcherIcon() { - if (webViewList.size() < 100) { - tabSwitcherIcon.setText(String.valueOf(webViewList.size())); - } else { - tabSwitcherIcon.setText(getString(R.string.smiling_face)); + if (tabSwitcherIcon != null) { + if (webViewList.size() < 100) { + tabSwitcherIcon.setText(String.valueOf(webViewList.size())); + } else { + tabSwitcherIcon.setText(getString(R.string.smiling_face)); + } } } diff --git a/app/src/main/res/drawable/ic_round_add_white_36dp.xml b/app/src/main/res/drawable/ic_round_add_white_36dp.xml new file mode 100644 index 000000000..5b39e61a8 --- /dev/null +++ b/app/src/main/res/drawable/ic_round_add_white_36dp.xml @@ -0,0 +1,29 @@ + + + + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 2d9ce90a5..59068ff47 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -83,6 +83,7 @@ android:text="@string/tts_pause" android:textColor="@android:color/black" android:textStyle="bold" + android:visibility="gone" app:layout_constraintBottom_toTopOf="@id/bottom_toolbar" app:layout_constraintEnd_toStartOf="@id/activity_main_button_stop_tts" app:layout_constraintHorizontal_chainStyle="packed" @@ -97,6 +98,7 @@ android:text="@string/tts_stop" android:textColor="@android:color/black" android:textStyle="bold" + android:visibility="gone" app:layout_constraintBottom_toTopOf="@id/bottom_toolbar" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/activity_main_button_pause_tts" /> @@ -110,6 +112,11 @@ tools:visibility="visible" /> + + - - \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index 3e552badc..42b9d1764 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -14,6 +14,11 @@ app:actionLayout="@layout/ic_tab_switcher" app:showAsAction="always" /> + +