Skip to content

Commit b51a8a4

Browse files
Move button state logic into createExtensionButton helper. (#73)
* Move button state logic into createExtensionButton helper.
1 parent 8d86ecd commit b51a8a4

File tree

2 files changed

+14
-51
lines changed

2 files changed

+14
-51
lines changed

lib/timeline/timeline.dart

Lines changed: 4 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import 'package:vm_service_lib/vm_service_lib.dart' hide TimelineEvent;
1010

1111
import '../framework/framework.dart';
1212
import '../globals.dart';
13-
import '../service_manager.dart' show ServiceExtensionState;
1413
import '../ui/elements.dart';
1514
import '../ui/primer.dart';
1615
import '../ui/ui_utils.dart';
@@ -48,10 +47,6 @@ class TimelineScreen extends Screen {
4847

4948
PButton pauseButton;
5049
PButton resumeButton;
51-
PButton trackWidgetBuildsButton;
52-
PButton perfOverlayButton;
53-
PButton repaintRainbowButton;
54-
PButton debugPaintButton;
5550

5651
@override
5752
void createContent(Framework framework, CoreElement mainDiv) {
@@ -68,13 +63,13 @@ class TimelineScreen extends Screen {
6863
..disabled = true
6964
..click(_resumeRecording);
7065

71-
trackWidgetBuildsButton = createExtensionButton(
66+
final trackWidgetBuildsButton = createExtensionButton(
7267
'Track widget builds', extensions.profileWidgetBuilds);
73-
perfOverlayButton = createExtensionButton(
68+
final perfOverlayButton = createExtensionButton(
7469
'Performance overlay', extensions.performanceOverlay);
75-
repaintRainbowButton =
70+
final repaintRainbowButton =
7671
createExtensionButton('Repaint rainbow', extensions.repaintRainbow);
77-
debugPaintButton =
72+
final debugPaintButton =
7873
createExtensionButton('Debug paint', extensions.debugPaint);
7974

8075
mainDiv.add(<CoreElement>[
@@ -140,10 +135,6 @@ class TimelineScreen extends Screen {
140135
}
141136

142137
void _handleConnectionStart(VmServiceWrapper service) {
143-
// Disables or selects buttons as needed based on the state of their service
144-
// extensions.
145-
_updateButtonStates();
146-
147138
framesChart.disabled = false;
148139

149140
framesTracker = new FramesTracker(service);
@@ -167,44 +158,6 @@ class TimelineScreen extends Screen {
167158
});
168159
}
169160

170-
void _updateButtonStates() {
171-
// Disable buttons for unavailable service extensions.
172-
serviceManager.serviceExtensionManager
173-
.hasServiceExtension(extensions.profileWidgetBuilds, (bool available) {
174-
trackWidgetBuildsButton.disabled = !available;
175-
});
176-
serviceManager.serviceExtensionManager
177-
.hasServiceExtension(extensions.performanceOverlay, (bool available) {
178-
perfOverlayButton.disabled = !available;
179-
});
180-
serviceManager.serviceExtensionManager
181-
.hasServiceExtension(extensions.repaintRainbow, (bool available) {
182-
repaintRainbowButton.disabled = !available;
183-
});
184-
serviceManager.serviceExtensionManager
185-
.hasServiceExtension(extensions.debugPaint, (bool available) {
186-
debugPaintButton.disabled = !available;
187-
});
188-
189-
// Select buttons whose state is already enabled.
190-
serviceManager.serviceExtensionManager.getServiceExtensionState(
191-
extensions.profileWidgetBuilds, (ServiceExtensionState state) {
192-
trackWidgetBuildsButton.toggleClass('selected', state.enabled);
193-
});
194-
serviceManager.serviceExtensionManager.getServiceExtensionState(
195-
extensions.performanceOverlay, (ServiceExtensionState state) {
196-
perfOverlayButton.toggleClass('selected', state.enabled);
197-
});
198-
serviceManager.serviceExtensionManager.getServiceExtensionState(
199-
extensions.repaintRainbow, (ServiceExtensionState state) {
200-
repaintRainbowButton.toggleClass('selected', state.enabled);
201-
});
202-
serviceManager.serviceExtensionManager.getServiceExtensionState(
203-
extensions.debugPaint, (ServiceExtensionState state) {
204-
debugPaintButton.toggleClass('selected', state.enabled);
205-
});
206-
}
207-
208161
void _handleConnectionStop(dynamic event) {
209162
framesChart.disabled = true;
210163

lib/ui/ui_utils.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,21 @@ import 'primer.dart';
1212
// This would help to build icon familiarity.
1313
PButton createExtensionButton(String text, String extensionName) {
1414
final PButton button = new PButton(text)..small();
15+
1516
button.click(() {
1617
final bool wasSelected = button.element.classes.contains('selected');
1718
serviceManager.serviceExtensionManager
1819
.setServiceExtensionState(extensionName, !wasSelected, !wasSelected);
1920
});
21+
22+
// Disable button for unavailable service extensions.
23+
serviceManager.serviceExtensionManager.hasServiceExtension(
24+
extensionName, (available) => button.disabled = !available);
25+
26+
// Select button whose state is already enabled.
27+
serviceManager.serviceExtensionManager.getServiceExtensionState(
28+
extensionName, (state) => button.toggleClass('selected', state.enabled));
29+
2030
return button;
2131
}
2232

0 commit comments

Comments
 (0)