View duplizieren von Windows nach iPad

Ich wollte meine Windows-Client View (1280x1024) auf das iPad kopieren.

Das geht aber wegen den Auflösungen so nicht, obwohl das Seitenverhältnis stimmt und die Grössen auf dem iPad völlig akzeptabel wären.

Bedeutet das wirklich, dass ich die gesamte View neu erstellen muss? :confused:

Lieber Gruss, kjb

Hi!

Ich umgehe das Problem wie folgt:

In der 2. View eine Seite mit der gleichen Größe erstellen, speichern, dann in der 1. View den Inhalt der kompletten Seite markieren (Strg + A), dann kopieren mit Strg + C, dann wieder auf die neue Seite der 2. View wechseln und alles mit Strg + V einfügen, zurechtschieben, fertig. Ein wenig umständlich, gerade bei mehreren Seite, aber besser als komplett neu erstellen.

Grüße,
Chris

Hallo Chris

Das löst aber mein Auflösungsproblem nicht, weil die Auflösung für iPad fest auf 1024x768 festgelegt ist. Wenn ich nun meine View von 1280x1024 kopieren will, muss ich entweder alle Elemente skalieren oder das Layout ganz anders machen. Für beides ist der Aufwand enorm (und mir zu gross).

Weil auf die Auflösung des iPad sowieso skaliert wird (jetzt mit einem festen Faktor 2), wäre doch eine Skalierung bei gleichem Seitenverhältnis (z.B. mit 1.6, dann wären meine 1280x1024 dabei :-)) denkbar?
Kann mir aber vorstellen, dass intern ein grosser Unterschied zwischen Faktor 2 und Faktor 1.6 ist.

Naja, alles kann halt nicht möglich sein in so einem frühen Entwicklungsstadium.

Gruss, Kaya

Ich kann da mal mein Skript anbieten, mit dem ich meine Testview für Android von iPad Version generiere.

Für die X und Y Achse kann ein beliebiger Faktor angegeben werden, Ziel View wird mit der Source View überschrieben (vorher unbedingt Backup machen).

Gegebenenfalls muss man die View noch etwas nachbearbeiten …


<?
	/**
	 * @file          IPSView_ResizeView.php
	 * @author        brownson
	 * @version
	 *   Version 1.0, 2015-08-10 brownson: Initiale Version<br/>
	 *
	 * IPSView Skript um eine View auf eine andere View zu kopieren inklusive
	 * Umrechung der Skalierung von X und Y Achse.
	 *
	 * Konfiguration Einstellungen:
	 *   * $masterViewID     - ID der View von der kopiert werden soll
	 *   * $childViewID      - ID der View auf die kopiert werden soll
	 *   * $childViewFactorX - Umrechnungsfaktor für die X Achse
	 *   * $childViewFactorY - Umrechnungsfaktor für die Y Achse
	 *
	 */

	// Konfiguration
	$masterViewID        = 12586;
	$childViewID         = 23327 ;
	$childViewFactorX    = 2.5;
	$childViewFactorY    = 2.13;

	// -------------------------------------------------------------------------

	// Konfiguration überprüfen
	if ($masterViewID == '') {
		die('Bitte geben Sie eine MasterViewID in der Konfiguration an.');
	}

	// Konfiguration überprüfen
	if ($childViewID == '') {
		die('Bitte geben Sie eine ChildViewID in der Konfiguration an.');
	}

	// Read Content of Masterview
	$masterContent     = IPS_GetMediaContent($masterViewID);
	if ($masterContent===false) {
		die("Media Objekt von Master konnte NICHT gefunden werden");
	}
	$masterData         = base64_decode($masterContent);
	$masterObj          = json_decode($masterData, true);
	if ($masterObj===false) {
		die("JSON Objekt von Master konnte NICHT dekodiert werden");
	}

	// Read Content of Masterview
	$childContent     = IPS_GetMediaContent($childViewID);
	if ($childContent===false) {
		die("Media Objekt von Child konnte NICHT gefunden werden");
	}
	$childData         = base64_decode($childContent);
	$childObj          = json_decode($childData, true);
	if ($childObj===false) {
		die("JSON Objekt von Child konnte NICHT dekodiert werden");
	}

	// Build Result Object
	echo "Convert View with FactorX=$childViewFactorX and FactorY=$childViewFactorY".PHP_EOL;
	$resultObj                   = resizeView ($masterObj, $childViewFactorX, $childViewFactorY);
	$resultObj['ViewRatio12']    = $childObj['ViewRatio12'];
	$resultObj['Name']           = $childObj['Name'];
	$resultObj['ID']             = $childObj['ID'];
	$resultObj['Width']          = $childObj['Width'];
	$resultObj['Height']         = $childObj['Height'];
	$resultObj['Client']         = $childObj['Client'];
	$resultObj['Hardware']       = $childObj['Hardware'];

	// Write Data to View
	$resultData        = json_encode($resultObj);
	$resultContent     = base64_encode($resultData);
	IPS_SetMediaContent($childViewID, $resultContent);

	echo ' '.PHP_EOL;
	echo '============================================================='.PHP_EOL;
	echo 'Successfully finished synchronization                        '.PHP_EOL;
	echo '============================================================='.PHP_EOL;


	// ----------------------------------------------------------------------------------------------------
	function resizeView ($jsonObj, $factorX, $factorY) {
		$factor = $factorX > $factorY ? $factorY : $factorX;
		$pages  = array();
		foreach ($jsonObj['Pages'] as $page) {
		   echo "Process Page=".$page['DisplayName'].PHP_EOL;
			$controls = array();
			foreach ($page['Controls'] as $control) {
				$control['Width']     = round($control['Width'] * $factorX);
				$control['Height']    = round($control['Height'] * $factorY);
				$control['LocationX'] = round($control['LocationX'] * $factorX);
				$control['LocationY'] = round($control['LocationY'] * $factorY);
				if (array_key_exists('Font', $control) && array_key_exists('Size', $control['Font'])) {
				   $control['Font']['Size'] = round($control['Font']['Size'] * $factor);
				}
				if (array_key_exists('CR1', $control)) $control['CR1'] = round($control['CR1'] * $factor);
				if (array_key_exists('CR2', $control)) $control['CR2'] = round($control['CR2'] * $factor);
				if (array_key_exists('CR3', $control)) $control['CR3'] = round($control['CR3'] * $factor);
				if (array_key_exists('CR4', $control)) $control['CR4'] = round($control['CR4'] * $factor);
				$controls[] = $control;
			}
			$page['Controls']    = $controls;
			$page['PopupWidth']  = round($page['PopupWidth'] * $factorX);
			$page['PopupHeight'] = round($page['PopupHeight'] * $factorY);
			$pages[] = $page;
		}
		$jsonObj['Pages'] = $pages;

		return $jsonObj;
	}


?>