├── .basset.yml
├── .gitignore
├── .swiftlint.yml
├── APPDESIGN.md
├── Brewer.xcodeproj
├── project.pbxproj
├── project.xcworkspace
│ └── contents.xcworkspacedata
└── xcshareddata
│ └── xcschemes
│ ├── Brewer AppStore.xcscheme
│ ├── Brewer DE.xcscheme
│ ├── Brewer EN.xcscheme
│ ├── Brewer ES.xcscheme
│ ├── Brewer PL.xcscheme
│ ├── Brewer TestFlight.xcscheme
│ ├── Specs.xcscheme
│ └── UITests.xcscheme
├── Brewer.xcworkspace
├── contents.xcworkspacedata
└── xcshareddata
│ └── Brewer.xcscmblueprint
├── Brewer
├── Brewer-Bridging-Header.h
├── Classes
│ ├── AppDelegate+Utilities.swift
│ ├── AppDelegate.swift
│ ├── BrewDetails
│ │ ├── BrewDetailsAssembly.swift
│ │ ├── View
│ │ │ ├── BrewAttributeCell.swift
│ │ │ ├── BrewDetails.storyboard
│ │ │ ├── BrewDetailsRemoveCell.swift
│ │ │ ├── BrewDetailsViewController.swift
│ │ │ ├── BrewNotesCell.swift
│ │ │ └── FinalScoreCell.swift
│ │ └── ViewModel
│ │ │ └── BrewDetailsViewModel.swift
│ ├── BrewScoreDetails
│ │ ├── BrewScoreDetailsAssembly.swift
│ │ ├── View
│ │ │ ├── BrewScoreDetailCell.swift
│ │ │ ├── BrewScoreDetails.storyboard
│ │ │ ├── BrewScoreDetailsHeaderView.swift
│ │ │ └── BrewScoreDetailsViewController.swift
│ │ └── ViewModel
│ │ │ └── BrewScoreDetailsViewModel.swift
│ ├── Brewings
│ │ ├── BrewingsAssembly.swift
│ │ ├── Model
│ │ │ ├── BrewingSortingOption+SortDescriptor.swift
│ │ │ └── BrewingsModelController.swift
│ │ ├── Types
│ │ │ ├── BrewAttributeType.swift
│ │ │ ├── BrewMethod.swift
│ │ │ ├── CuppingAttribute.swift
│ │ │ └── GrindSize.swift
│ │ ├── View
│ │ │ ├── BrewCell.swift
│ │ │ ├── BrewCellScoreView.swift
│ │ │ ├── Brewings.storyboard
│ │ │ └── BrewingsViewController.swift
│ │ └── ViewModel
│ │ │ ├── BrewCellViewModel.swift
│ │ │ └── BrewsViewModel.swift
│ ├── BrewingsSorting
│ │ ├── BrewingsSortingAssembly.swift
│ │ ├── Model
│ │ │ └── BrewingSortingOption.swift
│ │ ├── View
│ │ │ ├── BrewingsSorting.storyboard
│ │ │ ├── BrewingsSortingOptionCell.swift
│ │ │ └── BrewingsSortingViewController.swift
│ │ └── ViewModel
│ │ │ └── BrewingsSortingViewModel.swift
│ ├── MethodPicker
│ │ ├── View
│ │ │ ├── MethodPicker.storyboard
│ │ │ ├── MethodPickerCell.swift
│ │ │ └── MethodPickerViewController.swift
│ │ └── ViewModel
│ │ │ └── MethodPickerViewModel.swift
│ ├── NewBrew
│ │ ├── Coffee
│ │ │ └── Model
│ │ │ │ └── CoffeeSelectableSearchModelController.swift
│ │ ├── CoffeeMachine
│ │ │ └── Model
│ │ │ │ └── CoffeeMachineSelectableSearchModelController.swift
│ │ ├── Common
│ │ │ ├── NumericalInput
│ │ │ │ ├── View
│ │ │ │ │ ├── NumericalInput.storyboard
│ │ │ │ │ ├── NumericalInputTextField.swift
│ │ │ │ │ └── NumericalInputViewController.swift
│ │ │ │ └── ViewModel
│ │ │ │ │ ├── NumericalInputTransformer.swift
│ │ │ │ │ └── NumericalInputViewModel.swift
│ │ │ └── SelectableSearch
│ │ │ │ ├── Model
│ │ │ │ └── SelectableSearchModelController.swift
│ │ │ │ ├── SelectableSearchIdentifier.swift
│ │ │ │ ├── View
│ │ │ │ ├── SelectableSearch.storyboard
│ │ │ │ └── SelectableSearchViewController.swift
│ │ │ │ └── ViewModel
│ │ │ │ └── SelectableSearchViewModel.swift
│ │ ├── General
│ │ │ ├── Model
│ │ │ │ └── BrewModelController.swift
│ │ │ ├── View
│ │ │ │ ├── NewBrew.storyboard
│ │ │ │ ├── NewBrewCollectionViewCell.swift
│ │ │ │ ├── NewBrewNavigationBar.swift
│ │ │ │ ├── NewBrewProgressView.swift
│ │ │ │ ├── NewBrewUnwindSegue.swift
│ │ │ │ └── NewBrewViewController.swift
│ │ │ └── ViewModel
│ │ │ │ ├── NewBrewDataSource.swift
│ │ │ │ └── NewBrewViewModel.swift
│ │ ├── GrindSize
│ │ │ ├── View
│ │ │ │ ├── GrindSize.storyboard
│ │ │ │ ├── GrindSizeSliderContainerView.swift
│ │ │ │ └── GrindSizeViewController.swift
│ │ │ └── ViewModel
│ │ │ │ └── GrindSizeViewModel.swift
│ │ ├── NewBrewAssembly.swift
│ │ ├── Notes
│ │ │ ├── View
│ │ │ │ ├── Notes.storyboard
│ │ │ │ └── NotesViewController.swift
│ │ │ └── ViewModel
│ │ │ │ └── NotesViewModel.swift
│ │ ├── PreInfusionTime
│ │ │ └── ViewModel
│ │ │ │ └── PreInfusionTimeInputViewModel.swift
│ │ ├── Tamping
│ │ │ ├── View
│ │ │ │ ├── Tamping.storyboard
│ │ │ │ ├── TampingView.swift
│ │ │ │ └── TampingViewController.swift
│ │ │ └── ViewModel
│ │ │ │ └── TampingViewModel.swift
│ │ ├── Temperature
│ │ │ └── ViewModel
│ │ │ │ └── TemperatureInputViewModel.swift
│ │ ├── Time
│ │ │ └── ViewModel
│ │ │ │ └── TimeInputViewModel.swift
│ │ ├── Water
│ │ │ └── ViewModel
│ │ │ │ └── WaterInputViewModel.swift
│ │ └── Weight
│ │ │ └── ViewModel
│ │ │ └── WeightInputViewModel.swift
│ ├── Settings
│ │ ├── About
│ │ │ └── View
│ │ │ │ ├── AboutViewController.swift
│ │ │ │ ├── AboutViewPhotoCell.swift
│ │ │ │ └── AboutViewThanksCell.swift
│ │ ├── General
│ │ │ ├── Model
│ │ │ │ └── KeyValueStoreType.swift
│ │ │ ├── View
│ │ │ │ ├── Settings.storyboard
│ │ │ │ ├── SettingsCell.swift
│ │ │ │ └── SettingsViewController.swift
│ │ │ └── ViewModel
│ │ │ │ └── SettingsViewModel.swift
│ │ ├── Sequence
│ │ │ ├── Model
│ │ │ │ ├── BrewAttributeType+DefaultSequenceSettings.swift
│ │ │ │ └── SequenceSettingsModelController.swift
│ │ │ ├── View
│ │ │ │ ├── SequenceSettings.storyboard
│ │ │ │ ├── SequenceSettingsCell.swift
│ │ │ │ └── SequenceSettingsViewController.swift
│ │ │ └── ViewModel
│ │ │ │ └── SequenceSettingsViewModel.swift
│ │ ├── SettingsAssembly.swift
│ │ └── Units
│ │ │ ├── Model
│ │ │ ├── UnitCategory+DefaultSettings.swift
│ │ │ └── UnitsModelController.swift
│ │ │ ├── UnitTypes.swift
│ │ │ ├── View
│ │ │ ├── Units.storyboard
│ │ │ └── UnitsViewController.swift
│ │ │ └── ViewModel
│ │ │ ├── Temperature
│ │ │ └── TemperatureUnitsDataSource.swift
│ │ │ ├── UnitsDataSourceType.swift
│ │ │ ├── UnitsDataSourcesFactory.swift
│ │ │ ├── UnitsViewModel.swift
│ │ │ ├── Water
│ │ │ └── WaterUnitsDataSource.swift
│ │ │ └── Weight
│ │ │ └── WeightUnitsDataSource.swift
│ └── Shared
│ │ ├── Analytics
│ │ ├── Analytics.swift
│ │ └── AppScreen.swift
│ │ ├── CoreComponents.swift
│ │ ├── Model
│ │ ├── Entities
│ │ │ ├── Brew.swift
│ │ │ ├── BrewAttribute.swift
│ │ │ ├── Coffee.swift
│ │ │ ├── CoffeeMachine.swift
│ │ │ ├── Cupping.swift
│ │ │ └── Machine
│ │ │ │ ├── Brew+CoreDataProperties.swift
│ │ │ │ ├── BrewAttribute+CoreDataProperties.swift
│ │ │ │ ├── Coffee+CoreDataProperties.swift
│ │ │ │ ├── CoffeeMachine+CoreDataProperties.swift
│ │ │ │ └── Cupping+CoreDataProperties.swift
│ │ └── Stack
│ │ │ ├── CoreDataExtensions.swift
│ │ │ └── CoreDataStack.swift
│ │ ├── ResolvableContainer.swift
│ │ ├── Seque
│ │ ├── SegueHandler.swift
│ │ └── SegueIdentifier.swift
│ │ ├── SpotlightSearch
│ │ └── SpotlightSearchService.swift
│ │ ├── Themes
│ │ ├── MainThemeConfiguration.swift
│ │ ├── ThemeConfigurable+UILabel.swift
│ │ ├── ThemeConfigurable+UISearchBar.swift
│ │ ├── ThemeConfigurable+UISegmentedControl.swift
│ │ ├── ThemeConfigurable+UISlider.swift
│ │ ├── ThemeConfigurable+UITextField.swift
│ │ ├── ThemeConfigurable+UITextView.swift
│ │ └── ThemeConfiguration.swift
│ │ └── Utilities
│ │ ├── Assets.swift
│ │ ├── FetchedResultsControllerDelegateHandler
│ │ └── TableViewFetchedResultsControllerDynamicChangesHandler.swift
│ │ ├── FoundationUtilities.swift
│ │ ├── Functions.swift
│ │ ├── KeyboardManager.swift
│ │ ├── Localizable.swift
│ │ ├── SwinjectUtilities.swift
│ │ ├── UI
│ │ ├── ActivableProtocol.swift
│ │ ├── Highlightable.swift
│ │ ├── InformativeLabel.swift
│ │ ├── List.swift
│ │ ├── PresentableProtocols.swift
│ │ ├── RootViewController.swift
│ │ ├── ScrollViewPageMetrics.swift
│ │ ├── TabBarConfigurable.swift
│ │ ├── ThemeConfigurable+UIViewController.swift
│ │ ├── UIKitUtilities.swift
│ │ └── UIViewController+Extensions.swift
│ │ └── UIColor+Custom.swift
├── Dropnote.entitlements
├── GoogleService-Info.plist
├── Info.plist
└── Resources
│ ├── AppIcon60x60.png
│ ├── Assets.xcassets
│ ├── AppIcon.appiconset
│ │ ├── Contents.json
│ │ ├── DropnoteIcon-120.png
│ │ ├── DropnoteIcon-152.png
│ │ ├── DropnoteIcon-167.png
│ │ ├── DropnoteIcon-180.png
│ │ └── DropnoteIcon-76.png
│ ├── Contents.json
│ ├── IconDropnote.imageset
│ │ ├── Contents.json
│ │ ├── IconDropnote@2x.png
│ │ └── IconDropnote@3x.png
│ ├── Team.imageset
│ │ ├── Contents.json
│ │ └── Team@2x.png
│ ├── ic_add.imageset
│ │ ├── Contents.json
│ │ ├── ic_add.png
│ │ ├── ic_add@2x.png
│ │ └── ic_add@3x.png
│ ├── ic_aeropress.imageset
│ │ ├── Contents.json
│ │ ├── ic_aeropress.png
│ │ ├── ic_aeropress@2x.png
│ │ └── ic_aeropress@3x.png
│ ├── ic_aeropress_quick.imageset
│ │ ├── Contents.json
│ │ └── ic_aeropress_quick.png
│ ├── ic_arrow.imageset
│ │ ├── Contents.json
│ │ ├── ic_arrow.png
│ │ ├── ic_arrow@2x.png
│ │ └── ic_arrow@3x.png
│ ├── ic_back.imageset
│ │ ├── Contents.json
│ │ ├── ic_back.png
│ │ ├── ic_back@2x.png
│ │ └── ic_back@3x.png
│ ├── ic_best.imageset
│ │ ├── Contents.json
│ │ ├── ic_best.png
│ │ ├── ic_best@2x.png
│ │ └── ic_best@3x.png
│ ├── ic_chemex.imageset
│ │ ├── Contents.json
│ │ ├── ic_chemex.png
│ │ ├── ic_chemex@2x.png
│ │ └── ic_chemex@3x.png
│ ├── ic_chemex_bw.imageset
│ │ ├── Contents.json
│ │ ├── ic_chemex_bw.png
│ │ ├── ic_chemex_bw@2x.png
│ │ └── ic_chemex_bw@3x.png
│ ├── ic_close.imageset
│ │ ├── Contents.json
│ │ ├── ic_close.png
│ │ ├── ic_close@2x.png
│ │ └── ic_close@3x.png
│ ├── ic_coffee.imageset
│ │ ├── Contents.json
│ │ ├── ic_coffee.png
│ │ ├── ic_coffee@2x.png
│ │ └── ic_coffee@3x.png
│ ├── ic_coffee_machine.imageset
│ │ ├── Contents.json
│ │ ├── ic_coffee_machine.png
│ │ ├── ic_coffee_machine@2x.png
│ │ └── ic_coffee_machine@3x.png
│ ├── ic_coffee_machine_bw.imageset
│ │ ├── Contents.json
│ │ ├── ic_coffee_machine_bw.png
│ │ ├── ic_coffee_machine_bw@2x.png
│ │ └── ic_coffee_machine_bw@3x.png
│ ├── ic_done.imageset
│ │ ├── Contents.json
│ │ ├── ic_done.png
│ │ ├── ic_done@2x.png
│ │ └── ic_done@3x.png
│ ├── ic_drip.imageset
│ │ ├── Contents.json
│ │ ├── ic_drip.png
│ │ ├── ic_drip@2x.png
│ │ └── ic_drip@3x.png
│ ├── ic_drip_bw.imageset
│ │ ├── Contents.json
│ │ ├── ic_drip_bw.png
│ │ ├── ic_drip_bw@2x.png
│ │ └── ic_drip_bw@3x.png
│ ├── ic_empty_history.imageset
│ │ ├── Contents.json
│ │ ├── ic_empty_history.png
│ │ ├── ic_empty_history@2x.png
│ │ └── ic_empty_history@3x.png
│ ├── ic_grind.imageset
│ │ ├── Contents.json
│ │ ├── ic_grind.png
│ │ ├── ic_grind@2x.png
│ │ └── ic_grind@3x.png
│ ├── ic_inverted.imageset
│ │ ├── Contents.json
│ │ ├── ic_inverted.png
│ │ ├── ic_inverted@2x.png
│ │ └── ic_inverted@3x.png
│ ├── ic_inverted_bw.imageset
│ │ ├── Contents.json
│ │ ├── ic_inverted_bw.png
│ │ ├── ic_inverted_bw@2x.png
│ │ └── ic_inverted_bw@3x.png
│ ├── ic_kalita.imageset
│ │ ├── Contents.json
│ │ ├── ic_kalita.png
│ │ ├── ic_kalita@2x.png
│ │ └── ic_kalita@3x.png
│ ├── ic_kone.imageset
│ │ ├── Contents.json
│ │ ├── ic_kone.png
│ │ ├── ic_kone@2x.png
│ │ └── ic_kone@3x.png
│ ├── ic_machine.imageset
│ │ ├── Contents.json
│ │ ├── ic_machine.png
│ │ ├── ic_machine@2x.png
│ │ └── ic_machine@3x.png
│ ├── ic_newest.imageset
│ │ ├── Contents.json
│ │ ├── ic_newest.png
│ │ ├── ic_newest@2x.png
│ │ └── ic_newest@3x.png
│ ├── ic_next.imageset
│ │ ├── Contents.json
│ │ ├── ic_next.png
│ │ ├── ic_next@2x.png
│ │ └── ic_next@3x.png
│ ├── ic_notes.imageset
│ │ ├── Contents.json
│ │ ├── ic_notes.png
│ │ ├── ic_notes@2x.png
│ │ └── ic_notes@3x.png
│ ├── ic_oldest.imageset
│ │ ├── Contents.json
│ │ ├── ic_oldest.png
│ │ ├── ic_oldest@2x.png
│ │ └── ic_oldest@3x.png
│ ├── ic_previous.imageset
│ │ ├── Contents.json
│ │ ├── ic_previous.png
│ │ ├── ic_previous@2x.png
│ │ └── ic_previous@3x.png
│ ├── ic_tab_history.imageset
│ │ ├── Contents.json
│ │ ├── ic_tab_history.png
│ │ ├── ic_tab_history@2x.png
│ │ └── ic_tab_history@3x.png
│ ├── ic_tab_history_pressed.imageset
│ │ ├── Contents.json
│ │ ├── ic_tab_history_pressed.png
│ │ ├── ic_tab_history_pressed@2x.png
│ │ └── ic_tab_history_pressed@3x.png
│ ├── ic_tab_settings.imageset
│ │ ├── Contents.json
│ │ ├── ic_tab_settings.png
│ │ ├── ic_tab_settings@2x.png
│ │ └── ic_tab_settings@3x.png
│ ├── ic_tab_settings_pressed.imageset
│ │ ├── Contents.json
│ │ ├── ic_tab_settings_pressed.png
│ │ ├── ic_tab_settings_pressed@2x.png
│ │ └── ic_tab_settings_pressed@3x.png
│ ├── ic_tab_start.imageset
│ │ ├── Contents.json
│ │ ├── ic_tab_start.png
│ │ ├── ic_tab_start@2x.png
│ │ └── ic_tab_start@3x.png
│ ├── ic_tab_start_pressed.imageset
│ │ ├── Contents.json
│ │ ├── ic_tab_start_pressed.png
│ │ ├── ic_tab_start_pressed@2x.png
│ │ └── ic_tab_start_pressed@3x.png
│ ├── ic_tamp.imageset
│ │ ├── Contents.json
│ │ ├── ic_tamp.png
│ │ ├── ic_tamp@2x.png
│ │ └── ic_tamp@3x.png
│ ├── ic_temp.imageset
│ │ ├── Contents.json
│ │ ├── ic_temp.png
│ │ ├── ic_temp@2x.png
│ │ └── ic_temp@3x.png
│ ├── ic_time.imageset
│ │ ├── Contents.json
│ │ ├── ic_time.png
│ │ ├── ic_time@2x.png
│ │ └── ic_time@3x.png
│ ├── ic_water.imageset
│ │ ├── Contents.json
│ │ ├── ic_water.png
│ │ ├── ic_water@2x.png
│ │ └── ic_water@3x.png
│ ├── ic_weight.imageset
│ │ ├── Contents.json
│ │ ├── ic_weight.png
│ │ ├── ic_weight@2x.png
│ │ └── ic_weight@3x.png
│ └── ic_worst.imageset
│ │ ├── Contents.json
│ │ ├── ic_worst.png
│ │ ├── ic_worst@2x.png
│ │ └── ic_worst@3x.png
│ ├── Brewer.xcdatamodel
│ └── contents
│ ├── Launch.storyboard
│ ├── Main.storyboard
│ ├── de.lproj
│ └── Localizable.strings
│ ├── en.lproj
│ └── Localizable.strings
│ ├── es.lproj
│ └── Localizable.strings
│ ├── fr.lproj
│ └── Localizable.strings
│ └── pl.lproj
│ └── Localizable.strings
├── BrewerTests
└── Info.plist
├── BrewerUITests
├── BrewerUITests.swift
└── Info.plist
├── CHANGELOG.md
├── External
└── Box
│ ├── Box.swift
│ ├── BoxType.swift
│ └── MutableBox.swift
├── GeneratedAssets
├── .basset_temp
├── ic_add.png
├── ic_add@2x.png
├── ic_add@3x.png
├── ic_aeropress.png
├── ic_aeropress@2x.png
├── ic_aeropress@3x.png
├── ic_arrow.png
├── ic_arrow@2x.png
├── ic_arrow@3x.png
├── ic_back.png
├── ic_back@2x.png
├── ic_back@3x.png
├── ic_best.png
├── ic_best@2x.png
├── ic_best@3x.png
├── ic_chemex.png
├── ic_chemex@2x.png
├── ic_chemex@3x.png
├── ic_close.png
├── ic_close@2x.png
├── ic_close@3x.png
├── ic_coffee.png
├── ic_coffee@2x.png
├── ic_coffee@3x.png
├── ic_coffee_machine.png
├── ic_coffee_machine@2x.png
├── ic_coffee_machine@3x.png
├── ic_done.png
├── ic_done@2x.png
├── ic_done@3x.png
├── ic_drip.png
├── ic_drip@2x.png
├── ic_drip@3x.png
├── ic_empty_history.png
├── ic_empty_history@2x.png
├── ic_empty_history@3x.png
├── ic_filter.png
├── ic_filter@2x.png
├── ic_filter@3x.png
├── ic_grind.png
├── ic_grind@2x.png
├── ic_grind@3x.png
├── ic_inverted.png
├── ic_inverted@2x.png
├── ic_inverted@3x.png
├── ic_machine.png
├── ic_machine@2x.png
├── ic_machine@3x.png
├── ic_newest.png
├── ic_newest@2x.png
├── ic_newest@3x.png
├── ic_next.png
├── ic_next@2x.png
├── ic_next@3x.png
├── ic_notes.png
├── ic_notes@2x.png
├── ic_notes@3x.png
├── ic_oldest.png
├── ic_oldest@2x.png
├── ic_oldest@3x.png
├── ic_previous.png
├── ic_previous@2x.png
├── ic_previous@3x.png
├── ic_tab_history.png
├── ic_tab_history@2x.png
├── ic_tab_history@3x.png
├── ic_tab_history_pressed.png
├── ic_tab_history_pressed@2x.png
├── ic_tab_history_pressed@3x.png
├── ic_tab_settings.png
├── ic_tab_settings@2x.png
├── ic_tab_settings@3x.png
├── ic_tab_settings_pressed.png
├── ic_tab_settings_pressed@2x.png
├── ic_tab_settings_pressed@3x.png
├── ic_tab_start.png
├── ic_tab_start@2x.png
├── ic_tab_start@3x.png
├── ic_tab_start_pressed.png
├── ic_tab_start_pressed@2x.png
├── ic_tab_start_pressed@3x.png
├── ic_tamp.png
├── ic_tamp@2x.png
├── ic_tamp@3x.png
├── ic_temp.png
├── ic_temp@2x.png
├── ic_temp@3x.png
├── ic_time.png
├── ic_time@2x.png
├── ic_time@3x.png
├── ic_water.png
├── ic_water@2x.png
├── ic_water@3x.png
├── ic_weight.png
├── ic_weight@2x.png
├── ic_weight@3x.png
├── ic_worst.png
├── ic_worst@2x.png
└── ic_worst@3x.png
├── Podfile
├── Podfile.lock
├── README.md
├── VectorAssets
├── ic_add.svg
├── ic_aeropress.svg
├── ic_arrow.svg
├── ic_back.svg
├── ic_best.svg
├── ic_chemex.svg
├── ic_close.svg
├── ic_coffee.svg
├── ic_coffee_machine.svg
├── ic_done.svg
├── ic_drip.svg
├── ic_empty_history.svg
├── ic_filter.svg
├── ic_grind.svg
├── ic_inverted.svg
├── ic_machine.svg
├── ic_newest.svg
├── ic_next.svg
├── ic_notes.svg
├── ic_oldest.svg
├── ic_previous.svg
├── ic_tab_history.svg
├── ic_tab_history_pressed.svg
├── ic_tab_settings.svg
├── ic_tab_settings_pressed.svg
├── ic_tab_start.svg
├── ic_tab_start_pressed.svg
├── ic_tamp.svg
├── ic_temp.svg
├── ic_time.svg
├── ic_water.svg
├── ic_weight.svg
└── ic_worst.svg
├── fastlane
├── Appfile
├── Deliverfile
├── Fastfile
├── README.md
├── Snapfile
└── SnapshotHelper.swift
├── swiftgen-images
└── swiftgen-strings
/.basset.yml:
--------------------------------------------------------------------------------
1 | # Default xcasset dir
2 | xcassets_dir: Assets.xcassets
3 |
4 | # Where vector images are kept
5 | raw_assets: VectorAssets
6 |
7 | # Where generated PNG(s) will be kept
8 | generated_assets_dir: GeneratedAssets
9 |
10 | # Should generated PNG(s) be merged to xcassets folder
11 | merge_with_xcassets: True
12 |
13 | # Should convert all assets every time
14 | force_convert: False
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Xcode
2 | #
3 | screenshots
4 | fastlane/metadata
5 | *.xml
6 | *.html
7 | Matchfile
8 | build/
9 | *.pbxuser
10 | !default.pbxuser
11 | *.mode1v3
12 | !default.mode1v3
13 | *.mode2v3
14 | !default.mode2v3
15 | *.perspectivev3
16 | !default.perspectivev3
17 | xcuserdata
18 | *.xccheckout
19 | *.moved-aside
20 | DerivedData
21 | *.hmap
22 | *.ipa
23 | *.xcuserstate
24 |
25 | # CocoaPods
26 | #
27 | # We recommend against adding the Pods directory to your .gitignore. However
28 | # you should judge for yourself, the pros and cons are mentioned at:
29 | # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control
30 | #
31 | Pods/
32 |
33 | # Carthage
34 | #
35 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
36 | # Carthage/Checkouts
37 |
38 | Carthage/Build
39 |
--------------------------------------------------------------------------------
/.swiftlint.yml:
--------------------------------------------------------------------------------
1 | disabled_rules: # rule identifiers to exclude from running
2 | - comma
3 | - control_statement
4 | - trailing_whitespace
5 | - force_cast
6 | - statement_position
7 | - closure_parameter_position
8 | - vertical_parameter_alignment
9 | opt_in_rules: # some rules are only opt-in
10 | - empty_count
11 | # Find all the available rules by running:
12 | # swiftlint rules
13 | included: # paths to include during linting. `--path` is ignored if present.
14 | - Brewer
15 | excluded: # paths to ignore during linting. Takes precedence over `included`.
16 | - Carthage
17 | - Pods
18 |
19 | # configurable rules can be customized from this configuration file
20 | # binary rules can set their severity level
21 | force_cast: warning # implicitly
22 | force_try:
23 | severity: warning # explicitly
24 | # rules that have both warning and error levels, can set just the warning level
25 | # implicitly
26 | line_length: 158
27 | # they can set both implicitly with an array
28 | type_body_length:
29 | - 300 # warning
30 | - 400 # error
31 | # or they can set both explicitly
32 | file_length:
33 | warning: 400
34 | error: 600
35 | # naming rules can set warnings/errors for min_length and max_length
36 | # additionally they can set excluded names
37 | type_name:
38 | min_length: 3 # only warning
39 | max_length: # warning and error
40 | warning: 45
41 | error: 55
42 | variable_name:
43 | min_length: # only min_length
44 | warning: 3 # only error
45 | reporter: "xcode" # reporter type (xcode, json, csv, checkstyle)
46 |
--------------------------------------------------------------------------------
/Brewer.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/Brewer.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Brewer.xcworkspace/xcshareddata/Brewer.xcscmblueprint:
--------------------------------------------------------------------------------
1 | {
2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "C0FEE9A187F8749FF723658958B648253672B2CB",
3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
4 |
5 | },
6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
7 | "C0FEE9A187F8749FF723658958B648253672B2CB" : 9223372036854775807,
8 | "57C931977B7D2307CC013C2BD93F90CF7C676790" : 9223372036854775807
9 | },
10 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "E8BB8FCA-57CB-4D5F-9505-DD9438E18700",
11 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
12 | "C0FEE9A187F8749FF723658958B648253672B2CB" : "dropnote-official\/",
13 | "57C931977B7D2307CC013C2BD93F90CF7C676790" : "dropnote-official\/External\/Box\/"
14 | },
15 | "DVTSourceControlWorkspaceBlueprintNameKey" : "Brewer",
16 | "DVTSourceControlWorkspaceBlueprintVersion" : 204,
17 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "Brewer.xcworkspace",
18 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
19 | {
20 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/robrix\/Box.git",
21 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
22 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "57C931977B7D2307CC013C2BD93F90CF7C676790"
23 | },
24 | {
25 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:Dropnote\/Dropnote-iOS.git",
26 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
27 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "C0FEE9A187F8749FF723658958B648253672B2CB"
28 | }
29 | ]
30 | }
--------------------------------------------------------------------------------
/Brewer/Brewer-Bridging-Header.h:
--------------------------------------------------------------------------------
1 | #import
--------------------------------------------------------------------------------
/Brewer/Classes/BrewDetails/BrewDetailsAssembly.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewDetailsAssembly.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 28.04.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Swinject
11 |
12 | final class BrewDetailsAssembly: AssemblyType {
13 | func assemble(container: Container) {
14 |
15 | container.registerForStoryboard(BrewDetailsViewController.self) {
16 | r, c in
17 | c.themeConfiguration = r.resolve(ThemeConfiguration.self)
18 | c.resolver = r
19 | }
20 |
21 | container.register(BrewDetailsViewModelType.self) {
22 | (r, brew: Brew) in
23 | BrewDetailsViewModel(brewModelController: r.resolve(BrewModelControllerType.self, argument: brew)!,
24 | spotlightSearchService: r.resolve(SpotlightSearchService.self)!)
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewDetails/View/BrewAttributeCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewAttributeCell.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 09.04.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class BrewAttributeCell: UITableViewCell, Highlightable {
13 | @IBOutlet weak var titleLabel: UILabel!
14 | @IBOutlet weak var valueLabel: UILabel!
15 |
16 | var normalColor: UIColor?
17 | var highlightColor: UIColor?
18 |
19 | override var isHighlighted: Bool {
20 | didSet {
21 | highlightViews([self, titleLabel, valueLabel], highlighted: isHighlighted)
22 | }
23 | }
24 | }
25 |
26 | extension BrewAttributeCell: PresentableConfigurable {
27 |
28 | func configureWithPresentable(_ presentable: TitleValuePresentable) {
29 | accessibilityHint = "Represents \(presentable.title) attribute with value \(presentable.value)"
30 | titleLabel.text = presentable.title
31 | valueLabel.text = presentable.value
32 | }
33 | }
34 |
35 | extension BrewAttributeCell {
36 |
37 | func configureWithTheme(_ theme: ThemeConfiguration?) {
38 | super.configureWithTheme(theme)
39 | [titleLabel, valueLabel].forEach {
40 | $0!.configureWithTheme(theme)
41 | }
42 | normalColor = theme?.lightColor
43 | highlightColor = highlightColorForTheme(theme)
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewDetails/View/BrewDetailsRemoveCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewDetailsRemoveCell.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 18.06.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class BrewDetailsRemoveCell: UITableViewCell, Highlightable {
13 | var normalColor: UIColor?
14 | var highlightColor: UIColor?
15 |
16 | override var isHighlighted: Bool {
17 | didSet {
18 | highlightViews([self], highlighted: isHighlighted)
19 | }
20 | }
21 | }
22 |
23 | extension BrewDetailsRemoveCell {
24 |
25 | func configureWithPresentable(_ presentable: TitleValuePresentable) {
26 | accessibilityHint = "Removes current brew from history"
27 | textLabel?.text = presentable.title
28 | }
29 | }
30 |
31 | extension BrewDetailsRemoveCell {
32 |
33 | func configureWithTheme(_ theme: ThemeConfiguration?) {
34 | super.configureWithTheme(theme)
35 | textLabel?.font = theme?.defaultFontWithSize(17)
36 | textLabel?.textColor = UIColor.deepBlush()
37 | normalColor = theme?.lightColor
38 | highlightColor = highlightColorForTheme(theme)
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewDetails/View/BrewNotesCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewNotesCell.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 28.04.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class BrewNotesCell: UITableViewCell, Highlightable {
13 | @IBOutlet weak var titleLabel: UILabel!
14 | @IBOutlet weak var valueLabel: UILabel!
15 |
16 | var normalColor: UIColor?
17 | var highlightColor: UIColor?
18 |
19 | override var isHighlighted: Bool {
20 | didSet {
21 | highlightViews([self, titleLabel, valueLabel], highlighted: isHighlighted)
22 | }
23 | }
24 | }
25 |
26 | extension BrewNotesCell: PresentableConfigurable {
27 |
28 | func configureWithPresentable(_ presentable: TitleValuePresentable) {
29 | accessibilityHint = "Represents notes taken during brew session"
30 | titleLabel.text = presentable.title
31 | valueLabel.text = presentable.value
32 | }
33 | }
34 |
35 | extension BrewNotesCell {
36 |
37 | func configureWithTheme(_ theme: ThemeConfiguration?) {
38 | super.configureWithTheme(theme)
39 | [titleLabel, valueLabel].forEach {
40 | $0!.configureWithTheme(theme)
41 | }
42 | normalColor = theme?.lightColor
43 | highlightColor = highlightColorForTheme(theme)
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewDetails/View/FinalScoreCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // FinalScoreCell.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 09.04.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class FinalScoreCell: UITableViewCell, Highlightable {
13 | @IBOutlet weak var titleLabel: UILabel!
14 | @IBOutlet weak var valueLabel: UILabel!
15 |
16 | var normalColor: UIColor?
17 | var highlightColor: UIColor?
18 |
19 | override var isHighlighted: Bool {
20 | didSet {
21 | highlightViews([self, titleLabel, valueLabel], highlighted: isHighlighted)
22 | }
23 | }
24 | }
25 |
26 | extension FinalScoreCell: PresentableConfigurable {
27 |
28 | func configureWithPresentable(_ presentable: TitleValuePresentable) {
29 | accessibilityHint = "Represents brew score that equals \(presentable.value)"
30 | titleLabel.text = presentable.title
31 | valueLabel.text = presentable.value
32 | }
33 | }
34 |
35 | extension FinalScoreCell {
36 |
37 | func configureWithTheme(_ theme: ThemeConfiguration?) {
38 | super.configureWithTheme(theme)
39 | [titleLabel, valueLabel].forEach {
40 | $0!.configureWithTheme(theme)
41 | }
42 | normalColor = theme?.lightColor
43 | highlightColor = highlightColorForTheme(theme)
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewScoreDetails/BrewScoreDetailsAssembly.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewScoreDetailsAssembly.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 01.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import Swinject
11 |
12 | final class BrewScoreDetailsAssembly: AssemblyType {
13 | func assemble(container: Container) {
14 | container.registerForStoryboard(BrewScoreDetailsViewController.self) {
15 | r, c in c.themeConfiguration = r.resolve(ThemeConfiguration.self)
16 | }
17 |
18 | container.register(BrewScoreDetailsViewModelType.self) {
19 | (_, brew: Brew) in BrewScoreDetailsViewModel(brew: brew)
20 | }
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewScoreDetails/View/BrewScoreDetailCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewScoreDetailCell.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 01.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 | import RxSwift
12 | import RxCocoa
13 |
14 | final class BrewScoreDetailCell: UITableViewCell {
15 | fileprivate let disposeBag = DisposeBag()
16 | @IBOutlet weak var titleLabel: UILabel!
17 | @IBOutlet weak var valueLabel: UILabel!
18 | @IBOutlet weak var slider: UISlider!
19 | }
20 |
21 | extension BrewScoreDetailCell: PresentableConfigurable {
22 |
23 | func configureWithPresentable(_ presentable: ScoreCellPresentable) {
24 | accessibilityHint = "Slider for \(presentable.title) value, current is \(presentable.value)"
25 | titleLabel.text = presentable.title
26 | valueLabel.text = presentable.value
27 | slider.value = presentable.sliderValue.value
28 | slider.rx.value.bindTo(presentable.sliderValue).addDisposableTo(disposeBag)
29 | slider.rx.value.map { $0.format(".1") }.bindTo(valueLabel.rx.text).addDisposableTo(disposeBag)
30 | }
31 | }
32 |
33 | extension BrewScoreDetailCell {
34 |
35 | func configureWithTheme(_ theme: ThemeConfiguration?) {
36 | backgroundColor = theme?.lightColor
37 | slider.configureWithTheme(theme)
38 | [titleLabel, valueLabel].forEach {
39 | $0!.configureWithTheme(theme)
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewScoreDetails/View/BrewScoreDetailsHeaderView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewScoreDetailsHeaderView.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 03.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class BrewScoreDetailsHeaderView: UIView {
13 | @IBOutlet weak var titleLabel: UILabel!
14 | @IBOutlet weak var valueLabel: UILabel!
15 | }
16 |
17 | extension BrewScoreDetailsHeaderView {
18 |
19 | func configureWithTheme(_ theme: ThemeConfiguration?) {
20 | backgroundColor = theme?.darkColor
21 | [titleLabel, valueLabel].forEach {
22 | $0?.configureWithTheme(theme)
23 | $0?.backgroundColor = theme?.darkColor
24 | $0?.textColor = theme?.lightColor
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/Brewer/Classes/Brewings/BrewingsAssembly.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 20.03.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import Swinject
8 |
9 | final class BrewingsAssembly: AssemblyType {
10 | func assemble(container: Container) {
11 |
12 | container.registerForStoryboard(BrewingsViewController.self) {
13 | r, c in
14 | c.viewModel = r.resolve(BrewingsViewModelType.self)!
15 | c.themeConfiguration = r.resolve(ThemeConfiguration.self)
16 | c.resolver = r
17 | }
18 |
19 | container.register(BrewingsViewModelType.self) {
20 | r in BrewingsViewModel(brewsModelController: r.resolve(BrewingsModelControllerType.self)!,
21 | spotlightSearchService: r.resolve(SpotlightSearchService.self)!)
22 | }
23 |
24 | container.register(BrewingsModelControllerType.self) {
25 | r in BrewingsModelController(stack: r.resolve(StackType.self)!)
26 | }
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/Brewer/Classes/Brewings/Model/BrewingSortingOption+SortDescriptor.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewingSortingOption+SortDescriptor.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 20.06.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import CoreData
11 |
12 | extension BrewingSortingOption {
13 | var sortDescriptor: NSSortDescriptor {
14 | switch self {
15 | case .dateDescending: return NSSortDescriptor(key: "created", ascending: false)
16 | case .dateAscending: return NSSortDescriptor(key: "created", ascending: true)
17 | case .scoreDescending: return NSSortDescriptor(key: "score", ascending: false)
18 | case .scoreAscending: return NSSortDescriptor(key: "score", ascending: true)
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Brewer/Classes/Brewings/Types/CuppingAttribute.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CuppingAttribute.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 06.08.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum CuppingAttribute: Int32 {
12 | case aroma
13 | case acidity
14 | case aftertaste
15 | case balance
16 | case body
17 | case sweetness
18 | case overall
19 |
20 | static let allValues = [aroma, acidity, aftertaste, balance, body, sweetness, overall]
21 | }
22 |
23 | extension CuppingAttribute: CustomStringConvertible {
24 |
25 | var description: String {
26 | switch self {
27 | case .aroma: return tr(.cuppingAttributeAroma)
28 | case .acidity: return tr(.cuppingAttributeAcidity)
29 | case .aftertaste: return tr(.cuppingAttributeAftertaste)
30 | case .balance: return tr(.cuppingAttributeBalance)
31 | case .body: return tr(.cuppingAttributeBody)
32 | case .sweetness: return tr(.cuppingAttributeSweetness)
33 | case .overall: return tr(.cuppingAttributeOverall)
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Brewer/Classes/Brewings/Types/GrindSize.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GrindSize.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 06.08.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum GrindSize {
12 | case extraFine
13 | case fine
14 | case medium
15 | case coarse
16 |
17 | static let allValues = [extraFine, fine, medium, coarse]
18 | }
19 |
--------------------------------------------------------------------------------
/Brewer/Classes/Brewings/View/BrewCellScoreView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewCellScoreView.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 08.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class BrewCellScoreView: UIView {
13 | @IBOutlet weak var scoreLabel: UILabel!
14 |
15 | fileprivate let fillingView = UIView()
16 | var fillingFactor: Double = 0
17 | var borderColor: UIColor = .white {
18 | didSet {
19 | layer.borderColor = borderColor.cgColor
20 | }
21 | }
22 |
23 | var fillingColor: UIColor = .white {
24 | didSet {
25 | fillingView.backgroundColor = fillingColor
26 | }
27 | }
28 |
29 | required init?(coder aDecoder: NSCoder) {
30 | super.init(coder: aDecoder)
31 | clipsToBounds = true
32 | layer.borderWidth = 3
33 | insertSubview(fillingView, at: 0)
34 | }
35 |
36 | override func layoutSubviews() {
37 | super.layoutSubviews()
38 | layer.cornerRadius = frame.width * 0.5
39 | fillingView.frame = CGRect(
40 | x: 0,
41 | y: frame.height * CGFloat(1 - fillingFactor),
42 | width: frame.width,
43 | height: frame.height * CGFloat(fillingFactor)
44 | )
45 | }
46 | }
47 |
48 | extension BrewCellScoreView {
49 |
50 | func configureWithTheme(_ theme: ThemeConfiguration?) {
51 | super.configureWithTheme(theme)
52 | scoreLabel.configureWithTheme(theme)
53 | scoreLabel.backgroundColor = UIColor.clear
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewingsSorting/BrewingsSortingAssembly.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 19.06.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import Swinject
8 |
9 | final class BrewingsSortingAssembly: AssemblyType {
10 | func assemble(container: Container) {
11 | container.registerForStoryboard(BrewingsSortingViewController.self) {
12 | r, c in
13 | c.themeConfiguration = r.resolve(ThemeConfiguration.self)
14 | c.viewModel = r.resolve(BrewingsSortingViewModelType.self)!
15 | }
16 |
17 | container.register(BrewingsSortingViewModelType.self) {
18 | _ in return BrewingsSortingViewModel()
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewingsSorting/Model/BrewingSortingOption.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 19.06.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | enum BrewingSortingOption {
9 | case dateAscending
10 | case dateDescending
11 | case scoreAscending
12 | case scoreDescending
13 |
14 | static let allValues: [BrewingSortingOption] = [.dateAscending, .dateDescending, .scoreAscending, .scoreDescending]
15 | }
16 |
--------------------------------------------------------------------------------
/Brewer/Classes/BrewingsSorting/View/BrewingsSortingOptionCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 19.06.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | final class BrewingsSortingOptionCell: UITableViewCell {
10 | fileprivate var normalColor: UIColor?
11 | fileprivate var selectedColor: UIColor?
12 |
13 | override var accessoryType: UITableViewCellAccessoryType {
14 | didSet {
15 | adjustImageTintColorDependingOnSelection()
16 | }
17 | }
18 |
19 | fileprivate func adjustImageTintColorDependingOnSelection() {
20 | if case .checkmark = accessoryType {
21 | imageView?.tintColor = selectedColor
22 | } else {
23 | imageView?.tintColor = normalColor
24 | }
25 | }
26 | }
27 |
28 | extension BrewingsSortingOptionCell: PresentableConfigurable {
29 |
30 | func configureWithPresentable(_ presentable: TitleImagePresentable) {
31 | accessibilityHint = "Represents sorting \(presentable.title)"
32 | textLabel?.text = presentable.title
33 | imageView?.image = presentable.image.withRenderingMode(.alwaysTemplate)
34 | }
35 | }
36 |
37 | extension BrewingsSortingOptionCell {
38 |
39 | func configureWithTheme(_ theme: ThemeConfiguration?) {
40 | super.configureWithTheme(theme)
41 | normalColor = theme?.darkColor
42 | selectedColor = theme?.lightTintColor
43 | textLabel?.configureWithTheme(theme)
44 | imageView?.configureWithTheme(theme)
45 |
46 | adjustImageTintColorDependingOnSelection()
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Brewer/Classes/MethodPicker/View/MethodPickerCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // MethodPickerCell.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 12.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class MethodPickerCell: UITableViewCell, Highlightable {
13 | @IBOutlet weak var iconImageView: UIImageView!
14 | @IBOutlet weak var titleLabel: UILabel!
15 |
16 | var normalColor: UIColor?
17 | var highlightColor: UIColor?
18 |
19 | required init?(coder aDecoder: NSCoder) {
20 | super.init(coder: aDecoder)
21 | accessoryView = UIImageView(image: UIImage(asset: .Ic_arrow))
22 | }
23 |
24 | override var isHighlighted: Bool {
25 | didSet {
26 | highlightViews([self], highlighted: isHighlighted)
27 | }
28 | }
29 | }
30 |
31 | extension MethodPickerCell: PresentableConfigurable {
32 |
33 | func configureWithPresentable(_ presentable: TitleImagePresentable) {
34 | accessibilityHint = "Selects \(presentable.title) method"
35 | titleLabel.text = presentable.title
36 | iconImageView.image = presentable.image
37 | }
38 | }
39 |
40 | extension MethodPickerCell {
41 |
42 | func configureWithTheme(_ theme: ThemeConfiguration?) {
43 | super.configureWithTheme(theme)
44 | titleLabel.configureWithTheme(theme)
45 | titleLabel.backgroundColor = UIColor.clear
46 | normalColor = theme?.lightColor
47 | highlightColor = highlightColorForTheme(theme)
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Brewer/Classes/MethodPicker/ViewModel/MethodPickerViewModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 25.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | protocol MethodPickerViewModelType: TableViewConfigurable {
10 | func methodForIndexPath(_ indexPath: IndexPath) -> BrewMethod
11 | }
12 |
13 | final class MethodPickerViewModel: MethodPickerViewModelType {
14 | var listItems = [
15 | BrewMethod.allValues.map { $0 as TitleImagePresentable }
16 | ]
17 |
18 | lazy var dataSource: TableViewSourceWrapper = {
19 | return TableViewSourceWrapper(tableDataSource: self)
20 | }()
21 |
22 | func methodForIndexPath(_ indexPath: IndexPath) -> BrewMethod {
23 | return objectAtIndexPath(indexPath) as! BrewMethod
24 | }
25 | }
26 |
27 | extension MethodPickerViewModel: TableViewConfigurable {
28 |
29 | func configureWithTableView(_ tableView: UITableView) {
30 | tableView.dataSource = dataSource
31 | }
32 | }
33 |
34 | extension MethodPickerViewModel: TableListDataSource {
35 |
36 | func cellIdentifierForIndexPath(_ indexPath: IndexPath) -> String {
37 | return "MethodPickerCell"
38 | }
39 |
40 | func listView(_ listView: UITableView, configureCell cell: MethodPickerCell, withObject object: TitleImagePresentable, atIndexPath indexPath: IndexPath) {
41 | cell.configureWithPresentable(object)
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/Common/NumericalInput/View/NumericalInputTextField.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NumericalInputTextField.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 02.08.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class NumericalInputTextField: UITextField {
13 |
14 | override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
15 | if action == #selector(cut)
16 | || action == #selector(paste)
17 | || action == #selector(delete)
18 | || action == #selector(makeTextWritingDirectionLeftToRight)
19 | || action == #selector(makeTextWritingDirectionRightToLeft)
20 | || action == #selector(toggleBoldface)
21 | || action == #selector(toggleItalics)
22 | || action == #selector(toggleUnderline) { return false }
23 | return true
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/Common/NumericalInput/ViewModel/NumericalInputViewModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 18.03.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | protocol NumericalInputViewModelType {
9 | var unit: String { get }
10 | var informativeText: String { get }
11 | var inputTransformer: NumericalInputTransformerType { get }
12 | var currentValue: String? { get }
13 |
14 | func setInputValue(_ value: String)
15 | }
16 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/Common/SelectableSearch/SelectableSearchIdentifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SelectableSearchIdentifier.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 07.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | enum SelectableSearchIdentifier: String {
12 | case Coffee
13 | case CoffeeMachine
14 | }
15 |
16 | extension SelectableSearchIdentifier: CustomStringConvertible {
17 | var description: String {
18 | switch self {
19 | case .Coffee: return tr(.selectableSearchCoffeeItemTitle)
20 | case .CoffeeMachine: return tr(.selectableSearchCoffeeMachineItemTitle)
21 | }
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/General/View/NewBrewCollectionViewCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 30.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | final class NewBrewCollectionViewCell: UICollectionViewCell {
10 | var topInset: CGFloat = 0
11 |
12 | weak var stepView: UIView? {
13 | didSet {
14 | if let stepView = stepView {
15 | contentView.addSubview(stepView)
16 | }
17 | }
18 | }
19 |
20 | override func layoutSubviews() {
21 | contentView.frame = bounds
22 | stepView?.frame = CGRect(x: 0, y: 0 + topInset, width: bounds.width, height: bounds.height - topInset)
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/General/View/NewBrewUnwindSegue.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NewBrewUnwindSegue.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 18.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class NewBrewUnwindSegue: UIStoryboardSegue {
13 | var shouldSwitchToHistory: Bool = false
14 | }
15 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/GrindSize/View/GrindSizeSliderContainerView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // GrindSizeSliderContainerView.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 08.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class GrindSizeSliderContainerView: UIView {
13 | @IBOutlet weak var extraFineImageView: UIImageView!
14 | @IBOutlet weak var extraFineLabel: UILabel! {
15 | didSet {
16 | extraFineLabel.text = tr(.grindSizeLevelExtraFine)
17 | }
18 | }
19 | @IBOutlet weak var coarseImageView: UIImageView!
20 | @IBOutlet weak var coarseLabel: UILabel! {
21 | didSet {
22 | coarseLabel.text = tr(.grindSizeLevelCoarse)
23 | }
24 | }
25 | @IBOutlet weak var slider: UISlider!
26 | }
27 |
28 | extension GrindSizeSliderContainerView {
29 |
30 | func configureWithTheme(_ theme: ThemeConfiguration?) {
31 | backgroundColor = theme?.lightColor
32 | slider.configureWithTheme(theme)
33 | [extraFineLabel, coarseLabel].forEach {
34 | $0!.configureWithTheme(theme)
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/Notes/View/NotesViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 30.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 | import RxSwift
9 | import RxCocoa
10 |
11 | extension NotesViewController: Activable { }
12 | extension NotesViewController: ThemeConfigurationContainer { }
13 |
14 | final class NotesViewController: UIViewController {
15 | fileprivate let disposeBag = DisposeBag()
16 | @IBOutlet weak var notesTextView: UITextView!
17 |
18 | var active: Bool = false {
19 | didSet {
20 | if var responder = notesTextView {
21 | responder.active = active
22 | }
23 | }
24 | }
25 |
26 | var viewModel: NotesViewModelType!
27 | var themeConfiguration: ThemeConfiguration?
28 |
29 | override func viewDidLoad() {
30 | super.viewDidLoad()
31 | title = BrewAttributeType.Notes.description
32 | notesTextView.text = viewModel.notes.value
33 |
34 | notesTextView.rx.text.bindTo(viewModel.notes).addDisposableTo(disposeBag)
35 | }
36 |
37 | override func viewWillAppear(_ animated: Bool) {
38 | super.viewWillAppear(animated)
39 | view.configureWithTheme(themeConfiguration)
40 | notesTextView.configureWithTheme(themeConfiguration)
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/Notes/ViewModel/NotesViewModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // NotesViewModel.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 19.03.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import RxSwift
11 | import RxCocoa
12 |
13 | protocol NotesViewModelType {
14 | var notes: Variable { get }
15 | }
16 |
17 | final class NotesViewModel: NotesViewModelType {
18 | fileprivate let disposeBag = DisposeBag()
19 | let brewModelController: BrewModelControllerType
20 |
21 | fileprivate(set) var notes: Variable = Variable("")
22 |
23 | init(brewModelController: BrewModelControllerType) {
24 | self.brewModelController = brewModelController
25 | notes.value = brewModelController.currentBrew()?.notes ?? ""
26 | notes.asDriver().map { $0 ?? "" }.drive(onNext: setNotesToBrew).addDisposableTo(disposeBag)
27 | }
28 |
29 | fileprivate func setNotesToBrew(_ notes: String) {
30 | brewModelController.currentBrew()?.notes = notes
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/Tamping/View/TampingView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TampingView.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 08.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class TampingView: UIView {
13 | @IBOutlet weak var lightImageView: UIImageView!
14 | @IBOutlet weak var lightLabel: UILabel!
15 | @IBOutlet weak var strongLabel: UILabel!
16 | @IBOutlet weak var strongImageView: UIImageView!
17 | @IBOutlet weak var slider: UISlider!
18 | @IBOutlet weak var informativeLabel: InformativeLabel!
19 | }
20 |
21 | extension TampingView {
22 |
23 | func configureWithTheme(_ theme: ThemeConfiguration?) {
24 | super.configureWithTheme(theme)
25 | slider.configureWithTheme(theme)
26 | [lightLabel, strongLabel].forEach {
27 | $0!.configureWithTheme(theme)
28 | }
29 | informativeLabel.configureWithTheme(theme)
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/Brewer/Classes/NewBrew/Tamping/View/TampingViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 30.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 | import RxSwift
9 | import RxCocoa
10 |
11 | extension TampingViewController: Activable { }
12 | extension TampingViewController: ThemeConfigurationContainer { }
13 |
14 | final class TampingViewController: UIViewController {
15 | fileprivate let disposeBag = DisposeBag()
16 |
17 | @IBOutlet var tampingView: TampingView!
18 |
19 | var active: Bool = false
20 | var themeConfiguration: ThemeConfiguration?
21 | var viewModel: TampingViewModelType!
22 |
23 | override func viewDidLoad() {
24 | super.viewDidLoad()
25 | title = BrewAttributeType.TampStrength.description
26 | tampingView.slider.rx.value.bindTo(viewModel.tampingValue).addDisposableTo(disposeBag)
27 | tampingView.informativeLabel.text = viewModel.informativeText
28 | }
29 |
30 | override func viewWillAppear(_ animated: Bool) {
31 | super.viewWillAppear(animated)
32 | view.configureWithTheme(themeConfiguration)
33 | tampingView.configureWithTheme(themeConfiguration)
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/About/View/AboutViewController.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 27.07.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | extension AboutViewController: ThemeConfigurable { }
10 | extension AboutViewController: ThemeConfigurationContainer { }
11 |
12 | final class AboutViewController: UITableViewController {
13 |
14 | var themeConfiguration: ThemeConfiguration?
15 |
16 | override func viewDidLoad() {
17 | super.viewDidLoad()
18 | title = tr(.settingsAboutMenuItemTitle)
19 | configureWithTheme(themeConfiguration)
20 | }
21 |
22 | override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
23 | cell.configureWithTheme(themeConfiguration)
24 | (cell as? AboutViewPhotoCell)?.configureWithTheme(themeConfiguration)
25 |
26 | cell.contentView.subviews.forEach {
27 | ($0 as? UILabel)?.configureWithTheme(themeConfiguration)
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/About/View/AboutViewPhotoCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 27.07.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | final class AboutViewPhotoCell: UITableViewCell {
10 | @IBOutlet weak var authorsLabel: UILabel!
11 |
12 | func configureWithTheme(_ theme: ThemeConfiguration?) {
13 | super.configureWithTheme(theme)
14 | authorsLabel.configureWithTheme(theme)
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/About/View/AboutViewThanksCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // AboutViewThanksCell.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 29.07.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class AboutViewThanksCell: UITableViewCell {
13 | @IBOutlet weak var thanksTitleLabel: UILabel! {
14 | didSet {
15 | thanksTitleLabel.text = tr(.settingsAboutThanksForTransaltion) + ":"
16 | }
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/General/Model/KeyValueStoreType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 25.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | protocol KeyValueStoreType {
9 | func object(forKey defaultName: String) -> Any?
10 | func set(_ value: Any?, forKey defaultName: String)
11 | func removeObject(forKey defaultName: String)
12 | func synchronize() -> Bool
13 | }
14 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/General/View/SettingsCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SettingsCell.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 28.06.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class SettingsCell: UITableViewCell, Highlightable {
13 | var normalColor: UIColor?
14 | var highlightColor: UIColor?
15 |
16 | override var isHighlighted: Bool {
17 | didSet {
18 | highlightViews([self, textLabel!], highlighted: isHighlighted)
19 | }
20 | }
21 | }
22 |
23 | extension SettingsCell: PresentableConfigurable {
24 |
25 | func configureWithPresentable(_ presentable: TitlePresentable) {
26 | accessibilityHint = "Opens \(presentable.title)"
27 | textLabel?.text = presentable.title
28 | }
29 | }
30 |
31 | extension SettingsCell {
32 |
33 | func configureWithTheme(_ theme: ThemeConfiguration?) {
34 | super.configureWithTheme(theme)
35 | [textLabel!, detailTextLabel!].forEach {
36 | $0.configureWithTheme(theme)
37 | }
38 | normalColor = theme?.lightColor
39 | highlightColor = highlightColorForTheme(theme)
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/General/ViewModel/SettingsViewModel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 21.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | struct SettingsItem: TitlePresentable {
10 | let title: String
11 | }
12 |
13 | final class SettingsViewModel {
14 |
15 | var listItems = [[
16 | SettingsItem(title: tr(.settingsBrewingSequenceMenuItemTitle)),
17 | SettingsItem(title: tr(.settingsUnitsMenuItemTitle)),
18 | SettingsItem(title: tr(.settingsAboutMenuItemTitle)),
19 | SettingsItem(title: tr(.settingsFeedbackMenuItemTitle)),
20 | SettingsItem(title: tr(.settingsRateMenuItemTitle)),
21 | ]]
22 |
23 | lazy var dataSource: TableViewSourceWrapper = TableViewSourceWrapper(tableDataSource: self)
24 | }
25 |
26 | extension SettingsViewModel: TableViewConfigurable {
27 |
28 | func configureWithTableView(_ tableView: UITableView) {
29 | tableView.dataSource = dataSource
30 | }
31 | }
32 |
33 | extension SettingsViewModel: TableListDataSource {
34 |
35 | func cellIdentifierForIndexPath(_ indexPath: IndexPath) -> String {
36 | return "SettingsCell"
37 | }
38 |
39 | func listView(_ listView: UITableView, configureCell cell: SettingsCell, withObject object: SettingsItem, atIndexPath indexPath: IndexPath) {
40 | cell.configureWithPresentable(object)
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/Sequence/Model/BrewAttributeType+DefaultSequenceSettings.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 25.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | extension BrewAttributeType {
9 | func defaultPosition(forMethod method: BrewMethod) -> Int {
10 | switch self {
11 | case .CoffeeWeight: return 0
12 | case .GrindSize: return 1
13 | case .TampStrength: return 2
14 | case .WaterTemperature: return 3
15 | case .WaterWeight: return 4
16 | case .PreInfusionTime: return 5
17 | case .Time: return 6
18 | case .Notes: return 7
19 | }
20 | }
21 |
22 | func defaultEnabled(forMethod method: BrewMethod) -> Bool {
23 | switch self {
24 | case .CoffeeWeight, .GrindSize, .WaterTemperature, .WaterWeight, .Time, .Notes:
25 | return true
26 | case .PreInfusionTime:
27 | return false
28 | case .TampStrength:
29 | switch method {
30 | case .CoffeeMachine: return true
31 | default: return false
32 | }
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/Sequence/View/SequenceSettingsCell.swift:
--------------------------------------------------------------------------------
1 | //
2 | // SequenceSettingsCell.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 07.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class SequenceSettingsCell: UITableViewCell {
13 | var themeBackgroundColor: UIColor?
14 | var themeSelectedBackgroundColor: UIColor? {
15 | didSet {
16 | selectedBackgroundView = .viewWithBackgroundColor(themeSelectedBackgroundColor)
17 | }
18 | }
19 |
20 | override var isSelected: Bool {
21 | set(newValue) {
22 | super.isSelected = newValue
23 | backgroundColor = themeBackgroundColor
24 | }
25 | get {
26 | return super.isSelected
27 | }
28 | }
29 | }
30 |
31 | extension SequenceSettingsCell {
32 |
33 | func configureWithTheme(_ theme: ThemeConfiguration?) {
34 | themeBackgroundColor = theme?.lightColor
35 | themeSelectedBackgroundColor = theme?.lightTintColor.withAlphaComponent(0.3)
36 | textLabel?.configureWithTheme(theme)
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/Units/Model/UnitCategory+DefaultSettings.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 18.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | extension UnitCategory {
9 | func defaultSetting() -> Int {
10 | switch self {
11 | case .weight: return UnitCategory.WeightUnit.g.rawValue
12 | case .water: return UnitCategory.WaterUnit.g.rawValue
13 | case .temperature: return UnitCategory.TemperatureUnit.celsius.rawValue
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/Units/ViewModel/Temperature/TemperatureUnitsDataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 10.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | final class TemperatureUnitsDataSource: UnitsDataSourceType {
9 | var items: [UnitsDataSourceItem] {
10 | return UnitCategory.TemperatureUnit.allValues.map {
11 | UnitsDataSourceItem(key: $0.rawValue, title: $0.description)
12 | }
13 | }
14 |
15 | var title: String {
16 | return tr(.unitCategoryTemperature)
17 | }
18 |
19 | var category: Int {
20 | return UnitCategory.temperature.rawValue
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/Units/ViewModel/UnitsDataSourceType.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 20.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | struct UnitsDataSourceItem {
9 | let key: Int
10 | let title: String
11 | }
12 |
13 | protocol UnitsDataSourceType: class {
14 | var title: String { get }
15 | var items: [UnitsDataSourceItem] { get }
16 | var category: Int { get }
17 | }
18 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/Units/ViewModel/UnitsDataSourcesFactory.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 20.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | protocol UnitsDataSourcesFactoryType {
9 | var dataSources: [UnitsDataSourceType] { get }
10 | }
11 |
12 | final class UnitsDataSourcesFactory: UnitsDataSourcesFactoryType {
13 | var dataSources: [UnitsDataSourceType] {
14 | return [
15 | WaterUnitsDataSource(),
16 | WeightUnitsDataSource(),
17 | TemperatureUnitsDataSource()
18 | ]
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/Units/ViewModel/Water/WaterUnitsDataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 10.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | final class WaterUnitsDataSource: UnitsDataSourceType {
9 | var items: [UnitsDataSourceItem] {
10 | return UnitCategory.WaterUnit.allValues.map {
11 | UnitsDataSourceItem(key: $0.rawValue, title: $0.description)
12 | }
13 | }
14 |
15 | var title: String {
16 | return tr(.unitCategoryWater)
17 | }
18 |
19 | var category: Int {
20 | return UnitCategory.water.rawValue
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Brewer/Classes/Settings/Units/ViewModel/Weight/WeightUnitsDataSource.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 10.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | final class WeightUnitsDataSource: UnitsDataSourceType {
9 | var items: [UnitsDataSourceItem] {
10 | return UnitCategory.WeightUnit.allValues.map {
11 | UnitsDataSourceItem(key: $0.rawValue, title: $0.description)
12 | }
13 | }
14 |
15 | var title: String {
16 | return tr(.unitCategoryCoffee)
17 | }
18 |
19 | var category: Int {
20 | return UnitCategory.weight.rawValue
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Analytics/Analytics.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 24.07.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | final class Analytics {
9 |
10 | static let sharedInstance = Analytics()
11 |
12 | fileprivate var tracker: GAITracker?
13 |
14 | fileprivate init() {
15 | #if !DEBUG
16 | setup()
17 | tracker = GAI.sharedInstance().defaultTracker
18 | #endif
19 | }
20 |
21 | // MARK: Setup
22 |
23 | fileprivate func setup() {
24 | var error: NSError?
25 | GGLContext.sharedInstance().configureWithError(&error)
26 | if let error = error {
27 | print("Error configuring Google services: \(error.localizedDescription)")
28 | }
29 |
30 | let gai = GAI.sharedInstance()
31 | gai?.trackUncaughtExceptions = true
32 | gai?.logger.logLevel = GAILogLevel.warning
33 | }
34 |
35 | // MARK: Events
36 |
37 | func trackScreen(withTitle title: String) {
38 | tracker?.set(kGAIScreenName, value: title)
39 | tracker?.send(GAIDictionaryBuilder.createScreenView().build() as [NSObject : AnyObject])
40 | }
41 |
42 | func trackMethodPickEvent(onScreen screen: String, method: BrewMethod) {
43 | tracker?.send(
44 | GAIDictionaryBuilder.createEvent(
45 | withCategory: screen,
46 | action: "Selected",
47 | label: method.rawValue,
48 | value: 1)
49 | .build() as [NSObject : AnyObject]
50 | )
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Analytics/AppScreen.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Analytics+Screens.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 24.07.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 |
11 | struct AppScreen {
12 | static let brewings = "Brewings"
13 | static let newBrew = "NewBrew"
14 | static let settings = "Settings"
15 | static let brewDetails = "BrewDetails"
16 | static let scoreDetails = "ScoreDetails"
17 | static let brewingSort = "BrewingsSort"
18 | static let settingsUnits = "SettingsUnits"
19 | static let settingsSequence = "SettingsSequence"
20 | }
21 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/CoreComponents.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 06.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import CoreData
8 | import Swinject
9 | import CoreSpotlight
10 |
11 | final class CoreComponentsAssembly: AssemblyType {
12 | func assemble(container: Container) {
13 |
14 | container.register(StackType.self) {
15 | _ in CoreDataStack(storeType: isRunningTests() ? NSInMemoryStoreType : NSSQLiteStoreType)
16 | }.inObjectScope(.container)
17 |
18 | container.register(KeyValueStoreType.self) {
19 | _ in UserDefaults.standard
20 | }
21 |
22 | container.register(ThemeConfiguration.self) {
23 | _ in MainThemeConfiguration()
24 | }
25 |
26 | container.registerForStoryboard(RootViewController.self) {
27 | r, c in
28 | c.resolver = r
29 | c.themeConfiguration = r.resolve(ThemeConfiguration.self)
30 | }
31 |
32 | container.register(SpotlightSearchService.self) {
33 | _ in SpotlightSearchService(searchableIndex: CSSearchableIndex.default())
34 | }
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/Brew.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Brew.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 16.01.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import CoreData
11 |
12 | class Brew: NSManagedObject {
13 |
14 | func brewAttributesArray() -> [BrewAttribute] {
15 | guard let attributes = brewAttributes else {
16 | return []
17 | }
18 | return attributes.allObjects as! [BrewAttribute]
19 | }
20 |
21 | func brewAttributeForType(_ type: BrewAttributeType) -> BrewAttribute? {
22 | guard let attributes = brewAttributes , !attributes.isEmpty else {
23 | return nil
24 | }
25 | return attributes
26 | .filter { ($0 as! BrewAttribute).type == type.intValue }
27 | .last as? BrewAttribute
28 | }
29 |
30 | func cuppingAttributeForType(_ type: CuppingAttribute) -> Cupping? {
31 | guard let attributes = cuppingAttributes , !attributes.isEmpty else {
32 | return nil
33 | }
34 | return attributes
35 | .filter { ($0 as! Cupping).type == type.rawValue }
36 | .last as? Cupping
37 | }
38 | }
39 |
40 | extension Brew: Entity {
41 | static func entityName() -> String {
42 | return "Brew"
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/BrewAttribute.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewAttribute.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 16.01.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import CoreData
11 |
12 | class BrewAttribute: NSManagedObject {
13 |
14 | }
15 |
16 | extension BrewAttributeType {
17 | var intValue: Int32 {
18 | switch self {
19 | case .Time: return 1
20 | case .GrindSize: return 2
21 | case .CoffeeWeight: return 3
22 | case .WaterWeight: return 4
23 | case .WaterTemperature: return 5
24 | case .TampStrength: return 6
25 | case .Notes: return 7
26 | case .PreInfusionTime: return 8
27 | }
28 | }
29 |
30 | static func fromIntValue(_ intValue: Int32) -> BrewAttributeType {
31 | switch intValue {
32 | case 1: return .Time
33 | case 2: return .GrindSize
34 | case 3: return .CoffeeWeight
35 | case 4: return .WaterWeight
36 | case 5: return .WaterTemperature
37 | case 6: return .TampStrength
38 | case 7: return .Notes
39 | case 8: return .PreInfusionTime
40 | default: fatalError("Wrong brew attribute int code.")
41 | }
42 | }
43 | }
44 |
45 | extension BrewAttribute: Entity {
46 | static func entityName() -> String {
47 | return "BrewAttribute"
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/Coffee.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Coffee.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 16.01.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import CoreData
11 |
12 | class Coffee: NSManagedObject {
13 |
14 | }
15 |
16 | extension Coffee: SelectableSearchModelItem {
17 |
18 | }
19 |
20 | extension Coffee: Entity {
21 | static func entityName() -> String {
22 | return "Coffee"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/CoffeeMachine.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CoffeeMachine.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 16.01.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import CoreData
11 |
12 | class CoffeeMachine: NSManagedObject {
13 |
14 | }
15 |
16 | extension CoffeeMachine: SelectableSearchModelItem {
17 |
18 | }
19 |
20 | extension CoffeeMachine: Entity {
21 | static func entityName() -> String {
22 | return "CoffeeMachine"
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/Cupping.swift:
--------------------------------------------------------------------------------
1 | // Cupping.swift
2 | // Brewer
3 | //
4 | // Created by Maciej Oczko on 16.01.2016.
5 | // Copyright © 2016 Maciej Oczko. All rights reserved.
6 | //
7 |
8 | import Foundation
9 | import CoreData
10 |
11 | class Cupping: NSManagedObject {
12 |
13 | }
14 |
15 | extension Cupping: Entity {
16 | static func entityName() -> String {
17 | return "CuppingAttribute"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/Machine/Brew+CoreDataProperties.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Brew+CoreDataProperties.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 05.03.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 | // Choose "Create NSManagedObject Subclass…" from the Core Data editor menu
9 | // to delete and recreate this implementation file for your updated model.
10 | //
11 |
12 | import Foundation
13 | import CoreData
14 |
15 | extension Brew {
16 |
17 | @NSManaged var created: TimeInterval
18 | @NSManaged var method: Int32
19 | @NSManaged var notes: String?
20 | @NSManaged var score: Double
21 | @NSManaged var isFinished: Bool
22 | @NSManaged var brewAttributes: NSSet?
23 | @NSManaged var coffee: Coffee?
24 | @NSManaged var coffeeMachine: CoffeeMachine?
25 | @NSManaged var cuppingAttributes: NSSet?
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/Machine/BrewAttribute+CoreDataProperties.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewAttribute+CoreDataProperties.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 18.03.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 | // Choose "Create NSManagedObject Subclass…" from the Core Data editor menu
9 | // to delete and recreate this implementation file for your updated model.
10 | //
11 |
12 | import Foundation
13 | import CoreData
14 |
15 | extension BrewAttribute {
16 |
17 | @NSManaged var type: Int32
18 | @NSManaged var value: Double
19 | @NSManaged var unit: Int32
20 | @NSManaged var brew: Brew?
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/Machine/Coffee+CoreDataProperties.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Coffee+CoreDataProperties.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 18.03.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 | // Choose "Create NSManagedObject Subclass…" from the Core Data editor menu
9 | // to delete and recreate this implementation file for your updated model.
10 | //
11 |
12 | import Foundation
13 | import CoreData
14 |
15 | extension Coffee {
16 |
17 | @NSManaged var name: String?
18 | @NSManaged var process: String?
19 | @NSManaged var variety: String?
20 | @NSManaged var updatedAt: TimeInterval
21 | @NSManaged var brews: NSSet?
22 |
23 | }
24 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/Machine/CoffeeMachine+CoreDataProperties.swift:
--------------------------------------------------------------------------------
1 | //
2 | // CoffeeMachine+CoreDataProperties.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 18.03.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 | // Choose "Create NSManagedObject Subclass…" from the Core Data editor menu
9 | // to delete and recreate this implementation file for your updated model.
10 | //
11 |
12 | import Foundation
13 | import CoreData
14 |
15 | extension CoffeeMachine {
16 |
17 | @NSManaged var name: String?
18 | @NSManaged var updatedAt: TimeInterval
19 | @NSManaged var brews: NSSet?
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Entities/Machine/Cupping+CoreDataProperties.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Cupping+CoreDataProperties.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 16.01.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 | // Choose "Create NSManagedObject Subclass…" from the Core Data editor menu
9 | // to delete and recreate this implementation file for your updated model.
10 | //
11 |
12 | import Foundation
13 | import CoreData
14 |
15 | extension Cupping {
16 |
17 | @NSManaged var type: Int32
18 | @NSManaged var value: Double
19 | @NSManaged var brew: Brew?
20 |
21 | }
22 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Model/Stack/CoreDataExtensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 16.03.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import CoreData
8 |
9 | protocol Entity {
10 | static func entityName() -> String
11 | }
12 |
13 | struct CoreDataOperations where T: NSManagedObject, T: Entity {
14 | let context: NSManagedObjectContext
15 |
16 | init(managedObjectContext context: NSManagedObjectContext) {
17 | self.context = context
18 | }
19 |
20 | func create() -> T {
21 | return NSEntityDescription.insertNewObject(forEntityName: T.entityName(), into: context) as! T
22 | }
23 |
24 | func fetch(withPredicate predicate: NSPredicate? = nil, sortDescriptors: [NSSortDescriptor]? = nil) throws -> [T] {
25 | let fetchRequest = NSFetchRequest(entityName: T.entityName())
26 | fetchRequest.predicate = predicate
27 | fetchRequest.sortDescriptors = sortDescriptors
28 | return try context.fetch(fetchRequest)
29 | }
30 |
31 | func save() throws {
32 | try context.save()
33 | }
34 |
35 | func objectForID(_ objectID: NSManagedObjectID) -> T? {
36 | return context.registeredObject(for: objectID) as? T
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/ResolvableContainer.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 30.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import Swinject
8 |
9 | protocol ResolvableContainer {
10 | var resolver: ResolverType? { get set }
11 | }
12 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Seque/SegueHandler.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 30.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | extension UIViewController {
10 |
11 | func segueIdentifierForSegue(_ segue: UIStoryboardSegue) -> SegueIdentifier {
12 | guard let identifier = segue.identifier else {
13 | fatalError("Segue identifier doesn't exist")
14 | }
15 | guard let segueIdentifier = SegueIdentifier(rawValue: identifier) else {
16 | fatalError("Unknown segue: \(segue))")
17 | }
18 | return segueIdentifier
19 | }
20 |
21 | func performSegue(_ segueIdentifier: SegueIdentifier) {
22 | self.performSegue(withIdentifier: segueIdentifier.rawValue, sender: nil)
23 | }
24 |
25 | func performSegue(_ segueIdentifier: SegueIdentifier, sender: AnyObject?) {
26 | self.performSegue(withIdentifier: segueIdentifier.rawValue, sender: sender)
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Seque/SegueIdentifier.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 30.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | enum SegueIdentifier: String {
10 | case StartNewBrew
11 | case BrewingsSorting
12 | case SequenceSettings
13 | case NewBrew
14 | case NewBrewUnwind
15 | case MethodPicker
16 | case MethodPickerUnwind
17 | case Units
18 | case UnitsUnwind
19 | case BrewScoreDetails
20 | case BrewDetails
21 | case About
22 |
23 | case GrindSize
24 | case NumericalInput
25 | case Tamping
26 | case Notes
27 | case SelectableSearch
28 | }
29 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Themes/ThemeConfigurable+UILabel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ThemeConfigurable+UILabel.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 07.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | extension ThemeConfigurable where Self: UILabel {
13 | func configureWithTheme(_ theme: ThemeConfiguration?) {
14 | guard let theme = theme else { return }
15 | backgroundColor = theme.lightColor
16 | font = theme.defaultFontWithSize(font.pointSize)
17 | textColor = theme.darkColor
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Themes/ThemeConfigurable+UISearchBar.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ThemeConfigurable+UISearchBar.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 07.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | extension ThemeConfigurable where Self: UISearchBar {
13 | func configureWithTheme(_ theme: ThemeConfiguration?) {
14 | guard let theme = theme else { return }
15 | backgroundColor = theme.lightColor
16 | barTintColor = theme.darkColor
17 | (self as UISearchBar).tintColor = theme.darkColor
18 | isTranslucent = theme.tabBarConfiguration.translucent
19 | searchBarStyle = .minimal
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Themes/ThemeConfigurable+UISegmentedControl.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ThemeConfigurable+UISegmentedControl.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 07.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | extension ThemeConfigurable where Self: UISegmentedControl {
13 | func configureWithTheme(_ theme: ThemeConfiguration?) {
14 | guard let theme = theme else { return }
15 | backgroundColor = theme.lightColor
16 | (self as UISegmentedControl).tintColor = theme.lightTintColor
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Themes/ThemeConfigurable+UISlider.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ThemeConfigurable+UISlider.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 08.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | extension ThemeConfigurable where Self: UISlider {
13 | func configureWithTheme(_ theme: ThemeConfiguration?) {
14 | guard let theme = theme else { return }
15 | backgroundColor = theme.lightColor
16 | tintColor = theme.lightTintColor
17 | minimumTrackTintColor = theme.darkTintColor
18 | maximumTrackTintColor = theme.darkColor
19 | thumbTintColor = theme.lightTintColor
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Themes/ThemeConfigurable+UITextField.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ThemeConfigurable+UITextField.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 07.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | extension ThemeConfigurable where Self: UITextField {
13 | func configureWithTheme(_ theme: ThemeConfiguration?) {
14 | guard let theme = theme else { return }
15 | backgroundColor = theme.lightColor
16 | font = theme.defaultFontWithSize(font?.pointSize ?? 0)
17 | textColor = theme.darkColor
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Themes/ThemeConfigurable+UITextView.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ThemeConfigurable+UITextView.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 08.05.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | extension ThemeConfigurable where Self: UITextView {
13 | func configureWithTheme(_ theme: ThemeConfiguration?) {
14 | guard let theme = theme else { return }
15 | backgroundColor = theme.lightColor
16 | font = theme.defaultFontWithSize(font?.pointSize ?? 0)
17 | textColor = theme.darkColor
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/FoundationUtilities.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 07.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | // swiftlint:disable empty_count
9 | extension NSSet {
10 | var isEmpty: Bool {
11 | return count == 0
12 | }
13 | }
14 | // swiftlint:enalbe empty_count
15 |
16 | extension NSPredicate {
17 | class func falsePredicate() -> NSPredicate {
18 | return NSPredicate(format: "FALSEPREDICATE")
19 | }
20 |
21 | class func truePredicate() -> NSPredicate {
22 | return NSPredicate(format: "TRUEPREDICATE")
23 | }
24 | }
25 |
26 | extension Float {
27 | func format(_ format: String) -> String {
28 | return String(format: "%\(format)f", self)
29 | }
30 | }
31 |
32 | extension Double {
33 | func format(_ format: String) -> String {
34 | return String(format: "%\(format)f", self)
35 | }
36 | }
37 |
38 | extension Collection {
39 | func elements(ofType type: T.Type) -> [T] {
40 | return self.filter { $0 is T }.map { $0 as! T }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/Functions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 26.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | func isRunningTests() -> Bool {
9 | return ProcessInfo.processInfo.environment["XCInjectBundle"] != nil
10 | }
11 |
12 | struct Dispatcher {
13 | static func delay(_ delay: Double, closure: @escaping () -> Void) {
14 | DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(delay * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: closure)
15 | }
16 | }
17 |
18 | func abstractMethod() -> Never {
19 | fatalError("Override this method")
20 | }
21 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/SwinjectUtilities.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 07.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 | import Swinject
9 | import SwinjectStoryboard
10 |
11 | extension ResolverType {
12 |
13 | func viewControllerForIdentifier(_ identifier: String) -> T where T: UIViewController {
14 | let sb = SwinjectStoryboard.create(name: identifier, bundle: nil, container: self)
15 | return sb.instantiateViewController(withIdentifier: identifier) as! T
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/UI/ActivableProtocol.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 07.02.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | protocol Activable {
10 | var active: Bool { get set }
11 |
12 | func deactivate()
13 | }
14 |
15 | extension Activable {
16 |
17 | func deactivate() {
18 | var mutableSelf = self
19 | mutableSelf.active = false
20 | }
21 | }
22 |
23 | extension Activable {
24 |
25 | func handleActiveValue(_ active: Bool) {
26 | if let responder = self as? UIResponder {
27 | if active {
28 | responder.becomeFirstResponder()
29 | } else {
30 | responder.resignFirstResponder()
31 | }
32 | }
33 | }
34 | }
35 |
36 | extension UITextField: Activable { }
37 | extension Activable where Self: UITextField {
38 | var active: Bool {
39 | get {
40 | return isFirstResponder
41 | }
42 | set(activeValue) {
43 | handleActiveValue(activeValue)
44 | }
45 | }
46 | }
47 |
48 | extension UISearchBar: Activable { }
49 | extension Activable where Self: UISearchBar {
50 | var active: Bool {
51 | get {
52 | return isFirstResponder
53 | }
54 | set(activeValue) {
55 | handleActiveValue(activeValue)
56 | }
57 | }
58 | }
59 |
60 | extension UITextView: Activable { }
61 | extension Activable where Self: UITextView {
62 | var active: Bool {
63 | get {
64 | return isFirstResponder
65 | }
66 | set(activeValue) {
67 | handleActiveValue(activeValue)
68 | }
69 | }
70 | }
71 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/UI/Highlightable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Highlightable.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 28.06.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | protocol Highlightable {
13 | var normalColor: UIColor? { get set }
14 | var highlightColor: UIColor? { get set }
15 |
16 | func highlightColorForTheme(_ theme: ThemeConfiguration?) -> UIColor?
17 | func highlightViews(_ views: [UIView], highlighted: Bool)
18 | }
19 |
20 | extension Highlightable {
21 |
22 | func highlightColorForTheme(_ theme: ThemeConfiguration?) -> UIColor? {
23 | return theme?.lightTintColor.withAlphaComponent(0.2)
24 | }
25 |
26 | func highlightViews(_ views: [UIView], highlighted: Bool) {
27 | for view in views {
28 | var highlightColor = self.highlightColor
29 | if view is UILabel {
30 | highlightColor = UIColor.clear
31 | }
32 | view.backgroundColor = highlighted ? highlightColor : normalColor
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/UI/InformativeLabel.swift:
--------------------------------------------------------------------------------
1 | //
2 | // InformativeLabel.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 21.06.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | final class InformativeLabel: UILabel {
13 |
14 | }
15 |
16 | extension InformativeLabel {
17 |
18 | func configureWithTheme(_ theme: ThemeConfiguration?) {
19 | super.configureWithTheme(theme)
20 | textColor = UIColor.lightGray
21 | font = theme?.defaultFontWithSize(12)
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/UI/PresentableProtocols.swift:
--------------------------------------------------------------------------------
1 | //
2 | // TitlePresentable.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 17.04.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import RxSwift
11 | import RxCocoa
12 |
13 | protocol TitlePresentable {
14 | var title: String { get }
15 | }
16 |
17 | protocol ValuePresentable {
18 | var value: String { get }
19 | }
20 |
21 | protocol SliderPresentable {
22 | var sliderValue: Variable { get }
23 | }
24 |
25 | protocol ImagePresentable {
26 | var image: UIImage { get }
27 | }
28 |
29 | protocol PresentableConfigurable {
30 | associatedtype Presentable
31 | func configureWithPresentable(_ presentable: Presentable)
32 | }
33 |
34 | // MARK: Title Value
35 |
36 | typealias TitleValuePresentable = TitlePresentable & ValuePresentable
37 |
38 | // MARK: Title Image
39 |
40 | typealias TitleImagePresentable = TitlePresentable & ImagePresentable
41 |
42 | // MARK: Title Value Slider
43 |
44 | typealias ScoreCellPresentable = TitlePresentable & ValuePresentable & SliderPresentable
45 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/UI/ScrollViewPageMetrics.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 31.01.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 | import UIKit
8 |
9 | protocol ScrollViewPageMetricsType {
10 | func isFirstPageOfScrollView(_ scrollView: UIScrollView) -> Bool
11 | func isLastPageOfScrollView(_ scrollView: UIScrollView) -> Bool
12 | func currentPageIndexForScrollView(_ scrollView: UIScrollView) -> Int
13 | }
14 |
15 | final class ScrollViewPageMetrics: ScrollViewPageMetricsType {
16 |
17 | func isFirstPageOfScrollView(_ scrollView: UIScrollView) -> Bool {
18 | return scrollView.contentOffset.x < scrollView.frame.size.width
19 | }
20 |
21 | func isLastPageOfScrollView(_ scrollView: UIScrollView) -> Bool {
22 | return scrollView.contentOffset.x >= (scrollView.contentSize.width - scrollView.frame.size.width)
23 | }
24 |
25 | func currentPageIndexForScrollView(_ scrollView: UIScrollView) -> Int {
26 | return Int(scrollView.contentOffset.x / scrollView.frame.size.width)
27 | }
28 |
29 | }
30 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/UI/TabBarConfigurable.swift:
--------------------------------------------------------------------------------
1 | //
2 | // Created by Maciej Oczko on 24.07.2016.
3 | // Copyright (c) 2016 Maciej Oczko. All rights reserved.
4 | //
5 |
6 | import Foundation
7 |
8 | protocol TabBarConfigurable {
9 | func setupTabBar()
10 | }
11 |
--------------------------------------------------------------------------------
/Brewer/Classes/Shared/Utilities/UI/UIViewController+Extensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewControllerExtensions.swift
3 | // Brewer
4 | //
5 | // Created by Maciej Oczko on 20.06.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 | extension UIViewController {
13 | func pop() {
14 | _ = navigationController?.popViewController(animated: true)
15 | }
16 | }
17 |
18 | extension UIViewController: UIGestureRecognizerDelegate {
19 |
20 | func enableSwipeToBack() {
21 | if let navigationController = navigationController {
22 | navigationController.interactivePopGestureRecognizer?.isEnabled = true
23 | navigationController.interactivePopGestureRecognizer?.delegate = self
24 | }
25 | }
26 |
27 | public func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
28 | return true
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Brewer/Dropnote.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | aps-environment
6 | development
7 |
8 |
9 |
--------------------------------------------------------------------------------
/Brewer/GoogleService-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | TRACKING_ID
6 | UA-81260126-1
7 | PLIST_VERSION
8 | 1
9 | BUNDLE_ID
10 | pl.maciejoczko.Dropnote
11 | PROJECT_ID
12 | dropnote-eb0b8
13 | IS_ADS_ENABLED
14 |
15 | IS_ANALYTICS_ENABLED
16 |
17 | IS_APPINVITE_ENABLED
18 |
19 | IS_GCM_ENABLED
20 |
21 | IS_SIGNIN_ENABLED
22 |
23 | GOOGLE_APP_ID
24 | 1:91660750429:ios:5d163452e3d8e475
25 |
26 |
--------------------------------------------------------------------------------
/Brewer/Resources/AppIcon60x60.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/AppIcon60x60.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-120.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-152.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-167.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-167.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-180.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/AppIcon.appiconset/DropnoteIcon-76.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/IconDropnote.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "IconDropnote@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "IconDropnote@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/IconDropnote.imageset/IconDropnote@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/IconDropnote.imageset/IconDropnote@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/IconDropnote.imageset/IconDropnote@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/IconDropnote.imageset/IconDropnote@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/Team.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "Team@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/Team.imageset/Team@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/Team.imageset/Team@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_add.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_add.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_add@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_add@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_add.imageset/ic_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_add.imageset/ic_add.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_add.imageset/ic_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_add.imageset/ic_add@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_add.imageset/ic_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_add.imageset/ic_add@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_aeropress.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_aeropress.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_aeropress@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_aeropress@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_aeropress.imageset/ic_aeropress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_aeropress.imageset/ic_aeropress.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_aeropress.imageset/ic_aeropress@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_aeropress.imageset/ic_aeropress@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_aeropress.imageset/ic_aeropress@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_aeropress.imageset/ic_aeropress@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_aeropress_quick.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_aeropress_quick.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "scale" : "3x"
15 | }
16 | ],
17 | "info" : {
18 | "version" : 1,
19 | "author" : "xcode"
20 | }
21 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_aeropress_quick.imageset/ic_aeropress_quick.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_aeropress_quick.imageset/ic_aeropress_quick.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_arrow.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images": [
3 | {
4 | "idiom": "universal",
5 | "scale": "1x",
6 | "filename": "ic_arrow.png"
7 | },
8 | {
9 | "idiom": "universal",
10 | "scale": "2x",
11 | "filename": "ic_arrow@2x.png"
12 | },
13 | {
14 | "idiom": "universal",
15 | "scale": "3x",
16 | "filename": "ic_arrow@3x.png"
17 | }
18 | ],
19 | "info": {
20 | "version": 1,
21 | "author": "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_arrow.imageset/ic_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_arrow.imageset/ic_arrow.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_arrow.imageset/ic_arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_arrow.imageset/ic_arrow@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_arrow.imageset/ic_arrow@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_arrow.imageset/ic_arrow@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_back.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_back.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_back@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_back@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_back.imageset/ic_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_back.imageset/ic_back.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_back.imageset/ic_back@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_back.imageset/ic_back@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_back.imageset/ic_back@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_back.imageset/ic_back@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_best.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_best.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_best@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_best@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_best.imageset/ic_best.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_best.imageset/ic_best.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_best.imageset/ic_best@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_best.imageset/ic_best@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_best.imageset/ic_best@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_best.imageset/ic_best@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_chemex.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_chemex.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_chemex@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_chemex@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_chemex.imageset/ic_chemex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_chemex.imageset/ic_chemex.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_chemex.imageset/ic_chemex@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_chemex.imageset/ic_chemex@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_chemex.imageset/ic_chemex@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_chemex.imageset/ic_chemex@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_chemex_bw.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_chemex_bw.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_chemex_bw@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_chemex_bw@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_chemex_bw.imageset/ic_chemex_bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_chemex_bw.imageset/ic_chemex_bw.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_chemex_bw.imageset/ic_chemex_bw@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_chemex_bw.imageset/ic_chemex_bw@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_chemex_bw.imageset/ic_chemex_bw@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_chemex_bw.imageset/ic_chemex_bw@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_close.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_close.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_close@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_close@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_close.imageset/ic_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_close.imageset/ic_close.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_close.imageset/ic_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_close.imageset/ic_close@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_close.imageset/ic_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_close.imageset/ic_close@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_coffee.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_coffee@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_coffee@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee.imageset/ic_coffee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_coffee.imageset/ic_coffee.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee.imageset/ic_coffee@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_coffee.imageset/ic_coffee@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee.imageset/ic_coffee@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_coffee.imageset/ic_coffee@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee_machine.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_coffee_machine.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_coffee_machine@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_coffee_machine@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee_machine.imageset/ic_coffee_machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_coffee_machine.imageset/ic_coffee_machine.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee_machine.imageset/ic_coffee_machine@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_coffee_machine.imageset/ic_coffee_machine@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee_machine.imageset/ic_coffee_machine@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_coffee_machine.imageset/ic_coffee_machine@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee_machine_bw.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_coffee_machine_bw.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_coffee_machine_bw@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_coffee_machine_bw@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee_machine_bw.imageset/ic_coffee_machine_bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_coffee_machine_bw.imageset/ic_coffee_machine_bw.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee_machine_bw.imageset/ic_coffee_machine_bw@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_coffee_machine_bw.imageset/ic_coffee_machine_bw@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_coffee_machine_bw.imageset/ic_coffee_machine_bw@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_coffee_machine_bw.imageset/ic_coffee_machine_bw@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_done.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_done.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_done@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_done@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_done.imageset/ic_done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_done.imageset/ic_done.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_done.imageset/ic_done@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_done.imageset/ic_done@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_done.imageset/ic_done@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_done.imageset/ic_done@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_drip.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_drip.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_drip@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_drip@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_drip.imageset/ic_drip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_drip.imageset/ic_drip.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_drip.imageset/ic_drip@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_drip.imageset/ic_drip@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_drip.imageset/ic_drip@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_drip.imageset/ic_drip@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_drip_bw.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_drip_bw.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_drip_bw@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_drip_bw@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_drip_bw.imageset/ic_drip_bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_drip_bw.imageset/ic_drip_bw.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_drip_bw.imageset/ic_drip_bw@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_drip_bw.imageset/ic_drip_bw@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_drip_bw.imageset/ic_drip_bw@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_drip_bw.imageset/ic_drip_bw@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_empty_history.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_empty_history.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_empty_history@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_empty_history@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_empty_history.imageset/ic_empty_history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_empty_history.imageset/ic_empty_history.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_empty_history.imageset/ic_empty_history@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_empty_history.imageset/ic_empty_history@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_empty_history.imageset/ic_empty_history@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_empty_history.imageset/ic_empty_history@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_grind.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_grind.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_grind@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_grind@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_grind.imageset/ic_grind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_grind.imageset/ic_grind.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_grind.imageset/ic_grind@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_grind.imageset/ic_grind@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_grind.imageset/ic_grind@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_grind.imageset/ic_grind@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_inverted.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_inverted.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_inverted@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_inverted@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_inverted.imageset/ic_inverted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_inverted.imageset/ic_inverted.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_inverted.imageset/ic_inverted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_inverted.imageset/ic_inverted@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_inverted.imageset/ic_inverted@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_inverted.imageset/ic_inverted@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_inverted_bw.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_inverted_bw.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_inverted_bw@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_inverted_bw@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_inverted_bw.imageset/ic_inverted_bw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_inverted_bw.imageset/ic_inverted_bw.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_inverted_bw.imageset/ic_inverted_bw@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_inverted_bw.imageset/ic_inverted_bw@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_inverted_bw.imageset/ic_inverted_bw@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_inverted_bw.imageset/ic_inverted_bw@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_kalita.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_kalita.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_kalita@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_kalita@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_kalita.imageset/ic_kalita.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_kalita.imageset/ic_kalita.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_kalita.imageset/ic_kalita@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_kalita.imageset/ic_kalita@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_kalita.imageset/ic_kalita@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_kalita.imageset/ic_kalita@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_kone.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_kone.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_kone@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_kone@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_kone.imageset/ic_kone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_kone.imageset/ic_kone.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_kone.imageset/ic_kone@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_kone.imageset/ic_kone@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_kone.imageset/ic_kone@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_kone.imageset/ic_kone@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_machine.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_machine.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_machine@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_machine@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_machine.imageset/ic_machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_machine.imageset/ic_machine.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_machine.imageset/ic_machine@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_machine.imageset/ic_machine@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_machine.imageset/ic_machine@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_machine.imageset/ic_machine@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_newest.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_newest.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_newest@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_newest@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_newest.imageset/ic_newest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_newest.imageset/ic_newest.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_newest.imageset/ic_newest@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_newest.imageset/ic_newest@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_newest.imageset/ic_newest@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_newest.imageset/ic_newest@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_next.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_next.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_next@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_next@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_next.imageset/ic_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_next.imageset/ic_next.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_next.imageset/ic_next@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_next.imageset/ic_next@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_next.imageset/ic_next@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_next.imageset/ic_next@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_notes.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_notes.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_notes@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_notes@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_notes.imageset/ic_notes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_notes.imageset/ic_notes.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_notes.imageset/ic_notes@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_notes.imageset/ic_notes@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_notes.imageset/ic_notes@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_notes.imageset/ic_notes@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_oldest.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_oldest.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_oldest@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_oldest@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_oldest.imageset/ic_oldest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_oldest.imageset/ic_oldest.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_oldest.imageset/ic_oldest@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_oldest.imageset/ic_oldest@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_oldest.imageset/ic_oldest@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_oldest.imageset/ic_oldest@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_previous.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_previous.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_previous@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_previous@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_previous.imageset/ic_previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_previous.imageset/ic_previous.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_previous.imageset/ic_previous@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_previous.imageset/ic_previous@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_previous.imageset/ic_previous@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_previous.imageset/ic_previous@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_history.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_tab_history.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_tab_history@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_tab_history@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_history.imageset/ic_tab_history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_history.imageset/ic_tab_history.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_history.imageset/ic_tab_history@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_history.imageset/ic_tab_history@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_history.imageset/ic_tab_history@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_history.imageset/ic_tab_history@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_history_pressed.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_tab_history_pressed.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_tab_history_pressed@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_tab_history_pressed@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_history_pressed.imageset/ic_tab_history_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_history_pressed.imageset/ic_tab_history_pressed.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_history_pressed.imageset/ic_tab_history_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_history_pressed.imageset/ic_tab_history_pressed@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_history_pressed.imageset/ic_tab_history_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_history_pressed.imageset/ic_tab_history_pressed@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_settings.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_tab_settings.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_tab_settings@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_tab_settings@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_settings.imageset/ic_tab_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_settings.imageset/ic_tab_settings.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_settings.imageset/ic_tab_settings@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_settings.imageset/ic_tab_settings@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_settings.imageset/ic_tab_settings@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_settings.imageset/ic_tab_settings@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_settings_pressed.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_tab_settings_pressed.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_tab_settings_pressed@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_tab_settings_pressed@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_settings_pressed.imageset/ic_tab_settings_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_settings_pressed.imageset/ic_tab_settings_pressed.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_settings_pressed.imageset/ic_tab_settings_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_settings_pressed.imageset/ic_tab_settings_pressed@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_settings_pressed.imageset/ic_tab_settings_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_settings_pressed.imageset/ic_tab_settings_pressed@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_start.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_tab_start.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_tab_start@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_tab_start@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_start.imageset/ic_tab_start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_start.imageset/ic_tab_start.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_start.imageset/ic_tab_start@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_start.imageset/ic_tab_start@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_start.imageset/ic_tab_start@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_start.imageset/ic_tab_start@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_start_pressed.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_tab_start_pressed.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_tab_start_pressed@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_tab_start_pressed@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_start_pressed.imageset/ic_tab_start_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_start_pressed.imageset/ic_tab_start_pressed.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_start_pressed.imageset/ic_tab_start_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_start_pressed.imageset/ic_tab_start_pressed@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tab_start_pressed.imageset/ic_tab_start_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tab_start_pressed.imageset/ic_tab_start_pressed@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tamp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_tamp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_tamp@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_tamp@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tamp.imageset/ic_tamp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tamp.imageset/ic_tamp.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tamp.imageset/ic_tamp@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tamp.imageset/ic_tamp@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_tamp.imageset/ic_tamp@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_tamp.imageset/ic_tamp@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_temp.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_temp.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_temp@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_temp@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_temp.imageset/ic_temp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_temp.imageset/ic_temp.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_temp.imageset/ic_temp@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_temp.imageset/ic_temp@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_temp.imageset/ic_temp@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_temp.imageset/ic_temp@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_time.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_time.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_time@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_time@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_time.imageset/ic_time.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_time.imageset/ic_time.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_time.imageset/ic_time@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_time.imageset/ic_time@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_time.imageset/ic_time@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_time.imageset/ic_time@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_water.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_water.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_water@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_water@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_water.imageset/ic_water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_water.imageset/ic_water.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_water.imageset/ic_water@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_water.imageset/ic_water@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_water.imageset/ic_water@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_water.imageset/ic_water@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_weight.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_weight.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_weight@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_weight@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_weight.imageset/ic_weight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_weight.imageset/ic_weight.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_weight.imageset/ic_weight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_weight.imageset/ic_weight@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_weight.imageset/ic_weight@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_weight.imageset/ic_weight@3x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_worst.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "ic_worst.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "ic_worst@2x.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "filename" : "ic_worst@3x.png",
16 | "scale" : "3x"
17 | }
18 | ],
19 | "info" : {
20 | "version" : 1,
21 | "author" : "xcode"
22 | }
23 | }
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_worst.imageset/ic_worst.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_worst.imageset/ic_worst.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_worst.imageset/ic_worst@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_worst.imageset/ic_worst@2x.png
--------------------------------------------------------------------------------
/Brewer/Resources/Assets.xcassets/ic_worst.imageset/ic_worst@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/Brewer/Resources/Assets.xcassets/ic_worst.imageset/ic_worst@3x.png
--------------------------------------------------------------------------------
/BrewerTests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.1.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 61
23 |
24 |
25 |
--------------------------------------------------------------------------------
/BrewerUITests/BrewerUITests.swift:
--------------------------------------------------------------------------------
1 | //
2 | // BrewerUITests.swift
3 | // BrewerUITests
4 | //
5 | // Created by Maciej Oczko on 31.07.2016.
6 | // Copyright © 2016 Maciej Oczko. All rights reserved.
7 | //
8 |
9 | import XCTest
10 |
11 | class BrewerUITests: XCTestCase {
12 |
13 | override func setUp() {
14 | super.setUp()
15 | continueAfterFailure = false
16 |
17 | let app = XCUIApplication()
18 | app.launchArguments = ["use_mock_data"]
19 | setupSnapshot(app)
20 | app.launch()
21 | }
22 |
23 | override func tearDown() {
24 | super.tearDown()
25 | }
26 |
27 | // It's used for fastlane snapshot purposes
28 | func testExample() {
29 | let app = XCUIApplication()
30 | let tabBarsQuery = app.tabBars
31 | snapshot("01MethodPicker")
32 | tabBarsQuery.buttons["Select Second"].tap()
33 | snapshot("02History")
34 | tabBarsQuery.buttons["Select Third"].tap()
35 | snapshot("03Settings")
36 | XCTAssert(true)
37 | }
38 |
39 | }
40 |
--------------------------------------------------------------------------------
/BrewerUITests/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIdentifier
10 | $(PRODUCT_BUNDLE_IDENTIFIER)
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | $(PRODUCT_NAME)
15 | CFBundlePackageType
16 | BNDL
17 | CFBundleShortVersionString
18 | 1.1.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | 61
23 |
24 |
25 |
--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # 1.0.1 (August 11th, 2016)
2 |
3 | - Fixed adding coffee in new brew process
4 |
5 | # 1.0.0 (August, 2016)
6 |
7 | - Added starting new brew
8 | - Added new brew process
9 | - Added history of brews
10 | - Added brew details
11 | - Added brewing steps sequence settings
12 | - Added units settings
13 |
--------------------------------------------------------------------------------
/External/Box/Box.swift:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2014 Rob Rix. All rights reserved.
2 |
3 | /// Wraps a type `T` in a reference type.
4 | ///
5 | /// Typically this is used to work around limitations of value types (for example, the lack of codegen for recursive value types and type-parameterized enums with >1 case). It is also useful for sharing a single (presumably large) value without copying it.
6 | public final class Box: BoxType, CustomStringConvertible {
7 | /// Initializes a `Box` with the given value.
8 | public init(_ value: T) {
9 | self.value = value
10 | }
11 |
12 |
13 | /// Constructs a `Box` with the given `value`.
14 | public class func unit(_ value: T) -> Box {
15 | return Box(value)
16 | }
17 |
18 |
19 | /// The (immutable) value wrapped by the receiver.
20 | public let value: T
21 |
22 | /// Constructs a new Box by transforming `value` by `f`.
23 | public func map(_ f: (T) -> U) -> Box {
24 | return Box(f(value))
25 | }
26 |
27 |
28 | // MARK: Printable
29 |
30 | public var description: String {
31 | return String(describing: value)
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/External/Box/BoxType.swift:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2014 Rob Rix. All rights reserved.
2 |
3 | // MARK: BoxType
4 |
5 | /// The type conformed to by all boxes.
6 | public protocol BoxType {
7 | /// The type of the wrapped value.
8 | associatedtype Value
9 |
10 | /// Initializes an intance of the type with a value.
11 | init(_ value: Value)
12 |
13 | /// The wrapped value.
14 | var value: Value { get }
15 | }
16 |
17 | /// The type conformed to by mutable boxes.
18 | public protocol MutableBoxType: BoxType {
19 | /// The (mutable) wrapped value.
20 | var value: Value { get set }
21 | }
22 |
23 |
24 | // MARK: Equality
25 |
26 | /// Equality of `BoxType`s of `Equatable` types.
27 | ///
28 | /// We cannot declare that e.g. `Box` conforms to `Equatable`, so this is a relatively ad hoc definition.
29 | public func == (lhs: B, rhs: B) -> Bool where B.Value: Equatable {
30 | return lhs.value == rhs.value
31 | }
32 |
33 | /// Inequality of `BoxType`s of `Equatable` types.
34 | ///
35 | /// We cannot declare that e.g. `Box` conforms to `Equatable`, so this is a relatively ad hoc definition.
36 | public func != (lhs: B, rhs: B) -> Bool where B.Value: Equatable {
37 | return lhs.value != rhs.value
38 | }
39 |
40 |
41 | // MARK: Map
42 |
43 | /// Maps the value of a box into a new box.
44 | public func map(_ v: B, f: (B.Value) -> C.Value) -> C {
45 | return C(f(v.value))
46 | }
47 |
--------------------------------------------------------------------------------
/External/Box/MutableBox.swift:
--------------------------------------------------------------------------------
1 | // Copyright (c) 2014 Rob Rix. All rights reserved.
2 |
3 | /// Wraps a type `T` in a mutable reference type.
4 | ///
5 | /// While this, like `Box` could be used to work around limitations of value types, it is much more useful for sharing a single mutable value such that mutations are shared.
6 | ///
7 | /// As with all mutable state, this should be used carefully, for example as an optimization, rather than a default design choice. Most of the time, `Box` will suffice where any `BoxType` is needed.
8 | public final class MutableBox: MutableBoxType, CustomStringConvertible {
9 | /// Initializes a `MutableBox` with the given value.
10 | public init(_ value: T) {
11 | self.value = value
12 | }
13 |
14 | /// The (mutable) value wrapped by the receiver.
15 | public var value: T
16 |
17 | /// Constructs a new MutableBox by transforming `value` by `f`.
18 | public func map(_ f: (T) -> U) -> MutableBox {
19 | return MutableBox(f(value))
20 | }
21 |
22 | // MARK: Printable
23 |
24 | public var description: String {
25 | return String(describing: value)
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/GeneratedAssets/ic_add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_add.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_add@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_add@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_add@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_add@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_aeropress.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_aeropress.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_aeropress@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_aeropress@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_aeropress@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_aeropress@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_arrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_arrow.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_arrow@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_arrow@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_arrow@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_arrow@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_back.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_back@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_back@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_back@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_back@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_best.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_best.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_best@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_best@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_best@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_best@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_chemex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_chemex.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_chemex@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_chemex@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_chemex@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_chemex@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_close.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_close@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_close@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_close@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_close@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_coffee.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_coffee.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_coffee@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_coffee@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_coffee@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_coffee@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_coffee_machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_coffee_machine.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_coffee_machine@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_coffee_machine@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_coffee_machine@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_coffee_machine@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_done.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_done@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_done@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_done@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_done@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_drip.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_drip.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_drip@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_drip@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_drip@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_drip@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_empty_history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_empty_history.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_empty_history@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_empty_history@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_empty_history@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_empty_history@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_filter.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_filter.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_filter@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_filter@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_filter@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_filter@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_grind.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_grind.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_grind@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_grind@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_grind@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_grind@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_inverted.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_inverted.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_inverted@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_inverted@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_inverted@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_inverted@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_machine.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_machine@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_machine@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_machine@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_machine@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_newest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_newest.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_newest@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_newest@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_newest@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_newest@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_next.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_next@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_next@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_next@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_next@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_notes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_notes.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_notes@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_notes@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_notes@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_notes@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_oldest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_oldest.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_oldest@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_oldest@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_oldest@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_oldest@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_previous.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_previous.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_previous@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_previous@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_previous@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_previous@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_history.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_history@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_history@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_history@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_history@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_history_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_history_pressed.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_history_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_history_pressed@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_history_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_history_pressed@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_settings.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_settings@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_settings@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_settings@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_settings@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_settings_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_settings_pressed.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_settings_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_settings_pressed@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_settings_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_settings_pressed@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_start.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_start.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_start@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_start@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_start@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_start@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_start_pressed.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_start_pressed.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_start_pressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_start_pressed@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tab_start_pressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tab_start_pressed@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tamp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tamp.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tamp@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tamp@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_tamp@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_tamp@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_temp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_temp.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_temp@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_temp@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_temp@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_temp@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_time.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_time.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_time@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_time@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_time@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_time@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_water.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_water.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_water@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_water@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_water@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_water@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_weight.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_weight.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_weight@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_weight@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_weight@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_weight@3x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_worst.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_worst.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_worst@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_worst@2x.png
--------------------------------------------------------------------------------
/GeneratedAssets/ic_worst@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Dropnote/Dropnote-iOS/ae40452930c0082782e137a364585a3ec7197717/GeneratedAssets/ic_worst@3x.png
--------------------------------------------------------------------------------
/Podfile:
--------------------------------------------------------------------------------
1 | source 'https://github.com/CocoaPods/Specs.git'
2 |
3 | platform :ios, '9.0'
4 |
5 | inhibit_all_warnings!
6 | use_frameworks!
7 |
8 | target :Brewer do
9 | pod 'Swinject', '~> 2.0.0-beta.2'
10 | pod 'SwinjectStoryboard', '~> 1.0.0-beta.2'
11 |
12 | pod 'RxSwift', '~> 3.0.1'
13 | pod 'RxCocoa', '~> 3.0.1'
14 |
15 | pod 'ObjectMapper'
16 | pod 'XCGLogger', '~> 4.0.0'
17 | pod 'FormatterKit'
18 | pod 'DZNEmptyDataSet'
19 |
20 | pod 'Google/Analytics'
21 | pod 'Fabric'
22 | pod 'Crashlytics'
23 |
24 | target :BrewerTests do
25 |
26 | pod 'Quick'
27 | pod 'Nimble', '~> 5.0.0'
28 | pod 'RxTest', '~> 3.0.1'
29 | pod 'RxBlocking', '~> 3.0.1'
30 | end
31 |
32 | end
33 |
34 | post_install do |installer|
35 | installer.pods_project.targets.each do |target|
36 | target.build_configurations.each do |config|
37 | config.build_settings['SWIFT_VERSION'] = '3.0'
38 | config.build_settings['MACOSX_DEPLOYMENT_TARGET'] = '10.10'
39 | end
40 | end
41 | end
42 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Dropnote
2 |
3 | ## Introduction
4 |
5 | [Dropnote](http://dropnote.today) - your personal coffee brewings diary.
6 |
7 | Download on the [App Store](https://itunes.apple.com/us/app/dropnote-coffee-brewing-notebook/id1112293581).
8 |
9 | ## Why is it public repo?
10 |
11 | There are a few reasons. The main one is sharing knowledge and opinions.
12 |
13 | I'd like to learn throught discussions, open issues and code/design changes.
14 | I hope that it may also be a learning opportunity or interesting experience for others.
15 |
16 | If you want to know more about code base, its design and used patterns (or made mistakes) take a look at [app design page](APPDESIGN.md).
17 |
18 | ## Installation
19 |
20 | - Clone the repo to working directory
21 | - Dependencies are managed with [CocoaPods](https://cocoapods.org), so you have to run:
22 | ```
23 | pod install
24 | ```
25 | If you don't have CocoaPods installed, run:
26 | ```
27 | [sudo] gem install cocoapods
28 | ```
29 | - Open the `Brewer.xcworkspace` in Xcode:
30 | ```
31 | open Brewer.xcworkspace
32 | ```
33 |
34 | ### What does _Brewer_ name refer to?
35 |
36 | _Brewer_ is the initial name (current code name) of the project. _Dropnote_ was made up much later.
37 |
38 | ## Planned features
39 |
40 | Look [here](https://github.com/Dropnote/Dropnote-iOS/issues/2).
41 |
42 | ## Contributing
43 |
44 | Honestly, I don't expect much contribution in this personal project, but if you find a bug I'd appreciate an issue or pull request.
45 |
46 | Primarily, I'd love to hear feedback about code design or used solutions.
47 |
48 | ## Acknowledgements
49 |
50 | Dropnote is desinged by [Gosia](https://www.linkedin.com/in/gosiafiedorow).
51 |
52 | Thanks to translators:
53 |
54 | - [Magda Zadara](https://www.linkedin.com/in/magdalena-zadara-a8a97153) - German
55 | - [Rafał Tulwin](https://www.linkedin.com/in/rtulwin) - Spanish
56 | - Adrien Julé - French
57 |
--------------------------------------------------------------------------------
/VectorAssets/ic_add.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_arrow.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_back.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_best.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_close.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_coffee.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_done.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_empty_history.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_filter.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_grind.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_newest.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_next.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_notes.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_previous.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_tamp.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_temp.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_time.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_water.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_weight.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/VectorAssets/ic_worst.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/fastlane/Appfile:
--------------------------------------------------------------------------------
1 | app_identifier "pl.maciejoczko.Dropnote" # The bundle identifier of your app
2 | apple_id "maciejoczko@gmail.com" # Your Apple email address
3 |
4 | team_id "N7LF5KBDPY" # Developer Portal Team ID
5 |
6 | # you can even provide different app identifiers, Apple IDs and team names per lane:
7 | # More information: https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Appfile.md
8 |
--------------------------------------------------------------------------------
/fastlane/Deliverfile:
--------------------------------------------------------------------------------
1 | ###################### More Options ######################
2 | # If you want to have even more control, check out the documentation
3 | # https://github.com/fastlane/fastlane/blob/master/deliver/Deliverfile.md
4 |
5 |
6 | ###################### Automatically generated ######################
7 | # Feel free to remove the following line if you use fastlane (which you should)
8 |
9 | app_identifier "pl.maciejoczko.Dropnote" # The bundle identifier of your app
10 | username "maciejoczko@gmail.com" # your Apple ID user
11 |
--------------------------------------------------------------------------------
/fastlane/Snapfile:
--------------------------------------------------------------------------------
1 | devices([
2 | "iPhone 7 Plus",
3 | "iPhone 7",
4 | "iPhone SE",
5 | "iPad Pro (9.7 inch)",
6 | "iPad Pro (12.9 inch)"
7 | ])
8 |
9 | languages([
10 | "en-US",
11 | "pl-PL",
12 | "de-DE",
13 | "es-ES",
14 | "fr-FR"
15 | ])
16 |
17 | workspace "./Brewer.xcworkspace"
18 | scheme "UITests"
19 |
20 | reinstall_app
21 | stop_after_first_error true
22 | clear_previous_screenshots true
23 | launch_arguments(["use_mock_data"])
24 |
--------------------------------------------------------------------------------
/swiftgen-images:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | swiftgen images -t swift3 Brewer/Resources/Assets.xcassets --output Brewer/Classes/Shared/Utilities/Assets.swift
3 |
--------------------------------------------------------------------------------
/swiftgen-strings:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | swiftgen strings -t swift3 Brewer/Resources/en.lproj/Localizable.strings --output Brewer/Classes/Shared/Utilities/Localizable.swift
3 |
--------------------------------------------------------------------------------