Manage filters - some fixes
This commit is contained in:
parent
e3f59fb337
commit
c8545a32b7
|
@ -92,6 +92,7 @@ import fr.gouv.etalab.mastodon.client.Entities.Version;
|
|||
import fr.gouv.etalab.mastodon.fragments.DisplayAccountsFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.DisplayBookmarksFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.DisplayDraftsFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.DisplayFiltersFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.DisplayFollowRequestSentFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.DisplayListsFragment;
|
||||
import fr.gouv.etalab.mastodon.fragments.DisplayNotificationsFragment;
|
||||
|
@ -1495,6 +1496,12 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
fragmentTag = "LISTS";
|
||||
fragmentManager.beginTransaction()
|
||||
.replace(R.id.main_app_container, displayListsFragment, fragmentTag).commit();
|
||||
}else if(id == R.id.nav_filters){
|
||||
toot.setVisibility(View.GONE);
|
||||
DisplayFiltersFragment displayFiltersFragment = new DisplayFiltersFragment();
|
||||
fragmentTag = "FILTERS";
|
||||
fragmentManager.beginTransaction()
|
||||
.replace(R.id.main_app_container, displayFiltersFragment, fragmentTag).commit();
|
||||
}
|
||||
|
||||
populateTitleWithTag(fragmentTag, item.getTitle().toString(), item.getItemId());
|
||||
|
|
|
@ -1418,6 +1418,7 @@ public class API {
|
|||
List<fr.gouv.etalab.mastodon.client.Entities.Filters> filters = new ArrayList<>();
|
||||
try {
|
||||
String response = new HttpsConnection(context).get(getAbsoluteUrl("/filters"), 60, null, prefKeyOauthTokenT);
|
||||
Log.v(Helper.TAG,"resp: " + response);
|
||||
filters = parseFilters(new JSONArray(response));
|
||||
} catch (HttpsConnection.HttpsConnectionException e) {
|
||||
setError(e.getStatusCode(), e);
|
||||
|
@ -1445,6 +1446,7 @@ public class API {
|
|||
fr.gouv.etalab.mastodon.client.Entities.Filters filter;
|
||||
try {
|
||||
String response = new HttpsConnection(context).get(getAbsoluteUrl(String.format("/filters/%s", filterId)), 60, null, prefKeyOauthTokenT);
|
||||
Log.v(Helper.TAG,"resp: " + response);
|
||||
filter = parseFilter(new JSONObject(response));
|
||||
filters.add(filter);
|
||||
} catch (HttpsConnection.HttpsConnectionException e) {
|
||||
|
@ -2211,16 +2213,17 @@ public class API {
|
|||
* @param resobj JSONObject
|
||||
* @return Filter
|
||||
*/
|
||||
private static fr.gouv.etalab.mastodon.client.Entities.Filters parseFilter(JSONObject resobj){
|
||||
private fr.gouv.etalab.mastodon.client.Entities.Filters parseFilter(JSONObject resobj){
|
||||
fr.gouv.etalab.mastodon.client.Entities.Filters filter = new fr.gouv.etalab.mastodon.client.Entities.Filters();
|
||||
try {
|
||||
filter.setPhrase(resobj.get("phrase").toString());
|
||||
filter.setExpires_in(Integer.parseInt(resobj.get("expires_in").toString()));
|
||||
filter.setSetExpires_at(Helper.mstStringToDate(context, resobj.get("expires_at").toString()));
|
||||
filter.setWhole_word(Boolean.parseBoolean(resobj.get("whole_word").toString()));
|
||||
filter.setIrreversible(Boolean.parseBoolean(resobj.get("irreversible").toString()));
|
||||
String contextString = resobj.get("context").toString();
|
||||
contextString = contextString.replace("[","");
|
||||
contextString = contextString.replace("]","");
|
||||
contextString = contextString.replaceAll("\\[","");
|
||||
contextString = contextString.replaceAll("]","");
|
||||
contextString = contextString.replaceAll("\"","");
|
||||
if( contextString != null) {
|
||||
String[] context = contextString.split(",");
|
||||
if( contextString.length() > 0 ){
|
||||
|
|
|
@ -16,6 +16,7 @@ package fr.gouv.etalab.mastodon.client.Entities;
|
|||
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* Created by Thomas on 05/09/2018.
|
||||
|
@ -30,6 +31,7 @@ public class Filters {
|
|||
private boolean irreversible;
|
||||
private boolean whole_word;
|
||||
private int expires_in;
|
||||
private Date setExpires_at;
|
||||
|
||||
public String getPhrase() {
|
||||
return phrase;
|
||||
|
@ -78,4 +80,12 @@ public class Filters {
|
|||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Date getSetExpires_at() {
|
||||
return setExpires_at;
|
||||
}
|
||||
|
||||
public void setSetExpires_at(Date setExpires_at) {
|
||||
this.setExpires_at = setExpires_at;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,11 +26,15 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.BaseAdapter;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
import android.widget.Filter;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -89,12 +93,18 @@ public class FilterAdapter extends BaseAdapter implements OnFilterActionInterfac
|
|||
holder = new ViewHolder();
|
||||
holder.filter_word = convertView.findViewById(R.id.filter_word);
|
||||
holder.filter_context = convertView.findViewById(R.id.filter_context);
|
||||
holder.edit_filter = convertView.findViewById(R.id.edit_filter);
|
||||
holder.delete_filter = convertView.findViewById(R.id.delete_filter);
|
||||
convertView.setTag(holder);
|
||||
} else {
|
||||
holder = (ViewHolder) convertView.getTag();
|
||||
}
|
||||
|
||||
|
||||
holder.filter_word.setText(filter.getPhrase());
|
||||
StringBuilder contextString = new StringBuilder();
|
||||
if( filter.getContext() != null)
|
||||
for(String ct: filter.getContext())
|
||||
contextString.append(ct).append(" ");
|
||||
holder.filter_context.setText(contextString.toString());
|
||||
|
||||
holder.edit_filter.setOnClickListener(new View.OnClickListener() {
|
||||
@Override
|
||||
|
@ -111,6 +121,54 @@ public class FilterAdapter extends BaseAdapter implements OnFilterActionInterfac
|
|||
CheckBox context_conversation = dialogView.findViewById(R.id.context_conversation);
|
||||
CheckBox context_whole_word = dialogView.findViewById(R.id.context_whole_word);
|
||||
CheckBox context_drop = dialogView.findViewById(R.id.context_drop);
|
||||
Spinner filter_expire = dialogView.findViewById(R.id.filter_expire);
|
||||
ArrayAdapter<CharSequence> adapterResize = ArrayAdapter.createFromResource(context,
|
||||
R.array.filter_expire, android.R.layout.simple_spinner_item);
|
||||
filter_expire.setAdapter(adapterResize);
|
||||
final int[] expire = {-1};
|
||||
filter_expire.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
switch (position){
|
||||
case 0:
|
||||
expire[0] = -1;
|
||||
break;
|
||||
case 1:
|
||||
expire[0] = 3600;
|
||||
break;
|
||||
case 2:
|
||||
expire[0] = 21600;
|
||||
break;
|
||||
case 3:
|
||||
expire[0] = 43200;
|
||||
break;
|
||||
case 4:
|
||||
expire[0] = 86400;
|
||||
break;
|
||||
case 5:
|
||||
expire[0] = 604800;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
}
|
||||
});
|
||||
|
||||
add_phrase.setText(filter.getPhrase());
|
||||
if( filter.getContext() != null)
|
||||
for(String val: filter.getContext()){
|
||||
if(val.equals("home"))
|
||||
context_home.setChecked(true);
|
||||
else if(val.equals("public"))
|
||||
context_public.setChecked(true);
|
||||
else if(val.equals("notifications"))
|
||||
context_notification.setChecked(true);
|
||||
else if(val.equals("thread"))
|
||||
context_conversation.setChecked(true);
|
||||
}
|
||||
context_whole_word.setChecked(filter.isWhole_word());
|
||||
context_drop.setChecked(filter.isIrreversible());
|
||||
|
||||
dialogBuilder.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
|
@ -128,6 +186,7 @@ public class FilterAdapter extends BaseAdapter implements OnFilterActionInterfac
|
|||
if( context_conversation.isChecked())
|
||||
contextFilter.add("thread");
|
||||
filter.setContext(contextFilter);
|
||||
filter.setExpires_in(expire[0]);
|
||||
filter.setPhrase(add_phrase.getText().toString());
|
||||
filter.setWhole_word(context_whole_word.isChecked());
|
||||
filter.setIrreversible(context_drop.isChecked());
|
||||
|
|
|
@ -29,10 +29,13 @@ import android.view.View;
|
|||
import android.view.ViewGroup;
|
||||
import android.view.WindowManager;
|
||||
import android.view.inputmethod.InputMethodManager;
|
||||
import android.widget.AdapterView;
|
||||
import android.widget.ArrayAdapter;
|
||||
import android.widget.CheckBox;
|
||||
import android.widget.EditText;
|
||||
import android.widget.ListView;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.Spinner;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
|
@ -104,7 +107,39 @@ public class DisplayFiltersFragment extends Fragment implements OnFilterActionIn
|
|||
CheckBox context_conversation = dialogView.findViewById(R.id.context_conversation);
|
||||
CheckBox context_whole_word = dialogView.findViewById(R.id.context_whole_word);
|
||||
CheckBox context_drop = dialogView.findViewById(R.id.context_drop);
|
||||
|
||||
Spinner filter_expire = dialogView.findViewById(R.id.filter_expire);
|
||||
ArrayAdapter<CharSequence> adapterResize = ArrayAdapter.createFromResource(getContext(),
|
||||
R.array.filter_expire, android.R.layout.simple_spinner_item);
|
||||
filter_expire.setAdapter(adapterResize);
|
||||
final int[] expire = {-1};
|
||||
filter_expire.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||
@Override
|
||||
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
|
||||
switch (position){
|
||||
case 0:
|
||||
expire[0] = -1;
|
||||
break;
|
||||
case 1:
|
||||
expire[0] = 3600;
|
||||
break;
|
||||
case 2:
|
||||
expire[0] = 21600;
|
||||
break;
|
||||
case 3:
|
||||
expire[0] = 43200;
|
||||
break;
|
||||
case 4:
|
||||
expire[0] = 86400;
|
||||
break;
|
||||
case 5:
|
||||
expire[0] = 604800;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void onNothingSelected(AdapterView<?> parent) {
|
||||
}
|
||||
});
|
||||
dialogBuilder.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
public void onClick(DialogInterface dialog, int id) {
|
||||
|
@ -122,6 +157,7 @@ public class DisplayFiltersFragment extends Fragment implements OnFilterActionIn
|
|||
contextFilter.add("thread");
|
||||
filter.setContext(contextFilter);
|
||||
filter.setPhrase(add_phrase.getText().toString());
|
||||
filter.setExpires_in(expire[0]);
|
||||
filter.setWhole_word(context_whole_word.isChecked());
|
||||
filter.setIrreversible(context_drop.isChecked());
|
||||
new ManageFiltersAsyncTask(context, ManageFiltersAsyncTask.action.CREATE_FILTER, filter, DisplayFiltersFragment.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
|
|
|
@ -17,6 +17,7 @@
|
|||
-->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical" android:layout_width="match_parent"
|
||||
android:padding="10dp"
|
||||
android:layout_height="wrap_content">
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
|
@ -123,9 +124,8 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal">
|
||||
<TextView
|
||||
android:textSize="12sp"
|
||||
android:text="@string/filter_expire"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
<Spinner
|
||||
android:layout_marginStart="30dp"
|
||||
|
@ -134,14 +134,4 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_marginLeft="30dp" />
|
||||
</LinearLayout>
|
||||
<Button
|
||||
android:layout_marginTop="5dp"
|
||||
android:id="@+id/save_filter"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
style="@style/Base.Widget.AppCompat.Button.Colored"
|
||||
android:maxWidth="150dp"
|
||||
android:text="@string/add_new_filter"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
|
@ -595,4 +595,15 @@
|
|||
<item>HTTP</item>
|
||||
<item>SOCKS</item>
|
||||
</string-array>
|
||||
|
||||
|
||||
<string-array name="filter_expire">
|
||||
<item>Never</item>
|
||||
<item>30 minutes</item>
|
||||
<item>1 hour</item>
|
||||
<item>6 hours</item>
|
||||
<item>12 hours</item>
|
||||
<item>1 day</item>
|
||||
<item>1 week</item>
|
||||
</string-array>
|
||||
</resources>
|
Loading…
Reference in New Issue