2024-03-04 00:27:05 +01:00
|
|
|
//
|
|
|
|
// Created by grimmauld on 03.03.24.
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef SWAYMUX_SWAYTREEMODEL_H
|
|
|
|
#define SWAYMUX_SWAYTREEMODEL_H
|
|
|
|
|
|
|
|
#include <QAbstractItemModel>
|
|
|
|
#include <utility>
|
|
|
|
#include "pstree.h"
|
|
|
|
#include "AbstractTreeModel.h"
|
|
|
|
#include "swaytree.h"
|
|
|
|
#include "../sway_bindings/Sway.h"
|
|
|
|
|
|
|
|
#include <nlohmann/json.hpp>
|
|
|
|
#include <utility>
|
2024-03-08 13:13:28 +01:00
|
|
|
#include <QTreeView>
|
2024-03-04 00:27:05 +01:00
|
|
|
|
|
|
|
using json = nlohmann::json;
|
|
|
|
|
|
|
|
class SwayTreeModel : public AbstractTreeModel<SwayTreeNode> {
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
inline static Sway sway = Sway();
|
|
|
|
|
|
|
|
Q_DISABLE_COPY_MOVE(SwayTreeModel)
|
|
|
|
|
|
|
|
explicit SwayTreeModel(QObject *parent = nullptr) : AbstractTreeModel<SwayTreeNode>(parent) {
|
|
|
|
auto res = sway.sendIPC(SWAY_GET_TREE);
|
|
|
|
auto rep = json::parse(res.msg);
|
|
|
|
rootItem = new SwayTreeNode(rep);
|
|
|
|
}
|
|
|
|
|
|
|
|
~SwayTreeModel() override = default;
|
|
|
|
|
|
|
|
explicit SwayTreeModel(SwayTreeNode * rootItem, QObject *parent = nullptr) : rootItem(rootItem),
|
|
|
|
AbstractTreeModel<SwayTreeNode>(
|
|
|
|
parent) {};
|
|
|
|
|
|
|
|
[[nodiscard]] const SwayTreeNode *getRoot() const override {
|
|
|
|
return rootItem;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
2024-03-07 11:20:26 +01:00
|
|
|
[[nodiscard]] QModelIndex findFocusedWindowIndex() const;
|
2024-03-06 23:40:48 +01:00
|
|
|
|
2024-03-08 13:13:28 +01:00
|
|
|
[[nodiscard]] std::set<SwayTreeNode*> getSelectedNodes(const QTreeView* treeView) const;
|
|
|
|
|
2024-03-06 23:40:48 +01:00
|
|
|
|
2024-03-04 00:27:05 +01:00
|
|
|
private:
|
|
|
|
SwayTreeNode * rootItem;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif //SWAYMUX_SWAYTREEMODEL_H
|