mirror of
https://framagit.org/tom79/mobilizon-android-app
synced 2025-02-21 13:40:35 +01:00
Add instances picker
This commit is contained in:
parent
fe610b7ecb
commit
a9281c1585
@ -17,15 +17,16 @@ package app.fedilab.mobilizon;
|
||||
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
import androidx.appcompat.widget.SearchView;
|
||||
import androidx.lifecycle.ViewModelProvider;
|
||||
import androidx.recyclerview.widget.LinearLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@ -47,8 +48,8 @@ public class InstancePickerActivity extends AppCompatActivity {
|
||||
private boolean flag_loading;
|
||||
private String max_id;
|
||||
private Search search;
|
||||
private InstanceAdapter instanceAdapter;
|
||||
|
||||
private InstanceAdapter instanceAdapter;
|
||||
private SearchInstancesVM searchInstancesVM;
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
@ -66,15 +67,13 @@ public class InstancePickerActivity extends AppCompatActivity {
|
||||
search.setSort("-createdAt");
|
||||
|
||||
max_id = "0";
|
||||
setContentView(R.layout.activity_instance_picker);
|
||||
instances = new ArrayList<>();
|
||||
|
||||
binding.loader.setVisibility(View.VISIBLE);
|
||||
binding.lvInstances.setVisibility(View.GONE);
|
||||
flag_loading = true;
|
||||
LinearLayoutManager mLayoutManager = new LinearLayoutManager(InstancePickerActivity.this);
|
||||
|
||||
SearchInstancesVM searchInstancesVM = new ViewModelProvider(InstancePickerActivity.this).get(SearchInstancesVM.class);
|
||||
|
||||
searchInstancesVM = new ViewModelProvider(InstancePickerActivity.this).get(SearchInstancesVM.class);
|
||||
instanceAdapter = new InstanceAdapter(instances);
|
||||
binding.lvInstances.setAdapter(instanceAdapter);
|
||||
binding.lvInstances.setLayoutManager(mLayoutManager);
|
||||
@ -99,10 +98,45 @@ public class InstancePickerActivity extends AppCompatActivity {
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
searchInstancesVM.get(search).observe(InstancePickerActivity.this, this::manageVIewInstance);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
getMenuInflater().inflate(R.menu.menu_instance, 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) {
|
||||
max_id = "0";
|
||||
if( query != null && query.trim().length() > 0) {
|
||||
search.setSearch(query.trim());
|
||||
}else{
|
||||
search.setSearch(null);
|
||||
}
|
||||
LinearLayoutManager mLayoutManager = new LinearLayoutManager(InstancePickerActivity.this);
|
||||
instanceAdapter = new InstanceAdapter(instances);
|
||||
binding.lvInstances.setAdapter(instanceAdapter);
|
||||
binding.lvInstances.setLayoutManager(mLayoutManager);
|
||||
search.setStart(max_id);
|
||||
binding.loader.setVisibility(View.VISIBLE);
|
||||
binding.lvInstances.setVisibility(View.GONE);
|
||||
searchInstancesVM.get(search).observe(InstancePickerActivity.this, instanceData -> manageVIewInstance(instanceData));
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onQueryTextChange(String s) {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
if (item.getItemId() == android.R.id.home) {
|
||||
@ -116,7 +150,8 @@ public class InstancePickerActivity extends AppCompatActivity {
|
||||
public void manageVIewInstance(InstanceData instanceData) {
|
||||
binding.loader.setVisibility(View.GONE);
|
||||
binding.loadingNextInstances.setVisibility(View.GONE);
|
||||
if (instanceData == null || instanceData.data.size() == 0) {
|
||||
flag_loading = false;
|
||||
if (instanceData == null || (instanceData.data.size() == 0 && this.instances.size() == 0)) {
|
||||
binding.noAction.setVisibility(View.VISIBLE);
|
||||
binding.lvInstances.setVisibility(View.GONE);
|
||||
return;
|
||||
|
@ -162,6 +162,8 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean onCreateOptionsMenu(Menu menu) {
|
||||
// Inflate the menu; this adds items to the action bar if it is present.
|
||||
@ -376,9 +378,19 @@ public class MainActivity extends AppCompatActivity implements NavigationView.On
|
||||
this.mFilePathCallback = mFilePathCallback;
|
||||
}
|
||||
|
||||
@SuppressLint("ApplySharedPref")
|
||||
@Override
|
||||
public void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
if (requestCode != INPUT_FILE_REQUEST_CODE || mFilePathCallback == null) {
|
||||
if (requestCode == PICK_INSTANCE && resultCode == Activity.RESULT_OK) {
|
||||
if (data != null && data.getData() != null) {
|
||||
final SharedPreferences sharedpreferences = getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
SharedPreferences.Editor editor = sharedpreferences.edit();
|
||||
editor.putString(Helper.PREF_INSTANCE, String.valueOf(data.getData()));
|
||||
editor.commit();
|
||||
recreate();
|
||||
}
|
||||
}
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
return;
|
||||
}
|
||||
|
@ -29,7 +29,7 @@ public class RetrofitInstancesAPI {
|
||||
|
||||
private InstancesService init() {
|
||||
Retrofit retrofit = new Retrofit.Builder()
|
||||
.baseUrl("https://instances.joinmobilizon.org/api/v1")
|
||||
.baseUrl("https://instances.joinmobilizon.org/api/v1/")
|
||||
.addConverterFactory(GsonConverterFactory.create())
|
||||
.build();
|
||||
return retrofit.create(InstancesService.class);
|
||||
|
@ -73,7 +73,7 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
holder.host.setText(instance.getHost());
|
||||
|
||||
|
||||
holder.version.setText(instance.getVersion());
|
||||
|
||||
|
||||
StringBuilder languages = new StringBuilder();
|
||||
if (instance.getLanguages() != null && instance.getLanguages().size() > 0) {
|
||||
@ -88,6 +88,9 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
holder.languages.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
holder.version.setText(context.getString(R.string.version, String.valueOf(instance.getVersion())));
|
||||
holder.users.setText(context.getString(R.string.users, String.valueOf(instance.getTotalUsers())));
|
||||
holder.groups.setText(context.getString(R.string.groups, String.valueOf(instance.getTotalLocalGroups())));
|
||||
holder.local_events.setText(context.getString(R.string.local_events, String.valueOf(instance.getTotalLocalEvents())));
|
||||
|
||||
holder.pickup.setOnClickListener(v -> {
|
||||
@ -114,7 +117,7 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
|
||||
Button pickup;
|
||||
TextView name, host, description;
|
||||
TextView version, local_events, languages;
|
||||
TextView version, local_events, languages, groups, users;
|
||||
|
||||
public ViewHolder(@NonNull View itemView) {
|
||||
super(itemView);
|
||||
@ -125,6 +128,8 @@ public class InstanceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
|
||||
local_events = itemView.findViewById(R.id.local_events);
|
||||
version = itemView.findViewById(R.id.version);
|
||||
languages = itemView.findViewById(R.id.languages);
|
||||
groups = itemView.findViewById(R.id.groups);
|
||||
users = itemView.findViewById(R.id.users);
|
||||
}
|
||||
}
|
||||
}
|
@ -29,7 +29,6 @@ import java.io.InputStream;
|
||||
* see <http://www.gnu.org/licenses>. */
|
||||
public class Helper {
|
||||
|
||||
@SuppressWarnings("unused")
|
||||
public static final String TAG = "mobilizon_app";
|
||||
public static final String APP_PREFS = "app_prefs";
|
||||
public static final String PREF_INSTANCE = "instance";
|
||||
@ -42,7 +41,7 @@ public class Helper {
|
||||
*/
|
||||
public static String getLiveInstance(Context context) {
|
||||
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
return sharedpreferences.getString(Helper.PREF_INSTANCE, "test.mobilizon.org");
|
||||
return sharedpreferences.getString(Helper.PREF_INSTANCE, "mobilizon.fr");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -82,7 +81,7 @@ public class Helper {
|
||||
}
|
||||
|
||||
|
||||
@SuppressWarnings({"ResultOfMethodCallIgnored", "unused"})
|
||||
@SuppressWarnings({"ResultOfMethodCallIgnored"})
|
||||
public static void injectCSS(Activity activity, WebView view, String cssFile) {
|
||||
try {
|
||||
InputStream inputStream = activity.getAssets().open(cssFile);
|
||||
|
@ -0,0 +1,5 @@
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M20,3h-1L19,1h-2v2L7,3L7,1L5,1v2L4,3c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h16c1.1,0 2,-0.9 2,-2L22,5c0,-1.1 -0.9,-2 -2,-2zM20,21L4,21L4,8h16v13z"/>
|
||||
</vector>
|
@ -1,10 +1,5 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5C6.34,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,19h14v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 1.16,0.84 1.97,1.97 1.97,3.45L17,19h6v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5z"/>
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5C6.34,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,19h14v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 1.16,0.84 1.97,1.97 1.97,3.45L17,19h6v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5z"/>
|
||||
</vector>
|
||||
|
@ -1,10 +1,5 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24"
|
||||
android:tint="?attr/colorControlNormal">
|
||||
<path
|
||||
android:fillColor="@android:color/white"
|
||||
android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM13,17h-2v-6h2v6zM13,9h-2L11,7h2v2z"/>
|
||||
</vector>
|
||||
|
5
app/src/main/res/drawable/ic_baseline_people_24.xml
Normal file
5
app/src/main/res/drawable/ic_baseline_people_24.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<vector android:autoMirrored="true" android:height="24dp"
|
||||
android:tint="?attr/colorControlNormal" android:viewportHeight="24"
|
||||
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M16,11c1.66,0 2.99,-1.34 2.99,-3S17.66,5 16,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM8,11c1.66,0 2.99,-1.34 2.99,-3S9.66,5 8,5C6.34,5 5,6.34 5,8s1.34,3 3,3zM8,13c-2.33,0 -7,1.17 -7,3.5L1,19h14v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5zM16,13c-0.29,0 -0.62,0.02 -0.97,0.05 1.16,0.84 1.97,1.97 1.97,3.45L17,19h6v-2.5c0,-2.33 -4.67,-3.5 -7,-3.5z"/>
|
||||
</vector>
|
@ -15,7 +15,8 @@
|
||||
You should have received a copy of the GNU General Public License along with Mobilizon app; if not,
|
||||
see <http://www.gnu.org/licenses>.
|
||||
-->
|
||||
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<androidx.drawerlayout.widget.DrawerLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
@ -29,26 +30,23 @@
|
||||
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/fab_margin">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<androidx.cardview.widget.CardView
|
||||
android:id="@+id/filters_container"
|
||||
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/lv_instances"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginStart="@dimen/fab_margin"
|
||||
android:layout_marginEnd="@dimen/fab_margin"
|
||||
app:layout_constraintBottom_toTopOf="@+id/loading_next_instances"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="10dp"
|
||||
android:scrollbars="none" />
|
||||
|
||||
<androidx.appcompat.widget.SearchView
|
||||
app:queryHint="@string/search_instance_hint"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
android:animateLayoutChanges="false"
|
||||
android:id="@+id/searchBar" />
|
||||
</androidx.cardview.widget.CardView>
|
||||
<!-- Main Loader -->
|
||||
<RelativeLayout
|
||||
android:id="@+id/loader"
|
||||
@ -60,8 +58,7 @@
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/filters_container">
|
||||
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
<com.github.ybq.android.spinkit.SpinKitView
|
||||
style="@style/progress"
|
||||
android:layout_width="wrap_content"
|
||||
@ -70,38 +67,27 @@
|
||||
app:SpinKit_Color="?colorAccent" />
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/no_action"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:orientation="vertical"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/filters_container">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/lv_instances"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="10dp"
|
||||
android:visibility="gone">
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:scrollbars="none" />
|
||||
<RelativeLayout
|
||||
android:id="@+id/no_action"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone">
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:padding="10dp"
|
||||
android:text="@string/no_results"
|
||||
android:textSize="25sp" />
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
<!-- Loader for next videos -->
|
||||
android:layout_height="match_parent"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:padding="10dp"
|
||||
android:text="@string/no_results"
|
||||
android:textSize="25sp" />
|
||||
</RelativeLayout>
|
||||
<!-- Loader for next instances -->
|
||||
<RelativeLayout
|
||||
android:id="@+id/loading_next_instances"
|
||||
android:layout_width="match_parent"
|
||||
@ -113,6 +99,7 @@
|
||||
>
|
||||
<com.github.ybq.android.spinkit.SpinKitView
|
||||
style="@style/progressBottom"
|
||||
android:layout_centerInParent="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
|
@ -60,6 +60,8 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:drawablePadding="10dp"
|
||||
app:drawableStartCompat="@drawable/ic_baseline_info_24"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/description" />
|
||||
|
||||
@ -69,10 +71,32 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:drawablePadding="10dp"
|
||||
app:drawableStartCompat="@drawable/ic_baseline_group_24"
|
||||
app:drawableStartCompat="@drawable/ic_baseline_calendar_today_24"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/version" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/groups"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:drawablePadding="10dp"
|
||||
app:drawableStartCompat="@drawable/ic_baseline_group_24"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/local_events" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/users"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:drawablePadding="10dp"
|
||||
app:drawableStartCompat="@drawable/ic_baseline_people_24"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/groups" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/languages"
|
||||
android:layout_width="match_parent"
|
||||
@ -81,7 +105,7 @@
|
||||
android:drawablePadding="10dp"
|
||||
app:drawableStartCompat="@drawable/ic_baseline_forum_24"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/local_events" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/users" />
|
||||
|
||||
|
||||
|
||||
|
11
app/src/main/res/menu/menu_instance.xml
Normal file
11
app/src/main/res/menu/menu_instance.xml
Normal file
@ -0,0 +1,11 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:context="app.fedilab.mobilizon.MainActivity">
|
||||
<item
|
||||
android:id="@+id/action_search"
|
||||
android:icon="@android:drawable/ic_menu_search"
|
||||
android:title="@string/search"
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||
app:showAsAction="always|collapseActionView" />
|
||||
</menu>
|
@ -44,4 +44,7 @@
|
||||
<string name="instances_picker">Instances picker</string>
|
||||
<string name="pickup_instance">Pick this instance</string>
|
||||
<string name="local_events">Local events: %1$s</string>
|
||||
<string name="version">Version: %1$s</string>
|
||||
<string name="groups">Groups: %1$s</string>
|
||||
<string name="users">Users: %1$s</string>
|
||||
</resources>
|
Loading…
x
Reference in New Issue
Block a user