EventView::EventView( QToolBar* toolBar, QWidget* parent ) : QWidget( parent ) , m_model( 0 ) , m_actionNewEvent( this ) , m_actionEditEvent( this ) , m_actionDeleteEvent( this ) , m_actionCreateTimeSheet( this ) , m_comboBox( new QComboBox( this ) ) , m_labelTotal( new QLabel( this ) ) , m_listView( new QListView( this ) ) { QVBoxLayout* layout = new QVBoxLayout( this ); layout->setContentsMargins( 0, 0, 0, 0 ); layout->addWidget( m_listView ); m_listView->setAlternatingRowColors( true ); m_listView->setContextMenuPolicy( Qt::CustomContextMenu ); connect( m_listView, SIGNAL( customContextMenuRequested( const QPoint& ) ), SLOT( slotContextMenuRequested( const QPoint& ) ) ); connect( m_listView, SIGNAL( doubleClicked( const QModelIndex& ) ), SLOT( slotEventDoubleClicked( const QModelIndex& ) ) ); connect( &m_actionNewEvent, SIGNAL( triggered() ), SLOT( slotNewEvent() ) ); connect( &m_actionEditEvent, SIGNAL( triggered() ), SLOT( slotEditEvent() ) ); connect( &m_actionDeleteEvent, SIGNAL( triggered() ), SLOT( slotDeleteEvent() ) ); connect( &m_actionCreateTimeSheet, SIGNAL( triggered() ), SLOT( slotCreateTimeSheet() ) ); // connect( &m_commitTimer, SIGNAL( timeout() ), // SLOT( slotCommitTimeout() ) ); // m_commitTimer.setSingleShot( true ); m_actionNewEvent.setText( tr( "New Event..." ) ); m_actionNewEvent.setToolTip( tr( "Create a new Event" ) ); m_actionNewEvent.setIcon( Data::newTaskIcon() ); m_actionNewEvent.setShortcut( QKeySequence::New ); toolBar->addAction( &m_actionNewEvent ); m_actionEditEvent.setText( tr( "Edit Event...") ); m_actionEditEvent.setShortcut( Qt::CTRL + Qt::Key_E ); m_actionEditEvent.setIcon( Data::editEventIcon() ); toolBar->addAction( &m_actionEditEvent ); m_actionDeleteEvent.setText( tr( "Delete Event..." ) ); QList<QKeySequence> deleteShortcuts; deleteShortcuts << QKeySequence::Delete; #ifdef Q_WS_MAC deleteShortcuts << Qt::Key_Backspace; #endif m_actionDeleteEvent.setShortcuts(deleteShortcuts); m_actionDeleteEvent.setIcon( Data::deleteTaskIcon() ); toolBar->addAction( &m_actionDeleteEvent ); m_actionCreateTimeSheet.setText( tr( "Time Sheet..." ) ); m_actionCreateTimeSheet.setToolTip( tr( "Create a Time Sheet for this time period " ) ); m_actionCreateTimeSheet.setIcon( Data::createReportIcon() ); toolBar->addAction( &m_actionCreateTimeSheet ); // disable all actions, action state will be set when the current // item changes: m_actionNewEvent.setEnabled( true ); // always on m_actionEditEvent.setEnabled( false ); m_actionDeleteEvent.setEnabled( false ); toolBar->addWidget( new QLabel( tr( "See events from:" ) , this ) ); toolBar->addWidget( m_comboBox ); connect( m_comboBox, SIGNAL( currentIndexChanged( int ) ), SLOT( timeFrameChanged( int ) ) ); QWidget *spacer = new QWidget( this ); QSizePolicy spacerSizePolicy = spacer->sizePolicy(); spacerSizePolicy.setHorizontalPolicy( QSizePolicy::Expanding ); spacer->setSizePolicy( spacerSizePolicy ); toolBar->addWidget( spacer ); toolBar->addWidget( m_labelTotal ); QTimer::singleShot( 0, this, SLOT( delayedInitialization() ) ); // I hate doing this but the stupid default view sizeHints suck badly. setMinimumHeight( 200 ); }
EventView::EventView(QWidget *parent) : QDialog(parent) , m_toolBar(new QToolBar(this)) , m_actionUndo(this) , m_actionRedo(this) , m_actionNewEvent(this) , m_actionEditEvent(this) , m_actionDeleteEvent(this) , m_actionCreateTimeSheet(this) , m_actionFindAndReplace(this) , m_comboBox(new QComboBox(this)) , m_labelTotal(new QLabel(this)) , m_listView(new QListView(this)) { setWindowTitle(tr("Event Editor")); auto layout = new QVBoxLayout(this); layout->setMargin(0); layout->setSpacing(0); layout->addWidget(m_toolBar); layout->addWidget(m_listView); m_listView->setAlternatingRowColors(true); m_listView->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_listView, &QListView::customContextMenuRequested, this, &EventView::slotContextMenuRequested); connect(m_listView, &QListView::doubleClicked, this, &EventView::slotEventDoubleClicked); connect(&m_actionNewEvent, &QAction::triggered, this, &EventView::slotNewEvent); connect(&m_actionEditEvent, SIGNAL(triggered()), SLOT(slotEditEvent())); connect(&m_actionDeleteEvent, &QAction::triggered, this, &EventView::slotDeleteEvent); // connect( &m_commitTimer, SIGNAL(timeout()), // SLOT(slotCommitTimeout()) ); // m_commitTimer.setSingleShot( true ); m_actionUndo.setText(tr("Undo")); m_actionUndo.setToolTip(tr("Undo the latest change")); m_actionUndo.setShortcut(QKeySequence::Undo); m_actionUndo.setEnabled(false); m_actionRedo.setText(tr("Redo")); m_actionRedo.setToolTip(tr("Redo the last undone change.")); m_actionRedo.setShortcut(QKeySequence::Redo); m_actionRedo.setEnabled(false); m_undoStack = new QUndoStack(this); connect(m_undoStack, &QUndoStack::canUndoChanged, &m_actionUndo, &QAction::setEnabled); connect(m_undoStack, &QUndoStack::undoTextChanged, this, &EventView::slotUndoTextChanged); connect(&m_actionUndo, &QAction::triggered, m_undoStack, &QUndoStack::undo); connect(m_undoStack, &QUndoStack::canRedoChanged, &m_actionRedo, &QAction::setEnabled); connect(m_undoStack, &QUndoStack::redoTextChanged, this, &EventView::slotRedoTextChanged); connect(&m_actionRedo, &QAction::triggered, m_undoStack, &QUndoStack::redo); m_actionNewEvent.setText(tr("New Event...")); m_actionNewEvent.setToolTip(tr("Create a new Event")); m_actionNewEvent.setIcon(Data::newTaskIcon()); m_actionNewEvent.setShortcut(QKeySequence::New); m_toolBar->addAction(&m_actionNewEvent); m_actionEditEvent.setText(tr("Edit Event...")); m_actionEditEvent.setShortcut(Qt::CTRL + Qt::Key_E); m_actionEditEvent.setIcon(Data::editEventIcon()); m_toolBar->addAction(&m_actionEditEvent); m_actionFindAndReplace.setText(tr("Search/Replace Events...")); m_actionFindAndReplace.setToolTip(tr("Change the task events belong to")); m_actionFindAndReplace.setIcon(Data::searchIcon()); m_toolBar->addAction(&m_actionFindAndReplace); connect(&m_actionFindAndReplace, &QAction::triggered, this, &EventView::slotFindAndReplace); m_actionDeleteEvent.setText(tr("Delete Event...")); QList<QKeySequence> deleteShortcuts; deleteShortcuts << QKeySequence::Delete; #ifdef Q_OS_OSX deleteShortcuts << Qt::Key_Backspace; #endif m_actionDeleteEvent.setShortcuts(deleteShortcuts); m_actionDeleteEvent.setIcon(Data::deleteTaskIcon()); m_toolBar->addAction(&m_actionDeleteEvent); // disable all actions, action state will be set when the current // item changes: m_actionNewEvent.setEnabled(true); // always on m_actionEditEvent.setEnabled(false); m_actionDeleteEvent.setEnabled(false); m_toolBar->addWidget(m_comboBox); connect(m_comboBox, SIGNAL(currentIndexChanged(int)), SLOT(timeFrameChanged(int))); auto spacer = new QWidget(this); QSizePolicy spacerSizePolicy = spacer->sizePolicy(); spacerSizePolicy.setHorizontalPolicy(QSizePolicy::Expanding); spacer->setSizePolicy(spacerSizePolicy); m_toolBar->addWidget(spacer); m_toolBar->addWidget(m_labelTotal); QTimer::singleShot(0, this, SLOT(delayedInitialization())); // I hate doing this but the stupid default view sizeHints suck badly. setMinimumHeight(200); }