# HG changeset patch
# User Rene Kolarik
# Date 1240496491 -7200
# Node ID a44fb70f0f095225092621576dca6a1e29ae89e9
# Parent  8bdfd092f73754480dd439c33bff799b8b3509de
Changing default dialpad theme definition from code to XML. UTF8 support.

diff -r 8bdfd092f737 -r a44fb70f0f09 
wengophone/resources/sounds/tones/default/dialpad.xml
--- a/wengophone/resources/sounds/tones/default/dialpad.xml     Wed Apr 22 
13:49:14 2009 +0200
+++ b/wengophone/resources/sounds/tones/default/dialpad.xml     Thu Apr 23 
16:21:31 2009 +0200
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8">
-<dialpad mode="plain" name="default">
+<dialpad mode="plain" name="default" default="default">
 <tones>
     <tone key="0" local="play" remote="play" format="dtmf"/>
     <tone key="1" local="play" remote="play" format="dtmf"/>
diff -r 8bdfd092f737 -r a44fb70f0f09 
wengophone/src/control/dtmf/CDtmfThemeManager.cpp
--- a/wengophone/src/control/dtmf/CDtmfThemeManager.cpp Wed Apr 22 13:49:14 
2009 +0200
+++ b/wengophone/src/control/dtmf/CDtmfThemeManager.cpp Thu Apr 23 16:21:31 
2009 +0200
@@ -78,3 +78,7 @@
 bool CDtmfThemeManager::refreshDtmfThemes() {
        return _dtmfThemeManager.refreshDtmfThemes();
 }
+
+std::string CDtmfThemeManager::getDefaultTheme() {
+  return _dtmfThemeManager.getDefaultTheme();
+}
\ No newline at end of file
diff -r 8bdfd092f737 -r a44fb70f0f09 
wengophone/src/control/dtmf/CDtmfThemeManager.h
--- a/wengophone/src/control/dtmf/CDtmfThemeManager.h   Wed Apr 22 13:49:14 
2009 +0200
+++ b/wengophone/src/control/dtmf/CDtmfThemeManager.h   Thu Apr 23 16:21:31 
2009 +0200
@@ -61,6 +61,8 @@
        //refresh DTMFThemes
        bool refreshDtmfThemes();
 
+  std::string getDefaultTheme();
+  
 private:
 
        void initPresentationThreadSafe();
diff -r 8bdfd092f737 -r a44fb70f0f09 wengophone/src/model/dtmf/DtmfTheme.cpp
--- a/wengophone/src/model/dtmf/DtmfTheme.cpp   Wed Apr 22 13:49:14 2009 +0200
+++ b/wengophone/src/model/dtmf/DtmfTheme.cpp   Thu Apr 23 16:21:31 2009 +0200
@@ -74,6 +74,13 @@
                if (attr) {
                        _imageFile = std::string(attr);
                }
+               
+               attr = dialpadElt->Attribute("default");
+               _default = false;
+               if (attr) {
+                       if(std::string(attr) == "default")
+                         _default = true;
+               }
        }
 
        TiXmlElement * tonesNode = dialpadElt->FirstChildElement("tones");
diff -r 8bdfd092f737 -r a44fb70f0f09 wengophone/src/model/dtmf/DtmfTheme.h
--- a/wengophone/src/model/dtmf/DtmfTheme.h     Wed Apr 22 13:49:14 2009 +0200
+++ b/wengophone/src/model/dtmf/DtmfTheme.h     Thu Apr 23 16:21:31 2009 +0200
@@ -62,6 +62,10 @@
        std::string getRepertory() const;
 
        DtmfTheme::DialpadMode getDialpadMode() const;
+       
+       bool isDefault() { return _default; };
+       
+       void setDefault(bool def) { _default = def; };
 
 private:
 
@@ -80,6 +84,8 @@
        ToneList _toneList;
 
        WengoPhone & _wengoPhone;
+       
+       bool _default;
 };
 
 #endif //OWDTMFTHEME_H
diff -r 8bdfd092f737 -r a44fb70f0f09 
wengophone/src/model/dtmf/DtmfThemeManager.cpp
--- a/wengophone/src/model/dtmf/DtmfThemeManager.cpp    Wed Apr 22 13:49:14 
2009 +0200
+++ b/wengophone/src/model/dtmf/DtmfThemeManager.cpp    Thu Apr 23 16:21:31 
2009 +0200
@@ -40,7 +40,10 @@
 void DtmfThemeManager::constructDTMF() {
        File dir(_dtmfDirPath);
        StringList dirList = dir.getDirectoryList();
-
+  
+  bool haveDefaultTheme = false;
+  DtmfTheme * lastTheme;
+  
        //iterate over dtmf dir
        for (unsigned int i = 0; i != dirList.size(); i++) {
 
@@ -118,13 +121,28 @@
                                        continue;
                                }
 #endif
-
+        if(theme->isDefault()) {
+          if(!haveDefaultTheme) {
+            _defaultTheme = theme->getName();
+            haveDefaultTheme = true;
+          }
+          else
+            theme->setDefault(false);
+        }
+        lastTheme = theme;
+        
                                //add it in the list
                                _dtmfThemeList[theme->getName()] = theme;
                                LOG_DEBUG("find a theme : " + fileList[j]);
                        }
                }
        }
+       
+       if(!haveDefaultTheme)
+       {
+    _defaultTheme = lastTheme->getName();
+    lastTheme->setDefault(true);
+  }
 }
 
 void DtmfThemeManager::deleteDTMF() {
diff -r 8bdfd092f737 -r a44fb70f0f09 
wengophone/src/model/dtmf/DtmfThemeManager.h
--- a/wengophone/src/model/dtmf/DtmfThemeManager.h      Wed Apr 22 13:49:14 
2009 +0200
+++ b/wengophone/src/model/dtmf/DtmfThemeManager.h      Thu Apr 23 16:21:31 
2009 +0200
@@ -47,6 +47,8 @@
        const DtmfTheme * getDtmfTheme(const std::string & themeName) const;
 
        bool refreshDtmfThemes();
+       
+       std::string getDefaultTheme() { return _defaultTheme; };
 
 private:
 
@@ -61,6 +63,8 @@
        std::string _dtmfDirPath;
 
        WengoPhone & _wengoPhone;
+       
+       std::string _defaultTheme;
 };
 
 #endif //OWDTMFTHEMEMANAGER_H
diff -r 8bdfd092f737 -r a44fb70f0f09 
wengophone/src/presentation/qt/QtDialpad.cpp
--- a/wengophone/src/presentation/qt/QtDialpad.cpp      Wed Apr 22 13:49:14 
2009 +0200
+++ b/wengophone/src/presentation/qt/QtDialpad.cpp      Thu Apr 23 16:21:31 
2009 +0200
@@ -44,9 +44,6 @@
 
 #include <QtGui/QtGui>
 
-const char* DEFAULT_THEME = "default";
-const char* JUNGLE_THEME = "Jungle";
-
 QtDialpad::QtDialpad(CDtmfThemeManager & cDtmfThemeManager, QtWengoPhone * 
qtWengoPhone)
        : QWidget(NULL),
        _cDtmfThemeManager(cDtmfThemeManager)
@@ -104,20 +101,23 @@
        //comboBox Construction
        std::list<std::string> themeList = _cDtmfThemeManager.getThemeList();
 
+  //DEFAULT_THEME
+  std::string defTheme = _cDtmfThemeManager.getDefaultTheme();
+
        // Move DEFAULT_THEME to the beginning of the list
-       std::list<std::string>::iterator it = std::find(themeList.begin(), 
themeList.end(), DEFAULT_THEME);
+       std::list<std::string>::iterator it = std::find(themeList.begin(), 
themeList.end(), defTheme);
        if (it != themeList.end()) {
                themeList.erase(it);
-               themeList.push_front(DEFAULT_THEME);
+               themeList.push_front(defTheme);
        } else {
-               LOG_WARN("Could find default theme '" + 
std::string(DEFAULT_THEME) + "'");
+               LOG_WARN("Could find default theme '" + std::string(defTheme) + 
"'");
        }
        ////
 
        for (std::list<std::string>::const_iterator it = themeList.begin(); it 
!= themeList.end(); ++it) {
                std::string theme = *it;
 
-               if (theme == DEFAULT_THEME && _themeMode == 
ThemeModeAudioSmileysOnly) {
+               if (theme == defTheme && _themeMode == 
ThemeModeAudioSmileysOnly) {
                        // Skip default theme
                        continue;
                }
@@ -127,10 +127,10 @@
                std::string icon = 
_cDtmfThemeManager.getDtmfTheme(theme)->getRepertory() +
                        _cDtmfThemeManager.getDtmfTheme(theme)->getImageFile();
                
-               
_ui->audioSmileysComboBox->addItem(QIcon(QString::fromStdString(icon)), 
QString::fromStdString(theme), QVariant());
+               
_ui->audioSmileysComboBox->addItem(QIcon(QString::fromStdString(icon)), 
QString::fromUtf8(theme.c_str()), QVariant());
 
                // Ugly workaround to insert a separator after the "default 
dialpad" entry
-               if (theme == DEFAULT_THEME) {
+               if (theme == defTheme) {
                        _ui->audioSmileysComboBox->addItem("");
                        
                        QAbstractItemView* view = 
_ui->audioSmileysComboBox->view();
@@ -162,7 +162,7 @@
 void QtDialpad::playTone(const std::string & tone) {
 
        _cDtmfThemeManager.playTone(
-               _ui->audioSmileysComboBox->currentText().toStdString(),
+               std::string(_ui->audioSmileysComboBox->currentText().toUtf8()),
                tone
        );
        _qtWengoPhone->dialpad(tone);
@@ -219,13 +219,14 @@
 void QtDialpad::setCurrentTheme(const QString & newThemeName) {
        // We don't want the user to select the separator
        if (newThemeName.isEmpty()) {
-               
_ui->audioSmileysComboBox->setCurrentIndex(_ui->audioSmileysComboBox->findText(DEFAULT_THEME));
+               
_ui->audioSmileysComboBox->setCurrentIndex(_ui->audioSmileysComboBox->findText(_cDtmfThemeManager.getDefaultTheme().c_str()));
                return;
        }
 
        LOG_DEBUG(newThemeName.toStdString());
 
-       const DtmfTheme * newTheme = 
_cDtmfThemeManager.getDtmfTheme(newThemeName.toStdString());
+  std::string strTheme(newThemeName.toUtf8()); 
+       const DtmfTheme * newTheme = _cDtmfThemeManager.getDtmfTheme(strTheme);
 
        if (newTheme->getDialpadMode() == DtmfTheme::svg) {
 
_______________________________________________
QuteCom-dev mailing list
[email protected]
http://lists.qutecom.org/mailman/listinfo/qutecom-dev

Reply via email to