diff options
| author | Kostiantin Korchuhanov <[email protected]> | 2025-08-15 16:29:34 +0300 |
|---|---|---|
| committer | Kostiantyn Korchuhanov <[email protected]> | 2025-09-22 06:51:19 +0000 |
| commit | f5818306d014fafaf35ef10ee83e286eebea9cd7 (patch) | |
| tree | 25151e3268583dbc4f503a043357a03469c622ab /src/itemactions/hidefileitemaction.h | |
| parent | 1d92f1736350664383217a7f30f4c3701ae14759 (diff) | |
itemactions: Add context menu actions to hide and unhide files using .hidden
Summary:
This patch introduces context menu actions that allow users to hide or unhide selected files by editing the .hidden file in their parent directories.
What this patch does:
- Implemented HideFileItemAction plugin based on KAbstractFileItemActionPlugin
- Plugin is disabled by default unless explicitly enabled in kservicemenurc via the hidefileitemaction key
- "Hide" action adds selected file names to the .hidden file, avoiding duplicates
- "Unhide" action removes selected file names from the .hidden file
- Action visibility logic:
- If only visible or only hidden files are selected, only the relevant action is shown
- If both are selected, both "Hide" and "Unhide" actions are shown
- Write permission checks ensure actions are disabled if the .hidden file cannot be modified
- Optimized redundant path computations by calculating parent directory and .hidden file paths once and reusing them
Diffstat (limited to 'src/itemactions/hidefileitemaction.h')
| -rw-r--r-- | src/itemactions/hidefileitemaction.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/itemactions/hidefileitemaction.h b/src/itemactions/hidefileitemaction.h new file mode 100644 index 000000000..565f0d563 --- /dev/null +++ b/src/itemactions/hidefileitemaction.h @@ -0,0 +1,26 @@ +/* + * SPDX-FileCopyrightText: 2025 Kostiantyn Korchuhanov <[email protected]> + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#ifndef HIDEFILEITEMACTION_H +#define HIDEFILEITEMACTION_H + +#include <KAbstractFileItemActionPlugin> +#include <KFileItemListProperties> +#include <QAction> +#include <QList> +#include <QWidget> + +class HideFileItemAction : public KAbstractFileItemActionPlugin +{ + Q_OBJECT + +public: + HideFileItemAction(QObject *parent); + + QList<QAction *> actions(const KFileItemListProperties &fileItemInfos, QWidget *parentWidget) override; +}; + +#endif // HIDEFILEITEMACTION_H |
