Merge pull request #5331 from dignow/fix/save_peer_window_pos
fix saving peer window pos
This commit is contained in:
commit
39f0edcb32
@ -1422,7 +1422,7 @@ Future<void> saveWindowPosition(WindowType type, {int? windowId}) async {
|
|||||||
debugPrint(
|
debugPrint(
|
||||||
"Saving frame: $windowId: ${pos.width}/${pos.height}, offset:${pos.offsetWidth}/${pos.offsetHeight}");
|
"Saving frame: $windowId: ${pos.width}/${pos.height}, offset:${pos.offsetWidth}/${pos.offsetHeight}");
|
||||||
|
|
||||||
await bind.setLocalFlutterConfig(
|
await bind.setLocalFlutterOption(
|
||||||
k: kWindowPrefix + type.name, v: pos.toString());
|
k: kWindowPrefix + type.name, v: pos.toString());
|
||||||
|
|
||||||
if (type == WindowType.RemoteDesktop && windowId != null) {
|
if (type == WindowType.RemoteDesktop && windowId != null) {
|
||||||
@ -1436,7 +1436,7 @@ Future _saveSessionWindowPosition(
|
|||||||
windowId, kWindowEventGetRemoteList, null);
|
windowId, kWindowEventGetRemoteList, null);
|
||||||
if (remoteList != null) {
|
if (remoteList != null) {
|
||||||
for (final peerId in remoteList.split(',')) {
|
for (final peerId in remoteList.split(',')) {
|
||||||
bind.sessionSetFlutterConfigByPeerId(
|
bind.mainSetPeerFlutterOptionSync(
|
||||||
id: peerId, k: kWindowPrefix + windowType.name, v: pos.toString());
|
id: peerId, k: kWindowPrefix + windowType.name, v: pos.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1551,15 +1551,15 @@ Future<bool> restoreWindowPosition(WindowType type,
|
|||||||
// then we may need to get the position by reading the peer config.
|
// then we may need to get the position by reading the peer config.
|
||||||
// Because the session may not be read at this time.
|
// Because the session may not be read at this time.
|
||||||
if (desktopType == DesktopType.main) {
|
if (desktopType == DesktopType.main) {
|
||||||
pos = bind.mainGetPeerFlutterConfigSync(
|
pos = bind.mainGetPeerFlutterOptionSync(
|
||||||
id: peerId, k: kWindowPrefix + type.name);
|
id: peerId, k: kWindowPrefix + type.name);
|
||||||
} else {
|
} else {
|
||||||
pos = await bind.sessionGetFlutterConfigByPeerId(
|
pos = await bind.sessionGetFlutterOptionByPeerId(
|
||||||
id: peerId, k: kWindowPrefix + type.name);
|
id: peerId, k: kWindowPrefix + type.name);
|
||||||
}
|
}
|
||||||
isRemotePeerPos = pos != null;
|
isRemotePeerPos = pos != null;
|
||||||
}
|
}
|
||||||
pos ??= bind.getLocalFlutterConfig(k: kWindowPrefix + type.name);
|
pos ??= bind.getLocalFlutterOption(k: kWindowPrefix + type.name);
|
||||||
|
|
||||||
var lpos = LastWindowPosition.loadFromString(pos);
|
var lpos = LastWindowPosition.loadFromString(pos);
|
||||||
if (lpos == null) {
|
if (lpos == null) {
|
||||||
|
@ -64,7 +64,7 @@ class _PeerTabPageState extends State<PeerTabPage>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
final uiType = bind.getLocalFlutterConfig(k: 'peer-card-ui-type');
|
final uiType = bind.getLocalFlutterOption(k: 'peer-card-ui-type');
|
||||||
if (uiType != '') {
|
if (uiType != '') {
|
||||||
peerCardUiType.value = int.parse(uiType) == PeerUiType.list.index
|
peerCardUiType.value = int.parse(uiType) == PeerUiType.list.index
|
||||||
? PeerUiType.list
|
? PeerUiType.list
|
||||||
@ -174,7 +174,7 @@ class _PeerTabPageState extends State<PeerTabPage>
|
|||||||
).paddingSymmetric(horizontal: 4),
|
).paddingSymmetric(horizontal: 4),
|
||||||
onTap: () async {
|
onTap: () async {
|
||||||
await handleTabSelection(t);
|
await handleTabSelection(t);
|
||||||
await bind.setLocalFlutterConfig(
|
await bind.setLocalFlutterOption(
|
||||||
k: 'peer-tab-index', v: t.toString());
|
k: 'peer-tab-index', v: t.toString());
|
||||||
},
|
},
|
||||||
onHover: (value) => hover.value = value,
|
onHover: (value) => hover.value = value,
|
||||||
@ -244,7 +244,7 @@ class _PeerTabPageState extends State<PeerTabPage>
|
|||||||
onTap: () async {
|
onTap: () async {
|
||||||
final type = types.elementAt(
|
final type = types.elementAt(
|
||||||
peerCardUiType.value == types.elementAt(0) ? 1 : 0);
|
peerCardUiType.value == types.elementAt(0) ? 1 : 0);
|
||||||
await bind.setLocalFlutterConfig(
|
await bind.setLocalFlutterOption(
|
||||||
k: 'peer-card-ui-type', v: type.index.toString());
|
k: 'peer-card-ui-type', v: type.index.toString());
|
||||||
peerCardUiType.value = type;
|
peerCardUiType.value = type;
|
||||||
},
|
},
|
||||||
@ -562,7 +562,7 @@ class _PeerSortDropdownState extends State<PeerSortDropdown> {
|
|||||||
void initState() {
|
void initState() {
|
||||||
if (!PeerSortType.values.contains(peerSort.value)) {
|
if (!PeerSortType.values.contains(peerSort.value)) {
|
||||||
peerSort.value = PeerSortType.remoteId;
|
peerSort.value = PeerSortType.remoteId;
|
||||||
bind.setLocalFlutterConfig(
|
bind.setLocalFlutterOption(
|
||||||
k: "peer-sorting",
|
k: "peer-sorting",
|
||||||
v: peerSort.value,
|
v: peerSort.value,
|
||||||
);
|
);
|
||||||
@ -592,7 +592,7 @@ class _PeerSortDropdownState extends State<PeerSortDropdown> {
|
|||||||
dense: true, (String? v) async {
|
dense: true, (String? v) async {
|
||||||
if (v != null) {
|
if (v != null) {
|
||||||
peerSort.value = v;
|
peerSort.value = v;
|
||||||
await bind.setLocalFlutterConfig(
|
await bind.setLocalFlutterOption(
|
||||||
k: "peer-sorting",
|
k: "peer-sorting",
|
||||||
v: peerSort.value,
|
v: peerSort.value,
|
||||||
);
|
);
|
||||||
|
@ -41,7 +41,7 @@ class LoadEvent {
|
|||||||
final peerSearchText = "".obs;
|
final peerSearchText = "".obs;
|
||||||
|
|
||||||
/// for peer sort, global obs value
|
/// for peer sort, global obs value
|
||||||
final peerSort = bind.getLocalFlutterConfig(k: 'peer-sorting').obs;
|
final peerSort = bind.getLocalFlutterOption(k: 'peer-sorting').obs;
|
||||||
|
|
||||||
// list for listener
|
// list for listener
|
||||||
final obslist = [peerSearchText, peerSort].obs;
|
final obslist = [peerSearchText, peerSort].obs;
|
||||||
@ -264,7 +264,7 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
|
|||||||
// fallback to id sorting
|
// fallback to id sorting
|
||||||
if (!PeerSortType.values.contains(sortedBy)) {
|
if (!PeerSortType.values.contains(sortedBy)) {
|
||||||
sortedBy = PeerSortType.remoteId;
|
sortedBy = PeerSortType.remoteId;
|
||||||
bind.setLocalFlutterConfig(
|
bind.setLocalFlutterOption(
|
||||||
k: "peer-sorting",
|
k: "peer-sorting",
|
||||||
v: sortedBy,
|
v: sortedBy,
|
||||||
);
|
);
|
||||||
|
@ -36,7 +36,7 @@ class ToolbarState {
|
|||||||
late RxBool _pin;
|
late RxBool _pin;
|
||||||
|
|
||||||
ToolbarState() {
|
ToolbarState() {
|
||||||
final s = bind.getLocalFlutterConfig(k: kStoreKey);
|
final s = bind.getLocalFlutterOption(k: kStoreKey);
|
||||||
if (s.isEmpty) {
|
if (s.isEmpty) {
|
||||||
_initSet(false, false);
|
_initSet(false, false);
|
||||||
return;
|
return;
|
||||||
@ -89,7 +89,7 @@ class ToolbarState {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_savePin() async {
|
_savePin() async {
|
||||||
bind.setLocalFlutterConfig(
|
bind.setLocalFlutterOption(
|
||||||
k: kStoreKey, v: jsonEncode({'pin': _pin.value}));
|
k: kStoreKey, v: jsonEncode({'pin': _pin.value}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1863,14 +1863,14 @@ Future<void> setCanvasConfig(
|
|||||||
p['yCanvas'] = yCanvas;
|
p['yCanvas'] = yCanvas;
|
||||||
p['scale'] = scale;
|
p['scale'] = scale;
|
||||||
p['currentDisplay'] = currentDisplay;
|
p['currentDisplay'] = currentDisplay;
|
||||||
await bind.sessionSetFlutterConfig(
|
await bind.sessionSetFlutterOption(
|
||||||
sessionId: sessionId, k: canvasKey, v: jsonEncode(p));
|
sessionId: sessionId, k: canvasKey, v: jsonEncode(p));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<Map<String, dynamic>?> getCanvasConfig(SessionID sessionId) async {
|
Future<Map<String, dynamic>?> getCanvasConfig(SessionID sessionId) async {
|
||||||
if (!isWebDesktop) return null;
|
if (!isWebDesktop) return null;
|
||||||
var p =
|
var p =
|
||||||
await bind.sessionGetFlutterConfig(sessionId: sessionId, k: canvasKey);
|
await bind.sessionGetFlutterOption(sessionId: sessionId, k: canvasKey);
|
||||||
if (p == null || p.isEmpty) return null;
|
if (p == null || p.isEmpty) return null;
|
||||||
try {
|
try {
|
||||||
Map<String, dynamic> m = json.decode(p);
|
Map<String, dynamic> m = json.decode(p);
|
||||||
|
@ -51,7 +51,7 @@ class PeerTabModel with ChangeNotifier {
|
|||||||
PeerTabModel(this.parent) {
|
PeerTabModel(this.parent) {
|
||||||
// init currentTab
|
// init currentTab
|
||||||
_currentTab =
|
_currentTab =
|
||||||
int.tryParse(bind.getLocalFlutterConfig(k: 'peer-tab-index')) ?? 0;
|
int.tryParse(bind.getLocalFlutterOption(k: 'peer-tab-index')) ?? 0;
|
||||||
if (_currentTab < 0 || _currentTab >= tabNames.length) {
|
if (_currentTab < 0 || _currentTab >= tabNames.length) {
|
||||||
_currentTab = 0;
|
_currentTab = 0;
|
||||||
}
|
}
|
||||||
|
@ -1290,7 +1290,7 @@ impl LocalConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_flutter_config(k: &str) -> String {
|
pub fn get_flutter_option(k: &str) -> String {
|
||||||
if let Some(v) = LOCAL_CONFIG.read().unwrap().ui_flutter.get(k) {
|
if let Some(v) = LOCAL_CONFIG.read().unwrap().ui_flutter.get(k) {
|
||||||
v.clone()
|
v.clone()
|
||||||
} else {
|
} else {
|
||||||
@ -1298,7 +1298,7 @@ impl LocalConfig {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_flutter_config(k: String, v: String) {
|
pub fn set_flutter_option(k: String, v: String) {
|
||||||
let mut config = LOCAL_CONFIG.write().unwrap();
|
let mut config = LOCAL_CONFIG.write().unwrap();
|
||||||
let v2 = if v.is_empty() { None } else { Some(&v) };
|
let v2 = if v.is_empty() { None } else { Some(&v) };
|
||||||
if v2 != config.ui_flutter.get(&k) {
|
if v2 != config.ui_flutter.get(&k) {
|
||||||
|
@ -1214,7 +1214,11 @@ impl LoginConfigHandler {
|
|||||||
/// * `v` - value of option
|
/// * `v` - value of option
|
||||||
pub fn save_ui_flutter(&mut self, k: String, v: String) {
|
pub fn save_ui_flutter(&mut self, k: String, v: String) {
|
||||||
let mut config = self.load_config();
|
let mut config = self.load_config();
|
||||||
config.ui_flutter.insert(k, v);
|
if v.is_empty() {
|
||||||
|
config.ui_flutter.remove(&k);
|
||||||
|
} else {
|
||||||
|
config.ui_flutter.insert(k, v);
|
||||||
|
}
|
||||||
self.save_config(config);
|
self.save_config(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -197,50 +197,39 @@ pub fn session_toggle_option(session_id: SessionID, value: String) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn session_get_flutter_config(session_id: SessionID, k: String) -> Option<String> {
|
pub fn session_get_flutter_option(session_id: SessionID, k: String) -> Option<String> {
|
||||||
if let Some(session) = SESSIONS.read().unwrap().get(&session_id) {
|
if let Some(session) = SESSIONS.read().unwrap().get(&session_id) {
|
||||||
Some(session.get_flutter_config(k))
|
Some(session.get_flutter_option(k))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn session_set_flutter_config(session_id: SessionID, k: String, v: String) {
|
pub fn session_set_flutter_option(session_id: SessionID, k: String, v: String) {
|
||||||
if let Some(session) = SESSIONS.write().unwrap().get_mut(&session_id) {
|
if let Some(session) = SESSIONS.write().unwrap().get_mut(&session_id) {
|
||||||
session.save_flutter_config(k, v);
|
session.save_flutter_option(k, v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn session_get_flutter_config_by_peer_id(id: String, k: String) -> Option<String> {
|
pub fn session_get_flutter_option_by_peer_id(id: String, k: String) -> Option<String> {
|
||||||
if let Some((_, session)) = SESSIONS.read().unwrap().iter().find(|(_, s)| s.id == id) {
|
if let Some((_, session)) = SESSIONS.read().unwrap().iter().find(|(_, s)| s.id == id) {
|
||||||
Some(session.get_flutter_config(k))
|
Some(session.get_flutter_option(k))
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn session_set_flutter_config_by_peer_id(id: String, k: String, v: String) {
|
|
||||||
if let Some((_, session)) = SESSIONS
|
|
||||||
.write()
|
|
||||||
.unwrap()
|
|
||||||
.iter_mut()
|
|
||||||
.find(|(_, s)| s.id == id)
|
|
||||||
{
|
|
||||||
session.save_flutter_config(k, v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn get_next_texture_key() -> SyncReturn<i32> {
|
pub fn get_next_texture_key() -> SyncReturn<i32> {
|
||||||
let k = TEXTURE_RENDER_KEY.fetch_add(1, Ordering::SeqCst) + 1;
|
let k = TEXTURE_RENDER_KEY.fetch_add(1, Ordering::SeqCst) + 1;
|
||||||
SyncReturn(k)
|
SyncReturn(k)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_local_flutter_config(k: String) -> SyncReturn<String> {
|
pub fn get_local_flutter_option(k: String) -> SyncReturn<String> {
|
||||||
SyncReturn(ui_interface::get_local_flutter_config(k))
|
SyncReturn(ui_interface::get_local_flutter_option(k))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_local_flutter_config(k: String, v: String) {
|
pub fn set_local_flutter_option(k: String, v: String) {
|
||||||
ui_interface::set_local_flutter_config(k, v);
|
ui_interface::set_local_flutter_option(k, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_local_kb_layout_type() -> SyncReturn<String> {
|
pub fn get_local_kb_layout_type() -> SyncReturn<String> {
|
||||||
@ -806,10 +795,15 @@ pub fn main_get_peer_option_sync(id: String, key: String) -> SyncReturn<String>
|
|||||||
SyncReturn(get_peer_option(id, key))
|
SyncReturn(get_peer_option(id, key))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Sometimes we need to get the flutter config of a peer by reading the file.
|
// Sometimes we need to get the flutter option of a peer by reading the file.
|
||||||
// Because the session may not be established yet.
|
// Because the session may not be established yet.
|
||||||
pub fn main_get_peer_flutter_config_sync(id: String, k: String) -> SyncReturn<String> {
|
pub fn main_get_peer_flutter_option_sync(id: String, k: String) -> SyncReturn<String> {
|
||||||
SyncReturn(get_peer_flutter_config(id, k))
|
SyncReturn(get_peer_flutter_option(id, k))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn main_set_peer_flutter_option_sync(id: String, k: String, v: String) -> SyncReturn<()> {
|
||||||
|
set_peer_flutter_option(id, k, v);
|
||||||
|
SyncReturn(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn main_set_peer_option(id: String, key: String, value: String) {
|
pub fn main_set_peer_option(id: String, key: String, value: String) {
|
||||||
|
@ -168,14 +168,14 @@ pub fn set_local_option(key: String, value: String) {
|
|||||||
|
|
||||||
#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))]
|
#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn get_local_flutter_config(key: String) -> String {
|
pub fn get_local_flutter_option(key: String) -> String {
|
||||||
LocalConfig::get_flutter_config(&key)
|
LocalConfig::get_flutter_option(&key)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))]
|
#[cfg(any(target_os = "android", target_os = "ios", feature = "flutter"))]
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn set_local_flutter_config(key: String, value: String) {
|
pub fn set_local_flutter_option(key: String, value: String) {
|
||||||
LocalConfig::set_flutter_config(key, value);
|
LocalConfig::set_flutter_option(key, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature = "flutter")]
|
#[cfg(feature = "flutter")]
|
||||||
@ -210,11 +210,23 @@ pub fn get_peer_option(id: String, name: String) -> String {
|
|||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
#[cfg(feature = "flutter")]
|
#[cfg(feature = "flutter")]
|
||||||
pub fn get_peer_flutter_config(id: String, name: String) -> String {
|
pub fn get_peer_flutter_option(id: String, name: String) -> String {
|
||||||
let c = PeerConfig::load(&id);
|
let c = PeerConfig::load(&id);
|
||||||
c.ui_flutter.get(&name).unwrap_or(&"".to_owned()).to_owned()
|
c.ui_flutter.get(&name).unwrap_or(&"".to_owned()).to_owned()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[inline]
|
||||||
|
#[cfg(feature = "flutter")]
|
||||||
|
pub fn set_peer_flutter_option(id: String, name: String, value: String) {
|
||||||
|
let mut c = PeerConfig::load(&id);
|
||||||
|
if value.is_empty() {
|
||||||
|
c.ui_flutter.remove(&name);
|
||||||
|
} else {
|
||||||
|
c.ui_flutter.insert(name, value);
|
||||||
|
}
|
||||||
|
c.store(&id);
|
||||||
|
}
|
||||||
|
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn set_peer_option(id: String, name: String, value: String) {
|
pub fn set_peer_option(id: String, name: String, value: String) {
|
||||||
let mut c = PeerConfig::load(&id);
|
let mut c = PeerConfig::load(&id);
|
||||||
|
@ -197,11 +197,11 @@ impl<T: InvokeUiSession> Session<T> {
|
|||||||
self.lc.write().unwrap().save_scroll_style(value);
|
self.lc.write().unwrap().save_scroll_style(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn save_flutter_config(&mut self, k: String, v: String) {
|
pub fn save_flutter_option(&mut self, k: String, v: String) {
|
||||||
self.lc.write().unwrap().save_ui_flutter(k, v);
|
self.lc.write().unwrap().save_ui_flutter(k, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_flutter_config(&self, k: String) -> String {
|
pub fn get_flutter_option(&self, k: String) -> String {
|
||||||
self.lc.read().unwrap().get_ui_flutter(&k)
|
self.lc.read().unwrap().get_ui_flutter(&k)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user