diff --git a/vector/src/main/java/im/vector/riotredesign/core/platform/RiotActivity.kt b/vector/src/main/java/im/vector/riotredesign/core/platform/RiotActivity.kt
index 06b1d3640f..9e64e2940c 100644
--- a/vector/src/main/java/im/vector/riotredesign/core/platform/RiotActivity.kt
+++ b/vector/src/main/java/im/vector/riotredesign/core/platform/RiotActivity.kt
@@ -23,11 +23,13 @@ import android.view.MenuItem
import android.view.View
import androidx.annotation.*
import androidx.appcompat.widget.Toolbar
+import androidx.coordinatorlayout.widget.CoordinatorLayout
import butterknife.BindView
import butterknife.ButterKnife
import butterknife.Unbinder
import com.airbnb.mvrx.BaseMvRxActivity
import com.bumptech.glide.util.Util
+import com.google.android.material.snackbar.Snackbar
import im.vector.riotredesign.BuildConfig
import im.vector.riotredesign.R
import im.vector.riotredesign.features.rageshake.BugReportActivity
@@ -47,8 +49,14 @@ abstract class RiotActivity : BaseMvRxActivity() {
* ========================================================================================== */
@Nullable
+ @JvmField
@BindView(R.id.toolbar)
- protected lateinit var toolbar: Toolbar
+ var toolbar: Toolbar? = null
+
+ @Nullable
+ @JvmField
+ @BindView(R.id.vector_coordinator_layout)
+ var coordinatorLayout: CoordinatorLayout? = null
/* ==========================================================================================
* DATA
@@ -269,4 +277,23 @@ abstract class RiotActivity : BaseMvRxActivity() {
* Return a object containing other themes for this activity
*/
open fun getOtherThemes(): ActivityOtherThemes = ActivityOtherThemes.Default
+
+ /* ==========================================================================================
+ * PUBLIC METHODS
+ * ========================================================================================== */
+
+ protected fun showSnackbar(message: String) {
+ coordinatorLayout?.let {
+ Snackbar.make(it, message, Snackbar.LENGTH_SHORT)
+ }
+ }
+
+ /* ==========================================================================================
+ * Temporary method
+ * ========================================================================================== */
+
+ protected fun notImplemented() {
+ showSnackbar(getString(R.string.not_implemented))
+ }
+
}
\ No newline at end of file
diff --git a/vector/src/main/java/im/vector/riotredesign/core/platform/VectorPreferenceFragment.kt b/vector/src/main/java/im/vector/riotredesign/core/platform/VectorPreferenceFragment.kt
index f9f327d34e..385c405b9c 100644
--- a/vector/src/main/java/im/vector/riotredesign/core/platform/VectorPreferenceFragment.kt
+++ b/vector/src/main/java/im/vector/riotredesign/core/platform/VectorPreferenceFragment.kt
@@ -18,6 +18,8 @@ package im.vector.riotredesign.core.platform
import androidx.annotation.CallSuper
import androidx.preference.PreferenceFragmentCompat
+import im.vector.riotredesign.R
+import im.vector.riotredesign.core.utils.toast
import timber.log.Timber
abstract class VectorPreferenceFragment : PreferenceFragmentCompat() {
@@ -37,4 +39,14 @@ abstract class VectorPreferenceFragment : PreferenceFragmentCompat() {
Timber.d("onResume Fragment ${this.javaClass.simpleName}")
}
+ /* ==========================================================================================
+ * Protected
+ * ========================================================================================== */
+
+ protected fun notImplemented() {
+ // Snackbar cannot be display on PreferenceFragment
+ // Snackbar.make(view!!, R.string.not_implemented, Snackbar.LENGTH_SHORT)
+ activity?.toast(R.string.not_implemented)
+ }
+
}
\ No newline at end of file
diff --git a/vector/src/main/java/im/vector/riotredesign/features/settings/VectorSettingsPreferencesFragment.kt b/vector/src/main/java/im/vector/riotredesign/features/settings/VectorSettingsPreferencesFragment.kt
index 474b2aaf90..0c096233f7 100755
--- a/vector/src/main/java/im/vector/riotredesign/features/settings/VectorSettingsPreferencesFragment.kt
+++ b/vector/src/main/java/im/vector/riotredesign/features/settings/VectorSettingsPreferencesFragment.kt
@@ -305,6 +305,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
}
it.setOnPreferenceClickListener {
+ notImplemented()
// TODO val intent = PhoneNumberAdditionActivity.getIntent(activity, mSession.credentials.userId)
// startActivityForResult(intent, REQUEST_NEW_PHONE_NUMBER)
true
@@ -382,6 +383,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
// Notification privacy
mNotificationPrivacyPreference.onPreferenceClickListener = Preference.OnPreferenceClickListener {
+ notImplemented()
// TODO startActivity(NotificationPrivacyActivity.getIntent(activity))
true
}
@@ -475,6 +477,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
AlertDialog.Builder(activity)
.setMessage(R.string.room_settings_labs_end_to_end_warnings)
.setPositiveButton(R.string.logout) { _, _ ->
+ notImplemented()
// TODO CommonActivityUtils.logout(activity)
}
.setNegativeButton(R.string.cancel) { _, _ ->
@@ -489,6 +492,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
val newValue = newValueAsVoid as Boolean
if (mSession.isCryptoEnabled() != newValue) {
+ notImplemented()
/* TODO
displayLoadingView()
@@ -533,6 +537,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
// SaveMode Management
findPreference(PreferencesManager.SETTINGS_DATA_SAVE_MODE_PREFERENCE_KEY)
.onPreferenceChangeListener = Preference.OnPreferenceChangeListener { _, newValue ->
+ notImplemented()
/* TODO
val sessions = Matrix.getMXSessions(activity)
for (session in sessions) {
@@ -621,6 +626,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
// copyright
findPreference(PreferencesManager.SETTINGS_COPYRIGHT_PREFERENCE_KEY)
.onPreferenceClickListener = Preference.OnPreferenceClickListener {
+ notImplemented()
// TODO VectorUtils.displayAppCopyright()
false
}
@@ -628,6 +634,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
// terms & conditions
findPreference(PreferencesManager.SETTINGS_APP_TERM_CONDITIONS_PREFERENCE_KEY)
.onPreferenceClickListener = Preference.OnPreferenceClickListener {
+ notImplemented()
// TODO VectorUtils.displayAppTac()
false
}
@@ -635,6 +642,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
// privacy policy
findPreference(PreferencesManager.SETTINGS_PRIVACY_POLICY_PREFERENCE_KEY)
.onPreferenceClickListener = Preference.OnPreferenceClickListener {
+ notImplemented()
// TODO VectorUtils.displayAppPrivacyPolicy()
false
}
@@ -642,6 +650,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
// third party notice
findPreference(PreferencesManager.SETTINGS_THIRD_PARTY_NOTICES_PREFERENCE_KEY)
.onPreferenceClickListener = Preference.OnPreferenceClickListener {
+ notImplemented()
// TODO VectorUtils.displayThirdPartyLicenses()
false
}
@@ -678,8 +687,11 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
}
}
})
+ */
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
+ notImplemented()
+ /* TODO
displayLoadingView()
val task = ClearMediaCacheAsyncTask(
@@ -705,10 +717,10 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
task.cancel(true)
hideLoadingView()
}
+ */
false
}
- */
}
// Incoming call sounds
@@ -739,7 +751,8 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
*/
it.onPreferenceClickListener = Preference.OnPreferenceClickListener {
- displayLoadingView()
+ notImplemented()
+ // displayLoadingView()
// TODO Matrix.getInstance(appContext).reloadSessions(appContext)
false
}
@@ -751,6 +764,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
findPreference(PreferencesManager.SETTINGS_DEACTIVATE_ACCOUNT_KEY)
.onPreferenceClickListener = Preference.OnPreferenceClickListener {
activity?.let {
+ notImplemented()
// TODO startActivity(DeactivateAccountActivity.getIntent(it))
}
@@ -795,7 +809,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
super.onResume()
// find the view from parent activity
- // TODO mLoadingView = activity?.findViewById(R.id.vector_settings_spinner_views)
+ mLoadingView = activity?.findViewById(R.id.vector_settings_spinner_views)
/* TODO
if (mSession.isAlive) {
@@ -880,7 +894,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
var parent = view
while (parent != null && mLoadingView == null) {
- // TODO mLoadingView = parent.findViewById(R.id.vector_settings_spinner_views)
+ mLoadingView = parent.findViewById(R.id.vector_settings_spinner_views)
parent = parent.parent as View
}
} else {
@@ -1080,6 +1094,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
val oldPwd = oldPasswordText.text.toString().trim()
val newPwd = newPasswordText.text.toString().trim()
+ notImplemented()
/* TODO
showPasswordLoadingView(true)
@@ -1128,6 +1143,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
*/
private fun onPushRuleClick(preferenceKey: String, newValue: Boolean) {
+ notImplemented()
/* TODO
val matrixInstance = Matrix.getInstance(context)
val pushManager = matrixInstance.pushManager
@@ -1248,6 +1264,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
* Update the displayname.
*/
private fun onDisplayNameClick(value: String?) {
+ notImplemented()
/* TODO
if (!TextUtils.equals(mSession.myUser.displayname, value)) {
displayLoadingView()
@@ -1302,6 +1319,8 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
* Update the avatar.
*/
private fun onUpdateAvatarClick() {
+ notImplemented()
+
/* TODO
if (checkPermissions(PERMISSIONS_FOR_TAKING_PHOTO, this, PERMISSION_REQUEST_CODE_LAUNCH_CAMERA)) {
changeAvatar()
@@ -1471,6 +1490,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
.setTitle(R.string.dialog_title_confirmation)
.setMessage(dialogMessage)
.setPositiveButton(R.string.remove) { _, _ ->
+ notImplemented()
/* TODO
displayLoadingView()
@@ -1542,6 +1562,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
val idsList = ArrayList()
idsList.add(userId)
+ notImplemented()
/* TODO
mSession.unIgnoreUsers(idsList, object : ApiCallback {
override fun onSuccess(info: Void?) {
@@ -1771,6 +1792,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
return
}
+ notImplemented()
/* TODO
val pid = ThreePid(email, ThreePid.MEDIUM_EMAIL)
@@ -1976,6 +1998,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
selectedLanguagePreference.summary = VectorLocale.localeToLocalisedString(VectorLocale.applicationLocale)
selectedLanguagePreference.onPreferenceClickListener = Preference.OnPreferenceClickListener {
+ notImplemented()
// TODO startActivityForResult(LanguagePickerActivity.getIntent(activity), REQUEST_LOCALE)
true
}
@@ -2159,6 +2182,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
manageBackupPref.onPreferenceClickListener = Preference.OnPreferenceClickListener {
context?.let {
+ notImplemented()
// TODO startActivity(KeysBackupManageActivity.intent(it, mSession.myUserId))
}
false
@@ -2427,6 +2451,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
val layout = inflater.inflate(R.layout.dialog_base_edit_text, null)
val input = layout.findViewById(R.id.edit_text)
+ notImplemented()
/* TODO
input.setText(aDeviceInfoToRename.display_name)
@@ -2487,8 +2512,9 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
* @param deviceId the device id
*/
private fun deleteDevice(deviceId: String) {
- displayLoadingView()
+ notImplemented()
/* TODO
+ displayLoadingView()
mSession.deleteDevice(deviceId, mAccountPassword, object : ApiCallback {
override fun onSuccess(info: Void?) {
hideLoadingView()
@@ -2522,6 +2548,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
* @param aDeviceInfoToDelete device info
*/
private fun displayDeviceDeletionDialog(aDeviceInfoToDelete: DeviceInfo) {
+ notImplemented()
/*
TODO
if (aDeviceInfoToDelete.device_id != null) {
@@ -2569,6 +2596,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
* Manage the e2e keys export.
*/
private fun exportKeys() {
+ notImplemented()
// We need WRITE_EXTERNAL permission
/*
TODO
@@ -2616,6 +2644,7 @@ class VectorSettingsPreferencesFragment : VectorPreferenceFragment(), SharedPref
*/
@SuppressLint("NewApi")
private fun importKeys() {
+ notImplemented()
// TODO activity?.let { openFileSelection(it, this, false, REQUEST_E2E_FILE_REQUEST_CODE) }
}
diff --git a/vector/src/main/res/layout/activity_media_viewer.xml b/vector/src/main/res/layout/activity_media_viewer.xml
index b3156f1478..9927331ed4 100644
--- a/vector/src/main/res/layout/activity_media_viewer.xml
+++ b/vector/src/main/res/layout/activity_media_viewer.xml
@@ -7,6 +7,7 @@
-
@@ -38,4 +39,4 @@
android:visibility="visible" />
-
+
diff --git a/vector/src/main/res/layout/fragment_room_detail.xml b/vector/src/main/res/layout/fragment_room_detail.xml
index 452a9da87d..9f19557e53 100644
--- a/vector/src/main/res/layout/fragment_room_detail.xml
+++ b/vector/src/main/res/layout/fragment_room_detail.xml
@@ -7,6 +7,7 @@
+ app:layout_constraintTop_toBottomOf="@id/toolbar"
+ tools:listitem="@layout/item_timeline_event_text_message" />
********
+
+ Not implemented yet in RiotX
+
diff --git a/vector/src/main/res/values/styles_riot.xml b/vector/src/main/res/values/styles_riot.xml
index 9bfb9af87a..374b5992a0 100644
--- a/vector/src/main/res/values/styles_riot.xml
+++ b/vector/src/main/res/values/styles_riot.xml
@@ -11,7 +11,7 @@
-