summaryrefslogtreecommitdiffstats
path: root/kexi/kexidb/connectiondata.h
diff options
context:
space:
mode:
Diffstat (limited to 'kexi/kexidb/connectiondata.h')
-rw-r--r--kexi/kexidb/connectiondata.h239
1 files changed, 239 insertions, 0 deletions
diff --git a/kexi/kexidb/connectiondata.h b/kexi/kexidb/connectiondata.h
new file mode 100644
index 00000000..cd3c1537
--- /dev/null
+++ b/kexi/kexidb/connectiondata.h
@@ -0,0 +1,239 @@
+/* This file is part of the KDE project
+ Copyright (C) 2003 Jaroslaw Staniek <[email protected]>
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this program; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#ifndef KEXIDB_CONNECTION_DATA_H
+#define KEXIDB_CONNECTION_DATA_H
+
+#include <kexidb/kexidb_export.h>
+
+#include <qobject.h>
+#include <qstring.h>
+#include <qptrlist.h>
+
+namespace KexiDB {
+
+/*! ConnectionDataBase is a helper class for ConnectionData. It
+ is not intended to be instantiated explicitly. Instead, use the
+ ConnectionData class. */
+/*! @internal
+ Used by ConnectionData.
+ It is easier to internally operate on non-QObject-derived object,
+ e.g.: to copy data members in ConnectionData ctor. */
+class ConnectionDataBase
+{
+ public:
+ ConnectionDataBase();
+
+ /*!
+ \brief The caption of the connection.
+
+ Captions are optional for identyfying given connection
+ by name eg. for users.
+ */
+ QString caption;
+
+ /*!
+ \brief The additional description for the connection
+ */
+ QString description;
+
+ /*!
+ \brief Used for identifying a single piece of data in a set
+
+ Optional ID used for identifying a single piece data in a set.
+ ConnectionData::ConstList for example) This is set automatically
+ when needed. By default: -1.
+ */
+ int id;
+
+ /*!
+ \brief the name of the driver that should be used to create a connection
+
+ Name (unique, not i18n'd) of driver that is used (or should be used) to
+ create a connection. If you pass this ConnectionData object to
+ KexiDB::Driver::createConnection() to create connection, the @a driverName member
+ will be updated with a valid KexiDB driver name.
+ In other situations the @a driverName member may be used to store information what
+ driver should be used to perform connection, before we get an appropriate
+ driver object from DriverManager.
+ */
+ QString driverName;
+
+ /*!
+ \brief Host name used for the remote connection.
+
+ Can be empty if the connection is not remote. If it is empty "localhost" is used.
+ */
+ QString hostName;
+
+ /*!
+ \brief Port used for the remote connection.
+
+ The default is 0, what means we use don't change the database engine's default port.
+ */
+ unsigned short int port;
+
+ /*!
+ \brief True if local socket file should be used instead of TCP/IP port.
+
+ Only meaningful for connections with localhost as server.
+ True by default, so local communication can be optimized, and users can avoid problems
+ with TCP/IP connections disabled by firewalls.
+
+ If true, @a hostName and @a port will be ignored and @a localSocketFileName will be used.
+ On MS Windows this option is often ignored and TCP/IP connection to the localhost is performed.
+ */
+ bool useLocalSocketFile;
+
+ /*!
+ \brief Name of local (named) socket file.
+
+ For local connections only. If empty, it's driver will try to locate existing local socket
+ file. Empty by default.
+ */
+ QString localSocketFileName;
+
+ /*!
+ \brief Password used for the connection.
+
+ Can be empty string or null. If it is empty (equal to ""), empty password is passed to the driver.
+ If it is null (QString::null), no password is passed to the driver.
+ In this case, applications using KexiDB should ask for the password. */
+ QString password;
+
+ /*!
+ \brief True if password should be saved to a file for the connection.
+
+ False by default, in most cases can be set to true when nonempty
+ password has been loaded from a file.
+ For instance, this flag can be then shown for a user as a checkbox.
+ */
+ bool savePassword;
+
+ /*!
+ \brief Username used for the connection.
+
+ Can be empty. */
+ QString userName;
+
+ protected:
+ /*!
+ \brief The filename for file-based databases
+
+ For file-based database engines like SQLite, \a fileName is used
+ instead hostName and port
+ */
+ QString m_fileName;
+
+ /*!
+ \brief Absolute path to the database file
+
+ Will be empty if database is not file-based
+ */
+ QString m_dbPath;
+
+ /*!
+ \brief Filename of the database file
+
+ Will be empty if database is not file-based
+ */
+ QString m_dbFileName;
+};
+
+//! Database specific connection data, e.g. host, port.
+/*! Connection data, once configured, can be later stored for reuse.
+*/
+class KEXI_DB_EXPORT ConnectionData : public QObject, public ConnectionDataBase
+{
+ public:
+ typedef QPtrList<ConnectionData> List;
+ typedef QPtrListIterator<ConnectionData> ListIterator;
+
+ ConnectionData();
+
+ ConnectionData(const ConnectionData&);
+
+ ~ConnectionData();
+
+ ConnectionData& operator=(const ConnectionData& cd);
+
+ /*!
+ \brief Set the filename used by the connection
+
+ For file-based database engines, like SQLite, you should use this
+ function to set the file name of the database to use.
+ \a fn can be either absolute or relative path to the file.
+ */
+ void setFileName( const QString& fn );
+
+ /*!
+ \brief Get the filename used by the connection
+
+ For file-based database engines like SQLite, \a fileName is used
+ instead hostName and port.
+ @return An absolute path to the database file being used
+ */
+ QString fileName() const { return m_fileName; }
+
+ /*!
+ \brief The directory the database file is in
+
+ \return file path (for file-based engines) but without a file name
+ */
+ QString dbPath() const { return m_dbPath; }
+
+ /*!
+ \brief The file name (without path) of the database file
+
+ \return The file name (for file-based engines) but without a full path
+ */
+ QString dbFileName() const { return m_dbFileName; }
+
+ /*!
+ \brief A user-friendly string for the server
+
+ \return a user-friendly string like:
+ - "myhost.org:12345" if a host and port is specified;
+ - "localhost:12345" of only port is specified;
+ - "[email protected]:12345" if also user is specified
+ - "<file>" if file-based driver is assigned but no filename is assigned
+ - "file: pathto/mydb.kexi" if file-based driver is assigned and
+ filename is assigned
+
+ User's name is added if \a addUser is true (the default).
+ */
+ QString serverInfoString(bool addUser = true) const;
+
+ /*! @internal
+ Format version used when saving the data to a shortcut file.
+ This is set to 0 by default what means KexiDBShortcutFile_version should be used on saving.
+ If KexiDBConnShortcutFile was used to create this KexiProjectData object,
+ the version information is be retrieved from the file. */
+ uint formatVersion;
+
+ protected:
+ class Private;
+ Private *priv;
+
+ friend class Connection;
+};
+
+} //namespace KexiDB
+
+#endif