Files
qt-creator/src/plugins/coreplugin/session.h

91 lines
3.0 KiB
C
Raw Normal View History

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
2008-12-02 16:19:05 +01:00
#pragma once
2008-12-02 12:01:29 +01:00
#include "core_global.h"
2008-12-02 12:01:29 +01:00
#include <utils/id.h>
#include <utils/persistentsettings.h>
#include <QDateTime>
#include <QString>
#include <QStringList>
namespace Core {
2008-12-02 12:01:29 +01:00
class CORE_EXPORT SessionManager : public QObject
2008-12-02 12:01:29 +01:00
{
Q_OBJECT
public:
SessionManager();
~SessionManager() override;
2008-12-02 12:01:29 +01:00
static SessionManager *instance();
2008-12-02 12:01:29 +01:00
// higher level session management
static QString activeSession();
static QString lastSession();
static QString startupSession();
static QStringList sessions();
static QDateTime sessionDateTime(const QString &session);
static QDateTime lastActiveTime(const QString &session);
2008-12-02 12:01:29 +01:00
static bool createSession(const QString &session);
2008-12-02 12:01:29 +01:00
static bool confirmSessionDelete(const QStringList &sessions);
static bool deleteSession(const QString &session);
static void deleteSessions(const QStringList &sessions);
2008-12-02 12:01:29 +01:00
static bool cloneSession(const QString &original, const QString &clone);
static bool renameSession(const QString &original, const QString &newName);
static void showSessionManager();
2008-12-02 12:01:29 +01:00
static Utils::FilePath sessionNameToFileName(const QString &session);
2008-12-02 12:01:29 +01:00
static bool isDefaultVirgin();
static bool isDefaultSession(const QString &session);
2008-12-02 12:01:29 +01:00
// Let other plugins store persistent values within the session file
// These are settings that are also saved and loaded at startup, and are taken over
// to the default session when switching from implicit to explicit default session
static void setValue(const QString &name, const QVariant &value);
static QVariant value(const QString &name);
2008-12-02 12:01:29 +01:00
// These are settings that are specific to a session and are not loaded
// at startup and also not taken over to the default session when switching from implicit
static void setSessionValue(const QString &name, const QVariant &value);
static QVariant sessionValue(const QString &name, const QVariant &defaultValue = {});
static bool isLoadingSession();
static void markSessionFileDirty();
2008-12-02 12:01:29 +01:00
static void sessionLoadingProgress();
static void addSessionLoadingSteps(int steps);
static bool loadSession(const QString &session, bool initial = false);
static bool saveSession();
2008-12-02 12:01:29 +01:00
signals:
void startupSessionRestored();
void aboutToUnloadSession(QString sessionName);
// Sent during session loading, after the values of the session are available via value() and
// sessionValue. Use to restore values from the new session
void aboutToLoadSession(QString sessionName);
void sessionLoaded(QString sessionName);
2008-12-02 12:01:29 +01:00
void aboutToSaveSession();
void sessionCreated(const QString &name);
void sessionRenamed(const QString &oldName, const QString &newName);
void sessionRemoved(const QString &name);
public: // internal
static bool isStartupSessionRestored();
private:
static void saveActiveMode(Utils::Id mode);
2008-12-02 12:01:29 +01:00
};
} // namespace Core