[Cleanup] Removed unused Classes
This commit is contained in:
parent
de14e72689
commit
cbc29b553c
13 changed files with 0 additions and 596 deletions
|
@ -1,46 +0,0 @@
|
||||||
package code.name.monkey.retromusic
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.util.AttributeSet
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
|
|
||||||
class PeekingLinearLayoutManager : LinearLayoutManager {
|
|
||||||
@JvmOverloads
|
|
||||||
constructor(
|
|
||||||
context: Context?,
|
|
||||||
@RecyclerView.Orientation orientation: Int = RecyclerView.VERTICAL,
|
|
||||||
reverseLayout: Boolean = false
|
|
||||||
) : super(context, orientation, reverseLayout)
|
|
||||||
|
|
||||||
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(
|
|
||||||
context,
|
|
||||||
attrs,
|
|
||||||
defStyleAttr,
|
|
||||||
defStyleRes
|
|
||||||
)
|
|
||||||
|
|
||||||
override fun generateDefaultLayoutParams() =
|
|
||||||
scaledLayoutParams(super.generateDefaultLayoutParams())
|
|
||||||
|
|
||||||
override fun generateLayoutParams(lp: ViewGroup.LayoutParams?) =
|
|
||||||
scaledLayoutParams(super.generateLayoutParams(lp))
|
|
||||||
|
|
||||||
override fun generateLayoutParams(c: Context?, attrs: AttributeSet?) =
|
|
||||||
scaledLayoutParams(super.generateLayoutParams(c, attrs))
|
|
||||||
|
|
||||||
private fun scaledLayoutParams(layoutParams: RecyclerView.LayoutParams) =
|
|
||||||
layoutParams.apply {
|
|
||||||
when (orientation) {
|
|
||||||
HORIZONTAL -> width = (horizontalSpace * ratio).toInt()
|
|
||||||
VERTICAL -> height = (verticalSpace * ratio).toInt()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private val horizontalSpace get() = width - paddingStart - paddingEnd
|
|
||||||
|
|
||||||
private val verticalSpace get() = height - paddingTop - paddingBottom
|
|
||||||
|
|
||||||
private val ratio = 0.8f // change to 0.7f for 70%
|
|
||||||
}
|
|
|
@ -1,66 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2020 Hemanth Savarla.
|
|
||||||
*
|
|
||||||
* Licensed under the GNU General Public License v3
|
|
||||||
*
|
|
||||||
* This is free software: you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
* See the GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package code.name.monkey.retromusic.adapter
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.view.LayoutInflater
|
|
||||||
import android.view.View
|
|
||||||
import android.view.ViewGroup
|
|
||||||
import android.widget.TextView
|
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
|
||||||
import code.name.monkey.retromusic.R
|
|
||||||
import code.name.monkey.retromusic.extensions.hide
|
|
||||||
import code.name.monkey.retromusic.model.Contributor
|
|
||||||
import code.name.monkey.retromusic.util.RetroUtil
|
|
||||||
import code.name.monkey.retromusic.views.RetroShapeableImageView
|
|
||||||
|
|
||||||
class TranslatorsAdapter(
|
|
||||||
private var contributors: List<Contributor>
|
|
||||||
) : RecyclerView.Adapter<TranslatorsAdapter.ViewHolder>() {
|
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
|
||||||
return ViewHolder(
|
|
||||||
LayoutInflater.from(parent.context).inflate(
|
|
||||||
R.layout.item_contributor,
|
|
||||||
parent,
|
|
||||||
false
|
|
||||||
)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
|
||||||
val contributor = contributors[position]
|
|
||||||
holder.bindData(contributor)
|
|
||||||
holder.itemView.setOnClickListener {
|
|
||||||
RetroUtil.openUrl(it?.context as Activity, contributors[position].link)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getItemCount(): Int {
|
|
||||||
return contributors.size
|
|
||||||
}
|
|
||||||
|
|
||||||
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
|
|
||||||
val title: TextView = itemView.findViewById(R.id.title)
|
|
||||||
val text: TextView = itemView.findViewById(R.id.text)
|
|
||||||
val image: RetroShapeableImageView = itemView.findViewById(R.id.icon)
|
|
||||||
|
|
||||||
internal fun bindData(contributor: Contributor) {
|
|
||||||
title.text = contributor.name
|
|
||||||
text.text = contributor.summary
|
|
||||||
image.hide()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,62 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2020 Hemanth Savarla.
|
|
||||||
*
|
|
||||||
* Licensed under the GNU General Public License v3
|
|
||||||
*
|
|
||||||
* This is free software: you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
* See the GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package code.name.monkey.retromusic.adapter.song
|
|
||||||
|
|
||||||
import android.view.MenuItem
|
|
||||||
import android.view.View
|
|
||||||
import androidx.fragment.app.FragmentActivity
|
|
||||||
import code.name.monkey.retromusic.R
|
|
||||||
import code.name.monkey.retromusic.db.PlaylistEntity
|
|
||||||
import code.name.monkey.retromusic.db.toSongEntity
|
|
||||||
import code.name.monkey.retromusic.dialogs.RemoveSongFromPlaylistDialog
|
|
||||||
import code.name.monkey.retromusic.interfaces.ICabHolder
|
|
||||||
import code.name.monkey.retromusic.model.Song
|
|
||||||
|
|
||||||
class PlaylistSongAdapter(
|
|
||||||
private val playlist: PlaylistEntity,
|
|
||||||
activity: FragmentActivity,
|
|
||||||
dataSet: MutableList<Song>,
|
|
||||||
itemLayoutRes: Int,
|
|
||||||
iCabHolder: ICabHolder?
|
|
||||||
) : SongAdapter(activity, dataSet, itemLayoutRes, iCabHolder) {
|
|
||||||
|
|
||||||
init {
|
|
||||||
this.setMultiSelectMenuRes(R.menu.menu_cannot_delete_single_songs_playlist_songs_selection)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun createViewHolder(view: View): SongAdapter.ViewHolder {
|
|
||||||
return ViewHolder(view)
|
|
||||||
}
|
|
||||||
|
|
||||||
open inner class ViewHolder(itemView: View) : SongAdapter.ViewHolder(itemView) {
|
|
||||||
|
|
||||||
override var songMenuRes: Int
|
|
||||||
get() = R.menu.menu_item_playlist_song
|
|
||||||
set(value) {
|
|
||||||
super.songMenuRes = value
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSongMenuItemClick(item: MenuItem): Boolean {
|
|
||||||
when (item.itemId) {
|
|
||||||
R.id.action_remove_from_playlist -> {
|
|
||||||
RemoveSongFromPlaylistDialog.create(song.toSongEntity(playlist.playListId))
|
|
||||||
.show(activity.supportFragmentManager, "REMOVE_FROM_PLAYLIST")
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return super.onSongMenuItemClick(item)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,59 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (c) 2019 Hemanth Savarala.
|
|
||||||
*
|
|
||||||
* Licensed under the GNU General Public License v3
|
|
||||||
*
|
|
||||||
* This is free software: you can redistribute it and/or modify it under
|
|
||||||
* the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
||||||
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
* See the GNU General Public License for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package code.name.monkey.retromusic.misc
|
|
||||||
|
|
||||||
import com.google.android.material.appbar.AppBarLayout
|
|
||||||
import kotlin.math.abs
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Hemanth S (h4h13).
|
|
||||||
* https://stackoverflow.com/a/33891727
|
|
||||||
*/
|
|
||||||
|
|
||||||
abstract class AppBarStateChangeListener : AppBarLayout.OnOffsetChangedListener {
|
|
||||||
|
|
||||||
private var mCurrentState = State.IDLE
|
|
||||||
|
|
||||||
override fun onOffsetChanged(appBarLayout: AppBarLayout, i: Int) {
|
|
||||||
when {
|
|
||||||
i == 0 -> {
|
|
||||||
if (mCurrentState != State.EXPANDED) {
|
|
||||||
onStateChanged(appBarLayout, State.EXPANDED)
|
|
||||||
}
|
|
||||||
mCurrentState = State.EXPANDED
|
|
||||||
}
|
|
||||||
abs(i) >= appBarLayout.totalScrollRange -> {
|
|
||||||
if (mCurrentState != State.COLLAPSED) {
|
|
||||||
onStateChanged(appBarLayout, State.COLLAPSED)
|
|
||||||
}
|
|
||||||
mCurrentState = State.COLLAPSED
|
|
||||||
}
|
|
||||||
else -> {
|
|
||||||
if (mCurrentState != State.IDLE) {
|
|
||||||
onStateChanged(appBarLayout, State.IDLE)
|
|
||||||
}
|
|
||||||
mCurrentState = State.IDLE
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract fun onStateChanged(appBarLayout: AppBarLayout, state: State)
|
|
||||||
|
|
||||||
enum class State {
|
|
||||||
EXPANDED,
|
|
||||||
COLLAPSED,
|
|
||||||
IDLE
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
package code.name.monkey.retromusic.state
|
|
||||||
|
|
||||||
enum class NowPlayingPanelState {
|
|
||||||
EXPAND,
|
|
||||||
COLLAPSED_WITH,
|
|
||||||
COLLAPSED_WITHOUT,
|
|
||||||
HIDE,
|
|
||||||
}
|
|
|
@ -1,147 +0,0 @@
|
||||||
package code.name.monkey.retromusic.util;
|
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
|
||||||
import android.content.res.ColorStateList;
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.os.Build;
|
|
||||||
import android.util.StateSet;
|
|
||||||
|
|
||||||
import androidx.annotation.ColorInt;
|
|
||||||
import androidx.annotation.Nullable;
|
|
||||||
import androidx.core.graphics.ColorUtils;
|
|
||||||
|
|
||||||
public class RippleUtils {
|
|
||||||
public static final boolean USE_FRAMEWORK_RIPPLE =
|
|
||||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP;
|
|
||||||
private static final int[] PRESSED_STATE_SET = {
|
|
||||||
android.R.attr.state_pressed,
|
|
||||||
};
|
|
||||||
private static final int[] HOVERED_FOCUSED_STATE_SET = {
|
|
||||||
android.R.attr.state_hovered, android.R.attr.state_focused,
|
|
||||||
};
|
|
||||||
private static final int[] FOCUSED_STATE_SET = {
|
|
||||||
android.R.attr.state_focused,
|
|
||||||
};
|
|
||||||
private static final int[] HOVERED_STATE_SET = {
|
|
||||||
android.R.attr.state_hovered,
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final int[] SELECTED_PRESSED_STATE_SET = {
|
|
||||||
android.R.attr.state_selected, android.R.attr.state_pressed,
|
|
||||||
};
|
|
||||||
private static final int[] SELECTED_HOVERED_FOCUSED_STATE_SET = {
|
|
||||||
android.R.attr.state_selected, android.R.attr.state_hovered, android.R.attr.state_focused,
|
|
||||||
};
|
|
||||||
private static final int[] SELECTED_FOCUSED_STATE_SET = {
|
|
||||||
android.R.attr.state_selected, android.R.attr.state_focused,
|
|
||||||
};
|
|
||||||
private static final int[] SELECTED_HOVERED_STATE_SET = {
|
|
||||||
android.R.attr.state_selected, android.R.attr.state_hovered,
|
|
||||||
};
|
|
||||||
private static final int[] SELECTED_STATE_SET = {
|
|
||||||
android.R.attr.state_selected,
|
|
||||||
};
|
|
||||||
|
|
||||||
private static final int[] ENABLED_PRESSED_STATE_SET = {
|
|
||||||
android.R.attr.state_enabled, android.R.attr.state_pressed
|
|
||||||
};
|
|
||||||
|
|
||||||
public static ColorStateList convertToRippleDrawableColor(@Nullable ColorStateList rippleColor) {
|
|
||||||
if (USE_FRAMEWORK_RIPPLE) {
|
|
||||||
int size = 2;
|
|
||||||
|
|
||||||
final int[][] states = new int[size][];
|
|
||||||
final int[] colors = new int[size];
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
// Ideally we would define a different composite color for each state, but that causes the
|
|
||||||
// ripple animation to abort prematurely.
|
|
||||||
// So we only allow two base states: selected, and non-selected. For each base state, we only
|
|
||||||
// base the ripple composite on its pressed state.
|
|
||||||
|
|
||||||
// Selected base state.
|
|
||||||
states[i] = SELECTED_STATE_SET;
|
|
||||||
colors[i] = getColorForState(rippleColor, SELECTED_PRESSED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
// Non-selected base state.
|
|
||||||
states[i] = StateSet.NOTHING;
|
|
||||||
colors[i] = getColorForState(rippleColor, PRESSED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
return new ColorStateList(states, colors);
|
|
||||||
} else {
|
|
||||||
int size = 10;
|
|
||||||
|
|
||||||
final int[][] states = new int[size][];
|
|
||||||
final int[] colors = new int[size];
|
|
||||||
int i = 0;
|
|
||||||
|
|
||||||
states[i] = SELECTED_PRESSED_STATE_SET;
|
|
||||||
colors[i] = getColorForState(rippleColor, SELECTED_PRESSED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
states[i] = SELECTED_HOVERED_FOCUSED_STATE_SET;
|
|
||||||
colors[i] = getColorForState(rippleColor, SELECTED_HOVERED_FOCUSED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
states[i] = SELECTED_FOCUSED_STATE_SET;
|
|
||||||
colors[i] = getColorForState(rippleColor, SELECTED_FOCUSED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
states[i] = SELECTED_HOVERED_STATE_SET;
|
|
||||||
colors[i] = getColorForState(rippleColor, SELECTED_HOVERED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
// Checked state.
|
|
||||||
states[i] = SELECTED_STATE_SET;
|
|
||||||
colors[i] = Color.TRANSPARENT;
|
|
||||||
i++;
|
|
||||||
|
|
||||||
states[i] = PRESSED_STATE_SET;
|
|
||||||
colors[i] = getColorForState(rippleColor, PRESSED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
states[i] = HOVERED_FOCUSED_STATE_SET;
|
|
||||||
colors[i] = getColorForState(rippleColor, HOVERED_FOCUSED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
states[i] = FOCUSED_STATE_SET;
|
|
||||||
colors[i] = getColorForState(rippleColor, FOCUSED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
states[i] = HOVERED_STATE_SET;
|
|
||||||
colors[i] = getColorForState(rippleColor, HOVERED_STATE_SET);
|
|
||||||
i++;
|
|
||||||
|
|
||||||
// Default state.
|
|
||||||
states[i] = StateSet.NOTHING;
|
|
||||||
colors[i] = Color.TRANSPARENT;
|
|
||||||
i++;
|
|
||||||
|
|
||||||
return new ColorStateList(states, colors);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ColorInt
|
|
||||||
private static int getColorForState(@Nullable ColorStateList rippleColor, int[] state) {
|
|
||||||
int color;
|
|
||||||
if (rippleColor != null) {
|
|
||||||
color = rippleColor.getColorForState(state, rippleColor.getDefaultColor());
|
|
||||||
} else {
|
|
||||||
color = Color.TRANSPARENT;
|
|
||||||
}
|
|
||||||
return USE_FRAMEWORK_RIPPLE ? doubleAlpha(color) : color;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* On API 21+, the framework composites a ripple color onto the display at about 50% opacity.
|
|
||||||
* Since we are providing precise ripple colors, cancel that out by doubling the opacity here.
|
|
||||||
*/
|
|
||||||
@ColorInt
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private static int doubleAlpha(@ColorInt int color) {
|
|
||||||
int alpha = Math.min(2 * Color.alpha(color), 255);
|
|
||||||
return ColorUtils.setAlphaComponent(color, alpha);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:shape="rectangle">
|
|
||||||
<solid android:color="?colorSurface" />
|
|
||||||
</shape>
|
|
|
@ -1,19 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?><!--
|
|
||||||
~ Copyright (c) 2019 Hemanth Savarala.
|
|
||||||
~
|
|
||||||
~ Licensed under the GNU General Public License v3
|
|
||||||
~
|
|
||||||
~ This is free software: you can redistribute it and/or modify it under
|
|
||||||
~ the terms of the GNU General Public License as published by
|
|
||||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
|
||||||
~
|
|
||||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
||||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
~ See the GNU General Public License for more details.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:shape="rectangle">
|
|
||||||
<solid android:color="?attr/colorSurface" />
|
|
||||||
<corners android:radius="8dp" />
|
|
||||||
</shape>
|
|
|
@ -1,5 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
|
||||||
<item android:color="@android:color/holo_blue_dark" android:state_checked="true" />
|
|
||||||
<item android:color="@android:color/darker_gray" />
|
|
||||||
</selector>
|
|
|
@ -1,64 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?><!--
|
|
||||||
~ Copyright (c) 2019 Hemanth Savarala.
|
|
||||||
~
|
|
||||||
~ Licensed under the GNU General Public License v3
|
|
||||||
~
|
|
||||||
~ This is free software: you can redistribute it and/or modify it under
|
|
||||||
~ the terms of the GNU General Public License as published by
|
|
||||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
|
||||||
~
|
|
||||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
||||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
~ See the GNU General Public License for more details.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_margin="2dp"
|
|
||||||
android:background="?attr/rectSelector"
|
|
||||||
android:minHeight="64dp"
|
|
||||||
android:padding="14dp"
|
|
||||||
tools:ignore="UnusedAttribute">
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/title"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textAppearance="@style/TextViewSubtitle1"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/text"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="@tools:sample/full_names" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/text"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textAppearance="@style/TextViewBody2"
|
|
||||||
android:textColor="?android:textColorSecondary"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/text2"
|
|
||||||
app:layout_constraintStart_toEndOf="@+id/title"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="@tools:sample/full_names" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/text2"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textAppearance="@style/TextViewBody2"
|
|
||||||
android:textColor="?android:textColorSecondary"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toEndOf="@+id/text"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="@tools:sample/full_names" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
|
@ -1,27 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:background="?colorSurface"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<FrameLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:elevation="0dp"
|
|
||||||
tools:ignore="UnusedAttribute">
|
|
||||||
|
|
||||||
<include layout="@layout/status_bar" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
|
||||||
|
|
||||||
<androidx.fragment.app.FragmentContainerView
|
|
||||||
android:id="@+id/fragment_container"
|
|
||||||
android:name="androidx.navigation.fragment.NavHostFragment"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
app:defaultNavHost="true"
|
|
||||||
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" />
|
|
||||||
</LinearLayout>
|
|
|
@ -1,39 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content">
|
|
||||||
|
|
||||||
<com.google.android.material.textfield.TextInputEditText
|
|
||||||
android:id="@+id/lyrics_field"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:backgroundTint="@color/design_default_color_primary"
|
|
||||||
android:hint="@string/paste_lyrics_here"
|
|
||||||
android:padding="30dp"
|
|
||||||
android:textSize="16sp"
|
|
||||||
app:layout_constraintBottom_toTopOf="@+id/negativeButton"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/negativeButton"
|
|
||||||
style="@style/Widget.MaterialComponents.Button.TextButton"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/positiveButton"
|
|
||||||
tools:text="Negative" />
|
|
||||||
|
|
||||||
<Button
|
|
||||||
android:id="@+id/positiveButton"
|
|
||||||
style="@style/Widget.MaterialComponents.Button.TextButton"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
tools:text="Positive" />
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
|
@ -1,49 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?><!--
|
|
||||||
~ Copyright (c) 2019 Hemanth Savarala.
|
|
||||||
~
|
|
||||||
~ Licensed under the GNU General Public License v3
|
|
||||||
~
|
|
||||||
~ This is free software: you can redistribute it and/or modify it under
|
|
||||||
~ the terms of the GNU General Public License as published by
|
|
||||||
~ the Free Software Foundation either version 3 of the License, or (at your option) any later version.
|
|
||||||
~
|
|
||||||
~ This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
|
||||||
~ without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
||||||
~ See the GNU General Public License for more details.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_margin="2dp"
|
|
||||||
android:background="?attr/rectSelector"
|
|
||||||
android:minHeight="64dp"
|
|
||||||
android:padding="14dp"
|
|
||||||
tools:ignore="UnusedAttribute">
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/title"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textAppearance="@style/TextViewSubtitle1"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent"
|
|
||||||
tools:text="@tools:sample/full_names" />
|
|
||||||
|
|
||||||
<com.google.android.material.textview.MaterialTextView
|
|
||||||
android:id="@+id/text"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:singleLine="true"
|
|
||||||
android:textAppearance="@style/TextViewBody2"
|
|
||||||
android:textColor="?android:textColorSecondary"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toBottomOf="@id/title"
|
|
||||||
tools:text="@tools:sample/full_names" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
Loading…
Reference in a new issue