void MainWindow::buildFileBrowser() { QString rootPath = qgetenv("HOME"); this->drivesModel->setFilter(QDir::NoDotAndDotDot | QDir::Dirs); QTreeView *treeView = this->treeView = new QTreeView(this->ui->dockDir); treeView->setModel(this->drivesModel); treeView->setRootIndex(this->drivesModel->setRootPath(rootPath + "/../")); treeView->hideColumn(1); treeView->hideColumn(2); treeView->hideColumn(3); treeView->setEditTriggers(QAbstractItemView::NoEditTriggers); treeView->setDragEnabled(true); treeView->setDragDropMode(QAbstractItemView::DragOnly); this->ui->dockDir->setWidget(treeView); this->filesModel->setFilter(QDir::NoDotAndDotDot | QDir::Files); QListView *listView = this->listView = new QListView(this->ui->dockFile); listView->setModel(this->filesModel); listView->setRootIndex(this->filesModel->setRootPath(rootPath)); listView->setEditTriggers(QAbstractItemView::NoEditTriggers); listView->setDragEnabled(true); listView->setSelectionMode(QAbstractItemView::ExtendedSelection); this->ui->dockFile->setWidget(listView); listView->show(); treeView->show(); }
void ItemLineEdit::sHandleCompleter() { if (!hasFocus()) return; QString stripped = text().trimmed().toUpper(); if (stripped.isEmpty()) return; int width = 0; QSqlQueryModel* model = static_cast<QSqlQueryModel *>(_completer->model()); QTreeView * view = static_cast<QTreeView *>(_completer->popup()); _parsed = true; XSqlQuery numQ; if (_useQuery) { numQ.prepare(QString("SELECT * FROM (%1) data WHERE (item_number ~* :number) LIMIT 10") .arg(QString(_sql)).remove(";")); numQ.bindValue(":number", "^" + stripped); } else { QString pre( "SELECT DISTINCT item_id, item_number, " "(item_descrip1 || ' ' || item_descrip2) AS itemdescrip, " "item_upccode AS description " ); QStringList clauses; clauses = _extraClauses; clauses << "(item_number ~* :searchString OR item_upccode ~* :searchString)"; numQ.prepare(buildItemLineEditQuery(pre, clauses, QString::null, _type).replace(";"," ORDER BY item_number LIMIT 10;")); numQ.bindValue(":searchString", QString(text().trimmed().toUpper()).prepend("^")); } numQ.exec(); if (numQ.first()) { int numberCol = numQ.record().indexOf("item_number"); int descripCol = numQ.record().indexOf("itemdescrip"); model->setQuery(numQ); _completer->setCompletionPrefix(stripped); for (int i = 0; i < model->columnCount(); i++) { if ( (i == numberCol) || (i == descripCol) ) { view->resizeColumnToContents(i); width += view->columnWidth(i); } else view->hideColumn(i); } } else model->setQuery(QSqlQuery()); if (width > 350) width = 350; QRect rect; rect.setHeight(height()); rect.setWidth(width); rect.setBottomLeft(QPoint(0, height() - 2)); _completer->complete(rect); _parsed = false; }
void VirtualClusterLineEdit::sHandleCompleter() { if (!hasFocus()) return; QString stripped = text().trimmed().toUpper(); if (stripped.isEmpty()) return; int width = 0; QSqlQueryModel* model = static_cast<QSqlQueryModel *>(_completer->model()); QTreeView * view = static_cast<QTreeView *>(_completer->popup()); _parsed = true; XSqlQuery numQ; numQ.prepare(_query + _numClause + (_extraClause.isEmpty() || !_strict ? "" : " AND " + _extraClause) + ((_hasActive && ! _showInactive) ? _activeClause : "") + QString(" ORDER BY %1 LIMIT 10;").arg(_numColName)); numQ.bindValue(":number", "^" + stripped); numQ.exec(); if (numQ.first()) { int numberCol = numQ.record().indexOf("number"); int nameCol = numQ.record().indexOf("name"); int descripCol = numQ.record().indexOf("description"); model->setQuery(numQ); _completer->setCompletionPrefix(stripped); for (int i = 0; i < model->columnCount(); i++) { if ( (i != numberCol) && (!_hasName || i != nameCol ) && (!_hasDescription || i != descripCol) ) { view->hideColumn(i); } } view->resizeColumnToContents(numberCol); width += view->columnWidth(numberCol); if (_hasName) { view->resizeColumnToContents(nameCol); width += view->columnWidth(nameCol); } if (_hasDescription) { view->resizeColumnToContents(descripCol); width += view->columnWidth(descripCol); } } else model->setQuery(QSqlQuery()); if (width > 350) width = 350; QRect rect; rect.setHeight(height()); rect.setWidth(width); rect.setBottomLeft(QPoint(0, height() - 2)); _completer->complete(rect); _parsed = false; }
TimeWidget::TimeWidget(JointModel *model, QWidget *parent) : QWidget(parent), ui(new Ui::TimeWidget), m_model(model), m_delegate(new JointDelegate(this)), m_leftProxy(new JointProxyModel(model, this)), m_rightProxy(new JointProxyModel(model, this)) { ui->setupUi(this); QTreeView *namesView = ui->namesView; QTreeView *timeLineView = ui->timeLineView; // Sync views connect(namesView->verticalScrollBar(), SIGNAL(valueChanged(int)), timeLineView->verticalScrollBar(), SLOT(setValue(int))); connect(timeLineView->verticalScrollBar(), SIGNAL(valueChanged(int)), namesView->verticalScrollBar(), SLOT(setValue(int))); connect(namesView, SIGNAL(expanded(QModelIndex)), SLOT(onExpanded(QModelIndex))); connect(namesView, SIGNAL(collapsed(QModelIndex)), SLOT(onCollapsed(QModelIndex))); // Configure names view m_leftProxy->showAnims(false); namesView->setModel(m_leftProxy); // namesView->setModel(model); namesView->setItemDelegate(m_delegate); namesView->setHeader(new JointHeaderView(false)); namesView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); namesView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); // Configure time line view JointHeaderView *header = new JointHeaderView(true); m_rightProxy->showVisibleColumn(false); m_rightProxy->showAnim(0); timeLineView->setModel(m_rightProxy); timeLineView->setItemDelegate(m_delegate); timeLineView->setHeader(header); timeLineView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn); timeLineView->hideColumn(JointModel::NameColumn); timeLineView->setAutoScroll(false); timeLineView->setMouseTracking(true); timeLineView->setItemsExpandable(false); connect(timeLineView, SIGNAL(entered(QModelIndex)), SLOT(openEditor(QModelIndex))); connect(model->animModel(), SIGNAL(rowsInserted(QModelIndex, int, int)), SLOT(resetEditor())); connect(model->animModel(), SIGNAL(rowsRemoved(QModelIndex, int, int)), SLOT(resetEditor())); connect(model->animModel(), SIGNAL(dataChanged(QModelIndex,QModelIndex)), SLOT(resetEditor())); connect(m_delegate, SIGNAL(currentFrameChanged(int)), header, SLOT(setCurrentFrame(int))); connect(header, SIGNAL(currentFrameChanged(int)), m_delegate, SLOT(setCurrentFrame(int))); connect(header, SIGNAL(currentFrameChanged(int)), timeLineView->viewport(), SLOT(update())); connect(header, SIGNAL(currentFrameChanged(int)), SIGNAL(currentFrameChanged(int))); // Configure push buttons connect(ui->frameCount, SIGNAL(pressed()), SLOT(showFrameCountDialog())); connect(ui->fps, SIGNAL(pressed()), SLOT(showFpsDialog())); // Initialize setCurrentAnim(-1); }
void MainWindow::createDockWindows() { /* Add HOL widget */ QDockWidget *dock = new QDockWidget(tr("HOL Process"), this); dock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); mHOLWidget = new HOLWidget; dock->setWidget(mHOLWidget); addDockWidget(Qt::RightDockWidgetArea, dock); /* File System View */ QDockWidget *fileDock = new QDockWidget(tr("Project"), this); fileDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); mFileViewSplitter = new QSplitter; QFileSystemModel *fileSystemModel = new QFileSystemModel; fileSystemModel->setRootPath(QDir::currentPath()); QItemSelectionModel *itemSelectionModel = new QItemSelectionModel(fileSystemModel); connect(itemSelectionModel, SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(fileViewItemSelected(QModelIndex,QModelIndex))); QTreeView* tree = new QTreeView(mFileViewSplitter); tree->setModel(fileSystemModel); tree->setRootIndex(fileSystemModel->index(QDir::currentPath())); tree->setSelectionModel(itemSelectionModel); tree->hideColumn(2); tree->hideColumn(3); tree->hideColumn(1); fileDock->setWidget(mFileViewSplitter); addDockWidget(Qt::RightDockWidgetArea, fileDock); }