mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2026-08-14 15:33:36 -04:00
Start implememntation of database based Fox log model and a new Fox log window widget
This change incorporates a reorganization of the GUI code with widgets, validators, models, and item delegates being moved to sub-directories. Relax the requirements of the ForeignKeyDelegate and related CandidateKeyFilter classes to allow them to work with constant model pointers for both referenced and referencing models.
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
#ifndef DECODE_HIGHLIGHTING_MODEL_HPP_
|
||||
#define DECODE_HIGHLIGHTING_MODEL_HPP_
|
||||
|
||||
#include <QAbstractListModel>
|
||||
#include <QBrush>
|
||||
#include <QList>
|
||||
|
||||
#include "qt_helpers.hpp"
|
||||
#include "pimpl_h.hpp"
|
||||
|
||||
class QObject;
|
||||
class QFont;
|
||||
class QDataStream;
|
||||
class QDebug;
|
||||
|
||||
class DecodeHighlightingModel final
|
||||
: public QAbstractListModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
enum class Highlight : char {CQ, MyCall, Tx, DXCC, DXCCBand, Grid, GridBand, Call, CallBand
|
||||
, Continent, ContinentBand, CQZone, CQZoneBand, ITUZone, ITUZoneBand
|
||||
, LotW};
|
||||
Q_ENUM (Highlight)
|
||||
static QString highlight_name (Highlight h);
|
||||
|
||||
struct HighlightInfo final
|
||||
{
|
||||
Highlight type_;
|
||||
bool enabled_;
|
||||
QBrush foreground_;
|
||||
QBrush background_;
|
||||
};
|
||||
using HighlightItems = QList<HighlightInfo>;
|
||||
|
||||
explicit DecodeHighlightingModel (QObject * parent = 0);
|
||||
~DecodeHighlightingModel();
|
||||
|
||||
// access to raw items nd default items
|
||||
static HighlightItems const& default_items ();
|
||||
HighlightItems const& items () const;
|
||||
void items (HighlightItems const&);
|
||||
|
||||
void set_font (QFont const&);
|
||||
|
||||
enum DefaultRoles {TypeRole = Qt::UserRole, EnabledDefaultRole, ForegroundDefaultRole, BackgroundDefaultRole};
|
||||
|
||||
private:
|
||||
// implement the QAbstractListModel interface
|
||||
int rowCount (QModelIndex const& parent = QModelIndex()) const override;
|
||||
QVariant data (QModelIndex const&, int role) const override;
|
||||
QVariant headerData (int section, Qt::Orientation, int role = Qt::DisplayRole) const override;
|
||||
Qt::ItemFlags flags (QModelIndex const&) const override;
|
||||
bool setData (QModelIndex const& index, QVariant const& value, int role) override;
|
||||
Qt::DropActions supportedDropActions () const override;
|
||||
bool insertRows (int row, int count, QModelIndex const& parent = QModelIndex {}) override;
|
||||
bool removeRows (int row, int count, QModelIndex const& parent = QModelIndex {}) override;
|
||||
QMap<int, QVariant> itemData (QModelIndex const&) const override;
|
||||
|
||||
class impl;
|
||||
pimpl<impl> m_;
|
||||
};
|
||||
|
||||
bool operator == (DecodeHighlightingModel::HighlightInfo const&, DecodeHighlightingModel::HighlightInfo const&);
|
||||
|
||||
QDataStream& operator << (QDataStream&, DecodeHighlightingModel::HighlightInfo const&);
|
||||
QDataStream& operator >> (QDataStream&, DecodeHighlightingModel::HighlightInfo&);
|
||||
|
||||
#if !defined (QT_NO_DEBUG_STREAM)
|
||||
QDebug operator << (QDebug, DecodeHighlightingModel::HighlightInfo const&);
|
||||
#endif
|
||||
|
||||
ENUM_QDATASTREAM_OPS_DECL (DecodeHighlightingModel, Highlight);
|
||||
ENUM_CONVERSION_OPS_DECL (DecodeHighlightingModel, Highlight);
|
||||
|
||||
Q_DECLARE_METATYPE (DecodeHighlightingModel::HighlightInfo);
|
||||
Q_DECLARE_METATYPE (DecodeHighlightingModel::HighlightItems);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user