OSDN Git Service

da6e66069257527157c6367d8849d705a3e1a9ae
[neighbornote/NeighborNote.git] / src / cx / fbn / nevernote / dialog / ConfigAppearancePage.java
1 /*\r
2  * This file is part of NixNote \r
3  * Copyright 2009 Randy Baumgarte\r
4  * \r
5  * This file may be licensed under the terms of of the\r
6  * GNU General Public License Version 2 (the ``GPL'').\r
7  *\r
8  * Software distributed under the License is distributed\r
9  * on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either\r
10  * express or implied. See the GPL for the specific language\r
11  * governing rights and limitations.\r
12  *\r
13  * You should have received a copy of the GPL along with this\r
14  * program. If not, go to http://www.gnu.org/licenses/gpl.html\r
15  * or write to the Free Software Foundation, Inc.,\r
16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.\r
17  *\r
18 */\r
19 \r
20 package cx.fbn.nevernote.dialog;\r
21 \r
22 import java.util.ArrayList;\r
23 import java.util.List;\r
24 \r
25 import com.trolltech.qt.core.Qt;\r
26 import com.trolltech.qt.gui.QApplication;\r
27 import com.trolltech.qt.gui.QCheckBox;\r
28 import com.trolltech.qt.gui.QComboBox;\r
29 import com.trolltech.qt.gui.QFormLayout;\r
30 import com.trolltech.qt.gui.QGroupBox;\r
31 import com.trolltech.qt.gui.QHBoxLayout;\r
32 import com.trolltech.qt.gui.QLabel;\r
33 import com.trolltech.qt.gui.QScrollArea;\r
34 import com.trolltech.qt.gui.QSpinBox;\r
35 import com.trolltech.qt.gui.QStyleFactory;\r
36 import com.trolltech.qt.gui.QVBoxLayout;\r
37 import com.trolltech.qt.gui.QWidget;\r
38 \r
39 import cx.fbn.nevernote.Global;\r
40 \r
41 public class ConfigAppearancePage extends QWidget {\r
42         private final QComboBox dateFormat;\r
43         private final QComboBox timeFormat;\r
44         private final QComboBox styleFormat;\r
45         private final QComboBox tagBehavior;\r
46         private final QCheckBox standardPalette;\r
47         private final QCheckBox showSplashScreen;\r
48         private final QCheckBox showTrayIcon;\r
49         private final QCheckBox verifyDelete;\r
50         private final QCheckBox pdfPreview;\r
51         private final QCheckBox anyTagSelection;\r
52         private final QCheckBox checkForUpdates;\r
53         private final QCheckBox newNoteWithTags;\r
54         private final QCheckBox mimicEvernote;\r
55         private final QCheckBox startMinimized;\r
56         private final QCheckBox minimizeOnClose;\r
57         private final QCheckBox includeTagChildren;\r
58         private final QSpinBox autoSaveInterval;\r
59         \r
60         private final List<String> tformats;\r
61         private final List<String> dformats;\r
62         \r
63         public ConfigAppearancePage(QWidget parent) {\r
64 //              super(parent);\r
65                 \r
66                 dformats = new ArrayList<String>();\r
67                 tformats = new ArrayList<String>();\r
68                 \r
69                 dformats.add("MM/dd/yy - 02/03/09");\r
70                 dformats.add("MM/dd/yyyy - 02/03/2009");\r
71                 dformats.add("M/dd/yyyy - 2/03/2009");\r
72                 dformats.add("M/d/yyyy - 2/3/2009");\r
73                 dformats.add("dd/MM/yy - 03/02/09");\r
74                 dformats.add("d/M/yy - 3/2/09");\r
75                 dformats.add("dd/MM/yyyy - 03/02/2009");\r
76                 dformats.add("d/M/yyyy - 3/2/2009");\r
77                 dformats.add("yyyy/MM/dd - 2009/02/03");\r
78                 dformats.add("yy/MM/dd - 09/02/03");\r
79                 \r
80                 tformats.add("HH:mm:ss - 18:13:01");\r
81                 tformats.add("HH:mm:ss a - 18:13:01 pm");\r
82                 tformats.add("HH:mm - 18:13");\r
83                 tformats.add("HH:mm a - 18:13 pm");\r
84                 tformats.add("hh:mm:ss - 06:13:01");\r
85                 tformats.add("hh:mm:ss a - 06:13:01 pm");\r
86                 tformats.add("h:mm:ss a - 6:13:01 pm");\r
87                 tformats.add("hh:mm - 06:13");\r
88                 tformats.add("hh:mm a - 06:13 pm");\r
89                 tformats.add("h:mm a - 6:13 pm");\r
90 \r
91                 \r
92                 // Style sheet formats\r
93                 List<String> styles = QStyleFactory.keys();\r
94                 QGroupBox styleGroup = new QGroupBox(tr("GUI Style"));\r
95                 styleFormat = new QComboBox();                          \r
96                 styleFormat.addItems(styles);\r
97                 styleFormat.activated.connect(this, "styleSelected(String)");\r
98                 \r
99                 standardPalette = new QCheckBox();\r
100                 standardPalette.setText(tr("Use standard palette"));\r
101                 standardPalette.clicked.connect(this, "standardPaletteChanged()");\r
102 \r
103                 QFormLayout styleLayout = new QFormLayout();\r
104                 styleLayout.addWidget(styleFormat);\r
105                 styleLayout.addWidget(standardPalette);\r
106                 \r
107                 styleGroup.setLayout(styleLayout);\r
108 \r
109                 QGroupBox tagBehaviorGroup = new QGroupBox(tr("Tag Behavior"));\r
110                 tagBehavior = new QComboBox();\r
111                 tagBehavior.addItem(tr("Do nothing"),"DoNothing");\r
112                 tagBehavior.addItem(tr("Count tags & do not hide inactive"),"NoHideInactiveCount");\r
113                 tagBehavior.addItem(tr("Count tags & hide inactive"),"HideInactiveCount");\r
114                 tagBehavior.addItem(tr("Color active tags"),"ColorActive");\r
115                 \r
116                 QFormLayout tagLayout = new QFormLayout();\r
117                 tagLayout.addWidget(tagBehavior);\r
118                 tagBehaviorGroup.setLayout(tagLayout);\r
119                 \r
120                 \r
121                 \r
122                 // Date/Time settings\r
123                 QGroupBox datetimeGroup = new QGroupBox(tr("Date/Time Format"));\r
124                 dateFormat = new QComboBox();                           \r
125                 for (int i=0; i<dformats.size(); i++) {\r
126                         dateFormat.addItem(tr(dformats.get(i)));\r
127                 }\r
128                 \r
129                 timeFormat = new QComboBox();           \r
130                 for (int i=0; i<tformats.size(); i++) {\r
131                         timeFormat.addItem(tr(tformats.get(i)));\r
132                 }\r
133 \r
134                 QFormLayout formatLayout = new QFormLayout();\r
135                 formatLayout.addWidget(dateFormat);\r
136                 formatLayout.addWidget(timeFormat);\r
137                 datetimeGroup.setLayout(formatLayout);\r
138                 \r
139                 mimicEvernote = new QCheckBox(tr("Mimic Evernote Selection Behavior (Requires Restart)"));\r
140                 showSplashScreen = new QCheckBox(tr("Show Splash Screen on Startup"));\r
141                 showTrayIcon = new QCheckBox(tr("Minimize To Tray"));\r
142                 minimizeOnClose = new QCheckBox(tr("Minimize On Close"));\r
143                 verifyDelete = new QCheckBox(tr("Verify Deletes"));\r
144                 startMinimized = new QCheckBox(tr("Start Minimized"));\r
145                 pdfPreview = new QCheckBox(tr("Display PDF Documents Inline"));\r
146                 checkForUpdates = new QCheckBox(tr("Check For Updates At Startup"));\r
147                 newNoteWithTags = new QCheckBox(tr("Create New Notes With Selected Tags"));\r
148                 anyTagSelection = new QCheckBox(tr("Display Notes Matching Any Selected Tags"));\r
149                 includeTagChildren = new QCheckBox(tr("Include Children In Tag Selection"));\r
150                 \r
151                 QHBoxLayout autoSaveLayout = new QHBoxLayout();\r
152                 autoSaveLayout.addWidget(new QLabel(tr("Automatic Save Interval (in Minutes)")));\r
153                 autoSaveInterval = new QSpinBox();\r
154                 autoSaveLayout.addWidget(autoSaveInterval);\r
155                 autoSaveInterval.setMaximum(1440);\r
156                 autoSaveInterval.setMinimum(0);\r
157                 \r
158                 QVBoxLayout mainLayout = new QVBoxLayout(this);\r
159                 mainLayout.addWidget(styleGroup);\r
160                 mainLayout.addWidget(datetimeGroup);\r
161                 mainLayout.addLayout(autoSaveLayout);\r
162                 mainLayout.addWidget(tagBehaviorGroup);\r
163                 \r
164                 \r
165                 QVBoxLayout checkboxLayout = new QVBoxLayout();\r
166                 checkboxLayout.addWidget(mimicEvernote); \r
167                 checkboxLayout.addWidget(showTrayIcon);\r
168                 checkboxLayout.addWidget(minimizeOnClose);\r
169                 checkboxLayout.addWidget(startMinimized);\r
170                 checkboxLayout.addWidget(showSplashScreen);\r
171                 checkboxLayout.addWidget(verifyDelete);\r
172                 checkboxLayout.addWidget(pdfPreview);\r
173                 checkboxLayout.addWidget(newNoteWithTags);\r
174                 checkboxLayout.addWidget(anyTagSelection);\r
175                 checkboxLayout.addWidget(includeTagChildren);\r
176                 checkboxLayout.addWidget(checkForUpdates);\r
177                 checkboxLayout.addStretch(1);\r
178 \r
179                 \r
180                 QWidget checkBoxGroup = new QWidget();\r
181                 checkBoxGroup.setLayout(checkboxLayout);\r
182 \r
183                 QScrollArea scrollArea = new QScrollArea();\r
184                 scrollArea.setHorizontalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAsNeeded);\r
185                 scrollArea.setVerticalScrollBarPolicy(Qt.ScrollBarPolicy.ScrollBarAsNeeded);\r
186                 scrollArea.setWidgetResizable(true);\r
187                 scrollArea.setWidget(checkBoxGroup);\r
188 \r
189                 mainLayout.addWidget(scrollArea);\r
190                 setLayout(mainLayout);\r
191                 \r
192                 showTrayIcon.clicked.connect(this, "showTrayIconClicked(Boolean)");\r
193                 showTrayIconClicked(showTrayIcon.isChecked());\r
194 \r
195 \r
196         }\r
197         \r
198         private void showTrayIconClicked(Boolean checked) {\r
199                 if (!checked) {\r
200                         minimizeOnClose.setEnabled(false);\r
201                         minimizeOnClose.setChecked(false);\r
202                 } else\r
203                         minimizeOnClose.setEnabled(true);\r
204         }\r
205 \r
206         \r
207         //*****************************************\r
208         //* date format get/set methods \r
209         //*****************************************\r
210         public void setDateFormat(String id) {\r
211                 for (int i=0; i<dformats.size(); i++) {\r
212                         String d = dformats.get(i);\r
213                         if (d.substring(0,id.length()).equals(id))\r
214                                 dateFormat.setCurrentIndex(i);\r
215                 }\r
216         }\r
217         public String getDateFormat() {\r
218                 int i = dateFormat.currentIndex();\r
219                 return dateFormat.itemText(i);  \r
220         }\r
221         \r
222 \r
223         \r
224         //*****************************************\r
225         //* time format get/set methods \r
226         //*****************************************\r
227         public void setTimeFormat(String id) {\r
228                 for (int i=0; i<tformats.size(); i++) {\r
229                         String d = tformats.get(i);\r
230                         int dash = d.indexOf("-");\r
231                         d = d.substring(0,dash-1);\r
232                         if (d.equals(id)) {\r
233                                 timeFormat.setCurrentIndex(i);\r
234                                 return;\r
235                         }\r
236                 }\r
237         }\r
238         public String getTimeFormat() {\r
239                 int i = timeFormat.currentIndex();\r
240                 return timeFormat.itemText(i);  \r
241         }\r
242 \r
243         \r
244         //*****************************************\r
245         //* gui style format get/set methods \r
246         //*****************************************\r
247         public void setStyle(String id) {\r
248                 for (int i=0; i<styleFormat.count(); i++) {\r
249                         String d = styleFormat.itemText(i);\r
250                         if (d.equals(id))\r
251                                 styleFormat.setCurrentIndex(i);\r
252                 }\r
253         }\r
254         public String getStyle() {\r
255                 int i = styleFormat.currentIndex();\r
256                 return styleFormat.itemText(i); \r
257         }\r
258         \r
259         //*****************************************\r
260         //* palette style get/set methods \r
261         //*****************************************\r
262         public void setStandardPalette(boolean value) {\r
263                 standardPalette.setChecked(value);\r
264         }\r
265         public boolean getStandardPalette() {\r
266                 return standardPalette.isChecked();     \r
267         }\r
268         \r
269         //*******************************************\r
270         //* Show/Hide tray icon get/set\r
271         //*******************************************\r
272         public void setShowTrayIcon(boolean val) {\r
273                 showTrayIcon.setChecked(val);   \r
274                 showTrayIconClicked(showTrayIcon.isChecked());\r
275         }\r
276         public boolean getShowTrayIcon() {\r
277                 return showTrayIcon.isChecked();\r
278         }\r
279         \r
280         \r
281         //*******************************************\r
282         //* minimize on close get/set\r
283         //*******************************************\r
284         public void setMinimizeOnClose(boolean val) {\r
285                 minimizeOnClose.setChecked(val);        \r
286         }\r
287         public boolean getMinimizeOnClose() {\r
288                 return minimizeOnClose.isChecked();\r
289         }\r
290         \r
291         \r
292         //*****************************************\r
293         //* Show the splash screen on startup\r
294         //*****************************************\r
295         public void setShowSplashScreen(boolean val) {\r
296                 showSplashScreen.setChecked(val);\r
297         }\r
298         public boolean getShowSplashScreen() {\r
299                 return showSplashScreen.isChecked();\r
300         }\r
301         \r
302         //*******************************************\r
303         //* verify deletes get/set\r
304         //*******************************************\r
305         public void setVerifyDelete(boolean val) {\r
306                 verifyDelete.setChecked(val);   \r
307         }\r
308         public boolean getVerifyDelete() {\r
309                 return verifyDelete.isChecked();\r
310         }\r
311         \r
312         \r
313         //*******************************************\r
314         //* Show/Hide tray icon get/set\r
315         //*******************************************\r
316         public void setPdfPreview(boolean val) {\r
317                 pdfPreview.setChecked(val);     \r
318         }\r
319         public boolean getPdfPreview() {\r
320                 return pdfPreview.isChecked();\r
321         }\r
322         \r
323         //*******************************************\r
324         //* check for updates get/set\r
325         //*******************************************\r
326         public void setCheckForUpdates(boolean val) {\r
327                 checkForUpdates.setChecked(val);        \r
328         }\r
329         public boolean getCheckForUpdates() {\r
330                 return checkForUpdates.isChecked();\r
331         }\r
332 \r
333         \r
334         //********************************************\r
335         //* Listeners for palette & style changes\r
336         //********************************************\r
337         public void styleSelected(String style) {\r
338                 QApplication.setStyle(style);\r
339                 QApplication.setPalette(QApplication.style().standardPalette());\r
340         }       \r
341         public void standardPaletteChanged() {\r
342                 if (standardPalette.isChecked())\r
343                         QApplication.setPalette(QApplication.style().standardPalette());\r
344                 else\r
345                         QApplication.setPalette(Global.originalPalette);\r
346                         \r
347         }\r
348 \r
349         \r
350         //*****************************************\r
351         //* automatic save timer\r
352         //*****************************************\r
353         public void setAutoSaveInterval(int len) {\r
354                 autoSaveInterval.setValue(len);\r
355         }\r
356         public int getAutoSaveInterval() {\r
357                 return autoSaveInterval.value();        \r
358         }\r
359 \r
360         \r
361         //*****************************************\r
362         //* Get/Set tag behavior combo box\r
363         //*****************************************\r
364         public void setTagBehavior(String value) {\r
365                 for (int i=0; i<tagBehavior.count(); i++) {\r
366                         String d = tagBehavior.itemData(i).toString();\r
367                         if (value.equalsIgnoreCase(d)) {\r
368                                 tagBehavior.setCurrentIndex(i);\r
369                                 return;\r
370                         }\r
371                 }\r
372         }\r
373         public String getTagBehavior() {\r
374                 int i = tagBehavior.currentIndex();\r
375                 return tagBehavior.itemData(i).toString();\r
376         }\r
377 \r
378         //*****************************************\r
379         //* Mimic Evernote Selection\r
380         //*****************************************\r
381         public boolean getMimicEvernote() {\r
382                 return mimicEvernote.isChecked();\r
383         }\r
384         public void setMimicEvernote(boolean val) {\r
385                 mimicEvernote.setChecked(val);\r
386         }\r
387 \r
388         \r
389         //*****************************************\r
390         //* Mimic Evernote Selection\r
391         //*****************************************\r
392         public boolean getStartMinimized() {\r
393                 return startMinimized.isChecked();\r
394         }\r
395         public void setStartMinimized(boolean val) {\r
396                 startMinimized.setChecked(val);\r
397         }\r
398 \r
399 \r
400         //*****************************************\r
401         //* Create Note With Selected Tags\r
402         //*****************************************\r
403         public boolean getNewNoteWithTags() {\r
404                 return newNoteWithTags.isChecked();\r
405         }\r
406         public void setNewNoteWithTags(boolean val) {\r
407                 newNoteWithTags.setChecked(val);\r
408         }\r
409         \r
410         //*****************************************\r
411         //* Set tag selection behavior\r
412         //*****************************************\r
413         public boolean getAnyTagSelection() {\r
414                 return anyTagSelection.isChecked();\r
415         }\r
416         public void setAnyTagSelection(boolean val) {\r
417                 anyTagSelection.setChecked(val);\r
418         }\r
419 \r
420 \r
421         //*****************************************\r
422         //* Include a tag's child when selecting a parent\r
423         //*****************************************\r
424         public boolean getIncludeTagChildren() {\r
425                 return includeTagChildren.isChecked();\r
426         }\r
427         public void setIncludeTagChildren(boolean val) {\r
428                 includeTagChildren.setChecked(val);\r
429         }\r
430 \r
431 \r
432 }\r