diff --git a/src/Part.h b/src/Part.h --- a/src/Part.h +++ b/src/Part.h @@ -55,23 +55,38 @@ ~Part() Q_DECL_OVERRIDE; /** Reimplemented from TerminalInterface. */ - void startProgram(const QString &program, const QStringList &arguments) Q_DECL_OVERRIDE; + void startProgram(const QString &program, const QStringList &arguments) override; /** Reimplemented from TerminalInterface. */ - void showShellInDir(const QString &dir) Q_DECL_OVERRIDE; + void showShellInDir(const QString &dir) override; /** Reimplemented from TerminalInterface. */ - void sendInput(const QString &text) Q_DECL_OVERRIDE; + void sendInput(const QString &text) override; /** Reimplemented from TerminalInterface. */ - int terminalProcessId() Q_DECL_OVERRIDE; + int terminalProcessId() override; /** Reimplemented from TerminalInterface. */ - int foregroundProcessId() Q_DECL_OVERRIDE; + int foregroundProcessId() override; /** Reimplemented from TerminalInterface. */ - QString foregroundProcessName() Q_DECL_OVERRIDE; + QString foregroundProcessName() override; /** Reimplemented from TerminalInterface. */ - QString currentWorkingDirectory() const Q_DECL_OVERRIDE; + QString currentWorkingDirectory() const override; + + /** Reimplemented from KonsoleTerminalExtension */ + QStringList getAvailableProfiles() const override; + + /** Reimplemented from KonsoleTerminalExtension */ + QString getProfilePath(const QString &profileName) const override; + + /** Reimplemented from KonsoleTerminalExtension */ + QString getCurrentProfileName() const override; + + /** Reimplemented from KonsoleTerminalExtension */ + void changeCurrentProfile(const QString &profileName) override; + + /** Reimplemented from KonsoleTerminalExtension */ + QVariant getProfileProperty(const QString &profileProperty) const override; public Q_SLOTS: /** diff --git a/src/Part.cpp b/src/Part.cpp --- a/src/Part.cpp +++ b/src/Part.cpp @@ -24,6 +24,7 @@ #include #include #include +#include #include // KDE @@ -197,6 +198,46 @@ return activeSession()->currentWorkingDirectory(); } +QVariant Part::getProfileProperty(const QString &profileProperty) const +{ + const auto metaEnum = QMetaEnum::fromType(); + const auto value = metaEnum.keyToValue(profileProperty.toStdString().c_str()); + + if (value == -1) { + return QString(); + } + + const Profile::Property p = static_cast(value); + return SessionManager::instance()->sessionProfile(activeSession())->property(p); +} + +QStringList Part::getAvailableProfiles() const +{ + return ProfileManager::instance()->availableProfileNames(); +} + +QString Part::getProfilePath(const QString &profileName) const +{ + for(const auto &profile : ProfileManager::instance()->allProfiles()) { + if(profile->name() == profileName) { + return profile->path(); + } + } + + return QString(); +} + +QString Part::getCurrentProfileName() const +{ + return SessionManager::instance()->sessionProfile(activeSession())->name(); +} + +void Part::changeCurrentProfile(const QString &profileName) +{ + auto profile = ProfileManager::instance()->loadProfile(profileName); + SessionManager::instance()->setSessionProfile(activeSession(), profile); +} + void Part::createSession(const QString &profileName, const QString &directory) { Profile::Ptr profile = ProfileManager::instance()->defaultProfile(); diff --git a/src/Profile.h b/src/Profile.h --- a/src/Profile.h +++ b/src/Profile.h @@ -55,6 +55,8 @@ */ class KONSOLEPRIVATE_EXPORT Profile : public QSharedData { + Q_GADGET + friend class ProfileReader; friend class ProfileWriter; friend class ProfileGroup; @@ -296,6 +298,8 @@ ReverseUrlHints }; + Q_ENUM(Property) + /** * Constructs a new profile *