feat: wallpaper padrao nas conversas, logo colorida na sidebar e ajustes na aba de espacos
This commit is contained in:
BIN
assets/logo/background.png
Normal file
BIN
assets/logo/background.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 MiB |
@@ -2010,7 +2010,7 @@
|
|||||||
"select": "Selecionar",
|
"select": "Selecionar",
|
||||||
"pleaseChooseAStrongPassword": "Escolha uma senha forte",
|
"pleaseChooseAStrongPassword": "Escolha uma senha forte",
|
||||||
"blockUsername": "Ignorar nome de usuário",
|
"blockUsername": "Ignorar nome de usuário",
|
||||||
"addChatOrSubSpace": "Adicionar conversa ou subespaço",
|
"addChatOrSubSpace": "Criar grupo aqui",
|
||||||
"groupName": "Nome do grupo",
|
"groupName": "Nome do grupo",
|
||||||
"leaveEmptyToClearStatus": "Deixe em branco para limpar seu estado.",
|
"leaveEmptyToClearStatus": "Deixe em branco para limpar seu estado.",
|
||||||
"joinSpace": "Entrar no espaço",
|
"joinSpace": "Entrar no espaço",
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import 'package:tatchat/pages/chat/encryption_info.dart';
|
|||||||
import 'package:tatchat/pages/chat/events/message.dart';
|
import 'package:tatchat/pages/chat/events/message.dart';
|
||||||
import 'package:tatchat/pages/chat/seen_by_row.dart';
|
import 'package:tatchat/pages/chat/seen_by_row.dart';
|
||||||
import 'package:tatchat/pages/chat/typing_indicators.dart';
|
import 'package:tatchat/pages/chat/typing_indicators.dart';
|
||||||
import 'package:tatchat/utils/account_config.dart';
|
|
||||||
import 'package:tatchat/utils/matrix_sdk_extensions/filtered_timeline_extension.dart';
|
import 'package:tatchat/utils/matrix_sdk_extensions/filtered_timeline_extension.dart';
|
||||||
import 'package:tatchat/utils/platform_infos.dart';
|
import 'package:tatchat/utils/platform_infos.dart';
|
||||||
import 'package:material_ui/material_ui.dart';
|
import 'package:material_ui/material_ui.dart';
|
||||||
@@ -53,8 +52,7 @@ class ChatEventList extends StatelessWidget {
|
|||||||
thisEventsKeyMap[events[i].eventId] = i;
|
thisEventsKeyMap[events[i].eventId] = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
final hasWallpaper =
|
const hasWallpaper = true;
|
||||||
controller.room.client.applicationAccountConfig.wallpaperUrl != null;
|
|
||||||
|
|
||||||
return SelectionArea(
|
return SelectionArea(
|
||||||
child: MediaQuery(
|
child: MediaQuery(
|
||||||
|
|||||||
@@ -352,22 +352,35 @@ class ChatView extends StatelessWidget {
|
|||||||
top: false,
|
top: false,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
if (accountConfig.wallpaperUrl != null)
|
|
||||||
Opacity(
|
Opacity(
|
||||||
opacity: accountConfig.wallpaperOpacity ?? 0.5,
|
opacity: accountConfig.wallpaperUrl != null
|
||||||
|
? accountConfig.wallpaperOpacity ?? 0.5
|
||||||
|
: 0.3,
|
||||||
child: ImageFiltered(
|
child: ImageFiltered(
|
||||||
imageFilter: ui.ImageFilter.blur(
|
imageFilter: ui.ImageFilter.blur(
|
||||||
sigmaX: accountConfig.wallpaperBlur ?? 0.0,
|
sigmaX: accountConfig.wallpaperUrl != null
|
||||||
sigmaY: accountConfig.wallpaperBlur ?? 0.0,
|
? accountConfig.wallpaperBlur ?? 0.0
|
||||||
|
: 0.0,
|
||||||
|
sigmaY: accountConfig.wallpaperUrl != null
|
||||||
|
? accountConfig.wallpaperBlur ?? 0.0
|
||||||
|
: 0.0,
|
||||||
),
|
),
|
||||||
child: MxcImage(
|
child: accountConfig.wallpaperUrl != null
|
||||||
cacheKey: accountConfig.wallpaperUrl.toString(),
|
? MxcImage(
|
||||||
|
cacheKey: accountConfig.wallpaperUrl
|
||||||
|
.toString(),
|
||||||
uri: accountConfig.wallpaperUrl,
|
uri: accountConfig.wallpaperUrl,
|
||||||
fit: BoxFit.cover,
|
fit: BoxFit.cover,
|
||||||
height: MediaQuery.sizeOf(context).height,
|
height: MediaQuery.sizeOf(context).height,
|
||||||
width: MediaQuery.sizeOf(context).width,
|
width: MediaQuery.sizeOf(context).width,
|
||||||
isThumbnail: false,
|
isThumbnail: false,
|
||||||
placeholder: (_) => Container(),
|
placeholder: (_) => Container(),
|
||||||
|
)
|
||||||
|
: Image.asset(
|
||||||
|
'./assets/logo/background.png',
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
height: MediaQuery.sizeOf(context).height,
|
||||||
|
width: MediaQuery.sizeOf(context).width,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -4,11 +4,10 @@
|
|||||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||||
|
|
||||||
import 'package:badges/badges.dart';
|
import 'package:badges/badges.dart';
|
||||||
import 'package:tatchat/config/app_config.dart';
|
|
||||||
import 'package:tatchat/widgets/hover_builder.dart';
|
|
||||||
import 'package:tatchat/widgets/unread_rooms_badge.dart';
|
|
||||||
import 'package:material_ui/material_ui.dart';
|
import 'package:material_ui/material_ui.dart';
|
||||||
import 'package:matrix/matrix.dart';
|
import 'package:matrix/matrix.dart';
|
||||||
|
import 'package:tatchat/widgets/hover_builder.dart';
|
||||||
|
import 'package:tatchat/widgets/unread_rooms_badge.dart';
|
||||||
|
|
||||||
import '../../config/themes.dart';
|
import '../../config/themes.dart';
|
||||||
|
|
||||||
@@ -33,7 +32,7 @@ class NaviRailItem extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
|
|
||||||
final borderRadius = BorderRadius.circular(AppConfig.borderRadius);
|
final borderRadius = BorderRadius.circular(1000);
|
||||||
final icon = isSelected ? selectedIcon ?? this.icon : this.icon;
|
final icon = isSelected ? selectedIcon ?? this.icon : this.icon;
|
||||||
final unreadBadgeFilter = this.unreadBadgeFilter;
|
final unreadBadgeFilter = this.unreadBadgeFilter;
|
||||||
return HoverBuilder(
|
return HoverBuilder(
|
||||||
@@ -73,7 +72,7 @@ class NaviRailItem extends StatelessWidget {
|
|||||||
borderRadius: borderRadius,
|
borderRadius: borderRadius,
|
||||||
color: isSelected
|
color: isSelected
|
||||||
? theme.colorScheme.secondaryContainer
|
? theme.colorScheme.secondaryContainer
|
||||||
: Colors.transparent,
|
: theme.colorScheme.surfaceContainerHighest,
|
||||||
child: Tooltip(
|
child: Tooltip(
|
||||||
message: toolTip,
|
message: toolTip,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
|
|||||||
@@ -36,19 +36,25 @@ class Sidebar extends StatelessWidget {
|
|||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
horizontal: 16,
|
horizontal: 16,
|
||||||
vertical: 14,
|
vertical: 4,
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Image.asset(
|
ColorFiltered(
|
||||||
|
colorFilter: ColorFilter.mode(
|
||||||
|
theme.colorScheme.primary,
|
||||||
|
BlendMode.srcIn,
|
||||||
|
),
|
||||||
|
child: Image.asset(
|
||||||
'./assets/logo/mini/logo_mini.png',
|
'./assets/logo/mini/logo_mini.png',
|
||||||
width: 28,
|
width: 58,
|
||||||
height: 28,
|
height: 58,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
const SizedBox(width: 10),
|
const SizedBox(width: 10),
|
||||||
Text(
|
Text(
|
||||||
'TatuChat',
|
'TatuChat',
|
||||||
style: theme.textTheme.titleMedium?.copyWith(
|
style: theme.textTheme.titleLarge?.copyWith(
|
||||||
fontWeight: FontWeight.bold,
|
fontWeight: FontWeight.bold,
|
||||||
color: theme.colorScheme.onSurface,
|
color: theme.colorScheme.onSurface,
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -375,24 +375,13 @@ class _SpaceViewState extends State<SpaceView> {
|
|||||||
theme.colorScheme.onPrimaryContainer,
|
theme.colorScheme.onPrimaryContainer,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
suffixIcon: PopupMenuButton<SpaceActions>(
|
|
||||||
icon: Avatar(
|
|
||||||
size: avatarSize,
|
|
||||||
mxContent: room.avatar,
|
|
||||||
name: displayname,
|
|
||||||
shapeBorder: RoundedSuperellipseBorder(
|
|
||||||
side: BorderSide(
|
|
||||||
width: 1,
|
|
||||||
color: theme.dividerColor,
|
|
||||||
),
|
|
||||||
borderRadius: BorderRadius.circular(
|
|
||||||
AppConfig.spaceBorderRadius,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
borderRadius: BorderRadius.circular(
|
|
||||||
AppConfig.spaceBorderRadius,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
|
const SizedBox(width: 8),
|
||||||
|
PopupMenuButton<SpaceActions>(
|
||||||
|
tooltip: L10n.of(context).settings,
|
||||||
useRootNavigator: true,
|
useRootNavigator: true,
|
||||||
onSelected: _onSpaceAction,
|
onSelected: _onSpaceAction,
|
||||||
itemBuilder: (context) => [
|
itemBuilder: (context) => [
|
||||||
@@ -400,45 +389,28 @@ class _SpaceViewState extends State<SpaceView> {
|
|||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
value: SpaceActions.addChild,
|
value: SpaceActions.addChild,
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
leading: Icon(Icons.edit_square),
|
leading: Icon(Icons.add_circle_outline_rounded),
|
||||||
title: Text(
|
title: Text(
|
||||||
L10n.of(
|
L10n.of(context).addChatOrSubSpace,
|
||||||
context,
|
|
||||||
).addChatOrSubSpace,
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
value: SpaceActions.settings,
|
value: SpaceActions.settings,
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
leading: Icon(
|
leading: Icon(Icons.settings_outlined,),
|
||||||
Icons.settings_outlined,
|
title: Text(L10n.of(context).settings),
|
||||||
),
|
|
||||||
title: Text(
|
|
||||||
L10n.of(context).settings,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
PopupMenuItem(
|
PopupMenuItem(
|
||||||
value: SpaceActions.leave,
|
value: SpaceActions.leave,
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
leading: Icon(Icons.delete_outlined),
|
leading: Icon(Icons.delete_outlined,color: theme.colorScheme.error ),
|
||||||
title: Text(L10n.of(context).leave),
|
title: Text(L10n.of(context).leave, style: TextStyle(color: theme.colorScheme.error),),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
icon: const Icon(Icons.settings_outlined),
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 8),
|
|
||||||
if (isAdmin)
|
|
||||||
IconButton.filledTonal(
|
|
||||||
tooltip: L10n.of(context).addChatOrSubSpace,
|
|
||||||
onPressed: () => context.go(
|
|
||||||
'/rooms/newgroup?space_id=${widget.spaceId}',
|
|
||||||
),
|
|
||||||
icon: const Icon(Icons.add),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
@@ -672,21 +644,6 @@ class _SpaceViewState extends State<SpaceView> {
|
|||||||
bottom: 12,
|
bottom: 12,
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
Avatar(
|
|
||||||
mxContent: avatar,
|
|
||||||
name: displayname,
|
|
||||||
size: 56,
|
|
||||||
shapeBorder: RoundedSuperellipseBorder(
|
|
||||||
side: BorderSide(
|
|
||||||
width: 2,
|
|
||||||
color: theme.colorScheme.surface,
|
|
||||||
),
|
|
||||||
borderRadius: BorderRadius.circular(
|
|
||||||
AppConfig.spaceBorderRadius,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(width: 12),
|
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Text(
|
child: Text(
|
||||||
displayname,
|
displayname,
|
||||||
|
|||||||
@@ -136,6 +136,7 @@ class _SpacesTabState extends State<SpacesTab> {
|
|||||||
child: Icon(Icons.add),
|
child: Icon(Icons.add),
|
||||||
),
|
),
|
||||||
toolTip: L10n.of(context).createNewSpace,
|
toolTip: L10n.of(context).createNewSpace,
|
||||||
|
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
],
|
],
|
||||||
|
|||||||
Reference in New Issue
Block a user