mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-03 23:58:55 +01:00 
			
		
		
		
	Less janky enum iteration
This commit is contained in:
		@@ -6,7 +6,7 @@ import android.content.res.Resources
 | 
			
		||||
import androidx.annotation.DrawableRes
 | 
			
		||||
import androidx.annotation.StringRes
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import kotlin.math.max
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.next
 | 
			
		||||
 | 
			
		||||
enum class OrientationType(val prefValue: Int, val flag: Int, @StringRes val stringRes: Int, @DrawableRes val iconRes: Int) {
 | 
			
		||||
    FREE(1, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED, R.string.rotation_free, R.drawable.ic_screen_rotation_24dp),
 | 
			
		||||
@@ -31,9 +31,13 @@ enum class OrientationType(val prefValue: Int, val flag: Int, @StringRes val str
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        fun getNextOrientation(preference: Int, resources: Resources): OrientationType {
 | 
			
		||||
            // There's only 4 options (1 to 4)
 | 
			
		||||
            val newOrientation = max(1, (preference + 1) % 5)
 | 
			
		||||
            return fromPreference(newOrientation, resources)
 | 
			
		||||
            val current = if (preference == 2) {
 | 
			
		||||
                // Avoid issue due to 2 types having the same prefValue
 | 
			
		||||
                LOCKED_LANDSCAPE
 | 
			
		||||
            } else {
 | 
			
		||||
                fromPreference(preference, resources)
 | 
			
		||||
            }
 | 
			
		||||
            return current.next()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,7 @@ package eu.kanade.tachiyomi.ui.reader.setting
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.StringRes
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import kotlin.math.max
 | 
			
		||||
import eu.kanade.tachiyomi.util.lang.next
 | 
			
		||||
 | 
			
		||||
enum class ReadingModeType(val prefValue: Int, @StringRes val stringRes: Int) {
 | 
			
		||||
    DEFAULT(0, R.string.default_viewer),
 | 
			
		||||
@@ -17,9 +17,8 @@ enum class ReadingModeType(val prefValue: Int, @StringRes val stringRes: Int) {
 | 
			
		||||
        fun fromPreference(preference: Int): ReadingModeType = values().find { it.prefValue == preference } ?: DEFAULT
 | 
			
		||||
 | 
			
		||||
        fun getNextReadingMode(preference: Int): ReadingModeType {
 | 
			
		||||
            // There's only 6 options (0 to 5)
 | 
			
		||||
            val newReadingMode = max(0, (preference + 1) % 6)
 | 
			
		||||
            return fromPreference(newReadingMode)
 | 
			
		||||
            val current = fromPreference(preference)
 | 
			
		||||
            return current.next()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,7 @@
 | 
			
		||||
package eu.kanade.tachiyomi.util.lang
 | 
			
		||||
 | 
			
		||||
inline fun <reified T : Enum<T>> T.next(): T {
 | 
			
		||||
    val values = enumValues<T>()
 | 
			
		||||
    val nextOrdinal = (ordinal + 1) % values.size
 | 
			
		||||
    return values[nextOrdinal]
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user