diff --git a/vector/src/main/AndroidManifest.xml b/vector/src/main/AndroidManifest.xml index 7e5242ab..c7cf4c2b 100644 --- a/vector/src/main/AndroidManifest.xml +++ b/vector/src/main/AndroidManifest.xml @@ -60,6 +60,7 @@ android:label="@string/title_activity_emoji_reaction_picker" /> + diff --git a/vector/src/main/java/im/vector/riotx/core/di/ScreenComponent.kt b/vector/src/main/java/im/vector/riotx/core/di/ScreenComponent.kt index 611ee171..c54cb942 100644 --- a/vector/src/main/java/im/vector/riotx/core/di/ScreenComponent.kt +++ b/vector/src/main/java/im/vector/riotx/core/di/ScreenComponent.kt @@ -32,10 +32,14 @@ import im.vector.riotx.features.crypto.keysbackup.setup.KeysBackupSetupStep1Frag import im.vector.riotx.features.crypto.keysbackup.setup.KeysBackupSetupStep2Fragment import im.vector.riotx.features.crypto.keysbackup.setup.KeysBackupSetupStep3Fragment import im.vector.riotx.features.crypto.verification.SASVerificationIncomingFragment -import im.vector.riotx.features.home.* +import im.vector.riotx.features.home.HomeActivity +import im.vector.riotx.features.home.HomeDetailFragment +import im.vector.riotx.features.home.HomeDrawerFragment +import im.vector.riotx.features.home.HomeModule import im.vector.riotx.features.home.group.GroupListFragment import im.vector.riotx.features.home.room.detail.RoomDetailFragment import im.vector.riotx.features.home.room.detail.timeline.action.* +import im.vector.riotx.features.home.room.filtered.FilteredRoomsActivity import im.vector.riotx.features.home.room.list.RoomListFragment import im.vector.riotx.features.invite.VectorInviteView import im.vector.riotx.features.login.LoginActivity @@ -130,6 +134,8 @@ interface ScreenComponent { fun inject(imageMediaViewerActivity: ImageMediaViewerActivity) + fun inject(filteredRoomsActivity: FilteredRoomsActivity) + fun inject(vectorInviteView: VectorInviteView) fun inject(videoMediaViewerActivity: VideoMediaViewerActivity) diff --git a/vector/src/main/java/im/vector/riotx/core/extensions/Activity.kt b/vector/src/main/java/im/vector/riotx/core/extensions/Activity.kt index 75817779..b4afb569 100644 --- a/vector/src/main/java/im/vector/riotx/core/extensions/Activity.kt +++ b/vector/src/main/java/im/vector/riotx/core/extensions/Activity.kt @@ -23,8 +23,8 @@ fun AppCompatActivity.addFragment(fragment: Fragment, frameId: Int) { supportFragmentManager.inTransaction { add(frameId, fragment) } } -fun AppCompatActivity.replaceFragment(fragment: Fragment, frameId: Int) { - supportFragmentManager.inTransaction { replace(frameId, fragment) } +fun AppCompatActivity.replaceFragment(fragment: Fragment, frameId: Int, tag: String? = null) { + supportFragmentManager.inTransaction { replace(frameId, fragment, tag) } } fun AppCompatActivity.addFragmentToBackstack(fragment: Fragment, frameId: Int, tag: String? = null) { diff --git a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt index 67d1af4e..4ec2c0ad 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/HomeActivity.kt @@ -41,6 +41,7 @@ import im.vector.riotx.core.platform.ToolbarConfigurable import im.vector.riotx.core.platform.VectorBaseActivity import im.vector.riotx.core.pushers.PushersManager import im.vector.riotx.features.disclaimer.showDisclaimerDialog +import im.vector.riotx.features.navigation.Navigator import im.vector.riotx.features.notifications.NotificationDrawerManager import im.vector.riotx.features.rageshake.VectorUncaughtExceptionHandler import im.vector.riotx.features.workers.signout.SignOutViewModel @@ -64,6 +65,7 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { @Inject lateinit var activeSessionHolder: ActiveSessionHolder @Inject lateinit var homeActivityViewModelFactory: HomeActivityViewModel.Factory @Inject lateinit var homeNavigator: HomeNavigator + @Inject lateinit var navigator: Navigator @Inject lateinit var vectorUncaughtExceptionHandler: VectorUncaughtExceptionHandler @Inject lateinit var pushManager: PushersManager @Inject lateinit var notificationDrawerManager: NotificationDrawerManager @@ -192,6 +194,10 @@ class HomeActivity : VectorBaseActivity(), ToolbarConfigurable { bugReporter.openBugReportScreen(this, false) return true } + R.id.menu_home_filter -> { + navigator.openRoomsFiltering(this) + return true + } } return true diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActivity.kt b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActivity.kt index 9108f5d0..6ad9a61f 100644 --- a/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActivity.kt +++ b/vector/src/main/java/im/vector/riotx/features/home/room/detail/RoomDetailActivity.kt @@ -35,7 +35,7 @@ class RoomDetailActivity : VectorBaseActivity(), ToolbarConfigurable { super.onCreate(savedInstanceState) if (isFirstCreation()) { val roomDetailArgs: RoomDetailArgs = intent?.extras?.getParcelable(EXTRA_ROOM_DETAIL_ARGS) - ?: return + ?: return val roomDetailFragment = RoomDetailFragment.newInstance(roomDetailArgs) replaceFragment(roomDetailFragment, R.id.roomDetailContainer) } diff --git a/vector/src/main/java/im/vector/riotx/features/home/room/filtered/FilteredRoomFooterItem.kt b/vector/src/main/java/im/vector/riotx/features/home/room/filtered/FilteredRoomFooterItem.kt new file mode 100644 index 00000000..0e916a0e --- /dev/null +++ b/vector/src/main/java/im/vector/riotx/features/home/room/filtered/FilteredRoomFooterItem.kt @@ -0,0 +1,49 @@ +/* + * Copyright 2019 New Vector Ltd + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package im.vector.riotx.features.home.room.filtered + +import android.widget.Button +import com.airbnb.epoxy.EpoxyAttribute +import com.airbnb.epoxy.EpoxyModelClass +import im.vector.riotx.R +import im.vector.riotx.core.epoxy.VectorEpoxyHolder +import im.vector.riotx.core.epoxy.VectorEpoxyModel +import im.vector.riotx.features.home.room.list.widget.FabMenuView + +@EpoxyModelClass(layout = R.layout.item_room_filter_footer) +abstract class FilteredRoomFooterItem : VectorEpoxyModel() { + + @EpoxyAttribute + var listener: FilteredRoomFooterItemListener? = null + + override fun bind(holder: Holder) { + holder.createRoomButton.setOnClickListener { listener?.createRoom() } + holder.createDirectChat.setOnClickListener { listener?.createDirectChat() } + holder.openRoomDirectory.setOnClickListener { listener?.openRoomDirectory() } + } + + class Holder : VectorEpoxyHolder() { + val createRoomButton by bind