Add contribution templates
Add contribution templates for this project.
This commit is contained in:
parent
953e1291b6
commit
f85bd85c92
15 changed files with 103 additions and 40 deletions
8
.github/CONTRIBUTING.md
vendored
8
.github/CONTRIBUTING.md
vendored
|
@ -10,9 +10,9 @@ Please keep in mind when reporting an issue:
|
|||
- **Is it still relevant in the latest version?** Make sure to test it in the latest version.
|
||||
|
||||
If you do make an issue, Make sure to provide:
|
||||
- A summary of what you were doing before the bug/crash
|
||||
- What do you did that caused the bug/crash
|
||||
- A trace/logcat if possible, the longer the better.
|
||||
- A description of the bug/crash
|
||||
- A summary of the steps to create the bug/crash
|
||||
- A stack trace/logcat if possible, the longer the better.
|
||||
|
||||
If you have knowledge of Android/Kotlin in general, you could also go about fixing the bug yourself and opening a [Pull Request](https://github.com/OxygenCobalt/Auxio/pulls).
|
||||
|
||||
|
@ -23,7 +23,7 @@ These should also be logged in the [Issues](https://github.com/OxygenCobalt/Aux
|
|||
Please keep in mind when requesting a feature:
|
||||
- **Has it already been requested?** Make sure request for this feature is not already here.
|
||||
- **Has it been already added?** Make sure this feature has not already been added in the most recent release.
|
||||
- **Will it be accepted?** Read the [Accepted Additions and Requests](../info/ADDITIONS.md) in order to see the likelihood that your request will be accepted.
|
||||
- **Will it be accepted?** Read the [Accepted Additions and Requests](../info/ADDITIONS.md) in order to see the likelihood that your request will be implemented.
|
||||
|
||||
If you do make a request, provide the following:
|
||||
- What kind of addition is this? (A Full Feature? A new customization option? A UI Change?)
|
||||
|
|
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
32
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
|
@ -0,0 +1,32 @@
|
|||
---
|
||||
name: Bug/Crash Report
|
||||
about: Report an issue with Auxio
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug/crash**
|
||||
<!-- A clear and concise description of what the bug or crash is. -->
|
||||
|
||||
**To Reproduce**
|
||||
<!--
|
||||
Steps to reproduce the bug/crash:
|
||||
1. Go to X
|
||||
2. Click on Y
|
||||
3. Scroll down to Z
|
||||
4. See error
|
||||
-->
|
||||
|
||||
**Logs/Stack Traces**
|
||||
<!-- If possible, provide a stack trace or a Logcat. This can help identify the issue. -->
|
||||
|
||||
**Screenshots**
|
||||
<!-- If applicable, add screenshots to help explain your problem. -->
|
||||
|
||||
**Phone Information**
|
||||
<!-- Please provide information about your phone's android version/model. -->
|
||||
|
||||
**Due Diligence**
|
||||
|
||||
- [ ] I have read the [Contribution Guidelines](../CONTRIBUTING.md).
|
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
20
.github/ISSUE_TEMPLATE/feature_request.md
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
name: Bug/Crash Report
|
||||
about: Propose an idea for Auxio
|
||||
labels: enhancement
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the feature you want to implement**
|
||||
<!-- A clear and concise description of what you want to be added. -->
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
<!-- A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] -->
|
||||
|
||||
**Why do you think this will improve everyone's usage of Auxio?**
|
||||
<!-- Provide a rationale here -->
|
||||
|
||||
**Due Diligence**
|
||||
|
||||
- [ ] I have read the [Accepted Additions and Requests](../../info/ADDITIONS.md), and the [Contribution Guidelines](../CONTRIBUTING.md).
|
28
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
28
.github/PULL_REQUEST_TEMPLATE.md
vendored
Normal file
|
@ -0,0 +1,28 @@
|
|||
<!-- Please fill out all this information. -->
|
||||
|
||||
**What is it?**
|
||||
- [ ] Bugfix (user facing)
|
||||
- [ ] Feature (user facing)
|
||||
- [ ] Codebase improvement (dev facing)
|
||||
- [ ] Meta improvement to the project (dev facing)
|
||||
|
||||
**Description of changes**
|
||||
<!-- Bullet points or free-form text -->
|
||||
- Do this
|
||||
- Fix that
|
||||
- Listen to music
|
||||
|
||||
**Fixes the following issues**
|
||||
<!-- Also add any other links relevant to your change. -->
|
||||
-
|
||||
|
||||
**Any additional information**
|
||||
<!-- Also add any information relevant to this PR -->
|
||||
|
||||
**APK testing**
|
||||
<!-- Please create a debug APK for your changes. -->
|
||||
debug.zip
|
||||
|
||||
**Due Diligence**
|
||||
|
||||
- [ ] I have read the [Contribution Guidelines](CONTRIBUTING.md) and [Accepted additions & Requests](../info/ADDITIONS.md).
|
|
@ -16,7 +16,10 @@
|
|||
|
||||
Auxio is a local music player for android that I primarily built for myself.
|
||||
|
||||
It only has the features that I use out of a music player and nothing more, with a UI/UX mostly derived from [Spotify](https://spotify.com), but with elements from [Phonograph](https://github.com/kabouzeid/Phonograph) and [Music Player GO](https://github.com/OxygenCobalt/Auxio). Its meant to be consistent and reliable, while still being customizable and extendable if one wants to add their own features that I (Personally) don't need.
|
||||
It only has the features that I use out of a music player and nothing more, with a Spotify-Like UI/UX combined with elements from [Phonograph](https://github.com/kabouzeid/Phonograph) and [Music Player GO](https://github.com/enricocid/Music-Player-GO).
|
||||
Its meant to be consistent and reliable, while still being customizable and extendable if one wants to add their own features that I (Personally) don't need.
|
||||
|
||||
**Note:** Auxio is still early in development, meaning that some things may change as time passes.
|
||||
|
||||
## Screenshots
|
||||
|
||||
|
@ -40,6 +43,7 @@ It only has the features that I use out of a music player and nothing more, with
|
|||
- Full playback persistence system
|
||||
- Embedded covers support
|
||||
- Search Functionality
|
||||
- Audio Focus / Headset Management
|
||||
- No internet connectivity whatsoever
|
||||
- Kotlin from the ground-up
|
||||
- Modular, feature-based architecture
|
||||
|
|
|
@ -121,7 +121,7 @@ class PlaybackStateDatabase(context: Context) :
|
|||
|
||||
/**
|
||||
* Read the stored [PlaybackState] from the database, if there is one.
|
||||
* @return The stored [PlaybackState], null if there isn't one,.
|
||||
* @return The stored [PlaybackState], null if there isn't one.
|
||||
*/
|
||||
fun readState(): PlaybackState? {
|
||||
val database = writableDatabase
|
||||
|
|
|
@ -27,13 +27,9 @@ class LibraryViewModel : ViewModel(), SettingsManager.Callback {
|
|||
private var mDisplayMode = DisplayMode.SHOW_ARTISTS
|
||||
private var mIsNavigating = false
|
||||
|
||||
/** The current [SortMode] */
|
||||
val sortMode: LiveData<SortMode> get() = mSortMode
|
||||
/** The current library data */
|
||||
val libraryData: LiveData<List<BaseModel>> get() = mLibraryData
|
||||
/** The results from the last search query */
|
||||
val searchResults: LiveData<List<BaseModel>> get() = mSearchResults
|
||||
/** If LibraryFragment is already navigating */
|
||||
val isNavigating: Boolean get() = mIsNavigating
|
||||
|
||||
private val settingsManager = SettingsManager.getInstance()
|
||||
|
@ -110,9 +106,6 @@ class LibraryViewModel : ViewModel(), SettingsManager.Callback {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the search query.
|
||||
*/
|
||||
fun resetQuery() {
|
||||
mSearchResults.value = listOf()
|
||||
}
|
||||
|
@ -120,7 +113,7 @@ class LibraryViewModel : ViewModel(), SettingsManager.Callback {
|
|||
// --- LIBRARY FUNCTIONS ---
|
||||
|
||||
/**
|
||||
* Update the current [SortMode].
|
||||
* Update the current [SortMode] with a menu id.
|
||||
* @param itemId The id of the menu item selected.
|
||||
*/
|
||||
fun updateSortMode(@IdRes itemId: Int) {
|
||||
|
|
|
@ -28,7 +28,7 @@ class MusicStore private constructor() {
|
|||
private var mSongs = listOf<Song>()
|
||||
val songs: List<Song> get() = mSongs
|
||||
|
||||
/** All parent models loaded by Auxio */
|
||||
/** All parent models (ex Albums, Artists) loaded by Auxio */
|
||||
val parents: MutableList<BaseModel> by lazy {
|
||||
val parents = mutableListOf<BaseModel>()
|
||||
parents.addAll(mGenres)
|
||||
|
|
|
@ -100,7 +100,7 @@ fun ImageView.bindArtistImage(artist: Artist) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Bind the genre image for an artist.
|
||||
* Bind the genre image for a genre.
|
||||
*/
|
||||
@BindingAdapter("genreImage")
|
||||
fun ImageView.bindGenreImage(genre: Genre) {
|
||||
|
|
|
@ -53,23 +53,20 @@ class PlaybackViewModel : ViewModel(), PlaybackStateManager.Callback {
|
|||
val parent: LiveData<BaseModel?> get() = mParent
|
||||
/** The current playback position, in seconds */
|
||||
val position: LiveData<Long> get() = mPosition
|
||||
/** The current queue determined my [mode] and [parent] */
|
||||
|
||||
/** The current queue determined by [mode] and [parent] */
|
||||
val queue: LiveData<MutableList<Song>> get() = mQueue
|
||||
/** The queue created by the user. */
|
||||
val userQueue: LiveData<MutableList<Song>> get() = mUserQueue
|
||||
/** The current [PlaybackMode] that also determines the queue */
|
||||
val mode: LiveData<PlaybackMode> get() = mMode
|
||||
/** Whether the playback is paused or played. */
|
||||
|
||||
val isPlaying: LiveData<Boolean> get() = mIsPlaying
|
||||
/** Whether the queue is shuffled or not. */
|
||||
val isShuffling: LiveData<Boolean> get() = mIsShuffling
|
||||
/** The current [LoopMode] */
|
||||
/** The current repeat mode */
|
||||
val loopMode: LiveData<LoopMode> get() = mLoopMode
|
||||
/** Whether the user is seeking or not */
|
||||
val isSeeking: LiveData<Boolean> get() = mIsSeeking
|
||||
/** Whether to nav to an item or not */
|
||||
val navToItem: LiveData<BaseModel?> get() = mNavToItem
|
||||
/** Whether the play/pause button on CompactPlaybackFragment can animate */
|
||||
val canAnimate: Boolean get() = mCanAnimate
|
||||
|
||||
/** The position as a duration string. */
|
||||
|
|
|
@ -156,7 +156,7 @@ class QueueAdapter(
|
|||
}
|
||||
|
||||
/**
|
||||
* Generic ViewHolder for the **user queue header**. Has the clear queue button.
|
||||
* ViewHolder for the **user queue header**. Has the clear queue button.
|
||||
*/
|
||||
inner class UserQueueHeaderViewHolder(
|
||||
context: Context,
|
||||
|
|
|
@ -1,5 +1,8 @@
|
|||
package org.oxycblt.auxio.playback.state
|
||||
|
||||
/**
|
||||
* Enum that determines the playback repeat mode.
|
||||
*/
|
||||
enum class LoopMode {
|
||||
NONE, ONCE, INFINITE;
|
||||
|
||||
|
|
|
@ -851,7 +851,6 @@ class PlaybackStateManager private constructor() {
|
|||
|
||||
/**
|
||||
* Create an ordered queue based on an [Artist].
|
||||
* @return A list of the songs in the [Artist], ordered.
|
||||
*/
|
||||
private fun orderSongsInArtist(artist: Artist): MutableList<Song> {
|
||||
val final = mutableListOf<Song>()
|
||||
|
@ -865,7 +864,6 @@ class PlaybackStateManager private constructor() {
|
|||
|
||||
/**
|
||||
* Create an ordered queue based on a [Genre].
|
||||
* @return A list of the songs in the [Genre], ordered.
|
||||
*/
|
||||
private fun orderSongsInGenre(genre: Genre): MutableList<Song> {
|
||||
val final = mutableListOf<Song>()
|
||||
|
@ -887,29 +885,17 @@ class PlaybackStateManager private constructor() {
|
|||
* remove them on destruction with [removeCallback].
|
||||
*/
|
||||
interface Callback {
|
||||
/** Called when the song updates */
|
||||
fun onSongUpdate(song: Song?) {}
|
||||
/** Called when the parent updates */
|
||||
fun onParentUpdate(parent: BaseModel?) {}
|
||||
/** Called when the position updates */
|
||||
fun onPositionUpdate(position: Long) {}
|
||||
/** Called when the queue updates */
|
||||
fun onQueueUpdate(queue: MutableList<Song>) {}
|
||||
/** Called when the user queue updates */
|
||||
fun onUserQueueUpdate(userQueue: MutableList<Song>) {}
|
||||
/** Called when the mode updates */
|
||||
fun onModeUpdate(mode: PlaybackMode) {}
|
||||
/** Called when the index updates */
|
||||
fun onIndexUpdate(index: Int) {}
|
||||
/** Called when the playing status changes */
|
||||
fun onPlayingUpdate(isPlaying: Boolean) {}
|
||||
/** Called when the shuffle status changes */
|
||||
fun onShuffleUpdate(isShuffling: Boolean) {}
|
||||
/** Called when the loop mode changes */
|
||||
fun onLoopUpdate(mode: LoopMode) {}
|
||||
/** Called when a seek is confirmed */
|
||||
fun onSeekConfirm(position: Long) {}
|
||||
/** Called when the restore process is finished */
|
||||
fun onRestoreFinish() {}
|
||||
}
|
||||
|
||||
|
|
|
@ -96,7 +96,7 @@ class SongsFragment : Fragment() {
|
|||
}
|
||||
|
||||
/**
|
||||
* Go through the fast scroller process.
|
||||
* Go through the fast scroller setup process.
|
||||
* @param binding Binding required
|
||||
*/
|
||||
private fun setupFastScroller(binding: FragmentSongsBinding) {
|
||||
|
|
|
@ -18,7 +18,7 @@ These will be accepted/added if I see the value in the addition of those options
|
|||
|
||||
## Feature Additions and UI Changes
|
||||
|
||||
These are far less likely to be accepted/added. As I said, I want to avoid Auxio from becoming overly bloated with features I do not use, and therefore **I will only accept features/UI changes that directly benefit my own usage.** If they do not, then I will reject/ignore them.
|
||||
These are far less likely to be accepted/added. As I said, I want to avoid Auxio from becoming overly bloated with features I do not use, and therefore **I will only accept features/UI changes that directly benefit my own usage.** If they do not, then I will reject/ignore them. This does not rule out certain additions, but I am generally less likely to accept these kinds of requests.
|
||||
|
||||
Feel free to fork Auxio to add your own features however.
|
||||
|
||||
|
|
Loading…
Reference in a new issue