mirror of
				https://framagit.org/tom79/fedilab-tube
				synced 2025-06-05 21:09:11 +02:00 
			
		
		
		
	Search
This commit is contained in:
		@@ -53,7 +53,11 @@
 | 
			
		||||
            android:label="@string/app_name"
 | 
			
		||||
            android:theme="@style/AppThemeNoActionBar"
 | 
			
		||||
            android:windowSoftInputMode="stateAlwaysHidden" />
 | 
			
		||||
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".SearchActivity"
 | 
			
		||||
            android:configChanges="orientation|screenSize"
 | 
			
		||||
            android:label="@string/app_name"
 | 
			
		||||
            android:windowSoftInputMode="stateAlwaysHidden" />
 | 
			
		||||
        <receiver
 | 
			
		||||
            android:name=".services.PeertubeUploadReceiver"
 | 
			
		||||
            android:exported="false">
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
package app.fedilab.fedilabtube;
 | 
			
		||||
 | 
			
		||||
import android.content.Context;
 | 
			
		||||
import android.content.Intent;
 | 
			
		||||
import android.content.SharedPreferences;
 | 
			
		||||
import android.os.AsyncTask;
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
@@ -9,6 +10,7 @@ import android.view.MenuItem;
 | 
			
		||||
 | 
			
		||||
import androidx.appcompat.app.AlertDialog;
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.appcompat.widget.SearchView;
 | 
			
		||||
import androidx.navigation.NavController;
 | 
			
		||||
import androidx.navigation.Navigation;
 | 
			
		||||
import androidx.navigation.ui.AppBarConfiguration;
 | 
			
		||||
@@ -49,6 +51,27 @@ public class MainActivity extends AppCompatActivity {
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean onCreateOptionsMenu(@NotNull Menu menu) {
 | 
			
		||||
        getMenuInflater().inflate(R.menu.main_menu, menu);
 | 
			
		||||
        MenuItem myActionMenuItem = menu.findItem( R.id.action_search);
 | 
			
		||||
        SearchView searchView = (SearchView) myActionMenuItem.getActionView();
 | 
			
		||||
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public boolean onQueryTextSubmit(String query) {
 | 
			
		||||
                Intent intent = new Intent(MainActivity.this, SearchActivity.class);
 | 
			
		||||
                Bundle b = new Bundle();
 | 
			
		||||
                b.putString("search", query.trim());
 | 
			
		||||
                intent.putExtras(b);
 | 
			
		||||
                startActivity(intent);
 | 
			
		||||
                if( ! searchView.isIconified()) {
 | 
			
		||||
                    searchView.setIconified(true);
 | 
			
		||||
                }
 | 
			
		||||
                myActionMenuItem.collapseActionView();
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            @Override
 | 
			
		||||
            public boolean onQueryTextChange(String s) {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@@ -58,6 +81,7 @@ public class MainActivity extends AppCompatActivity {
 | 
			
		||||
            showRadioButtonDialog();
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return super.onOptionsItemSelected(item);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,65 @@
 | 
			
		||||
 | 
			
		||||
package app.fedilab.fedilabtube;
 | 
			
		||||
 | 
			
		||||
import android.os.Bundle;
 | 
			
		||||
import android.view.MenuItem;
 | 
			
		||||
import android.widget.Toast;
 | 
			
		||||
 | 
			
		||||
import androidx.appcompat.app.AppCompatActivity;
 | 
			
		||||
import androidx.fragment.app.FragmentTransaction;
 | 
			
		||||
 | 
			
		||||
import app.fedilab.fedilabtube.client.APIResponse;
 | 
			
		||||
import app.fedilab.fedilabtube.fragment.DisplayStatusFragment;
 | 
			
		||||
import app.fedilab.fedilabtube.interfaces.OnRetrieveFeedsInterface;
 | 
			
		||||
import es.dmoral.toasty.Toasty;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
public class SearchActivity extends AppCompatActivity implements OnRetrieveFeedsInterface {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    private String search;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected void onCreate(Bundle savedInstanceState) {
 | 
			
		||||
        super.onCreate(savedInstanceState);
 | 
			
		||||
 | 
			
		||||
        setContentView(R.layout.activity_search_result);
 | 
			
		||||
        Bundle b = getIntent().getExtras();
 | 
			
		||||
        if (b != null) {
 | 
			
		||||
            search = b.getString("search");
 | 
			
		||||
        } else {
 | 
			
		||||
            Toasty.error(SearchActivity.this, getString(R.string.toast_error_search), Toast.LENGTH_LONG).show();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (getSupportActionBar() != null)
 | 
			
		||||
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 | 
			
		||||
        setTitle(search);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        if (savedInstanceState == null) {
 | 
			
		||||
            DisplayStatusFragment displayStatusFragment = new DisplayStatusFragment();
 | 
			
		||||
            Bundle bundle = new Bundle();
 | 
			
		||||
            bundle.putString("search_peertube", search);
 | 
			
		||||
            displayStatusFragment.setArguments(bundle);
 | 
			
		||||
            FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
 | 
			
		||||
            ft.add(R.id.container, displayStatusFragment).commit();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public boolean onOptionsItemSelected(MenuItem item) {
 | 
			
		||||
        if (item.getItemId() == android.R.id.home) {
 | 
			
		||||
            finish();
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
        return super.onOptionsItemSelected(item);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onRetrieveFeeds(APIResponse apiResponse) {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -12,23 +12,23 @@ import app.fedilab.fedilabtube.interfaces.OnRetrieveFeedsInterface;
 | 
			
		||||
 | 
			
		||||
public class RetrievePeertubeSearchAsyncTask extends AsyncTask<Void, Void, Void> {
 | 
			
		||||
 | 
			
		||||
    private String query, instance;
 | 
			
		||||
    private String query, max_id;
 | 
			
		||||
    private APIResponse apiResponse;
 | 
			
		||||
    private OnRetrieveFeedsInterface listener;
 | 
			
		||||
    private WeakReference<Context> contextReference;
 | 
			
		||||
 | 
			
		||||
    public RetrievePeertubeSearchAsyncTask(Context context, String instance, String query, OnRetrieveFeedsInterface onRetrieveFeedsInterface) {
 | 
			
		||||
    public RetrievePeertubeSearchAsyncTask(Context context,   String max_id, String query, OnRetrieveFeedsInterface onRetrieveFeedsInterface) {
 | 
			
		||||
        this.contextReference = new WeakReference<>(context);
 | 
			
		||||
        this.query = query;
 | 
			
		||||
        this.listener = onRetrieveFeedsInterface;
 | 
			
		||||
        this.instance = instance;
 | 
			
		||||
        this.max_id = max_id;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    protected Void doInBackground(Void... params) {
 | 
			
		||||
        PeertubeAPI api = new PeertubeAPI(this.contextReference.get());
 | 
			
		||||
        apiResponse = api.searchPeertube(instance, query);
 | 
			
		||||
        apiResponse = api.searchPeertube(query, max_id);
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1747,9 +1747,11 @@ public class PeertubeAPI {
 | 
			
		||||
     * @param query String search
 | 
			
		||||
     * @return APIResponse
 | 
			
		||||
     */
 | 
			
		||||
    public APIResponse searchPeertube(String instance, String query) {
 | 
			
		||||
    public APIResponse searchPeertube(String query, String max_id) {
 | 
			
		||||
        HashMap<String, String> params = new HashMap<>();
 | 
			
		||||
        params.put("count", "50");
 | 
			
		||||
        if (max_id != null)
 | 
			
		||||
            params.put("start", max_id);
 | 
			
		||||
        if (query == null)
 | 
			
		||||
            return null;
 | 
			
		||||
        try {
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										6
									
								
								app/src/main/res/layout/activity_search_result.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								app/src/main/res/layout/activity_search_result.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    android:id="@+id/container"
 | 
			
		||||
    android:layout_width="match_parent"
 | 
			
		||||
    android:layout_height="match_parent">
 | 
			
		||||
</RelativeLayout>
 | 
			
		||||
@@ -1,6 +1,15 @@
 | 
			
		||||
<?xml version="1.0" encoding="utf-8"?>
 | 
			
		||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
 | 
			
		||||
    xmlns:app="http://schemas.android.com/apk/res-auto">
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    <item
 | 
			
		||||
        android:id="@+id/action_search"
 | 
			
		||||
        android:icon="@android:drawable/ic_menu_search"
 | 
			
		||||
        app:showAsAction="always|collapseActionView"
 | 
			
		||||
        app:actionViewClass="androidx.appcompat.widget.SearchView"
 | 
			
		||||
        android:title="@string/search"/>
 | 
			
		||||
 | 
			
		||||
    <item
 | 
			
		||||
        android:id="@+id/action_change_instance"
 | 
			
		||||
        android:icon="@drawable/ic_baseline_track_changes_24"
 | 
			
		||||
 
 | 
			
		||||
@@ -112,5 +112,8 @@
 | 
			
		||||
    <string name="unfollow_confirm">Voulez-vous vous désabonner de ce compte ?</string>
 | 
			
		||||
    <string name="action_unfollow">Se désabonner</string>
 | 
			
		||||
    <string name="action_follow">Suivre</string>
 | 
			
		||||
    <string name="search">Chercher</string>
 | 
			
		||||
    <string name="toast_error_search">Une erreur s’est produite lors de la recherche !</string>
 | 
			
		||||
    <string name="no_result">Aucun résultat !</string>
 | 
			
		||||
 | 
			
		||||
</resources>
 | 
			
		||||
		Reference in New Issue
	
	Block a user