From e18834692c2f98dfa4f92e9e4dddbb4d299b3417 Mon Sep 17 00:00:00 2001 From: qinyin Date: Fri, 30 Jun 2017 17:26:53 +0200 Subject: [PATCH 1/6] =?UTF-8?q?=C3=AFnit=20prototype?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kiwixmobile/KiwixMobileActivity.java | 38 +++++++++++++++++++ .../org/kiwix/kiwixmobile/PageBottomTab.java | 37 ++++++++++++++++++ .../views/PageBottomTabLayout.java | 26 +++++++++++++ app/src/main/res/drawable/ic_find_in_page.xml | 12 ++++++ app/src/main/res/layout/main.xml | 12 ++++++ .../res/layout/page_bottom_tab_layout.xml | 16 ++++++++ 6 files changed, 141 insertions(+) create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/PageBottomTab.java create mode 100644 app/src/main/java/org/kiwix/kiwixmobile/views/PageBottomTabLayout.java create mode 100644 app/src/main/res/drawable/ic_find_in_page.xml create mode 100644 app/src/main/res/layout/page_bottom_tab_layout.xml diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java index e79611759..1c0cd820a 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -38,8 +38,10 @@ import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.preference.PreferenceManager; +import android.support.annotation.NonNull; import android.support.design.widget.CoordinatorLayout; import android.support.design.widget.Snackbar; +import android.support.design.widget.TabLayout; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v4.view.GravityCompat; @@ -263,6 +265,8 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback @BindView(R.id.action_forward) View tabForwardButtonContainer; + @BindView(R.id.page_bottom_tab_layout) TabLayout pageBottomTabLayout; + @Inject OkHttpClient okHttpClient; @@ -301,6 +305,38 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback } } + @NonNull + private final TabLayout.OnTabSelectedListener pageBottomTabListener + = new TabLayout.OnTabSelectedListener() { + @Override + public void onTabSelected(TabLayout.Tab tab) { + PageBottomTab.of(tab.getPosition()).select(pageActionTabsCallback); + } + + @Override + public void onTabUnselected(TabLayout.Tab tab) {} + + @Override + public void onTabReselected(TabLayout.Tab tab) { + onTabSelected(tab); + } + }; + + private PageBottomTab.Callback pageActionTabsCallback = new PageBottomTab.Callback() { + @Override + public void onBookmarksTabSelected() { + toggleBookmark(); + } + + @Override + public void onFindInPageTabSelected() { + compatCallback.setActive(); + compatCallback.setWebView(getCurrentWebView()); + startSupportActionMode(compatCallback); + compatCallback.showSoftInput(); + } + }; + @Override public void onCreate(Bundle savedInstanceState) { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); @@ -428,6 +464,8 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback startActivity(zimFile); } + pageBottomTabLayout.addOnTabSelectedListener(pageBottomTabListener); + wasHideToolbar = isHideToolbar; } diff --git a/app/src/main/java/org/kiwix/kiwixmobile/PageBottomTab.java b/app/src/main/java/org/kiwix/kiwixmobile/PageBottomTab.java new file mode 100644 index 000000000..dc2c57d6d --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/PageBottomTab.java @@ -0,0 +1,37 @@ +package org.kiwix.kiwixmobile; + +import android.support.annotation.NonNull; + +public enum PageBottomTab { + BOOKMARKS() { + @Override + public void select(@NonNull Callback cb) { + cb.onBookmarksTabSelected(); + } + }, + FIND_IN_PAGE() { + @Override + public void select(@NonNull Callback cb) { + cb.onFindInPageTabSelected(); + } + }; + + @NonNull + public static PageBottomTab of(int code) { + switch (code) { + case 0: + return BOOKMARKS; + case 1: + return FIND_IN_PAGE; + default: + throw new IllegalArgumentException("Tab position is: " + code); + } + } + + public abstract void select(@NonNull Callback cb); + + public interface Callback { + void onBookmarksTabSelected(); + void onFindInPageTabSelected(); + } +} diff --git a/app/src/main/java/org/kiwix/kiwixmobile/views/PageBottomTabLayout.java b/app/src/main/java/org/kiwix/kiwixmobile/views/PageBottomTabLayout.java new file mode 100644 index 000000000..d2aff2938 --- /dev/null +++ b/app/src/main/java/org/kiwix/kiwixmobile/views/PageBottomTabLayout.java @@ -0,0 +1,26 @@ +package org.kiwix.kiwixmobile.views; + +import android.content.Context; +import android.support.design.widget.TabLayout; +import android.util.AttributeSet; + +import org.kiwix.kiwixmobile.R; + +import butterknife.ButterKnife; + +public class PageBottomTabLayout extends TabLayout { + + public PageBottomTabLayout(Context context) { + this(context, null); + } + + public PageBottomTabLayout(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public PageBottomTabLayout(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + inflate(getContext(), R.layout.page_bottom_tab_layout, this); + ButterKnife.bind(this); + } +} diff --git a/app/src/main/res/drawable/ic_find_in_page.xml b/app/src/main/res/drawable/ic_find_in_page.xml new file mode 100644 index 000000000..75154c5e4 --- /dev/null +++ b/app/src/main/res/drawable/ic_find_in_page.xml @@ -0,0 +1,12 @@ + + + diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index 3782a9a36..b62565e93 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -1,5 +1,6 @@ + diff --git a/app/src/main/res/layout/page_bottom_tab_layout.xml b/app/src/main/res/layout/page_bottom_tab_layout.xml new file mode 100644 index 000000000..2bdda7744 --- /dev/null +++ b/app/src/main/res/layout/page_bottom_tab_layout.xml @@ -0,0 +1,16 @@ + + + + + + \ No newline at end of file From f05256acf00360a6dca95430c2facf8c91a2003c Mon Sep 17 00:00:00 2001 From: qinyin Date: Fri, 30 Jun 2017 23:19:20 +0200 Subject: [PATCH 2/6] Move Home, RandomArticle and Fullscreen to bottom Tab --- .../kiwixmobile/KiwixMobileActivity.java | 63 +++++------------- .../org/kiwix/kiwixmobile/PageBottomTab.java | 27 ++++++-- app/src/main/res/drawable-hdpi/fullscreen.png | Bin 0 -> 3238 bytes app/src/main/res/drawable-mdpi/fullscreen.png | Bin 0 -> 1714 bytes .../main/res/drawable-xhdpi/fullscreen.png | Bin 0 -> 3777 bytes .../main/res/drawable-xxhdpi/fullscreen.png | Bin 0 -> 7348 bytes .../main/res/drawable-xxxhdpi/fullscreen.png | Bin 0 -> 8847 bytes app/src/main/res/drawable/fullscreen.png | Bin 0 -> 8847 bytes .../res/layout/page_bottom_tab_layout.xml | 17 ++++- app/src/main/res/menu/menu_main.xml | 26 -------- 10 files changed, 53 insertions(+), 80 deletions(-) create mode 100755 app/src/main/res/drawable-hdpi/fullscreen.png create mode 100755 app/src/main/res/drawable-mdpi/fullscreen.png create mode 100755 app/src/main/res/drawable-xhdpi/fullscreen.png create mode 100755 app/src/main/res/drawable-xxhdpi/fullscreen.png create mode 100755 app/src/main/res/drawable-xxxhdpi/fullscreen.png create mode 100755 app/src/main/res/drawable/fullscreen.png diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 1c0cd820a..5c5d0556f 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -324,8 +324,8 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback private PageBottomTab.Callback pageActionTabsCallback = new PageBottomTab.Callback() { @Override - public void onBookmarksTabSelected() { - toggleBookmark(); + public void onHomeTabSelected() { + openMainPage(); } @Override @@ -335,6 +335,20 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback startSupportActionMode(compatCallback); compatCallback.showSoftInput(); } + + @Override + public void onFullscreenTabSelected() { + if (isFullscreenOpened) { + closeFullScreen(); + } else { + openFullScreen(); + } + } + + @Override + public void onRandomArticleTabSelected() { + openRandomArticle(); + } }; @Override @@ -773,18 +787,6 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback KiwixWebView webView = getCurrentWebView(); switch (item.getItemId()) { - case R.id.menu_home: - case android.R.id.home: - openMainPage(); - break; - - case R.id.menu_searchintext: - compatCallback.setActive(); - compatCallback.setWebView(webView); - startSupportActionMode(compatCallback); - compatCallback.showSoftInput(); - break; - case R.id.menu_bookmarks: toggleBookmark(); break; @@ -793,10 +795,6 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback goToBookmarks(); break; - case R.id.menu_randomarticle: - openRandomArticle(); - break; - case R.id.menu_help: showHelpPage(); break; @@ -822,14 +820,6 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback readAloud(); break; - case R.id.menu_fullscreen: - if (isFullscreenOpened) { - closeFullScreen(); - } else { - openFullScreen(); - } - break; - default: break; } @@ -1014,10 +1004,6 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback private void initAllMenuItems() { try { menu.findItem(R.id.menu_bookmarks).setVisible(true); - menu.findItem(R.id.menu_fullscreen).setVisible(true); - menu.findItem(R.id.menu_home).setVisible(true); - menu.findItem(R.id.menu_randomarticle).setVisible(true); - menu.findItem(R.id.menu_searchintext).setVisible(true); MenuItem searchItem = menu.findItem(R.id.menu_search); searchItem.setVisible(true); @@ -1334,22 +1320,6 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - toggleActionItemsConfig(); - } - - void toggleActionItemsConfig() { - if (menu != null) { - MenuItem random = menu.findItem(R.id.menu_randomarticle); - MenuItem home = menu.findItem(R.id.menu_home); - MenuItem openFile = menu.findItem(R.id.menu_openfile); - if (getResources().getConfiguration().orientation == ORIENTATION_LANDSCAPE) { - random.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - home.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); - } else { - random.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); - home.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); - } - } } public void searchForTitle(String title) { @@ -1466,7 +1436,6 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); - toggleActionItemsConfig(); refreshBookmarkSymbol(menu); refreshNavigationButtons(); diff --git a/app/src/main/java/org/kiwix/kiwixmobile/PageBottomTab.java b/app/src/main/java/org/kiwix/kiwixmobile/PageBottomTab.java index dc2c57d6d..23dca3ab4 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/PageBottomTab.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/PageBottomTab.java @@ -3,10 +3,10 @@ package org.kiwix.kiwixmobile; import android.support.annotation.NonNull; public enum PageBottomTab { - BOOKMARKS() { + HOME() { @Override public void select(@NonNull Callback cb) { - cb.onBookmarksTabSelected(); + cb.onHomeTabSelected(); } }, FIND_IN_PAGE() { @@ -14,15 +14,32 @@ public enum PageBottomTab { public void select(@NonNull Callback cb) { cb.onFindInPageTabSelected(); } + }, + FULL_SCREEN() { + @Override + public void select(@NonNull Callback cb) { + cb.onFullscreenTabSelected(); + } + }, + RANDOM_ARTICLE() { + @Override + public void select(@NonNull Callback cb) { + cb.onRandomArticleTabSelected(); + } }; + @NonNull public static PageBottomTab of(int code) { switch (code) { case 0: - return BOOKMARKS; + return HOME; case 1: return FIND_IN_PAGE; + case 2: + return FULL_SCREEN; + case 3: + return RANDOM_ARTICLE; default: throw new IllegalArgumentException("Tab position is: " + code); } @@ -31,7 +48,9 @@ public enum PageBottomTab { public abstract void select(@NonNull Callback cb); public interface Callback { - void onBookmarksTabSelected(); + void onHomeTabSelected(); void onFindInPageTabSelected(); + void onFullscreenTabSelected(); + void onRandomArticleTabSelected(); } } diff --git a/app/src/main/res/drawable-hdpi/fullscreen.png b/app/src/main/res/drawable-hdpi/fullscreen.png new file mode 100755 index 0000000000000000000000000000000000000000..5f660591dc53276b966fd04aef59d95c055861b2 GIT binary patch literal 3238 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 YKexK0iC~ z+~4neZ`hq3dCt-ELRr z<>fssbWb1<7$OK_kiR}!1SAfJ<3L76hCzt&iHV8xJ9g}-JA3x*3_>U@WDi0JQ>j$h zr%#{m%FoY#O2{6k(|I^EGqV*T6ymOrMnF0_IeB>H%9Txt43CeG57*SxY`=Ex+HVLU zCeeD{@5GulYZPX)`IJJTC{MI^YHF%2H#ZlY8c0MSWpZ-zP$B{VUZ>N&cH_p4F@%si z5r7!Klk3;7SC~wuuM&}n5O^0MD;MI``_)$MjSQ51Dl#KVn+4Rbo3Z>OiH ze+G|x$q0l(AtaGVxb}fW3q?^!k|2S(T&~?DNq))&ALT5RR0PJx#x7mHeEGayuW!I{ zoa-eZVW21q00>Q?tP?Pg$J0a*#3wxP;hvtJ;~O__e4?2U;>bBv|8;OH*em& zV=|fEtgfzZmPjP?NO-;8_X&bHD1rod-awM%0X}%M+1#en=}xR&yY`{}{{9nec3Kbt zUaExryTWWX?^3B$yLlv#$K&~cB*_m2kiZy*X_d?6A93$vC=?1?ES95Mtrp(Gp9mo- zH^qu3z%a~{n>KBF{rdImP^8#ApNbI5Hk-|jDwV2{B@qsX(fIhdQKeG7Xt&$F@iJ3E zL4lm6>2DPZ#S0krUmyXz)oMMaR;$|(LQv8FiP#_u3kwwk0|O@sf;gX>n=7ae;3ku4 zv%z5aWps4(k0?cImIO`Hdnzj{8vw-U=;#mS<>d`tuXlo9XrhowK?ps1<;s=g8#Zis z4#?YVwl9=Qbi@`i_pk2xHU-zzFApr%Z7JkLK?h7f`j2=?bCi)7kqAn^!6 z5K@L={t^M61t%v6B8y=dcw2wR0Ux(kCPM%WgIB=Dys(O>&UnP5^Eyls`FMc1+1c66!C;U!8jYJdBw}jVk&%)1 zl9CeW*JE|CEMD2gix&@+l$10j(%1lAuh;iTrP8XInVBOwIXPfo++d4C!tHXoc9JC7 z&X<8Uo9#=bQpvW&iLQ|pT5+1DTPiCn-{Q+tcG}U|*-5hCfw^c!#+}Uh{eG+4?KWj* zX2Jww?%IKpqG|ebjYb1XDqcU&zq+$}qQAetv8t+S7oUW~;b^8PN(Y{2Hzq|O+GFHt zSgs5dn%HKQU0+{cqgt(=lc%vZFDijxFc=;f7=Y=)u^2K?6p7y6-Uf|E^A2xhGtb7N z60le-N7QO{vfx>O5Q!CieSJH%TJ4^D5&@UX_0zt6`<`!aZwD!u^v7T@JlxvadWNE? zihDu;4vCUt7es`cD&rYg)GNdulq`vkjt;WEzWxk1+uXAVum=SK0gKgY-K^DWMg7SE z;J0ntX2fw^BP4WUB7k>yck44UGPJ>9aNaoju090A!URG1{C4uIPPRvrOQ=xju66za4NmUSyu!i~s-t07*qo IM6N<$g0YV;KL7v# literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/fullscreen.png b/app/src/main/res/drawable-xhdpi/fullscreen.png new file mode 100755 index 0000000000000000000000000000000000000000..9449166b7807eb2948b593dfdd775d787ac5efa7 GIT binary patch literal 3777 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/fullscreen.png b/app/src/main/res/drawable-xxhdpi/fullscreen.png new file mode 100755 index 0000000000000000000000000000000000000000..ca746a0ddf4d81612f5d505cf5e92e049107d23a GIT binary patch literal 7348 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 + android:contentDescription="@string/menu_home" + android:icon="@drawable/action_home" /> + + + + \ 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 d5704000f..f92311992 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -20,38 +20,12 @@ android:title="@string/menu_bookmarks_list" app:showAsAction="never"/> - - - - - - - - Date: Fri, 30 Jun 2017 23:40:44 +0200 Subject: [PATCH 3/6] BottomTab stay at the bottom with soft keyboard. --- app/src/main/AndroidManifest.xml | 3 ++- app/src/main/res/layout/main.xml | 26 +++++++++++++------------- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e0953f257..5087ff7e6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,8 @@ + android:label="@string/app_name" + android:windowSoftInputMode="adjustPan"> diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index b62565e93..516f6f26d 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -100,22 +100,22 @@ - - + + @@ -149,4 +149,4 @@ - \ No newline at end of file + From 9d8a8dc404c9dfaed1d74ed1e0abad7aba418314 Mon Sep 17 00:00:00 2001 From: mhutti1 Date: Wed, 9 Aug 2017 15:21:00 -0400 Subject: [PATCH 4/6] Bottom bar scrolls out of view when in scroll mode --- .../main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java | 2 +- .../kiwixmobile/views/web/ToolbarScrollingKiwixWebView.java | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 5c5d0556f..b4fd07582 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -668,7 +668,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback AttributeSet attrs = StyleUtils.getAttributes(this, R.xml.webview); KiwixWebView webView; if (isHideToolbar) { - webView = new ToolbarScrollingKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer, attrs); + webView = new ToolbarScrollingKiwixWebView(KiwixMobileActivity.this, this, toolbarContainer, pageBottomTabLayout , attrs); ((ToolbarScrollingKiwixWebView) webView).setOnToolbarVisibilityChangeListener( new ToolbarScrollingKiwixWebView.OnToolbarVisibilityChangeListener() { @Override diff --git a/app/src/main/java/org/kiwix/kiwixmobile/views/web/ToolbarScrollingKiwixWebView.java b/app/src/main/java/org/kiwix/kiwixmobile/views/web/ToolbarScrollingKiwixWebView.java index ef8e97b11..e4b427006 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/views/web/ToolbarScrollingKiwixWebView.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/views/web/ToolbarScrollingKiwixWebView.java @@ -33,12 +33,14 @@ public class ToolbarScrollingKiwixWebView extends KiwixWebView { private final int statusBarHeight = DimenUtils.getTranslucentStatusBarHeight(getContext()); private final int toolbarHeight = DimenUtils.getToolbarHeight(getContext()); private View toolbarView; + private View bottombarView; private OnToolbarVisibilityChangeListener listener; private float startY; - public ToolbarScrollingKiwixWebView(Context context, WebViewCallback callback, View toolbarView, AttributeSet attrs) { + public ToolbarScrollingKiwixWebView(Context context, WebViewCallback callback, View toolbarView, View bottombarView, AttributeSet attrs) { super(context, callback, attrs); this.toolbarView = toolbarView; + this.bottombarView = bottombarView; } protected boolean moveToolbar(int scrollDelta) { @@ -53,6 +55,7 @@ public class ToolbarScrollingKiwixWebView extends KiwixWebView { } toolbarView.setTranslationY(newTranslation + statusBarHeight); + bottombarView.setTranslationY(newTranslation * -1 * (bottombarView.getHeight() / (float) (statusBarHeight + toolbarHeight))); this.setTranslationY(newTranslation + toolbarHeight + statusBarHeight); if (listener != null && newTranslation != originalTranslation) { if (newTranslation == -toolbarHeight -statusBarHeight) { From 709aa86d16ed0bb814c2dc65aac83589af5d437c Mon Sep 17 00:00:00 2001 From: mhutti1 Date: Wed, 9 Aug 2017 19:24:18 -0400 Subject: [PATCH 5/6] Hide bottombar in fullscreen --- .../main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java index b4fd07582..8a6cce7a0 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -837,6 +837,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback private void openFullScreen() { toolbarContainer.setVisibility(View.GONE); + pageBottomTabLayout.setVisibility(View.GONE); exitFullscreenButton.setVisibility(View.VISIBLE); int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN; int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN; @@ -857,6 +858,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback private void closeFullScreen() { toolbarContainer.setVisibility(View.VISIBLE); + pageBottomTabLayout.setVisibility(View.VISIBLE); exitFullscreenButton.setVisibility(View.INVISIBLE); int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN; int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN; From de7445f75c06241d76da37fa483fa990d8720bb6 Mon Sep 17 00:00:00 2001 From: mhutti1 Date: Thu, 10 Aug 2017 09:57:39 -0400 Subject: [PATCH 6/6] Add bottombar to settings menu --- .../kiwixmobile/KiwixMobileActivity.java | 10 ++++++++- .../settings/KiwixSettingsActivity.java | 2 ++ app/src/main/res/layout/main.xml | 21 ++++++++++--------- app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/xml/preferences.xml | 7 +++++++ 5 files changed, 31 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java index 8a6cce7a0..40935184c 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/KiwixMobileActivity.java @@ -858,7 +858,9 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback private void closeFullScreen() { toolbarContainer.setVisibility(View.VISIBLE); - pageBottomTabLayout.setVisibility(View.VISIBLE); + if (settings.getBoolean(KiwixSettingsActivity.PREF_BOTTOM_TOOLBAR, false)) { + pageBottomTabLayout.setVisibility(View.VISIBLE); + } exitFullscreenButton.setVisibility(View.INVISIBLE); int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN; int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN; @@ -1156,6 +1158,12 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback } } + if (settings.getBoolean(KiwixSettingsActivity.PREF_BOTTOM_TOOLBAR, false)) { + pageBottomTabLayout.setVisibility(View.VISIBLE); + } else { + pageBottomTabLayout.setVisibility(View.GONE); + } + Intent intent = getIntent(); if (intent.getAction() != null) { diff --git a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java index 6ac140b07..e5dc33e8b 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java +++ b/app/src/main/java/org/kiwix/kiwixmobile/settings/KiwixSettingsActivity.java @@ -83,6 +83,8 @@ public class KiwixSettingsActivity extends AppCompatActivity { public static final String PREF_WIFI_ONLY = "pref_wifi_only"; + public static final String PREF_BOTTOM_TOOLBAR = "pref_bottomtoolbar"; + public static String zimFile; public static boolean allHistoryCleared = false; diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml index 516f6f26d..62451fd5c 100644 --- a/app/src/main/res/layout/main.xml +++ b/app/src/main/res/layout/main.xml @@ -105,16 +105,17 @@ + android:id="@+id/page_bottom_tab_layout" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true" + android:layout_centerHorizontal="true" + android:layout_gravity="bottom" + android:background="@color/grey" + android:visibility="gone" + app:tabGravity="fill" + app:tabIndicatorColor="@color/grey" + app:tabSelectedTextColor="@color/grey"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f061d2b65..64f7287c1 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -173,4 +173,6 @@ min s left + Enable bottom toolbar + Display a toolbar with quick actions at the bottom of the screen diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 7f07a911c..c81bd0bfb 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -21,6 +21,13 @@ android:summary="@string/pref_hidetoolbar_summary" android:title="@string/pref_hidetoolbar"/> + + +