Пример #1
0
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;
}
Пример #2
0
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();
    }
}
Пример #3
0
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;
}