Implement settings
This commit is contained in:
@@ -6,7 +6,7 @@ import 'package:simplecloudnotifier/models/channel.dart';
|
||||
import 'package:simplecloudnotifier/models/scn_message.dart';
|
||||
import 'package:simplecloudnotifier/pages/message_list/message_filter_chiplet.dart';
|
||||
import 'package:simplecloudnotifier/pages/message_view/message_view.dart';
|
||||
import 'package:simplecloudnotifier/settings/app_settings.dart';
|
||||
import 'package:simplecloudnotifier/state/app_settings.dart';
|
||||
import 'package:simplecloudnotifier/state/app_bar_state.dart';
|
||||
import 'package:simplecloudnotifier/state/app_events.dart';
|
||||
import 'package:simplecloudnotifier/state/application_log.dart';
|
||||
|
||||
@@ -2,15 +2,14 @@ import 'dart:math';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:simplecloudnotifier/models/channel.dart';
|
||||
import 'package:simplecloudnotifier/models/scn_message.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
import 'package:simplecloudnotifier/state/app_settings.dart';
|
||||
import 'package:simplecloudnotifier/utils/ui.dart';
|
||||
|
||||
class MessageListItem extends StatelessWidget {
|
||||
static final _dateFormat = DateFormat('yyyy-MM-dd HH:mm'); //TODO setting
|
||||
static final _lineCount = 3; //TODO setting
|
||||
|
||||
const MessageListItem({
|
||||
required this.message,
|
||||
required this.allChannels,
|
||||
@@ -32,6 +31,9 @@ class MessageListItem extends StatelessWidget {
|
||||
}
|
||||
|
||||
Card buildWithoutChannel(BuildContext context) {
|
||||
final dateFormat = context.select<AppSettings, AppSettingsDateFormat>((v) => v.dateFormat).dateFormat();
|
||||
final previewLineCount = context.select<AppSettings, int>((v) => v.messagePreviewLength);
|
||||
|
||||
return Card.filled(
|
||||
margin: EdgeInsets.fromLTRB(0, 4, 0, 4),
|
||||
shape: BeveledRectangleBorder(borderRadius: BorderRadius.circular(0)),
|
||||
@@ -57,7 +59,7 @@ class MessageListItem extends StatelessWidget {
|
||||
),
|
||||
),
|
||||
Text(
|
||||
_dateFormat.format(DateTime.parse(message.timestamp).toLocal()),
|
||||
dateFormat.format(DateTime.parse(message.timestamp).toLocal()),
|
||||
style: const TextStyle(fontWeight: FontWeight.normal, fontSize: 11),
|
||||
overflow: TextOverflow.clip,
|
||||
maxLines: 1,
|
||||
@@ -70,10 +72,10 @@ class MessageListItem extends StatelessWidget {
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
processContent(message.content),
|
||||
processContent(message.content, previewLineCount),
|
||||
style: TextStyle(color: Theme.of(context).textTheme.bodyLarge?.color?.withAlpha(160)),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: _lineCount,
|
||||
maxLines: previewLineCount,
|
||||
),
|
||||
),
|
||||
if (message.priority == 2) SizedBox(width: 4),
|
||||
@@ -90,6 +92,9 @@ class MessageListItem extends StatelessWidget {
|
||||
}
|
||||
|
||||
Card buildWithChannel(BuildContext context) {
|
||||
final dateFormat = context.select<AppSettings, AppSettingsDateFormat>((v) => v.dateFormat).dateFormat();
|
||||
final previewLineCount = context.select<AppSettings, int>((v) => v.messagePreviewLength);
|
||||
|
||||
return Card.filled(
|
||||
margin: EdgeInsets.fromLTRB(0, 4, 0, 4),
|
||||
shape: BeveledRectangleBorder(borderRadius: BorderRadius.circular(0)),
|
||||
@@ -113,7 +118,7 @@ class MessageListItem extends StatelessWidget {
|
||||
),
|
||||
Expanded(child: SizedBox()),
|
||||
Text(
|
||||
_dateFormat.format(DateTime.parse(message.timestamp).toLocal()),
|
||||
dateFormat.format(DateTime.parse(message.timestamp).toLocal()),
|
||||
style: const TextStyle(fontWeight: FontWeight.normal, fontSize: 11),
|
||||
overflow: TextOverflow.clip,
|
||||
maxLines: 1,
|
||||
@@ -132,10 +137,10 @@ class MessageListItem extends StatelessWidget {
|
||||
children: [
|
||||
Expanded(
|
||||
child: Text(
|
||||
processContent(message.content),
|
||||
processContent(message.content, previewLineCount),
|
||||
style: TextStyle(color: Theme.of(context).textTheme.bodyLarge?.color?.withAlpha(160)),
|
||||
overflow: TextOverflow.ellipsis,
|
||||
maxLines: _lineCount,
|
||||
maxLines: previewLineCount,
|
||||
),
|
||||
),
|
||||
if (message.priority == 2) SizedBox(width: 4),
|
||||
@@ -151,7 +156,7 @@ class MessageListItem extends StatelessWidget {
|
||||
);
|
||||
}
|
||||
|
||||
String processContent(String? v) {
|
||||
String processContent(String? v, int lineCount) {
|
||||
if (v == null) {
|
||||
return '';
|
||||
}
|
||||
@@ -161,7 +166,7 @@ class MessageListItem extends StatelessWidget {
|
||||
return '';
|
||||
}
|
||||
|
||||
return lines.sublist(0, min(_lineCount, lines.length)).join("\n").trim();
|
||||
return lines.sublist(0, min(lineCount, lines.length)).join("\n").trim();
|
||||
}
|
||||
|
||||
String processTitle(String? v) {
|
||||
|
||||
Reference in New Issue
Block a user