コード例 #1
0
ファイル: Applications.cpp プロジェクト: KDE/kdeplasma-addons
void Applications::setContextActions(int index, Lancelot::PopupMenu * menu)
{
    if (isCategory(index)) {
        return;
    }

    menu->addAction(KIcon("list-add"), i18n("Add to Favorites"))
        ->setData(QVariant(0));
}
コード例 #2
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( );
   }
}
コード例 #3
0
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( );
   }
}
コード例 #4
0
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( );
   }
}
コード例 #5
0
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( );
   }
}
コード例 #6
0
ファイル: Applications.cpp プロジェクト: KDE/kdeplasma-addons
bool Applications::hasContextActions(int index) const
{
    return !isCategory(index);
}
コード例 #7
0
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));
}
コード例 #8
0
ファイル: QCategoryList.cpp プロジェクト: avplayer/avdbg
//------------------------------------------------------------------------------
// Name: handleMousePress(QTreeWidgetItem *item)
// Desc:
//------------------------------------------------------------------------------
void QCategoryList::handleMousePress(QTreeWidgetItem *item) {
	if(isCategory(item)) {
	    setItemExpanded(item, !isItemExpanded(item));
	}
}