Skip to content

Commit

Permalink
Merge pull request #12 from creativedrewy/ui-upgrade
Browse files Browse the repository at this point in the history
UI Upgrade
  • Loading branch information
creativedrewy authored Oct 23, 2020
2 parents 8bc799d + 30584e2 commit 5a6be0e
Show file tree
Hide file tree
Showing 12 changed files with 252 additions and 127 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
*.sublime-workspace
/.gradle
local.properties
/build

# IDE - VSCode
.vscode/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ class EncryptDecryptFragment : Fragment() {
viewModel.viewState.observe(this, Observer { state ->
when (state) {
is DataProcessed -> {
key_input_textview.setText(state.sourceKey)
data_input_textview.setText(state.sourceData)
operation_result_textview.setText(state.processingResult)
key_input_textview.editText?.setText(state.sourceKey)
data_input_textview.editText?.setText(state.sourceData)
operation_result_textview.editText?.setText(state.processingResult)
}
is ErrorState -> {
Snackbar.make(main, state.message, Snackbar.LENGTH_SHORT).show()
Expand All @@ -65,13 +65,20 @@ class EncryptDecryptFragment : Fragment() {

encrypt_button.setOnClickListener {
validateForm {
viewModel.encodeData(key_input_textview.text.toString(), data_input_textview.text.toString())
viewModel.encodeData(key_input_textview.editText?.text.toString(), data_input_textview.editText?.text.toString())
}
}

decrypt_button.setOnClickListener {
validateForm {
viewModel.decodeData(key_input_textview.text.toString(), data_input_textview.text.toString())
viewModel.decodeData(key_input_textview.editText?.text.toString(), data_input_textview.editText?.text.toString())
}
}

operation_result_textview.setEndIconOnClickListener {
if (operation_result_textview.editText?.text?.isNotEmpty() == true) {
viewModel.copyResultToClipboard(operation_result_textview.editText?.text?.toString() ?: "")
Snackbar.make(main, "Copied result to clipboard", Snackbar.LENGTH_SHORT).show()
}
}

Expand All @@ -95,7 +102,8 @@ class EncryptDecryptFragment : Fragment() {
}

private fun validateForm(onValidated: () -> Unit) {
if (key_input_textview.text.isNotEmpty() && data_input_textview.text.isNotEmpty()) {
if (key_input_textview.editText?.text?.isNotEmpty() == true &&
data_input_textview.editText?.text?.isNotEmpty() == true) {
onValidated()
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.creativedrewy.protectocrypto.injection

import android.content.ClipboardManager
import android.content.Context
import android.content.SharedPreferences
import androidx.preference.PreferenceManager
Expand All @@ -20,4 +21,9 @@ class ProtectoCryptoModule {
return PreferenceManager.getDefaultSharedPreferences(context)
}

@Provides
@Singleton
fun provideClipboardManager(@ApplicationContext context: Context): ClipboardManager {
return context.getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.creativedrewy.protectocrypto.viewmodel

import android.content.ClipData
import android.content.ClipboardManager
import android.content.Intent
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
Expand All @@ -13,9 +15,14 @@ import javax.inject.Inject

class EncryptDecryptViewModel @Inject constructor(
private val textEncryptionUseCase: TextEncryptDecryptUseCase,
private val incomingDataUseCase: IncomingDataUseCase
private val incomingDataUseCase: IncomingDataUseCase,
private val clipboardManager: ClipboardManager
) : ViewModel() {

companion object {
const val CLIP_LABEL = "ProtectoCrypto"
}

val viewState: MutableLiveData<ViewState> by lazy {
MutableLiveData<ViewState>(DataProcessed())
}
Expand Down Expand Up @@ -60,6 +67,11 @@ class EncryptDecryptViewModel @Inject constructor(
}
}

fun copyResultToClipboard(result: String) {
val clipData = ClipData.newPlainText(CLIP_LABEL, result)
clipboardManager.setPrimaryClip(clipData)
}

fun clearCacheIfNeeded() {
(viewState.value as? DataProcessed)?.let {
if (it.sourceData.isNotEmpty() &&
Expand All @@ -72,10 +84,11 @@ class EncryptDecryptViewModel @Inject constructor(
}

/**
* TODO: Look into clearing the clipboard as well
* Clear the form, cached values and even anything we might have pasted into the clipboard
*/
fun clearEverything() {
incomingDataUseCase.clearCachedKey()
clipboardManager.setPrimaryClip(ClipData.newPlainText(CLIP_LABEL, " "))

viewState.postValue(DataProcessed())
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.creativedrewy.protectocrypto.viewmodel

import android.content.ClipboardManager
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.creativedrewy.dataencryption.TextEncryptDecryptUseCase
Expand All @@ -8,14 +9,16 @@ import javax.inject.Inject

class EncryptDecryptViewModelFactory @Inject constructor(
private val textEncryptDecryptUseCase: TextEncryptDecryptUseCase,
private val incomingDataUseCase: IncomingDataUseCase
private val incomingDataUseCase: IncomingDataUseCase,
private val clipboardManager: ClipboardManager
) : ViewModelProvider.Factory {

override fun <T : ViewModel?> create(modelClass: Class<T>): T {
return if (modelClass.isAssignableFrom(EncryptDecryptViewModel::class.java)) {
EncryptDecryptViewModel(
textEncryptDecryptUseCase,
incomingDataUseCase
incomingDataUseCase,
clipboardManager
) as T
} else {
throw IllegalArgumentException("ViewModel Not Found")
Expand Down
10 changes: 10 additions & 0 deletions app/src/main/res/drawable/ic_baseline_content_copy_24.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM19,5L8,5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,21L8,21L8,7h11v14z"/>
</vector>
10 changes: 10 additions & 0 deletions app/src/main/res/drawable/ic_baseline_key_24.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M12.65,10C11.83,7.67 9.61,6 7,6c-3.31,0 -6,2.69 -6,6s2.69,6 6,6c2.61,0 4.83,-1.67 5.65,-4H17v4h4v-4h2v-4H12.65zM7,14c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2z"/>
</vector>
10 changes: 10 additions & 0 deletions app/src/main/res/drawable/ic_baseline_text_snippet_24.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M20.41,8.41l-4.83,-4.83C15.21,3.21 14.7,3 14.17,3H5C3.9,3 3,3.9 3,5v14c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2V9.83C21,9.3 20.79,8.79 20.41,8.41zM7,7h7v2H7V7zM17,17H7v-2h10V17zM17,13H7v-2h10V13z"/>
</vector>
6 changes: 3 additions & 3 deletions app/src/main/res/drawable/top_border_gradient.xml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
<gradient
android:angle="45"
android:startColor="#4158D0"
android:angle="135"
android:startColor="@color/protecto_primary"
android:centerColor="#C850C0"
android:endColor="#FFCC70"/>
android:endColor="#FFCC70" />
</shape>
Loading

0 comments on commit 5a6be0e

Please sign in to comment.