diff --git a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java
index 2c7a3f2e8..1c872c37e 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/CallNotificationController.java
@@ -20,11 +20,13 @@
package com.nextcloud.talk.controllers;
+import android.annotation.SuppressLint;
import android.media.MediaPlayer;
-import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
+import android.text.TextUtils;
+import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -33,6 +35,7 @@ import android.widget.TextView;
import com.bluelinelabs.conductor.RouterTransaction;
import com.bluelinelabs.conductor.changehandler.HorizontalChangeHandler;
+import com.bluelinelabs.logansquare.LoganSquare;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.model.GlideUrl;
import com.bumptech.glide.load.model.LazyHeaders;
@@ -42,6 +45,7 @@ import com.nextcloud.talk.R;
import com.nextcloud.talk.api.NcApi;
import com.nextcloud.talk.application.NextcloudTalkApplication;
import com.nextcloud.talk.controllers.base.BaseController;
+import com.nextcloud.talk.models.RingtoneSettings;
import com.nextcloud.talk.models.database.UserEntity;
import com.nextcloud.talk.models.json.participants.Participant;
import com.nextcloud.talk.models.json.participants.ParticipantsOverall;
@@ -50,9 +54,11 @@ import com.nextcloud.talk.models.json.rooms.RoomsOverall;
import com.nextcloud.talk.utils.ApiUtils;
import com.nextcloud.talk.utils.bundle.BundleKeys;
import com.nextcloud.talk.utils.glide.GlideApp;
+import com.nextcloud.talk.utils.preferences.AppPreferences;
import org.parceler.Parcels;
+import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -69,9 +75,14 @@ import io.reactivex.schedulers.Schedulers;
@AutoInjector(NextcloudTalkApplication.class)
public class CallNotificationController extends BaseController {
+ private static final String TAG = "CallNotificationController";
+
@Inject
NcApi ncApi;
+ @Inject
+ AppPreferences appPreferences;
+
@BindView(R.id.conversationNameTextView)
TextView conversationNameTextView;
@@ -84,7 +95,6 @@ public class CallNotificationController extends BaseController {
private String credentials;
private Room currentRoom;
private MediaPlayer mediaPlayer;
- private boolean participantsCheckIsRunning;
private boolean leavingScreen = false;
public CallNotificationController(Bundle args) {
@@ -141,7 +151,6 @@ public class CallNotificationController extends BaseController {
@Override
public void onSubscribe(Disposable d) {
disposablesList.add(d);
- participantsCheckIsRunning = true;
}
@Override
@@ -219,6 +228,7 @@ public class CallNotificationController extends BaseController {
});
}
+ @SuppressLint("LongLogTag")
@Override
protected void onViewBound(@NonNull View view) {
super.onViewBound(view);
@@ -227,11 +237,27 @@ public class CallNotificationController extends BaseController {
handleFromNotification();
- Uri ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
+ String callRingtonePreferenceString = appPreferences.getCallRingtoneUri();
+ Uri ringtoneUri = null;
- mediaPlayer = MediaPlayer.create(getApplicationContext(), ringtoneUri);
- mediaPlayer.setLooping(true);
- mediaPlayer.start();
+ if (TextUtils.isEmpty(callRingtonePreferenceString)) {
+ // play default sound
+ ringtoneUri = Uri.parse("android.resource://" + getApplicationContext().getPackageName()+
+ "/raw/librem_by_feandesign_call");
+ } else {
+ try {
+ RingtoneSettings ringtoneSettings = LoganSquare.parse(callRingtonePreferenceString, RingtoneSettings.class);
+ ringtoneUri = ringtoneSettings.getRingtoneUri();
+ } catch (IOException e) {
+ Log.e(TAG, "Failed to parse ringtone settings");
+ }
+ }
+
+ if (ringtoneUri != null) {
+ mediaPlayer = MediaPlayer.create(getApplicationContext(), ringtoneUri);
+ mediaPlayer.setLooping(true);
+ mediaPlayer.start();
+ }
}
private void loadAvatar() {
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java b/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java
index 34eed3b27..fa7da8172 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/RingtoneSelectionController.java
@@ -149,7 +149,24 @@ public class RingtoneSelectionController extends BaseController implements Flexi
abstractFlexibleItemList = new ArrayList<>();
abstractFlexibleItemList.add(new NotificationSoundItem("None", null));
- int positionToToggle = -1;
+ String ringtoneString;
+
+ if (callNotificationSounds) {
+ ringtoneString = "android.resource://" + getApplicationContext().getPackageName() +
+ "/raw/librem_by_feandesign_call";
+ } else {
+ ringtoneString = "android.resource://" + getApplicationContext().getPackageName() +
+ "/raw/librem_by_feandesign_message";
+ }
+
+ abstractFlexibleItemList.add(new NotificationSoundItem(getResources()
+ .getString(R.string.nc_settings_default_ringtone), ringtoneString));
+
+ String preferencesString = null;
+ if ((TextUtils.isEmpty((preferencesString = appPreferences.getCallRingtoneUri())))
+ || TextUtils.isEmpty((preferencesString = appPreferences.getMessageRingtoneUri()))) {
+ ((NotificationSoundItem) abstractFlexibleItemList.get(1)).setSelected(true);
+ }
if (getActivity() != null) {
RingtoneManager manager = new RingtoneManager(getActivity());
@@ -164,6 +181,7 @@ public class RingtoneSelectionController extends BaseController implements Flexi
NotificationSoundItem notificationSoundItem;
+ boolean foundDefault = false;
while (cursor.moveToNext()) {
String notificationTitle = cursor.getString(RingtoneManager.TITLE_COLUMN_INDEX);
String notificationUri = cursor.getString(RingtoneManager.URI_COLUMN_INDEX);
@@ -174,23 +192,23 @@ public class RingtoneSelectionController extends BaseController implements Flexi
abstractFlexibleItemList.add(notificationSoundItem);
- String preferencesString;
- if (callNotificationSounds && !TextUtils.isEmpty(preferencesString = appPreferences
- .getCallRingtoneUri()) ||
- !callNotificationSounds && !TextUtils.isEmpty(preferencesString = appPreferences
- .getMessageRingtoneUri())) {
+ if (!TextUtils.isEmpty(preferencesString) && !foundDefault) {
try {
RingtoneSettings ringtoneSettings = LoganSquare.parse(preferencesString, RingtoneSettings.class);
if (ringtoneSettings.getRingtoneUri() == null) {
- ((NotificationSoundItem)abstractFlexibleItemList.get(0)).setSelected(true);
+ ((NotificationSoundItem) abstractFlexibleItemList.get(0)).setSelected(true);
+ foundDefault = true;
} else if (completeNotificationUri.equals(ringtoneSettings.getRingtoneUri().toString())) {
notificationSoundItem.setSelected(true);
+ foundDefault = true;
+ } else if (completeNotificationUri.equals(ringtoneString)) {
+ ((NotificationSoundItem) abstractFlexibleItemList.get(1)).setSelected(true);
+ foundDefault = true;
}
} catch (IOException e) {
Log.e(TAG, "Failed to parse ringtone settings");
}
}
-
}
cursor.close();
diff --git a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java
index f115c6cb2..f23a30e1e 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java
+++ b/app/src/main/java/com/nextcloud/talk/controllers/SettingsController.java
@@ -320,6 +320,8 @@ public class SettingsController extends BaseController {
Log.e(TAG, "Failed to parse ringtone name");
}
settingsCallSounds.setSummary(ringtoneName);
+ } else {
+ settingsMessageSound.setSummary(R.string.nc_settings_default_ringtone);
}
if (!TextUtils.isEmpty(appPreferences.getMessageRingtoneUri())) {
@@ -330,6 +332,8 @@ public class SettingsController extends BaseController {
Log.e(TAG, "Failed to parse ringtone name");
}
settingsMessageSound.setSummary(ringtoneName);
+ } else {
+ settingsMessageSound.setSummary(R.string.nc_settings_default_ringtone);
}
if ("No proxy".equals(appPreferences.getProxyType()) || appPreferences.getProxyType() == null) {
diff --git a/app/src/main/res/raw/librem_by_feandesign_call.ogg b/app/src/main/res/raw/librem_by_feandesign_call.ogg
new file mode 100644
index 000000000..2d1c7ee91
Binary files /dev/null and b/app/src/main/res/raw/librem_by_feandesign_call.ogg differ
diff --git a/app/src/main/res/raw/librem_by_feandesign_message.ogg b/app/src/main/res/raw/librem_by_feandesign_message.ogg
new file mode 100644
index 000000000..567f9ce94
Binary files /dev/null and b/app/src/main/res/raw/librem_by_feandesign_message.ogg differ
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index eaa5194cd..2264ae148 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -65,6 +65,7 @@
call_ringtone
Messages
message_ringtone
+ Librem by feandesign
No proxy
Username