summaryrefslogtreecommitdiffstats
path: root/krusader/Panel/krselectionmode.h
blob: 4f9de2e3e28adca0da9a5ecce675f1d61776dfed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#ifndef KR_SELECTION_MODE_H
#define KR_SELECTION_MODE_H

/**
	Every selection mode inherits this class, and has to implement init().
	Usage:
		KrSelectionMode::getSelectionHandler()->whateverFunctionYouNeed()
		
	\note You can call KrSelectionMode::resetSelectionHandler() if you want the
	selection mode to be re-read. This is useful after a configuration where you
	changed the selection mode. calling resetSelectionHandler() will cause the next
	call to getSelectionHandler() to (possibly) select a different mode.
*/
class KrSelectionMode {
public:
   static KrSelectionMode * getSelectionHandler();
	static void resetSelectionHandler();
	
	virtual void init() = 0; // everyone must implement this in order to be a selection mode
	inline bool useQTSelection() { return _useQTSelection; }
   inline bool spaceMovesDown() { return _spaceMovesDown; }
   inline bool insertMovesDown() { return _insertMovesDown; }
   inline bool spaceCalculatesDiskSpace() { return _spaceCalculatesDiskSpace; }
   inline bool rightButtonSelects() { return _rightButtonSelects; }
   inline bool leftButtonSelects() { return _leftButtonSelects; }
   inline bool rightButtonPreservesSelection() { return _rightButtonPreservesSelection; }
   inline bool leftButtonPreservesSelection() { return _leftButtonPreservesSelection; }
   inline bool shiftCtrlRightButtonSelects() { return _shiftCtrlRightButtonSelects; }
   inline bool shiftCtrlLeftButtonSelects() { return _shiftCtrlLeftButtonSelects; }	
   inline int showContextMenu() { return _showContextMenu; } // 0: no, -1: yes, n>0: after n milliseconds

   virtual ~KrSelectionMode() {}

protected:
	bool _useQTSelection, _spaceMovesDown, _insertMovesDown, _spaceCalculatesDiskSpace;
	bool _rightButtonSelects, _leftButtonSelects, _rightButtonPreservesSelection;
	bool _leftButtonPreservesSelection, _shiftCtrlRightButtonSelects, _shiftCtrlLeftButtonSelects;	
	int _showContextMenu;
};

class KonqSelectionMode : public KrSelectionMode {
public:
   void init() {
		_useQTSelection = true;
		_spaceMovesDown = false;
		_insertMovesDown = true;
		_spaceCalculatesDiskSpace = false;
		_rightButtonSelects = true;
		_leftButtonSelects = true;
		_rightButtonPreservesSelection = false;
		_leftButtonPreservesSelection = false;
		_shiftCtrlRightButtonSelects = false;
		_shiftCtrlLeftButtonSelects = false;		
		_showContextMenu = -1;
	}
};

class OriginalSelectionMode : public KrSelectionMode {
public:
	void init() {
		_useQTSelection = false;
		_spaceMovesDown = true;
		_insertMovesDown = true;
		_spaceCalculatesDiskSpace = true;
		_rightButtonSelects = true;
		_leftButtonSelects = true;
		_rightButtonPreservesSelection = false;
		_leftButtonPreservesSelection = false;
		_shiftCtrlRightButtonSelects = false;
		_shiftCtrlLeftButtonSelects = false;		
		_showContextMenu = -1;
	}
};

class TCSelectionMode : public KrSelectionMode {
public:
	void init() {
		_useQTSelection = false;
		_spaceMovesDown = false;
		_insertMovesDown = true;
		_spaceCalculatesDiskSpace = true;
		_rightButtonSelects = true;
		_leftButtonSelects = false;
		_rightButtonPreservesSelection = true;
		_leftButtonPreservesSelection = false;
		_shiftCtrlRightButtonSelects = false;
		_shiftCtrlLeftButtonSelects = true;		
		_showContextMenu = 500;
	}
};

class UserSelectionMode: public KrSelectionMode {
public:	
	void init();
};

#endif // KR_SELECTION_MODE_H