Move bookmark icon to bottom bar when visible

Resolves #337.
This commit is contained in:
Albert221 2018-01-13 00:34:20 +01:00 committed by Isaac Hutt
parent 915bafc549
commit 8ca00227fd
4 changed files with 102 additions and 9 deletions

View File

@ -58,6 +58,7 @@ import android.util.AttributeSet;
import android.util.Log;
import android.view.ActionMode;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@ -203,6 +204,8 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
public Menu menu;
private MenuItem menuBookmarks;
private ArrayList<String> bookmarks;
private List<KiwixWebView> mWebViews = new ArrayList<>();
@ -354,6 +357,16 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
public void onRandomArticleTabSelected() {
openRandomArticle();
}
@Override
public void onBookmarkTabSelected() {
toggleBookmark();
}
@Override
public void onBookmarkTabLongClicked() {
goToBookmarks();
}
};
@Override
@ -485,6 +498,24 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
pageBottomTabLayout.addOnTabSelectedListener(pageBottomTabListener);
View bookmarkTabView = LayoutInflater.from(KiwixMobileActivity.this)
.inflate(R.layout.bookmark_tab, null);
bookmarkTabView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
PageBottomTab.of(4).select(pageActionTabsCallback);
}
});
bookmarkTabView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
PageBottomTab.of(4).longClick(pageActionTabsCallback);
return true;
}
});
pageBottomTabLayout.getTabAt(4).setCustomView(bookmarkTabView);
wasHideToolbar = isHideToolbar;
if (nightMode) {
@ -882,9 +913,9 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
}
private void openFullScreen() {
toolbarContainer.setVisibility(View.GONE);
pageBottomTabLayout.setVisibility(View.GONE);
menuBookmarks.setVisible(true);
exitFullscreenButton.setVisibility(View.VISIBLE);
int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN;
@ -907,8 +938,10 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
toolbarContainer.setVisibility(View.VISIBLE);
if (settings.getBoolean(KiwixSettingsActivity.PREF_BOTTOM_TOOLBAR, false)) {
pageBottomTabLayout.setVisibility(View.VISIBLE);
menuBookmarks.setVisible(false);
}
exitFullscreenButton.setVisibility(View.INVISIBLE);
int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN;
getWindow().clearFlags(fullScreenFlag);
@ -1139,14 +1172,13 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
new Handler().post(new Runnable() {
@Override
public void run() {
ActionMenuItemView m = (ActionMenuItemView) findViewById(R.id.menu_bookmarks);
if (m == null) {
return;
ActionMenuItemView m = findViewById(R.id.menu_bookmarks);
if (m != null) {
findViewById(R.id.menu_bookmarks).setOnLongClickListener(view -> {
goToBookmarks();
return false;
});
}
findViewById(R.id.menu_bookmarks).setOnLongClickListener(view -> {
goToBookmarks();
return false;
});
}
});
@ -1257,8 +1289,14 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
if (settings.getBoolean(KiwixSettingsActivity.PREF_BOTTOM_TOOLBAR, false)) {
pageBottomTabLayout.setVisibility(View.VISIBLE);
if (menuBookmarks != null) {
menuBookmarks.setVisible(false);
}
} else {
pageBottomTabLayout.setVisibility(View.GONE);
if (menuBookmarks != null) {
menuBookmarks.setVisible(true);
}
}
Log.d(TAG_KIWIX, "action" + getIntent().getAction());
@ -1551,6 +1589,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
this.menu = menu;
this.menuBookmarks = menu.findItem(R.id.menu_bookmarks);
StyleMenuButtons(menu);
if (BuildConfig.IS_CUSTOM_APP) {
menu.findItem(R.id.menu_help).setVisible(false);
@ -1562,6 +1601,13 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
if (isFullscreenOpened) {
openFullScreen();
}
if (PreferenceManager
.getDefaultSharedPreferences(getApplicationContext())
.getBoolean(KiwixSettingsActivity.PREF_BOTTOM_TOOLBAR, false)) {
menu.findItem(R.id.menu_bookmarks).setVisible(false);
}
return true;
}
@ -1600,19 +1646,28 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
bookmarksDao = new BookmarksDao(KiwixDatabase.getInstance(this));
bookmarks = bookmarksDao.getBookmarks(ZimContentProvider.getId(), ZimContentProvider.getName());
}
TabLayout.Tab bookmarkTab = pageBottomTabLayout.getTabAt(4);
if (menu.findItem(R.id.menu_bookmarks) != null &&
getCurrentWebView().getUrl() != null &&
ZimContentProvider.getId() != null &&
!getCurrentWebView().getUrl().equals("file:///android_asset/help.html")) {
int icon = bookmarks.contains(getCurrentWebView().getUrl()) ? R.drawable.action_bookmark_active : R.drawable.action_bookmark;
menu.findItem(R.id.menu_bookmarks)
.setEnabled(true)
.setIcon(bookmarks.contains(getCurrentWebView().getUrl()) ? R.drawable.action_bookmark_active : R.drawable.action_bookmark)
.setIcon(icon)
.getIcon().setAlpha(255);
bookmarkTab.getCustomView().findViewById(R.id.bookmark_tab_icon).setBackgroundResource(icon);
} else {
menu.findItem(R.id.menu_bookmarks)
.setEnabled(false)
.setIcon(R.drawable.action_bookmark)
.getIcon().setAlpha(130);
bookmarkTab.getCustomView().findViewById(R.id.bookmark_tab_icon).setBackgroundResource(R.drawable.action_bookmark);
}
}

View File

@ -26,6 +26,18 @@ public enum PageBottomTab {
public void select(@NonNull Callback cb) {
cb.onRandomArticleTabSelected();
}
},
BOOKMARK() {
@Override
public void select(@NonNull Callback cb) {
cb.onBookmarkTabSelected();
}
@Override
public void longClick(@NonNull Callback cb) {
cb.onBookmarkTabLongClicked();
}
};
@ -40,6 +52,8 @@ public enum PageBottomTab {
return FULL_SCREEN;
case 3:
return RANDOM_ARTICLE;
case 4:
return BOOKMARK;
default:
throw new IllegalArgumentException("Tab position is: " + code);
}
@ -47,10 +61,16 @@ public enum PageBottomTab {
public abstract void select(@NonNull Callback cb);
public void longClick(@NonNull Callback cb) {
// Override me
}
public interface Callback {
void onHomeTabSelected();
void onFindInPageTabSelected();
void onFullscreenTabSelected();
void onRandomArticleTabSelected();
void onBookmarkTabSelected();
void onBookmarkTabLongClicked();
}
}

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/bookmark_tab_icon"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_centerInParent="true"
android:background="@drawable/action_bookmark"
android:contentDescription="@string/menu_bookmarks" />
</RelativeLayout>

View File

@ -24,4 +24,10 @@
android:layout_height="wrap_content"
android:contentDescription="@string/menu_randomarticle"
android:icon="@drawable/action_randomarticle" />
<android.support.design.widget.TabItem
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/menu_bookmarks"
android:icon="@drawable/action_bookmark_active" />
</merge>