File indexing completed on 2024-05-12 17:22:02

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 #include "krselectionmode.h"
0010 #include "../defaults.h"
0011 #include "../krglobal.h"
0012 
0013 #include <KConfigCore/KSharedConfig>
0014 
0015 static KrSelectionMode *__currentSelectionMode = nullptr; // uninitiated, at first
0016 
0017 KonqSelectionMode konqSelectionMode;
0018 OriginalSelectionMode originalSelectionMode;
0019 TCSelectionMode tcSelectionMode;
0020 ErgonomicSelectionMode ergonomicSelectionMode;
0021 UserSelectionMode userSelectionMode;
0022 
0023 KrSelectionMode *KrSelectionMode::getSelectionHandlerForMode(const QString &mode)
0024 {
0025     KrSelectionMode *res = nullptr;
0026     bool isNum;
0027     int modenum = mode.toInt(&isNum);
0028     switch (modenum) {
0029     case 0:
0030         res = &originalSelectionMode;
0031         break;
0032     case 1:
0033         res = &konqSelectionMode;
0034         break;
0035     case 2:
0036         res = &tcSelectionMode;
0037         break;
0038     case 3:
0039         // costom mode
0040         break;
0041     case 4:
0042         res = &ergonomicSelectionMode;
0043         break;
0044     default:
0045         break;
0046     }
0047     return res;
0048 }
0049 
0050 KrSelectionMode *KrSelectionMode::getSelectionHandler()
0051 {
0052     if (__currentSelectionMode) { // don't check krConfig every time
0053         return __currentSelectionMode;
0054     } else { // nothing yet, set the correct one
0055         KConfigGroup group(krConfig, "Look&Feel");
0056         QString mode = group.readEntry("Mouse Selection", QString(""));
0057         __currentSelectionMode = getSelectionHandlerForMode(mode);
0058         if (__currentSelectionMode == nullptr) {
0059             __currentSelectionMode = &userSelectionMode;
0060         }
0061         // init and return
0062         __currentSelectionMode->init();
0063         return __currentSelectionMode;
0064     }
0065 }
0066 
0067 void KrSelectionMode::resetSelectionHandler()
0068 {
0069     __currentSelectionMode = nullptr;
0070 }
0071 
0072 void UserSelectionMode::init()
0073 {
0074     KConfigGroup group(krConfig, "Custom Selection Mode");
0075     _useQTSelection = group.readEntry("QT Selection", _QtSelection);
0076     _leftButtonSelects = group.readEntry("Left Selects", _LeftSelects);
0077     _leftButtonPreservesSelection = group.readEntry("Left Preserves", _LeftPreserves);
0078     _shiftCtrlLeftButtonSelects = group.readEntry("ShiftCtrl Left Selects", _ShiftCtrlLeft);
0079     _rightButtonSelects = group.readEntry("Right Selects", _RightSelects);
0080     _rightButtonPreservesSelection = group.readEntry("Right Preserves", _RightPreserves);
0081     _shiftCtrlRightButtonSelects = group.readEntry("ShiftCtrl Right Selects", _ShiftCtrlRight);
0082     _spaceMovesDown = group.readEntry("Space Moves Down", _SpaceMovesDown);
0083     _spaceCalculatesDiskSpace = group.readEntry("Space Calc Space", _SpaceCalcSpace);
0084     _insertMovesDown = group.readEntry("Insert Moves Down", _InsertMovesDown);
0085     _showContextMenu = (group.readEntry("Immediate Context Menu", _ImmediateContextMenu) ? -1 : 500);
0086     _resetSelectionItems = group.readEntry("Reset Selection Items", _ResetSelectionItems);
0087 }