Skip to content

Commit

Permalink
feat: add audio conversion dialog to configuration menu
Browse files Browse the repository at this point in the history
  • Loading branch information
JunkFood02 committed Aug 23, 2023
1 parent 167fe68 commit 91ea744
Show file tree
Hide file tree
Showing 2 changed files with 92 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import androidx.compose.material.icons.outlined.DownloadDone
import androidx.compose.material.icons.outlined.Edit
import androidx.compose.material.icons.outlined.HighQuality
import androidx.compose.material.icons.outlined.NewLabel
import androidx.compose.material.icons.outlined.Sync
import androidx.compose.material.icons.outlined.VideoFile
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.ExperimentalMaterial3Api
Expand Down Expand Up @@ -62,6 +63,7 @@ import com.junkfood.seal.ui.component.SingleChoiceSegmentedButton
import com.junkfood.seal.ui.component.VideoFilterChip
import com.junkfood.seal.ui.page.command.TemplatePickerDialog
import com.junkfood.seal.ui.page.settings.command.CommandTemplateDialog
import com.junkfood.seal.ui.page.settings.format.AudioConversionQuickSettingsDialog
import com.junkfood.seal.ui.page.settings.format.AudioQuickSettingsDialog
import com.junkfood.seal.ui.page.settings.format.VideoFormatDialog
import com.junkfood.seal.ui.page.settings.format.VideoQualityDialog
Expand Down Expand Up @@ -109,7 +111,7 @@ fun DownloadSettingDialog(
var showAudioSettingsDialog by remember { mutableStateOf(false) }
var showVideoQualityDialog by remember { mutableStateOf(false) }
var showVideoFormatDialog by remember { mutableStateOf(false) }
var showAudioQualityDialog by remember { mutableStateOf(false) }
var showAudioConversionDialog by remember { mutableStateOf(false) }

var showTemplateSelectionDialog by remember { mutableStateOf(false) }
var showTemplateCreatorDialog by remember { mutableStateOf(false) }
Expand Down Expand Up @@ -194,41 +196,6 @@ fun DownloadSettingDialog(
updatePreferences()
}
}
/*VideoFilterChip(
selected = audio, enabled = !customCommand, onClick = {
audio = !audio
updatePreferences()
}, label = stringResource(R.string.extract_audio)
)
if (!isShareActivity) {
VideoFilterChip(
selected = playlist, enabled = !customCommand, onClick = {
playlist = !playlist
updatePreferences()
}, label = stringResource(R.string.download_playlist)
)
VideoFilterChip(
selected = formatSelection,
enabled = !customCommand && !playlist,
onClick = {
formatSelection = !formatSelection
FORMAT_SELECTION.updateBoolean(formatSelection)
},
label = stringResource(R.string.format_selection)
)
}
VideoFilterChip(
selected = subtitle, enabled = !customCommand && !audio, onClick = {
subtitle = !subtitle
updatePreferences()
}, label = stringResource(id = R.string.download_subtitles)
)
VideoFilterChip(
selected = thumbnail, enabled = !customCommand, onClick = {
thumbnail = !thumbnail
updatePreferences()
}, label = stringResource(R.string.create_thumbnail)
)*/
}
if (!isQuickDownload) {
DrawerSheetSubtitle(text = stringResource(id = R.string.format_selection))
Expand Down Expand Up @@ -256,22 +223,24 @@ fun DownloadSettingDialog(
AnimatedVisibility(visible = !customCommand) {

Row(modifier = Modifier.horizontalScroll(rememberScrollState())) {
ButtonChip(
onClick = {
showVideoFormatDialog = true
},
enabled = !customCommand && !audio,
label = PreferenceStrings.getVideoFormatLabel(videoFormatPreference),
icon = Icons.Outlined.VideoFile,
iconDescription = stringResource(id = R.string.video_format_preference)
)
ButtonChip(
label = PreferenceStrings.getVideoResolutionDescComp(),
icon = Icons.Outlined.HighQuality,
enabled = !customCommand && !audio,
iconDescription = stringResource(id = R.string.video_quality)
) {
showVideoQualityDialog = true
if (!audio) {
ButtonChip(
onClick = {
showVideoFormatDialog = true
},
enabled = !customCommand,
label = PreferenceStrings.getVideoFormatLabel(videoFormatPreference),
icon = Icons.Outlined.VideoFile,
iconDescription = stringResource(id = R.string.video_format_preference)
)
ButtonChip(
label = PreferenceStrings.getVideoResolutionDescComp(),
icon = Icons.Outlined.HighQuality,
enabled = !customCommand,
iconDescription = stringResource(id = R.string.video_quality)
) {
showVideoQualityDialog = true
}
}
ButtonChip(
onClick = {
Expand All @@ -281,6 +250,14 @@ fun DownloadSettingDialog(
label = stringResource(R.string.audio_format),
icon = Icons.Outlined.AudioFile
)
if (audio) {
ButtonChip(
label = stringResource(id = R.string.convert_audio),
icon = Icons.Outlined.Sync
) {
showAudioConversionDialog = true
}
}
}
}
AnimatedVisibility(visible = customCommand) {
Expand Down Expand Up @@ -312,23 +289,6 @@ fun DownloadSettingDialog(
}

}
/* VideoFilterChip(
selected = customCommand, onClick = {
customCommand = !customCommand
updatePreferences()
}, label = stringResource(R.string.custom_command)
)
ButtonChip(
onClick = { showCustomCommandDialog = -1 }, label = stringResource(
R.string.new_template
), icon = Icons.Outlined.Add, enabled = customCommand
)
ButtonChip(
onClick = { showCustomCommandDialog = 1 }, label = stringResource(
R.string.edit
), icon = Icons.Outlined.EditNote, enabled = customCommand
)*/


DrawerSheetSubtitle(
text = stringResource(
Expand Down Expand Up @@ -496,4 +456,7 @@ fun DownloadSettingDialog(
onCookiesToggled = { cookies = it }
)
}
if (showAudioConversionDialog) {
AudioConversionQuickSettingsDialog(onDismissRequest = { showAudioConversionDialog = false })
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import androidx.compose.ui.text.input.ImeAction
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.junkfood.seal.R
import com.junkfood.seal.ui.common.booleanState
import com.junkfood.seal.ui.common.intState
import com.junkfood.seal.ui.common.stringState
import com.junkfood.seal.ui.component.ConfirmButton
Expand All @@ -61,6 +62,7 @@ import com.junkfood.seal.ui.component.SealDialog
import com.junkfood.seal.ui.component.SingleChoiceItem
import com.junkfood.seal.ui.component.SingleChoiceItemWithLabel
import com.junkfood.seal.util.AUDIO_CONVERSION_FORMAT
import com.junkfood.seal.util.AUDIO_CONVERT
import com.junkfood.seal.util.AUDIO_FORMAT
import com.junkfood.seal.util.AUDIO_QUALITY
import com.junkfood.seal.util.CONVERT_M4A
Expand All @@ -77,6 +79,7 @@ import com.junkfood.seal.util.NOT_CONVERT
import com.junkfood.seal.util.NOT_SPECIFIED
import com.junkfood.seal.util.PreferenceStrings
import com.junkfood.seal.util.PreferenceUtil
import com.junkfood.seal.util.PreferenceUtil.updateBoolean
import com.junkfood.seal.util.PreferenceUtil.updateInt
import com.junkfood.seal.util.PreferenceUtil.updateString
import com.junkfood.seal.util.SORTING_FIELDS
Expand Down Expand Up @@ -319,8 +322,12 @@ fun VideoQuickSettingsDialog(onDismissRequest: () -> Unit = {}) {


@Composable
fun AudioConversionDialog(onDismissRequest: () -> Unit, onConfirm: () -> Unit = {}) {
fun AudioConversionDialog(
onDismissRequest: () -> Unit,
onConfirm: () -> Unit = {}
) {
var audioFormat by remember { mutableStateOf(PreferenceUtil.getAudioConvertFormat()) }
var convertAudio by AUDIO_CONVERT.booleanState
SealDialog(
onDismissRequest = onDismissRequest,
dismissButton = {
Expand Down Expand Up @@ -359,6 +366,58 @@ fun AudioConversionDialog(onDismissRequest: () -> Unit, onConfirm: () -> Unit =
})
}

@Composable
fun AudioConversionQuickSettingsDialog(
onDismissRequest: () -> Unit,
onConfirm: () -> Unit = {}
) {
var audioFormat by remember { mutableIntStateOf(PreferenceUtil.getAudioConvertFormat()) }
var convertAudio by AUDIO_CONVERT.booleanState
SealDialog(
onDismissRequest = onDismissRequest,
dismissButton = {
DismissButton { onDismissRequest() }
},
icon = { Icon(Icons.Outlined.Sync, null) },
title = {
Text(stringResource(R.string.convert_audio_format))
}, confirmButton = {
ConfirmButton {
AUDIO_CONVERT.updateBoolean(convertAudio)
AUDIO_CONVERSION_FORMAT.updateInt(audioFormat)
onConfirm()
onDismissRequest()
}

}, text = {
Column(modifier = Modifier.verticalScroll(rememberScrollState())) {
Text(
modifier = Modifier
.fillMaxWidth()
.padding(bottom = 12.dp)
.padding(horizontal = 24.dp),
text = stringResource(R.string.convert_audio_format_desc),
style = MaterialTheme.typography.bodyLarge
)
SingleChoiceItem(
text = stringResource(id = R.string.not_convert),
selected = !convertAudio
) {
convertAudio = false
}
for (i in CONVERT_MP3..CONVERT_M4A)
SingleChoiceItem(
modifier = Modifier,
text = PreferenceStrings.getAudioConvertDesc(i),
selected = audioFormat == i && convertAudio
) {
audioFormat = i
convertAudio = true
}
}
})
}


@Composable
@Preview
Expand Down

0 comments on commit 91ea744

Please sign in to comment.