Add widget to select langage, must relauch qet for make change

git-svn-id: svn+ssh://svn.tuxfamily.org/svnroot/qet/qet/trunk@2762 bfdf4180-ca20-0410-9c96-a3a8aa849046
This commit is contained in:
blacksun
2014-01-21 19:23:44 +00:00
parent f426aba3a6
commit e8475c833e
7 changed files with 78 additions and 14 deletions

View File

@@ -51,7 +51,7 @@ NewDiagramPage::NewDiagramPage(QWidget *parent) : ConfigPage(parent) {
// default propertie of report label
rpw = new ReportPropertieWidget(QETDiagramEditor::defaultReportProperties());
tab_widget->addTab(rpw, ("Report de folio"));
tab_widget->addTab(rpw, tr("Report de folio"));
QVBoxLayout *vlayout1 = new QVBoxLayout();
vlayout1->addWidget(tab_widget);
@@ -157,6 +157,15 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) : ConfigPage
elements_management_layout -> addWidget(default_element_infos_textfield_);
elements_management_ -> setLayout(elements_management_layout);
//setup lang combo box selection widget
lang_group_box = new QGroupBox(tr("Langue"), this);
QHBoxLayout *lang_layout = new QHBoxLayout(lang_group_box);
lang_combo_box = new QComboBox();
lang_label = new QLabel(tr("La nouvelle langue sera pris en compte au prochain lancement de QElectroTech."));
lang_layout->addWidget(lang_combo_box);
lang_layout->addWidget(lang_label);
fillLang(settings);
QVBoxLayout *vlayout1 = new QVBoxLayout();
QLabel *title_label_ = new QLabel(title());
@@ -169,6 +178,7 @@ GeneralConfigurationPage::GeneralConfigurationPage(QWidget *parent) : ConfigPage
vlayout1 -> addWidget(appearance_);
vlayout1 -> addWidget(projects_view_mode_);
vlayout1 -> addWidget(elements_management_);
vlayout1 -> addWidget(lang_group_box);
vlayout1 -> addStretch();
setLayout(vlayout1);
@@ -179,8 +189,9 @@ GeneralConfigurationPage::~GeneralConfigurationPage() {
}
/**
Applique la configuration de cette page
*/
* @brief GeneralConfigurationPage::applyConf
* Write all configuration in settings file
*/
void GeneralConfigurationPage::applyConf() {
QSettings &settings = QETApp::settings();
@@ -191,6 +202,8 @@ void GeneralConfigurationPage::applyConf() {
QETApp::instance() -> useSystemPalette(must_use_system_colors);
}
settings.setValue("lang", lang_combo_box->itemData(lang_combo_box->currentIndex()).toString());
QString view_mode = tabbed_mode_ -> isChecked() ? "tabbed" : "windowed";
settings.setValue("diagrameditor/viewmode", view_mode) ;
@@ -209,6 +222,42 @@ QString GeneralConfigurationPage::title() const {
return(tr("G\351n\351ral", "configuration page title"));
}
/**
* @brief GeneralConfigurationPage::fillLang
* fill all available lang in @lang_combo_box
*/
void GeneralConfigurationPage::fillLang(QSettings &settings) {
lang_combo_box->addItem(tr("Syst\350me"), "system");
lang_combo_box->insertSeparator(1);
// all lang available on lang directory
lang_combo_box->addItem(tr("Arabe"), "ar");
lang_combo_box->addItem(tr("Catalan"), "ca");
lang_combo_box->addItem(tr("Tch\350que"), "cs");
lang_combo_box->addItem(tr("Allemand"), "de");
lang_combo_box->addItem(tr("Grec"), "el");
lang_combo_box->addItem(tr("Anglais"), "en");
lang_combo_box->addItem(tr("Espagnol"), "es");
lang_combo_box->addItem(tr("Fran\347ais"), "fr");
lang_combo_box->addItem(tr("Croate"), "hr");
lang_combo_box->addItem(tr("Italien"), "it");
lang_combo_box->addItem(tr("Polonais"), "pl");
lang_combo_box->addItem(tr("Portugais"), "pt");
lang_combo_box->addItem(tr("Roumains"), "ro");
lang_combo_box->addItem(tr("Russe"), "ru");
lang_combo_box->addItem(tr("Slov\350ne"), "sl");
//set curent index to the lang found in setting file
//if lang doesn't exist set to system
for (int i=0; i<lang_combo_box->count(); i++) {
if (lang_combo_box->itemData(i).toString() == settings.value("lang").toString()) {
lang_combo_box->setCurrentIndex(i);
return;
}
}
lang_combo_box->setCurrentIndex(0);
}
/**
Constructeur
@param parent QWidget parent

View File

@@ -71,8 +71,11 @@ class GeneralConfigurationPage : public ConfigPage {
QString title() const;
QIcon icon() const;
private:
void fillLang(QSettings &);
// attributes
public:
private:
QLabel *title_label_;
QFrame *horiz_line_;
QGroupBox *appearance_;
@@ -86,6 +89,9 @@ class GeneralConfigurationPage : public ConfigPage {
QCheckBox *highlight_integrated_elements_;
QLabel *default_element_infos_label_;
QTextEdit *default_element_infos_textfield_;
QGroupBox *lang_group_box;
QComboBox *lang_combo_box;
QLabel *lang_label;
};
/**

View File

@@ -48,8 +48,7 @@ ElementsCollectionCache *GenericPanel::getElementsCache() {
// build a default cache
QString cache_path = "./genericpanel.sqlite";
cache_ = new ElementsCollectionCache(cache_path, this);
/// @todo we need a unique function to get the good language
cache_ -> setLocale(QLocale::system().name().left(2));
cache_->setLocale(QETApp::langFromSetting());
}
return(cache_);
}

View File

@@ -16,6 +16,8 @@
along with QElectroTech. If not, see <http://www.gnu.org/licenses/>.
*/
#include "nameslist.h"
#include "qetapp.h"
// make this class usable with QVariant
int NamesList::MetaTypeId = qRegisterMetaType<NamesList>("NamesList");
@@ -201,8 +203,7 @@ bool NamesList::operator==(const NamesList &nl) const {
@return The adequate name regarding the current system locale.
*/
QString NamesList::name(const QString &fallback_name) const {
// recupere les deux premiers caracteres de la locale en cours du systeme
QString system_language = QLocale::system().name().left(2);
QString system_language = QETApp::langFromSetting();
QString returned_name;
if (!hash_names[system_language].isEmpty()) {
returned_name = hash_names[system_language];

View File

@@ -281,7 +281,7 @@ void ProjectNewDiagramConfigPage::initLayout() {
tab_widget->addTab(conductor_, tr("Conducteur"));
tab_widget->addTab(report_, ("Report de folio"));
tab_widget->addTab(report_, tr("Report de folio"));
QVBoxLayout *vlayout1 = new QVBoxLayout();
vlayout1->addWidget(tab_widget);

View File

@@ -71,9 +71,9 @@ QETApp::QETApp(int &argc, char **argv) :
non_interactive_execution_(false)
{
parseArguments();
initConfiguration();
initLanguage();
QET::Icons::initIcons();
initConfiguration();
initStyle();
if (!non_interactive_execution_ && isRunning()) {
@@ -107,7 +107,7 @@ QETApp::QETApp(int &argc, char **argv) :
if (!collections_cache_) {
QString cache_path = QETApp::configDir() + "/elements_cache.sqlite";
collections_cache_ = new ElementsCollectionCache(cache_path, this);
collections_cache_ -> setLocale(QLocale::system().name().left(2)); // @todo we need a unique function to get the good language
collections_cache_->setLocale(langFromSetting());
}
// loads known collections into memory (this does not include items rendering made in elements panels)
@@ -183,6 +183,16 @@ void QETApp::setLanguage(const QString &desired_language) {
if (ltr_special_string == "RTL") switchLayout(Qt::RightToLeft);
}
/**
* @brief QETApp::langFromSetting
* @return the langage found in setting file
* if nothing was found return the system local.
*/
QString QETApp::langFromSetting() {
QString system_language = settings().value("lang", "system").toString();
if(system_language == "system") {system_language = QLocale::system().name().left(2);}
return system_language;
}
/**
Switches the application to the provided layout.
*/
@@ -1300,9 +1310,7 @@ void QETApp::setSplashScreenStep(const QString &message) {
Determine et applique le langage a utiliser pour l'application
*/
void QETApp::initLanguage() {
// selectionne le langage du systeme
QString system_language = QLocale::system().name().left(2);
setLanguage(system_language);
setLanguage(langFromSetting());
}
/**

View File

@@ -61,6 +61,7 @@ class QETApp : public QETSingleApplication {
public:
static QETApp *instance();
void setLanguage(const QString &);
static QString langFromSetting ();
void switchLayout(Qt::LayoutDirection);
static void printHelp();
static void printVersion();