Search in sources :

Example 11 with KeyboardShortcutInfo

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

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

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

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

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

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

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

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

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

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)

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