mirror of
https://github.com/sqlitebrowser/sqlitebrowser.git
synced 2026-01-20 11:00:44 -06:00
When restoring the plot state we always checked set the use-on-y-axis checkbox when a colour was defined for a field. This is correct most of the times because a field doesn't have a colour as long as it's not used in the plot. However, when you uncheck a field it keeps its colour which starts causing issues as soon these settings are reloaded. The solution is to not only store the colour but also the check state independently. This changes the project files format though, so the code needs to support loading old and new file formats. See issue #1245.
103 lines
2.5 KiB
C++
103 lines
2.5 KiB
C++
#ifndef PLOTDOCK_H
|
|
#define PLOTDOCK_H
|
|
|
|
#include <QDialog>
|
|
#include <QVariant>
|
|
|
|
class SqliteTableModel;
|
|
class QTreeWidgetItem;
|
|
struct BrowseDataTableSettings;
|
|
|
|
namespace Ui {
|
|
class PlotDock;
|
|
}
|
|
|
|
class PlotDock : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit PlotDock(QWidget* parent = nullptr);
|
|
~PlotDock();
|
|
|
|
struct PlotSettings
|
|
{
|
|
int lineStyle;
|
|
int pointShape;
|
|
QColor colour;
|
|
bool active;
|
|
|
|
PlotSettings() :
|
|
lineStyle(0),
|
|
pointShape(0),
|
|
active(false)
|
|
{}
|
|
|
|
PlotSettings(int _lineStyle, int _pointShape, QColor _colour, bool _active) :
|
|
lineStyle(_lineStyle),
|
|
pointShape(_pointShape),
|
|
colour(_colour),
|
|
active(_active)
|
|
{}
|
|
|
|
friend QDataStream& operator<<(QDataStream& stream, const PlotDock::PlotSettings& object)
|
|
{
|
|
stream << object.lineStyle;
|
|
stream << object.pointShape;
|
|
stream << object.colour;
|
|
stream << object.active;
|
|
|
|
return stream;
|
|
}
|
|
friend QDataStream& operator>>(QDataStream& stream, PlotDock::PlotSettings& object)
|
|
{
|
|
stream >> object.lineStyle;
|
|
stream >> object.pointShape;
|
|
stream >> object.colour;
|
|
|
|
if(!stream.atEnd())
|
|
stream >> object.active;
|
|
|
|
return stream;
|
|
}
|
|
};
|
|
|
|
public slots:
|
|
void updatePlot(SqliteTableModel* model, BrowseDataTableSettings* settings = nullptr, bool update = true, bool keepOrResetSelection = true);
|
|
void fetchAllData();
|
|
|
|
signals:
|
|
void pointsSelected(int firstIndex, int count);
|
|
|
|
private:
|
|
enum PlotColumns
|
|
{
|
|
PlotColumnField = 0,
|
|
PlotColumnX = 1,
|
|
PlotColumnY = 2,
|
|
};
|
|
|
|
Ui::PlotDock* ui;
|
|
|
|
SqliteTableModel* m_currentPlotModel;
|
|
BrowseDataTableSettings* m_currentTableSettings;
|
|
|
|
/*!
|
|
* \brief guessdatatype try to parse the first 10 rows and decide the datatype
|
|
* \param model model to check the data
|
|
* \param column index of the column to check
|
|
* \return the guessed datatype
|
|
*/
|
|
QVariant::Type guessDataType(SqliteTableModel* model, int column);
|
|
|
|
private slots:
|
|
void on_treePlotColumns_itemChanged(QTreeWidgetItem* item, int column);
|
|
void on_treePlotColumns_itemDoubleClicked(QTreeWidgetItem* item, int column);
|
|
void on_butSavePlot_clicked();
|
|
void on_comboLineType_currentIndexChanged(int index);
|
|
void on_comboPointShape_currentIndexChanged(int index);
|
|
void selectionChanged();
|
|
};
|
|
|
|
#endif
|