Skip to content
Open
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions include/appimage/desktop_integration/IntegrationManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@

namespace appimage {
namespace desktop_integration {
/**
* Hold actions to be added to the Desktop Entries while being registered in the system.
* The first value must hold the _action name_ and the second value the _whole action section_
*/
typedef std::vector<std::pair<std::string, std::string>> ApplicationActionList;

class IntegrationManager {
public:
/**
Expand Down Expand Up @@ -62,7 +68,7 @@ namespace appimage {
* The map key should be the action identifier and the value the action fields in a plain string i.e.:
*
* ```
* std::map<std::string, std::string> additionalApplicationActions = {{"Remove",
* ApplicationActionList additionalApplicationActions = {{"Remove",
* "[Desktop Action Remove]\n"
* "Name=\"Remove application\"\n"
* "Icon=remove\n"
Expand All @@ -71,7 +77,7 @@ namespace appimage {
* @param appImage
* @param additionalApplicationActions desktop entry actions to be added.
*/
void registerAppImage(const core::AppImage& appImage, std::map<std::string, std::string> additionalApplicationActions) const;
void registerAppImage(const core::AppImage& appImage, ApplicationActionList additionalApplicationActions) const;

/**
* @brief Unregister an AppImage in the system
Expand Down
2 changes: 1 addition & 1 deletion src/libappimage/desktop_integration/IntegrationManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ namespace appimage {
}

void IntegrationManager::registerAppImage(const core::AppImage &appImage,
std::map<std::string, std::string> additionalApplicationActions) const {
ApplicationActionList additionalApplicationActions) const {
try {
integrator::Integrator i(appImage, d->xdgDataHome);
i.setAdditionalApplicationActions(additionalApplicationActions);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ namespace appimage {
}
}

void DesktopEntryEditor::setAdditionalApplicationActions(std::map<std::string, std::string> additionalApplicationActions) {
void DesktopEntryEditor::setAdditionalApplicationActions(ApplicationActionList additionalApplicationActions) {
DesktopEntryEditor::additionalApplicationActions = std::move(additionalApplicationActions);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

// local
#include <XdgUtils/DesktopEntry/DesktopEntry.h>
#include <appimage/desktop_integration/IntegrationManager.h>

namespace appimage {
namespace desktop_integration {
Expand Down Expand Up @@ -43,7 +44,7 @@ namespace appimage {
* Set the application actions that must be appended to the desktop entry on edit.
* @param additionalApplicationActions
*/
void setAdditionalApplicationActions(std::map<std::string, std::string> additionalApplicationActions);
void setAdditionalApplicationActions(ApplicationActionList additionalApplicationActions);

/**
* Modifies the Desktop Entry according to the set parameters.
Expand All @@ -56,7 +57,7 @@ namespace appimage {
std::string vendorPrefix;
std::string appImagePath;
std::string appImageVersion;
std::map<std::string, std::string> additionalApplicationActions;
ApplicationActionList additionalApplicationActions;

/**
* Set Exec and TryExec entries in the 'Desktop Entry' and 'Desktop Action' groups pointing to the
Expand Down
5 changes: 3 additions & 2 deletions src/libappimage/desktop_integration/integrator/Integrator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
#include <appimage/core/AppImage.h>
#include <appimage/desktop_integration/exceptions.h>
#include <appimage/utils/ResourcesExtractor.h>
#include <appimage/desktop_integration/IntegrationManager.h>
#include <constants.h>
#include "utils/Logger.h"
#include "utils/hashlib.h"
Expand Down Expand Up @@ -47,7 +48,7 @@ namespace appimage {
core::AppImage appImage;
bf::path xdgDataHome;
std::string appImageId;
std::map<std::string, std::string> additionalApplicationActions;
ApplicationActionList additionalApplicationActions;

ResourcesExtractor resourcesExtractor;
DesktopEntry desktopEntry;
Expand Down Expand Up @@ -308,7 +309,7 @@ namespace appimage {
d->setExecutionPermission();
}

void Integrator::setAdditionalApplicationActions(std::map<std::string, std::string> additionalApplicationActions) {
void Integrator::setAdditionalApplicationActions(ApplicationActionList additionalApplicationActions) {
d->additionalApplicationActions = std::move(additionalApplicationActions);
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/libappimage/desktop_integration/integrator/Integrator.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

// local
#include <appimage/core/AppImage.h>
#include <appimage/desktop_integration/IntegrationManager.h>
#include "constants.h"

namespace appimage {
Expand Down Expand Up @@ -42,7 +43,7 @@ namespace appimage {
*/
void integrate();

void setAdditionalApplicationActions(std::map<std::string, std::string> additionalApplicationActions);
void setAdditionalApplicationActions(ApplicationActionList additionalApplicationActions);

private:
class Priv;
Expand Down
14 changes: 7 additions & 7 deletions tests/libappimage/desktop_integration/TestIntegrationManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class TestIntegrationManager : public ::testing::Test {
bf::remove_all(userDirPath);
}

void createStubFile(const bf::path& path, const std::string& content = "") {
void createStubFile(const bf::path &path, const std::string &content = "") {
bf::create_directories(path.parent_path());
bf::ofstream f(path);
f << content;
Expand All @@ -57,12 +57,12 @@ TEST_F(TestIntegrationManager, registerAppImageWithAdditionalActions) {
std::string appImagePath = TEST_DATA_DIR "Echo-x86_64.AppImage";
IntegrationManager manager(userDirPath.string());
appimage::core::AppImage appImage(appImagePath);
std::map<std::string, std::string> applicationActions = {{"Remove",
"[Desktop Action Remove]\n"
"Name=\"Remove application\"\n"
"Name[es]=\"Eliminar aplicación\"\n"
"Icon=remove\n"
"Exec=remove-appimage-helper /path/to/the/AppImage\n"}};
ApplicationActionList applicationActions = {{"Remove",
"[Desktop Action Remove]\n"
"Name=\"Remove application\"\n"
"Name[es]=\"Eliminar aplicación\"\n"
"Icon=remove\n"
"Exec=remove-appimage-helper /path/to/the/AppImage\n"}};

manager.registerAppImage(appImage, applicationActions);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,12 +118,12 @@ TEST_F(DesktopEntryEditorTests, setAdditionalApplicationActions) {
editor.setVendorPrefix("prefix");
editor.setIdentifier("uuid");
editor.setAppImageVersion("0.1.1");
std::map<std::string, std::string> applicationActions = {{"Remove",
"[Desktop Action Remove]\n"
"Name=\"Remove application\"\n"
"Name[es]=\"Eliminar aplicación\"\n"
"Icon=remove\n"
"Exec=remove-appimage-helper /path/to/the/AppImage\n"}};
appimage::desktop_integration::ApplicationActionList applicationActions = {{"Remove",
"[Desktop Action Remove]\n"
"Name=\"Remove application\"\n"
"Name[es]=\"Eliminar aplicación\"\n"
"Icon=remove\n"
"Exec=remove-appimage-helper /path/to/the/AppImage\n"}};

editor.setAdditionalApplicationActions(applicationActions);
editor.edit(entry);
Expand All @@ -135,4 +135,4 @@ TEST_F(DesktopEntryEditorTests, setAdditionalApplicationActions) {
ASSERT_EQ(std::string("\"Eliminar aplicación\""), entry.get("Desktop Action Remove/Name[es]"));
ASSERT_EQ(std::string("remove"), entry.get("Desktop Action Remove/Icon"));
ASSERT_EQ(std::string("remove-appimage-helper /path/to/the/AppImage"), entry.get("Desktop Action Remove/Exec"));
}
}