KexiFindDialog::KexiFindDialog(QWidget* parent) : QDialog(parent, Qt::Dialog | Qt::WindowTitleHint | Qt::WindowSystemMenuHint | Qt::Tool) , d(new Private()) { setObjectName("KexiFindDialog"); setupUi(this); m_search->setCurrentIndex( (int)KexiSearchAndReplaceViewInterface::Options::SearchDown); layout()->setMargin(KDialog::marginHint()); layout()->setSpacing(KDialog::spacingHint()); KAction *a = KStandardAction::findNext(0, 0, 0); m_btnFind->setText(a->text()); m_btnFind->setIcon(KIcon(a->icon())); delete a; m_btnClose->setText(KStandardGuiItem::close().text()); m_btnClose->setIcon(KStandardGuiItem::close().icon()); connect(m_btnFind, SIGNAL(clicked()), this, SIGNAL(findNext())); connect(m_btnClose, SIGNAL(clicked()), this, SLOT(slotCloseClicked())); connect(m_btnReplace, SIGNAL(clicked()), this, SIGNAL(replaceNext())); connect(m_btnReplaceAll, SIGNAL(clicked()), this, SIGNAL(replaceAll())); // clear message after the text is changed connect(m_textToFind, SIGNAL(editTextChanged(const QString&)), this, SLOT(updateMessage(const QString&))); connect(m_textToReplace, SIGNAL(editTextChanged(const QString&)), this, SLOT(updateMessage(const QString&))); d->replaceMode = true; //to force updating by setReplaceMode() setReplaceMode(false); setLookInColumnList(QStringList(), QStringList()); }
void Core::setupShourtcutTips(KXMLGUIClient * client) { QPtrList<KXMLGUIClient> clients; if (client != 0) clients.append(client); else clients = TopLevel::getInstance()->main()->guiFactory()->clients(); for( QPtrListIterator<KXMLGUIClient> it(clients); it.current(); ++it ) { KActionCollection *actionCollection = (*it)->actionCollection(); for (int i = 0; i < actionCollection->count(); i++) { KAction *action = actionCollection->action(i); QString tooltip = action->toolTip(); if (tooltip.isEmpty()) tooltip = action->text().remove('&'); else { int i = tooltip.findRev('('); if (i > 0) tooltip = tooltip.left(i).stripWhiteSpace(); } QString shortcut = action->shortcutText(); if (!shortcut.isEmpty()) tooltip += " (" + shortcut + ")"; action->setToolTip(tooltip); } } }
void ActionConfigDialog::slotEditToolbar() { QString toolbarName; QString toolbarId; QListViewItem *oldItem; QListViewItem *item = actionTreeView->currentItem(); if (item->parent()) item = item->parent(); toolbarName = item->text(0); if ( toolbarName != i18n("All")) { emit configureToolbars(toolbarName +" <quanta>"); //update the tree view KAction *action; KActionCollection *ac = m_mainWindow->actionCollection(); ToolbarTabWidget *tb = ToolbarTabWidget::ref(); for (int i = 0; i < tb->count(); i++) { toolbarName = tb->label(i); toolbarId = tb->id(i); ToolbarEntry *p_toolbar = m_toolbarList[toolbarId]; if (p_toolbar) { oldItem = actionTreeView->findItem(toolbarName, 0); item = new KListViewItem(actionTreeView, oldItem, toolbarName); item->setOpen(oldItem->isOpen()); delete oldItem; QDomNode node = p_toolbar->guiClient->domDocument().firstChild().firstChild().firstChild(); while (!node.isNull()) { if (node.nodeName() == "Action") { action = ac->action(node.toElement().attribute("name")); if (action) { oldItem = new KListViewItem(item, oldItem, action->text().replace(QRegExp("\\&(?!\\&)"),""), action->shortcut().toString(), action->name()); oldItem->setPixmap(0, SmallIcon(action->icon())); } } node = node.nextSibling(); } } } actionTreeView->setCurrentItem(allActionsItem); actionTreeView->setSelected(allActionsItem, true); } }
void KFSConfigPage::init() { KConfig *config = kapp->config(); config->setGroup( "fileselector" ); // toolbar QStringList l = config->readListEntry( "toolbar actions", ',' ); if ( l.isEmpty() ) // default toolbar l << "up" << "back" << "forward" << "home" << "short view" << "detailed view" << "bookmarks" << "sync_dir"; // actions from diroperator + two of our own QStringList allActions; allActions << "up" << "back" << "forward" << "home" << "reload" << "mkdir" << "delete" << "short view" << "detailed view" /*<< "view menu" << "show hidden" << "properties"*/ << "bookmarks" << "sync_dir"; QRegExp re("&(?=[^&])"); KAction *ac; QListBox *lb; for ( QStringList::Iterator it=allActions.begin(); it != allActions.end(); ++it ) { lb = l.contains( *it ) ? acSel->selectedListBox() : acSel->availableListBox(); if ( *it == "bookmarks" || *it == "sync_dir" ) ac = fileSelector->actionCollection()->action( (*it).latin1() ); else ac = fileSelector->dirOperator()->actionCollection()->action( (*it).latin1() ); if ( ac ) new ActionLBItem( lb, SmallIcon( ac->icon() ), ac->text().replace( re, "" ), *it ); } // sync int s = fileSelector->autoSyncEvents; cbSyncActive->setChecked( s & KateFileSelector::DocumentChanged ); cbSyncShow->setChecked( s & KateFileSelector::GotVisible ); // histories sbPathHistLength->setValue( fileSelector->cmbPath->maxItems() ); sbFilterHistLength->setValue( fileSelector->filter->maxCount() ); // session cbSesLocation->setChecked( config->readBoolEntry( "restore location", true ) ); cbSesFilter->setChecked( config->readBoolEntry( "restore last filter", true ) ); }
DvbEpgDialog::DvbEpgDialog(DvbManager *manager_, QWidget *parent) : KDialog(parent), manager(manager_) { setButtons(KDialog::Close); setCaption(i18nc("@title:window", "Program Guide")); QWidget *widget = new QWidget(this); QBoxLayout *mainLayout = new QHBoxLayout(widget); epgChannelTableModel = new DvbEpgChannelTableModel(this); epgChannelTableModel->setManager(manager); channelView = new QTreeView(widget); channelView->setMaximumWidth(30 * fontMetrics().averageCharWidth()); channelView->setModel(epgChannelTableModel); channelView->setRootIsDecorated(false); channelView->setUniformRowHeights(true); connect(channelView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(channelActivated(QModelIndex))); mainLayout->addWidget(channelView); QBoxLayout *rightLayout = new QVBoxLayout(); QBoxLayout *boxLayout = new QHBoxLayout(); KAction *scheduleAction = new KAction(QIcon::fromTheme(QLatin1String("media-record")), i18nc("@action:inmenu tv show", "Record Show"), this); connect(scheduleAction, SIGNAL(triggered()), this, SLOT(scheduleProgram())); QPushButton *pushButton = new QPushButton(scheduleAction->icon(), scheduleAction->text(), widget); connect(pushButton, SIGNAL(clicked()), this, SLOT(scheduleProgram())); boxLayout->addWidget(pushButton); boxLayout->addWidget(new QLabel(i18nc("@label:textbox", "Search:"), widget)); epgTableModel = new DvbEpgTableModel(this); epgTableModel->setEpgModel(manager->getEpgModel()); connect(epgTableModel, SIGNAL(layoutChanged()), this, SLOT(checkEntry())); KLineEdit *lineEdit = new KLineEdit(widget); lineEdit->setClearButtonShown(true); connect(lineEdit, SIGNAL(textChanged(QString)), epgTableModel, SLOT(setContentFilter(QString))); boxLayout->addWidget(lineEdit); rightLayout->addLayout(boxLayout); epgView = new QTreeView(widget); epgView->addAction(scheduleAction); epgView->header()->setResizeMode(QHeaderView::ResizeToContents); epgView->setContextMenuPolicy(Qt::ActionsContextMenu); epgView->setMinimumWidth(75 * fontMetrics().averageCharWidth()); epgView->setModel(epgTableModel); epgView->setRootIsDecorated(false); epgView->setUniformRowHeights(true); connect(epgView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(entryActivated(QModelIndex))); rightLayout->addWidget(epgView); contentLabel = new QLabel(widget); contentLabel->setAlignment(Qt::AlignLeft | Qt::AlignTop); contentLabel->setMargin(5); contentLabel->setWordWrap(true); QScrollArea *scrollArea = new QScrollArea(widget); scrollArea->setBackgroundRole(QPalette::Light); scrollArea->setMinimumHeight(12 * fontMetrics().height()); scrollArea->setWidget(contentLabel); scrollArea->setWidgetResizable(true); rightLayout->addWidget(scrollArea); mainLayout->addLayout(rightLayout); setMainWidget(widget); }
void MainWindow::selectPlugin( Kontact::Plugin *plugin ) { if ( !plugin ) return; if ( plugin->isRunningStandalone() ) { statusBar()->message( i18n( "Application is running standalone. Foregrounding..." ), 1000 ); mSidePane->indicateForegrunding( plugin ); plugin->bringToForeground(); return; } KApplication::setOverrideCursor( QCursor( Qt::WaitCursor ) ); KParts::Part *part = plugin->part(); if ( !part ) { KApplication::restoreOverrideCursor(); KMessageBox::error( this, i18n( "Cannot load part for %1." ) .arg( plugin->title() ) + "\n" + lastErrorMessage() ); plugin->setDisabled( true ); mSidePane->updatePlugins(); return; } // store old focus widget QWidget *focusWidget = kapp->focusWidget(); if ( mCurrentPlugin && focusWidget ) { // save the focus widget only when it belongs to the activated part QWidget *parent = focusWidget->parentWidget(); while ( parent ) { if ( parent == mCurrentPlugin->part()->widget() ) mFocusWidgets.insert( mCurrentPlugin->identifier(), QGuardedPtr<QWidget>( focusWidget ) ); parent = parent->parentWidget(); } } if ( mSidePane ) mSidePane->selectPlugin( plugin ); plugin->select(); mPartManager->setActivePart( part ); QWidget *view = part->widget(); Q_ASSERT( view ); if ( view ) { mPartsStack->raiseWidget( view ); view->show(); if ( mFocusWidgets.contains( plugin->identifier() ) ) { focusWidget = mFocusWidgets[ plugin->identifier() ]; if ( focusWidget ) focusWidget->setFocus(); } else view->setFocus(); mCurrentPlugin = plugin; KAction *newAction = plugin->newActions()->first(); KAction *syncAction = plugin->syncActions()->first(); createGUI( plugin->part() ); KToolBar* navigatorToolBar = findToolBar( "navigatorToolBar" ); // Let the navigator toolbar be always the last one, if it's in the top dockwindow if ( navigatorToolBar && !navigatorToolBar->isHidden() && navigatorToolBar->barPos() == KToolBar::Top ) { topDock()->moveDockWindow( navigatorToolBar, -1 ); } setCaption( i18n( "Plugin dependent window title" ,"%1 - Kontact" ).arg( plugin->title() ) ); if ( newAction ) { mNewActions->setIcon( newAction->icon() ); mNewActions->setText( newAction->text() ); } else { // we'll use the action of the first plugin which offers one PluginList::Iterator it; for ( it = mPlugins.begin(); it != mPlugins.end(); ++it ) { newAction = (*it)->newActions()->first(); if ( newAction ) { mNewActions->setIcon( newAction->icon() ); mNewActions->setText( newAction->text() ); break; } } } if ( mSyncActionsEnabled ) { if ( syncAction ) { mSyncActions->setIcon( syncAction->icon() ); mSyncActions->setText( syncAction->text() ); } else { // we'll use the action of the first plugin which offers one PluginList::Iterator it; for ( it = mPlugins.begin(); it != mPlugins.end(); ++it ) { syncAction = (*it)->syncActions()->first(); if ( syncAction ) { mSyncActions->setIcon( syncAction->icon() ); mSyncActions->setText( syncAction->text() ); break; } } } } } QStringList invisibleActions = plugin->invisibleToolbarActions(); QStringList::ConstIterator it; for ( it = invisibleActions.begin(); it != invisibleActions.end(); ++it ) { KAction *action = part->actionCollection()->action( (*it).latin1() ); if ( action ) { QPtrListIterator<KToolBar> it( toolBarIterator() ); for ( ; it.current() ; ++it ) { action->unplug( it.current() ); } } } KApplication::restoreOverrideCursor(); }
MediaWidget::MediaWidget(KMenu *menu_, KToolBar *toolBar, KActionCollection *collection, QWidget *parent) : QWidget(parent), menu(menu_), displayMode(NormalMode), automaticResize(ResizeOff), blockBackendUpdates(false), muted(false), screenSaverSuspended(false), showElapsedTime(true) { dummySource.reset(new MediaSource()); source = dummySource.data(); QBoxLayout *layout = new QVBoxLayout(this); layout->setMargin(0); QPalette palette = QWidget::palette(); palette.setColor(backgroundRole(), Qt::black); setPalette(palette); setAutoFillBackground(true); setAcceptDrops(true); setFocusPolicy(Qt::StrongFocus); backend = VlcMediaWidget::createVlcMediaWidget(this); if (backend == NULL) { backend = new DummyMediaWidget(this); } backend->connectToMediaWidget(this); layout->addWidget(backend); osdWidget = new OsdWidget(this); actionPrevious = new KAction(KIcon(QLatin1String("media-skip-backward")), i18n("Previous"), this); actionPrevious->setShortcut(KShortcut(Qt::Key_PageUp, Qt::Key_MediaPrevious)); connect(actionPrevious, SIGNAL(triggered()), this, SLOT(previous())); toolBar->addAction(collection->addAction(QLatin1String("controls_previous"), actionPrevious)); menu->addAction(actionPrevious); actionPlayPause = new KAction(this); actionPlayPause->setShortcut(KShortcut(Qt::Key_Space, Qt::Key_MediaPlay)); textPlay = i18n("Play"); textPause = i18n("Pause"); iconPlay = KIcon(QLatin1String("media-playback-start")); iconPause = KIcon(QLatin1String("media-playback-pause")); connect(actionPlayPause, SIGNAL(triggered(bool)), this, SLOT(pausedChanged(bool))); toolBar->addAction(collection->addAction(QLatin1String("controls_play_pause"), actionPlayPause)); menu->addAction(actionPlayPause); actionStop = new KAction(KIcon(QLatin1String("media-playback-stop")), i18n("Stop"), this); actionStop->setShortcut(KShortcut(Qt::Key_Backspace, Qt::Key_MediaStop)); connect(actionStop, SIGNAL(triggered()), this, SLOT(stop())); toolBar->addAction(collection->addAction(QLatin1String("controls_stop"), actionStop)); menu->addAction(actionStop); actionNext = new KAction(KIcon(QLatin1String("media-skip-forward")), i18n("Next"), this); actionNext->setShortcut(KShortcut(Qt::Key_PageDown, Qt::Key_MediaNext)); connect(actionNext, SIGNAL(triggered()), this, SLOT(next())); toolBar->addAction(collection->addAction(QLatin1String("controls_next"), actionNext)); menu->addAction(actionNext); menu->addSeparator(); fullScreenAction = new KAction(KIcon(QLatin1String("view-fullscreen")), i18nc("'Playback' menu", "Full Screen Mode"), this); fullScreenAction->setShortcut(Qt::Key_F); connect(fullScreenAction, SIGNAL(triggered()), this, SLOT(toggleFullScreen())); menu->addAction(collection->addAction(QLatin1String("view_fullscreen"), fullScreenAction)); minimalModeAction = new KAction(KIcon(QLatin1String("view-fullscreen")), i18nc("'Playback' menu", "Minimal Mode"), this); minimalModeAction->setShortcut(Qt::Key_Period); connect(minimalModeAction, SIGNAL(triggered()), this, SLOT(toggleMinimalMode())); menu->addAction(collection->addAction(QLatin1String("view_minimal_mode"), minimalModeAction)); audioStreamBox = new KComboBox(toolBar); connect(audioStreamBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentAudioStreamChanged(int))); toolBar->addWidget(audioStreamBox); audioStreamModel = new QStringListModel(toolBar); audioStreamBox->setModel(audioStreamModel); subtitleBox = new KComboBox(toolBar); textSubtitlesOff = i18nc("subtitle selection entry", "off"); connect(subtitleBox, SIGNAL(currentIndexChanged(int)), this, SLOT(currentSubtitleChanged(int))); toolBar->addWidget(subtitleBox); subtitleModel = new QStringListModel(toolBar); subtitleBox->setModel(subtitleModel); KMenu *audioMenu = new KMenu(i18nc("'Playback' menu", "Audio"), this); KAction *action = new KAction(KIcon(QLatin1String("audio-volume-high")), i18nc("'Audio' menu", "Increase Volume"), this); action->setShortcut(KShortcut(Qt::Key_Plus, Qt::Key_VolumeUp)); connect(action, SIGNAL(triggered()), this, SLOT(increaseVolume())); audioMenu->addAction(collection->addAction(QLatin1String("controls_increase_volume"), action)); action = new KAction(KIcon(QLatin1String("audio-volume-low")), i18nc("'Audio' menu", "Decrease Volume"), this); action->setShortcut(KShortcut(Qt::Key_Minus, Qt::Key_VolumeDown)); connect(action, SIGNAL(triggered()), this, SLOT(decreaseVolume())); audioMenu->addAction(collection->addAction(QLatin1String("controls_decrease_volume"), action)); muteAction = new KAction(i18nc("'Audio' menu", "Mute Volume"), this); mutedIcon = KIcon(QLatin1String("audio-volume-muted")); unmutedIcon = KIcon(QLatin1String("audio-volume-medium")); muteAction->setIcon(unmutedIcon); muteAction->setShortcut(KShortcut(Qt::Key_M, Qt::Key_VolumeMute)); connect(muteAction, SIGNAL(triggered()), this, SLOT(mutedChanged())); toolBar->addAction(collection->addAction(QLatin1String("controls_mute_volume"), muteAction)); audioMenu->addAction(muteAction); menu->addMenu(audioMenu); KMenu *videoMenu = new KMenu(i18nc("'Playback' menu", "Video"), this); menu->addMenu(videoMenu); menu->addSeparator(); deinterlaceAction = new KAction(KIcon(QLatin1String("format-justify-center")), i18nc("'Video' menu", "Deinterlace"), this); deinterlaceAction->setCheckable(true); deinterlaceAction->setChecked( KGlobal::config()->group("MediaObject").readEntry("Deinterlace", true)); deinterlaceAction->setShortcut(Qt::Key_I); connect(deinterlaceAction, SIGNAL(toggled(bool)), this, SLOT(deinterlacingChanged(bool))); backend->setDeinterlacing(deinterlaceAction->isChecked()); videoMenu->addAction(collection->addAction(QLatin1String("controls_deinterlace"), deinterlaceAction)); KMenu *aspectMenu = new KMenu(i18nc("'Video' menu", "Aspect Ratio"), this); QActionGroup *aspectGroup = new QActionGroup(this); connect(aspectGroup, SIGNAL(triggered(QAction*)), this, SLOT(aspectRatioChanged(QAction*))); action = new KAction(i18nc("'Aspect Ratio' menu", "Automatic"), aspectGroup); action->setCheckable(true); action->setChecked(true); action->setData(AspectRatioAuto); aspectMenu->addAction(collection->addAction(QLatin1String("controls_aspect_auto"), action)); action = new KAction(i18nc("'Aspect Ratio' menu", "Fit to Window"), aspectGroup); action->setCheckable(true); action->setData(AspectRatioWidget); aspectMenu->addAction(collection->addAction(QLatin1String("controls_aspect_widget"), action)); action = new KAction(i18nc("'Aspect Ratio' menu", "4:3"), aspectGroup); action->setCheckable(true); action->setData(AspectRatio4_3); aspectMenu->addAction(collection->addAction(QLatin1String("controls_aspect_4_3"), action)); action = new KAction(i18nc("'Aspect Ratio' menu", "16:9"), aspectGroup); action->setCheckable(true); action->setData(AspectRatio16_9); aspectMenu->addAction(collection->addAction(QLatin1String("controls_aspect_16_9"), action)); // Changes aspect ratio "a la VLC" currentAspectRatio=AspectRatioAuto; action = new KAction(KIcon(QLatin1String("chainAspectRatio")), i18nc("'Aspect Ratio' menu", "Chain ratio"), this); action->setShortcut(Qt::CTRL+Qt::Key_A); connect(action, SIGNAL(triggered()), this, SLOT(chainAspectRatio())); aspectMenu->addAction(collection->addAction(QLatin1String("chainAspectRatio"), action)); // Switches scale "a la VLC" currentAspectRatio=AspectRatioAuto; action = new KAction(KIcon(QLatin1String("switchScale")), i18nc("'Aspect Ratio' menu", "Switch scale"), this); action->setShortcut(Qt::SHIFT+Qt::Key_O); connect(action, SIGNAL(triggered()), this, SLOT(switchScale())); aspectMenu->addAction(collection->addAction(QLatin1String("switchScale"), action)); videoMenu->addMenu(aspectMenu); KMenu *autoResizeMenu = new KMenu(i18n("Automatic Resize"), this); QActionGroup *autoResizeGroup = new QActionGroup(this); // we need an event even if you select the currently selected item autoResizeGroup->setExclusive(false); connect(autoResizeGroup, SIGNAL(triggered(QAction*)), this, SLOT(autoResizeTriggered(QAction*))); action = new KAction(i18nc("automatic resize", "Off"), autoResizeGroup); action->setCheckable(true); action->setData(0); autoResizeMenu->addAction(collection->addAction(QLatin1String("controls_autoresize_off"), action)); action = new KAction(i18nc("automatic resize", "Original Size"), autoResizeGroup); action->setCheckable(true); action->setData(1); autoResizeMenu->addAction(collection->addAction(QLatin1String("controls_autoresize_original"), action)); action = new KAction(i18nc("automatic resize", "Double Size"), autoResizeGroup); action->setCheckable(true); action->setData(2); autoResizeMenu->addAction(collection->addAction(QLatin1String("controls_autoresize_double"), action)); int autoResizeFactor = KGlobal::config()->group("MediaObject").readEntry("AutoResizeFactor", 0); switch (autoResizeFactor) { case 1: automaticResize = OriginalSize; autoResizeGroup->actions().at(1)->setChecked(true); break; case 2: automaticResize = DoubleSize; autoResizeGroup->actions().at(2)->setChecked(true); break; default: automaticResize = ResizeOff; autoResizeGroup->actions().at(0)->setChecked(true); break; } videoMenu->addMenu(autoResizeMenu); action = new KAction(i18n("Volume Slider"), this); volumeSlider = new QSlider(toolBar); volumeSlider->setFocusPolicy(Qt::NoFocus); volumeSlider->setOrientation(Qt::Horizontal); volumeSlider->setRange(0, 100); volumeSlider->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); volumeSlider->setToolTip(action->text()); volumeSlider->setValue(KGlobal::config()->group("MediaObject").readEntry("Volume", 100)); connect(volumeSlider, SIGNAL(valueChanged(int)), this, SLOT(volumeChanged(int))); backend->setVolume(volumeSlider->value()); action->setDefaultWidget(volumeSlider); toolBar->addAction(collection->addAction(QLatin1String("controls_volume_slider"), action)); jumpToPositionAction = new KAction(KIcon(QLatin1String("go-jump")), i18nc("@action:inmenu", "Jump to Position..."), this); jumpToPositionAction->setShortcut(Qt::CTRL + Qt::Key_J); connect(jumpToPositionAction, SIGNAL(triggered()), this, SLOT(jumpToPosition())); menu->addAction(collection->addAction(QLatin1String("controls_jump_to_position"), jumpToPositionAction)); navigationMenu = new KMenu(i18nc("playback menu", "Skip"), this); menu->addMenu(navigationMenu); menu->addSeparator(); int shortSkipDuration = Configuration::instance()->getShortSkipDuration(); int longSkipDuration = Configuration::instance()->getLongSkipDuration(); connect(Configuration::instance(), SIGNAL(shortSkipDurationChanged(int)), this, SLOT(shortSkipDurationChanged(int))); connect(Configuration::instance(), SIGNAL(longSkipDurationChanged(int)), this, SLOT(longSkipDurationChanged(int))); longSkipBackwardAction = new KAction(KIcon(QLatin1String("media-skip-backward")), i18nc("submenu of 'Skip'", "Skip %1s Backward", longSkipDuration), this); longSkipBackwardAction->setShortcut(Qt::SHIFT + Qt::Key_Left); connect(longSkipBackwardAction, SIGNAL(triggered()), this, SLOT(longSkipBackward())); navigationMenu->addAction( collection->addAction(QLatin1String("controls_long_skip_backward"), longSkipBackwardAction)); shortSkipBackwardAction = new KAction(KIcon(QLatin1String("media-skip-backward")), i18nc("submenu of 'Skip'", "Skip %1s Backward", shortSkipDuration), this); shortSkipBackwardAction->setShortcut(Qt::Key_Left); connect(shortSkipBackwardAction, SIGNAL(triggered()), this, SLOT(shortSkipBackward())); navigationMenu->addAction( collection->addAction(QLatin1String("controls_skip_backward"), shortSkipBackwardAction)); shortSkipForwardAction = new KAction(KIcon(QLatin1String("media-skip-forward")), i18nc("submenu of 'Skip'", "Skip %1s Forward", shortSkipDuration), this); shortSkipForwardAction->setShortcut(Qt::Key_Right); connect(shortSkipForwardAction, SIGNAL(triggered()), this, SLOT(shortSkipForward())); navigationMenu->addAction( collection->addAction(QLatin1String("controls_skip_forward"), shortSkipForwardAction)); longSkipForwardAction = new KAction(KIcon(QLatin1String("media-skip-forward")), i18nc("submenu of 'Skip'", "Skip %1s Forward", longSkipDuration), this); longSkipForwardAction->setShortcut(Qt::SHIFT + Qt::Key_Right); connect(longSkipForwardAction, SIGNAL(triggered()), this, SLOT(longSkipForward())); navigationMenu->addAction( collection->addAction(QLatin1String("controls_long_skip_forward"), longSkipForwardAction)); toolBar->addAction(KIcon(QLatin1String("player-time")), i18n("Seek Slider"))->setEnabled(false); action = new KAction(i18n("Seek Slider"), this); seekSlider = new SeekSlider(toolBar); seekSlider->setFocusPolicy(Qt::NoFocus); seekSlider->setOrientation(Qt::Horizontal); seekSlider->setToolTip(action->text()); connect(seekSlider, SIGNAL(valueChanged(int)), this, SLOT(seek(int))); action->setDefaultWidget(seekSlider); toolBar->addAction(collection->addAction(QLatin1String("controls_position_slider"), action)); menuAction = new KAction(KIcon(QLatin1String("media-optical-video")), i18nc("dvd navigation", "DVD Menu"), this); connect(menuAction, SIGNAL(triggered()), this, SLOT(toggleMenu())); menu->addAction(collection->addAction(QLatin1String("controls_toggle_menu"), menuAction)); titleMenu = new KMenu(i18nc("dvd navigation", "Title"), this); titleGroup = new QActionGroup(this); connect(titleGroup, SIGNAL(triggered(QAction*)), this, SLOT(currentTitleChanged(QAction*))); menu->addMenu(titleMenu); chapterMenu = new KMenu(i18nc("dvd navigation", "Chapter"), this); chapterGroup = new QActionGroup(this); connect(chapterGroup, SIGNAL(triggered(QAction*)), this, SLOT(currentChapterChanged(QAction*))); menu->addMenu(chapterMenu); angleMenu = new KMenu(i18nc("dvd navigation", "Angle"), this); angleGroup = new QActionGroup(this); connect(angleGroup, SIGNAL(triggered(QAction*)), this, SLOT(currentAngleChanged(QAction*))); menu->addMenu(angleMenu); action = new KAction(i18n("Switch between elapsed and remaining time display"), this); timeButton = new QPushButton(toolBar); timeButton->setFocusPolicy(Qt::NoFocus); timeButton->setToolTip(action->text()); connect(timeButton, SIGNAL(clicked(bool)), this, SLOT(timeButtonClicked())); action->setDefaultWidget(timeButton); toolBar->addAction(collection->addAction(QLatin1String("controls_time_button"), action)); QTimer *timer = new QTimer(this); timer->start(50000); connect(timer, SIGNAL(timeout()), this, SLOT(checkScreenSaver())); }
void ActionConfigDialog::slotShortcutCaptured(const KShortcut &shortcut) { QString shortcutText = shortcut.toString(); QString shortcutText2; int pos = shortcutText.find(';'); if (pos != -1) { shortcutText2 = shortcutText.mid(pos + 1); shortcutText = shortcutText.left(pos); } QString s = shortcutText; s.replace('+', "\\+"); QRegExp shortcutRx("\\(" + s + "\\)|" + s + "$|" + s + ";"); s = shortcutText2; s.replace('+', "\\+"); QRegExp shortcutRx2("\\(" + s + "\\)|" + s + "$|" + s + ";"); QString global; //check for conflicting global shortcuts QMap<QString, QString>::Iterator it; for ( it = globalShortcuts.begin(); it != globalShortcuts.end(); ++it ) { if (it.data().contains(shortcutRx)) { global = it.key(); break; } if (!shortcutText2.isEmpty() && it.data().contains(shortcutRx2)) { shortcutText = shortcutText2; global = it.key(); break; } } if (global.isEmpty()) { QPtrList<KXMLGUIClient> clients = m_mainWindow->guiFactory()->clients(); for( QPtrListIterator<KXMLGUIClient> it( clients ); it.current(); ++it ) { KActionCollection *ac = (*it)->actionCollection(); for (uint i = 0; i < ac->count(); i++) { KAction *action = ac->action(i); if (action != currentAction && action->shortcut().toString().contains(shortcutRx)) { global = action->text(); break; } if (!shortcutText2.isEmpty() && action != currentAction && action->shortcut().toString().contains(shortcutRx)) { shortcutText = shortcutText2; global = action->text(); break; } } if (!global.isEmpty()) break; } } if (global.isEmpty()) { shortcutKeyButton->setText(shortcutText); buttonApply->setEnabled(true); selectedShortcut = shortcut; } else { global.replace('&',""); QString s = i18n("The '%1' key combination has already been allocated " "to the \"%2\" action.\n" "Please choose a unique key combination."). arg(shortcutText).arg(global); KMessageBox::sorry( this, s, i18n("Conflicting Shortcuts")); } }
ActionConfigDialog::ActionConfigDialog(const QDict<ToolbarEntry> &toolbarList, KMainWindow* parent, const char* name, bool modal, WFlags fl, const QString& defaultAction ) :ActionConfigDialogS( parent, name, modal, fl ) { m_mainWindow = parent; m_toolbarList = toolbarList; buttonOk->setIconSet(SmallIconSet("button_ok")); buttonCancel->setIconSet(SmallIconSet("button_cancel")); buttonApply->setIconSet(SmallIconSet("apply")); //buttonHelp->setIconSet(SmallIconSet("help")); currentAction = 0L; m_toolbarItem = 0L; connect(actionTreeView, SIGNAL(contextMenu(KListView *,QListViewItem *,const QPoint &)), SLOT(slotContextMenu(KListView *,QListViewItem *,const QPoint &))); connect(actionTreeView, SIGNAL(selectionChanged(QListViewItem *)), SLOT(slotSelectionChanged(QListViewItem *))); connect(shortcutKeyButton, SIGNAL(capturedShortcut(const KShortcut &)), SLOT(slotShortcutCaptured(const KShortcut &))); connect(scriptPath, SIGNAL(activated(const QString&)), SLOT(slotTextChanged(const QString&))); connect(this, SIGNAL(addToolbar()), m_mainWindow, SLOT(slotAddToolbar())); connect(this, SIGNAL(removeToolbar(const QString&)), m_mainWindow, SLOT(slotRemoveToolbar(const QString&))); connect(this, SIGNAL(deleteUserAction(KAction*)), m_mainWindow, SLOT(slotDeleteAction(KAction*))); connect(this, SIGNAL(configureToolbars(const QString&)), m_mainWindow, SLOT(slotConfigureToolbars(const QString&))); //fill up the tree view with the toolbars and actions actionTreeView->setSorting(-1); allActionsItem = new KListViewItem(actionTreeView, i18n("All")); actionTreeView->insertItem(allActionsItem); QListViewItem *item, *oldItem = allActionsItem; KAction *action; QString toolbarName; QString toolbarId; ToolbarTabWidget *tb = ToolbarTabWidget::ref(); QRegExp r("\\&(?!\\&)"); KActionCollection *ac = m_mainWindow->actionCollection(); for (int i = 0; i < tb->count(); i++) { toolbarName = tb->label(i); toolbarName.replace(r, ""); item = new KListViewItem(actionTreeView, oldItem, i18n(toolbarName.utf8())); actionTreeView->insertItem(item); toolbarId = tb->id(i); QListViewItem *oldActionItem = 0L; ToolbarEntry *p_toolbar = m_toolbarList[toolbarId]; if (p_toolbar) { QDomNode node = p_toolbar->guiClient->domDocument().firstChild().firstChild().firstChild(); while (!node.isNull()) { if (node.nodeName() == "Action") { action = ac->action(node.toElement().attribute("name")); if (action) { oldActionItem = new KListViewItem(item, oldActionItem, action->text().replace(r,""), action->shortcut().toString(), action->name()); oldActionItem->setPixmap(0, SmallIcon(action->icon()) ); } } node = node.nextSibling(); } if (tb->label(tb->currentPageIndex()).replace(r, "") == toolbarName) { item->setOpen(true); if (item->firstChild()) { if (defaultAction.isEmpty()) { actionTreeView->setCurrentItem(item->firstChild()); } else { QListViewItem *actionItem = item->firstChild(); while (actionItem && actionItem->depth() > 0) { if (actionItem->text(0) == defaultAction || actionItem->text(0) == defaultAction + "...") { actionTreeView->setCurrentItem(actionItem); break; } actionItem = actionItem->nextSibling(); } } } } } oldItem = item; } uint acCount = ac->count(); for (uint i = 0; i < acCount; i++) { action = ac->action(i); item = new KListViewItem(allActionsItem, action->text().replace(r, ""), action->shortcut().toString(), action->name()); item->setPixmap(0, SmallIcon(action->icon()) ); } allActionsItem->sortChildItems(0, true); treeMenu = new KPopupMenu(actionTreeView); treeMenu->insertItem(i18n("&Add New Toolbar"), this, SLOT(slotAddToolbar())); treeMenu->insertItem(i18n("&Remove Toolbar"), this, SLOT(slotRemoveToolbar())); treeMenu->insertItem(i18n("&Edit Toolbar"), this, SLOT(slotEditToolbar())); globalShortcuts = KGlobal::config()->entryMap( "Global Shortcuts" ); }