diff --git a/vector/src/main/AndroidManifest.xml b/vector/src/main/AndroidManifest.xml index 5d8d3dc7..1c3e843b 100644 --- a/vector/src/main/AndroidManifest.xml +++ b/vector/src/main/AndroidManifest.xml @@ -44,6 +44,7 @@ android:label="@string/title_activity_emoji_reaction_picker" /> + { // ROOM PREVIEW - vectorBaseActivity.notImplemented("Opening room preview") + requireActivity().startActivity(RoomPreviewActivity.getIntent(requireActivity(), publicRoom)) } else -> { Snackbar.make(publicRoomsCoordinator, getString(R.string.please_wait), Snackbar.LENGTH_SHORT) diff --git a/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewActivity.kt b/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewActivity.kt new file mode 100644 index 00000000..5b489183 --- /dev/null +++ b/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewActivity.kt @@ -0,0 +1,87 @@ +/* + * 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.riotredesign.features.roomdirectory.roompreview + +import android.content.Context +import android.content.Intent +import android.os.Bundle +import android.os.Parcelable +import androidx.appcompat.widget.Toolbar +import im.vector.matrix.android.api.session.room.model.roomdirectory.PublicRoom +import im.vector.riotredesign.R +import im.vector.riotredesign.core.extensions.addFragment +import im.vector.riotredesign.core.platform.ToolbarConfigurable +import im.vector.riotredesign.core.platform.VectorBaseActivity +import im.vector.riotredesign.features.roomdirectory.RoomDirectoryModule +import kotlinx.android.parcel.Parcelize +import org.koin.android.scope.ext.android.bindScope +import org.koin.android.scope.ext.android.getOrCreateScope + +@Parcelize +data class RoomPreviewData( + val roomId: String, + val roomName: String?, + val topic: String?, + val worldReadable: Boolean, + val avatarUrl: String? +) : Parcelable + + +class RoomPreviewActivity : VectorBaseActivity(), ToolbarConfigurable { + + companion object { + private const val ARG = "ARG" + + fun getIntent(context: Context, publicRoom: PublicRoom): Intent { + return Intent(context, RoomPreviewActivity::class.java).apply { + putExtra(ARG, RoomPreviewData( + roomId = publicRoom.roomId, + roomName = publicRoom.name, + topic = publicRoom.topic, + worldReadable = publicRoom.worldReadable, + avatarUrl = publicRoom.avatarUrl + )) + } + } + } + + override fun getLayoutRes() = R.layout.activity_simple + + override fun configure(toolbar: Toolbar) { + configureToolbar(toolbar) + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + bindScope(getOrCreateScope(RoomDirectoryModule.ROOM_DIRECTORY_SCOPE)) + } + + override fun initUiAndData() { + if (isFirstCreation()) { + val args = intent.getParcelableExtra(ARG) + + if (args.worldReadable) { + // TODO Room preview + notImplemented("Room preview of world readable room") + } else { + addFragment(RoomPreviewNoPreviewFragment.newInstance(args), R.id.simpleFragmentContainer) + } + } + } + +} \ No newline at end of file diff --git a/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt b/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt new file mode 100644 index 00000000..5b6b902f --- /dev/null +++ b/vector/src/main/java/im/vector/riotredesign/features/roomdirectory/roompreview/RoomPreviewNoPreviewFragment.kt @@ -0,0 +1,61 @@ +/* + * 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.riotredesign.features.roomdirectory.roompreview + +import android.os.Bundle +import android.view.View +import androidx.fragment.app.Fragment +import com.airbnb.mvrx.args +import im.vector.riotredesign.R +import im.vector.riotredesign.core.extensions.setTextOrHide +import im.vector.riotredesign.core.platform.VectorBaseFragment +import im.vector.riotredesign.features.home.AvatarRenderer +import im.vector.riotredesign.features.roomdirectory.RoomDirectoryModule +import kotlinx.android.synthetic.main.fragment_room_preview_no_preview.* +import org.koin.android.scope.ext.android.bindScope +import org.koin.android.scope.ext.android.getOrCreateScope + +class RoomPreviewNoPreviewFragment : VectorBaseFragment() { + + companion object { + fun newInstance(arg: RoomPreviewData): Fragment { + return RoomPreviewNoPreviewFragment().apply { setArguments(arg) } + } + } + + private val roomPreviewData: RoomPreviewData by args() + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + bindScope(getOrCreateScope(RoomDirectoryModule.ROOM_DIRECTORY_SCOPE)) + setupToolbar(roomPreviewNoPreviewToolbar) + } + + override fun getLayoutResId() = R.layout.fragment_room_preview_no_preview + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + + AvatarRenderer.render(roomPreviewData.avatarUrl, roomPreviewData.roomId, roomPreviewData.roomName, roomPreviewNoPreviewAvatar) + roomPreviewNoPreviewName.text = roomPreviewData.roomName + roomPreviewNoPreviewTopic.setTextOrHide(roomPreviewData.topic) + + roomPreviewNoPreviewJoin.setOnClickListener { + vectorBaseActivity.notImplemented("Join from preview") + } + } +} \ No newline at end of file diff --git a/vector/src/main/java/im/vector/riotredesign/features/settings/VectorSettingsActivity.kt b/vector/src/main/java/im/vector/riotredesign/features/settings/VectorSettingsActivity.kt index a657e110..6208c75e 100755 --- a/vector/src/main/java/im/vector/riotredesign/features/settings/VectorSettingsActivity.kt +++ b/vector/src/main/java/im/vector/riotredesign/features/settings/VectorSettingsActivity.kt @@ -24,6 +24,7 @@ import androidx.preference.PreferenceFragmentCompat import im.vector.matrix.android.api.session.Session import im.vector.riotredesign.R import im.vector.riotredesign.core.platform.VectorBaseActivity +import kotlinx.android.synthetic.main.activity_vector_settings.* import org.koin.android.ext.android.inject /** @@ -45,7 +46,7 @@ class VectorSettingsActivity : VectorBaseActivity(), private val session by inject() override fun initUiAndData() { - configureToolbar() + configureToolbar(settingsToolbar) if (isFirstCreation()) { vectorSettingsPreferencesFragment = VectorSettingsPreferencesFragment.newInstance(session.sessionParams.credentials.userId) diff --git a/vector/src/main/res/layout/activity_bug_report.xml b/vector/src/main/res/layout/activity_bug_report.xml index 82916ee6..4d87ced7 100644 --- a/vector/src/main/res/layout/activity_bug_report.xml +++ b/vector/src/main/res/layout/activity_bug_report.xml @@ -6,7 +6,7 @@ android:orientation="vertical"> diff --git a/vector/src/main/res/layout/activity_emoji_reaction_picker.xml b/vector/src/main/res/layout/activity_emoji_reaction_picker.xml index 8e1edab3..4744931b 100644 --- a/vector/src/main/res/layout/activity_emoji_reaction_picker.xml +++ b/vector/src/main/res/layout/activity_emoji_reaction_picker.xml @@ -19,7 +19,7 @@ android:layout_height="wrap_content"> diff --git a/vector/src/main/res/layout/fragment_room_preview_no_preview.xml b/vector/src/main/res/layout/fragment_room_preview_no_preview.xml new file mode 100644 index 00000000..30a378ed --- /dev/null +++ b/vector/src/main/res/layout/fragment_room_preview_no_preview.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + +