Skip to content

Commit c7630b5

Browse files
committed
Fixed activity classes; Moved LocalWebServer to utils; Other fixes.
1 parent 586e5b8 commit c7630b5

10 files changed

Lines changed: 102 additions & 724 deletions

File tree

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ allprojects {
2121
recyclerview = "1.3.2"
2222
lsp4j = "0.24.0"
2323
closure_compiler = "v20230802"
24+
nanohttpd = "2.3.1"
2425

2526
mCompileSDK = 36
2627
mMinSDK = 26

main/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ dependencies {
6060
implementation "androidx.multidex:multidex:$multidex"
6161
implementation "androidx.preference:preference:$preference"
6262
implementation "androidx.swiperefreshlayout:swiperefreshlayout:$swiperefreshlayout"
63-
implementation 'org.nanohttpd:nanohttpd:2.3.1'
6463

6564
implementation "com.google.android.material:material:$material"
6665
implementation "com.google.code.gson:gson:$gson"

main/src/main/java/org/xedox/webaide/PreviewActivity.java

Lines changed: 40 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,10 @@
1717
import com.google.android.material.appbar.MaterialToolbar;
1818
import java.io.BufferedReader;
1919
import java.io.File;
20-
import java.io.FileInputStream;
2120
import java.io.InputStream;
2221
import java.io.InputStreamReader;
2322
import java.io.IOException;
24-
import fi.iki.elonen.NanoHTTPD;
23+
import org.xedox.utils.LocalWebServer;
2524
import org.xedox.utils.dialog.ErrorDialog;
2625
import org.xedox.utils.view.WebViewX;
2726

@@ -33,9 +32,9 @@ public class PreviewActivity extends AppCompatActivity {
3332
private SwipeRefreshLayout swipeRefresh;
3433

3534
private boolean isDesktopMode = false;
36-
private String currentUrl = null;
37-
private LocalWebServer localServer = null;
38-
private String localServerUrl = null;
35+
private String currentUrl;
36+
private LocalWebServer localServer;
37+
private String localServerUrl;
3938

4039
@Override
4140
protected void onCreate(Bundle savedInstanceState) {
@@ -58,31 +57,34 @@ protected void onCreate(Bundle savedInstanceState) {
5857
settings.setAllowFileAccess(true);
5958
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
6059

61-
webView.setWebViewClient(new WebViewClient() {
62-
@Override
63-
public void onPageStarted(WebView view, String url, Bitmap favicon) {
64-
currentUrl = url;
65-
progress.setVisibility(ProgressBar.VISIBLE);
66-
}
67-
68-
@Override
69-
public void onPageFinished(WebView view, String url) {
70-
currentUrl = url;
71-
progress.setVisibility(ProgressBar.GONE);
72-
}
73-
});
60+
webView.setWebViewClient(
61+
new WebViewClient() {
62+
@Override
63+
public void onPageStarted(WebView view, String url, Bitmap favicon) {
64+
currentUrl = url;
65+
progress.setVisibility(ProgressBar.VISIBLE);
66+
}
67+
68+
@Override
69+
public void onPageFinished(WebView view, String url) {
70+
currentUrl = url;
71+
progress.setVisibility(ProgressBar.GONE);
72+
swipeRefresh.setRefreshing(false);
73+
}
74+
});
7475

75-
webView.setWebChromeClient(new WebChromeClient() {
76-
@Override
77-
public void onProgressChanged(WebView view, int newProgress) {
78-
progress.setProgress(newProgress);
79-
if (newProgress >= 100) {
80-
progress.setVisibility(ProgressBar.GONE);
81-
} else {
82-
progress.setVisibility(ProgressBar.VISIBLE);
83-
}
84-
}
85-
});
76+
webView.setWebChromeClient(
77+
new WebChromeClient() {
78+
@Override
79+
public void onProgressChanged(WebView view, int newProgress) {
80+
progress.setProgress(newProgress);
81+
if (newProgress >= 100) {
82+
progress.setVisibility(ProgressBar.GONE);
83+
} else {
84+
progress.setVisibility(ProgressBar.VISIBLE);
85+
}
86+
}
87+
});
8688

8789
Intent intent = getIntent();
8890
String indexHtml = intent.getStringExtra("index.html");
@@ -107,10 +109,10 @@ public void onProgressChanged(WebView view, int newProgress) {
107109
}
108110
}
109111

110-
swipeRefresh.setOnRefreshListener(() -> {
111-
webView.reload();
112-
swipeRefresh.setRefreshing(false);
113-
});
112+
swipeRefresh.setOnRefreshListener(
113+
() -> {
114+
webView.reload();
115+
});
114116

115117
setWebViewMode(false);
116118

@@ -161,15 +163,15 @@ private void setWebViewMode(boolean desktopMode) {
161163
WebSettings settings = webView.getSettings();
162164
if (desktopMode) {
163165
settings.setUserAgentString(
164-
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 " +
165-
"(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36");
166+
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 "
167+
+ "(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36");
166168
settings.setUseWideViewPort(true);
167169
settings.setLoadWithOverviewMode(true);
168170
webView.setInitialScale(100);
169171
} else {
170172
settings.setUserAgentString(
171-
"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 " +
172-
"(KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36");
173+
"Mozilla/5.0 (Linux; Android 10) AppleWebKit/537.36 "
174+
+ "(KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36");
173175
settings.setUseWideViewPort(false);
174176
settings.setLoadWithOverviewMode(false);
175177
webView.setInitialScale(0);
@@ -178,7 +180,7 @@ private void setWebViewMode(boolean desktopMode) {
178180

179181
private void loadHtmlFromUri(Uri uri) {
180182
try (InputStream is = getContentResolver().openInputStream(uri);
181-
BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
183+
BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
182184
StringBuilder buffer = new StringBuilder();
183185
String line;
184186
while ((line = br.readLine()) != null) {
@@ -212,92 +214,4 @@ private void stopLocalServer() {
212214
localServer = null;
213215
}
214216
}
215-
216-
public static class LocalWebServer extends NanoHTTPD {
217-
private final File rootDir;
218-
219-
public LocalWebServer(int port, File rootDir) {
220-
super(port);
221-
this.rootDir = rootDir;
222-
}
223-
224-
@Override
225-
public Response serve(IHTTPSession session) {
226-
try {
227-
String uri = session.getUri();
228-
File file = new File(rootDir, uri);
229-
if (!file.exists()) {
230-
return newFixedLengthResponse(Response.Status.NOT_FOUND, "text/plain", "404 Not Found");
231-
}
232-
FileInputStream fis = new FileInputStream(file);
233-
String mime = getMimeTypeForFile(uri);
234-
return newChunkedResponse(Response.Status.OK, mime, fis);
235-
} catch (Exception e) {
236-
return newFixedLengthResponse(Response.Status.INTERNAL_ERROR, "text/plain", "Error: " + e.getMessage());
237-
}
238-
}
239-
}
240-
} webView = findViewById(R.id.web_view);
241-
progress = findViewById(R.id.progress);
242-
swipeRefresh = findViewById(R.id.refresh_layout);
243-
setSupportActionBar(toolbar);
244-
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
245-
webView.setProgressBar(progress);
246-
webView.addOnPageStartedListener(
247-
(v, url, ic) -> {
248-
249-
String str = url.substring(url.lastIndexOf("/")+1, url.length());
250-
getSupportActionBar().setSubtitle(str);
251-
});
252-
253-
Intent intent = getIntent();
254-
String indexHtml = intent.getStringExtra("index.html");
255-
256-
if (indexHtml != null && !indexHtml.isBlank()) {
257-
webView.loadUrl("file://" + indexHtml);
258-
} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
259-
Uri data = intent.getData();
260-
if (data != null) {
261-
loadHtmlFromUri(data);
262-
} else {
263-
webView.loadData("File found'n", "text/html", "UTF-8");
264-
}
265-
}
266-
swipeRefresh.setOnRefreshListener(
267-
() -> {
268-
webView.reload();
269-
swipeRefresh.setRefreshing(false);
270-
});
271-
} catch (Exception err) {
272-
ErrorDialog.show(this, err);
273-
}
274-
}
275-
276-
@Override
277-
public boolean onOptionsItemSelected(MenuItem item) {
278-
int id = item.getItemId();
279-
if (id == android.R.id.home) {
280-
finish();
281-
}
282-
return super.onOptionsItemSelected(item);
283-
}
284-
285-
@Override
286-
public void handleBackPressed() {
287-
finish();
288-
}
289-
290-
private void loadHtmlFromUri(Uri uri) {
291-
try (InputStream is = getContentResolver().openInputStream(uri);
292-
BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
293-
StringBuilder buffer = new StringBuilder();
294-
String line;
295-
while ((line = br.readLine()) != null) {
296-
buffer.append(line).append("\n");
297-
}
298-
webView.loadData(buffer.toString(), "text/html", "UTF-8");
299-
} catch (Exception e) {
300-
webView.loadData("Ошибка загрузки: " + e.getMessage(), "text/html", "UTF-8");
301-
}
302-
}
303217
}

0 commit comments

Comments
 (0)