/*
* Copyright (c) 2010-2019 Belledonne Communications SARL.
*
* This file is part of linphone-android
* (see https://www.linphone.org).
*
* 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 .
*/
package org.linphone.utils;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ShortcutInfo;
import android.graphics.Bitmap;
import android.graphics.drawable.Icon;
import android.util.ArraySet;
import java.util.Set;
import org.linphone.R;
import org.linphone.chat.ChatActivity;
import org.linphone.contacts.ContactsActivity;
import org.linphone.contacts.LinphoneContact;
import org.linphone.core.tools.Log;
@TargetApi(25)
public class LinphoneShortcutManager {
private Context mContext;
private Set mCategories;
public LinphoneShortcutManager(Context context) {
mContext = context;
mCategories = new ArraySet<>();
mCategories.add(ShortcutInfo.SHORTCUT_CATEGORY_CONVERSATION);
}
public void destroy() {
mContext = null;
}
public ShortcutInfo createChatRoomShortcutInfo(
LinphoneContact contact, String chatRoomAddress) {
if (contact == null) return null;
Bitmap bm = null;
if (contact.getThumbnailUri() != null) {
bm = ImageUtils.getRoundBitmapFromUri(mContext, contact.getThumbnailUri());
}
Icon icon =
bm == null
? Icon.createWithResource(mContext, R.drawable.avatar)
: Icon.createWithBitmap(bm);
try {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(mContext, ChatActivity.class);
intent.addFlags(
Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("RemoteSipUri", chatRoomAddress);
return new ShortcutInfo.Builder(mContext, chatRoomAddress)
.setShortLabel(contact.getFullName())
.setIcon(icon)
.setCategories(mCategories)
.setIntent(intent)
.build();
} catch (Exception e) {
Log.e("[Shortcuts Manager] ShortcutInfo.Builder exception: " + e);
}
return null;
}
public ShortcutInfo createContactShortcutInfo(LinphoneContact contact) {
if (contact == null) return null;
Bitmap bm = null;
if (contact.getThumbnailUri() != null) {
bm = ImageUtils.getRoundBitmapFromUri(mContext, contact.getThumbnailUri());
}
Icon icon =
bm == null
? Icon.createWithResource(mContext, R.drawable.avatar)
: Icon.createWithBitmap(bm);
try {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClass(mContext, ContactsActivity.class);
intent.addFlags(
Intent.FLAG_ACTIVITY_NO_ANIMATION | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
intent.putExtra("ContactId", contact.getContactId());
return new ShortcutInfo.Builder(mContext, contact.getContactId())
.setShortLabel(contact.getFullName())
.setIcon(icon)
.setCategories(mCategories)
.setIntent(intent)
.build();
} catch (Exception e) {
Log.e("[Shortcuts Manager] ShortcutInfo.Builder exception: " + e);
}
return null;
}
}