mirror of
https://github.com/TrianguloY/UrlChecker.git
synced 2024-09-19 20:02:16 +02:00
text is also a module now
cntx variable removed, using functions now
This commit is contained in:
parent
537e825662
commit
52c6702227
@ -3,8 +3,6 @@ package com.trianguloy.urlchecker;
|
||||
import android.app.Activity;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.View;
|
||||
import android.view.Window;
|
||||
import android.widget.LinearLayout;
|
||||
@ -12,26 +10,32 @@ import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.trianguloy.urlchecker.modules.BaseModule;
|
||||
import com.trianguloy.urlchecker.modules.OpenModule;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class MainDialog extends Activity implements TextWatcher {
|
||||
public class MainDialog extends Activity {
|
||||
|
||||
public void setUrl(String url) {
|
||||
txt_url.setText(url);
|
||||
//onChangedUrl(); // not needed, the textwatcher does it
|
||||
boolean onSettingUrl = false;
|
||||
|
||||
public void setUrl(String url, BaseModule providerModule) {
|
||||
if (BuildConfig.DEBUG && onSettingUrl) {
|
||||
throw new AssertionError("Attempting to change an url inside a setUrl call");
|
||||
}
|
||||
this.url = url;
|
||||
onSettingUrl = true;
|
||||
onChangedUrl(providerModule);
|
||||
onSettingUrl = false;
|
||||
}
|
||||
|
||||
public String getUrl() {
|
||||
return txt_url.getText().toString();
|
||||
return url;
|
||||
}
|
||||
|
||||
// ------------------- data -------------------
|
||||
|
||||
private final List<BaseModule> modules = new ArrayList<>();
|
||||
private TextView txt_url;
|
||||
private String url;
|
||||
private LinearLayout ll_mods;
|
||||
|
||||
// ------------------- initialize -------------------
|
||||
@ -42,40 +46,45 @@ public class MainDialog extends Activity implements TextWatcher {
|
||||
requestWindowFeature(Window.FEATURE_NO_TITLE);
|
||||
setContentView(R.layout.dialog_main);
|
||||
|
||||
txt_url = findViewById(R.id.url);
|
||||
txt_url.addTextChangedListener(this);
|
||||
|
||||
ll_mods = findViewById(R.id.mods);
|
||||
ll_mods = findViewById(R.id.middle_modules);
|
||||
|
||||
initialize();
|
||||
|
||||
setUrl(getOpenUrl());
|
||||
setUrl(getOpenUrl(), null);
|
||||
|
||||
}
|
||||
|
||||
private void initialize() {
|
||||
modules.addAll(ModuleManager.getEnabled(this));
|
||||
for (BaseModule module : modules) {
|
||||
modules.clear();
|
||||
|
||||
// top module
|
||||
initializeModule(ModuleManager.getTopModule(), findViewById(R.id.top_module));
|
||||
|
||||
final List<BaseModule> middleModules = ModuleManager.getMiddleModules(this);
|
||||
for (BaseModule module : middleModules) {
|
||||
|
||||
// set title
|
||||
String name = module.getName();
|
||||
if(name != null) {
|
||||
if (name != null) {
|
||||
final TextView title = new TextView(this);
|
||||
title.setText(name + ":");
|
||||
ll_mods.addView(title);
|
||||
}
|
||||
|
||||
// set content
|
||||
View views = getLayoutInflater().inflate(module.getLayoutBase(), ll_mods);
|
||||
module.setContext(this);
|
||||
module.initialize(views);
|
||||
initializeModule(module,
|
||||
getLayoutInflater().inflate(module.getLayoutBase(), ll_mods)
|
||||
);
|
||||
}
|
||||
|
||||
// bottom module (open)
|
||||
OpenModule openModule = new OpenModule();
|
||||
openModule.setContext(this);
|
||||
openModule.initialize(findViewById(R.id.open_module));
|
||||
modules.add(openModule);
|
||||
// bottom module
|
||||
initializeModule(ModuleManager.getBottomModule(), findViewById(R.id.bottom_module));
|
||||
}
|
||||
|
||||
private void initializeModule(BaseModule module, View views){
|
||||
module.registerDialog(this);
|
||||
module.initialize(views);
|
||||
modules.add(module);
|
||||
}
|
||||
|
||||
private String getOpenUrl() {
|
||||
@ -90,24 +99,11 @@ public class MainDialog extends Activity implements TextWatcher {
|
||||
|
||||
// ------------------- url -------------------
|
||||
|
||||
private void onChangedUrl() {
|
||||
private void onChangedUrl(BaseModule providerModule) {
|
||||
for (BaseModule module : modules) {
|
||||
module.onNewUrl(getUrl());
|
||||
if (module != providerModule)
|
||||
module.onNewUrl(getUrl());
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------- TextWatcher -------------------
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
onChangedUrl();
|
||||
}
|
||||
}
|
@ -7,6 +7,7 @@ import com.trianguloy.urlchecker.modules.AsciiModule;
|
||||
import com.trianguloy.urlchecker.modules.BaseModule;
|
||||
import com.trianguloy.urlchecker.modules.OpenModule;
|
||||
import com.trianguloy.urlchecker.modules.RedirectModule;
|
||||
import com.trianguloy.urlchecker.modules.TextInputModule;
|
||||
import com.trianguloy.urlchecker.modules.VirusTotalModule;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -28,7 +29,11 @@ public class ModuleManager {
|
||||
|
||||
// ------------------- class -------------------
|
||||
|
||||
public static List<BaseModule> getEnabled(Context cntx) {
|
||||
static TextInputModule getTopModule() {
|
||||
return new TextInputModule();
|
||||
}
|
||||
|
||||
public static List<BaseModule> getMiddleModules(Context cntx) {
|
||||
List<BaseModule> enabled = new ArrayList<>();
|
||||
SharedPreferences prefs = cntx.getSharedPreferences("MM", Context.MODE_PRIVATE);
|
||||
for (Map.Entry<String, Class<? extends BaseModule>> module : modules.entrySet()) {
|
||||
@ -43,4 +48,8 @@ public class ModuleManager {
|
||||
|
||||
return enabled;
|
||||
}
|
||||
|
||||
static OpenModule getBottomModule() {
|
||||
return new OpenModule();
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ public class AsciiModule extends BaseModule {
|
||||
newline = true;
|
||||
txt_ascii.append(message);
|
||||
}
|
||||
txt_ascii.setBackgroundColor(cntx.getResources().getColor(R.color.warning));
|
||||
txt_ascii.setBackgroundColor(getActivity().getResources().getColor(R.color.warning));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.trianguloy.urlchecker.modules;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
@ -7,12 +8,18 @@ import com.trianguloy.urlchecker.MainDialog;
|
||||
|
||||
public abstract class BaseModule {
|
||||
|
||||
protected MainDialog cntx;
|
||||
// ------------------- data -------------------
|
||||
|
||||
public void setContext(MainDialog cntx){
|
||||
this.cntx = cntx;
|
||||
private MainDialog dialog;
|
||||
|
||||
// ------------------- initialization -------------------
|
||||
|
||||
public void registerDialog(MainDialog cntx) {
|
||||
this.dialog = cntx;
|
||||
}
|
||||
|
||||
// ------------------- abstract functions -------------------
|
||||
|
||||
public abstract String getName();
|
||||
|
||||
public abstract int getLayoutBase();
|
||||
@ -20,4 +27,18 @@ public abstract class BaseModule {
|
||||
public abstract void initialize(View views);
|
||||
|
||||
public abstract void onNewUrl(String url);
|
||||
|
||||
// ------------------- protected utilities -------------------
|
||||
|
||||
protected Activity getActivity() {
|
||||
return dialog;
|
||||
}
|
||||
|
||||
protected String getUrl() {
|
||||
return dialog.getUrl();
|
||||
}
|
||||
|
||||
protected void setUrl(String url) {
|
||||
dialog.setUrl(url, this);
|
||||
}
|
||||
}
|
||||
|
@ -44,11 +44,11 @@ public class OpenModule extends BaseModule implements View.OnClickListener, Popu
|
||||
views.findViewById(R.id.share).setOnClickListener(this);
|
||||
|
||||
|
||||
popup = new PopupMenu(cntx, btn_open);
|
||||
popup = new PopupMenu(getActivity(), btn_open);
|
||||
popup.setOnMenuItemClickListener(this);
|
||||
menu = popup.getMenu();
|
||||
|
||||
lastOpened = new LastOpened(cntx);
|
||||
lastOpened = new LastOpened(getActivity());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -78,7 +78,7 @@ public class OpenModule extends BaseModule implements View.OnClickListener, Popu
|
||||
}
|
||||
|
||||
private void updateSpinner() {
|
||||
packages = PackageUtilities.getOtherPackages(UrlUtilities.getViewIntent(cntx.getUrl(), null), cntx);
|
||||
packages = PackageUtilities.getOtherPackages(UrlUtilities.getViewIntent(getUrl(), null), getActivity());
|
||||
|
||||
// check no apps
|
||||
if (packages.isEmpty()) {
|
||||
@ -92,7 +92,7 @@ public class OpenModule extends BaseModule implements View.OnClickListener, Popu
|
||||
lastOpened.sort(packages);
|
||||
|
||||
// set
|
||||
btn_open.setText("Open with " + PackageUtilities.getPackageName(packages.get(0), cntx));
|
||||
btn_open.setText("Open with " + PackageUtilities.getPackageName(packages.get(0), getActivity()));
|
||||
btn_open.setEnabled(true);
|
||||
menu.clear();
|
||||
if (packages.size() == 1) {
|
||||
@ -100,7 +100,7 @@ public class OpenModule extends BaseModule implements View.OnClickListener, Popu
|
||||
} else {
|
||||
btn_openWith.setVisibility(View.VISIBLE);
|
||||
for (int i = 1; i < packages.size(); i++) {
|
||||
menu.add(Menu.NONE, i, i, "Open with " + PackageUtilities.getPackageName(packages.get(i), cntx));
|
||||
menu.add(Menu.NONE, i, i, "Open with " + PackageUtilities.getPackageName(packages.get(i), getActivity()));
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,7 +111,7 @@ public class OpenModule extends BaseModule implements View.OnClickListener, Popu
|
||||
|
||||
String chosed = packages.get(index);
|
||||
lastOpened.usedPackage(chosed);
|
||||
cntx.startActivity(UrlUtilities.getViewIntent(cntx.getUrl(), chosed));
|
||||
getActivity().startActivity(UrlUtilities.getViewIntent(getUrl(), chosed));
|
||||
|
||||
// UrlUtilities.openUrlRemoveThis(cntx.getUrl(), cntx);
|
||||
}
|
||||
@ -123,10 +123,10 @@ public class OpenModule extends BaseModule implements View.OnClickListener, Popu
|
||||
private void shareUrl() {
|
||||
Intent sendIntent = new Intent();
|
||||
sendIntent.setAction(Intent.ACTION_SEND);
|
||||
sendIntent.putExtra(Intent.EXTRA_TEXT, cntx.getUrl());
|
||||
sendIntent.putExtra(Intent.EXTRA_TEXT, getUrl());
|
||||
sendIntent.setType("text/plain");
|
||||
|
||||
Intent shareIntent = Intent.createChooser(sendIntent, "Share");
|
||||
cntx.startActivity(shareIntent);
|
||||
getActivity().startActivity(shareIntent);
|
||||
}
|
||||
}
|
||||
|
@ -5,7 +5,6 @@ import android.widget.Button;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.trianguloy.urlchecker.R;
|
||||
import com.trianguloy.urlchecker.old.OpenLink;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.HttpURLConnection;
|
||||
@ -19,7 +18,6 @@ public class RedirectModule extends BaseModule implements View.OnClickListener {
|
||||
private Button undo;
|
||||
|
||||
private Stack<String> urls = new Stack<>();
|
||||
private boolean expected = false;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
@ -41,10 +39,6 @@ public class RedirectModule extends BaseModule implements View.OnClickListener {
|
||||
|
||||
@Override
|
||||
public void onNewUrl(String url) {
|
||||
if (expected) {
|
||||
expected = false;
|
||||
return;
|
||||
}
|
||||
urls.clear();
|
||||
check.setEnabled(true);
|
||||
undo.setEnabled(false);
|
||||
@ -64,9 +58,10 @@ public class RedirectModule extends BaseModule implements View.OnClickListener {
|
||||
|
||||
//https://stackoverflow.com/questions/1884230/urlconnection-doesnt-follow-redirect
|
||||
private void check() {
|
||||
check.setEnabled(false);
|
||||
new Thread(new Runnable() {
|
||||
public void run() {
|
||||
String url = cntx.getUrl();
|
||||
String url = getUrl();
|
||||
|
||||
String message = "Unknown error";
|
||||
HttpURLConnection conn = null;
|
||||
@ -96,16 +91,15 @@ public class RedirectModule extends BaseModule implements View.OnClickListener {
|
||||
|
||||
final String finalMessage = message;
|
||||
final String finalUrl = url;
|
||||
cntx.runOnUiThread(new Runnable() {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
if (finalUrl == null) {
|
||||
Toast.makeText(cntx, finalMessage, Toast.LENGTH_SHORT).show();
|
||||
check.setEnabled(false);
|
||||
Toast.makeText(getActivity(), finalMessage, Toast.LENGTH_SHORT).show();
|
||||
} else {
|
||||
urls.push(cntx.getUrl());
|
||||
expected = true;
|
||||
cntx.setUrl(finalUrl);
|
||||
urls.push(getUrl());
|
||||
setUrl(finalUrl);
|
||||
undo.setEnabled(true);
|
||||
check.setEnabled(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -116,8 +110,7 @@ public class RedirectModule extends BaseModule implements View.OnClickListener {
|
||||
private void undo() {
|
||||
if (urls.isEmpty()) return;
|
||||
|
||||
expected = true;
|
||||
cntx.setUrl(urls.pop());
|
||||
setUrl(urls.pop());
|
||||
check.setEnabled(true);
|
||||
if (urls.isEmpty()) undo.setEnabled(false);
|
||||
}
|
||||
|
@ -0,0 +1,53 @@
|
||||
package com.trianguloy.urlchecker.modules;
|
||||
|
||||
import android.text.Editable;
|
||||
import android.text.TextWatcher;
|
||||
import android.view.View;
|
||||
import android.widget.EditText;
|
||||
|
||||
import com.trianguloy.urlchecker.R;
|
||||
|
||||
public class TextInputModule extends BaseModule implements TextWatcher {
|
||||
|
||||
private EditText edtxt_url;
|
||||
private boolean editByCode = false;
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutBase() {
|
||||
return R.layout.module_text;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize(View views) {
|
||||
edtxt_url = views.findViewById(R.id.url);
|
||||
edtxt_url.addTextChangedListener(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNewUrl(String url) {
|
||||
editByCode = true;
|
||||
edtxt_url.setText(url);
|
||||
editByCode = false;
|
||||
}
|
||||
|
||||
// ------------------- TextWatcher -------------------
|
||||
|
||||
@Override
|
||||
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void afterTextChanged(Editable s) {
|
||||
if(editByCode) return;
|
||||
setUrl(s.toString());
|
||||
}
|
||||
}
|
@ -84,12 +84,12 @@ public class VirusTotalModule extends BaseModule implements View.OnClickListener
|
||||
private void _scanUrl() {
|
||||
VirusTotalUtility.InternalReponse response;
|
||||
while (scanning) {
|
||||
response = VirusTotalUtility.scanUrl(cntx.getUrl());
|
||||
response = VirusTotalUtility.scanUrl(getUrl());
|
||||
|
||||
if (response.detectionsTotal > 0) {
|
||||
result = response;
|
||||
scanning = false;
|
||||
cntx.runOnUiThread(new Runnable() {
|
||||
getActivity().runOnUiThread(new Runnable() {
|
||||
public void run() {
|
||||
updateUI();
|
||||
}
|
||||
@ -135,7 +135,7 @@ public class VirusTotalModule extends BaseModule implements View.OnClickListener
|
||||
}
|
||||
|
||||
private void setResult(String message, int color) {
|
||||
txt_result.setBackgroundColor(color == 0 ? Color.TRANSPARENT : cntx.getResources().getColor(color));
|
||||
txt_result.setBackgroundColor(color == 0 ? Color.TRANSPARENT : getActivity().getResources().getColor(color));
|
||||
txt_result.setText(message);
|
||||
}
|
||||
|
||||
@ -144,10 +144,9 @@ public class VirusTotalModule extends BaseModule implements View.OnClickListener
|
||||
if (result == null) return;
|
||||
|
||||
if (details) {
|
||||
UrlUtilities.openUrlRemoveThis(result.scanUrl, cntx);
|
||||
cntx.finish();
|
||||
UrlUtilities.openUrlRemoveThis(result.scanUrl, getActivity());
|
||||
} else {
|
||||
new AlertDialog.Builder(cntx)
|
||||
new AlertDialog.Builder(getActivity())
|
||||
.setMessage(result.info)
|
||||
.show();
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical"
|
||||
android:padding="5dp"
|
||||
tools:context="com.trianguloy.urlchecker.MainDialog">
|
||||
|
||||
<LinearLayout
|
||||
@ -12,17 +13,15 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/url"
|
||||
style="@android:style/Widget.TextView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<include
|
||||
android:id="@+id/top_module"
|
||||
layout="@layout/module_text"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/mods"
|
||||
android:id="@+id/middle_modules"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
@ -30,7 +29,7 @@
|
||||
</LinearLayout>
|
||||
|
||||
<include
|
||||
android:id="@+id/open_module"
|
||||
android:id="@+id/bottom_module"
|
||||
layout="@layout/module_open"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
13
app/src/main/res/layout/module_text.xml
Normal file
13
app/src/main/res/layout/module_text.xml
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/url"
|
||||
style="@android:style/Widget.TextView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:textSize="20sp"
|
||||
android:textStyle="bold" />
|
||||
</LinearLayout>
|
Loading…
Reference in New Issue
Block a user