mirror of
https://github.com/nextcloud/talk-android
synced 2025-06-21 04:29:45 +01:00
parent
b4fa5014bd
commit
e461a0c28a
@ -44,7 +44,6 @@ import retrofit2.http.GET;
|
|||||||
import retrofit2.http.Header;
|
import retrofit2.http.Header;
|
||||||
import retrofit2.http.POST;
|
import retrofit2.http.POST;
|
||||||
import retrofit2.http.PUT;
|
import retrofit2.http.PUT;
|
||||||
import retrofit2.http.Query;
|
|
||||||
import retrofit2.http.QueryMap;
|
import retrofit2.http.QueryMap;
|
||||||
import retrofit2.http.Url;
|
import retrofit2.http.Url;
|
||||||
|
|
||||||
@ -95,9 +94,10 @@ public interface NcApi {
|
|||||||
Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken
|
Server URL is: baseUrl + ocsApiVersion + spreedApiVersion + /room/roomToken
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@FormUrlEncoded
|
||||||
@PUT
|
@PUT
|
||||||
Observable<Void> renameRoom(@Header("Authorization") String authorization, @Url String url,
|
Observable<GenericOverall> renameRoom(@Header("Authorization") String authorization, @Url String url,
|
||||||
@QueryMap Map<String, String> options);
|
@Field("roomName") String roomName);
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -242,8 +242,9 @@ public interface NcApi {
|
|||||||
@Url String url,
|
@Url String url,
|
||||||
@QueryMap Map<String, String> fields);
|
@QueryMap Map<String, String> fields);
|
||||||
|
|
||||||
|
@FormUrlEncoded
|
||||||
@PUT
|
@PUT
|
||||||
Observable<GenericOverall> setPassword(@Header("Authorization") String authorization, @Url String url,
|
Observable<GenericOverall> setPassword(@Header("Authorization") String authorization, @Url String url,
|
||||||
@Query("password") String password);
|
@Field("password") String password);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -82,19 +82,6 @@ public class ApiHelper {
|
|||||||
return retrofitBucket;
|
return retrofitBucket;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static RetrofitBucket getRetrofitBucketForRenameRoom(String baseUrl, String token, String newRoomName) {
|
|
||||||
RetrofitBucket retrofitBucket = new RetrofitBucket();
|
|
||||||
retrofitBucket.setUrl(baseUrl + ocsApiVersion + spreedApiVersion + "/room/" + token);
|
|
||||||
|
|
||||||
Map<String, String> queryMap = new HashMap<>();
|
|
||||||
|
|
||||||
queryMap.put("roomName", newRoomName);
|
|
||||||
|
|
||||||
retrofitBucket.setQueryMap(queryMap);
|
|
||||||
|
|
||||||
return retrofitBucket;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static RetrofitBucket getRetrofitBucketForAddParticipant(String baseUrl, String token, String user) {
|
public static RetrofitBucket getRetrofitBucketForAddParticipant(String baseUrl, String token, String user) {
|
||||||
RetrofitBucket retrofitBucket = new RetrofitBucket();
|
RetrofitBucket retrofitBucket = new RetrofitBucket();
|
||||||
retrofitBucket.setUrl(baseUrl + ocsApiVersion + spreedApiVersion + "/room/" + token + "/participants");
|
retrofitBucket.setUrl(baseUrl + ocsApiVersion + spreedApiVersion + "/room/" + token + "/participants");
|
||||||
|
@ -297,12 +297,16 @@ public class CallsListController extends BaseController implements SearchView.On
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (fromBottomSheet) {
|
if (fromBottomSheet) {
|
||||||
bottomSheet.setCancelable(true);
|
new Handler().postDelayed(() -> {
|
||||||
if (bottomSheet.isShowing()) {
|
bottomSheet.setCancelable(true);
|
||||||
bottomSheet.cancel();
|
if (bottomSheet.isShowing()) {
|
||||||
}
|
bottomSheet.cancel();
|
||||||
|
}
|
||||||
|
}, 2500);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void prepareViews() {
|
private void prepareViews() {
|
||||||
|
@ -117,21 +117,22 @@ public class CallMenuController extends BaseController implements FlexibleAdapte
|
|||||||
} else {
|
} else {
|
||||||
if (room.isHasPassword()) {
|
if (room.isHasPassword()) {
|
||||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_change_password), 4));
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_change_password), 4));
|
||||||
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_clear_password), 5));
|
||||||
} else {
|
} else {
|
||||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_set_password), 5));
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_set_password), 6));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (room.isPublic()) {
|
if (room.isPublic()) {
|
||||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_share_link), 6));
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_share_link), 7));
|
||||||
if (room.canModerate()) {
|
if (room.canModerate()) {
|
||||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_private), 7));
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_make_call_private), 8));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (room.isDeletable()) {
|
if (room.isDeletable()) {
|
||||||
menuItems.add(new MenuItem(getResources().getString(R.string.nc_delete_call), 8));
|
menuItems.add(new MenuItem(getResources().getString(R.string.nc_delete_call), 9));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,14 +140,23 @@ public class CallMenuController extends BaseController implements FlexibleAdapte
|
|||||||
public boolean onItemClick(int position) {
|
public boolean onItemClick(int position) {
|
||||||
MenuItem menuItem = (MenuItem) adapter.getItem(position);
|
MenuItem menuItem = (MenuItem) adapter.getItem(position);
|
||||||
Bundle bundle = new Bundle();
|
Bundle bundle = new Bundle();
|
||||||
bundle.putParcelable(BundleKeys.KEY_ROOM, Parcels.wrap(room));
|
|
||||||
if (menuItem != null) {
|
if (menuItem != null) {
|
||||||
int tag = menuItem.getTag();
|
int tag = menuItem.getTag();
|
||||||
if (tag > 0 && tag < 9) {
|
|
||||||
eventBus.post(new BottomSheetLockEvent(false, 0, false));
|
if (tag == 5) {
|
||||||
|
room.setPassword("");
|
||||||
|
}
|
||||||
|
bundle.putParcelable(BundleKeys.KEY_ROOM, Parcels.wrap(room));
|
||||||
|
|
||||||
|
if (tag > 0 && tag < 10) {
|
||||||
bundle.putInt(BundleKeys.KEY_OPERATION_CODE, tag);
|
bundle.putInt(BundleKeys.KEY_OPERATION_CODE, tag);
|
||||||
if (tag != 6 && tag != 2) {
|
if (tag != 2 && tag != 4 && tag != 6 && tag != 7) {
|
||||||
|
eventBus.post(new BottomSheetLockEvent(false, 0, false));
|
||||||
getRouter().pushController(RouterTransaction.with(new OperationsMenuController(bundle)));
|
getRouter().pushController(RouterTransaction.with(new OperationsMenuController(bundle)));
|
||||||
|
} else if (tag != 7) {
|
||||||
|
getRouter().pushController(RouterTransaction.with(new EntryMenuController(bundle)));
|
||||||
|
} else {
|
||||||
|
// do nothing for now, this is share
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,164 @@
|
|||||||
|
/*
|
||||||
|
* 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.text.Editable;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
import android.text.TextWatcher;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.Button;
|
||||||
|
|
||||||
|
import com.bluelinelabs.conductor.RouterTransaction;
|
||||||
|
import com.nextcloud.talk.R;
|
||||||
|
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 javax.inject.Inject;
|
||||||
|
|
||||||
|
import autodagger.AutoInjector;
|
||||||
|
import butterknife.BindView;
|
||||||
|
import butterknife.OnClick;
|
||||||
|
import studio.carbonylgroup.textfieldboxes.ExtendedEditText;
|
||||||
|
import studio.carbonylgroup.textfieldboxes.TextFieldBoxes;
|
||||||
|
|
||||||
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
|
public class EntryMenuController extends BaseController {
|
||||||
|
private static final String TAG = "EntryMenuController";
|
||||||
|
|
||||||
|
@BindView(R.id.ok_button)
|
||||||
|
Button proceedButton;
|
||||||
|
|
||||||
|
@BindView(R.id.extended_edit_text)
|
||||||
|
ExtendedEditText editText;
|
||||||
|
|
||||||
|
@BindView(R.id.text_field_boxes)
|
||||||
|
TextFieldBoxes textFieldBoxes;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
EventBus eventBus;
|
||||||
|
|
||||||
|
private int operationCode;
|
||||||
|
private Room room;
|
||||||
|
|
||||||
|
public EntryMenuController(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_entry_menu, container, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@OnClick(R.id.ok_button)
|
||||||
|
public void onProceedButtonClick() {
|
||||||
|
eventBus.post(new BottomSheetLockEvent(false, 0, false));
|
||||||
|
|
||||||
|
Bundle bundle = new Bundle();
|
||||||
|
if (operationCode == 4 || operationCode == 6) {
|
||||||
|
room.setPassword(editText.getText().toString());
|
||||||
|
} else {
|
||||||
|
room.setName(editText.getText().toString());
|
||||||
|
}
|
||||||
|
bundle.putParcelable(BundleKeys.KEY_ROOM, Parcels.wrap(room));
|
||||||
|
bundle.putInt(BundleKeys.KEY_OPERATION_CODE, operationCode);
|
||||||
|
getRouter().pushController(RouterTransaction.with(new OperationsMenuController(bundle)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onViewBound(@NonNull View view) {
|
||||||
|
super.onViewBound(view);
|
||||||
|
NextcloudTalkApplication.getSharedApplication().getComponentApplication().inject(this);
|
||||||
|
|
||||||
|
editText.addTextChangedListener(new TextWatcher() {
|
||||||
|
@Override
|
||||||
|
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTextChanged(CharSequence s, int start, int before, int count) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterTextChanged(Editable s) {
|
||||||
|
if (!TextUtils.isEmpty(s)) {
|
||||||
|
if (operationCode == 2) {
|
||||||
|
if (room.getName() == null || !room.getName().equals(s.toString())) {
|
||||||
|
if (proceedButton.isEnabled()) {
|
||||||
|
proceedButton.setEnabled(true);
|
||||||
|
proceedButton.setAlpha(1.0f);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!proceedButton.isEnabled()) {
|
||||||
|
proceedButton.setEnabled(false);
|
||||||
|
proceedButton.setAlpha(0.7f);
|
||||||
|
}
|
||||||
|
textFieldBoxes.setError(getResources().getString(R.string.nc_call_name_is_same),
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!proceedButton.isEnabled()) {
|
||||||
|
proceedButton.setEnabled(true);
|
||||||
|
proceedButton.setAlpha(1.0f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (proceedButton.isEnabled()) {
|
||||||
|
proceedButton.setEnabled(false);
|
||||||
|
proceedButton.setAlpha(0.7f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
String helperText = "";
|
||||||
|
switch (operationCode) {
|
||||||
|
case 2:
|
||||||
|
helperText = getResources().getString(R.string.nc_call_name);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
helperText = getResources().getString(R.string.nc_new_password);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
helperText = getResources().getString(R.string.nc_password);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
textFieldBoxes.setHelperText(helperText);
|
||||||
|
editText.requestFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -37,7 +37,6 @@ import com.nextcloud.talk.api.models.json.rooms.Room;
|
|||||||
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
import com.nextcloud.talk.application.NextcloudTalkApplication;
|
||||||
import com.nextcloud.talk.controllers.base.BaseController;
|
import com.nextcloud.talk.controllers.base.BaseController;
|
||||||
import com.nextcloud.talk.events.BottomSheetLockEvent;
|
import com.nextcloud.talk.events.BottomSheetLockEvent;
|
||||||
import com.nextcloud.talk.models.RetrofitBucket;
|
|
||||||
import com.nextcloud.talk.persistence.entities.UserEntity;
|
import com.nextcloud.talk.persistence.entities.UserEntity;
|
||||||
import com.nextcloud.talk.utils.ColorUtils;
|
import com.nextcloud.talk.utils.ColorUtils;
|
||||||
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
import com.nextcloud.talk.utils.bundle.BundleKeys;
|
||||||
@ -57,6 +56,8 @@ import io.reactivex.schedulers.Schedulers;
|
|||||||
|
|
||||||
@AutoInjector(NextcloudTalkApplication.class)
|
@AutoInjector(NextcloudTalkApplication.class)
|
||||||
public class OperationsMenuController extends BaseController {
|
public class OperationsMenuController extends BaseController {
|
||||||
|
private static final String TAG = "OperationsMenuController";
|
||||||
|
|
||||||
@BindView(R.id.progress_bar)
|
@BindView(R.id.progress_bar)
|
||||||
ProgressBar progressBar;
|
ProgressBar progressBar;
|
||||||
|
|
||||||
@ -119,9 +120,8 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.subscribe(operationsObserver);
|
.subscribe(operationsObserver);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
RetrofitBucket retrofitBucket = ApiHelper.getRetrofitBucketForRenameRoom(userEntity.getBaseUrl(),
|
ncApi.renameRoom(credentials, ApiHelper.getRoom(userEntity.getBaseUrl(), room.getToken()),
|
||||||
room.getToken(), room.getName());
|
room.getName())
|
||||||
ncApi.renameRoom(credentials, retrofitBucket.getUrl(), retrofitBucket.getQueryMap())
|
|
||||||
.subscribeOn(Schedulers.newThread())
|
.subscribeOn(Schedulers.newThread())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.retry(1)
|
.retry(1)
|
||||||
@ -137,6 +137,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
case 5:
|
case 5:
|
||||||
|
case 6:
|
||||||
String pass = "";
|
String pass = "";
|
||||||
if (room.getPassword() != null) {
|
if (room.getPassword() != null) {
|
||||||
pass = room.getPassword();
|
pass = room.getPassword();
|
||||||
@ -148,10 +149,10 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.retry(1)
|
.retry(1)
|
||||||
.subscribe(operationsObserver);
|
.subscribe(operationsObserver);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 7:
|
||||||
// Operation 6 is sharing, so we handle this differently
|
// Operation 6 is sharing, so we handle this differently
|
||||||
break;
|
break;
|
||||||
case 7:
|
case 8:
|
||||||
ncApi.makeRoomPrivate(credentials, ApiHelper.getUrlForRoomVisibility(userEntity.getBaseUrl(), room
|
ncApi.makeRoomPrivate(credentials, ApiHelper.getUrlForRoomVisibility(userEntity.getBaseUrl(), room
|
||||||
.getToken()))
|
.getToken()))
|
||||||
.subscribeOn(Schedulers.newThread())
|
.subscribeOn(Schedulers.newThread())
|
||||||
@ -159,7 +160,7 @@ public class OperationsMenuController extends BaseController {
|
|||||||
.retry(1)
|
.retry(1)
|
||||||
.subscribe(operationsObserver);
|
.subscribe(operationsObserver);
|
||||||
break;
|
break;
|
||||||
case 8:
|
case 9:
|
||||||
ncApi.deleteRoom(credentials, ApiHelper.getUrlForRoomParticipants(userEntity.getBaseUrl(), room.getToken()))
|
ncApi.deleteRoom(credentials, ApiHelper.getUrlForRoomParticipants(userEntity.getBaseUrl(), room.getToken()))
|
||||||
.subscribeOn(Schedulers.newThread())
|
.subscribeOn(Schedulers.newThread())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
@ -174,20 +175,31 @@ public class OperationsMenuController extends BaseController {
|
|||||||
|
|
||||||
private void showResultImage(boolean everythingOK) {
|
private void showResultImage(boolean everythingOK) {
|
||||||
progressBar.setVisibility(View.GONE);
|
progressBar.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
if (everythingOK) {
|
||||||
|
resultImageView.setImageDrawable(ColorUtils.getTintedDrawable(getResources(), R.drawable
|
||||||
|
.ic_check_circle_black_24dp, R.color.nc_darkGreen));
|
||||||
|
} else {
|
||||||
|
resultImageView.setImageDrawable(ColorUtils.getTintedDrawable(getResources(), R.drawable
|
||||||
|
.ic_cancel_black_24dp, R.color.nc_darkRed));
|
||||||
|
}
|
||||||
|
|
||||||
resultImageView.setVisibility(View.VISIBLE);
|
resultImageView.setVisibility(View.VISIBLE);
|
||||||
|
|
||||||
if (everythingOK) {
|
if (everythingOK) {
|
||||||
resultsTextView.setText(R.string.nc_all_ok_operation);
|
resultsTextView.setText(R.string.nc_all_ok_operation);
|
||||||
} else {
|
} else {
|
||||||
|
resultsTextView.setTextColor(getResources().getColor(R.color.nc_darkRed));
|
||||||
resultsTextView.setText(R.string.nc_failed_to_perform_operation);
|
resultsTextView.setText(R.string.nc_failed_to_perform_operation);
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean shouldRefreshData = operationCode != 4 && operationCode != 5;
|
|
||||||
resultsTextView.setVisibility(View.VISIBLE);
|
resultsTextView.setVisibility(View.VISIBLE);
|
||||||
if (everythingOK) {
|
if (everythingOK) {
|
||||||
eventBus.post(new BottomSheetLockEvent(true, 2500, shouldRefreshData));
|
eventBus.post(new BottomSheetLockEvent(true, 2500, true));
|
||||||
} else {
|
} else {
|
||||||
okButton.setOnClickListener(v -> eventBus.post(new BottomSheetLockEvent(true, 0, shouldRefreshData)));
|
resultImageView.setImageDrawable(ColorUtils.getTintedDrawable(getResources(), R.drawable
|
||||||
|
.ic_cancel_black_24dp, R.color.nc_darkRed));
|
||||||
|
okButton.setOnClickListener(v -> eventBus.post(new BottomSheetLockEvent(true, 0, true)));
|
||||||
okButton.setVisibility(View.VISIBLE);
|
okButton.setVisibility(View.VISIBLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -210,16 +222,12 @@ public class OperationsMenuController extends BaseController {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNext(Object o) {
|
public void onNext(Object o) {
|
||||||
resultImageView.setImageDrawable(ColorUtils.getTintedDrawable(getResources(), R.drawable
|
|
||||||
.ic_check_circle_black_24dp, R.color.nc_darkGreen));
|
|
||||||
showResultImage(true);
|
showResultImage(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(Throwable e) {
|
public void onError(Throwable e) {
|
||||||
if (retryCount == 1) {
|
if (retryCount == 1) {
|
||||||
resultImageView.setImageDrawable(ColorUtils.getTintedDrawable(getResources(), R.drawable
|
|
||||||
.ic_cancel_black_24dp, R.color.nc_darkRed));
|
|
||||||
showResultImage(false);
|
showResultImage(false);
|
||||||
}
|
}
|
||||||
dispose();
|
dispose();
|
||||||
@ -231,5 +239,9 @@ public class OperationsMenuController extends BaseController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDestroy() {
|
||||||
|
super.onDestroy();
|
||||||
|
dispose();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,6 @@
|
|||||||
package com.nextcloud.talk.utils;
|
package com.nextcloud.talk.utils;
|
||||||
|
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.PorterDuff;
|
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
import android.support.annotation.ColorRes;
|
import android.support.annotation.ColorRes;
|
||||||
import android.support.annotation.DrawableRes;
|
import android.support.annotation.DrawableRes;
|
||||||
@ -30,7 +29,7 @@ public class ColorUtils {
|
|||||||
public static Drawable getTintedDrawable(Resources res, @DrawableRes int drawableResId, @ColorRes int colorResId) {
|
public static Drawable getTintedDrawable(Resources res, @DrawableRes int drawableResId, @ColorRes int colorResId) {
|
||||||
Drawable drawable = res.getDrawable(drawableResId);
|
Drawable drawable = res.getDrawable(drawableResId);
|
||||||
int color = res.getColor(colorResId);
|
int color = res.getColor(colorResId);
|
||||||
drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
|
drawable.setTint(color);
|
||||||
return drawable;
|
return drawable;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
66
app/src/main/res/layout/controller_entry_menu.xml
Normal file
66
app/src/main/res/layout/controller_entry_menu.xml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
<?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"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@color/nc_white_color">
|
||||||
|
|
||||||
|
<studio.carbonylgroup.textfieldboxes.TextFieldBoxes
|
||||||
|
android:id="@+id/text_field_boxes"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="80dp"
|
||||||
|
android:layout_marginEnd="@dimen/activity_horizontal_margin"
|
||||||
|
android:layout_marginStart="@dimen/activity_horizontal_margin"
|
||||||
|
app:errorColor="@color/nc_darkRed"
|
||||||
|
app:helperText=" "
|
||||||
|
app:panelBackgroundColor="@color/nc_white_color"
|
||||||
|
app:primaryColor="@color/colorPrimary">
|
||||||
|
|
||||||
|
<studio.carbonylgroup.textfieldboxes.ExtendedEditText
|
||||||
|
android:id="@+id/extended_edit_text"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:imeOptions="actionDone"
|
||||||
|
android:inputType="textUri"
|
||||||
|
android:minWidth="5dp"
|
||||||
|
android:singleLine="true"
|
||||||
|
android:textColor="@color/colorPrimary"/>
|
||||||
|
|
||||||
|
</studio.carbonylgroup.textfieldboxes.TextFieldBoxes>
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/ok_button"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_alignParentEnd="true"
|
||||||
|
android:layout_below="@id/text_field_boxes"
|
||||||
|
android:layout_marginBottom="12dp"
|
||||||
|
android:layout_marginEnd="8dp"
|
||||||
|
android:layout_marginTop="8dp"
|
||||||
|
android:background="#0000"
|
||||||
|
android:enabled="false"
|
||||||
|
android:alpha="0.7"
|
||||||
|
android:text="@string/nc_proceed"
|
||||||
|
android:textColor="@color/colorPrimary"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
@ -29,8 +29,8 @@
|
|||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_centerInParent="true"
|
android:layout_centerInParent="true"
|
||||||
android:layout_marginTop="24dp"
|
|
||||||
android:layout_marginBottom="24dp"
|
android:layout_marginBottom="24dp"
|
||||||
|
android:layout_marginTop="24dp"
|
||||||
android:indeterminate="true"
|
android:indeterminate="true"
|
||||||
android:indeterminateTint="@color/colorPrimary"
|
android:indeterminateTint="@color/colorPrimary"
|
||||||
android:indeterminateTintMode="src_in"
|
android:indeterminateTintMode="src_in"
|
||||||
@ -40,7 +40,7 @@
|
|||||||
android:id="@+id/result_image_view"
|
android:id="@+id/result_image_view"
|
||||||
android:layout_width="48dp"
|
android:layout_width="48dp"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
android:layout_centerInParent="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginBottom="8dp"
|
android:layout_marginBottom="8dp"
|
||||||
android:layout_marginEnd="24dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:layout_marginStart="24dp"
|
android:layout_marginStart="24dp"
|
||||||
@ -54,9 +54,9 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@id/result_image_view"
|
android:layout_below="@id/result_image_view"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
|
android:layout_marginBottom="12dp"
|
||||||
android:layout_marginEnd="24dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:layout_marginStart="24dp"
|
android:layout_marginStart="24dp"
|
||||||
android:layout_marginBottom="12dp"
|
|
||||||
android:maxLines="2"
|
android:maxLines="2"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textColor="@color/colorPrimary"
|
android:textColor="@color/colorPrimary"
|
||||||
|
@ -60,6 +60,7 @@
|
|||||||
<string name="nc_no_proxy">No proxy</string>
|
<string name="nc_no_proxy">No proxy</string>
|
||||||
<string name="nc_username">Username</string>
|
<string name="nc_username">Username</string>
|
||||||
<string name="nc_password">Password</string>
|
<string name="nc_password">Password</string>
|
||||||
|
<string name="nc_new_password">New password</string>
|
||||||
<string name="nc_about">About</string>
|
<string name="nc_about">About</string>
|
||||||
<string name="nc_privacy">Privacy</string>
|
<string name="nc_privacy">Privacy</string>
|
||||||
<string name="nc_get_source_code">Get source code</string>
|
<string name="nc_get_source_code">Get source code</string>
|
||||||
@ -74,6 +75,7 @@
|
|||||||
<string name="nc_rename">Rename call</string>
|
<string name="nc_rename">Rename call</string>
|
||||||
<string name="nc_set_password">Set a password</string>
|
<string name="nc_set_password">Set a password</string>
|
||||||
<string name="nc_change_password">Change a password</string>
|
<string name="nc_change_password">Change a password</string>
|
||||||
|
<string name="nc_clear_password">Clear password</string>
|
||||||
<string name="nc_share_link">Share link</string>
|
<string name="nc_share_link">Share link</string>
|
||||||
<string name="nc_make_call_public">Make call public</string>
|
<string name="nc_make_call_public">Make call public</string>
|
||||||
<string name="nc_make_call_private">Make call private</string>
|
<string name="nc_make_call_private">Make call private</string>
|
||||||
@ -105,5 +107,8 @@
|
|||||||
<string name="nc_failed_to_perform_operation">Sorry, something went wrong!</string>
|
<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_all_ok_operation">OK, all done!</string>
|
||||||
<string name="nc_ok">OK</string>
|
<string name="nc_ok">OK</string>
|
||||||
|
<string name="nc_call_name">Call name</string>
|
||||||
|
<string name="nc_proceed">Proceed</string>
|
||||||
|
<string name="nc_call_name_is_same">The name you entered is the same as the existing one</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
Reference in New Issue
Block a user