1/***************************************************************************
2 configurationclasses.h - description
3 -------------------
4 begin : Sat Apr 17 2004
5 copyright : (C) 2004 Emiliano Gulmini
6 email : <emi_barbarossa@yahoo.it>
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17#ifndef CONFIGURATIONCLASSES_H
18#define CONFIGURATIONCLASSES_H
19
20// QT
21#include <qstring.h>
22#include <qstringlist.h>
23#include <qdatetime.h>
24#include <qmap.h>
25#include <qregexp.h>
26
27typedef QMap<QString,QString> KeyValueMap;
28// entry strings in the kfilereplacerc file
29const QString rcDirectoriesList = "Directories list";
30const QString rcFiltersList = "Filters list";
31const QString rcRecentFiles = "Recent files";
32const QString rcAllStringsMustBeFound = "All strings must be found";
33const char rcEncoding[] = "Encoding";
34const QString rcCaseSensitive = "Case sensitive";
35const QString rcConfirmStrings = "Confirm strings";
36const QString rcConfirmFiles = "Confirm files";
37const QString rcConfirmDirs = "Confirm directories";
38const QString rcFollowSymLinks = "Follow symbolic links";
39const QString rcHaltOnFirstOccur = "Halt on first occurrence";
40const QString rcIgnoreHidden = "Ignore hidden files";
41const QString rcRecursive = "Search/replace in sub folders";
42const QString rcVariables = "Enable variables";
43const QString rcRegularExpressions = "Enable regular expressions";
44const QString rcMinFileSize = "Minimum file size";
45const QString rcMaxFileSize = "Maximum file size";
46const QString rcValidAccessDate = "Access mode";
47const QString rcMinDate = "Minimum access date";
48const QString rcMaxDate = "Maximum access date";
49const QString rcOwnerUser = "Owner user filters";
50const QString rcOwnerGroup = "Owner group filters";
51const QString rcSearchMode = "Search only mode";
52const QString rcBackupExtension = "Backup file extension";
53const QString rcIgnoreFiles = "Ignore files if there is no match";
54const QString rcNotifyOnErrors = "NotifyOnErrors";
55const QString rcAskConfirmReplace = "Ask confirmation on replace";
56const QString rcDontAskAgain = "Don't ask again";
57// Default configuration options
58const QString EncodingOption = "utf8";
59const bool RecursiveOption = true;
60const bool CaseSensitiveOption = false;
61const bool FollowSymbolicLinksOption = false;
62const bool RegularExpressionsOption = false;
63const bool VariablesOption = false;
64const bool StopWhenFirstOccurenceOption = false;
65const bool IgnoreHiddenOption = false;
66const int FileSizeOption = -1;
67const QString AccessDateOption="unknown";
68const QString ValidAccessDateOption="unknown";
69const QString OwnerOption="false,Name,Equals To";
70const bool SearchModeOption=true;
71const QString BackupExtensionOption="false,~";
72const bool IgnoreFilesOption = true;
73const bool NotifyOnErrorsOption = false;
74const bool AskConfirmReplaceOption = false;
75
76// This class stores configuration information
77class RCOptions
78{
79 public:
80 bool m_callResetActions;
81
82 bool m_askConfirmReplace,
83 m_dontAskAgain;
84
85 QString m_directories,
86 m_filters,
87 m_currentDirectory;
88
89 int m_minSize,
90 m_maxSize;
91
92 QString m_dateAccess,
93 m_minDate,
94 m_maxDate;
95
96 QString m_encoding;
97
98 bool m_caseSensitive,
99 m_recursive,
100 m_followSymLinks,
101 m_allStringsMustBeFound,
102 m_backup,
103 m_regularExpressions;
104
105 bool m_variables,
106 m_haltOnFirstOccur,
107 m_ignoreHidden,
108 m_simulation,
109 m_searchingOnlyMode;
110
111 bool m_ownerUserIsChecked,
112 m_ownerGroupIsChecked;
113
114 QString m_ownerUserType,
115 m_ownerGroupType,
116 m_ownerUserValue,
117 m_ownerGroupValue,
118 m_ownerUserBool,
119 m_ownerGroupBool;
120
121 QString m_backupExtension;
122
123 bool m_ignoreFiles;
124
125 KeyValueMap m_mapStringsView;
126
127 QString m_quickSearchString,
128 m_quickReplaceString;
129
130 QStringList m_recentStringFileList;
131
132 bool m_notifyOnErrors;
133
134 public:
135 RCOptions();
136 RCOptions& operator=(const RCOptions& ci);
137};
138
139class ResultViewEntry
140{
141 private:
142 QString m_key;
143 QString m_data;
144 QRegExp m_rxKey;
145 bool m_regexp;
146 bool m_caseSensitive;
147 int m_pos;
148 int m_matchedStringsOccurrence;
149
150 public:
151 ResultViewEntry(const QString &nkey, const QString &ndata, bool regexp, bool caseSensitive);
152 int lineNumber(const QString& line) const ;
153 int columnNumber(const QString& line) const ;
154 void incOccurrences();
155 int occurrences() const ;
156 bool regexp()const ;
157 int pos(const QString& line) ;
158 void incPos();
159 QString capturedText(const QString& line) ;
160 QString message(const QString& capturedText, int x, int y) const;
161 int keyLength() const;
162 int dataLength() const;
163 void updateLine(QString& line);
164};
165#endif
166