Search in sources :

Example 1 with KeyboardShortcutInfo

use of android.view.KeyboardShortcutInfo in project android_frameworks_base by ResurrectionRemix.

the class KeyboardShortcuts method populateKeyboardShortcuts.

private void populateKeyboardShortcuts(LinearLayout keyboardShortcutsLayout, List<KeyboardShortcutGroup> keyboardShortcutGroups) {
    LayoutInflater inflater = LayoutInflater.from(mContext);
    final int keyboardShortcutGroupsSize = keyboardShortcutGroups.size();
    TextView shortcutsKeyView = (TextView) inflater.inflate(R.layout.keyboard_shortcuts_key_view, null, false);
    shortcutsKeyView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    final int shortcutKeyTextItemMinWidth = shortcutsKeyView.getMeasuredHeight();
    // Needed to be able to scale the image items to the same height as the text items.
    final int shortcutKeyIconItemHeightWidth = shortcutsKeyView.getMeasuredHeight() - shortcutsKeyView.getPaddingTop() - shortcutsKeyView.getPaddingBottom();
    for (int i = 0; i < keyboardShortcutGroupsSize; i++) {
        KeyboardShortcutGroup group = keyboardShortcutGroups.get(i);
        TextView categoryTitle = (TextView) inflater.inflate(R.layout.keyboard_shortcuts_category_title, keyboardShortcutsLayout, false);
        categoryTitle.setText(group.getLabel());
        categoryTitle.setTextColor(group.isSystemGroup() ? Utils.getColorAccent(mContext) : mContext.getColor(R.color.ksh_application_group_color));
        keyboardShortcutsLayout.addView(categoryTitle);
        LinearLayout shortcutContainer = (LinearLayout) inflater.inflate(R.layout.keyboard_shortcuts_container, keyboardShortcutsLayout, false);
        final int itemsSize = group.getItems().size();
        for (int j = 0; j < itemsSize; j++) {
            KeyboardShortcutInfo info = group.getItems().get(j);
            List<StringDrawableContainer> shortcutKeys = getHumanReadableShortcutKeys(info);
            if (shortcutKeys == null) {
                // Ignore shortcuts we can't display keys for.
                Log.w(TAG, "Keyboard Shortcut contains unsupported keys, skipping.");
                continue;
            }
            View shortcutView = inflater.inflate(R.layout.keyboard_shortcut_app_item, shortcutContainer, false);
            if (info.getIcon() != null) {
                ImageView shortcutIcon = (ImageView) shortcutView.findViewById(R.id.keyboard_shortcuts_icon);
                shortcutIcon.setImageIcon(info.getIcon());
                shortcutIcon.setVisibility(View.VISIBLE);
            }
            TextView shortcutKeyword = (TextView) shortcutView.findViewById(R.id.keyboard_shortcuts_keyword);
            shortcutKeyword.setText(info.getLabel());
            if (info.getIcon() != null) {
                RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) shortcutKeyword.getLayoutParams();
                lp.removeRule(RelativeLayout.ALIGN_PARENT_START);
                shortcutKeyword.setLayoutParams(lp);
            }
            ViewGroup shortcutItemsContainer = (ViewGroup) shortcutView.findViewById(R.id.keyboard_shortcuts_item_container);
            final int shortcutKeysSize = shortcutKeys.size();
            for (int k = 0; k < shortcutKeysSize; k++) {
                StringDrawableContainer shortcutRepresentation = shortcutKeys.get(k);
                if (shortcutRepresentation.mDrawable != null) {
                    ImageView shortcutKeyIconView = (ImageView) inflater.inflate(R.layout.keyboard_shortcuts_key_icon_view, shortcutItemsContainer, false);
                    Bitmap bitmap = Bitmap.createBitmap(shortcutKeyIconItemHeightWidth, shortcutKeyIconItemHeightWidth, Bitmap.Config.ARGB_8888);
                    Canvas canvas = new Canvas(bitmap);
                    shortcutRepresentation.mDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
                    shortcutRepresentation.mDrawable.draw(canvas);
                    shortcutKeyIconView.setImageBitmap(bitmap);
                    shortcutKeyIconView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
                    shortcutKeyIconView.setAccessibilityDelegate(new ShortcutKeyAccessibilityDelegate(shortcutRepresentation.mString));
                    shortcutItemsContainer.addView(shortcutKeyIconView);
                } else if (shortcutRepresentation.mString != null) {
                    TextView shortcutKeyTextView = (TextView) inflater.inflate(R.layout.keyboard_shortcuts_key_view, shortcutItemsContainer, false);
                    shortcutKeyTextView.setMinimumWidth(shortcutKeyTextItemMinWidth);
                    shortcutKeyTextView.setText(shortcutRepresentation.mString);
                    shortcutKeyTextView.setAccessibilityDelegate(new ShortcutKeyAccessibilityDelegate(shortcutRepresentation.mString));
                    shortcutItemsContainer.addView(shortcutKeyTextView);
                }
            }
            shortcutContainer.addView(shortcutView);
        }
        keyboardShortcutsLayout.addView(shortcutContainer);
        if (i < keyboardShortcutGroupsSize - 1) {
            View separator = inflater.inflate(R.layout.keyboard_shortcuts_category_separator, keyboardShortcutsLayout, false);
            keyboardShortcutsLayout.addView(separator);
        }
    }
}
Also used : KeyboardShortcutGroup(android.view.KeyboardShortcutGroup) ViewGroup(android.view.ViewGroup) Canvas(android.graphics.Canvas) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) Bitmap(android.graphics.Bitmap) LayoutInflater(android.view.LayoutInflater) RelativeLayout(android.widget.RelativeLayout) KeyboardShortcutInfo(android.view.KeyboardShortcutInfo) TextView(android.widget.TextView) ImageView(android.widget.ImageView) LinearLayout(android.widget.LinearLayout)

Example 2 with KeyboardShortcutInfo

use of android.view.KeyboardShortcutInfo in project android_frameworks_base by ResurrectionRemix.

the class KeyboardShortcuts method getDefaultApplicationShortcuts.

private KeyboardShortcutGroup getDefaultApplicationShortcuts() {
    final int userId = mContext.getUserId();
    List<KeyboardShortcutInfo> keyboardShortcutInfoAppItems = new ArrayList<>();
    // Assist.
    final AssistUtils assistUtils = new AssistUtils(mContext);
    final ComponentName assistComponent = assistUtils.getAssistComponentForUser(userId);
    PackageInfo assistPackageInfo = null;
    try {
        assistPackageInfo = mPackageManager.getPackageInfo(assistComponent.getPackageName(), 0, userId);
    } catch (RemoteException e) {
        Log.e(TAG, "PackageManagerService is dead");
    }
    if (assistPackageInfo != null) {
        final Icon assistIcon = Icon.createWithResource(assistPackageInfo.applicationInfo.packageName, assistPackageInfo.applicationInfo.icon);
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_assist), assistIcon, KeyEvent.KEYCODE_UNKNOWN, KeyEvent.META_META_ON));
    }
    // Browser.
    final Icon browserIcon = getIconForIntentCategory(Intent.CATEGORY_APP_BROWSER, userId);
    if (browserIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_browser), browserIcon, KeyEvent.KEYCODE_B, KeyEvent.META_META_ON));
    }
    // Contacts.
    final Icon contactsIcon = getIconForIntentCategory(Intent.CATEGORY_APP_CONTACTS, userId);
    if (contactsIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_contacts), contactsIcon, KeyEvent.KEYCODE_C, KeyEvent.META_META_ON));
    }
    // Email.
    final Icon emailIcon = getIconForIntentCategory(Intent.CATEGORY_APP_EMAIL, userId);
    if (emailIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_email), emailIcon, KeyEvent.KEYCODE_E, KeyEvent.META_META_ON));
    }
    // Messaging.
    final Icon messagingIcon = getIconForIntentCategory(Intent.CATEGORY_APP_MESSAGING, userId);
    if (messagingIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_im), messagingIcon, KeyEvent.KEYCODE_T, KeyEvent.META_META_ON));
    }
    // Music.
    final Icon musicIcon = getIconForIntentCategory(Intent.CATEGORY_APP_MUSIC, userId);
    if (musicIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_music), musicIcon, KeyEvent.KEYCODE_P, KeyEvent.META_META_ON));
    }
    // Calendar.
    final Icon calendarIcon = getIconForIntentCategory(Intent.CATEGORY_APP_CALENDAR, userId);
    if (calendarIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_calendar), calendarIcon, KeyEvent.KEYCODE_L, KeyEvent.META_META_ON));
    }
    final int itemsSize = keyboardShortcutInfoAppItems.size();
    if (itemsSize == 0) {
        return null;
    }
    // Sorts by label, case insensitive with nulls and/or empty labels last.
    Collections.sort(keyboardShortcutInfoAppItems, mApplicationItemsComparator);
    return new KeyboardShortcutGroup(mContext.getString(R.string.keyboard_shortcut_group_applications), keyboardShortcutInfoAppItems, true);
}
Also used : KeyboardShortcutGroup(android.view.KeyboardShortcutGroup) AssistUtils(com.android.internal.app.AssistUtils) PackageInfo(android.content.pm.PackageInfo) ArrayList(java.util.ArrayList) KeyboardShortcutInfo(android.view.KeyboardShortcutInfo) ComponentName(android.content.ComponentName) Icon(android.graphics.drawable.Icon) RemoteException(android.os.RemoteException)

Example 3 with KeyboardShortcutInfo

use of android.view.KeyboardShortcutInfo in project android_frameworks_base by ResurrectionRemix.

the class KeyboardShortcuts method getSystemShortcuts.

private KeyboardShortcutGroup getSystemShortcuts() {
    final KeyboardShortcutGroup systemGroup = new KeyboardShortcutGroup(mContext.getString(R.string.keyboard_shortcut_group_system), true);
    systemGroup.addItem(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_system_home), KeyEvent.KEYCODE_ENTER, KeyEvent.META_META_ON));
    systemGroup.addItem(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_system_back), KeyEvent.KEYCODE_DEL, KeyEvent.META_META_ON));
    systemGroup.addItem(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_system_recents), KeyEvent.KEYCODE_TAB, KeyEvent.META_ALT_ON));
    systemGroup.addItem(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_system_notifications), KeyEvent.KEYCODE_N, KeyEvent.META_META_ON));
    systemGroup.addItem(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_system_shortcuts_helper), KeyEvent.KEYCODE_SLASH, KeyEvent.META_META_ON));
    systemGroup.addItem(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_system_switch_input), KeyEvent.KEYCODE_SPACE, KeyEvent.META_META_ON));
    return systemGroup;
}
Also used : KeyboardShortcutGroup(android.view.KeyboardShortcutGroup) KeyboardShortcutInfo(android.view.KeyboardShortcutInfo)

Example 4 with KeyboardShortcutInfo

use of android.view.KeyboardShortcutInfo in project android_frameworks_base by AOSPA.

the class KeyboardShortcuts method getDefaultApplicationShortcuts.

private KeyboardShortcutGroup getDefaultApplicationShortcuts() {
    final int userId = mContext.getUserId();
    List<KeyboardShortcutInfo> keyboardShortcutInfoAppItems = new ArrayList<>();
    // Assist.
    final AssistUtils assistUtils = new AssistUtils(mContext);
    final ComponentName assistComponent = assistUtils.getAssistComponentForUser(userId);
    PackageInfo assistPackageInfo = null;
    try {
        assistPackageInfo = mPackageManager.getPackageInfo(assistComponent.getPackageName(), 0, userId);
    } catch (RemoteException e) {
        Log.e(TAG, "PackageManagerService is dead");
    }
    if (assistPackageInfo != null) {
        final Icon assistIcon = Icon.createWithResource(assistPackageInfo.applicationInfo.packageName, assistPackageInfo.applicationInfo.icon);
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_assist), assistIcon, KeyEvent.KEYCODE_UNKNOWN, KeyEvent.META_META_ON));
    }
    // Browser.
    final Icon browserIcon = getIconForIntentCategory(Intent.CATEGORY_APP_BROWSER, userId);
    if (browserIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_browser), browserIcon, KeyEvent.KEYCODE_B, KeyEvent.META_META_ON));
    }
    // Contacts.
    final Icon contactsIcon = getIconForIntentCategory(Intent.CATEGORY_APP_CONTACTS, userId);
    if (contactsIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_contacts), contactsIcon, KeyEvent.KEYCODE_C, KeyEvent.META_META_ON));
    }
    // Email.
    final Icon emailIcon = getIconForIntentCategory(Intent.CATEGORY_APP_EMAIL, userId);
    if (emailIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_email), emailIcon, KeyEvent.KEYCODE_E, KeyEvent.META_META_ON));
    }
    // Messaging.
    final Icon messagingIcon = getIconForIntentCategory(Intent.CATEGORY_APP_MESSAGING, userId);
    if (messagingIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_im), messagingIcon, KeyEvent.KEYCODE_T, KeyEvent.META_META_ON));
    }
    // Music.
    final Icon musicIcon = getIconForIntentCategory(Intent.CATEGORY_APP_MUSIC, userId);
    if (musicIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_music), musicIcon, KeyEvent.KEYCODE_P, KeyEvent.META_META_ON));
    }
    // Calendar.
    final Icon calendarIcon = getIconForIntentCategory(Intent.CATEGORY_APP_CALENDAR, userId);
    if (calendarIcon != null) {
        keyboardShortcutInfoAppItems.add(new KeyboardShortcutInfo(mContext.getString(R.string.keyboard_shortcut_group_applications_calendar), calendarIcon, KeyEvent.KEYCODE_L, KeyEvent.META_META_ON));
    }
    final int itemsSize = keyboardShortcutInfoAppItems.size();
    if (itemsSize == 0) {
        return null;
    }
    // Sorts by label, case insensitive with nulls and/or empty labels last.
    Collections.sort(keyboardShortcutInfoAppItems, mApplicationItemsComparator);
    return new KeyboardShortcutGroup(mContext.getString(R.string.keyboard_shortcut_group_applications), keyboardShortcutInfoAppItems, true);
}
Also used : KeyboardShortcutGroup(android.view.KeyboardShortcutGroup) AssistUtils(com.android.internal.app.AssistUtils) PackageInfo(android.content.pm.PackageInfo) ArrayList(java.util.ArrayList) KeyboardShortcutInfo(android.view.KeyboardShortcutInfo) ComponentName(android.content.ComponentName) Icon(android.graphics.drawable.Icon) RemoteException(android.os.RemoteException)

Example 5 with KeyboardShortcutInfo

use of android.view.KeyboardShortcutInfo in project android_frameworks_base by AOSPA.

the class KeyboardShortcuts method populateKeyboardShortcuts.

private void populateKeyboardShortcuts(LinearLayout keyboardShortcutsLayout, List<KeyboardShortcutGroup> keyboardShortcutGroups) {
    LayoutInflater inflater = LayoutInflater.from(mContext);
    final int keyboardShortcutGroupsSize = keyboardShortcutGroups.size();
    TextView shortcutsKeyView = (TextView) inflater.inflate(R.layout.keyboard_shortcuts_key_view, null, false);
    shortcutsKeyView.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    final int shortcutKeyTextItemMinWidth = shortcutsKeyView.getMeasuredHeight();
    // Needed to be able to scale the image items to the same height as the text items.
    final int shortcutKeyIconItemHeightWidth = shortcutsKeyView.getMeasuredHeight() - shortcutsKeyView.getPaddingTop() - shortcutsKeyView.getPaddingBottom();
    for (int i = 0; i < keyboardShortcutGroupsSize; i++) {
        KeyboardShortcutGroup group = keyboardShortcutGroups.get(i);
        TextView categoryTitle = (TextView) inflater.inflate(R.layout.keyboard_shortcuts_category_title, keyboardShortcutsLayout, false);
        categoryTitle.setText(group.getLabel());
        categoryTitle.setTextColor(group.isSystemGroup() ? Utils.getColorAccent(mContext) : mContext.getColor(R.color.ksh_application_group_color));
        keyboardShortcutsLayout.addView(categoryTitle);
        LinearLayout shortcutContainer = (LinearLayout) inflater.inflate(R.layout.keyboard_shortcuts_container, keyboardShortcutsLayout, false);
        final int itemsSize = group.getItems().size();
        for (int j = 0; j < itemsSize; j++) {
            KeyboardShortcutInfo info = group.getItems().get(j);
            List<StringDrawableContainer> shortcutKeys = getHumanReadableShortcutKeys(info);
            if (shortcutKeys == null) {
                // Ignore shortcuts we can't display keys for.
                Log.w(TAG, "Keyboard Shortcut contains unsupported keys, skipping.");
                continue;
            }
            View shortcutView = inflater.inflate(R.layout.keyboard_shortcut_app_item, shortcutContainer, false);
            if (info.getIcon() != null) {
                ImageView shortcutIcon = (ImageView) shortcutView.findViewById(R.id.keyboard_shortcuts_icon);
                shortcutIcon.setImageIcon(info.getIcon());
                shortcutIcon.setVisibility(View.VISIBLE);
            }
            TextView shortcutKeyword = (TextView) shortcutView.findViewById(R.id.keyboard_shortcuts_keyword);
            shortcutKeyword.setText(info.getLabel());
            if (info.getIcon() != null) {
                RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) shortcutKeyword.getLayoutParams();
                lp.removeRule(RelativeLayout.ALIGN_PARENT_START);
                shortcutKeyword.setLayoutParams(lp);
            }
            ViewGroup shortcutItemsContainer = (ViewGroup) shortcutView.findViewById(R.id.keyboard_shortcuts_item_container);
            final int shortcutKeysSize = shortcutKeys.size();
            for (int k = 0; k < shortcutKeysSize; k++) {
                StringDrawableContainer shortcutRepresentation = shortcutKeys.get(k);
                if (shortcutRepresentation.mDrawable != null) {
                    ImageView shortcutKeyIconView = (ImageView) inflater.inflate(R.layout.keyboard_shortcuts_key_icon_view, shortcutItemsContainer, false);
                    Bitmap bitmap = Bitmap.createBitmap(shortcutKeyIconItemHeightWidth, shortcutKeyIconItemHeightWidth, Bitmap.Config.ARGB_8888);
                    Canvas canvas = new Canvas(bitmap);
                    shortcutRepresentation.mDrawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
                    shortcutRepresentation.mDrawable.draw(canvas);
                    shortcutKeyIconView.setImageBitmap(bitmap);
                    shortcutKeyIconView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_YES);
                    shortcutKeyIconView.setAccessibilityDelegate(new ShortcutKeyAccessibilityDelegate(shortcutRepresentation.mString));
                    shortcutItemsContainer.addView(shortcutKeyIconView);
                } else if (shortcutRepresentation.mString != null) {
                    TextView shortcutKeyTextView = (TextView) inflater.inflate(R.layout.keyboard_shortcuts_key_view, shortcutItemsContainer, false);
                    shortcutKeyTextView.setMinimumWidth(shortcutKeyTextItemMinWidth);
                    shortcutKeyTextView.setText(shortcutRepresentation.mString);
                    shortcutKeyTextView.setAccessibilityDelegate(new ShortcutKeyAccessibilityDelegate(shortcutRepresentation.mString));
                    shortcutItemsContainer.addView(shortcutKeyTextView);
                }
            }
            shortcutContainer.addView(shortcutView);
        }
        keyboardShortcutsLayout.addView(shortcutContainer);
        if (i < keyboardShortcutGroupsSize - 1) {
            View separator = inflater.inflate(R.layout.keyboard_shortcuts_category_separator, keyboardShortcutsLayout, false);
            keyboardShortcutsLayout.addView(separator);
        }
    }
}
Also used : KeyboardShortcutGroup(android.view.KeyboardShortcutGroup) ViewGroup(android.view.ViewGroup) Canvas(android.graphics.Canvas) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) Bitmap(android.graphics.Bitmap) LayoutInflater(android.view.LayoutInflater) RelativeLayout(android.widget.RelativeLayout) KeyboardShortcutInfo(android.view.KeyboardShortcutInfo) TextView(android.widget.TextView) ImageView(android.widget.ImageView) LinearLayout(android.widget.LinearLayout)

Aggregations

KeyboardShortcutGroup (android.view.KeyboardShortcutGroup)21 KeyboardShortcutInfo (android.view.KeyboardShortcutInfo)21 ArrayList (java.util.ArrayList)6 ComponentName (android.content.ComponentName)5 PackageInfo (android.content.pm.PackageInfo)5 Bitmap (android.graphics.Bitmap)5 Canvas (android.graphics.Canvas)5 Icon (android.graphics.drawable.Icon)5 RemoteException (android.os.RemoteException)5 LayoutInflater (android.view.LayoutInflater)5 MenuItem (android.view.MenuItem)5 View (android.view.View)5 ViewGroup (android.view.ViewGroup)5 ImageView (android.widget.ImageView)5 LinearLayout (android.widget.LinearLayout)5 RelativeLayout (android.widget.RelativeLayout)5 TextView (android.widget.TextView)5 AssistUtils (com.android.internal.app.AssistUtils)5 TargetApi (android.annotation.TargetApi)1