Add ability to copy/share whitelist

This commit is contained in:
emanuele-f 2021-06-14 15:38:29 +02:00
parent f49c34ddec
commit 66f27ff805
4 changed files with 79 additions and 1 deletions

View File

@ -64,6 +64,7 @@ import androidx.appcompat.app.AppCompatDelegate;
import androidx.appcompat.widget.SearchView;
import androidx.preference.PreferenceManager;
import com.emanuelef.remote_capture.interfaces.TextAdapter;
import com.emanuelef.remote_capture.model.AppDescriptor;
import com.emanuelef.remote_capture.model.Prefs;
import com.emanuelef.remote_capture.views.AppsListView;
@ -415,6 +416,19 @@ public class Utils {
return builder.toString();
}
public static String adapter2Text(TextAdapter adapter) {
StringBuilder builder = new StringBuilder();
for(int i=0; i< adapter.getCount(); i++) {
String text = adapter.getItemText(i);
builder.append(text);
builder.append("\n");
}
return builder.toString();
}
public static boolean isTv(Context context) {
UiModeManager uiModeManager = (UiModeManager) context.getSystemService(Context.UI_MODE_SERVICE);

View File

@ -19,14 +19,24 @@
package com.emanuelef.remote_capture.activities;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.widget.ListView;
import androidx.annotation.NonNull;
import com.emanuelef.remote_capture.R;
import com.emanuelef.remote_capture.Utils;
import com.emanuelef.remote_capture.adapters.WhitelistEditAdapter;
import com.emanuelef.remote_capture.fragments.AppsFragment;
import com.emanuelef.remote_capture.fragments.WhitelistFragment;
public class WhitelistActivity extends BaseActivity {
private static final String TAG = "WhitelistActivity";
private WhitelistFragment mFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -39,4 +49,46 @@ public class WhitelistActivity extends BaseActivity {
.replace(R.id.whitelist_fragment, new WhitelistFragment())
.commit();
}
@Override
protected void onDestroy() {
super.onDestroy();
mFragment = null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.copy_share_menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
ListView lv = findViewById(R.id.whitelist);
if(lv == null)
return false;
if(id == R.id.copy_to_clipboard) {
String contents = Utils.adapter2Text((WhitelistEditAdapter)lv.getAdapter());
Utils.copyToClipboard(this, contents);
return true;
} else if(id == R.id.share) {
String contents = Utils.adapter2Text((WhitelistEditAdapter)lv.getAdapter());
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, getString(R.string.whitelist));
intent.putExtra(android.content.Intent.EXTRA_TEXT, contents);
startActivity(Intent.createChooser(intent, getResources().getString(R.string.share)));
return true;
}
return super.onOptionsItemSelected(item);
}
}

View File

@ -30,11 +30,12 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.emanuelef.remote_capture.R;
import com.emanuelef.remote_capture.interfaces.TextAdapter;
import com.emanuelef.remote_capture.model.ConnectionsMatcher;
import java.util.Iterator;
public class WhitelistEditAdapter extends ArrayAdapter<ConnectionsMatcher.Item> {
public class WhitelistEditAdapter extends ArrayAdapter<ConnectionsMatcher.Item> implements TextAdapter {
private final LayoutInflater mLayoutInflater;
public WhitelistEditAdapter(Context context, Iterator<ConnectionsMatcher.Item> items) {
@ -58,4 +59,9 @@ public class WhitelistEditAdapter extends ArrayAdapter<ConnectionsMatcher.Item>
return convertView;
}
@Override
public String getItemText(int pos) {
return getItem(pos).getLabel();
}
}

View File

@ -0,0 +1,6 @@
package com.emanuelef.remote_capture.interfaces;
public interface TextAdapter {
String getItemText(int pos);
int getCount();
}