[kde-workspace] ksmserver: [ksmserver] Port the shutdowndlg, HUGE hack just to make it work
Àlex Fiestas
afiestas at kde.org
Tue Dec 17 18:18:07 UTC 2013
Git commit 63197074b17e042d2d99973488358a14afae8560 by Àlex Fiestas.
Committed on 17/12/2013 at 17:34.
Pushed by afiestas into branch 'master'.
[ksmserver] Port the shutdowndlg, HUGE hack just to make it work
Please, somebody else should properly port this, I have done the minimum
required work to allow the dialog to work.
CCMAIL: plasma-devel at kde.org
M +19 -13 ksmserver/shutdowndlg.cpp
M +4 -4 ksmserver/themes/contour/ContourButton.qml
M +4 -4 ksmserver/themes/contour/main.qml
M +5 -5 ksmserver/themes/default/ContextMenu.qml
M +9 -9 ksmserver/themes/default/KSMButton.qml
M +4 -4 ksmserver/themes/default/MenuItem.qml
M +86 -86 ksmserver/themes/default/main.qml
http://commits.kde.org/kde-workspace/63197074b17e042d2d99973488358a14afae8560
diff --git a/ksmserver/shutdowndlg.cpp b/ksmserver/shutdowndlg.cpp
index 6ad428d..00704e4 100644
--- a/ksmserver/shutdowndlg.cpp
+++ b/ksmserver/shutdowndlg.cpp
@@ -162,11 +162,12 @@ void KSMShutdownFeedback::logoutCanceled()
////////////
Q_DECLARE_METATYPE(Solid::PowerManagement::SleepState)
+#include <QVBoxLayout>
KSMShutdownDlg::KSMShutdownDlg( QWidget* parent,
bool maysd, bool choose, KWorkSpace::ShutdownType sdtype,
const QString& theme)
- : QDialog( parent, Qt::Popup ) //krazy:exclude=qclasses
+ : QDialog( parent/*, Qt::Popup */) //krazy:exclude=qclasses
// this is a WType_Popup on purpose. Do not change that! Not
// having a popup here has severe side effects.
{
@@ -181,8 +182,13 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* parent,
KDialog::centerOnScreen(this, -3);
+ setMinimumSize(300, 200);
//kDebug() << "Creating QML view";
- m_view = new QQuickView(windowHandle());
+ QVBoxLayout *vbox = new QVBoxLayout(this);
+ m_view = new QQuickView( );
+ QWidget *windowContainer = QWidget::createWindowContainer(m_view, this);
+ vbox->addWidget(windowContainer);
+ windowContainer->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
QQmlContext *context = m_view->rootContext();
context->setContextProperty(QStringLiteral("maysd"), maysd);
context->setContextProperty(QStringLiteral("choose"), choose);
@@ -223,22 +229,23 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* parent,
setModal( true );
// window stuff
- m_view->setFlags(Qt::X11BypassWindowManagerHint);
-// m_view->setFrameShape(QFrame::NoFrame);
-// m_view->setAttribute(Qt::WA_TranslucentBackground);
+// setFlags(Qt::X11BypassWindowManagerHint);
+// windowContainer->setFrameShape(QFrame::NoFrame);
+ windowContainer->setAttribute(Qt::WA_TranslucentBackground);
+ setAttribute(Qt::WA_TranslucentBackground);
setAttribute(Qt::WA_TranslucentBackground);
setStyleSheet(QStringLiteral("background:transparent;"));
-// QPalette pal = m_view->palette();
-// pal.setColor(backgroundRole(), Qt::transparent);
-// m_view->setPalette(pal);
-// m_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
-// m_view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+ QPalette pal = windowContainer->palette();
+ pal.setColor(backgroundRole(), Qt::transparent);
+ windowContainer->setPalette(pal);
+// setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+// setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// engine stuff
KDeclarative kdeclarative;
kdeclarative.setDeclarativeEngine(m_view->engine());
kdeclarative.initialize();
kdeclarative.setupBindings();
- m_view->installEventFilter(this);
+ windowContainer->installEventFilter(this);
QString fileName = QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("ksmserver/themes/%1/main.qml").arg(theme));
if (QFile::exists(fileName)) {
@@ -253,8 +260,7 @@ KSMShutdownDlg::KSMShutdownDlg( QWidget* parent,
connect(rootObject, SIGNAL(rebootRequested2(int)), SLOT(slotReboot(int)) );
connect(rootObject, SIGNAL(cancelRequested()), SLOT(reject()));
connect(rootObject, SIGNAL(lockScreenRequested()), SLOT(slotLockScreen()));
- m_view->show();
-// m_view->setFocus();
+
adjustSize();
}
diff --git a/ksmserver/themes/contour/ContourButton.qml b/ksmserver/themes/contour/ContourButton.qml
index ee82205..5176c6a 100644
--- a/ksmserver/themes/contour/ContourButton.qml
+++ b/ksmserver/themes/contour/ContourButton.qml
@@ -22,7 +22,7 @@ Inherits:
PlasmaCore.FrameSvgItem
Imports:
- QtQuick 1.0
+ QtQuick 2.0
org.kde.plasma.core
org.kde.qtextracomponents
@@ -53,9 +53,9 @@ Signals:
This handler is called when there is a click.
**/
-import QtQuick 1.0
-import org.kde.plasma.core 0.1 as PlasmaCore
-import org.kde.qtextracomponents 0.1
+import QtQuick 2.0
+import org.kde.plasma.core 2.0 as PlasmaCore
+import org.kde.qtextracomponents 2.0
PlasmaCore.FrameSvgItem {
id: button
diff --git a/ksmserver/themes/contour/main.qml b/ksmserver/themes/contour/main.qml
index 1c18f00..4a543d9 100644
--- a/ksmserver/themes/contour/main.qml
+++ b/ksmserver/themes/contour/main.qml
@@ -17,10 +17,10 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-import QtQuick 1.0
-import org.kde.plasma.core 0.1 as PlasmaCore
-import org.kde.plasma.components 0.1 as PlasmaComponents
-import org.kde.qtextracomponents 0.1
+import QtQuick 2.0
+import org.kde.plasma.core 2.0 as PlasmaCore
+import org.kde.plasma.components 2.0 as PlasmaComponents
+import org.kde.qtextracomponents 2.0
PlasmaCore.FrameSvgItem {
id: shutdownUi
diff --git a/ksmserver/themes/default/ContextMenu.qml b/ksmserver/themes/default/ContextMenu.qml
index cd1d046..60b5f8e 100644
--- a/ksmserver/themes/default/ContextMenu.qml
+++ b/ksmserver/themes/default/ContextMenu.qml
@@ -18,9 +18,9 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
-import QtQuick 1.1
-import org.kde.plasma.core 0.1 as PlasmaCore
-import org.kde.plasma.components 0.1 as PlasmaComponents
+import QtQuick 2.0
+import org.kde.plasma.core 2.0 as PlasmaCore
+import org.kde.plasma.components 2.0 as PlasmaComponents
Item {
id: root
@@ -60,7 +60,7 @@ Item {
PlasmaCore.Dialog {
id: dialog
visible: false
- windowFlags: Qt.Popup
+// windowFlags: Qt.Popup
onVisibleChanged: {
if (visible) {
status = PlasmaComponents.DialogStatus.Open
@@ -73,7 +73,7 @@ Item {
id: contentItem
width: listView.width
- height: Math.min(listView.contentHeight, theme.defaultFont.mSize.height * 25)
+ height: Math.min(listView.contentHeight, theme.mSize(theme.defaultFont).height * 25)
ListView {
id: listView
diff --git a/ksmserver/themes/default/KSMButton.qml b/ksmserver/themes/default/KSMButton.qml
index a229987..7d5522a 100644
--- a/ksmserver/themes/default/KSMButton.qml
+++ b/ksmserver/themes/default/KSMButton.qml
@@ -21,7 +21,7 @@ Inherits:
PlasmaCore.FrameSvgItem
Imports:
- QtQuick 1.1
+ QtQuick 2.0
org.kde.plasma.core
org.kde.qtextracomponents
@@ -70,9 +70,9 @@ Signals:
This handler is called when there is a press and hold.
**/
-import QtQuick 1.1
-import org.kde.plasma.core 0.1 as PlasmaCore
-import org.kde.qtextracomponents 0.1
+import QtQuick 2.0
+import org.kde.plasma.core 2.0 as PlasmaCore
+import org.kde.qtextracomponents 2.0
PlasmaCore.FrameSvgItem {
id: button
@@ -90,9 +90,9 @@ PlasmaCore.FrameSvgItem {
signal pressed()
signal pressAndHold()
- PlasmaCore.Theme {
- id: theme
- }
+// PlasmaCore.Theme {
+// id: theme
+// }
PlasmaCore.SvgItem {
id: background
@@ -111,11 +111,11 @@ PlasmaCore.FrameSvgItem {
anchors {
verticalCenter: parent.verticalCenter
left: parent.left
- leftMargin: theme.defaultFont.mSize.width
+ leftMargin: theme.mSize(theme.defaultFont).width
}
onPaintedWidthChanged: {
- button.width = Math.max(button.width, theme.defaultFont.mSize.width + labelElement.width + 2*theme.defaultFont.mSize.width + iconElement.width + theme.defaultFont.mSize.width)
+ button.width = Math.max(button.width, theme.mSize(theme.defaultFont).width + labelElement.width + 2*theme.mSize(theme.defaultFont).width + iconElement.width + theme.mSize(theme.defaultFont).width)
}
}
diff --git a/ksmserver/themes/default/MenuItem.qml b/ksmserver/themes/default/MenuItem.qml
index 65adf0b..5eed717 100644
--- a/ksmserver/themes/default/MenuItem.qml
+++ b/ksmserver/themes/default/MenuItem.qml
@@ -38,10 +38,10 @@
**
****************************************************************************/
-import QtQuick 1.1
-import org.kde.plasma.core 0.1 as PlasmaCore
-import org.kde.plasma.components 0.1 as PlasmaComponents
-import org.kde.qtextracomponents 0.1
+import QtQuick 2.0
+import org.kde.plasma.core 2.0 as PlasmaCore
+import org.kde.plasma.components 2.0 as PlasmaComponents
+import org.kde.qtextracomponents 2.0
Item {
id: root
diff --git a/ksmserver/themes/default/main.qml b/ksmserver/themes/default/main.qml
index 8924fac..09ea4c1 100644
--- a/ksmserver/themes/default/main.qml
+++ b/ksmserver/themes/default/main.qml
@@ -22,11 +22,11 @@
. use kde-runtime/plasma/declarativeimports/plasmacomponents/qml/ContextMenu.qml
instead of a custom ContextMenu component.
*/
-import QtQuick 1.1
-import org.kde.plasma.core 0.1 as PlasmaCore
-import org.kde.plasma.components 0.1 as PlasmaComponents
+import QtQuick 2.0
+import org.kde.plasma.core 2.0 as PlasmaCore
+import org.kde.plasma.components 2.0 as PlasmaComponents
import "helper.js" as Helper
-
+import "."
PlasmaCore.FrameSvgItem {
id: shutdownUi
property int realMarginTop: margins.top
@@ -51,9 +51,9 @@ PlasmaCore.FrameSvgItem {
property variant lastButton: 0
property int automaticallyDoSeconds: 30
- PlasmaCore.Theme {
- id: theme
- }
+// PlasmaCore.Theme {
+// id: theme
+// }
/* This is not necessary for themes that follow the specification.
Uncomment this and [1] below if the dialog appears without borders or background.
@@ -131,7 +131,7 @@ PlasmaCore.FrameSvgItem {
}
}
- focusedButton.forceActiveFocus()
+// focusedButton.forceActiveFocus()
timer.running = true;
// implement label accelerators in the buttons (the '&' in button's text).
@@ -186,7 +186,7 @@ PlasmaCore.FrameSvgItem {
Text {
id: automaticallyDoLabel
- font.pointSize: theme.desktopFont.pointSize >= 10 ? theme.desktopFont.pointSize*0.9 : theme.desktopFont.pointSize
+// font.pointSize: theme.desktopFont.pointSize >= 10 ? theme.desktopFont.pointSize*0.9 : theme.desktopFont.pointSize
color: theme.textColor
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignRight
@@ -239,14 +239,14 @@ PlasmaCore.FrameSvgItem {
Column {
spacing: 4
- KSMButton {
+ PlasmaComponents.Button {
id: logoutButton
text: i18n("&Logout")
iconSource: "system-log-out"
anchors.right: parent.right
visible: (choose || sdtype == ShutdownType.ShutdownTypeNone)
- tabStopNext: shutdownButton
- tabStopBack: cancelButton
+// tabStopNext: shutdownButton
+// tabStopBack: cancelButton
onClicked: {
//console.log("main.qml: logoutRequested")
@@ -258,43 +258,43 @@ PlasmaCore.FrameSvgItem {
}
}
- KSMButton {
+ PlasmaComponents.Button {
id: shutdownButton
text: i18n("&Turn Off Computer")
iconSource: "system-shutdown"
anchors.right: parent.right
visible: (choose || sdtype == ShutdownType.ShutdownTypeHalt)
- menu: spdMethods.StandbyState | spdMethods.SuspendState | spdMethods.HibernateState
- tabStopNext: rebootButton
- tabStopBack: logoutButton
+// menu: spdMethods.StandbyState | spdMethods.SuspendState | spdMethods.HibernateState
+// tabStopNext: rebootButton
+// tabStopBack: logoutButton
onClicked: {
//console.log("main.qml: haltRequested")
haltRequested()
}
- onPressAndHold: {
- if (!menu) {
- return
- }
- if (!contextMenu) {
- contextMenu = shutdownOptionsComponent.createObject(shutdownButton)
- if (spdMethods.StandbyState) {
- // 1 == Solid::PowerManagement::StandbyState
- contextMenu.append({itemIndex: 1, itemText: i18n("&Standby"), itemSubMenu: null, itemAllowAmpersand: false})
- }
- if (spdMethods.SuspendState) {
- // 2 == Solid::PowerManagement::SuspendState
- contextMenu.append({itemIndex: 2, itemText: i18n("Suspend to &RAM"), itemSubMenu: null, itemAllowAmpersand: false})
- }
- if (spdMethods.HibernateState) {
- // 4 == Solid::PowerManagement::HibernateState
- contextMenu.append({itemIndex: 4, itemText: i18n("Suspend to &Disk"), itemSubMenu: null, itemAllowAmpersand: false})
- }
- contextMenu.clicked.connect(shutdownUi.suspendRequested)
- }
- contextMenu.open()
- }
+// onPressAndHold: {
+// if (!menu) {
+// return
+// }
+// if (!contextMenu) {
+// contextMenu = shutdownOptionsComponent.createObject(shutdownButton)
+// if (spdMethods.StandbyState) {
+// // 1 == Solid::PowerManagement::StandbyState
+// contextMenu.append({itemIndex: 1, itemText: i18n("&Standby"), itemSubMenu: null, itemAllowAmpersand: false})
+// }
+// if (spdMethods.SuspendState) {
+// // 2 == Solid::PowerManagement::SuspendState
+// contextMenu.append({itemIndex: 2, itemText: i18n("Suspend to &RAM"), itemSubMenu: null, itemAllowAmpersand: false})
+// }
+// if (spdMethods.HibernateState) {
+// // 4 == Solid::PowerManagement::HibernateState
+// contextMenu.append({itemIndex: 4, itemText: i18n("Suspend to &Disk"), itemSubMenu: null, itemAllowAmpersand: false})
+// }
+// contextMenu.clicked.connect(shutdownUi.suspendRequested)
+// }
+// contextMenu.open()
+// }
onActiveFocusChanged: {
shutdownUi.focusedButton = shutdownButton
@@ -308,15 +308,15 @@ PlasmaCore.FrameSvgItem {
}
}
- KSMButton {
+ PlasmaComponents.Button {
id: rebootButton
text: i18n("&Restart Computer")
iconSource: "system-reboot"
anchors.right: parent.right
visible: (choose || sdtype == ShutdownType.ShutdownTypeReboot)
- menu: rebootOptions["options"].length > 0
- tabStopNext: cancelButton
- tabStopBack: shutdownButton
+// menu: rebootOptions["options"].length > 0
+// tabStopNext: cancelButton
+// tabStopBack: shutdownButton
onClicked: {
//console.log("main.qml: rebootRequested")
@@ -377,46 +377,46 @@ PlasmaCore.FrameSvgItem {
menus[currentMenuId].append(itemData)
}
- onPressAndHold: {
- if (!menu) {
- return
- }
- if (!contextMenu) {
- var options = rebootOptions["options"]
- //console.log("bootManager == " + bootManager)
-
- if (bootManager === "Grub2" || bootManager === "Burg") {
- // javascript passes primitive types by value, I need this one passed by reference.
- function Index() { this.value = 0 }
- var index = new Index()
- var menus = {}
- var menuId = ""
-
- // starts backwards so that the top of the stack is the first menu entry.
- index.value = options.length - 1
- menus[menuId] = rebootOptionsComponent.createObject(rebootButton)
- menus[menuId].clicked.connect(shutdownUi.rebootRequested2)
- findAndCreateMenu(index, options, menus, menuId)
- contextMenu = menus[menuId]
- } else {
- contextMenu = rebootOptionsComponent.createObject(rebootButton)
-
- for (var index = 0; index < options.length; ++index) {
- var itemData = new Object
- itemData["itemIndex"] = index
- itemData["itemText"] = options[index]
- itemData["itemSubMenu"] = null
- itemData["itemAllowAmpersand"] = true
- if (index == rebootOptions["default"]) {
- itemData["itemText"] += i18nc("default option in boot loader", " (default)")
- }
- contextMenu.append(itemData)
- }
- contextMenu.clicked.connect(shutdownUi.rebootRequested2)
- }
- }
- contextMenu.open()
- }
+// onPressAndHold: {
+// if (!menu) {
+// return
+// }
+// if (!contextMenu) {
+// var options = rebootOptions["options"]
+// //console.log("bootManager == " + bootManager)
+//
+// if (bootManager === "Grub2" || bootManager === "Burg") {
+// // javascript passes primitive types by value, I need this one passed by reference.
+// function Index() { this.value = 0 }
+// var index = new Index()
+// var menus = {}
+// var menuId = ""
+//
+// // starts backwards so that the top of the stack is the first menu entry.
+// index.value = options.length - 1
+// menus[menuId] = rebootOptionsComponent.createObject(rebootButton)
+// menus[menuId].clicked.connect(shutdownUi.rebootRequested2)
+// findAndCreateMenu(index, options, menus, menuId)
+// contextMenu = menus[menuId]
+// } else {
+// contextMenu = rebootOptionsComponent.createObject(rebootButton)
+//
+// for (var index = 0; index < options.length; ++index) {
+// var itemData = new Object
+// itemData["itemIndex"] = index
+// itemData["itemText"] = options[index]
+// itemData["itemSubMenu"] = null
+// itemData["itemAllowAmpersand"] = true
+// if (index == rebootOptions["default"]) {
+// itemData["itemText"] += i18nc("default option in boot loader", " (default)")
+// }
+// contextMenu.append(itemData)
+// }
+// contextMenu.clicked.connect(shutdownUi.rebootRequested2)
+// }
+// }
+// contextMenu.open()
+// }
onActiveFocusChanged: {
shutdownUi.focusedButton = rebootButton
@@ -431,14 +431,14 @@ PlasmaCore.FrameSvgItem {
}
}
- KSMButton {
+ PlasmaComponents.Button {
id: cancelButton
anchors.right: parent.right
text: i18n("&Cancel")
iconSource: "dialog-cancel"
- smallButton: true
- tabStopNext: logoutButton
- tabStopBack: rebootButton
+// smallButton: true
+// tabStopNext: logoutButton
+// tabStopBack: rebootButton
onClicked: {
cancelRequested()
More information about the Plasma-devel
mailing list