migrate to new libcwtch changes; add vampire and witch; tweak switch button coloring

This commit is contained in:
Dan Ballard 2021-12-10 21:07:47 -08:00
parent 089fee4c41
commit dc550daaa1
8 changed files with 189 additions and 60 deletions

View File

@ -9,24 +9,6 @@ import 'opaque.dart';
final neon1_theme = "neon1"; final neon1_theme = "neon1";
final neon1_name = "Neon1"; //Todo translate final neon1_name = "Neon1"; //Todo translate
final Color darkGreyPurple = Color(0xFF281831);
final Color deepPurple = Color(0xFF422850);
final Color mauvePurple = Color(0xFF8E64A5);
final Color whiteishPurple = Color(0xFFE3DFE4);
final Color lightGrey = Color(0xFF9E9E9E);
final Color whitePurple = Color(0xFFFFFDFF);
final Color softPurple = Color(0xFFFDF3FC);
final Color purple = Color(0xFFDFB9DE);
final Color brightPurple = Color(0xFFD1B0E0); // not in new: portrait badge color
final Color darkPurple = Color(0xFF350052);
final Color greyPurple = Color(0xFF775F84); // not in new: portrait borders
final Color pink = Color(0xFFE85DA1); // not in new: active button color
final Color hotPink = Color(0xFFD20070); // Color(0xFFD01972);
final Color softGrey = Color(0xFFB3B6B3); // not in new theme: blocked
//static final Color softGreen = Color(0xFFA0FFB0);
//static final Color softRed = Color(0xFFFFA0B0);
OpaqueThemeType GetNeon1Theme(String mode) { OpaqueThemeType GetNeon1Theme(String mode) {
if (mode == mode_dark) { if (mode == mode_dark) {
return Neon1Dark(); return Neon1Dark();
@ -50,18 +32,24 @@ class Neon1Dark extends CwtchDark {
get backgroundMainColor => background; // darkGreyPurple; get backgroundMainColor => background; // darkGreyPurple;
get backgroundPaneColor => header; //darkGreyPurple; get backgroundPaneColor => header; //darkGreyPurple;
//get backgroundHilightElementColor => deepPurple;
get mainTextColor => font; //whiteishPurple; get mainTextColor => font; //whiteishPurple;
//get sendHintTextColor => mauvePurple;
//get hilightElementColor => purple;
get defaultButtonColor => accent; //hotPink; get defaultButtonColor => accent; //hotPink;
/*get defaultButtonTextColor => whiteishPurple; get textfieldHintColor => mainTextColor; //TODO pick
get toolbarIconColor => settings; //whiteishPurple;
get messageFromMeBackgroundColor => userBubble; // mauvePurple;
get messageFromMeTextColor => font; //whiteishPurple;
get messageFromOtherBackgroundColor => peerBubble; //deepPurple;
get messageFromOtherTextColor => font; //whiteishPurple;
/*get backgroundHilightElementColor => deepPurple;
get sendHintTextColor => mauvePurple;
get hilightElementColor => purple;
get defaultButtonTextColor => whiteishPurple;
get defaultButtonDisabledColor => lightGrey; get defaultButtonDisabledColor => lightGrey;
get defaultButtonDisabledTextColor => darkGreyPurple; get defaultButtonDisabledTextColor => darkGreyPurple;
get textfieldBackgroundColor => deepPurple; get textfieldBackgroundColor => deepPurple;
get textfieldBorderColor => deepPurple;*/ get textfieldBorderColor => deepPurple;
get textfieldHintColor => mainTextColor; //TODO pick get textfieldErrorColor => hotPink;
/* get textfieldErrorColor => hotPink;
get scrollbarDefaultColor => purple; get scrollbarDefaultColor => purple;
get portraitBackgroundColor => deepPurple; get portraitBackgroundColor => deepPurple;
get portraitOnlineBorderColor => whiteishPurple; get portraitOnlineBorderColor => whiteishPurple;
@ -73,11 +61,7 @@ class Neon1Dark extends CwtchDark {
get portraitProfileBadgeColor => mauvePurple; get portraitProfileBadgeColor => mauvePurple;
get portraitProfileBadgeTextColor => darkGreyPurple; get portraitProfileBadgeTextColor => darkGreyPurple;
get dropShadowColor => mauvePurple;*/ get dropShadowColor => mauvePurple;*/
get toolbarIconColor => settings; //whiteishPurple;
get messageFromMeBackgroundColor => userBubble; // mauvePurple;
get messageFromMeTextColor => font; //whiteishPurple;
get messageFromOtherBackgroundColor => peerBubble; //deepPurple;
get messageFromOtherTextColor => font; //whiteishPurple;
} }
class Neon1Light extends CwtchLight { class Neon1Light extends CwtchLight {
@ -95,31 +79,32 @@ class Neon1Light extends CwtchLight {
get backgroundMainColor => background; //whitePurple; get backgroundMainColor => background; //whitePurple;
get backgroundPaneColor => header; //softPurple; get backgroundPaneColor => header; //softPurple;
//get backgroundHilightElementColor => softPurple;
get mainTextColor => settings; get mainTextColor => settings;
//get sendHintTextColor => purple;
//get hilightElementColor => purple; //darkPurple; // todo shouldn't be this, too dark, makes font unreadable
get defaultButtonColor => accent; // hotPink; get defaultButtonColor => accent; // hotPink;
/*get defaultButtonTextColor => whitePurple; // ?
get defaultButtonDisabledColor => softGrey;
get textfieldBackgroundColor => purple;
get textfieldBorderColor => purple; */
get textfieldHintColor => font; //TODO pick get textfieldHintColor => font; //TODO pick
//get textfieldErrorColor => hotPink;
get scrollbarDefaultColor => accent; get scrollbarDefaultColor => accent;
/*get portraitBackgroundColor => softPurple;
get portraitOnlineBorderColor => greyPurple;
get portraitOfflineBorderColor => greyPurple;
get portraitBlockedBorderColor => softGrey;
get portraitBlockedTextColor => softGrey;*/
get portraitContactBadgeColor => accent; get portraitContactBadgeColor => accent;
/*get portraitContactBadgeTextColor => whitePurple;
get portraitProfileBadgeColor => brightPurple;
get portraitProfileBadgeTextColor => whitePurple;
get dropShadowColor => purple;*/
get toolbarIconColor => settings; //darkPurple; get toolbarIconColor => settings; //darkPurple;
get messageFromMeBackgroundColor => userBubble; //brightPurple; get messageFromMeBackgroundColor => userBubble; //brightPurple;
get messageFromMeTextColor => font; //mainTextColor; get messageFromMeTextColor => font; //mainTextColor;
get messageFromOtherBackgroundColor => peerBubble; //purple; get messageFromOtherBackgroundColor => peerBubble; //purple;
get messageFromOtherTextColor => font; //darkPurple; get messageFromOtherTextColor => font; //darkPurple;
/*get backgroundHilightElementColor => softPurple;
get sendHintTextColor => purple;
get hilightElementColor => purple; //darkPurple; // todo shouldn't be this, too dark, makes font unreadable
get defaultButtonTextColor => whitePurple; // ?
get defaultButtonDisabledColor => softGrey;
get textfieldBackgroundColor => purple;
get textfieldBorderColor => purple;
get textfieldErrorColor => hotPink;
get portraitBackgroundColor => softPurple;
get portraitOnlineBorderColor => greyPurple;
get portraitOfflineBorderColor => greyPurple;
get portraitBlockedBorderColor => softGrey;
get portraitBlockedTextColor => softGrey;
get portraitContactBadgeTextColor => whitePurple;
get portraitProfileBadgeColor => brightPurple;
get portraitProfileBadgeTextColor => whitePurple;
get dropShadowColor => purple;*/
} }

View File

@ -3,6 +3,8 @@ import 'dart:core';
import 'package:cwtch/themes/cwtch.dart'; import 'package:cwtch/themes/cwtch.dart';
import 'package:cwtch/themes/neon1.dart'; import 'package:cwtch/themes/neon1.dart';
import 'package:cwtch/themes/vampire.dart';
import 'package:cwtch/themes/witch.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:cwtch/settings.dart'; import 'package:cwtch/settings.dart';
@ -11,6 +13,8 @@ const mode_dark = "dark";
final themes = { cwtch_theme: {mode_light: CwtchLight(), mode_dark: CwtchDark()}, final themes = { cwtch_theme: {mode_light: CwtchLight(), mode_dark: CwtchDark()},
neon1_theme: {mode_light: Neon1Light(), mode_dark: Neon1Dark()}, neon1_theme: {mode_light: Neon1Light(), mode_dark: Neon1Dark()},
witch_theme: {mode_light: WitchLight(), mode_dark: WitchDark()},
vampire_theme: {mode_light: VampireLight(), mode_dark: VampireDark()},
}; };
OpaqueThemeType getTheme(String themeId, String mode) { OpaqueThemeType getTheme(String themeId, String mode) {
@ -68,7 +72,7 @@ abstract class OpaqueThemeType {
get sendHintTextColor => red; get sendHintTextColor => red;
get defaultButtonColor => red; get defaultButtonColor => red;
get defaultButtonActiveColor => mode == mode_light ? darken(defaultButtonColor) : lighten(defaultButtonColor); get defaultButtonActiveColor => /*mode == mode_light ? darken(defaultButtonColor) :*/ lighten(defaultButtonColor);
get defaultButtonTextColor => red; get defaultButtonTextColor => red;
get defaultButtonDisabledColor => red; get defaultButtonDisabledColor => red;
get textfieldBackgroundColor => red; get textfieldBackgroundColor => red;

70
lib/themes/vampire.dart Normal file
View File

@ -0,0 +1,70 @@
import 'dart:ui';
import 'dart:core';
import 'package:cwtch/themes/cwtch.dart';
import 'package:flutter/material.dart';
import 'opaque.dart';
final vampire_theme = "vampire";
final vampire_name = "Vampire"; //Todo translate
OpaqueThemeType GetVampireTheme(String mode) {
if (mode == mode_dark) {
return VampireDark();
} else {
return VampireLight();
}
}
class VampireDark extends CwtchDark {
static final Color background = Color(0xFF281831);
static final Color header = Color(0xFF281831);
static final Color userBubble = Color(0xFF9A1218);
static final Color peerBubble = Color(0xFF422850);
static final Color font = Color(0xFFFFFFFF);
static final Color settings = Color(0xFFFDFFFD);
static final Color accent = Color(0xFF8E64A5);
get name => vampire_name;
get theme => vampire_theme;
get mode => mode_dark;
get backgroundMainColor => background; // darkGreyPurple;
get backgroundPaneColor => header; //darkGreyPurple;
get mainTextColor => font; //whiteishPurple;
get defaultButtonColor => accent; //hotPink;
get textfieldHintColor => mainTextColor; //TODO pick
get toolbarIconColor => settings; //whiteishPurple;
get messageFromMeBackgroundColor => userBubble; // mauvePurple;
get messageFromMeTextColor => font; //whiteishPurple;
get messageFromOtherBackgroundColor => peerBubble; //deepPurple;
get messageFromOtherTextColor => font; //whiteishPurple;
}
class VampireLight extends CwtchLight {
static final Color background = Color(0xFFFFFDFD);
static final Color header = Color(0xFFD8C7E1);
static final Color userBubble = Color(0xFFD8C7E1);
static final Color peerBubble = Color(0xFFFFEBEE);
static final Color font = Color(0xFF281831);
static final Color settings = Color(0xFF281831);
static final Color accent = Color(0xFF8E64A5);
get name => vampire_name;
get theme => vampire_theme;
get mode => mode_light;
get backgroundMainColor => background; //whitePurple;
get backgroundPaneColor => header; //softPurple;
get mainTextColor => settings;
get defaultButtonColor => accent; // hotPink;
get textfieldHintColor => font; //TODO pick
get scrollbarDefaultColor => accent;
get portraitContactBadgeColor => accent;
get toolbarIconColor => settings; //darkPurple;
get messageFromMeBackgroundColor => userBubble; //brightPurple;
get messageFromMeTextColor => font; //mainTextColor;
get messageFromOtherBackgroundColor => peerBubble; //purple;
get messageFromOtherTextColor => font; //darkPurple;
}

70
lib/themes/witch.dart Normal file
View File

@ -0,0 +1,70 @@
import 'dart:ui';
import 'dart:core';
import 'package:cwtch/themes/cwtch.dart';
import 'package:flutter/material.dart';
import 'opaque.dart';
final witch_theme = "witch";
final witch_name = "Witch"; //Todo translate
OpaqueThemeType GetWitchTheme(String mode) {
if (mode == mode_dark) {
return WitchDark();
} else {
return WitchLight();
}
}
class WitchDark extends CwtchDark {
static final Color background = Color(0xFF0E1E0E);
static final Color header = Color(0xFF0E1E0E);
static final Color userBubble = Color(0xFF1B5E20);
static final Color peerBubble = Color(0xFF003300);
static final Color font = Color(0xFFFFFFFF);
static final Color settings = Color(0xFFFDFFFD);
static final Color accent = Color(0xFFD20070);
get name => witch_name;
get theme => witch_theme;
get mode => mode_dark;
get backgroundMainColor => background; // darkGreyPurple;
get backgroundPaneColor => header; //darkGreyPurple;
get mainTextColor => font; //whiteishPurple;
get defaultButtonColor => accent; //hotPink;
get textfieldHintColor => mainTextColor; //TODO pick
get toolbarIconColor => settings; //whiteishPurple;
get messageFromMeBackgroundColor => userBubble; // mauvePurple;
get messageFromMeTextColor => font; //whiteishPurple;
get messageFromOtherBackgroundColor => peerBubble; //deepPurple;
get messageFromOtherTextColor => font; //whiteishPurple;
}
class WitchLight extends CwtchLight {
static final Color background = Color(0xFFFDFFFD);
static final Color header = Color(0xFF80E27E);
static final Color userBubble = Color(0xFF80E27E);
static final Color peerBubble = Color(0xFFE8F5E9);
static final Color font = Color(0xFF0E1E0E);
static final Color settings = Color(0xFF0E1E0E);
static final Color accent = Color(0xFFD20070);
get name => witch_name;
get theme => witch_theme;
get mode => mode_light;
get backgroundMainColor => background; //whitePurple;
get backgroundPaneColor => header; //softPurple;
get mainTextColor => settings;
get defaultButtonColor => accent; // hotPink;
get textfieldHintColor => font; //TODO pick
get scrollbarDefaultColor => accent;
get portraitContactBadgeColor => accent;
get toolbarIconColor => settings; //darkPurple;
get messageFromMeBackgroundColor => userBubble; //brightPurple;
get messageFromMeTextColor => font; //mainTextColor;
get messageFromOtherBackgroundColor => peerBubble; //purple;
get messageFromOtherTextColor => font; //darkPurple;
}

View File

@ -129,7 +129,7 @@ class _AddEditServerViewState extends State<AddEditServerView> {
Provider.of<FlwtchState>(context, listen: false).cwtch.StopServer(serverInfoState.onion); Provider.of<FlwtchState>(context, listen: false).cwtch.StopServer(serverInfoState.onion);
} }
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(CwtchIcons.negative_heart_24px, color: settings.current().mainTextColor), secondary: Icon(CwtchIcons.negative_heart_24px, color: settings.current().mainTextColor),
)), )),
@ -146,7 +146,7 @@ class _AddEditServerViewState extends State<AddEditServerView> {
Provider.of<FlwtchState>(context, listen: false).cwtch.SetServerAttribute(serverInfoState.onion, "autostart", value ? "true" : "false"); Provider.of<FlwtchState>(context, listen: false).cwtch.SetServerAttribute(serverInfoState.onion, "autostart", value ? "true" : "false");
} }
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(CwtchIcons.favorite_24dp, color: settings.current().mainTextColor), secondary: Icon(CwtchIcons.favorite_24dp, color: settings.current().mainTextColor),
), ),

View File

@ -77,7 +77,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
// Save Settings... // Save Settings...
saveSettings(context); saveSettings(context);
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(CwtchIcons.change_theme, color: settings.current().mainTextColor), secondary: Icon(CwtchIcons.change_theme, color: settings.current().mainTextColor),
), ),
@ -153,7 +153,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
// Save Settings... // Save Settings...
saveSettings(context); saveSettings(context);
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(CwtchIcons.block_unknown, color: settings.current().mainTextColor), secondary: Icon(CwtchIcons.block_unknown, color: settings.current().mainTextColor),
), ),
@ -166,7 +166,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
// Save Settings... // Save Settings...
saveSettings(context); saveSettings(context);
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(CwtchIcons.streamer_bunnymask, color: settings.current().mainTextColor), secondary: Icon(CwtchIcons.streamer_bunnymask, color: settings.current().mainTextColor),
), ),
@ -183,7 +183,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
// Save Settings... // Save Settings...
saveSettings(context); saveSettings(context);
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(CwtchIcons.enable_experiments, color: settings.current().mainTextColor), secondary: Icon(CwtchIcons.enable_experiments, color: settings.current().mainTextColor),
), ),
@ -204,7 +204,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
// Save Settings... // Save Settings...
saveSettings(context); saveSettings(context);
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(CwtchIcons.enable_groups, color: settings.current().mainTextColor), secondary: Icon(CwtchIcons.enable_groups, color: settings.current().mainTextColor),
), ),
@ -224,7 +224,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
// Save Settings... // Save Settings...
saveSettings(context); saveSettings(context);
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(CwtchIcons.dns_24px, color: settings.current().mainTextColor), secondary: Icon(CwtchIcons.dns_24px, color: settings.current().mainTextColor),
)), )),
@ -240,7 +240,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
} }
saveSettings(context); saveSettings(context);
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(Icons.attach_file, color: settings.current().mainTextColor), secondary: Icon(Icons.attach_file, color: settings.current().mainTextColor),
), ),
@ -256,7 +256,7 @@ class _GlobalSettingsViewState extends State<GlobalSettingsView> {
} }
saveSettings(context); saveSettings(context);
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(Icons.link, color: settings.current().mainTextColor), secondary: Icon(Icons.link, color: settings.current().mainTextColor),
), ),

View File

@ -137,7 +137,7 @@ class _PeerSettingsViewState extends State<PeerSettingsView> {
Provider.of<FlwtchState>(context, listen: false).cwtch.SendProfileEvent(profileOnion, setPeerAttributeJson); Provider.of<FlwtchState>(context, listen: false).cwtch.SendProfileEvent(profileOnion, setPeerAttributeJson);
} }
}, },
activeTrackColor: settings.theme.defaultButtonActiveColor, activeTrackColor: settings.theme.defaultButtonColor,
inactiveTrackColor: settings.theme.defaultButtonDisabledColor, inactiveTrackColor: settings.theme.defaultButtonDisabledColor,
secondary: Icon(CwtchIcons.block_peer, color: settings.current().mainTextColor), secondary: Icon(CwtchIcons.block_peer, color: settings.current().mainTextColor),
), ),

View File

@ -23,7 +23,7 @@ class _ContactRowState extends State<ContactRow> {
var contact = Provider.of<ContactInfoState>(context); var contact = Provider.of<ContactInfoState>(context);
return Card( return Card(
clipBehavior: Clip.antiAlias, clipBehavior: Clip.antiAlias,
color: Provider.of<AppState>(context).selectedConversation == contact.onion ? Provider.of<Settings>(context).theme.backgroundHilightElementColor : null, color: Provider.of<AppState>(context).selectedConversation == contact.identifier ? Provider.of<Settings>(context).theme.backgroundHilightElementColor : null,
borderOnForeground: false, borderOnForeground: false,
margin: EdgeInsets.all(0.0), margin: EdgeInsets.all(0.0),
child: InkWell( child: InkWell(