void ListView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) { QListView::selectionChanged(selected, deselected); bool haveSelection=haveSelectedItems(); setContextMenuPolicy(haveSelection ? Qt::ActionsContextMenu : (menu ? Qt::CustomContextMenu : Qt::NoContextMenu)); emit itemsSelected(haveSelection); }
IngredientMatcherDialog::IngredientMatcherDialog( QWidget *parent, RecipeDB *db ) : QSplitter( parent ) { // Initialize internal variables database = db; //Design the dialog setOrientation( Qt::Vertical ); setChildrenCollapsible( false ); QWidget * upperBox = new QWidget( this ); // Ingredient list QHBoxLayout *layout2 = new QHBoxLayout; layout2->setObjectName( "layout2" ); allIngListView = new KreListView( this, QString(), true, 0 ); StdIngredientListView *list_view = new StdIngredientListView(allIngListView,database); list_view->setSelectionMode( Q3ListView::Multi ); allIngListView->setListView(list_view); layout2->addWidget( allIngListView ); allIngListView->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); QVBoxLayout *layout1 = new QVBoxLayout; layout1->addStretch(); layout1->setObjectName( "layout1" ); addButton = new KPushButton; addButton->setObjectName( "addButton" ); addButton->setIcon( KIcon( "arrow-right" ) ); addButton->setFixedSize( QSize( 32, 32 ) ); layout1->addWidget( addButton ); removeButton = new KPushButton; removeButton->setObjectName( "removeButton" ); removeButton->setIcon( KIcon( "arrow-left" ) ); removeButton->setFixedSize( QSize( 32, 32 ) ); layout1->addWidget( removeButton ); layout1->addStretch(); layout2->addLayout( layout1 ); ingListView = new KreListView( this, QString(), true ); ingListView->listView() ->addColumn( i18nc( "@title:column", "Ingredient (required?)" ) ); ingListView->listView() ->addColumn( i18nc( "@title:column", "Amount Available" ) ); layout2->addWidget( ingListView ); upperBox->setLayout( layout2 ); addWidget( upperBox ); ingListView->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); KVBox * lowerBox = new KVBox( this ); // Box to select allowed number of missing ingredients missingBox = new KHBox( lowerBox ); missingNumberLabel = new QLabel( missingBox ); missingNumberLabel->setText( i18nc( "@label:spinbox Number of missing ingredients allowed when doing a search by ingredients", "Missing ingredients allowed:" ) ); missingNumberSpinBox = new KIntSpinBox( missingBox ); missingNumberSpinBox->setMinimum( -1 ); missingNumberSpinBox->setSpecialValueText( i18nc( "@item Any amount of ingredients missing when doing a search by ingredients", "Any" ) ); // Found recipe list recipeListView = new KreListView( lowerBox, i18nc( "@title", "Matching Recipes" ), false, 1, missingBox ); recipeListView->listView() ->setAllColumnsShowFocus( true ); recipeListView->listView() ->addColumn( i18nc( "@title:column Recipe Title", "Title" ) ); KConfigGroup config( KGlobal::config(), "Advanced" ); bool show_id = config.readEntry( "ShowID", false ); recipeListView->listView() ->addColumn( "Id" , show_id ? -1 : 0 ); recipeListView->listView()->addColumn( i18nc( "@title:column Missing ingredients in a search result", "Missing Ingredients" ) ); recipeListView->listView() ->setSorting( -1 ); recipeListView->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Preferred ); actionHandler = new RecipeActionsHandler( recipeListView->listView(), database ); KHBox *buttonBox = new KHBox( lowerBox ); okButton = new KPushButton( buttonBox ); okButton->setIcon( KIcon( "dialog-ok" ) ); okButton->setText( i18nc( "@action:button", "Find matching recipes" ) ); //buttonBox->layout()->addItem( new QSpacerItem( 10,10, QSizePolicy::MinimumExpanding, QSizePolicy::Fixed ) ); clearButton = new KPushButton( buttonBox ); clearButton->setIcon( KIcon( "edit-clear" ) ); clearButton->setText( i18nc( "@action:button Clear search criteria", "Clear" ) ); addWidget( lowerBox ); // Connect signals & slots connect ( okButton, SIGNAL( clicked() ), this, SLOT( findRecipes() ) ); connect ( clearButton, SIGNAL( clicked() ), recipeListView->listView(), SLOT( clear() ) ); connect ( clearButton, SIGNAL( clicked() ), this, SLOT( unselectIngredients() ) ); connect( recipeListView->listView(), SIGNAL( selectionChanged() ), this, SLOT( haveSelectedItems() ) ); connect ( actionHandler, SIGNAL( recipeSelected( int, int ) ), SIGNAL( recipeSelected( int, int ) ) ); connect( addButton, SIGNAL( clicked() ), this, SLOT( addIngredient() ) ); connect( removeButton, SIGNAL( clicked() ), this, SLOT( removeIngredient() ) ); connect( ingListView->listView(), SIGNAL( doubleClicked( Q3ListViewItem*, const QPoint &, int ) ), SLOT( itemRenamed( Q3ListViewItem*, const QPoint &, int ) ) ); }