Skip to content

Commit 0413851

Browse files
committed
merge + dev section fix
2 parents 4e9f481 + 5804cb2 commit 0413851

22 files changed

Lines changed: 611 additions & 208 deletions

‎.github/workflows/mirror-to-gitlab.yml‎

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -36,44 +36,45 @@ jobs:
3636
GITLAB_TOKEN: ${{ secrets.GITLAB_TOKEN }}
3737
GITLAB_PROJECT_ID: ${{ secrets.GITLAB_PROJECT_ID }}
3838
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
39+
RELEASE_NAME: ${{ github.event.release.name }}
40+
RELEASE_TAG: ${{ github.event.release.tag_name }}
41+
RELEASE_BODY: ${{ github.event.release.body }}
42+
RELEASE_DATE: ${{ github.event.release.published_at }}
3943
run: |
40-
TAG="${{ github.event.release.tag_name }}"
41-
NAME="${{ github.event.release.name }}"
42-
DESCRIPTION="${{ github.event.release.body }}"
43-
IS_PRERELEASE="${{ github.event.release.prerelease }}"
44-
4544
# Release in GitLab erstellen
46-
curl --fail -X POST \
47-
"https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/releases" \
48-
--header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
49-
--header "Content-Type: application/json" \
50-
--data "{
51-
\"name\": \"${NAME}\",
52-
\"tag_name\": \"${TAG}\",
53-
\"description\": \"${DESCRIPTION}\",
54-
\"released_at\": \"${{ github.event.release.published_at }}\"
55-
}"
45+
jq -n \
46+
--arg name "$RELEASE_NAME" \
47+
--arg tag "$RELEASE_TAG" \
48+
--arg desc "$RELEASE_BODY" \
49+
--arg date "$RELEASE_DATE" \
50+
'{name: $name, tag_name: $tag, description: $desc, released_at: $date}' \
51+
| curl --fail -X POST \
52+
"https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/releases" \
53+
--header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
54+
--header "Content-Type: application/json" \
55+
--data @-
5656
5757
# Assets (APKs etc.) runterladen und zu GitLab hochladen
58-
gh release download "${TAG}" --dir ./assets
58+
gh release download "$RELEASE_TAG" --dir ./assets
5959
6060
for file in ./assets/*; do
6161
filename=$(basename "$file")
62-
62+
6363
# Asset zu GitLab Package Registry hochladen
6464
curl --fail -X PUT \
65-
"https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/packages/generic/${TAG}/1.0.0/${filename}" \
65+
"https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/packages/generic/${RELEASE_TAG}/1.0.0/${filename}" \
6666
--header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
6767
--upload-file "$file"
6868
6969
# Asset mit Release verknüpfen
70-
curl --fail -X POST \
71-
"https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/releases/${TAG}/assets/links" \
72-
--header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
73-
--header "Content-Type: application/json" \
74-
--data "{
75-
\"name\": \"${filename}\",
76-
\"url\": \"https://gitlab.com/jamakr4/mg4-360-camera-app/-/package_files/generic/${TAG}/1.0.0/${filename}\"
77-
}"
70+
jq -n \
71+
--arg name "$filename" \
72+
--arg url "https://gitlab.com/jamakr4/mg4-360-camera-app/-/package_files/generic/${RELEASE_TAG}/1.0.0/${filename}" \
73+
'{name: $name, url: $url}' \
74+
| curl --fail -X POST \
75+
"https://gitlab.com/api/v4/projects/${GITLAB_PROJECT_ID}/releases/${RELEASE_TAG}/assets/links" \
76+
--header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" \
77+
--header "Content-Type: application/json" \
78+
--data @-
7879
done
7980

‎app/src/main/AndroidManifest.xml‎

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
1010
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
1111
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
12-
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
1312
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
1413
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CAMERA" />
1514
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
@@ -84,16 +83,6 @@
8483
<action android:name="com.saicmotor.hmi.aroundview.mod.ACTION_STOP" />
8584
</intent-filter>
8685
</receiver>
87-
88-
<provider
89-
android:name="androidx.core.content.FileProvider"
90-
android:authorities="${applicationId}.fileprovider"
91-
android:exported="false"
92-
android:grantUriPermissions="true">
93-
<meta-data
94-
android:name="android.support.FILE_PROVIDER_PATHS"
95-
android:resource="@xml/file_paths" />
96-
</provider>
9786
</application>
9887

9988
</manifest>
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package com.drivehub.kamera;
2+
3+
import android.content.SharedPreferences;
4+
import android.text.Editable;
5+
import android.widget.Button;
6+
import android.widget.EditText;
7+
import android.widget.Toast;
8+
9+
final class DevSettingsController {
10+
11+
void bind(
12+
SharedPreferences prefs,
13+
EditText etDefaultPollMs,
14+
EditText etSignalOffPollMs,
15+
Button btnResetDefaults
16+
) {
17+
bindPollingField(
18+
prefs,
19+
etDefaultPollMs,
20+
UiPrefs.KEY_DEV_DEFAULT_POLL_MS,
21+
UiPrefs.getDevDefaultPollMs(prefs)
22+
);
23+
bindPollingField(
24+
prefs,
25+
etSignalOffPollMs,
26+
UiPrefs.KEY_DEV_SIGNAL_OFF_POLL_MS,
27+
UiPrefs.getDevSignalOffPollMs(prefs)
28+
);
29+
bindResetDefaultsButton(prefs, etDefaultPollMs, etSignalOffPollMs, btnResetDefaults);
30+
}
31+
32+
private void bindResetDefaultsButton(
33+
SharedPreferences prefs,
34+
EditText etDefaultPollMs,
35+
EditText etSignalOffPollMs,
36+
Button btnResetDefaults
37+
) {
38+
if (btnResetDefaults == null) return;
39+
btnResetDefaults.setOnClickListener(v -> {
40+
prefs.edit()
41+
.putInt(UiPrefs.KEY_DEV_DEFAULT_POLL_MS, UiPrefs.DEFAULT_DEV_DEFAULT_POLLING_MS)
42+
.putInt(UiPrefs.KEY_DEV_SIGNAL_OFF_POLL_MS, UiPrefs.DEFAULT_DEV_SIGNAL_OFF_POLLING_MS)
43+
.apply();
44+
setPollingFieldValue(etDefaultPollMs, UiPrefs.DEFAULT_DEV_DEFAULT_POLLING_MS);
45+
setPollingFieldValue(etSignalOffPollMs, UiPrefs.DEFAULT_DEV_SIGNAL_OFF_POLLING_MS);
46+
SignalService.requestRecheck();
47+
Toast.makeText(v.getContext(), R.string.settings_dev_defaults_reset, Toast.LENGTH_SHORT).show();
48+
});
49+
}
50+
51+
private void setPollingFieldValue(EditText editText, int valueMs) {
52+
if (editText == null) return;
53+
editText.setText(String.valueOf(valueMs));
54+
editText.setSelection(editText.getText().length());
55+
}
56+
57+
private void bindPollingField(
58+
SharedPreferences prefs,
59+
EditText editText,
60+
String key,
61+
int initialValueMs
62+
) {
63+
if (editText == null) return;
64+
setPollingFieldValue(editText, initialValueMs);
65+
66+
editText.addTextChangedListener(new SimpleTextWatcher() {
67+
@Override
68+
public void afterTextChanged(Editable s) {
69+
Integer valueMs = parsePollingMsOrNull(s == null ? null : s.toString());
70+
if (valueMs == null) return;
71+
prefs.edit().putInt(key, valueMs).apply();
72+
SignalService.requestRecheck();
73+
}
74+
});
75+
editText.setOnFocusChangeListener((v, hasFocus) -> {
76+
if (hasFocus) return;
77+
Integer parsed = parsePollingMsOrNull(
78+
editText.getText() == null ? null : editText.getText().toString()
79+
);
80+
int valueMs = parsed != null ? parsed : initialValueMs;
81+
valueMs = UiPrefs.clampDevPollingMs(valueMs);
82+
prefs.edit().putInt(key, valueMs).apply();
83+
String normalized = String.valueOf(valueMs);
84+
if (!normalized.contentEquals(editText.getText())) {
85+
editText.setText(normalized);
86+
editText.setSelection(editText.getText().length());
87+
}
88+
SignalService.requestRecheck();
89+
});
90+
}
91+
92+
private Integer parsePollingMsOrNull(String value) {
93+
try {
94+
if (value == null) return null;
95+
String trimmed = value.trim();
96+
if (trimmed.isEmpty()) return null;
97+
return UiPrefs.clampDevPollingMs(Integer.parseInt(trimmed));
98+
} catch (Throwable ignored) {
99+
return null;
100+
}
101+
}
102+
103+
}

0 commit comments

Comments
 (0)