2021-12-07 01:40:10 +00:00
import ' dart:ui ' ;
import ' dart:core ' ;
import ' package:flutter/material.dart ' ;
import ' package:cwtch/settings.dart ' ;
2021-12-09 05:40:40 +00:00
const mode_light = " light " ;
const mode_dark = " dark " ;
2021-12-07 01:40:10 +00:00
abstract class OpaqueThemeType {
static final Color red = Color ( 0xFFFF0000 ) ;
String identifier ( ) {
return " dummy " ;
}
2021-12-09 05:40:40 +00:00
// Main screen background color (message pane, item rows)
2021-12-07 01:40:10 +00:00
Color backgroundMainColor ( ) {
return red ;
}
2021-12-09 05:40:40 +00:00
// Top pane ane pane colors (settings)
2021-12-07 01:40:10 +00:00
Color backgroundPaneColor ( ) {
return red ;
}
2021-12-09 05:40:40 +00:00
// Selected Row
2021-12-07 01:40:10 +00:00
Color backgroundHilightElementColor ( ) {
return red ;
}
Color mainTextColor ( ) {
return red ;
}
2021-12-09 05:40:40 +00:00
// Faded text color for suggestions in textfields
// Todo: implement way more places
Color sendHintTextColor ( ) {
2021-12-07 01:40:10 +00:00
return red ;
}
2021-12-09 05:40:40 +00:00
// pressed row, offline heart
Color hilightElementColor ( ) {
2021-12-07 01:40:10 +00:00
return red ;
}
Color defaultButtonColor ( ) {
return red ;
}
Color defaultButtonActiveColor ( ) {
return red ;
}
Color defaultButtonTextColor ( ) {
return red ;
}
Color defaultButtonDisabledColor ( ) {
return red ;
}
Color textfieldBackgroundColor ( ) {
return red ;
}
Color textfieldBorderColor ( ) {
return red ;
}
2021-12-09 05:40:40 +00:00
Color textfieldHintColor ( ) {
return red ;
}
2021-12-07 01:40:10 +00:00
Color textfieldErrorColor ( ) {
return red ;
}
Color scrollbarDefaultColor ( ) {
return red ;
}
2021-12-09 05:40:40 +00:00
Color portraitBackgroundColor ( ) {
2021-12-07 01:40:10 +00:00
return red ;
}
Color portraitOnlineBorderColor ( ) {
return red ;
}
Color portraitOfflineBorderColor ( ) {
return red ;
}
Color portraitBlockedBorderColor ( ) {
return red ;
}
Color portraitBlockedTextColor ( ) {
return red ;
}
Color portraitContactBadgeColor ( ) {
return red ;
}
Color portraitContactBadgeTextColor ( ) {
return red ;
}
Color portraitProfileBadgeColor ( ) {
return red ;
}
Color portraitProfileBadgeTextColor ( ) {
return red ;
}
2021-12-09 05:40:40 +00:00
// dropshaddpow
// todo: probably should not be reply icon color in messagerow
2021-12-07 01:40:10 +00:00
Color dropShadowColor ( ) {
return red ;
}
Color toolbarIconColor ( ) {
return red ;
}
Color messageFromMeBackgroundColor ( ) {
return red ;
}
Color messageFromMeTextColor ( ) {
return red ;
}
Color messageFromOtherBackgroundColor ( ) {
return red ;
}
Color messageFromOtherTextColor ( ) {
return red ;
}
// ... more to come
// Sizes
double contactOnionTextSize ( ) {
return 18 ;
}
}
ThemeData mkThemeData ( Settings opaque ) {
return ThemeData (
visualDensity: VisualDensity . adaptivePlatformDensity ,
primarySwatch: Colors . red ,
primaryIconTheme: IconThemeData (
color: opaque . current ( ) . mainTextColor ( ) ,
) ,
primaryColor: opaque . current ( ) . backgroundMainColor ( ) ,
canvasColor: opaque . current ( ) . backgroundPaneColor ( ) ,
backgroundColor: opaque . current ( ) . backgroundMainColor ( ) ,
2021-12-09 05:40:40 +00:00
highlightColor: opaque . current ( ) . hilightElementColor ( ) ,
2021-12-07 01:40:10 +00:00
iconTheme: IconThemeData (
color: opaque . current ( ) . toolbarIconColor ( ) ,
) ,
cardColor: opaque . current ( ) . backgroundMainColor ( ) ,
appBarTheme: AppBarTheme (
backgroundColor: opaque . current ( ) . backgroundPaneColor ( ) ,
iconTheme: IconThemeData (
color: opaque . current ( ) . mainTextColor ( ) ,
) ,
titleTextStyle: TextStyle (
color: opaque . current ( ) . mainTextColor ( ) ,
) ,
actionsIconTheme: IconThemeData (
color: opaque . current ( ) . mainTextColor ( ) ,
) ) ,
2021-12-09 05:40:40 +00:00
//bottomNavigationBarTheme: BottomNavigationBarThemeData(type: BottomNavigationBarType.fixed, backgroundColor: opaque.current().backgroundHilightElementColor()), // Can't determine current use
2021-12-07 01:40:10 +00:00
textButtonTheme: TextButtonThemeData (
style: ButtonStyle (
backgroundColor: MaterialStateProperty . all ( opaque . current ( ) . defaultButtonColor ( ) ) ,
foregroundColor: MaterialStateProperty . all ( opaque . current ( ) . defaultButtonTextColor ( ) ) ,
overlayColor: MaterialStateProperty . all ( opaque . current ( ) . defaultButtonActiveColor ( ) ) ,
padding: MaterialStateProperty . all ( EdgeInsets . all ( 20 ) ) ) ,
) ,
2021-12-09 05:40:40 +00:00
hintColor: opaque . current ( ) . textfieldHintColor ( ) ,
2021-12-07 01:40:10 +00:00
elevatedButtonTheme: ElevatedButtonThemeData (
style: ButtonStyle (
backgroundColor: MaterialStateProperty . resolveWith ( ( states ) = > states . contains ( MaterialState . disabled ) ? opaque . current ( ) . defaultButtonDisabledColor ( ) : opaque . current ( ) . defaultButtonColor ( ) ) ,
foregroundColor: MaterialStateProperty . all ( opaque . current ( ) . defaultButtonTextColor ( ) ) ,
overlayColor: MaterialStateProperty . resolveWith ( ( states ) = > ( states . contains ( MaterialState . pressed ) & & states . contains ( MaterialState . hovered ) )
? opaque . current ( ) . defaultButtonActiveColor ( )
: states . contains ( MaterialState . disabled )
? opaque . current ( ) . defaultButtonDisabledColor ( )
: null ) ,
enableFeedback: true ,
splashFactory: InkRipple . splashFactory ,
padding: MaterialStateProperty . all ( EdgeInsets . all ( 20 ) ) ,
shape: MaterialStateProperty . all ( RoundedRectangleBorder (
borderRadius: BorderRadius . circular ( 18.0 ) ,
) ) ,
) ,
) ,
scrollbarTheme: ScrollbarThemeData (
2021-12-09 05:40:40 +00:00
isAlwaysShown: false , thumbColor: MaterialStateProperty . all ( opaque . current ( ) . scrollbarDefaultColor ( ) ) ) ,
2021-12-07 01:40:10 +00:00
tabBarTheme: TabBarTheme ( indicator: UnderlineTabIndicator ( borderSide: BorderSide ( color: opaque . current ( ) . defaultButtonActiveColor ( ) ) ) ) ,
dialogTheme: DialogTheme (
backgroundColor: opaque . current ( ) . backgroundPaneColor ( ) ,
titleTextStyle: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
contentTextStyle: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ) ,
textTheme: TextTheme (
headline1: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
headline2: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
headline3: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
headline4: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
headline5: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
headline6: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
bodyText1: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
bodyText2: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
subtitle1: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
subtitle2: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
caption: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
button: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ,
overline: TextStyle ( color: opaque . current ( ) . mainTextColor ( ) ) ) ,
switchTheme: SwitchThemeData (
overlayColor: MaterialStateProperty . all ( opaque . current ( ) . defaultButtonActiveColor ( ) ) ,
thumbColor: MaterialStateProperty . all ( opaque . current ( ) . mainTextColor ( ) ) ,
trackColor: MaterialStateProperty . all ( opaque . current ( ) . dropShadowColor ( ) ) ,
) ,
floatingActionButtonTheme: FloatingActionButtonThemeData (
backgroundColor: opaque . current ( ) . defaultButtonColor ( ) ,
hoverColor: opaque . current ( ) . defaultButtonActiveColor ( ) ,
enableFeedback: true ,
splashColor: opaque . current ( ) . defaultButtonActiveColor ( ) ) ,
textSelectionTheme: TextSelectionThemeData (
cursorColor: opaque . current ( ) . defaultButtonActiveColor ( ) , selectionColor: opaque . current ( ) . defaultButtonActiveColor ( ) , selectionHandleColor: opaque . current ( ) . defaultButtonActiveColor ( ) ) ,
) ;
}