Эх сурвалжийг харах

fix #2857

Signed-off-by: tobiasKaminsky <tobias@kaminsky.me>
tobiasKaminsky 6 жил өмнө
parent
commit
63435257f0

+ 27 - 12
src/main/java/com/owncloud/android/ui/activity/DrawerActivity.java

@@ -89,6 +89,7 @@ import com.owncloud.android.ui.events.ChangeMenuEvent;
 import com.owncloud.android.ui.events.DummyDrawerEvent;
 import com.owncloud.android.ui.events.DummyDrawerEvent;
 import com.owncloud.android.ui.events.MenuItemClickEvent;
 import com.owncloud.android.ui.events.MenuItemClickEvent;
 import com.owncloud.android.ui.events.SearchEvent;
 import com.owncloud.android.ui.events.SearchEvent;
+import com.owncloud.android.ui.fragment.OCFileListFragment;
 import com.owncloud.android.ui.trashbin.TrashbinActivity;
 import com.owncloud.android.ui.trashbin.TrashbinActivity;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.DrawerMenuUtil;
 import com.owncloud.android.utils.DrawerMenuUtil;
@@ -99,6 +100,7 @@ import com.owncloud.android.utils.svg.MenuSimpleTarget;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 import org.greenrobot.eventbus.ThreadMode;
+import org.parceler.Parcels;
 
 
 import java.util.ArrayList;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.List;
@@ -403,12 +405,12 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
                 EventBus.getDefault().post(new ChangeMenuEvent());
                 EventBus.getDefault().post(new ChangeMenuEvent());
                 break;
                 break;
             case R.id.nav_favorites:
             case R.id.nav_favorites:
-                EventBus.getDefault().post(new SearchEvent("", SearchOperation.SearchType.FAVORITE_SEARCH,
-                        SearchEvent.UnsetType.NO_UNSET));
+                handleSearchEvents(new SearchEvent("", SearchOperation.SearchType.FAVORITE_SEARCH,
+                        SearchEvent.UnsetType.NO_UNSET), menuItem.getItemId());
                 break;
                 break;
             case R.id.nav_photos:
             case R.id.nav_photos:
-                EventBus.getDefault().post(new SearchEvent("image/%", SearchOperation.SearchType.CONTENT_TYPE_SEARCH,
-                        SearchEvent.UnsetType.NO_UNSET));
+                handleSearchEvents(new SearchEvent("image/%", SearchOperation.SearchType.CONTENT_TYPE_SEARCH,
+                        SearchEvent.UnsetType.NO_UNSET), menuItem.getItemId());
                 break;
                 break;
             case R.id.nav_on_device:
             case R.id.nav_on_device:
                 EventBus.getDefault().post(new ChangeMenuEvent());
                 EventBus.getDefault().post(new ChangeMenuEvent());
@@ -471,20 +473,20 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
                 startActivityForResult(manageAccountsIntent, ACTION_MANAGE_ACCOUNTS);
                 startActivityForResult(manageAccountsIntent, ACTION_MANAGE_ACCOUNTS);
                 break;
                 break;
             case R.id.nav_recently_added:
             case R.id.nav_recently_added:
-                EventBus.getDefault().post(new SearchEvent("%", SearchOperation.SearchType.CONTENT_TYPE_SEARCH,
-                        SearchEvent.UnsetType.UNSET_BOTTOM_NAV_BAR));
+                handleSearchEvents(new SearchEvent("%", SearchOperation.SearchType.CONTENT_TYPE_SEARCH,
+                        SearchEvent.UnsetType.UNSET_BOTTOM_NAV_BAR), menuItem.getItemId());
                 break;
                 break;
             case R.id.nav_recently_modified:
             case R.id.nav_recently_modified:
-                EventBus.getDefault().post(new SearchEvent("", SearchOperation.SearchType.RECENTLY_MODIFIED_SEARCH,
-                        SearchEvent.UnsetType.UNSET_BOTTOM_NAV_BAR));
+                handleSearchEvents(new SearchEvent("", SearchOperation.SearchType.RECENTLY_MODIFIED_SEARCH,
+                        SearchEvent.UnsetType.UNSET_BOTTOM_NAV_BAR), menuItem.getItemId());
                 break;
                 break;
             case R.id.nav_shared:
             case R.id.nav_shared:
-                EventBus.getDefault().post(new SearchEvent("", SearchOperation.SearchType.SHARED_SEARCH,
-                        SearchEvent.UnsetType.UNSET_BOTTOM_NAV_BAR));
+                handleSearchEvents(new SearchEvent("", SearchOperation.SearchType.SHARED_SEARCH,
+                        SearchEvent.UnsetType.UNSET_BOTTOM_NAV_BAR), menuItem.getItemId());
                 break;
                 break;
             case R.id.nav_videos:
             case R.id.nav_videos:
-                EventBus.getDefault().post(new SearchEvent("video/%", SearchOperation.SearchType.CONTENT_TYPE_SEARCH,
-                        SearchEvent.UnsetType.UNSET_BOTTOM_NAV_BAR));
+                handleSearchEvents(new SearchEvent("video/%", SearchOperation.SearchType.CONTENT_TYPE_SEARCH,
+                        SearchEvent.UnsetType.UNSET_BOTTOM_NAV_BAR), menuItem.getItemId());
                 break;
                 break;
             case Menu.NONE:
             case Menu.NONE:
                 // account clicked
                 // account clicked
@@ -502,6 +504,19 @@ public abstract class DrawerActivity extends ToolbarActivity implements DisplayU
         }
         }
     }
     }
 
 
+    private void handleSearchEvents(SearchEvent searchEvent, int menuItemId) {
+        if (this instanceof FileDisplayActivity) {
+            EventBus.getDefault().post(searchEvent);
+        } else {
+            Intent intent = new Intent(getApplicationContext(), FileDisplayActivity.class);
+            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+            intent.setAction(Intent.ACTION_SEARCH);
+            intent.putExtra(OCFileListFragment.SEARCH_EVENT, Parcels.wrap(searchEvent));
+            intent.putExtra(FileDisplayActivity.DRAWER_MENU_ID, menuItemId);
+            startActivity(intent);
+        }
+    }
+
     /**
     /**
      * show the file list to the user.
      * show the file list to the user.
      *
      *

+ 11 - 4
src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -537,6 +537,7 @@ public class FileDisplayActivity extends HookActivity
     @Override
     @Override
     protected void onNewIntent(Intent intent) {
     protected void onNewIntent(Intent intent) {
         super.onNewIntent(intent);
         super.onNewIntent(intent);
+
         if (ACTION_DETAILS.equalsIgnoreCase(intent.getAction())) {
         if (ACTION_DETAILS.equalsIgnoreCase(intent.getAction())) {
             setIntent(intent);
             setIntent(intent);
             setFile(intent.getParcelableExtra(EXTRA_FILE));
             setFile(intent.getParcelableExtra(EXTRA_FILE));
@@ -546,8 +547,8 @@ public class FileDisplayActivity extends HookActivity
         } else // Verify the action and get the query
         } else // Verify the action and get the query
             if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
             if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
                 String query = intent.getStringExtra(SearchManager.QUERY);
                 String query = intent.getStringExtra(SearchManager.QUERY);
+                setIntent(intent);
                 Log_OC.w(TAG, "Ignored Intent requesting to query for " + query);
                 Log_OC.w(TAG, "Ignored Intent requesting to query for " + query);
-
             } else if (UsersAndGroupsSearchProvider.ACTION_SHARE_WITH.equals(intent.getAction())) {
             } else if (UsersAndGroupsSearchProvider.ACTION_SHARE_WITH.equals(intent.getAction())) {
                 Uri data = intent.getData();
                 Uri data = intent.getData();
                 String dataString = intent.getDataString();
                 String dataString = intent.getDataString();
@@ -1249,10 +1250,16 @@ public class FileDisplayActivity extends HookActivity
         registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
         registerReceiver(mDownloadFinishReceiver, downloadIntentFilter);
 
 
         // setup drawer
         // setup drawer
-        if (MainApp.isOnlyOnDevice()) {
-            setDrawerMenuItemChecked(R.id.nav_on_device);
+        int menuItemId = getIntent().getIntExtra(FileDisplayActivity.DRAWER_MENU_ID, -1);
+
+        if (menuItemId == -1) {
+            if (MainApp.isOnlyOnDevice()) {
+                setDrawerMenuItemChecked(R.id.nav_on_device);
+            } else {
+                setDrawerMenuItemChecked(R.id.nav_all_files);
+            }
         } else {
         } else {
-            setDrawerMenuItemChecked(R.id.nav_all_files);
+            setDrawerMenuItemChecked(menuItemId);
         }
         }
         
         
         Log_OC.v(TAG, "onResume() end");
         Log_OC.v(TAG, "onResume() end");

+ 16 - 0
src/main/java/com/owncloud/android/ui/fragment/OCFileListFragment.java

@@ -204,6 +204,22 @@ public class OCFileListFragment extends ExtendedListFragment implements
         searchFragment = currentSearchType != null && searchEvent != null;
         searchFragment = currentSearchType != null && searchEvent != null;
     }
     }
 
 
+    @Override
+    public void onResume() {
+        if (getActivity() == null) {
+            return;
+        }
+
+        Intent intent = getActivity().getIntent();
+
+        if (intent.getParcelableExtra(OCFileListFragment.SEARCH_EVENT) != null) {
+            searchEvent = Parcels.unwrap(intent.getParcelableExtra(OCFileListFragment.SEARCH_EVENT));
+            onMessageEvent(searchEvent);
+        }
+
+        super.onResume();
+    }
+
     /**
     /**
      * {@inheritDoc}
      * {@inheritDoc}
      */
      */