diff options
Diffstat (limited to 'app/src/main/java/app/fedilab/android/activities/ReorderTimelinesActivity.java')
-rw-r--r-- | app/src/main/java/app/fedilab/android/activities/ReorderTimelinesActivity.java | 402 |
1 files changed, 178 insertions, 224 deletions
diff --git a/app/src/main/java/app/fedilab/android/activities/ReorderTimelinesActivity.java b/app/src/main/java/app/fedilab/android/activities/ReorderTimelinesActivity.java index 685fc70c4..a642ee536 100644 --- a/app/src/main/java/app/fedilab/android/activities/ReorderTimelinesActivity.java +++ b/app/src/main/java/app/fedilab/android/activities/ReorderTimelinesActivity.java @@ -15,7 +15,6 @@ package app.fedilab.android.activities; import android.annotation.SuppressLint; -import android.content.DialogInterface; import android.content.Intent; import android.content.SharedPreferences; import android.database.sqlite.SQLiteDatabase; @@ -33,7 +32,6 @@ 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.AutoCompleteTextView; import android.widget.ImageView; @@ -138,212 +136,174 @@ public class ReorderTimelinesActivity extends BaseActivity implements OnStartDra ImageView toolbar_close = actionBar.getCustomView().findViewById(R.id.toolbar_close); TextView toolbar_title = actionBar.getCustomView().findViewById(R.id.toolbar_title); ImageView add_remote_instance = actionBar.getCustomView().findViewById(R.id.add_remote_instance); - toolbar_close.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); + toolbar_close.setOnClickListener(v -> finish()); if (MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.MASTODON || MainActivity.social == UpdateAccountInfoAsyncTask.SOCIAL.PLEROMA) { add_remote_instance.setVisibility(View.VISIBLE); } else { add_remote_instance.setVisibility(View.GONE); } - add_remote_instance.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(ReorderTimelinesActivity.this, style); - LayoutInflater inflater = getLayoutInflater(); - @SuppressLint("InflateParams") View dialogView = inflater.inflate(R.layout.search_instance, null); - dialogBuilder.setView(dialogView); - - AutoCompleteTextView instance_list = dialogView.findViewById(R.id.search_instance); - //Manage download of attachments - RadioGroup radioGroup = dialogView.findViewById(R.id.set_attachment_group); - radioGroup.setOnCheckedChangeListener((group, checkedId) -> { - if (checkedId == R.id.twitter_accounts) { - instance_list.setHint(R.string.list_of_twitter_accounts); - } else { - instance_list.setHint(R.string.instance); - } - }); - instance_list.setFilters(new InputFilter[]{new InputFilter.LengthFilter(60)}); - dialogBuilder.setPositiveButton(R.string.validate, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int id) { - SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - String instanceName = instance_list.getText().toString().trim().replace("@", ""); - new Thread(new Runnable() { - @Override - public void run() { - try { - if (radioGroup.getCheckedRadioButtonId() == R.id.mastodon_instance) - new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://" + instanceName + "/api/v1/timelines/public?local=true", 10, null, null); - else if (radioGroup.getCheckedRadioButtonId() == R.id.peertube_instance) - new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://" + instanceName + "/api/v1/videos/", 10, null, null); - else if (radioGroup.getCheckedRadioButtonId() == R.id.pixelfed_instance) { - new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://" + instanceName + "/api/v1/timelines/public", 10, null, null); - } else if (radioGroup.getCheckedRadioButtonId() == R.id.misskey_instance) { - new HttpsConnection(ReorderTimelinesActivity.this, null).post("https://" + instanceName + "/api/notes/local-timeline", 10, null, null); - } else if (radioGroup.getCheckedRadioButtonId() == R.id.gnu_instance) { - new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://" + instanceName + "/api/statuses/public_timeline.json", 10, null, null); - } - runOnUiThread(new Runnable() { - public void run() { - dialog.dismiss(); - if (radioGroup.getCheckedRadioButtonId() == R.id.mastodon_instance) { - new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "MASTODON"); - } else if (radioGroup.getCheckedRadioButtonId() == R.id.peertube_instance) { - new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "PEERTUBE"); - } else if (radioGroup.getCheckedRadioButtonId() == R.id.pixelfed_instance) { - new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "PIXELFED"); - } else if (radioGroup.getCheckedRadioButtonId() == R.id.misskey_instance) { - new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "MISSKEY"); - } else if (radioGroup.getCheckedRadioButtonId() == R.id.gnu_instance) { - new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "GNU"); - } else if (radioGroup.getCheckedRadioButtonId() == R.id.twitter_accounts) { - new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "NITTER"); - } - if (timelines != null && adapter != null) { - List<RemoteInstance> instance = new InstancesDAO(ReorderTimelinesActivity.this, db).getInstanceByName(instanceName); - if (instance != null && instance.size() > 0) { - ManageTimelines manageTimelines = new ManageTimelines(); - manageTimelines.setRemoteInstance(instance.get(0)); - manageTimelines.setPosition(timelines.size()); - manageTimelines.setDisplayed(true); - manageTimelines.setType(ManageTimelines.Type.INSTANCE); - timelines.add(manageTimelines); - adapter.notifyItemInserted((timelines.size() - 1)); - } - updated = true; - } - } - }); - } catch (final Exception e) { - e.printStackTrace(); - runOnUiThread(new Runnable() { - public void run() { - Toasty.warning(ReorderTimelinesActivity.this, getString(R.string.toast_instance_unavailable), Toast.LENGTH_LONG).show(); - } - }); + add_remote_instance.setOnClickListener(v -> { + AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(ReorderTimelinesActivity.this, style); + LayoutInflater inflater1 = getLayoutInflater(); + @SuppressLint("InflateParams") View dialogView = inflater1.inflate(R.layout.search_instance, null); + dialogBuilder.setView(dialogView); + + AutoCompleteTextView instance_list = dialogView.findViewById(R.id.search_instance); + //Manage download of attachments + RadioGroup radioGroup = dialogView.findViewById(R.id.set_attachment_group); + radioGroup.setOnCheckedChangeListener((group, checkedId) -> { + if (checkedId == R.id.twitter_accounts) { + instance_list.setHint(R.string.list_of_twitter_accounts); + } else { + instance_list.setHint(R.string.instance); + } + }); + instance_list.setFilters(new InputFilter[]{new InputFilter.LengthFilter(60)}); + dialogBuilder.setPositiveButton(R.string.validate, (dialog, id) -> { + SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); + String instanceName = instance_list.getText().toString().trim().replace("@", ""); + new Thread(() -> { + try { + if (radioGroup.getCheckedRadioButtonId() == R.id.mastodon_instance) + new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://" + instanceName + "/api/v1/timelines/public?local=true", 10, null, null); + else if (radioGroup.getCheckedRadioButtonId() == R.id.peertube_instance) + new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://" + instanceName + "/api/v1/videos/", 10, null, null); + else if (radioGroup.getCheckedRadioButtonId() == R.id.pixelfed_instance) { + new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://" + instanceName + "/api/v1/timelines/public", 10, null, null); + } else if (radioGroup.getCheckedRadioButtonId() == R.id.misskey_instance) { + new HttpsConnection(ReorderTimelinesActivity.this, null).post("https://" + instanceName + "/api/notes/local-timeline", 10, null, null); + } else if (radioGroup.getCheckedRadioButtonId() == R.id.gnu_instance) { + new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://" + instanceName + "/api/statuses/public_timeline.json", 10, null, null); + } + runOnUiThread(() -> { + dialog.dismiss(); + if (radioGroup.getCheckedRadioButtonId() == R.id.mastodon_instance) { + new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "MASTODON"); + } else if (radioGroup.getCheckedRadioButtonId() == R.id.peertube_instance) { + new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "PEERTUBE"); + } else if (radioGroup.getCheckedRadioButtonId() == R.id.pixelfed_instance) { + new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "PIXELFED"); + } else if (radioGroup.getCheckedRadioButtonId() == R.id.misskey_instance) { + new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "MISSKEY"); + } else if (radioGroup.getCheckedRadioButtonId() == R.id.gnu_instance) { + new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "GNU"); + } else if (radioGroup.getCheckedRadioButtonId() == R.id.twitter_accounts) { + new InstancesDAO(ReorderTimelinesActivity.this, db).insertInstance(instanceName, "NITTER"); + } + if (timelines != null && adapter != null) { + List<RemoteInstance> instance = new InstancesDAO(ReorderTimelinesActivity.this, db).getInstanceByName(instanceName); + if (instance != null && instance.size() > 0) { + ManageTimelines manageTimelines = new ManageTimelines(); + manageTimelines.setRemoteInstance(instance.get(0)); + manageTimelines.setPosition(timelines.size()); + manageTimelines.setDisplayed(true); + manageTimelines.setType(ManageTimelines.Type.INSTANCE); + timelines.add(manageTimelines); + adapter.notifyItemInserted((timelines.size() - 1)); } + updated = true; } - }).start(); + }); + } catch (final Exception e) { + e.printStackTrace(); + runOnUiThread(() -> Toasty.warning(ReorderTimelinesActivity.this, getString(R.string.toast_instance_unavailable), Toast.LENGTH_LONG).show()); } - }); - AlertDialog alertDialog = dialogBuilder.create(); - alertDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { - @Override - public void onDismiss(DialogInterface dialogInterface) { - //Hide keyboard - InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); - assert imm != null; - imm.hideSoftInputFromWindow(instance_list.getWindowToken(), 0); - } - }); - if (alertDialog.getWindow() != null) - alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); - alertDialog.show(); - - instance_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { - @Override - public void onItemClick(AdapterView<?> parent, View view, int position, long id) { - String oldSearch = parent.getItemAtPosition(position).toString().trim(); - } - }); - instance_list.addTextChangedListener(new 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 (radioGroup.getCheckedRadioButtonId() != R.id.twitter_accounts) { - Pattern host = Pattern.compile("([\\da-z\\.-]+\\.[a-z\\.]{2,12})"); - Matcher matcher = host.matcher(s.toString().trim()); - if (s.toString().trim().length() == 0 || !matcher.find()) { - alertDialog.getButton( - AlertDialog.BUTTON_POSITIVE).setEnabled(false); - } else { - // Something into edit text. Enable the button. - alertDialog.getButton( - AlertDialog.BUTTON_POSITIVE).setEnabled(true); - } - if (s.length() > 2 && !isLoadingInstance) { - final String action = "/instances/search"; - final HashMap<String, String> parameters = new HashMap<>(); - parameters.put("q", s.toString().trim()); - parameters.put("count", String.valueOf(1000)); - parameters.put("name", String.valueOf(true)); - isLoadingInstance = true; - - if (oldSearch == null || !oldSearch.equals(s.toString().trim())) - new Thread(new Runnable() { - @Override - public void run() { - try { - final String response = new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://instances.social/api/1.0" + action, 30, parameters, Helper.THEKINRAR_SECRET_TOKEN); - runOnUiThread(new Runnable() { - public void run() { - isLoadingInstance = false; - String[] instances; - try { - JSONObject jsonObject = new JSONObject(response); - JSONArray jsonArray = jsonObject.getJSONArray("instances"); - if (jsonArray != null) { - int length = 0; - for (int i = 0; i < jsonArray.length(); i++) { - if (!jsonArray.getJSONObject(i).get("name").toString().contains("@") && jsonArray.getJSONObject(i).get("up").toString().equals("true")) - length++; - } - instances = new String[length]; - int j = 0; - for (int i = 0; i < jsonArray.length(); i++) { - if (!jsonArray.getJSONObject(i).get("name").toString().contains("@") && jsonArray.getJSONObject(i).get("up").toString().equals("true")) { - instances[j] = jsonArray.getJSONObject(i).get("name").toString(); - j++; - } - } - } else { - instances = new String[]{}; - } - instance_list.setAdapter(null); - ArrayAdapter<String> adapter = - new ArrayAdapter<>(ReorderTimelinesActivity.this, android.R.layout.simple_list_item_1, instances); - instance_list.setAdapter(adapter); - if (instance_list.hasFocus() && !ReorderTimelinesActivity.this.isFinishing()) - instance_list.showDropDown(); - oldSearch = s.toString().trim(); - - } catch (JSONException ignored) { - isLoadingInstance = false; - } - } - }); - - } catch (HttpsConnection.HttpsConnectionException e) { - isLoadingInstance = false; - } catch (Exception e) { - isLoadingInstance = false; - } - } - }).start(); - else - isLoadingInstance = false; - } + }).start(); + }); + AlertDialog alertDialog = dialogBuilder.create(); + alertDialog.setOnDismissListener(dialogInterface -> { + //Hide keyboard + InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); + assert imm != null; + imm.hideSoftInputFromWindow(instance_list.getWindowToken(), 0); + }); + if (alertDialog.getWindow() != null) + alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); + alertDialog.show(); + + instance_list.setOnItemClickListener((parent, view1, position, id) -> { + }); + instance_list.addTextChangedListener(new 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 (radioGroup.getCheckedRadioButtonId() != R.id.twitter_accounts) { + Pattern host = Pattern.compile("([\\da-z.-]+\\.[a-z.]{2,12})"); + Matcher matcher = host.matcher(s.toString().trim()); + if (s.toString().trim().length() == 0 || !matcher.find()) { + alertDialog.getButton( + AlertDialog.BUTTON_POSITIVE).setEnabled(false); } else { + // Something into edit text. Enable the button. alertDialog.getButton( AlertDialog.BUTTON_POSITIVE).setEnabled(true); } + if (s.length() > 2 && !isLoadingInstance) { + final String action = "/instances/search"; + final HashMap<String, String> parameters = new HashMap<>(); + parameters.put("q", s.toString().trim()); + parameters.put("count", String.valueOf(1000)); + parameters.put("name", String.valueOf(true)); + isLoadingInstance = true; + + if (oldSearch == null || !oldSearch.equals(s.toString().trim())) + new Thread(() -> { + try { + final String response = new HttpsConnection(ReorderTimelinesActivity.this, null).get("https://instances.social/api/1.0" + action, 30, parameters, Helper.THEKINRAR_SECRET_TOKEN); + runOnUiThread(() -> { + isLoadingInstance = false; + String[] instances; + try { + JSONObject jsonObject = new JSONObject(response); + JSONArray jsonArray = jsonObject.getJSONArray("instances"); + int length = 0; + for (int i = 0; i < jsonArray.length(); i++) { + if (!jsonArray.getJSONObject(i).get("name").toString().contains("@") && jsonArray.getJSONObject(i).get("up").toString().equals("true")) + length++; + } + instances = new String[length]; + int j = 0; + for (int i = 0; i < jsonArray.length(); i++) { + if (!jsonArray.getJSONObject(i).get("name").toString().contains("@") && jsonArray.getJSONObject(i).get("up").toString().equals("true")) { + instances[j] = jsonArray.getJSONObject(i).get("name").toString(); + j++; + } + } + instance_list.setAdapter(null); + ArrayAdapter<String> adapter = + new ArrayAdapter<>(ReorderTimelinesActivity.this, android.R.layout.simple_list_item_1, instances); + instance_list.setAdapter(adapter); + if (instance_list.hasFocus() && !ReorderTimelinesActivity.this.isFinishing()) + instance_list.showDropDown(); + oldSearch = s.toString().trim(); + + } catch (JSONException ignored) { + isLoadingInstance = false; + } + }); + } catch (Exception e) { + isLoadingInstance = false; + } + }).start(); + else + isLoadingInstance = false; + } + } else { + alertDialog.getButton( + AlertDialog.BUTTON_POSITIVE).setEnabled(true); } - }); - } + + } + }); }); toolbar_title.setText(R.string.action_reorder_timeline); } @@ -390,40 +350,34 @@ public class ReorderTimelinesActivity extends BaseActivity implements OnStartDra break; } undo_action.setPaintFlags(undo_action.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); - Runnable runnable = new Runnable() { - @Override - public void run() { - undo_container.setVisibility(View.GONE); - SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); - switch (manageTimelines.getType()) { - case TAG: - new SearchDAO(ReorderTimelinesActivity.this, db).remove(manageTimelines.getTagTimeline().getName()); - new TimelinesDAO(ReorderTimelinesActivity.this, db).remove(manageTimelines); - break; - case INSTANCE: - new InstancesDAO(ReorderTimelinesActivity.this, db).remove(manageTimelines.getRemoteInstance().getHost()); - new TimelinesDAO(ReorderTimelinesActivity.this, db).remove(manageTimelines); - break; - case LIST: - timeline = manageTimelines; - new ManageListsAsyncTask(ReorderTimelinesActivity.this, ManageListsAsyncTask.action.DELETE_LIST, null, null, manageTimelines.getListTimeline().getId(), null, ReorderTimelinesActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); - new TimelinesDAO(ReorderTimelinesActivity.this, db).remove(timeline); - refresh_list = true; - break; - } - updated = true; + Runnable runnable = () -> { + undo_container.setVisibility(View.GONE); + SQLiteDatabase db = Sqlite.getInstance(getApplicationContext(), Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open(); + switch (manageTimelines.getType()) { + case TAG: + new SearchDAO(ReorderTimelinesActivity.this, db).remove(manageTimelines.getTagTimeline().getName()); + new TimelinesDAO(ReorderTimelinesActivity.this, db).remove(manageTimelines); + break; + case INSTANCE: + new InstancesDAO(ReorderTimelinesActivity.this, db).remove(manageTimelines.getRemoteInstance().getHost()); + new TimelinesDAO(ReorderTimelinesActivity.this, db).remove(manageTimelines); + break; + case LIST: + timeline = manageTimelines; + new ManageListsAsyncTask(ReorderTimelinesActivity.this, ManageListsAsyncTask.action.DELETE_LIST, null, null, manageTimelines.getListTimeline().getId(), null, ReorderTimelinesActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); + new TimelinesDAO(ReorderTimelinesActivity.this, db).remove(timeline); + refresh_list = true; + break; } + updated = true; }; Handler handler = new Handler(); handler.postDelayed(runnable, 4000); - undo_action.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - timelines.add(position, manageTimelines); - adapter.notifyItemInserted(position); - undo_container.setVisibility(View.GONE); - handler.removeCallbacks(runnable); - } + undo_action.setOnClickListener(v -> { + timelines.add(position, manageTimelines); + adapter.notifyItemInserted(position); + undo_container.setVisibility(View.GONE); + handler.removeCallbacks(runnable); }); } |