folder button auto dock
This commit is contained in:
+188
-138
@@ -2626,7 +2626,7 @@
|
||||
</constraints>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="5" translatesAutoresizingMaskIntoConstraints="NO" id="z5Q-bW-WQ8" userLabel="widgetPanelStack" customClass="WidgetPanelStackView">
|
||||
<rect key="frame" x="325" y="156" width="650" height="1160"/>
|
||||
<rect key="frame" x="325" y="156" width="650" height="1238"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Profile:" textAlignment="center" lineBreakMode="tailTruncation" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="iel-xl-xd9">
|
||||
<rect key="frame" x="0.0" y="0.0" width="650" height="37"/>
|
||||
@@ -2965,140 +2965,8 @@
|
||||
</slider>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KSh-xS-xfD">
|
||||
<rect key="frame" x="0.0" y="787" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yF0-Tu-L8X">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="ofw-9E-Plc"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="fjz-Ou-buw">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="Awz-Nl-ofZ"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Wxc-0O-tca">
|
||||
<rect key="frame" x="0.0" y="826" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border width" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wTH-1Z-Fgh">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="OyF-eF-9ag"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="s98-EU-FWC">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="EMS-PU-ywQ"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="O0O-pZ-URe" userLabel="Bulk Label Alpha Stack">
|
||||
<rect key="frame" x="0.0" y="865" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kSX-ci-kx5">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="L3D-Ej-6ZS"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.69999999999999996" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="X0I-ZZ-ZGT">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="a7b-Tm-z5c"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rfr-nL-OCc">
|
||||
<rect key="frame" x="0.0" y="904" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sAF-Vy-ZzK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="cWO-t5-t5M"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="3YT-BO-4Pr">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="1Qz-2x-yz5"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X7d-dV-lHa">
|
||||
<rect key="frame" x="0.0" y="943" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1sF-08-aCr">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="ZUf-9R-Smf"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="UW7-u0-8Sb">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="nQk-5N-V2J"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nBA-Ii-jNy">
|
||||
<rect key="frame" x="0.0" y="982" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight size" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hKK-ro-C5E">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="C4Q-cb-ZXx"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.5" maxValue="2" translatesAutoresizingMaskIntoConstraints="NO" id="w9M-2J-uIu">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="cnY-K5-kcZ"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GMQ-EQ-Hum" userLabel="mouseDownButtonStack">
|
||||
<rect key="frame" x="0.0" y="1021" width="650" height="31"/>
|
||||
<rect key="frame" x="0.0" y="787" width="650" height="31"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Down button" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="c1r-Hf-b7t" userLabel="mouseDownButtonLabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="130" height="31"/>
|
||||
@@ -3124,8 +2992,8 @@
|
||||
</segmentedControl>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LGW-oJ-5Zf" userLabel="triggerModeStack">
|
||||
<rect key="frame" x="0.0" y="1057" width="650" height="31"/>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="LGW-oJ-5Zf" userLabel="buttonModeStack">
|
||||
<rect key="frame" x="0.0" y="823" width="650" height="31"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Button mode" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qNQ-fB-jhY" userLabel="uiLabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="130" height="31"/>
|
||||
@@ -3160,8 +3028,184 @@
|
||||
</label>
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KSh-xS-xfD">
|
||||
<rect key="frame" x="0.0" y="859" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yF0-Tu-L8X">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="ofw-9E-Plc"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="fjz-Ou-buw">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="Awz-Nl-ofZ"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Wxc-0O-tca">
|
||||
<rect key="frame" x="0.0" y="898" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border width" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wTH-1Z-Fgh">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="OyF-eF-9ag"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="s98-EU-FWC">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="EMS-PU-ywQ"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="O0O-pZ-URe" userLabel="Bulk Label Alpha Stack">
|
||||
<rect key="frame" x="0.0" y="937" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kSX-ci-kx5">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="L3D-Ej-6ZS"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.69999999999999996" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="X0I-ZZ-ZGT">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="a7b-Tm-z5c"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rfr-nL-OCc">
|
||||
<rect key="frame" x="0.0" y="976" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sAF-Vy-ZzK">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="cWO-t5-t5M"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="3YT-BO-4Pr">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="1Qz-2x-yz5"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="X7d-dV-lHa">
|
||||
<rect key="frame" x="0.0" y="1015" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1sF-08-aCr">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="ZUf-9R-Smf"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="UW7-u0-8Sb">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="nQk-5N-V2J"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nBA-Ii-jNy">
|
||||
<rect key="frame" x="0.0" y="1054" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight size" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hKK-ro-C5E">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="C4Q-cb-ZXx"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.5" maxValue="2" translatesAutoresizingMaskIntoConstraints="NO" id="w9M-2J-uIu">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="cnY-K5-kcZ"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="ASP-yY-swx">
|
||||
<rect key="frame" x="0.0" y="1093" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Auto dock timer" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="KKW-Q7-0tg">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="tV3-vf-D7o"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="30" translatesAutoresizingMaskIntoConstraints="NO" id="5cO-K4-TQ8">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="pof-1w-fgS"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="3dC-9Z-wKV">
|
||||
<rect key="frame" x="0.0" y="1132" width="650" height="34"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Docked alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qFn-D7-7aD">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="34"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="B6V-Z1-ZAh"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.029999999999999999" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="Hv6-vN-gol">
|
||||
<rect key="frame" x="160" y="0.0" width="490" height="34"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="34" id="AuC-zr-vqN"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FEI-wQ-Q3w">
|
||||
<rect key="frame" x="0.0" y="1093" width="650" height="31"/>
|
||||
<rect key="frame" x="0.0" y="1171" width="650" height="31"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Collected widgets " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.20000000000000001" translatesAutoresizingMaskIntoConstraints="NO" id="WLg-7a-5wu" userLabel="uiLabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="130" height="31"/>
|
||||
@@ -3210,7 +3254,7 @@
|
||||
</subviews>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="K9t-Ky-bWg">
|
||||
<rect key="frame" x="0.0" y="1129" width="650" height="31"/>
|
||||
<rect key="frame" x="0.0" y="1207" width="650" height="31"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="aBW-x7-cFd">
|
||||
<rect key="frame" x="0.0" y="0.0" width="330" height="31"/>
|
||||
@@ -3398,6 +3442,9 @@
|
||||
<size key="freeformSize" width="1300" height="1500"/>
|
||||
<connections>
|
||||
<outlet property="addButton" destination="fKN-ja-TRi" id="R2n-QF-aSj"/>
|
||||
<outlet property="autoDockTimerLabel" destination="KKW-Q7-0tg" id="rBe-Kv-6R8"/>
|
||||
<outlet property="autoDockTimerSlider" destination="5cO-K4-TQ8" id="bly-fH-LA3"/>
|
||||
<outlet property="autoDockTimerStack" destination="ASP-yY-swx" id="rpi-Kn-8xH"/>
|
||||
<outlet property="autoTapField" destination="yLM-jp-jMl" id="t0v-tj-IZ3"/>
|
||||
<outlet property="autoTapLabel" destination="And-W9-9NR" id="r5A-4a-XZP"/>
|
||||
<outlet property="autoTapStack" destination="e4b-0v-36Z" id="PZd-KE-lPb"/>
|
||||
@@ -3437,6 +3484,9 @@
|
||||
<outlet property="decelerationRateLabel" destination="Pbt-Tw-dnV" id="ypq-iA-NvQ"/>
|
||||
<outlet property="decelerationRateSlider" destination="nzC-NF-fkv" id="BVc-jj-GzW"/>
|
||||
<outlet property="decelerationRateStack" destination="KXB-uJ-onx" id="Xn7-gp-Ztt"/>
|
||||
<outlet property="dockedAlphaLabel" destination="qFn-D7-7aD" id="RWb-kL-b47"/>
|
||||
<outlet property="dockedAlphaSlider" destination="Hv6-vN-gol" id="sjN-qK-rGH"/>
|
||||
<outlet property="dockedAlphaStack" destination="3dC-9Z-wKV" id="O5u-5B-HcR"/>
|
||||
<outlet property="editButton" destination="R45-lM-YPl" id="DNS-7N-3Kh"/>
|
||||
<outlet property="exitButton" destination="7bp-Wn-j9n" id="Kku-3T-RSO"/>
|
||||
<outlet property="importFromOtherButton" destination="cyH-Fh-vW6" id="Jpb-qI-5LQ"/>
|
||||
|
||||
@@ -315,7 +315,7 @@
|
||||
</constraints>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" ambiguous="YES" axis="vertical" spacing="7" translatesAutoresizingMaskIntoConstraints="NO" id="BVp-3O-vZ7" userLabel="widgetPanelStack" customClass="WidgetPanelStackView">
|
||||
<rect key="frame" x="375" y="132" width="550" height="1002"/>
|
||||
<rect key="frame" x="375" y="132" width="550" height="1056"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Profile:" textAlignment="center" lineBreakMode="tailTruncation" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f46-Pt-0Pv">
|
||||
<rect key="frame" x="0.0" y="0.0" width="550" height="28"/>
|
||||
@@ -699,201 +699,8 @@
|
||||
<constraint firstAttribute="height" constant="20" id="Aio-nO-nHA"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="t6L-J9-AMW">
|
||||
<rect key="frame" x="0.0" y="712" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MgK-KI-3y7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="7vj-2n-waQ"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="mNe-bA-Lgu">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="siC-KY-R1s"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eem-2H-ekN">
|
||||
<rect key="frame" x="0.0" y="739" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border width" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TFq-Un-O3H">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="AkI-ZP-qfD"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="3Yx-vO-052">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="CbF-4C-SeB"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YB4-fc-lM6">
|
||||
<rect key="frame" x="0.0" y="766" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Dr-3c-z61">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="sSo-xR-0nl"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.69999998807907104" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="XdO-Zu-fWB">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="3ZR-vO-NU9"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8tb-mS-WEu">
|
||||
<rect key="frame" x="0.0" y="793" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eRy-My-vvU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="ZBl-sM-khB"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="Ogu-Fz-BTs">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="XCL-5v-ofF"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cJk-PA-Lp0">
|
||||
<rect key="frame" x="0.0" y="820" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Kd-Cc-aYN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="kDG-5Z-TXN"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="HMa-bt-1iD">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="FkW-CW-K74"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Sxm-3C-Jlo">
|
||||
<rect key="frame" x="0.0" y="847" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight size" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hme-2d-8d6">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="YJW-yE-OC7"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.5" maxValue="2" translatesAutoresizingMaskIntoConstraints="NO" id="OiU-Ae-cEn">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="zGB-Zd-F1t"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gsG-6n-BAb" userLabel="vibrationStyleStack">
|
||||
<rect key="frame" x="0.0" y="874" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Vibration style" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u3w-Se-xzH" userLabel="sensitivityFactorLabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="130" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="130" id="jAW-3B-uPL"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" alpha="0.69999999999999996" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="QRV-je-HEZ">
|
||||
<rect key="frame" x="130" y="0.0" width="420" height="21"/>
|
||||
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<segments>
|
||||
<segment title="light"/>
|
||||
<segment title="medium"/>
|
||||
<segment title="heavy"/>
|
||||
<segment title="soft"/>
|
||||
<segment title="rigid"/>
|
||||
<segment title="off"/>
|
||||
</segments>
|
||||
<color key="tintColor" systemColor="systemGray2Color"/>
|
||||
<color key="selectedSegmentTintColor" red="0.23136288842322539" green="0.45776400812558971" blue="0.51492406781186773" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
</segmentedControl>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="5gJ-L7-twt"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lEZ-1a-89J" userLabel="mouseButtonDownStack">
|
||||
<rect key="frame" x="0.0" y="901" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Button down" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ozU-7C-qKE" userLabel="uilabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="120" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="120" id="Sii-hk-yFR"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" alpha="0.69999999999999996" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="tE5-Bm-4OB">
|
||||
<rect key="frame" x="120" y="0.0" width="430" height="21"/>
|
||||
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<segments>
|
||||
<segment title="hovering"/>
|
||||
<segment title="left btn"/>
|
||||
<segment title="middle btn"/>
|
||||
<segment title="right btn"/>
|
||||
<segment title="no click"/>
|
||||
</segments>
|
||||
<color key="tintColor" systemColor="systemGray2Color"/>
|
||||
<color key="selectedSegmentTintColor" red="0.23136288839999999" green="0.45776400810000001" blue="0.5149240678" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
</segmentedControl>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="Vgj-B6-LEU"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="jE7-IB-GTS" userLabel="slidableStack">
|
||||
<rect key="frame" x="0.0" y="928" width="550" height="20"/>
|
||||
<rect key="frame" x="0.0" y="712" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Button mode" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="o9I-Gt-YRd" userLabel="uilabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="120" height="20"/>
|
||||
@@ -931,8 +738,246 @@
|
||||
<constraint firstAttribute="height" constant="20" id="Qap-bn-YnJ"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="weV-Li-Itz">
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="gsG-6n-BAb" userLabel="vibrationStyleStack">
|
||||
<rect key="frame" x="0.0" y="739" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Vibration style" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="u3w-Se-xzH" userLabel="sensitivityFactorLabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="130" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="130" id="jAW-3B-uPL"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" alpha="0.69999999999999996" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="QRV-je-HEZ">
|
||||
<rect key="frame" x="130" y="0.0" width="420" height="21"/>
|
||||
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<segments>
|
||||
<segment title="light"/>
|
||||
<segment title="medium"/>
|
||||
<segment title="heavy"/>
|
||||
<segment title="soft"/>
|
||||
<segment title="rigid"/>
|
||||
<segment title="off"/>
|
||||
</segments>
|
||||
<color key="tintColor" systemColor="systemGray2Color"/>
|
||||
<color key="selectedSegmentTintColor" red="0.23136288842322539" green="0.45776400812558971" blue="0.51492406781186773" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
</segmentedControl>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="5gJ-L7-twt"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="lEZ-1a-89J" userLabel="mouseButtonDownStack">
|
||||
<rect key="frame" x="0.0" y="766" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Button down" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ozU-7C-qKE" userLabel="uilabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="120" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="120" id="Sii-hk-yFR"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<segmentedControl opaque="NO" alpha="0.69999999999999996" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="top" segmentControlStyle="plain" selectedSegmentIndex="0" translatesAutoresizingMaskIntoConstraints="NO" id="tE5-Bm-4OB">
|
||||
<rect key="frame" x="120" y="0.0" width="430" height="21"/>
|
||||
<color key="backgroundColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<segments>
|
||||
<segment title="hovering"/>
|
||||
<segment title="left btn"/>
|
||||
<segment title="middle btn"/>
|
||||
<segment title="right btn"/>
|
||||
<segment title="no click"/>
|
||||
</segments>
|
||||
<color key="tintColor" systemColor="systemGray2Color"/>
|
||||
<color key="selectedSegmentTintColor" red="0.23136288839999999" green="0.45776400810000001" blue="0.5149240678" alpha="1" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
</segmentedControl>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="Vgj-B6-LEU"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="t6L-J9-AMW">
|
||||
<rect key="frame" x="0.0" y="793" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MgK-KI-3y7">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="7vj-2n-waQ"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="mNe-bA-Lgu">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="siC-KY-R1s"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="eem-2H-ekN">
|
||||
<rect key="frame" x="0.0" y="820" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border width" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TFq-Un-O3H">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="AkI-ZP-qfD"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="8" translatesAutoresizingMaskIntoConstraints="NO" id="3Yx-vO-052">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="CbF-4C-SeB"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="YB4-fc-lM6">
|
||||
<rect key="frame" x="0.0" y="847" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Dr-3c-z61">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="sSo-xR-0nl"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.69999998807907104" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="XdO-Zu-fWB">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="3ZR-vO-NU9"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="8tb-mS-WEu">
|
||||
<rect key="frame" x="0.0" y="874" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Border alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eRy-My-vvU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="ZBl-sM-khB"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="-1" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="Ogu-Fz-BTs">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="XCL-5v-ofF"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="cJk-PA-Lp0">
|
||||
<rect key="frame" x="0.0" y="901" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4Kd-Cc-aYN">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="kDG-5Z-TXN"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.5" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="HMa-bt-1iD">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="FkW-CW-K74"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Sxm-3C-Jlo">
|
||||
<rect key="frame" x="0.0" y="928" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Highlight size" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hme-2d-8d6">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="YJW-yE-OC7"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.5" maxValue="2" translatesAutoresizingMaskIntoConstraints="NO" id="OiU-Ae-cEn">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="zGB-Zd-F1t"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="BBR-0E-XE9">
|
||||
<rect key="frame" x="0.0" y="955" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Auto dock timer" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="F8T-uC-SAR">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="160" id="rUr-7G-v1s"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" minValue="0.0" maxValue="30" translatesAutoresizingMaskIntoConstraints="NO" id="6hM-ux-n3H">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="D1L-4r-MHh"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="n71-jv-Ziw">
|
||||
<rect key="frame" x="0.0" y="982" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label verifyAmbiguity="off" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Docked alpha" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="kxI-bn-pRU">
|
||||
<rect key="frame" x="0.0" y="0.0" width="160" height="20"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="160" id="JhH-nj-7cT"/>
|
||||
<constraint firstAttribute="width" constant="160" id="UKe-tP-9m2"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" type="system" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<slider verifyAmbiguity="off" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="0.050000000000000003" minValue="0.029999999999999999" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="FzJ-KQ-5Ws">
|
||||
<rect key="frame" x="160" y="0.0" width="390" height="20"/>
|
||||
<color key="tintColor" red="0.34534250659999999" green="0.68327885720000003" blue="0.76859849690000004" alpha="0.5" colorSpace="custom" customColorSpace="displayP3"/>
|
||||
<color key="maximumTrackTintColor" white="0.66666666669999997" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</slider>
|
||||
</subviews>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="20" id="kAK-iJ-lig"/>
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="weV-Li-Itz">
|
||||
<rect key="frame" x="0.0" y="1009" width="550" height="20"/>
|
||||
<subviews>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Collected Widgets " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumScaleFactor="0.10000000000000001" translatesAutoresizingMaskIntoConstraints="NO" id="kek-77-Kmg" userLabel="uilabel">
|
||||
<rect key="frame" x="0.0" y="0.0" width="120" height="20"/>
|
||||
@@ -981,7 +1026,7 @@
|
||||
</constraints>
|
||||
</stackView>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="IWg-XO-cff">
|
||||
<rect key="frame" x="0.0" y="982" width="550" height="20"/>
|
||||
<rect key="frame" x="0.0" y="1036" width="550" height="20"/>
|
||||
<subviews>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="MZj-th-E9Z">
|
||||
<rect key="frame" x="0.0" y="0.0" width="284" height="20"/>
|
||||
@@ -1127,6 +1172,9 @@
|
||||
</view>
|
||||
<size key="freeformSize" width="1300" height="1800"/>
|
||||
<connections>
|
||||
<outlet property="autoDockTimerLabel" destination="F8T-uC-SAR" id="C8g-rg-Wge"/>
|
||||
<outlet property="autoDockTimerSlider" destination="6hM-ux-n3H" id="vdp-nI-6LZ"/>
|
||||
<outlet property="autoDockTimerStack" destination="BBR-0E-XE9" id="L9l-bR-MO4"/>
|
||||
<outlet property="autoTapField" destination="DOu-sG-eRq" id="Ubj-og-ThW"/>
|
||||
<outlet property="autoTapLabel" destination="IuG-44-1Je" id="YWb-0d-zbB"/>
|
||||
<outlet property="autoTapStack" destination="tDJ-cy-BYU" id="moT-DJ-jwF"/>
|
||||
@@ -1134,7 +1182,7 @@
|
||||
<outlet property="bulkAlphaLabel" destination="MgK-KI-3y7" id="CV9-VA-K3K"/>
|
||||
<outlet property="bulkAlphaSlider" destination="mNe-bA-Lgu" id="hAZ-Kk-yoP"/>
|
||||
<outlet property="bulkAlphaStack" destination="t6L-J9-AMW" id="dfs-YA-Gbe"/>
|
||||
<outlet property="bulkBorderAlphaLabel" destination="eRy-My-vvU" id="JVL-ks-pdb"/>
|
||||
<outlet property="bulkBorderAlphaLabel" destination="eRy-My-vvU" id="ln5-y1-87c"/>
|
||||
<outlet property="bulkBorderAlphaSlider" destination="Ogu-Fz-BTs" id="gbw-hf-Xl3"/>
|
||||
<outlet property="bulkBorderAlphaStack" destination="8tb-mS-WEu" id="bUJ-WU-fJW"/>
|
||||
<outlet property="bulkBorderWidthLabel" destination="TFq-Un-O3H" id="DlD-ma-Ki3"/>
|
||||
@@ -1166,6 +1214,9 @@
|
||||
<outlet property="decelerationRateLabel" destination="znE-Lv-uWV" id="2Ud-O4-DD8"/>
|
||||
<outlet property="decelerationRateSlider" destination="MFc-8O-wdZ" id="8Sh-vO-fqQ"/>
|
||||
<outlet property="decelerationRateStack" destination="3Bf-uN-nLa" id="WaW-YW-Q7p"/>
|
||||
<outlet property="dockedAlphaLabel" destination="kxI-bn-pRU" id="HVI-k6-ku6"/>
|
||||
<outlet property="dockedAlphaSlider" destination="FzJ-KQ-5Ws" id="joj-qj-owB"/>
|
||||
<outlet property="dockedAlphaStack" destination="n71-jv-Ziw" id="bPO-FM-PnG"/>
|
||||
<outlet property="importFromOtherButton" destination="b63-Pp-oPM" id="QqI-Mw-KNq"/>
|
||||
<outlet property="minStickOffsetLabel" destination="Mxv-HT-xeB" id="B9H-LZ-g3A"/>
|
||||
<outlet property="minStickOffsetSlider" destination="w5M-fB-8rI" id="CVk-p9-IAn"/>
|
||||
@@ -3420,16 +3471,16 @@
|
||||
<image name="trash.fill" catalog="system" width="117" height="128"/>
|
||||
<image name="tray.full.fill" catalog="system" width="128" height="88"/>
|
||||
<systemColor name="linkColor">
|
||||
<color red="0.0" green="0.47843137254901963" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemBrownColor">
|
||||
<color red="0.67450980392156867" green="0.49803921568627452" blue="0.36862745098039218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color red="0.63529411759999999" green="0.51764705879999995" blue="0.36862745099999999" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemGray2Color">
|
||||
<color red="0.68235294117647061" green="0.68235294117647061" blue="0.69803921568627447" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color red="0.68235294120000001" green="0.68235294120000001" blue="0.69803921570000005" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
<systemColor name="systemTealColor">
|
||||
<color red="0.0" green="0.76470588235294112" blue="0.81568627450980391" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color red="0.18823529410000001" green="0.69019607839999997" blue="0.78039215689999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
|
||||
@@ -134,28 +134,34 @@ final class AbstractGamepadOverlayView: UIView {
|
||||
private weak var hostedView: UIView?
|
||||
private let visualMaskLayer = CAShapeLayer()
|
||||
private let usesPlayStationFaceButtons: Bool
|
||||
private var pinchBaseTransform: CGAffineTransform = .identity
|
||||
private let baseRenderWidth: CGFloat = 420
|
||||
private let baseAspectRatio: CGFloat = 1.82
|
||||
private let initialDisplayWidth: CGFloat
|
||||
private var pinchBaseWidth: CGFloat = 0
|
||||
private var panStartCenter: CGPoint = .zero
|
||||
private var activeGestureCount = 0
|
||||
private var didRestorePersistedState = false
|
||||
private let minScale: CGFloat = 0.1
|
||||
private let maxScale: CGFloat = 2.4
|
||||
private let doubleTapWidths: [CGFloat] = [130, 200]
|
||||
private let minWidth: CGFloat = 70
|
||||
private let maxWidth: CGFloat = 520
|
||||
private let doubleTapWidths: [CGFloat] = [GenericUtils.isIPhone() ? 90 : 130, GenericUtils.isIPhone() ? 165 : 200]
|
||||
|
||||
@objc init(frame: CGRect, usesPlayStationFaceButtons: Bool) {
|
||||
self.usesPlayStationFaceButtons = usesPlayStationFaceButtons
|
||||
super.init(frame: frame)
|
||||
self.initialDisplayWidth = frame.width > 0 ? frame.width : baseRenderWidth
|
||||
super.init(frame: CGRect(origin: frame.origin, size: CGSize(width: baseRenderWidth, height: baseRenderWidth / baseAspectRatio)))
|
||||
setupHostedViewIfNeeded()
|
||||
}
|
||||
|
||||
override init(frame: CGRect) {
|
||||
self.usesPlayStationFaceButtons = false
|
||||
super.init(frame: frame)
|
||||
self.initialDisplayWidth = frame.width > 0 ? frame.width : baseRenderWidth
|
||||
super.init(frame: CGRect(origin: frame.origin, size: CGSize(width: baseRenderWidth, height: baseRenderWidth / baseAspectRatio)))
|
||||
setupHostedViewIfNeeded()
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
self.usesPlayStationFaceButtons = false
|
||||
self.initialDisplayWidth = baseRenderWidth
|
||||
super.init(coder: coder)
|
||||
setupHostedViewIfNeeded()
|
||||
}
|
||||
@@ -176,6 +182,7 @@ final class AbstractGamepadOverlayView: UIView {
|
||||
clipsToBounds = false
|
||||
isMultipleTouchEnabled = true
|
||||
layer.mask = visualMaskLayer
|
||||
applyScale(forTargetWidth: initialDisplayWidth)
|
||||
|
||||
addSubview(hostingController.view)
|
||||
installGesturesIfNeeded()
|
||||
@@ -239,11 +246,10 @@ final class AbstractGamepadOverlayView: UIView {
|
||||
case .began:
|
||||
presentFirstTouchTipIfNeeded()
|
||||
beginGestureSession()
|
||||
pinchBaseTransform = transform
|
||||
pinchBaseWidth = frame.width
|
||||
case .changed, .ended:
|
||||
let baseScale = currentScale(from: pinchBaseTransform)
|
||||
let nextScale = max(minScale, min(maxScale, baseScale * recognizer.scale))
|
||||
transform = CGAffineTransform(scaleX: nextScale, y: nextScale)
|
||||
let nextWidth = max(minWidth, min(maxWidth, pinchBaseWidth * recognizer.scale))
|
||||
applyScale(forTargetWidth: nextWidth)
|
||||
if recognizer.state == .ended {
|
||||
endGestureSession()
|
||||
}
|
||||
@@ -261,10 +267,6 @@ final class AbstractGamepadOverlayView: UIView {
|
||||
persistState()
|
||||
}
|
||||
|
||||
private func currentScale(from transform: CGAffineTransform) -> CGFloat {
|
||||
sqrt((transform.a * transform.a) + (transform.c * transform.c))
|
||||
}
|
||||
|
||||
private func updateVisualMask() {
|
||||
guard bounds.width > 1, bounds.height > 1 else {
|
||||
visualMaskLayer.path = nil
|
||||
@@ -325,8 +327,7 @@ final class AbstractGamepadOverlayView: UIView {
|
||||
defer { didRestorePersistedState = true }
|
||||
|
||||
guard let state = AbstractGamepadOverlayPersistence.loadOverlayState() else { return }
|
||||
let restoredScale = max(minScale, min(maxScale, state.size.width / bounds.width))
|
||||
transform = CGAffineTransform(scaleX: restoredScale, y: restoredScale)
|
||||
applyScale(forTargetWidth: state.size.width)
|
||||
center = AbstractGamepadOverlayPersistence.center(in: superview, from: state.centerRatio)
|
||||
}
|
||||
|
||||
@@ -387,8 +388,8 @@ final class AbstractGamepadOverlayView: UIView {
|
||||
}
|
||||
|
||||
private func applyScale(forTargetWidth targetWidth: CGFloat) {
|
||||
guard bounds.width > 0 else { return }
|
||||
let targetScale = max(minScale, min(maxScale, targetWidth / bounds.width))
|
||||
let clampedWidth = max(minWidth, min(maxWidth, targetWidth))
|
||||
let targetScale = clampedWidth / baseRenderWidth
|
||||
transform = CGAffineTransform(scaleX: targetScale, y: targetScale)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -447,6 +447,8 @@ static CGRect layoutViewBounds;
|
||||
buttonState.sequence = widgetView.sequence;
|
||||
buttonState.sequenceSet = widgetView.sequenceSet;
|
||||
buttonState.parentSequence = widgetView.parentSequence;
|
||||
buttonState.autoDockTimer = widgetView.autoDockIdleDuration;
|
||||
buttonState.dockedAlpha = widgetView.autoDockSettledAlpha;
|
||||
buttonState.folded = widgetView.folded;
|
||||
buttonState.revealMode = widgetView.revealMode;
|
||||
buttonState.bulkMoveEnabled = widgetView.bulkMoveEnabled;
|
||||
|
||||
@@ -30,6 +30,9 @@ NS_ASSUME_NONNULL_BEGIN
|
||||
@property (nonatomic, assign) int16_t sequence;
|
||||
@property (nonatomic, assign) int16_t parentSequence;
|
||||
@property NSSet *sequenceSet;
|
||||
@property (nonatomic, assign) int16_t autoDockTimer;
|
||||
@property (nonatomic, assign) CGFloat dockedAlpha;
|
||||
|
||||
@property CGPoint position;
|
||||
@property (nonatomic, assign) BOOL isHidden;
|
||||
@property (nonatomic, assign) uint8_t buttonMode;
|
||||
|
||||
@@ -38,6 +38,9 @@
|
||||
[encoder encodeInt32:self.sequence forKey:@"sequence"];
|
||||
[encoder encodeInt32:self.parentSequence forKey:@"parentSequence"];
|
||||
[encoder encodeObject:self.sequenceSet forKey:@"sequenceSet"];
|
||||
[encoder encodeInt32:self.autoDockTimer forKey:@"autoDockTimer"];
|
||||
[encoder encodeFloat:self.dockedAlpha forKey:@"dockedAlpha"];
|
||||
|
||||
[encoder encodeObject:self.alias forKey:@"alias"];
|
||||
[encoder encodeInt:self.widgetType forKey:@"buttonType"]; // keep original key
|
||||
[encoder encodeInt:self.sizeReference forKey:@"sizeReference"];
|
||||
@@ -80,6 +83,9 @@
|
||||
self.sequence = [decoder containsValueForKey:@"sequence"] ? [decoder decodeInt32ForKey:@"sequence"] : -1;
|
||||
self.parentSequence = [decoder containsValueForKey:@"parentSequence"] ? [decoder decodeInt32ForKey:@"parentSequence"] : -1;
|
||||
self.sequenceSet = [decoder containsValueForKey:@"sequenceSet"] ? [decoder decodeObjectForKey:@"sequenceSet"] : [NSSet set];
|
||||
self.autoDockTimer = [decoder containsValueForKey:@"autoDockTimer"] ? [decoder decodeInt32ForKey:@"autoDockTimer"] : 10;
|
||||
self.dockedAlpha = [decoder containsValueForKey:@"dockedAlpha"] ? [decoder decodeFloatForKey:@"dockedAlpha"] : 0.2;
|
||||
|
||||
self.alias = [decoder decodeObjectForKey:@"alias"];
|
||||
self.widgetType = [decoder decodeIntForKey:@"buttonType"];
|
||||
self.sizeReference = [decoder containsValueForKey:@"sizeReference"] ? [decoder decodeIntForKey:@"sizeReference"] : longSide;
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
import UIKit
|
||||
import SVGKit
|
||||
import ObjectiveC.runtime
|
||||
|
||||
@objc class OnScreenWidgetView: UIView {
|
||||
@objc(widgetWithCmdString:buttonLabel:shape:profile:)
|
||||
@@ -768,6 +769,7 @@ import SVGKit
|
||||
}
|
||||
if self.shape == "square" {
|
||||
let widgetSize = getRecSize(widthFactor: self.widthFactor, heightFactor: self.heightFactor)
|
||||
autoDockOriginalBoundsSize = widgetSize
|
||||
NSLayoutConstraint.activate([
|
||||
self.widthAnchor.constraint(equalToConstant: widgetSize.width),
|
||||
self.heightAnchor.constraint(equalToConstant: widgetSize.height),])
|
||||
@@ -2457,6 +2459,7 @@ import SVGKit
|
||||
}
|
||||
|
||||
private func handleFunctionalButtonDown(){
|
||||
if autoDockIsDocked {return}
|
||||
switch self.functionalButtonString {
|
||||
case "FOLDER":
|
||||
if self.buttonMode != .slideAndHold {break}
|
||||
@@ -2486,6 +2489,7 @@ import SVGKit
|
||||
|
||||
private func handleFunctionalButtonUp(event: UIEvent? = nil){
|
||||
// print("handleFunctionalButtonUp \(self.widgetLabel), event Empty: \(String(describing: event)), \(CACurrentMediaTime())")
|
||||
if autoDockIsDocked {return}
|
||||
if buttonMode == .movable {
|
||||
if moveableButtonLongPressed() && !UITouchUtil.touches(in: self, from: event).isEmpty {return}
|
||||
switch self.functionalButtonString {
|
||||
@@ -2941,6 +2945,308 @@ import SVGKit
|
||||
return true
|
||||
}
|
||||
|
||||
// MARK: - Auto Dock
|
||||
private static let autoDockExposedEdgeLength: CGFloat = 80
|
||||
private static let autoDockExposedThickness: CGFloat = 17
|
||||
private static let autoDockVerticalInset: CGFloat = 12
|
||||
@objc var autoDockIdleDuration: TimeInterval = 5
|
||||
private static let autoDockInitialAlpha: CGFloat = 0.8
|
||||
@objc var autoDockSettledAlpha: CGFloat = 0.2
|
||||
private static let autoDockSettledAlphaDelay: TimeInterval = 2
|
||||
private static let autoDockReturnDamping: CGFloat = 0.9
|
||||
private static let autoDockGoDamping: CGFloat = 0.82
|
||||
private typealias TouchesIMP = @convention(c) (AnyObject, Selector, Set<UITouch>, UIEvent?) -> Void
|
||||
private static var autoDockOriginalTouchesBeganIMP: TouchesIMP?
|
||||
private static var autoDockOriginalTouchesMovedIMP: TouchesIMP?
|
||||
private static var autoDockOriginalTouchesEndedIMP: TouchesIMP?
|
||||
private static var autoDockOriginalTouchesCancelledIMP: TouchesIMP?
|
||||
private static let autoDockSwizzlingInstalled: Void = {
|
||||
let cls: AnyClass = OnScreenWidgetView.self
|
||||
func swizzle(_ originalSelector: Selector, _ swizzledSelector: Selector) -> TouchesIMP? {
|
||||
guard let originalMethod = class_getInstanceMethod(cls, originalSelector),
|
||||
let swizzledMethod = class_getInstanceMethod(cls, swizzledSelector) else { return nil }
|
||||
let originalIMP = unsafeBitCast(method_getImplementation(originalMethod), to: TouchesIMP.self)
|
||||
method_exchangeImplementations(originalMethod, swizzledMethod)
|
||||
return originalIMP
|
||||
}
|
||||
autoDockOriginalTouchesBeganIMP = swizzle(#selector(OnScreenWidgetView.touchesBegan(_:with:)), #selector(OnScreenWidgetView.vl_autoDock_touchesBegan(_:with:)))
|
||||
autoDockOriginalTouchesMovedIMP = swizzle(#selector(OnScreenWidgetView.touchesMoved(_:with:)), #selector(OnScreenWidgetView.vl_autoDock_touchesMoved(_:with:)))
|
||||
autoDockOriginalTouchesEndedIMP = swizzle(#selector(OnScreenWidgetView.touchesEnded(_:with:)), #selector(OnScreenWidgetView.vl_autoDock_touchesEnded(_:with:)))
|
||||
autoDockOriginalTouchesCancelledIMP = swizzle(#selector(OnScreenWidgetView.touchesCancelled(_:with:)), #selector(OnScreenWidgetView.vl_autoDock_touchesCancelled(_:with:)))
|
||||
}()
|
||||
|
||||
private var autoDockTimer: Timer?
|
||||
private var autoDockStoredCenter: CGPoint?
|
||||
private var autoDockDockedCenter: CGPoint?
|
||||
private var autoDockDockedToBottomEdge: Bool = false
|
||||
private var autoDockIsDocked: Bool = false
|
||||
private var autoDockEnabled: Bool = false
|
||||
private var autoDockSettledAlphaTimer: Timer?
|
||||
private var autoDockOriginalBoundsSize: CGSize = .zero
|
||||
|
||||
private static func installAutoDockIfNeeded() {
|
||||
_ = autoDockSwizzlingInstalled
|
||||
}
|
||||
|
||||
@objc private func vl_autoDock_touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||
guard autoDockEnabled else {
|
||||
OnScreenWidgetView.autoDockOriginalTouchesBeganIMP?(self, #selector(OnScreenWidgetView.touchesBegan(_:with:)), touches, event)
|
||||
return
|
||||
}
|
||||
if autoDockIsDocked {
|
||||
autoDockRestoreWidget(animated: true)
|
||||
return
|
||||
}
|
||||
autoDockStopCountdown()
|
||||
OnScreenWidgetView.autoDockOriginalTouchesBeganIMP?(self, #selector(OnScreenWidgetView.touchesBegan(_:with:)), touches, event)
|
||||
}
|
||||
|
||||
@objc private func vl_autoDock_touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||
guard autoDockEnabled else {
|
||||
OnScreenWidgetView.autoDockOriginalTouchesMovedIMP?(self, #selector(OnScreenWidgetView.touchesMoved(_:with:)), touches, event)
|
||||
return
|
||||
}
|
||||
if autoDockIsDocked {
|
||||
return
|
||||
}
|
||||
autoDockStopCountdown()
|
||||
OnScreenWidgetView.autoDockOriginalTouchesMovedIMP?(self, #selector(OnScreenWidgetView.touchesMoved(_:with:)), touches, event)
|
||||
}
|
||||
|
||||
@objc private func vl_autoDock_touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||
OnScreenWidgetView.autoDockOriginalTouchesEndedIMP?(self, #selector(OnScreenWidgetView.touchesEnded(_:with:)), touches, event)
|
||||
guard autoDockEnabled else { return }
|
||||
autoDockRestartCountdownIfNeeded()
|
||||
}
|
||||
|
||||
@objc private func vl_autoDock_touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent?) {
|
||||
OnScreenWidgetView.autoDockOriginalTouchesCancelledIMP?(self, #selector(OnScreenWidgetView.touchesCancelled(_:with:)), touches, event)
|
||||
guard autoDockEnabled else { return }
|
||||
autoDockRestartCountdownIfNeeded()
|
||||
}
|
||||
|
||||
@objc public func setAutoDockEnabled(_ enabled: Bool) {
|
||||
autoDockEnabled = enabled
|
||||
if enabled {
|
||||
OnScreenWidgetView.installAutoDockIfNeeded()
|
||||
autoDockRestartCountdownIfNeeded()
|
||||
}
|
||||
else {
|
||||
autoDockStopCountdown()
|
||||
autoDockStopSettledAlphaTimer()
|
||||
if autoDockIsDocked {
|
||||
autoDockRestoreWidget(animated: false)
|
||||
}
|
||||
autoDockRestoreOriginalSize()
|
||||
label.alpha = 1
|
||||
autoDockRestoreOriginalAlpha()
|
||||
}
|
||||
}
|
||||
|
||||
@objc public func restartAutoDockCountdown() {
|
||||
guard autoDockEnabled else { return }
|
||||
autoDockRestartCountdownIfNeeded()
|
||||
}
|
||||
|
||||
@objc public func cancelAutoDockCountdown() {
|
||||
autoDockStopCountdown()
|
||||
}
|
||||
|
||||
@objc public func triggerAutoDockNow() {
|
||||
guard autoDockEnabled else { return }
|
||||
autoDockStopCountdown()
|
||||
autoDockWidgetToNearestEdge()
|
||||
}
|
||||
|
||||
@objc public func restoreFromAutoDock(animated: Bool) {
|
||||
guard autoDockEnabled else { return }
|
||||
autoDockRestoreWidget(animated: animated)
|
||||
}
|
||||
|
||||
private func autoDockStopCountdown() {
|
||||
autoDockTimer?.invalidate()
|
||||
autoDockTimer = nil
|
||||
}
|
||||
|
||||
private func autoDockStopSettledAlphaTimer() {
|
||||
autoDockSettledAlphaTimer?.invalidate()
|
||||
autoDockSettledAlphaTimer = nil
|
||||
}
|
||||
|
||||
private func autoDockRestoreOriginalAlpha() {
|
||||
alpha = widgetType == WidgetTypeEnum.touchPad ? 1 : 1
|
||||
}
|
||||
|
||||
private func autoDockApplyTemporarySize() {
|
||||
// autoDockOriginalBoundsSize = bounds.size
|
||||
var adjustedFrame = frame
|
||||
if autoDockDockedToBottomEdge {
|
||||
adjustedFrame.size.width = OnScreenWidgetView.autoDockExposedEdgeLength
|
||||
}
|
||||
else {
|
||||
adjustedFrame.size.height = OnScreenWidgetView.autoDockExposedEdgeLength
|
||||
}
|
||||
frame = adjustedFrame.integral
|
||||
if shape == "round" {
|
||||
layer.cornerRadius = min(bounds.width, bounds.height) / 2
|
||||
}
|
||||
else {
|
||||
setSquareWidgetCornerRadius()
|
||||
}
|
||||
}
|
||||
|
||||
private func autoDockRestoreOriginalSize() {
|
||||
guard autoDockOriginalBoundsSize != .zero else { return }
|
||||
var adjustedFrame = frame
|
||||
adjustedFrame.size = autoDockOriginalBoundsSize
|
||||
frame = adjustedFrame.integral
|
||||
if let hostView = superview {
|
||||
if autoDockDockedToBottomEdge {
|
||||
frame.origin.y = hostView.bounds.height - frame.height
|
||||
}
|
||||
else {
|
||||
frame.origin.x = hostView.bounds.width - frame.width
|
||||
}
|
||||
}
|
||||
if shape == "round" {
|
||||
layer.cornerRadius = min(bounds.width, bounds.height) / 2
|
||||
}
|
||||
else {
|
||||
setSquareWidgetCornerRadius()
|
||||
}
|
||||
}
|
||||
|
||||
private func autoDockRestartCountdownIfNeeded() {
|
||||
autoDockStopCountdown()
|
||||
autoDockStopSettledAlphaTimer()
|
||||
guard !OnScreenWidgetView.editMode,
|
||||
autoDockEnabled,
|
||||
superview != nil,
|
||||
window != nil,
|
||||
!isHidden,
|
||||
// alpha > 0.01,
|
||||
!autoDockIsDocked else {
|
||||
return
|
||||
}
|
||||
print("autoDockIdleDuration \(autoDockIdleDuration) \(CACurrentMediaTime())")
|
||||
autoDockTimer = Timer.scheduledTimer(withTimeInterval: autoDockIdleDuration, repeats: false) { [weak self] _ in
|
||||
self?.autoDockWidgetToNearestEdge()
|
||||
}
|
||||
}
|
||||
|
||||
private func autoDockWidgetToNearestEdge() {
|
||||
if !folded {
|
||||
restartAutoDockCountdown()
|
||||
return
|
||||
}
|
||||
self.isUserInteractionEnabled = false
|
||||
guard let hostView = superview,
|
||||
!OnScreenWidgetView.editMode,
|
||||
autoDockEnabled,
|
||||
!autoDockIsDocked,
|
||||
!isHidden else {
|
||||
return
|
||||
}
|
||||
hostView.layoutIfNeeded()
|
||||
layoutIfNeeded()
|
||||
|
||||
autoDockStoredCenter = center
|
||||
let rightDistance = hostView.bounds.width - frame.maxX
|
||||
let bottomDistance = hostView.bounds.height - frame.maxY
|
||||
autoDockDockedToBottomEdge = bottomDistance < rightDistance
|
||||
|
||||
let targetFrame = autoDockTargetFrame(in: hostView.bounds)
|
||||
autoDockDockedCenter = CGPoint(x: targetFrame.midX, y: targetFrame.midY)
|
||||
|
||||
self.autoDockIsDocked = true
|
||||
UIView.animate(
|
||||
withDuration: 0.62,
|
||||
delay: 0,
|
||||
usingSpringWithDamping: OnScreenWidgetView.autoDockGoDamping,
|
||||
initialSpringVelocity: 0.35,
|
||||
options: [.allowUserInteraction, .curveEaseOut]
|
||||
) {
|
||||
self.frame = targetFrame
|
||||
self.transform = CGAffineTransform(scaleX: 0.985, y: 0.985)
|
||||
} completion: { _ in
|
||||
UIView.animate(withDuration: 0.14, delay: 0, options: [.allowUserInteraction, .curveEaseOut]) {
|
||||
self.autoDockApplyTemporarySize()
|
||||
self.transform = .identity
|
||||
self.label.alpha = 0
|
||||
self.alpha = OnScreenWidgetView.autoDockInitialAlpha
|
||||
} completion: { _ in
|
||||
self.isUserInteractionEnabled = true
|
||||
self.autoDockStopSettledAlphaTimer()
|
||||
self.autoDockSettledAlphaTimer = Timer.scheduledTimer(withTimeInterval: OnScreenWidgetView.autoDockSettledAlphaDelay, repeats: false) { [weak self] _ in
|
||||
guard let self, self.autoDockIsDocked else { return }
|
||||
UIView.animate(withDuration: 0.2, delay: 0, options: [.allowUserInteraction, .curveEaseOut]) {
|
||||
self.isUserInteractionEnabled = true
|
||||
self.alpha = self.autoDockSettledAlpha
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private func autoDockRestoreWidget(animated: Bool) {
|
||||
guard autoDockIsDocked, let restoreCenter = autoDockStoredCenter else { return }
|
||||
autoDockStopCountdown()
|
||||
autoDockStopSettledAlphaTimer()
|
||||
autoDockRestoreOriginalSize()
|
||||
label.alpha = 1
|
||||
autoDockRestoreOriginalAlpha()
|
||||
|
||||
let animations = {
|
||||
self.center = restoreCenter
|
||||
self.transform = .identity
|
||||
}
|
||||
|
||||
let completion: (Bool) -> Void = { _ in
|
||||
self.autoDockDockedCenter = nil
|
||||
self.autoDockRestartCountdownIfNeeded()
|
||||
}
|
||||
|
||||
if animated {
|
||||
UIView.animate(
|
||||
withDuration: 0.38,
|
||||
delay: 0,
|
||||
usingSpringWithDamping: OnScreenWidgetView.autoDockReturnDamping,
|
||||
initialSpringVelocity: 0.22,
|
||||
options: [.allowUserInteraction, .curveEaseOut],
|
||||
animations: animations,
|
||||
completion: {_ in
|
||||
self.autoDockIsDocked = false
|
||||
self.restartAutoDockCountdown()
|
||||
}
|
||||
)
|
||||
}
|
||||
else {
|
||||
animations()
|
||||
completion(true)
|
||||
}
|
||||
}
|
||||
|
||||
private func autoDockTargetFrame(in bounds: CGRect) -> CGRect {
|
||||
var targetFrame = frame
|
||||
if autoDockDockedToBottomEdge {
|
||||
targetFrame.origin.x = min(
|
||||
max(targetFrame.origin.x, OnScreenWidgetView.autoDockVerticalInset),
|
||||
bounds.width - targetFrame.width - OnScreenWidgetView.autoDockVerticalInset
|
||||
)
|
||||
targetFrame.origin.y = bounds.height - OnScreenWidgetView.autoDockExposedThickness
|
||||
}
|
||||
else {
|
||||
targetFrame.origin.y = min(
|
||||
max(targetFrame.origin.y, OnScreenWidgetView.autoDockVerticalInset),
|
||||
bounds.height - targetFrame.height - OnScreenWidgetView.autoDockVerticalInset
|
||||
)
|
||||
targetFrame.origin.x = bounds.width - OnScreenWidgetView.autoDockExposedThickness
|
||||
}
|
||||
return targetFrame.integral
|
||||
}
|
||||
/// ================================================================================================================
|
||||
|
||||
|
||||
@objc func getAvailableSequence() -> Int16 {
|
||||
var sequence:Int16 = 0
|
||||
self.forEachWidget(){ widget in
|
||||
@@ -3143,7 +3449,14 @@ import SVGKit
|
||||
|
||||
override func didMoveToSuperview() {
|
||||
super.didMoveToSuperview()
|
||||
OnScreenWidgetView.installAutoDockIfNeeded()
|
||||
if superview == nil {
|
||||
autoDockStopCountdown()
|
||||
autoDockStopSettledAlphaTimer()
|
||||
autoDockRestoreOriginalSize()
|
||||
autoDockIsDocked = false
|
||||
label.alpha = 1
|
||||
autoDockRestoreOriginalAlpha()
|
||||
if self.motionControlButtonString == "GYRO" {
|
||||
self.motionHandler?.stopGyroUpdate(interruptNoneGyroInput: true)
|
||||
self.motionHandler?.gyroStarter = nil
|
||||
@@ -3177,6 +3490,7 @@ import SVGKit
|
||||
else{
|
||||
self.superViewWidth = (superview?.bounds.size.width)!
|
||||
self.superViewHeight = (superview?.bounds.size.height)!
|
||||
autoDockRestartCountdownIfNeeded()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3244,6 +3558,6 @@ import SVGKit
|
||||
}
|
||||
|
||||
deinit {
|
||||
print("onScreenWidgetView deinit \(CACurrentMediaTime())")
|
||||
print("onScreenWidgetView deinit \(self.widgetLabel) \(CACurrentMediaTime())")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -646,6 +646,8 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5;
|
||||
[OnScreenWidgetView setWithWidget:widgetView for:widgetView.sequence];
|
||||
widgetView.sequenceSet = buttonState.sequenceSet;
|
||||
widgetView.parentSequence = buttonState.parentSequence;
|
||||
widgetView.autoDockIdleDuration = buttonState.autoDockTimer;
|
||||
widgetView.autoDockSettledAlpha = buttonState.dockedAlpha;
|
||||
widgetView.folded = buttonState.folded;
|
||||
widgetView.persistedFolded = buttonState.folded;
|
||||
widgetView.revealMode = buttonState.revealMode;
|
||||
@@ -691,6 +693,8 @@ static const double X1_MOUSE_SPEED_DIVISOR = 2.5;
|
||||
widgetView.gamepadOverlayFLag = oscProfile.gamepadOverlayEnabled;
|
||||
[widgetView setupAtrributedText];
|
||||
|
||||
[widgetView setAutoDockEnabled:widgetView.isFolder && widgetView.parentSequence < 0 && widgetView.autoDockIdleDuration>0];
|
||||
|
||||
if(sequenceGenerated){
|
||||
// NSLog(@"widgetView.sequence %d %f", widgetView.sequence, CACurrentMediaTime());
|
||||
buttonState.sequence = widgetView.sequence;
|
||||
|
||||
@@ -1779,6 +1779,52 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Auto dock disabled" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "自动吸附: 已关闭"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "自動吸附: 已關閉"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "自動吸附: 已關閉"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Auto dock: %d s" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "自动吸附: %d 秒"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "自動吸附: %d 秒"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "自動吸附: %d 秒"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Auto tap disabled" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
@@ -3437,6 +3483,35 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"Docked alpha: %d%%" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Docked alpha: %d%"
|
||||
}
|
||||
},
|
||||
"zh-Hans" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "吸附后透明度: %d%%"
|
||||
}
|
||||
},
|
||||
"zh-Hant" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "吸附後透明度: %d%%"
|
||||
}
|
||||
},
|
||||
"zh-HK" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "吸附後透明度: %d%%"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"Done" : {
|
||||
"extractionState" : "manual",
|
||||
"localizations" : {
|
||||
|
||||
+45
-6
@@ -137,22 +137,18 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
@IBOutlet weak var bulkAlphaLabel: UILabel!
|
||||
@IBOutlet weak var bulkAlphaSlider: UISlider!
|
||||
|
||||
|
||||
@IBOutlet weak var bulkBorderWidthStack: UIStackView!
|
||||
@IBOutlet weak var bulkBorderWidthSlider: UISlider!
|
||||
@IBOutlet weak var bulkBorderWidthLabel: UILabel!
|
||||
|
||||
|
||||
@IBOutlet weak var bulkLabelAlphaStack: UIStackView!
|
||||
@IBOutlet weak var bulkLabelAlphaLabel: UILabel!
|
||||
@IBOutlet weak var bulkLabelAlphaSlider: UISlider!
|
||||
|
||||
|
||||
@IBOutlet weak var bulkBorderAlphaStack: UIStackView!
|
||||
@IBOutlet weak var bulkBorderAlphaLabel: UILabel!
|
||||
@IBOutlet weak var bulkBorderAlphaSlider: UISlider!
|
||||
|
||||
|
||||
@IBOutlet weak var bulkHighlightAlphaStack: UIStackView!
|
||||
@IBOutlet weak var bulkHighlightAlphaLabel: UILabel!
|
||||
@IBOutlet weak var bulkHighlightAlphaSlider: UISlider!
|
||||
@@ -161,6 +157,14 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
@IBOutlet weak var bulkHighlightSizeLabel: UILabel!
|
||||
@IBOutlet weak var bulkHighlightSizeSlider: UISlider!
|
||||
|
||||
@IBOutlet weak var autoDockTimerStack: UIStackView!
|
||||
@IBOutlet weak var autoDockTimerLabel: UILabel!
|
||||
@IBOutlet weak var autoDockTimerSlider: UISlider!
|
||||
|
||||
@IBOutlet weak var dockedAlphaStack: UIStackView!
|
||||
@IBOutlet weak var dockedAlphaLabel: UILabel!
|
||||
@IBOutlet weak var dockedAlphaSlider: UISlider!
|
||||
|
||||
@IBOutlet weak var widgetPanelStack: UIStackView!
|
||||
|
||||
@IBOutlet private weak var toolbarTopConstraintiPhone: NSLayoutConstraint!
|
||||
@@ -357,6 +361,8 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
OnScreenWidgetView.set(widget: widgetView, for: widgetView.sequence)
|
||||
widgetView.sequenceSet = buttonState.sequenceSet as? Set<Int16> ?? Set()
|
||||
widgetView.parentSequence = buttonState.parentSequence
|
||||
widgetView.autoDockIdleDuration = TimeInterval(buttonState.autoDockTimer)
|
||||
widgetView.autoDockSettledAlpha = CGFloat(buttonState.dockedAlpha)
|
||||
widgetView.folded = buttonState.folded
|
||||
widgetView.revealMode = RevealMode(rawValue: Int(buttonState.revealMode)) ?? .coexist
|
||||
widgetView.bulkMoveEnabled = buttonState.bulkMoveEnabled
|
||||
@@ -827,6 +833,15 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
|
||||
mouseDownButtonStack.isHidden = !widgetView.isMousePadWithButtonActions
|
||||
mouseButtonDownSelector.selectedSegmentIndex = Int(widgetView.mouseButtonAction.rawValue)
|
||||
|
||||
|
||||
autoDockTimerStack.isHidden = !(widgetView.isFolder && widgetView.parentSequence == -1);
|
||||
autoDockTimerSlider.value = Float(widgetView.autoDockIdleDuration)
|
||||
autoDockTimerSliderMoved(autoDockTimerSlider)
|
||||
|
||||
dockedAlphaStack.isHidden = !(widgetView.isFolder && widgetView.parentSequence == -1);
|
||||
dockedAlphaSlider.value = Float(widgetView.autoDockSettledAlpha)
|
||||
dockedAlphaSliderMoved(dockedAlphaSlider)
|
||||
|
||||
buttonModeStack.isHidden = widgetView.widgetType != .button
|
||||
buttonModeSelector.setEnabled(!widgetView.isFunctionalButton, forSegmentAt: Int(ButtonMode.slideToToggle.rawValue))
|
||||
@@ -834,7 +849,7 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
buttonModeSelector.setEnabled(!widgetView.isFolder, forSegmentAt: Int(ButtonMode.regular.rawValue))
|
||||
buttonModeSelector.setEnabled(!widgetView.isFunctionalButton || widgetView.isTapToToggleException, forSegmentAt: Int(ButtonMode.tapToToggle.rawValue))
|
||||
buttonModeSelector.selectedSegmentIndex = Int(widgetView.buttonMode.rawValue)
|
||||
|
||||
|
||||
collectedWidgetsStack.isHidden = !widgetView.isFolder
|
||||
collectedWidgetsSelector.selectedSegmentIndex = widgetView.folded ? 1 : 0
|
||||
revealModeSelector.selectedSegmentIndex = Int(widgetView.revealMode.rawValue)
|
||||
@@ -1022,6 +1037,8 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
)
|
||||
|
||||
newWidget.sequence = widget.sequence
|
||||
newWidget.autoDockIdleDuration = widget.autoDockIdleDuration
|
||||
newWidget.autoDockSettledAlpha = widget.autoDockSettledAlpha
|
||||
newWidget.revealMode = widget.revealMode
|
||||
newWidget.bulkMoveEnabled = widget.bulkMoveEnabled
|
||||
newWidget.guidelineDelegate = self
|
||||
@@ -1161,7 +1178,7 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
let alert = UIAlertController(title: "", message: message, preferredStyle: .alert)
|
||||
alert.addAction(UIAlertAction(title: LocalizationHelper.localizedString(forKey: "Ok"), style: .default) { _ in
|
||||
if !success {
|
||||
self.oscProfilesTableViewController?.profileViewRefresh()
|
||||
// self.oscProfilesTableViewController?.profileViewRefresh()
|
||||
}
|
||||
})
|
||||
present(alert, animated: true)
|
||||
@@ -1380,6 +1397,14 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
stickIndicatorOffsetSlider.addTarget(self, action: #selector(stickIndicatorOffsetSliderMoved(_:)), for: .valueChanged)
|
||||
stickIndicatorOffsetLabel.text = LocalizationHelper.localizedString(forKey: "Indicator offset")
|
||||
stickIndicatorOffsetStack.isHidden = true
|
||||
|
||||
autoDockTimerSlider.addTarget(self, action: #selector(autoDockTimerSliderMoved(_:)), for: .valueChanged)
|
||||
autoDockTimerLabel.text = LocalizationHelper.localizedString(forKey: "Auto dock")
|
||||
autoDockTimerStack.isHidden = true;
|
||||
|
||||
dockedAlphaSlider.addTarget(self, action: #selector(dockedAlphaSliderMoved(_:)), for: .valueChanged)
|
||||
dockedAlphaLabel.text = LocalizationHelper.localizedString(forKey: "Docked alpha")
|
||||
dockedAlphaStack.isHidden = true;
|
||||
|
||||
let whiteAttrs: [NSAttributedString.Key: Any] = [.foregroundColor: UIColor.white]
|
||||
mouseButtonDownSelector.addTarget(self, action: #selector(mouseDownButtonChanged(_:)), for: .valueChanged)
|
||||
@@ -1694,6 +1719,20 @@ final class LayoutOnScreenControlsViewController: UIViewController, OnScreenWidg
|
||||
return
|
||||
}
|
||||
|
||||
@objc private func autoDockTimerSliderMoved(_ sender: UISlider) {
|
||||
guard let selectedWidget = selectedWidgetView else {return}
|
||||
selectedWidget.autoDockIdleDuration = TimeInterval(Int(sender.value))
|
||||
autoDockTimerLabel.text = sender.value == 0 ? LocalizationHelper.localizedString(forKey: "Auto dock disabled", Int(sender.value)) : LocalizationHelper.localizedString(forKey: "Auto dock: %d s", Int(sender.value))
|
||||
return
|
||||
}
|
||||
|
||||
@objc private func dockedAlphaSliderMoved(_ sender: UISlider) {
|
||||
guard let selectedWidget = selectedWidgetView else {return}
|
||||
selectedWidget.autoDockSettledAlpha = CGFloat(sender.value)
|
||||
dockedAlphaLabel.text = LocalizationHelper.localizedString(forKey: "Docked alpha: %d%%", Int(sender.value*100))
|
||||
return
|
||||
}
|
||||
|
||||
@objc private func mouseDownButtonChanged(_ sender: UISegmentedControl) {
|
||||
selectedWidgetView?.mouseButtonAction = MouseButtonAction(rawValue: sender.selectedSegmentIndex) ?? .hovering
|
||||
}
|
||||
|
||||
@@ -1781,13 +1781,16 @@
|
||||
|
||||
BOOL usesXboxFaceButtons = _settings.emulatedControllerType.intValue == LI_CTYPE_XBOX;
|
||||
|
||||
CGFloat maxWidth = MIN(CGRectGetWidth(self.view.bounds) * 0.72, 620);
|
||||
CGFloat width = MAX(420, maxWidth);
|
||||
CGFloat height = width / 1.82;
|
||||
CGRect overlayFrame = CGRectMake(0, 0, width, height);
|
||||
// CGFloat maxWidth = MIN(CGRectGetWidth(self.view.bounds) * 0.72, 620);
|
||||
// CGFloat standardWidth = MAX(420, maxWidth);
|
||||
|
||||
CGFloat standardWidth = GenericUtils.isIPhone ? 165 : 200;
|
||||
|
||||
CGFloat standardhHeight = standardWidth / 1.82;
|
||||
CGRect overlayFrame = CGRectMake(0, 0, standardWidth, standardhHeight);
|
||||
|
||||
AbstractGamepadOverlayView *overlayView = [[AbstractGamepadOverlayView alloc] initWithFrame:overlayFrame usesPlayStationFaceButtons:!usesXboxFaceButtons];
|
||||
overlayView.center = CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds));
|
||||
overlayView.center = CGPointMake(self.view.bounds.size.width-standardWidth/2-20, self.view.bounds.size.height-standardhHeight/2-20);
|
||||
overlayView.userInteractionEnabled = YES;
|
||||
[self.view addSubview:overlayView];
|
||||
|
||||
|
||||
@@ -3992,6 +3992,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"KKW-Q7-0tg.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Auto dock timer\"; ObjectID = \"KKW-Q7-0tg\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Auto dock timer"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"KNe-bN-CDb.segmentTitles[0]" : {
|
||||
"comment" : "Class = \"UISegmentedControl\"; KNe-bN-CDb.segmentTitles[0] = \"Disabled\"; ObjectID = \"KNe-bN-CDb\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
@@ -5158,6 +5170,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"qFn-D7-7aD.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Docked alpha\"; ObjectID = \"qFn-D7-7aD\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Docked alpha"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"qNQ-fB-jhY.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Button mode\"; ObjectID = \"qNQ-fB-jhY\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
|
||||
@@ -2293,6 +2293,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"F8T-uC-SAR.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Auto dock timer\"; ObjectID = \"F8T-uC-SAR\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Auto dock timer"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"f46-Pt-0Pv.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Profile:\"; ObjectID = \"f46-Pt-0Pv\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
@@ -3061,6 +3073,18 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"kxI-bn-pRU.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \"Docked alpha\"; ObjectID = \"kxI-bn-pRU\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
"localizations" : {
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "new",
|
||||
"value" : "Docked alpha"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"KZ3-vJ-E8J.text" : {
|
||||
"comment" : "Class = \"UILabel\"; text = \" \"; ObjectID = \"KZ3-vJ-E8J\";",
|
||||
"extractionState" : "extracted_with_value",
|
||||
|
||||
@@ -1586,7 +1586,7 @@ struct SmallRoundIconButton: View {
|
||||
.offset(y: diameter * -0.042)
|
||||
)
|
||||
.frame(width: diameter, height: diameter)
|
||||
.shadow(color: Color.black.opacity(0.12), radius: 3, x: 0, y: 2)
|
||||
.shadow(color: Color.black.opacity(0), radius: 3, x: 0, y: 2)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user