X-Git-Url: http://git.maemo.org/git/?p=movie-schedule;a=blobdiff_plain;f=src%2Fcontrol%2Fsettingscontroller.cpp;h=aa883630bd17aee1f6ff863330745c5b8a8c419d;hp=a5e11885bcf75d1d6d4c1ef23482facf719bccaf;hb=bb467534ecac666816ae036272a474174d9d8449;hpb=99e8e1c020bfbffa186db00899b0b40c07a3b89f diff --git a/src/control/settingscontroller.cpp b/src/control/settingscontroller.cpp index a5e1188..aa88363 100644 --- a/src/control/settingscontroller.cpp +++ b/src/control/settingscontroller.cpp @@ -18,6 +18,8 @@ #include "settingscontroller.h" #include "data/settings.h" +#include "ui/mainwindow.h" +#include "ui/optionsdialog.h" #include #include @@ -25,8 +27,9 @@ #include #include -SettingsController::SettingsController(Settings *settings) - : _settings(settings) +SettingsController::SettingsController(MainWindow *main_window, Settings *settings) + : _main_window(main_window), + _settings(settings) { } @@ -40,6 +43,7 @@ enum State { STATE_PREVIOUS_LOCATION_NAME, STATE_GPS, STATE_SEARCH, + STATE_ORIENTATION }; void SettingsController::Load() @@ -72,11 +76,15 @@ void SettingsController::Load() state = STATE_GPS; } else if (state == STATE_SETTINGS && xml.name() == "search") { state = STATE_SEARCH; + } else if (state == STATE_SETTINGS && xml.name() == "orientation") { + state = STATE_ORIENTATION; } else { state = STATE_DOCUMENT; } } else if (token == QXmlStreamReader::EndElement) { - if (state == STATE_SEARCH) { + if (state == STATE_ORIENTATION) { + state = STATE_SETTINGS; + } else if (state == STATE_SEARCH) { state = STATE_SETTINGS; } else if (state == STATE_GPS) { state = STATE_SETTINGS; @@ -107,6 +115,14 @@ void SettingsController::Load() } else if (xml.text() == "movies") { _settings->SetSearchObjectsType(Settings::MOVIES); } + } else if (state == STATE_ORIENTATION) { + if (xml.text() == "landscape") { + _settings->SetOrientationMode(Settings::LANDSCAPE); + } else if (xml.text() == "portrait") { + _settings->SetOrientationMode(Settings::PORTRAIT); + } else if (xml.text() == "autorotation") { + _settings->SetOrientationMode(Settings::AUTOROTATION); + } } } } @@ -131,18 +147,18 @@ void SettingsController::Save() xml.writeStartElement("settings"); xml.writeStartElement("location"); xml.writeTextElement("name", _settings->GetLocation().GetLocationName()); - xml.writeEndElement(); + xml.writeEndElement(); // xml.writeStartElement("previous-locations"); Q_FOREACH(Location location, _settings->GetPreviousLocations()) { xml.writeStartElement("location"); xml.writeTextElement("name", location.GetLocationName()); xml.writeEndElement(); } - xml.writeEndElement(); + xml.writeEndElement(); // QString v; xml.writeStartElement("gps"); xml.writeAttribute("enabled", _settings->IsGPSEnabled() ? "yes" : "no"); - xml.writeEndElement(); + xml.writeEndElement(); // switch (_settings->GetSearchObjectsType()) { case Settings::THEATERS: v = "theaters"; @@ -152,7 +168,19 @@ void SettingsController::Save() break; } xml.writeTextElement("search", v); - xml.writeEndElement(); + switch (_settings->GetOrientationMode()) { + case Settings::LANDSCAPE: + v = "landscape"; + break; + case Settings::PORTRAIT: + v = "portrait"; + break; + case Settings::AUTOROTATION: + v = "autorotation"; + break; + } + xml.writeTextElement("orientation", v); + xml.writeEndElement(); // xml.writeEndDocument(); } else { // TODO error message unable to create file @@ -160,6 +188,35 @@ void SettingsController::Save() } } +void SettingsController::EmitInitialSettings() +{ + emit SettingsChanged(*_settings); +} + +void SettingsController::OpenSettingsDialog() +{ +#ifdef Q_WS_MAEMO_5 + OptionsDialog *dialog = new OptionsDialog(_main_window); + connect(dialog, SIGNAL(Accept(Settings)), this, SLOT(AcceptSettingsDialog(Settings))); + connect(dialog, SIGNAL(Cancel(Settings)), this, SLOT(CancelSettingsDialog(Settings))); + dialog->SetSettings(*_settings); + dialog->show(); + // dialog deletes itself +#endif +} + +void SettingsController::AcceptSettingsDialog(const Settings &settings) +{ + *_settings = settings; + emit SettingsChanged(settings); +} + +void SettingsController::CancelSettingsDialog(const Settings &settings) +{ + Q_UNUSED(settings); + // do nothing +} + QString SettingsController::GetSettingsFileName() { QString dirpath = QDir::homePath() + "/.movie-schedule";