bump speed dial version to something that uses AndroidX

Daniel Gultsch created

Change summary

build.gradle                                                           |  2 
src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java | 23 
src/main/res/menu/start_conversation_fab_submenu.xml                   | 20 
3 files changed, 32 insertions(+), 13 deletions(-)

Detailed changes

build.gradle 🔗

@@ -69,7 +69,7 @@ dependencies {
     implementation 'org.hsluv:hsluv:0.2'
     implementation 'org.conscrypt:conscrypt-android:2.5.2'
     implementation 'me.drakeet.support:toastcompat:1.1.0'
-    implementation "com.leinardi.android:speed-dial:2.0.1"
+    implementation "com.leinardi.android:speed-dial:3.2.0"
 
     implementation "com.squareup.retrofit2:retrofit:2.9.0"
     implementation "com.squareup.retrofit2:converter-gson:2.9.0"

src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java 🔗

@@ -37,11 +37,14 @@ import android.widget.Spinner;
 import android.widget.TextView;
 import android.widget.Toast;
 
+import androidx.annotation.MenuRes;
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.annotation.StringRes;
 import androidx.appcompat.app.ActionBar;
 import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.widget.PopupMenu;
+import androidx.core.content.ContextCompat;
 import androidx.databinding.DataBindingUtil;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
@@ -51,6 +54,8 @@ import androidx.viewpager.widget.PagerAdapter;
 import androidx.viewpager.widget.ViewPager;
 
 import com.google.android.material.textfield.TextInputLayout;
+import com.leinardi.android.speeddial.SpeedDialActionItem;
+import com.leinardi.android.speeddial.SpeedDialView;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -266,8 +271,7 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
         setSupportActionBar(binding.toolbar);
         configureActionBar(getSupportActionBar());
 
-        binding.speedDial.inflate(R.menu.start_conversation_fab_submenu);
-
+        inflateFab(binding.speedDial, R.menu.start_conversation_fab_submenu);
         binding.tabLayout.setupWithViewPager(binding.startConversationViewPager);
         binding.startConversationViewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
             @Override
@@ -338,6 +342,21 @@ public class StartConversationActivity extends XmppActivity implements XmppConne
         });
     }
 
+    private void inflateFab(final SpeedDialView speedDialView, final @MenuRes int menuRes) {
+        speedDialView.clearActionItems();
+        final PopupMenu popupMenu = new PopupMenu(this, new View(this));
+        popupMenu.inflate(menuRes);
+        final Menu menu = popupMenu.getMenu();
+        for (int i = 0; i < menu.size(); i++) {
+            final MenuItem menuItem = menu.getItem(i);
+            final SpeedDialActionItem actionItem = new SpeedDialActionItem.Builder(menuItem.getItemId(), menuItem.getIcon())
+                    .setLabel(menuItem.getTitle() != null ? menuItem.getTitle().toString() : null)
+                    .setFabImageTintColor(ContextCompat.getColor(this, R.color.white))
+                    .create();
+            speedDialView.addActionItem(actionItem);
+        }
+    }
+
     public static boolean isValidJid(String input) {
         try {
             Jid jid = Jid.ofEscaped(input);

src/main/res/menu/start_conversation_fab_submenu.xml 🔗

@@ -2,22 +2,22 @@
 <menu xmlns:android="http://schemas.android.com/apk/res/android">
     <item
         android:id="@+id/discover_public_channels"
-        android:title="@string/discover_channels"
-        android:icon="@drawable/ic_search_white_24dp"/>
+        android:icon="@drawable/ic_search_white_24dp"
+        android:title="@string/discover_channels" />
     <item
         android:id="@+id/join_public_channel"
-        android:title="@string/join_public_channel"
-        android:icon="@drawable/ic_input_white_24dp"/>
+        android:icon="@drawable/ic_input_white_24dp"
+        android:title="@string/join_public_channel" />
     <item
         android:id="@+id/create_public_channel"
-        android:title="@string/create_public_channel"
-        android:icon="@drawable/ic_public_white_24dp"/>
+        android:icon="@drawable/ic_public_white_24dp"
+        android:title="@string/create_public_channel" />
     <item
         android:id="@+id/create_private_group_chat"
-        android:title="@string/create_private_group_chat"
-        android:icon="@drawable/ic_group_white_24dp"/>
+        android:icon="@drawable/ic_group_white_24dp"
+        android:title="@string/create_private_group_chat" />
     <item
         android:id="@+id/create_contact"
-        android:title="@string/add_contact"
-        android:icon="@drawable/ic_person_white_48dp"/>
+        android:icon="@drawable/ic_person_white_48dp"
+        android:title="@string/add_contact" />
 </menu>