void SharedFilesDialog::postModDirectories(bool local) { if (isRemote() == local) { return; } std::set<std::string> expanded_indexes,selected_indexes; saveExpandedPathsAndSelection(expanded_indexes,selected_indexes) ; #ifdef DEBUG_SHARED_FILES_DIALOG std::cerr << "Saving expanded items. " << expanded_indexes.size() << " items found" << std::endl; #endif /* Notify both models, only one is visible */ tree_model->postMods(); flat_model->postMods(); ui.dirTreeView->update() ; restoreExpandedPathsAndSelection(expanded_indexes,selected_indexes) ; if (ui.filterPatternLineEdit->text().isEmpty() == false) FilterItems(); #ifdef DEBUG_SHARED_FILES_DIALOG std::cerr << "****** updated directories! ******" << std::endl; #endif QCoreApplication::flush(); }
/* clear Filter */ void SharedFilesDialog::startFilter() { ui.filterStartButton->hide(); lastFilterString = ui.filterPatternLineEdit->text(); FilterItems(); }
void NetworkDialog::filterRegExpChanged() { QString text = ui.filterPatternLineEdit->text(); if (text.isEmpty()) { ui.clearButton->hide(); } else { ui.clearButton->show(); } FilterItems(); }
void SharedFilesDialog::changeCurrentViewModel(int viewTypeIndex) { // disconnect( ui.dirTreeView, SIGNAL( collapsed(const QModelIndex & ) ), NULL, NULL ); // disconnect( ui.dirTreeView, SIGNAL( expanded(const QModelIndex & ) ), NULL, NULL ); if(model!=NULL) model->setVisible(false) ; if(viewTypeIndex==VIEW_TYPE_TREE) { model = tree_model ; proxyModel = tree_proxyModel ; } else { model = flat_model ; proxyModel = flat_proxyModel ; } showProperColumns() ; std::set<std::string> expanded_indexes,selected_indexes ; saveExpandedPathsAndSelection(expanded_indexes,selected_indexes); if(isVisible()) { model->setVisible(true) ; model->update() ; } // connect( ui.dirTreeView, SIGNAL( collapsed(const QModelIndex & ) ), this, SLOT( collapsed(const QModelIndex & ) ) ); ui.dirTreeView->setModel(proxyModel); ui.dirTreeView->update(); restoreExpandedPathsAndSelection(expanded_indexes,selected_indexes); QHeaderView * header = ui.dirTreeView->header () ; QHeaderView_setSectionResizeModeColumn(header, COLUMN_NAME, QHeaderView::Interactive); ui.dirTreeView->header()->headerDataChanged(Qt::Horizontal, COLUMN_NAME, COLUMN_DIR) ; // recursRestoreExpandedItems(ui.dirTreeView->rootIndex(),expanded_indexes); FilterItems(); }
void Search::Activate(const Items &items, QTreeView *tree) { FromForm(); FilterItems(items); sortFilter_->setSourceModel(model_.get()); if (tree->model() == 0) { tree->setModel(sortFilter_.get()); } // Set headers for (int i = 0; i < tree->header()->count(); i++) { tree->header()->setSectionHidden(i, hiddenColumns_.contains(i)); int from = tree->header()->visualIndex(i); int to = i; if (columnsMap_.contains(i)) { to = columnsMap_.value(i); } if (to != from) tree->header()->swapSections(from, to); } // Set expanded if (!expandedHashs_.isEmpty()) { tree->blockSignals(true); tree->setUpdatesEnabled(false); for (int i = 0; i < sortFilter_->rowCount(); i++) { QModelIndex index = sortFilter_->index(i, 0); QString hash = sortFilter_->data(index, ItemsModel::HashRole).toString(); if (expandedHashs_.contains(hash)) { tree->setExpanded(index, true); } } tree->setUpdatesEnabled(true); tree->blockSignals(false); } }
void NetworkDialog::filterColumnChanged() { FilterItems(); }
/* get the list of Neighbours from the RsIface. */ void NetworkDialog::insertConnect() { static time_t last_time = 0 ; if (!rsPeers) return; if (ui.showUnvalidKeys->isChecked()) { ui.unvalidGPGkeyWidget->show(); } else { ui.unvalidGPGkeyWidget->hide(); } // Because this is called from a qt signal, there's no limitation between calls. time_t now = time(NULL); if(last_time + 5 > now) // never update more often then every 5 seconds. return ; last_time = now ; std::list<std::string> neighs; //these are GPG ids std::list<std::string>::iterator it; rsPeers->getGPGAllList(neighs); /* get a link to the table */ QTreeWidget *connectWidget = ui.connecttreeWidget; //remove items int index = 0; while (index < connectWidget->topLevelItemCount()) { std::string gpg_widget_id = (connectWidget->topLevelItem(index))->text(COLUMN_PEERID).toStdString(); RsPeerDetails detail; if (!rsPeers->getGPGDetails(gpg_widget_id, detail) || (detail.validLvl < GPGME_VALIDITY_MARGINAL && !detail.accept_connection)) { delete (connectWidget->takeTopLevelItem(index)); } else { index++; } } index = 0; while (index < ui.unvalidGPGkeyWidget->topLevelItemCount()) { std::string gpg_widget_id = (ui.unvalidGPGkeyWidget->topLevelItem(index))->text(COLUMN_PEERID).toStdString(); RsPeerDetails detail; if (!rsPeers->getGPGDetails(gpg_widget_id, detail) || detail.validLvl >= GPGME_VALIDITY_MARGINAL || detail.accept_connection) { delete (ui.unvalidGPGkeyWidget->takeTopLevelItem(index)); } else { index++; } } QList<QTreeWidgetItem *> validItems; QList<QTreeWidgetItem *> unvalidItems; for(it = neighs.begin(); it != neighs.end(); it++) { #ifdef NET_DEBUG std::cerr << "NetworkDialog::insertConnect() inserting gpg key : " << *it << std::endl; #endif if (*it == rsPeers->getGPGOwnId()) { continue; } RsPeerDetails detail; if (!rsPeers->getGPGDetails(*it, detail)) { continue; /* BAD */ } /* make a widget per friend */ QTreeWidgetItem *item; QList<QTreeWidgetItem *> list = connectWidget->findItems(QString::fromStdString(*it), Qt::MatchExactly, 4); if (list.size() == 1) { item = list.front(); } else { list = ui.unvalidGPGkeyWidget->findItems(QString::fromStdString(*it), Qt::MatchExactly, 4); if (list.size() == 1) { item = list.front(); } else { //create new item #ifdef NET_DEBUG std::cerr << "NetworkDialog::insertConnect() creating new tree widget item : " << *it << std::endl; #endif item = new RSTreeWidgetItem(NULL, 0); item -> setChildIndicatorPolicy(QTreeWidgetItem::DontShowIndicatorWhenChildless); item -> setSizeHint(0, QSize( 18,18 ) ); /* (1) Person */ item -> setText(COLUMN_PEERNAME, QString::fromUtf8(detail.name.c_str())); /* (4) key id */ item -> setText(COLUMN_PEERID, QString::fromStdString(detail.id)); } } QString TrustLevelString ; /* (2) Key validity */ if (detail.ownsign) { item -> setText(2, tr("Personal signature")); item -> setToolTip(2, tr("GPG key signed by you")); } else switch(detail.trustLvl) { case GPGME_VALIDITY_MARGINAL: item->setText(2,tr("Marginally trusted peer")) ; break; case GPGME_VALIDITY_FULL: case GPGME_VALIDITY_ULTIMATE: item->setText(2,tr("Fully trusted peer")) ; break ; case GPGME_VALIDITY_UNKNOWN: case GPGME_VALIDITY_UNDEFINED: case GPGME_VALIDITY_NEVER: default: item->setText(2,tr("Untrusted peer")) ; break ; } QString PeerAuthenticationString = tr("Unknown") ; /* (3) has me auth */ if (detail.hasSignedMe) PeerAuthenticationString = tr("Has authenticated me"); item->setText(3,PeerAuthenticationString) ; /** * Determinated the Background Color */ QColor backgrndcolor; if (detail.accept_connection) { if (detail.ownsign) { item -> setText(0, "0"); item -> setIcon(0,(QIcon(IMAGE_AUTHED))); backgrndcolor=QColor("#45ff45");//bright green } else { item -> setText(0, "0"); item -> setIcon(0,(QIcon(IMAGE_AUTHED))); backgrndcolor=QColor("#43C043");//light green } } else { item -> setText(0, "1"); if (detail.hasSignedMe) { backgrndcolor=QColor("#B242B2"); //kind of purple item -> setIcon(0,(QIcon(IMAGE_DENIED))); for(int k=0;k<8;++k) item -> setToolTip(k, QString::fromUtf8(detail.name.c_str()) + tr(" has authenticated you. \nRight-click and select 'make friend' to be able to connect.")); } else { backgrndcolor=Qt::lightGray; item -> setIcon(0,(QIcon(IMAGE_DENIED))); } } // Color each Background column in the Network Tab except the first one => 1-9 // whith the determinated color for(int i = 0; i <10; i++) item -> setBackground(i,QBrush(backgrndcolor)); /* add to the list */ if (detail.accept_connection || detail.validLvl >= GPGME_VALIDITY_MARGINAL) { /* add gpg item to the list. If item is already in the list, it won't be duplicated thanks to Qt */ connectWidget->addTopLevelItem(item); } else { ui.unvalidGPGkeyWidget->addTopLevelItem(item); } } // add self to network. RsPeerDetails ownGPGDetails; rsPeers->getGPGDetails(rsPeers->getGPGOwnId(), ownGPGDetails); /* make a widget per friend */ QTreeWidgetItem *self_item; QList<QTreeWidgetItem *> list = connectWidget->findItems(QString::fromStdString(ownGPGDetails.gpg_id), Qt::MatchExactly, 4); if (list.size() == 1) { self_item = list.front(); } else { self_item = new RSTreeWidgetItem(NULL, 0); self_item->setChildIndicatorPolicy(QTreeWidgetItem::DontShowIndicatorWhenChildless); } self_item -> setText(0, "0"); self_item->setIcon(0,(QIcon(IMAGE_AUTHED))); self_item->setText(COLUMN_PEERNAME, QString::fromUtf8(ownGPGDetails.name.c_str()) + " (" + tr("yourself") + ")"); self_item->setText(2,"N/A"); self_item->setText(COLUMN_PEERID, QString::fromStdString(ownGPGDetails.id)); // Color each Background column in the Network Tab except the first one => 1-9 for(int i=0;i<10;++i) { self_item->setBackground(i,Qt::yellow) ;//QBrush(QColor("#45ff45"))); } connectWidget->addTopLevelItem(self_item); connectWidget->update(); /* update display */ ui.unvalidGPGkeyWidget->update(); /* update display */ if (ui.filterPatternLineEdit->text().isEmpty() == false) { FilterItems(); } }
void Search::Activate(const Items &items) { FromForm(); FilterItems(items); view_->setModel(model_.get()); }