Skip to content

Commit ff16f2c

Browse files
authored
Merge pull request #20 from crazo7924/audio-ui-shift-title
audio ui: landscape: shift the title upwards
2 parents 91b13e4 + bcec424 commit ff16f2c

File tree

1 file changed

+63
-138
lines changed

1 file changed

+63
-138
lines changed

new-player/src/main/java/net/newpipe/newplayer/ui/audioplayer/AudioPlayerUI.kt

+63-138
Original file line numberDiff line numberDiff line change
@@ -27,16 +27,18 @@ import androidx.compose.animation.core.tween
2727
import androidx.compose.animation.fadeIn
2828
import androidx.compose.animation.fadeOut
2929
import androidx.compose.foundation.background
30+
import androidx.compose.foundation.basicMarquee
31+
import androidx.compose.foundation.layout.Arrangement
3032
import androidx.compose.foundation.layout.Box
3133
import androidx.compose.foundation.layout.Column
32-
import androidx.compose.foundation.layout.PaddingValues
3334
import androidx.compose.foundation.layout.Row
35+
import androidx.compose.foundation.layout.Spacer
36+
import androidx.compose.foundation.layout.fillMaxHeight
3437
import androidx.compose.foundation.layout.fillMaxSize
3538
import androidx.compose.foundation.layout.fillMaxWidth
3639
import androidx.compose.foundation.layout.height
3740
import androidx.compose.foundation.layout.offset
3841
import androidx.compose.foundation.layout.padding
39-
import androidx.compose.foundation.layout.width
4042
import androidx.compose.foundation.layout.windowInsetsPadding
4143
import androidx.compose.foundation.layout.wrapContentHeight
4244
import androidx.compose.foundation.layout.wrapContentSize
@@ -50,26 +52,24 @@ import androidx.compose.runtime.Composable
5052
import androidx.compose.ui.Alignment
5153
import androidx.compose.ui.Modifier
5254
import androidx.compose.ui.res.stringResource
53-
import androidx.compose.ui.text.style.TextOverflow
5455
import androidx.compose.ui.tooling.preview.Preview
5556
import androidx.compose.ui.unit.dp
56-
import androidx.compose.ui.unit.em
5757
import androidx.media3.common.util.UnstableApi
5858
import net.newpipe.newplayer.R
59-
import net.newpipe.newplayer.uiModel.NewPlayerUIState
60-
import net.newpipe.newplayer.uiModel.InternalNewPlayerViewModel
61-
import net.newpipe.newplayer.uiModel.NewPlayerViewModelDummy
62-
import net.newpipe.newplayer.uiModel.UIModeState
6359
import net.newpipe.newplayer.ui.common.NewPlayerSeeker
6460
import net.newpipe.newplayer.ui.common.ThumbPreview
65-
import net.newpipe.newplayer.ui.selection_ui.ChapterSelectUI
66-
import net.newpipe.newplayer.ui.selection_ui.StreamSelectUI
67-
import net.newpipe.newplayer.ui.theme.VideoPlayerTheme
6861
import net.newpipe.newplayer.ui.common.Thumbnail
6962
import net.newpipe.newplayer.ui.common.getInsets
7063
import net.newpipe.newplayer.ui.common.getLocale
7164
import net.newpipe.newplayer.ui.common.getTimeStringFromMs
7265
import net.newpipe.newplayer.ui.seeker.SeekerDefaults
66+
import net.newpipe.newplayer.ui.selection_ui.ChapterSelectUI
67+
import net.newpipe.newplayer.ui.selection_ui.StreamSelectUI
68+
import net.newpipe.newplayer.ui.theme.VideoPlayerTheme
69+
import net.newpipe.newplayer.uiModel.InternalNewPlayerViewModel
70+
import net.newpipe.newplayer.uiModel.NewPlayerUIState
71+
import net.newpipe.newplayer.uiModel.NewPlayerViewModelDummy
72+
import net.newpipe.newplayer.uiModel.UIModeState
7373

7474

7575
private val UI_ENTER_ANIMATION = fadeIn(tween(200))
@@ -88,7 +88,11 @@ internal fun lightAudioControlButtonColorScheme() = ButtonDefaults.buttonColors(
8888
@Composable
8989

9090
/** @hide */
91-
internal fun AudioPlayerUI(viewModel: InternalNewPlayerViewModel, uiState: NewPlayerUIState, isLandScape: Boolean) {
91+
internal fun AudioPlayerUI(
92+
viewModel: InternalNewPlayerViewModel,
93+
uiState: NewPlayerUIState,
94+
isLandScape: Boolean
95+
) {
9296
val insets = getInsets()
9397

9498
Box(
@@ -125,23 +129,22 @@ internal fun AudioPlayerUI(viewModel: InternalNewPlayerViewModel, uiState: NewPl
125129
enter = UI_ENTER_ANIMATION,
126130
exit = UI_EXIT_ANIMATION
127131
) {
128-
Scaffold(modifier = Modifier
129-
.fillMaxSize()
130-
.windowInsetsPadding(insets),
131-
topBar = {
132-
133-
}) { innerPadding ->
132+
Scaffold(
133+
modifier = Modifier
134+
.fillMaxSize()
135+
.windowInsetsPadding(insets),
136+
) { innerPadding ->
134137
if (isLandScape) {
135138
LandscapeLayout(
136139
viewModel = viewModel,
137140
uiState = uiState,
138-
innerPadding = innerPadding
141+
modifier = Modifier.padding(innerPadding).padding(16.dp),
139142
)
140143
} else {
141144
PortraitLayout(
142145
viewModel = viewModel,
143146
uiState = uiState,
144-
innerPadding = innerPadding
147+
modifier = Modifier.padding(innerPadding).padding(16.dp),
145148
)
146149
}
147150
}
@@ -152,145 +155,66 @@ internal fun AudioPlayerUI(viewModel: InternalNewPlayerViewModel, uiState: NewPl
152155
@OptIn(UnstableApi::class)
153156
@Composable
154157
private fun LandscapeLayout(
155-
modifier: Modifier = Modifier,
156158
viewModel: InternalNewPlayerViewModel,
157159
uiState: NewPlayerUIState,
158-
innerPadding: PaddingValues
160+
modifier: Modifier = Modifier,
159161
) {
160-
Row(
161-
modifier = modifier
162-
.fillMaxSize()
163-
.padding(20.dp)
164-
) {
165-
Column(
162+
Column (modifier = modifier) {
163+
TitleView(
166164
modifier = Modifier
167-
.fillMaxSize()
168-
.weight(1f)
165+
.fillMaxWidth(),
166+
uiState = uiState,
167+
)
168+
169+
Spacer(modifier = Modifier.height(8.dp))
170+
171+
Row(
172+
verticalAlignment = Alignment.CenterVertically,
173+
horizontalArrangement = Arrangement.spacedBy(32.dp),
169174
) {
170175
CoverArt(
171-
modifier = Modifier
172-
.fillMaxSize()
173-
.weight(0.9f), uiState = uiState
176+
uiState = uiState,
177+
modifier = Modifier.weight(1f)
174178
)
175179

176-
TitleView(
177-
modifier = Modifier
178-
.fillMaxSize()
179-
.weight(0.1f), uiState = uiState
180-
)
181-
}
182-
183-
Box(modifier = Modifier.width(20.dp))
184-
185-
Column(
186-
modifier = Modifier
187-
.fillMaxSize()
188-
.weight(1f)
189-
) {
190180
Column(
191-
modifier = Modifier
192-
.fillMaxSize()
193-
.weight(1f)
181+
verticalArrangement = Arrangement.SpaceEvenly,
182+
modifier = Modifier.fillMaxHeight().weight(1f)
194183
) {
195-
Box(
196-
modifier = Modifier
197-
.fillMaxSize()
198-
.weight(1f)
199-
)
200-
AudioPlaybackController(
201-
viewModel = viewModel,
202-
uiState = uiState
203-
)
204-
Box(
205-
modifier = Modifier
206-
.fillMaxSize()
207-
.weight(1f)
208-
)
209-
ProgressUI(
210-
viewModel = viewModel,
211-
uiState = uiState
212-
)
213-
Box(
214-
modifier = Modifier
215-
.fillMaxSize()
216-
.weight(1f)
217-
)
184+
AudioPlaybackController(viewModel = viewModel, uiState = uiState)
185+
ProgressUI(viewModel = viewModel, uiState = uiState)
186+
AudioBottomUI(viewModel = viewModel, uiState = uiState)
218187
}
219-
AudioBottomUI(viewModel, uiState)
220-
Box(
221-
modifier = Modifier
222-
.fillMaxSize()
223-
.weight(0.025f)
224-
)
225188
}
226189
}
227190
}
228191

229192
@OptIn(UnstableApi::class)
230193
@Composable
231194
private fun PortraitLayout(
232-
modifier: Modifier = Modifier,
233195
viewModel: InternalNewPlayerViewModel,
234196
uiState: NewPlayerUIState,
235-
innerPadding: PaddingValues
197+
modifier: Modifier = Modifier,
236198
) {
237-
Box(
238-
modifier = modifier
239-
.fillMaxSize()
240-
.padding(innerPadding)
199+
Column(
200+
modifier = modifier,
201+
horizontalAlignment = Alignment.CenterHorizontally,
202+
verticalArrangement = Arrangement.spacedBy(32.dp),
241203
) {
242204
Column(
243205
modifier = Modifier
244-
.fillMaxSize()
206+
.fillMaxHeight()
207+
.weight(1f),
208+
horizontalAlignment = Alignment.CenterHorizontally,
209+
verticalArrangement = Arrangement.Center,
245210
) {
246-
Column(
247-
modifier = Modifier
248-
.fillMaxSize()
249-
.padding(20.dp)
250-
.weight(1f),
251-
horizontalAlignment = Alignment.CenterHorizontally,
252-
) {
253-
Box(
254-
modifier = Modifier
255-
.fillMaxSize()
256-
.weight(0.5f)
257-
)
258-
CoverArt(uiState = uiState)
259-
Box(
260-
modifier = Modifier
261-
.fillMaxSize()
262-
.weight(0.3f)
263-
)
264-
265-
TitleView(uiState = uiState)
266-
267-
Box(
268-
modifier = Modifier
269-
.fillMaxSize()
270-
.weight(0.45f)
271-
)
272-
AudioPlaybackController(viewModel = viewModel, uiState = uiState)
273-
274-
275-
Box(
276-
modifier = Modifier
277-
.fillMaxSize()
278-
.weight(0.2f)
279-
)
280-
ProgressUI(viewModel = viewModel, uiState = uiState)
281-
Box(
282-
modifier = Modifier
283-
.fillMaxSize()
284-
.weight(0.2f)
285-
)
286-
}
287-
AudioBottomUI(viewModel, uiState)
288-
Box(
289-
modifier = Modifier
290-
.fillMaxSize()
291-
.weight(0.025f)
292-
)
211+
CoverArt(uiState = uiState)
212+
Spacer(modifier = Modifier.height(24.dp))
213+
TitleView(uiState = uiState)
293214
}
215+
AudioPlaybackController(viewModel = viewModel, uiState = uiState)
216+
ProgressUI(viewModel = viewModel, uiState = uiState)
217+
AudioBottomUI(viewModel, uiState)
294218
}
295219
}
296220

@@ -347,23 +271,24 @@ private fun TitleView(modifier: Modifier = Modifier, uiState: NewPlayerUIState)
347271
Column(modifier = modifier) {
348272
Text(
349273
text = uiState.currentlyPlaying?.mediaMetadata?.title.toString(),
350-
overflow = TextOverflow.Ellipsis,
351274
maxLines = 1,
352-
fontSize = 6.em
275+
style = MaterialTheme.typography.headlineMedium,
276+
modifier = Modifier.basicMarquee(),
353277
)
278+
Spacer(modifier = Modifier.height(6.dp))
354279
Text(
355280
text = uiState.currentlyPlaying?.mediaMetadata?.artist.toString(),
356-
overflow = TextOverflow.Ellipsis,
357281
maxLines = 1,
358-
fontSize = 4.em
282+
style = MaterialTheme.typography.bodyLarge,
283+
modifier = Modifier.basicMarquee(),
359284
)
360285
}
361286
}
362287

363288
@OptIn(UnstableApi::class)
364289
@Composable
365290
private fun CoverArt(modifier: Modifier = Modifier, uiState: NewPlayerUIState) {
366-
Box {
291+
Box(modifier = modifier) {
367292
Card(
368293
elevation = CardDefaults.cardElevation(defaultElevation = 4.dp)
369294
) {

0 commit comments

Comments
 (0)