Skip to content

Commit 9f33b6a

Browse files
committed
Changes
1 parent c7630b5 commit 9f33b6a

4 files changed

Lines changed: 215 additions & 109 deletions

File tree

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

Lines changed: 68 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,8 @@
77
import android.os.Bundle;
88
import android.view.Menu;
99
import android.view.MenuItem;
10-
import android.webkit.WebChromeClient;
1110
import android.webkit.WebSettings;
1211
import android.webkit.WebView;
13-
import android.webkit.WebViewClient;
1412
import android.widget.ProgressBar;
1513
import androidx.appcompat.app.AppCompatActivity;
1614
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
@@ -39,86 +37,70 @@ public class PreviewActivity extends AppCompatActivity {
3937
@Override
4038
protected void onCreate(Bundle savedInstanceState) {
4139
super.onCreate(savedInstanceState);
42-
try {
43-
setContentView(R.layout.activity_preview);
44-
45-
toolbar = findViewById(R.id.toolbar);
46-
webView = findViewById(R.id.web_view);
47-
progress = findViewById(R.id.progress);
48-
swipeRefresh = findViewById(R.id.refresh_layout);
49-
50-
setSupportActionBar(toolbar);
51-
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
52-
webView.setProgressBar(progress);
53-
54-
WebSettings settings = webView.getSettings();
55-
settings.setJavaScriptEnabled(true);
56-
settings.setDomStorageEnabled(true);
57-
settings.setAllowFileAccess(true);
58-
settings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
59-
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);
40+
setContentView(R.layout.activity_preview);
41+
42+
toolbar = findViewById(R.id.toolbar);
43+
webView = findViewById(R.id.web_view);
44+
progress = findViewById(R.id.progress);
45+
swipeRefresh = findViewById(R.id.refresh_layout);
46+
47+
webView.setProgressBar(progress);
48+
webView.addWebViewListener(
49+
new WebViewX.WebViewListener() {
50+
@Override
51+
public void onPageStarted(WebView view, String url, Bitmap favicon) {
52+
currentUrl = url;
53+
swipeRefresh.setRefreshing(true);
54+
}
55+
56+
@Override
57+
public void onPageFinished(WebView view, String url) {
58+
currentUrl = url;
59+
swipeRefresh.setRefreshing(false);
60+
if (getSupportActionBar() != null) {
61+
getSupportActionBar().setSubtitle(currentUrl);
6662
}
63+
}
6764

68-
@Override
69-
public void onPageFinished(WebView view, String url) {
70-
currentUrl = url;
71-
progress.setVisibility(ProgressBar.GONE);
72-
swipeRefresh.setRefreshing(false);
73-
}
74-
});
75-
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-
}
65+
@Override
66+
public void onReceivedTitle(WebView view, String title) {
67+
if (getSupportActionBar() != null && title != null) {
68+
getSupportActionBar().setTitle(title);
8669
}
87-
});
88-
89-
Intent intent = getIntent();
90-
String indexHtml = intent.getStringExtra("index.html");
91-
92-
if (indexHtml != null && !indexHtml.isBlank()) {
93-
File htmlFile = new File(indexHtml);
94-
if (htmlFile.exists()) {
95-
startLocalServer(htmlFile.getParentFile());
96-
localServerUrl = "http://localhost:8080/" + htmlFile.getName();
97-
webView.loadUrl(localServerUrl);
98-
currentUrl = localServerUrl;
99-
} else {
100-
webView.loadData("File not found", "text/html", "UTF-8");
101-
}
102-
} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
103-
Uri data = intent.getData();
104-
if (data != null) {
105-
loadHtmlFromUri(data);
106-
currentUrl = data.toString();
107-
} else {
108-
webView.loadData("File not found", "text/html", "UTF-8");
109-
}
70+
}
71+
});
72+
Intent intent = getIntent();
73+
String indexHtml = intent.getStringExtra("index.html");
74+
75+
if (indexHtml != null && !indexHtml.isBlank()) {
76+
File htmlFile = new File(indexHtml);
77+
if (htmlFile.exists()) {
78+
startLocalServer(htmlFile.getParentFile());
79+
localServerUrl = "http://localhost:8080/" + htmlFile.getName();
80+
webView.loadUrl(localServerUrl);
81+
currentUrl = localServerUrl;
82+
} else {
83+
webView.loadData("File not found", "text/html", "UTF-8");
84+
}
85+
} else if (Intent.ACTION_VIEW.equals(intent.getAction())) {
86+
Uri data = intent.getData();
87+
if (data != null) {
88+
loadHtmlFromUri(data);
89+
currentUrl = data.toString();
90+
} else {
91+
webView.loadData("File not found", "text/html", "UTF-8");
11092
}
93+
}
11194

112-
swipeRefresh.setOnRefreshListener(
113-
() -> {
114-
webView.reload();
115-
});
95+
setSupportActionBar(toolbar);
96+
if (getSupportActionBar() != null) {
97+
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
98+
getSupportActionBar().setSubtitle(currentUrl);
99+
}
116100

117-
setWebViewMode(false);
101+
swipeRefresh.setOnRefreshListener(webView::reload);
118102

119-
} catch (Exception err) {
120-
ErrorDialog.show(this, err);
121-
}
103+
setWebViewMode(false);
122104
}
123105

124106
@Override
@@ -133,6 +115,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
133115

134116
if (id == android.R.id.home) {
135117
finish();
118+
return true;
136119
} else if (id == R.id.action_open_browser) {
137120
if (currentUrl != null) {
138121
try {
@@ -154,6 +137,11 @@ public boolean onOptionsItemSelected(MenuItem item) {
154137
item.setTitle(isDesktopMode ? "Switch to Phone" : "Switch to Desktop");
155138
webView.reload();
156139
return true;
140+
} else if (id == R.id.refresh) {
141+
swipeRefresh.setRefreshing(false);
142+
webView.reload();
143+
swipeRefresh.setRefreshing(true);
144+
return true;
157145
}
158146

159147
return super.onOptionsItemSelected(item);
@@ -179,13 +167,16 @@ private void setWebViewMode(boolean desktopMode) {
179167
}
180168

181169
private void loadHtmlFromUri(Uri uri) {
182-
try (InputStream is = getContentResolver().openInputStream(uri);
183-
BufferedReader br = new BufferedReader(new InputStreamReader(is))) {
170+
try {
171+
InputStream is = getContentResolver().openInputStream(uri);
172+
BufferedReader br = new BufferedReader(new InputStreamReader(is));
184173
StringBuilder buffer = new StringBuilder();
185174
String line;
186175
while ((line = br.readLine()) != null) {
187176
buffer.append(line).append("\n");
188177
}
178+
br.close();
179+
is.close();
189180
webView.loadData(buffer.toString(), "text/html", "UTF-8");
190181
} catch (Exception e) {
191182
webView.loadData("Error loading file: " + e.getMessage(), "text/html", "UTF-8");

main/src/main/res/menu/menu_preview.xml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,9 @@
88
android:id="@+id/action_open_browser"
99
android:title="Open in Browser"
1010
android:showAsAction="never" />
11-
</menu>
11+
12+
<item
13+
android:id="@+id/refresh"
14+
android:title="@string/refresh"
15+
android:showAsAction="never" />
16+
</menu>

main/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<string name="project_already_exists">Project already exists</string>
1212
<string name="cancel">Cancel</string>
1313
<string name="more">More</string>
14+
<string name="refresh">Refresh</string>
1415
<string name="remove">Remove</string>
1516
<string name="create">Create</string>
1617
<string name="invalid_filename">Invalid name</string>

0 commit comments

Comments
 (0)