opt add ab id
Signed-off-by: 21pages <pages21@163.com>
This commit is contained in:
parent
5ec0eaa9d7
commit
5616b20879
@ -1,4 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:flutter_hbb/common/formatter/id_formatter.dart';
|
||||||
import 'package:flutter_hbb/common/widgets/peer_card.dart';
|
import 'package:flutter_hbb/common/widgets/peer_card.dart';
|
||||||
import 'package:flutter_hbb/common/widgets/peers_view.dart';
|
import 'package:flutter_hbb/common/widgets/peers_view.dart';
|
||||||
import 'package:flutter_hbb/desktop/widgets/popup_menu.dart';
|
import 'package:flutter_hbb/desktop/widgets/popup_menu.dart';
|
||||||
@ -237,29 +238,32 @@ class _AddressBookState extends State<AddressBook> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void abAddId() async {
|
void abAddId() async {
|
||||||
var field = "";
|
|
||||||
var msg = "";
|
|
||||||
var isInProgress = false;
|
var isInProgress = false;
|
||||||
TextEditingController controller = TextEditingController(text: field);
|
IDTextEditingController idController = IDTextEditingController(text: '');
|
||||||
|
TextEditingController aliasController = TextEditingController(text: '');
|
||||||
|
final tags = List.of(gFFI.abModel.tags);
|
||||||
|
var selectedTag = List<dynamic>.empty(growable: true).obs;
|
||||||
|
final style = TextStyle(fontSize: 14.0);
|
||||||
|
String? errorMsg;
|
||||||
|
|
||||||
gFFI.dialogManager.show((setState, close) {
|
gFFI.dialogManager.show((setState, close) {
|
||||||
submit() async {
|
submit() async {
|
||||||
setState(() {
|
setState(() {
|
||||||
msg = "";
|
|
||||||
isInProgress = true;
|
isInProgress = true;
|
||||||
|
errorMsg = null;
|
||||||
});
|
});
|
||||||
field = controller.text.trim();
|
String id = idController.id;
|
||||||
if (field.isEmpty) {
|
if (id.isEmpty) {
|
||||||
// pass
|
// pass
|
||||||
} else {
|
} else {
|
||||||
final ids = field.trim().split(RegExp(r"[\s,;\n]+"));
|
if (gFFI.abModel.idContainBy(id)) {
|
||||||
field = ids.join(',');
|
setState(() {
|
||||||
for (final newId in ids) {
|
isInProgress = false;
|
||||||
if (gFFI.abModel.idContainBy(newId)) {
|
errorMsg = translate('ID already exists');
|
||||||
continue;
|
});
|
||||||
}
|
return;
|
||||||
gFFI.abModel.addId(newId);
|
|
||||||
}
|
}
|
||||||
|
gFFI.abModel.addId(id, aliasController.text.trim(), selectedTag);
|
||||||
await gFFI.abModel.pushAb();
|
await gFFI.abModel.pushAb();
|
||||||
this.setState(() {});
|
this.setState(() {});
|
||||||
// final currentPeers
|
// final currentPeers
|
||||||
@ -272,21 +276,70 @@ class _AddressBookState extends State<AddressBook> {
|
|||||||
content: Column(
|
content: Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Text(translate("whitelist_sep")),
|
Column(
|
||||||
const SizedBox(
|
|
||||||
height: 8.0,
|
|
||||||
),
|
|
||||||
Row(
|
|
||||||
children: [
|
children: [
|
||||||
Expanded(
|
Align(
|
||||||
child: TextField(
|
alignment: Alignment.centerLeft,
|
||||||
maxLines: null,
|
child: Row(
|
||||||
decoration: InputDecoration(
|
children: [
|
||||||
border: const OutlineInputBorder(),
|
Text(
|
||||||
errorText: msg.isEmpty ? null : translate(msg),
|
'*',
|
||||||
|
style: TextStyle(color: Colors.red, fontSize: 14),
|
||||||
|
),
|
||||||
|
Text(
|
||||||
|
'ID',
|
||||||
|
style: style,
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
TextField(
|
||||||
|
controller: idController,
|
||||||
|
inputFormatters: [IDTextInputFormatter()],
|
||||||
|
decoration: InputDecoration(
|
||||||
|
isDense: true,
|
||||||
|
border: OutlineInputBorder(),
|
||||||
|
errorText: errorMsg),
|
||||||
|
style: style,
|
||||||
|
),
|
||||||
|
Align(
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
translate('Alias'),
|
||||||
|
style: style,
|
||||||
|
),
|
||||||
|
).marginOnly(top: 8, bottom: 2),
|
||||||
|
TextField(
|
||||||
|
controller: aliasController,
|
||||||
|
decoration: InputDecoration(
|
||||||
|
border: OutlineInputBorder(),
|
||||||
|
isDense: true,
|
||||||
|
),
|
||||||
|
style: style,
|
||||||
|
),
|
||||||
|
Align(
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
translate('Tags'),
|
||||||
|
style: style,
|
||||||
|
),
|
||||||
|
).marginOnly(top: 8),
|
||||||
|
Container(
|
||||||
|
child: Wrap(
|
||||||
|
children: tags
|
||||||
|
.map((e) => AddressBookTag(
|
||||||
|
name: e,
|
||||||
|
tags: selectedTag,
|
||||||
|
onTap: () {
|
||||||
|
if (selectedTag.contains(e)) {
|
||||||
|
selectedTag.remove(e);
|
||||||
|
} else {
|
||||||
|
selectedTag.add(e);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
showActionMenu: false))
|
||||||
|
.toList(growable: false),
|
||||||
),
|
),
|
||||||
controller: controller,
|
|
||||||
focusNode: FocusNode()..requestFocus()),
|
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
@ -586,6 +586,26 @@ abstract class BasePeerCard extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@protected
|
||||||
|
MenuEntryBase<String> _addToAb(Peer peer) {
|
||||||
|
return MenuEntryButton<String>(
|
||||||
|
childBuilder: (TextStyle? style) => Text(
|
||||||
|
translate('Add to Address Book'),
|
||||||
|
style: style,
|
||||||
|
),
|
||||||
|
proc: () {
|
||||||
|
() async {
|
||||||
|
if (!gFFI.abModel.idContainBy(peer.id)) {
|
||||||
|
gFFI.abModel.addPeer(peer);
|
||||||
|
await gFFI.abModel.pushAb();
|
||||||
|
}
|
||||||
|
}();
|
||||||
|
},
|
||||||
|
padding: menuPadding,
|
||||||
|
dismissOnClicked: true,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
void _rename(String id, bool isAddressBook) async {
|
void _rename(String id, bool isAddressBook) async {
|
||||||
RxBool isInProgress = false.obs;
|
RxBool isInProgress = false.obs;
|
||||||
var name = peer.alias;
|
var name = peer.alias;
|
||||||
@ -679,6 +699,9 @@ class RecentPeerCard extends BasePeerCard {
|
|||||||
menuItems.add(_unrememberPasswordAction(peer.id));
|
menuItems.add(_unrememberPasswordAction(peer.id));
|
||||||
}
|
}
|
||||||
menuItems.add(_addFavAction(peer.id));
|
menuItems.add(_addFavAction(peer.id));
|
||||||
|
if (!gFFI.abModel.idContainBy(peer.id)) {
|
||||||
|
menuItems.add(_addToAb(peer));
|
||||||
|
}
|
||||||
return menuItems;
|
return menuItems;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -716,6 +739,9 @@ class FavoritePeerCard extends BasePeerCard {
|
|||||||
menuItems.add(_rmFavAction(peer.id, () async {
|
menuItems.add(_rmFavAction(peer.id, () async {
|
||||||
await bind.mainLoadFavPeers();
|
await bind.mainLoadFavPeers();
|
||||||
}));
|
}));
|
||||||
|
if (!gFFI.abModel.idContainBy(peer.id)) {
|
||||||
|
menuItems.add(_addToAb(peer));
|
||||||
|
}
|
||||||
return menuItems;
|
return menuItems;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -744,6 +770,9 @@ class DiscoveredPeerCard extends BasePeerCard {
|
|||||||
}
|
}
|
||||||
menuItems.add(MenuEntryDivider());
|
menuItems.add(MenuEntryDivider());
|
||||||
menuItems.add(_removeAction(peer.id, () async {}));
|
menuItems.add(_removeAction(peer.id, () async {}));
|
||||||
|
if (!gFFI.abModel.idContainBy(peer.id)) {
|
||||||
|
menuItems.add(_addToAb(peer));
|
||||||
|
}
|
||||||
return menuItems;
|
return menuItems;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,11 +68,21 @@ class AbModel {
|
|||||||
peers.clear();
|
peers.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void addId(String id) async {
|
void addId(String id, String alias, List<dynamic> tags) {
|
||||||
if (idContainBy(id)) {
|
if (idContainBy(id)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
peers.add(Peer.fromJson({"id": id}));
|
final peer = Peer.fromJson({
|
||||||
|
'id': id,
|
||||||
|
'alias': alias,
|
||||||
|
'tags': tags,
|
||||||
|
});
|
||||||
|
peers.add(peer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void addPeer(Peer peer) {
|
||||||
|
peers.removeWhere((e) => e.id == peer.id);
|
||||||
|
peers.add(peer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void addTag(String tag) async {
|
void addTag(String tag) async {
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -400,5 +400,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", "右键选择选项卡"),
|
("Right click to select tabs", "右键选择选项卡"),
|
||||||
("Skipped", "已跳过"),
|
("Skipped", "已跳过"),
|
||||||
|
("Add to Address Book", "添加到地址簿"),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "Dies ist nur möglich, wenn der Zugriff nur über ein permanentes Passwort erfolgt."), // Sehr unklar. Muss noch angepasst werden. Original: Allow hiding only if accepting sessions via password and using pernament passw"),
|
("hide_cm_tip", "Dies ist nur möglich, wenn der Zugriff nur über ein permanentes Passwort erfolgt."), // Sehr unklar. Muss noch angepasst werden. Original: Allow hiding only if accepting sessions via password and using pernament passw"),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "Permitir ocultar solo si se aceptan sesiones a través de contraseña y usando contraseña permanente"),
|
("hide_cm_tip", "Permitir ocultar solo si se aceptan sesiones a través de contraseña y usando contraseña permanente"),
|
||||||
("wayland_experiment_tip", "El soporte para Wayland está en fase experimental, por favor, use X11 si necesita acceso desatendido."),
|
("wayland_experiment_tip", "El soporte para Wayland está en fase experimental, por favor, use X11 si necesita acceso desatendido."),
|
||||||
("Right click to select tabs", "Clic derecho para seleccionar pestañas"),
|
("Right click to select tabs", "Clic derecho para seleccionar pestañas"),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "فقط در صورت پذیرفتن جلسات از طریق رمز عبور و استفاده از رمز عبور دائمی، مخفی شدن مجاز است"),
|
("hide_cm_tip", "فقط در صورت پذیرفتن جلسات از طریق رمز عبور و استفاده از رمز عبور دائمی، مخفی شدن مجاز است"),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "Autoriser le masquage uniquement si vous acceptez des sessions via un mot de passe et utilisez un mot de passe permanent"),
|
("hide_cm_tip", "Autoriser le masquage uniquement si vous acceptez des sessions via un mot de passe et utilisez un mot de passe permanent"),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "Να επιτρέπεται η απόκρυψη, μόνο εάν αποδέχεστε συνδέσεις μέσω κωδικού πρόσβασης και χρησιμοποιείτε μόνιμο κωδικό πρόσβασης"),
|
("hide_cm_tip", "Να επιτρέπεται η απόκρυψη, μόνο εάν αποδέχεστε συνδέσεις μέσω κωδικού πρόσβασης και χρησιμοποιείτε μόνιμο κωδικό πρόσβασης"),
|
||||||
("wayland_experiment_tip", "Η υποστήριξη Wayland βρίσκεται σε πειραματικό στάδιο, χρησιμοποιήστε το X11 εάν χρειάζεστε πρόσβαση χωρίς επίβλεψη."),
|
("wayland_experiment_tip", "Η υποστήριξη Wayland βρίσκεται σε πειραματικό στάδιο, χρησιμοποιήστε το X11 εάν χρειάζεστε πρόσβαση χωρίς επίβλεψη."),
|
||||||
("Right click to select tabs", "Κάντε δεξί κλικ για να επιλέξετε καρτέλες"),
|
("Right click to select tabs", "Κάντε δεξί κλικ για να επιλέξετε καρτέλες"),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "Permetti di nascondere solo se si accettano sessioni con password permanente"),
|
("hide_cm_tip", "Permetti di nascondere solo se si accettano sessioni con password permanente"),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "Разрешать скрытие случае, если принимаются сеансы по паролю или используется постоянный пароль"),
|
("hide_cm_tip", "Разрешать скрытие случае, если принимаются сеансы по паролю или используется постоянный пароль"),
|
||||||
("wayland_experiment_tip", "Поддержка Wayland находится на экспериментальной стадии, используйте X11, если вам требуется автоматический доступ."),
|
("wayland_experiment_tip", "Поддержка Wayland находится на экспериментальной стадии, используйте X11, если вам требуется автоматический доступ."),
|
||||||
("Right click to select tabs", "Выбор вкладок щелчком правой кнопки мыши"),
|
("Right click to select tabs", "Выбор вкладок щелчком правой кнопки мыши"),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "Kjo është e mundur vetëm nëse aksesi bëhet nëpërmjet një fjalëkalimi të përhershëm"),
|
("hide_cm_tip", "Kjo është e mundur vetëm nëse aksesi bëhet nëpërmjet një fjalëkalimi të përhershëm"),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "Tillåt att gömma endast om accepterande sessioner med lösenord och permanenta lösenord"),
|
("hide_cm_tip", "Tillåt att gömma endast om accepterande sessioner med lösenord och permanenta lösenord"),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", "在只允許密碼連接並且只用固定密碼的情況下才允許隱藏"),
|
("hide_cm_tip", "在只允許密碼連接並且只用固定密碼的情況下才允許隱藏"),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", "右鍵選擇選項卡"),
|
("Right click to select tabs", "右鍵選擇選項卡"),
|
||||||
|
("Add to Address Book", "添加到地址簿"),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
@ -399,5 +399,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> =
|
|||||||
("hide_cm_tip", ""),
|
("hide_cm_tip", ""),
|
||||||
("wayland_experiment_tip", ""),
|
("wayland_experiment_tip", ""),
|
||||||
("Right click to select tabs", ""),
|
("Right click to select tabs", ""),
|
||||||
|
("Add to Address Book", ""),
|
||||||
].iter().cloned().collect();
|
].iter().cloned().collect();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user