class SignalProxy;
struct NetworkInfo;
+class AbstractSqlMigrationReader;
+class AbstractSqlMigrationWriter;
+
class Core : public QObject {
Q_OBJECT
- public:
- static Core * instance();
+public:
+ static Core *instance();
static void destroy();
static void saveState();
/**
* \param userId The users Id
* \param settingName The Name of the Setting
- * \param default Value to return in case it's unset.
+ * \param defaultValue Value to return in case it's unset.
* \return the Value of the Setting or the default value if it is unset.
*/
- static inline QVariant getUserSetting(UserId userId, const QString &settingName, const QVariant &data = QVariant()) {
- return instance()->_storage->getUserSetting(userId, settingName, data);
+ static inline QVariant getUserSetting(UserId userId, const QString &settingName, const QVariant &defaultValue = QVariant()) {
+ return instance()->_storage->getUserSetting(userId, settingName, defaultValue);
}
/* Identity handling */
return instance()->_storage->bufferLastSeenMsgIds(user);
}
+ //! Update the MarkerLineMsgId for a Buffer
+ /** This Method is used to make the marker line position of a Buffer persistent
+ * \note This method is threadsafe.
+ *
+ * \param user The Owner of that Buffer
+ * \param bufferId The buffer id
+ * \param MsgId The Message id where the marker line should be placed
+ */
+ static inline void setBufferMarkerLineMsg(UserId user, const BufferId &bufferId, const MsgId &msgId) {
+ return instance()->_storage->setBufferMarkerLineMsg(user, bufferId, msgId);
+ }
+
+ //! Get a Hash of all marker line message ids
+ /** This Method is called when the Quassel Core is started to restore the MarkerLineMsgIds
+ * \note This method is threadsafe.
+ *
+ * \param user The Owner of the buffers
+ */
+ static inline QHash<BufferId, MsgId> bufferMarkerLineMsgIds(UserId user) {
+ return instance()->_storage->bufferMarkerLineMsgIds(user);
+ }
+
const QDateTime &startTime() const { return _startTime; }
static inline QTimer &syncTimer() { return instance()->_storageSyncTimer; }
+ static const int AddClientEventId;
+
public slots:
//! Make storage data persistent
/** \note This method is threadsafe.
*/
void syncStorage();
void setupInternalClientSession(SignalProxy *proxy);
+
signals:
//! Sent when a BufferInfo is updated in storage.
void bufferInfoUpdated(UserId user, const BufferInfo &info);
//! Relay From CoreSession::sessionState(const QVariant &). Used for internal connection only
void sessionState(const QVariant &);
+protected:
+ virtual void customEvent(QEvent *event);
+
private slots:
bool startListening();
void stopListening(const QString &msg = QString());
SessionThread *createSession(UserId userId, bool restoreState = false);
void setupClientSession(QTcpSocket *socket, UserId uid);
+ void addClientHelper(QTcpSocket *socket, UserId uid);
void processClientMessage(QTcpSocket *socket, const QVariantMap &msg);
//void processCoreSetup(QTcpSocket *socket, QVariantMap &msg);
QString setupCoreForInternalUsage();
bool registerStorageBackend(Storage *);
void unregisterStorageBackends();
void unregisterStorageBackend(Storage *);
- bool migrateBackend(const QString &backend);
- bool switchBackend(const QString &backend);
+ bool selectBackend(const QString &backend);
+ void createUser();
+ void changeUserPass(const QString &username);
void saveBackendSettings(const QString &backend, const QVariantMap &settings);
- QVariantMap promptForSettings(const QVariantMap &map);
+ QVariantMap promptForSettings(const Storage *storage);
QHash<UserId, SessionThread *> sessions;
Storage *_storage;
QDateTime _startTime;
bool _configured;
+
+
+ static AbstractSqlMigrationReader *getMigrationReader(Storage *storage);
+ static AbstractSqlMigrationWriter *getMigrationWriter(Storage *storage);
+ static void stdInEcho(bool on);
+ static inline void enableStdInEcho() { stdInEcho(true); }
+ static inline void disableStdInEcho() { stdInEcho(false); }
};
#endif