| 243 | } |
| 244 | |
| 245 | int CFrmManagePlugins::SetFilterHeader() |
| 246 | { |
| 247 | if(!m_pModelFilter) return -1; |
| 248 | auto pWhitelist = new QStandardItem(tr("Whitelist")); |
| 249 | pWhitelist->setToolTip(pWhitelist->text()); |
| 250 | pWhitelist->setCheckable(true); |
| 251 | m_pModelFilter->setHorizontalHeaderItem(ColumnNo::Whitelist, pWhitelist); |
| 252 | auto pBlacklist = new QStandardItem(tr("Blacklist")); |
| 253 | pBlacklist->setToolTip(pBlacklist->text()); |
| 254 | pBlacklist->setCheckable(true); |
| 255 | m_pModelFilter->setHorizontalHeaderItem(ColumnNo::Blacklist, pBlacklist); |
| 256 | m_pModelFilter->setHorizontalHeaderItem(ColumnNo::Name, new QStandardItem(tr("Name"))); |
| 257 | m_pModelFilter->setHorizontalHeaderItem(ColumnNo::Type, new QStandardItem(tr("Type"))); |
| 258 | m_pModelFilter->setHorizontalHeaderItem(ColumnNo::File, new QStandardItem(tr("File"))); |
| 259 | |
| 260 | if(qobject_cast<CCheckBoxHeader*>(ui->tvFilter->horizontalHeader())) |
| 261 | return 0; |
| 262 | |
| 263 | auto pHeader = new CCheckBoxHeader(Qt::Horizontal, ui->tvFilter); |
| 264 | if(pHeader) { |
| 265 | ui->tvFilter->setHorizontalHeader(pHeader); |
| 266 | bool check = false; |
| 267 | check = connect(pHeader, &CCheckBoxHeader::sigCheckStateChanged, |
| 268 | this, [this](int index, Qt::CheckState state) { |
| 269 | qDebug(log) << "CCheckBoxHeader::sigCheckStateChanged"; |
| 270 | for(int row = 0; row < m_pModelFilter->rowCount(); row++) { |
| 271 | auto item = m_pModelFilter->item(row, index); |
| 272 | switch(state) |
| 273 | { |
| 274 | case Qt::PartiallyChecked: { |
| 275 | QString szPath = m_pModelFilter->item(row, ColumnNo::File)->text(); |
| 276 | if(ColumnNo::Whitelist == index) { |
| 277 | if(m_pPara->m_WhiteList.contains(szPath)) |
| 278 | item->setCheckState(Qt::Checked); |
| 279 | else |
| 280 | item->setCheckState(Qt::Unchecked); |
| 281 | } |
| 282 | if(ColumnNo::Blacklist == index) { |
| 283 | if(m_pPara->m_BlackList.contains(szPath)) |
| 284 | item->setCheckState(Qt::Checked); |
| 285 | else |
| 286 | item->setCheckState(Qt::Unchecked); |
| 287 | } |
| 288 | break; |
| 289 | } |
| 290 | default: |
| 291 | item->setCheckState(state); |
| 292 | break; |
| 293 | } |
| 294 | } |
| 295 | }); |
| 296 | Q_ASSERT(check); |
| 297 | } |
| 298 | |
| 299 | return 0; |
| 300 | } |
| 301 | |
| 302 | void CFrmManagePlugins::slotFilterItemChanged(QStandardItem *item) |