void KOTodoViewQuickSearch::fillCategories() { QStringList currentCategories = mCategoryCombo->checkedItems(); mCategoryCombo->clear(); QStringList categories; if ( mCalendar ) { CalFilter *filter = mCalendar->filter(); if ( filter->criteria() & CalFilter::ShowCategories ) { categories = filter->categoryList(); categories.sort(); } else { categories = KOPrefs::instance()->mCustomCategories; QStringList filterCategories = filter->categoryList(); categories.sort(); filterCategories.sort(); QStringList::Iterator it = categories.begin(); QStringList::Iterator jt = filterCategories.begin(); while ( it != categories.end() && jt != filterCategories.end() ) { if ( *it == *jt ) { it = categories.erase( it ); jt++; } else if ( *it < *jt ) { it++; } else if ( *it > *jt ) { jt++; } } } } CategoryHierarchyReaderQComboBox( mCategoryCombo ).read( categories ); QStandardItemModel *model = qobject_cast<QStandardItemModel *>( mCategoryCombo->model() ); Q_ASSERT( model ); for ( int r = 0; r < model->rowCount(); ++r ) { QStandardItem *item = model->item( r ); item->setCheckable( true ); } mCategoryCombo->setCheckedItems( currentCategories ); }
QWidget *KOTodoCategoriesDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const { Q_UNUSED( option ); Q_UNUSED( index ); KCheckComboBox *combo = new KCheckComboBox( parent ); QStringList categories; if ( mCalendar ) { CalFilter *filter = mCalendar->filter(); if ( filter->criteria() & CalFilter::ShowCategories ) { categories = filter->categoryList(); categories.sort(); } else { CalendarSupport::CategoryConfig cc( KOPrefs::instance() ); categories = cc.customCategories(); QStringList filterCategories = filter->categoryList(); categories.sort(); filterCategories.sort(); QStringList::Iterator it = categories.begin(); QStringList::Iterator jt = filterCategories.begin(); while ( it != categories.end() && jt != filterCategories.end() ) { if ( *it == *jt ) { it = categories.erase( it ); jt++; } else if ( *it < *jt ) { it++; } else if ( *it > *jt ) { jt++; } } } } IncidenceEditorNG::CategoryHierarchyReaderQComboBox( combo ).read( categories ); // TODO test again with newer version of Qt, if it manages then to move // the popup together with the combobox. //combo->showPopup(); return combo; }
void KOTodoViewQuickSearch::fillCategories() { QStringList currentCategories = mCategoryCombo->checkedItems( Qt::UserRole ); mCategoryCombo->clear(); QStringList categories; if ( mCalendar ) { CalFilter *filter = mCalendar->filter(); if ( filter->criteria() & CalFilter::ShowCategories ) { categories = filter->categoryList(); categories.sort(); } else { CategoryConfig cc( KOPrefs::instance() ); categories = cc.customCategories(); QStringList filterCategories = filter->categoryList(); categories.sort(); filterCategories.sort(); QStringList::Iterator it = categories.begin(); QStringList::Iterator jt = filterCategories.begin(); while ( it != categories.end() && jt != filterCategories.end() ) { if ( *it == *jt ) { it = categories.erase( it ); jt++; } else if ( *it < *jt ) { it++; } else if ( *it > *jt ) { jt++; } } } } IncidenceEditorNG::CategoryHierarchyReaderQComboBox( mCategoryCombo ).read( categories ); mCategoryCombo->setCheckedItems( currentCategories, Qt::UserRole ); }