From 7f2d30054b68069b475bf3c165808687b5c4dca2 Mon Sep 17 00:00:00 2001 From: tiendd Date: Thu, 25 Jun 2020 08:36:10 +0700 Subject: [PATCH] add tooltip --- folioreader/res/drawable/ic_tooltip1.xml | 14 +++ folioreader/res/drawable/ic_tooltip11.xml | 8 ++ folioreader/res/drawable/ic_tooltip22.xml | 29 +++++++ folioreader/res/drawable/ic_tooltip3.xml | 17 ++++ folioreader/res/layout/folio_activity.xml | 2 +- folioreader/res/layout/login.xml | 27 ++++++ folioreader/res/layout/tooltip_second.xml | 21 +++++ folioreader/res/values/styles.xml | 7 ++ .../java/com/folioreader/FolioReader.java | 8 ++ .../folioreader/ui/activity/FolioActivity.kt | 27 +++++- .../ui/activity/FolioActivityCallback.java | 9 ++ .../ui/adapter/FolioPageFragmentAdapter.java | 9 +- .../ui/fragment/FolioPageFragment.kt | 85 ++++++++++++++++++- .../android/sample/HomeActivity.java | 1 + 14 files changed, 255 insertions(+), 9 deletions(-) create mode 100644 folioreader/res/drawable/ic_tooltip1.xml create mode 100644 folioreader/res/drawable/ic_tooltip11.xml create mode 100644 folioreader/res/drawable/ic_tooltip22.xml create mode 100644 folioreader/res/drawable/ic_tooltip3.xml create mode 100644 folioreader/res/layout/login.xml create mode 100644 folioreader/res/layout/tooltip_second.xml diff --git a/folioreader/res/drawable/ic_tooltip1.xml b/folioreader/res/drawable/ic_tooltip1.xml new file mode 100644 index 000000000..996099ca8 --- /dev/null +++ b/folioreader/res/drawable/ic_tooltip1.xml @@ -0,0 +1,14 @@ + + + + diff --git a/folioreader/res/drawable/ic_tooltip11.xml b/folioreader/res/drawable/ic_tooltip11.xml new file mode 100644 index 000000000..c262ac05c --- /dev/null +++ b/folioreader/res/drawable/ic_tooltip11.xml @@ -0,0 +1,8 @@ + + + + diff --git a/folioreader/res/drawable/ic_tooltip22.xml b/folioreader/res/drawable/ic_tooltip22.xml new file mode 100644 index 000000000..20668bb62 --- /dev/null +++ b/folioreader/res/drawable/ic_tooltip22.xml @@ -0,0 +1,29 @@ + + + + + + + + + diff --git a/folioreader/res/drawable/ic_tooltip3.xml b/folioreader/res/drawable/ic_tooltip3.xml new file mode 100644 index 000000000..a975c7f62 --- /dev/null +++ b/folioreader/res/drawable/ic_tooltip3.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/folioreader/res/layout/folio_activity.xml b/folioreader/res/layout/folio_activity.xml index 96c5bdd60..a386b5e6a 100644 --- a/folioreader/res/layout/folio_activity.xml +++ b/folioreader/res/layout/folio_activity.xml @@ -7,7 +7,7 @@ android:layout_height="match_parent" tools:context="com.folioreader.ui.activity.FolioActivity" tools:menu="@menu/menu_main"> - + + + + + + + \ No newline at end of file diff --git a/folioreader/res/layout/tooltip_second.xml b/folioreader/res/layout/tooltip_second.xml new file mode 100644 index 000000000..2bf91e1f2 --- /dev/null +++ b/folioreader/res/layout/tooltip_second.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file diff --git a/folioreader/res/values/styles.xml b/folioreader/res/values/styles.xml index e14bcb51a..5b56ba598 100644 --- a/folioreader/res/values/styles.xml +++ b/folioreader/res/values/styles.xml @@ -130,4 +130,11 @@ @color/black + + \ No newline at end of file diff --git a/folioreader/src/main/java/com/folioreader/FolioReader.java b/folioreader/src/main/java/com/folioreader/FolioReader.java index a8c69d4d6..1992552cc 100644 --- a/folioreader/src/main/java/com/folioreader/FolioReader.java +++ b/folioreader/src/main/java/com/folioreader/FolioReader.java @@ -39,6 +39,7 @@ public class FolioReader { public static final String EXTRA_BOOK_ID = "com.folioreader.extra.BOOK_ID"; public static final String EXTRA_BOOK_ID2 = "com.folioreader.extra.BOOK_ID2"; public static final String EXTRA_LINK = "com.folioreader.extra.LINK"; + public static final String EXTRA_STATUS_TOOLTIP = "com.folioreader.extra.STATUS_TOOLTIP"; public static final String EXTRA_READ_LOCATOR = "com.folioreader.extra.READ_LOCATOR"; public static final String EXTRA_PORT_NUMBER = "com.folioreader.extra.PORT_NUMBER"; public static final String EXTRA_PORT_NUMBER2 = "com.folioreader.extra.PORT_NUMBER2"; @@ -55,6 +56,7 @@ public class FolioReader { private OnClosedListener onClosedListener; private ReadLocator readLocator; private String link; + private String statusTooltip; @Nullable public Retrofit retrofit; @@ -171,6 +173,7 @@ private Intent getIntentFromUrl(String assetOrSdcardPath, int rawId) { intent.putExtra(EXTRA_PORT_NUMBER, portNumber); intent.putExtra(FolioActivity.EXTRA_READ_LOCATOR, (Parcelable) readLocator); intent.putExtra(EXTRA_LINK, this.link); + intent.putExtra(EXTRA_STATUS_TOOLTIP, this.statusTooltip); if (rawId != 0) { intent.putExtra(FolioActivity.INTENT_EPUB_SOURCE_PATH, rawId); @@ -255,6 +258,11 @@ public FolioReader setLinkPurchase(String linkPurchase) { return singleton; } + public FolioReader setStatusTooltip(String statusTooltip) { + this.statusTooltip = statusTooltip; + return singleton; + } + public void saveReceivedHighLights(List highlights, OnSaveHighlight onSaveHighlight) { new SaveReceivedHighlightTask(onSaveHighlight, highlights).execute(); diff --git a/folioreader/src/main/java/com/folioreader/ui/activity/FolioActivity.kt b/folioreader/src/main/java/com/folioreader/ui/activity/FolioActivity.kt index 316309887..aa34f5921 100644 --- a/folioreader/src/main/java/com/folioreader/ui/activity/FolioActivity.kt +++ b/folioreader/src/main/java/com/folioreader/ui/activity/FolioActivity.kt @@ -90,6 +90,7 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle private var handler: Handler? = null private var currentChapterIndex: Int = 0 + private var tooltipStep: Int = 5 private var mFolioPageFragmentAdapter: FolioPageFragmentAdapter? = null private var entryReadLocator: ReadLocator? = null private var lastReadLocator: ReadLocator? = null @@ -102,6 +103,8 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle private var mBookId: String? = null private var mLink: String? = null + private var mStatusTooltip: String? = null + private var statusTooltip: String? = "" private var mEpubFilePath: String? = null private var mEpubSourceType: EpubSourceType? = null private var mEpubRawId = 0 @@ -276,6 +279,7 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle mBookId = intent.getStringExtra(FolioReader.EXTRA_BOOK_ID) mLink = intent.getStringExtra(FolioReader.EXTRA_LINK) + mStatusTooltip = intent.getStringExtra(FolioReader.EXTRA_STATUS_TOOLTIP) mEpubSourceType = intent.extras!!.getSerializable(FolioActivity.INTENT_EPUB_SOURCE_TYPE) as EpubSourceType if (mEpubSourceType == EpubSourceType.RAW) { @@ -575,6 +579,15 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle return streamerUri.toString() } + override fun getTooltipStatus(): String { + return statusTooltip.toString() + } + + override fun setTooltipStatus() { + statusTooltip = "done" + } + + override fun onDirectionChange(newDirection: Config.Direction) { Log.v(LOG_TAG, "-> onDirectionChange") @@ -587,7 +600,7 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle mFolioPageViewPager!!.setDirection(newDirection) mFolioPageFragmentAdapter = FolioPageFragmentAdapter( supportFragmentManager, - spine, bookFileName, mBookId, mLink + spine, bookFileName, mBookId, mLink, mStatusTooltip ) mFolioPageViewPager!!.adapter = mFolioPageFragmentAdapter mFolioPageViewPager!!.currentItem = currentChapterIndex @@ -762,7 +775,7 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle } } - private fun hideSystemUI() { + override fun hideSystemUI() { Log.v(LOG_TAG, "-> hideSystemUI") if (Build.VERSION.SDK_INT >= 16) { @@ -883,6 +896,14 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle return currentChapterIndex } + override fun getTooltipStep(): String { + return tooltipStep.toString() + } + + override fun setTooltipStep() { + tooltipStep = 10 + } + private fun configFolio() { mFolioPageViewPager = findViewById(R.id.folioPageViewPager) @@ -931,7 +952,7 @@ class FolioActivity : AppCompatActivity(), FolioActivityCallback, MediaControlle mFolioPageViewPager!!.setDirection(direction) mFolioPageFragmentAdapter = FolioPageFragmentAdapter( supportFragmentManager, - spine, bookFileName, mBookId, mLink + spine, bookFileName, mBookId, mLink, mStatusTooltip ) mFolioPageViewPager!!.adapter = mFolioPageFragmentAdapter diff --git a/folioreader/src/main/java/com/folioreader/ui/activity/FolioActivityCallback.java b/folioreader/src/main/java/com/folioreader/ui/activity/FolioActivityCallback.java index 502a54cfa..354eefe0d 100644 --- a/folioreader/src/main/java/com/folioreader/ui/activity/FolioActivityCallback.java +++ b/folioreader/src/main/java/com/folioreader/ui/activity/FolioActivityCallback.java @@ -11,6 +11,10 @@ public interface FolioActivityCallback { int getCurrentChapterIndex(); + String getTooltipStep(); + + void setTooltipStep(); + ReadLocator getEntryReadLocator(); boolean goToChapter(String href); @@ -23,6 +27,8 @@ public interface FolioActivityCallback { void toggleSystemUI(); + void hideSystemUI(); + void setDayMode(); void setNightMode(); @@ -36,4 +42,7 @@ public interface FolioActivityCallback { WeakReference getActivity(); String getStreamerUrl(); + String getTooltipStatus(); + + void setTooltipStatus(); } diff --git a/folioreader/src/main/java/com/folioreader/ui/adapter/FolioPageFragmentAdapter.java b/folioreader/src/main/java/com/folioreader/ui/adapter/FolioPageFragmentAdapter.java index e18657ae9..bd813d19d 100644 --- a/folioreader/src/main/java/com/folioreader/ui/adapter/FolioPageFragmentAdapter.java +++ b/folioreader/src/main/java/com/folioreader/ui/adapter/FolioPageFragmentAdapter.java @@ -24,16 +24,21 @@ public class FolioPageFragmentAdapter extends FragmentStatePagerAdapter { private String mEpubFileName; private String mBookId; private String mLink; + private String mStatusTooltip; private ArrayList fragments; private ArrayList savedStateList; public FolioPageFragmentAdapter(FragmentManager fragmentManager, List spineReferences, - String epubFileName, String bookId, String link) { + String epubFileName, String bookId, String link, String statusTooltip) { super(fragmentManager); + Log.d("----->", statusTooltip); + Log.d("----- epubFileName >", epubFileName); + this.mSpineReferences = spineReferences; this.mEpubFileName = epubFileName; this.mBookId = bookId; this.mLink = link; + this.mStatusTooltip = statusTooltip; fragments = new ArrayList<>(Arrays.asList(new Fragment[mSpineReferences.size()])); } @@ -60,7 +65,7 @@ public Fragment getItem(int position) { Fragment fragment = fragments.get(position); if (fragment == null) { fragment = FolioPageFragment.newInstance(position, - mEpubFileName, mSpineReferences.get(position), mBookId, mLink); + mEpubFileName, mSpineReferences.get(position), mBookId, mLink, mStatusTooltip); fragments.set(position, fragment); } return fragment; diff --git a/folioreader/src/main/java/com/folioreader/ui/fragment/FolioPageFragment.kt b/folioreader/src/main/java/com/folioreader/ui/fragment/FolioPageFragment.kt index 6d19d00e5..d101816b2 100644 --- a/folioreader/src/main/java/com/folioreader/ui/fragment/FolioPageFragment.kt +++ b/folioreader/src/main/java/com/folioreader/ui/fragment/FolioPageFragment.kt @@ -54,6 +54,17 @@ import java.util.regex.Pattern import android.app.AlertDialog; import android.widget.Toast import android.content.DialogInterface +import android.graphics.drawable.ColorDrawable +import android.widget.ImageView +import kotlinx.android.synthetic.main.login.* +import kotlinx.android.synthetic.main.tooltip_second.* +import android.view.WindowManager +import android.view.Window; +import android.view.Gravity; +import android.view.ViewGroup.LayoutParams +import com.folioreader.ui.view.ConfigBottomSheetDialogFragment +// import android.support.v4.app.FragmentManager; + import androidx.fragment.app.FragmentManager; /** * Created by mahavir on 4/2/16. */ @@ -72,7 +83,7 @@ class FolioPageFragment : Fragment(), const val BUNDLE_SEARCH_LOCATOR = "BUNDLE_SEARCH_LOCATOR" @JvmStatic - fun newInstance(spineIndex: Int, bookTitle: String, spineRef: Link, bookId: String, link: String): FolioPageFragment { + fun newInstance(spineIndex: Int, bookTitle: String, spineRef: Link, bookId: String, link: String, statusTooltip: String): FolioPageFragment { val fragment = FolioPageFragment() val args = Bundle() args.putInt(BUNDLE_SPINE_INDEX, spineIndex) @@ -80,6 +91,7 @@ class FolioPageFragment : Fragment(), args.putString(FolioReader.EXTRA_BOOK_ID, bookId) args.putString(FolioReader.EXTRA_BOOK_ID2, bookId) args.putString(FolioReader.EXTRA_LINK, link) + args.putString(FolioReader.EXTRA_STATUS_TOOLTIP, statusTooltip) args.putSerializable(BUNDLE_SPINE_ITEM, spineRef) fragment.arguments = args return fragment @@ -98,6 +110,7 @@ class FolioPageFragment : Fragment(), private var savedInstanceState: Bundle? = null private var mRootView: View? = null + private var mRootView2: View? = null private var loadingView: LoadingView? = null private var mScrollSeekbar: VerticalSeekbar? = null @@ -117,6 +130,7 @@ class FolioPageFragment : Fragment(), private var mIsPageReloaded: Boolean = false private var mIsShowRemindPurchase: Boolean = false private var popupShowed: Boolean = false + private var test: Boolean = false private var highlightStyle: String? = null @@ -124,6 +138,7 @@ class FolioPageFragment : Fragment(), private var mConfig: Config? = null private var mBookId: String? = null private var mLink: String? = null + private var mStatusTooltip: String? = null var searchLocatorVisible: SearchLocator? = null private lateinit var chapterUrl: Uri @@ -154,6 +169,7 @@ class FolioPageFragment : Fragment(), spineItem = arguments!!.getSerializable(BUNDLE_SPINE_ITEM) as Link mBookId = arguments!!.getString(FolioReader.EXTRA_BOOK_ID) mLink = arguments!!.getString(FolioReader.EXTRA_LINK) + mStatusTooltip = arguments!!.getString(FolioReader.EXTRA_STATUS_TOOLTIP) chapterUrl = Uri.parse(mActivityCallback?.streamerUrl + spineItem.href!!.substring(1)) @@ -181,11 +197,15 @@ class FolioPageFragment : Fragment(), initAnimations() initWebView() updatePagesLeftTextBg() + // mRootView2 = getLayoutInflater().inflate(R.layout.login, container, false) + // val btn:ImageView = mRootView2!!.findViewById(R.id.btn_tooltip1) - + // btn.setOnClickListener { + // Log.v("test", "======>") + // } return mRootView } @@ -379,6 +399,49 @@ class FolioPageFragment : Fragment(), alert.show() } + fun showGuidePopup() { + val mDialogView = LayoutInflater.from(getActivity()).inflate(R.layout.login, null) + //AlertDialogBuilder + val mBuilder = AlertDialog.Builder(getActivity()) + .setView(mDialogView) + // .setTitle("Login Form") + //show dialog + val mAlertDialog = mBuilder.show() + val dialogButton:ImageView = mAlertDialog.findViewById(R.id.btn_tooltip1) + // mRootView2 = getLayoutInflater().inflate(R.layout.login, container, false) + + + // val btn = findViewById(R.id.btn_tooltip1) as ImageView + dialogButton.setOnClickListener { + // onBackPressed() + mAlertDialog.dismiss() + showGuidePopup2() + } + // mAlertDialog.getWindow().setGravity(Gravity.TOP) + mAlertDialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + } + + fun showGuidePopup2() { + val mDialogView = LayoutInflater.from(getActivity()).inflate(R.layout.tooltip_second, null) + //AlertDialogBuilder + val mBuilder = AlertDialog.Builder(getActivity()) + .setView(mDialogView) + // .setTitle("Login Form") + //show dialog + val mAlertDialog = mBuilder.show() + + val dialogButton:ImageView = mAlertDialog.findViewById(R.id.btn_tooltip2) + dialogButton.setOnClickListener { + mAlertDialog.dismiss() + showConfigBottomSheetDialogFragment() + } + + mAlertDialog.getWindow().setGravity(Gravity.TOP) + mAlertDialog.getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT); + + mAlertDialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + } + fun scrollToFirst() { val isPageLoading = loadingView == null || loadingView!!.visibility == View.VISIBLE @@ -438,7 +501,6 @@ class FolioPageFragment : Fragment(), private val webViewClient = object : WebViewClient() { override fun onPageFinished(view: WebView, url: String) { - mWebview!!.loadUrl("javascript:checkCompatMode()") mWebview!!.loadUrl("javascript:alert(getReadingTime())") @@ -501,6 +563,14 @@ class FolioPageFragment : Fragment(), } else if (isCurrentFragment) { + if (mActivityCallback!!.tooltipStep.count() < 2 && mStatusTooltip!!.count() > 0) { + showGuidePopup() + mActivityCallback!!.tooltipStep() + } + + val a = mActivityCallback!!.getTooltipStatus() + mActivityCallback!!.setTooltipStatus() + val readLocator: ReadLocator? if (savedInstanceState == null) { Log.v(LOG_TAG, "-> onPageFinished -> took from getEntryReadLocator") @@ -530,6 +600,7 @@ class FolioPageFragment : Fragment(), } } + Log.d("length", mActivityCallback!!.currentChapterIndex.toString()) } @@ -930,4 +1001,12 @@ class FolioPageFragment : Fragment(), mWebview!!.loadUrl(getString(R.string.callClearSelection)) searchLocatorVisible = null } + + fun showConfigBottomSheetDialogFragment() { + ConfigBottomSheetDialogFragment().show( + getActivity()!!.getSupportFragmentManager(), + ConfigBottomSheetDialogFragment.LOG_TAG + ) + } + } diff --git a/sample/src/main/java/com/folioreader/android/sample/HomeActivity.java b/sample/src/main/java/com/folioreader/android/sample/HomeActivity.java index cce7c2ab2..a7ae80537 100644 --- a/sample/src/main/java/com/folioreader/android/sample/HomeActivity.java +++ b/sample/src/main/java/com/folioreader/android/sample/HomeActivity.java @@ -54,6 +54,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { .setOnHighlightListener(this) .setReadLocatorListener(this) .setLinkPurchase("") + .setStatusTooltip("") .setOnClosedListener(this); getHighlightsAndSave();