summaryrefslogtreecommitdiffabout
path: root/pwmanager
Unidiff
Diffstat (limited to 'pwmanager') (more/less context) (ignore whitespace changes)
-rw-r--r--pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.cpp72
-rw-r--r--pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.h47
-rw-r--r--pwmanager/pwmanager/kcmconfigs/pwmconfigwidget.cpp302
-rw-r--r--pwmanager/pwmanager/kcmconfigs/pwmconfigwidget.h61
4 files changed, 482 insertions, 0 deletions
diff --git a/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.cpp b/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.cpp
new file mode 100644
index 0000000..b7944c3
--- a/dev/null
+++ b/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.cpp
@@ -0,0 +1,72 @@
1/*
2 This file is part of PwManager/Pi
3 Copyright (c) 2004 Ulf Schenk
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24#include <qlayout.h>
25
26#include <kdebug.h>
27
28#include "pwmconfigwidget.h"
29
30#include "kcmpwmconfig.h"
31
32#include "pwmprefs.h"
33#include "kprefs.h"
34
35extern "C"
36{
37 KCModule *create_pwmconfig(QWidget *parent, const char * ) {
38 return new KCMPwmConfig(parent, "kcmpwmconfig" );
39 }
40}
41
42KCMPwmConfig::KCMPwmConfig(QWidget *parent, const char *name )
43 : KCModule( PWMPrefs::instance(), parent, name )
44{
45 QVBoxLayout *layout = new QVBoxLayout( this );
46 mConfigWidget = new PWMConfigWidget( (PWMPrefs*)getPreferences(), this, "mConfigWidget" );
47 layout->addWidget( mConfigWidget );
48 layout->setSpacing( 0 );
49 layout->setMargin( 0 );
50
51 connect( mConfigWidget, SIGNAL( changed( bool ) ), SIGNAL( changed( bool ) ) );
52}
53
54void KCMPwmConfig::load()
55{
56 mConfigWidget->readConfig();
57}
58
59void KCMPwmConfig::save()
60{
61 mConfigWidget->writeConfig();
62}
63
64void KCMPwmConfig::defaults()
65{
66 mConfigWidget->setDefaults();
67}
68
69
70#ifndef PWM_EMBEDDED
71#include "kcmkabconfig.moc"
72#endif //PWM_EMBEDDED
diff --git a/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.h b/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.h
new file mode 100644
index 0000000..b9ea6b8
--- a/dev/null
+++ b/pwmanager/pwmanager/kcmconfigs/kcmpwmconfig.h
@@ -0,0 +1,47 @@
1/*
2 This file is part of PwManager/Pi.
3 Copyright (c) 2004 Ulf Schenk
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24#ifndef KCMPWMCONFIG_H
25#define KCMPWMCONFIG_H
26
27#include <kcmodule.h>
28
29class PWMConfigWidget;
30class PWMPrefs;
31
32class KCMPwmConfig : public KCModule
33{
34 Q_OBJECT
35
36 public:
37 KCMPwmConfig(QWidget *parent = 0, const char *name = 0 );
38
39 virtual void load();
40 virtual void save();
41 virtual void defaults();
42
43 private:
44 PWMConfigWidget *mConfigWidget;
45};
46
47#endif
diff --git a/pwmanager/pwmanager/kcmconfigs/pwmconfigwidget.cpp b/pwmanager/pwmanager/kcmconfigs/pwmconfigwidget.cpp
new file mode 100644
index 0000000..1fc7a94
--- a/dev/null
+++ b/pwmanager/pwmanager/kcmconfigs/pwmconfigwidget.cpp
@@ -0,0 +1,302 @@
1/*
2 This file is part of KAddressBook.
3 Copyright (c) 2003 Tobias Koenig <tokoe@kde.org>
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22*/
23
24#include <qcheckbox.h>
25#include <qframe.h>
26#include <qgroupbox.h>
27#include <qlayout.h>
28#include <qpushbutton.h>
29#include <qtabwidget.h>
30#include <qcombobox.h>
31#include <qlineedit.h>
32#include <qspinbox.h>
33#include <qlabel.h>
34#include <qfile.h>
35#include <qvbox.h>
36
37#include <kconfig.h>
38#include <kdebug.h>
39#include <kdialog.h>
40#include <klistview.h>
41#include <klocale.h>
42#include <kglobal.h>
43#include <kmessagebox.h>
44#include <kstandarddirs.h>
45#include <kio/kfile/kurlrequester.h>
46
47#include "pwmprefs.h"
48
49#include "pwmconfigwidget.h"
50#include "pwmexception.h"
51
52PWMConfigWidget::PWMConfigWidget(PWMPrefs *prefs, QWidget *parent, const char *name )
53 : KPrefsWidget(prefs, parent, name )
54{
55 QVBoxLayout *topLayout = new QVBoxLayout( this, 0,
56 KDialog::spacingHint() );
57
58 QTabWidget *tabWidget = new QTabWidget( this );
59 topLayout->addWidget( tabWidget );
60
61 // windowsStyle page
62 //////////////////////////////////////////////////////
63 QWidget *windowStylePage = new QWidget( this );
64 QGridLayout *windowStyleLayout = new QGridLayout( windowStylePage, 3, 3);
65
66 int i = 0;
67 KPrefsWidRadios * windowStyle = addWidRadios(i18n("Window-style:") ,&(prefs->mMainViewStyle), windowStylePage);
68 windowStyle->addRadio(i18n("Category on top"));
69 windowStyle->addRadio(i18n("Category-list left"));
70 windowStyleLayout->addMultiCellWidget( (QWidget*)windowStyle->groupBox(),i,i,0,2);
71 ++i;
72
73 KPrefsWidFont *selEntrFont =
74 addWidFont(i18n("Password"),i18n("Font for Pw entries:"),
75 &(prefs->mEntryFont),windowStylePage);
76 windowStyleLayout->addWidget(selEntrFont->label(),i,0);
77 windowStyleLayout->addWidget(selEntrFont->preview(),i,1);
78 windowStyleLayout->addWidget(selEntrFont->button(),i,2);
79 ++i;
80
81
82 // File page
83 //////////////////////////////////////////////////////
84 QWidget *filePage = new QWidget( this );
85 QGridLayout *fileLayout = new QGridLayout( filePage, 3, 2);
86
87 i = 0;
88 KPrefsWidRadios * compr = addWidRadios(i18n("Compression:") ,&(prefs->mCompression), filePage);
89 compr->addRadio(i18n("none"));
90 compr->addRadio(i18n("gzip"));
91 compr->addRadio(i18n("bzip2"));
92 fileLayout->addMultiCellWidget( (QWidget*)compr->groupBox(),i,i,0,1);
93 ++i;
94
95 permissionLineEdit = new QLineEdit(filePage);
96 QLabel* permissionLineLabel = new QLabel(permissionLineEdit, i18n("Permissions:"), filePage);
97 fileLayout->addWidget(permissionLineLabel,i,0);
98 fileLayout->addWidget(permissionLineEdit,i,1);
99 ++i;
100
101 KPrefsWidBool *sb = addWidBool(i18n("Make backup before saving"),
102 &(prefs->mMakeFileBackup),filePage);
103 fileLayout->addMultiCellWidget(sb->checkBox(), i,i,0,1);
104 ++i;
105
106 // Timeout page
107 //////////////////////////////////////////////////////
108 QWidget *timeoutPage = new QWidget( this );
109 QGridLayout *timeoutLayout = new QGridLayout( timeoutPage, 3, 2);
110
111 i = 0;
112 pwTimeoutSpinBox = new QSpinBox( timeoutPage, "pwTimeoutSpinBox" );
113 QLabel* timeoutLabel = new QLabel(pwTimeoutSpinBox, i18n("Password timeout\n(timeout to hold password in\nmemory,so you don't have to\nre-enter it,if you\nalready have entered it)\n[set to 0 to disable]:"), timeoutPage);
114 timeoutLayout->addMultiCellWidget(timeoutLabel,i, i, 0 ,0);
115 timeoutLayout->addWidget(pwTimeoutSpinBox,i,1);
116 ++i;
117
118 lockTimeoutSpinBox = new QSpinBox( timeoutPage, "lockTimeoutSpinBox" );
119 QLabel* lockTimeoutLabel = new QLabel(lockTimeoutSpinBox, i18n("Auto-lock timeout\n(auto lock document after this\namount of seconds)\n[set to 0 to disable]:"), timeoutPage);
120 timeoutLayout->addMultiCellWidget(lockTimeoutLabel,i, i, 0 ,0);
121 timeoutLayout->addWidget(lockTimeoutSpinBox,i,1);
122 ++i;
123
124 sb = addWidBool(i18n("deep-lock on autolock"),
125 &(prefs->mAutoDeeplock),timeoutPage);
126 timeoutLayout->addMultiCellWidget(sb->checkBox(), i,i,0,1);
127 ++i;
128
129
130 // Autostart page
131 //////////////////////////////////////////////////////
132 QWidget *autostartPage = new QWidget( this );
133 QGridLayout *autostartLayout = new QGridLayout( autostartPage, 3, 2);
134
135 i = 0;
136
137 autostartLineEdit = new KURLRequester(autostartPage, "autoStartLineEdit");
138 QLabel* autostartLineLabel = new QLabel(autostartLineEdit, "Open this file automatically on startup:",autostartPage);
139 autostartLayout->addMultiCellWidget(autostartLineLabel,i,i,0,1);
140 ++i;
141 autostartLayout->addMultiCellWidget(autostartLineEdit,i,i,0,1);
142 ++i;
143
144 sb = addWidBool(i18n("open deeplocked"),
145 &(prefs->mAutostartDeeplocked),autostartPage);
146 autostartLayout->addMultiCellWidget(sb->checkBox(), i,i,0,1);
147 ++i;
148
149
150 // external app page
151 //////////////////////////////////////////////////////
152 QWidget *externalappPage = new QWidget( this );
153 QGridLayout *externalappLayout = new QGridLayout( externalappPage, 3, 2);
154
155 i = 0;
156
157 browserLineEdit = new QLineEdit(externalappPage);
158 QLabel* browserLineLabel = new QLabel(browserLineEdit, i18n("Favourite browser:"), externalappPage);
159 externalappLayout->addWidget(browserLineLabel,i,0);
160 externalappLayout->addWidget(browserLineEdit,i,1);
161 ++i;
162
163 xtermLineEdit = new QLineEdit(externalappPage);
164 QLabel* xtermLineLabel = new QLabel(xtermLineEdit, i18n("Favourite x-terminal:"), externalappPage);
165 externalappLayout->addWidget(xtermLineLabel,i,0);
166 externalappLayout->addWidget(xtermLineEdit,i,1);
167 ++i;
168
169
170 // miscelaneous page
171 //////////////////////////////////////////////////////
172 QWidget *miscPage = new QWidget( this );
173 QGridLayout *miscLayout = new QGridLayout( miscPage, 3, 2);
174
175 i = 0;
176
177 sb = addWidBool(i18n("Show icon in system-tray"),&(prefs->mTray),miscPage);
178 miscLayout->addMultiCellWidget(sb->checkBox(), i,i,0,1);
179 ++i;
180
181
182 sb = addWidBool(i18n("Open document with passwords unlocked"),&(prefs->mUnlockOnOpen),miscPage);
183 miscLayout->addMultiCellWidget(sb->checkBox(), i,i,0,1);
184 ++i;
185
186 sb = addWidBool(i18n("auto-minimize to tray on startup"),&(prefs->mAutoMinimizeOnStart),miscPage);
187 miscLayout->addMultiCellWidget(sb->checkBox(), i,i,0,1);
188 sb->checkBox()->setEnabled (FALSE);
189 ++i;
190
191 KPrefsWidRadios * minimizeRadio = addWidRadios(i18n("auto-lock on minimize:") ,&(prefs->mMinimizeLock), miscPage);
192 minimizeRadio->addRadio(i18n("don't lock"));
193 minimizeRadio->addRadio(i18n("normal lock"));
194 minimizeRadio->addRadio(i18n("deep-lock"));
195 miscLayout->addMultiCellWidget( (QWidget*)minimizeRadio->groupBox(),i,i,0,2);
196 ++i;
197
198 sb = addWidBool(i18n("KWallet emulation"),&(prefs->mKWalletEmu),miscPage);
199 miscLayout->addMultiCellWidget(sb->checkBox(), i,i,0,1);
200 ++i;
201
202 sb = addWidBool(i18n("Close instead Minimize into tray"),&(prefs->mClose),miscPage);
203 miscLayout->addMultiCellWidget(sb->checkBox(), i,i,0,1);
204 ++i;
205
206
207
208 tabWidget->addTab( windowStylePage, i18n( "Look && feel" ) );
209 tabWidget->addTab( filePage, i18n( "File" ) );
210 tabWidget->addTab( timeoutPage, i18n( "Timeout" ) );
211 tabWidget->addTab( autostartPage, i18n( "Autostart" ) );
212 tabWidget->addTab( externalappPage, i18n( "External apps" ) );
213 tabWidget->addTab( miscPage, i18n( "Miscellaneous" ) );
214
215
216 connect( permissionLineEdit, SIGNAL( textChanged(const QString&) ), this, SLOT( modified() ) );
217 connect( pwTimeoutSpinBox, SIGNAL( valueChanged(int) ), this, SLOT( modified() ) );
218 connect( lockTimeoutSpinBox, SIGNAL( valueChanged(int) ), this, SLOT( modified() ) );
219 connect( autostartLineEdit, SIGNAL( textChanged(const QString&) ), this, SLOT( modified() ) );
220 connect( browserLineEdit, SIGNAL( textChanged(const QString&) ), this, SLOT( modified() ) );
221 connect( xtermLineEdit, SIGNAL( textChanged(const QString&) ), this, SLOT( modified() ) );
222
223}
224
225
226void PWMConfigWidget::usrReadConfig()
227{
228 PWMPrefs* prefs = PWMPrefs::instance();
229
230 setFilePermissions(prefs->mFilePermissions);
231
232 pwTimeoutSpinBox->setValue(prefs->mPwTimeout);
233 lockTimeoutSpinBox->setValue(prefs->mLockTimeout);
234 autostartLineEdit->setURL(prefs->mAutoStart);
235 browserLineEdit->setText(prefs->mBrowserCommand);
236 xtermLineEdit->setText(prefs->mXTermCommand);
237
238}
239
240void PWMConfigWidget::usrWriteConfig()
241{
242 PWMPrefs* prefs = PWMPrefs::instance();
243
244 prefs->mFilePermissions = getFilePermissions();
245
246 prefs->mPwTimeout = pwTimeoutSpinBox->value();
247 prefs->mLockTimeout = lockTimeoutSpinBox->value();
248 prefs->mAutoStart = autostartLineEdit->url();
249
250 prefs->mBrowserCommand = browserLineEdit->text();
251 prefs->mXTermCommand = xtermLineEdit->text();
252}
253
254int PWMConfigWidget::getFilePermissions()
255{
256 char octalDigits[] = "01234567";
257 bool isOctal;
258 QString permString(permissionLineEdit->text());
259 int i, j, length = permString.length();
260 if (length != 3) {
261 printWarn("Wrong permission string length! Please enter "
262 "the string like the following example: 600");
263 return CONF_DEFAULT_FILEPERMISSIONS;
264 }
265 for (i = 0; i < length; ++i) {
266 isOctal = false;
267 for (j = 0; j < 8; ++j) {
268 if (permString.at(i) == octalDigits[j]) {
269 isOctal = true;
270 break;
271 }
272 }
273 if (!isOctal) {
274 printWarn("CONFIG: File-permissions: This is "
275 "not an octal number ");
276 return CONF_DEFAULT_FILEPERMISSIONS;
277 }
278 }
279
280 int ret = strtol(permString.latin1(), 0, 8);
281 if (ret == 0) {
282 /* either an error occured, or the user did really type 000 */
283 printWarn("CONFIG: File-permissions: Hm, either conversion error, "
284 "or you really typed 000. 8-)");
285 return CONF_DEFAULT_FILEPERMISSIONS;
286 }
287 return ret;
288}
289
290void PWMConfigWidget::setFilePermissions(int perm)
291{
292 char tmpBuf[30];
293 sprintf(tmpBuf, "%o", perm);
294 permissionLineEdit->setText(tmpBuf);
295}
296
297
298
299#ifndef PWM_EMBEDDED
300#include "pwmconfigwidget.moc"
301#endif //PWM_EMBEDDED
302
diff --git a/pwmanager/pwmanager/kcmconfigs/pwmconfigwidget.h b/pwmanager/pwmanager/kcmconfigs/pwmconfigwidget.h
new file mode 100644
index 0000000..1c7f5bf
--- a/dev/null
+++ b/pwmanager/pwmanager/kcmconfigs/pwmconfigwidget.h
@@ -0,0 +1,61 @@
1/*
2 This file is part of PwManager/Pi.
3 Copyright (c) 2004 ulf Schenk
4
5 program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18
19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution.
22
23 $Id$
24*/
25
26#ifndef PWMCONFIGWIDGET_H
27#define PWMCONFIGWIDGET_H
28
29#include <kprefswidget.h>
30
31class PWMPrefs;
32class KURLRequester;
33
34class PWMConfigWidget : public KPrefsWidget
35{
36 Q_OBJECT
37
38 public:
39 PWMConfigWidget(PWMPrefs *prefs, QWidget *parent, const char *name = 0 );
40
41 protected:
42 /** Implement this to read custom configuration widgets. */
43 virtual void usrReadConfig();
44 /** Implement this to write custom configuration widgets. */
45 virtual void usrWriteConfig();
46
47 private:
48 QLineEdit* permissionLineEdit;
49 QSpinBox* pwTimeoutSpinBox;
50 QSpinBox* lockTimeoutSpinBox;
51 KURLRequester* autostartLineEdit;
52 QLineEdit* browserLineEdit;
53 QLineEdit* xtermLineEdit;
54
55 private:
56 int getFilePermissions();
57 void setFilePermissions(int perm);
58
59};
60
61#endif