master
Kherel 2021-08-18 12:44:46 +02:00
parent 1202e4ad53
commit 1a8a4e7270
5 changed files with 102 additions and 56 deletions

View File

@ -212,7 +212,10 @@
"_comment": "Jobs list", "_comment": "Jobs list",
"title": "Jobs list", "title": "Jobs list",
"start": "Start", "start": "Start",
"empty": "No jobs" "empty": "No jobs",
"createUser": "Create",
"serviceTurnOff": "Turn off",
"serviceTurnOn": "Turn on"
}, },
"validations": { "validations": {
"required": "Required", "required": "Required",

View File

@ -212,7 +212,10 @@
"_comment": "Jobs list", "_comment": "Jobs list",
"title": "Задачи", "title": "Задачи",
"start": "Начать выполенение", "start": "Начать выполенение",
"empty": "Пусто" "empty": "Пусто",
"createUser": "Создать запись",
"serviceTurnOff": "Остановить",
"serviceTurnOn": "Запустить"
}, },
"validations": { "validations": {
"required": "обязательное поле", "required": "обязательное поле",

View File

@ -1,3 +1,7 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/cupertino.dart';
import 'package:selfprivacy/ui/components/brand_icons/brand_icons.dart';
enum InitializingSteps { enum InitializingSteps {
setHeznerKey, setHeznerKey,
setCloudFlareKey, setCloudFlareKey,
@ -10,3 +14,71 @@ enum InitializingSteps {
} }
enum Period { hour, day, month } enum Period { hour, day, month }
enum ServiceTypes {
mail,
messenger,
passwordManager,
video,
cloud,
socialNetwork,
git,
}
extension ServiceTypesExt on ServiceTypes {
String get title {
switch (this) {
case ServiceTypes.mail:
return 'services.mail.title'.tr();
case ServiceTypes.messenger:
return 'services.messenger.title'.tr();
case ServiceTypes.passwordManager:
return 'services.password_manager.title'.tr();
case ServiceTypes.video:
return 'services.video.title'.tr();
case ServiceTypes.cloud:
return 'services.cloud.title'.tr();
case ServiceTypes.socialNetwork:
return 'services.social_network.title'.tr();
case ServiceTypes.git:
return 'services.git.title'.tr();
}
}
String get subtitle {
switch (this) {
case ServiceTypes.mail:
return 'services.mail.subtitle'.tr();
case ServiceTypes.messenger:
return 'services.messenger.subtitle'.tr();
case ServiceTypes.passwordManager:
return 'services.password_manager.subtitle'.tr();
case ServiceTypes.video:
return 'services.video.subtitle'.tr();
case ServiceTypes.cloud:
return 'services.cloud.subtitle'.tr();
case ServiceTypes.socialNetwork:
return 'services.social_network.subtitle'.tr();
case ServiceTypes.git:
return 'services.git.subtitle'.tr();
}
}
IconData get icon {
switch (this) {
case ServiceTypes.mail:
return BrandIcons.envelope;
case ServiceTypes.messenger:
return BrandIcons.messanger;
case ServiceTypes.passwordManager:
return BrandIcons.key;
case ServiceTypes.video:
return BrandIcons.webcam;
case ServiceTypes.cloud:
return BrandIcons.upload;
case ServiceTypes.socialNetwork:
return BrandIcons.social;
case ServiceTypes.git:
return BrandIcons.git;
}
}
}

View File

@ -1,6 +1,8 @@
import 'package:equatable/equatable.dart'; import 'package:equatable/equatable.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/utils/password_generator.dart'; import 'package:selfprivacy/utils/password_generator.dart';
import 'package:easy_localization/easy_localization.dart';
import '../user.dart'; import '../user.dart';
@ -21,10 +23,23 @@ class Job extends Equatable {
class CreateUserJob extends Job { class CreateUserJob extends Job {
CreateUserJob({ CreateUserJob({
required this.user, required this.user,
}) : super(title: 'Create ${user.login}'); }) : super(title: '${"jobs.createUser".tr()} ${user.login}');
final User user; final User user;
@override @override
List<Object> get props => [id, title]; List<Object> get props => [id, title];
} }
class ServiceToggleJob extends Job {
ServiceToggleJob({
required this.type,
required this.needToTurnOn,
}) : super(title: '${needToTurnOn ? "jobs.serviceTurnOn".tr() : "jobs.serviceTurnOff".tr()} ');
final ServiceTypes type;
final bool needToTurnOn;
@override
List<Object> get props => [id, title];
}

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:selfprivacy/config/brand_colors.dart'; import 'package:selfprivacy/config/brand_colors.dart';
import 'package:selfprivacy/config/brand_theme.dart'; import 'package:selfprivacy/config/brand_theme.dart';
import 'package:selfprivacy/config/text_themes.dart'; import 'package:selfprivacy/config/text_themes.dart';
import 'package:selfprivacy/logic/common_enum/common_enum.dart';
import 'package:selfprivacy/logic/cubit/app_config/app_config_cubit.dart'; import 'package:selfprivacy/logic/cubit/app_config/app_config_cubit.dart';
import 'package:selfprivacy/logic/models/state_types.dart'; import 'package:selfprivacy/logic/models/state_types.dart';
import 'package:selfprivacy/ui/components/brand_button/brand_button.dart'; import 'package:selfprivacy/ui/components/brand_button/brand_button.dart';
@ -67,44 +68,6 @@ class _Card extends StatelessWidget {
IconData iconData; IconData iconData;
String subtitle; String subtitle;
switch (serviceType) {
case ServiceTypes.mail:
iconData = BrandIcons.envelope;
title = 'services.mail.title'.tr();
subtitle = 'services.mail.subtitle'.tr();
break;
case ServiceTypes.messenger:
iconData = BrandIcons.messanger;
title = 'services.messenger.title'.tr();
subtitle = 'services.messenger.subtitle'.tr();
break;
case ServiceTypes.passwordManager:
iconData = BrandIcons.key;
title = 'services.password_manager.title'.tr();
subtitle = 'services.password_manager.subtitle'.tr();
break;
case ServiceTypes.video:
iconData = BrandIcons.webcam;
title = 'services.video.title'.tr();
subtitle = 'services.video.subtitle'.tr();
break;
case ServiceTypes.cloud:
iconData = BrandIcons.upload;
title = 'services.cloud.title'.tr();
subtitle = 'services.cloud.subtitle'.tr();
break;
case ServiceTypes.socialNetwork:
iconData = BrandIcons.social;
title = 'services.social_network.title'.tr();
subtitle = 'services.social_network.subtitle'.tr();
break;
case ServiceTypes.git:
iconData = BrandIcons.git;
title = 'services.git.title'.tr();
subtitle = 'services.git.subtitle'.tr();
break;
}
var isReady = context.watch<AppConfigCubit>().state.isFullyInitilized; var isReady = context.watch<AppConfigCubit>().state.isFullyInitilized;
var changeTab = context.read<ChangeTab>().onPress; var changeTab = context.read<ChangeTab>().onPress;
return GestureDetector( return GestureDetector(
@ -118,8 +81,8 @@ class _Card extends StatelessWidget {
serviceType: serviceType, serviceType: serviceType,
status: status:
isReady ? StateType.stable : StateType.uninitialized, isReady ? StateType.stable : StateType.uninitialized,
title: title, title: serviceType.title,
icon: iconData, icon: serviceType.icon,
changeTab: changeTab, changeTab: changeTab,
); );
}, },
@ -131,12 +94,12 @@ class _Card extends StatelessWidget {
children: [ children: [
IconStatusMask( IconStatusMask(
status: isReady ? StateType.stable : StateType.uninitialized, status: isReady ? StateType.stable : StateType.uninitialized,
child: Icon(iconData, size: 30, color: Colors.white), child: Icon(serviceType.icon, size: 30, color: Colors.white),
), ),
SizedBox(height: 10), SizedBox(height: 10),
BrandText.h2(title), BrandText.h2(serviceType.title),
SizedBox(height: 10), SizedBox(height: 10),
BrandText.body2(subtitle), BrandText.body2(serviceType.subtitle),
SizedBox(height: 10), SizedBox(height: 10),
], ],
), ),
@ -145,16 +108,6 @@ class _Card extends StatelessWidget {
} }
} }
enum ServiceTypes {
mail,
messenger,
passwordManager,
video,
cloud,
socialNetwork,
git,
}
class _ServiceDetails extends StatelessWidget { class _ServiceDetails extends StatelessWidget {
const _ServiceDetails({ const _ServiceDetails({
Key? key, Key? key,