File indexing completed on 2025-11-02 03:43:15

0001 /*
0002     File                 : DatabaseManagerWidget.h
0003     Project              : LabPlot
0004     Description          : widget for managing database connections
0005     --------------------------------------------------------------------
0006     SPDX-FileCopyrightText: 2017 Alexander Semke <alexander.semke@web.de>
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #ifndef DATABASEMANAGERWIDGET_H
0011 #define DATABASEMANAGERWIDGET_H
0012 
0013 #include "ui_databasemanagerwidget.h"
0014 
0015 #ifdef HAVE_KF5_SYNTAX_HIGHLIGHTING
0016 #include <KSyntaxHighlighting/repository.h>
0017 namespace KSyntaxHighlighting {
0018 class SyntaxHighlighter;
0019 }
0020 #endif
0021 
0022 class DatabaseManagerWidget : public QWidget {
0023     Q_OBJECT
0024 
0025 public:
0026     explicit DatabaseManagerWidget(QWidget*, QString);
0027 
0028     struct SQLConnection {
0029         int port{0};
0030         QString name;
0031         QString driver;
0032         QString hostName;
0033         QString dbName;
0034         QString userName;
0035         QString password;
0036         bool customConnectionEnabled{false};
0037         QString customConnectionString;
0038     };
0039 
0040     QString connection() const;
0041     void setCurrentConnection(const QString&);
0042     void saveConnections();
0043     static bool isFileDB(const QString&);
0044     static bool isODBC(const QString&);
0045 
0046 private:
0047     Ui::DatabaseManagerWidget ui;
0048     QList<SQLConnection> m_connections;
0049     SQLConnection* m_current_connection = nullptr;
0050     bool m_initializing{false};
0051     QString m_configPath;
0052     QString m_initConnName;
0053 #ifdef HAVE_KF5_SYNTAX_HIGHLIGHTING
0054     KSyntaxHighlighting::SyntaxHighlighter* m_highlighter{nullptr};
0055     KSyntaxHighlighting::Repository m_repository;
0056 #endif
0057 
0058     QString uniqueName();
0059     void loadConnection();
0060     int defaultPort(const QString&) const;
0061     void dataChanged();
0062 
0063 private Q_SLOTS:
0064     void loadConnections();
0065     void addConnection();
0066     void deleteConnection();
0067     void testConnection();
0068     void connectionChanged(int);
0069 
0070     void nameChanged(const QString&);
0071     void driverChanged();
0072     void selectFile();
0073     void hostChanged();
0074     void portChanged();
0075     void databaseNameChanged();
0076     void customConnectionEnabledChanged(bool);
0077     void customConnectionChanged();
0078     void userNameChanged();
0079     void passwordChanged();
0080 
0081 Q_SIGNALS:
0082     void changed();
0083 };
0084 
0085 #endif