VirtualBox

Changeset 78567 in vbox for trunk/src/VBox


Ignore:
Timestamp:
May 17, 2019 12:27:12 PM (6 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
130621
Message:

FE/Qt: bugref:6143. Adding a new qrc file for layout xml files and some initial dialog implementation.

Location:
trunk/src/VBox/Frontends/VirtualBox
Files:
3 added
6 edited
5 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VirtualBox/Makefile.kmk

    r78128 r78567  
    310310        ./src/settings/global \
    311311        ./src/settings/machine \
     312        ./src/softkeyboard \
    312313        ./src/snapshots \
    313314        ./src/widgets \
     
    747748        src/runtime/seamless/UIMachineViewSeamless.h \
    748749        src/runtime/seamless/UIMachineWindowSeamless.h \
     750        src/softkeyboard/UISoftKeyboard.h \
     751        src/softkeyboard/UISoftKeyboardDialog.h \
    749752        src/widgets/UIMiniToolBar.h \
    750753        src/wizards/firstrun/UIWizardFirstRun.h \
     
    961964        src/guestctrl/UIFileManagerHostTable.cpp \
    962965        src/guestctrl/UIGuestProcessControlWidget.cpp \
     966        src/softkeyboard/UISoftKeyboard.cpp \
    963967        src/widgets/UIMiniToolBar.cpp
    964968
     
    11981202        src/runtime/seamless/UIMachineViewSeamless.cpp \
    11991203        src/runtime/seamless/UIMachineWindowSeamless.cpp \
     1204        src/softkeyboard/UISoftKeyboard.cpp \
     1205        src/softkeyboard/UISoftKeyboardDialog.cpp \
    12001206        src/widgets/UIMiniToolBar.cpp \
    12011207        src/wizards/firstrun/UIWizardFirstRun.cpp \
     
    15211527VBoxGlobal_SOURCES          += VirtualBox2_x4.qrc
    15221528VirtualBox2_x4.qrc_RCCFLAGS  = -name BASIC2_X4
     1529VBoxGlobal_SOURCES          += VirtualBox_xml.qrc
     1530VirtualBox_xml.qrc_RCCFLAGS  = -name BASIC_XML
    15231531VBoxGlobal_SOURCES += $(VBOX_VIRTUALBOX_OUT_DIR)/VirtualBoxBrand.qrc
    15241532$(VBOX_VIRTUALBOX_OUT_DIR)/VirtualBoxBrand.qrc_RCCFLAGS = -name BRAND
  • trunk/src/VBox/Frontends/VirtualBox/VirtualBox_xml.qrc

    r78540 r78567  
    11<RCC>
    22    <qresource suffix="/">
    3         <file alias="adjust_win_size_16px.png">images/adjust_win_size_16px.png</file>
    4         <file alias="adjust_win_size_disabled_16px.png">images/adjust_win_size_disabled_16px.png</file>
    5         <file alias="arrow_down_10px.png">images/arrow_down_10px.png</file>
    6         <file alias="arrow_left_10px.png">images/arrow_left_10px.png</file>
    7         <file alias="arrow_right_10px.png">images/arrow_right_10px.png</file>
    8         <file alias="arrow_up_10px.png">images/arrow_up_10px.png</file>
    9         <file alias="attachment_add_16px.png">images/attachment_add_16px.png</file>
    10         <file alias="attachment_add_disabled_16px.png">images/attachment_add_disabled_16px.png</file>
    11         <file alias="attachment_remove_16px.png">images/attachment_remove_16px.png</file>
    12         <file alias="attachment_remove_disabled_16px.png">images/attachment_remove_disabled_16px.png</file>
    13         <file alias="audio_16px.png">images/audio_16px.png</file>
    14         <file alias="audio_all_off_16px.png">images/audio_all_off_16px.png</file>
    15         <file alias="audio_input_16px.png">images/audio_input_16px.png</file>
    16         <file alias="audio_input_off_16px.png">images/audio_input_off_16px.png</file>
    17         <file alias="audio_input_on_16px.png">images/audio_input_on_16px.png</file>
    18         <file alias="audio_output_16px.png">images/audio_output_16px.png</file>
    19         <file alias="audio_output_off_16px.png">images/audio_output_off_16px.png</file>
    20         <file alias="audio_output_on_16px.png">images/audio_output_on_16px.png</file>
    21         <file alias="auto_resize_on_16px.png">images/auto_resize_on_16px.png</file>
    22         <file alias="auto_resize_on_disabled_16px.png">images/auto_resize_on_disabled_16px.png</file>
    23         <file alias="auto_resize_on_on_16px.png">images/auto_resize_on_on_16px.png</file>
    24         <file alias="auto_resize_on_on_disabled_16px.png">images/auto_resize_on_on_disabled_16px.png</file>
    25         <file alias="cancel_16px.png">images/cancel_16px.png</file>
    26         <file alias="cd_16px.png">images/cd_16px.png</file>
    27         <file alias="cd_add_16px.png">images/cd_add_16px.png</file>
    28         <file alias="cd_add_32px.png">images/cd_add_32px.png</file>
    29         <file alias="cd_add_disabled_16px.png">images/cd_add_disabled_16px.png</file>
    30         <file alias="cd_add_disabled_32px.png">images/cd_add_disabled_32px.png</file>
    31         <file alias="cd_copy_16px.png">images/cd_copy_16px.png</file>
    32         <file alias="cd_copy_32px.png">images/cd_copy_32px.png</file>
    33         <file alias="cd_copy_disabled_16px.png">images/cd_copy_disabled_16px.png</file>
    34         <file alias="cd_copy_disabled_32px.png">images/cd_copy_disabled_32px.png</file>
    35         <file alias="cd_create_16px.png">images/cd_create_16px.png</file>
    36         <file alias="cd_create_32px.png">images/cd_create_32px.png</file>
    37         <file alias="cd_create_disabled_16px.png">images/cd_create_disabled_16px.png</file>
    38         <file alias="cd_create_disabled_32px.png">images/cd_create_disabled_32px.png</file>
    39         <file alias="cd_disabled_16px.png">images/cd_disabled_16px.png</file>
    40         <file alias="cd_modify_16px.png">images/cd_modify_16px.png</file>
    41         <file alias="cd_modify_32px.png">images/cd_modify_32px.png</file>
    42         <file alias="cd_modify_disabled_16px.png">images/cd_modify_disabled_16px.png</file>
    43         <file alias="cd_modify_disabled_32px.png">images/cd_modify_disabled_32px.png</file>
    44         <file alias="cd_move_16px.png">images/cd_move_16px.png</file>
    45         <file alias="cd_move_32px.png">images/cd_move_32px.png</file>
    46         <file alias="cd_move_disabled_16px.png">images/cd_move_disabled_16px.png</file>
    47         <file alias="cd_move_disabled_32px.png">images/cd_move_disabled_32px.png</file>
    48         <file alias="cd_read_16px.png">images/cd_read_16px.png</file>
    49         <file alias="cd_release_16px.png">images/cd_release_16px.png</file>
    50         <file alias="cd_release_32px.png">images/cd_release_32px.png</file>
    51         <file alias="cd_release_disabled_16px.png">images/cd_release_disabled_16px.png</file>
    52         <file alias="cd_release_disabled_32px.png">images/cd_release_disabled_32px.png</file>
    53         <file alias="cd_remove_16px.png">images/cd_remove_16px.png</file>
    54         <file alias="cd_remove_32px.png">images/cd_remove_32px.png</file>
    55         <file alias="cd_remove_disabled_16px.png">images/cd_remove_disabled_16px.png</file>
    56         <file alias="cd_remove_disabled_32px.png">images/cd_remove_disabled_32px.png</file>
    57         <file alias="cd_search_16px.png">images/cd_search_16px.png</file>
    58         <file alias="cd_search_32px.png">images/cd_search_32px.png</file>
    59         <file alias="cd_search_disabled_16px.png">images/cd_search_disabled_16px.png</file>
    60         <file alias="cd_search_disabled_32px.png">images/cd_search_disabled_32px.png</file>
    61         <file alias="cd_unmount_16px.png">images/cd_unmount_16px.png</file>
    62         <file alias="cd_unmount_disabled_16px.png">images/cd_unmount_disabled_16px.png</file>
    63         <file alias="cd_write_16px.png">images/cd_write_16px.png</file>
    64         <file alias="chipset_16px.png">images/chipset_16px.png</file>
    65         <file alias="chipset_24px.png">images/chipset_24px.png</file>
    66         <file alias="chipset_32px.png">images/chipset_32px.png</file>
    67         <file alias="chipset_warning_16px.png">images/chipset_warning_16px.png</file>
    68         <file alias="close_16px.png">images/close_16px.png</file>
    69         <file alias="close_popup_16px.png">images/close_popup_16px.png</file>
    70         <file alias="cloud_profile_add_16px.png">images/cloud_profile_add_16px.png</file>
    71         <file alias="cloud_profile_add_32px.png">images/cloud_profile_add_32px.png</file>
    72         <file alias="cloud_profile_add_disabled_16px.png">images/cloud_profile_add_disabled_16px.png</file>
    73         <file alias="cloud_profile_add_disabled_32px.png">images/cloud_profile_add_disabled_32px.png</file>
    74         <file alias="cloud_profile_edit_16px.png">images/cloud_profile_edit_16px.png</file>
    75         <file alias="cloud_profile_edit_32px.png">images/cloud_profile_edit_32px.png</file>
    76         <file alias="cloud_profile_edit_disabled_16px.png">images/cloud_profile_edit_disabled_16px.png</file>
    77         <file alias="cloud_profile_edit_disabled_32px.png">images/cloud_profile_edit_disabled_32px.png</file>
    78         <file alias="cloud_profile_help_16px.png">images/cloud_profile_help_16px.png</file>
    79         <file alias="cloud_profile_help_32px.png">images/cloud_profile_help_32px.png</file>
    80         <file alias="cloud_profile_help_disabled_16px.png">images/cloud_profile_help_disabled_16px.png</file>
    81         <file alias="cloud_profile_help_disabled_32px.png">images/cloud_profile_help_disabled_32px.png</file>
    82         <file alias="cloud_profile_manager_16px.png">images/cloud_profile_manager_16px.png</file>
    83         <file alias="cloud_profile_manager_24px.png">images/cloud_profile_manager_24px.png</file>
    84         <file alias="cloud_profile_manager_32px.png">images/cloud_profile_manager_32px.png</file>
    85         <file alias="cloud_profile_manager_disabled_16px.png">images/cloud_profile_manager_disabled_16px.png</file>
    86         <file alias="cloud_profile_manager_disabled_24px.png">images/cloud_profile_manager_disabled_24px.png</file>
    87         <file alias="cloud_profile_remove_16px.png">images/cloud_profile_remove_16px.png</file>
    88         <file alias="cloud_profile_remove_32px.png">images/cloud_profile_remove_32px.png</file>
    89         <file alias="cloud_profile_remove_disabled_16px.png">images/cloud_profile_remove_disabled_16px.png</file>
    90         <file alias="cloud_profile_remove_disabled_32px.png">images/cloud_profile_remove_disabled_32px.png</file>
    91         <file alias="cloud_profile_restore_16px.png">images/cloud_profile_restore_16px.png</file>
    92         <file alias="cloud_profile_restore_32px.png">images/cloud_profile_restore_32px.png</file>
    93         <file alias="cloud_profile_restore_disabled_16px.png">images/cloud_profile_restore_disabled_16px.png</file>
    94         <file alias="cloud_profile_restore_disabled_32px.png">images/cloud_profile_restore_disabled_32px.png</file>
    95         <file alias="cloud_profile_try_16px.png">images/cloud_profile_try_16px.png</file>
    96         <file alias="cloud_profile_try_32px.png">images/cloud_profile_try_32px.png</file>
    97         <file alias="cloud_profile_try_disabled_16px.png">images/cloud_profile_try_disabled_16px.png</file>
    98         <file alias="cloud_profile_try_disabled_32px.png">images/cloud_profile_try_disabled_32px.png</file>
    99         <file alias="collapse_all_16px.png">images/collapse_all_16px.png</file>
    100         <file alias="connect_16px.png">images/connect_16px.png</file>
    101         <file alias="connect_on_16px.png">images/connect_on_16px.png</file>
    102         <file alias="controller_add_16px.png">images/controller_add_16px.png</file>
    103         <file alias="controller_add_disabled_16px.png">images/controller_add_disabled_16px.png</file>
    104         <file alias="controller_remove_16px.png">images/controller_remove_16px.png</file>
    105         <file alias="controller_remove_disabled_16px.png">images/controller_remove_disabled_16px.png</file>
    106         <file alias="cpu_16px.png">images/cpu_16px.png</file>
    107         <file alias="description_16px.png">images/description_16px.png</file>
    108         <file alias="display_hardware_16px.png">images/display_hardware_16px.png</file>
    109         <file alias="display_hardware_write_16px.png">images/display_hardware_write_16px.png</file>
    110         <file alias="display_software_16px.png">images/display_software_16px.png</file>
    111         <file alias="download_manager_16px.png">images/download_manager_16px.png</file>
    112         <file alias="download_manager_32px.png">images/download_manager_32px.png</file>
    113         <file alias="download_manager_error_16px.png">images/download_manager_error_16px.png</file>
    114         <file alias="download_manager_loading_16px.png">images/download_manager_loading_16px.png</file>
    115         <file alias="drag_drop_16px.png">images/drag_drop_16px.png</file>
    116         <file alias="drag_drop_disabled_16px.png">images/drag_drop_disabled_16px.png</file>
    117         <file alias="edata_add_16px.png">images/edata_add_16px.png</file>
    118         <file alias="edata_add_22px.png">images/edata_add_22px.png</file>
    119         <file alias="edata_add_disabled_16px.png">images/edata_add_disabled_16px.png</file>
    120         <file alias="edata_add_disabled_22px.png">images/edata_add_disabled_22px.png</file>
    121         <file alias="edata_global_32px.png">images/edata_global_32px.png</file>
    122         <file alias="edata_load_16px.png">images/edata_load_16px.png</file>
    123         <file alias="edata_load_22px.png">images/edata_load_22px.png</file>
    124         <file alias="edata_load_disabled_16px.png">images/edata_load_disabled_16px.png</file>
    125         <file alias="edata_load_disabled_22px.png">images/edata_load_disabled_22px.png</file>
    126         <file alias="edata_manager_16px.png">images/edata_manager_16px.png</file>
    127         <file alias="edata_manager_32px.png">images/edata_manager_32px.png</file>
    128         <file alias="edata_remove_16px.png">images/edata_remove_16px.png</file>
    129         <file alias="edata_remove_22px.png">images/edata_remove_22px.png</file>
    130         <file alias="edata_remove_disabled_16px.png">images/edata_remove_disabled_16px.png</file>
    131         <file alias="edata_remove_disabled_22px.png">images/edata_remove_disabled_22px.png</file>
    132         <file alias="edata_save_16px.png">images/edata_save_16px.png</file>
    133         <file alias="edata_save_22px.png">images/edata_save_22px.png</file>
    134         <file alias="edata_save_disabled_16px.png">images/edata_save_disabled_16px.png</file>
    135         <file alias="edata_save_disabled_22px.png">images/edata_save_disabled_22px.png</file>
    136         <file alias="eraser_16px.png">images/eraser_16px.png</file>
    137         <file alias="exit_16px.png">images/exit_16px.png</file>
    138         <file alias="expand_all_16px.png">images/expand_all_16px.png</file>
    139         <file alias="expanding_collapsing_16px.png">images/expanding_collapsing_16px.png</file>
    140         <file alias="export_16px.png">images/export_16px.png</file>
    141         <file alias="export_32px.png">images/export_32px.png</file>
    142         <file alias="export_disabled_16px.png">images/export_disabled_16px.png</file>
    143         <file alias="export_disabled_32px.png">images/export_disabled_32px.png</file>
    144         <file alias="extension_pack_16px.png">images/extension_pack_16px.png</file>
    145         <file alias="extension_pack_24px.png">images/extension_pack_24px.png</file>
    146         <file alias="extension_pack_32px.png">images/extension_pack_32px.png</file>
    147         <file alias="extension_pack_install_16px.png">images/extension_pack_install_16px.png</file>
    148         <file alias="extension_pack_install_disabled_16px.png">images/extension_pack_install_disabled_16px.png</file>
    149         <file alias="extension_pack_uninstall_16px.png">images/extension_pack_uninstall_16px.png</file>
    150         <file alias="extension_pack_uninstall_disabled_16px.png">images/extension_pack_uninstall_disabled_16px.png</file>
    151         <file alias="extension_pack_warning_16px.png">images/extension_pack_warning_16px.png</file>
    152         <file alias="favorite_24px.png">images/favorite_24px.png</file>
    153         <file alias="favorite_pressed_24px.png">images/favorite_pressed_24px.png</file>
    154         <file alias="fd_16px.png">images/fd_16px.png</file>
    155         <file alias="fd_add_16px.png">images/fd_add_16px.png</file>
    156         <file alias="fd_add_32px.png">images/fd_add_32px.png</file>
    157         <file alias="fd_add_disabled_16px.png">images/fd_add_disabled_16px.png</file>
    158         <file alias="fd_add_disabled_32px.png">images/fd_add_disabled_32px.png</file>
    159         <file alias="fd_copy_16px.png">images/fd_copy_16px.png</file>
    160         <file alias="fd_copy_32px.png">images/fd_copy_32px.png</file>
    161         <file alias="fd_copy_disabled_16px.png">images/fd_copy_disabled_16px.png</file>
    162         <file alias="fd_copy_disabled_32px.png">images/fd_copy_disabled_32px.png</file>
    163         <file alias="fd_create_16px.png">images/fd_create_16px.png</file>
    164         <file alias="fd_create_32px.png">images/fd_create_32px.png</file>
    165         <file alias="fd_create_disabled_16px.png">images/fd_create_disabled_16px.png</file>
    166         <file alias="fd_create_disabled_32px.png">images/fd_create_disabled_32px.png</file>
    167         <file alias="fd_disabled_16px.png">images/fd_disabled_16px.png</file>
    168         <file alias="fd_modify_16px.png">images/fd_modify_16px.png</file>
    169         <file alias="fd_modify_32px.png">images/fd_modify_32px.png</file>
    170         <file alias="fd_modify_disabled_16px.png">images/fd_modify_disabled_16px.png</file>
    171         <file alias="fd_modify_disabled_32px.png">images/fd_modify_disabled_32px.png</file>
    172         <file alias="fd_move_16px.png">images/fd_move_16px.png</file>
    173         <file alias="fd_move_32px.png">images/fd_move_32px.png</file>
    174         <file alias="fd_move_disabled_16px.png">images/fd_move_disabled_16px.png</file>
    175         <file alias="fd_move_disabled_32px.png">images/fd_move_disabled_32px.png</file>
    176         <file alias="fd_read_16px.png">images/fd_read_16px.png</file>
    177         <file alias="fd_release_16px.png">images/fd_release_16px.png</file>
    178         <file alias="fd_release_32px.png">images/fd_release_32px.png</file>
    179         <file alias="fd_release_disabled_16px.png">images/fd_release_disabled_16px.png</file>
    180         <file alias="fd_release_disabled_32px.png">images/fd_release_disabled_32px.png</file>
    181         <file alias="fd_remove_16px.png">images/fd_remove_16px.png</file>
    182         <file alias="fd_remove_32px.png">images/fd_remove_32px.png</file>
    183         <file alias="fd_remove_disabled_16px.png">images/fd_remove_disabled_16px.png</file>
    184         <file alias="fd_remove_disabled_32px.png">images/fd_remove_disabled_32px.png</file>
    185         <file alias="fd_search_16px.png">images/fd_search_16px.png</file>
    186         <file alias="fd_search_32px.png">images/fd_search_32px.png</file>
    187         <file alias="fd_search_disabled_16px.png">images/fd_search_disabled_16px.png</file>
    188         <file alias="fd_search_disabled_32px.png">images/fd_search_disabled_32px.png</file>
    189         <file alias="fd_unmount_16px.png">images/fd_unmount_16px.png</file>
    190         <file alias="fd_unmount_disabled_16px.png">images/fd_unmount_disabled_16px.png</file>
    191         <file alias="fd_write_16px.png">images/fd_write_16px.png</file>
    192         <file alias="file_manager_16px.png">images/file_manager_16px.png</file>
    193         <file alias="file_manager_24px.png">images/file_manager_24px.png</file>
    194         <file alias="file_manager_32px.png">images/file_manager_32px.png</file>
    195         <file alias="file_manager_copy_16px.png">images/file_manager_copy_16px.png</file>
    196         <file alias="file_manager_copy_24px.png">images/file_manager_copy_24px.png</file>
    197         <file alias="file_manager_copy_disabled_16px.png">images/file_manager_copy_disabled_16px.png</file>
    198         <file alias="file_manager_copy_disabled_24px.png">images/file_manager_copy_disabled_24px.png</file>
    199         <file alias="file_manager_copy_to_guest_16px.png">images/file_manager_copy_to_guest_16px.png</file>
    200         <file alias="file_manager_copy_to_guest_24px.png">images/file_manager_copy_to_guest_24px.png</file>
    201         <file alias="file_manager_copy_to_guest_disabled_16px.png">images/file_manager_copy_to_guest_disabled_16px.png</file>
    202         <file alias="file_manager_copy_to_guest_disabled_24px.png">images/file_manager_copy_to_guest_disabled_24px.png</file>
    203         <file alias="file_manager_copy_to_host_16px.png">images/file_manager_copy_to_host_16px.png</file>
    204         <file alias="file_manager_copy_to_host_24px.png">images/file_manager_copy_to_host_24px.png</file>
    205         <file alias="file_manager_copy_to_host_disabled_16px.png">images/file_manager_copy_to_host_disabled_16px.png</file>
    206         <file alias="file_manager_copy_to_host_disabled_24px.png">images/file_manager_copy_to_host_disabled_24px.png</file>
    207         <file alias="file_manager_cut_16px.png">images/file_manager_cut_16px.png</file>
    208         <file alias="file_manager_cut_24px.png">images/file_manager_cut_24px.png</file>
    209         <file alias="file_manager_cut_disabled_16px.png">images/file_manager_cut_disabled_16px.png</file>
    210         <file alias="file_manager_cut_disabled_24px.png">images/file_manager_cut_disabled_24px.png</file>
    211         <file alias="file_manager_delete_16px.png">images/file_manager_delete_16px.png</file>
    212         <file alias="file_manager_delete_24px.png">images/file_manager_delete_24px.png</file>
    213         <file alias="file_manager_delete_disabled_16px.png">images/file_manager_delete_disabled_16px.png</file>
    214         <file alias="file_manager_delete_disabled_24px.png">images/file_manager_delete_disabled_24px.png</file>
    215         <file alias="file_manager_disabled_16px.png">images/file_manager_disabled_16px.png</file>
    216         <file alias="file_manager_disabled_24px.png">images/file_manager_disabled_24px.png</file>
    217         <file alias="file_manager_disabled_32px.png">images/file_manager_disabled_32px.png</file>
    218         <file alias="file_manager_file_16px.png">images/file_manager_file_16px.png</file>
    219         <file alias="file_manager_file_symlink_16px.png">images/file_manager_file_symlink_16px.png</file>
    220         <file alias="file_manager_folder_16px.png">images/file_manager_folder_16px.png</file>
    221         <file alias="file_manager_folder_symlink_16px.png">images/file_manager_folder_symlink_16px.png</file>
    222         <file alias="file_manager_go_home_16px.png">images/file_manager_go_home_16px.png</file>
    223         <file alias="file_manager_go_home_24px.png">images/file_manager_go_home_24px.png</file>
    224         <file alias="file_manager_go_home_disabled_16px.png">images/file_manager_go_home_disabled_16px.png</file>
    225         <file alias="file_manager_go_home_disabled_24px.png">images/file_manager_go_home_disabled_24px.png</file>
    226         <file alias="file_manager_go_up_16px.png">images/file_manager_go_up_16px.png</file>
    227         <file alias="file_manager_go_up_24px.png">images/file_manager_go_up_24px.png</file>
    228         <file alias="file_manager_go_up_disabled_16px.png">images/file_manager_go_up_disabled_16px.png</file>
    229         <file alias="file_manager_go_up_disabled_24px.png">images/file_manager_go_up_disabled_24px.png</file>
    230         <file alias="file_manager_invert_selection_16px.png">images/file_manager_invert_selection_16px.png</file>
    231         <file alias="file_manager_invert_selection_24px.png">images/file_manager_invert_selection_24px.png</file>
    232         <file alias="file_manager_invert_selection_disabled_16px.png">images/file_manager_invert_selection_disabled_16px.png</file>
    233         <file alias="file_manager_invert_selection_disabled_24px.png">images/file_manager_invert_selection_disabled_24px.png</file>
    234         <file alias="file_manager_log_16px.png">images/file_manager_log_16px.png</file>
    235         <file alias="file_manager_log_32px.png">images/file_manager_log_32px.png</file>
    236         <file alias="file_manager_log_disabled_16px.png">images/file_manager_log_disabled_16px.png</file>
    237         <file alias="file_manager_log_disabled_32px.png">images/file_manager_log_disabled_32px.png</file>
    238         <file alias="file_manager_new_directory_16px.png">images/file_manager_new_directory_16px.png</file>
    239         <file alias="file_manager_new_directory_24px.png">images/file_manager_new_directory_24px.png</file>
    240         <file alias="file_manager_new_directory_disabled_16px.png">images/file_manager_new_directory_disabled_16px.png</file>
    241         <file alias="file_manager_new_directory_disabled_24px.png">images/file_manager_new_directory_disabled_24px.png</file>
    242         <file alias="file_manager_operations_16px.png">images/file_manager_operations_16px.png</file>
    243         <file alias="file_manager_operations_32px.png">images/file_manager_operations_32px.png</file>
    244         <file alias="file_manager_operations_disabled_16px.png">images/file_manager_operations_disabled_16px.png</file>
    245         <file alias="file_manager_operations_disabled_32px.png">images/file_manager_operations_disabled_32px.png</file>
    246         <file alias="file_manager_options_16px.png">images/file_manager_options_16px.png</file>
    247         <file alias="file_manager_options_32px.png">images/file_manager_options_32px.png</file>
    248         <file alias="file_manager_options_disabled_16px.png">images/file_manager_options_disabled_16px.png</file>
    249         <file alias="file_manager_options_disabled_32px.png">images/file_manager_options_disabled_32px.png</file>
    250         <file alias="file_manager_paste_16px.png">images/file_manager_paste_16px.png</file>
    251         <file alias="file_manager_paste_24px.png">images/file_manager_paste_24px.png</file>
    252         <file alias="file_manager_paste_disabled_16px.png">images/file_manager_paste_disabled_16px.png</file>
    253         <file alias="file_manager_paste_disabled_24px.png">images/file_manager_paste_disabled_24px.png</file>
    254         <file alias="file_manager_properties_16px.png">images/file_manager_properties_16px.png</file>
    255         <file alias="file_manager_properties_24px.png">images/file_manager_properties_24px.png</file>
    256         <file alias="file_manager_properties_disabled_16px.png">images/file_manager_properties_disabled_16px.png</file>
    257         <file alias="file_manager_properties_disabled_24px.png">images/file_manager_properties_disabled_24px.png</file>
    258         <file alias="file_manager_refresh_16px.png">images/file_manager_refresh_16px.png</file>
    259         <file alias="file_manager_refresh_24px.png">images/file_manager_refresh_24px.png</file>
    260         <file alias="file_manager_refresh_disabled_16px.png">images/file_manager_refresh_disabled_16px.png</file>
    261         <file alias="file_manager_refresh_disabled_24px.png">images/file_manager_refresh_disabled_24px.png</file>
    262         <file alias="file_manager_rename_16px.png">images/file_manager_rename_16px.png</file>
    263         <file alias="file_manager_rename_24px.png">images/file_manager_rename_24px.png</file>
    264         <file alias="file_manager_rename_disabled_16px.png">images/file_manager_rename_disabled_16px.png</file>
    265         <file alias="file_manager_rename_disabled_24px.png">images/file_manager_rename_disabled_24px.png</file>
    266         <file alias="file_manager_select_all_16px.png">images/file_manager_select_all_16px.png</file>
    267         <file alias="file_manager_select_all_24px.png">images/file_manager_select_all_24px.png</file>
    268         <file alias="file_manager_select_all_disabled_16px.png">images/file_manager_select_all_disabled_16px.png</file>
    269         <file alias="file_manager_select_all_disabled_24px.png">images/file_manager_select_all_disabled_24px.png</file>
    270         <file alias="file_manager_session_16px.png">images/file_manager_session_16px.png</file>
    271         <file alias="file_manager_session_32px.png">images/file_manager_session_32px.png</file>
    272         <file alias="file_manager_session_disabled_16px.png">images/file_manager_session_disabled_16px.png</file>
    273         <file alias="file_manager_session_disabled_32px.png">images/file_manager_session_disabled_32px.png</file>
    274         <file alias="floppy_16px.png">images/floppy_16px.png</file>
    275         <file alias="floppy_add_16px.png">images/floppy_add_16px.png</file>
    276         <file alias="floppy_add_disabled_16px.png">images/floppy_add_disabled_16px.png</file>
    277         <file alias="floppy_collapse_16px.png">images/floppy_collapse_16px.png</file>
    278         <file alias="floppy_expand_16px.png">images/floppy_expand_16px.png</file>
    279         <file alias="fullscreen_16px.png">images/fullscreen_16px.png</file>
    280         <file alias="fullscreen_disabled_16px.png">images/fullscreen_disabled_16px.png</file>
    281         <file alias="fullscreen_on_16px.png">images/fullscreen_on_16px.png</file>
    282         <file alias="fullscreen_on_disabled_16px.png">images/fullscreen_on_disabled_16px.png</file>
    283         <file alias="global_settings_16px.png">images/global_settings_16px.png</file>
    284         <file alias="global_settings_32px.png">images/global_settings_32px.png</file>
    285         <file alias="global_settings_disabled_16px.png">images/global_settings_disabled_16px.png</file>
    286         <file alias="global_settings_disabled_32px.png">images/global_settings_disabled_32px.png</file>
    287         <file alias="group_abstract_16px.png">images/group_abstract_16px.png</file>
    288         <file alias="guesttools_16px.png">images/guesttools_16px.png</file>
    289         <file alias="guesttools_disabled_16px.png">images/guesttools_disabled_16px.png</file>
    290         <file alias="hd_16px.png">images/hd_16px.png</file>
    291         <file alias="hd_24px.png">images/hd_24px.png</file>
    292         <file alias="hd_32px.png">images/hd_32px.png</file>
    293         <file alias="hd_add_16px.png">images/hd_add_16px.png</file>
    294         <file alias="hd_add_32px.png">images/hd_add_32px.png</file>
    295         <file alias="hd_add_disabled_16px.png">images/hd_add_disabled_16px.png</file>
    296         <file alias="hd_add_disabled_32px.png">images/hd_add_disabled_32px.png</file>
    297         <file alias="hd_copy_16px.png">images/hd_copy_16px.png</file>
    298         <file alias="hd_copy_32px.png">images/hd_copy_32px.png</file>
    299         <file alias="hd_copy_disabled_16px.png">images/hd_copy_disabled_16px.png</file>
    300         <file alias="hd_copy_disabled_32px.png">images/hd_copy_disabled_32px.png</file>
    301         <file alias="hd_create_16px.png">images/hd_create_16px.png</file>
    302         <file alias="hd_create_32px.png">images/hd_create_32px.png</file>
    303         <file alias="hd_create_disabled_16px.png">images/hd_create_disabled_16px.png</file>
    304         <file alias="hd_create_disabled_32px.png">images/hd_create_disabled_32px.png</file>
    305         <file alias="hd_disabled_16px.png">images/hd_disabled_16px.png</file>
    306         <file alias="hd_modify_16px.png">images/hd_modify_16px.png</file>
    307         <file alias="hd_modify_32px.png">images/hd_modify_32px.png</file>
    308         <file alias="hd_modify_disabled_16px.png">images/hd_modify_disabled_16px.png</file>
    309         <file alias="hd_modify_disabled_32px.png">images/hd_modify_disabled_32px.png</file>
    310         <file alias="hd_move_16px.png">images/hd_move_16px.png</file>
    311         <file alias="hd_move_32px.png">images/hd_move_32px.png</file>
    312         <file alias="hd_move_disabled_16px.png">images/hd_move_disabled_16px.png</file>
    313         <file alias="hd_move_disabled_32px.png">images/hd_move_disabled_32px.png</file>
    314         <file alias="hd_new_16px.png">images/hd_new_16px.png</file>
    315         <file alias="hd_new_disabled_16px.png">images/hd_new_disabled_16px.png</file>
    316         <file alias="hd_read_16px.png">images/hd_read_16px.png</file>
    317         <file alias="hd_release_16px.png">images/hd_release_16px.png</file>
    318         <file alias="hd_release_32px.png">images/hd_release_32px.png</file>
    319         <file alias="hd_release_disabled_16px.png">images/hd_release_disabled_16px.png</file>
    320         <file alias="hd_release_disabled_32px.png">images/hd_release_disabled_32px.png</file>
    321         <file alias="hd_remove_16px.png">images/hd_remove_16px.png</file>
    322         <file alias="hd_remove_32px.png">images/hd_remove_32px.png</file>
    323         <file alias="hd_remove_disabled_16px.png">images/hd_remove_disabled_16px.png</file>
    324         <file alias="hd_remove_disabled_32px.png">images/hd_remove_disabled_32px.png</file>
    325         <file alias="hd_search_16px.png">images/hd_search_16px.png</file>
    326         <file alias="hd_search_32px.png">images/hd_search_32px.png</file>
    327         <file alias="hd_search_disabled_16px.png">images/hd_search_disabled_16px.png</file>
    328         <file alias="hd_search_disabled_32px.png">images/hd_search_disabled_32px.png</file>
    329         <file alias="hd_settings_16px.png">images/hd_settings_16px.png</file>
    330         <file alias="hd_settings_disabled_16px.png">images/hd_settings_disabled_16px.png</file>
    331         <file alias="hd_warning_16px.png">images/hd_warning_16px.png</file>
    332         <file alias="hd_write_16px.png">images/hd_write_16px.png</file>
    333         <file alias="help_16px.png">images/help_16px.png</file>
    334         <file alias="help_button_normal_mac_22px.png">images/help_button_normal_mac_22px.png</file>
    335         <file alias="help_button_pressed_mac_22px.png">images/help_button_pressed_mac_22px.png</file>
    336         <file alias="host_iface_add_16px.png">images/host_iface_add_16px.png</file>
    337         <file alias="host_iface_add_32px.png">images/host_iface_add_32px.png</file>
    338         <file alias="host_iface_add_disabled_16px.png">images/host_iface_add_disabled_16px.png</file>
    339         <file alias="host_iface_add_disabled_32px.png">images/host_iface_add_disabled_32px.png</file>
    340         <file alias="host_iface_edit_16px.png">images/host_iface_edit_16px.png</file>
    341         <file alias="host_iface_edit_32px.png">images/host_iface_edit_32px.png</file>
    342         <file alias="host_iface_edit_disabled_16px.png">images/host_iface_edit_disabled_16px.png</file>
    343         <file alias="host_iface_edit_disabled_32px.png">images/host_iface_edit_disabled_32px.png</file>
    344         <file alias="host_iface_manager_16px.png">images/host_iface_manager_16px.png</file>
    345         <file alias="host_iface_manager_24px.png">images/host_iface_manager_24px.png</file>
    346         <file alias="host_iface_manager_32px.png">images/host_iface_manager_32px.png</file>
    347         <file alias="host_iface_manager_disabled_16px.png">images/host_iface_manager_disabled_16px.png</file>
    348         <file alias="host_iface_manager_disabled_24px.png">images/host_iface_manager_disabled_24px.png</file>
    349         <file alias="host_iface_remove_16px.png">images/host_iface_remove_16px.png</file>
    350         <file alias="host_iface_remove_32px.png">images/host_iface_remove_32px.png</file>
    351         <file alias="host_iface_remove_disabled_16px.png">images/host_iface_remove_disabled_16px.png</file>
    352         <file alias="host_iface_remove_disabled_32px.png">images/host_iface_remove_disabled_32px.png</file>
    353         <file alias="hostkey_16px.png">images/hostkey_16px.png</file>
    354         <file alias="hostkey_captured_16px.png">images/hostkey_captured_16px.png</file>
    355         <file alias="hostkey_captured_checked_16px.png">images/hostkey_captured_checked_16px.png</file>
    356         <file alias="hostkey_captured_pressed_16px.png">images/hostkey_captured_pressed_16px.png</file>
    357         <file alias="hostkey_captured_pressed_checked_16px.png">images/hostkey_captured_pressed_checked_16px.png</file>
    358         <file alias="hostkey_checked_16px.png">images/hostkey_checked_16px.png</file>
    359         <file alias="hostkey_pressed_16px.png">images/hostkey_pressed_16px.png</file>
    360         <file alias="hostkey_pressed_checked_16px.png">images/hostkey_pressed_checked_16px.png</file>
    361         <file alias="hostkey_warning_16px.png">images/hostkey_warning_16px.png</file>
    362         <file alias="ide_16px.png">images/ide_16px.png</file>
    363         <file alias="ide_add_16px.png">images/ide_add_16px.png</file>
    364         <file alias="ide_add_disabled_16px.png">images/ide_add_disabled_16px.png</file>
    365         <file alias="ide_collapse_16px.png">images/ide_collapse_16px.png</file>
    366         <file alias="ide_expand_16px.png">images/ide_expand_16px.png</file>
    367         <file alias="import_16px.png">images/import_16px.png</file>
    368         <file alias="import_32px.png">images/import_32px.png</file>
    369         <file alias="import_disabled_16px.png">images/import_disabled_16px.png</file>
    370         <file alias="import_disabled_32px.png">images/import_disabled_32px.png</file>
    371         <file alias="interface_16px.png">images/interface_16px.png</file>
    372         <file alias="interface_24px.png">images/interface_24px.png</file>
    373         <file alias="interface_32px.png">images/interface_32px.png</file>
    374         <file alias="interface_warning_16px.png">images/interface_warning_16px.png</file>
    375         <file alias="keyboard_16px.png">images/keyboard_16px.png</file>
    376         <file alias="keyboard_24px.png">images/keyboard_24px.png</file>
    377         <file alias="keyboard_32px.png">images/keyboard_32px.png</file>
    378         <file alias="keyboard_settings_16px.png">images/keyboard_settings_16px.png</file>
    379         <file alias="keyboard_settings_disabled_16px.png">images/keyboard_settings_disabled_16px.png</file>
    380         <file alias="list_movedown_16px.png">images/list_movedown_16px.png</file>
    381         <file alias="list_movedown_disabled_16px.png">images/list_movedown_disabled_16px.png</file>
    382         <file alias="list_moveup_16px.png">images/list_moveup_16px.png</file>
    383         <file alias="list_moveup_disabled_16px.png">images/list_moveup_disabled_16px.png</file>
    384         <file alias="log_viewer_bookmark_16px.png">images/log_viewer_bookmark_16px.png</file>
    385         <file alias="log_viewer_bookmark_32px.png">images/log_viewer_bookmark_32px.png</file>
    386         <file alias="log_viewer_bookmark_disabled_16px.png">images/log_viewer_bookmark_disabled_16px.png</file>
    387         <file alias="log_viewer_bookmark_disabled_32px.png">images/log_viewer_bookmark_disabled_32px.png</file>
    388         <file alias="log_viewer_bookmark_off_16px.png">images/log_viewer_bookmark_off_16px.png</file>
    389         <file alias="log_viewer_bookmark_on_16px.png">images/log_viewer_bookmark_on_16px.png</file>
    390         <file alias="log_viewer_choose_font_16px.png">images/log_viewer_choose_font_16px.png</file>
    391         <file alias="log_viewer_delete_all_bookmarks_16px.png">images/log_viewer_delete_all_bookmarks_16px.png</file>
    392         <file alias="log_viewer_delete_all_filters_16px.png">images/log_viewer_delete_all_filters_16px.png</file>
    393         <file alias="log_viewer_delete_current_bookmark_16px.png">images/log_viewer_delete_current_bookmark_16px.png</file>
    394         <file alias="log_viewer_delete_filter_16px.png">images/log_viewer_delete_filter_16px.png</file>
    395         <file alias="log_viewer_filter_16px.png">images/log_viewer_filter_16px.png</file>
    396         <file alias="log_viewer_filter_32px.png">images/log_viewer_filter_32px.png</file>
    397         <file alias="log_viewer_filter_add_16px.png">images/log_viewer_filter_add_16px.png</file>
    398         <file alias="log_viewer_filter_disabled_16px.png">images/log_viewer_filter_disabled_16px.png</file>
    399         <file alias="log_viewer_filter_disabled_32px.png">images/log_viewer_filter_disabled_32px.png</file>
    400         <file alias="log_viewer_find_16px.png">images/log_viewer_find_16px.png</file>
    401         <file alias="log_viewer_find_32px.png">images/log_viewer_find_32px.png</file>
    402         <file alias="log_viewer_find_disabled_16px.png">images/log_viewer_find_disabled_16px.png</file>
    403         <file alias="log_viewer_find_disabled_32px.png">images/log_viewer_find_disabled_32px.png</file>
    404         <file alias="log_viewer_goto_next_bookmark_16px.png">images/log_viewer_goto_next_bookmark_16px.png</file>
    405         <file alias="log_viewer_goto_previous_bookmark_16px.png">images/log_viewer_goto_previous_bookmark_16px.png</file>
    406         <file alias="log_viewer_goto_selected_bookmark_16px.png">images/log_viewer_goto_selected_bookmark_16px.png</file>
    407         <file alias="log_viewer_options_16px.png">images/log_viewer_options_16px.png</file>
    408         <file alias="log_viewer_options_32px.png">images/log_viewer_options_32px.png</file>
    409         <file alias="log_viewer_options_disabled_16px.png">images/log_viewer_options_disabled_16px.png</file>
    410         <file alias="log_viewer_options_disabled_32px.png">images/log_viewer_options_disabled_32px.png</file>
    411         <file alias="log_viewer_refresh_16px.png">images/log_viewer_refresh_16px.png</file>
    412         <file alias="log_viewer_refresh_32px.png">images/log_viewer_refresh_32px.png</file>
    413         <file alias="log_viewer_refresh_disabled_16px.png">images/log_viewer_refresh_disabled_16px.png</file>
     3        <file alias="us_layout.xml">xml/us_layout.xml</file>
    4144    </qresource>
    4155</RCC>
  • trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataDefs.h

    r78519 r78567  
    569569        RuntimeMenuInputActionType_Keyboard           = RT_BIT(0),
    570570        RuntimeMenuInputActionType_KeyboardSettings   = RT_BIT(1),
    571         RuntimeMenuInputActionType_TypeCAD            = RT_BIT(2),
     571        RuntimeMenuInputActionType_SoftKeyboard       = RT_BIT(2),
     572        RuntimeMenuInputActionType_TypeCAD            = RT_BIT(3),
    572573#ifdef VBOX_WS_X11
    573         RuntimeMenuInputActionType_TypeCABS           = RT_BIT(3),
    574 #endif
    575         RuntimeMenuInputActionType_TypeCtrlBreak      = RT_BIT(4),
    576         RuntimeMenuInputActionType_TypeInsert         = RT_BIT(5),
    577         RuntimeMenuInputActionType_TypePrintScreen    = RT_BIT(6),
    578         RuntimeMenuInputActionType_TypeAltPrintScreen = RT_BIT(7),
    579         RuntimeMenuInputActionType_Mouse              = RT_BIT(8),
    580         RuntimeMenuInputActionType_MouseIntegration   = RT_BIT(9),
    581         RuntimeMenuInputActionType_TypeHostKeyCombo   = RT_BIT(10),
     574        RuntimeMenuInputActionType_TypeCABS           = RT_BIT(4),
     575#endif
     576        RuntimeMenuInputActionType_TypeCtrlBreak      = RT_BIT(5),
     577        RuntimeMenuInputActionType_TypeInsert         = RT_BIT(6),
     578        RuntimeMenuInputActionType_TypePrintScreen    = RT_BIT(7),
     579        RuntimeMenuInputActionType_TypeAltPrintScreen = RT_BIT(8),
     580        RuntimeMenuInputActionType_Mouse              = RT_BIT(9),
     581        RuntimeMenuInputActionType_MouseIntegration   = RT_BIT(10),
     582        RuntimeMenuInputActionType_TypeHostKeyCombo   = RT_BIT(11),
    582583        RuntimeMenuInputActionType_All                = 0xFFFF
    583584    };
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.cpp

    r77822 r78567  
    15411541        setName(QApplication::translate("UIActionPool", "&Keyboard Settings..."));
    15421542        setStatusTip(QApplication::translate("UIActionPool", "Display global preferences window to configure keyboard shortcuts"));
     1543    }
     1544};
     1545
     1546/** Simple action extension, used as 'Show Soft Keyboard' action class. */
     1547class UIActionSimpleRuntimeShowSoftKeyboard : public UIActionSimple
     1548{
     1549    Q_OBJECT;
     1550
     1551public:
     1552
     1553    /** Constructs action passing @a pParent to the base-class. */
     1554    UIActionSimpleRuntimeShowSoftKeyboard(UIActionPool *pParent)
     1555        : UIActionSimple(pParent, ":/keyboard_settings_16px.png", ":/keyboard_settings_disabled_16px.png", true)
     1556    {}
     1557
     1558protected:
     1559
     1560    /** Returns action extra-data ID. */
     1561    virtual int extraDataID() const /* override */
     1562    {
     1563        return UIExtraDataMetaDefs::RuntimeMenuInputActionType_SoftKeyboard;
     1564    }
     1565    /** Returns action extra-data key. */
     1566    virtual QString extraDataKey() const /* override */
     1567    {
     1568        return gpConverter->toInternalString(UIExtraDataMetaDefs::RuntimeMenuInputActionType_SoftKeyboard);
     1569    }
     1570    /** Returns whether action is allowed. */
     1571    virtual bool isAllowed() const /* override */
     1572    {
     1573        return actionPool()->toRuntime()->isAllowedInMenuInput(UIExtraDataMetaDefs::RuntimeMenuInputActionType_SoftKeyboard);
     1574    }
     1575
     1576    /** Returns shortcut extra-data ID. */
     1577    virtual QString shortcutExtraDataID() const /* override */
     1578    {
     1579        return QString("SoftKeyboard");
     1580    }
     1581
     1582    /** Handles translation event. */
     1583    virtual void retranslateUi() /* override */
     1584    {
     1585        setName(QApplication::translate("UIActionPool", "&Soft Keyboard..."));
     1586        setStatusTip(QApplication::translate("UIActionPool", "Display soft keyboard"));
    15431587    }
    15441588};
     
    33463390    m_pool[UIActionIndexRT_M_Input_M_Keyboard] = new UIActionMenuRuntimeKeyboard(this);
    33473391    m_pool[UIActionIndexRT_M_Input_M_Keyboard_S_Settings] = new UIActionSimpleRuntimeShowKeyboardSettings(this);
     3392    m_pool[UIActionIndexRT_M_Input_M_Keyboard_S_SoftKeyboard] = new UIActionSimpleRuntimeShowSoftKeyboard(this);
    33483393    m_pool[UIActionIndexRT_M_Input_M_Keyboard_S_TypeCAD] = new UIActionSimpleRuntimePerformTypeCAD(this);
    33493394#ifdef VBOX_WS_X11
     
    40834128    /* 'Keyboard Settings' action: */
    40844129    fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Input_M_Keyboard_S_Settings)) || fSeparator;
    4085 
     4130    /* 'Soft Keyboard' action: */
     4131    fSeparator = addAction(pMenu, action(UIActionIndexRT_M_Input_M_Keyboard_S_SoftKeyboard)) || fSeparator;
    40864132    /* Separator: */
    40874133    if (fSeparator)
  • trunk/src/VBox/Frontends/VirtualBox/src/globals/UIActionPoolRuntime.h

    r77822 r78567  
    8383    UIActionIndexRT_M_Input_M_Keyboard,
    8484    UIActionIndexRT_M_Input_M_Keyboard_S_Settings,
     85    UIActionIndexRT_M_Input_M_Keyboard_S_SoftKeyboard,
    8586    UIActionIndexRT_M_Input_M_Keyboard_S_TypeCAD,
    8687#ifdef VBOX_WS_X11
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.cpp

    r77822 r78567  
    6464#include "UIFileManagerDialog.h"
    6565#include "UIGuestProcessControlDialog.h"
     66#include "UISoftKeyboardDialog.h"
    6667#ifdef VBOX_WS_MAC
    6768# include "DockIconPreview.h"
     
    849850    , m_pFileManagerDialog(0)
    850851    , m_pProcessControlDialog(0)
     852    , m_pSoftKeyboardDialog(0)
    851853{
    852854}
     
    10551057    m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard));
    10561058    m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard_S_Settings));
     1059    m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard_S_SoftKeyboard));
    10571060    m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Mouse));
    10581061    m_pRunningOrPausedActions->addAction(actionPool()->action(UIActionIndexRT_M_Input_M_Mouse_T_Integration));
     
    11341137    connect(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard_S_Settings), SIGNAL(triggered()),
    11351138            this, SLOT(sltShowKeyboardSettings()));
     1139    connect(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard_S_SoftKeyboard), SIGNAL(triggered()),
     1140            this, SLOT(sltShowSoftKeyboard()));
    11361141    connect(actionPool()->action(UIActionIndexRT_M_Input_M_Keyboard_S_TypeCAD), SIGNAL(triggered()),
    11371142            this, SLOT(sltTypeCAD()));
     
    15931598}
    15941599
     1600void UIMachineLogic::sltShowSoftKeyboard()
     1601{
     1602    if (machine().isNull() || !activeMachineWindow())
     1603        return;
     1604
     1605    /* Create the soft keyboard only once: */
     1606    if (m_pSoftKeyboardDialog)
     1607        return;
     1608
     1609    QIManagerDialog *pSoftKeyboardDialog;
     1610    UISoftKeyboardDialogFactory dialogFactory(actionPool(), machine().GetName());
     1611    dialogFactory.prepare(pSoftKeyboardDialog, activeMachineWindow());
     1612    if (pSoftKeyboardDialog)
     1613    {
     1614        m_pSoftKeyboardDialog = pSoftKeyboardDialog;
     1615
     1616        /* Show instance: */
     1617        pSoftKeyboardDialog->show();
     1618        pSoftKeyboardDialog->setWindowState(pSoftKeyboardDialog->windowState() & ~Qt::WindowMinimized);
     1619        pSoftKeyboardDialog->activateWindow();
     1620        connect(pSoftKeyboardDialog, &QIManagerDialog::sigClose,
     1621                this, &UIMachineLogic::sltCloseSoftKeyboard);
     1622    }
     1623}
     1624
     1625void UIMachineLogic::sltCloseSoftKeyboard()
     1626{
     1627    QIManagerDialog* pDialog = qobject_cast<QIManagerDialog*>(sender());
     1628    if (m_pSoftKeyboardDialog != pDialog || !pDialog)
     1629        return;
     1630
     1631    /* Set the m_pSoftKeyboardDialog to NULL before closing the dialog. or we will have redundant deletes*/
     1632    m_pSoftKeyboardDialog = 0;
     1633    pDialog->close();
     1634    UISoftKeyboardDialogFactory().cleanup(pDialog);
     1635}
     1636
    15951637void UIMachineLogic::sltToggleMouseIntegration(bool fEnabled)
    15961638{
     
    17761818        return;
    17771819
    1778     /* Create a logviewer only if we don't have one already */
     1820    /* Create a file manager only if we don't have one already: */
    17791821    if (m_pFileManagerDialog)
    17801822        return;
     
    18021844        return;
    18031845
    1804     /* Set the m_pLogViewerDialog to NULL before closing the dialog. or we will have redundant deletes*/
     1846    /* Set the m_pFileManagerDialog to NULL before closing the dialog. or we will have redundant deletes*/
    18051847    m_pFileManagerDialog = 0;
    18061848    pDialog->close();
  • trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineLogic.h

    r77822 r78567  
    265265    /* "Machine" menu functionality: */
    266266    void sltShowKeyboardSettings();
     267    void sltShowSoftKeyboard();
     268    void sltCloseSoftKeyboard();
    267269    void sltToggleMouseIntegration(bool fEnabled);
    268270    void sltTypeCAD();
     
    436438    QIManagerDialog *m_pFileManagerDialog;
    437439    QIManagerDialog *m_pProcessControlDialog;
     440    QIManagerDialog *m_pSoftKeyboardDialog;
    438441
    439442    /* Friend classes: */
  • trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.cpp

    r78540 r78567  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - UIGuestProcessControlWidget class implementation.
     3 * VBox Qt GUI - UISoftKeyboard class implementation.
    44 */
    55
     
    1818/* Qt includes: */
    1919#include <QApplication>
     20#include <QFile>
    2021#include <QMenu>
     22#include <QPushButton>
    2123#include <QSplitter>
     24#include <QXmlStreamReader>
    2225#include <QVBoxLayout>
    2326
    2427/* GUI includes: */
    25 #include "QIDialog.h"
    2628#include "QIDialogButtonBox.h"
    2729#include "UIExtraDataManager.h"
    28 #include "UIGuestControlConsole.h"
    29 #include "UIGuestControlInterface.h"
    30 #include "UIGuestControlTreeItem.h"
    31 #include "UIGuestProcessControlWidget.h"
    32 #include "UIToolBar.h"
    33 #include "UIIconPool.h"
    34 #include "UIVMInformationDialog.h"
     30#include "UISoftKeyboard.h"
    3531#include "VBoxGlobal.h"
    3632
     
    3935#include "CEventSource.h"
    4036
    41 const bool UIGuestProcessControlWidget::m_fDeleteAfterUnregister = false;
     37/*********************************************************************************************************************************
     38*   UIKeyboardLayoutReader definition.                                                                                  *
     39*********************************************************************************************************************************/
    4240
    43 /** A QIDialog child to display properties of a guest session on process. */
    44 class UISessionProcessPropertiesDialog : public QIDialog
     41class UIKeyboardLayoutReader
    4542{
    4643
     44public:
     45
     46    bool parseXMLFile(const QString &strFileName);
     47
     48private:
     49
     50    bool parseRow();
     51    bool parseKey();
     52    QXmlStreamReader m_xmlReader;
     53};
     54
     55
     56/*********************************************************************************************************************************
     57*   UISoftKeyboardKey definition.                                                                                  *
     58*********************************************************************************************************************************/
     59
     60class UISoftKeyboardKey : public QPushButton
     61{
    4762    Q_OBJECT;
    4863
    4964public:
    5065
    51     UISessionProcessPropertiesDialog(QWidget *pParent = 0, Qt::WindowFlags flags = 0);
    52     void setPropertyText(const QString &strProperty);
    53 
    54 private:
    55 
    56     QVBoxLayout *m_pMainLayout;
    57     QTextEdit   *m_pInfoEdit;
    58     QString      m_strProperty;
     66    UISoftKeyboardKey(QWidget *pParent);
    5967};
    6068
     69/*********************************************************************************************************************************
     70*   UIKeyboardLayoutReader implementation.                                                                                  *
     71*********************************************************************************************************************************/
     72
     73bool UIKeyboardLayoutReader::parseXMLFile(const QString &strFileName)
     74{
     75    QFile xmlFile(strFileName);
     76    if (!xmlFile.exists())
     77        return false;
     78
     79    if (!xmlFile.open(QIODevice::ReadOnly))
     80        return false;
     81
     82    m_xmlReader.setDevice(&xmlFile);
     83
     84    if (!m_xmlReader.readNextStartElement() || m_xmlReader.name() != "layout")
     85        return false;
     86
     87    while (m_xmlReader.readNextStartElement())
     88    {
     89        if (m_xmlReader.name() == "row")
     90            parseRow();
     91        else
     92            m_xmlReader.skipCurrentElement();
     93    }
     94
     95    return true;
     96}
     97
     98bool UIKeyboardLayoutReader::parseRow()
     99{
     100    while (m_xmlReader.readNextStartElement())
     101    {
     102        if (m_xmlReader.name() == "key")
     103            parseKey();
     104        else
     105            m_xmlReader.skipCurrentElement();
     106    }
     107
     108    return true;
     109}
     110
     111bool UIKeyboardLayoutReader::parseKey()
     112{
     113    while (m_xmlReader.readNextStartElement())
     114    {
     115
     116        // if (m_xmlReader.name() == "key")
     117        //     parseKey();
     118        // else
     119            m_xmlReader.skipCurrentElement();
     120    }
     121
     122    return true;
     123}
    61124
    62125/*********************************************************************************************************************************
    63 *   UIGuestControlTreeWidget definition.                                                                                         *
     126*   UISoftKeyboardKey implementation.                                                                                  *
    64127*********************************************************************************************************************************/
    65128
    66 class UIGuestControlTreeWidget : public QITreeWidget
     129UISoftKeyboardKey::UISoftKeyboardKey(QWidget *pParent)
     130    :QPushButton(pParent)
    67131{
    68 
    69     Q_OBJECT;
    70 
    71 signals:
    72 
    73     void sigCloseSessionOrProcess();
    74     void sigShowProperties();
    75 
    76 public:
    77 
    78     UIGuestControlTreeWidget(QWidget *pParent = 0);
    79     UIGuestControlTreeItem *selectedItem();
    80 
    81 protected:
    82 
    83     void contextMenuEvent(QContextMenuEvent *pEvent) /* override */;
    84 
    85 private slots:
    86 
    87     void sltExpandAll();
    88     void sltCollapseAll();
    89     void sltRemoveAllTerminateSessionsProcesses();
    90 
    91 private:
    92 
    93     void expandCollapseAll(bool bFlag);
    94 };
    95 
     132}
    96133
    97134/*********************************************************************************************************************************
    98 *   UISessionProcessPropertiesDialog implementation.                                                                             *
     135*   UISoftKeyboard implementation.                                                                                  *
    99136*********************************************************************************************************************************/
    100137
    101 UISessionProcessPropertiesDialog::UISessionProcessPropertiesDialog(QWidget *pParent /* = 0 */, Qt::WindowFlags flags /*= 0 */)
    102     :QIDialog(pParent, flags)
    103     , m_pMainLayout(new QVBoxLayout)
    104     , m_pInfoEdit(new QTextEdit)
    105 {
    106     setLayout(m_pMainLayout);
    107 
    108     if (m_pMainLayout)
    109         m_pMainLayout->addWidget(m_pInfoEdit);
    110     if (m_pInfoEdit)
    111     {
    112         m_pInfoEdit->setReadOnly(true);
    113         m_pInfoEdit->setFrameStyle(QFrame::NoFrame);
    114     }
    115     QIDialogButtonBox *pButtonBox =
    116         new QIDialogButtonBox(QDialogButtonBox::Ok, Qt::Horizontal, this);
    117     m_pMainLayout->addWidget(pButtonBox);
    118     connect(pButtonBox, &QIDialogButtonBox::accepted, this, &UISessionProcessPropertiesDialog::accept);
    119 }
    120 
    121 void  UISessionProcessPropertiesDialog::setPropertyText(const QString &strProperty)
    122 {
    123     if (!m_pInfoEdit)
    124         return;
    125     m_strProperty = strProperty;
    126     m_pInfoEdit->setHtml(strProperty);
    127 }
    128 
    129 
    130 /*********************************************************************************************************************************
    131 *   UIGuestControlTreeWidget implementation.                                                                                     *
    132 *********************************************************************************************************************************/
    133 
    134 UIGuestControlTreeWidget::UIGuestControlTreeWidget(QWidget *pParent /* = 0 */)
    135     :QITreeWidget(pParent)
    136 {
    137     setSelectionMode(QAbstractItemView::SingleSelection);
    138     setAlternatingRowColors(true);
    139 }
    140 
    141 UIGuestControlTreeItem *UIGuestControlTreeWidget::selectedItem()
    142 {
    143     QList<QTreeWidgetItem*> selectedList = selectedItems();
    144     if (selectedList.isEmpty())
    145         return 0;
    146     UIGuestControlTreeItem *item =
    147         dynamic_cast<UIGuestControlTreeItem*>(selectedList[0]);
    148     /* Return the firstof the selected items */
    149     return item;
    150 }
    151 
    152 void UIGuestControlTreeWidget::contextMenuEvent(QContextMenuEvent *pEvent) /* override */
    153 {
    154     QMenu menu(this);
    155     QList<QTreeWidgetItem *> selectedList = selectedItems();
    156 
    157     UIGuestSessionTreeItem *sessionTreeItem = 0;
    158     if (!selectedList.isEmpty())
    159         sessionTreeItem = dynamic_cast<UIGuestSessionTreeItem*>(selectedList[0]);
    160     QAction *pSessionCloseAction = 0;
    161     bool fHasAnyItems = topLevelItemCount() != 0;
    162     /* Create a guest session related context menu */
    163     if (sessionTreeItem)
    164     {
    165         pSessionCloseAction = menu.addAction(tr("Terminate Session"));
    166         if (pSessionCloseAction)
    167             connect(pSessionCloseAction, &QAction::triggered,
    168                     this, &UIGuestControlTreeWidget::sigCloseSessionOrProcess);
    169     }
    170     UIGuestProcessTreeItem *processTreeItem = 0;
    171     if (!selectedList.isEmpty())
    172         processTreeItem = dynamic_cast<UIGuestProcessTreeItem*>(selectedList[0]);
    173     QAction *pProcessTerminateAction = 0;
    174     if (processTreeItem)
    175     {
    176         pProcessTerminateAction = menu.addAction(tr("Terminate Process"));
    177         if (pProcessTerminateAction)
    178         {
    179             connect(pProcessTerminateAction, &QAction::triggered,
    180                     this, &UIGuestControlTreeWidget::sigCloseSessionOrProcess);
    181             pProcessTerminateAction->setIcon(UIIconPool::iconSet(":/file_manager_delete_16px.png"));
    182         }
    183     }
    184     if (pProcessTerminateAction || pSessionCloseAction)
    185         menu.addSeparator();
    186 
    187     QAction *pRemoveAllTerminated = menu.addAction(tr("Remove All Terminated Sessions/Processes"));
    188     if (pRemoveAllTerminated)
    189     {
    190 
    191         pRemoveAllTerminated->setEnabled(fHasAnyItems);
    192         pRemoveAllTerminated->setIcon(UIIconPool::iconSet(":/state_aborted_16px.png"));
    193 
    194         connect(pRemoveAllTerminated, &QAction::triggered,
    195                 this, &UIGuestControlTreeWidget::sltRemoveAllTerminateSessionsProcesses);
    196     }
    197 
    198     // Add actions to expand/collapse all tree items
    199     QAction *pExpandAllAction = menu.addAction(tr("Expand All"));
    200     if (pExpandAllAction)
    201     {
    202         pExpandAllAction->setIcon(UIIconPool::iconSet(":/expand_all_16px.png"));
    203         connect(pExpandAllAction, &QAction::triggered,
    204                 this, &UIGuestControlTreeWidget::sltExpandAll);
    205     }
    206 
    207     QAction *pCollapseAllAction = menu.addAction(tr("Collapse All"));
    208     if (pCollapseAllAction)
    209     {
    210         pCollapseAllAction->setIcon(UIIconPool::iconSet(":/collapse_all_16px.png"));
    211         connect(pCollapseAllAction, &QAction::triggered,
    212                 this, &UIGuestControlTreeWidget::sltCollapseAll);
    213     }
    214     menu.addSeparator();
    215     QAction *pShowPropertiesAction = menu.addAction(tr("Properties"));
    216     if (pShowPropertiesAction)
    217     {
    218         pShowPropertiesAction->setIcon(UIIconPool::iconSet(":/file_manager_properties_16px.png"));
    219         pShowPropertiesAction->setEnabled(fHasAnyItems);
    220         connect(pShowPropertiesAction, &QAction::triggered,
    221                 this, &UIGuestControlTreeWidget::sigShowProperties);
    222     }
    223 
    224     menu.exec(pEvent->globalPos());
    225 }
    226 
    227 void UIGuestControlTreeWidget::sltExpandAll()
    228 {
    229     expandCollapseAll(true);
    230 }
    231 
    232 void UIGuestControlTreeWidget::sltCollapseAll()
    233 {
    234     expandCollapseAll(false);
    235 }
    236 
    237 void UIGuestControlTreeWidget::sltRemoveAllTerminateSessionsProcesses()
    238 {
    239     for (int i = 0; i < topLevelItemCount(); ++i)
    240     {
    241         if (!topLevelItem(i))
    242             break;
    243         UIGuestSessionTreeItem *pSessionItem = dynamic_cast<UIGuestSessionTreeItem*>(topLevelItem(i));
    244 
    245         if (!pSessionItem)
    246             continue;
    247 
    248         if (pSessionItem->status() != KGuestSessionStatus_Starting &&
    249             pSessionItem->status() != KGuestSessionStatus_Started)
    250         {
    251             delete pSessionItem;
    252             continue;
    253         }
    254 
    255         for (int j = 0; j < topLevelItem(i)->childCount(); ++j)
    256         {
    257             UIGuestProcessTreeItem *pProcessItem = dynamic_cast<UIGuestProcessTreeItem*>(topLevelItem(i)->child(j));
    258 
    259             if (pProcessItem)
    260             {
    261                 if (pProcessItem->status() != KProcessStatus_Starting &&
    262                     pProcessItem->status() != KProcessStatus_Started)
    263                     delete pProcessItem;
    264             }
    265         }
    266     }
    267 
    268 }
    269 
    270 void UIGuestControlTreeWidget::expandCollapseAll(bool bFlag)
    271 {
    272     for (int i = 0; i < topLevelItemCount(); ++i)
    273     {
    274         if (!topLevelItem(i))
    275             break;
    276         topLevelItem(i)->setExpanded(bFlag);
    277         for (int j = 0; j < topLevelItem(i)->childCount(); ++j)
    278         {
    279             if (topLevelItem(i)->child(j))
    280             {
    281                 topLevelItem(i)->child(j)->setExpanded(bFlag);
    282             }
    283         }
    284     }
    285 }
    286 
    287 
    288 /*********************************************************************************************************************************
    289 *   UIGuestProcessControlWidget implementation.                                                                                  *
    290 *********************************************************************************************************************************/
    291 
    292 UIGuestProcessControlWidget::UIGuestProcessControlWidget(EmbedTo enmEmbedding, const CGuest &comGuest,
    293                                                          QWidget *pParent, QString strMachineName /* = QString()*/,
    294                                                          bool fShowToolbar /* = false */)
     138UISoftKeyboard::UISoftKeyboard(EmbedTo /* enmEmbedding */,
     139                               QWidget *pParent, QString strMachineName /* = QString()*/,
     140                               bool fShowToolbar /* = false */)
    295141    :QIWithRetranslateUI<QWidget>(pParent)
    296     , m_comGuest(comGuest)
    297142    , m_pMainLayout(0)
    298     , m_pSplitter(0)
    299     , m_pTreeWidget(0)
    300     , m_enmEmbedding(enmEmbedding)
    301143    , m_pToolBar(0)
    302     , m_pQtListener(0)
    303144    , m_fShowToolbar(fShowToolbar)
    304145    , m_strMachineName(strMachineName)
    305146{
    306     prepareListener();
     147    parseLayout();
    307148    prepareObjects();
    308149    prepareConnections();
    309150    prepareToolBar();
    310     initGuestSessionTree();
    311151    loadSettings();
    312152    retranslateUi();
    313153}
    314154
    315 UIGuestProcessControlWidget::~UIGuestProcessControlWidget()
     155UISoftKeyboard::~UISoftKeyboard()
    316156{
    317157    saveSettings();
    318158}
    319159
    320 void UIGuestProcessControlWidget::retranslateUi()
     160void UISoftKeyboard::retranslateUi()
    321161{
    322     if (m_pTreeWidget)
    323     {
    324         QStringList labels;
    325         labels << tr("Session/Process ID") << tr("Session Name/Process Command") << tr("Session/Process Status");
    326         m_pTreeWidget->setHeaderLabels(labels);
    327     }
    328162}
    329163
    330 
    331 void UIGuestProcessControlWidget::prepareObjects()
     164void UISoftKeyboard::prepareObjects()
    332165{
    333166    /* Create layout: */
     
    338171    /* Configure layout: */
    339172    m_pMainLayout->setSpacing(0);
    340 
    341     m_pSplitter = new QSplitter;
    342 
    343     if (!m_pSplitter)
    344         return;
    345 
    346     m_pSplitter->setOrientation(Qt::Vertical);
    347 
    348     m_pMainLayout->addWidget(m_pSplitter);
    349 
    350 
    351     m_pTreeWidget = new UIGuestControlTreeWidget;
    352 
    353     if (m_pTreeWidget)
    354     {
    355         m_pSplitter->addWidget(m_pTreeWidget);
    356         m_pTreeWidget->setColumnCount(3);
    357     }
    358 
    359     m_pSplitter->setStretchFactor(0, 2);
    360     m_pSplitter->setStretchFactor(1, 1);
    361 
    362     updateTreeWidget();
    363173}
    364174
    365 void UIGuestProcessControlWidget::updateTreeWidget()
     175void UISoftKeyboard::prepareConnections()
    366176{
    367     if (!m_pTreeWidget)
    368         return;
    369 
    370     m_pTreeWidget->clear();
    371     QVector<QITreeWidgetItem> treeItemVector;
    372     update();
    373177}
    374178
    375 void UIGuestProcessControlWidget::prepareConnections()
     179void UISoftKeyboard::prepareToolBar()
    376180{
    377     qRegisterMetaType<QVector<int> >();
     181}
    378182
    379     if (m_pTreeWidget)
     183void UISoftKeyboard::saveSettings()
     184{
     185}
     186
     187void UISoftKeyboard::loadSettings()
     188{
     189}
     190
     191void UISoftKeyboard::parseLayout()
     192{
     193    UIKeyboardLayoutReader reader;
     194    if (!reader.parseXMLFile(":/us_layout.xml"))
    380195    {
    381         connect(m_pTreeWidget, &UIGuestControlTreeWidget::sigCloseSessionOrProcess,
    382                 this, &UIGuestProcessControlWidget::sltCloseSessionOrProcess);
    383         connect(m_pTreeWidget, &UIGuestControlTreeWidget::sigShowProperties,
    384                 this, &UIGuestProcessControlWidget::sltShowProperties);
    385     }
    386 
    387     if (m_pQtListener)
    388     {
    389         connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigGuestSessionRegistered,
    390                 this, &UIGuestProcessControlWidget::sltGuestSessionRegistered);
    391         connect(m_pQtListener->getWrapped(), &UIMainEventListener::sigGuestSessionUnregistered,
    392                 this, &UIGuestProcessControlWidget::sltGuestSessionUnregistered);
    393196    }
    394197}
    395198
    396 void UIGuestProcessControlWidget::sltGuestSessionsUpdated()
    397 {
    398     updateTreeWidget();
    399 }
    400 
    401 void UIGuestProcessControlWidget::sltCloseSessionOrProcess()
    402 {
    403     if (!m_pTreeWidget)
    404         return;
    405     UIGuestControlTreeItem *selectedTreeItem =
    406         m_pTreeWidget->selectedItem();
    407     if (!selectedTreeItem)
    408         return;
    409     UIGuestProcessTreeItem *processTreeItem =
    410         dynamic_cast<UIGuestProcessTreeItem*>(selectedTreeItem);
    411     if (processTreeItem)
    412     {
    413         CGuestProcess guestProcess = processTreeItem->guestProcess();
    414         if (guestProcess.isOk())
    415         {
    416             guestProcess.Terminate();
    417         }
    418         return;
    419     }
    420     UIGuestSessionTreeItem *sessionTreeItem =
    421         dynamic_cast<UIGuestSessionTreeItem*>(selectedTreeItem);
    422     if (!sessionTreeItem)
    423         return;
    424     CGuestSession guestSession = sessionTreeItem->guestSession();
    425     if (!guestSession.isOk())
    426         return;
    427     guestSession.Close();
    428 }
    429 
    430 void UIGuestProcessControlWidget::sltShowProperties()
    431 {
    432     UIGuestControlTreeItem *pItem = m_pTreeWidget->selectedItem();
    433     if (!pItem)
    434         return;
    435 
    436     UISessionProcessPropertiesDialog *pPropertiesDialog = new UISessionProcessPropertiesDialog(this);
    437     if (!m_strMachineName.isEmpty())
    438     {
    439         pPropertiesDialog->setWindowTitle(m_strMachineName);
    440     }
    441     if (!pPropertiesDialog)
    442         return;
    443 
    444     pPropertiesDialog->setPropertyText(pItem->propertyString());
    445     pPropertiesDialog->exec();
    446 
    447     delete pPropertiesDialog;
    448 }
    449 
    450 void UIGuestProcessControlWidget::prepareListener()
    451 {
    452     /* Create event listener instance: */
    453     m_pQtListener.createObject();
    454     m_pQtListener->init(new UIMainEventListener, this);
    455     m_comEventListener = CEventListener(m_pQtListener);
    456 
    457     /* Get CProgress event source: */
    458     CEventSource comEventSource = m_comGuest.GetEventSource();
    459     AssertWrapperOk(comEventSource);
    460 
    461     /* Enumerate all the required event-types: */
    462     QVector<KVBoxEventType> eventTypes;
    463     eventTypes << KVBoxEventType_OnGuestSessionRegistered;
    464 
    465 
    466     /* Register event listener for CProgress event source: */
    467     comEventSource.RegisterListener(m_comEventListener, eventTypes,
    468         gEDataManager->eventHandlingType() == EventHandlingType_Active ? TRUE : FALSE);
    469     AssertWrapperOk(comEventSource);
    470 
    471     /* If event listener registered as passive one: */
    472     if (gEDataManager->eventHandlingType() == EventHandlingType_Passive)
    473     {
    474         /* Register event sources in their listeners as well: */
    475         m_pQtListener->getWrapped()->registerSource(comEventSource, m_comEventListener);
    476     }
    477 }
    478 
    479 void UIGuestProcessControlWidget::prepareToolBar()
    480 {
    481     /* Create toolbar: */
    482     m_pToolBar = new UIToolBar(parentWidget());
    483     if (m_pToolBar)
    484     {
    485         /* Configure toolbar: */
    486         const int iIconMetric = (int)(QApplication::style()->pixelMetric(QStyle::PM_LargeIconSize));
    487         m_pToolBar->setIconSize(QSize(iIconMetric, iIconMetric));
    488         m_pToolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
    489 
    490         /* Add toolbar actions: */
    491         m_pToolBar->addSeparator();
    492         m_pToolBar->addSeparator();
    493 
    494 #ifdef VBOX_WS_MAC
    495         /* Check whether we are embedded into a stack: */
    496         if (m_enmEmbedding == EmbedTo_Stack)
    497         {
    498             /* Add into layout: */
    499             m_pMainLayout->addWidget(m_pToolBar);
    500         }
    501 #else
    502         /* Add into layout: */
    503         m_pMainLayout->addWidget(m_pToolBar);
    504 #endif
    505     }
    506 }
    507 
    508 void UIGuestProcessControlWidget::initGuestSessionTree()
    509 {
    510     if (!m_comGuest.isOk())
    511         return;
    512 
    513     QVector<CGuestSession> sessions = m_comGuest.GetSessions();
    514     for (int i = 0; i < sessions.size(); ++i)
    515     {
    516         addGuestSession(sessions.at(i));
    517     }
    518 }
    519 
    520 void UIGuestProcessControlWidget::cleanupListener()
    521 {
    522     /* If event listener registered as passive one: */
    523     if (gEDataManager->eventHandlingType() == EventHandlingType_Passive)
    524     {
    525         /* Unregister everything: */
    526         m_pQtListener->getWrapped()->unregisterSources();
    527     }
    528 
    529     /* Make sure VBoxSVC is available: */
    530     if (!vboxGlobal().isVBoxSVCAvailable())
    531         return;
    532 
    533     /* Get CProgress event source: */
    534     CEventSource comEventSource = m_comGuest.GetEventSource();
    535     AssertWrapperOk(comEventSource);
    536 
    537     /* Unregister event listener for CProgress event source: */
    538     comEventSource.UnregisterListener(m_comEventListener);
    539 }
    540 
    541 
    542 void UIGuestProcessControlWidget::sltGuestSessionRegistered(CGuestSession guestSession)
    543 {
    544     if (!guestSession.isOk())
    545         return;
    546     addGuestSession(guestSession);
    547 }
    548 
    549 void UIGuestProcessControlWidget::addGuestSession(CGuestSession guestSession)
    550 {
    551     UIGuestSessionTreeItem* sessionTreeItem = new UIGuestSessionTreeItem(m_pTreeWidget, guestSession);
    552     connect(sessionTreeItem, &UIGuestSessionTreeItem::sigGuessSessionUpdated,
    553             this, &UIGuestProcessControlWidget::sltTreeItemUpdated);
    554 }
    555 
    556 void UIGuestProcessControlWidget::sltTreeItemUpdated()
    557 {
    558     if (m_pTreeWidget)
    559         m_pTreeWidget->update();
    560 }
    561 
    562 void UIGuestProcessControlWidget::sltGuestSessionUnregistered(CGuestSession guestSession)
    563 {
    564     if (!guestSession.isOk())
    565         return;
    566     if (!m_pTreeWidget)
    567         return;
    568 
    569     UIGuestSessionTreeItem *selectedItem = NULL;
    570 
    571     for (int i = 0; i < m_pTreeWidget->topLevelItemCount(); ++i)
    572     {
    573         QTreeWidgetItem *item = m_pTreeWidget->topLevelItem( i );
    574 
    575         UIGuestSessionTreeItem *treeItem = dynamic_cast<UIGuestSessionTreeItem*>(item);
    576         if (treeItem && treeItem->guestSession() == guestSession)
    577         {
    578             selectedItem = treeItem;
    579             break;
    580         }
    581     }
    582     if (m_fDeleteAfterUnregister)
    583         delete selectedItem;
    584 }
    585 
    586 void UIGuestProcessControlWidget::saveSettings()
    587 {
    588     if (!m_pSplitter)
    589         return;
    590     gEDataManager->setGuestControlProcessControlSplitterHints(m_pSplitter->sizes());
    591 }
    592 
    593 void UIGuestProcessControlWidget::loadSettings()
    594 {
    595     if (!m_pSplitter)
    596         return;
    597     QList<int> splitterHints = gEDataManager->guestControlProcessControlSplitterHints();
    598     if (splitterHints.size() != 2)
    599         return;
    600     if (splitterHints[0] != 0 && splitterHints[1] != 0)
    601         m_pSplitter->setSizes(splitterHints);
    602 }
    603 
    604 #include "UIGuestProcessControlWidget.moc"
     199#include "UISoftKeyboard.moc"
  • trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboard.h

    r78540 r78567  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - UIGuestProcessControlWidget class declaration.
     3 * VBox Qt GUI - UISoftKeyboard class declaration.
    44 */
    55
     
    1616 */
    1717
    18 #ifndef FEQT_INCLUDED_SRC_guestctrl_UIGuestProcessControlWidget_h
    19 #define FEQT_INCLUDED_SRC_guestctrl_UIGuestProcessControlWidget_h
     18#ifndef FEQT_INCLUDED_SRC_softkeyboard_UISoftKeyboard_h
     19#define FEQT_INCLUDED_SRC_softkeyboard_UISoftKeyboard_h
    2020#ifndef RT_WITHOUT_PRAGMA_ONCE
    2121# pragma once
     
    3333#include "QIManagerDialog.h"
    3434#include "QIWithRetranslateUI.h"
    35 #include "UIMainEventListener.h"
    3635
    3736/* Forward declarations: */
    38 class QITreeWidget;
     37class UISoftKeyboardKey;
    3938class QVBoxLayout;
    40 class QSplitter;
    41 class UIGuestControlConsole;
    42 class UIGuestControlInterface;
    43 class UIGuestSessionsEventHandler;
    44 class UIGuestControlTreeWidget;
    4539class UIToolBar;
    4640
    47 /** QWidget extension
    48   * providing GUI with guest session information and control tab in session-information window. */
    49 class UIGuestProcessControlWidget : public QIWithRetranslateUI<QWidget>
     41class UISoftKeyboard : public QIWithRetranslateUI<QWidget>
    5042{
    5143    Q_OBJECT;
     
    5345public:
    5446
    55     UIGuestProcessControlWidget(EmbedTo enmEmbedding, const CGuest &comGuest, QWidget *pParent,
     47    UISoftKeyboard(EmbedTo enmEmbedding, QWidget *pParent,
    5648                                QString strMachineName = QString(), bool fShowToolbar = false);
    57     ~UIGuestProcessControlWidget();
    58     /** When true we delete the corresponding tree item as soon as the guest session/process is unregistered. */
    59     static const bool           m_fDeleteAfterUnregister;
     49    ~UISoftKeyboard();
    6050
    6151protected:
     
    6555private slots:
    6656
    67     void sltGuestSessionsUpdated();
    68     void sltGuestSessionRegistered(CGuestSession guestSession);
    69     void sltGuestSessionUnregistered(CGuestSession guestSession);
    70     void sltTreeItemUpdated();
    71     void sltCloseSessionOrProcess();
    72     void sltShowProperties();
    73 
    7457private:
    7558
     
    7760    void prepareConnections();
    7861    void prepareToolBar();
    79     void prepareListener();
    80     void initGuestSessionTree();
    81     void updateTreeWidget();
    82     void cleanupListener();
    83     void addGuestSession(CGuestSession guestSession);
    8462    void saveSettings();
    8563    void loadSettings();
     64    void parseLayout();
    8665
    87     CGuest                    m_comGuest;
    88     QVBoxLayout              *m_pMainLayout;
    89     QSplitter                *m_pSplitter;
    90     UIGuestControlTreeWidget *m_pTreeWidget;
    91     const EmbedTo             m_enmEmbedding;
    92     UIToolBar                *m_pToolBar;
    93 
    94     /** Holds the Qt event listener instance. */
    95     ComObjPtr<UIMainEventListenerImpl> m_pQtListener;
    96     /** Holds the COM event listener instance. */
    97     CEventListener m_comEventListener;
    98     const bool     m_fShowToolbar;
    99     QString        m_strMachineName;
     66    QVBoxLayout   *m_pMainLayout;
     67    UIToolBar     *m_pToolBar;
     68    const bool    m_fShowToolbar;
     69    QString       m_strMachineName;
     70    QVector<UISoftKeyboardKey*> m_keys;
    10071};
    10172
    102 #endif /* !FEQT_INCLUDED_SRC_guestctrl_UIGuestProcessControlWidget_h */
     73#endif /* !FEQT_INCLUDED_SRC_softkeyboard_UISoftKeyboard_h */
  • trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboardDialog.cpp

    r78540 r78567  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - UIGuestProcessControlDialog class implementation.
     3 * VBox Qt GUI - UISoftKeyboardDialog class implementation.
    44 */
    55
     
    2525#include "UIIconPool.h"
    2626#include "UIGuestControlConsole.h"
    27 #include "UIGuestProcessControlDialog.h"
     27#include "UISoftKeyboardDialog.h"
     28#include "UISoftKeyboard.h"
    2829#include "VBoxGlobal.h"
    2930#ifdef VBOX_WS_MAC
     
    3334
    3435/*********************************************************************************************************************************
    35 *   Class UIGuestProcessControlDialogFactory implementation.                                                                     *
     36*   Class UISoftKeyboardDialogFactory implementation.                                                                     *
    3637*********************************************************************************************************************************/
    3738
    38 UIGuestProcessControlDialogFactory::UIGuestProcessControlDialogFactory(UIActionPool *pActionPool /* = 0 */,
    39                                                          const CGuest &comGuest /* = CGuest() */,
     39UISoftKeyboardDialogFactory::UISoftKeyboardDialogFactory(UIActionPool *pActionPool /* = 0 */,
    4040                                                         const QString &strMachineName /* = QString() */)
    4141    : m_pActionPool(pActionPool)
    42     , m_comGuest(comGuest)
    4342    , m_strMachineName(strMachineName)
    4443{
    4544}
    4645
    47 void UIGuestProcessControlDialogFactory::create(QIManagerDialog *&pDialog, QWidget *pCenterWidget)
     46void UISoftKeyboardDialogFactory::create(QIManagerDialog *&pDialog, QWidget *pCenterWidget)
    4847{
    49     pDialog = new UIGuestProcessControlDialog(pCenterWidget, m_pActionPool, m_comGuest, m_strMachineName);
     48    pDialog = new UISoftKeyboardDialog(pCenterWidget, m_pActionPool, m_strMachineName);
    5049}
    5150
    5251
    5352/*********************************************************************************************************************************
    54 *   Class UIGuestProcessControlDialog implementation.                                                                            *
     53*   Class UISoftKeyboardDialog implementation.                                                                            *
    5554*********************************************************************************************************************************/
    5655
    57 UIGuestProcessControlDialog::UIGuestProcessControlDialog(QWidget *pCenterWidget,
     56UISoftKeyboardDialog::UISoftKeyboardDialog(QWidget *pCenterWidget,
    5857                                           UIActionPool *pActionPool,
    59                                            const CGuest &comGuest,
    6058                                           const QString &strMachineName /* = QString() */)
    6159    : QIWithRetranslateUI<QIManagerDialog>(pCenterWidget)
    6260    , m_pActionPool(pActionPool)
    63     , m_comGuest(comGuest)
    6461    , m_strMachineName(strMachineName)
    6562{
    6663}
    6764
    68 void UIGuestProcessControlDialog::retranslateUi()
     65void UISoftKeyboardDialog::retranslateUi()
    6966{
    7067    /* Translate window title: */
     
    7471}
    7572
    76 void UIGuestProcessControlDialog::configure()
     73void UISoftKeyboardDialog::configure()
    7774{
    7875    /* Apply window icons: */
     
    8077}
    8178
    82 void UIGuestProcessControlDialog::configureCentralWidget()
     79void UISoftKeyboardDialog::configureCentralWidget()
    8380{
    8481    /* Create widget: */
    85     UIGuestControlConsole *pConsole = new UIGuestControlConsole(m_comGuest);
     82    UISoftKeyboard  *pSoftKeyboard = new UISoftKeyboard(EmbedTo_Dialog, 0, "");
    8683
    87     if (pConsole)
     84    if (pSoftKeyboard)
    8885    {
    8986        /* Configure widget: */
    90         setWidget(pConsole);
     87        setWidget(pSoftKeyboard);
    9188        //setWidgetMenu(pWidget->menu());
    9289#ifdef VBOX_WS_MAC
     
    9491#endif
    9592        /* Add into layout: */
    96         centralWidget()->layout()->addWidget(pConsole);
     93        centralWidget()->layout()->addWidget(pSoftKeyboard);
    9794    }
    9895}
    9996
    100 void UIGuestProcessControlDialog::finalize()
     97void UISoftKeyboardDialog::finalize()
    10198{
    10299    /* Apply language settings: */
     
    104101}
    105102
    106 void UIGuestProcessControlDialog::loadSettings()
     103void UISoftKeyboardDialog::loadSettings()
    107104{
    108105    const QRect desktopRect = gpDesktop->availableGeometry(this);
     
    118115
    119116    /* Restore geometry: */
    120     LogRel2(("GUI: UIGuestProcessControlDialog: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
     117    LogRel2(("GUI: UISoftKeyboardDialog: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
    121118             geometry.x(), geometry.y(), geometry.width(), geometry.height()));
    122119    setDialogGeometry(geometry);
    123120}
    124121
    125 void UIGuestProcessControlDialog::saveSettings() const
     122void UISoftKeyboardDialog::saveSettings() const
    126123{
    127124    /* Save window geometry to extradata: */
     
    138135}
    139136
    140 bool UIGuestProcessControlDialog::shouldBeMaximized() const
     137bool UISoftKeyboardDialog::shouldBeMaximized() const
    141138{
    142139    return gEDataManager->guestProcessControlDialogShouldBeMaximized();
    143140}
    144141
    145 void UIGuestProcessControlDialog::sltSetCloseButtonShortCut(QKeySequence shortcut)
     142void UISoftKeyboardDialog::sltSetCloseButtonShortCut(QKeySequence shortcut)
    146143{
    147144    if (button(ButtonType_Close))
  • trunk/src/VBox/Frontends/VirtualBox/src/softkeyboard/UISoftKeyboardDialog.h

    r78540 r78567  
    11/* $Id$ */
    22/** @file
    3  * VBox Qt GUI - UIGuestProcessControlDialog class declaration.
     3 * VBox Qt GUI - UISoftKeyboardDialog class declaration.
    44 */
    55
     
    1616 */
    1717
    18 #ifndef FEQT_INCLUDED_SRC_guestctrl_UIGuestProcessControlDialog_h
    19 #define FEQT_INCLUDED_SRC_guestctrl_UIGuestProcessControlDialog_h
     18#ifndef FEQT_INCLUDED_SRC_softkeyboard_UISoftKeyboardDialog_h
     19#define FEQT_INCLUDED_SRC_softkeyboard_UISoftKeyboardDialog_h
    2020#ifndef RT_WITHOUT_PRAGMA_ONCE
    2121# pragma once
     
    3535/* Forward declarations: */
    3636class UIActionPool;
    37 class UIGuestProcessControlDialog;
     37class UISoftKeyboardDialog;
    3838class CGuest;
    3939
    4040/** QIManagerDialogFactory extension used as a factory for the Guest Control dialog. */
    41 class UIGuestProcessControlDialogFactory : public QIManagerDialogFactory
     41class UISoftKeyboardDialogFactory : public QIManagerDialogFactory
    4242{
    4343public:
    4444
    45     UIGuestProcessControlDialogFactory(UIActionPool *pActionPool = 0, const CGuest &comGuest = CGuest(), const QString &strMachineName = QString());
     45    UISoftKeyboardDialogFactory(UIActionPool *pActionPool = 0, const QString &strMachineName = QString());
    4646
    4747protected:
     
    5252
    5353    UIActionPool *m_pActionPool;
    54     CGuest        m_comGuest;
    5554    QString       m_strMachineName;
    5655};
     
    5857
    5958/** QIManagerDialog extension providing GUI with the dialog displaying guest control releated logs. */
    60 class UIGuestProcessControlDialog : public QIWithRetranslateUI<QIManagerDialog>
     59class UISoftKeyboardDialog : public QIWithRetranslateUI<QIManagerDialog>
    6160{
    6261    Q_OBJECT;
     
    6665    /** Constructs Guest Control dialog.
    6766      * @param  pCenterWidget  Passes the widget reference to center according to.
    68       * @param  pActionPool    Passes the action-pool reference.
    69       * @param  comGuest       Passes the com-guest reference. */
    70     UIGuestProcessControlDialog(QWidget *pCenterWidget, UIActionPool *pActionPool, const CGuest &comGuest, const QString &strMachineName = QString());
     67      * @param  pActionPool    Passes the action-pool reference. */
     68    UISoftKeyboardDialog(QWidget *pCenterWidget, UIActionPool *pActionPool, const QString &strMachineName = QString());
    7169
    7270protected:
     
    106104
    107105    UIActionPool *m_pActionPool;
    108     CGuest      m_comGuest;
    109106    QString     m_strMachineName;
    110107};
    111108
    112109
    113 #endif /* !FEQT_INCLUDED_SRC_guestctrl_UIGuestProcessControlDialog_h */
     110#endif /* !FEQT_INCLUDED_SRC_softkeyboard_UISoftKeyboardDialog_h */
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette