You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
91 lines
3.8 KiB
91 lines
3.8 KiB
/*************************************************************************** |
|
* Copyright (C) 2006,2008 by Pino Toscano <pino@kde.org> * |
|
* * |
|
* 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. * |
|
***************************************************************************/ |
|
|
|
#include "dlgpresentation.h" |
|
|
|
#include "ui_dlgpresentationbase.h" |
|
#include "widgetdrawingtools.h" |
|
|
|
#include <QApplication> |
|
#include <QScreen> |
|
|
|
#include "settings.h" |
|
|
|
DlgPresentation::DlgPresentation(QWidget *parent) |
|
: QWidget(parent) |
|
{ |
|
m_dlg = new Ui_DlgPresentationBase(); |
|
m_dlg->setupUi(this); |
|
|
|
WidgetDrawingTools *kcfg_DrawingTools = new WidgetDrawingTools(m_dlg->annotationToolsGroupBox); |
|
m_dlg->verticalLayout_4->addWidget(kcfg_DrawingTools); |
|
kcfg_DrawingTools->setObjectName(QStringLiteral("kcfg_DrawingTools")); |
|
|
|
m_dlg->kcfg_SlidesAdvanceTime->setSuffix(ki18ncp("Advance every %1 seconds", " second", " seconds")); |
|
} |
|
|
|
DlgPresentation::~DlgPresentation() |
|
{ |
|
delete m_dlg; |
|
} |
|
|
|
PreferredScreenSelector::PreferredScreenSelector(QWidget *parent) |
|
: QComboBox(parent) |
|
, m_disconnectedScreenNumber(k_noDisconnectedScreenNumber) |
|
{ |
|
// Populate list: |
|
static_assert(k_specialScreenCount == 2, "Special screens unknown to PreferredScreenSelector constructor."); |
|
addItem(i18nc("@item:inlistbox Config dialog, presentation page, preferred screen", "Current Screen")); |
|
addItem(i18nc("@item:inlistbox Config dialog, presentation page, preferred screen", "Default Screen")); |
|
|
|
const QList<QScreen *> screens = qApp->screens(); |
|
for (int screenNumber = 0; screenNumber < screens.count(); ++screenNumber) { |
|
QScreen *screen = screens.at(screenNumber); |
|
addItem(i18nc("@item:inlistbox Config dialog, presentation page, preferred screen. %1 is the screen number (0, 1, ...). %2 is the screen manufacturer name. %3 is the screen model name. %4 is the screen name like DVI-0", |
|
"Screen %1 (%2 %3 %4)", |
|
screenNumber, |
|
screen->manufacturer(), |
|
screen->model(), |
|
screen->name())); |
|
} |
|
|
|
// If a disconnected screen is configured, it will be appended last: |
|
m_disconnectedScreenIndex = count(); |
|
|
|
// KConfigWidgets setup: |
|
setProperty("kcfg_property", QByteArray("preferredScreen")); |
|
connect(this, QOverload<int>::of(&QComboBox::currentIndexChanged), [this](int index) { emit preferredScreenChanged(index - k_specialScreenCount); }); |
|
} |
|
|
|
void PreferredScreenSelector::setPreferredScreen(int newScreen) |
|
{ |
|
// Check whether the new screen is not in the list of connected screens: |
|
if (newScreen >= m_disconnectedScreenIndex - k_specialScreenCount) { |
|
if (m_disconnectedScreenNumber == k_noDisconnectedScreenNumber) { |
|
addItem(QString()); |
|
} |
|
setItemText(m_disconnectedScreenIndex, i18nc("@item:inlistbox Config dialog, presentation page, preferred screen. %1 is the screen number (0, 1, ...), hopefully not 0.", "Screen %1 (disconnected)", newScreen)); |
|
setCurrentIndex(m_disconnectedScreenIndex); |
|
m_disconnectedScreenNumber = newScreen; |
|
return; |
|
} |
|
|
|
setCurrentIndex(newScreen + k_specialScreenCount); |
|
|
|
// screenChanged() is emitted through currentIndexChanged(). |
|
} |
|
|
|
int PreferredScreenSelector::preferredScreen() const |
|
{ |
|
if (currentIndex() == m_disconnectedScreenIndex) { |
|
return m_disconnectedScreenNumber; |
|
} else { |
|
return currentIndex() - k_specialScreenCount; |
|
} |
|
}
|
|
|