From cef03e2a0b46a7fb01487275b24b26e14624f974 Mon Sep 17 00:00:00 2001 From: ro Date: Mon, 19 Jan 2015 14:26:41 +0000 Subject: [PATCH] added wincellarclientRESTAdapter sample --- .../wincellarclientRESTAdapter/MainFMX.fmx | 374 +++++++++ .../wincellarclientRESTAdapter/MainFMX.pas | 166 ++++ .../ProjectGroupServerAndClient.groupproj | 48 ++ .../RESTServicesU.pas | 28 + .../WineCellarClientRESTAdapter.dpr | 18 + .../WineCellarClientRESTAdapter.dproj | 782 ++++++++++++++++++ 6 files changed, 1416 insertions(+) create mode 100644 samples/wincellarclientRESTAdapter/MainFMX.fmx create mode 100644 samples/wincellarclientRESTAdapter/MainFMX.pas create mode 100644 samples/wincellarclientRESTAdapter/ProjectGroupServerAndClient.groupproj create mode 100644 samples/wincellarclientRESTAdapter/RESTServicesU.pas create mode 100644 samples/wincellarclientRESTAdapter/WineCellarClientRESTAdapter.dpr create mode 100644 samples/wincellarclientRESTAdapter/WineCellarClientRESTAdapter.dproj diff --git a/samples/wincellarclientRESTAdapter/MainFMX.fmx b/samples/wincellarclientRESTAdapter/MainFMX.fmx new file mode 100644 index 00000000..d42203bc --- /dev/null +++ b/samples/wincellarclientRESTAdapter/MainFMX.fmx @@ -0,0 +1,374 @@ +object TabbedForm: TTabbedForm + Left = 0 + Top = 0 + Caption = 'TabbedForm' + ClientHeight = 567 + ClientWidth = 384 + FormFactor.Width = 1440 + FormFactor.Height = 900 + FormFactor.Devices = [Desktop] + OnCreate = FormCreate + DesignerMasterStyle = 0 + object HeaderToolBar: TToolBar + Anchors = [] + Size.Width = 384.000000000000000000 + Size.Height = 48.000000000000000000 + Size.PlatformDefault = False + TabOrder = 0 + object ToolBarLabel: TLabel + Align = Contents + Size.Width = 384.000000000000000000 + Size.Height = 48.000000000000000000 + Size.PlatformDefault = False + StyleLookup = 'toollabel' + TextSettings.HorzAlign = Center + Text = 'Wine Cellar Cool Client' + end + object DrawerBtn: TButton + Align = Left + Size.Width = 80.000000000000000000 + Size.Height = 48.000000000000000000 + Size.PlatformDefault = False + StyleLookup = 'detailstoolbutton' + TabOrder = 1 + Text = 'DrawerBtn' + end + end + object TabControl1: TTabControl + Align = Client + FullSize = True + Size.Width = 384.000000000000000000 + Size.Height = 519.000000000000000000 + Size.PlatformDefault = False + TabHeight = 49.000000000000000000 + TabIndex = 1 + TabOrder = 1 + TabPosition = None + object WineListTabItem: TTabItem + CustomIcon = < + item + end> + IsSelected = False + Size.Width = 8.000000000000000000 + Size.Height = 8.000000000000000000 + Size.PlatformDefault = False + StyleLookup = 'tabitemtoprated' + TabOrder = 0 + Text = 'Wine Lists' + object BtnWineList: TButton + Action = acWineList + Align = Bottom + Enabled = True + Position.Y = 473.000000000000000000 + Size.Width = 384.000000000000000000 + Size.Height = 46.000000000000000000 + Size.PlatformDefault = False + TabOrder = 0 + Visible = True + end + object WineListView: TListView + ItemAppearanceClassName = 'TListItemRightDetailAppearance' + ItemEditAppearanceClassName = 'TListItemRightDetailDeleteAppearance' + HeaderAppearanceClassName = 'TListHeaderObjects' + FooterAppearanceClassName = 'TListHeaderObjects' + Align = Client + Size.Width = 384.000000000000000000 + Size.Height = 473.000000000000000000 + Size.PlatformDefault = False + TabOrder = 1 + OnItemClick = WineListViewItemClick + end + end + object EdtTabItem: TTabItem + CustomIcon = < + item + end> + IsSelected = True + Size.Width = 8.000000000000000000 + Size.Height = 8.000000000000000000 + Size.PlatformDefault = False + StyleLookup = 'tabitemcontacts' + TabOrder = 0 + Text = 'EdtTabItem' + object EdtName: TEdit + Touch.InteractiveGestures = [LongTap, DoubleTap] + TabOrder = 6 + Position.X = 16.000000000000000000 + Position.Y = 65.000000000000000000 + Size.Width = 345.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + end + object LblName: TLabel + Position.X = 16.000000000000000000 + Position.Y = 41.000000000000000000 + Text = 'Name' + end + object LblCountry: TLabel + Position.X = 16.000000000000000000 + Position.Y = 151.000000000000000000 + Text = 'Country' + end + object EdtCountry: TEdit + Touch.InteractiveGestures = [LongTap, DoubleTap] + TabOrder = 4 + Position.X = 16.000000000000000000 + Position.Y = 175.000000000000000000 + Size.Width = 161.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + end + object EdtRegion: TEdit + Touch.InteractiveGestures = [LongTap, DoubleTap] + TabOrder = 9 + Position.X = 201.000000000000000000 + Position.Y = 175.000000000000000000 + Size.Width = 161.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + end + object LblRegion: TLabel + Position.X = 200.000000000000000000 + Position.Y = 153.000000000000000000 + Text = 'Region' + end + object EdtYear: TEdit + Touch.InteractiveGestures = [LongTap, DoubleTap] + TabOrder = 11 + Position.X = 17.000000000000000000 + Position.Y = 278.000000000000000000 + Size.Width = 161.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + end + object EdtGrapes: TEdit + Touch.InteractiveGestures = [LongTap, DoubleTap] + TabOrder = 12 + Position.X = 201.000000000000000000 + Position.Y = 278.000000000000000000 + Size.Width = 161.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + end + object LblYear: TLabel + Position.X = 17.000000000000000000 + Position.Y = 257.000000000000000000 + Text = 'Year' + end + object LblGrapes: TLabel + Position.X = 200.000000000000000000 + Position.Y = 257.000000000000000000 + Text = 'Grapes' + end + object ToolBar1: TToolBar + Align = Bottom + Position.Y = 479.000000000000000000 + Size.Width = 384.000000000000000000 + Size.Height = 40.000000000000000000 + Size.PlatformDefault = False + TabOrder = 15 + object Button1: TButton + Action = acSaveWine + Align = Client + Enabled = True + Size.Width = 384.000000000000000000 + Size.Height = 40.000000000000000000 + Size.PlatformDefault = False + TabOrder = 0 + Visible = True + end + end + object EdtID: TEdit + Touch.InteractiveGestures = [LongTap, DoubleTap] + TabOrder = 5 + Position.X = 16.000000000000000000 + Position.Y = 17.000000000000000000 + Size.Width = 345.000000000000000000 + Size.Height = 22.000000000000000000 + Size.PlatformDefault = False + Visible = False + end + end + object TabItem3: TTabItem + CustomIcon = < + item + end> + IsSelected = False + Size.Width = 8.000000000000000000 + Size.Height = 8.000000000000000000 + Size.PlatformDefault = False + StyleLookup = 'tabitemrecent' + TabOrder = 0 + Text = 'TabItem3' + end + object TabItem4: TTabItem + CustomIcon = < + item + end> + IsSelected = False + Size.Width = 8.000000000000000000 + Size.Height = 8.000000000000000000 + Size.PlatformDefault = False + StyleLookup = 'tabitemmostrecent' + TabOrder = 0 + Text = 'TabItem4' + end + end + object MultiView1: TMultiView + TargetControl = TabControl1 + MasterButton = DrawerBtn + Mode = Drawer + Size.Width = 250.000000000000000000 + Size.Height = 567.000000000000000000 + Size.PlatformDefault = False + Visible = False + TabOrder = 4 + object ListBox1: TListBox + Align = Client + Size.Width = 249.000000000000000000 + Size.Height = 567.000000000000000000 + Size.PlatformDefault = False + TabOrder = 0 + DisableFocusEffect = True + DefaultItemStyles.ItemStyle = '' + DefaultItemStyles.GroupHeaderStyle = '' + DefaultItemStyles.GroupFooterStyle = '' + object ListBoxItem1: TListBoxItem + TabOrder = 0 + Text = 'Wine List' + OnClick = ListBoxItem1Click + end + object ListBoxItem2: TListBoxItem + TabOrder = 1 + Text = 'New Wine' + OnClick = ListBoxItem2Click + end + end + end + object ActionList1: TActionList + Left = 312 + Top = 152 + object acWineList: TAction + Text = 'Wine List' + OnExecute = acWineListExecute + end + object ChangeTabActionEdtWine: TChangeTabAction + Tab = EdtTabItem + end + object ChangeTabActionWineList: TChangeTabAction + Tab = WineListTabItem + end + object acSaveWine: TAction + Text = 'Save Wine' + OnExecute = acSaveWineExecute + end + end + object PrototypeBindSource1: TPrototypeBindSource + AutoActivate = False + AutoPost = True + RecordCount = 50 + FieldDefs = < + item + Name = 'id' + FieldType = ftUInteger + Generator = 'AlphaColors' + ReadOnly = False + end + item + Name = 'name' + Generator = 'BitmapNames' + ReadOnly = False + end + item + Name = 'year' + FieldType = ftUInteger + Generator = 'AlphaColors' + ReadOnly = False + end + item + Name = 'grapes' + Generator = 'ColorsNames' + ReadOnly = False + end + item + Name = 'country' + Generator = 'ColorsNames' + ReadOnly = False + end + item + Name = 'region' + Generator = 'ColorsNames' + ReadOnly = False + end + item + Name = 'description' + FieldType = ftTStrings + Generator = 'LoremIpsum' + ReadOnly = False + end> + ScopeMappings = <> + OnCreateAdapter = PrototypeBindSource1CreateAdapter + Left = 320 + end + object BindingsList1: TBindingsList + Methods = <> + OutputConverters = <> + Left = 20 + Top = 5 + object LinkControlToField1: TLinkControlToField + Category = 'Quick Bindings' + DataSource = PrototypeBindSource1 + FieldName = 'name' + Control = EdtName + Track = False + end + object LinkControlToField2: TLinkControlToField + Category = 'Quick Bindings' + DataSource = PrototypeBindSource1 + FieldName = 'year' + Control = EdtYear + Track = False + end + object LinkControlToField3: TLinkControlToField + Category = 'Quick Bindings' + DataSource = PrototypeBindSource1 + FieldName = 'grapes' + Control = EdtGrapes + Track = False + end + object LinkControlToField4: TLinkControlToField + Category = 'Quick Bindings' + DataSource = PrototypeBindSource1 + FieldName = 'country' + Control = EdtCountry + Track = False + end + object LinkControlToField5: TLinkControlToField + Category = 'Quick Bindings' + DataSource = PrototypeBindSource1 + FieldName = 'region' + Control = EdtRegion + Track = False + end + object LinkListControlToField1: TLinkListControlToField + Category = 'Quick Bindings' + DataSource = PrototypeBindSource1 + FieldName = 'name' + Control = WineListView + FillExpressions = < + item + SourceMemberName = 'country' + ControlMemberName = 'Detail' + end> + FillHeaderExpressions = <> + FillBreakGroups = <> + end + object LinkControlToField6: TLinkControlToField + Category = 'Quick Bindings' + DataSource = PrototypeBindSource1 + FieldName = 'id' + Control = EdtID + Track = False + end + end +end diff --git a/samples/wincellarclientRESTAdapter/MainFMX.pas b/samples/wincellarclientRESTAdapter/MainFMX.pas new file mode 100644 index 00000000..53cf40f1 --- /dev/null +++ b/samples/wincellarclientRESTAdapter/MainFMX.pas @@ -0,0 +1,166 @@ +unit MainFMX; + +interface + +uses + System.SysUtils, System.Types, System.UITypes, System.Classes, + System.Variants, + FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.TabControl, + FMX.StdCtrls, FMX.Gestures, MVCFramework.RESTAdapter, RESTServicesU, + FMX.ListView.Types, FMX.ListView, System.Actions, FMX.ActnList, + System.Generics.Collections, WinesBO, FMX.ListBox, FMX.Layouts, FMX.MultiView, + Data.Bind.GenData, FMX.Bind.GenData, Data.Bind.Components, + Data.Bind.ObjectScope, System.Rtti, System.Bindings.Outputs, FMX.Bind.Editors, + Data.Bind.EngExt, FMX.Bind.DBEngExt, FMX.Controls.Presentation, FMX.Edit, + Data.Bind.Controls, FMX.Bind.Navigator; + +type + TTabbedForm = class(TForm) + HeaderToolBar: TToolBar; + ToolBarLabel: TLabel; + TabControl1: TTabControl; + WineListTabItem: TTabItem; + EdtTabItem: TTabItem; + TabItem3: TTabItem; + TabItem4: TTabItem; + BtnWineList: TButton; + ActionList1: TActionList; + acWineList: TAction; + WineListView: TListView; + MultiView1: TMultiView; + ListBox1: TListBox; + ListBoxItem1: TListBoxItem; + DrawerBtn: TButton; + PrototypeBindSource1: TPrototypeBindSource; + BindingsList1: TBindingsList; + EdtName: TEdit; + LblName: TLabel; + LblCountry: TLabel; + EdtCountry: TEdit; + EdtRegion: TEdit; + LblRegion: TLabel; + LblYear: TLabel; + EdtYear: TEdit; + EdtGrapes: TEdit; + LblGrapes: TLabel; + LinkControlToField1: TLinkControlToField; + LinkControlToField2: TLinkControlToField; + LinkControlToField3: TLinkControlToField; + LinkControlToField4: TLinkControlToField; + LinkControlToField5: TLinkControlToField; + LinkListControlToField1: TLinkListControlToField; + ListBoxItem2: TListBoxItem; + ChangeTabActionEdtWine: TChangeTabAction; + ChangeTabActionWineList: TChangeTabAction; + ToolBar1: TToolBar; + Button1: TButton; + acSaveWine: TAction; + EdtID: TEdit; + LinkControlToField6: TLinkControlToField; + procedure FormCreate(Sender: TObject); + procedure acWineListExecute(Sender: TObject); + procedure PrototypeBindSource1CreateAdapter(Sender: TObject; + var ABindSourceAdapter: TBindSourceAdapter); + procedure WineListViewItemClick(const Sender: TObject; + const AItem: TListViewItem); + procedure ListBoxItem1Click(Sender: TObject); + procedure ListBoxItem2Click(Sender: TObject); + procedure acSaveWineExecute(Sender: TObject); + private + WineRESTService: IWineResource; + WinesAdapter: TListBindSourceAdapter; + { Private declarations } + protected + function GetWine: TWine; + public + { Public declarations } + end; + +var + TabbedForm: TTabbedForm; + +implementation + +uses Generics.Collections; + +{$R *.fmx} + +procedure TTabbedForm.acSaveWineExecute(Sender: TObject); +var + Wine: TWine; +begin + Wine := GetWine; + try + if Wine.id > 0 then + WineRESTService.UpdateWineById(Wine.id, Wine) + else + WineRESTService.SaveWine(Wine); + finally + Wine.free; + PrototypeBindSource1.Cancel; + acWineList.Execute; + ChangeTabActionWineList.ExecuteTarget(Sender); + end; +end; + +procedure TTabbedForm.acWineListExecute(Sender: TObject); +begin + WinesAdapter.SetList(WineRESTService.GetWineList); + WinesAdapter.Active := true; +end; + +procedure TTabbedForm.FormCreate(Sender: TObject); +var + RESTAdapter: TRESTAdapter; +begin + { This defines the default active tab at runtime } + TabControl1.ActiveTab := WineListTabItem; + // REST Service + RESTAdapter := TRESTAdapter.Create; + WineRESTService := RESTAdapter.Build('localhost', 3000); + PrototypeBindSource1.Active := true; +end; + +function TTabbedForm.GetWine: TWine; +var + FWines: TObjectList; +begin + Result := TWine.Create; + if not EdtID.Text.IsEmpty then + Result.id := EdtID.Text.ToInteger; + Result.name := EdtName.Text; + Result.year := EdtYear.Text; + Result.grapes := EdtGrapes.Text; + Result.country := EdtCountry.Text; + Result.region := EdtRegion.Text; + FWines := TObjectList(WinesAdapter.List); + Result.description := FWines[PrototypeBindSource1.ItemIndex].description; +end; + +procedure TTabbedForm.ListBoxItem1Click(Sender: TObject); +begin + ChangeTabActionWineList.ExecuteTarget(Sender); + MultiView1.HideMaster; +end; + +procedure TTabbedForm.ListBoxItem2Click(Sender: TObject); +begin + PrototypeBindSource1.Insert; + ChangeTabActionEdtWine.ExecuteTarget(Sender); + MultiView1.HideMaster; +end; + +procedure TTabbedForm.PrototypeBindSource1CreateAdapter(Sender: TObject; + var ABindSourceAdapter: TBindSourceAdapter); +begin + WinesAdapter := TListBindSourceAdapter.Create(PrototypeBindSource1); + ABindSourceAdapter := WinesAdapter; +end; + +procedure TTabbedForm.WineListViewItemClick(const Sender: TObject; + const AItem: TListViewItem); +begin + ChangeTabActionEdtWine.ExecuteTarget(Sender); +end; + +end. diff --git a/samples/wincellarclientRESTAdapter/ProjectGroupServerAndClient.groupproj b/samples/wincellarclientRESTAdapter/ProjectGroupServerAndClient.groupproj new file mode 100644 index 00000000..b1fd608f --- /dev/null +++ b/samples/wincellarclientRESTAdapter/ProjectGroupServerAndClient.groupproj @@ -0,0 +1,48 @@ + + + {87E6405B-4E52-4C01-A512-8293F36E951B} + + + + + + + + + + + Default.Personality.12 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/wincellarclientRESTAdapter/RESTServicesU.pas b/samples/wincellarclientRESTAdapter/RESTServicesU.pas new file mode 100644 index 00000000..d9c68f19 --- /dev/null +++ b/samples/wincellarclientRESTAdapter/RESTServicesU.pas @@ -0,0 +1,28 @@ +unit RESTServicesU; + +interface + +uses + Generics.Collections, WinesBO, MVCFramework.RESTAdapter, MVCFramework, + ObjectsMappers; + +type + + IWineResource = interface(IInvokable) + ['{068C51B2-F413-48ED-97CE-463234DB3E41}'] + + [RESTResource(HttpGet, '/wines')] + [MapperListOf(TWine)] + function GetWineList: TObjectList; + + [RESTResource(httpPOST, '/wines')] + procedure SaveWine([Body] AWine: TWine); + + [RESTResource(httpPUT, '/wines/{id}')] + procedure UpdateWineById([Param('id')] AID: integer; [Body] AWine: TWine); + + end; + +implementation + +end. diff --git a/samples/wincellarclientRESTAdapter/WineCellarClientRESTAdapter.dpr b/samples/wincellarclientRESTAdapter/WineCellarClientRESTAdapter.dpr new file mode 100644 index 00000000..bca695a6 --- /dev/null +++ b/samples/wincellarclientRESTAdapter/WineCellarClientRESTAdapter.dpr @@ -0,0 +1,18 @@ +program WineCellarClientRESTAdapter; + +uses + System.StartUpCopy, + FMX.Forms, + MainFMX in 'MainFMX.pas' {TabbedForm} , + RESTServicesU in 'RESTServicesU.pas', + WinesBO in '..\winecellar\WinesBO.pas'; + +{$R *.res} + +begin + ReportMemoryLeaksOnShutdown := true; + Application.Initialize; + Application.CreateForm(TTabbedForm, TabbedForm); + Application.Run; + +end. diff --git a/samples/wincellarclientRESTAdapter/WineCellarClientRESTAdapter.dproj b/samples/wincellarclientRESTAdapter/WineCellarClientRESTAdapter.dproj new file mode 100644 index 00000000..17106f30 --- /dev/null +++ b/samples/wincellarclientRESTAdapter/WineCellarClientRESTAdapter.dproj @@ -0,0 +1,782 @@ + + + {399F33CB-E12B-4804-BAA0-F6E31262A9E7} + 16.1 + FMX + WineCellarClientRESTAdapter.dpr + True + Debug + Win32 + 95 + Application + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + ..\..\lib\fastmm;..\..\sources;..\..\lib\LuaDelphiBinding;..\..\lib\iocpdelphiframework;..\..\lib\delphistompclient;..\..\lib\iocpdelphiframework\Base;..\..\;$(DCC_UnitSearchPath) + WineCellarClientRESTAdapter + $(BDS)\bin\default_app.manifest + System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) + $(BDS)\bin\delphi_PROJECTICON.ico + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + true + true + true + true + true + true + true + $(BDS)\bin\delphi_PROJECTICNS.icns + true + true + true + false + false + false + false + false + + + $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png + $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png + true + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png + $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png + package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=preferExternal;largeHeap=False;theme=TitleBar;hardwareAccelerated=true + Debug + + + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png + $(MSBuildProjectName) + iPhoneAndiPad + true + fmxhrh;DBXSqliteDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;bindcomp;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DataSnapProviderClient;xmlrtl;DbxCommonDriver;IndyProtocols;bindengine;bindcompdbx;CustomIPTransport;dsnap;fmxase;IndyCore;IndyIPCommon;dbexpress;IndyIPClient;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=6.0;CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);CFBundleResourceSpecification=ResourceRules.plist;UIDeviceFamily=iPhone & iPad + Debug + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png + + + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_1242x2208.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2208x1242.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_750x1334.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_87x87.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_76x76.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_60x60.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x768.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1024.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_40x40.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2048.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_40x40.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1536.png + iPhoneAndiPad + fmxhrh;bindcompfmx;DBXSqliteDriver;fmx;rtl;dbrtl;DbxClientDriver;IndySystem;bindcomp;DBXInterBaseDriver;DataSnapClient;DataSnapCommon;DataSnapProviderClient;xmlrtl;DbxCommonDriver;IndyProtocols;dbxcds;bindengine;bindcompdbx;CustomIPTransport;dsnap;fmxase;IndyCore;IndyIPCommon;dbexpress;IndyIPClient;$(DCC_UsePackage) + true + CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=6.0;CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);CFBundleResourceSpecification=ResourceRules.plist;UIDeviceFamily=iPhone & iPad + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_1536x2008.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_144x144.png + $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_72x72.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x1136.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_29x29.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_29x29.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_2048x1496.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_50x50.png + $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_100x100.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImagePortrait_768x1004.png + $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageLandscape_1024x748.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_114x114.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_57x57.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_640x960.png + $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_320x480.png + + + true + fmxhrh;FireDACSqliteDriver;FireDACDSDriver;DBXSqliteDriver;FireDACPgDriver;fmx;IndySystem;tethering;DataSnapClient;DataSnapServer;DataSnapCommon;DBXInterBaseDriver;DataSnapProviderClient;DbxCommonDriver;dbxcds;fmxFireDAC;DBXOracleDriver;dsnap;IndyIPServer;fmxase;IndyCore;CloudService;IndyIPCommon;FireDACIBDriver;DataSnapFireDAC;FireDACDBXDriver;soapserver;dsnapxml;FireDACInfxDriver;FireDACASADriver;bindcompfmx;FireDACODBCDriver;RESTBackendComponents;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;xmlrtl;DataSnapNativeClient;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;bindcompdbx;bindengine;soaprtl;FireDAC;DBXInformixDriver;FireDACMSSQLDriver;DataSnapServerMidas;DBXFirebirdDriver;inet;fmxobj;FireDACMySQLDriver;soapmidas;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;RESTComponents;DataSnapIndy10ServerTransport;dbexpress;IndyIPClient;$(DCC_UsePackage) + CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities + + + 1033 + true + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + + + 1033 + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) + fmxhrh;FireDACSqliteDriver;FireDACDSDriver;DBXSqliteDriver;FireDACPgDriver;fmx;IndySystem;TeeDB;tethering;vclib;DataSnapClient;DataSnapServer;DataSnapCommon;DBXInterBaseDriver;DataSnapProviderClient;DBXSybaseASEDriver;DbxCommonDriver;vclimg;dbxcds;DatasnapConnectorsFreePascal;MetropolisUILiveTile;vcldb;vcldsnap;fmxFireDAC;DBXDb2Driver;DBXOracleDriver;vclribbon;dsnap;IndyIPServer;fmxase;vcl;IndyCore;CloudService;DBXMSSQLDriver;IndyIPCommon;FireDACIBDriver;DataSnapFireDAC;FireDACDBXDriver;soapserver;dsnapxml;FireDACInfxDriver;FireDACDb2Driver;adortl;FireDACASADriver;bindcompfmx;FireDACODBCDriver;RESTBackendComponents;rtl;dbrtl;DbxClientDriver;FireDACCommon;bindcomp;Tee;DBXOdbcDriver;vclFireDAC;xmlrtl;DataSnapNativeClient;ibxpress;IndyProtocols;DBXMySQLDriver;FireDACCommonDriver;bindcompdbx;bindengine;vclactnband;soaprtl;TeeUI;bindcompvcl;vclie;FireDACADSDriver;vcltouch;VCLRESTComponents;FireDAC;DBXInformixDriver;FireDACMSSQLDriver;Intraweb;VclSmp;DataSnapConnectors;DataSnapServerMidas;DBXFirebirdDriver;dsnapcon;inet;fmxobj;FireDACMySQLDriver;soapmidas;vclx;DBXSybaseASADriver;FireDACOracleDriver;fmxdae;RESTComponents;FireDACMSAccDriver;DataSnapIndy10ServerTransport;dbexpress;IndyIPClient;$(DCC_UsePackage) + CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= + true + + + DEBUG;$(DCC_Define) + true + false + true + true + true + + + iPhoneAndiPad + $(MSBuildProjectName) + true + CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=6.0;CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);CFBundleResourceSpecification=ResourceRules.plist;UIDeviceFamily=iPhone & iPad + + + CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=6.0;CFBundleVersion=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);CFBundleResourceSpecification=ResourceRules.plist;UIDeviceFamily=iPhone & iPad + true + + + 1033 + true + + + false + RELEASE;$(DCC_Define) + 0 + false + + + + MainSource + + + iPhone +
TabbedForm
+ fmx +
+ + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + +
+ + Delphi.Personality.12 + + + + + False + False + 1 + 0 + 0 + 0 + False + False + False + False + False + 1033 + 1252 + + + + + 1.0.0.0 + + + + + + 1.0.0.0 + + + + + + + + + + + + WineCellarClientRESTAdapter.dpr + + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + + + + + + splash_image.png + true + + + + + splash_image.png + true + + + + + libWineCellarClientRESTAdapter.so + true + + + + + libWineCellarClientRESTAdapter.so + true + + + + + ic_launcher.png + true + + + + + ic_launcher.png + true + + + + + WineCellarClientRESTAdapter.exe + true + + + + + libWineCellarClientRESTAdapter.so + true + + + + + true + + + + + true + + + + + true + + + + + true + + + true + + + + + splash_image.png + true + + + + + classes.dex + true + + + + + true + + + + + ic_launcher.png + true + + + + + WineCellarClientRESTAdapter.rsm + true + + + + + ic_launcher.png + true + + + + + libWineCellarClientRESTAdapter.so + true + + + + + ic_launcher.png + true + + + + + splash_image.png + true + + + + + 1 + .dylib + + + 0 + .bpl + + + Contents\MacOS + 1 + .dylib + + + 1 + .dylib + + + + + 1 + .dylib + + + 0 + .dll;.bpl + + + Contents\MacOS + 1 + .dylib + + + 1 + .dylib + + + + + 1 + + + 1 + + + + + Contents + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + res\drawable-normal + 1 + + + + + library\lib\x86 + 1 + + + + + 1 + + + 1 + + + + + ../ + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + 1 + + + 1 + + + + + res\drawable-xlarge + 1 + + + + + res\drawable-xhdpi + 1 + + + + + 1 + + + 1 + + + + + res\drawable-xxhdpi + 1 + + + + + library\lib\mips + 1 + + + + + res\drawable + 1 + + + + + Contents\MacOS + 1 + + + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + res\drawable-small + 1 + + + + + ../ + 1 + + + + + Contents\MacOS + 1 + + + 1 + + + Contents\MacOS + 0 + + + + + classes + 1 + + + + + 1 + + + 1 + + + + + 1 + + + 1 + + + + + res\drawable + 1 + + + + + Contents\Resources + 1 + + + + + 1 + + + + + 1 + + + 1 + + + + + 1 + + + library\lib\armeabi-v7a + 1 + + + 0 + + + Contents\MacOS + 1 + + + 1 + + + + + library\lib\armeabi + 1 + + + + + res\drawable-large + 1 + + + + + 0 + + + 0 + + + 0 + + + Contents\MacOS + 0 + + + 0 + + + + + 1 + + + 1 + + + + + res\drawable-ldpi + 1 + + + + + res\values + 1 + + + + + 1 + + + 1 + + + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + + + 1 + + + + + + + + + + + True + True + True + True + True + True + + + 12 + + + + +