Skip to content

Commit

Permalink
Optimize details
Browse files Browse the repository at this point in the history
  • Loading branch information
fregie committed Apr 27, 2023
1 parent 772d648 commit 85540c1
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 29 deletions.
10 changes: 2 additions & 8 deletions lib/choose_album_route.dart
Expand Up @@ -12,14 +12,8 @@ class ChooseAlbumRoute extends StatelessWidget {
Future<List<AssetPathEntity>> getAlbums() async {
//先权限申请
final PermissionState _ps = await PhotoManager.requestPermissionExtend();
final List<AssetPathEntity> paths =
await PhotoManager.getAssetPathList(type: RequestType.image);
for (var path in paths) {
if (path.name == 'Recent') {
paths.remove(path);
break;
}
}
final List<AssetPathEntity> paths = await PhotoManager.getAssetPathList(
type: RequestType.image, hasAll: true);
// ignore: deprecated_member_use
paths.sort((a, b) => b.assetCount.compareTo(a.assetCount));
return paths;
Expand Down
15 changes: 15 additions & 0 deletions lib/component.dart
@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:img_syncer/choose_album_route.dart';
import 'package:img_syncer/setting_storage_route.dart';

Widget chooseAlbumButtun(BuildContext context) {
return IconButton(
Expand All @@ -14,3 +15,17 @@ Widget chooseAlbumButtun(BuildContext context) {
},
);
}

Widget setRemoteStorageButtun(BuildContext context) {
return IconButton(
icon: const Icon(Icons.settings),
color: Theme.of(context).iconTheme.color,
tooltip: 'Set remote storage',
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => const SettingStorageRoute()),
);
},
);
}
4 changes: 3 additions & 1 deletion lib/gallery_body.dart
Expand Up @@ -423,7 +423,9 @@ class GalleryBodyState extends State<GalleryBody>
toolbarHeight: 70,
backgroundColor: Theme.of(context).scaffoldBackgroundColor,
actions: [
widget.useLocal ? chooseAlbumButtun(context) : Container(),
widget.useLocal
? chooseAlbumButtun(context)
: setRemoteStorageButtun(context)
],
flexibleSpace: FlexibleSpaceBar(
centerTitle: true,
Expand Down
8 changes: 5 additions & 3 deletions lib/global.dart
Expand Up @@ -9,13 +9,15 @@ import 'package:img_syncer/logger.dart';

class Global {
static Future init() async {
settingModel.addListener(() {
assetModel.setAlbum(settingModel.localFolder);
});
runServer().then((port) async {
storage = RemoteStorage("127.0.0.1", port);
// storage = RemoteStorage("192.168.100.235", 50051);
final prefs = await SharedPreferences.getInstance();
final localFolder = prefs.getString("localFolder");
if (localFolder != null && localFolder.isNotEmpty) {
settingModel.setLocalFolder(localFolder);
}

var drive = prefs.getString("drive");
drive ??= "SMB";
switch (getDrive(drive)) {
Expand Down
7 changes: 0 additions & 7 deletions lib/main.dart
Expand Up @@ -113,13 +113,6 @@ class _MyHomePageState extends State<MyHomePage> {
@override
void initState() {
super.initState();
SharedPreferences.getInstance().then((prefs) {
final localFolder = prefs.getString("localFolder");
if (localFolder != null) {
Provider.of<SettingModel>(context, listen: false)
.setLocalFolder(localFolder);
}
});
}

void _onItemTapped(int index) {
Expand Down
28 changes: 19 additions & 9 deletions lib/state_model.dart
@@ -1,3 +1,5 @@
// ignore_for_file: deprecated_member_use

import 'dart:io';

import 'package:flutter/material.dart';
Expand Down Expand Up @@ -80,7 +82,6 @@ class AssetModel extends ChangeNotifier {
eventBus.on<LocalRefreshEvent>().listen((event) => refreshLocal());
eventBus.on<RemoteRefreshEvent>().listen((event) => refreshRemote());
}
String selectedAlbum = "";
List<Asset> localAssets = [];
List<Asset> remoteAssets = [];
int columCount = 3;
Expand All @@ -90,12 +91,6 @@ class AssetModel extends ChangeNotifier {
Completer<bool>? localGetting;
Completer<bool>? remoteGetting;

void setAlbum(String album) {
if (selectedAlbum == album) return;
selectedAlbum = album;
refreshLocal();
}

Future<void> refreshLocal() async {
if (localGetting != null) {
await localGetting!.future;
Expand Down Expand Up @@ -125,9 +120,24 @@ class AssetModel extends ChangeNotifier {
localGetting = Completer<bool>();
final offset = localAssets.length;
final PermissionState _ps = await PhotoManager.requestPermissionExtend();
final List<AssetPathEntity> paths = await PhotoManager.getAssetPathList();
final List<AssetPathEntity> paths = await PhotoManager.getAssetPathList(
type: RequestType.image,
hasAll: true,
);

// choose the folder has most photos
if (settingModel.localFolder == "") {
int max = 0;
for (var path in paths) {
if (path.assetCount > max) {
max = path.assetCount;
settingModel.setLocalFolder(path.name);
}
}
}

for (var path in paths) {
if (selectedAlbum == path.name) {
if (settingModel.localFolder == path.name) {
final newpath = await path.fetchPathProperties(
filterOptionGroup: FilterOptionGroup(
orders: [
Expand Down
14 changes: 13 additions & 1 deletion lib/storageform/webdavform.dart
Expand Up @@ -191,7 +191,19 @@ class WebDavFormState extends State<WebDavForm> {
@override
Widget build(BuildContext context) {
List<Widget> children = [];
children.add(input('URL', urlController, null));
children.add(Container(
padding: const EdgeInsets.fromLTRB(20, 10, 20, 10),
child: TextFormField(
controller: urlController,
obscureText: false,
autovalidateMode: AutovalidateMode.onUserInteraction,
decoration: const InputDecoration(
border: OutlineInputBorder(),
labelText: "URL",
helperText: "eg: https://your.domain:port",
),
),
));
children.add(input('Username (optional)', usernameController, null));
children.add(input('Password (optional)', passwordController, null));
children.add(Container(
Expand Down

0 comments on commit 85540c1

Please sign in to comment.