| 802 | } |
| 803 | |
| 804 | void UIBuildSettings::bindTable( const std::string& name, const std::string& key, |
| 805 | ProjectBuildKeyVal& data ) { |
| 806 | |
| 807 | UITableView* table = find<UITableView>( name ); |
| 808 | auto model = ItemPairListModel<std::string, std::string>::create( data ); |
| 809 | const auto createInputDelegate = [table]( const ModelIndex& ) -> ModelEditingDelegate* { |
| 810 | auto delegate = StringModelEditingDelegate::New(); |
| 811 | delegate->onWillBeginEditing = [delegate, table]() { |
| 812 | delegate->getWidget()->asType<UITextInput>()->on( Event::OnFocusLoss, |
| 813 | [delegate, table]( auto ) { |
| 814 | delegate->onCommit(); |
| 815 | table->recalculateColumnsWidth(); |
| 816 | } ); |
| 817 | }; |
| 818 | return delegate; |
| 819 | }; |
| 820 | model->setColumnName( 0, i18n( key + "_name", "Name" ) ); |
| 821 | model->setColumnName( 1, i18n( key + "_value", "Value" ) ); |
| 822 | model->setIsEditable( true ); |
| 823 | table->setMainColumn( 1 ); |
| 824 | table->setAutoColumnsWidth( true ); |
| 825 | table->setFitAllColumnsToWidget( true ); |
| 826 | table->setModel( model ); |
| 827 | table->setEditable( true ); |
| 828 | table->setSelectionType( UIAbstractView::SelectionType::Cell ); |
| 829 | table->setEditTriggers( UIAbstractView::EditTrigger::DoubleClicked | |
| 830 | UIAbstractTableView::EditTrigger::EditKeyPressed ); |
| 831 | table->onCreateEditingDelegate = createInputDelegate; |
| 832 | |
| 833 | find<UIPushButton>( "custom_" + key + "_add" )->onClick( [this, model, &data]( auto ) { |
| 834 | data.push_back( { i18n( "new_name", "New Name" ), i18n( "new_value", "New Value" ) } ); |
| 835 | model->invalidate(); |
| 836 | } ); |
| 837 | |
| 838 | find<UIPushButton>( "custom_" + key + "_del" )->onClick( [model, table, &data]( auto ) { |
| 839 | if ( !table->getSelection().isEmpty() ) { |
| 840 | data.erase( data.begin() + table->getSelection().first().row() ); |
| 841 | model->invalidate(); |
| 842 | } |
| 843 | } ); |
| 844 | } |
| 845 | |
| 846 | void UIBuildSettings::moveStepUp( size_t stepNum, bool isClean ) { |
| 847 | moveStepDir( stepNum, isClean, -1 ); |
nothing calls this directly
no test coverage detected