• Skip to content
  • Skip to link menu
KDE 4.4 API Reference
  • KDE API Reference
  • KDevelop Platform Libraries
  • Sitemap
  • Contact Us
 

util

environmentgrouplist.cpp

00001 /* This file is part of KDevelop
00002 Copyright 2007 Andreas Pakulat <apaku@gmx.de>
00003 
00004 This library is free software; you can redistribute it and/or
00005 modify it under the terms of the GNU Library General Public
00006 License as published by the Free Software Foundation; either
00007 version 2 of the License, or (at your option) any later version.
00008 
00009 This library is distributed in the hope that it will be useful,
00010 but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012 Library General Public License for more details.
00013 
00014 You should have received a copy of the GNU Library General Public License
00015 along with this library; see the file COPYING.LIB.  If not, write to
00016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00017 Boston, MA 02110-1301, USA.
00018 */
00019 
00020 #include "environmentgrouplist.h"
00021 
00022 #include <QtCore/QMap>
00023 #include <QtCore/QStringList>
00024 #include <QtCore/QString>
00025 
00026 #include <ksharedconfig.h>
00027 #include <kconfiggroup.h>
00028 #include <kdebug.h>
00029 
00030 namespace KDevelop
00031 {
00032 
00033 class EnvironmentGroupListPrivate
00034 {
00035 public:
00036     QMap<QString, QMap<QString,QString> > m_groups;
00037     QString m_defaultGroup;
00038 };
00039 
00040 static const QString defaultEnvGroupKey = "Default Environment Group";
00041 static const QString envGroup = "Environment Settings";
00042 static const QString groupListKey = "Group List";
00043 
00044 void decode( KConfigGroup cfg, EnvironmentGroupListPrivate* d )
00045 {
00046     d->m_defaultGroup = cfg.readEntry( defaultEnvGroupKey, QString( "default" ) );
00047     QStringList grouplist = cfg.readEntry( groupListKey, QStringList() << "default" );
00048     foreach( const QString &envgrpname, grouplist )
00049     {
00050         KConfigGroup envgrp( &cfg, envgrpname );
00051         QMap<QString,QString> variables;
00052         foreach( const QString &varname, envgrp.keyList() )
00053         {
00054             variables[varname] = envgrp.readEntry( varname, QString("") );
00055         }
00056         d->m_groups.insert( envgrpname, variables );
00057     }
00058 }
00059 
00060 void encode( KConfigGroup cfg, EnvironmentGroupListPrivate* d )
00061 {
00062     cfg.writeEntry( defaultEnvGroupKey, d->m_defaultGroup );
00063     cfg.writeEntry( groupListKey, d->m_groups.keys() );
00064     foreach( const QString &group, cfg.groupList() ) 
00065     {
00066         if( !d->m_groups.keys().contains( group ) ) 
00067         {
00068             cfg.deleteGroup( group );
00069         }
00070     }
00071     foreach( const QString &group, d->m_groups.keys() )
00072     {
00073         KConfigGroup envgrp( &cfg, group );
00074         foreach( const QString &var, d->m_groups[group].keys() )
00075         {
00076             envgrp.writeEntry( var, d->m_groups[group][var] );
00077         }
00078     }
00079     cfg.sync();
00080 }
00081 
00082 EnvironmentGroupList::EnvironmentGroupList( KSharedConfigPtr config )
00083     : d(new EnvironmentGroupListPrivate)
00084 {
00085     KConfigGroup cfg( config, envGroup );
00086     decode( cfg, d );
00087 }
00088 
00089 EnvironmentGroupList::EnvironmentGroupList( KConfig* config )
00090     : d(new EnvironmentGroupListPrivate)
00091 {
00092     KConfigGroup cfg( config, envGroup );
00093     decode( cfg, d );
00094 }
00095 
00096 
00097 EnvironmentGroupList::~EnvironmentGroupList()
00098 {
00099     delete d;
00100 }
00101 
00102 const QMap<QString, QString> EnvironmentGroupList::variables( const QString& group ) const
00103 {
00104     return d->m_groups[group];
00105 }
00106 
00107 QMap<QString, QString>& EnvironmentGroupList::variables( const QString& group )
00108 {
00109     return d->m_groups[group];
00110 }
00111 
00112 
00113 QString EnvironmentGroupList::defaultGroup() const
00114 {
00115     return d->m_defaultGroup;
00116 }
00117 
00118 void EnvironmentGroupList::setDefaultGroup( const QString& group )
00119 {
00120     if( d->m_groups.contains( group ) )
00121     {
00122         d->m_defaultGroup = group;
00123     }
00124 }
00125 
00126 void EnvironmentGroupList::saveSettings( KConfig* config ) const
00127 {
00128     KConfigGroup cfg(config, envGroup );
00129     encode( cfg, d );
00130     config->sync();
00131 }
00132 
00133 void EnvironmentGroupList::loadSettings( KConfig* config )
00134 {
00135     d->m_groups.clear();
00136     KConfigGroup cfg(config, envGroup );
00137     decode( cfg, d );
00138 }
00139 
00140 QStringList EnvironmentGroupList::groups() const
00141 {
00142     return d->m_groups.keys();
00143 }
00144 
00145 void EnvironmentGroupList::removeGroup( const QString& group )
00146 {
00147     d->m_groups.remove( group );
00148 }
00149 
00150 EnvironmentGroupList::EnvironmentGroupList()
00151     : d( new EnvironmentGroupListPrivate)
00152 {
00153 }
00154 
00155 QStringList EnvironmentGroupList::createEnvironment( const QString & group, const QStringList & defaultEnvironment ) const
00156 {
00157     QMap<QString, QString> retMap;
00158     foreach( const QString &line, defaultEnvironment )
00159     {
00160         QString varName = line.section( '=', 0, 0 );
00161         QString varValue = line.section( '=', 1 );
00162         retMap.insert( varName, varValue );
00163     }
00164 
00165     if( !group.isEmpty() ) {
00166       QMap<QString, QString> userMap = variables(group);
00167 
00168       for( QMap<QString, QString>::const_iterator it = userMap.constBegin();
00169           it != userMap.constEnd(); ++it )
00170       {
00171           retMap.insert( it.key(), it.value() );
00172       }
00173     }
00174 
00175     QStringList env;
00176     for( QMap<QString, QString>::const_iterator it = retMap.constBegin();
00177         it != retMap.constEnd(); ++it )
00178     {
00179         env << it.key() + '=' + it.value();
00180     }
00181 
00182     return env;
00183 }
00184 
00185 }

util

Skip menu "util"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members
  • Related Pages

KDevelop Platform Libraries

Skip menu "KDevelop Platform Libraries"
  • interfaces
  • language
  •   codegen
  •   duchain
  •   editor
  • outputview
  • project
  • shell
  • sublime
  • util
  • vcs
Generated for KDevelop Platform Libraries by doxygen 1.5.9-20090814
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal