//! [11] void MainWindow::changeModel() { delete completer; completer = new QCompleter(this); completer->setMaxVisibleItems(maxVisibleSpinBox->value()); switch (modelCombo->currentIndex()) { default: case 0: { // Unsorted QFileSystemModel QFileSystemModel *fsModel = new QFileSystemModel(completer); fsModel->setRootPath(""); completer->setModel(fsModel); contentsLabel->setText(tr("Enter file path")); } break; //! [11] //! [12] case 1: { // FileSystemModel that shows full paths FileSystemModel *fsModel = new FileSystemModel(completer); completer->setModel(fsModel); fsModel->setRootPath(""); contentsLabel->setText(tr("Enter file path")); } break; //! [12] //! [13] case 2: { // Country List completer->setModel(modelFromFile(":/resources/countries.txt")); QTreeView *treeView = new QTreeView; completer->setPopup(treeView); treeView->setRootIsDecorated(false); treeView->header()->hide(); treeView->header()->setStretchLastSection(false); treeView->header()->setResizeMode(0, QHeaderView::Stretch); treeView->header()->setResizeMode(1, QHeaderView::ResizeToContents); contentsLabel->setText(tr("Enter name of your country")); } break; //! [13] //! [14] case 3: { // Word list completer->setModel(modelFromFile(":/resources/wordlist.txt")); completer->setModelSorting(QCompleter::CaseInsensitivelySortedModel); contentsLabel->setText(tr("Enter a word")); } break; } changeMode(modeCombo->currentIndex()); changeCase(caseCombo->currentIndex()); completer->setWrapAround(wrapCheckBox->isChecked()); lineEdit->setCompleter(completer); connect(wrapCheckBox, SIGNAL(clicked(bool)), completer, SLOT(setWrapAround(bool))); }
static inline int url_replace(clientHttpRequest* http, struct mod_conf_param* param) { char tmpUrl[BUFSIZ]; int ret = 0; ret = regexec(¶m->reg, http->uri, REPLACE_REGEX_SUBSTR_NUMBER+1, g_pmatch, 0); if(0 != ret) { debug(120, 3)("url_replace: donot match regex, uri=[%s]\n", http->uri); return 0; } String url = StringNull; stringAppend(&url, param->replace[0], strlen(param->replace[0])); int i = 1; while(0 != (ret=(long int)param->replace[i])) { stringAppend(&url, http->uri+g_pmatch[ret].rm_so, g_pmatch[ret].rm_eo-g_pmatch[ret].rm_so); debug(120,3)("rm_so=%d, rm_eo=%d\n", g_pmatch[ret].rm_so, g_pmatch[ret].rm_eo); i++; if(param->replace[i]) { stringAppend(&url, param->replace[i], strlen(param->replace[i])); i++; } else { break; } } xfree(http->uri); if (param->ingoreCase) { if (changeCase(url.buf, tmpUrl)) http->uri = xstrdup(tmpUrl); else http->uri = xstrdup(url.buf); } else http->uri = xstrdup(url.buf); stringClean(&url); debug(120, 3)("url_replace: uri modified, uri=[%s]\n", http->uri); return 1; }
//! [0] MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), completer(0), lineEdit(0) { createMenu(); completer = new TreeModelCompleter(this); completer->setModel(modelFromFile(":/resources/treemodel.txt")); completer->setSeparator(QLatin1String(".")); QObject::connect(completer, SIGNAL(highlighted(QModelIndex)), this, SLOT(highlight(QModelIndex))); QWidget *centralWidget = new QWidget; QLabel *modelLabel = new QLabel; modelLabel->setText(tr("Tree Model<br>(Double click items to edit)")); QLabel *modeLabel = new QLabel; modeLabel->setText(tr("Completion Mode")); modeCombo = new QComboBox; modeCombo->addItem(tr("Inline")); modeCombo->addItem(tr("Filtered Popup")); modeCombo->addItem(tr("Unfiltered Popup")); modeCombo->setCurrentIndex(1); QLabel *caseLabel = new QLabel; caseLabel->setText(tr("Case Sensitivity")); caseCombo = new QComboBox; caseCombo->addItem(tr("Case Insensitive")); caseCombo->addItem(tr("Case Sensitive")); caseCombo->setCurrentIndex(0); //! [0] //! [1] QLabel *separatorLabel = new QLabel; separatorLabel->setText(tr("Tree Separator")); QLineEdit *separatorLineEdit = new QLineEdit; separatorLineEdit->setText(completer->separator()); connect(separatorLineEdit, SIGNAL(textChanged(QString)), completer, SLOT(setSeparator(QString))); QCheckBox *wrapCheckBox = new QCheckBox; wrapCheckBox->setText(tr("Wrap around completions")); wrapCheckBox->setChecked(completer->wrapAround()); connect(wrapCheckBox, SIGNAL(clicked(bool)), completer, SLOT(setWrapAround(bool))); contentsLabel = new QLabel; contentsLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); connect(separatorLineEdit, SIGNAL(textChanged(QString)), this, SLOT(updateContentsLabel(QString))); treeView = new QTreeView; treeView->setModel(completer->model()); treeView->header()->hide(); treeView->expandAll(); //! [1] //! [2] connect(modeCombo, SIGNAL(activated(int)), this, SLOT(changeMode(int))); connect(caseCombo, SIGNAL(activated(int)), this, SLOT(changeCase(int))); lineEdit = new QLineEdit; lineEdit->setCompleter(completer); //! [2] //! [3] QGridLayout *layout = new QGridLayout; layout->addWidget(modelLabel, 0, 0); layout->addWidget(treeView, 0, 1); layout->addWidget(modeLabel, 1, 0); layout->addWidget(modeCombo, 1, 1); layout->addWidget(caseLabel, 2, 0); layout->addWidget(caseCombo, 2, 1); layout->addWidget(separatorLabel, 3, 0); layout->addWidget(separatorLineEdit, 3, 1); layout->addWidget(wrapCheckBox, 4, 0); layout->addWidget(contentsLabel, 5, 0, 1, 2); layout->addWidget(lineEdit, 6, 0, 1, 2); centralWidget->setLayout(layout); setCentralWidget(centralWidget); changeCase(caseCombo->currentIndex()); changeMode(modeCombo->currentIndex()); setWindowTitle(tr("Tree Model Completer")); lineEdit->setFocus(); }
void test_changeCase() { int i = 0; char arrayOfLetters1[ 21 ] = {'T', 'h', 'i', 's', 'I', 's', 'T', 'h', 'e', 'F', 'i', 'n', 'a', 'l', 'L', 'a', 'b', 'O', 'f', '5', '1'}; char arrayOfLetters2[ 35 ] = {'i', 'A', 'M', 'o', 'n', 'A', 's', 'e', 'a', 'f', 'o', 'o', 'd', 'D', 'I', 'E', 'T', '.', 'I', 's', 'e', 'e', 'F', 'O', 'O', 'D', 'a', 'n', 'd', 'I', 'e', 'a', 't', 'I', 'T'}; char arrayOfLetters3[ 10 ] = {'1', '2', '3', '4', 'A', '5', '6', '7', '8', '9'}; char expected_arrayOfLetters1[ 21 ] = {'t', 'H', 'I', 'S', 'i', 'S', 't', 'H', 'E', 'f', 'I', 'N', 'A', 'L', 'l', 'A', 'B', 'o', 'F', '5', '1'}; char expected_arrayOfLetters2[ 35 ] = {'I', 'a', 'm', 'O', 'N', 'a', 'S', 'E', 'A', 'F', 'O', 'O', 'D', 'd', 'i', 'e', 't', '.', 'i', 'S', 'E', 'E', 'f', 'o', 'o', 'd', 'A', 'N', 'D', 'i', 'E', 'A', 'T', 'i', 't'}; char expected_arrayOfLetters3[ 10 ] = {'1', '2', '3', '4', 'a', '5', '6', '7', '8', '9'}; for(i=0; i<21; i++) { printf("%c", arrayOfLetters1[i]); } printf(" ==> "); changeCase(arrayOfLetters1, 21); for(i=0; i<21; i++) { printf("%c", arrayOfLetters1[i]); } num_of_tests++; if (!memcmp(arrayOfLetters1, expected_arrayOfLetters1, 21)) { printf(ANSI_COLOR_GREEN "\nTest passed.\n" ANSI_COLOR_RESET); num_of_tests_passed++; } else { printf(ANSI_COLOR_RED "\nTest failed.\n" ANSI_COLOR_RESET); } printf("\n"); for(i=0; i<35; i++) { printf("%c", arrayOfLetters2[i]); } printf(" ==> "); changeCase(arrayOfLetters2, 35); for(i=0; i<35; i++) { printf("%c", arrayOfLetters2[i]); } num_of_tests++; if (!memcmp(arrayOfLetters2, expected_arrayOfLetters2, 35)) { printf(ANSI_COLOR_GREEN "\nTest passed.\n" ANSI_COLOR_RESET); num_of_tests_passed++; } else printf(ANSI_COLOR_RED "\nTest failed.\n" ANSI_COLOR_RESET); printf("\n"); for(i=0; i<10; i++) { printf("%c", arrayOfLetters3[i]); } printf(" ==> "); changeCase(arrayOfLetters3, 10); for(i=0; i<10; i++) { printf("%c", arrayOfLetters3[i]); } num_of_tests++; if (!memcmp(arrayOfLetters3, expected_arrayOfLetters3, 10)) { printf(ANSI_COLOR_GREEN "\nTest passed.\n" ANSI_COLOR_RESET); num_of_tests_passed++; } else { printf(ANSI_COLOR_RED "\nTest failed.\n" ANSI_COLOR_RESET); } }