ExtraBrowsersModel.hpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #pragma once
  2. #include <QAbstractTableModel>
  3. #include <QUuid>
  4. enum class Column : int {
  5. Title,
  6. Url,
  7. Delete,
  8. Count,
  9. };
  10. #define OBJ_NAME_SUFFIX "_extraBrowser"
  11. class ExtraBrowsersModel : public QAbstractTableModel {
  12. Q_OBJECT
  13. public:
  14. inline ExtraBrowsersModel(QObject *parent = nullptr) : QAbstractTableModel(parent)
  15. {
  16. Reset();
  17. QMetaObject::invokeMethod(this, "Init", Qt::QueuedConnection);
  18. }
  19. int rowCount(const QModelIndex &parent = QModelIndex()) const override;
  20. int columnCount(const QModelIndex &parent = QModelIndex()) const override;
  21. QVariant data(const QModelIndex &index, int role) const override;
  22. QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override;
  23. Qt::ItemFlags flags(const QModelIndex &index) const override;
  24. struct Item {
  25. int prevIdx;
  26. QString title;
  27. QString url;
  28. };
  29. void TabSelection(bool forward);
  30. void AddDeleteButton(int idx);
  31. void Reset();
  32. void CheckToAdd();
  33. void UpdateItem(Item &item);
  34. void DeleteItem();
  35. void Apply();
  36. QVector<Item> items;
  37. QVector<int> deleted;
  38. QString newTitle;
  39. QString newURL;
  40. public slots:
  41. void Init();
  42. };