diff --git a/applets/kicker/plugin/computermodel.cpp b/applets/kicker/plugin/computermodel.cpp index 4e6272c2a..7227174d4 100644 --- a/applets/kicker/plugin/computermodel.cpp +++ b/applets/kicker/plugin/computermodel.cpp @@ -1,301 +1,301 @@ /*************************************************************************** * Copyright (C) 2007 Kevin Ottens * * Copyright (C) 2015 by Eike Hein * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * ***************************************************************************/ #include "computermodel.h" #include "actionlist.h" #include "simplefavoritesmodel.h" #include #include #include #include #include #include #include #include "krunner_interface.h" FilteredPlacesModel::FilteredPlacesModel(QObject *parent) : QSortFilterProxyModel(parent) , m_placesModel(new KFilePlacesModel(this)) { setSourceModel(m_placesModel); sort(0); } FilteredPlacesModel::~FilteredPlacesModel() { } QUrl FilteredPlacesModel::url(const QModelIndex &index) const { return KFilePlacesModel::convertedUrl(m_placesModel->url(mapToSource(index))); } bool FilteredPlacesModel::isDevice(const QModelIndex &index) const { return m_placesModel->isDevice(mapToSource(index)); } Solid::Device FilteredPlacesModel::deviceForIndex(const QModelIndex &index) const { return m_placesModel->deviceForIndex(mapToSource(index)); } bool FilteredPlacesModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { const QModelIndex index = m_placesModel->index(sourceRow, 0, sourceParent); return !m_placesModel->isHidden(index) && !m_placesModel->data(index, KFilePlacesModel::FixedDeviceRole).toBool(); } bool FilteredPlacesModel::lessThan(const QModelIndex &left, const QModelIndex &right) const { bool lDevice = m_placesModel->isDevice(left); bool rDevice = m_placesModel->isDevice(right); if (lDevice && !rDevice) { return false; } else if (!lDevice && rDevice) { return true; } return (left.row() < right.row()); } RunCommandModel::RunCommandModel(QObject *parent) : AbstractModel(parent) { } RunCommandModel::~RunCommandModel() { } QString RunCommandModel::description() const { return QString(); } QVariant RunCommandModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) { return QVariant(); } if (role == Qt::DisplayRole) { - return i18n("Run Command..."); + return i18n("Show KRunner"); } else if (role == Qt::DecorationRole) { - return QIcon::fromTheme(QStringLiteral("system-run")); + return QIcon::fromTheme(QStringLiteral("plasma-search")); } else if (role == Kicker::DescriptionRole) { - return i18n("Run a command or a search query"); + return i18n("Search, calculate, or run a command"); } else if (role == Kicker::GroupRole) { return i18n("Applications"); } return QVariant(); } int RunCommandModel::rowCount(const QModelIndex &parent) const { return parent.isValid() ? 0 : (KAuthorized::authorize(QStringLiteral("run_command")) ? 1 : 0); } Q_INVOKABLE bool RunCommandModel::trigger(int row, const QString &actionId, const QVariant &argument) { Q_UNUSED(actionId) Q_UNUSED(argument) if (row == 0 && KAuthorized::authorize(QStringLiteral("run_command"))) { org::kde::krunner::App krunner(QStringLiteral("org.kde.krunner"), QStringLiteral("/App"), QDBusConnection::sessionBus()); krunner.display(); return true; } return false; } ComputerModel::ComputerModel(QObject *parent) : ForwardingModel(parent) , m_concatProxy(new KConcatenateRowsProxyModel(this)) , m_runCommandModel(new RunCommandModel(this)) , m_systemAppsModel(new SimpleFavoritesModel(this)) , m_filteredPlacesModel(new FilteredPlacesModel(this)) , m_appNameFormat(AppEntry::NameOnly) , m_appletInterface(nullptr) { connect(m_systemAppsModel, &SimpleFavoritesModel::favoritesChanged, this, &ComputerModel::systemApplicationsChanged); m_systemAppsModel->setFavorites(QStringList() << QStringLiteral("systemsettings.desktop")); m_concatProxy->addSourceModel(m_runCommandModel); m_concatProxy->addSourceModel(m_systemAppsModel); m_concatProxy->addSourceModel(m_filteredPlacesModel); setSourceModel(m_concatProxy); } ComputerModel::~ComputerModel() { } QString ComputerModel::description() const { return i18n("Computer"); } int ComputerModel::appNameFormat() const { return m_appNameFormat; } void ComputerModel::setAppNameFormat(int format) { if (m_appNameFormat != (AppEntry::NameFormat)format) { m_appNameFormat = (AppEntry::NameFormat)format; m_systemAppsModel->refresh(); emit appNameFormatChanged(); } } QObject *ComputerModel::appletInterface() const { return m_appletInterface; } void ComputerModel::setAppletInterface(QObject *appletInterface) { if (m_appletInterface != appletInterface) { m_appletInterface = appletInterface; emit appletInterfaceChanged(); } } QStringList ComputerModel::systemApplications() const { return m_systemAppsModel->favorites(); } void ComputerModel::setSystemApplications(const QStringList &apps) { m_systemAppsModel->setFavorites(apps); } QVariant ComputerModel::data(const QModelIndex &index, int role) const { if (!index.isValid()) { return QVariant(); } const QModelIndex sourceIndex = m_concatProxy->mapToSource(m_concatProxy->index(index.row(), index.column())); bool isPlace = (sourceIndex.model() == m_filteredPlacesModel); if (isPlace) { if (role == Kicker::DescriptionRole) { if (m_filteredPlacesModel->isDevice(sourceIndex)) { Solid::Device device = m_filteredPlacesModel->deviceForIndex(sourceIndex); Solid::StorageAccess *access = device.as(); if (access) { return access->filePath(); } else { return QString(); } } else { const QUrl &url = m_filteredPlacesModel->url(sourceIndex); return url.toString(QUrl::PreferLocalFile); } } else if (role == Kicker::FavoriteIdRole) { if (!m_filteredPlacesModel->isDevice(sourceIndex)) { return m_filteredPlacesModel->url(sourceIndex); } } else if (role == Kicker::UrlRole) { return m_filteredPlacesModel->url(sourceIndex); } else if (role == Kicker::GroupRole) { return sourceIndex.data(KFilePlacesModel::GroupRole).toString(); } else if (role == Qt::DisplayRole || role == Qt::DecorationRole) { return sourceIndex.data(role); } } else if (role == Kicker::GroupRole) { return i18n("Applications"); } else { return sourceIndex.data(role); } return QVariant(); } bool ComputerModel::trigger(int row, const QString &actionId, const QVariant &argument) { const QModelIndex sourceIndex = m_concatProxy->mapToSource(m_concatProxy->index(row, 0)); if (sourceIndex.model() == m_filteredPlacesModel) { const QUrl &url = m_filteredPlacesModel->url(sourceIndex); if (url.isValid()) { new KRun(url, nullptr); return true; } Solid::Device device = m_filteredPlacesModel->deviceForIndex(sourceIndex); Solid::StorageAccess *access = device.as(); if (access && !access->isAccessible()) { connect(access, &Solid::StorageAccess::setupDone, this, &ComputerModel::onSetupDone); access->setup(); return true; } } else { AbstractModel *model = nullptr; if (sourceIndex.model() == m_systemAppsModel) { model = m_systemAppsModel; } else { model = m_runCommandModel; } return model->trigger(sourceIndex.row(), actionId, argument); } return false; } void ComputerModel::onSetupDone(Solid::ErrorType error, QVariant errorData, const QString &udi) { Q_UNUSED(errorData); if (error != Solid::NoError) { return; } Solid::Device device(udi); Solid::StorageAccess *access = device.as(); Q_ASSERT(access); new KRun(QUrl::fromLocalFile(access->filePath()), nullptr); } diff --git a/design/containmentactions b/design/containmentactions index c1c201d13..492e2dad9 100644 --- a/design/containmentactions +++ b/design/containmentactions @@ -1,86 +1,86 @@ ContainmentActions ========== Overview -------- "ContainmentActions" are components that respond to mouse events, usually by either performing an action or showing a menu with multiple actions. Timeline -------- Introduced in: libplasma x.x (KDE 4.4.0) Component Type -------------- ContainmentActions are plugins of ServiceType Plasma/ContainmentActions. Component Description --------------------- ContainmentAction plugins are registered using .desktop files. These files should be named using the following naming scheme: plasma-containmentactions-.desktop If a containmentactions plugin provides a configuration UI, it should include the line X-Plasma-HasConfigurationInterface=true. All other entries should follow the standard .desktop specification, supplemented by the standard KPluginInfo keys. Component API ------------- Subclasses: QObject *** Key Methods *** void contextEvent(QEvent *event); Implement this method to get events. you'll probably want to check the event type and send different events to your own methods; see the plugins in workspace for examples. Currently you can expect to get mouse press, release, and wheel events. If you're showing a menu you should use MousePress and ignore MouseRelease. If you're performing an immediate action you should ignore MousePress and use MouseRelease. The incoming event will always have the buttons and modifiers that the user configured as the trigger, so there's no sense in checking those values. void init(const KConfigGroup &config); Do whatever initialization is needed here (not in the constructor). A configuration UI can optionally be provided by overloading the configuration methods: QWidget* createConfigurationInterface(QWidget* parent); void configurationAccepted(); void save(KConfigGroup &config); when configurationAccepted is called, you should read from your config UI and extract all your data from it; the UI may be deleted after the function returns. when save is called, save that data to the provided config group. if your plugin needs to be configured before it is useful, call setConfigurationRequired() from init(). Containment Interface --------------------- The Containment class supports loading and using containmentactions plugins. Subclasses need do nothing to get this support. If a subclass has extra actions it wants in the contextmenu, it can provide them in contextualActions() the same as before - but there's no longer -any need to return standard actions like "add widgets" and "run command". +any need to return standard actions like "add widgets" and "show krunner". ContextActions plugins to use are set using the setContainmentActions(const QString &trigger, const QString &pluginName) method. an empty string removes any plugin set for the given trigger. Trigg format is determined by the static function ContextActions::eventToString(). User Configuration ------------------ It is up to the host application to provide a configuration interface, such as a dialog, to the user. *** Plasma Desktop Implementation *** A settings dialog is provided for the DesktopView (a second page in the same dialog as the wallpaper) This dialog allows selecting one trigger for each installed plugin. Future Work ----------- * Current UI in shells/desktop/ needs work. diff --git a/doc/plasma-desktop/index.docbook b/doc/plasma-desktop/index.docbook index 9b10bde8f..646911886 100644 --- a/doc/plasma-desktop/index.docbook +++ b/doc/plasma-desktop/index.docbook @@ -1,754 +1,754 @@ ]> The &plasma; Handbook Sebastian Kügler sebas@kde.org Claus Christensen 2008–2010 Sebastian Kügler &FDLNotice; 2016-08-21 Plasma 5.7 &plasma; is the core user interface to the desktop. KDE Plasma Plasmoid Widget Containments Desktop Runner Kicker Introduction &plasma; provides a modern and customizable environment for running your favorite applications and accessing your information wherever it may be. Other common attributes of the &plasma; Desktop include advanced window management and desktop effects, support for KDE Plasma Widgets, integrated search, hardware management and a high degree of customizability. Using &plasma; &plasma; Components &plasma; Widgets and Containments The essence of &plasma; revolves around two basic concepts: &plasma; Widgets Applets, or small applications that live on the desktop. Containments Applets that act as the container for the &plasma; widgets On a default desktop, there are two main elements: the Panel and the Desktop itself. Both are containments in the &plasma; sense. Default &plasma; Desktop The &plasma; Desktop can be configured in countless ways. The screenshot seen below shows a fairly standard desktop. Some distributions apply extensive customizations, so your desktop may look different. Similarly, the graphical appearance of the interface elements can be styled. These screenshots uses the &plasma; default style, Breeze. A fairly standard &plasma; Desktop The program starter. Usually this will be Application Launcher. A couple of icons giving easy access to often used applications The Task Manager, which shows the titles of windows belonging to the applications currently running. No application had opened a window, when the screenshot was taken The System Tray The Digital Clock widget The Panel Toolbox The Desktop Toolbox A Folder View widget, showing the content of the Desktop folder The Panel The default panel holds a few &plasma; widgets: starting from the left, there is the application launcher. Application Launcher Application launcher Application launcher You can use it to start applications, open recently opened files and the usual logout/shutdown options. There is also a structure that allows you to browse through your applications. The layout has been optimized for the use case that is most common: starting an application. The default tab is the Favorites tab that holds the most-used entries. In the beginning, you'll probably find yourself using the Applications tab more often. Once you have found out what your most frequently started applications are, right click on the items and select the Add to Favorites to add them to your Favorites (or directly into the panel or on the desktop. Note that you need to unlock &plasma; by means of right clicking on the desktop for any kind of modification). Application Menu If you prefer the traditional menu-style application launcher, change it by right clicking on the menu button and selecting Alternatives. Application menu Application menu Application Launcher Settings If you want to configure the application launcher, change it by right clicking on the menu button and selecting Application Launcher Settings. Application launcher settings Application launcher settings Taskbar The taskbar is another widget on the panel. It shows an area for all open windows on all desktops by default. You can make it show all open windows on the current desktop only by checking Only show tasks from the current desktop when you right click on the task manager, between two windows. The size of the text on the taskbar items can be set in &systemsettings; under the AppearanceFonts . Right-clicking on the taskbar brings the Settings dialog where you can choose several options to customize your taskbar. Here is a screenshot of the taskbar settings dialog Taskbar settings dialog System Tray Another default panel item is the System Tray, which is used by traditional applications and widgets as a dock. Right clicking on the System Tray allows you to open the settings dialog, where you can set entries to display and their visibility. System Tray settings dialog System Tray settings dialog Device Notifier An icon located usually in the system tray is the Device Notifier. Plug in a USB disk and a dialog will open that allows you to open the device in &dolphin; or another associated application. The Device Notifier is used for handling pluggable devices such as USB pendrives (also called flash drives or thumb drives), digital cameras, external USB hard drives, &etc; It also comes into play when a medium such as a &CD; or DVD is loaded into an optical drive. When you plug in an external device, or load a new medium into a drive, the Notifier window pops up (you can also open it explicitly by clicking on its Panel icon.) It stays open while the cursor is over it, otherwise it hides itself after a few seconds. The Notifier window shows a list of all the devices it currently knows about. Moving the mouse cursor over a device will highlight how many possible actions are associated with that device. Clicking anywhere in the shaded box around the device name (but not on the eject/unmount icon if present) expands the entry to show the list of possible actions for that device. The set of actions depends on the device; it is configurable from the Device Notifier's context menu or from the &systemsettings; modules Device Actions and Removable Devices. Simply select one with the mouse or keyboard to launch that action. There is also a small icon to the right of each entry showing whether that device is currently accessible (or mounted) or not. Only when a device is not mounted is it safe to physically disconnect it from the computer. Clicking on the icon causes the device to be unmounted and/or the medium to be ejected if it is currently mounted, and will mount it if it is not. Note that unmounting/ejecting might fail if the device still has open files on it, ⪚ if a large file copy hasn't finished. In most cases you can just wait a while and try again. When an unmounting has succeeded, a success icon will be shown on the Device Notifier's icon. Hidden Items The System Tray normally holds some more entries like &klipper;, &kmix; &etc; Some of the default entries in the System Tray are hidden to save space in the bar. To display these entries click on the small white triangle , then use the &LMB; to launch a widget or the &RMB; to open its settings dialog. Digital Clock The right-most &plasma; widget in the default panel holds the Digital Clock. This clock can display the time in different timezones as well as have its size changed. The clock will adjust its font size to the area it is given by the surrounding containment (that is the panel in this case). If you choose to display the date, this date will be rendered using the Small font option from the &systemsettings; Font dialog. The time will take the rest of the space. So in the end, you'll choose yourself the amount of information displayed, and if that fits. If you want to display more information, make the panel larger or put the clock on the desktop where it can grow freely. Pager An optional item on your panel is the Pager. It allows you to switch between your virtual desktops. If you change the layout of the Pager through the Number of rows option, which will also affect the layout and animations that are shown in &kwin;’s Desktop Grid effect. For larger pagers, selecting Display windows icons typically makes sense. The Panel Toolbox If your desktop is unlocked (you can do that by right clicking on the desktop, or when no application has the focus, with &Alt;D, L), a small &plasma; logo will appear in the bottom right corner in the panel. Click on this toolbox, and the panel controller opens. Panel Settings Panel Settings The panel controller allows you to reposition, resize and realign the panel. The &plasma; widgets living in this panel will adjust their size automatically. &plasma; widgets have basic knowledge about sizing, provided by the containment. They are programmed to take advantage of that size, and inform the applet about how much space they possibly need. In the end, the containment gives a possible size to the applets, the applets obey. Adding Applets Unlock the desktop and you'll be able to add and remove &plasma; widgets from panel or desktop. You add &plasma; widgets by simply dragging them where you want them. Right click on an widget to remove it. Add Widgets Add Widgets The Get New Widgets button allows you to add widgets you've previously downloaded and download new &plasma; widgets. Currently it supports native &plasmagik; packages and some &Mac; OS X dashboard widgets. Widgets you install this way can then be accessed just like regular, preinstalled widgets. The Desktop The desktop is in fact another containment. One that does not put size constraints on the applets. Applets can be moved and sized freely. On the unlocked desktop, &plasma; widgets will show a frame when you move the mouse over them. This applet handle allows you to move, resize, relocate and realign the panel. It also allows you to drag &plasma; widgets on the desktop. The buttons in the corner are used to resize, rotate configure and remove the applet. When rotated, a &plasma; widget will act magnetic towards 12 o'clock, so it is easy to get them back into sensible position. By default, most applets keep their aspect ratio when they are being resized. If you want to freely resize an applet, hold the &Ctrl; key pressed while resizing. Right clicking on the desktop also offers you to configure aspects such as the wallpaper and the layout used, and the mouse actions. It offers to download new wallpapers through &knewstuff;. On the Tweaks page you can configure to hide the desktop Toolbox and adjust the widget handling. Desktop Settings Desktop Settings To change the &plasma; theme or download a new one through &knewstuff; open the Appearance Desktop Theme page in the &systemsettings;. With open applications, it quickly gets hard to see the &plasma; widgets on your desktop. The Dashboard gets those &plasma; widgets in front of you, much like the Show desktop functionality you are used to from traditional desktops. Folder View The Folder View widget is used to display entries like folders or files from a folder, by default from $HOME/Desktop. You can choose to view either all files, or filter either by specific regular expressions (⪚, all files with a certain extension) or by file type (⪚ just images). This widget also supports basic file management properties (moving, copying, cutting and pasting for example), and you can have as many as you want on your desktop. Folder View Folder View If you select the layout Folder View in the Desktop Settings you can use one Folder View as the whole desktop, effectively replicating the "old style" desktop paradigm. &krunner; &krunner; is a versatile mini command-line. You can use it to start applications, open web pages, access bookmarks, search through your desktop data, calculate short equations, and many more. Pressing &Alt;Space or &Alt;F2 opens the &krunner; dialog. You just start typing and &krunner; will start searching matches as soon as you've entered more than two characters. You can open the settings dialog to learn about &krunner;’s functionality, provided by plugins. You can navigate through the matches using the tab and arrow keys. &krunner; dialog &krunner; dialog Use the - button to open the Plasma Search &systemsettings; + button to open the KRunner &systemsettings; module and configure where and what to search for in &krunner; &krunner; supports Desktop Actions which are additional actions an application can offer to perform common actions or jump directly to a certain task from Task Manager. Common examples are Open New Incognito Window to open your browser directly in private mode, Compose Email without launching the full-fledged email client first or the actions provided by &spectacle;: &krunner; Desktop Actions &krunner; Desktop Actions If you press the Down key in an empty &krunner; a history of the recent entities is shown. After invoking a search result, its query will move to the top, so repeatedly used commands never fall out of the list. Remove single entries from the list using the button or clear the complete history in the &krunner; settings. If you want to know what is going on on your system, pressing &Ctrl;&Esc; gives you quick access to a list of windows and processes, with options to monitor their output and kill processes. Activities The desktop toolbox, accessed via the upper left corner has a button for displaying your activities, of which &plasma; allows you to have more than one. Basically, that is multiple desktop containments hosting multiple sets of &plasma; widgets. Display the Activities bar, select one of the predefined activities or choose Create Activity to create a new containment, select your new containment and customize suiting your taste. &plasma;’s activities and &kwin;’s desktop grid are similar in that respect, but there is a fundamental difference. While virtual desktop are used to group and organize windows, &plasma;’s activities are used to group and organize &plasma; widgets. This way, you can switch between activities and have relevant &plasma; widgets supporting the task you are currently trying to accomplish. You can create a Free time activity, with comic strips, a puzzle and other &plasma; widgets, and a Work activity, with relevant RSS feeds, calculator and calendar, for example. To delete an activity, press the Stop Activity button on Activities bar (press &Alt;D then &Alt;A to open this bar) then click the red 'X' (or press &Alt;D then &Alt;R) and confirm the deletion. Shortcuts Most of &plasma;’s functionality is also accessible through keyboard shortcuts. The various combinations should be pressed in sequence, that is for example &Alt;D, A means: Press &Alt; and D, release and press A. Currently, the following default shortcuts can be used: &Alt;D, A Add Widgets &Alt;D, R Remove Widget &Alt;D, L Lock/Unlock Widgets Meta= Zoom out Meta- Zoom in &Alt;D, N Next Widget &Alt;D, P Previous Widget &Alt;D, S Widget settings &Alt;D, &Alt;A Activities &Alt;D, &Alt;R Remove this Activity &Alt;D, &Alt;S Desktop Settings Meta Next Activity Meta&Shift; Previous Activity &Ctrl;F12 Show Desktop &Alt;D, T Run the Associated Application Meta Open the Activities panel Credits and License &plasma; Program copyright 2008 &Aaron.J.Seigo; &Aaron.J.Seigo.mail; Documentation Copyright © 2008–2010 Sebastian Kügler sebas@kde.org &underFDL; &documentation.index; diff --git a/kcms/runners/kcm.cpp b/kcms/runners/kcm.cpp index 555cd65cb..3ce5f4f38 100644 --- a/kcms/runners/kcm.cpp +++ b/kcms/runners/kcm.cpp @@ -1,108 +1,108 @@ /* This file is part of the KDE Project Copyright (c) 2014 Vishesh Handa This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License version 2 as published by the Free Software Foundation. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "kcm.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include K_PLUGIN_FACTORY(SearchConfigModuleFactory, registerPlugin();) SearchConfigModule::SearchConfigModule(QWidget* parent, const QVariantList& args) : KCModule(parent, args) , m_config("krunnerrc") { KAboutData* about = new KAboutData(QStringLiteral("kcm_search"), i18nc("kcm name for About dialog", "Configure Search Bar"), QStringLiteral("0.1"), QString(), KAboutLicense::LGPL); about->addAuthor(i18n("Vishesh Handa"), QString(), QStringLiteral("vhanda@kde.org")); setAboutData(about); setButtons(Apply | Default); QVBoxLayout* layout = new QVBoxLayout(this); QHBoxLayout *headerLayout = new QHBoxLayout(this); - QLabel *label = new QLabel(i18n("Select the search plugins:")); + QLabel *label = new QLabel(i18n("Enable or disable KRunner plugins:")); QPushButton *clearHistoryButton = new QPushButton(i18n("Clear History")); clearHistoryButton->setIcon(QIcon::fromTheme(isRightToLeft() ? QStringLiteral("edit-clear-locationbar-ltr") : QStringLiteral("edit-clear-locationbar-rtl"))); connect(clearHistoryButton, &QPushButton::clicked, this, [this] { KConfigGroup generalConfig(m_config.group("General")); generalConfig.deleteEntry("history"); generalConfig.sync(); }); headerLayout->addWidget(label); headerLayout->addStretch(); headerLayout->addWidget(clearHistoryButton); m_pluginSelector = new KPluginSelector(this); //overload, can't use the new syntax connect(m_pluginSelector, SIGNAL(changed(bool)), this, SIGNAL(changed(bool))); layout->addLayout(headerLayout); layout->addWidget(m_pluginSelector); Plasma::RunnerManager *manager = new Plasma::RunnerManager(this); manager->reloadConfiguration(); } void SearchConfigModule::load() { // Set focus on the pluginselector to pass focus to search bar. m_pluginSelector->setFocus(Qt::OtherFocusReason); m_pluginSelector->addPlugins(Plasma::RunnerManager::listRunnerInfo(), KPluginSelector::ReadConfigFile, i18n("Available Plugins"), QString(), KSharedConfig::openConfig(QLatin1String( "krunnerrc" ))); } void SearchConfigModule::save() { m_pluginSelector->save(); } void SearchConfigModule::defaults() { } #include "kcm.moc" diff --git a/kcms/runners/kcm_plasmasearch.desktop b/kcms/runners/kcm_plasmasearch.desktop index 96b7000ca..edb4466be 100644 --- a/kcms/runners/kcm_plasmasearch.desktop +++ b/kcms/runners/kcm_plasmasearch.desktop @@ -1,133 +1,133 @@ [Desktop Entry] Exec=kcmshell5 kcm_plasmasearch Icon=plasma-search Type=Service X-KDE-ServiceTypes=KCModule X-KDE-Library=kcm_plasmasearch X-KDE-ParentApp=kcontrol X-KDE-System-Settings-Parent-Category=search X-KDE-Weight=20 -Name=Plasma Search +Name=KRunner Name[ar]=بحث بلازما Name[bs]=Plazma pretraga Name[ca]=Cerca de Plasma Name[ca@valencia]=Cerca de Plasma Name[cs]=Plasma hledání Name[da]=Plasma-søgning Name[de]=Plasma-Suche Name[el]=Αναζήτηση Plasma Name[en_GB]=Plasma Search Name[es]=Búsqueda de Plasma Name[et]=Plasma otsing Name[eu]=Plasmaren bilaketa Name[fi]=Plasma-haku Name[fr]=Rechercher Plasma Name[gl]=Busca de Plasma Name[he]=חיפוש בפלזמה Name[hu]=Plasma kereső Name[id]=Pencarian Plasma Name[is]=Plasma leit Name[it]=Ricerca di Plasma Name[ja]=Plasma 検索 Name[ko]=Plasma 검색 Name[lt]=Plasma paieška Name[nb]=Plasma-søk Name[nds]=Plasma-Söök Name[nl]=Plasma zoeken Name[nn]=Plasma-søk Name[pa]=ਪਲਾਜ਼ਮਾ ਖੋਜ Name[pl]=Wyszukiwarka Plazmy Name[pt]=Pesquisa no Plasma Name[pt_BR]=Pesquisa do Plasma Name[ru]=Поиск в Plasma Name[sk]=Hľadanie Plasma Name[sl]=Iskanje Plasma Name[sr]=Плазма претрага Name[sr@ijekavian]=Плазма претрага Name[sr@ijekavianlatin]=Plasma pretraga Name[sr@latin]=Plasma pretraga Name[sv]=Plasma sökning Name[tr]=Plasma Araması Name[uk]=Пошук у Плазмі Name[x-test]=xxPlasma Searchxx Name[zh_CN]=Plasma 搜索 Name[zh_TW]=Plasma 搜尋 Comment=Configure Search Bar Comment[ca]=Configura la barra de cerca Comment[ca@valencia]=Configura la barra de cerca Comment[cs]=Nastavit panel vyhledávání Comment[da]=Indstil søgelinje Comment[de]=Suchleiste einrichten Comment[el]=Διαμόρφωση μπάρας αναζήτησης Comment[en_GB]=Configure Search Bar Comment[es]=Configurar la barra de búsqueda Comment[eu]=Konfiguratu bilaketa-barra Comment[fi]=Hakurivin asetukset Comment[fr]=Configurer la barre de recherche Comment[gl]=Configurar a barra de busca Comment[hu]=Keresősáv beállítása Comment[id]=Konfigurasikan Bilah Pencarian Comment[it]=Configura la barra di ricerca Comment[ko]=검색 표시줄 설정 Comment[nl]=Zoekbalk configureren Comment[nn]=Set opp søkjelinje Comment[pa]=ਖੋਜ ਪੱਟੀ ਦੀ ਸੰਰਚਨਾ Comment[pl]=Ustawienia paska wyszukiwania Comment[pt]=Configurar a Barra de Pesquisa Comment[pt_BR]=Configura a barra de pesquisa Comment[ru]=Настройка строки поиска и запуска Comment[sk]=Nastavenie lišty hľadania Comment[sl]=Nastavi iskalno vrstico Comment[sr]=Подешавање траке претраге Comment[sr@ijekavian]=Подешавање траке претраге Comment[sr@ijekavianlatin]=Podešavanje trake pretrage Comment[sr@latin]=Podešavanje trake pretrage Comment[sv]=Anpassa sökrad Comment[tr]=Arama Çubuğunu Yapılandır Comment[uk]=Налаштування панелі пошуку Comment[x-test]=xxConfigure Search Barxx Comment[zh_CN]=配置搜索栏 Comment[zh_TW]=設定搜尋框 X-KDE-Keywords=Search, File, Baloo, Runner, krunner X-KDE-Keywords[ar]=ابحث,ملف,بالو,مشغّل,مشغّلك X-KDE-Keywords[bs]=Pretraži,fajl,Baloo,Trkač,krunner X-KDE-Keywords[ca]=Cerca, Fitxer, Baloo, Executor, Runner, krunner X-KDE-Keywords[ca@valencia]=Cerca, Fitxer, Baloo, Executor, Runner, krunner X-KDE-Keywords[da]=Søgning, Fil, Baloo, Runner, krunner X-KDE-Keywords[de]=Suchen, Datei, Baloo, Runner, KRunner X-KDE-Keywords[el]=Αναζήτηση, Αρχείο, Baloo, Εκτελεστής, krunner X-KDE-Keywords[en_GB]=Search, File, Baloo, Runner, krunner X-KDE-Keywords[es]=Buscar, archivo, Baloo, lanzador, krunner X-KDE-Keywords[et]=Otsing, Fail, Baloo, Käivitaja, krunner X-KDE-Keywords[eu]=bilatu,fitxategi,Baloo,runner,krunner X-KDE-Keywords[fi]=Search, File, Baloo, Runner, krunner, haku, etsi, tiedosto, suoritusohjelma X-KDE-Keywords[fr]=Rechercher, fichier, baloo, lanceur, krunner X-KDE-Keywords[gl]=Busca, Ficheiro, Baloo, Balú, Iniciador, krunner X-KDE-Keywords[hu]=Keresés, Fájl, Baloo, Indító, krunner X-KDE-Keywords[id]=Pencarian, File, Baloo, Runner, krunner X-KDE-Keywords[it]=ricerca,file,Baloo,esecutore,krunner X-KDE-Keywords[ko]=Search, File, Baloo, Runner, krunner, 검색, 파일, 찾기, 실행기 X-KDE-Keywords[nb]=Søk. fil, Baloo, Runner, Krunner X-KDE-Keywords[nds]=Söök, Datei, Baloo, Dreger, Krunner, söken X-KDE-Keywords[nl]=Zoeken, bestand, Baloo, Runner, krunner X-KDE-Keywords[nn]=søk, fil, Baloo, køyrar, startar, Runner, krunner X-KDE-Keywords[pa]=ਖੋਜ, ਫਾਇਲ, ਬਾਲੂ, ਰਨਰ, ਕੇਰਨਰ X-KDE-Keywords[pl]=Wyszukiwanie, Plik, Baloo, Uruchamianie, krunner X-KDE-Keywords[pt]=Pesquisa, Ficheiro, Baloo, Execução, krunner X-KDE-Keywords[pt_BR]=Pesquisar, Procurar, Arquivo, Baloo, Execução, krunner X-KDE-Keywords[ru]=Search, File, Baloo, поиск, файл, Балу, запуск, Runner, krunner X-KDE-Keywords[sk]=Hľadanie, súbor, baloo, bežec, krunner X-KDE-Keywords[sl]=Iskanje, datoteka, Baloo, zaganjalnik, krunner X-KDE-Keywords[sr]=search,file,baloo,runner,krunner,претрага,фајл,Балу,извођач,К‑извођач X-KDE-Keywords[sr@ijekavian]=search,file,baloo,runner,krunner,претрага,фајл,Балу,извођач,К‑извођач X-KDE-Keywords[sr@ijekavianlatin]=search,file,baloo,runner,krunner,pretraga,fajl,Baloo,izvođač,K‑izvođač X-KDE-Keywords[sr@latin]=search,file,baloo,runner,krunner,pretraga,fajl,Baloo,izvođač,K‑izvođač X-KDE-Keywords[sv]=Sök, Fil, Baloo, Körprogram, Kör program X-KDE-Keywords[tr]=Arama, Dosya, Baloo, Çalıştırıcı, krunner X-KDE-Keywords[uk]=пошук,файли,файл,балу,запуск,search,file,Baloo,Runner,krunner X-KDE-Keywords[x-test]=xxSearchxx,xx Filexx,xx Balooxx,xx Runnerxx,xx krunnerxx X-KDE-Keywords[zh_CN]=Search, File, Baloo, Runner, krunner,搜索,文件 X-KDE-Keywords[zh_TW]=Search, File, Baloo, Runner, krunner