Search in tabs - part 1
This commit is contained in:
parent
6e8128cc40
commit
97ebcd4bda
|
@ -33,6 +33,7 @@ import android.os.Bundle;
|
|||
import android.support.annotation.NonNull;
|
||||
import android.support.design.widget.AppBarLayout;
|
||||
import android.support.design.widget.FloatingActionButton;
|
||||
import android.support.design.widget.TabItem;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.app.Fragment;
|
||||
|
@ -103,6 +104,7 @@ import fr.gouv.etalab.mastodon.interfaces.OnRetrieveRemoteAccountInterface;
|
|||
import fr.gouv.etalab.mastodon.interfaces.OnUpdateAccountInfoInterface;
|
||||
import fr.gouv.etalab.mastodon.services.BackupStatusService;
|
||||
import fr.gouv.etalab.mastodon.services.LiveNotificationService;
|
||||
import fr.gouv.etalab.mastodon.sqlite.SearchDAO;
|
||||
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveAccountsAsyncTask;
|
||||
import fr.gouv.etalab.mastodon.asynctasks.RetrieveFeedsAsyncTask;
|
||||
|
@ -160,6 +162,8 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
private String bookmark;
|
||||
private String userId;
|
||||
private String instance;
|
||||
public int countPage;
|
||||
private PagerAdapter adapter;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
|
@ -369,14 +373,14 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
|
||||
|
||||
viewPager = findViewById(R.id.viewpager);
|
||||
int countPage = 2;
|
||||
countPage = 2;
|
||||
if( sharedpreferences.getBoolean(Helper.SET_DISPLAY_LOCAL, true))
|
||||
countPage++;
|
||||
if( sharedpreferences.getBoolean(Helper.SET_DISPLAY_GLOBAL, true))
|
||||
countPage++;
|
||||
viewPager.setOffscreenPageLimit(countPage);
|
||||
main_app_container = findViewById(R.id.main_app_container);
|
||||
PagerAdapter adapter = new PagerAdapter
|
||||
adapter = new PagerAdapter
|
||||
(getSupportFragmentManager(), tabLayout.getTabCount());
|
||||
viewPager.setAdapter(adapter);
|
||||
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
|
||||
|
@ -915,12 +919,16 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
}
|
||||
}
|
||||
};
|
||||
refreshSearchTab();
|
||||
LocalBroadcastManager.getInstance(this).registerReceiver(receive_data, new IntentFilter(Helper.RECEIVE_DATA));
|
||||
|
||||
// Retrieves instance
|
||||
new RetrieveInstanceAsyncTask(getApplicationContext(), BaseMainActivity.this).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
}
|
||||
|
||||
public void refreshSearchTab(){
|
||||
Helper.addSearchTag(BaseMainActivity.this, tabLayout, adapter);
|
||||
}
|
||||
|
||||
protected abstract void rateThisApp();
|
||||
|
||||
|
@ -1310,6 +1318,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
|
||||
LocalBroadcastManager.getInstance(this).registerReceiver(receive_federated_data, new IntentFilter(Helper.RECEIVE_FEDERATED_DATA));
|
||||
LocalBroadcastManager.getInstance(this).registerReceiver(receive_local_data, new IntentFilter(Helper.RECEIVE_LOCAL_DATA));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1559,7 +1568,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
/**
|
||||
* Page Adapter for settings
|
||||
*/
|
||||
private class PagerAdapter extends FragmentStatePagerAdapter {
|
||||
public class PagerAdapter extends FragmentStatePagerAdapter {
|
||||
int mNumOfTabs;
|
||||
|
||||
private PagerAdapter(FragmentManager fm, int NumOfTabs) {
|
||||
|
@ -1567,6 +1576,19 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
this.mNumOfTabs = NumOfTabs;
|
||||
}
|
||||
|
||||
public void removeTabPage(int position) {
|
||||
tabLayout.removeTabAt(position);
|
||||
this.mNumOfTabs--;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void addTabPage(String title) {
|
||||
TabLayout.Tab tab = tabLayout.newTab();
|
||||
tab.setText(title);
|
||||
this.mNumOfTabs++;
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
//Remove the search bar
|
||||
|
@ -1575,6 +1597,9 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
tabLayout.setVisibility(View.VISIBLE);
|
||||
toolbar_search.setIconified(true);
|
||||
}
|
||||
SQLiteDatabase db = Sqlite.getInstance(BaseMainActivity.this, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||
List<String> searches = new SearchDAO(BaseMainActivity.this, db).getAllSearch();
|
||||
int sizeSearches = (searches ==null)?0:searches.size();
|
||||
//Selection comes from another menu, no action to do
|
||||
DisplayStatusFragment statusFragment;
|
||||
Bundle bundle = new Bundle();
|
||||
|
@ -1591,18 +1616,24 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
bundle.putSerializable("type", RetrieveFeedsAsyncTask.Type.LOCAL);
|
||||
statusFragment.setArguments(bundle);
|
||||
return statusFragment;
|
||||
}else if(position == 2){
|
||||
}else if(position == 2 && display_global){
|
||||
statusFragment = new DisplayStatusFragment();
|
||||
bundle.putSerializable("type", RetrieveFeedsAsyncTask.Type.PUBLIC);
|
||||
statusFragment.setArguments(bundle);
|
||||
return statusFragment;
|
||||
}else if (position == 3){
|
||||
}else if (position == 3 && display_global && display_local){
|
||||
statusFragment = new DisplayStatusFragment();
|
||||
bundle.putSerializable("type", RetrieveFeedsAsyncTask.Type.PUBLIC);
|
||||
statusFragment.setArguments(bundle);
|
||||
return statusFragment;
|
||||
}else{ //Here it's a search fragment
|
||||
statusFragment = new DisplayStatusFragment();
|
||||
bundle.putSerializable("type", RetrieveFeedsAsyncTask.Type.TAG);
|
||||
if( tabLayout.getTabAt(position) != null && tabLayout.getTabAt(position).getText() != null)
|
||||
bundle.putString("tag", tabLayout.getTabAt(position).getText().toString());
|
||||
statusFragment.setArguments(bundle);
|
||||
return statusFragment;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
|
@ -1630,6 +1661,7 @@ public abstract class BaseMainActivity extends BaseActivity
|
|||
}
|
||||
return createdFragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return mNumOfTabs;
|
||||
|
|
|
@ -37,6 +37,7 @@ import android.widget.RelativeLayout;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import fr.gouv.etalab.mastodon.activities.BaseMainActivity;
|
||||
import fr.gouv.etalab.mastodon.activities.MainActivity;
|
||||
import fr.gouv.etalab.mastodon.drawers.SearchTootsListAdapter;
|
||||
import fr.gouv.etalab.mastodon.helper.Helper;
|
||||
|
@ -110,6 +111,7 @@ public class DisplaySearchFragment extends Fragment {
|
|||
return;
|
||||
}
|
||||
new SearchDAO(context, db).insertSearch(keyword);
|
||||
((BaseMainActivity)context).refreshSearchTab();
|
||||
searches.add(keyword);
|
||||
if( textviewNoAction.getVisibility() == View.VISIBLE)
|
||||
textviewNoAction.setVisibility(View.GONE);
|
||||
|
|
|
@ -33,6 +33,7 @@ import android.provider.MediaStore;
|
|||
import android.provider.OpenableColumns;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.customtabs.CustomTabsIntent;
|
||||
import android.support.design.widget.TabLayout;
|
||||
import android.support.media.ExifInterface;
|
||||
import android.support.v4.app.FragmentActivity;
|
||||
import android.support.v4.graphics.drawable.DrawableCompat;
|
||||
|
@ -137,6 +138,7 @@ import java.util.regex.Pattern;
|
|||
|
||||
import fr.gouv.etalab.mastodon.BuildConfig;
|
||||
import fr.gouv.etalab.mastodon.R;
|
||||
import fr.gouv.etalab.mastodon.activities.BaseMainActivity;
|
||||
import fr.gouv.etalab.mastodon.activities.HashTagActivity;
|
||||
import fr.gouv.etalab.mastodon.activities.LoginActivity;
|
||||
import fr.gouv.etalab.mastodon.activities.MainActivity;
|
||||
|
@ -154,6 +156,7 @@ import fr.gouv.etalab.mastodon.client.Entities.Status;
|
|||
import fr.gouv.etalab.mastodon.client.Entities.Tag;
|
||||
import fr.gouv.etalab.mastodon.client.Entities.Version;
|
||||
import fr.gouv.etalab.mastodon.sqlite.AccountDAO;
|
||||
import fr.gouv.etalab.mastodon.sqlite.SearchDAO;
|
||||
import fr.gouv.etalab.mastodon.sqlite.Sqlite;
|
||||
|
||||
import static android.content.Context.DOWNLOAD_SERVICE;
|
||||
|
@ -2145,4 +2148,36 @@ public class Helper {
|
|||
Log.v(Helper.TAG, content);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static void addSearchTag(Context context, TabLayout tableLayout, BaseMainActivity.PagerAdapter pagerAdapter){
|
||||
final SharedPreferences sharedpreferences = context.getSharedPreferences(Helper.APP_PREFS, Context.MODE_PRIVATE);
|
||||
SQLiteDatabase db = Sqlite.getInstance(context, Sqlite.DB_NAME, null, Sqlite.DB_VERSION).open();
|
||||
List<String> searches = new SearchDAO(context, db).getAllSearch();
|
||||
int countInitialTab = ((BaseMainActivity) context).countPage;
|
||||
int allTabCount = tableLayout.getTabCount();
|
||||
if( allTabCount > countInitialTab){
|
||||
while(allTabCount > countInitialTab){
|
||||
removeTab(tableLayout, pagerAdapter, allTabCount-1);
|
||||
allTabCount -=1;
|
||||
}
|
||||
}
|
||||
if( searches != null)
|
||||
for(String search: searches){
|
||||
addTab(tableLayout, pagerAdapter, search);
|
||||
}
|
||||
}
|
||||
|
||||
private static void removeTab(TabLayout tableLayout, BaseMainActivity.PagerAdapter pagerAdapter, int position) {
|
||||
if (tableLayout.getTabCount() >= position) {
|
||||
tableLayout.removeTabAt(position);
|
||||
pagerAdapter.removeTabPage(position);
|
||||
}
|
||||
}
|
||||
|
||||
private static void addTab(TabLayout tableLayout, BaseMainActivity.PagerAdapter pagerAdapter, String title) {
|
||||
tableLayout.addTab(tableLayout.newTab().setText(title));
|
||||
pagerAdapter.addTabPage(title);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue