File indexing completed on 2024-05-05 17:57:13
0001 /* 0002 SPDX-FileCopyrightText: 2002 Shie Erlich <erlich@users.sourceforge.net> 0003 SPDX-FileCopyrightText: 2002 Rafi Yanai <yanai@users.sourceforge.net> 0004 SPDX-FileCopyrightText: 2004-2022 Krusader Krew <https://krusader.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef KRSELECTIONMODE_H 0010 #define KRSELECTIONMODE_H 0011 0012 // QtCore 0013 #include <QString> 0014 0015 /** 0016 Every selection mode inherits this class, and has to implement init(). 0017 Usage: 0018 KrSelectionMode::getSelectionHandler()->whateverFunctionYouNeed() 0019 0020 \note You can call KrSelectionMode::resetSelectionHandler() if you want the 0021 selection mode to be re-read. This is useful after a configuration where you 0022 changed the selection mode. calling resetSelectionHandler() will cause the next 0023 call to getSelectionHandler() to (possibly) select a different mode. 0024 */ 0025 class KrSelectionMode 0026 { 0027 public: 0028 static KrSelectionMode *getSelectionHandlerForMode(const QString &mode); 0029 static KrSelectionMode *getSelectionHandler(); 0030 static void resetSelectionHandler(); 0031 0032 virtual void init() = 0; // everyone must implement this in order to be a selection mode 0033 inline bool useQTSelection() 0034 { 0035 return _useQTSelection; 0036 } 0037 inline bool spaceMovesDown() 0038 { 0039 return _spaceMovesDown; 0040 } 0041 inline bool insertMovesDown() 0042 { 0043 return _insertMovesDown; 0044 } 0045 inline bool spaceCalculatesDiskSpace() 0046 { 0047 return _spaceCalculatesDiskSpace; 0048 } 0049 inline bool rightButtonSelects() 0050 { 0051 return _rightButtonSelects; 0052 } 0053 inline bool leftButtonSelects() 0054 { 0055 return _leftButtonSelects; 0056 } 0057 inline bool rightButtonPreservesSelection() 0058 { 0059 return _rightButtonPreservesSelection; 0060 } 0061 inline bool leftButtonPreservesSelection() 0062 { 0063 return _leftButtonPreservesSelection; 0064 } 0065 inline bool shiftCtrlRightButtonSelects() 0066 { 0067 return _shiftCtrlRightButtonSelects; 0068 } 0069 inline bool shiftCtrlLeftButtonSelects() 0070 { 0071 return _shiftCtrlLeftButtonSelects; 0072 } 0073 inline int showContextMenu() 0074 { 0075 return _showContextMenu; 0076 } // 0: no, -1: yes, n>0: after n milliseconds 0077 inline int resetSelectionItems() 0078 { 0079 return _resetSelectionItems; 0080 } 0081 0082 virtual ~KrSelectionMode() 0083 { 0084 } 0085 0086 protected: 0087 bool _useQTSelection, _spaceMovesDown, _insertMovesDown, _spaceCalculatesDiskSpace; 0088 bool _rightButtonSelects, _leftButtonSelects, _rightButtonPreservesSelection; 0089 bool _leftButtonPreservesSelection, _shiftCtrlRightButtonSelects, _shiftCtrlLeftButtonSelects; 0090 int _showContextMenu; 0091 int _resetSelectionItems; 0092 }; 0093 0094 class KonqSelectionMode : public KrSelectionMode 0095 { 0096 public: 0097 void init() override 0098 { 0099 _useQTSelection = true; 0100 _spaceMovesDown = false; 0101 _insertMovesDown = true; 0102 _spaceCalculatesDiskSpace = false; 0103 _rightButtonSelects = true; 0104 _leftButtonSelects = true; 0105 _rightButtonPreservesSelection = false; 0106 _leftButtonPreservesSelection = false; 0107 _shiftCtrlRightButtonSelects = false; 0108 _shiftCtrlLeftButtonSelects = false; 0109 _showContextMenu = -1; 0110 _resetSelectionItems = false; 0111 } 0112 }; 0113 0114 class OriginalSelectionMode : public KrSelectionMode 0115 { 0116 public: 0117 void init() override 0118 { 0119 _useQTSelection = false; 0120 _spaceMovesDown = true; 0121 _insertMovesDown = true; 0122 _spaceCalculatesDiskSpace = true; 0123 _rightButtonSelects = true; 0124 _leftButtonSelects = true; 0125 _rightButtonPreservesSelection = false; 0126 _leftButtonPreservesSelection = false; 0127 _shiftCtrlRightButtonSelects = false; 0128 _shiftCtrlLeftButtonSelects = false; 0129 _showContextMenu = -1; 0130 _resetSelectionItems = false; 0131 } 0132 }; 0133 0134 class TCSelectionMode : public KrSelectionMode 0135 { 0136 public: 0137 void init() override 0138 { 0139 _useQTSelection = false; 0140 _spaceMovesDown = false; 0141 _insertMovesDown = true; 0142 _spaceCalculatesDiskSpace = true; 0143 _rightButtonSelects = true; 0144 _leftButtonSelects = false; 0145 _rightButtonPreservesSelection = true; 0146 _leftButtonPreservesSelection = false; 0147 _shiftCtrlRightButtonSelects = false; 0148 _shiftCtrlLeftButtonSelects = true; 0149 _showContextMenu = 500; 0150 _resetSelectionItems = false; 0151 } 0152 }; 0153 0154 class ErgonomicSelectionMode : public KrSelectionMode 0155 { 0156 public: 0157 void init() override 0158 { 0159 _useQTSelection = false; 0160 _spaceMovesDown = false; 0161 _insertMovesDown = true; 0162 _spaceCalculatesDiskSpace = true; 0163 _rightButtonSelects = false; 0164 _leftButtonSelects = false; 0165 _rightButtonPreservesSelection = true; 0166 _leftButtonPreservesSelection = true; 0167 _shiftCtrlRightButtonSelects = false; 0168 _shiftCtrlLeftButtonSelects = true; 0169 _showContextMenu = -1; 0170 _resetSelectionItems = false; 0171 } 0172 }; 0173 0174 class UserSelectionMode : public KrSelectionMode 0175 { 0176 public: 0177 void init() override; 0178 }; 0179 0180 #endif // KR_SELECTION_MODE_H