//----------------------------------- ResourceAllocationEditor::ResourceAllocationEditor(KoPart *part, KoDocument *doc, QWidget *parent) : ViewBase(part, doc, parent) { QVBoxLayout * l = new QVBoxLayout( this ); l->setMargin( 0 ); m_view = new ResourceAllocationTreeView( this ); l->addWidget( m_view ); setupGui(); m_view->setEditTriggers( m_view->editTriggers() | QAbstractItemView::EditKeyPressed ); QList<int> lst1; lst1 << 1 << -1; QList<int> lst2; lst2 << 0; m_view->hideColumns( lst1, lst2 ); m_view->masterView()->setDefaultColumns( QList<int>() << 0 ); QList<int> show; for ( int c = 1; c < model()->columnCount(); ++c ) { show << c; } m_view->slaveView()->setDefaultColumns( show ); connect( model(), SIGNAL(executeCommand(KUndo2Command*)), doc, SLOT(addCommand(KUndo2Command*)) ); connect( m_view, SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(slotCurrentChanged(QModelIndex)) ); connect( m_view, SIGNAL(selectionChanged(QModelIndexList)), this, SLOT(slotSelectionChanged(QModelIndexList)) ); connect( m_view, SIGNAL(contextMenuRequested(QModelIndex,QPoint)), this, SLOT(slotContextMenuRequested(QModelIndex,QPoint)) ); connect( m_view, SIGNAL(headerContextMenuRequested(QPoint)), SLOT(slotHeaderContextMenuRequested(QPoint)) ); }
ResourceAppointmentsView::ResourceAppointmentsView(KoPart *part, KoDocument *doc, QWidget *parent) : ViewBase(part, doc, parent) { debugPlan<<"------------------- ResourceAppointmentsView -----------------------"; setupGui(); QVBoxLayout * l = new QVBoxLayout( this ); l->setMargin( 0 ); m_view = new ResourceAppointmentsTreeView( this ); l->addWidget( m_view ); m_view->setEditTriggers( m_view->editTriggers() | QAbstractItemView::EditKeyPressed ); connect( model(), SIGNAL(executeCommand(KUndo2Command*)), doc, SLOT(addCommand(KUndo2Command*)) ); connect( m_view, SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(slotCurrentChanged(QModelIndex)) ); connect( m_view, SIGNAL(selectionChanged(QModelIndexList)), this, SLOT(slotSelectionChanged(QModelIndexList)) ); connect( m_view, SIGNAL(contextMenuRequested(QModelIndex,QPoint)), this, SLOT(slotContextMenuRequested(QModelIndex,QPoint)) ); connect( m_view, SIGNAL(headerContextMenuRequested(QPoint)), SLOT(slotHeaderContextMenuRequested(QPoint)) ); }
//------------------------ AccountsView::AccountsView(KoPart *part, Project *project, KoDocument *doc, QWidget *parent ) : ViewBase(part, doc, parent), m_project(project), m_manager( 0 ) { init(); setupGui(); connect( m_view, SIGNAL(contextMenuRequested(QModelIndex,QPoint)), SLOT(slotContextMenuRequested(QModelIndex,QPoint)) ); connect( m_view, SIGNAL(headerContextMenuRequested(QPoint)), SLOT(slotHeaderContextMenuRequested(QPoint)) ); }
//-------------------- CalendarTreeView::CalendarTreeView( QWidget *parent ) : TreeViewBase( parent ) { header()->setContextMenuPolicy( Qt::CustomContextMenu ); setModel( new CalendarItemModel() ); setSelectionBehavior( QAbstractItemView::SelectRows ); setSelectionMode( QAbstractItemView::SingleSelection ); setSelectionModel( new QItemSelectionModel( model() ) ); setItemDelegateForColumn( 1, new EnumDelegate( this ) ); // timezone connect( header(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(headerContextMenuRequested(QPoint)) ); }
//-------------------- AccountTreeView::AccountTreeView( QWidget *parent ) : TreeViewBase( parent ) { header()->setContextMenuPolicy( Qt::CustomContextMenu ); setModel( new AccountItemModel( this ) ); setSelectionModel( new QItemSelectionModel( model() ) ); setSelectionMode( QAbstractItemView::SingleSelection ); setSelectionBehavior( QAbstractItemView::SelectRows ); setAcceptDrops( false ); setDropIndicatorShown( false ); connect( header(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(headerContextMenuRequested(QPoint)) ); }
ChannelListWidget::ChannelListWidget(QWidget *parent, YellowPage *yellowPage) : QTreeWidget(parent), m_active(false), m_linkHovered(false), m_pressedChannel(0) { setYellowPage(yellowPage); m_lastUpdatedTime = QDateTime::currentDateTime(); QVector<QString> labels(LabelCount); labels[Status] = tr("S"); labels[Name] = tr("配信者"); labels[Description] = tr("詳細"); labels[Listeners] = tr("視聴者数"); labels[Relays] = tr("リレー数"); labels[Score] = tr("スコア"); labels[Uptime] = tr("配信時間"); labels[Bitrate] = tr("ビットレート"); labels[Type] = tr("種類"); setHeaderLabels(labels.toList()); header()->setStretchLastSection(true); header()->setContextMenuPolicy(Qt::CustomContextMenu); connect(header(), SIGNAL(customContextMenuRequested(QPoint)), SLOT(headerContextMenuRequested(QPoint))); readSettings(); int lastSection = -1; for (int i = 0; i < header()->count(); ++i) if (header()->sectionSize(i)) lastSection = i; if (lastSection != -1) header()->resizeSection(lastSection, fontMetrics().width(labels[lastSection]) + style()->pixelMetric(QStyle::PM_HeaderGripMargin) * 2); setAllColumnsShowFocus(true); setSortingEnabled(true); setRootIsDecorated(false); setMouseTracking(linkEnabled()); #ifdef Q_WS_MAC QFont f(font()); f.setPointSize(f.pointSize() - 2); setFont(f); #endif installEventFilter(new ViEmacsBindings(this)); updateActions(); connect(this, SIGNAL(itemActivated(QTreeWidgetItem *, int)), SLOT(playChannel())); connect(this, SIGNAL(currentItemChanged(QTreeWidgetItem *, QTreeWidgetItem *)), SLOT(currentItemChanged(QTreeWidgetItem *))); connect(this, SIGNAL(linkHovered(Channel *)), SLOT(onLinkHovered(Channel *))); connect(this, SIGNAL(linkClicked(Channel *)), SLOT(onLinkClicked(Channel *))); }
AnimeListWidget::AnimeListWidget(QWidget *parent, QString list) : QWidget(parent), m_ui(new Ui::AnimeListWidget), m_list(list) { m_ui->setupUi(this); m_ui->retranslateUi(this); m_proxy_model = new AnimeProxyModel; m_model = new AnimeModel; m_progress_delegate = new ProgressDelegate; m_proxy_model->setDynamicSortFilter(true); m_proxy_model->setFilterCaseSensitivity(Qt::CaseInsensitive); m_proxy_model->setSortCaseSensitivity(Qt::CaseInsensitive); if (User::sharedUser()->listOrder() == ListOrder::Alphabet) { m_proxy_model->sort(ListRoles::Title); } else if (User::sharedUser()->listOrder() == ListOrder::Score) { m_proxy_model->sort(ListRoles::Score); } m_proxy_model->setSourceModel(m_model); m_ui->table->setModel(m_proxy_model); m_ui->table->setItemDelegateForColumn(ListRoles::Progress, m_progress_delegate); connect(m_ui->table, SIGNAL(doubleClicked(QModelIndex)), this, SLOT(doubleClicked(QModelIndex))); connect(m_ui->table, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(customContextMenuRequested(QPoint))); m_ui->table->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_ui->table->horizontalHeader(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(headerContextMenuRequested(QPoint))); connect(m_model, &AnimeModel::animeChanged, this, [this](AnimePtr anime) { emit animeChanged(anime); }); auto font = m_ui->table->fontMetrics(); m_ui->table->verticalHeader()->setDefaultSectionSize(font.height() + 4); }
/** * @brief TimeTable::openTimeTable 시간표 파일을 읽는다 */ void TimeTable::openTimeTable() { // 변경된 시간표를 저장할지 물어봄 if (!saveModifiedTable()) return; QString name = QFileDialog::getOpenFileName(this, tr("시간표 열기"), QString(), tr("시간표 (*.tbl);;" "모든 파일 (*)")); // 파일을 골랐으면 if (!name.isEmpty()) { QFile f(name); // 읽기 전용으로 파일 열기 if (f.open(QIODevice::ReadOnly)) { _timeTable->clear(); // 테이블 초기화 QTextStream in(&f); // 파일을 텍스트 스트림으로 처리 in >> _tableRows >> _tableCols; // 세로줄 수와 가로줄 수 읽기 in.readLine(); // 줄바꿈 문자 읽기 _timeTable->setColumnCount(_tableCols); // 가로줄 수 설정 _timeTable->setRowCount(_tableRows); // 세로줄 수 설정 // 세로 헤더 아이템 읽어 설정 for (int i = 0; i < _tableCols; ++i) { QTableWidgetItem *item = new QTableWidgetItem; item->setText(in.readLine()); _timeTable->setHorizontalHeaderItem(i, item); } _timeTable->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); connect(_timeTable->horizontalHeader(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(headerContextMenuRequested(QPoint))); // 가로 헤더 아이템 읽어 설정 for (int i = 0; i < _tableRows; ++i) { QTableWidgetItem *item = new QTableWidgetItem; item->setText(in.readLine()); _timeTable->setVerticalHeaderItem(i, item); } _timeTable->verticalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); connect(_timeTable->verticalHeader(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(headerContextMenuRequested(QPoint))); // 테이블 셀 설정 for (int i = 0; i < _tableRows; ++i) { for (int j = 0; j < _tableCols; ++j) { _timeTable->setItem(i, j, new QTableWidgetItem(in.readLine())); } } f.close(); // 파일 닫음 // 테이블 크기에 따라 창크기 조절 resize(_timeTable->sizeHint().width(), _timeTable->sizeHint().height()); adjustSize(); // 내부 위젯에 맞추어 크기 조절 setFileName(name); // 파일 이름 설정 setWindowModified(false); // 변경되지 않았 }
/** * @brief TimeTable::newTimeTable 새 시간표를 만든다 */ void TimeTable::newTimeTable() { static const QStringList weekDays( QStringList() << tr("월") << tr("화") << tr("수") << tr("목") << tr("금") << tr("토")); // 변경된 시간표를 저장할지 물어봄 if (!saveModifiedTable()) return; _timeTable->clear(); // 테이블 초기화 _tableCols = 6; // 세로줄 수는 6 _tableRows = 8; // 가로줄 수는 8 _timeTable->setColumnCount(_tableCols); // 세로줄 수 설정 _timeTable->setRowCount(_tableRows); // 가로줄 수 설정 // 가로 헤더 아이템 설정 for (int i = 0; i < _tableCols; ++i) { // 테이블 아이템 생성 QTableWidgetItem *item = new QTableWidgetItem; // 아이템 텍스트 요일로 설정 item->setText(weekDays.at(i)); // 가로 헤더 아이템 설정 _timeTable->setHorizontalHeaderItem(i, item); } // 가로 헤더 컨텍스트 메뉴 정책 설 _timeTable->horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); // 컨텍스트 메뉴 시그널 연결 connect(_timeTable->horizontalHeader(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(headerContextMenuRequested(QPoint))); // 세로 헤더 아이템 설정 for (int i = 0; i < _tableRows; ++i) { // 테이블 아이템 생성 QTableWidgetItem *item = new QTableWidgetItem; // 아이템 텍스트 시간으로 설정 item->setText(QString::number(i + 1)); // 세로 헤더 아이템 설정 _timeTable->setVerticalHeaderItem(i, item); } // 세로 헤더 컨텍스트 메뉴 정책 설정 _timeTable->verticalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); // 컨텍스트 메뉴 시그널 연결 connect(_timeTable->verticalHeader(), SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(headerContextMenuRequested(QPoint))); // 테이블 셀 초기화 for (int i = 0; i < _tableRows; ++i) { for (int j = 0; j < _tableCols; ++j) { // 빈 아이템으로 설정 _timeTable->setItem(i, j, new QTableWidgetItem(QString())); } } // 테이블 크기에 맞추어서 창 크기 조절 resize(_timeTable->sizeHint().width(), _timeTable->sizeHint().height()); // 내부 위젯에 맞추어서 크기 조절 adjustSize(); // 셀 내용이 바뀌면 modified() 호출 connect(_timeTable, SIGNAL(cellChanged(int,int)), this, SLOT(modified())); setFileName(tr("이름 없음")); // 새 이름은 "이름 없음" setWindowModified(false); // 변경되지 않았음 }