mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-13 15:45:42 +08:00
Ref T189, formatting
This commit is contained in:
@@ -44,111 +44,111 @@ namespace BlackGui
|
||||
|
||||
void CAircraftModelListModel::setAircraftModelMode(CAircraftModelListModel::AircraftModelMode mode)
|
||||
{
|
||||
if (this->m_mode == mode) { return; }
|
||||
this->m_mode = mode;
|
||||
this->m_columns.clear();
|
||||
if (m_mode == mode) { return; }
|
||||
m_mode = mode;
|
||||
m_columns.clear();
|
||||
switch (mode)
|
||||
{
|
||||
case NotSet:
|
||||
case OwnAircraftModelClient:
|
||||
this->m_columns.addColumn(CColumn::standardString("model", { CAircraftModel::IndexModelString}));
|
||||
this->m_columns.addColumn(CColumn("DB", "DB metadata", CAircraftModel::IndexDatabaseIcon, new CPixmapFormatter()));
|
||||
this->m_columns.addColumn(CColumn::standardString("DB", "parts from DB", { CAircraftModel::IndexMembersDbStatus}));
|
||||
this->m_columns.addColumn(CColumn("mode", "model mode(include, exclude)", CAircraftModel::IndexModelModeAsIcon, new CPixmapFormatter()));
|
||||
this->m_columns.addColumn(CColumn::standardString("description", { CAircraftModel::IndexDescription}));
|
||||
this->m_columns.addColumn(CColumn::standardString("sim.", "simulator supported", CAircraftModel::IndexSimulatorInfoAsString));
|
||||
m_columns.addColumn(CColumn::standardString("model", { CAircraftModel::IndexModelString}));
|
||||
m_columns.addColumn(CColumn("DB", "DB metadata", CAircraftModel::IndexDatabaseIcon, new CPixmapFormatter()));
|
||||
m_columns.addColumn(CColumn::standardString("DB", "parts from DB", { CAircraftModel::IndexMembersDbStatus}));
|
||||
m_columns.addColumn(CColumn("mode", "model mode(include, exclude)", CAircraftModel::IndexModelModeAsIcon, new CPixmapFormatter()));
|
||||
m_columns.addColumn(CColumn::standardString("description", { CAircraftModel::IndexDescription}));
|
||||
m_columns.addColumn(CColumn::standardString("sim.", "simulator supported", CAircraftModel::IndexSimulatorInfoAsString));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey}));
|
||||
m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey}));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("aircraft", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexDesignatorManufacturer}));
|
||||
this->m_columns.addColumn(CColumn::standardString("livery", { CAircraftModel::IndexLivery, CLivery::IndexCombinedCode}));
|
||||
this->m_columns.addColumn(CColumn::standardString("airline", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexDesignatorNameCountry}));
|
||||
m_columns.addColumn(CColumn::standardString("aircraft", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexDesignatorManufacturer}));
|
||||
m_columns.addColumn(CColumn::standardString("livery", { CAircraftModel::IndexLivery, CLivery::IndexCombinedCode}));
|
||||
m_columns.addColumn(CColumn::standardString("airline", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexDesignatorNameCountry}));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("name", { CAircraftModel::IndexName}));
|
||||
this->m_columns.addColumn(CColumn::standardString("filename", { CAircraftModel::IndexFileName}));
|
||||
m_columns.addColumn(CColumn::standardString("name", { CAircraftModel::IndexName}));
|
||||
m_columns.addColumn(CColumn::standardString("filename", { CAircraftModel::IndexFileName}));
|
||||
|
||||
// default sort order
|
||||
this->setSortColumnByPropertyIndex(CAircraftModel::IndexModelString);
|
||||
this->m_sortOrder = Qt::AscendingOrder;
|
||||
m_sortOrder = Qt::AscendingOrder;
|
||||
break;
|
||||
|
||||
case OwnModelSet:
|
||||
// intentional fall thru
|
||||
this->m_columns.addColumn(CColumn::orderColumn());
|
||||
m_columns.addColumn(CColumn::orderColumn());
|
||||
|
||||
case OwnAircraftModelMappingTool:
|
||||
case StashModel:
|
||||
this->m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexModelString));
|
||||
this->m_columns.addColumn(CColumn("DB", "DB metadata", CAircraftModel::IndexDatabaseIcon, new CPixmapFormatter()));
|
||||
m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexModelString));
|
||||
m_columns.addColumn(CColumn("DB", "DB metadata", CAircraftModel::IndexDatabaseIcon, new CPixmapFormatter()));
|
||||
if (mode == StashModel)
|
||||
{
|
||||
this->m_columns.addColumn(CColumn::standardString("flags", "parts from DB", { CAircraftModel::IndexMembersDbStatus}));
|
||||
m_columns.addColumn(CColumn::standardString("flags", "parts from DB", { CAircraftModel::IndexMembersDbStatus}));
|
||||
}
|
||||
this->m_columns.addColumn(CColumn("mode", "model mode(include, exclude)", CAircraftModel::IndexModelModeAsIcon, new CPixmapFormatter()));
|
||||
this->m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey}));
|
||||
m_columns.addColumn(CColumn("mode", "model mode(include, exclude)", CAircraftModel::IndexModelModeAsIcon, new CPixmapFormatter()));
|
||||
m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey}));
|
||||
if (mode == OwnModelSet)
|
||||
{
|
||||
this->m_columns.addColumn(CColumn::standardString("d#", "distributor order", { CAircraftModel::IndexDistributor, CDistributor::IndexOrderString}));
|
||||
m_columns.addColumn(CColumn::standardString("d#", "distributor order", { CAircraftModel::IndexDistributor, CDistributor::IndexOrderString}));
|
||||
}
|
||||
this->m_columns.addColumn(CColumn::standardString("ac", "aircraft ICAO", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexAircraftDesignator}));
|
||||
this->m_columns.addColumn(CColumn::standardString("fam.", "aircraft family", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexFamily}));
|
||||
this->m_columns.addColumn(CColumn::standardString("livery", { CAircraftModel::IndexLivery, CLivery::IndexCombinedCode}));
|
||||
this->m_columns.addColumn(CColumn::standardString("al", "airline ICAO", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineDesignator}));
|
||||
this->m_columns.addColumn(CColumn::standardString("description", CAircraftModel::IndexDescription));
|
||||
this->m_columns.addColumn(CColumn::standardString("filename", CAircraftModel::IndexFileName));
|
||||
this->m_columns.addColumn(CColumn::standardString("file ts.", "file timestamp", CAircraftModel::IndexFileTimestampFormattedYmdhms));
|
||||
this->m_columns.addColumn(CColumn::standardString("icon", CAircraftModel::IndexIconPath));
|
||||
this->m_columns.addColumn(CColumn::standardString("changed", CAircraftModel::IndexUtcTimestampFormattedYmdhms));
|
||||
m_columns.addColumn(CColumn::standardString("ac", "aircraft ICAO", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexAircraftDesignator}));
|
||||
m_columns.addColumn(CColumn::standardString("fam.", "aircraft family", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexFamily}));
|
||||
m_columns.addColumn(CColumn::standardString("livery", { CAircraftModel::IndexLivery, CLivery::IndexCombinedCode}));
|
||||
m_columns.addColumn(CColumn::standardString("al", "airline ICAO", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineDesignator}));
|
||||
m_columns.addColumn(CColumn::standardString("description", CAircraftModel::IndexDescription));
|
||||
m_columns.addColumn(CColumn::standardString("filename", CAircraftModel::IndexFileName));
|
||||
m_columns.addColumn(CColumn::standardString("file ts.", "file timestamp", CAircraftModel::IndexFileTimestampFormattedYmdhms));
|
||||
m_columns.addColumn(CColumn::standardString("icon", CAircraftModel::IndexIconPath));
|
||||
m_columns.addColumn(CColumn::standardString("changed", CAircraftModel::IndexUtcTimestampFormattedYmdhms));
|
||||
|
||||
// default sort order
|
||||
this->setSortColumnByPropertyIndex(CAircraftModel::IndexModelString);
|
||||
this->m_sortOrder = Qt::AscendingOrder;
|
||||
m_sortOrder = Qt::AscendingOrder;
|
||||
break;
|
||||
|
||||
case Database:
|
||||
this->m_columns.addColumn(CColumn::standardString("id", CAircraftModel::IndexDbIntegerKey, CDefaultFormatter::alignRightVCenter()));
|
||||
this->m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexModelString));
|
||||
this->m_columns.addColumn(CColumn("mode", "model mode(include, exclude)", CAircraftModel::IndexModelModeAsIcon, new CPixmapFormatter()));
|
||||
m_columns.addColumn(CColumn::standardString("id", CAircraftModel::IndexDbIntegerKey, CDefaultFormatter::alignRightVCenter()));
|
||||
m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexModelString));
|
||||
m_columns.addColumn(CColumn("mode", "model mode(include, exclude)", CAircraftModel::IndexModelModeAsIcon, new CPixmapFormatter()));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey}));
|
||||
this->m_columns.addColumn(CColumn::standardString("name", CAircraftModel::IndexName));
|
||||
this->m_columns.addColumn(CColumn::standardString("description", CAircraftModel::IndexDescription));
|
||||
this->m_columns.addColumn(CColumn::standardString("sim.", "simulator supported", CAircraftModel::IndexSimulatorInfoAsString));
|
||||
m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey}));
|
||||
m_columns.addColumn(CColumn::standardString("name", CAircraftModel::IndexName));
|
||||
m_columns.addColumn(CColumn::standardString("description", CAircraftModel::IndexDescription));
|
||||
m_columns.addColumn(CColumn::standardString("sim.", "simulator supported", CAircraftModel::IndexSimulatorInfoAsString));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("ac", "aircraft ICAO", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexAircraftDesignator}));
|
||||
this->m_columns.addColumn(CColumn::standardString("fam.", "aircraft family", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexFamily}));
|
||||
this->m_columns.addColumn(CColumn::standardString("manufacturer", "aircraft ICAO", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexManufacturer}));
|
||||
m_columns.addColumn(CColumn::standardString("ac", "aircraft ICAO", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexAircraftDesignator}));
|
||||
m_columns.addColumn(CColumn::standardString("fam.", "aircraft family", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexFamily}));
|
||||
m_columns.addColumn(CColumn::standardString("manufacturer", "aircraft ICAO", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexManufacturer}));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("code", { CAircraftModel::IndexLivery, CLivery::IndexCombinedCode}));
|
||||
this->m_columns.addColumn(CColumn::standardString("liv.desc.", "livery description", { CAircraftModel::IndexLivery, CLivery::IndexDescription}));
|
||||
this->m_columns.addColumn(CColumn::standardString("al", "airline ICAO", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineDesignator}));
|
||||
this->m_columns.addColumn(CColumn::standardString("al.name", "airline name", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineName }));
|
||||
m_columns.addColumn(CColumn::standardString("code", { CAircraftModel::IndexLivery, CLivery::IndexCombinedCode}));
|
||||
m_columns.addColumn(CColumn::standardString("liv.desc.", "livery description", { CAircraftModel::IndexLivery, CLivery::IndexDescription}));
|
||||
m_columns.addColumn(CColumn::standardString("al", "airline ICAO", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineDesignator}));
|
||||
m_columns.addColumn(CColumn::standardString("al.name", "airline name", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineName }));
|
||||
|
||||
this->m_columns.addColumn(CColumn("fuse.", "fuselage color", { CAircraftModel::IndexLivery, CLivery::IndexColorFuselage }, new CColorFormatter()));
|
||||
this->m_columns.addColumn(CColumn("tail", "tail color", { CAircraftModel::IndexLivery, CLivery::IndexColorTail }, new CColorFormatter()));
|
||||
this->m_columns.addColumn(CColumn("mil.", "military livery", { CAircraftModel::IndexLivery, CLivery::IndexIsMilitary}, new CBoolIconFormatter("military", "civil")));
|
||||
this->m_columns.addColumn(CColumn::standardString("changed", CAircraftModel::IndexUtcTimestampFormattedYmdhms));
|
||||
m_columns.addColumn(CColumn("fuse.", "fuselage color", { CAircraftModel::IndexLivery, CLivery::IndexColorFuselage }, new CColorFormatter()));
|
||||
m_columns.addColumn(CColumn("tail", "tail color", { CAircraftModel::IndexLivery, CLivery::IndexColorTail }, new CColorFormatter()));
|
||||
m_columns.addColumn(CColumn("mil.", "military livery", { CAircraftModel::IndexLivery, CLivery::IndexIsMilitary}, new CBoolIconFormatter("military", "civil")));
|
||||
m_columns.addColumn(CColumn::standardString("changed", CAircraftModel::IndexUtcTimestampFormattedYmdhms));
|
||||
|
||||
// default sort order
|
||||
this->setSortColumnByPropertyIndex(CAircraftModel::IndexModelString);
|
||||
this->m_sortOrder = Qt::AscendingOrder;
|
||||
m_sortOrder = Qt::AscendingOrder;
|
||||
break;
|
||||
|
||||
case VPilotRuleModel:
|
||||
this->m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexModelString));
|
||||
this->m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey}));
|
||||
this->m_columns.addColumn(CColumn::standardString("sim.", "simulator supported", CAircraftModel::IndexSimulatorInfoAsString));
|
||||
m_columns.addColumn(CColumn::standardString("model", CAircraftModel::IndexModelString));
|
||||
m_columns.addColumn(CColumn::standardString("dist.", "distributor", { CAircraftModel::IndexDistributor, CDistributor::IndexDbStringKey}));
|
||||
m_columns.addColumn(CColumn::standardString("sim.", "simulator supported", CAircraftModel::IndexSimulatorInfoAsString));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("ac", "aircraft ICAO", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexAircraftDesignator}));
|
||||
m_columns.addColumn(CColumn::standardString("ac", "aircraft ICAO", { CAircraftModel::IndexAircraftIcaoCode, CAircraftIcaoCode::IndexAircraftDesignator}));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("al", "airline ICAO", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineDesignator}));
|
||||
this->m_columns.addColumn(CColumn::standardString("al.name", "airline name", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineName }));
|
||||
m_columns.addColumn(CColumn::standardString("al", "airline ICAO", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineDesignator}));
|
||||
m_columns.addColumn(CColumn::standardString("al.name", "airline name", { CAircraftModel::IndexLivery, CLivery::IndexAirlineIcaoCode, CAirlineIcaoCode::IndexAirlineName }));
|
||||
|
||||
this->m_columns.addColumn(CColumn::standardString("changed", CAircraftModel::IndexUtcTimestampFormattedYmdhms));
|
||||
m_columns.addColumn(CColumn::standardString("changed", CAircraftModel::IndexUtcTimestampFormattedYmdhms));
|
||||
|
||||
// default sort order
|
||||
this->setSortColumnByPropertyIndex(CAircraftModel::IndexModelString);
|
||||
this->m_sortOrder = Qt::AscendingOrder;
|
||||
m_sortOrder = Qt::AscendingOrder;
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -201,7 +201,7 @@ namespace BlackGui
|
||||
// highlight stashed first
|
||||
if (m_highlightStrings.contains(model.getModelString(), Qt::CaseInsensitive))
|
||||
{
|
||||
return this->m_highlightColor;
|
||||
return m_highlightColor;
|
||||
}
|
||||
|
||||
return QVariant();
|
||||
@@ -217,10 +217,11 @@ namespace BlackGui
|
||||
|
||||
void CAircraftModelListModel::clearHighlighting()
|
||||
{
|
||||
this->m_highlightModelStrings = false;
|
||||
this->m_highlightStrings.clear();
|
||||
m_highlightModelStrings = false;
|
||||
m_highlightStrings.clear();
|
||||
COrderableListModelDbObjects::clearHighlighting();
|
||||
}
|
||||
|
||||
bool CAircraftModelListModel::hasHighlightedRows() const
|
||||
{
|
||||
return !m_highlightStrings.isEmpty();
|
||||
|
||||
@@ -74,7 +74,7 @@ namespace BlackGui
|
||||
int CListModelBaseNonTemplate::columnCount(const QModelIndex &modelIndex) const
|
||||
{
|
||||
Q_UNUSED(modelIndex);
|
||||
int c = this->m_columns.size();
|
||||
int c = m_columns.size();
|
||||
return c;
|
||||
}
|
||||
|
||||
@@ -89,19 +89,19 @@ namespace BlackGui
|
||||
{
|
||||
return QVariant();
|
||||
}
|
||||
if (section < 0 || section >= this->m_columns.size())
|
||||
if (section < 0 || section >= m_columns.size())
|
||||
{
|
||||
return QVariant();
|
||||
}
|
||||
|
||||
if (role == Qt::DisplayRole)
|
||||
{
|
||||
QString header = this->m_columns.at(section).getColumnName(false);
|
||||
QString header = m_columns.at(section).getColumnName(false);
|
||||
return QVariant(header);
|
||||
}
|
||||
else if (role == Qt::ToolTipRole)
|
||||
{
|
||||
QString header = this->m_columns.at(section).getColumnToolTip(false);
|
||||
QString header = m_columns.at(section).getColumnToolTip(false);
|
||||
return header.isEmpty() ? QVariant() : QVariant(header);
|
||||
}
|
||||
return QVariant();
|
||||
@@ -121,7 +121,7 @@ namespace BlackGui
|
||||
|
||||
BlackMisc::CPropertyIndex CListModelBaseNonTemplate::columnToPropertyIndex(int column) const
|
||||
{
|
||||
return this->m_columns.columnToPropertyIndex(column);
|
||||
return m_columns.columnToPropertyIndex(column);
|
||||
}
|
||||
|
||||
int CListModelBaseNonTemplate::propertyIndexToColumn(const CPropertyIndex &propertyIndex) const
|
||||
@@ -142,31 +142,31 @@ namespace BlackGui
|
||||
|
||||
void CListModelBaseNonTemplate::setSortColumnByPropertyIndex(const BlackMisc::CPropertyIndex &propertyIndex)
|
||||
{
|
||||
this->m_sortColumn = this->m_columns.propertyIndexToColumn(propertyIndex);
|
||||
m_sortColumn = m_columns.propertyIndexToColumn(propertyIndex);
|
||||
}
|
||||
|
||||
void CListModelBaseNonTemplate::setSorting(const CPropertyIndex &propertyIndex, Qt::SortOrder order)
|
||||
{
|
||||
this->setSortColumnByPropertyIndex(propertyIndex);
|
||||
this->m_sortOrder = order;
|
||||
m_sortOrder = order;
|
||||
}
|
||||
|
||||
bool CListModelBaseNonTemplate::hasValidSortColumn() const
|
||||
{
|
||||
|
||||
if (!(this->m_sortColumn >= 0 && this->m_sortColumn < this->m_columns.size())) { return false; }
|
||||
return this->m_columns.isSortable(this->m_sortColumn);
|
||||
if (!(m_sortColumn >= 0 && m_sortColumn < m_columns.size())) { return false; }
|
||||
return m_columns.isSortable(m_sortColumn);
|
||||
}
|
||||
|
||||
Qt::ItemFlags CListModelBaseNonTemplate::flags(const QModelIndex &index) const
|
||||
{
|
||||
Qt::ItemFlags f = QStandardItemModel::flags(index);
|
||||
if (!index.isValid()) { return f; }
|
||||
const bool editable = this->m_columns.isEditable(index);
|
||||
const bool editable = m_columns.isEditable(index);
|
||||
f = editable ? (f | Qt::ItemIsEditable) : (f & ~Qt::ItemIsEditable);
|
||||
|
||||
// flags from formatter
|
||||
const CDefaultFormatter *formatter = this->m_columns.getFormatter(index);
|
||||
const CDefaultFormatter *formatter = m_columns.getFormatter(index);
|
||||
if (formatter) { f = formatter->flags(f, editable); }
|
||||
|
||||
// drag and drop
|
||||
@@ -186,7 +186,7 @@ namespace BlackGui
|
||||
|
||||
Qt::DropActions CListModelBaseNonTemplate::supportedDropActions() const
|
||||
{
|
||||
return this->m_dropActions;
|
||||
return m_dropActions;
|
||||
}
|
||||
|
||||
QStringList CListModelBaseNonTemplate::mimeTypes() const
|
||||
@@ -197,7 +197,7 @@ namespace BlackGui
|
||||
|
||||
void CListModelBaseNonTemplate::markDestroyed()
|
||||
{
|
||||
this->m_modelDestroyed = true;
|
||||
m_modelDestroyed = true;
|
||||
}
|
||||
|
||||
bool CListModelBaseNonTemplate::isModelDestroyed()
|
||||
@@ -305,7 +305,7 @@ namespace BlackGui
|
||||
}
|
||||
|
||||
// Formatter
|
||||
const CDefaultFormatter *formatter = this->m_columns.getFormatter(index);
|
||||
const CDefaultFormatter *formatter = m_columns.getFormatter(index);
|
||||
Q_ASSERT_X(formatter, Q_FUNC_INFO, "Missing formatter");
|
||||
|
||||
// Upfront checking avoids unnecessary data fetching
|
||||
@@ -333,12 +333,12 @@ namespace BlackGui
|
||||
|
||||
// check / init
|
||||
if (!this->isValidIndex(index)) { return false; }
|
||||
if (!this->m_columns.isEditable(index)) { return false; }
|
||||
const CDefaultFormatter *formatter = this->m_columns.getFormatter(index);
|
||||
if (!m_columns.isEditable(index)) { return false; }
|
||||
const CDefaultFormatter *formatter = m_columns.getFormatter(index);
|
||||
Q_ASSERT(formatter);
|
||||
if (!formatter) { return false; }
|
||||
|
||||
ObjectType obj = this->m_container[index.row()];
|
||||
ObjectType obj = m_container[index.row()];
|
||||
ObjectType currentObject(obj);
|
||||
BlackMisc::CPropertyIndex propertyIndex = this->columnToPropertyIndex(index.column());
|
||||
obj.setPropertyByIndex(propertyIndex, value);
|
||||
@@ -347,7 +347,7 @@ namespace BlackGui
|
||||
{
|
||||
const QModelIndex topLeft = index.sibling(index.row(), 0);
|
||||
const QModelIndex bottomRight = index.sibling(index.row(), this->columnCount() - 1);
|
||||
this->m_container[index.row()] = obj;
|
||||
m_container[index.row()] = obj;
|
||||
const CVariant co = CVariant::fromValue(obj);
|
||||
emit objectChanged(co, propertyIndex);
|
||||
emit this->dataChanged(topLeft, bottomRight);
|
||||
@@ -375,29 +375,29 @@ namespace BlackGui
|
||||
// Keep sorting out of begin/end reset model
|
||||
ContainerType sortedContainer;
|
||||
ContainerType selection;
|
||||
if (this->m_selectionModel)
|
||||
if (m_selectionModel)
|
||||
{
|
||||
selection = this->m_selectionModel->selectedObjects();
|
||||
selection = m_selectionModel->selectedObjects();
|
||||
}
|
||||
const int oldSize = this->m_container.size();
|
||||
const int oldSize = m_container.size();
|
||||
const bool performSort = sort && container.size() > 1 && this->hasValidSortColumn();
|
||||
if (performSort)
|
||||
{
|
||||
const int sortColumn = this->getSortColumn();
|
||||
sortedContainer = this->sortContainerByColumn(container, sortColumn, this->m_sortOrder);
|
||||
sortedContainer = this->sortContainerByColumn(container, sortColumn, m_sortOrder);
|
||||
}
|
||||
|
||||
this->beginResetModel();
|
||||
this->m_container = performSort ? sortedContainer : container;
|
||||
m_container = performSort ? sortedContainer : container;
|
||||
this->updateFilteredContainer();
|
||||
this->endResetModel();
|
||||
|
||||
if (!selection.isEmpty())
|
||||
{
|
||||
this->m_selectionModel->selectObjects(selection);
|
||||
m_selectionModel->selectObjects(selection);
|
||||
}
|
||||
|
||||
const int newSize = this->m_container.size();
|
||||
const int newSize = m_container.size();
|
||||
Q_UNUSED(oldSize);
|
||||
// I have to update even with same size because I cannot tell what/if data are changed
|
||||
this->emitModelDataChanged();
|
||||
@@ -408,8 +408,8 @@ namespace BlackGui
|
||||
void CListModelBase<ObjectType, ContainerType, UseCompare>::update(const QModelIndex &index, const ObjectType &object)
|
||||
{
|
||||
if (m_modelDestroyed) { return; }
|
||||
if (index.row() >= this->m_container.size()) { return; }
|
||||
this->m_container[index.row()] = object;
|
||||
if (index.row() >= m_container.size()) { return; }
|
||||
m_container[index.row()] = object;
|
||||
|
||||
QModelIndex i1 = index.sibling(index.row(), 0);
|
||||
QModelIndex i2 = index.sibling(index.row(), this->columnCount(index) - 1);
|
||||
@@ -435,7 +435,7 @@ namespace BlackGui
|
||||
});
|
||||
worker->thenWithResult<ContainerType>(this, [this](const ContainerType & sortedContainer)
|
||||
{
|
||||
if (this->m_modelDestroyed) { return; }
|
||||
if (m_modelDestroyed) { return; }
|
||||
this->update(sortedContainer, false);
|
||||
});
|
||||
worker->then(this, &CListModelBase::asyncUpdateFinished);
|
||||
@@ -468,7 +468,7 @@ namespace BlackGui
|
||||
void CListModelBase<ObjectType, ContainerType, UseCompare>::removeFilter()
|
||||
{
|
||||
if (!this->hasFilter()) { return; }
|
||||
this->m_filter.reset(nullptr);
|
||||
m_filter.reset(nullptr);
|
||||
this->beginResetModel();
|
||||
this->updateFilteredContainer();
|
||||
this->endResetModel();
|
||||
@@ -485,7 +485,7 @@ namespace BlackGui
|
||||
}
|
||||
if (filter->isValid())
|
||||
{
|
||||
this->m_filter = std::move(filter);
|
||||
m_filter = std::move(filter);
|
||||
this->beginResetModel();
|
||||
this->updateFilteredContainer();
|
||||
this->endResetModel();
|
||||
@@ -515,13 +515,13 @@ namespace BlackGui
|
||||
template <typename ObjectType, typename ContainerType, bool UseCompare>
|
||||
const ContainerType &CListModelBase<ObjectType, ContainerType, UseCompare>::container() const
|
||||
{
|
||||
return this->m_container;
|
||||
return m_container;
|
||||
}
|
||||
|
||||
template <typename ObjectType, typename ContainerType, bool UseCompare>
|
||||
const ContainerType &CListModelBase<ObjectType, ContainerType, UseCompare>::containerFiltered() const
|
||||
{
|
||||
return this->m_containerFiltered;
|
||||
return m_containerFiltered;
|
||||
}
|
||||
|
||||
template <typename ObjectType, typename ContainerType, bool UseCompare>
|
||||
@@ -530,20 +530,20 @@ namespace BlackGui
|
||||
if (this->hasFilter())
|
||||
{
|
||||
if (filtered) { *filtered = true; }
|
||||
return this->m_containerFiltered;
|
||||
return m_containerFiltered;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (filtered) { *filtered = false; }
|
||||
return this->m_container;
|
||||
return m_container;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename ObjectType, typename ContainerType, bool UseCompare>
|
||||
void CListModelBase<ObjectType, ContainerType, UseCompare>::push_back(const ObjectType &object)
|
||||
{
|
||||
beginInsertRows(QModelIndex(), this->m_container.size(), this->m_container.size());
|
||||
this->m_container.push_back(object);
|
||||
beginInsertRows(QModelIndex(), m_container.size(), m_container.size());
|
||||
m_container.push_back(object);
|
||||
endInsertRows();
|
||||
this->updateFilteredContainer();
|
||||
this->emitModelDataChanged();
|
||||
@@ -553,7 +553,7 @@ namespace BlackGui
|
||||
void CListModelBase<ObjectType, ContainerType, UseCompare>::insert(const ObjectType &object)
|
||||
{
|
||||
beginInsertRows(QModelIndex(), 0, 0);
|
||||
this->m_container.insert(this->m_container.begin(), object);
|
||||
m_container.insert(m_container.begin(), object);
|
||||
endInsertRows();
|
||||
|
||||
if (this->hasFilter())
|
||||
@@ -570,7 +570,7 @@ namespace BlackGui
|
||||
{
|
||||
if (container.isEmpty()) { return; }
|
||||
beginInsertRows(QModelIndex(), 0, 0);
|
||||
this->m_container.insert(container);
|
||||
m_container.insert(container);
|
||||
endInsertRows();
|
||||
|
||||
if (this->hasFilter())
|
||||
@@ -585,11 +585,11 @@ namespace BlackGui
|
||||
template <typename ObjectType, typename ContainerType, bool UseCompare>
|
||||
void CListModelBase<ObjectType, ContainerType, UseCompare>::remove(const ObjectType &object)
|
||||
{
|
||||
int oldSize = this->m_container.size();
|
||||
int oldSize = m_container.size();
|
||||
beginRemoveRows(QModelIndex(), 0, 0);
|
||||
this->m_container.remove(object);
|
||||
m_container.remove(object);
|
||||
endRemoveRows();
|
||||
int newSize = this->m_container.size();
|
||||
int newSize = m_container.size();
|
||||
if (oldSize != newSize)
|
||||
{
|
||||
this->emitModelDataChanged();
|
||||
@@ -606,8 +606,8 @@ namespace BlackGui
|
||||
void CListModelBase<ObjectType, ContainerType, UseCompare>::clear()
|
||||
{
|
||||
beginResetModel();
|
||||
this->m_container.clear();
|
||||
this->m_containerFiltered.clear();
|
||||
m_container.clear();
|
||||
m_containerFiltered.clear();
|
||||
endResetModel();
|
||||
this->emitModelDataChanged();
|
||||
}
|
||||
@@ -615,7 +615,7 @@ namespace BlackGui
|
||||
template <typename ObjectType, typename ContainerType, bool UseCompare>
|
||||
bool CListModelBase<ObjectType, ContainerType, UseCompare>::isEmpty() const
|
||||
{
|
||||
return this->m_container.isEmpty();
|
||||
return m_container.isEmpty();
|
||||
}
|
||||
|
||||
template <typename ObjectType, typename ContainerType, bool UseCompare>
|
||||
@@ -623,11 +623,11 @@ namespace BlackGui
|
||||
{
|
||||
if (this->hasFilter())
|
||||
{
|
||||
this->m_containerFiltered = this->m_filter->filter(this->m_container);
|
||||
m_containerFiltered = m_filter->filter(m_container);
|
||||
}
|
||||
else
|
||||
{
|
||||
this->m_containerFiltered.clear();
|
||||
m_containerFiltered.clear();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -674,18 +674,18 @@ namespace BlackGui
|
||||
template <typename ObjectType, typename ContainerType, bool UseCompare>
|
||||
void CListModelBase<ObjectType, ContainerType, UseCompare>::sort(int column, Qt::SortOrder order)
|
||||
{
|
||||
if (column == this->m_sortColumn && order == this->m_sortOrder) { return; }
|
||||
if (column == m_sortColumn && order == m_sortOrder) { return; }
|
||||
|
||||
// new order
|
||||
this->m_sortColumn = column;
|
||||
this->m_sortOrder = order;
|
||||
if (this->m_container.size() < 2)
|
||||
m_sortColumn = column;
|
||||
m_sortOrder = order;
|
||||
if (m_container.size() < 2)
|
||||
{
|
||||
return; // nothing to do
|
||||
}
|
||||
|
||||
// sort the values
|
||||
this->updateContainerMaybeAsync(this->m_container, true);
|
||||
this->updateContainerMaybeAsync(m_container, true);
|
||||
}
|
||||
|
||||
template <typename ObjectType, typename ContainerType, bool UseCompare>
|
||||
@@ -705,13 +705,13 @@ namespace BlackGui
|
||||
ContainerType CListModelBase<ObjectType, ContainerType, UseCompare>::sortContainerByColumn(const ContainerType &container, int column, Qt::SortOrder order) const
|
||||
{
|
||||
if (m_modelDestroyed) { return container; }
|
||||
if (container.size() < 2 || !this->m_columns.isSortable(column))
|
||||
if (container.size() < 2 || !m_columns.isSortable(column))
|
||||
{
|
||||
return container; // nothing to do
|
||||
}
|
||||
|
||||
// this is the only part not really thread safe, but columns do not change so far
|
||||
BlackMisc::CPropertyIndex propertyIndex = this->m_columns.columnToSortPropertyIndex(column);
|
||||
BlackMisc::CPropertyIndex propertyIndex = m_columns.columnToSortPropertyIndex(column);
|
||||
Q_ASSERT(!propertyIndex.isEmpty());
|
||||
if (propertyIndex.isEmpty())
|
||||
{
|
||||
|
||||
@@ -48,6 +48,12 @@ namespace BlackGui
|
||||
CListModelBase<ObjectType, ContainerType, UseCompare>::clearHighlighting();
|
||||
}
|
||||
|
||||
//! \copydoc BlackGui::Models::CListModelBaseNonTemplate::hasHighlightedRows
|
||||
virtual bool hasHighlightedRows() const override
|
||||
{
|
||||
return !m_highlightKeys.isEmpty();
|
||||
}
|
||||
|
||||
//! Set color for highlighting
|
||||
void setHighlightColor(QColor color) { m_highlightColor = color; }
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ namespace BlackGui
|
||||
//! Request to stash if applicable
|
||||
void requestStash(const BlackMisc::Simulation::CAircraftModelList &models);
|
||||
|
||||
//! Highligh stashed models has been toggled
|
||||
//! Highlight stashed models has been toggled
|
||||
void toggledHighlightStashedModels();
|
||||
|
||||
//! Request further handling of drops I cannot handle on my own
|
||||
|
||||
@@ -1509,14 +1509,9 @@ namespace BlackGui
|
||||
|
||||
// save file
|
||||
const bool ok = CFileUtils::writeStringToFileInBackground(json, fileName);
|
||||
if (ok)
|
||||
{
|
||||
return CStatusMessage(this, CStatusMessage::SeverityInfo, "Writing " + fileName + " in progress", true);
|
||||
}
|
||||
else
|
||||
{
|
||||
return CStatusMessage(this, CStatusMessage::SeverityError, "Writing " + fileName + " failed", true);
|
||||
}
|
||||
return ok ?
|
||||
CStatusMessage(this, CStatusMessage::SeverityInfo, "Writing " + fileName + " in progress", true) :
|
||||
CStatusMessage(this, CStatusMessage::SeverityError, "Writing " + fileName + " failed", true);
|
||||
}
|
||||
|
||||
template<class ModelClass, class ContainerType, class ObjectType>
|
||||
|
||||
@@ -221,16 +221,16 @@ namespace BlackGui
|
||||
bool isCurrentlyAllowingMultipleRowSelections() const;
|
||||
|
||||
//! Filter dialog
|
||||
void setFilterDialog(BlackGui::Filters::CFilterDialog *filterDialog);
|
||||
void setFilterDialog(Filters::CFilterDialog *filterDialog);
|
||||
|
||||
//! Filter widget if any
|
||||
QWidget *getFilterWidget() const { return m_filterWidget; }
|
||||
|
||||
//! Set filter widget
|
||||
void setFilterWidget(BlackGui::Filters::CFilterWidget *filterWidget);
|
||||
void setFilterWidget(Filters::CFilterWidget *filterWidget);
|
||||
|
||||
//! Set custom menu if applicable
|
||||
BlackGui::Menus::IMenuDelegate *setCustomMenu(BlackGui::Menus::IMenuDelegate *menu, bool nestPreviousMenu = true);
|
||||
Menus::IMenuDelegate *setCustomMenu(Menus::IMenuDelegate *menu, bool nestPreviousMenu = true);
|
||||
|
||||
//! Enable loading indicator
|
||||
void enableLoadIndicator(bool enable);
|
||||
@@ -366,7 +366,7 @@ namespace BlackGui
|
||||
//! Method creating the menu
|
||||
//! \remarks override this method to contribute to the menu
|
||||
//! \sa BlackGui::Views::CViewBaseNonTemplate::ps_customMenuRequested
|
||||
virtual void customMenu(BlackGui::Menus::CMenuActions &menuActions);
|
||||
virtual void customMenu(Menus::CMenuActions &menuActions);
|
||||
|
||||
//! \name Functions from QTableView
|
||||
//! @{
|
||||
@@ -406,7 +406,7 @@ namespace BlackGui
|
||||
QString getSettingsFileName(bool load) const;
|
||||
|
||||
//! Init menu actions
|
||||
BlackGui::Menus::CMenuActions initMenuActions(MenuFlag menu);
|
||||
Menus::CMenuActions initMenuActions(MenuFlag menu);
|
||||
|
||||
//! Set the sort indicator to the current sort column
|
||||
virtual void updateSortIndicator() = 0;
|
||||
@@ -440,12 +440,12 @@ namespace BlackGui
|
||||
bool m_forceColumnsToMaxSize = true; //!< force that columns are extended to full viewport width
|
||||
QWidget *m_filterWidget = nullptr; //!< filter widget or dialog
|
||||
Menu m_menus = MenuDefault; //!< Default menu settings
|
||||
BlackGui::Menus::IMenuDelegate *m_menu = nullptr; //!< custom menu if any
|
||||
BlackGui::Menus::CFontMenu *m_fontMenu = nullptr; //!< font menu if applicable
|
||||
BlackGui::CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed
|
||||
QMap<MenuFlag, BlackGui::Menus::CMenuActions> m_menuFlagActions; //!< initialized actions
|
||||
BlackMisc::CSettingReadOnly<BlackGui::Settings::TGeneralGui> m_guiSettings { this, &CViewBaseNonTemplate::settingsChanged }; //!< general GUI settings
|
||||
BlackMisc::CSetting<BlackGui::Settings::TViewDirectorySettings> m_dirSettings { this }; //!< directory for load/save
|
||||
Menus::IMenuDelegate *m_menu = nullptr; //!< custom menu if any
|
||||
Menus::CFontMenu *m_fontMenu = nullptr; //!< font menu if applicable
|
||||
CLoadIndicator *m_loadIndicator = nullptr; //!< load indicator if needed
|
||||
QMap<MenuFlag, Menus::CMenuActions> m_menuFlagActions; //!< initialized actions
|
||||
BlackMisc::CSettingReadOnly<Settings::TGeneralGui> m_guiSettings { this, &CViewBaseNonTemplate::settingsChanged }; //!< general GUI settings
|
||||
BlackMisc::CSetting<Settings::TViewDirectorySettings> m_dirSettings { this }; //!< directory for load/save
|
||||
|
||||
protected slots:
|
||||
//! Helper method with template free signature serving as callback from threaded worker
|
||||
@@ -544,7 +544,7 @@ namespace BlackGui
|
||||
//! Base class for views
|
||||
template <class ModelClass, class ContainerType, class ObjectType> class CViewBase :
|
||||
public CViewBaseNonTemplate,
|
||||
public BlackGui::Models::ISelectionModel<ContainerType>
|
||||
public Models::ISelectionModel<ContainerType>
|
||||
{
|
||||
// I cannot use Q_OBJECT here, because: Template classes are not supported by Q_OBJECT
|
||||
// and I cannot declare slots as SLOT because I have no Q_OBJECT macro
|
||||
@@ -657,7 +657,7 @@ namespace BlackGui
|
||||
virtual void setObjectName(const QString &name);
|
||||
|
||||
//! Set filter and take ownership, any previously set filter will be destroyed
|
||||
void takeFilterOwnership(std::unique_ptr<BlackGui::Models::IModelFilter<ContainerType>> &filter);
|
||||
void takeFilterOwnership(std::unique_ptr<Models::IModelFilter<ContainerType>> &filter);
|
||||
|
||||
//! Removes filter and destroys filter object
|
||||
void removeFilter();
|
||||
@@ -707,7 +707,7 @@ namespace BlackGui
|
||||
virtual void jsonLoadedAndModelUpdated(const ContainerType &data);
|
||||
|
||||
//! \copydoc CViewBaseNonTemplate::customMenu
|
||||
virtual void customMenu(BlackGui::Menus::CMenuActions &menuActions) override;
|
||||
virtual void customMenu(Menus::CMenuActions &menuActions) override;
|
||||
|
||||
// --------------------------------------------- SLOTS start here -----------------------------------------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user