File indexing completed on 2023-10-01 04:11:44
0001 /* 0002 SPDX-FileCopyrightText: 2005 Aaron Seigo <aseigo@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #include <plasma/plasma.h> 0008 0009 #include <QAction> 0010 #include <QApplication> 0011 #include <QMenu> 0012 0013 #include "containment.h" 0014 0015 namespace Plasma 0016 { 0017 Types::Types(QObject *parent) 0018 : QObject(parent) 0019 { 0020 } 0021 0022 Types::~Types() 0023 { 0024 } 0025 0026 Types::Direction locationToDirection(Types::Location location) 0027 { 0028 switch (location) { 0029 case Types::Floating: 0030 case Types::Desktop: 0031 case Types::TopEdge: 0032 case Types::FullScreen: 0033 // TODO: should we be smarter for floating and planer? 0034 // perhaps we should take a QRect and/or QPos as well? 0035 return Types::Down; 0036 case Types::BottomEdge: 0037 return Types::Up; 0038 case Types::LeftEdge: 0039 return Types::Right; 0040 case Types::RightEdge: 0041 return Types::Left; 0042 } 0043 0044 return Types::Down; 0045 } 0046 0047 Types::Direction locationToInverseDirection(Types::Location location) 0048 { 0049 switch (location) { 0050 case Types::Floating: 0051 case Types::Desktop: 0052 case Types::TopEdge: 0053 case Types::FullScreen: 0054 // TODO: should we be smarter for floating and planer? 0055 // perhaps we should take a QRect and/or QPos as well? 0056 return Types::Up; 0057 case Types::BottomEdge: 0058 return Types::Down; 0059 case Types::LeftEdge: 0060 return Types::Left; 0061 case Types::RightEdge: 0062 return Types::Right; 0063 } 0064 0065 return Types::Up; 0066 } 0067 0068 Types::PopupPlacement visualPopupPlacement(Types::PopupPlacement placement, Qt::LayoutDirection layoutDirection) 0069 { 0070 const bool mirrored = (layoutDirection == Qt::LayoutDirectionAuto) ? qApp->isRightToLeft() : (layoutDirection == Qt::RightToLeft); 0071 0072 if (!mirrored) { 0073 return placement; 0074 } 0075 0076 switch (placement) { 0077 case Types::TopPosedLeftAlignedPopup: 0078 return Types::TopPosedRightAlignedPopup; 0079 case Types::TopPosedRightAlignedPopup: 0080 return Types::TopPosedLeftAlignedPopup; 0081 case Types::LeftPosedTopAlignedPopup: 0082 return Types::RightPosedTopAlignedPopup; 0083 case Types::LeftPosedBottomAlignedPopup: 0084 return Types::RightPosedBottomAlignedPopup; 0085 case Types::BottomPosedLeftAlignedPopup: 0086 return Types::BottomPosedRightAlignedPopup; 0087 case Types::BottomPosedRightAlignedPopup: 0088 return Types::BottomPosedLeftAlignedPopup; 0089 case Types::RightPosedTopAlignedPopup: 0090 return Types::LeftPosedTopAlignedPopup; 0091 case Types::RightPosedBottomAlignedPopup: 0092 return Types::LeftPosedBottomAlignedPopup; 0093 case Types::FloatingPopup: 0094 default: 0095 return placement; 0096 } 0097 } 0098 0099 } // Plasma namespace 0100 0101 #include "moc_plasma.cpp"