+#include <iostream>
+
+void migrateConfiguration()
+{
+ QSettings settings;
+ int config_ver = settings.value("config_version", 0).toInt();
+ const int current_ver = 3;
+ if(config_ver == current_ver) //config file up-to-date
+ return;
+ if(config_ver > current_ver) {
+ std::cout << "Warning: Config file was created by a newer version of Presence VNC. This may break things.\n";
+ return;
+ }
+
+ if(settings.allKeys().isEmpty()) { //no config file
+ settings.setValue("config_version", current_ver);
+ settings.sync();
+ return;
+ }
+
+ std::cout << "Migrating from configuration ver. " << config_ver << "\n";
+
+ if(config_ver == 0) {
+ int left_zoom = settings.value("left_zoom", 0).toInt();
+ int right_zoom = settings.value("left_zoom", 0).toInt();
+ if(left_zoom >= 2)
+ settings.setValue("left_zoom", left_zoom+1);
+ if(right_zoom >= 2)
+ settings.setValue("left_zoom", right_zoom+1);
+ config_ver = 1;
+ }
+ if(config_ver == 1) {
+ QString last_hostname = settings.value("last_hostname", "").toString();
+ settings.remove("last_hostname");
+ if(!last_hostname.isEmpty()) {
+ //make sure hostname is sane
+ last_hostname.remove(QChar('/'));
+ last_hostname.remove(QChar('\\'));
+ last_hostname = last_hostname.toLower();
+
+ settings.setValue(QString("hosts/%1/position").arg(last_hostname), 0);
+ }
+
+ config_ver = 2;
+ }
+ if(config_ver == 2) {
+ bool rescale = settings.value("rescale", false).toBool();
+ settings.remove("rescale");
+
+ int zoomlevel;
+ if(rescale)
+ zoomlevel = 0;
+ else
+ zoomlevel = 95;
+
+ settings.setValue("zoomlevel", zoomlevel);
+
+ config_ver = 3;
+ }
+ Q_ASSERT(config_ver == current_ver);
+ settings.setValue("config_version", config_ver);
+ settings.sync();
+}
+
+