+
+}
+
+
+/**
+ * SLOT: applies the settings from the Settings dialog.
+ */
+void MainWindow::applySettings()
+{
+ setAutoRotation();
+ setAdvancedTemperature();
+
+ //if overclocking is/was enabled we can also enable the "Load preset" option
+ if (settings->useOverclocking() && settings->usePowerKernel() && settings->isKernelConfigInstalled()) {
+ ui->actionLoad->setEnabled(true);
+ } else {
+ ui->actionLoad->setEnabled(false);
+ }
+
+ //refresh the GUI after applying the settings
+ refresh();
+}
+
+
+/**
+ * Calculates the minimum frequency according to scaling_min_freq and avoid_frequencies.
+ *
+ * Since this is a somewhat complex calculation it sould only be performed when it is
+ * really necessary (on startup, after loading presets, etc.).
+ */
+void MainWindow::calculateMinFreq()
+{
+ this->minFreq = 0;
+ QString freqs = readSysFile( "devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies" );
+ QStringList freqList = freqs.split( " " );
+ //change the order of the QStringList - last element becomes first
+ for (int i=freqList.size() - 1; i>=0; --i) {
+ if (freqList.at(i) != "")
+ this->scalingFrequencies << freqList.at(i);
+ }
+ this->scalingSteps = (this->scalingFrequencies.size());
+
+ //set minFreq and check avoid_frequencies
+ QString min = readSysFile( "devices/system/cpu/cpu0/cpufreq/scaling_min_freq" );
+ //check if avoid file exists (only on power kernel)
+ QFile file( "/sys/devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies" );
+ if (file.exists()) {
+ QString avoid = readSysFile( "devices/system/cpu/cpu0/cpufreq/ondemand/avoid_frequencies" );
+ QStringList avoidList = avoid.split( " " );
+
+ //check if min is in avoid_frequencies
+ for (int i = getScalingStep( min.toInt() ); i <= this->scalingSteps; ++i) {
+ min.setNum( getScalingFreq(i) );
+ if (!avoidList.contains(min)) {
+ this->minFreq = min.toInt();
+ break;
+ }
+ }
+ } else {
+ this->minFreq = min.toInt();
+ }
+ file.close();
+}
+
+
+/**
+ * Calls the QCPUFreq helper script with "sudo action param"
+ *
+ * @param action : the action of the helper script
+ * @param param : the parameter for the action
+ * @return exit code
+ */
+int MainWindow::callHelper(QString action, QString param)
+{
+ QStringList arguments;
+
+ #if defined(Q_WS_MAEMO_5)
+ //On Maemo 5 the helper script resides in /opt/usr/bin, which is usually not in $PATH
+ arguments.append( "/opt/usr/bin/QCPUFreq.helper" );
+ #else
+ arguments.append( "QCPUFreq.helper" );
+ #endif
+
+ arguments.append( action );
+ arguments.append( param );
+
+ helperProcess.start( "sudo", arguments, QIODevice::NotOpen );
+
+ if ( showSudoError && !helperProcess.waitForFinished( 2000 )) {
+ //do not show this error again
+ showSudoError = false;
+ QMessageBox::critical(this, tr("QCPUFreq"), tr("There seems to be a problem with your sudo setup!"));
+ }
+
+ return helperProcess.exitCode();