/** * Generate code that will be inserted into the ModelConnector to connect a database object with this control. * This is called during the codegen process. This is very similar to the QListControl code, but there are * some differences. In particular, this control does not support ManyToMany references. * * @param QCodeGenBase $objCodeGen * @param QSqlTable $objTable * @param QSqlColumn|QReverseReference|QManyToManyReference $objColumn * @return string */ public function ConnectorCreate(QCodeGenBase $objCodeGen, QSqlTable $objTable, $objColumn) { $strObjectName = $objCodeGen->ModelVariableName($objTable->Name); $strControlVarName = $objCodeGen->ModelConnectorVariableName($objColumn); $strLabelName = addslashes(QCodeGen::ModelConnectorControlName($objColumn)); // Read the control type in case we are generating code for a subclass $strControlType = $objCodeGen->GetControlCodeGenerator($objColumn)->GetControlClass(); $strRet = <<<TMPL \t\t/** \t\t * Create and setup a {$strControlType} {$strControlVarName} \t\t * @param string \$strControlId optional ControlId to use \t\t * @return {$strControlType} \t\t */ \t\tpublic function {$strControlVarName}_Create(\$strControlId = null) { TMPL; $strControlIdOverride = $objCodeGen->GenerateControlId($objTable, $objColumn); if ($strControlIdOverride) { $strRet .= <<<TMPL \t\t\tif (!\$strControlId) { \t\t\t\t\$strControlId = '{$strControlIdOverride}'; \t\t\t} TMPL; } $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName} = new {$strControlType}(\$this->objParentObject, \$strControlId); \t\t\t\$this->{$strControlVarName}->Name = QApplication::Translate('{$strLabelName}'); \t\t\t\$this->{$strControlVarName}->DateTime = \$this->{$strObjectName}->{$objColumn->PropertyName}; TMPL; switch ($objColumn->DbType) { case QDatabaseFieldType::DateTime: $strRet .= "\t\t\t\$this->{$strControlVarName}->DateTimePickerType = QDateTimePickerType::DateTime;\n"; break; case QDatabaseFieldType::Time: $strRet .= "\t\t\t\$this->{$strControlVarName}->DateTimePickerType = QDateTimePickerType::Time;\n"; break; default: $strRet .= "\t\t\t\$this->{$strControlVarName}->DateTimePickerType = QDateTimePickerType::Date;\n"; } if ($strMethod = QCodeGen::$PreferredRenderMethod) { $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName}->PreferredRenderMethod = '{$strMethod}'; TMPL; } $strRet .= $this->ConnectorCreateOptions($objCodeGen, $objTable, $objColumn, $strControlVarName); $strRet .= <<<TMPL \t\t\treturn \$this->{$strControlVarName}; \t\t} TMPL; return $strRet; }
/** * Generate code that will be inserted into the ModelConnector to connect a database object with this control. * This is called during the codegen process. * * @param QCodeGenBase $objCodeGen * @param QTable $objTable * @param mixed $objColumn * @return string */ public function ConnectorCreate(\QCodeGenBase $objCodeGen, \QSqlTable $objTable, $objColumn) { $strControlVarName = $objCodeGen->ModelConnectorVariableName($objColumn); $strLabelName = addslashes(QCodeGen::ModelConnectorControlName($objColumn)); $strControlType = $objCodeGen->GetControlCodeGenerator($objColumn)->GetControlClass(); $strRet = <<<TMPL \t\t/** \t\t * Create and setup a {$strControlType} {$strControlVarName} \t\t * @param string \$strControlId optional ControlId to use \t\t * @return {$strControlType} \t\t */ \t\tpublic function {$strControlVarName}_Create(\$strControlId = null) { TMPL; $strControlIdOverride = $objCodeGen->GenerateControlId($objTable, $objColumn); if ($strControlIdOverride) { $strRet .= <<<TMPL \t\t\tif (!\$strControlId) { \t\t\t\t\$strControlId = '{$strControlIdOverride}'; \t\t\t} TMPL; } $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName} = new {$strControlType}(\$this->objParentObject, \$strControlId); \t\t\t\$this->{$strControlVarName}->Name = QApplication::Translate('{$strLabelName}'); TMPL; $strRet .= static::ConnectorRefresh($objCodeGen, $objTable, $objColumn, true); if ($objColumn->NotNull) { $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName}->Required = true; TMPL; } if ($strMethod = QCodeGen::$PreferredRenderMethod) { $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName}->PreferredRenderMethod = '{$strMethod}'; TMPL; } $strRet .= static::ConnectorCreateOptions($objCodeGen, $objTable, $objColumn, $strControlVarName); $strRet .= <<<TMPL \t\t\treturn \$this->{$strControlVarName}; \t\t} TMPL; return $strRet; }
/** * @param QCodeGenBase $objCodeGen * @param QSqlColumn|QReverseReference| QManyToManyReference $objColumn * @return string */ public function ConnectorVariableDeclaration(QCodeGenBase $objCodeGen, $objColumn) { $strClassName = $objCodeGen->GetControlCodeGenerator($objColumn)->GetControlClass(); $strPropName = QCodeGen::ModelConnectorPropertyName($objColumn); $strControlVarName = $this->VarName($strPropName); $strRet = <<<TMPL \t\t/** \t\t * @var {$strClassName} {$strControlVarName} \t\t * @access protected \t\t */ \t\tprotected \${$strControlVarName}; \t\t/** \t\t * @var string str{$strPropName}NullLabel \t\t * @access protected \t\t */ \t\tprotected \$str{$strPropName}NullLabel; TMPL; if ($objColumn instanceof QSqlColumn && !$objColumn->Reference->IsType || $objColumn instanceof QManyToManyReference && !$objColumn->IsTypeAssociation || $objColumn instanceof QReverseReference) { $strRet .= <<<TMPL \t\t/** \t\t* @var obj{$strPropName}Condition \t\t* @access protected \t\t*/ \t\tprotected \$obj{$strPropName}Condition; \t\t/** \t\t* @var obj{$strPropName}Clauses \t\t* @access protected \t\t*/ \t\tprotected \$obj{$strPropName}Clauses; TMPL; } return $strRet; }
/** * @param QCodeGenBase $objCodeGen * @param QSqlColumn|QReverseReference| QManyToManyReference $objColumn * @return string */ public function ConnectorVariableDeclaration(QCodeGenBase $objCodeGen, $objColumn) { $strClassName = $objCodeGen->GetControlCodeGenerator($objColumn)->GetControlClass(); $strPropName = $objCodeGen->ModelConnectorPropertyName($objColumn); $strControlVarName = $this->VarName($strPropName); $strRet = <<<TMPL \t\t/** \t\t * @var {$strClassName} {$strControlVarName} \t\t * @access protected \t\t */ \t\tprotected \${$strControlVarName}; \t\t/** \t\t* @var obj{$strPropName}Condition \t\t* @access protected \t\t*/ \t\tprotected \$obj{$strPropName}Condition; \t\t/** \t\t* @var obj{$strPropName}Clauses \t\t* @access protected \t\t*/ \t\tprotected \$obj{$strPropName}Clauses; TMPL; return $strRet; }
/** * Generate code that will be inserted into the ModelConnector to connect a database object with this control. * This is called during the codegen process. This is very similar to the QListControl code, but there are * some differences. In particular, this control does not support ManyToMany references. * * @param QCodeGenBase $objCodeGen * @param QSqlTable $objTable * @param QSqlColumn|QReverseReference|QManyToManyReference $objColumn * @return string */ public function ConnectorCreate(QCodeGenBase $objCodeGen, QSqlTable $objTable, $objColumn) { $strObjectName = $objCodeGen->ModelVariableName($objTable->Name); $strClassName = $objTable->ClassName; $strControlVarName = $objCodeGen->ModelConnectorVariableName($objColumn); $strLabelName = addslashes(QCodeGen::ModelConnectorControlName($objColumn)); // Read the control type in case we are generating code for a subclass of QTextBox $strControlType = $objCodeGen->GetControlCodeGenerator($objColumn)->GetControlClass(); $strRet = <<<TMPL \t\t/** \t\t * Create and setup a {$strControlType} {$strControlVarName} \t\t * @param string \$strControlId optional ControlId to use \t\t * @return {$strControlType} \t\t */ \t\tpublic function {$strControlVarName}_Create(\$strControlId = null) { TMPL; $strControlIdOverride = $objCodeGen->GenerateControlId($objTable, $objColumn); if ($strControlIdOverride) { $strRet .= <<<TMPL \t\t\tif (!\$strControlId) { \t\t\t\t\$strControlId = '{$strControlIdOverride}'; \t\t\t} TMPL; } $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName} = new {$strControlType}(\$this->objParentObject, \$strControlId); \t\t\t\$this->{$strControlVarName}->Name = QApplication::Translate('{$strLabelName}'); TMPL; if ($objColumn->NotNull) { $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName}->Required = true; TMPL; } if ($objColumn->DbType == QDatabaseFieldType::Blob) { $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName}->TextMode = QTextMode::MultiLine; TMPL; } if ($objColumn->VariableType == QType::String && is_numeric($objColumn->Length)) { $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName}->MaxLength = {$strClassName}::{$objColumn->PropertyName}MaxLength; TMPL; } if ($strMethod = QCodeGen::$PreferredRenderMethod) { $strRet .= <<<TMPL \t\t\t\$this->{$strControlVarName}->PreferredRenderMethod = '{$strMethod}'; TMPL; } $strRet .= $this->ConnectorCreateOptions($objCodeGen, $objTable, $objColumn, $strControlVarName); $strRet .= $this->ConnectorRefresh($objCodeGen, $objTable, $objColumn, true); $strRet .= <<<TMPL \t\t\treturn \$this->{$strControlVarName}; \t\t} TMPL; return $strRet; }