mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-08-04 03:06:41 -04:00
parent
915bafc549
commit
8ca00227fd
@ -58,6 +58,7 @@ import android.util.AttributeSet;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.ActionMode;
|
import android.view.ActionMode;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuInflater;
|
import android.view.MenuInflater;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
@ -203,6 +204,8 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
|
|||||||
|
|
||||||
public Menu menu;
|
public Menu menu;
|
||||||
|
|
||||||
|
private MenuItem menuBookmarks;
|
||||||
|
|
||||||
private ArrayList<String> bookmarks;
|
private ArrayList<String> bookmarks;
|
||||||
|
|
||||||
private List<KiwixWebView> mWebViews = new ArrayList<>();
|
private List<KiwixWebView> mWebViews = new ArrayList<>();
|
||||||
@ -354,6 +357,16 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
|
|||||||
public void onRandomArticleTabSelected() {
|
public void onRandomArticleTabSelected() {
|
||||||
openRandomArticle();
|
openRandomArticle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBookmarkTabSelected() {
|
||||||
|
toggleBookmark();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBookmarkTabLongClicked() {
|
||||||
|
goToBookmarks();
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -485,6 +498,24 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
|
|||||||
|
|
||||||
pageBottomTabLayout.addOnTabSelectedListener(pageBottomTabListener);
|
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;
|
wasHideToolbar = isHideToolbar;
|
||||||
|
|
||||||
if (nightMode) {
|
if (nightMode) {
|
||||||
@ -882,9 +913,9 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void openFullScreen() {
|
private void openFullScreen() {
|
||||||
|
|
||||||
toolbarContainer.setVisibility(View.GONE);
|
toolbarContainer.setVisibility(View.GONE);
|
||||||
pageBottomTabLayout.setVisibility(View.GONE);
|
pageBottomTabLayout.setVisibility(View.GONE);
|
||||||
|
menuBookmarks.setVisible(true);
|
||||||
exitFullscreenButton.setVisibility(View.VISIBLE);
|
exitFullscreenButton.setVisibility(View.VISIBLE);
|
||||||
int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
||||||
int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN;
|
int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN;
|
||||||
@ -907,8 +938,10 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
|
|||||||
toolbarContainer.setVisibility(View.VISIBLE);
|
toolbarContainer.setVisibility(View.VISIBLE);
|
||||||
if (settings.getBoolean(KiwixSettingsActivity.PREF_BOTTOM_TOOLBAR, false)) {
|
if (settings.getBoolean(KiwixSettingsActivity.PREF_BOTTOM_TOOLBAR, false)) {
|
||||||
pageBottomTabLayout.setVisibility(View.VISIBLE);
|
pageBottomTabLayout.setVisibility(View.VISIBLE);
|
||||||
|
menuBookmarks.setVisible(false);
|
||||||
}
|
}
|
||||||
exitFullscreenButton.setVisibility(View.INVISIBLE);
|
exitFullscreenButton.setVisibility(View.INVISIBLE);
|
||||||
|
|
||||||
int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
int fullScreenFlag = WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
||||||
int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN;
|
int classicScreenFlag = WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN;
|
||||||
getWindow().clearFlags(fullScreenFlag);
|
getWindow().clearFlags(fullScreenFlag);
|
||||||
@ -1139,14 +1172,13 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
|
|||||||
new Handler().post(new Runnable() {
|
new Handler().post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
ActionMenuItemView m = (ActionMenuItemView) findViewById(R.id.menu_bookmarks);
|
ActionMenuItemView m = findViewById(R.id.menu_bookmarks);
|
||||||
if (m == null) {
|
if (m != null) {
|
||||||
return;
|
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)) {
|
if (settings.getBoolean(KiwixSettingsActivity.PREF_BOTTOM_TOOLBAR, false)) {
|
||||||
pageBottomTabLayout.setVisibility(View.VISIBLE);
|
pageBottomTabLayout.setVisibility(View.VISIBLE);
|
||||||
|
if (menuBookmarks != null) {
|
||||||
|
menuBookmarks.setVisible(false);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
pageBottomTabLayout.setVisibility(View.GONE);
|
pageBottomTabLayout.setVisibility(View.GONE);
|
||||||
|
if (menuBookmarks != null) {
|
||||||
|
menuBookmarks.setVisible(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Log.d(TAG_KIWIX, "action" + getIntent().getAction());
|
Log.d(TAG_KIWIX, "action" + getIntent().getAction());
|
||||||
@ -1551,6 +1589,7 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
|
|||||||
MenuInflater inflater = getMenuInflater();
|
MenuInflater inflater = getMenuInflater();
|
||||||
inflater.inflate(R.menu.menu_main, menu);
|
inflater.inflate(R.menu.menu_main, menu);
|
||||||
this.menu = menu;
|
this.menu = menu;
|
||||||
|
this.menuBookmarks = menu.findItem(R.id.menu_bookmarks);
|
||||||
StyleMenuButtons(menu);
|
StyleMenuButtons(menu);
|
||||||
if (BuildConfig.IS_CUSTOM_APP) {
|
if (BuildConfig.IS_CUSTOM_APP) {
|
||||||
menu.findItem(R.id.menu_help).setVisible(false);
|
menu.findItem(R.id.menu_help).setVisible(false);
|
||||||
@ -1562,6 +1601,13 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
|
|||||||
if (isFullscreenOpened) {
|
if (isFullscreenOpened) {
|
||||||
openFullScreen();
|
openFullScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (PreferenceManager
|
||||||
|
.getDefaultSharedPreferences(getApplicationContext())
|
||||||
|
.getBoolean(KiwixSettingsActivity.PREF_BOTTOM_TOOLBAR, false)) {
|
||||||
|
menu.findItem(R.id.menu_bookmarks).setVisible(false);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1600,19 +1646,28 @@ public class KiwixMobileActivity extends BaseActivity implements WebViewCallback
|
|||||||
bookmarksDao = new BookmarksDao(KiwixDatabase.getInstance(this));
|
bookmarksDao = new BookmarksDao(KiwixDatabase.getInstance(this));
|
||||||
bookmarks = bookmarksDao.getBookmarks(ZimContentProvider.getId(), ZimContentProvider.getName());
|
bookmarks = bookmarksDao.getBookmarks(ZimContentProvider.getId(), ZimContentProvider.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TabLayout.Tab bookmarkTab = pageBottomTabLayout.getTabAt(4);
|
||||||
|
|
||||||
if (menu.findItem(R.id.menu_bookmarks) != null &&
|
if (menu.findItem(R.id.menu_bookmarks) != null &&
|
||||||
getCurrentWebView().getUrl() != null &&
|
getCurrentWebView().getUrl() != null &&
|
||||||
ZimContentProvider.getId() != null &&
|
ZimContentProvider.getId() != null &&
|
||||||
!getCurrentWebView().getUrl().equals("file:///android_asset/help.html")) {
|
!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)
|
menu.findItem(R.id.menu_bookmarks)
|
||||||
.setEnabled(true)
|
.setEnabled(true)
|
||||||
.setIcon(bookmarks.contains(getCurrentWebView().getUrl()) ? R.drawable.action_bookmark_active : R.drawable.action_bookmark)
|
.setIcon(icon)
|
||||||
.getIcon().setAlpha(255);
|
.getIcon().setAlpha(255);
|
||||||
|
|
||||||
|
bookmarkTab.getCustomView().findViewById(R.id.bookmark_tab_icon).setBackgroundResource(icon);
|
||||||
} else {
|
} else {
|
||||||
menu.findItem(R.id.menu_bookmarks)
|
menu.findItem(R.id.menu_bookmarks)
|
||||||
.setEnabled(false)
|
.setEnabled(false)
|
||||||
.setIcon(R.drawable.action_bookmark)
|
.setIcon(R.drawable.action_bookmark)
|
||||||
.getIcon().setAlpha(130);
|
.getIcon().setAlpha(130);
|
||||||
|
|
||||||
|
bookmarkTab.getCustomView().findViewById(R.id.bookmark_tab_icon).setBackgroundResource(R.drawable.action_bookmark);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,18 @@ public enum PageBottomTab {
|
|||||||
public void select(@NonNull Callback cb) {
|
public void select(@NonNull Callback cb) {
|
||||||
cb.onRandomArticleTabSelected();
|
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;
|
return FULL_SCREEN;
|
||||||
case 3:
|
case 3:
|
||||||
return RANDOM_ARTICLE;
|
return RANDOM_ARTICLE;
|
||||||
|
case 4:
|
||||||
|
return BOOKMARK;
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Tab position is: " + code);
|
throw new IllegalArgumentException("Tab position is: " + code);
|
||||||
}
|
}
|
||||||
@ -47,10 +61,16 @@ public enum PageBottomTab {
|
|||||||
|
|
||||||
public abstract void select(@NonNull Callback cb);
|
public abstract void select(@NonNull Callback cb);
|
||||||
|
|
||||||
|
public void longClick(@NonNull Callback cb) {
|
||||||
|
// Override me
|
||||||
|
}
|
||||||
|
|
||||||
public interface Callback {
|
public interface Callback {
|
||||||
void onHomeTabSelected();
|
void onHomeTabSelected();
|
||||||
void onFindInPageTabSelected();
|
void onFindInPageTabSelected();
|
||||||
void onFullscreenTabSelected();
|
void onFullscreenTabSelected();
|
||||||
void onRandomArticleTabSelected();
|
void onRandomArticleTabSelected();
|
||||||
|
void onBookmarkTabSelected();
|
||||||
|
void onBookmarkTabLongClicked();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
12
app/src/main/res/layout/bookmark_tab.xml
Normal file
12
app/src/main/res/layout/bookmark_tab.xml
Normal 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>
|
@ -24,4 +24,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:contentDescription="@string/menu_randomarticle"
|
android:contentDescription="@string/menu_randomarticle"
|
||||||
android:icon="@drawable/action_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>
|
</merge>
|
Loading…
x
Reference in New Issue
Block a user