Skip to content

Commit

Permalink
Merge pull request #289 from chillibits/dev
Browse files Browse the repository at this point in the history
Release of version 2.8.0
  • Loading branch information
marcauberer committed Dec 29, 2022
2 parents 1daeab9 + ca73654 commit 5a3eb6a
Show file tree
Hide file tree
Showing 28 changed files with 313 additions and 321 deletions.
30 changes: 17 additions & 13 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,20 @@
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
id 'com.mikepenz.aboutlibraries.plugin'
}

android {
compileSdkVersion 32
buildToolsVersion "32.0.0"
compileSdkVersion 33
buildToolsVersion "33.0.1"
defaultConfig {
applicationId "com.mrgames13.jimdo.colorconverter"
minSdkVersion 21
targetSdkVersion 32
versionCode 2704
versionName "2.7.4"
targetSdkVersion 33
versionCode 2800
versionName "2.8.0"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand All @@ -42,26 +41,31 @@ android {
pickFirsts += ['**/META-INFMANIFEST.MF', 'META-INF/library_release.kotlin_module']
}
}
buildFeatures {
viewBinding true
}
namespace 'com.mrgames13.jimdo.colorconverter'
}

dependencies {
// base dependencies
implementation 'androidx.appcompat:appcompat:1.5.0'
implementation 'androidx.core:core-ktx:1.8.0'
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.google.android.instantapps:instantapps:1.1.0'
implementation 'com.google.android.play:core:1.10.3'
implementation 'androidx.palette:palette-ktx:1.0.0'
implementation 'com.google.android.material:material:1.6.1'
implementation 'androidx.fragment:fragment-ktx:1.5.2'
implementation 'androidx.exifinterface:exifinterface:1.3.5'
implementation 'com.google.android.material:material:1.7.0'
implementation 'androidx.fragment:fragment-ktx:1.5.5'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1'
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'

// External dependencies
implementation 'net.margaritov.preference.colorpicker.ColorPickerPreference:ColorPickerPreference:1.0.0'
implementation 'com.fxn769:pix:1.5.6'
implementation 'com.github.skydoves:colorpickerview:2.2.4'
implementation 'com.mikepenz:iconics-core:5.3.4'
implementation 'com.mikepenz:iconics-core:5.4.0'
implementation 'com.mikepenz:material-design-iconic-typeface:2.2.0.8-kotlin@aar'
implementation 'com.github.javiersantos:MaterialStyledDialogs:3.0.2'
implementation 'com.github.numerative:Five-Star-Me:2.1.2'
Expand All @@ -81,8 +85,8 @@ dependencies {

// dependencies for testing
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.4'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.0'
}

// Task for downloading all translation files
Expand Down
1 change: 0 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
xmlns:tools="http://schemas.android.com/tools"
package="com.mrgames13.jimdo.colorconverter"
tools:ignore="LockedOrientationActivity"
android:installLocation="auto">

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import android.os.Build
import android.os.Bundle
import android.view.*
import androidx.activity.viewModels
import androidx.annotation.Nullable
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.ContextCompat
Expand All @@ -32,8 +31,8 @@ import com.chillibits.colorconverter.ui.dialog.showPaletteImportExportDialog
import com.chillibits.colorconverter.ui.dialog.showRenameDialog
import com.chillibits.colorconverter.viewmodel.ColorSelectionViewModel
import com.mrgames13.jimdo.colorconverter.R
import com.mrgames13.jimdo.colorconverter.databinding.ActivityColorSelectionBinding
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.android.synthetic.main.activity_color_selection.*
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
Expand All @@ -49,30 +48,32 @@ class ColorSelectionActivity : AppCompatActivity(), ColorsAdapter.ColorSelection
@Inject lateinit var cnt: ColorNameTools

// Variables as objects
private lateinit var binding: ActivityColorSelectionBinding
private val vm by viewModels<ColorSelectionViewModel>()
private lateinit var adapter: ColorsAdapter

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_color_selection)
binding = ActivityColorSelectionBinding.inflate(layoutInflater)
setContentView(binding.root)
applyWindowInsets()

// Initialize toolbar
toolbar.layoutTransition = LayoutTransition()
toolbar.setTitle(R.string.saved_colors)
setSupportActionBar(toolbar)
binding.toolbar.layoutTransition = LayoutTransition()
binding.toolbar.setTitle(R.string.saved_colors)
setSupportActionBar(binding.toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)

// Initialize RecyclerView
adapter = ColorsAdapter(this, this, ct, cnt)
savedColors.layoutManager = LinearLayoutManager(this)
savedColors.adapter = adapter
adapter = ColorsAdapter(this, this, ct)
binding.savedColors.layoutManager = LinearLayoutManager(this)
binding.savedColors.adapter = adapter

// Setup data observer
vm.colors.observe(this) { data ->
adapter.updateData(data.map { it.toObj() })
noItems.visibility = if (data.isNotEmpty()) View.GONE else View.VISIBLE
loading.visibility = View.GONE
binding.noItems.visibility = if (data.isNotEmpty()) View.GONE else View.VISIBLE
binding.loading.visibility = View.GONE
}
}

Expand Down Expand Up @@ -104,8 +105,8 @@ class ColorSelectionActivity : AppCompatActivity(), ColorsAdapter.ColorSelection
Build.VERSION.SDK_INT >= Build.VERSION_CODES.R -> {
decorView.setOnApplyWindowInsetsListener { _, insets ->
val systemInsets = insets.getInsets(WindowInsets.Type.systemBars())
toolbar?.setPadding(0, systemInsets.top, 0, 0)
savedColors.setPadding(0, 0, 0, systemInsets.bottom)
binding.toolbar.setPadding(0, systemInsets.top, 0, 0)
binding.savedColors.setPadding(0, 0, 0, systemInsets.bottom)
insets
}
setDecorFitsSystemWindows(false)
Expand All @@ -114,8 +115,8 @@ class ColorSelectionActivity : AppCompatActivity(), ColorsAdapter.ColorSelection
decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
decorView.setOnApplyWindowInsetsListener { _, insets ->
toolbar?.setPadding(0, insets.systemWindowInsetTop, 0, 0)
savedColors.setPadding(0, 0, 0, insets.systemWindowInsetBottom)
binding.toolbar.setPadding(0, insets.systemWindowInsetTop, 0, 0)
binding.savedColors.setPadding(0, 0, 0, insets.systemWindowInsetBottom)
insets
}
}
Expand Down Expand Up @@ -162,8 +163,8 @@ class ColorSelectionActivity : AppCompatActivity(), ColorsAdapter.ColorSelection
CoroutineScope(Dispatchers.Main).launch {
changeSubtitle(null)
invalidateOptionsMenu()
reveal.setBackgroundResource(R.color.colorPrimary)
revealBackground.setBackgroundResource(R.color.colorPrimary)
binding.reveal.setBackgroundResource(R.color.colorPrimary)
binding.revealBackground.setBackgroundResource(R.color.colorPrimary)
}
}
}
Expand All @@ -173,25 +174,25 @@ class ColorSelectionActivity : AppCompatActivity(), ColorsAdapter.ColorSelection

private fun animateAppAndStatusBar(toColor: Int) {
val animator = ViewAnimationUtils.createCircularReveal(
reveal,
toolbar.width / 2,
toolbar.height / 2,
binding.reveal,
binding.toolbar.width / 2,
binding.toolbar.height / 2,
0f,
toolbar.width / 2.0f + 50
binding.toolbar.width / 2.0f + 50
)
animator.addListener(object : AnimatorListenerAdapter() {
override fun onAnimationStart(animation: Animator) {
reveal.setBackgroundColor(toColor)
binding.reveal.setBackgroundColor(toColor)
}

override fun onAnimationEnd(animation: Animator) {
revealBackground.setBackgroundColor(toColor)
binding.revealBackground.setBackgroundColor(toColor)
}
})

animator.duration = 480
animator.start()
reveal.visibility = View.VISIBLE
binding.reveal.visibility = View.VISIBLE
}

override fun onColorSelected(color: Color) {
Expand All @@ -201,12 +202,12 @@ class ColorSelectionActivity : AppCompatActivity(), ColorsAdapter.ColorSelection
animateAppAndStatusBar(color.color)
}

private fun changeSubtitle(@Nullable subtitle: String?) {
private fun changeSubtitle(subtitle: String?) {
if (subtitle == null) {
toolbar.layoutTransition = null
binding.toolbar.layoutTransition = null
supportActionBar?.subtitle = null
} else {
toolbar.layoutTransition = LayoutTransition()
binding.toolbar.layoutTransition = LayoutTransition()
supportActionBar?.subtitle = subtitle
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import android.graphics.BitmapFactory
import android.graphics.Matrix
import android.graphics.drawable.BitmapDrawable
import android.media.AudioManager
import android.media.ExifInterface
import androidx.exifinterface.media.ExifInterface
import android.net.Uri
import android.os.Build
import android.os.Bundle
Expand All @@ -37,10 +37,9 @@ import com.fxn.pix.Options
import com.fxn.pix.Pix
import com.fxn.utility.PermUtil
import com.mrgames13.jimdo.colorconverter.R
import com.mrgames13.jimdo.colorconverter.databinding.ActivityImageBinding
import com.skydoves.colorpickerview.listeners.ColorListener
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.android.synthetic.main.activity_image.*
import kotlinx.android.synthetic.main.toolbar.*
import java.io.IOException
import javax.inject.Inject

Expand All @@ -52,38 +51,40 @@ class ImageActivity : AppCompatActivity() {
@Inject lateinit var st: StorageTools

// Variables as objects
private lateinit var binding: ActivityImageBinding
private val vm by viewModels<ImageViewModel>()
private var speakItem: MenuItem? = null

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_image)
binding = ActivityImageBinding.inflate(layoutInflater);
setContentView(binding.root)

// Apply window insets
applyWindowInsets()

// Initialize toolbar
toolbar.setTitle(R.string.pick_color_from_image)
setSupportActionBar(toolbar)
binding.toolbar.setTitle(R.string.pick_color_from_image)
setSupportActionBar(binding.toolbar)
supportActionBar?.setDisplayHomeAsUpEnabled(true)

// Initialize other layout components
image.colorListener = ColorListener { color, _ ->
binding.image.colorListener = ColorListener { color, _ ->
vm.valueSelectedColor = color
selectedColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(color, BlendModeCompat.SRC_IN)
binding.selectedColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(color, BlendModeCompat.SRC_IN)
if(speakItem != null && speakItem!!.isChecked) speakColor()
}
image.flagView = DetailedFlagView(this, R.layout.flag_layout).apply {
binding.image.flagView = DetailedFlagView(this, R.layout.flag_layout).apply {
isFlipAble = false
}

selectedColor.setOnClickListener { finishWithResult(vm.valueSelectedColor) }
vibrantColor.setOnClickListener { finishWithResult(vm.valueVibrantColor) }
lightVibrantColor.setOnClickListener { finishWithResult(vm.valueVibrantColorLight) }
darkVibrantColor.setOnClickListener { finishWithResult(vm.valueVibrantColorDark) }
mutedColor.setOnClickListener { finishWithResult(vm.valueMutedColor) }
lightMutedColor.setOnClickListener { finishWithResult(vm.valueMutedColorLight) }
darkMutedColor.setOnClickListener { finishWithResult(vm.valueMutedColorDark) }
binding.selectedColor.setOnClickListener { finishWithResult(vm.valueSelectedColor) }
binding.vibrantColor.setOnClickListener { finishWithResult(vm.valueVibrantColor) }
binding.lightVibrantColor.setOnClickListener { finishWithResult(vm.valueVibrantColorLight) }
binding.darkVibrantColor.setOnClickListener { finishWithResult(vm.valueVibrantColorDark) }
binding.mutedColor.setOnClickListener { finishWithResult(vm.valueMutedColor) }
binding.lightMutedColor.setOnClickListener { finishWithResult(vm.valueMutedColorLight) }
binding.darkMutedColor.setOnClickListener { finishWithResult(vm.valueMutedColorDark) }

if(intent.hasExtra(Constants.EXTRA_IMAGE_URI)) {
// Load default image
Expand Down Expand Up @@ -139,8 +140,8 @@ class ImageActivity : AppCompatActivity() {
decorView.setOnApplyWindowInsetsListener { _, insets ->
val systemInsets = insets.getInsets(WindowInsets.Type.systemBars())
if(systemInsets.top > 0) {
toolbar?.setPadding(0, systemInsets.top, 0, 0)
colorButtonContainer.setPadding(dpToPx(3), dpToPx(3), dpToPx(3), systemInsets.bottom + dpToPx(3))
binding.toolbar.setPadding(0, systemInsets.top, 0, 0)
binding.colorButtonContainer.setPadding(dpToPx(3), dpToPx(3), dpToPx(3), systemInsets.bottom + dpToPx(3))
}
insets
}
Expand All @@ -150,8 +151,8 @@ class ImageActivity : AppCompatActivity() {
decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
decorView.setOnApplyWindowInsetsListener { _, insets ->
toolbar?.setPadding(0, insets.systemWindowInsetTop, 0, 0)
colorButtonContainer.setPadding(dpToPx(3), dpToPx(3), dpToPx(3), insets.systemWindowInsetBottom + dpToPx(3))
binding.toolbar.setPadding(0, insets.systemWindowInsetTop, 0, 0)
binding.colorButtonContainer.setPadding(dpToPx(3), dpToPx(3), dpToPx(3), insets.systemWindowInsetBottom + dpToPx(3))
insets
}
}
Expand All @@ -176,14 +177,14 @@ class ImageActivity : AppCompatActivity() {

private fun applyImage(bitmap: Bitmap) {
vm.computeVibrantColors(bitmap)
image.setPaletteDrawable(BitmapDrawable(resources, bitmap))
vibrantColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueVibrantColor, BlendModeCompat.SRC_IN)
lightVibrantColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueVibrantColorLight, BlendModeCompat.SRC_IN)
darkVibrantColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueVibrantColorDark, BlendModeCompat.SRC_IN)
mutedColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueMutedColor, BlendModeCompat.SRC_IN)
lightMutedColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueMutedColorLight, BlendModeCompat.SRC_IN)
darkMutedColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueMutedColorDark, BlendModeCompat.SRC_IN)
image.visibility = View.VISIBLE
binding.image.setPaletteDrawable(BitmapDrawable(resources, bitmap))
binding.vibrantColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueVibrantColor, BlendModeCompat.SRC_IN)
binding.lightVibrantColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueVibrantColorLight, BlendModeCompat.SRC_IN)
binding.darkVibrantColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueVibrantColorDark, BlendModeCompat.SRC_IN)
binding.mutedColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueMutedColor, BlendModeCompat.SRC_IN)
binding.lightMutedColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueMutedColorLight, BlendModeCompat.SRC_IN)
binding.darkMutedColor.background.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(vm.valueMutedColorDark, BlendModeCompat.SRC_IN)
binding.image.visibility = View.VISIBLE
}

override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
Expand Down

0 comments on commit 5a3eb6a

Please sign in to comment.