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

List:       kde-commits
Subject:    [lokalize/frameworks] src: kde5port gettextheader parsing + speedup langlist model
From:       Nick Shaforostoff <shafff () ukr ! net>
Date:       2014-11-30 20:17:58
Message-ID: E1XvAwQ-0002HL-2W () scm ! kde ! org
[Download RAW message or body]

Git commit 7b868e4f0cfca7ba0ad63e110c1ba7ce7d2dee17 by Nick Shaforostoff.
Committed on 30/11/2014 at 22:17.
Pushed by shaforo into branch 'frameworks'.

kde5port gettextheader parsing + speedup langlist model

M  +17   -31   src/catalog/gettextheader.cpp
M  +8    -8    src/common/languagelistmodel.cpp
M  +0    -1    src/lokalizemainwindow.cpp
M  +1    -1    src/tm/tmtab.cpp

http://commits.kde.org/lokalize/7b868e4f0cfca7ba0ad63e110c1ba7ce7d2dee17

diff --git a/src/catalog/gettextheader.cpp b/src/catalog/gettextheader.cpp
index 2701b36..9f03bf4 100644
--- a/src/catalog/gettextheader.cpp
+++ b/src/catalog/gettextheader.cpp
@@ -1,7 +1,7 @@
 /* ****************************************************************************
   This file is part of Lokalize
 
-  Copyright (C) 2008-2009 by Nick Shaforostoff <shafff@ukr.net>
+  Copyright (C) 2008-2014 by Nick Shaforostoff <shafff@ukr.net>
 
   This program is free software; you can redistribute it and/or
   modify it under the terms of the GNU General Public License as
@@ -309,38 +309,27 @@ void updateHeader(QString& header,
     QString language; //initialized with preexisting value or later
     QString mailingList; //initialized with preexisting value or later
 
-    static KConfig* allLanguagesConfig=0;
-    if (!allLanguagesConfig)
-    {
-#if 0 //KDE5PORT
-      allLanguagesConfig = new KConfig("all_languages", KConfig::NoGlobals, \
                "locale");
-      allLanguagesConfig->setLocale(QString());
-#endif
-    }
-    QRegExp langTeamRegExp("^ *Language-Team:.*");
+    static QMap<QString,QLocale::Language> langEnums;
+    if (!langEnums.size())
+    for (int l=QLocale::Abkhazian; l<=QLocale::Akoose; ++l)
+        langEnums[QLocale::languageToString((QLocale::Language)l)]=(QLocale::Language)l;
 +    
+    static QRegExp langTeamRegExp(QStringLiteral("^ *Language-Team:.*"));
     for ( it = headerList.begin(),found=false; it != headerList.end() && !found; \
++it )  {
         found=it->contains(langTeamRegExp);
         if (found)
         {
             //really parse header
-            QMap<QString,QString> map;
-            foreach (const QString &runningLangCode, \
                KGlobal::locale()->allLanguagesList())
-            {
-                ///// KDE5PORT KConfigGroup cg(allLanguagesConfig, runningLangCode);
-                //////map[cg.readEntry("Name")]=runningLangCode;
-            }
-            if (map.size()<16) //may be just "en_US" and ""
-                kWarning()<<"seems that all_languages file is missing (usually \
                located under /usr/share/locale)";
-
-            QRegExp re("^ *Language-Team: *(.*) *<([^>]*)>");
+            QRegExp re(QStringLiteral("^ *Language-Team: *(.*) *<([^>]*)>"));
             if (re.indexIn(*it) != -1 )
             {
-                if (map.contains( re.cap(1).trimmed() ))
+                if (langEnums.contains( re.cap(1).trimmed() ))
                 {
                     language=re.cap(1).trimmed();
                     mailingList=re.cap(2).trimmed();
-                    langCode=map.value(language);                    
+                    QList<QLocale> locales = \
QLocale::matchingLocales(langEnums.value(language), QLocale::AnyScript, \
QLocale::AnyCountry); +                    if (locales.size()) \
langCode=locales.first().name().left(2);  }
             }
 
@@ -350,10 +339,7 @@ void updateHeader(QString& header,
 
     if (language.isEmpty())
     {
-        //language=locale.languageCodeToName(d->_langCode);
-        ////KDE5PORT
-        //////KConfigGroup cg(allLanguagesConfig, langCode);
-        /////language=cg.readEntry("Name");
+        language=QLocale::languageToString(QLocale(langCode).language());
         if (language.isEmpty())
             language=langCode;
     }
@@ -368,14 +354,13 @@ void updateHeader(QString& header,
 
 
 
-    temp="Language-Team: "%language%" <"%mailingList%'>';
-    temp+="\\n";
+    temp="Language-Team: "%language%" <"%mailingList%'>' % "\\n";
     if (KDE_ISLIKELY( found ))
         (*ait) = temp;
     else
         headerList.append(temp);
 
-    QRegExp langCodeRegExp("^ *Language: *([^ \\\\]*)");
+    static QRegExp langCodeRegExp(QStringLiteral("^ *Language: *([^ \\\\]*)"));
     temp="Language: "%langCode%"\\n";
     for ( it = headerList.begin(),found=false; it != headerList.end() && !found; \
++it )  {
@@ -388,9 +373,10 @@ void updateHeader(QString& header,
         headerList.append(temp);
 
     temp="Content-Type: text/plain; charset="%codec->name()%"\\n";
+    static QRegExp ctRe("^ *Content-Type:.*");
     for ( it = headerList.begin(),found=false; it != headerList.end() && !found; \
++it )  {
-        found=it->contains(QRegExp("^ *Content-Type:.*"));
+        found=it->contains(ctRe);
         if (found) *it=temp;
     }
     if (KDE_ISUNLIKELY( !found ))
@@ -437,7 +423,7 @@ void updateHeader(QString& header,
                 //kWarning()<<"generated: " << t;
                 if ( !t.isEmpty() )
                 {
-                    QRegExp pf("^ *Plural-Forms:\\s*nplurals.*\\\\n");
+                    static QRegExp pf(QStringLiteral("^ \
*Plural-Forms:\\s*nplurals.*\\\\n"));  pf.setMinimal(true);
                     temp=QString("Plural-Forms: %1\\n").arg(t);
                     it->replace(pf,temp);
diff --git a/src/common/languagelistmodel.cpp b/src/common/languagelistmodel.cpp
index 71da2dc..2e22204 100644
--- a/src/common/languagelistmodel.cpp
+++ b/src/common/languagelistmodel.cpp
@@ -85,13 +85,7 @@ QVariant LanguageListModel::data(const QModelIndex& index, int \
role) const  if (!iconCache.contains(langCode))
         {
             // NOTE workaround for QTBUG-9370 - it will be removed later
-            QString code;
-            if(langCode == "mn")
-                code = "mn_MN";
-            else if(langCode == "ne")
-                code = "ne_NP";
-            else
-                code=QLocale(langCode).name();
+            QString code=QLocale(langCode).name();
             QString path;
             if (code.contains('_')) code=QString::fromRawData(code.unicode()+3, \
2).toLower();  if (code!="C")
@@ -108,7 +102,13 @@ QVariant LanguageListModel::data(const QModelIndex& index, int \
role) const  const QString& code=stringList().at(index.row());
         if (code.isEmpty()) return code;
         //kDebug()<<"languageCodeToName"<<code;
-        return QVariant::fromValue<QString>(KGlobal::locale()->languageCodeToName(code)%" \
("%code%")"); +        static QVector<QString> displayNames(stringList().size());
+        if (displayNames.at(index.row()).length())
+            return displayNames.at(index.row());
+//        QLocale l(code);
+//        if (l.language()==QLocale::C && code!="C")
+            return QVariant::fromValue<QString>(displayNames[index.row()]=KGlobal::locale()->languageCodeToName(code)%" \
("%code%")"); +//        return \
QVariant::fromValue<QString>(displayNames[index.row()]=QLocale::languageToString(l.language())%" \
("%code%")");  }
     return QStringListModel::data(index, role);
 }
diff --git a/src/lokalizemainwindow.cpp b/src/lokalizemainwindow.cpp
index 9e6a8c5..3f64d00 100644
--- a/src/lokalizemainwindow.cpp
+++ b/src/lokalizemainwindow.cpp
@@ -105,7 +105,6 @@ LokalizeMainWindow::LokalizeMainWindow()
 
     connect(Project::instance(), SIGNAL(configChanged()), this, \
SLOT(projectSettingsChanged()));  showProjectOverview();
-    showTranslationMemory(); //temp HACK to workaround non-responding project tab
 
     for (int i=ID_STATUS_CURRENT;i<=ID_STATUS_ISFUZZY;i++)
     {
diff --git a/src/tm/tmtab.cpp b/src/tm/tmtab.cpp
index 38732d1..1bfc950 100644
--- a/src/tm/tmtab.cpp
+++ b/src/tm/tmtab.cpp
@@ -568,7 +568,7 @@ void TMTab::handleResults()
         }
         if(!filemask.isEmpty() && !filemask.contains('*'))
         {
-            ui_queryOptions->filemask->setText('*'+filemask+'*');
+            ui_queryOptions->filemask->setText('*'%filemask%'*');
             return performQuery();
         }
     }


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

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