Browse Source

Start working on #40

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic 7 years ago
parent
commit
f3ce80e8ce
56 changed files with 538 additions and 76 deletions
  1. 0 1
      app/build.gradle
  2. 2 2
      app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
  3. 4 0
      app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java
  4. 6 4
      app/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java
  5. 11 3
      app/src/main/java/com/nextcloud/talk/api/NcApi.java
  6. 5 1
      app/src/main/java/com/nextcloud/talk/api/helpers/api/ApiHelper.java
  7. 1 0
      app/src/main/java/com/nextcloud/talk/api/models/json/rooms/Room.java
  8. 21 2
      app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java
  9. 45 20
      app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java
  10. 234 0
      app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java
  11. 34 0
      app/src/main/java/com/nextcloud/talk/events/BottomSheetLockEvent.java
  12. 4 2
      app/src/main/java/com/nextcloud/talk/utils/bundle/BundleKeys.java
  13. 25 0
      app/src/main/res/drawable/ic_cancel_black_24dp.xml
  14. 25 0
      app/src/main/res/drawable/ic_check_circle_black_24dp.xml
  15. 0 0
      app/src/main/res/layout/controller_call_menu.xml
  16. 76 0
      app/src/main/res/layout/controller_operations_menu.xml
  17. 1 3
      app/src/main/res/layout/rv_item_call.xml
  18. 1 1
      app/src/main/res/layout/rv_item_menu.xml
  19. 1 1
      app/src/main/res/values-b+en+001/strings.xml
  20. 1 1
      app/src/main/res/values-b+es+419/strings.xml
  21. 1 1
      app/src/main/res/values-da/strings.xml
  22. 1 1
      app/src/main/res/values-de-rDE/strings.xml
  23. 1 1
      app/src/main/res/values-de/strings.xml
  24. 1 1
      app/src/main/res/values-es-rCL/strings.xml
  25. 1 1
      app/src/main/res/values-es-rCO/strings.xml
  26. 1 1
      app/src/main/res/values-es-rCR/strings.xml
  27. 1 1
      app/src/main/res/values-es-rDO/strings.xml
  28. 1 1
      app/src/main/res/values-es-rEC/strings.xml
  29. 1 1
      app/src/main/res/values-es-rGT/strings.xml
  30. 1 1
      app/src/main/res/values-es-rHN/strings.xml
  31. 1 1
      app/src/main/res/values-es-rMX/strings.xml
  32. 1 1
      app/src/main/res/values-es-rNI/strings.xml
  33. 1 1
      app/src/main/res/values-es-rPA/strings.xml
  34. 1 1
      app/src/main/res/values-es-rPE/strings.xml
  35. 1 1
      app/src/main/res/values-es-rPR/strings.xml
  36. 1 1
      app/src/main/res/values-es-rPY/strings.xml
  37. 1 1
      app/src/main/res/values-es-rSV/strings.xml
  38. 1 1
      app/src/main/res/values-es-rUY/strings.xml
  39. 1 1
      app/src/main/res/values-es/strings.xml
  40. 1 1
      app/src/main/res/values-fi-rFI/strings.xml
  41. 1 1
      app/src/main/res/values-fr/strings.xml
  42. 1 1
      app/src/main/res/values-hu-rHU/strings.xml
  43. 1 1
      app/src/main/res/values-it/strings.xml
  44. 1 1
      app/src/main/res/values-ka-rGE/strings.xml
  45. 1 1
      app/src/main/res/values-ko/strings.xml
  46. 1 1
      app/src/main/res/values-nb-rNO/strings.xml
  47. 1 1
      app/src/main/res/values-nl/strings.xml
  48. 1 1
      app/src/main/res/values-pt-rBR/strings.xml
  49. 1 1
      app/src/main/res/values-ru/strings.xml
  50. 1 1
      app/src/main/res/values-sq/strings.xml
  51. 1 1
      app/src/main/res/values-sr/strings.xml
  52. 1 1
      app/src/main/res/values-sv/strings.xml
  53. 1 1
      app/src/main/res/values-tr/strings.xml
  54. 1 1
      app/src/main/res/values-zh-rTW/strings.xml
  55. 1 0
      app/src/main/res/values/colors.xml
  56. 6 1
      app/src/main/res/values/strings.xml

+ 0 - 1
app/build.gradle

@@ -138,7 +138,6 @@ dependencies {
     implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.7'
 
     implementation 'com.github.Kennyc1012:BottomSheet:2.4.0'
-
     testImplementation 'junit:junit:4.12'
     androidTestImplementation ('com.android.support.test.espresso:espresso-core:3.0.1', {
         exclude group: 'com.android.support', module: 'support-annotations'

+ 2 - 2
app/src/main/java/com/nextcloud/talk/activities/CallActivity.java

@@ -774,7 +774,7 @@ public class CallActivity extends AppCompatActivity {
     }
 
     private void joinRoomAndCall() {
-        ncApi.joinRoom(credentials, ApiHelper.getUrlForRoom(userEntity.getBaseUrl(), roomToken))
+        ncApi.joinRoom(credentials, ApiHelper.getUrlForRoomParticipants(userEntity.getBaseUrl(), roomToken))
                 .subscribeOn(Schedulers.newThread())
                 .observeOn(AndroidSchedulers.mainThread())
                 .retry(3)
@@ -1093,7 +1093,7 @@ public class CallActivity extends AppCompatActivity {
 
                     @Override
                     public void onNext(GenericOverall genericOverall) {
-                        ncApi.leaveRoom(credentials, ApiHelper.getUrlForRoom(userEntity.getBaseUrl(), roomToken))
+                        ncApi.leaveRoom(credentials, ApiHelper.getUrlForRoomParticipants(userEntity.getBaseUrl(), roomToken))
                                 .subscribeOn(Schedulers.newThread())
                                 .observeOn(AndroidSchedulers.mainThread())
                                 .subscribe(new Observer<GenericOverall>() {

+ 4 - 0
app/src/main/java/com/nextcloud/talk/adapters/items/AdvancedUserItem.java

@@ -23,6 +23,7 @@ package com.nextcloud.talk.adapters.items;
 import android.accounts.Account;
 import android.support.annotation.Nullable;
 import android.view.View;
+import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
@@ -162,6 +163,8 @@ public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.User
         public ImageView avatarImageView;
         @BindView(R.id.linear_layout)
         LinearLayout linearLayout;
+        @BindView(R.id.more_menu)
+        ImageButton moreMenuButton;
 
         /**
          * Default constructor.
@@ -169,6 +172,7 @@ public class AdvancedUserItem extends AbstractFlexibleItem<AdvancedUserItem.User
         UserItemViewHolder(View view, FlexibleAdapter adapter) {
             super(view, adapter);
             ButterKnife.bind(this, view);
+            moreMenuButton.setVisibility(View.GONE);
         }
     }
 

+ 6 - 4
app/src/main/java/com/nextcloud/talk/adapters/items/MenuItem.java

@@ -40,22 +40,24 @@ import eu.davidea.viewholders.FlexibleViewHolder;
 
 public class MenuItem extends AbstractFlexibleItem<MenuItem.MenuItemViewHolder> {
     private String title;
+    private int tag;
 
-    public MenuItem(String title) {
+    public MenuItem(String title, int tag) {
         this.title = title;
+        this.tag = tag;
     }
 
     @Override
     public boolean equals(Object o) {
         if (o instanceof MenuItem) {
             MenuItem inItem = (MenuItem) o;
-            return title.equals(inItem.getModel());
+            return tag == inItem.tag;
         }
         return false;
     }
 
-    private String getModel() {
-        return title;
+    public int getTag() {
+        return tag;
     }
 
     @Override

+ 11 - 3
app/src/main/java/com/nextcloud/talk/api/NcApi.java

@@ -44,6 +44,7 @@ import retrofit2.http.GET;
 import retrofit2.http.Header;
 import retrofit2.http.POST;
 import retrofit2.http.PUT;
+import retrofit2.http.Query;
 import retrofit2.http.QueryMap;
 import retrofit2.http.Url;
 
@@ -115,19 +116,22 @@ public interface NcApi {
      */
 
     @DELETE
-    Observable<Void> removeSelfFromRoom(@Header("Authorization") String authorization, @Url String url);
+    Observable<GenericOverall> removeSelfFromRoom(@Header("Authorization") String authorization, @Url String url);
 
     /*
         Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/public
     */
     @POST
-    Observable<Void> makeRoomPublic(@Header("Authorization") String authorization, @Url String url);
+    Observable<GenericOverall> makeRoomPublic(@Header("Authorization") String authorization, @Url String url);
 
     /*
         Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken/public
     */
     @DELETE
-    Observable<Void> makeRoomPrivate(@Header("Authorization") String authorization, @Url String url);
+    Observable<GenericOverall> makeRoomPrivate(@Header("Authorization") String authorization, @Url String url);
+
+    @DELETE
+    Observable<GenericOverall> deleteRoom(@Header("Authorization") String authorization, @Url String url);
 
     /*
         Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /call/callToken
@@ -238,4 +242,8 @@ public interface NcApi {
                                                                @Url String url,
                                                                @QueryMap Map<String, String> fields);
 
+    @PUT
+    Observable<GenericOverall> setPassword(@Header("Authorization") String authorization, @Url String url,
+                                           @Query("password") String password);
+
 }

+ 5 - 1
app/src/main/java/com/nextcloud/talk/api/helpers/api/ApiHelper.java

@@ -57,7 +57,7 @@ public class ApiHelper {
         return retrofitBucket;
     }
 
-    public static String getUrlForRoom(String baseUrl, String token) {
+    public static String getUrlForRoomParticipants(String baseUrl, String token) {
         return getRoom(baseUrl, token) + "/participants/active";
     }
 
@@ -157,6 +157,10 @@ public class ApiHelper {
         return baseUrl + "/index.php/avatar/" + Uri.encode(name) + "/" + avatarSize;
     }
 
+    public static String getUrlForPassword(String baseUrl, String token) {
+        return baseUrl + ocsApiVersion + spreedApiVersion + "/room/" + token + "/password";
+    }
+
     public static String getCredentials(String username, String token) {
         return Credentials.basic(username, token);
     }

+ 1 - 0
app/src/main/java/com/nextcloud/talk/api/models/json/rooms/Room.java

@@ -62,6 +62,7 @@ public class Room {
     public boolean hasPassword;
     @JsonField(name = "sessionId")
     public String sessionId;
+    public String password;
 
     public boolean isPublic() {
         return (RoomType.ROOM_PUBLIC_CALL.equals(type));

+ 21 - 2
app/src/main/java/com/nextcloud/talk/controllers/CallsListController.java

@@ -58,9 +58,12 @@ import com.nextcloud.talk.api.helpers.api.ApiHelper;
 import com.nextcloud.talk.api.models.json.rooms.Room;
 import com.nextcloud.talk.application.NextcloudTalkApplication;
 import com.nextcloud.talk.controllers.base.BaseController;
+import com.nextcloud.talk.controllers.bottomsheet.CallMenuController;
+import com.nextcloud.talk.events.BottomSheetLockEvent;
 import com.nextcloud.talk.events.MoreMenuClickEvent;
 import com.nextcloud.talk.persistence.entities.UserEntity;
 import com.nextcloud.talk.utils.bundle.BundleBuilder;
+import com.nextcloud.talk.utils.bundle.BundleKeys;
 import com.nextcloud.talk.utils.database.user.UserUtils;
 
 import org.greenrobot.eventbus.EventBus;
@@ -369,16 +372,32 @@ public class CallsListController extends BaseController implements SearchView.On
         return onQueryTextChange(query);
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void onMessageEvent(BottomSheetLockEvent bottomSheetLockEvent) {
+        if (bottomSheet != null) {
+            if (!bottomSheetLockEvent.isCancel()) {
+                bottomSheet.setCancelable(bottomSheetLockEvent.isCancel());
+            } else {
+                new Handler().postDelayed(() -> {
+                    bottomSheet.setCancelable(true);
+                    if (bottomSheet.isShowing()) {
+                        bottomSheet.cancel();
+                    }
+                }, bottomSheetLockEvent.getDelay());
+            }
+        }
+    }
+
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void onMessageEvent(MoreMenuClickEvent moreMenuClickEvent) {
         BundleBuilder bundleBuilder = new BundleBuilder(new Bundle());
         Room room = moreMenuClickEvent.getRoom();
-        bundleBuilder.putParcelable("room", Parcels.wrap(room));
+        bundleBuilder.putParcelable(BundleKeys.KEY_ROOM, Parcels.wrap(room));
 
         View view = getActivity().getLayoutInflater().inflate(R.layout.bottom_sheet, null, false);
 
         getChildRouter((ViewGroup) view).setRoot(
-                RouterTransaction.with(new RoomMenuController(bundleBuilder.build()))
+                RouterTransaction.with(new CallMenuController(bundleBuilder.build()))
                         .popChangeHandler(new HorizontalChangeHandler())
                         .pushChangeHandler(new HorizontalChangeHandler()));
 

+ 45 - 20
app/src/main/java/com/nextcloud/talk/controllers/RoomMenuController.java → app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/CallMenuController.java

@@ -18,7 +18,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-package com.nextcloud.talk.controllers;
+package com.nextcloud.talk.controllers.bottomsheet;
 
 import android.os.Bundle;
 import android.support.annotation.NonNull;
@@ -29,17 +29,23 @@ import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
+import com.bluelinelabs.conductor.RouterTransaction;
 import com.nextcloud.talk.R;
 import com.nextcloud.talk.adapters.items.MenuItem;
 import com.nextcloud.talk.api.models.json.rooms.Room;
 import com.nextcloud.talk.application.NextcloudTalkApplication;
 import com.nextcloud.talk.controllers.base.BaseController;
+import com.nextcloud.talk.events.BottomSheetLockEvent;
+import com.nextcloud.talk.utils.bundle.BundleKeys;
 
+import org.greenrobot.eventbus.EventBus;
 import org.parceler.Parcels;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import javax.inject.Inject;
+
 import autodagger.AutoInjector;
 import butterknife.BindView;
 import eu.davidea.flexibleadapter.FlexibleAdapter;
@@ -47,21 +53,25 @@ import eu.davidea.flexibleadapter.common.SmoothScrollLinearLayoutManager;
 import eu.davidea.flexibleadapter.items.AbstractFlexibleItem;
 
 @AutoInjector(NextcloudTalkApplication.class)
-public class RoomMenuController extends BaseController implements FlexibleAdapter.OnItemClickListener {
+public class CallMenuController extends BaseController implements FlexibleAdapter.OnItemClickListener {
     @BindView(R.id.recycler_view)
     RecyclerView recyclerView;
+
+    @Inject
+    EventBus eventBus;
+
     private Room room;
     private List<AbstractFlexibleItem> menuItems;
     private FlexibleAdapter<AbstractFlexibleItem> adapter;
 
-    public RoomMenuController(Bundle args) {
+    public CallMenuController(Bundle args) {
         super(args);
-        this.room = Parcels.unwrap(args.getParcelable("room"));
+        this.room = Parcels.unwrap(args.getParcelable(BundleKeys.KEY_ROOM));
     }
 
     @Override
     protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) {
-        return inflater.inflate(R.layout.controller_room_menu, container, false);
+        return inflater.inflate(R.layout.controller_call_menu, container, false);
     }
 
     @Override
@@ -93,37 +103,52 @@ public class RoomMenuController extends BaseController implements FlexibleAdapte
     private void prepareMenu() {
         menuItems = new ArrayList<>();
 
-        menuItems.add(new MenuItem(getResources().getString(R.string.nc_what)));
+        menuItems.add(new MenuItem(getResources().getString(R.string.nc_what), 0));
 
-        menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave)));
+        menuItems.add(new MenuItem(getResources().getString(R.string.nc_leave), 1));
 
         if (room.isNameEditable()) {
-            menuItems.add(new MenuItem(getResources().getString(R.string.nc_rename)));
+            menuItems.add(new MenuItem(getResources().getString(R.string.nc_rename), 2));
         }
 
-        if (!room.isPublic()) {
-            menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_public)));
-        } else {
-            if (room.isHasPassword()) {
-                menuItems.add(new MenuItem(getResources().getString(R.string.nc_change_password)));
+        if (room.canModerate()) {
+            if (!room.isPublic()) {
+                menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_public), 3));
             } else {
-                menuItems.add(new MenuItem(getResources().getString(R.string.nc_set_password)));
+                if (room.isHasPassword()) {
+                    menuItems.add(new MenuItem(getResources().getString(R.string.nc_change_password), 4));
+                } else {
+                    menuItems.add(new MenuItem(getResources().getString(R.string.nc_set_password), 5));
+                }
             }
+        }
 
-            menuItems.add(new MenuItem(getResources().getString(R.string.nc_share_link)));
-            menuItems.add(new MenuItem(getResources().getString(R.string.nc_stop_sharing)));
-
+        if (room.isPublic()) {
+            menuItems.add(new MenuItem(getResources().getString(R.string.nc_share_link), 6));
+            if (room.canModerate()) {
+                menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_private), 7));
+            }
         }
 
         if (room.isDeletable()) {
-            menuItems.add(new MenuItem(getResources().getString(R.string.nc_delete_call)));
+            menuItems.add(new MenuItem(getResources().getString(R.string.nc_delete_call), 8));
         }
     }
 
     @Override
     public boolean onItemClick(int position) {
-        if (menuItems.size() > position && position != 0) {
-            MenuItem menuItem = (MenuItem) menuItems.get(position);
+        MenuItem menuItem = (MenuItem) adapter.getItem(position);
+        Bundle bundle = new Bundle();
+        bundle.putParcelable(BundleKeys.KEY_ROOM, Parcels.wrap(room));
+        if (menuItem != null) {
+            int tag = menuItem.getTag();
+            if (tag > 0 && tag < 9) {
+                eventBus.post(new BottomSheetLockEvent(false, 0));
+                bundle.putInt(BundleKeys.KEY_OPERATION_CODE, tag);
+                if (tag != 6 && tag != 2) {
+                    getRouter().pushController(RouterTransaction.with(new OperationsMenuController(bundle)));
+                }
+            }
         }
 
         return true;

+ 234 - 0
app/src/main/java/com/nextcloud/talk/controllers/bottomsheet/OperationsMenuController.java

@@ -0,0 +1,234 @@
+/*
+ * Nextcloud Talk application
+ *
+ * @author Mario Danic
+ * Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.nextcloud.talk.controllers.bottomsheet;
+
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+
+import com.nextcloud.talk.R;
+import com.nextcloud.talk.api.NcApi;
+import com.nextcloud.talk.api.helpers.api.ApiHelper;
+import com.nextcloud.talk.api.models.json.rooms.Room;
+import com.nextcloud.talk.application.NextcloudTalkApplication;
+import com.nextcloud.talk.controllers.base.BaseController;
+import com.nextcloud.talk.events.BottomSheetLockEvent;
+import com.nextcloud.talk.models.RetrofitBucket;
+import com.nextcloud.talk.persistence.entities.UserEntity;
+import com.nextcloud.talk.utils.ColorUtils;
+import com.nextcloud.talk.utils.bundle.BundleKeys;
+import com.nextcloud.talk.utils.database.user.UserUtils;
+
+import org.greenrobot.eventbus.EventBus;
+import org.parceler.Parcels;
+
+import javax.inject.Inject;
+
+import autodagger.AutoInjector;
+import butterknife.BindView;
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+
+@AutoInjector(NextcloudTalkApplication.class)
+public class OperationsMenuController extends BaseController {
+    @BindView(R.id.progress_bar)
+    ProgressBar progressBar;
+
+    @BindView(R.id.result_image_view)
+    ImageView resultImageView;
+
+    @BindView(R.id.result_text_view)
+    TextView resultsTextView;
+
+    @BindView(R.id.ok_button)
+    Button okButton;
+
+    @Inject
+    NcApi ncApi;
+
+    @Inject
+    UserUtils userUtils;
+
+    @Inject
+    EventBus eventBus;
+
+    private int operationCode;
+    private Room room;
+
+    private Disposable disposable;
+
+    private int retryCount = 0;
+
+    public OperationsMenuController(Bundle args) {
+        super(args);
+        this.operationCode = args.getInt(BundleKeys.KEY_OPERATION_CODE);
+        this.room = Parcels.unwrap(args.getParcelable(BundleKeys.KEY_ROOM));
+    }
+
+    @Override
+    protected View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) {
+        return inflater.inflate(R.layout.controller_operations_menu, container, false);
+    }
+
+    @Override
+    protected void onViewBound(@NonNull View view) {
+        super.onViewBound(view);
+        NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this);
+
+        processOperation();
+    }
+
+    private void processOperation() {
+        UserEntity userEntity = userUtils.getCurrentUser();
+        OperationsObserver operationsObserver = new OperationsObserver();
+        if (userEntity != null) {
+            String credentials = ApiHelper.getCredentials(userEntity.getUsername(), userEntity.getToken());
+            switch (operationCode) {
+                case 1:
+                    ncApi.removeSelfFromRoom(credentials, ApiHelper.getUrlForRemoveSelfFromRoom(userEntity.getBaseUrl
+                            (), room.getToken()))
+                            .subscribeOn(Schedulers.newThread())
+                            .observeOn(AndroidSchedulers.mainThread())
+                            .retry(1)
+                            .subscribe(operationsObserver);
+                    break;
+                case 2:
+                    RetrofitBucket retrofitBucket = ApiHelper.getRetrofitBucketForRenameRoom(userEntity.getBaseUrl(),
+                            room.getToken(), room.getName());
+                    ncApi.renameRoom(credentials, retrofitBucket.getUrl(), retrofitBucket.getQueryMap())
+                            .subscribeOn(Schedulers.newThread())
+                            .observeOn(AndroidSchedulers.mainThread())
+                            .retry(1)
+                            .subscribe(operationsObserver);
+                    break;
+                case 3:
+                    ncApi.makeRoomPublic(credentials, ApiHelper.getUrlForRoomVisibility(userEntity.getBaseUrl(), room
+                            .getToken()))
+                            .subscribeOn(Schedulers.newThread())
+                            .observeOn(AndroidSchedulers.mainThread())
+                            .retry(1)
+                            .subscribe(operationsObserver);
+                    break;
+                case 4:
+                case 5:
+                    String pass = "";
+                    if (room.getPassword() != null) {
+                        pass = room.getPassword();
+                    }
+                    ncApi.setPassword(credentials, ApiHelper.getUrlForPassword(userEntity.getBaseUrl(),
+                            room.getToken()), pass)
+                            .subscribeOn(Schedulers.newThread())
+                            .observeOn(AndroidSchedulers.mainThread())
+                            .retry(1)
+                            .subscribe(operationsObserver);
+                    break;
+                case 6:
+                    // Operation 6 is sharing, so we handle this differently
+                    break;
+                case 7:
+                    ncApi.makeRoomPrivate(credentials, ApiHelper.getUrlForRoomVisibility(userEntity.getBaseUrl(), room
+                            .getToken()))
+                            .subscribeOn(Schedulers.newThread())
+                            .observeOn(AndroidSchedulers.mainThread())
+                            .retry(1)
+                            .subscribe(operationsObserver);
+                    break;
+                case 8:
+                    ncApi.deleteRoom(credentials, ApiHelper.getUrlForRoomParticipants(userEntity.getBaseUrl(), room.getToken()))
+                            .subscribeOn(Schedulers.newThread())
+                            .observeOn(AndroidSchedulers.mainThread())
+                            .retry(1)
+                            .subscribe(operationsObserver);
+                    break;
+                default:
+                    break;
+            }
+        }
+    }
+
+    private void showResultImage(boolean everythingOK) {
+        progressBar.setVisibility(View.GONE);
+        resultImageView.setVisibility(View.VISIBLE);
+
+        if (everythingOK) {
+            resultsTextView.setText(R.string.nc_all_ok_operation);
+        } else {
+            resultsTextView.setText(R.string.nc_failed_to_perform_operation);
+        }
+
+        resultsTextView.setVisibility(View.VISIBLE);
+        if (everythingOK) {
+            eventBus.post(new BottomSheetLockEvent(true, 2500));
+        } else {
+            okButton.setOnClickListener(v -> eventBus.post(new BottomSheetLockEvent(true, 0)));
+            okButton.setVisibility(View.VISIBLE);
+        }
+    }
+
+    private void dispose() {
+        if (disposable != null && !disposable.isDisposed()) {
+            disposable.dispose();
+        }
+
+        disposable = null;
+    }
+
+    private class OperationsObserver implements Observer {
+
+        @Override
+        public void onSubscribe(Disposable d) {
+            disposable = d;
+            retryCount++;
+        }
+
+        @Override
+        public void onNext(Object o) {
+            resultImageView.setImageDrawable(ColorUtils.getTintedDrawable(getResources(), R.drawable
+                    .ic_check_circle_black_24dp, R.color.nc_darkGreen));
+            showResultImage(true);
+        }
+
+        @Override
+        public void onError(Throwable e) {
+            if (retryCount == 1) {
+                resultImageView.setImageDrawable(ColorUtils.getTintedDrawable(getResources(), R.drawable
+                        .ic_cancel_black_24dp, R.color.nc_darkRed));
+                showResultImage(false);
+            }
+            dispose();
+        }
+
+        @Override
+        public void onComplete() {
+            dispose();
+        }
+    }
+
+
+}

+ 34 - 0
app/src/main/java/com/nextcloud/talk/events/BottomSheetLockEvent.java

@@ -0,0 +1,34 @@
+/*
+ * Nextcloud Talk application
+ *
+ * @author Mario Danic
+ * Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+package com.nextcloud.talk.events;
+
+import lombok.Data;
+
+@Data
+public class BottomSheetLockEvent {
+    private final boolean cancel;
+    private final int delay;
+
+    public BottomSheetLockEvent(boolean cancel, int delay) {
+        this.cancel = cancel;
+        this.delay = delay;
+    }
+}

+ 4 - 2
app/src/main/java/com/nextcloud/talk/utils/bundle/BundleKeys.java

@@ -24,6 +24,8 @@ public class BundleKeys {
     public static final String KEY_USERNAME = "KEY_USERNAME";
     public static final String KEY_TOKEN = "KEY_TOKEN";
     public static final String KEY_BASE_URL = "KEY_BASE_URL";
-    public static final String KEY_IS_ACCOUNT_IMPORT = "IS_ACCOUNT_IMPORT";
-    public static final String KEY_ORIGINAL_PROTOCOL = "ORIGINAL_PROTOCOL";
+    public static final String KEY_IS_ACCOUNT_IMPORT = "KEY_IS_ACCOUNT_IMPORT";
+    public static final String KEY_ORIGINAL_PROTOCOL = "KEY_ORIGINAL_PROTOCOL";
+    public static final String KEY_ROOM = "KEY_ROOM";
+    public static final String KEY_OPERATION_CODE = "KEY_OPERATION_CODE";
 }

+ 25 - 0
app/src/main/res/drawable/ic_cancel_black_24dp.xml

@@ -0,0 +1,25 @@
+<!--
+  ~ Nextcloud Talk application
+  ~
+  ~ @author Mario Danic
+  ~ Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<vector android:autoMirrored="true" android:height="24dp"
+    android:viewportHeight="24.0" android:viewportWidth="24.0"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#FF000000" android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z"/>
+</vector>

+ 25 - 0
app/src/main/res/drawable/ic_check_circle_black_24dp.xml

@@ -0,0 +1,25 @@
+<!--
+  ~ Nextcloud Talk application
+  ~
+  ~ @author Mario Danic
+  ~ Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<vector android:autoMirrored="true" android:height="24dp"
+    android:viewportHeight="24.0" android:viewportWidth="24.0"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="#FF000000" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/>
+</vector>

+ 0 - 0
app/src/main/res/layout/controller_room_menu.xml → app/src/main/res/layout/controller_call_menu.xml


+ 76 - 0
app/src/main/res/layout/controller_operations_menu.xml

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Nextcloud Talk application
+  ~
+  ~ @author Mario Danic
+  ~ Copyright (C) 2017 Mario Danic <mario@lovelyhq.com>
+  ~
+  ~ This program is free software: you can redistribute it and/or modify
+  ~ it under the terms of the GNU General Public License as published by
+  ~ the Free Software Foundation, either version 3 of the License, or
+  ~ at your option) any later version.
+  ~
+  ~ This program is distributed in the hope that it will be useful,
+  ~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+  ~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  ~ GNU General Public License for more details.
+  ~
+  ~ You should have received a copy of the GNU General Public License
+  ~ along with this program.  If not, see <http://www.gnu.org/licenses/>.
+  -->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:background="@color/nc_white_color">
+
+    <ProgressBar
+        android:id="@+id/progress_bar"
+        android:layout_width="48dp"
+        android:layout_height="48dp"
+        android:layout_centerHorizontal="true"
+        android:layout_marginTop="24dp"
+        android:indeterminate="true"
+        android:indeterminateTint="@color/colorPrimary"
+        android:indeterminateTintMode="src_in"
+        android:keepScreenOn="true"/>
+
+    <ImageView
+        android:id="@+id/result_image_view"
+        android:layout_width="48dp"
+        android:layout_height="48dp"
+        android:layout_centerHorizontal="true"
+        android:layout_marginBottom="12dp"
+        android:layout_marginEnd="24dp"
+        android:layout_marginStart="24dp"
+        android:layout_marginTop="24dp"
+        android:tintMode="src_in"
+        android:visibility="gone"/>
+
+    <TextView
+        android:id="@+id/result_text_view"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/result_image_view"
+        android:layout_centerHorizontal="true"
+        android:layout_marginEnd="24dp"
+        android:layout_marginStart="24dp"
+        android:maxLines="2"
+        android:textAlignment="center"
+        android:textColor="@color/colorPrimary"
+        android:visibility="gone"/>
+
+    <Button
+        android:id="@+id/ok_button"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentEnd="true"
+        android:layout_below="@id/result_text_view"
+        android:layout_marginBottom="12dp"
+        android:layout_marginEnd="8dp"
+        android:layout_marginTop="8dp"
+        android:background="#0000"
+        android:text="@string/nc_ok"
+        android:textColor="@color/colorPrimary"
+        android:visibility="gone"/>
+</RelativeLayout>

+ 1 - 3
app/src/main/res/layout/rv_item_call.xml

@@ -22,7 +22,6 @@
   -->
 
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
-                xmlns:app="http://schemas.android.com/apk/res-auto"
                 xmlns:tools="http://schemas.android.com/tools"
                 android:layout_width="match_parent"
                 android:layout_height="@dimen/item_height">
@@ -71,7 +70,6 @@
         android:layout_centerVertical="true"
         android:layout_marginEnd="@dimen/activity_horizontal_margin"
         android:layout_marginStart="@dimen/margin_between_elements"
-        android:background="@drawable/ic_more_horiz_black_24dp"
-        android:visibility="invisible"/>
+        android:background="@drawable/ic_more_horiz_black_24dp"/>
 
 </RelativeLayout>

+ 1 - 1
app/src/main/res/layout/rv_item_menu.xml

@@ -28,7 +28,7 @@
         android:id="@+id/menu_text"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_margin="@dimen/margin_between_elements"
+        android:layout_margin="16dp"
         android:textSize="12sp"/>
 
 </RelativeLayout>

+ 1 - 1
app/src/main/res/values-b+en+001/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Change the password</string>
     <string name="nc_share_link">Share link</string>
     <string name="nc_make_call_public">Make call public</string>
-    <string name="nc_stop_sharing">Stop sharing the call</string>
+    <string name="nc_make_call_private">Stop sharing the call</string>
     <string name="nc_delete_call">Delete call</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-b+es+419/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-da/strings.xml

@@ -55,7 +55,7 @@
     <string name="nc_change_password">Skift kodeord</string>
     <string name="nc_share_link">Del link</string>
     <string name="nc_make_call_public">Lav et offentligt opkald</string>
-    <string name="nc_stop_sharing">Stop deling af opkald</string>
+    <string name="nc_make_call_private">Stop deling af opkald</string>
     <string name="nc_delete_call">Slet opkald</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-de-rDE/strings.xml

@@ -75,7 +75,7 @@
     <string name="nc_change_password">Passwort ändern</string>
     <string name="nc_share_link">Link teilen</string>
     <string name="nc_make_call_public">Anruf öffentlich machen</string>
-    <string name="nc_stop_sharing">Teilen des Anrufs beenden</string>
+    <string name="nc_make_call_private">Teilen des Anrufs beenden</string>
     <string name="nc_delete_call">Anruf löschen</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-de/strings.xml

@@ -75,7 +75,7 @@
     <string name="nc_change_password">Passwort ändern</string>
     <string name="nc_share_link">Link teilen</string>
     <string name="nc_make_call_public">Anruf öffentlich machen</string>
-    <string name="nc_stop_sharing">Teilen des Anrufs beenden</string>
+    <string name="nc_make_call_private">Teilen des Anrufs beenden</string>
     <string name="nc_delete_call">Anruf löschen</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rCL/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rCO/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rCR/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rDO/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rEC/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rGT/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rHN/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rMX/strings.xml

@@ -75,7 +75,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rNI/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rPA/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rPE/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rPR/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rPY/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rSV/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es-rUY/strings.xml

@@ -65,7 +65,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir liga</string>
     <string name="nc_make_call_public">Generar una llamada pública</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Borrar la llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-es/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Cambiar la contraseña</string>
     <string name="nc_share_link">Compartir enlace</string>
     <string name="nc_make_call_public">Hacer pública la llamada</string>
-    <string name="nc_stop_sharing">Dejar de compartir la llamada</string>
+    <string name="nc_make_call_private">Dejar de compartir la llamada</string>
     <string name="nc_delete_call">Eliminar llamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-fi-rFI/strings.xml

@@ -48,7 +48,7 @@
     <string name="nc_change_password">Vaihda salasana</string>
     <string name="nc_share_link">Jaa linkki</string>
     <string name="nc_make_call_public">Tee puhelusta julkinen</string>
-    <string name="nc_stop_sharing">Lopeta puhelun jakaminen</string>
+    <string name="nc_make_call_private">Lopeta puhelun jakaminen</string>
     <string name="nc_delete_call">Poista puhelu</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-fr/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Changer le mot de passe</string>
     <string name="nc_share_link">Partager par lien public</string>
     <string name="nc_make_call_public">Effectuer un appel public</string>
-    <string name="nc_stop_sharing">Arrêter de partager l‘appel</string>
+    <string name="nc_make_call_private">Arrêter de partager l‘appel</string>
     <string name="nc_delete_call">Supprimer l’appel</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-hu-rHU/strings.xml

@@ -77,7 +77,7 @@
     <string name="nc_change_password">A jelszó módosítása</string>
     <string name="nc_share_link">Megosztás hivatkozása</string>
     <string name="nc_make_call_public">Hívás nyilvánossá tétele</string>
-    <string name="nc_stop_sharing">Hívás megosztásának befejezése</string>
+    <string name="nc_make_call_private">Hívás megosztásának befejezése</string>
     <string name="nc_delete_call">Hívás törlése</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-it/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Cambia la password</string>
     <string name="nc_share_link">Condividi collegamento</string>
     <string name="nc_make_call_public">Rendi pubblica la chiamata</string>
-    <string name="nc_stop_sharing">Interrompi la condivisione della chiamata</string>
+    <string name="nc_make_call_private">Interrompi la condivisione della chiamata</string>
     <string name="nc_delete_call">Elimina chiamata</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-ka-rGE/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">პაროლის ცვლილება</string>
     <string name="nc_share_link">ბმულის გაზიარება</string>
     <string name="nc_make_call_public">ღია ზარის წამოწყება</string>
-    <string name="nc_stop_sharing">ზარის გაზიარების შეწყვეტა</string>
+    <string name="nc_make_call_private">ზარის გაზიარების შეწყვეტა</string>
     <string name="nc_delete_call">ზარის გაუქმება</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-ko/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">암호 변경</string>
     <string name="nc_share_link">링크 공유</string>
     <string name="nc_make_call_public">공개 통화로 전환</string>
-    <string name="nc_stop_sharing">통화 공유 중지</string>
+    <string name="nc_make_call_private">통화 공유 중지</string>
     <string name="nc_delete_call">통화 삭제</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-nb-rNO/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Endre passord</string>
     <string name="nc_share_link">Del lenke</string>
     <string name="nc_make_call_public">Gjør samtalen offentlig</string>
-    <string name="nc_stop_sharing">Avslutt deling av samtale</string>
+    <string name="nc_make_call_private">Avslutt deling av samtale</string>
     <string name="nc_delete_call">Slett samtale</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-nl/strings.xml

@@ -77,7 +77,7 @@ Kies er eentje van een provider.</string>
     <string name="nc_change_password">Wijzig wachtwoord</string>
     <string name="nc_share_link">Deel link</string>
     <string name="nc_make_call_public">Maak gesprek openbaar</string>
-    <string name="nc_stop_sharing">Stop delen van het gesprek</string>
+    <string name="nc_make_call_private">Stop delen van het gesprek</string>
     <string name="nc_delete_call">Verwijder gesprek</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-pt-rBR/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Mudar a senha</string>
     <string name="nc_share_link">Compartilhar um link</string>
     <string name="nc_make_call_public">Fazer uma chamada pública</string>
-    <string name="nc_stop_sharing">Parar de compartilhar a chamada</string>
+    <string name="nc_make_call_private">Parar de compartilhar a chamada</string>
     <string name="nc_delete_call">Excluir a chamada</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-ru/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Сменить пароль</string>
     <string name="nc_share_link">Поделиться ссылкой</string>
     <string name="nc_make_call_public">Сделать звонок общедоступным</string>
-    <string name="nc_stop_sharing">Закрыть общий доступ к звонку</string>
+    <string name="nc_make_call_private">Закрыть общий доступ к звонку</string>
     <string name="nc_delete_call">Удалить звонок</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-sq/strings.xml

@@ -68,7 +68,7 @@
     <string name="nc_change_password">Ndrysho fjalëkalimin</string>
     <string name="nc_share_link">Ndaj linkun</string>
     <string name="nc_make_call_public">Bëje thirrjen publike</string>
-    <string name="nc_stop_sharing">Ndalo së ndari thirrjen</string>
+    <string name="nc_make_call_private">Ndalo së ndari thirrjen</string>
     <string name="nc_delete_call">Fshi thirrjen</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-sr/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Измени лозинку</string>
     <string name="nc_share_link">Подели везу</string>
     <string name="nc_make_call_public">Учини разговор јавним</string>
-    <string name="nc_stop_sharing">Заустави дељење разговора</string>
+    <string name="nc_make_call_private">Заустави дељење разговора</string>
     <string name="nc_delete_call">Обриши позив</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-sv/strings.xml

@@ -63,7 +63,7 @@
     <string name="nc_change_password">Byt lösenordet</string>
     <string name="nc_share_link">Dela länk</string>
     <string name="nc_make_call_public">Gör samtal offentligt</string>
-    <string name="nc_stop_sharing">Stoppa delning av samtalet</string>
+    <string name="nc_make_call_private">Stoppa delning av samtalet</string>
     <string name="nc_delete_call">Radera samtal</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-tr/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Parolayı değiştir</string>
     <string name="nc_share_link">Bağlantıyı paylaş</string>
     <string name="nc_make_call_public">Çağrıyı herkese aç</string>
-    <string name="nc_stop_sharing">Çağrıyı paylaşmayı durdur</string>
+    <string name="nc_make_call_private">Çağrıyı paylaşmayı durdur</string>
     <string name="nc_delete_call">Çağrıyı sil</string>
 
     <!-- Contacts -->

+ 1 - 1
app/src/main/res/values-zh-rTW/strings.xml

@@ -69,7 +69,7 @@
     <string name="nc_change_password">更改密碼</string>
     <string name="nc_share_link">分享連結</string>
     <string name="nc_make_call_public">公開通話</string>
-    <string name="nc_stop_sharing">停止分享通話</string>
+    <string name="nc_make_call_private">停止分享通話</string>
     <string name="nc_delete_call">刪除通話</string>
 
     <!-- Contacts -->

+ 1 - 0
app/src/main/res/values/colors.xml

@@ -5,6 +5,7 @@
     <color name="colorAccent">#007CC2</color>
 
     <color name="nc_darkRed">#D32F2F</color>
+    <color name="nc_darkGreen">#006400</color>
     <color name="nc_white_color">@color/per70white</color>
     <color name="nc_white_color_complete">#FFFFFF</color>
     <color name="nc_light_blue_color">#7FC0E3</color>

+ 6 - 1
app/src/main/res/values/strings.xml

@@ -76,7 +76,7 @@
     <string name="nc_change_password">Change the password</string>
     <string name="nc_share_link">Share link</string>
     <string name="nc_make_call_public">Make call public</string>
-    <string name="nc_stop_sharing">Stop sharing the call</string>
+    <string name="nc_make_call_private">Make call private</string>
     <string name="nc_delete_call">Delete call</string>
 
     <!-- Contacts -->
@@ -101,4 +101,9 @@
     <string name="nc_notification_channel_calls_description">Shows incoming calls</string>
     <string name="nc_notification_channel_messages_description">Shows incoming messages</string>
 
+    <!-- Bottom sheet menu -->
+    <string name="nc_failed_to_perform_operation">Sorry, something went wrong!</string>
+    <string name="nc_all_ok_operation">OK, all done!</string>
+    <string name="nc_ok">OK</string>
+
 </resources>