bool BootstrapModelPrivate::save() { QString ret; for(const Lines* l : m_lines) { if (!l->hostname.trimmed().isEmpty()) { if (ret.size()) ret += ';'; ret += l->hostname + (l->port > -1? ':'+QString::number(l->port):QString()); } } //Clear empty lines bool val = true; for(int i=0;i<m_lines.size();i++) { Lines* l = m_lines[i]; if (l->hostname.isEmpty() && l->port == -1) { q_ptr->beginRemoveRows(QModelIndex(),i,i); const int idx = m_lines.indexOf(l); if (idx >= 0) m_lines.removeAt(idx); q_ptr->endRemoveRows(); val = false; } } m_pAccount->d_ptr->setAccountProperty(DRing::Account::ConfProperties::HOSTNAME,ret); return val; }
void BootstrapModelPrivate::clearLines() { if (m_lines.size() > 0) { q_ptr->beginRemoveRows(QModelIndex(), 0, m_lines.size()); for (int i = 0; i < m_lines.size(); i++) delete m_lines[i]; m_lines.clear(); q_ptr->endRemoveRows(); } }
void BootstrapModelPrivate::reload() { m_EditState = BootstrapModel::EditState::RELOADING; clearLines(); for(const QString& line : m_pAccount->hostname().split(';')) { const QStringList& fields = line.split(':'); if (line.size() && fields.size() && !(fields[0].isEmpty() && (fields.size()-1 && fields[1].isEmpty()))) { BootstrapModelPrivate::Lines* l = new BootstrapModelPrivate::Lines(); l->hostname = fields[0].trimmed(); l->port = fields.size()>1?fields[1].toInt():-1; //-1 == default q_ptr->beginInsertRows(QModelIndex(),m_lines.size(), m_lines.size()); m_lines << l; q_ptr->endInsertRows(); } } m_EditState = BootstrapModel::EditState::READY; }