// Copyright © 2017-2025 QL-Win Contributors // // This file is part of QuickLook program. // // This program 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 program 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. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . using System.Collections.Generic; namespace QuickLook.Plugin.AppViewer.PackageParsers.Apk; public class ApiLevel { public string AndroidVersion { get; set; } public string APILevel { get; set; } public string Codename { get; set; } public string Release { get; set; } public override string ToString() { if (AndroidVersion == null || Codename == null || Release == null) { return $"API Level {APILevel}"; } return $"API Level {APILevel} ({AndroidVersion} {Codename} {Release})"; } public static ApiLevel Create(string apiLevel) { if (apiLevels.TryGetValue(apiLevel, out var level)) { return level; } return new ApiLevel { APILevel = apiLevel, AndroidVersion = null, Codename = null, Release = null, }; } private static readonly Dictionary apiLevels = new() { ["35"] = new ApiLevel { APILevel = "35", AndroidVersion = "Android 15", Codename = "VanillaIceCream", Release = "2025" }, ["34"] = new ApiLevel { APILevel = "34", AndroidVersion = "Android 14", Codename = "UpsideDownCake", Release = "2023" }, ["33"] = new ApiLevel { APILevel = "33", AndroidVersion = "Android 13", Codename = "Tiramisu", Release = "2022" }, ["32"] = new ApiLevel { APILevel = "32", AndroidVersion = "Android 12L", Codename = "", Release = "2022" }, ["31"] = new ApiLevel { APILevel = "31", AndroidVersion = "Android 12", Codename = "Snow Cone", Release = "2021" }, ["30"] = new ApiLevel { APILevel = "30", AndroidVersion = "Android 11", Codename = "Red Velvet Cake", Release = "2020" }, ["29"] = new ApiLevel { APILevel = "29", AndroidVersion = "Android 10", Codename = "Quince Tart", Release = "2019" }, ["28"] = new ApiLevel { APILevel = "28", AndroidVersion = "Android 9", Codename = "Pie", Release = "2018" }, ["27"] = new ApiLevel { APILevel = "27", AndroidVersion = "Android 8.1", Codename = "Oreo MR1", Release = "2017" }, ["26"] = new ApiLevel { APILevel = "26", AndroidVersion = "Android 8.0", Codename = "Oreo", Release = "2017" }, ["25"] = new ApiLevel { APILevel = "25", AndroidVersion = "Android 7.1", Codename = "Nougat MR1", Release = "2016" }, ["24"] = new ApiLevel { APILevel = "24", AndroidVersion = "Android 7.0", Codename = "Nougat", Release = "2016" }, ["23"] = new ApiLevel { APILevel = "23", AndroidVersion = "Android 6.0", Codename = "Marshmallow", Release = "2015" }, ["22"] = new ApiLevel { APILevel = "22", AndroidVersion = "Android 5.1", Codename = "Lollipop MR1", Release = "2015" }, ["21"] = new ApiLevel { APILevel = "21", AndroidVersion = "Android 5.0", Codename = "Lollipop", Release = "2014" } }; }