fix: Add build script and fix manifest
- Add build-apk.sh for easy compilation - Simplify AndroidManifest.xml - Fix themes.xml to use basic Android themes - Enable BuildConfig - Add okhttp-dnsoverhttps dependency
This commit is contained in:
@@ -4,45 +4,32 @@
|
||||
|
||||
<!-- Internet permission for streaming IPTV content -->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
|
||||
<!-- Network state permissions for monitoring connectivity -->
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
||||
|
||||
<!-- Wake lock to keep screen on during playback -->
|
||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||
|
||||
<!-- Picture-in-Picture mode for Android O and above -->
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||
|
||||
<!-- Permissions for downloading and installing APK updates -->
|
||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
|
||||
android:maxSdkVersion="28" />
|
||||
|
||||
<application
|
||||
android:name=".IPTVApplication"
|
||||
android:allowBackup="true"
|
||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||
android:fullBackupContent="@xml/backup_rules"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:icon="@android:drawable/ic_media_play"
|
||||
android:label="@string/app_name"
|
||||
android:roundIcon="@mipmap/ic_launcher_round"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.IPTVApp"
|
||||
android:usesCleartextTraffic="true"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
tools:targetApi="34">
|
||||
|
||||
<!-- Main Activity - Entry point of the application -->
|
||||
<!-- Main Activity -->
|
||||
<activity
|
||||
android:name=".ui.MainActivity"
|
||||
android:name=".MainActivity"
|
||||
android:exported="true"
|
||||
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|keyboard|keyboardHidden|navigation"
|
||||
android:launchMode="singleTask"
|
||||
android:screenOrientation="unspecified"
|
||||
android:theme="@style/Theme.IPTVApp">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
@@ -59,86 +46,19 @@
|
||||
<data android:mimeType="audio/x-mpegurl" />
|
||||
<data android:mimeType="application/vnd.apple.mpegurl" />
|
||||
<data android:mimeType="application/x-mpegurl" />
|
||||
<data android:mimeType="text/plain" />
|
||||
</intent-filter>
|
||||
|
||||
<!-- Intent filter for opening IPTV URLs -->
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<category android:name="android.intent.category.BROWSABLE" />
|
||||
<data android:scheme="http" />
|
||||
<data android:scheme="https" />
|
||||
<data android:host="*" />
|
||||
<data android:pathPattern=".*\\.m3u" />
|
||||
<data android:pathPattern=".*\\.m3u8" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- Player Activity - Full screen video playback -->
|
||||
<activity
|
||||
android:name=".ui.PlayerActivity"
|
||||
android:name=".PlayerActivity"
|
||||
android:configChanges="orientation|screenSize|smallestScreenSize|screenLayout|keyboard|keyboardHidden|navigation"
|
||||
android:exported="false"
|
||||
android:launchMode="singleTop"
|
||||
android:screenOrientation="unspecified"
|
||||
android:theme="@style/Theme.IPTVApp.Fullscreen"
|
||||
android:supportsPictureInPicture="true"
|
||||
android:resizeableActivity="true"
|
||||
android:turnScreenOn="true"
|
||||
android:keepScreenOn="true" />
|
||||
|
||||
<!-- Settings Activity -->
|
||||
<activity
|
||||
android:name=".ui.SettingsActivity"
|
||||
android:exported="false"
|
||||
android:label="@string/settings"
|
||||
android:parentActivityName=".ui.MainActivity"
|
||||
android:theme="@style/Theme.IPTVApp" />
|
||||
|
||||
<!-- Channel List Activity -->
|
||||
<activity
|
||||
android:name=".ui.ChannelListActivity"
|
||||
android:exported="false"
|
||||
android:label="@string/channels"
|
||||
android:parentActivityName=".ui.MainActivity"
|
||||
android:theme="@style/Theme.IPTVApp" />
|
||||
|
||||
<!-- EPG Activity - Electronic Program Guide -->
|
||||
<activity
|
||||
android:name=".ui.EpgActivity"
|
||||
android:exported="false"
|
||||
android:label="@string/epg"
|
||||
android:parentActivityName=".ui.MainActivity"
|
||||
android:theme="@style/Theme.IPTVApp" />
|
||||
|
||||
<!-- ExoPlayer Download Service for offline content -->
|
||||
<service
|
||||
android:name=".service.DownloadService"
|
||||
android:exported="false"
|
||||
android:foregroundServiceType="dataSync" />
|
||||
|
||||
<!-- Background playback service -->
|
||||
<service
|
||||
android:name=".service.PlaybackService"
|
||||
android:exported="false"
|
||||
android:foregroundServiceType="mediaPlayback" />
|
||||
|
||||
<!-- TV Launcher Intent for Android TV support -->
|
||||
<activity
|
||||
android:name=".ui.TvMainActivity"
|
||||
android:exported="true"
|
||||
android:theme="@style/Theme.IPTVApp.Leanback"
|
||||
android:banner="@drawable/banner"
|
||||
android:icon="@drawable/banner"
|
||||
android:logo="@drawable/banner"
|
||||
android:screenOrientation="landscape">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<!-- FileProvider for sharing APK files -->
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
@@ -150,20 +70,6 @@
|
||||
android:resource="@xml/file_provider_paths" />
|
||||
</provider>
|
||||
|
||||
<!-- Intent filter for handling downloaded APKs -->
|
||||
<activity
|
||||
android:name=".ui.InstallApkActivity"
|
||||
android:exported="false"
|
||||
android:theme="@style/Theme.IPTVApp">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.VIEW" />
|
||||
<category android:name="android.intent.category.DEFAULT" />
|
||||
<data android:scheme="file" />
|
||||
<data android:scheme="content" />
|
||||
<data android:mimeType="application/vnd.android.package-archive" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
||||
@@ -1,188 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<!-- Base application theme - Light -->
|
||||
<style name="Theme.IPTVApp" parent="Theme.Material3.Light.NoActionBar">
|
||||
<!-- Primary brand colors -->
|
||||
<item name="colorPrimary">@color/primary</item>
|
||||
<item name="colorPrimaryDark">@color/primary_dark</item>
|
||||
<item name="colorPrimaryContainer">@color/primary_light</item>
|
||||
<item name="colorOnPrimary">@color/text_on_primary</item>
|
||||
<item name="colorOnPrimaryContainer">@color/primary_variant</item>
|
||||
|
||||
<!-- Secondary brand colors -->
|
||||
<item name="colorSecondary">@color/secondary</item>
|
||||
<item name="colorSecondaryContainer">@color/secondary_light</item>
|
||||
<item name="colorOnSecondary">@color/text_on_secondary</item>
|
||||
<item name="colorOnSecondaryContainer">@color/secondary_variant</item>
|
||||
|
||||
<!-- Tertiary colors -->
|
||||
<item name="colorTertiary">@color/tertiary</item>
|
||||
<item name="colorTertiaryContainer">@color/tertiary_light</item>
|
||||
<item name="colorOnTertiary">@color/text_on_primary</item>
|
||||
<item name="colorOnTertiaryContainer">@color/tertiary_dark</item>
|
||||
|
||||
<!-- Surface colors -->
|
||||
<item name="colorSurface">@color/surface</item>
|
||||
<item name="colorSurfaceVariant">@color/surface_variant</item>
|
||||
<item name="colorOnSurface">@color/text_primary</item>
|
||||
<item name="colorOnSurfaceVariant">@color/text_secondary</item>
|
||||
|
||||
<!-- Background colors -->
|
||||
<item name="android:colorBackground">@color/background</item>
|
||||
<item name="colorOnBackground">@color/text_primary</item>
|
||||
|
||||
<!-- Error colors -->
|
||||
<item name="colorError">@color/error</item>
|
||||
<item name="colorErrorContainer">@color/error</item>
|
||||
<item name="colorOnError">@color/text_on_primary</item>
|
||||
<item name="colorOnErrorContainer">@color/error</item>
|
||||
|
||||
<!-- Outline -->
|
||||
<item name="colorOutline">@color/border</item>
|
||||
<item name="colorOutlineVariant">@color/divider</item>
|
||||
|
||||
<!-- Status bar -->
|
||||
<!-- Base application theme -->
|
||||
<style name="Theme.IPTVApp" parent="android:Theme.Material.Light.NoActionBar">
|
||||
<item name="android:colorPrimary">@color/primary</item>
|
||||
<item name="android:colorPrimaryDark">@color/primary_dark</item>
|
||||
<item name="android:colorAccent">@color/secondary</item>
|
||||
<item name="android:statusBarColor">@color/primary_dark</item>
|
||||
<item name="android:windowLightStatusBar">true</item>
|
||||
|
||||
<!-- Navigation bar -->
|
||||
<item name="android:navigationBarColor">@color/background</item>
|
||||
<item name="android:windowLightNavigationBar">true</item>
|
||||
|
||||
<!-- Typography -->
|
||||
<item name="textAppearanceDisplayLarge">@style/TextAppearance.IPTV.DisplayLarge</item>
|
||||
<item name="textAppearanceDisplayMedium">@style/TextAppearance.IPTV.DisplayMedium</item>
|
||||
<item name="textAppearanceDisplaySmall">@style/TextAppearance.IPTV.DisplaySmall</item>
|
||||
<item name="textAppearanceHeadlineLarge">@style/TextAppearance.IPTV.HeadlineLarge</item>
|
||||
<item name="textAppearanceHeadlineMedium">@style/TextAppearance.IPTV.HeadlineMedium</item>
|
||||
<item name="textAppearanceHeadlineSmall">@style/TextAppearance.IPTV.HeadlineSmall</item>
|
||||
<item name="textAppearanceTitleLarge">@style/TextAppearance.IPTV.TitleLarge</item>
|
||||
<item name="textAppearanceTitleMedium">@style/TextAppearance.IPTV.TitleMedium</item>
|
||||
<item name="textAppearanceTitleSmall">@style/TextAppearance.IPTV.TitleSmall</item>
|
||||
<item name="textAppearanceBodyLarge">@style/TextAppearance.IPTV.BodyLarge</item>
|
||||
<item name="textAppearanceBodyMedium">@style/TextAppearance.IPTV.BodyMedium</item>
|
||||
<item name="textAppearanceBodySmall">@style/TextAppearance.IPTV.BodySmall</item>
|
||||
<item name="textAppearanceLabelLarge">@style/TextAppearance.IPTV.LabelLarge</item>
|
||||
<item name="textAppearanceLabelMedium">@style/TextAppearance.IPTV.LabelMedium</item>
|
||||
<item name="textAppearanceLabelSmall">@style/TextAppearance.IPTV.LabelSmall</item>
|
||||
|
||||
<!-- Shape appearance -->
|
||||
<item name="shapeAppearanceSmallComponent">@style/ShapeAppearance.IPTV.SmallComponent</item>
|
||||
<item name="shapeAppearanceMediumComponent">@style/ShapeAppearance.IPTV.MediumComponent</item>
|
||||
<item name="shapeAppearanceLargeComponent">@style/ShapeAppearance.IPTV.LargeComponent</item>
|
||||
|
||||
<!-- Component styles -->
|
||||
<item name="materialButtonStyle">@style/Widget.IPTV.Button</item>
|
||||
<item name="materialCardViewStyle">@style/Widget.IPTV.CardView</item>
|
||||
<item name="textInputStyle">@style/Widget.IPTV.TextInputLayout</item>
|
||||
<item name="toolbarStyle">@style/Widget.IPTV.Toolbar</item>
|
||||
<item name="appBarLayoutStyle">@style/Widget.IPTV.AppBar</item>
|
||||
<item name="bottomNavigationStyle">@style/Widget.IPTV.BottomNavigation</item>
|
||||
<item name="tabStyle">@style/Widget.IPTV.TabLayout</item>
|
||||
<item name="sliderStyle">@style/Widget.IPTV.Slider</item>
|
||||
<item name="switchStyle">@style/Widget.IPTV.Switch</item>
|
||||
<item name="checkboxStyle">@style/Widget.IPTV.CheckBox</item>
|
||||
<item name="radioButtonStyle">@style/Widget.IPTV.RadioButton</item>
|
||||
|
||||
<!-- Dialog themes -->
|
||||
<item name="materialAlertDialogTheme">@style/ThemeOverlay.IPTV.MaterialAlertDialog</item>
|
||||
<item name="alertDialogTheme">@style/ThemeOverlay.IPTV.AlertDialog</item>
|
||||
|
||||
<!-- Popup menu -->
|
||||
<item name="popupMenuStyle">@style/Widget.IPTV.PopupMenu</item>
|
||||
</style>
|
||||
|
||||
<!-- Dark Theme -->
|
||||
<style name="Theme.IPTVApp.Dark" parent="Theme.Material3.Dark.NoActionBar">
|
||||
<!-- Primary brand colors -->
|
||||
<item name="colorPrimary">@color/primary_light</item>
|
||||
<item name="colorPrimaryDark">@color/primary</item>
|
||||
<item name="colorPrimaryContainer">@color/primary_variant</item>
|
||||
<item name="colorOnPrimary">@color/text_on_primary</item>
|
||||
<item name="colorOnPrimaryContainer">@color/primary_light</item>
|
||||
|
||||
<!-- Secondary brand colors -->
|
||||
<item name="colorSecondary">@color/secondary_light</item>
|
||||
<item name="colorSecondaryContainer">@color/secondary_variant</item>
|
||||
<item name="colorOnSecondary">@color/text_on_secondary</item>
|
||||
<item name="colorOnSecondaryContainer">@color/secondary_light</item>
|
||||
|
||||
<!-- Tertiary colors -->
|
||||
<item name="colorTertiary">@color/tertiary_light</item>
|
||||
<item name="colorTertiaryContainer">@color/tertiary_dark</item>
|
||||
<item name="colorOnTertiary">@color/text_on_primary</item>
|
||||
<item name="colorOnTertiaryContainer">@color/tertiary_light</item>
|
||||
|
||||
<!-- Surface colors -->
|
||||
<item name="colorSurface">@color/surface_dark</item>
|
||||
<item name="colorSurfaceVariant">@color/surface_variant_dark</item>
|
||||
<item name="colorOnSurface">@color/text_primary_dark</item>
|
||||
<item name="colorOnSurfaceVariant">@color/text_secondary_dark</item>
|
||||
|
||||
<!-- Background colors -->
|
||||
<item name="android:colorBackground">@color/background_dark</item>
|
||||
<item name="colorOnBackground">@color/text_primary_dark</item>
|
||||
|
||||
<!-- Error colors -->
|
||||
<item name="colorError">@color/error_dark</item>
|
||||
<item name="colorErrorContainer">@color/error_dark</item>
|
||||
<item name="colorOnError">@color/text_on_primary</item>
|
||||
<item name="colorOnErrorContainer">@color/error_dark</item>
|
||||
|
||||
<!-- Outline -->
|
||||
<item name="colorOutline">@color/border_dark</item>
|
||||
<item name="colorOutlineVariant">@color/divider_dark</item>
|
||||
|
||||
<!-- Status bar -->
|
||||
<style name="Theme.IPTVApp.Dark" parent="android:Theme.Material.NoActionBar">
|
||||
<item name="android:colorPrimary">@color/primary_light</item>
|
||||
<item name="android:colorPrimaryDark">@color/primary</item>
|
||||
<item name="android:colorAccent">@color/secondary_light</item>
|
||||
<item name="android:statusBarColor">@color/background_dark</item>
|
||||
<item name="android:windowLightStatusBar">false</item>
|
||||
|
||||
<!-- Navigation bar -->
|
||||
<item name="android:navigationBarColor">@color/background_dark</item>
|
||||
<item name="android:windowLightNavigationBar">false</item>
|
||||
|
||||
<!-- Typography -->
|
||||
<item name="textAppearanceDisplayLarge">@style/TextAppearance.IPTV.DisplayLarge</item>
|
||||
<item name="textAppearanceDisplayMedium">@style/TextAppearance.IPTV.DisplayMedium</item>
|
||||
<item name="textAppearanceDisplaySmall">@style/TextAppearance.IPTV.DisplaySmall</item>
|
||||
<item name="textAppearanceHeadlineLarge">@style/TextAppearance.IPTV.HeadlineLarge</item>
|
||||
<item name="textAppearanceHeadlineMedium">@style/TextAppearance.IPTV.HeadlineMedium</item>
|
||||
<item name="textAppearanceHeadlineSmall">@style/TextAppearance.IPTV.HeadlineSmall</item>
|
||||
<item name="textAppearanceTitleLarge">@style/TextAppearance.IPTV.TitleLarge</item>
|
||||
<item name="textAppearanceTitleMedium">@style/TextAppearance.IPTV.TitleMedium</item>
|
||||
<item name="textAppearanceTitleSmall">@style/TextAppearance.IPTV.TitleSmall</item>
|
||||
<item name="textAppearanceBodyLarge">@style/TextAppearance.IPTV.BodyLarge</item>
|
||||
<item name="textAppearanceBodyMedium">@style/TextAppearance.IPTV.BodyMedium</item>
|
||||
<item name="textAppearanceBodySmall">@style/TextAppearance.IPTV.BodySmall</item>
|
||||
<item name="textAppearanceLabelLarge">@style/TextAppearance.IPTV.LabelLarge</item>
|
||||
<item name="textAppearanceLabelMedium">@style/TextAppearance.IPTV.LabelMedium</item>
|
||||
<item name="textAppearanceLabelSmall">@style/TextAppearance.IPTV.LabelSmall</item>
|
||||
|
||||
<!-- Shape appearance -->
|
||||
<item name="shapeAppearanceSmallComponent">@style/ShapeAppearance.IPTV.SmallComponent</item>
|
||||
<item name="shapeAppearanceMediumComponent">@style/ShapeAppearance.IPTV.MediumComponent</item>
|
||||
<item name="shapeAppearanceLargeComponent">@style/ShapeAppearance.IPTV.LargeComponent</item>
|
||||
|
||||
<!-- Component styles -->
|
||||
<item name="materialButtonStyle">@style/Widget.IPTV.Button</item>
|
||||
<item name="materialCardViewStyle">@style/Widget.IPTV.CardView.Dark</item>
|
||||
<item name="textInputStyle">@style/Widget.IPTV.TextInputLayout.Dark</item>
|
||||
<item name="toolbarStyle">@style/Widget.IPTV.Toolbar.Dark</item>
|
||||
<item name="appBarLayoutStyle">@style/Widget.IPTV.AppBar.Dark</item>
|
||||
<item name="bottomNavigationStyle">@style/Widget.IPTV.BottomNavigation.Dark</item>
|
||||
<item name="tabStyle">@style/Widget.IPTV.TabLayout.Dark</item>
|
||||
<item name="sliderStyle">@style/Widget.IPTV.Slider.Dark</item>
|
||||
<item name="switchStyle">@style/Widget.IPTV.Switch.Dark</item>
|
||||
<item name="checkboxStyle">@style/Widget.IPTV.CheckBox.Dark</item>
|
||||
<item name="radioButtonStyle">@style/Widget.IPTV.RadioButton.Dark</item>
|
||||
|
||||
<!-- Dialog themes -->
|
||||
<item name="materialAlertDialogTheme">@style/ThemeOverlay.IPTV.MaterialAlertDialog.Dark</item>
|
||||
<item name="alertDialogTheme">@style/ThemeOverlay.IPTV.AlertDialog.Dark</item>
|
||||
|
||||
<!-- Popup menu -->
|
||||
<item name="popupMenuStyle">@style/Widget.IPTV.PopupMenu.Dark</item>
|
||||
</style>
|
||||
|
||||
<!-- Fullscreen Player Theme (Immersive) -->
|
||||
@@ -193,7 +31,6 @@
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
<item name="android:windowTranslucentNavigation">true</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:background">@android:color/black</item>
|
||||
@@ -207,282 +44,9 @@
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
<item name="android:windowTranslucentNavigation">true</item>
|
||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:background">@android:color/black</item>
|
||||
</style>
|
||||
|
||||
<!-- Android TV / Leanback Theme -->
|
||||
<style name="Theme.IPTVApp.Leanback" parent="Theme.Leanback">
|
||||
<item name="android:windowBackground">@android:color/black</item>
|
||||
<item name="android:colorPrimary">@color/primary</item>
|
||||
<item name="android:colorPrimaryDark">@color/primary_dark</item>
|
||||
<item name="android:colorAccent">@color/secondary</item>
|
||||
</style>
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- Text Appearances -->
|
||||
<!-- ============================================ -->
|
||||
|
||||
<style name="TextAppearance.IPTV.DisplayLarge" parent="TextAppearance.Material3.DisplayLarge">
|
||||
<item name="fontFamily">@font/roboto_regular</item>
|
||||
<item name="android:fontFamily">@font/roboto_regular</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.DisplayMedium" parent="TextAppearance.Material3.DisplayMedium">
|
||||
<item name="fontFamily">@font/roboto_regular</item>
|
||||
<item name="android:fontFamily">@font/roboto_regular</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.DisplaySmall" parent="TextAppearance.Material3.DisplaySmall">
|
||||
<item name="fontFamily">@font/roboto_regular</item>
|
||||
<item name="android:fontFamily">@font/roboto_regular</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.HeadlineLarge" parent="TextAppearance.Material3.HeadlineLarge">
|
||||
<item name="fontFamily">@font/roboto_medium</item>
|
||||
<item name="android:fontFamily">@font/roboto_medium</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.HeadlineMedium" parent="TextAppearance.Material3.HeadlineMedium">
|
||||
<item name="fontFamily">@font/roboto_medium</item>
|
||||
<item name="android:fontFamily">@font/roboto_medium</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.HeadlineSmall" parent="TextAppearance.Material3.HeadlineSmall">
|
||||
<item name="fontFamily">@font/roboto_medium</item>
|
||||
<item name="android:fontFamily">@font/roboto_medium</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.TitleLarge" parent="TextAppearance.Material3.TitleLarge">
|
||||
<item name="fontFamily">@font/roboto_medium</item>
|
||||
<item name="android:fontFamily">@font/roboto_medium</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.TitleMedium" parent="TextAppearance.Material3.TitleMedium">
|
||||
<item name="fontFamily">@font/roboto_medium</item>
|
||||
<item name="android:fontFamily">@font/roboto_medium</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.TitleSmall" parent="TextAppearance.Material3.TitleSmall">
|
||||
<item name="fontFamily">@font/roboto_medium</item>
|
||||
<item name="android:fontFamily">@font/roboto_medium</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.BodyLarge" parent="TextAppearance.Material3.BodyLarge">
|
||||
<item name="fontFamily">@font/roboto_regular</item>
|
||||
<item name="android:fontFamily">@font/roboto_regular</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.BodyMedium" parent="TextAppearance.Material3.BodyMedium">
|
||||
<item name="fontFamily">@font/roboto_regular</item>
|
||||
<item name="android:fontFamily">@font/roboto_regular</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.BodySmall" parent="TextAppearance.Material3.BodySmall">
|
||||
<item name="fontFamily">@font/roboto_regular</item>
|
||||
<item name="android:fontFamily">@font/roboto_regular</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.LabelLarge" parent="TextAppearance.Material3.LabelLarge">
|
||||
<item name="fontFamily">@font/roboto_medium</item>
|
||||
<item name="android:fontFamily">@font/roboto_medium</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.LabelMedium" parent="TextAppearance.Material3.LabelMedium">
|
||||
<item name="fontFamily">@font/roboto_medium</item>
|
||||
<item name="android:fontFamily">@font/roboto_medium</item>
|
||||
</style>
|
||||
|
||||
<style name="TextAppearance.IPTV.LabelSmall" parent="TextAppearance.Material3.LabelSmall">
|
||||
<item name="fontFamily">@font/roboto_medium</item>
|
||||
<item name="android:fontFamily">@font/roboto_medium</item>
|
||||
</style>
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- Shape Appearances -->
|
||||
<!-- ============================================ -->
|
||||
|
||||
<style name="ShapeAppearance.IPTV.SmallComponent" parent="ShapeAppearance.Material3.SmallComponent">
|
||||
<item name="cornerFamily">rounded</item>
|
||||
<item name="cornerSize">8dp</item>
|
||||
</style>
|
||||
|
||||
<style name="ShapeAppearance.IPTV.MediumComponent" parent="ShapeAppearance.Material3.MediumComponent">
|
||||
<item name="cornerFamily">rounded</item>
|
||||
<item name="cornerSize">12dp</item>
|
||||
</style>
|
||||
|
||||
<style name="ShapeAppearance.IPTV.LargeComponent" parent="ShapeAppearance.Material3.LargeComponent">
|
||||
<item name="cornerFamily">rounded</item>
|
||||
<item name="cornerSize">16dp</item>
|
||||
</style>
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- Widget Styles -->
|
||||
<!-- ============================================ -->
|
||||
|
||||
<!-- Button -->
|
||||
<style name="Widget.IPTV.Button" parent="Widget.Material3.Button">
|
||||
<item name="android:textAppearance">@style/TextAppearance.IPTV.LabelLarge</item>
|
||||
<item name="android:minHeight">48dp</item>
|
||||
<item name="cornerRadius">8dp</item>
|
||||
</style>
|
||||
|
||||
<!-- CardView -->
|
||||
<style name="Widget.IPTV.CardView" parent="Widget.Material3.CardView.Elevated">
|
||||
<item name="cardBackgroundColor">@color/surface</item>
|
||||
<item name="cardElevation">2dp</item>
|
||||
<item name="cardCornerRadius">12dp</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.CardView.Dark" parent="Widget.Material3.CardView.Elevated">
|
||||
<item name="cardBackgroundColor">@color/surface_dark</item>
|
||||
<item name="cardElevation">2dp</item>
|
||||
<item name="cardCornerRadius">12dp</item>
|
||||
</style>
|
||||
|
||||
<!-- TextInputLayout -->
|
||||
<style name="Widget.IPTV.TextInputLayout" parent="Widget.Material3.TextInputLayout.OutlinedBox">
|
||||
<item name="boxStrokeColor">@color/primary</item>
|
||||
<item name="hintTextColor">@color/primary</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.TextInputLayout.Dark" parent="Widget.Material3.TextInputLayout.OutlinedBox">
|
||||
<item name="boxStrokeColor">@color/primary_light</item>
|
||||
<item name="hintTextColor">@color/primary_light</item>
|
||||
</style>
|
||||
|
||||
<!-- Toolbar -->
|
||||
<style name="Widget.IPTV.Toolbar" parent="Widget.Material3.Toolbar">
|
||||
<item name="android:background">@color/primary</item>
|
||||
<item name="titleTextColor">@color/text_on_primary</item>
|
||||
<item name="subtitleTextColor">@color/text_on_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.Toolbar.Dark" parent="Widget.Material3.Toolbar">
|
||||
<item name="android:background">@color/surface_dark</item>
|
||||
<item name="titleTextColor">@color/text_primary_dark</item>
|
||||
<item name="subtitleTextColor">@color/text_secondary_dark</item>
|
||||
</style>
|
||||
|
||||
<!-- AppBar -->
|
||||
<style name="Widget.IPTV.AppBar" parent="Widget.Material3.AppBarLayout">
|
||||
<item name="android:background">@color/primary</item>
|
||||
<item name="elevation">4dp</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.AppBar.Dark" parent="Widget.Material3.AppBarLayout">
|
||||
<item name="android:background">@color/surface_dark</item>
|
||||
<item name="elevation">4dp</item>
|
||||
</style>
|
||||
|
||||
<!-- BottomNavigation -->
|
||||
<style name="Widget.IPTV.BottomNavigation" parent="Widget.Material3.BottomNavigationView">
|
||||
<item name="android:background">@color/surface</item>
|
||||
<item name="itemIconTint">@color/navigation_item</item>
|
||||
<item name="itemTextColor">@color/navigation_item</item>
|
||||
<item name="itemRippleColor">@color/ripple</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.BottomNavigation.Dark" parent="Widget.Material3.BottomNavigationView">
|
||||
<item name="android:background">@color/surface_dark</item>
|
||||
<item name="itemIconTint">@color/navigation_item_dark</item>
|
||||
<item name="itemTextColor">@color/navigation_item_dark</item>
|
||||
<item name="itemRippleColor">@color/ripple_dark</item>
|
||||
</style>
|
||||
|
||||
<!-- TabLayout -->
|
||||
<style name="Widget.IPTV.TabLayout" parent="Widget.Material3.TabLayout">
|
||||
<item name="android:background">@color/primary</item>
|
||||
<item name="tabIndicatorColor">@color/text_on_primary</item>
|
||||
<item name="tabSelectedTextColor">@color/text_on_primary</item>
|
||||
<item name="tabTextColor">@color/text_on_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.TabLayout.Dark" parent="Widget.Material3.TabLayout">
|
||||
<item name="android:background">@color/surface_dark</item>
|
||||
<item name="tabIndicatorColor">@color/primary_light</item>
|
||||
<item name="tabSelectedTextColor">@color/primary_light</item>
|
||||
<item name="tabTextColor">@color/text_secondary_dark</item>
|
||||
</style>
|
||||
|
||||
<!-- Slider -->
|
||||
<style name="Widget.IPTV.Slider" parent="Widget.Material3.Slider">
|
||||
<item name="trackColorActive">@color/primary</item>
|
||||
<item name="trackColorInactive">@color/surface_variant</item>
|
||||
<item name="thumbColor">@color/primary</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.Slider.Dark" parent="Widget.Material3.Slider">
|
||||
<item name="trackColorActive">@color/primary_light</item>
|
||||
<item name="trackColorInactive">@color/surface_variant_dark</item>
|
||||
<item name="thumbColor">@color/primary_light</item>
|
||||
</style>
|
||||
|
||||
<!-- Switch -->
|
||||
<style name="Widget.IPTV.Switch" parent="Widget.Material3.CompoundButton.MaterialSwitch">
|
||||
<item name="thumbTint">@color/primary</item>
|
||||
<item name="trackTint">@color/primary_light</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.Switch.Dark" parent="Widget.Material3.CompoundButton.MaterialSwitch">
|
||||
<item name="thumbTint">@color/primary_light</item>
|
||||
<item name="trackTint">@color/primary</item>
|
||||
</style>
|
||||
|
||||
<!-- CheckBox -->
|
||||
<style name="Widget.IPTV.CheckBox" parent="Widget.Material3.CompoundButton.CheckBox">
|
||||
<item name="buttonTint">@color/primary</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.CheckBox.Dark" parent="Widget.Material3.CompoundButton.CheckBox">
|
||||
<item name="buttonTint">@color/primary_light</item>
|
||||
</style>
|
||||
|
||||
<!-- RadioButton -->
|
||||
<style name="Widget.IPTV.RadioButton" parent="Widget.Material3.CompoundButton.RadioButton">
|
||||
<item name="buttonTint">@color/primary</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.RadioButton.Dark" parent="Widget.Material3.CompoundButton.RadioButton">
|
||||
<item name="buttonTint">@color/primary_light</item>
|
||||
</style>
|
||||
|
||||
<!-- PopupMenu -->
|
||||
<style name="Widget.IPTV.PopupMenu" parent="Widget.Material3.PopupMenu">
|
||||
<item name="android:popupBackground">@drawable/popup_background</item>
|
||||
</style>
|
||||
|
||||
<style name="Widget.IPTV.PopupMenu.Dark" parent="Widget.Material3.PopupMenu">
|
||||
<item name="android:popupBackground">@drawable/popup_background_dark</item>
|
||||
</style>
|
||||
|
||||
<!-- ============================================ -->
|
||||
<!-- Theme Overlays -->
|
||||
<!-- ============================================ -->
|
||||
|
||||
<style name="ThemeOverlay.IPTV.MaterialAlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
|
||||
<item name="colorPrimary">@color/primary</item>
|
||||
<item name="colorSurface">@color/surface</item>
|
||||
<item name="colorOnSurface">@color/text_primary</item>
|
||||
</style>
|
||||
|
||||
<style name="ThemeOverlay.IPTV.MaterialAlertDialog.Dark" parent="ThemeOverlay.Material3.MaterialAlertDialog">
|
||||
<item name="colorPrimary">@color/primary_light</item>
|
||||
<item name="colorSurface">@color/surface_dark</item>
|
||||
<item name="colorOnSurface">@color/text_primary_dark</item>
|
||||
</style>
|
||||
|
||||
<style name="ThemeOverlay.IPTV.AlertDialog" parent="ThemeOverlay.Material3.Dialog.Alert">
|
||||
<item name="colorPrimary">@color/primary</item>
|
||||
<item name="android:background">@color/surface</item>
|
||||
</style>
|
||||
|
||||
<style name="ThemeOverlay.IPTV.AlertDialog.Dark" parent="ThemeOverlay.Material3.Dialog.Alert">
|
||||
<item name="colorPrimary">@color/primary_light</item>
|
||||
<item name="android:background">@color/surface_dark</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
||||
Reference in New Issue
Block a user