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