mirror of
https://github.com/TrianguloY/UrlChecker.git
synced 2024-09-19 20:02:16 +02:00
New Drawer module
This commit is contained in:
parent
bb4c02136f
commit
d49eca64bb
@ -19,6 +19,7 @@ import com.trianguloy.urlchecker.R;
|
||||
import com.trianguloy.urlchecker.modules.AModuleData;
|
||||
import com.trianguloy.urlchecker.modules.AModuleDialog;
|
||||
import com.trianguloy.urlchecker.modules.ModuleManager;
|
||||
import com.trianguloy.urlchecker.modules.list.DrawerModule;
|
||||
import com.trianguloy.urlchecker.url.UrlData;
|
||||
import com.trianguloy.urlchecker.utilities.AndroidSettings;
|
||||
import com.trianguloy.urlchecker.utilities.AndroidUtils;
|
||||
@ -165,7 +166,8 @@ public class MainDialog extends Activity {
|
||||
|
||||
// ------------------- initialize -------------------
|
||||
|
||||
private LinearLayout ll_mods;
|
||||
private LinearLayout ll_shown_mods;
|
||||
private LinearLayout ll_hidden_mods;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
@ -177,7 +179,9 @@ public class MainDialog extends Activity {
|
||||
setFinishOnTouchOutside(true);
|
||||
|
||||
// get views
|
||||
ll_mods = findViewById(R.id.middle_modules);
|
||||
ll_shown_mods = findViewById(R.id.shown_mods);
|
||||
ll_hidden_mods = findViewById(R.id.hidden_mods);
|
||||
ll_hidden_mods.setVisibility(View.GONE);
|
||||
|
||||
// load url (or urls)
|
||||
var links = getOpenUrl();
|
||||
@ -219,17 +223,22 @@ public class MainDialog extends Activity {
|
||||
*/
|
||||
private void initializeModules() {
|
||||
modules.clear();
|
||||
ll_mods.removeAllViews();
|
||||
ll_shown_mods.removeAllViews();
|
||||
ll_hidden_mods.removeAllViews();
|
||||
boolean belowDrawerMod = false;
|
||||
|
||||
// add
|
||||
final List<AModuleData> middleModules = ModuleManager.getModules(false, this);
|
||||
for (AModuleData module : middleModules) {
|
||||
initializeModule(module);
|
||||
initializeModule(module, belowDrawerMod);
|
||||
|
||||
// If this module is the drawer module, all the remaining modules will be hidden
|
||||
belowDrawerMod = belowDrawerMod || module.getId().equals(new DrawerModule().getId());
|
||||
}
|
||||
|
||||
// avoid empty
|
||||
if (ll_mods.getChildCount() == 0) {
|
||||
ll_mods.addView(egg());
|
||||
if (ll_shown_mods.getChildCount() + ll_hidden_mods.getChildCount() == 0) {
|
||||
ll_shown_mods.addView(egg()); // ;)
|
||||
}
|
||||
}
|
||||
|
||||
@ -238,7 +247,7 @@ public class MainDialog extends Activity {
|
||||
*
|
||||
* @param moduleData which module to initialize
|
||||
*/
|
||||
private void initializeModule(AModuleData moduleData) {
|
||||
private void initializeModule(AModuleData moduleData, boolean hide) {
|
||||
try {
|
||||
// enabled, add
|
||||
AModuleDialog module = moduleData.getDialog(this);
|
||||
@ -248,22 +257,23 @@ public class MainDialog extends Activity {
|
||||
|
||||
// set content if required
|
||||
var views = new ArrayList<View>();
|
||||
LinearLayout ll = hide ? ll_hidden_mods : ll_shown_mods;
|
||||
if (layoutId >= 0) {
|
||||
|
||||
// separator if necessary
|
||||
if (ll_mods.getChildCount() != 0) views.add(addSeparator());
|
||||
if (ll_shown_mods.getChildCount() + ll_hidden_mods.getChildCount() != 0) views.add(addSeparator(ll));
|
||||
|
||||
ViewGroup parent;
|
||||
// set module block
|
||||
if (ModuleManager.getDecorationsPrefOfModule(moduleData, this).get()) {
|
||||
// init decorations
|
||||
View block = Inflater.inflate(R.layout.dialog_module, ll_mods);
|
||||
View block = Inflater.inflate(R.layout.dialog_module, ll);
|
||||
final TextView title = block.findViewById(R.id.title);
|
||||
title.setText(getString(R.string.dd, getString(moduleData.getName())));
|
||||
parent = block.findViewById(R.id.mod);
|
||||
} else {
|
||||
// no decorations
|
||||
parent = ll_mods;
|
||||
parent = ll;
|
||||
}
|
||||
|
||||
// set module content
|
||||
@ -290,10 +300,11 @@ public class MainDialog extends Activity {
|
||||
/**
|
||||
* Adds a separator component to the list of mods
|
||||
*/
|
||||
private View addSeparator() {
|
||||
return Inflater.inflate(R.layout.separator, ll_mods);
|
||||
private View addSeparator(LinearLayout ll) {
|
||||
return Inflater.inflate(R.layout.separator, ll);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the url that this activity was opened with (intent uri or sent text)
|
||||
*/
|
||||
@ -322,6 +333,20 @@ public class MainDialog extends Activity {
|
||||
}
|
||||
}
|
||||
|
||||
// ------------------- drawer module -------------------
|
||||
|
||||
public int getDrawerVisibility(){
|
||||
return ll_hidden_mods.getVisibility();
|
||||
}
|
||||
|
||||
public void setDrawerVisibility(int visibility){
|
||||
ll_hidden_mods.setVisibility(visibility);
|
||||
}
|
||||
|
||||
public void toggleDrawer() {
|
||||
setDrawerVisibility(getDrawerVisibility() == View.GONE ? View.VISIBLE : View.GONE);
|
||||
}
|
||||
|
||||
/* ------------------- its a secret! ------------------- */
|
||||
|
||||
/**
|
||||
|
@ -11,6 +11,7 @@ import com.trianguloy.urlchecker.modules.list.LogModule;
|
||||
import com.trianguloy.urlchecker.modules.list.OpenModule;
|
||||
import com.trianguloy.urlchecker.modules.list.PatternModule;
|
||||
import com.trianguloy.urlchecker.modules.list.RemoveQueriesModule;
|
||||
import com.trianguloy.urlchecker.modules.list.DrawerModule;
|
||||
import com.trianguloy.urlchecker.modules.list.StatusModule;
|
||||
import com.trianguloy.urlchecker.modules.list.TextInputModule;
|
||||
import com.trianguloy.urlchecker.modules.list.UnshortenModule;
|
||||
@ -50,6 +51,9 @@ public class ModuleManager {
|
||||
modules.add(new DebugModule());
|
||||
|
||||
modules.add(new OpenModule());
|
||||
|
||||
// by default the separator module should not hide other modules, so it must be the last
|
||||
modules.add(new DrawerModule());
|
||||
}
|
||||
|
||||
/* ------------------- order ------------------- */
|
||||
|
@ -0,0 +1,69 @@
|
||||
package com.trianguloy.urlchecker.modules.list;
|
||||
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
|
||||
import com.trianguloy.urlchecker.R;
|
||||
import com.trianguloy.urlchecker.activities.ModulesActivity;
|
||||
import com.trianguloy.urlchecker.dialogs.MainDialog;
|
||||
import com.trianguloy.urlchecker.modules.AModuleConfig;
|
||||
import com.trianguloy.urlchecker.modules.AModuleData;
|
||||
import com.trianguloy.urlchecker.modules.AModuleDialog;
|
||||
import com.trianguloy.urlchecker.modules.DescriptionConfig;
|
||||
|
||||
public class DrawerModule extends AModuleData {
|
||||
@Override
|
||||
public String getId() {
|
||||
return "drawer";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getName() {
|
||||
return R.string.mDrawer_name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEnabledByDefault() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public AModuleDialog getDialog(MainDialog cntx) {
|
||||
return new DrawerDialog(cntx);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AModuleConfig getConfig(ModulesActivity cntx) {
|
||||
return new DescriptionConfig(R.string.mDrawer_desc);
|
||||
}
|
||||
}
|
||||
|
||||
class DrawerDialog extends AModuleDialog {
|
||||
private ImageView button;
|
||||
private MainDialog dialog;
|
||||
|
||||
public DrawerDialog(MainDialog dialog){
|
||||
super(dialog);
|
||||
this.dialog = dialog;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getLayoutId() {
|
||||
return R.layout.dialog_drawer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInitialize(View views) {
|
||||
button = views.findViewById(R.id.drawerButton);
|
||||
button.setOnClickListener(v -> {
|
||||
dialog.toggleDrawer();
|
||||
updateMoreIndicator();
|
||||
});
|
||||
updateMoreIndicator();
|
||||
}
|
||||
|
||||
void updateMoreIndicator() {
|
||||
button.setImageResource(dialog.getDrawerVisibility() == View.VISIBLE ?
|
||||
R.drawable.arrow_down : R.drawable.arrow_right);
|
||||
}
|
||||
}
|
15
app/src/main/res/layout/dialog_drawer.xml
Normal file
15
app/src/main/res/layout/dialog_drawer.xml
Normal file
@ -0,0 +1,15 @@
|
||||
<?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"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/drawerButton"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="@dimen/smallPadding"
|
||||
android:src="@drawable/arrow_down"
|
||||
android:tint="?attr/colorAccent" />
|
||||
</LinearLayout>
|
@ -20,6 +20,22 @@
|
||||
<requestFocus
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/shown_mods"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/hidden_mods"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
|
@ -325,4 +325,7 @@ You can also click the 'X' button to remove some of them.
|
||||
This is an advanced version of the 'Queries Remover' module."</string>
|
||||
<string name="mParts_empty">(empty)</string>
|
||||
<string name="mParts_copy">Part copied to clipboard</string>
|
||||
<!-- -->
|
||||
<string name="mDrawer_name">Drawer</string>
|
||||
<string name="mDrawer_desc">All modules below this will be hidden in a drawer. The modules will still work, but are stored in the drawer, you can store modules here to avoid clutter of modules you do not always need.</string>
|
||||
</resources>
|
Loading…
Reference in New Issue
Block a user