Skip to content

Commit e87297f

Browse files
committed
1.3.1-lts
1.3.1-lts
1 parent 1caffdc commit e87297f

File tree

14 files changed

+296
-199
lines changed

14 files changed

+296
-199
lines changed

app/build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ plugins {
77
android {
88
val packageName = "com.nasahacker.convertit"
99
namespace = packageName
10-
compileSdk = 35
10+
compileSdk = 36
1111

1212
defaultConfig {
1313
applicationId = packageName
1414
minSdk = 21
15-
targetSdk = 35
16-
versionCode = 31
17-
versionName = "1.3.0-lts"
15+
targetSdk = 36
16+
versionCode = 32
17+
versionName = "1.3.1-lts"
1818
multiDexEnabled = true
1919

2020
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"

app/src/main/java/com/nasahacker/convertit/App.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import android.app.NotificationManager
66
import android.content.Context
77
import android.os.Build
88
import androidx.core.app.NotificationManagerCompat
9-
import com.nasahacker.convertit.util.AppConfig.CHANNEL_ID
10-
import com.nasahacker.convertit.util.AppConfig.CHANNEL_NAME
9+
import com.nasahacker.convertit.AppConfig.CHANNEL_ID
10+
import com.nasahacker.convertit.AppConfig.CHANNEL_NAME
1111

1212
/**
1313
* @author Tamim Hossain

app/src/main/java/com/nasahacker/convertit/util/AppConfig.kt renamed to app/src/main/java/com/nasahacker/convertit/AppConfig.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.nasahacker.convertit.util
1+
package com.nasahacker.convertit
22

33
/**
44
* @author Tamim Hossain
@@ -67,4 +67,4 @@ object AppConfig {
6767
const val APP_PREF = "app_prefs"
6868
const val PREF_DONT_SHOW_AGAIN = "pref_dont_show_again"
6969
const val PREF_CUSTOM_SAVE_LOCATION = "pref_custom_save_location"
70-
}
70+
}

app/src/main/java/com/nasahacker/convertit/dto/AudioFile.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ import java.io.File
1616
data class AudioFile(
1717
val name: String,
1818
val size: String,
19+
val format : String,
1920
val file: File,
2021
)

app/src/main/java/com/nasahacker/convertit/service/ConvertItService.kt

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,20 @@ import com.nasahacker.convertit.R
3131
import com.nasahacker.convertit.dto.AudioBitrate
3232
import com.nasahacker.convertit.dto.AudioFormat
3333
import com.nasahacker.convertit.util.AppUtil
34-
import com.nasahacker.convertit.util.AppConfig.ACTION_STOP_SERVICE
35-
import com.nasahacker.convertit.util.AppConfig.AUDIO_FORMAT
36-
import com.nasahacker.convertit.util.AppConfig.AUDIO_PLAYBACK_SPEED
37-
import com.nasahacker.convertit.util.AppConfig.BITRATE
38-
import com.nasahacker.convertit.util.AppConfig.CHANNEL_ID
39-
import com.nasahacker.convertit.util.AppConfig.CONVERT_BROADCAST_ACTION
40-
import com.nasahacker.convertit.util.AppConfig.IS_SUCCESS
41-
import com.nasahacker.convertit.util.AppConfig.URI_LIST
34+
import com.nasahacker.convertit.AppConfig.ACTION_STOP_SERVICE
35+
import com.nasahacker.convertit.AppConfig.AUDIO_FORMAT
36+
import com.nasahacker.convertit.AppConfig.AUDIO_PLAYBACK_SPEED
37+
import com.nasahacker.convertit.AppConfig.BITRATE
38+
import com.nasahacker.convertit.AppConfig.CHANNEL_ID
39+
import com.nasahacker.convertit.AppConfig.CONVERT_BROADCAST_ACTION
40+
import com.nasahacker.convertit.AppConfig.IS_SUCCESS
41+
import com.nasahacker.convertit.AppConfig.URI_LIST
4242
import kotlinx.coroutines.CoroutineScope
4343
import kotlinx.coroutines.Dispatchers
4444
import kotlinx.coroutines.Job
4545
import kotlinx.coroutines.launch
4646
import com.arthenica.ffmpegkit.FFmpegKit
47+
import com.arthenica.ffmpegkit.FFmpegKitConfig
4748

4849
class ConvertItService : Service() {
4950
companion object {
@@ -234,8 +235,8 @@ class ConvertItService : Service() {
234235
val (title, contentText) = if (isIndeterminate) {
235236
getString(R.string.converting_audio_files) to getString(R.string.label_converting_audio)
236237
} else {
237-
// Put percentage in title for better visibility on Android 15+
238-
"${getString(R.string.converting_audio_files)} ($progress%)" to getString(R.string.label_conversion_progress, progress)
238+
// Keep title clean, progress is shown in description and progress bar
239+
getString(R.string.converting_audio_files) to getString(R.string.label_conversion_progress, progress)
239240
}
240241

241242
Log.d(

app/src/main/java/com/nasahacker/convertit/ui/component/AudioItem.kt

Lines changed: 55 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.compose.animation.AnimatedVisibility
44
import androidx.compose.foundation.ExperimentalFoundationApi
55
import androidx.compose.foundation.Image
66
import androidx.compose.foundation.background
7+
import androidx.compose.foundation.border
78
import androidx.compose.foundation.clickable
89
import androidx.compose.foundation.combinedClickable
910
import androidx.compose.foundation.layout.*
@@ -36,21 +37,20 @@ fun AudioItem(
3637
modifier: Modifier = Modifier,
3738
fileName: String = "Sample Audio File",
3839
fileSize: String = "100KB",
40+
format: String = "Mp3",
3941
isActionVisible: Boolean = false,
4042
onPlayClick: () -> Unit = {},
4143
onShareClick: () -> Unit = {},
4244
onLongClick: () -> Unit = {},
4345
) {
4446
Column(
45-
modifier =
46-
modifier
47-
.fillMaxWidth()
48-
.background(MaterialTheme.colorScheme.surface, RoundedCornerShape(8.dp))
49-
.padding(16.dp)
50-
.combinedClickable(onClick = {
51-
}, onLongClick = {
52-
onLongClick()
53-
}),
47+
modifier = modifier
48+
.fillMaxWidth()
49+
.background(MaterialTheme.colorScheme.surface, RoundedCornerShape(8.dp))
50+
.padding(16.dp)
51+
.combinedClickable(onClick = {}, onLongClick = {
52+
onLongClick()
53+
}),
5454
) {
5555
Row(
5656
verticalAlignment = Alignment.CenterVertically,
@@ -64,10 +64,9 @@ fun AudioItem(
6464
Image(
6565
painter = painterResource(R.drawable.audio_ic),
6666
contentDescription = stringResource(R.string.label_audio_icon),
67-
modifier =
68-
Modifier
69-
.size(50.dp)
70-
.padding(end = 8.dp),
67+
modifier = Modifier
68+
.size(50.dp)
69+
.padding(end = 8.dp),
7170
)
7271
Column {
7372
Text(
@@ -77,12 +76,44 @@ fun AudioItem(
7776
color = MaterialTheme.colorScheme.onSurface,
7877
)
7978
Spacer(modifier = Modifier.height(4.dp))
80-
Text(
81-
text = fileSize,
82-
style = MaterialTheme.typography.bodySmall,
83-
color = MaterialTheme.colorScheme.onSurfaceVariant,
84-
)
79+
80+
Row(verticalAlignment = Alignment.CenterVertically) {
81+
Box(
82+
modifier = Modifier
83+
.border(
84+
width = 1.dp,
85+
color = MaterialTheme.colorScheme.outline,
86+
shape = RoundedCornerShape(4.dp)
87+
)
88+
.padding(horizontal = 8.dp, vertical = 4.dp)
89+
) {
90+
Text(
91+
text = fileSize,
92+
style = MaterialTheme.typography.bodySmall,
93+
color = MaterialTheme.colorScheme.onSurfaceVariant,
94+
)
95+
}
96+
97+
Spacer(modifier = Modifier.width(8.dp))
98+
99+
Box(
100+
modifier = Modifier
101+
.border(
102+
width = 1.dp,
103+
color = MaterialTheme.colorScheme.outline,
104+
shape = RoundedCornerShape(4.dp)
105+
)
106+
.padding(horizontal = 8.dp, vertical = 4.dp)
107+
) {
108+
Text(
109+
text = format,
110+
style = MaterialTheme.typography.bodySmall,
111+
color = MaterialTheme.colorScheme.onSurfaceVariant,
112+
)
113+
}
114+
}
85115
}
116+
86117
}
87118

88119
AnimatedVisibility(visible = isActionVisible) {
@@ -93,18 +124,16 @@ fun AudioItem(
93124
Image(
94125
painter = painterResource(R.drawable.play_ic),
95126
contentDescription = stringResource(R.string.label_play_icon),
96-
modifier =
97-
Modifier
98-
.size(40.dp)
99-
.clickable { onPlayClick() },
127+
modifier = Modifier
128+
.size(40.dp)
129+
.clickable { onPlayClick() },
100130
)
101131
Image(
102132
painter = painterResource(R.drawable.share_ic),
103133
contentDescription = stringResource(R.string.label_share_icon),
104-
modifier =
105-
Modifier
106-
.size(30.dp)
107-
.clickable { onShareClick() },
134+
modifier = Modifier
135+
.size(30.dp)
136+
.clickable { onShareClick() },
108137
)
109138
}
110139
}

app/src/main/java/com/nasahacker/convertit/ui/component/DialogConvert.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@ import androidx.compose.ui.unit.sp
1818
import androidx.compose.ui.window.DialogProperties
1919
import com.nasahacker.convertit.R
2020
import com.nasahacker.convertit.util.AppUtil
21-
import com.nasahacker.convertit.util.AppConfig.BITRATE_ARRAY
22-
import com.nasahacker.convertit.util.AppConfig.FORMAT_ARRAY
23-
import com.nasahacker.convertit.util.AppConfig.FORMAT_BITRATE_MAP
21+
import com.nasahacker.convertit.AppConfig.BITRATE_ARRAY
22+
import com.nasahacker.convertit.AppConfig.FORMAT_ARRAY
23+
import com.nasahacker.convertit.AppConfig.FORMAT_BITRATE_MAP
2424

2525
/**
2626
* @author Tamim Hossain

app/src/main/java/com/nasahacker/convertit/ui/component/NoFilesFoundCard.kt

Lines changed: 38 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -10,91 +10,63 @@ import androidx.compose.runtime.Composable
1010
import androidx.compose.ui.Alignment
1111
import androidx.compose.ui.Modifier
1212
import androidx.compose.ui.draw.clip
13-
import androidx.compose.ui.res.stringResource
1413
import androidx.compose.ui.text.font.FontWeight
1514
import androidx.compose.ui.text.style.TextAlign
1615
import androidx.compose.ui.tooling.preview.Preview
1716
import androidx.compose.ui.unit.dp
1817
import com.nasahacker.convertit.R
1918

20-
/**
21-
* Copyright (c) 2025
22-
* Created by: Tamim Hossain ([email protected])
23-
* Created on: 5/6/25
24-
**/
25-
26-
2719
@Composable
2820
fun NoFilesFoundCard(modifier: Modifier = Modifier) {
29-
Card(
21+
Column(
3022
modifier = modifier
3123
.fillMaxWidth()
32-
.padding(horizontal = 24.dp, vertical = 16.dp),
33-
shape = RoundedCornerShape(20.dp),
34-
elevation = CardDefaults.cardElevation(
35-
defaultElevation = 0.dp
36-
)
24+
.padding(horizontal = 24.dp, vertical = 32.dp),
25+
horizontalAlignment = Alignment.CenterHorizontally,
26+
verticalArrangement = Arrangement.spacedBy(24.dp)
3727
) {
38-
Column(
28+
Box(
3929
modifier = Modifier
40-
.fillMaxWidth()
41-
.padding(32.dp),
42-
horizontalAlignment = Alignment.CenterHorizontally,
43-
verticalArrangement = Arrangement.spacedBy(20.dp)
30+
.size(80.dp)
31+
.clip(RoundedCornerShape(20.dp))
32+
.background(MaterialTheme.colorScheme.primary.copy(alpha = 0.1f)),
33+
contentAlignment = Alignment.Center
4434
) {
45-
Box(
46-
modifier = Modifier
47-
.size(80.dp)
48-
.clip(RoundedCornerShape(20.dp))
49-
.background(
50-
MaterialTheme.colorScheme.primary.copy(alpha = 0.1f)
51-
),
52-
contentAlignment = Alignment.Center
53-
) {
54-
Icon(
55-
imageVector = Icons.Outlined.MusicNote,
56-
contentDescription = null,
57-
modifier = Modifier.size(40.dp),
58-
tint = MaterialTheme.colorScheme.primary
59-
)
60-
}
35+
Icon(
36+
imageVector = Icons.Outlined.MusicNote,
37+
contentDescription = null,
38+
modifier = Modifier.size(40.dp),
39+
tint = MaterialTheme.colorScheme.primary
40+
)
41+
}
6142

62-
Column(
63-
horizontalAlignment = Alignment.CenterHorizontally,
64-
verticalArrangement = Arrangement.spacedBy(8.dp)
65-
) {
66-
Text(
67-
text = "No Converted Files Yet",
68-
style = MaterialTheme.typography.titleLarge.copy(
69-
fontWeight = FontWeight.Bold
70-
),
71-
color = MaterialTheme.colorScheme.onSurface,
72-
textAlign = TextAlign.Center
73-
)
74-
75-
Text(
76-
text = "Start converting your audio files to see them here. Use the action button below to get started.",
77-
style = MaterialTheme.typography.bodyMedium,
78-
color = MaterialTheme.colorScheme.onSurfaceVariant,
79-
textAlign = TextAlign.Center,
80-
lineHeight = MaterialTheme.typography.bodyMedium.lineHeight * 1.2
81-
)
82-
}
43+
Column(
44+
horizontalAlignment = Alignment.CenterHorizontally,
45+
verticalArrangement = Arrangement.spacedBy(8.dp),
46+
modifier = Modifier.padding(horizontal = 16.dp)
47+
) {
48+
Text(
49+
text = "No Converted Files Yet",
50+
style = MaterialTheme.typography.titleLarge.copy(fontWeight = FontWeight.Medium),
51+
color = MaterialTheme.colorScheme.onSurface,
52+
textAlign = TextAlign.Center
53+
)
8354

84-
HorizontalDivider(
85-
modifier = Modifier
86-
.width(60.dp)
87-
.clip(RoundedCornerShape(2.dp)),
88-
thickness = 3.dp,
89-
color = MaterialTheme.colorScheme.primary.copy(alpha = 0.3f)
55+
Text(
56+
text = "Start converting your audio files to see them here.",
57+
style = MaterialTheme.typography.bodyMedium,
58+
color = MaterialTheme.colorScheme.onSurfaceVariant,
59+
textAlign = TextAlign.Center,
60+
lineHeight = MaterialTheme.typography.bodyMedium.lineHeight * 1.2
9061
)
9162
}
9263
}
9364
}
9465

95-
96-
@Preview
66+
@Preview(showBackground = true)
9767
@Composable
9868
private fun PreviewNoFilesFoundCard() {
99-
NoFilesFoundCard()
100-
}
69+
MaterialTheme {
70+
NoFilesFoundCard()
71+
}
72+
}

app/src/main/java/com/nasahacker/convertit/ui/component/RatingDialog.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ import androidx.core.content.edit
4343
import androidx.core.net.toUri
4444
import com.nasahacker.convertit.App
4545
import com.nasahacker.convertit.R
46-
import com.nasahacker.convertit.util.AppConfig.APP_PREF
47-
import com.nasahacker.convertit.util.AppConfig.PREF_DONT_SHOW_AGAIN
46+
import com.nasahacker.convertit.AppConfig.APP_PREF
47+
import com.nasahacker.convertit.AppConfig.PREF_DONT_SHOW_AGAIN
4848

4949
@Composable
5050
fun RatingDialog(
@@ -62,7 +62,7 @@ fun RatingDialog(
6262
mutableStateOf(sharedPreferences.getBoolean(PREF_DONT_SHOW_AGAIN, false))
6363
}
6464

65-
var selectedRating by remember { mutableStateOf(0) }
65+
var selectedRating by remember { mutableIntStateOf(0) }
6666
val appPackageName = App.application.packageName
6767

6868
if (showReviewDialog && !dontShowAgain) {

0 commit comments

Comments
 (0)