From 7efd22c912262f7bf4e4735dae70db0b31ab3d5b Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Mon, 14 Mar 2022 10:04:17 +0100 Subject: Add UNO API for custom Jump Lists Allows adding custom jump list categories to Windows Task Bar Change-Id: I13b6c3ad5de386cf74e2b346f10889bc46a8ad4e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/131540 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- offapi/UnoApi_offapi.mk | 7 ++ offapi/com/sun/star/system/windows/JumpList.idl | 33 ++++++ .../com/sun/star/system/windows/JumpListItem.idl | 55 +++++++++ offapi/com/sun/star/system/windows/XJumpList.idl | 125 +++++++++++++++++++++ 4 files changed, 220 insertions(+) create mode 100755 offapi/com/sun/star/system/windows/JumpList.idl create mode 100755 offapi/com/sun/star/system/windows/JumpListItem.idl create mode 100755 offapi/com/sun/star/system/windows/XJumpList.idl (limited to 'offapi') diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk index cdf62376c30f..a9b92639a667 100644 --- a/offapi/UnoApi_offapi.mk +++ b/offapi/UnoApi_offapi.mk @@ -3639,6 +3639,13 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/system,\ XSimpleMailMessage2 \ XSystemShellExecute \ )) + +$(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/system/windows,\ + JumpList \ + JumpListItem \ + XJumpList \ +)) + $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/table,\ BorderLine \ BorderLine2 \ diff --git a/offapi/com/sun/star/system/windows/JumpList.idl b/offapi/com/sun/star/system/windows/JumpList.idl new file mode 100755 index 000000000000..82becd522b69 --- /dev/null +++ b/offapi/com/sun/star/system/windows/JumpList.idl @@ -0,0 +1,33 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef __com_sun_star_system_windows_JumpList_idl__ +#define __com_sun_star_system_windows_JumpList_idl__ + + +module com { module sun { module star { module system { module windows { + + +interface XJumpList; + +/** Specifies a Jump List service. Allows to add custom commands to the Windows Jump List. + + @since LibreOffice 7.4 + + @see com::sun::star::system::windows::XJumpList +*/ + +service JumpList : XJumpList; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/offapi/com/sun/star/system/windows/JumpListItem.idl b/offapi/com/sun/star/system/windows/JumpListItem.idl new file mode 100755 index 000000000000..30a8bdd6f7e4 --- /dev/null +++ b/offapi/com/sun/star/system/windows/JumpListItem.idl @@ -0,0 +1,55 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef __com_sun_star_system_windows_JumpListItem_idl__ +#define __com_sun_star_system_windows_JumpListItem_idl__ + +#include +#include +#include + + +module com { module sun { module star { module system { module windows { + +/** Specifies an item for com::sun::star::system::windows::XJumpList . + + @since LibreOffice 7.4 +*/ + +struct JumpListItem +{ + /** Item name. Appears in the JumpList. + Has to be unique per category. + Must not include embedded NULs ('\\0'). */ + string name; + + /** Item description, appears as tooltip. + Must not include embedded NULs ('\\0'). + */ + string description; + + /** Arguments to be passed to LibreOffice. + This can be a file to be loaded, or any command line parameter supported by LibreOffice, and any combination of the two. + Add multiple arguments separated by space. + Must not include embedded NULs ('\\0'). + */ + string arguments; + + /** Icon to be displayed along the name. + Must be a local path name like `C:\\path\\to\\icon.ico`. + Icon must be in ICO format. + */ + string iconPath; +}; + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/offapi/com/sun/star/system/windows/XJumpList.idl b/offapi/com/sun/star/system/windows/XJumpList.idl new file mode 100755 index 000000000000..80fef03b60aa --- /dev/null +++ b/offapi/com/sun/star/system/windows/XJumpList.idl @@ -0,0 +1,125 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef __com_sun_star_system_windows_XJumpList_idl__ +#define __com_sun_star_system_windows_XJumpList_idl__ + +#include +#include +#include + + +module com { module sun { module star { module system { module windows { + +/** Specifies an interface for adding custom jump lists to the task bar (Windows only) + + @since LibreOffice 7.4 +*/ +interface XJumpList: com::sun::star::uno::XInterface +{ + /** Add (or update) a jump list category. + + Note that it is only possible to have one jump list category per `application`. + + When there is already a jump list for the given `application`, + that jump list will be cleared, and the new `category` and `jumpListItems` will be added. + + @param category + Specifies the category name. It will appear as the title of the custom jump list. + Must not include embedded NULs ('\\0') + + @param jumpListItems + Specifies a list of com::sun::star::system::JumpListItem. + Must contain at least one item. + These will be added as entries below the category name in the custom jump list. + + Make sure you don't add items which the user has removed before + (check the result of `getRemovedItems` before updating a category). + If you try to add items which the user removed before, + they will be silently ignored and not added to the list. + + @param application + Used to map the jump list to the correct application. Use one of the following values: +
    +
  • Writer
  • +
  • Calc
  • +
  • Impress
  • +
  • Draw
  • +
  • Math
  • +
  • Base
  • +
  • Startcenter
  • +
+ + "Startcenter" will map to the generic "LibreOffice" icon. + + @throws com::sun::star::lang::IllegalArgumentException + When one of the following applies: +
    +
  • `category` is empty
  • +
  • `jumpListItems` is empty or contains only items which were removed by the user
  • +
  • `application` is invalid
  • +
+ */ + void appendCategory( [in] string category, + [in] sequence jumpListItems, + [in] string application ) + raises( ::com::sun::star::lang::IllegalArgumentException ); + + /** Delete a jump list category + + @param application + Used to map the jump list to the correct application. Use one of the following values: +
    +
  • Writer
  • +
  • Calc
  • +
  • Impress
  • +
  • Draw
  • +
  • Math
  • +
  • Base
  • +
  • Startcenter
  • +
+ + "Startcenter" will map to the generic "LibreOffice" icon. + + @throws com::sun::star::lang::IllegalArgumentException + When `application` is invalid + */ + void deleteCategory( [in] string application ) + raises( ::com::sun::star::lang::IllegalArgumentException ); + + /** Returns items that were removed from the jump list by the user. + + `appendCategory` will ignore items which were removed by the user before. + Use this method to learn which items were removed by the user. + + @param application + Used to map the jump list to the correct application. Use one of the following values: +
    +
  • Writer
  • +
  • Calc
  • +
  • Impress
  • +
  • Draw
  • +
  • Math
  • +
  • Base
  • +
  • Startcenter
  • +
+ + "Startcenter" will map to the generic "LibreOffice" icon. + + @return List of removed items. + */ + sequence getRemovedItems([in] string application); +}; + + +}; }; }; }; }; + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ -- cgit