Search in sources :

Example 6 with KeyboardShortcutInfo

use of android.view.KeyboardShortcutInfo in project platform_frameworks_base by android.

the class Activity method onProvideKeyboardShortcuts.

@Override
public void onProvideKeyboardShortcuts(List<KeyboardShortcutGroup> data, Menu menu, int deviceId) {
    if (menu == null) {
        return;
    }
    KeyboardShortcutGroup group = null;
    int menuSize = menu.size();
    for (int i = 0; i < menuSize; ++i) {
        final MenuItem item = menu.getItem(i);
        final CharSequence title = item.getTitle();
        final char alphaShortcut = item.getAlphabeticShortcut();
        if (title != null && alphaShortcut != MIN_VALUE) {
            if (group == null) {
                final int resource = mApplication.getApplicationInfo().labelRes;
                group = new KeyboardShortcutGroup(resource != 0 ? getString(resource) : null);
            }
            group.addItem(new KeyboardShortcutInfo(title, alphaShortcut, KeyEvent.META_CTRL_ON));
        }
    }
    if (group != null) {
        data.add(group);
    }
}
Also used : KeyboardShortcutGroup(android.view.KeyboardShortcutGroup) KeyboardShortcutInfo(android.view.KeyboardShortcutInfo) MenuItem(android.view.MenuItem)

Example 7 with KeyboardShortcutInfo

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

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 8 with KeyboardShortcutInfo

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

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 9 with KeyboardShortcutInfo

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

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 10 with KeyboardShortcutInfo

use of android.view.KeyboardShortcutInfo in project cw-omnibus by commonsguy.

the class MainActivity method onProvideKeyboardShortcuts.

@TargetApi(Build.VERSION_CODES.N)
@Override
public void onProvideKeyboardShortcuts(List<KeyboardShortcutGroup> data, Menu menu, int deviceId) {
    super.onProvideKeyboardShortcuts(data, menu, deviceId);
    List<KeyboardShortcutInfo> shortcuts = new ArrayList<>();
    String caption = getString(R.string.menu_video);
    shortcuts.add(new KeyboardShortcutInfo(caption, KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.META_ALT_ON));
    caption = getString(R.string.menu_thumbnail);
    shortcuts.add(new KeyboardShortcutInfo(caption, KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.META_CTRL_ON));
    data.add(new KeyboardShortcutGroup(getString(R.string.msg_custom), shortcuts));
}
Also used : KeyboardShortcutGroup(android.view.KeyboardShortcutGroup) ArrayList(java.util.ArrayList) KeyboardShortcutInfo(android.view.KeyboardShortcutInfo) TargetApi(android.annotation.TargetApi)

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