GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Added text alignment to conditional formats · sqlitebrowser/sqlitebrowser@c27002c

File tree

Expand file treeCollapse file tree
Open diff view settings
Filter options
  • src
    • CondFormat.cpp
    • CondFormat.h
    • CondFormatManager.cpp
    • CondFormatManager.h
    • CondFormatManager.ui
    • MainWindow.cpp
    • TableBrowser.cpp
    • sqlitetablemodel.cpp
Expand file treeCollapse file tree
Open diff view settings
Collapse file

‎src/CondFormat.cpp‎

Copy file name to clipboardExpand all lines: src/CondFormat.cpp
+22-2Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22
#include "Settings.h"
33
#include "Data.h"
44

5-
CondFormat::CondFormat(const QString& filter, const QColor& foreground, const QColor& background, const QFont& font, const QString& encoding)
5+
CondFormat::CondFormat(const QString& filter,
6+
const QColor& foreground,
7+
const QColor& background,
8+
const QFont& font,
9+
const Alignment alignment,
10+
const QString& encoding)
611
: m_filter(filter),
712
m_bgColor(background),
813
m_fgColor(foreground),
9-
m_font(font)
14+
m_font(font),
15+
m_align(alignment)
1016
{
1117
if (!filter.isEmpty())
1218
m_sqlCondition = filterToSqlCondition(filter, encoding);
@@ -116,3 +122,17 @@ QString CondFormat::filterToSqlCondition(const QString& value, const QString& en
116122
return whereClause;
117123
}
118124
}
125+
126+
Qt::AlignmentFlag CondFormat::alignmentFlag() const
127+
{
128+
switch (m_align) {
129+
case AlignLeft:
130+
return Qt::AlignLeft;
131+
case AlignCenter:
132+
return Qt::AlignCenter;
133+
case AlignRight:
134+
return Qt::AlignRight;
135+
case AlignJustify:
136+
return Qt::AlignJustify;
137+
}
138+
}
Collapse file

‎src/CondFormat.h‎

Copy file name to clipboardExpand all lines: src/CondFormat.h
+22-1Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,26 @@
99
class CondFormat
1010
{
1111
public:
12+
13+
enum Alignment {
14+
AlignLeft = 0,
15+
AlignRight,
16+
AlignCenter,
17+
AlignJustify
18+
};
19+
20+
// List of alignment texts. Order must be as Alignment definition above.
21+
static QStringList alignmentTexts() {
22+
return {QObject::tr("Left"), QObject::tr("Right"), QObject::tr("Center"), QObject::tr("Justify")};
23+
};
24+
1225
CondFormat() {}
13-
explicit CondFormat(const QString& filter, const QColor& foreground, const QColor& background, const QFont& font, const QString& encoding = QString());
26+
explicit CondFormat(const QString& filter,
27+
const QColor& foreground,
28+
const QColor& background,
29+
const QFont& font,
30+
const Alignment alignment = AlignLeft,
31+
const QString& encoding = QString());
1432

1533
static QString filterToSqlCondition(const QString& value, const QString& encoding = QString());
1634

@@ -20,6 +38,7 @@ class CondFormat
2038
QColor m_bgColor;
2139
QColor m_fgColor;
2240
QFont m_font;
41+
Alignment m_align;
2342

2443
public:
2544
QString sqlCondition() const { return m_sqlCondition; }
@@ -30,6 +49,8 @@ class CondFormat
3049
bool isItalic() const { return m_font.italic(); }
3150
bool isUnderline() const { return m_font.underline(); }
3251
QFont font() const { return m_font; }
52+
Alignment alignment() const { return m_align; }
53+
Qt::AlignmentFlag alignmentFlag() const;
3354
};
3455

3556
#endif // CONDFORMAT_H
Collapse file

‎src/CondFormatManager.cpp‎

Copy file name to clipboardExpand all lines: src/CondFormatManager.cpp
+18-1Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include <QMessageBox>
1111
#include <QFontComboBox>
1212
#include <QSpinBox>
13+
#include <QComboBox>
1314

1415
CondFormatManager::CondFormatManager(const std::vector<CondFormat>& condFormats, const QString& encoding, QWidget *parent) :
1516
QDialog(parent),
@@ -47,6 +48,7 @@ void CondFormatManager::addNewItem()
4748
CondFormat newCondFormat("", QColor(Settings::getValue("databrowser", "reg_fg_colour").toString()),
4849
m_condFormatPalette.nextSerialColor(Palette::appHasDarkTheme()),
4950
QFont(Settings::getValue("databrowser", "font").toString()),
51+
CondFormat::AlignLeft,
5052
m_encoding);
5153
addItem(newCondFormat);
5254
}
@@ -74,6 +76,12 @@ void CondFormatManager::addItem(const CondFormat& aCondFormat)
7476
newItem->setCheckState(ColumnBold, aCondFormat.isBold() ? Qt::Checked : Qt::Unchecked);
7577
newItem->setCheckState(ColumnItalic, aCondFormat.isItalic() ? Qt::Checked : Qt::Unchecked);
7678
newItem->setCheckState(ColumnUnderline, aCondFormat.isUnderline() ? Qt::Checked : Qt::Unchecked);
79+
80+
QComboBox* alignCombo = new QComboBox(ui->tableCondFormats);
81+
alignCombo->addItems(CondFormat::alignmentTexts());
82+
alignCombo->setCurrentIndex(aCondFormat.alignment());
83+
ui->tableCondFormats->setItemWidget(newItem, ColumnAlignment, alignCombo);
84+
7785
newItem->setText(ColumnFilter, aCondFormat.filter());
7886
ui->tableCondFormats->insertTopLevelItem(i, newItem);
7987
ui->tableCondFormats->openPersistentEditor(newItem, ColumnFilter);
@@ -107,12 +115,18 @@ void CondFormatManager::moveItem(int offset)
107115
sizeBox2->setValue(sizeBox->value());
108116
sizeBox2->setMinimum(sizeBox->minimum());
109117

118+
QComboBox* alignCombo = qobject_cast<QComboBox*>(ui->tableCondFormats->itemWidget(item, ColumnAlignment));
119+
QComboBox* alignCombo2 = new QComboBox(ui->tableCondFormats);
120+
alignCombo2->addItems(CondFormat::alignmentTexts());
121+
alignCombo2->setCurrentIndex(alignCombo->currentIndex());
122+
110123
item = ui->tableCondFormats->takeTopLevelItem(selectedRow);
111124
ui->tableCondFormats->insertTopLevelItem(newRow, item);
112125

113126
// Restore widgets and state
114127
ui->tableCondFormats->setItemWidget(item, ColumnFont, fontCombo2);
115128
ui->tableCondFormats->setItemWidget(item, ColumnSize, sizeBox2);
129+
ui->tableCondFormats->setItemWidget(item, ColumnAlignment, alignCombo2);
116130
ui->tableCondFormats->openPersistentEditor(item, ColumnFilter);
117131
ui->tableCondFormats->setCurrentIndex(ui->tableCondFormats->currentIndex().sibling(newRow,
118132
ui->tableCondFormats->currentIndex().column()));
@@ -143,11 +157,14 @@ std::vector<CondFormat> CondFormatManager::getCondFormats()
143157
font.setBold(item->checkState(ColumnBold) == Qt::Checked);
144158
font.setItalic(item->checkState(ColumnItalic) == Qt::Checked);
145159
font.setUnderline(item->checkState(ColumnUnderline) == Qt::Checked);
160+
QComboBox* alignCombo = qobject_cast<QComboBox*>(ui->tableCondFormats->itemWidget(item, ColumnAlignment));
146161

147162
result.emplace_back(item->text(ColumnFilter),
148163
item->background(ColumnForeground).color(),
149164
item->background(ColumnBackground).color(),
150-
font, m_encoding);
165+
font,
166+
static_cast<CondFormat::Alignment>(alignCombo->currentIndex()),
167+
m_encoding);
151168
}
152169
return result;
153170
}
Collapse file

‎src/CondFormatManager.h‎

Copy file name to clipboardExpand all lines: src/CondFormatManager.h
+2-1Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,14 @@ class CondFormatManager : public QDialog
3232
ColumnBold,
3333
ColumnItalic,
3434
ColumnUnderline,
35+
ColumnAlignment,
3536
ColumnFilter
3637
};
3738
Ui::CondFormatManager *ui;
3839
std::vector<CondFormat> m_condFormats;
3940
Palette m_condFormatPalette;
4041
QString m_encoding;
41-
42+
4243
private slots:
4344
void addNewItem();
4445
void addItem(const CondFormat& aCondFormat);
Collapse file

‎src/CondFormatManager.ui‎

Copy file name to clipboardExpand all lines: src/CondFormatManager.ui
+7-2Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
<rect>
77
<x>0</x>
88
<y>0</y>
9-
<width>640</width>
10-
<height>463</height>
9+
<width>700</width>
10+
<height>400</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
@@ -215,6 +215,11 @@
215215
<normaloff>:/icons/text_underline.png</normaloff>:/icons/text_underline.png</iconset>
216216
</property>
217217
</column>
218+
<column>
219+
<property name="text">
220+
<string>Alignment</string>
221+
</property>
222+
</column>
218223
<column>
219224
<property name="text">
220225
<string>Condition</string>
Collapse file

‎src/MainWindow.cpp‎

Copy file name to clipboardExpand all lines: src/MainWindow.cpp
+8-1Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2252,10 +2252,16 @@ static void loadBrowseDataTableSettings(BrowseDataTableSettings& settings, QXmlS
22522252
else
22532253
Settings::getValue("databrowser", "font").toString();
22542254

2255+
CondFormat::Alignment align;
2256+
if (xml.attributes().hasAttribute("align"))
2257+
align = static_cast<CondFormat::Alignment>(xml.attributes().value("align").toInt());
2258+
else
2259+
align = CondFormat::AlignLeft;
2260+
22552261
settings.condFormats[index].emplace_back(xml.attributes().value("condition").toString(),
22562262
QColor(xml.attributes().value("foreground").toString()),
22572263
QColor(xml.attributes().value("background").toString()),
2258-
font, settings.encoding);
2264+
font, align, settings.encoding);
22592265
xml.skipCurrentElement();
22602266
}
22612267
}
@@ -2594,6 +2600,7 @@ static void saveBrowseDataTableSettings(const BrowseDataTableSettings& object, Q
25942600
xml.writeAttribute("background", format.backgroundColor().name());
25952601
xml.writeAttribute("foreground", format.foregroundColor().name());
25962602
xml.writeAttribute("font", format.font().toString());
2603+
xml.writeAttribute("align", QString().setNum(format.alignment()));
25972604
xml.writeEndElement();
25982605
}
25992606
xml.writeEndElement();
Collapse file

‎src/TableBrowser.cpp‎

Copy file name to clipboardExpand all lines: src/TableBrowser.cpp
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,6 +442,7 @@ void TableBrowser::addCondFormat(int column, const QString& value)
442442
CondFormat newCondFormat(value, QColor(Settings::getValue("databrowser", "reg_fg_colour").toString()),
443443
m_condFormatPalette.nextSerialColor(Palette::appHasDarkTheme()),
444444
QFont(Settings::getValue("databrowser", "font").toString()),
445+
CondFormat::AlignLeft,
445446
m_browseTableModel->encoding());
446447
m_browseTableModel->addCondFormat(column, newCondFormat);
447448
browseTableSettings[currentlyBrowsedTableName()].condFormats[column].push_back(newCondFormat);
Collapse file

‎src/sqlitetablemodel.cpp‎

Copy file name to clipboardExpand all lines: src/sqlitetablemodel.cpp
+12Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -301,6 +301,8 @@ QVariant SqliteTableModel::getMatchingCondFormat(int column, const QString& valu
301301
return eachCondFormat.backgroundColor();
302302
case Qt::FontRole:
303303
return eachCondFormat.font();
304+
case Qt::TextAlignmentRole:
305+
return eachCondFormat.alignmentFlag();
304306
}
305307
}
306308
return QVariant();
@@ -409,8 +411,18 @@ QVariant SqliteTableModel::data(const QModelIndex &index, int role) const
409411
.arg(QKeySequence(Qt::CTRL).toString(QKeySequence::NativeText));
410412
else
411413
return QString();
414+
} else if (role == Qt::TextAlignmentRole) {
415+
QString value = cached_row->at(column);
416+
lock.unlock();
417+
QVariant condFormat = getMatchingCondFormat(index.column(), value, role);
418+
if (condFormat.isValid())
419+
return condFormat;
420+
bool isNumber;
421+
value.toDouble(&isNumber);
422+
return isNumber ? Qt::AlignRight : Qt::AlignLeft;
412423
}
413424

425+
414426
return QVariant();
415427
}
416428

0 commit comments

Comments
0 (0)
You are visitor 01402520 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.