diff --git a/app/build.gradle b/app/build.gradle index 9aecd601..abff027a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -13,8 +13,13 @@ android { applicationId "xyz.quaver.pupil" minSdkVersion 16 targetSdkVersion 29 +<<<<<<< HEAD versionCode 27 versionName "3.2-beta2" +======= + versionCode 26 + versionName "3.2-beta" +>>>>>>> origin/development testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" multiDexEnabled true vectorDrawables.useSupportLibrary = true @@ -26,7 +31,10 @@ android { } buildTypes.each { it.buildConfigField('boolean', 'PRERELEASE', 'true') +<<<<<<< HEAD it.buildConfigField('boolean', 'CENSOR', 'false') +======= +>>>>>>> origin/development } } kotlinOptions { @@ -56,9 +64,15 @@ dependencies { implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.0.0' implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.android.support:multidex:1.0.3' +<<<<<<< HEAD implementation 'com.google.android.material:material:1.1.0-alpha09' implementation 'com.google.firebase:firebase-core:17.1.0' implementation 'com.google.firebase:firebase-perf:19.0.0' +======= + implementation 'com.google.android.material:material:1.1.0-alpha08' + implementation 'com.google.firebase:firebase-core:17.0.1' + implementation 'com.google.firebase:firebase-perf:18.0.1' +>>>>>>> origin/development implementation 'com.crashlytics.sdk.android:crashlytics:2.10.1' implementation 'com.github.arimorty:floatingsearchview:2.1.1' implementation 'com.github.clans:fab:1.6.4' @@ -67,7 +81,10 @@ dependencies { transitive = false } implementation 'com.andrognito.patternlockview:patternlockview:1.0.0' +<<<<<<< HEAD implementation 'com.jsibbold:zoomage:1.3.0' +======= +>>>>>>> origin/development implementation "ru.noties.markwon:core:${markwonVersion}" kapt 'com.github.bumptech.glide:compiler:4.9.0' testImplementation 'junit:junit:4.12' diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt index 415913db..c851e19d 100644 --- a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt +++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt @@ -41,7 +41,10 @@ import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonConfiguration import xyz.quaver.hitomi.GalleryBlock import xyz.quaver.hitomi.Reader +<<<<<<< HEAD import xyz.quaver.pupil.BuildConfig +======= +>>>>>>> origin/development import xyz.quaver.pupil.Pupil import xyz.quaver.pupil.R import xyz.quaver.pupil.types.Tag @@ -87,10 +90,13 @@ class GalleryBlockAdapter(private val glide: RequestManager, private val galleri .skipMemoryCache(true) .diskCacheStrategy(DiskCacheStrategy.NONE) .error(R.drawable.image_broken_variant) +<<<<<<< HEAD .apply { if (BuildConfig.CENSOR) override(5, 8) } +======= +>>>>>>> origin/development .into(galleryblock_thumbnail) } diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/ReaderAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/ReaderAdapter.kt index 9b4781a8..de01b381 100644 --- a/app/src/main/java/xyz/quaver/pupil/adapters/ReaderAdapter.kt +++ b/app/src/main/java/xyz/quaver/pupil/adapters/ReaderAdapter.kt @@ -18,19 +18,30 @@ package xyz.quaver.pupil.adapters +<<<<<<< HEAD import android.graphics.drawable.Drawable +======= +>>>>>>> origin/development import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.RequestManager +<<<<<<< HEAD import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.engine.GlideException import com.bumptech.glide.request.RequestListener import com.bumptech.glide.request.target.Target import xyz.quaver.pupil.BuildConfig +======= +import com.bumptech.glide.load.engine.DiskCacheStrategy +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +>>>>>>> origin/development import xyz.quaver.pupil.R import xyz.quaver.pupil.util.getCachedGallery import java.io.File @@ -39,8 +50,14 @@ class ReaderAdapter(private val glide: RequestManager, private val galleryID: Int, private val images: List) : RecyclerView.Adapter() { +<<<<<<< HEAD var isFullScreen = false private var prev : Drawable? = null +======= +class ReaderAdapter(private val glide: RequestManager, private val images: List) : RecyclerView.Adapter() { + + var isFullScreen = false +>>>>>>> origin/development class ViewHolder(val view: View) : RecyclerView.ViewHolder(view) @@ -53,6 +70,7 @@ class ReaderAdapter(private val glide: RequestManager, } override fun onBindViewHolder(holder: ViewHolder, position: Int) { +<<<<<<< HEAD holder.view as ImageView glide @@ -88,6 +106,21 @@ class ReaderAdapter(private val glide: RequestManager, } }) .into(holder.view) +======= + runBlocking { + CoroutineScope(Dispatchers.Default).launch { + val image = glide + .load(images[position]) + .diskCacheStrategy(DiskCacheStrategy.NONE) + .skipMemoryCache(true) + .error(R.drawable.image_broken_variant) + .submit() + .get() + + (holder.view as ImageView).setImageDrawable(image) + }.join() + } +>>>>>>> origin/development } override fun getItemCount() = images.size diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/ThumbnailAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/ThumbnailAdapter.kt index db85c79d..96a02b7d 100644 --- a/app/src/main/java/xyz/quaver/pupil/adapters/ThumbnailAdapter.kt +++ b/app/src/main/java/xyz/quaver/pupil/adapters/ThumbnailAdapter.kt @@ -22,7 +22,10 @@ import android.view.ViewGroup import android.widget.ImageView import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.RequestManager +<<<<<<< HEAD import xyz.quaver.pupil.BuildConfig +======= +>>>>>>> origin/development class ThumbnailAdapter(private val glide: RequestManager, private val thumbnails: List) : RecyclerView.Adapter() { @@ -35,10 +38,13 @@ class ThumbnailAdapter(private val glide: RequestManager, private val thumbnails override fun onBindViewHolder(holder: ViewHolder, position: Int) { glide .load(thumbnails[position]) +<<<<<<< HEAD .apply { if (BuildConfig.CENSOR) override(5, 8) } +======= +>>>>>>> origin/development .into(holder.view) } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt index 3d8e6795..04ca0be6 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt @@ -46,7 +46,14 @@ import kotlinx.serialization.ImplicitReflectionSerializer import xyz.quaver.pupil.Pupil import xyz.quaver.pupil.R import xyz.quaver.pupil.adapters.ReaderAdapter +<<<<<<< HEAD:app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt import xyz.quaver.pupil.util.* +======= +import xyz.quaver.pupil.util.GalleryDownloader +import xyz.quaver.pupil.util.Histories +import xyz.quaver.pupil.util.ItemClickSupport +import xyz.quaver.pupil.util.hasPermission +>>>>>>> origin/development:app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt class ReaderActivity : AppCompatActivity() { @@ -218,6 +225,7 @@ class ReaderActivity : AppCompatActivity() { } } +<<<<<<< HEAD:app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean { //currentPage is 1-based return when(keyCode) { @@ -235,6 +243,8 @@ class ReaderActivity : AppCompatActivity() { } } +======= +>>>>>>> origin/development:app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt private fun initDownloader() { var d: GalleryDownloader? = GalleryDownloader.get(galleryID) @@ -277,12 +287,16 @@ class ReaderActivity : AppCompatActivity() { } } onErrorHandler = { +<<<<<<< HEAD:app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt Snackbar .make(reader_layout, it.message ?: it.javaClass.name, Snackbar.LENGTH_INDEFINITE) .setAction(R.string.reader_help) { view -> startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.error_help)))) } .show() +======= + Snackbar.make(reader_layout, it.message ?: it.javaClass.name, Snackbar.LENGTH_INDEFINITE).show() +>>>>>>> origin/development:app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt downloader.download = false } onCompleteHandler = { @@ -330,7 +344,11 @@ class ReaderActivity : AppCompatActivity() { private fun initView() { with(reader_recyclerview) { +<<<<<<< HEAD:app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt adapter = ReaderAdapter(Glide.with(this@ReaderActivity), galleryID, images) +======= + adapter = ReaderAdapter(Glide.with(this@ReaderActivity), images) +>>>>>>> origin/development:app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt addOnScrollListener(object: RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { @@ -360,7 +378,11 @@ class ReaderActivity : AppCompatActivity() { scrollMode(false) fullscreen(true) } else { +<<<<<<< HEAD:app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt (reader_recyclerview.layoutManager as LinearLayoutManager?)?.scrollToPosition(currentPage) //Moves to next page because currentPage is 1-based indexing +======= + (reader_recyclerview.layoutManager as LinearLayoutManager?)?.scrollToPosition(currentPage) +>>>>>>> origin/development:app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt } } } @@ -368,6 +390,7 @@ class ReaderActivity : AppCompatActivity() { with(reader_fab_download) { setImageResource(R.drawable.ic_download) setOnClickListener { +<<<<<<< HEAD:app/src/main/java/xyz/quaver/pupil/ui/ReaderActivity.kt if (!this@ReaderActivity.hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { AlertDialog.Builder(this@ReaderActivity).apply { @@ -381,6 +404,21 @@ class ReaderActivity : AppCompatActivity() { downloader.download = !downloader.download +======= + + if (!this@ReaderActivity.hasPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)) { + AlertDialog.Builder(this@ReaderActivity).apply { + setTitle(R.string.warning) + setMessage(R.string.update_no_permission) + setPositiveButton(android.R.string.ok) { _, _ -> } + }.show() + + return@setOnClickListener + } + + downloader.download = !downloader.download + +>>>>>>> origin/development:app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt if (!downloader.download) downloader.clearNotification() } diff --git a/app/src/main/java/xyz/quaver/pupil/ui/SettingsActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/SettingsActivity.kt index f1dff826..0e28613b 100644 --- a/app/src/main/java/xyz/quaver/pupil/ui/SettingsActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ui/SettingsActivity.kt @@ -43,7 +43,6 @@ import xyz.quaver.pupil.util.Lock import xyz.quaver.pupil.util.LockManager import xyz.quaver.pupil.util.getDownloadDirectory import java.io.File -import java.util.* class SettingsActivity : AppCompatActivity() { @@ -279,7 +278,7 @@ class SettingsActivity : AppCompatActivity() { s ?: return if (s.any { it.isUpperCase() }) - s.replace(0, s.length, s.toString().toLowerCase(Locale.getDefault())) + s.replace(0, s.length, s.toString().toLowerCase()) } }) } @@ -353,38 +352,6 @@ class SettingsActivity : AppCompatActivity() { true } } - - with(findPreference("nomedia")) { - this!! - - onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue -> - val directories = listOf( - context.cacheDir, - getDownloadDirectory(context) - ) - - when (newValue as Boolean) { - true -> { - directories.forEach { - it ?: return@forEach - - if (it.exists()) - File(it, ".nomedia").createNewFile() - } - } - false -> { - directories.forEach { - it ?: return@forEach - - if (it.exists()) - File(it, ".nomedia").delete() - } - } - } - - true - } - } } } diff --git a/app/src/main/java/xyz/quaver/pupil/util/GalleryDownloader.kt b/app/src/main/java/xyz/quaver/pupil/util/GalleryDownloader.kt index 38725a09..6459cadc 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/GalleryDownloader.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/GalleryDownloader.kt @@ -63,15 +63,24 @@ class GalleryDownloader( field = true notificationManager.notify(galleryID, notificationBuilder.build()) +<<<<<<< HEAD if (reader?.isActive == false && downloadJob?.isActive != true) { val data = File(getDownloadDirectory(this), galleryID.toString()) val cache = File(cacheDir, "imageCache/$galleryID") +======= + val data = getCachedGallery(this, galleryID) + val cache = File(cacheDir, "imageCache/$galleryID") +>>>>>>> origin/development if (File(cache, "images").exists() && !data.exists()) { cache.copyRecursively(data, true) cache.deleteRecursively() } +<<<<<<< HEAD +======= + if (reader?.isActive == false && downloadJob?.isActive != true) +>>>>>>> origin/development field = false } @@ -170,8 +179,11 @@ class GalleryDownloader( downloadJob = CoroutineScope(Dispatchers.Default).launch { val reader = reader!!.await() +<<<<<<< HEAD notificationBuilder.setContentTitle(reader.title) +======= +>>>>>>> origin/development if (reader.readerItems.isEmpty()) { onErrorHandler?.invoke(IOException(getString(R.string.unable_to_connect))) return@launch @@ -320,6 +332,14 @@ class GalleryDownloader( setProgress(0, 0, true) priority = NotificationCompat.PRIORITY_LOW } +<<<<<<< HEAD +======= + + CoroutineScope(Dispatchers.Default).launch { + while (reader == null) ; + notificationBuilder.setContentTitle(reader.await().title) + } +>>>>>>> origin/development } } \ No newline at end of file diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index f9356dd4..c4b5b587 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -70,7 +70,11 @@ アプリロック アップロックの種類 バージョン +<<<<<<< HEAD 生体認識 +======= + 生体認識 +>>>>>>> origin/development ロック確認のためもう一回入力してください。 有効 指紋 @@ -99,7 +103,10 @@ タグ サムネイル おすすめ +<<<<<<< HEAD イメージを隠す イメージをギャラリーから見えなくする ヘルプ +======= +>>>>>>> origin/development \ No newline at end of file diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 6b01b3ee..9418e1c7 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -70,7 +70,11 @@ 앱 잠금 앱 잠금 종류 앱 버전 +<<<<<<< HEAD 생체 인식 +======= + 생체 인식 +>>>>>>> origin/development 잠금 확인을 위해 한번 더 입력해주세요 사용 중 지문 @@ -99,7 +103,10 @@ 태그 관련 갤러리 미리보기 +<<<<<<< HEAD 이미지 숨기기 갤러리에서 이미지 검색이 되지 않도록 합니다 도움말 +======= +>>>>>>> origin/development \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 40eb0bf9..d13f6044 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -127,14 +127,21 @@ Enable security mode to make the screen invisible on recent app window Dark mode Protect yourself against light attacks! +<<<<<<< HEAD Hide image from gallery Hides image from gallery +======= +>>>>>>> origin/development None Pattern PIN Password +<<<<<<< HEAD Biometrics +======= + Biomatrics +>>>>>>> origin/development Fingerprint Enabled Input same lock once more to confirm Lock diff --git a/app/src/main/res/xml/lock_preferences.xml b/app/src/main/res/xml/lock_preferences.xml index 3c3baab3..9498db02 100644 --- a/app/src/main/res/xml/lock_preferences.xml +++ b/app/src/main/res/xml/lock_preferences.xml @@ -15,7 +15,11 @@ app:key="lock_password"/> +======= + app:title="@string/settings_lock_biomatrics"> +>>>>>>> origin/development +<<<<<<< HEAD +======= +>>>>>>> origin/development diff --git a/build.gradle b/build.gradle index 5fcfbacf..8d14c40a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,11 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { +<<<<<<< HEAD ext.kotlin_version = '1.3.50' +======= + ext.kotlin_version = '1.3.41' +>>>>>>> origin/development repositories { google() jcenter() @@ -10,6 +14,7 @@ buildscript { } } dependencies { +<<<<<<< HEAD classpath 'com.android.tools.build:gradle:3.5.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" @@ -19,6 +24,17 @@ buildscript { // in the individual module build.gradle files classpath 'io.fabric.tools:gradle:1.29.0' classpath 'com.google.firebase:perf-plugin:1.3.1' +======= + classpath 'com.android.tools.build:gradle:3.4.2' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" + classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" + classpath 'com.google.gms:google-services:4.3.0' + // NOTE: Do not place your application dependencies here; they belong + // in the individual module build.gradle files + classpath 'io.fabric.tools:gradle:1.29.0' + classpath 'com.google.firebase:perf-plugin:1.3.0' +>>>>>>> origin/development } }