diff --git a/src/ProcessInfo.cpp b/src/ProcessInfo.cpp index f93f1488b..b0dcfee52 100644 --- a/src/ProcessInfo.cpp +++ b/src/ProcessInfo.cpp @@ -34,6 +34,11 @@ #include #include +// KDE +#include +#include +#include + using namespace Konsole; ProcessInfo::ProcessInfo(int pid , bool enableEnvironmentRead) @@ -76,12 +81,6 @@ QString ProcessInfo::format(const QString& input) const return output; } -const char* ProcessInfo::DefaultCommonDirNames[] = -{ "src" , "build" , "debug" , "release" , - "bin" , "lib" , "tmp" , "doc" , "data" , - "share" , "examples" , "icons" , - "pics" , "plugins" , 0 }; - QString ProcessInfo::formatCommand(const QString& name, const QVector& arguments, CommandFormat format) const @@ -89,6 +88,29 @@ QString ProcessInfo::formatCommand(const QString& name, // TODO Implement me return QStringList(QList::fromVector(arguments)).join(" "); } + +QSet ProcessInfo::_commonDirNames; + +QSet ProcessInfo::commonDirNames() +{ + if ( _commonDirNames.isEmpty() ) + { + KSharedConfigPtr config = KGlobal::config(); + KConfigGroup configGroup = config->group("ProcessInfo"); + + QStringList defaults = QStringList() + << "src" << "build" << "debug" << "release" + << "bin" << "lib" << "libs" << "tmp" + << "doc" << "docs" << "data" << "share" + << "examples" << "icons" << "pics" << "plugins"; + + _commonDirNames = QSet::fromList(configGroup.readEntry("CommonDirNames",defaults)); + + } + + return _commonDirNames; +} + QString ProcessInfo::formatShortDir(const QString& input) const { QString result; @@ -96,14 +118,7 @@ QString ProcessInfo::formatShortDir(const QString& input) const QStringList parts = input.split( QDir::separator() ); // temporarily hard-coded - QSet commonDirNames; - - const char** defaultCommonNames = DefaultCommonDirNames; - while ( *defaultCommonNames != 0 ) - { - commonDirNames << *defaultCommonNames; - ++defaultCommonNames; - } + QSet dirNamesToShorten = commonDirNames(); QListIterator iter(parts); iter.toBack(); @@ -116,7 +131,7 @@ QString ProcessInfo::formatShortDir(const QString& input) const { QString part = iter.previous(); - if ( commonDirNames.contains(part) ) + if ( dirNamesToShorten.contains(part) ) { result.prepend(QDir::separator() + part[0]); } diff --git a/src/ProcessInfo.h b/src/ProcessInfo.h index d7146ff3a..4f6e57931 100644 --- a/src/ProcessInfo.h +++ b/src/ProcessInfo.h @@ -275,7 +275,9 @@ private: QVector _arguments; QMap _environment; - static const char* DefaultCommonDirNames[]; + + static QSet commonDirNames(); + static QSet _commonDirNames; }; /**