KoUndoStackAction::KoUndoStackAction(KUndo2Stack* stack, Type type) : QAction(stack) , m_type(type) { if (m_type == UNDO) { connect(this, SIGNAL(triggered()), stack, SLOT(undo())); connect(stack, SIGNAL(canUndoChanged(bool)), this, SLOT(setEnabled(bool))); connect(stack, SIGNAL(undoTextChanged(QString)), this, SLOT(slotUndoTextChanged(QString))); setIcon(koIcon("edit-undo")); setText(i18n("Undo")); setShortcuts(KStandardShortcut::undo()); setEnabled(stack->canUndo()); } else {
EventView::EventView( QToolBar* toolBar, QWidget* parent ) : QWidget( parent ) , m_model( 0 ) , m_actionUndo( this ) , m_actionRedo( this ) , 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_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, SIGNAL(canUndoChanged(bool)), &m_actionUndo, SLOT(setEnabled(bool))); connect(m_undoStack, SIGNAL(undoTextChanged(QString)), this, SLOT(slotUndoTextChanged(QString))); connect(&m_actionUndo, SIGNAL(triggered()), m_undoStack, SLOT(undo())); connect(m_undoStack, SIGNAL(canRedoChanged(bool)), &m_actionRedo, SLOT(setEnabled(bool))); connect(m_undoStack, SIGNAL(redoTextChanged(QString)), this, SLOT(slotRedoTextChanged(QString))); connect(&m_actionRedo, SIGNAL(triggered()), m_undoStack, SLOT(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 ); 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 ); // 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( 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 ); }