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)