Skip to content

Commit

Permalink
calendar account headings
Browse files Browse the repository at this point in the history
  • Loading branch information
crc-32 committed Aug 6, 2024
1 parent 084c459 commit d85f0c7
Show file tree
Hide file tree
Showing 8 changed files with 238 additions and 200 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ class CalendarControlFlutterBridge @Inject constructor(
result.success(calendars.map {
Pigeons.CalendarPigeon.Builder()
.setId(it.id.toLong())
.setAccount(it.ownerName)
.setName(it.name)
.setColor(it.color.toLong())
.setEnabled(it.enabled)
Expand Down
32 changes: 28 additions & 4 deletions android/app/src/main/kotlin/io/rebble/cobble/pigeons/Pigeons.java
Original file line number Diff line number Diff line change
Expand Up @@ -2411,6 +2411,19 @@ public void setId(@NonNull Long setterArg) {
this.id = setterArg;
}

private @NonNull String account;

public @NonNull String getAccount() {
return account;
}

public void setAccount(@NonNull String setterArg) {
if (setterArg == null) {
throw new IllegalStateException("Nonnull field \"account\" is null.");
}
this.account = setterArg;
}

private @NonNull String name;

public @NonNull String getName() {
Expand Down Expand Up @@ -2462,6 +2475,13 @@ public static final class Builder {
return this;
}

private @Nullable String account;

public @NonNull Builder setAccount(@NonNull String setterArg) {
this.account = setterArg;
return this;
}

private @Nullable String name;

public @NonNull Builder setName(@NonNull String setterArg) {
Expand All @@ -2486,6 +2506,7 @@ public static final class Builder {
public @NonNull CalendarPigeon build() {
CalendarPigeon pigeonReturn = new CalendarPigeon();
pigeonReturn.setId(id);
pigeonReturn.setAccount(account);
pigeonReturn.setName(name);
pigeonReturn.setColor(color);
pigeonReturn.setEnabled(enabled);
Expand All @@ -2495,8 +2516,9 @@ public static final class Builder {

@NonNull
ArrayList<Object> toList() {
ArrayList<Object> toListResult = new ArrayList<Object>(4);
ArrayList<Object> toListResult = new ArrayList<Object>(5);
toListResult.add(id);
toListResult.add(account);
toListResult.add(name);
toListResult.add(color);
toListResult.add(enabled);
Expand All @@ -2507,11 +2529,13 @@ ArrayList<Object> toList() {
CalendarPigeon pigeonResult = new CalendarPigeon();
Object id = list.get(0);
pigeonResult.setId((id == null) ? null : ((id instanceof Integer) ? (Integer) id : (Long) id));
Object name = list.get(1);
Object account = list.get(1);
pigeonResult.setAccount((String) account);
Object name = list.get(2);
pigeonResult.setName((String) name);
Object color = list.get(2);
Object color = list.get(3);
pigeonResult.setColor((color == null) ? null : ((color instanceof Integer) ? (Integer) color : (Long) color));
Object enabled = list.get(3);
Object enabled = list.get(4);
pigeonResult.setEnabled((Boolean) enabled);
return pigeonResult;
}
Expand Down
2 changes: 2 additions & 0 deletions ios/Runner/Pigeon/Pigeons.h
Original file line number Diff line number Diff line change
Expand Up @@ -285,10 +285,12 @@ NS_ASSUME_NONNULL_BEGIN
/// `init` unavailable to enforce nonnull fields, see the `make` class method.
- (instancetype)init NS_UNAVAILABLE;
+ (instancetype)makeWithId:(NSNumber *)id
account:(NSString *)account
name:(NSString *)name
color:(NSNumber *)color
enabled:(NSNumber *)enabled;
@property(nonatomic, strong) NSNumber * id;
@property(nonatomic, copy) NSString * account;
@property(nonatomic, copy) NSString * name;
@property(nonatomic, strong) NSNumber * color;
@property(nonatomic, strong) NSNumber * enabled;
Expand Down
11 changes: 8 additions & 3 deletions ios/Runner/Pigeon/Pigeons.m
Original file line number Diff line number Diff line change
Expand Up @@ -853,11 +853,13 @@ - (NSArray *)toList {

@implementation CalendarPigeon
+ (instancetype)makeWithId:(NSNumber *)id
account:(NSString *)account
name:(NSString *)name
color:(NSNumber *)color
enabled:(NSNumber *)enabled {
CalendarPigeon* pigeonResult = [[CalendarPigeon alloc] init];
pigeonResult.id = id;
pigeonResult.account = account;
pigeonResult.name = name;
pigeonResult.color = color;
pigeonResult.enabled = enabled;
Expand All @@ -867,11 +869,13 @@ + (CalendarPigeon *)fromList:(NSArray *)list {
CalendarPigeon *pigeonResult = [[CalendarPigeon alloc] init];
pigeonResult.id = GetNullableObjectAtIndex(list, 0);
NSAssert(pigeonResult.id != nil, @"");
pigeonResult.name = GetNullableObjectAtIndex(list, 1);
pigeonResult.account = GetNullableObjectAtIndex(list, 1);
NSAssert(pigeonResult.account != nil, @"");
pigeonResult.name = GetNullableObjectAtIndex(list, 2);
NSAssert(pigeonResult.name != nil, @"");
pigeonResult.color = GetNullableObjectAtIndex(list, 2);
pigeonResult.color = GetNullableObjectAtIndex(list, 3);
NSAssert(pigeonResult.color != nil, @"");
pigeonResult.enabled = GetNullableObjectAtIndex(list, 3);
pigeonResult.enabled = GetNullableObjectAtIndex(list, 4);
NSAssert(pigeonResult.enabled != nil, @"");
return pigeonResult;
}
Expand All @@ -881,6 +885,7 @@ + (nullable CalendarPigeon *)nullableFromList:(NSArray *)list {
- (NSArray *)toList {
return @[
(self.id ?: [NSNull null]),
(self.account ?: [NSNull null]),
(self.name ?: [NSNull null]),
(self.color ?: [NSNull null]),
(self.enabled ?: [NSNull null]),
Expand Down
11 changes: 8 additions & 3 deletions lib/infrastructure/pigeons/pigeons.g.dart
Original file line number Diff line number Diff line change
Expand Up @@ -777,13 +777,16 @@ class NotifyingPackage {
class CalendarPigeon {
CalendarPigeon({
required this.id,
required this.account,
required this.name,
required this.color,
required this.enabled,
});

int id;

String account;

String name;

int color;
Expand All @@ -793,6 +796,7 @@ class CalendarPigeon {
Object encode() {
return <Object?>[
id,
account,
name,
color,
enabled,
Expand All @@ -803,9 +807,10 @@ class CalendarPigeon {
result as List<Object?>;
return CalendarPigeon(
id: result[0]! as int,
name: result[1]! as String,
color: result[2]! as int,
enabled: result[3]! as bool,
account: result[1]! as String,
name: result[2]! as String,
color: result[3]! as int,
enabled: result[4]! as bool,
);
}
}
Expand Down
40 changes: 24 additions & 16 deletions lib/ui/screens/calendar.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:cobble/ui/common/components/cobble_tile.dart';
import 'package:cobble/ui/common/icons/fonts/rebble_icons.dart';
import 'package:cobble/ui/router/cobble_scaffold.dart';
import 'package:cobble/ui/router/cobble_screen.dart';
import 'package:collection/collection.dart';
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
Expand Down Expand Up @@ -49,6 +50,28 @@ class Calendar extends HookConsumerWidget implements CobbleScreen {
}
}

final calendarElements = groupBy(calendarList, (e) => e.account).entries.map((grp) {
return <CobbleTile>[
CobbleTile.sectionTitle(key: ValueKey("head${grp.key}"), title: grp.key),
...grp.value.map((c) {
return CobbleTile.setting(
key: ValueKey(c.id),
leading: BoxDecoration(
color: Color(c.color).withOpacity(1),
shape: BoxShape.circle,
),
title: c.name,
child: Checkbox(
value: c.enabled,
onChanged: (enabled) {
calendarControl.setCalendarEnabled(c.id, enabled!);
},
),
);
})
];
}).toList();

return CobbleScaffold.tab(
title: tr.calendar.title,
child: ListView(
Expand All @@ -69,22 +92,7 @@ class Calendar extends HookConsumerWidget implements CobbleScreen {
CobbleTile.title(
title: tr.calendar.choose,
),
...calendarList.map((e) {
return CobbleTile.setting(
key: ValueKey(e.id),
leading: BoxDecoration(
color: Color(e.color).withOpacity(1),
shape: BoxShape.circle,
),
title: e.name,
child: Checkbox(
value: e.enabled,
onChanged: (enabled) {
calendarControl.setCalendarEnabled(e.id, enabled!);
},
),
);
}).toList(),
...calendarElements.flattened,
],
],
),
Expand Down
3 changes: 2 additions & 1 deletion pigeons/pigeons.dart
Original file line number Diff line number Diff line change
Expand Up @@ -197,10 +197,11 @@ class NotifyingPackage {

class CalendarPigeon {
int id;
String account;
String name;
int color;
bool enabled;
CalendarPigeon(this.id, this.name, this.color, this.enabled);
CalendarPigeon(this.id, this.account, this.name, this.color, this.enabled);
}

@FlutterApi()
Expand Down
Loading

0 comments on commit d85f0c7

Please sign in to comment.