7 #include <QCoreApplication>
17 CColumn::CColumn(
const QString &headerName,
const QString &toolTip,
const CPropertyIndex &propertyIndex,
19 : m_columnName(headerName), m_columnToolTip(toolTip),
20 m_formatter(formatter ? formatter : new
CDefaultFormatter()), m_propertyIndex(propertyIndex),
32 Q_ASSERT(!propertyIndex.
isEmpty());
33 m_sortPropertyIndex = propertyIndex;
39 return incogntio ? CColumn::incongitoFormatter() : m_formatter.data();
43 : m_columnToolTip(toolTip), m_formatter(new
CPixmapFormatter()), m_propertyIndex(propertyIndex)
95 : QObject(parent), m_translationContext(translationContext)
102 Q_ASSERT(!m_translationContext.isEmpty());
105 m_columns.push_back(copy);
119 return m_columns.at(column).getColumnName();
126 return m_columns.at(column).getColumnName();
132 return m_columns.at(column).getPropertyIndex();
138 const CColumn col = m_columns[column];
147 for (
int i = 0; i < m_columns.size(); i++)
149 if (m_columns.at(i).getPropertyIndex() == propertyIndex) {
return i; }
156 for (
int i = 0; i < m_columns.size(); i++)
158 if (m_columns.at(i).getColumnName() == name) {
return i; }
168 return m_columns.at(index.column()).hasAlignment();
174 return m_columns.at(index.column()).isEditable();
180 return m_columns.at(column).isEditable();
186 return m_columns.at(index.column()).isSortable();
192 return m_columns.at(column).isSortable();
197 return (index.column() >= 0 && index.column() < m_columns.size());
204 for (
const CColumn &c : m_columns)
206 if (c.hasWidthPercentage()) {
return true; }
213 if (percentages.isEmpty())
215 for (
CColumn &column : m_columns) { column.setWidthPercentage(-1); }
220 for (
CColumn &column : m_columns) { column.setWidthPercentage(percentages.at(c++)); }
225 if (m_columns.isEmpty() || !this->hasAnyWidthPercentage()) {
return {}; }
227 int totalPercentage = 0;
228 const int averagePercentage = 100 / m_columns.size();
230 for (
const CColumn &c : m_columns)
232 totalPercentage += c.hasWidthPercentage() ? c.getWidthPercentage() : averagePercentage;
235 if (totalPercentage < 1) {
return {}; }
238 const double part =
static_cast<double>(totalWidth) / totalPercentage;
242 for (
const CColumn &c : m_columns)
244 const int percentage = c.hasWidthPercentage() ? c.getWidthPercentage() : averagePercentage;
245 const int restWidth = totalWidth - usedWidth;
246 const int width = qMin(restWidth, qRound(part * percentage));
247 widths.push_back(width);
262 if (m_columns.isEmpty()) {
return false; }
263 const CColumn c = m_columns.last();
270 const CColumn c = m_columns.at(index.column());
bool isIncognito() const
Is incognito mode?
const CDefaultFormatter * getFormatter() const
Formatter.
bool isIncognito() const
If incognito mode, do NOT display daza.
bool isSortable() const
Sortable?
static CColumn standardValueObject(const QString &headerName, const swift::misc::CPropertyIndex &propertyIndex, int alignment=CDefaultFormatter::alignDefault())
Get a standard value object formatted column.
static CColumn standardString(const QString &headerName, const swift::misc::CPropertyIndex &propertyIndex, int alignment=CDefaultFormatter::alignDefault())
Get a standard string object formatted column.
const swift::misc::CPropertyIndex & getPropertyIndex() const
Property index.
void setSortPropertyIndex(const swift::misc::CPropertyIndex &propertyIndex)
Property index used when sorting, option alternative.
void setWidthPercentage(int width)
Width percentage.
void setTranslationContext(const QString &translationContext)
Translation context.
static CColumn orderColumn(const swift::misc::CPropertyIndex &propertyIndex=swift::misc::CPropertyIndexRef::GlobalIndexIOrderable, int alignment=CDefaultFormatter::alignRightVCenter())
Get a standard string object formatted column.
CColumn(const QString &headerName, const swift::misc::CPropertyIndex &propertyIndex, CDefaultFormatter *formatter, bool editable=false)
Constructor.
static CColumn emptyColumn()
An empty column.
static CColumn standardInteger(const QString &headerName, const QString &toolTip, const swift::misc::CPropertyIndex &propertyIndex, int alignment=CDefaultFormatter::alignRightVCenter())
Get a standard integer value formatted column.
bool hasSortPropertyIndex() const
Sort index available.
swift::misc::CPropertyIndex getSortPropertyIndex() const
Property index used when sorting, option alternative.
void setIncognito(bool incognito)
Mark as incognito enabled.
bool endsWithEmptyColumn() const
Ending with an empty column.
void insertEmptyColumn()
Insert an empty column.
int size() const
Size (number of columns)
QString propertyIndexToColumnName(const swift::misc::CPropertyIndex &propertyIndex, bool i18n=false) const
Property index to name.
bool isValidColumn(const QModelIndex &index) const
Valid column?
bool isSortable(const QModelIndex &index) const
Sortable column?
QList< int > calculateWidths(int totalWidth) const
Calculate the absolute width.
bool hasAnyWidthPercentage() const
Any column with width percentage?
QString columnToName(int column, bool i18n=false) const
Column index to name.
void setWidthPercentages(const QList< int > &percentages)
Set the width percentages.
int propertyIndexToColumn(const swift::misc::CPropertyIndex &propertyIndex) const
Property index to column.
int nameToPropertyIndex(const QString &name) const
Column index to name.
bool isEditable(const QModelIndex &index) const
Is this column editable?
bool hasAlignment(const QModelIndex &index) const
Alignment for this column?
void addColumnIncognito(const CColumn &column)
Add a column as incognito enabled.
CColumns(const QString &translationContext, QObject *parent=nullptr)
Columns constructors.
swift::misc::CPropertyIndex columnToSortPropertyIndex(int column) const
Column to property index for sort, considers.
swift::misc::CPropertyIndex columnToPropertyIndex(int column) const
Column to property index.
void addColumn(const CColumn &column)
Add a column.
const CDefaultFormatter * getFormatter(const QModelIndex &index) const
Formatter.
bool isEmpty() const
Empty?
SWIFT_GUI_EXPORT swift::gui::CGuiApplication * sGui
Single instance of GUI application object.
Models to be used with views, mainly QTableView.
Free functions in swift::misc.