Example #1
0
int main ()
{
    QList<QString> first;
    list<QString> second;
    first << "A" << "B" << "C" << "D" << "E" << "F";
    second = first.toStdList();
    assert(second.size() == 6);
  return 0;
}
bool FxSelection::insertPasteSelection() {
  QClipboard *clipboard  = QApplication::clipboard();
  const FxsData *fxsData = dynamic_cast<const FxsData *>(clipboard->mimeData());

  m_pastePosition = TConst::nowhere;

  if (!fxsData || !fxsData->isConnected()) return false;

  if (m_selectedLinks.isEmpty()) return true;

  // Start an undo block and ensure it is appropriately destroyed
  struct Auto {
    bool m_destruct;
    ~Auto() {
      if (m_destruct) TUndoManager::manager()->endBlock();
    }
  } auto_ = {false};

  // Need to make a temporary copy of selected links. It's necessary since the
  // selection will
  // be updated (cleared) after each insertion.
  QList<TFxCommand::Link> selectedLinks(m_selectedLinks);

  int i, size = selectedLinks.size();
  for (i = 0; i < size; ++i) {
    // Clone the fxs to be inserted
    QList<TFxP> fxs;
    QMap<TFx *, int> zeraryFxColumnSize;
    QList<TXshColumnP> columns;

    fxsData->getFxs(fxs, zeraryFxColumnSize, columns);
    if (fxs.empty() && columns.empty()) return true;

    if (!auto_.m_destruct)
      auto_.m_destruct = true, TUndoManager::manager()->beginBlock();

    TFxCommand::insertPasteFxs(selectedLinks[i], fxs.toStdList(),
                               zeraryFxColumnSize.toStdMap(),
                               columns.toStdList(), m_xshHandle, m_fxHandle);
  }

  return true;
}
void FxSelection::pasteSelection() {
  /*--- Fxノードを1つだけ選択していた場合、Replace paste ---*/
  if (m_selectedFxs.size() >= 1 && m_selectedLinks.size() == 0 &&
      m_selectedColIndexes.isEmpty())
    replacePasteSelection();
  /*--- Linkを1つだけ選択していた場合、Insert paste ---*/
  else if (m_selectedFxs.size() == 0 && m_selectedLinks.size() >= 1 &&
           m_selectedColIndexes.isEmpty())
    insertPasteSelection();
  else {
    QClipboard *clipboard = QApplication::clipboard();
    const FxsData *fxsData =
        dynamic_cast<const FxsData *>(clipboard->mimeData());
    if (!fxsData) return;
    QList<TFxP> fxs;
    QMap<TFx *, int> zeraryFxColumnSize;
    QList<TXshColumnP> columns;
    fxsData->getFxs(fxs, zeraryFxColumnSize, columns);
    if (fxs.isEmpty() && columns.isEmpty()) return;

    // in case of the paste command triggered from short cut key
    if (m_pastePosition == TConst::nowhere && m_schematicScene) {
      SchematicSceneViewer *ssv =
          dynamic_cast<SchematicSceneViewer *>(m_schematicScene->views().at(0));
      if (ssv)
        m_pastePosition =
            TPointD(ssv->getOldScenePos().x(), ssv->getOldScenePos().y());
    }

    TFxCommand::pasteFxs(fxs.toStdList(), zeraryFxColumnSize.toStdMap(),
                         columns.toStdList(), m_pastePosition, m_xshHandle,
                         m_fxHandle);

    if (m_schematicScene) {
      selectNone();
      for (int i = 0; i < (int)fxs.size(); i++) select(fxs[i]);
      m_schematicScene->selectNodes(fxs);
    }
  }
  m_pastePosition = TConst::nowhere;
}
bool FxSelection::replacePasteSelection() {
  QClipboard *clipboard  = QApplication::clipboard();
  const FxsData *fxsData = dynamic_cast<const FxsData *>(clipboard->mimeData());

  m_pastePosition = TConst::nowhere;

  if (!fxsData || !fxsData->isConnected()) return false;

  if (m_selectedFxs.isEmpty()) return true;

  struct Auto {
    bool m_destruct;
    ~Auto() {
      if (m_destruct) TUndoManager::manager()->endBlock();
    }
  } auto_ = {false};

  QList<TFxP> selectedFxs(m_selectedFxs);

  int i, size = selectedFxs.size();
  for (i = 0; i < size; ++i) {
    // Clone the fxs to be inserted
    QList<TFxP> fxs;
    QMap<TFx *, int> zeraryFxColumnSize;
    QList<TXshColumnP> columns;

    fxsData->getFxs(fxs, zeraryFxColumnSize, columns);
    if (fxs.empty() && columns.empty()) return true;

    if (!auto_.m_destruct)
      auto_.m_destruct = true, TUndoManager::manager()->beginBlock();

    TFx *inFx = m_selectedFxs[i].getPointer();
    TFxCommand::replacePasteFxs(inFx, fxs.toStdList(),
                                zeraryFxColumnSize.toStdMap(),
                                columns.toStdList(), m_xshHandle, m_fxHandle);
  }

  return true;
}
Example #5
0
void tst_QList::toStdList() const
{
    QList<QString> list;
    list << "foo" << "bar" << "baz";

    // yuck.
    std::list<QString> slist;
    slist.push_back(QLatin1String("foo"));
    slist.push_back(QLatin1String("bar"));
    slist.push_back(QLatin1String("baz"));

    QCOMPARE(list.toStdList(), slist);
    QCOMPARE(list, QList<QString>() << "foo" << "bar" << "baz");
}
Example #6
0
QString PluginManagerImpl::parsePluginsRequest(const QString &templ, QList<PluginRequest> &plugins, QStringList & names)
{
    if (templ.trimmed().isEmpty()) {
        return "Plugins template is empty";
    }
    bool inBr = false;
    PluginRequest cur;
    QString argument;
    cur.start = false;
    for (int i=0 ; i<templ.size(); i++) {
        if (templ[i]=='!' && cur.name.isEmpty() && !inBr) {
            cur.start = true;
        }
        else if (templ[i]=='(' && !inBr) {
            inBr = true;
        }
        else if (templ[i]==')' && inBr) {
            inBr = false;
            cur.arguments << argument;
            argument = "";
        }
        else if (templ[i]==',' && inBr) {
            cur.arguments << argument;
            argument = "";
        }
        else if (templ[i]==',' && !inBr) {
            plugins << cur;
            cur.start = false;
            cur.arguments.clear();
            cur.name = "";
        }
        else if (inBr) {
            argument += templ[i];
        }
        else {
            cur.name += templ[i];
        }
    }
    plugins << cur;
    int starts = 0;
    // Qt bug !!! Use STL instead and then convert back to QList
    std::list<PluginRequest> stdPlugins = plugins.toStdList();
    std::list<PluginRequest>::iterator it=stdPlugins.begin();
    while (it!=stdPlugins.end()) {
        PluginRequest p = (*it);
        if (p.name.contains("*") || p.name.contains("?")) {
            if (p.start) {
                return "Entry point defined for masked by * name in plugins template";
            }
            QDir dir(path);
            QStringList entries = dir.entryList(QStringList() << p.name+".pluginspec", QDir::Files);
            it = stdPlugins.erase(it);
            foreach (const QString & e, entries) {
                PluginRequest pp;
                pp.name = e.left(e.size()-11);
                pp.arguments = p.arguments;
                pp.start = false;
                stdPlugins.insert(it, pp);
            }
        }
        else {
            ++it;
void TemplatesDBManager::deleteElements(const QList<int>& deletedIds) {
    deleteBy("id",
             "Templates",
             deletedIds.toStdList()
           );
}
Example #8
0
vector<KeyPair> keysAsVector(QList<KeyPair> const& keys)
{
	auto list = keys.toStdList();
	return {begin(list), end(list)};
}
//根据用户的设置,重新调整分段即相应信息
bool NumberSegmentIdentification::setNumberSegmentPropety(qulonglong startNumber,
                                                          qulonglong endNumber,
                                                          IdentificationState command)
{
    qDebug()<<"setNumberSegmentPropety";
    if( startNumber>=endNumber || startNumber<MinPhoneNumber || endNumber>=MaxPhoneNumber)
    {
        qDebug()<<" setNumberSegmentPropety NumberSegment format wrong。";
        return false;
    }
//    QString startNumber = QString::number(startNumber);
//    QString endNumberString = QString::number(endNumber);

    //![0]节点排序
    QList<qulonglong> allStartNumber = records.keys();
    if(!allStartNumber.contains(startNumber)) //某一号段新的起点或结点
        allStartNumber.append(startNumber);
    if(!allStartNumber.contains(endNumber+1)) //某一号段新的起点或结点
        allStartNumber.append(endNumber+1);
    if(!allStartNumber.contains(MaxPhoneNumber)) //增加边界
        allStartNumber.append(MaxPhoneNumber);

    std::list<qulonglong> allStartNumber_stl = allStartNumber.toStdList();
    allStartNumber_stl.sort(); //排序
    allStartNumber = QList<qulonglong>::fromStdList(allStartNumber_stl);

    //两个节点点所在的位置(已经排好序)
    int startNumberIndex = allStartNumber.indexOf(startNumber);
    int endNumberIndex = allStartNumber.indexOf(endNumber+1);

    //![1]首先确定用户设置的号段(startNumber与endNumber之间)
    if(!records.contains(startNumber))
    {
        //新的中间段,startNumber与endNumber为号段
        struct NumberSegmentInformation numberSegmentInformation;
        numberSegmentInformation.startNumber = startNumber;
        numberSegmentInformation.endNumber = endNumber;
        numberSegmentInformation.count = 0;
        numberSegmentInformation.state = command;

        //插入到记录表中
        records.insert(startNumber,numberSegmentInformation);
    }
    else
    {
        records[startNumber].state = command;
        records[startNumber].endNumber = endNumber;
    }
    //重新统计该号段的号码个数
    records[startNumber].Numbers.clear();
    qDebug()<<"startNumber,endNumber:" +QString::number(startNumber) +" ~ " +QString::number(endNumber);

    for(int i =0;i <allNotingNumbers.count();i++)
    {
        if(allNotingNumbers.at(i) >=records[startNumber].startNumber &&
                allNotingNumbers.at(i)<=records[startNumber].endNumber)
        {
            records[startNumber].Numbers.append(allNotingNumbers.at(i));
            qDebug()<<"startNumber~endNumber,add:" +QString::number(allNotingNumbers.at(i));
        }

    }
    records[startNumber].count = records[startNumber].Numbers.count();

     qDebug()<<"after startNumber,endNumber:";
     showresult();
    //![2]确定endNumber+1与后面的号段合并,以endNumber+1为起点,以下一个号段的结点为结点
    if(!records.contains(endNumber+1))
    {
        struct NumberSegmentInformation numberSegmentInformationEnd;
        numberSegmentInformationEnd.startNumber = endNumber+1;
        numberSegmentInformationEnd.endNumber = allStartNumber[endNumberIndex+1]-1; //下一个结点的起始位置-1
        numberSegmentInformationEnd.count = 0;
        if(records.contains(allStartNumber[endNumberIndex+1]))
        {
            numberSegmentInformationEnd.state =records[allStartNumber[endNumberIndex+1]].state;
            //清除重复的记录
            records.remove(allStartNumber[endNumberIndex+1]);
        }
        else
            numberSegmentInformationEnd.state = Noting;

        records.insert(numberSegmentInformationEnd.startNumber,numberSegmentInformationEnd);
        //重新统计该号段的号码个数
        records[endNumber+1].Numbers.clear();
        qDebug()<<"endNumber+1~next:" +
                  QString::number(records[endNumber+1].startNumber) +" ~ " +
                  QString::number(records[endNumber+1].endNumber);
        for(int i =0;i <allNotingNumbers.count();i++)
        {
            if(allNotingNumbers.at(i) >=records[endNumber+1].startNumber &&
                    allNotingNumbers.at(i)<=records[endNumber+1].endNumber)
            {
                records[endNumber+1].Numbers.append(allNotingNumbers.at(i));
                qDebug()<<"endNumber+1~next,add:" +QString::number(allNotingNumbers.at(i));
            }
        }
        records[endNumber+1].count = records[endNumber+1].Numbers.count();
    }

    //![3]确定startNumber与前面的号段合并,以前一个号段的起点为起点,以startNumber-1为结点
    if(startNumberIndex>0)
    {
        qulonglong prestartNumber = allStartNumber[startNumberIndex-1];
        records[prestartNumber].endNumber = startNumber -1;
        //重新统计该号段的号码个数
        records[prestartNumber].Numbers.clear();
        qDebug()<<"pre~startNumber -1:" +
                  QString::number(records[prestartNumber].startNumber) +" ~ " +
                  QString::number(records[prestartNumber].endNumber);
        for(int i =0;i <allNotingNumbers.count();i++)
        {
            if(allNotingNumbers.at(i) >=records[prestartNumber].startNumber &&
                    allNotingNumbers.at(i)<=records[prestartNumber].endNumber)
            {
                records[prestartNumber].Numbers.append(allNotingNumbers.at(i));
                qDebug()<<"pre~startNumber -1,add:" +QString::number(allNotingNumbers.at(i));
            }
        }
        records[prestartNumber].count = records[prestartNumber].Numbers.count();

    }
    //![4]去除startNumber和endNumber号段见多余的记录表
    for(int i = startNumberIndex+1;i<endNumberIndex;i++)
    {
        records.remove(allStartNumber[i]);
    }
    //![5]保存数据
    saveKeyNumberSegments();
    return true;
}