[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdebase/kcontrol/fonts
From:       Craig Drummond <craig () kde ! org>
Date:       2003-10-01 22:26:23
[Download RAW message or body]

CVS commit by craig: 

When saving paths - replace (e.g.) /home/user with ~


  M +30 -4     kxftconfig.cpp   1.24


--- kdebase/kcontrol/fonts/kxftconfig.cpp  #1.23:1.24
@@ -39,4 +39,30 @@
 using namespace std;
 
+static QString contractHome(QString path)
+{
+    if (!path.isEmpty() && '/'==path[0])
+    {
+        QString home(QDir::homeDirPath());
+
+        if(path.startsWith(home))
+        {
+            unsigned int len = home.length();
+
+            if(path.length() == len || path[len] == '/')
+                return path.replace(0, len, QString::fromLatin1("~"));
+        }
+    }
+
+    return path;
+}
+
+static QString expandHome(QString path)
+{
+    if(!path.isEmpty() && '~'==path[0])
+        return 1==path.length() ? QDir::homeDirPath() : path.replace(0, 1, QDir::homeDirPath());
+
+    return path;
+}
+
 static int point2Pixel(double point)
 {
@@ -826,5 +852,5 @@ void KXftConfig::readContents()
             {
                 if(m_required&Dirs)
-                    m_dirs.append(new ListItem(dirSyntax(e.text()), n));
+                    m_dirs.append(new ListItem(expandHome(dirSyntax(e.text())), n));
             }
             else if("match"==e.tagName())
@@ -960,5 +986,5 @@ void KXftConfig::readContents()
                         while(*ptr!='\n' && *ptr!='\0' && isWhiteSpace(*ptr))
                             ptr++;
-                        m_dirs.append(new ListItem(dirSyntax(data), from, ptr));
+                        m_dirs.append(new ListItem(expandHome(dirSyntax(data)), from, ptr));
                     }
                }
@@ -1067,5 +1093,5 @@ void KXftConfig::applyDirs()
         {
             QDomElement newNode = m_doc.createElement("dir");
-            QDomText    text    = m_doc.createTextNode(xDirSyntax(item->str));
+            QDomText    text    = m_doc.createTextNode(contractHome(xDirSyntax(item->str)));
 
             newNode.appendChild(text);
@@ -1214,5 +1240,5 @@ void KXftConfig::removeItems(QPtrList<Li
 void KXftConfig::outputDir(std::ofstream &f, const QString &str)
 {
-    f << "dir \"" << xDirSyntax(str).local8Bit() << "\"" << endl;
+    f << "dir \"" << contractHome(xDirSyntax(str)).local8Bit() << "\"" << endl;
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic