void KNewFileMenuPrivate::executeRealFileOrDir(const KNewFileMenuSingleton::Entry& entry) { // The template is not a desktop file // Show the small dialog for getting the destination filename QString text = entry.text; text.remove("..."); // the ... is fine for the menu item but not for the default filename text = text.trimmed(); // In some languages, there is a space in front of "...", see bug 268895 m_strategy.m_src = entry.templatePath; KUrl defaultFile(m_popupFiles.first()); defaultFile.addPath(KIO::encodeFileName(text)); if (defaultFile.isLocalFile() && QFile::exists(defaultFile.toLocalFile())) text = KIO::RenameDialog::suggestName(m_popupFiles.first(), text); KDialog* fileDialog = new KDialog(m_parentWidget); fileDialog->setAttribute(Qt::WA_DeleteOnClose); fileDialog->setModal(q->isModal()); fileDialog->setButtons(KDialog::Ok | KDialog::Cancel); QWidget* mainWidget = new QWidget(fileDialog); QVBoxLayout *layout = new QVBoxLayout(mainWidget); QLabel *label = new QLabel(entry.comment); // We don't set the text of lineEdit in its constructor because the clear button would not be shown then. // It seems that setClearButtonShown(true) must be called *before* the text is set to make it work. // TODO: should probably be investigated and fixed in KLineEdit. KLineEdit *lineEdit = new KLineEdit; lineEdit->setClearButtonShown(true); lineEdit->setText(text); _k_slotTextChanged(text); QObject::connect(lineEdit, SIGNAL(textChanged(const QString &)), q, SLOT(_k_slotTextChanged(const QString &))); layout->addWidget(label); layout->addWidget(lineEdit); fileDialog->setMainWidget(mainWidget); QObject::connect(fileDialog, SIGNAL(accepted()), q, SLOT(_k_slotRealFileOrDir())); QObject::connect(fileDialog, SIGNAL(rejected()), q, SLOT(_k_slotAbortDialog())); fileDialog->show(); lineEdit->selectAll(); lineEdit->setFocus(); }
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); }
Interface::Interface(Plasma::RunnerManager *runnerManager, QWidget *parent) : KRunnerDialog(runnerManager, parent), m_delayedRun(false), m_running(false), m_queryRunning(false) { m_resultData.processHoverEvents = true; m_resultData.mouseHovering = false; m_resultData.runnerManager = runnerManager; m_hideResultsTimer.setSingleShot(true); connect(&m_hideResultsTimer, SIGNAL(timeout()), this, SLOT(hideResultsArea())); m_reenableHoverEventsTimer.setSingleShot(true); m_reenableHoverEventsTimer.setInterval(50); connect(&m_reenableHoverEventsTimer, SIGNAL(timeout()), this, SLOT(reenableHoverEvents())); m_layout = new QVBoxLayout(this); m_layout->setMargin(0); m_buttonContainer = new QWidget(this); QHBoxLayout *bottomLayout = new QHBoxLayout(m_buttonContainer); bottomLayout->setMargin(0); m_configButton = new ToolButton(m_buttonContainer); m_configButton->setText(i18n("Settings")); m_configButton->setToolTip(i18n("Settings")); connect(m_configButton, SIGNAL(clicked()), SLOT(toggleConfigDialog())); bottomLayout->addWidget(m_configButton); //Set up the system activity button, using the krunner global action, showing the global shortcut in the tooltip m_activityButton = new ToolButton(m_buttonContainer); KRunnerApp *krunnerApp = KRunnerApp::self(); QAction *showSystemActivityAction = krunnerApp->actionCollection()->action(QLatin1String( "Show System Activity" )); m_activityButton->setDefaultAction(showSystemActivityAction); updateSystemActivityToolTip(); connect(showSystemActivityAction, SIGNAL(globalShortcutChanged(QKeySequence)), this, SLOT(updateSystemActivityToolTip())); connect(showSystemActivityAction, SIGNAL(triggered(bool)), this, SLOT(resetAndClose())); bottomLayout->addWidget(m_activityButton); m_singleRunnerIcon = new QLabel(); bottomLayout->addWidget(m_singleRunnerIcon); m_singleRunnerDisplayName = new QLabel(); bottomLayout->addWidget(m_singleRunnerDisplayName); m_helpButton = new ToolButton(m_buttonContainer); m_helpButton->setText(i18n("Help")); m_helpButton->setToolTip(i18n("Information on using this application")); connect(m_helpButton, SIGNAL(clicked(bool)), SLOT(showHelp())); connect(m_helpButton, SIGNAL(clicked(bool)), SLOT(configCompleted())); bottomLayout->addWidget(m_helpButton); QSpacerItem* closeButtonSpacer = new QSpacerItem(0,0,QSizePolicy::MinimumExpanding,QSizePolicy::Fixed); bottomLayout->addSpacerItem(closeButtonSpacer); m_closeButton = new ToolButton(m_buttonContainer); KGuiItem guiItem = KStandardGuiItem::close(); m_closeButton->setText(guiItem.text()); m_closeButton->setToolTip(guiItem.text().remove(QLatin1Char( '&' ))); connect(m_closeButton, SIGNAL(clicked(bool)), SLOT(resetAndClose())); bottomLayout->addWidget(m_closeButton); m_layout->addWidget(m_buttonContainer); m_searchTerm = new KrunnerHistoryComboBox(false, this); KLineEdit *lineEdit = new KLineEdit(m_searchTerm); QAction *focusEdit = new QAction(this); focusEdit->setShortcut(Qt::Key_F6); connect(focusEdit, SIGNAL(triggered(bool)), this, SLOT(searchTermSetFocus())); addAction(focusEdit); // the order of these next few lines if very important. // QComboBox::setLineEdit sets the autoComplete flag on the lineedit, // and KComboBox::setAutoComplete resets the autocomplete mode! ugh! m_searchTerm->setLineEdit(lineEdit); m_completion = new KCompletion(); lineEdit->setCompletionObject(m_completion); lineEdit->setCompletionMode(static_cast<KGlobalSettings::Completion>(KRunnerSettings::queryTextCompletionMode())); lineEdit->setClearButtonShown(true); QStringList pastQueryItems = KRunnerSettings::pastQueries(); m_searchTerm->setHistoryItems(pastQueryItems); m_completion->insertItems(pastQueryItems); bottomLayout->insertWidget(4, m_searchTerm, 10); m_singleRunnerSearchTerm = new KLineEdit(this); bottomLayout->insertWidget(4, m_singleRunnerSearchTerm, 10 ); //kDebug() << "size:" << m_resultsView->size() << m_resultsView->minimumSize(); m_resultsScene = new ResultScene(&m_resultData, runnerManager, m_searchTerm, this); m_resultsView = new ResultsView(m_resultsScene, &m_resultData, this); m_layout->addWidget(m_resultsView); connect(m_resultsScene, SIGNAL(viewableHeightChanged()), this, SLOT(fitWindow())); connect(m_resultsScene, SIGNAL(matchCountChanged(int)), this, SLOT(matchCountChanged(int))); connect(m_resultsScene, SIGNAL(itemActivated(ResultItem*)), this, SLOT(run(ResultItem*))); connect(m_searchTerm, SIGNAL(queryTextEdited(QString)), this, SLOT(queryTextEdited(QString))); connect(m_searchTerm, SIGNAL(returnPressed()), this, SLOT(runDefaultResultItem())); connect(m_singleRunnerSearchTerm, SIGNAL(textChanged(QString)), this, SLOT(queryTextEdited(QString))); connect(m_singleRunnerSearchTerm, SIGNAL(returnPressed()), this, SLOT(runDefaultResultItem())); lineEdit->installEventFilter(this); m_searchTerm->installEventFilter(this); themeUpdated(); connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()), this, SLOT(themeUpdated())); new QShortcut(QKeySequence(Qt::Key_Escape), this, SLOT(resetAndClose())); m_layout->setAlignment(Qt::AlignTop); setTabOrder(0, m_configButton); setTabOrder(m_configButton, m_activityButton); setTabOrder(m_activityButton, m_searchTerm); setTabOrder(m_searchTerm, m_singleRunnerSearchTerm); setTabOrder(m_singleRunnerSearchTerm, m_resultsView); setTabOrder(m_resultsView, m_helpButton); setTabOrder(m_helpButton, m_closeButton); //kDebug() << "size:" << m_resultsView->size() << m_resultsView->minimumSize() << minimumSizeHint(); // we restore the original size, which will set the results view back to its // normal size, then we hide the results view and resize the dialog setMinimumSize(QSize(MIN_WIDTH, m_searchTerm->sizeHint().height())); // we load the last used size; the saved value is the size of the dialog when the // results are visible; adjustSize(); if (KGlobal::config()->hasGroup("Interface")) { KConfigGroup interfaceConfig(KGlobal::config(), "Interface"); restoreDialogSize(interfaceConfig); m_defaultSize = size(); } else { const int screenWidth = qApp->desktop()->screenGeometry().width(); int width = size().width(); if (screenWidth >= 1920) { width = qMax(width, 550); } else if (screenWidth >= 1024) { width = qMax(width, 300); } m_defaultSize = QSize(width, 500); } m_resultsView->hide(); m_delayedQueryTimer.setSingleShot(true); m_delayedQueryTimer.setInterval(50); connect(&m_delayedQueryTimer, SIGNAL(timeout()), this, SLOT(delayedQueryLaunch())); m_saveDialogSizeTimer.setSingleShot(true); m_saveDialogSizeTimer.setInterval(1000); connect(&m_saveDialogSizeTimer, SIGNAL(timeout()), SLOT(saveCurrentDialogSize())); QTimer::singleShot(0, this, SLOT(resetInterface())); }