Skip to content

Commit 5ffaf30

Browse files
authored
Merge pull request #3 from Ladsers/beta
23.10.0
2 parents 8ecbc17 + cbd9e22 commit 5ffaf30

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+1954
-429
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,6 @@ Here are some ways you can contribute:
4242
+ **stable** branch contains the source code from which release binaries are built.
4343

4444
### License
45-
The code in this repository is licensed under the [Apache License 2.0](https://github.com/Ladsers/Passtable-Android/blob/master/LICENSE.md). The third party resources used are listed in [NOTICE.md](https://github.com/Ladsers/Passtable-Android/blob/master/NOTICE.md).
45+
The code in this repository is licensed under the [Apache License 2.0](https://github.com/Ladsers/Passtable-Android/blob/developing/LICENSE.md). The third party resources used are listed in [NOTICE.md](https://github.com/Ladsers/Passtable-Android/blob/developing/NOTICE.md).
4646
</br></br>
4747
The Passtable logo can be used in applications or articles only when the Passtable project is explicitly mentioned.

app/build.gradle

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
plugins {
22
id 'com.android.application'
33
id 'kotlin-android'
4+
id 'org.jetbrains.kotlin.plugin.serialization'
45
}
56

67
android {
@@ -11,8 +12,8 @@ android {
1112
applicationId "com.ladsers.passtable.android"
1213
minSdkVersion 23
1314
targetSdkVersion 33
14-
versionCode 6
15-
versionName "22.11.0"
15+
versionCode 7
16+
versionName "23.10.0"
1617

1718
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
1819
}
@@ -36,6 +37,7 @@ android {
3637
kotlinOptions {
3738
jvmTarget = '1.8'
3839
}
40+
namespace 'com.ladsers.passtable.android'
3941
}
4042

4143
dependencies {
@@ -46,6 +48,7 @@ dependencies {
4648
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
4749
implementation "androidx.activity:activity-ktx:1.5.1"
4850
implementation 'androidx.fragment:fragment-ktx:1.5.2'
51+
implementation 'org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.0'
4952
implementation 'org.bouncycastle:bcpkix-jdk15on:1.65'
5053
implementation "androidx.biometric:biometric-ktx:1.2.0-alpha04"
5154
testImplementation 'junit:junit:4.+'

app/core

Submodule core updated from 7c01f78 to 644d232

app/src/main/AndroidManifest.xml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.ladsers.passtable.android">
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
43

54
<uses-permission android:name="android.permission.INTERNET" />
65
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
@@ -21,6 +20,9 @@
2120
<activity
2221
android:name=".activities.EditActivity"
2322
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|keyboard|navigation" />
23+
<activity
24+
android:name=".activities.PasswordGeneratorActivity"
25+
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|keyboard|navigation" />
2426
<activity
2527
android:name=".activities.TableActivity"
2628
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|keyboard|navigation"
@@ -49,4 +51,8 @@
4951
</activity>
5052
</application>
5153

54+
<queries>
55+
<package android:name="ru.vk.store"/>
56+
</queries>
57+
5258
</manifest>

app/src/main/java/com/ladsers/passtable/android/activities/EditActivity.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import androidx.core.widget.doBeforeTextChanged
1616
import com.google.android.material.button.MaterialButton
1717
import com.google.android.material.color.MaterialColors
1818
import com.ladsers.passtable.android.R
19+
import com.ladsers.passtable.android.components.PasswordGeneratorProcessor
1920
import com.ladsers.passtable.android.components.PasswordInput
2021
import com.ladsers.passtable.android.containers.Param
2122
import com.ladsers.passtable.android.containers.ParamStorage
@@ -44,6 +45,8 @@ class EditActivity : AppCompatActivity() {
4445
private var btConfirmClicked = false
4546
private val doNotMatchMsgWithDelay = Runnable { showError(2) }
4647

48+
private lateinit var passwordGeneratorProcessor: PasswordGeneratorProcessor
49+
4750
override fun onCreate(savedInstanceState: Bundle?) {
4851
super.onCreate(savedInstanceState)
4952
binding = ActivityEditBinding.inflate(layoutInflater)
@@ -54,6 +57,12 @@ class EditActivity : AppCompatActivity() {
5457
if (y == 0) binding.toolbar.root.elevation = 0f
5558
}
5659

60+
passwordGeneratorProcessor = PasswordGeneratorProcessor(activityResultRegistry, this)
61+
{ s -> s?.let {
62+
binding.etPassword.setText(s) }
63+
binding.etPassword.setSelection(binding.etPassword.text.length)
64+
}
65+
5766
originalTag = intent.getStringExtra("dataTag") ?: "0"
5867
originalNote = intent.getStringExtra("dataNote") ?: ""
5968
originalUsername = intent.getStringExtra("dataUsername") ?: ""
@@ -127,6 +136,7 @@ class EditActivity : AppCompatActivity() {
127136
)
128137
}
129138

139+
binding.btPasswordGenerator.setOnClickListener { passwordGeneratorProcessor.start() }
130140
binding.btSave.setOnClickListener { returnNewData() }
131141

132142
passwordsMatchCheck()

app/src/main/java/com/ladsers/passtable/android/activities/MainActivity.kt

Lines changed: 12 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,18 @@ import androidx.core.content.ContextCompat
1818
import androidx.core.net.toUri
1919
import androidx.recyclerview.widget.LinearLayoutManager
2020
import androidx.recyclerview.widget.RecyclerView
21-
import com.google.android.material.color.MaterialColors
22-
import com.ladsers.passtable.android.BuildConfig
2321
import com.ladsers.passtable.android.R
2422
import com.ladsers.passtable.android.adapters.RecentAdapter
23+
import com.ladsers.passtable.android.components.ClipboardManager
24+
import com.ladsers.passtable.android.components.PasswordGeneratorProcessor
2525
import com.ladsers.passtable.android.components.SnackbarManager
26+
import com.ladsers.passtable.android.components.menus.MainMenu
2627
import com.ladsers.passtable.android.containers.Param
2728
import com.ladsers.passtable.android.containers.ParamStorage
2829
import com.ladsers.passtable.android.containers.RecentFiles
2930
import com.ladsers.passtable.android.databinding.ActivityMainBinding
3031
import com.ladsers.passtable.android.dialogs.FileCreatorDlg
3132
import com.ladsers.passtable.android.dialogs.MessageDlg
32-
import com.ladsers.passtable.lib.Updater
3333

3434
class MainActivity : AppCompatActivity() {
3535
private lateinit var binding: ActivityMainBinding
@@ -43,6 +43,7 @@ class MainActivity : AppCompatActivity() {
4343
private lateinit var adapter: RecentAdapter
4444
private lateinit var fileCreatorDlg: FileCreatorDlg
4545
private lateinit var messageDlg: MessageDlg
46+
private lateinit var mainMenu: MainMenu
4647

4748
override fun onCreate(savedInstanceState: Bundle?) {
4849
super.onCreate(savedInstanceState)
@@ -69,6 +70,11 @@ class MainActivity : AppCompatActivity() {
6970
binding.btNewFile.setOnClickListener { v -> fileCreatorDlg.askName(btView = v) }
7071

7172
messageDlg = MessageDlg(this, window)
73+
74+
val passwordGeneratorProcessor = PasswordGeneratorProcessor(activityResultRegistry, this)
75+
{ s -> ClipboardManager.copy(this, s, getString(R.string.ui_msg_passwordCopied)) }
76+
mainMenu = MainMenu(this, messageDlg, passwordGeneratorProcessor)
77+
7278
fileCreatorDlg =
7379
FileCreatorDlg(this, contentResolver, window) { openFileExplorer(true) }
7480

@@ -106,64 +112,11 @@ class MainActivity : AppCompatActivity() {
106112
else refreshRecentList()
107113
}
108114

109-
private fun checkUpdate(menu: Menu) {
110-
try {
111-
Thread {
112-
val res = Updater.check("apk", BuildConfig.VERSION_NAME)
113-
window.decorView.post {
114-
val button = menu.findItem(R.id.btUpdate)
115-
button.isVisible = res == 1
116-
button.isEnabled = res == 1
117-
}
118-
}.start()
119-
} catch (e: Exception) { /* do nothing */
120-
}
121-
}
115+
override fun onCreateOptionsMenu(menu: Menu) = mainMenu.onCreateOptionsMenu(menu)
122116

123-
private fun getNewVersion() {
124-
val lastVer = Updater.getLastVer()
125-
val urlGitHub = "https://github.com/Ladsers/Passtable-Android/releases/download"
126-
val newApp = "Passtable-$lastVer.apk"
127-
val url = "$urlGitHub/$lastVer/$newApp"
128-
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
129-
}
117+
override fun onOptionsItemSelected(item: MenuItem) =
118+
mainMenu.onOptionsItemSelected(item) || super.onOptionsItemSelected(item)
130119

131-
override fun onCreateOptionsMenu(menu: Menu): Boolean {
132-
menuInflater.inflate(R.menu.menu_main, menu)
133-
val color = MaterialColors.getColor(window.decorView, R.attr.notificationTint)
134-
menu.findItem(R.id.btUpdate).icon?.setTint(color)
135-
checkUpdate(menu)
136-
return true
137-
}
138-
139-
override fun onOptionsItemSelected(item: MenuItem): Boolean {
140-
return when (item.itemId) {
141-
R.id.btSettings -> {
142-
val intent = Intent(this, SettingsActivity::class.java)
143-
startActivity(intent)
144-
true
145-
}
146-
R.id.btUpdate -> {
147-
messageDlg.create(
148-
getString(R.string.dlg_title_updateAvailable),
149-
getString(R.string.dlg_msg_downloadNewVersion)
150-
)
151-
messageDlg.addPositiveBtn(
152-
getString(R.string.app_bt_ok),
153-
R.drawable.ic_accept
154-
) {}
155-
messageDlg.addNeutralBtn(
156-
getString(R.string.app_bt_downloadFromGithub),
157-
R.drawable.ic_download
158-
) {
159-
getNewVersion()
160-
}
161-
messageDlg.show()
162-
true
163-
}
164-
else -> super.onOptionsItemSelected(item)
165-
}
166-
}
167120

168121
private fun openFileExplorer(newFile: Boolean) {
169122
this.newFile = newFile

0 commit comments

Comments
 (0)