mirror of
https://github.com/lollipopkit/flutter_server_box.git
synced 2025-12-17 15:24:35 +01:00
@@ -1,20 +1,151 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:hive_flutter/hive_flutter.dart';
|
||||
import 'package:xterm/core.dart';
|
||||
|
||||
class VirtualKey {
|
||||
final String text;
|
||||
final bool toggleable;
|
||||
final TerminalKey? key;
|
||||
final IconData? icon;
|
||||
final VirtualKeyFunc? func;
|
||||
part 'virtual_key.g.dart';
|
||||
|
||||
VirtualKey(
|
||||
this.text, {
|
||||
this.key,
|
||||
this.toggleable = false,
|
||||
this.icon,
|
||||
this.func,
|
||||
});
|
||||
@HiveType(typeId: 4)
|
||||
enum VirtKey {
|
||||
@HiveField(0)
|
||||
esc,
|
||||
@HiveField(1)
|
||||
alt,
|
||||
@HiveField(2)
|
||||
home,
|
||||
@HiveField(3)
|
||||
up,
|
||||
@HiveField(4)
|
||||
end,
|
||||
@HiveField(5)
|
||||
file,
|
||||
@HiveField(6)
|
||||
snippet,
|
||||
@HiveField(7)
|
||||
tab,
|
||||
@HiveField(8)
|
||||
ctrl,
|
||||
@HiveField(9)
|
||||
left,
|
||||
@HiveField(10)
|
||||
down,
|
||||
@HiveField(11)
|
||||
right,
|
||||
@HiveField(12)
|
||||
paste,
|
||||
@HiveField(13)
|
||||
ime,
|
||||
@HiveField(14)
|
||||
pgup,
|
||||
@HiveField(15)
|
||||
pgdn;
|
||||
|
||||
String get text {
|
||||
switch (this) {
|
||||
case VirtKey.pgdn:
|
||||
return 'PgDn';
|
||||
case VirtKey.pgup:
|
||||
return 'PgUp';
|
||||
default:
|
||||
if (name.length > 1) {
|
||||
return name.substring(0, 1).toUpperCase() + name.substring(1);
|
||||
}
|
||||
return name;
|
||||
}
|
||||
}
|
||||
|
||||
TerminalKey? get key {
|
||||
switch (this) {
|
||||
case VirtKey.esc:
|
||||
return TerminalKey.escape;
|
||||
case VirtKey.alt:
|
||||
return TerminalKey.alt;
|
||||
case VirtKey.home:
|
||||
return TerminalKey.home;
|
||||
case VirtKey.up:
|
||||
return TerminalKey.arrowUp;
|
||||
case VirtKey.end:
|
||||
return TerminalKey.end;
|
||||
case VirtKey.tab:
|
||||
return TerminalKey.tab;
|
||||
case VirtKey.ctrl:
|
||||
return TerminalKey.control;
|
||||
case VirtKey.left:
|
||||
return TerminalKey.arrowLeft;
|
||||
case VirtKey.down:
|
||||
return TerminalKey.arrowDown;
|
||||
case VirtKey.right:
|
||||
return TerminalKey.arrowRight;
|
||||
case VirtKey.pgup:
|
||||
return TerminalKey.pageUp;
|
||||
case VirtKey.pgdn:
|
||||
return TerminalKey.pageDown;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
IconData? get icon {
|
||||
switch (this) {
|
||||
case VirtKey.up:
|
||||
return Icons.arrow_upward;
|
||||
case VirtKey.left:
|
||||
return Icons.arrow_back;
|
||||
case VirtKey.down:
|
||||
return Icons.arrow_downward;
|
||||
case VirtKey.right:
|
||||
return Icons.arrow_forward;
|
||||
case VirtKey.file:
|
||||
return Icons.file_open;
|
||||
case VirtKey.snippet:
|
||||
return Icons.code;
|
||||
case VirtKey.paste:
|
||||
return Icons.paste;
|
||||
case VirtKey.ime:
|
||||
return Icons.keyboard_hide;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// Use [VirtualKeyFunc] instead of [VirtKey]
|
||||
// This can help linter to enum all [VirtualKeyFunc]
|
||||
// and make sure all [VirtualKeyFunc] are handled
|
||||
VirtualKeyFunc? get func {
|
||||
switch (this) {
|
||||
case VirtKey.file:
|
||||
return VirtualKeyFunc.file;
|
||||
case VirtKey.snippet:
|
||||
return VirtualKeyFunc.snippet;
|
||||
case VirtKey.paste:
|
||||
return VirtualKeyFunc.paste;
|
||||
case VirtKey.ime:
|
||||
return VirtualKeyFunc.toggleIME;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
bool get toggleable {
|
||||
switch (this) {
|
||||
case VirtKey.alt:
|
||||
case VirtKey.ctrl:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool get canLongPress {
|
||||
switch (this) {
|
||||
case VirtKey.up:
|
||||
case VirtKey.left:
|
||||
case VirtKey.down:
|
||||
case VirtKey.right:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum VirtualKeyFunc { toggleIME, backspace, copy, paste, snippet, file }
|
||||
|
||||
116
lib/data/model/ssh/virtual_key.g.dart
Normal file
116
lib/data/model/ssh/virtual_key.g.dart
Normal file
@@ -0,0 +1,116 @@
|
||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'virtual_key.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// TypeAdapterGenerator
|
||||
// **************************************************************************
|
||||
|
||||
class VirtKeyAdapter extends TypeAdapter<VirtKey> {
|
||||
@override
|
||||
final int typeId = 4;
|
||||
|
||||
@override
|
||||
VirtKey read(BinaryReader reader) {
|
||||
switch (reader.readByte()) {
|
||||
case 0:
|
||||
return VirtKey.esc;
|
||||
case 1:
|
||||
return VirtKey.alt;
|
||||
case 2:
|
||||
return VirtKey.home;
|
||||
case 3:
|
||||
return VirtKey.up;
|
||||
case 4:
|
||||
return VirtKey.end;
|
||||
case 5:
|
||||
return VirtKey.file;
|
||||
case 6:
|
||||
return VirtKey.snippet;
|
||||
case 7:
|
||||
return VirtKey.tab;
|
||||
case 8:
|
||||
return VirtKey.ctrl;
|
||||
case 9:
|
||||
return VirtKey.left;
|
||||
case 10:
|
||||
return VirtKey.down;
|
||||
case 11:
|
||||
return VirtKey.right;
|
||||
case 12:
|
||||
return VirtKey.paste;
|
||||
case 13:
|
||||
return VirtKey.ime;
|
||||
case 14:
|
||||
return VirtKey.pgup;
|
||||
case 15:
|
||||
return VirtKey.pgdn;
|
||||
default:
|
||||
return VirtKey.esc;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void write(BinaryWriter writer, VirtKey obj) {
|
||||
switch (obj) {
|
||||
case VirtKey.esc:
|
||||
writer.writeByte(0);
|
||||
break;
|
||||
case VirtKey.alt:
|
||||
writer.writeByte(1);
|
||||
break;
|
||||
case VirtKey.home:
|
||||
writer.writeByte(2);
|
||||
break;
|
||||
case VirtKey.up:
|
||||
writer.writeByte(3);
|
||||
break;
|
||||
case VirtKey.end:
|
||||
writer.writeByte(4);
|
||||
break;
|
||||
case VirtKey.file:
|
||||
writer.writeByte(5);
|
||||
break;
|
||||
case VirtKey.snippet:
|
||||
writer.writeByte(6);
|
||||
break;
|
||||
case VirtKey.tab:
|
||||
writer.writeByte(7);
|
||||
break;
|
||||
case VirtKey.ctrl:
|
||||
writer.writeByte(8);
|
||||
break;
|
||||
case VirtKey.left:
|
||||
writer.writeByte(9);
|
||||
break;
|
||||
case VirtKey.down:
|
||||
writer.writeByte(10);
|
||||
break;
|
||||
case VirtKey.right:
|
||||
writer.writeByte(11);
|
||||
break;
|
||||
case VirtKey.paste:
|
||||
writer.writeByte(12);
|
||||
break;
|
||||
case VirtKey.ime:
|
||||
writer.writeByte(13);
|
||||
break;
|
||||
case VirtKey.pgup:
|
||||
writer.writeByte(14);
|
||||
break;
|
||||
case VirtKey.pgdn:
|
||||
writer.writeByte(15);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
int get hashCode => typeId.hashCode;
|
||||
|
||||
@override
|
||||
bool operator ==(Object other) =>
|
||||
identical(this, other) ||
|
||||
other is VirtKeyAdapter &&
|
||||
runtimeType == other.runtimeType &&
|
||||
typeId == other.typeId;
|
||||
}
|
||||
@@ -23,8 +23,8 @@ typedef ServersMap = Map<String, Server>;
|
||||
class ServerProvider extends BusyProvider {
|
||||
final ServersMap _servers = {};
|
||||
ServersMap get servers => _servers;
|
||||
final StringOrder _serverOrder = [];
|
||||
StringOrder get serverOrder => _serverOrder;
|
||||
final Order<String> _serverOrder = [];
|
||||
Order get serverOrder => _serverOrder;
|
||||
final List<String> _tags = [];
|
||||
List<String> get tags => _tags;
|
||||
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:toolbox/data/model/ssh/virtual_key.dart';
|
||||
|
||||
// default server details page cards order
|
||||
const defaultDetailCardOrder = [
|
||||
'uptime',
|
||||
@@ -20,6 +22,23 @@ const defaultDiskIgnorePath = [
|
||||
'none',
|
||||
];
|
||||
|
||||
const defaultSSHVirtKeys = [
|
||||
VirtKey.esc,
|
||||
VirtKey.alt,
|
||||
VirtKey.home,
|
||||
VirtKey.up,
|
||||
VirtKey.end,
|
||||
VirtKey.file,
|
||||
VirtKey.snippet,
|
||||
VirtKey.tab,
|
||||
VirtKey.ctrl,
|
||||
VirtKey.left,
|
||||
VirtKey.down,
|
||||
VirtKey.right,
|
||||
VirtKey.paste,
|
||||
VirtKey.ime,
|
||||
];
|
||||
|
||||
const defaultPrimaryColor = Color.fromARGB(255, 145, 58, 31);
|
||||
|
||||
const defaultLaunchPageIdx = 0;
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:xterm/core.dart';
|
||||
|
||||
import '../model/ssh/virtual_key.dart';
|
||||
|
||||
final virtualKeys = [
|
||||
VirtualKey('Esc', key: TerminalKey.escape),
|
||||
VirtualKey('Alt', key: TerminalKey.alt, toggleable: true),
|
||||
VirtualKey('Home', key: TerminalKey.home),
|
||||
VirtualKey('Up', key: TerminalKey.arrowUp, icon: Icons.arrow_upward),
|
||||
VirtualKey('End', key: TerminalKey.end),
|
||||
VirtualKey(
|
||||
'File',
|
||||
func: VirtualKeyFunc.file,
|
||||
icon: Icons.file_open,
|
||||
),
|
||||
VirtualKey('Snippet', func: VirtualKeyFunc.snippet, icon: Icons.code),
|
||||
VirtualKey('Tab', key: TerminalKey.tab),
|
||||
VirtualKey('Ctrl', key: TerminalKey.control, toggleable: true),
|
||||
VirtualKey('Left', key: TerminalKey.arrowLeft, icon: Icons.arrow_back),
|
||||
VirtualKey('Down', key: TerminalKey.arrowDown, icon: Icons.arrow_downward),
|
||||
VirtualKey('Right', key: TerminalKey.arrowRight, icon: Icons.arrow_forward),
|
||||
VirtualKey('Paste', func: VirtualKeyFunc.paste, icon: Icons.paste),
|
||||
VirtualKey(
|
||||
'IME',
|
||||
func: VirtualKeyFunc.toggleIME,
|
||||
icon: Icons.keyboard_hide,
|
||||
),
|
||||
];
|
||||
@@ -1,11 +1,12 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:toolbox/core/persistant_store.dart';
|
||||
import 'package:toolbox/core/utils/platform.dart';
|
||||
import 'package:toolbox/data/model/ssh/virtual_key.dart';
|
||||
|
||||
import '../res/default.dart';
|
||||
|
||||
class SettingStore extends PersistentStore {
|
||||
StoreProperty<int> get primaryColor => property(
|
||||
StoreProperty<int> get primaryColor => property<int>(
|
||||
'primaryColor',
|
||||
defaultValue: 4287106639,
|
||||
);
|
||||
@@ -76,4 +77,7 @@ class SettingStore extends PersistentStore {
|
||||
|
||||
StoreProperty<int> get keyboardType =>
|
||||
property('keyboardType', defaultValue: TextInputType.text.index);
|
||||
|
||||
StoreProperty<List<VirtKey>> get sshVirtKeys =>
|
||||
property('sshVirtKeys', defaultValue: defaultSSHVirtKeys);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user