rcmaemo5settingsgui.cpp 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. #include <algorithm>
  2. #include <QFileDialog>
  3. #include <QFileInfo>
  4. #include "settings.h"
  5. #include "maemo5/longinputdialog.h"
  6. #include "common/networksettingsdialog.h"
  7. #include "rcmaemo5settingsgui.h"
  8. #include "ui_rcmaemo5settingsgui.h"
  9. RcMaemo5SettingsGui::RcMaemo5SettingsGui(const QList<QString> & licences,
  10. const QString & app,
  11. QWidget * parent) :
  12. QWidget(parent),
  13. ui(new Ui::RcMaemo5SettingsGui),
  14. m_app(app)
  15. {
  16. ui->setupUi(this);
  17. ui->m_authorName->setText(Settings::get(Settings::HybridAuthor).toString());
  18. ui->m_authorEmail->setText(Settings::get(Settings::HybridEmail).toString());
  19. ui->m_shortDesc->setText(Settings::get(Settings::HybridShortDesc, app).toString());
  20. ui->m_longDesc->setText(Settings::get(Settings::HybridLongDesc, app).toString());
  21. // filling up ui->m_licence and selecting default licence (from setttings)
  22. ui->m_licence->addItems(licences);
  23. size_t
  24. licenceIndex = -1;
  25. if (licences.size() > 0)
  26. {
  27. QString
  28. licence = Settings::get(Settings::Licence).toString();
  29. QList<QString>::const_iterator
  30. foundIt = std::find(licences.begin(),
  31. licences.end(),
  32. licence);
  33. if (foundIt != licences.end())
  34. {
  35. licenceIndex = std::distance(licences.begin(),
  36. foundIt);
  37. }
  38. }
  39. ui->m_licence->setCurrentIndex(licenceIndex);
  40. ui->m_logFileValue->setText(Settings::get(Settings::LogFilePath).toString());
  41. ui->m_checkWidgetPannable->setChecked(Settings::get(Settings::PanningEnabled).toBool());
  42. ui->m_checkTextSelectable->setChecked(Settings::get(Settings::TextSelectionEnabled).toBool());
  43. // Connect browse buttons
  44. connect(ui->m_buttonNetworkSettings, SIGNAL(clicked()), this, SLOT(openNetworkSettings()));
  45. connect(ui->m_buttonBrowseLog, SIGNAL(clicked()), this, SLOT(browseForLog()));
  46. connect(ui->m_longDescButton, SIGNAL(clicked()), this, SLOT(editLongDesc()));
  47. }
  48. RcMaemo5SettingsGui::~RcMaemo5SettingsGui()
  49. {
  50. delete ui;
  51. }
  52. void RcMaemo5SettingsGui::saveSettings() const
  53. {
  54. Settings::set(Settings::HybridAuthor, ui->m_authorName->text().trimmed());
  55. Settings::set(Settings::HybridEmail, ui->m_authorEmail->text().trimmed());
  56. Settings::set(Settings::HybridShortDesc, ui->m_shortDesc->text().trimmed(), m_app);
  57. Settings::set(Settings::HybridLongDesc, ui->m_longDesc->text().trimmed(), m_app);
  58. int
  59. licenceIndex = ui->m_licence->currentIndex();
  60. QString
  61. licence;
  62. if (licenceIndex != -1)
  63. {
  64. licence = ui->m_licence->itemText(licenceIndex);
  65. }
  66. Settings::set(Settings::Licence,
  67. licence);
  68. Settings::set(Settings::LogFilePath, ui->m_logFileValue->text().trimmed());
  69. Settings::set(Settings::PanningEnabled, ui->m_checkWidgetPannable->isChecked());
  70. Settings::set(Settings::TextSelectionEnabled, ui->m_checkTextSelectable->isChecked());
  71. }
  72. void RcMaemo5SettingsGui::changeEvent(QEvent *e)
  73. {
  74. QWidget::changeEvent(e);
  75. switch (e->type()) {
  76. case QEvent::LanguageChange:
  77. ui->retranslateUi(this);
  78. break;
  79. default:
  80. break;
  81. }
  82. }
  83. void RcMaemo5SettingsGui::openNetworkSettings()
  84. {
  85. NetworkSettingsDialog
  86. nsDlg(NULL, // only for settings, not for signing in/out
  87. this);
  88. nsDlg.exec();
  89. }
  90. void RcMaemo5SettingsGui::browseForLog()
  91. {
  92. // Existing
  93. QFileInfo
  94. file = getFileInfo(ui->m_logFileValue->text());
  95. QString
  96. fileName = QFileDialog::getOpenFileName(this, tr("Select application log file"), file.absolutePath(), tr("Log files") + " (*.log);;" + tr("All Files (*)"));
  97. if (!fileName.isEmpty())
  98. {
  99. fileName = QDir::toNativeSeparators(fileName);
  100. ui->m_logFileValue->setText(fileName);
  101. }
  102. }
  103. void RcMaemo5SettingsGui::editLongDesc()
  104. {
  105. LongInputDialog
  106. liDlg(tr("Detail application description"),
  107. tr("Enter app description:"),
  108. ui->m_longDesc->text());
  109. if (liDlg.exec() == QDialog::Accepted)
  110. {
  111. ui->m_longDesc->setText(liDlg.contentText());
  112. }
  113. }
  114. QFileInfo RcMaemo5SettingsGui::getFileInfo(QString fileName)
  115. {
  116. QFileInfo file(fileName);
  117. if (!QFile::exists(file.absolutePath()))
  118. {
  119. file = QFileInfo(QDir::root().absolutePath());
  120. }
  121. return file;
  122. }