GHNS support for Window Switcher Layouts
Next to the preview/configure button a GHNS button is included as a simple button with icon only to not break the layout. Currently the button is not shown as the category on kde-look has not yet been created yet. CCBUG: 297636 REVIEW: 104894
This commit is contained in:
parent
2e7e5d2b41
commit
ea5c84dd35
6 changed files with 95 additions and 49 deletions
|
@ -19,7 +19,7 @@ kde4_add_ui_files( kcm_kwintabbox_PART_SRCS main.ui )
|
|||
|
||||
kde4_add_plugin(kcm_kwintabbox ${kcm_kwintabbox_PART_SRCS})
|
||||
|
||||
target_link_libraries(kcm_kwintabbox ${KDE4_KDEUI_LIBS} ${KDE4_KCMUTILS_LIBS} ${KDE4_PLASMA_LIBS} ${X11_LIBRARIES} ${QT_QTDECLARATIVE_LIBRARY} ${KDECLARATIVE_LIBRARIES})
|
||||
target_link_libraries(kcm_kwintabbox ${KDE4_KNEWSTUFF3_LIBS} ${KDE4_KDEUI_LIBS} ${KDE4_KCMUTILS_LIBS} ${KDE4_PLASMA_LIBS} ${X11_LIBRARIES} ${QT_QTDECLARATIVE_LIBRARY} ${KDECLARATIVE_LIBRARIES})
|
||||
|
||||
install(TARGETS kcm_kwintabbox DESTINATION ${PLUGIN_INSTALL_DIR} )
|
||||
|
||||
|
@ -28,3 +28,4 @@ install(TARGETS kcm_kwintabbox DESTINATION ${PLUGIN_INSTALL_DIR} )
|
|||
install( FILES kwintabbox.desktop DESTINATION ${SERVICES_INSTALL_DIR} )
|
||||
install( FILES qml/main.qml DESTINATION ${DATA_INSTALL_DIR}/kwin/kcm_kwintabbox)
|
||||
install( FILES thumbnails/konqueror.png thumbnails/kmail.png thumbnails/systemsettings.png thumbnails/dolphin.png DESTINATION ${DATA_INSTALL_DIR}/kwin/kcm_kwintabbox)
|
||||
install( FILES kwinswitcher.knsrc DESTINATION ${CONFIG_INSTALL_DIR} )
|
||||
|
|
5
kcmkwin/kwintabbox/kwinswitcher.knsrc
Normal file
5
kcmkwin/kwintabbox/kwinswitcher.knsrc
Normal file
|
@ -0,0 +1,5 @@
|
|||
[KNewStuff3]
|
||||
Categories=KWin Window Switcher
|
||||
StandardResource=tmp
|
||||
InstallationCommand=plasmapkg -t windowswitcher -i %f
|
||||
UninstallCommand=plasmapkg -t windowswitcher -r %f
|
|
@ -179,7 +179,6 @@ int ExampleClientModel::rowCount(const QModelIndex &parent) const
|
|||
return m_nameList.size();
|
||||
}
|
||||
|
||||
|
||||
} // namespace KWin
|
||||
} // namespace TabBox
|
||||
|
||||
|
|
|
@ -37,6 +37,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
#include <KServiceTypeTrader>
|
||||
#include <KShortcutsEditor>
|
||||
#include <KStandardDirs>
|
||||
#include <KNS3/DownloadDialog>
|
||||
|
||||
// own
|
||||
#include "tabboxconfig.h"
|
||||
|
@ -103,6 +104,65 @@ KWinTabBoxConfig::KWinTabBoxConfig(QWidget* parent, const QVariantList& args)
|
|||
m_alternativeTabBoxUi->scCurrentReverse);
|
||||
#undef ADD_SHORTCUT
|
||||
|
||||
initLayoutLists();
|
||||
KWinTabBoxConfigForm *ui[2] = { m_primaryTabBoxUi, m_alternativeTabBoxUi };
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
ui[i]->effectConfigButton->setIcon(KIcon("view-preview"));
|
||||
ui[i]->ghns->setIcon(KIcon("get-hot-new-stuff"));
|
||||
|
||||
// TODO: remove once the category has been created.
|
||||
ui[i]->ghns->setVisible(false);
|
||||
|
||||
connect(ui[i]->highlightWindowCheck, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->showOutlineCheck, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->showTabBox, SIGNAL(clicked(bool)), SLOT(tabBoxToggled(bool)));
|
||||
connect(ui[i]->effectCombo, SIGNAL(currentIndexChanged(int)), SLOT(changed()));
|
||||
connect(ui[i]->effectCombo, SIGNAL(currentIndexChanged(int)), SLOT(effectSelectionChanged(int)));
|
||||
connect(ui[i]->effectConfigButton, SIGNAL(clicked(bool)), SLOT(configureEffectClicked()));
|
||||
|
||||
connect(ui[i]->switchingModeCombo, SIGNAL(currentIndexChanged(int)), SLOT(changed()));
|
||||
connect(ui[i]->showDesktop, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
|
||||
connect(ui[i]->filterDesktops, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->currentDesktop, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->otherDesktops, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
|
||||
connect(ui[i]->filterActivities, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->currentActivity, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->otherActivities, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
|
||||
connect(ui[i]->filterScreens, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
if (QApplication::desktop()->screenCount() < 2) {
|
||||
ui[i]->filterScreens->hide();
|
||||
ui[i]->screenFilter->hide();
|
||||
} else {
|
||||
connect(ui[i]->currentScreen, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->otherScreens, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
}
|
||||
|
||||
connect(ui[i]->oneAppWindow, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->filterMinimization, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->visibleWindows, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->hiddenWindows, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->ghns, SIGNAL(clicked(bool)), SLOT(slotGHNS()));
|
||||
}
|
||||
|
||||
// check focus policy - we don't offer configs for unreasonable focus policies
|
||||
KConfigGroup config(m_config, "Windows");
|
||||
QString policy = config.readEntry("FocusPolicy", "ClickToFocus");
|
||||
if ((policy == "FocusUnderMouse") || (policy == "FocusStrictlyUnderMouse")) {
|
||||
tabWidget->setEnabled(false);
|
||||
infoLabel->show();
|
||||
} else
|
||||
infoLabel->hide();
|
||||
}
|
||||
|
||||
KWinTabBoxConfig::~KWinTabBoxConfig()
|
||||
{
|
||||
}
|
||||
|
||||
void KWinTabBoxConfig::initLayoutLists()
|
||||
{
|
||||
// search the effect names
|
||||
// TODO: way to recognize if a effect is not found
|
||||
KServiceTypeTrader* trader = KServiceTypeTrader::self();
|
||||
|
@ -138,61 +198,22 @@ KWinTabBoxConfig::KWinTabBoxConfig(QWidget* parent, const QVariantList& args)
|
|||
}
|
||||
|
||||
KWinTabBoxConfigForm *ui[2] = { m_primaryTabBoxUi, m_alternativeTabBoxUi };
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
for (int i=0; i<2; ++i) {
|
||||
int index = ui[i]->effectCombo->currentIndex();
|
||||
QVariant data = ui[i]->effectCombo->itemData(index);
|
||||
ui[i]->effectCombo->clear();
|
||||
ui[i]->effectCombo->addItem(coverswitch);
|
||||
ui[i]->effectCombo->addItem(flipswitch);
|
||||
for (int j = 0; j < layoutNames.count(); ++j) {
|
||||
ui[i]->effectCombo->addItem(layoutNames[j], layoutPlugins[j]);
|
||||
ui[i]->effectCombo->setItemData(ui[i]->effectCombo->count() - 1, layoutPaths[j], Qt::UserRole+1);
|
||||
}
|
||||
|
||||
ui[i]->effectConfigButton->setIcon(KIcon("view-preview"));
|
||||
|
||||
connect(ui[i]->highlightWindowCheck, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->showOutlineCheck, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->showTabBox, SIGNAL(clicked(bool)), SLOT(tabBoxToggled(bool)));
|
||||
connect(ui[i]->effectCombo, SIGNAL(currentIndexChanged(int)), SLOT(changed()));
|
||||
connect(ui[i]->effectCombo, SIGNAL(currentIndexChanged(int)), SLOT(effectSelectionChanged(int)));
|
||||
connect(ui[i]->effectConfigButton, SIGNAL(clicked(bool)), SLOT(configureEffectClicked()));
|
||||
|
||||
connect(ui[i]->switchingModeCombo, SIGNAL(currentIndexChanged(int)), SLOT(changed()));
|
||||
connect(ui[i]->showDesktop, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
|
||||
connect(ui[i]->filterDesktops, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->currentDesktop, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->otherDesktops, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
|
||||
connect(ui[i]->filterActivities, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->currentActivity, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->otherActivities, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
|
||||
connect(ui[i]->filterScreens, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
if (QApplication::desktop()->screenCount() < 2) {
|
||||
ui[i]->filterScreens->hide();
|
||||
ui[i]->screenFilter->hide();
|
||||
} else {
|
||||
connect(ui[i]->currentScreen, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->otherScreens, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
if (data.isValid()) {
|
||||
ui[i]->effectCombo->setCurrentIndex(ui[i]->effectCombo->findData(data));
|
||||
} else if (index != -1) {
|
||||
ui[i]->effectCombo->setCurrentIndex(index);
|
||||
}
|
||||
|
||||
connect(ui[i]->oneAppWindow, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->filterMinimization, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->visibleWindows, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
connect(ui[i]->hiddenWindows, SIGNAL(clicked(bool)), SLOT(changed()));
|
||||
}
|
||||
|
||||
// check focus policy - we don't offer configs for unreasonable focus policies
|
||||
KConfigGroup config(m_config, "Windows");
|
||||
QString policy = config.readEntry("FocusPolicy", "ClickToFocus");
|
||||
if ((policy == "FocusUnderMouse") || (policy == "FocusStrictlyUnderMouse")) {
|
||||
tabWidget->setEnabled(false);
|
||||
infoLabel->show();
|
||||
} else
|
||||
infoLabel->hide();
|
||||
}
|
||||
|
||||
KWinTabBoxConfig::~KWinTabBoxConfig()
|
||||
{
|
||||
}
|
||||
|
||||
void KWinTabBoxConfig::load()
|
||||
|
@ -541,4 +562,15 @@ void KWinTabBoxConfig::shortcutChanged(const QKeySequence &seq)
|
|||
m_actionCollection->writeSettings();
|
||||
}
|
||||
|
||||
void KWinTabBoxConfig::slotGHNS()
|
||||
{
|
||||
QPointer<KNS3::DownloadDialog> downloadDialog = new KNS3::DownloadDialog("kwinswitcher.knsrc", this);
|
||||
if (downloadDialog->exec() == KDialog::Accepted) {
|
||||
if (!downloadDialog->changedEntries().isEmpty()) {
|
||||
initLayoutLists();
|
||||
}
|
||||
}
|
||||
delete downloadDialog;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
|
@ -66,11 +66,13 @@ private slots:
|
|||
void configureEffectClicked();
|
||||
void tabBoxToggled(bool on);
|
||||
void shortcutChanged(const QKeySequence &seq);
|
||||
void slotGHNS();
|
||||
private:
|
||||
void updateUiFromConfig(KWinTabBoxConfigForm* ui, const TabBox::TabBoxConfig& config);
|
||||
void updateConfigFromUi(const KWinTabBoxConfigForm* ui, TabBox::TabBoxConfig& config);
|
||||
void loadConfig(const KConfigGroup& config, KWin::TabBox::TabBoxConfig& tabBoxConfig);
|
||||
void saveConfig(KConfigGroup& config, const KWin::TabBox::TabBoxConfig& tabBoxConfig);
|
||||
void initLayoutLists();
|
||||
|
||||
private:
|
||||
enum Mode {
|
||||
|
|
|
@ -562,6 +562,13 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="3">
|
||||
<widget class="KPushButton" name="ghns">
|
||||
<property name="toolTip">
|
||||
<string>Get New Window Switcher Layout</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
Loading…
Reference in a new issue