Jump to: navigation, search
gbam icon.png    Developer Manual
ginstr logo main.png business app maker (GBAM)

GBAM files handling (TODO)

All app-composer ginstr app operations should be executed in one "appComposerBuilds{ssoUserId}" folder dedicated to user.

SVN that contains ginstr apps will have a "ginstr app templates" directory which allows user via app-composer dropdown to export ginstr app for creating his own ginstr app based on the downloaded template.

There are three ways to create/edit/save ginstr apps:

1. Direct modifications to SVN generic apps (this action should only be allowed to ginstr staff):
App is pulled from SVN by app-composer and is stored to "appComposerBuilds" folder and, after modifications, updated back to original SVN app and from there is pushed to two ginstr servers for download by ginstr clients
2. Modifications of SVN generic apps:
App is pulled from SVN by app-composer stored to "appComposerBuilds", and from there is pushed to two ginstr servers once user presses "publish"
3. Newly made ginstr apps:
Blank apps with minimal structure ready for creation. Once user presses "publish", it is pushed to server for download by ginstr clients

When ginstr app is pushed to servers then the app files are packaged to zip file with zip name =

GBAM id' generation rules


ginstr app structure (TODO, MOVE FROM HERE)

ginstr applications are packaged into zip files with name of the zip representing unique application "id" in ginstr cloud.

Immediate structure within zip file :

 ├─ activity.xml
 └─ start.xml
 ├─ strings.xml
 └─ styles.xml
 └─ app_icon
 └─ widget_en_login.xml
 └─ queries.xml
 ├─ changelog.xml
 ├─ common.xml
 └─ graphic.xml

The above structure is the minimum requirement for a ginstr app to function.

In the following sections basic information about each of the required components will be explained.


Folder is required.

This folder holds all ginstr app layouts which get displayed as screens, one layout XML in running application is shown as one screen.

Names of XML files in layout folder are not relevant.

Two files are necessary for application to run:

XML layout which serves as container for every screen XML file
XML layout which represents first screen ginstr launcher will load on start of application


Folder is required. Folder that holds all ginstr app string translations.

represents the default "DE" language.


Folder is required.

Represents the "default" folder into which to store all graphics.

Graphics to be pulled from SVN.

There is one required file in graphics when the app is created.

required to generate shortcut icon for the app


Folder is required.

Folder holds all custom internal layouts of widgets.

If widget is not a standard looking widget, internal layout is necessary.

One required file:

represents custom layout for login widget, since each app has login screen this is obligatory.


Folder is required.

Folder holds definitions relevant for data structures, variables.

One required file:

holds queries for database


Folder is required.

Folder holds extra information about the application and some resources which are not changeable.

3 required files:

log of changes that were made to the application
information about the ginstr app
information about the graphics used in ginstr app

Graphics handling

All graphics for ginstr apps come from ginstr SVN. gBAM is handling graphical resources via SVN. For more information read Graphics handling gBAM


Widgets represent a visual control which can be added to ginstr app screens from ginstr app-composer widget toolbox.

Widgets are organised in categories.

gBAM widget categories

This table describes the purpose of all 'widget categories' used in gBAM to present the widgets to the ginstr app designer.

category name EN DE description
advanced advanced Komplexe Widgets All widgets that provide more complex functionality. Most prominent example is the questionnaire widget.
all all Alle All available widgets are assigned to this category
buttons buttons Schaltflächen All widgets that show a button on the app screen. This can be a 9-patch button or a graphical icon
contact contact Kontaktdaten All widgets that handle contact details of persons, companies etc.
database database Datenbank All widgets that can execute some database operation like read from database, write to database, search in database
date & time date & time Datum & Uhrzeit All widgets that have to do with date and/or time
dropdown dropdown Dropdown All widgets that show a dropdown menu in the app
headings and delimiters headings and delimiters Überschriften und Trennelemente All widgets that allow to add headings or delimiters to an app
hidden hidden Versteckt All hidden widgets; hidden widgets perform some action but are not visible in the app
identification identification Identifikation All widgets that allow to identify something or someone; typically identification widgets identify assets, people or locations
input fields input fields Eingabefelder All widgets that allow to enter textual data or numbers; this includes text, numbers, media data, dropdown menus and all other widgets that allow entering data
location location Ort All widget that have to do with a geographical location
media audio, photo, video Audio, Foto, Video All widgets that have to do with photos, videos, audio;
signature widgets and document widgets do NOT belong to this widget group
numbers numbers Zahlen All widgets that have to do with numbers;
dates and times are NO numbers
read-only fields read-only fields Nur Anzeige All widgets that allow to show text or numbers but which do NOT allow to enter/edit data
selection selection Auswahl All widgets that allow to select a value from a predefined list of values; all 'dropdown' widgets must also be listed here ???
text text Text All widgets that have to do with text. Widgets that allow to enter numbers only must NOT be assigned to this widget group

gBAM widgets table

The following widgets are currently implemented into the ginstr app-composer and fully supported by the ginstr launcher:

id definition gBAM UI name (en) gBAM UI name (de) gBAM UI name (es) gBAM UI name (fr) is active on gBAM cat: all cat: buttons cat: contact cat: database cat: date & time cat: dropdown cat: headings and delimiters cat: hidden cat: identification cat: input fields cat: location cat: media cat: numbers cat: read-only fields cat: selection cat: text cat: advanced
screenScroll Screen scroll scrolling screen Scrollbarer Bildschirm [x] [x]
screenSave Screen save scrolling screen with save button Scrollbarer Bildschirm mit 'Speichern' Schaltfläche [x] [x]
containerHorizontalTwo Container horizontal two widgets container horizontal for two widgets Horizontaler Container für 2 Widgets [x]
containerHorizontalThree Container horizontal three widgets container horizontal for three widgets Horizontaler Container für 3 Widgets [x]
containerHorizontalFour Container horizontal four widgets container horizontal for four widgets Horizontaler Container für 4 Widgets [x]
containerHorizontalFive Container horizontal five widgets container horizontal for five widgets Horizontaler Container für 5 Widgets [x]
buttonSave Button save save Speichern [x] [x] [x] [x]
buttonQuery Button query query Abfrage [x] [x] [x] [x] [x] [x]
buttonCleanWidgets Button clean widgets clear Leeren [x] [x] [x]
menuBarLogout Menu bar logout screen title with settings and logout Bildschirmkopf mit Einstellungen und Abmelden [x] [x] [x]
menuBarSettings Menu bar settings screen title with settings Bildschirmkopf mit Einstellungen [x] [x] [x]
dateReadOnly Date read only date (read-only) Datum (nur Anzeige) [x] [x] [x] [x]
dateEditable Date editable date Datum [x] [x] [x] [x]
dateBirthDay Birthday birthday Geburtstag [x] [x] [x] [x] [x]
timeEditable Time editable time Uhrzeit [x] [x] [x]
timeReadOnly Time read only time (read-only) Uhrzeit (nur Anzeige) [x] [x] [x]
dateTimeEditable Date time editable date & time Datum & Uhrzeit [x] [x] [x] [x]
dateTimeReadOnly Date time read-only date & time (read-only) Datum & Uhrzeit (nur Anzeige) [x] [x] [x] [x]
textEditableMultiline Text editable multiline text multi-line Text mehrzeilig [x] [x] [x] [x]
textEditable / textEditableHorizontal Text editable / horizontal text single line Text einzeilig [x] [x] [x] [x]
textReadOnlyMultiline Text read only multiline text multi-line (read-only) Text mehrzeilig (nur Anzeige) [x] [x] [x] [x]
textReadOnly / textReadOnlyHorizontal Text read only / horizontal text single line (read-only) Text einzeilig (nur Anzeige) [x] [x] [x] [x]
textPhone Phone phone no. Telefon-Nr. [x] [x] [x] [x]
textEmail Email e-mail E-Mail [x] [x] [x] [x] [x]
nfcTextEditable Nfc text editable NFC NFC [x] [x] [x] [x] [x] [x]
nfcImageQuery Nfc image query NFC (with image) NFC (mit Grafik) [x] [x] [x] [x] [x] [x]
nfcTextReadOnlyQuery Nfc text read only query NFC (read-only) NFC (nur Anzeige) [x] [x] [x] [x] [x] [x]
qrTextEditableQuery / qrTextEditableQueryHorizontal QR text editable query / horizontal QR code QR-Code [x] [x] [x] [x] [x] [x] [x]
qrTextEditableQuery / qrTextEditableQueryHorizontal Barcode editable / horizontal barcode Barcode [x] [x] [x] [x] [x] [x] [x]
qrTextReadOnlyQuery / qrTextReadOnlyQueryHorizontal QR read only text query / horizontal QR code (read-only) QR-Code (nur Anzeige) [x] [x] [x] [x] [x] [x] [x]
qrTextReadOnlyQuery / qrTextReadOnlyQueryHorizontal Barcode read only text query / horizontal barcode (read-only) Barcode (nur Anzeige) [x] [x] [x] [x] [x] [x] [x]
numberDefault Number default number Zahl [x] [x] [x] [x]
numberInteger / numberIntegerHorizontal Integer / horizontal integer number Ganzzahl [x] [x] [x] [x]
numberDecimal / numberDecimalHorizontal Decimal / horizontal decimal number Dezimalzahl [x] [x] [x] [x]
numberDefaultReadOnly / numberDefaultReadOnlyHorizontal Number default read only / horizontal number (read-only) Zahl (nur Anzeige) [x] [x] [x]
numberIntegerReadOnly / numberIntegerReadOnlyHorizontal Integer read only / horizontal integer number (read-only) Ganzzahl (nur Anzeige) [x] [x] [x] [x]
numberDecimalReadOnly / numberDecimalReadOnlyHorizontal Decimal read only / horizontal decimal number (read-only) Dezimalzahl (nur Anzeige) [x] [x] [x] [x]
numberPercentage Percentage percentage Prozentwert [x] [x] [x]
numberCurrency Currency currency Betrag [x] [x] [x]
numberCounter Counter counter Zähler [x] [x] [x] [x]
numberCalculationReadOnly Calculation calculated value Berechneter Wert [x] [x] [x] [x]
locationGPS GPS coordinates GPS coordinate GPS Koordinate [x] [x] [x] [x] [x]
locationAddress GPS address GPS address GPS Adresse [x] [x] [x] [x] [x]
locationAddressReadOnly GPS address read only GPS address (read-only) GPS Adresse (nur Anzeige) [x] [x] [x] [x] [x]
mediaAudio Audio audio Sprachnachricht [x] [x] [x] [x] [x]
mediaPhoto Photo photo Foto [x] [x] [x] [x] [x]
mediaPhotoReadOnly Photo read only photo (read-only) Foto (nur Anzeige) [x] [x] [x] [x]
mediaVideo Video video Video [x] [x] [x] [x] [x]
mediaDocument Document document Dokument [x] [x] [x]
mediaSignature Signature signature Unterschrift [x] [x] [x] [x]
textPhone Fax fax Fax [x] [x] [x] [x] [x]
auditTimestamp Timestamp date & time (hidden) Datum & Uhrzeit (unsichtbar) [x] [x] [x] [x] [x]
auditSerial Phone serial phone serial no. (hidden) Seriennummer mobiles Gerät (unsichtbar) [x] [x] [x] [x] [x] [x]
actionLoadRecordColumnValue Load record column value load value from table (hidden) Wert aus Tabelle laden (unsichtbar) [x] [x] [x] [x] [x]
actionLoadNumberOfRecordsTable Load number of records table load number of records (hidden) Anzahl Datensätze ermitteln (unsichtbar) [x] [x] [x] [x] [x] [x]
actionIncrementNumberValue Increment number widget value increment number (hidden) Zahl erhöhen (unsichtbar) [x] [x] [x] [x] [x]
actionVibrate Vibrate vibrate Vibrieren [x] [x] [x]
actionBeep Beep beep Tonsignal [x] [x] [x]
actionUser Ginstr username ginstr username (hidden) ginstr Benutzername (unsichtbar) [x] [x] [x] [x]
auditGPS GPS hidden GPS (hidden) GPS (unsichtbar) [x] [x] [x] [x] [x]
auditAddress GPS address hidden GPS address (hidden) GPS Adresse (unsichtbar) [x] [x] [x] [x] [x] [x]
dropdownLocalText Dropdown local text text dropdown Text Auswahl [x] [x] [x] [x] [x] [x]
dropdownLocalNumber Dropdown local number decimal number dropdown Dezimalzahl Dropdown [x] [x] [x] [x] [x] [x]
dropdownLocalMultiselectText Dropdown local multiselect text text multi-select Text Dropdown Mehrfachauswahl [x] [x] [x] [x] [x] [x]
dropdownDatabaseMultiselectText Dropdown database multiselect text text dropdown multi-select from database Text Mehrfachauswahl aus Datenbank [x] [x] [x] [x] [x] [x] [x]
dropdownDatabaseText Dropdown database text text dropdown from database Text Auswahl aus Datenbank [x] [x] [x] [x] [x] [x] [x]
dropdownDatabaseNumber Dropdown database number number dropdown from database Zahl Auswahl aus Datenbank [x] [x] [x] [x] [x] [x]
dropdownDependent Dependent dropdowns text dropdown dependent Abhängige Textauswahl [x] [x] [x] [x] [x] [x] [x]
dropdownAutoCompleteText Dropdown autocomplete text text dropdown autocomplete Text Auswahl auto-vervollständigt [x] [x] [x] [x] [x] [x]
checkbox checkbox checkbox Checkbox [x] [x] [x] [x]
checkboxReadOnly checkbox read only checkbox (read-only) Checkbox (nur Anzeige) [x] [x] [x] [x]
appearanceHorizontalDivider Horizontal divider horizontal line Horizontale Linie [x] [x] [x]
questionnaire Questionnaire questionnaire Fragebogen [x] [x] [x] [x]
masterDataDropdownSave Master data dropdown save save master data Stammdaten speichern [x] [x] [x] [x] [x] [x] [x]
headingOne Heading one screen title level-1 Bildschirmkopf Ebene-1 [x] [x] [x]
headingTwo Heading two screen title level-2 Bildschirmkopf Ebene-2 [x] [x] [x]
note Note note (read-only) Hinweistext (nur Anzeige) [x] [x] [x] [x]
radioGroup Radio Group radio group (2 options) Mehrfachauswahl (2 Optionen) [x] [x] [x] [x]
radioGroup 3 options radio group radio group (3 options) Mehrfachauswahl (3 Optionen) [x] [x] [x] [x]
radioGroup Yes/No radio group yes / no Ja / Nein [x] [x] [x] [x]
radioGroup Yes/No/Invalid radio group yes / no / invalid Ja / Nein / Ungültig [x] [x] [x] [x]
radioGroup Male/Female radio group male / female Männlich / Weiblich [x] [x] [x] [x]
urlReadOnly Url URL (read-only) URL (nur Anzeige) [x] [x] [x]