void Applications::setContextActions(int index, Lancelot::PopupMenu * menu) { if (isCategory(index)) { return; } menu->addAction(KIcon("list-add"), i18n("Add to Favorites")) ->setData(QVariant(0)); }
PMRuleContains::PMRuleContains( QDomElement& e, QPtrList<PMRuleDefineGroup>& globalGroups, QPtrList<PMRuleDefineGroup>& localGroups ) : PMRuleCondition( ) { m_contains = false; QDomNode m = e.firstChild( ); while( !m.isNull( ) ) { if( m.isElement( ) ) { QDomElement me = m.toElement( ); if( isCategory( me ) ) m_categories.append( newCategory( me, globalGroups, localGroups ) ); } m = m.nextSibling( ); } }
PMRuleCount::PMRuleCount( QDomElement& e, QPtrList<PMRuleDefineGroup>& globalGroups, QPtrList<PMRuleDefineGroup>& localGroups ) : PMRuleValue( ) { m_number = 0; QDomNode m = e.firstChild( ); while( !m.isNull( ) ) { if( m.isElement( ) ) { QDomElement me = m.toElement( ); if( isCategory( me ) ) m_categories.append( newCategory( me, globalGroups, localGroups ) ); } m = m.nextSibling( ); } }
PMRuleDefineGroup::PMRuleDefineGroup( QDomElement& e, QPtrList<PMRuleDefineGroup>& globalGroups, QPtrList<PMRuleDefineGroup>& localGroups ) { m_name = e.attribute( "name" ); if( m_name.isEmpty( ) ) kdError( PMArea ) << "RuleSystem: Invalid group name" << endl; QDomNode m = e.firstChild( ); while( !m.isNull( ) ) { if( m.isElement( ) ) { QDomElement me = m.toElement( ); if( isCategory( me ) ) m_categories.append( newCategory( me, globalGroups, localGroups ) ); } m = m.nextSibling( ); } }
PMRule::PMRule( QDomElement& e, QPtrList<PMRuleDefineGroup>& globalGroups, QPtrList<PMRuleDefineGroup>& localGroups ) : PMRuleBase( ) { m_pCondition = 0; QDomNode m = e.firstChild( ); while( !m.isNull( ) && !m_pCondition ) { if( m.isElement( ) ) { QDomElement me = m.toElement( ); if( isCategory( me ) ) m_categories.append( newCategory( me, globalGroups, localGroups ) ); else if( isCondition( me ) ) { m_pCondition = newCondition( me, globalGroups, localGroups ); m_children.append( m_pCondition ); } } m = m.nextSibling( ); } }
bool Applications::hasContextActions(int index) const { return !isCategory(index); }
void CFavoriteLocationsEditor::contextMenu(const QPoint & pos) { auto item = dynamic_cast<CFavoriteLocationsListItem*>(ui->_list->itemAt(pos)); QMenu menu; QAction * addItemAction = nullptr; if (!item || item->isCategory()) addItemAction = menu.addAction(tr("Add item...")); else { addItemAction = menu.addAction(tr("You can only add nested items to categories, not to end items")); addItemAction->setEnabled(false); } connect(addItemAction, &QAction::triggered, [this, item](){ CNewFavoriteLocationDialog dialog(this, false); if (dialog.exec() == QDialog::Accepted) { std::list<CLocationsCollection>& list = item ? item->itemIterator()->subLocations : _locations.locations(); if (std::find_if(list.cbegin(), list.cend(), [&dialog](const CLocationsCollection& entry){return entry.absolutePath == dialog.location();}) != list.cend()) { QMessageBox::information(dynamic_cast<QWidget*>(parent()), tr("Similar item already exists"), tr("This item already exists here (possibly under a different name)."), QMessageBox::Cancel); return; } else if (std::find_if(list.cbegin(), list.cend(), [&dialog](const CLocationsCollection& entry){return entry.displayName == dialog.name();}) != list.cend()) { QMessageBox::information(dynamic_cast<QWidget*>(parent()), tr("Similar item already exists"), tr("And item with the same name already exists here (possibly pointing to a different location)."), QMessageBox::Cancel); return; } _locations.addItem(list, dialog.name(), dialog.location()); if (item) { new CFavoriteLocationsListItem(item, list, --list.end(), false); item->setExpanded(true); } else new CFavoriteLocationsListItem(ui->_list, list, --list.end(), false); } }); connect(menu.addAction(tr("Add category...")), &QAction::triggered, [this, item](){ CNewFavoriteLocationDialog dialog(this, true); if (dialog.exec() == QDialog::Accepted) { std::list<CLocationsCollection>& list = item ? item->itemIterator()->subLocations : _locations.locations(); if (std::find_if(list.cbegin(), list.cend(), [&dialog](const CLocationsCollection& entry){return entry.displayName == dialog.name();}) != list.cend()) { QMessageBox::information(dynamic_cast<QWidget*>(parent()), tr("Similar item already exists"), tr("And item with the same name already exists here (possibly pointing to a different location)."), QMessageBox::Cancel); return; } _locations.addItem(list, dialog.name()); if (item) { new CFavoriteLocationsListItem(item, list, --list.end(), true); item->setExpanded(true); } else new CFavoriteLocationsListItem(ui->_list, list, --list.end(), true); } }); if (item) { connect(menu.addAction(tr("Remove item")), &QAction::triggered, [this, item]() { if (item->isCategory()) { if (QMessageBox::question(this, tr("Delete the item?"), tr("Are you sure you want to delete this category and all its sub-items?")) == QMessageBox::Yes) { item->list().erase(item->itemIterator()); delete item; } } else { item->list().erase(item->itemIterator()); delete item; } _locations.save(); }); } menu.exec(ui->_list->mapToGlobal(pos)); }
//------------------------------------------------------------------------------ // Name: handleMousePress(QTreeWidgetItem *item) // Desc: //------------------------------------------------------------------------------ void QCategoryList::handleMousePress(QTreeWidgetItem *item) { if(isCategory(item)) { setItemExpanded(item, !isItemExpanded(item)); } }