Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
"showApp": "Show app",
"quit": "Quit"
},
"search": {
"placeholder": "Search options...",
"noResults": "No results found"
},
"navigation": {
"devices": "Devices",
"profiles": "Manage Profiles",
Expand Down Expand Up @@ -283,10 +287,8 @@
"button": "'Device' section"
},
"newDisplay": {
"toggle": {
"title": "Create virtual display",
"description": "Create and mirror a virtual display instead of the main device screen"
},
"title": "Create virtual display",
"description": "Create and mirror a virtual display instead of the main device screen",
"resolution": {
"title": "Resolution",
"description": "Explicitly set the resolution for virtual display",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ class GamepadMode extends ScrcpyCliArgument<String> {

@override
final List<String>? values = ['uhid', 'aoa', 'disabled'];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ class KeyboardMode extends ScrcpyCliArgument<String> {

@override
final List<String>? values = ['sdk', 'uhid', 'aoa', 'disabled'];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ class MouseMode extends ScrcpyCliArgument<String> {

@override
final List<String>? values = ['sdk', 'uhid', 'aoa', 'disabled'];
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ class NoControl extends ScrcpyCliArgument<bool> {

@override
final List<String>? values = null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ class PushTarget extends ScrcpyCliArgument<String> {

@override
final List<String>? values = null;
}
}
25 changes: 25 additions & 0 deletions lib/application/model/search_result.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
class SearchResult {
final String label;
final String title;
final String description;
final String argument;
final String category;

const SearchResult({
required this.label,
required this.title,
required this.description,
required this.argument,
required this.category,
});

bool matches(String query) {
final lowerQuery = query.toLowerCase();
return title.toLowerCase().contains(lowerQuery) ||
description.toLowerCase().contains(lowerQuery) ||
argument.toLowerCase().contains(lowerQuery);
}

@override
String toString() => 'SearchResult(label: $label, title: $title, argument: $argument)';
}
1 change: 0 additions & 1 deletion lib/application/profiles_bloc/profiles_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import 'package:scrcpy_buddy/objectbox.g.dart';
import 'package:streaming_shared_preferences/streaming_shared_preferences.dart';

part 'profiles_event.dart';

part 'profiles_state.dart';

typedef _Emitter = Emitter<ProfilesState>;
Expand Down
1 change: 0 additions & 1 deletion lib/application/scrcpy_bloc/scrcpy_bloc.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import 'package:scrcpy_buddy/service/running_process_manager.dart';
import 'package:scrcpy_buddy/service/scrcpy_service.dart';

part 'scrcpy_event.dart';

part 'scrcpy_state.dart';

typedef _Emitter = Emitter<ScrcpyState>;
Expand Down
2 changes: 1 addition & 1 deletion lib/init.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Future<void> init() async {
windowManager.setPreventClose(true);
}
windowManager.waitUntilReadyToShow().then((_) async {
await windowManager.setMinimumSize(const Size(700, 700));
await windowManager.setMinimumSize(const Size(850, 700));
await windowManager.setTitle(_appName);
await windowManager.show();
});
Expand Down
6 changes: 5 additions & 1 deletion lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import 'package:scrcpy_buddy/application/scrcpy_bloc/scrcpy_bloc.dart';
import 'package:scrcpy_buddy/application/shared_prefs.dart';
import 'package:scrcpy_buddy/init.dart';
import 'package:scrcpy_buddy/presentation/devices/bloc/devices_bloc.dart';
import 'package:scrcpy_buddy/presentation/search/bloc/search_bloc.dart';
import 'package:scrcpy_buddy/routes.dart';
import 'package:system_theme/system_theme.dart';
import 'package:window_manager/window_manager.dart';
Expand Down Expand Up @@ -91,7 +92,10 @@ class _MyAppState extends State<MyApp> {
providers: [
BlocProvider(create: (_) => ProfilesBloc(_settings, _objectBox.profileBox, _argsMap)),
BlocProvider(create: (context) => ScrcpyBloc(context.read(), context.read(), context.read())),
BlocProvider(create: (context) => DevicesBloc(context.read(), context.read(), _settings.adbExecutable)),
BlocProvider(
create: (context) => DevicesBloc(context.read(), context.read(), _settings.adbExecutable),
),
BlocProvider(create: (_) => SearchBloc(_argsInstances)),
],
child: child!,
);
Expand Down
3 changes: 3 additions & 0 deletions lib/presentation/home/home_screen.dart
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import 'package:scrcpy_buddy/presentation/home/widgets/console_dialog.dart';
import 'package:scrcpy_buddy/presentation/home/widgets/profile_button.dart';
import 'package:scrcpy_buddy/presentation/home/widgets/start_button.dart';
import 'package:scrcpy_buddy/presentation/home/widgets/stop_button.dart';
import 'package:scrcpy_buddy/presentation/search/search_widget.dart';
import 'package:scrcpy_buddy/presentation/widgets/app_widgets.dart';
import 'package:scrcpy_buddy/routes.dart';
import 'package:scrcpy_buddy/service/navigation_service.dart';
Expand Down Expand Up @@ -210,9 +211,11 @@ class _HomeScreenState extends AppModuleState<HomeScreen> with WindowListener, T
height: 56,
isBackButtonVisible: false,
title: Text(context.translatedText(key: 'appName'), style: typography.bodyStrong),
content: SearchWidget(),
captionControls: Padding(
padding: const EdgeInsets.only(right: 16),
child: Row(
mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.end,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expand Down
3 changes: 1 addition & 2 deletions lib/presentation/scrcpy_config/control/control_screen.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:fluent_ui/fluent_ui.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrcpy_buddy/application/model/scrcpy/scrcpy_arg.dart';
import 'package:scrcpy_buddy/application/profiles_bloc/profiles_bloc.dart';
import 'package:scrcpy_buddy/presentation/extension/context_extension.dart';
import 'package:scrcpy_buddy/presentation/scrcpy_config/control/widgets/modes_info_bar.dart';
Expand All @@ -10,8 +11,6 @@ import 'package:scrcpy_buddy/presentation/scrcpy_config/widgets/config_text_box.
import 'package:scrcpy_buddy/presentation/scrcpy_config/widgets/config_toggle.dart';
import 'package:scrcpy_buddy/presentation/widgets/app_widgets.dart';

import 'package:scrcpy_buddy/application/model/scrcpy/scrcpy_arg.dart';

class ControlScreen extends StatefulWidget {
const ControlScreen({super.key});

Expand Down
1 change: 0 additions & 1 deletion lib/presentation/scrcpy_config/video/video_screen.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import 'package:fluent_ui/fluent_ui.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:scrcpy_buddy/application/model/scrcpy/arguments/video/video_source.dart';
import 'package:scrcpy_buddy/application/model/scrcpy/scrcpy_arg.dart';
import 'package:scrcpy_buddy/application/profiles_bloc/profiles_bloc.dart';
import 'package:scrcpy_buddy/presentation/scrcpy_config/video/bit_rate_config.dart';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,8 @@ class _VirtualDisplayScreenState extends AppModuleState<VirtualDisplayScreen> {
children: [
ConfigItemBase(
icon: WindowsIcons.explore_content,
titleKey: '${_newDisplay.label}.toggle.title',
descriptionKey: '${_newDisplay.label}.toggle.description',
titleKey: '${_newDisplay.label}.title',
descriptionKey: '${_newDisplay.label}.description',
arg: _newDisplay.argument,
child: ToggleSwitch(checked: isEnabled, onChanged: (checked) => _toggleEnabled(checked)),
),
Expand Down
3 changes: 3 additions & 0 deletions lib/presentation/scrcpy_config/widgets/config_item.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'package:fluent_ui/fluent_ui.dart';
import 'package:scrcpy_buddy/application/model/scrcpy/scrcpy_cli_argument.dart';
import 'package:scrcpy_buddy/presentation/scrcpy_config/widgets/config_item_base.dart';
import 'package:scrcpy_buddy/presentation/scrcpy_config/widgets/highlight_provider.dart';
import 'package:scrcpy_buddy/presentation/widgets/app_widgets.dart';

class ConfigItem extends AppStatelessWidget {
Expand All @@ -16,12 +17,14 @@ class ConfigItem extends AppStatelessWidget {

@override
Widget build(BuildContext context) {
final highlightLabel = HighlightProvider.of(context);
return ConfigItemBase(
icon: icon,
defaultValueKey: hasDefault ? '${cliArgument.label}.default' : null,
titleKey: '${cliArgument.label}.title',
descriptionKey: '${cliArgument.label}.description',
arg: cliArgument.argument,
isHighlighted: highlightLabel == cliArgument.label,
child: child,
);
}
Expand Down
Loading
Loading