Skip to content
Snippets Groups Projects
Commit a17b46aa authored by Emmanuel Lepage's avatar Emmanuel Lepage
Browse files

[ #12008 ] Add ConfigurationManager::getRingtoneList()

parent f80d0bc2
Branches
Tags
No related merge requests found
...@@ -334,6 +334,15 @@ ...@@ -334,6 +334,15 @@
</arg> </arg>
</method> </method>
<method name="getRingtoneList" tp:name-for-bindings="getRingtoneList">
<tp:added version="1.1.1"/>
<tp:docstring>
Get a map [Path,Filename] of available ringtone. Note, set the ringtone with the complete path
</tp:docstring>
<arg type="a{ss}" name="state" direction="out">
</arg>
</method>
<method name="setEchoCancelState" tp:name-for-bindings="setEchoCancelState"> <method name="setEchoCancelState" tp:name-for-bindings="setEchoCancelState">
<arg type="s" name="state" direction="in"> <arg type="s" name="state" direction="in">
</arg> </arg>
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#include "sip/siptransport.h" #include "sip/siptransport.h"
#include "account.h" #include "account.h"
#include "logger.h" #include "logger.h"
#include "fileutils.h"
#include "sip/sipaccount.h" #include "sip/sipaccount.h"
namespace { namespace {
...@@ -283,6 +284,29 @@ std::string ConfigurationManager::getEchoCancelState() ...@@ -283,6 +284,29 @@ std::string ConfigurationManager::getEchoCancelState()
return Manager::instance().getEchoCancelState() ? "enabled" : "disabled"; return Manager::instance().getEchoCancelState() ? "enabled" : "disabled";
} }
std::map<std::string, std::string> ConfigurationManager::getRingtoneList()
{
std::map<std::string, std::string> ringToneList;
std::string r_path = fileutils::get_data_dir();
struct dirent **namelist;
int n = scandir(r_path.c_str(), &namelist, 0, alphasort);
while(n--) {
if (strcmp(namelist[n]->d_name,".") && strcmp(namelist[n]->d_name,"..")) {
std::string file(namelist[n]->d_name);
if (file.find(".wav") != std::string::npos)
file.replace(file.find(".wav"),4,"");
else
file.replace(file.size()-3,3,"");
if (file[0] <= 0x7A && file[0] >= 0x61) file[0] = file[0]-32;
ringToneList[r_path+namelist[n]->d_name] = file;
}
free(namelist[n]);
}
free(namelist);
return ringToneList;
}
void ConfigurationManager::setEchoCancelState(const std::string& state) void ConfigurationManager::setEchoCancelState(const std::string& state)
{ {
Manager::instance().setEchoCancelState(state); Manager::instance().setEchoCancelState(state);
......
...@@ -95,6 +95,8 @@ class ConfigurationManager ...@@ -95,6 +95,8 @@ class ConfigurationManager
void setEchoCancelDelay(const int32_t& length); void setEchoCancelDelay(const int32_t& length);
int getEchoCancelDelay(); int getEchoCancelDelay();
std::map<std::string, std::string> getRingtoneList();
std::string getAudioManager(); std::string getAudioManager();
void setAudioManager(const std::string& api); void setAudioManager(const std::string& api);
......
...@@ -69,6 +69,13 @@ const char *get_program_dir() ...@@ -69,6 +69,13 @@ const char *get_program_dir()
return program_dir; return program_dir;
} }
//TODO it is faking this, implement proper system
const char *get_data_dir()
{
std::string path = std::string(get_program_dir()) + "/../../share/sflphone/ringtones/";
return path.c_str();
}
bool create_pidfile() bool create_pidfile()
{ {
const char * const xdg_env = XDG_CACHE_HOME; const char * const xdg_env = XDG_CACHE_HOME;
......
...@@ -45,6 +45,7 @@ namespace fileutils { ...@@ -45,6 +45,7 @@ namespace fileutils {
bool check_dir(const char *path); bool check_dir(const char *path);
void set_program_dir(char *program_path); void set_program_dir(char *program_path);
const char *get_program_dir(); const char *get_program_dir();
const char *get_data_dir();
bool create_pidfile(); bool create_pidfile();
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment