diff --git a/build.gradle b/build.gradle
index 6e82884da..dbb49c8e8 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,10 @@
buildscript {
+ ext.KOTLIN_VERSION= '1.2.41'
+
+ ext.ANDROID_LIB_VERSION = '27.1.1'
+ ext.R2_STREAMER_VERSION = '0.1.4'
+ def KOTLIN_VERSION = ext.KOTLIN_VERSION
+
repositories {
jcenter()
maven {
@@ -10,9 +16,11 @@ buildscript {
}
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.2.0'
+ classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
- classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$KOTLIN_VERSION"
+ classpath "org.jetbrains.kotlin:kotlin-android-extensions:$KOTLIN_VERSION"
}
}
diff --git a/folioreader/build.gradle b/folioreader/build.gradle
index b33e4108e..955bbc5f2 100644
--- a/folioreader/build.gradle
+++ b/folioreader/build.gradle
@@ -1,6 +1,8 @@
apply plugin: 'com.android.library'
apply from: '../config/quality/quality.gradle'
apply plugin: 'com.github.dcendents.android-maven'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
ext {
bintrayRepo = 'maven'
@@ -28,14 +30,14 @@ ext {
android {
useLibrary 'org.apache.http.legacy'
- compileSdkVersion 26
- buildToolsVersion "26.0.2"
+ compileSdkVersion 27
+ buildToolsVersion "27.0.3"
defaultConfig {
versionCode 1
versionName "1.0"
minSdkVersion 14
- targetSdkVersion 26
+ targetSdkVersion 27
}
sourceSets {
@@ -78,28 +80,28 @@ android {
}
}
-dependencies {
- compile fileTree(include: ['*.jar'], dir: 'libs')
- compile project(':webViewMarker')
- final ANDROID_LIB_VERSION = '26.0.2'
+apply from: '../folioreader/bintray/installv1.gradle'
+dependencies {
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
+ implementation project(':webViewMarker')
//noinspection GradleDependency
- compile "com.android.support:appcompat-v7:$ANDROID_LIB_VERSION"
- compile "com.android.support:recyclerview-v7:$ANDROID_LIB_VERSION"
- compile "com.android.support:support-v4:$ANDROID_LIB_VERSION"
- compile "com.android.support:design:$ANDROID_LIB_VERSION"
+ implementation "com.android.support:appcompat-v7:$ANDROID_LIB_VERSION"
+ implementation "com.android.support:recyclerview-v7:$ANDROID_LIB_VERSION"
+ implementation "com.android.support:support-v4:$ANDROID_LIB_VERSION"
+ implementation "com.android.support:design:$ANDROID_LIB_VERSION"
- compile 'com.daimajia.swipelayout:library:1.2.0@aar'
- // r2-streamer
- final R2_STREAMER_VERSION = '0.1.4'
+ implementation 'com.daimajia.swipelayout:library:1.2.0@aar'
- compile "org.readium:r2-fetcher:$R2_STREAMER_VERSION"
- compile "org.readium:r2-parser:$R2_STREAMER_VERSION"
- compile "org.readium:r2-server:$R2_STREAMER_VERSION"
+ //Kotlin
+ implementation "org.jetbrains.kotlin:kotlin-stdlib:$KOTLIN_VERSION"
- compile 'org.greenrobot:eventbus:3.1.1'
-}
+ // r2-streamer
+ api "org.readium:r2-fetcher:$R2_STREAMER_VERSION"
+ api "org.readium:r2-parser:$R2_STREAMER_VERSION"
+ api "org.readium:r2-server:$R2_STREAMER_VERSION"
-apply from: '../folioreader/bintray/installv1.gradle'
+ implementation 'org.greenrobot:eventbus:3.1.1'
+}
apply from: '../folioreader/bintray/bintrayv1.gradle'
diff --git a/folioreader/res/layout/folio_activity.xml b/folioreader/res/layout/folio_activity.xml
index 1b04b270e..d601eed67 100644
--- a/folioreader/res/layout/folio_activity.xml
+++ b/folioreader/res/layout/folio_activity.xml
@@ -101,13 +101,9 @@
-
+ android:layout_height="match_parent" />
-
-
\ No newline at end of file
diff --git a/folioreader/res/layout/view_audio_player.xml b/folioreader/res/layout/view_audio_player.xml
index b52968016..39a44caf1 100644
--- a/folioreader/res/layout/view_audio_player.xml
+++ b/folioreader/res/layout/view_audio_player.xml
@@ -1,175 +1,175 @@
+ android:layout_height="match_parent"
+ android:background="#99000000"
+ android:visibility="gone">
-
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:background="@color/white"
+ android:visibility="invisible">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ android:id="@+id/top_buttons"
+ android:layout_width="match_parent"
+ android:layout_height="50dp"
+ android:orientation="horizontal">
+
+
+
+
+
+
+
+
+
+
+
+
-
+ android:orientation="horizontal"
+ android:weightSum="4.0">
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/folioreader/src/main/java/com/folioreader/ui/folio/activity/FolioActivity.java b/folioreader/src/main/java/com/folioreader/ui/folio/activity/FolioActivity.java
index 652578fed..12badb4a8 100644
--- a/folioreader/src/main/java/com/folioreader/ui/folio/activity/FolioActivity.java
+++ b/folioreader/src/main/java/com/folioreader/ui/folio/activity/FolioActivity.java
@@ -17,7 +17,6 @@
import android.Manifest;
import android.annotation.TargetApi;
-import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Build;
@@ -27,17 +26,12 @@
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
-import android.text.Html;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
-import android.view.animation.Animation;
-import android.view.animation.AnimationUtils;
import android.view.animation.DecelerateInterpolator;
-import android.widget.ImageButton;
import android.widget.ImageView;
-import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
@@ -48,9 +42,7 @@
import com.folioreader.model.HighlightImpl;
import com.folioreader.model.ReadPosition;
import com.folioreader.model.event.AnchorIdEvent;
-import com.folioreader.model.event.MediaOverlayHighlightStyleEvent;
import com.folioreader.model.event.MediaOverlayPlayPauseEvent;
-import com.folioreader.model.event.MediaOverlaySpeedEvent;
import com.folioreader.model.event.WebViewPosition;
import com.folioreader.ui.folio.adapter.FolioPageFragmentAdapter;
import com.folioreader.ui.folio.fragment.FolioPageFragment;
@@ -61,8 +53,9 @@
import com.folioreader.util.UiUtil;
import com.folioreader.view.ConfigBottomSheetDialogFragment;
import com.folioreader.view.DirectionalViewpager;
+import com.folioreader.view.MediaControllerCallback;
+import com.folioreader.view.MediaControllerView;
import com.folioreader.view.ObservableWebView;
-import com.folioreader.view.StyleableTextView;
import org.greenrobot.eventbus.EventBus;
import org.readium.r2_streamer.model.container.Container;
@@ -86,7 +79,8 @@ public class FolioActivity
implements FolioPageFragment.FolioPageFragmentCallback,
ObservableWebView.ToolBarListener,
ConfigBottomSheetDialogFragment.ConfigDialogCallback,
- MainMvpView {
+ MainMvpView,
+ MediaControllerCallback{
private static final String TAG = "FolioActivity";
@@ -101,8 +95,6 @@ public enum EpubSourceType {
SD_CARD
}
- private boolean isOpen = true;
-
public static final int ACTION_CONTENT_HIGHLIGHT = 77;
private String bookFileName;
private static final String HIGHLIGHT_ITEM = "highlight_item";
@@ -120,14 +112,13 @@ public enum EpubSourceType {
private List mSpineReferenceList = new ArrayList<>();
private EpubServer mEpubServer;
- private Animation slide_down;
- private Animation slide_up;
private boolean mIsNightMode;
private Config mConfig;
private String mBookId;
private String mEpubFilePath;
private EpubSourceType mEpubSourceType;
int mEpubRawId = 0;
+ private MediaControllerView mediaControllerView;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -143,18 +134,16 @@ protected void onCreate(Bundle savedInstanceState) {
mEpubFilePath = getIntent().getExtras()
.getString(FolioActivity.INTENT_EPUB_SOURCE_PATH);
}
-
setConfig();
+ mediaControllerView = findViewById(R.id.media_controller_view);
+ mediaControllerView.onInit();
+ mediaControllerView.setListeners(this);
if (!mConfig.isShowTts()) {
findViewById(R.id.btn_speaker).setVisibility(View.GONE);
}
title = (TextView) findViewById(R.id.lbl_center);
- slide_down = AnimationUtils.loadAnimation(getApplicationContext(),
- R.anim.slide_down);
- slide_up = AnimationUtils.loadAnimation(getApplicationContext(),
- R.anim.slide_up);
initColors();
@@ -164,7 +153,6 @@ protected void onCreate(Bundle savedInstanceState) {
setupBook();
}
- initAudioView();
mToolbar = (Toolbar) findViewById(R.id.toolbar);
findViewById(R.id.btn_drawer).setOnClickListener(new View.OnClickListener() {
@@ -179,20 +167,10 @@ public void onClick(View v) {
}
});
- // speaker = (ImageView) findViewById(R.id.btn_speaker);
findViewById(R.id.btn_speaker).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- if (isOpen) {
- audioContainer.startAnimation(slide_up);
- audioContainer.setVisibility(View.VISIBLE);
- shade.setVisibility(View.VISIBLE);
- } else {
- audioContainer.startAnimation(slide_down);
- audioContainer.setVisibility(View.INVISIBLE);
- shade.setVisibility(View.GONE);
- }
- isOpen = !isOpen;
+ mediaControllerView.show();
}
});
@@ -200,7 +178,7 @@ public void onClick(View v) {
if (mIsNightMode) {
mToolbar.setBackgroundColor(ContextCompat.getColor(FolioActivity.this, R.color.black));
title.setTextColor(ContextCompat.getColor(FolioActivity.this, R.color.white));
- audioContainer.setBackgroundColor(ContextCompat.getColor(FolioActivity.this, R.color.night));
+ mediaControllerView.setNightMode();
}
}
@@ -267,7 +245,7 @@ public void onPageScrolled(int position, float positionOffset, int positionOffse
@Override
public void onPageSelected(int position) {
EventBus.getDefault().post(new MediaOverlayPlayPauseEvent(mSpineReferenceList.get(mChapterPosition).href, false, true));
- mPlayPauseBtn.setImageDrawable(ContextCompat.getDrawable(FolioActivity.this, R.drawable.play_icon));
+ mediaControllerView.setPlayButtonDrawable();
mChapterPosition = position;
}
@@ -486,166 +464,14 @@ private void setConfig() {
}
}
-
- //*************************************************************************//
- // AUDIO PLAYER //
- //*************************************************************************//
- private StyleableTextView mHalfSpeed, mOneSpeed, mTwoSpeed, mOneAndHalfSpeed;
- private StyleableTextView mBackgroundColorStyle, mUnderlineStyle, mTextColorStyle;
- private RelativeLayout audioContainer;
- private boolean mIsSpeaking;
- private ImageButton mPlayPauseBtn, mPreviousButton, mNextButton;
- private RelativeLayout shade;
-
- private void initAudioView() {
- mHalfSpeed = findViewById(R.id.btn_half_speed);
- mOneSpeed = findViewById(R.id.btn_one_x_speed);
- mTwoSpeed = findViewById(R.id.btn_twox_speed);
- audioContainer = findViewById(R.id.container);
- shade = findViewById(R.id.shade);
- mOneAndHalfSpeed = findViewById(R.id.btn_one_and_half_speed);
- mPlayPauseBtn = findViewById(R.id.play_button);
- mPreviousButton = findViewById(R.id.prev_button);
- mNextButton = findViewById(R.id.next_button);
- mBackgroundColorStyle = findViewById(R.id.btn_backcolor_style);
- mUnderlineStyle = findViewById(R.id.btn_text_undeline_style);
- mTextColorStyle = findViewById(R.id.btn_text_color_style);
- mIsSpeaking = false;
-
- final Context mContext = mHalfSpeed.getContext();
- mOneAndHalfSpeed.setText(Html.fromHtml(mContext.getString(R.string.one_and_half_speed)));
- mHalfSpeed.setText(Html.fromHtml(mContext.getString(R.string.half_speed_text)));
- String styleUnderline =
- mHalfSpeed.getContext().getResources().getString(R.string.style_underline);
- mUnderlineStyle.setText(Html.fromHtml(styleUnderline));
-
- setupColors(mContext);
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
- findViewById(R.id.playback_speed_Layout).setVisibility(View.GONE);
- }
-
- shade.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (isOpen) {
- audioContainer.startAnimation(slide_up);
- audioContainer.setVisibility(View.VISIBLE);
- shade.setVisibility(View.VISIBLE);
- } else {
- audioContainer.startAnimation(slide_down);
- audioContainer.setVisibility(View.INVISIBLE);
- shade.setVisibility(View.GONE);
- }
- isOpen = !isOpen;
- }
- });
-
- mPlayPauseBtn.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mIsSpeaking) {
- EventBus.getDefault().post(new MediaOverlayPlayPauseEvent(mSpineReferenceList.get(mChapterPosition).href, false, false));
- mPlayPauseBtn.setImageDrawable(ContextCompat.getDrawable(FolioActivity.this, R.drawable.play_icon));
- UiUtil.setColorToImage(mContext, mConfig.getThemeColor(), mPlayPauseBtn.getDrawable());
- } else {
- EventBus.getDefault().post(new MediaOverlayPlayPauseEvent(mSpineReferenceList.get(mChapterPosition).href, true, false));
- mPlayPauseBtn.setImageDrawable(ContextCompat.getDrawable(FolioActivity.this, R.drawable.pause_btn));
- UiUtil.setColorToImage(mContext, mConfig.getThemeColor(), mPlayPauseBtn.getDrawable());
- }
- mIsSpeaking = !mIsSpeaking;
- }
- });
-
- mHalfSpeed.setOnClickListener(new View.OnClickListener() {
- @TargetApi(Build.VERSION_CODES.M)
- @Override
- public void onClick(View v) {
- mHalfSpeed.setSelected(true);
- mOneSpeed.setSelected(false);
- mOneAndHalfSpeed.setSelected(false);
- mTwoSpeed.setSelected(false);
- EventBus.getDefault().post(new MediaOverlaySpeedEvent(MediaOverlaySpeedEvent.Speed.HALF));
- }
- });
-
- mOneSpeed.setOnClickListener(new View.OnClickListener() {
- @TargetApi(Build.VERSION_CODES.M)
- @Override
- public void onClick(View v) {
- mHalfSpeed.setSelected(false);
- mOneSpeed.setSelected(true);
- mOneAndHalfSpeed.setSelected(false);
- mTwoSpeed.setSelected(false);
- EventBus.getDefault().post(new MediaOverlaySpeedEvent(MediaOverlaySpeedEvent.Speed.ONE));
- }
- });
- mOneAndHalfSpeed.setOnClickListener(new View.OnClickListener() {
- @TargetApi(Build.VERSION_CODES.M)
- @Override
- public void onClick(View v) {
- mHalfSpeed.setSelected(false);
- mOneSpeed.setSelected(false);
- mOneAndHalfSpeed.setSelected(true);
- mTwoSpeed.setSelected(false);
- EventBus.getDefault().post(new MediaOverlaySpeedEvent(MediaOverlaySpeedEvent.Speed.ONE_HALF));
- }
- });
- mTwoSpeed.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mHalfSpeed.setSelected(false);
- mOneSpeed.setSelected(false);
- mOneAndHalfSpeed.setSelected(false);
- mTwoSpeed.setSelected(true);
- EventBus.getDefault().post(new MediaOverlaySpeedEvent(MediaOverlaySpeedEvent.Speed.TWO));
- }
- });
-
- mBackgroundColorStyle.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mBackgroundColorStyle.setSelected(true);
- mUnderlineStyle.setSelected(false);
- mTextColorStyle.setSelected(false);
- EventBus.getDefault().post(new MediaOverlayHighlightStyleEvent(MediaOverlayHighlightStyleEvent.Style.DEFAULT));
- }
- });
-
- mUnderlineStyle.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mBackgroundColorStyle.setSelected(false);
- mUnderlineStyle.setSelected(true);
- mTextColorStyle.setSelected(false);
- EventBus.getDefault().post(new MediaOverlayHighlightStyleEvent(MediaOverlayHighlightStyleEvent.Style.UNDERLINE));
-
- }
- });
-
- mTextColorStyle.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- mBackgroundColorStyle.setSelected(false);
- mUnderlineStyle.setSelected(false);
- mTextColorStyle.setSelected(true);
- EventBus.getDefault().post(new MediaOverlayHighlightStyleEvent(MediaOverlayHighlightStyleEvent.Style.BACKGROUND));
- }
- });
-
+ @Override
+ public void play() {
+ EventBus.getDefault().post(new MediaOverlayPlayPauseEvent(mSpineReferenceList.get(mChapterPosition).href, true, false));
}
- private void setupColors(Context context) {
- mHalfSpeed.setTextColor(UiUtil.getColorList(context, mConfig.getThemeColor(), R.color.grey_color));
- mOneAndHalfSpeed.setTextColor(UiUtil.getColorList(context, mConfig.getThemeColor(), R.color.grey_color));
- mTwoSpeed.setTextColor(UiUtil.getColorList(context, mConfig.getThemeColor(), R.color.grey_color));
- mOneSpeed.setTextColor(UiUtil.getColorList(context, mConfig.getThemeColor(), R.color.grey_color));
- mUnderlineStyle.setTextColor(UiUtil.getColorList(context, mConfig.getThemeColor(), R.color.grey_color));
- mBackgroundColorStyle.setTextColor(UiUtil.getColorList(context, R.color.white, R.color.grey_color));
- mBackgroundColorStyle.setBackgroundDrawable(UiUtil.convertColorIntoStateDrawable(this, mConfig.getThemeColor(), android.R.color.transparent));
- mTextColorStyle.setTextColor(UiUtil.getColorList(context, mConfig.getThemeColor(), R.color.grey_color));
- UiUtil.setColorToImage(context, mConfig.getThemeColor(), mPlayPauseBtn.getDrawable());
- UiUtil.setColorToImage(context, mConfig.getThemeColor(), mNextButton.getDrawable());
- UiUtil.setColorToImage(context, mConfig.getThemeColor(), mPreviousButton.getDrawable());
+ @Override
+ public void pause() {
+ EventBus.getDefault().post(new MediaOverlayPlayPauseEvent(mSpineReferenceList.get(mChapterPosition).href, false, false));
}
@Override
@@ -678,4 +504,4 @@ public void onRequestPermissionsResult(int requestCode, @NonNull String[] permis
break;
}
}
-}
+}
\ No newline at end of file
diff --git a/folioreader/src/main/java/com/folioreader/ui/folio/fragment/FolioPageFragment.java b/folioreader/src/main/java/com/folioreader/ui/folio/fragment/FolioPageFragment.java
index bf52b7561..e1581c89a 100644
--- a/folioreader/src/main/java/com/folioreader/ui/folio/fragment/FolioPageFragment.java
+++ b/folioreader/src/main/java/com/folioreader/ui/folio/fragment/FolioPageFragment.java
@@ -60,6 +60,7 @@
import com.folioreader.util.HighlightUtil;
import com.folioreader.util.SMILParser;
import com.folioreader.util.UiUtil;
+import com.folioreader.view.MediaControllerView;
import com.folioreader.view.ObservableWebView;
import com.folioreader.view.VerticalSeekbar;
@@ -242,7 +243,7 @@ public void pauseButtonClicked(MediaOverlayPlayPauseEvent event) {
/**
* [EVENT BUS FUNCTION]
- * Function triggered from {@link FolioActivity#initAudioView()} when speed
+ * Function triggered from {@link MediaControllerView#initListeners()} when speed
* change buttons are clicked
*
* @param event of type {@link MediaOverlaySpeedEvent} contains selected speed
@@ -256,7 +257,7 @@ public void speedChanged(MediaOverlaySpeedEvent event) {
/**
* [EVENT BUS FUNCTION]
- * Function triggered from {@link FolioActivity#initAudioView()} when new
+ * Function triggered from {@link MediaControllerView#initListeners()} when new
* style is selected on button click.
*
* @param event of type {@link MediaOverlaySpeedEvent} contains selected style
diff --git a/folioreader/src/main/java/com/folioreader/view/MediaControllerCallback.kt b/folioreader/src/main/java/com/folioreader/view/MediaControllerCallback.kt
new file mode 100644
index 000000000..e2d0d9902
--- /dev/null
+++ b/folioreader/src/main/java/com/folioreader/view/MediaControllerCallback.kt
@@ -0,0 +1,9 @@
+package com.folioreader.view
+
+/**
+ * Created by gautam on 9/5/18.
+ */
+interface MediaControllerCallback {
+ fun play()
+ fun pause()
+}
\ No newline at end of file
diff --git a/folioreader/src/main/java/com/folioreader/view/MediaControllerView.kt b/folioreader/src/main/java/com/folioreader/view/MediaControllerView.kt
new file mode 100644
index 000000000..4e528135b
--- /dev/null
+++ b/folioreader/src/main/java/com/folioreader/view/MediaControllerView.kt
@@ -0,0 +1,155 @@
+package com.folioreader.view
+
+import android.content.Context
+import android.os.Build
+import android.support.v4.content.ContextCompat
+import android.text.Html
+import android.util.AttributeSet
+import android.view.LayoutInflater
+import android.view.View
+import android.view.animation.AnimationUtils
+import android.widget.RelativeLayout
+import com.folioreader.Config
+import com.folioreader.R
+import com.folioreader.model.event.MediaOverlayHighlightStyleEvent
+import com.folioreader.model.event.MediaOverlaySpeedEvent
+import com.folioreader.util.AppUtil
+import com.folioreader.util.UiUtil
+import kotlinx.android.synthetic.main.view_audio_player.view.*
+import org.greenrobot.eventbus.EventBus
+
+/**
+ * Created by gautam on 9/5/18.
+ */
+class MediaControllerView : RelativeLayout {
+ private lateinit var config: Config
+ private var visible: Boolean = true
+ lateinit var callback: MediaControllerCallback
+ private var isPlaying: Boolean = false
+
+ constructor(context: Context) : this(context, null, 0)
+ constructor(context: Context, attributes: AttributeSet?) : this(context, attributes, 0)
+ constructor(context: Context, attributes: AttributeSet?, defStyle: Int) : super(context, attributes, defStyle) {
+ LayoutInflater.from(context).inflate(R.layout.view_audio_player, this)
+ }
+
+ fun onInit() {
+ config = AppUtil.getSavedConfig(context)
+ btn_one_and_half_speed.text = Html.fromHtml(context.getString(R.string.one_and_half_speed))
+ btn_half_speed.text = Html.fromHtml(context.getString(R.string.half_speed_text))
+ btn_text_undeline_style.text = Html.fromHtml(context.getString(R.string.style_underline))
+
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
+ playback_speed_Layout.visibility = View.GONE
+ }
+ initColors()
+ initListeners()
+ }
+
+ fun setListeners(callback: MediaControllerCallback) {
+ this.callback = callback
+ }
+
+ private fun initColors() {
+ btn_half_speed.setTextColor(UiUtil.getColorList(context, config.themeColor, R.color.grey_color))
+ btn_one_and_half_speed.setTextColor(UiUtil.getColorList(context, config.themeColor, R.color.grey_color))
+ btn_twox_speed.setTextColor(UiUtil.getColorList(context, config.themeColor, R.color.grey_color))
+ btn_one_x_speed.setTextColor(UiUtil.getColorList(context, config.themeColor, R.color.grey_color))
+ btn_text_undeline_style.setTextColor(UiUtil.getColorList(context, config.themeColor, R.color.grey_color))
+ btn_backcolor_style.setTextColor(UiUtil.getColorList(context, R.color.white, R.color.grey_color))
+ btn_backcolor_style.setBackgroundDrawable(UiUtil.convertColorIntoStateDrawable(context, config.themeColor, android.R.color.transparent))
+ btn_text_color_style.setTextColor(UiUtil.getColorList(context, config.themeColor, R.color.grey_color))
+ UiUtil.setColorToImage(context, config.themeColor, play_button.drawable)
+ UiUtil.setColorToImage(context, config.themeColor, next_button.drawable)
+ UiUtil.setColorToImage(context, config.themeColor, prev_button.drawable)
+ }
+
+ private fun initListeners() {
+ shade.setOnClickListener { show() }
+ play_button.setOnClickListener {
+ callback.let {
+ if (isPlaying) {
+ callback.pause()
+ play_button.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.play_icon))
+ UiUtil.setColorToImage(context, config.themeColor, play_button.drawable)
+ } else {
+ callback.play()
+ play_button.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.pause_btn))
+ UiUtil.setColorToImage(context, config.themeColor, play_button.drawable)
+ }
+ isPlaying = !isPlaying
+ }
+ }
+ btn_half_speed.setOnClickListener {
+ toggleSpeedControlButtons(true, false, false, false)
+ EventBus.getDefault().post(MediaOverlaySpeedEvent(MediaOverlaySpeedEvent.Speed.HALF))
+ }
+
+ btn_one_x_speed.setOnClickListener {
+ toggleSpeedControlButtons(false, true, false, false)
+ EventBus.getDefault().post(MediaOverlaySpeedEvent(MediaOverlaySpeedEvent.Speed.ONE))
+ }
+ btn_one_and_half_speed.setOnClickListener {
+ toggleSpeedControlButtons(false, false, true, false)
+ EventBus.getDefault().post(MediaOverlaySpeedEvent(MediaOverlaySpeedEvent.Speed.ONE_HALF))
+ }
+ btn_twox_speed.setOnClickListener {
+ toggleSpeedControlButtons(false, false, false, true)
+ EventBus.getDefault().post(MediaOverlaySpeedEvent(MediaOverlaySpeedEvent.Speed.TWO))
+ }
+
+ btn_backcolor_style.setOnClickListener {
+ toggleTextStyle(true, false, false)
+ EventBus.getDefault().post(MediaOverlayHighlightStyleEvent(MediaOverlayHighlightStyleEvent.Style.DEFAULT))
+ }
+
+ btn_text_undeline_style.setOnClickListener {
+ toggleTextStyle(false, true, false)
+ EventBus.getDefault().post(MediaOverlayHighlightStyleEvent(MediaOverlayHighlightStyleEvent.Style.UNDERLINE))
+
+ }
+
+ btn_text_color_style.setOnClickListener {
+ toggleTextStyle(false, false, true)
+ EventBus.getDefault().post(MediaOverlayHighlightStyleEvent(MediaOverlayHighlightStyleEvent.Style.BACKGROUND))
+ }
+ }
+
+ private fun toggleTextStyle(backcolor: Boolean, underline: Boolean, textColor: Boolean) {
+ btn_backcolor_style.isSelected = backcolor
+ btn_text_undeline_style.isSelected = underline
+ btn_text_color_style.isSelected = textColor
+ }
+
+ private fun toggleSpeedControlButtons(half: Boolean, one: Boolean, oneHalf: Boolean, two: Boolean) {
+ btn_half_speed.isSelected = half
+ btn_one_x_speed.isSelected = one
+ btn_one_and_half_speed.isSelected = oneHalf
+ btn_twox_speed.isSelected = two
+ }
+
+ fun setPlayButtonDrawable() {
+ play_button.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.play_icon))
+ }
+
+ fun setNightMode() {
+ container.setBackgroundColor(ContextCompat.getColor(context, R.color.night))
+ }
+
+ private fun open() {
+ container.startAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_up))
+ container.visibility = View.VISIBLE
+ shade.visibility = View.VISIBLE
+ }
+
+ fun show() {
+ if (visible) open() else close()
+ visible = !visible
+ }
+
+ private fun close() {
+ container.startAnimation(AnimationUtils.loadAnimation(context, R.anim.slide_down))
+ container.visibility = View.GONE
+ shade.visibility = View.GONE
+ }
+}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 279429476..868b7fb98 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sat Jun 10 11:42:12 IST 2017
+#Wed May 09 16:00:44 IST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
diff --git a/sample/build.gradle b/sample/build.gradle
index 2637e3b94..3819aebd4 100644
--- a/sample/build.gradle
+++ b/sample/build.gradle
@@ -8,8 +8,8 @@ android {
javaMaxHeapSize "4G"
}
- compileSdkVersion 26
- buildToolsVersion "26.0.2"
+ compileSdkVersion 27
+ buildToolsVersion "27.0.3"
defaultConfig {
applicationId "com.folioreader.android.sample"
@@ -56,6 +56,6 @@ android {
}
dependencies {
- compile project(':folioreader')
- compile 'com.android.support:appcompat-v7:26.0.2'
+ implementation project(':folioreader')
+ implementation 'com.android.support:appcompat-v7:27.1.1'
}
diff --git a/webViewMarker/build.gradle b/webViewMarker/build.gradle
index 3d006221b..2ef699d06 100644
--- a/webViewMarker/build.gradle
+++ b/webViewMarker/build.gradle
@@ -25,8 +25,8 @@ ext {
}
android {
- compileSdkVersion 19
- buildToolsVersion '26.0.2'
+ compileSdkVersion 27
+ buildToolsVersion '27.0.3'
defaultConfig {
versionCode Integer.parseInt(project.VERSION_CODE)