FileTreeWidget::FileTreeWidget(QWidget *parent) : QTreeView(parent), _fiModel(NULL) { // todo: add filtering, and move qtreeview to subelement _fiModel = new QFileSystemModel(this); // _fiModel->setNameFilters(QStringList() << "*.php"); _fiModel->setNameFilterDisables(false); _fiModel->setRootPath(QDir::homePath()); this->setModel(_fiModel); this->setRootIndex(_fiModel->index(QDir::homePath())); for (int i=1;i<_fiModel->columnCount();i++) { this->setColumnHidden(i, true); } connect(this, SIGNAL(activated( QModelIndex )), this, SLOT(onItemActivated( QModelIndex ))); setHeaderHidden(true); setWindowTitle("File Browser"); }
void CreateBooking::addCustomersInForm() { DbMysql* d = DbMysql::getInstance(); QMessageBox msgBox; QCompleter* cl = new QCompleter(this); QStandardItemModel *model = new QStandardItemModel(cl); //ui->roomsList->setCurrentText("-----Select-----"); if(!d->getConnection().open()) { msgBox.critical(this,"Error","Failed to connect database.1"); } else { QSqlQuery query1( "select customer_id,customer_name from customers order by customer_id desc;" ,d->getConnection()); if(!query1.isActive()) { msgBox.critical(this,"Error","Failed to connect database."); } else { //ui->roomsList->addItem("---- Select ----",QVariant::fromValue(-1)); while(query1.next()) { QStandardItem *item = new QStandardItem; item->setText(query1.value(1).toString()); item->setData(query1.value(0).toInt(), Qt::UserRole); model->appendRow(item); } } } cl->setCaseSensitivity(Qt::CaseInsensitive); cl->setModel(model); ui->c_customer_name->setCompleter(cl); //ui->c_customer_name connect(cl, SIGNAL(activated(QModelIndex)),this, SLOT(onItemActivated(QModelIndex))); }
SingleGenreView::SingleGenreView(QWidget *parent, MafwRegistryAdapter *mafwRegistry) : BrowserWindow(parent, mafwRegistry), mafwRegistry(mafwRegistry), mafwRenderer(mafwRegistry->renderer()), mafwTrackerSource(mafwRegistry->source(MafwRegistryAdapter::Tracker)), playlist(mafwRegistry->playlist()) { ui->objectList->setItemDelegate(new ArtistListItemDelegate(ui->objectList)); ui->objectList->setItemDelegateForRow(0, new ShuffleButtonDelegate(ui->objectList)); ui->windowMenu->addAction(tr("Add to now playing"), this, SLOT(addAllToNowPlaying())); shuffleRequested = false; connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Enter), this), SIGNAL(activated()), this, SLOT(onContextMenuRequested())); connect(ui->objectList, SIGNAL(activated(QModelIndex)), this, SLOT(onItemActivated(QModelIndex))); connect(ui->objectList, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(onContextMenuRequested(QPoint))); }
SoundCloudView::SoundCloudView(QWidget *parent) : QWidget(parent), m_model(new SoundCloudNavModel(this)), m_view(new ListView(this)), m_layout(new QVBoxLayout(this)) { m_view->setModel(m_model); m_view->setItemDelegate(new NavDelegate(m_view)); m_layout->addWidget(m_view); connect(m_view, SIGNAL(activated(QModelIndex)), this, SLOT(onItemActivated(QModelIndex))); connect(SoundCloud::instance(), SIGNAL(commentAdded(SoundCloudComment*)), this, SLOT(onCommentAdded())); connect(SoundCloud::instance(), SIGNAL(artistFollowed(SoundCloudArtist*)), this, SLOT(onArtistFollowed(SoundCloudArtist*))); connect(SoundCloud::instance(), SIGNAL(artistUnfollowed(SoundCloudArtist*)), this, SLOT(onArtistUnfollowed(SoundCloudArtist*))); connect(SoundCloud::instance(), SIGNAL(trackFavourited(SoundCloudTrack*)), this, SLOT(onTrackFavourited(SoundCloudTrack*))); connect(SoundCloud::instance(), SIGNAL(trackUnfavourited(SoundCloudTrack*)), this, SLOT(onTrackUnfavourited(SoundCloudTrack*))); }
/** * @brief TvShowFilesWidget::TvShowFilesWidget * @param parent */ TvShowFilesWidget::TvShowFilesWidget(QWidget *parent) : QWidget(parent), ui(new Ui::TvShowFilesWidget) { m_instance = this; ui->setupUi(this); #ifdef Q_WS_MAC QFont font = ui->files->font(); font.setPointSize(font.pointSize()-2); ui->files->setFont(font); #endif #ifdef Q_WS_WIN ui->verticalLayout->setContentsMargins(0, 0, 0, 1); #endif m_tvShowDelegate = new TvShowDelegate(this); m_tvShowProxyModel = Manager::instance()->tvShowProxyModel(); m_tvShowProxyModel->setSourceModel(Manager::instance()->tvShowModel()); m_tvShowProxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); m_tvShowProxyModel->setDynamicSortFilter(true); ui->files->setModel(m_tvShowProxyModel); ui->files->setItemDelegate(m_tvShowDelegate); ui->files->sortByColumn(0); ui->files->setAttribute(Qt::WA_MacShowFocusRect, false); connect(ui->files, SIGNAL(clicked(QModelIndex)), this, SLOT(onItemClicked(QModelIndex))); connect(ui->files->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(onItemActivated(QModelIndex,QModelIndex))); }
PluginSettingsTab::PluginSettingsTab(QWidget *parent) : QWidget(parent), m_model(new PluginSettingsModel(this)), m_view(new QListView(this)), m_stack(new QStackedWidget(this)) { m_view->setModel(m_model); m_view->setMaximumWidth(200); m_view->setFocus(Qt::OtherFocusReason); m_stack->setFrameStyle(QFrame::NoFrame); for (int i = 0; i < m_model->rowCount(); i++) { QScrollArea *scrollArea = new QScrollArea(this); QWidget *scrollWidget = new QWidget(scrollArea); QVBoxLayout *vbox = new QVBoxLayout(scrollWidget); scrollArea->setWidgetResizable(true); scrollArea->setWidget(scrollWidget); QFile file(m_model->data(m_model->index(i), PluginSettingsModel::FileNameRole).toString()); file.open(QIODevice::ReadOnly); QXmlStreamReader reader; reader.setDevice(&file); while (reader.readNext() != QXmlStreamReader::Invalid) { if ((reader.isStartElement()) || (reader.isEndElement())) { break; } } QString title = reader.attributes().value("title").toString(); while (!reader.atEnd()) { if (!reader.attributes().isEmpty()) { if (reader.name() == "group") { vbox->addWidget(new SeparatorLabel(reader.attributes().value("title").toString(), this)); } else if (reader.name() == "list") { QLabel *label = new QLabel(reader.attributes().value("title").toString() + ":", this); PluginSettingsCombobox *combobox = new PluginSettingsCombobox(this); combobox->setKey(QString("%1/%2").arg(title).arg(reader.attributes().value("key").toString())); combobox->setDefaultValue(reader.attributes().value("default").toString()); while (reader.readNext() != QXmlStreamReader::Invalid) { if ((reader.isStartElement()) || (reader.isEndElement())) { break; } } while (reader.name() == "element") { if (!reader.attributes().isEmpty()) { combobox->addItem(reader.attributes().value("name").toString(), reader.attributes().value("value").toString()); } while (reader.readNext() != QXmlStreamReader::Invalid) { if ((reader.isStartElement()) || (reader.isEndElement())) { break; } } } combobox->load(); vbox->addWidget(label); vbox->addWidget(combobox); } else if (reader.name() == "boolean") { PluginSettingsCheckbox *checkbox = new PluginSettingsCheckbox(this); checkbox->setText(reader.attributes().value("title").toString()); checkbox->setKey(QString("%1/%2").arg(title).arg(reader.attributes().value("key").toString())); checkbox->setDefaultValue(reader.attributes().value("default").toString()); checkbox->load(); vbox->addWidget(checkbox); } else if (reader.name() == "integer") { PluginSettingsSpinbox *spinbox = new PluginSettingsSpinbox(this); spinbox->setKey(QString("%1/%2").arg(title).arg(reader.attributes().value("key").toString())); spinbox->setDefaultValue(reader.attributes().value("default").toString()); spinbox->setMinimum(reader.attributes().value("min").toString().toInt()); spinbox->setMaximum(reader.attributes().value("max").toString().toInt()); spinbox->load(); vbox->addWidget(new QLabel(reader.attributes().value("title").toString() + ":", this)); vbox->addWidget(spinbox); } else if (reader.name() == "text") { PluginSettingsLineEdit *lineEdit = new PluginSettingsLineEdit(this); lineEdit->setKey(QString("%1/%2").arg(title).arg(reader.attributes().value("key").toString())); lineEdit->setDefaultValue(reader.attributes().value("default").toString()); lineEdit->load(); vbox->addWidget(new QLabel(reader.attributes().value("title").toString() + ":", this)); vbox->addWidget(lineEdit); } } while (reader.readNext() != QXmlStreamReader::Invalid) { if ((reader.isStartElement()) || (reader.isEndElement())) { break; } } } vbox->addSpacerItem(new QSpacerItem(10, 10, QSizePolicy::Expanding, QSizePolicy::Expanding)); file.close(); m_stack->addWidget(scrollArea); } QHBoxLayout *hbox = new QHBoxLayout(this); hbox->setContentsMargins(0, 0, 0, 0); hbox->addWidget(m_view); hbox->addWidget(m_stack); this->connect(m_view, SIGNAL(clicked(QModelIndex)), this, SLOT(onItemActivated(QModelIndex))); this->connect(m_view, SIGNAL(activated(QModelIndex)), this, SLOT(onItemActivated(QModelIndex))); }
void FolderView::setViewMode(ViewMode _mode) { if(_mode == mode) // if it's the same more, ignore return; // FIXME: retain old selection // since only detailed list mode uses QTreeView, and others // all use QListView, it's wise to preserve QListView when possible. bool recreateView = false; if(view && (mode == DetailedListMode || _mode == DetailedListMode)) { delete view; // FIXME: no virtual dtor? view = NULL; recreateView = true; } mode = _mode; QSize iconSize = iconSize_[mode - FirstViewMode]; if(mode == DetailedListMode) { FolderViewTreeView* treeView = new FolderViewTreeView(this); view = treeView; treeView->setItemsExpandable(false); treeView->setRootIsDecorated(false); treeView->setAllColumnsShowFocus(false); // set our own custom delegate FolderItemDelegate* delegate = new FolderItemDelegate(treeView); treeView->setItemDelegateForColumn(FolderModel::ColumnFileName, delegate); } else { FolderViewListView* listView; if(view) listView = static_cast<FolderViewListView*>(view); else { listView = new FolderViewListView(this); view = listView; } // set our own custom delegate FolderItemDelegate* delegate = new FolderItemDelegate(listView); listView->setItemDelegateForColumn(FolderModel::ColumnFileName, delegate); // FIXME: should we expose the delegate? listView->setMovement(QListView::Static); listView->setResizeMode(QListView::Adjust); listView->setWrapping(true); switch(mode) { case IconMode: { listView->setViewMode(QListView::IconMode); // listView->setGridSize(QSize(iconSize.width() * 1.6, iconSize.height() * 2)); listView->setGridSize(QSize(90, 110)); listView->setWordWrap(true); listView->setFlow(QListView::LeftToRight); break; } case CompactMode: { listView->setViewMode(QListView::ListMode); listView->setGridSize(QSize()); listView->setWordWrap(false); listView->setFlow(QListView::QListView::TopToBottom); break; } case ThumbnailMode: { listView->setViewMode(QListView::IconMode); listView->setGridSize(QSize(160, 160)); listView->setWordWrap(true); listView->setFlow(QListView::LeftToRight); break; } default:; } delegate->setGridSize(listView->gridSize()); } if(view) { // we have to install the event filter on the viewport instead of the view itself. view->viewport()->installEventFilter(this); // we want the QEvent::HoverMove event for single click + auto-selection support view->viewport()->setAttribute(Qt::WA_Hover, true); connect(view, SIGNAL(activatedFiltered(QModelIndex)), SLOT(onItemActivated(QModelIndex))); view->setContextMenuPolicy(Qt::NoContextMenu); // defer the context menu handling to parent widgets view->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); view->setIconSize(iconSize); view->setSelectionMode(QAbstractItemView::ExtendedSelection); layout()->addWidget(view); // enable dnd view->setDragEnabled(true); view->setAcceptDrops(true); view->setDragDropMode(QAbstractItemView::DragDrop); view->setDropIndicatorShown(true); if(model_) { // FIXME: preserve selections model_->setThumbnailSize(iconSize.width()); view->setModel(model_); if(recreateView) connect(view->selectionModel(), SIGNAL(selectionChanged(QItemSelection,QItemSelection)), SLOT(onSelectionChanged(QItemSelection,QItemSelection))); } } }