OSDN Git Service

moved from CVS
[tombo/Tombo.git] / Src / Property.h
1 #ifndef PROPERTY_H\r
2 #define PROPERTY_H\r
3 \r
4 #include <commctrl.h>\r
5 \r
6 #define MAX_DATEFORMAT_LEN 256\r
7 \r
8 ////////////////////////////////////\r
9 // property index\r
10 ////////////////////////////////////\r
11 \r
12 #define PROP_N_PASSTIMEOUT                               0\r
13 #define PROP_N_DETAILSVIEW_KEEPCARET     1\r
14 #define PROP_NDETAILSVIEW_TABSTOP                2\r
15 #define PROP_N_SELECTVIEW_FONTSIZE               3\r
16 #define PROP_N_SELECTVIEW_FONTQUALITY    4\r
17 #define PROP_N_DETAILSVIEW_FONTSIZE              5\r
18 #define PROP_N_DETAILSVIEW_FONTQUALITY   6\r
19 #define PROP_N_AUTOSELECT_MODE                   7\r
20 #define PROP_N_SINGLECLICK_MODE                  8\r
21 #define PROP_N_USE_TWO_PANE                              9\r
22 #define PROP_N_SWITCH_WINDOW_TITLE              10\r
23 #define PROP_N_KEEP_TITLE                               11\r
24 #define PROP_N_APP_BUTTON1                              12\r
25 #define PROP_N_APP_BUTTON2                              13\r
26 #define PROP_N_APP_BUTTON3                              14\r
27 #define PROP_N_APP_BUTTON4                              15\r
28 #define PROP_N_APP_BUTTON5                              16\r
29 #define PROP_N_CODEPAGE                                 17\r
30 #define PROP_N_DISABLEEXTRAACTIONBUTTON 18      // PKTPC\r
31 #define PROP_N_SIPSIZE_DELTA                    19      // PKTPC\r
32 #define PROP_N_HIDESTATUSBAR                    20      // HPC, WIN32\r
33 #define PROP_N_STAYTOPMOST                              21      // WIN32\r
34 #define PROP_N_HIDEREBAR                                22      // WIN32\r
35 #define PROP_N_WRAPTEXT                                 23\r
36 #define PROP_N_OPENREADONLY                             24\r
37 #define PROP_N_DISABLESAVEDLG                   25\r
38 #define PROP_N_USEASSOC                                 26\r
39 #define PROP_N_SAFEFILENAME                             27\r
40 #define PROP_N_TOMBO_WINSIZE3                   28      // PKTPCVGA\r
41 #define PROP_N_KEEP_LAST_OPEN                   29\r
42 #define PROP_N_USE_YAE                                  30\r
43 #define PROP_N_DISABLE_YAE              31\r
44 \r
45 #define NUM_PROPS_NUM 32\r
46 \r
47 #define PROP_S_TOPDIR                                    0\r
48 #define PROP_S_SELECTVIEW_FONTNAME               1\r
49 #define PROP_S_DETAILSVIEW_FONTNAME              2\r
50 #define PROP_S_DETAILSVIEW_DATEFORMAT1   3\r
51 #define PROP_S_DETAILSVIEW_DATEFORMAT2   4\r
52 #define PROP_S_DEFAULTNOTE                               5\r
53 #define PROP_S_EXTAPP1                                   6\r
54 #define PROP_S_EXTAPP2                                   7\r
55 #define PROP_S_WINSIZE                                   8\r
56 #define PROP_S_LAST_OPEN_URI                     9\r
57 \r
58 #define NUM_PROPS_STR 10\r
59 \r
60 // file encoding related defs\r
61 #define TOMBO_CP_DEFAULT            0\r
62 #define TOMBO_CP_UTF16LE         1200   // UTF-16LE\r
63 #define TOMBO_CP_UTF8           65001   // UTF-8\r
64 #define TOMBO_CP_GREEK           1253   // Greek\r
65 \r
66 ////////////////////////////////////\r
67 // accessor generation macros\r
68 ////////////////////////////////////\r
69 \r
70 #define STR_ACCESSOR(NAME, ATTR) \\r
71         LPCTSTR Get##NAME##() { return pPropsStr[ATTR]; }\\r
72         BOOL Set##NAME##(LPCTSTR pDir) { return SetStringProperty(ATTR, pDir); }\r
73 \r
74 #define NUM_ACCESSOR(NAME, ATTR) \\r
75         DWORD Get##NAME##() { return nPropsNum[ATTR]; }\\r
76         void Set##NAME##(DWORD n) { nPropsNum[ATTR] = n; }\r
77 \r
78 #define NUM_ACCESSOR_DECL(NAME) \\r
79         DWORD Get##NAME##();\\r
80         void Set##NAME##(DWORD n);\r
81 \r
82 class File;\r
83 class TomboURI;\r
84 class RepositoryImpl;\r
85 class LocalFileRepository;\r
86 \r
87 ////////////////////////////////////\r
88 // Property data\r
89 ////////////////////////////////////\r
90 \r
91 class Property {\r
92 \r
93         // internal status\r
94         BOOL bLoad;\r
95         BOOL bNeedAsk;\r
96 \r
97         // persistent props\r
98         DWORD nPropsNum[NUM_PROPS_NUM];\r
99         LPTSTR pPropsStr[NUM_PROPS_STR];\r
100 \r
101         LPTSTR pBookMark;\r
102         LPTSTR pSearchHistory;\r
103         LPTSTR pTopDirHistory;\r
104 \r
105 #if defined(PLATFORM_HPC)\r
106         LPCOMMANDBANDSRESTOREINFO pCmdBarInfo;\r
107 #endif\r
108 \r
109         // not persistent props\r
110         LPTSTR pCmdlineAssignedTopDir;\r
111 \r
112         // internal helper funcs \r
113         BOOL SetStringProperty(DWORD nPropId, LPCTSTR pValue);\r
114 \r
115         BOOL SaveToFile(File *pFile);\r
116         BOOL LoadFromReg(BOOL *pStrict);\r
117         BOOL LoadProperties();\r
118         BOOL LoadDefaultProperties();\r
119 \r
120         RepositoryImpl **pRepos;\r
121         LocalFileRepository *pDefaultRep;\r
122         DWORD nNumRepos;\r
123 \r
124 public:\r
125         Property();\r
126         ~Property();\r
127 \r
128         /////////////////////////////////\r
129         // set default props\r
130 \r
131         BOOL SetDefaultROMode(BOOL) {return TRUE; }\r
132         BOOL SetCmdLineAssignedTomboRoot(LPCTSTR p, DWORD nLen);\r
133 \r
134         /////////////////////////////////\r
135         // accessor\r
136 \r
137         // Repository related\r
138         DWORD GetNumSubRepository() { return nNumRepos; }\r
139         // Clone RepsitoryImpl and return it\r
140         RepositoryImpl *GetSubRepository(DWORD nIndex);\r
141 \r
142         // startup related\r
143 \r
144         STR_ACCESSOR(TopDir, PROP_S_TOPDIR)             // TOMBO root directory\r
145         // GetTomboRoot \r
146         LPCTSTR GetTomboRoot();\r
147 \r
148         NUM_ACCESSOR_DECL(KeepCaret) // whether keep caret position or not\r
149         NUM_ACCESSOR_DECL(UseSafeFileName)      // change crypted file name random\r
150         NUM_ACCESSOR_DECL(KeepTitle) // keep file name even if headline has changed\r
151 \r
152         STR_ACCESSOR(LastOpenURI, PROP_S_LAST_OPEN_URI) // notes store folder\r
153         NUM_ACCESSOR(KeepLastOpen, PROP_N_KEEP_LAST_OPEN)       // when starting, the note last open is opened.\r
154         STR_ACCESSOR(DefaultNote, PROP_S_DEFAULTNOTE)   // use this uri when starting tombo\r
155 \r
156         // font related\r
157         STR_ACCESSOR(SelectViewFontName, PROP_S_SELECTVIEW_FONTNAME)\r
158         NUM_ACCESSOR(SelectViewFontSize, PROP_N_SELECTVIEW_FONTSIZE)    // selectview font size\r
159         NUM_ACCESSOR(SelectViewFontQuality, PROP_N_SELECTVIEW_FONTQUALITY) // do use selectview ClearType font?\r
160         STR_ACCESSOR(DetailsViewFontName, PROP_S_DETAILSVIEW_FONTNAME)\r
161         NUM_ACCESSOR(DetailsViewFontSize, PROP_N_DETAILSVIEW_FONTSIZE)  // editview font size\r
162         NUM_ACCESSOR(DetailsViewFontQuality, PROP_N_DETAILSVIEW_FONTQUALITY) // do use editview ClearType font? \r
163         HFONT SelectViewFont();\r
164         HFONT DetailsViewFont();\r
165 \r
166         // editview related\r
167         STR_ACCESSOR(DateFormat1, PROP_S_DETAILSVIEW_DATEFORMAT1)\r
168         STR_ACCESSOR(DateFormat2, PROP_S_DETAILSVIEW_DATEFORMAT2)\r
169         NUM_ACCESSOR(Tabstop, PROP_NDETAILSVIEW_TABSTOP)        // tab stop\r
170         NUM_ACCESSOR(WrapText, PROP_N_WRAPTEXT) // text wrapping on editview\r
171         NUM_ACCESSOR(OpenReadOnly, PROP_N_OPENREADONLY) // always read only mode when open the nots.\r
172         NUM_ACCESSOR(DisableSaveDlg, PROP_N_DISABLESAVEDLG)     // disable asking save when closing notes\r
173         NUM_ACCESSOR(CodePage, PROP_N_CODEPAGE)         // Codepage selection\r
174 \r
175         // crypt related\r
176         NUM_ACCESSOR(PassTimeout, PROP_N_PASSTIMEOUT)   // password timeout     \r
177 \r
178         // MainFrame related\r
179         NUM_ACCESSOR(AutoSelectMemo, PROP_N_AUTOSELECT_MODE)    // display note when treeview selection is moving\r
180         NUM_ACCESSOR(SingleClick, PROP_N_SINGLECLICK_MODE)      // display note when clicking the tree item \r
181         NUM_ACCESSOR(SwitchWindowTitle, PROP_N_SWITCH_WINDOW_TITLE) // is sync window text to note's name?\r
182         NUM_ACCESSOR(UseTwoPane, PROP_N_USE_TWO_PANE) // is two pane mode?\r
183 \r
184         // extapp related\r
185         NUM_ACCESSOR(UseAssociation, PROP_N_USEASSOC)   // use default file assosiation\r
186         STR_ACCESSOR(ExtApp1, PROP_S_EXTAPP1)\r
187         STR_ACCESSOR(ExtApp2, PROP_S_EXTAPP2)\r
188 \r
189         // Use YAEDIT component. On 1.x, always FALSE.\r
190         NUM_ACCESSOR(UseYAEdit, PROP_N_USE_YAE)\r
191         NUM_ACCESSOR(DisableYAEdit, PROP_N_DISABLE_YAE)\r
192 \r
193 \r
194         NUM_ACCESSOR(AppButton1, PROP_N_APP_BUTTON1)    // application buttons\r
195         NUM_ACCESSOR(AppButton2, PROP_N_APP_BUTTON2)\r
196         NUM_ACCESSOR(AppButton3, PROP_N_APP_BUTTON3)\r
197         NUM_ACCESSOR(AppButton4, PROP_N_APP_BUTTON4)\r
198         NUM_ACCESSOR(AppButton5, PROP_N_APP_BUTTON5)\r
199 \r
200 #if defined(PLATFORM_PKTPC) || defined(PLATFORM_WM5)\r
201         NUM_ACCESSOR(SipSizeDelta, PROP_N_SIPSIZE_DELTA)\r
202 \r
203         // Disable open/close notes when action button pushed\r
204         NUM_ACCESSOR(DisableExtraActionButton, PROP_N_DISABLEEXTRAACTIONBUTTON)\r
205 \r
206 #endif\r
207 \r
208 #if defined(PLATFORM_HPC) || defined(PLATFORM_WIN32)\r
209         NUM_ACCESSOR(HideStatusBar, PROP_N_HIDESTATUSBAR)       // Hide status bar\r
210         void ToggleShowStatusBar() { nPropsNum[PROP_N_HIDESTATUSBAR] = !nPropsNum[PROP_N_HIDESTATUSBAR]; }\r
211 #else\r
212         DWORD GetHideStatusBar() { return TRUE; }\r
213         void ToggleShowStatusBar() { /* nop */ }\r
214 #endif\r
215 #if defined(PLATFORM_WIN32)\r
216         NUM_ACCESSOR(StayTopMost, PROP_N_STAYTOPMOST)   // keep tombo topmost of the window\r
217         void ToggleStayTopMost() { nPropsNum[PROP_N_STAYTOPMOST] = !nPropsNum[PROP_N_STAYTOPMOST]; }\r
218 \r
219         NUM_ACCESSOR(HideRebar, PROP_N_HIDEREBAR)       // hide rebar(toolbar)\r
220         void ToggleShowRebar() { nPropsNum[PROP_N_HIDEREBAR] = !nPropsNum[PROP_N_HIDEREBAR]; }\r
221 #endif\r
222 \r
223         // save restore main window size\r
224         BOOL SaveWinSize(UINT flags, UINT showCmd, LPRECT pWinRect, WORD nSelectViewWidth);\r
225         BOOL GetWinSize(UINT *pFlags, UINT *pShowCmd, LPRECT pWinRect, LPWORD pSelectViewWidth);\r
226 \r
227 #if (defined(PLATFORM_PKTPC) || defined(PLATFORM_WM5)) && defined(FOR_VGA)\r
228         NUM_ACCESSOR(WinSize2, PROP_N_TOMBO_WINSIZE3)   // horizontal pane size\r
229 #endif\r
230 \r
231         LPCTSTR GetBookMark() { return pBookMark; }\r
232         BOOL SetBookMark(LPCTSTR pBookMark);\r
233 \r
234         LPCTSTR GetSearchHist() { return pSearchHistory; } \r
235         void SetSearchHist(LPTSTR pHist) { delete [] pSearchHistory; pSearchHistory = pHist; }\r
236 \r
237         LPCTSTR GetTopDirHist() { return pTopDirHistory; }\r
238         void SetTopDirHist(LPTSTR pHist) { delete [] pTopDirHistory; pTopDirHistory = pHist; }\r
239 \r
240 #if defined(PLATFORM_HPC)\r
241         // save commandbar position\r
242         BOOL SetCommandbarInfo(LPCOMMANDBANDSRESTOREINFO p);\r
243         void SetCommandbarInfoWithBuffer(LPCOMMANDBANDSRESTOREINFO p) { delete [] pCmdBarInfo; pCmdBarInfo = p; }\r
244         BOOL GetCommandbarInfo(LPCOMMANDBANDSRESTOREINFO p, DWORD n);\r
245 #endif\r
246 \r
247         void SetNumberPropertyById(DWORD nId, DWORD nValue) { nPropsNum[nId] = nValue; }\r
248         void SetStringPropertyWithBuffer(DWORD nId, LPTSTR pValue) { pPropsStr[nId] = pValue; }\r
249 \r
250         /////////////////////////////////\r
251         // main op\r
252 \r
253         // popup property dialog\r
254         DWORD Popup(HINSTANCE hInst, HWND hWnd, const TomboURI *pCurrentSelectedURI);\r
255 \r
256         // load properties\r
257         BOOL Load();\r
258 \r
259         // save properties\r
260         BOOL Save();\r
261 \r
262         // check object status\r
263         BOOL IsLoaded() { return bLoad; }\r
264         BOOL IsNeedAskUser() { return bNeedAsk; }\r
265 };\r
266 \r
267 ////////////////////////////////////\r
268 // Search history\r
269 ////////////////////////////////////\r
270 \r
271 BOOL SetHistoryToComboBox(HWND hCombo, LPCTSTR pHistoryStr);\r
272 LPTSTR GetHistoryFromComboBox(HWND hCombo, LPCTSTR pSelValue, DWORD nSave);\r
273 \r
274 ////////////////////////////////////\r
275 // global var declaration\r
276 ////////////////////////////////////\r
277 extern Property g_Property;\r
278 \r
279 /////////////////////////////////////////////\r
280 // attribute name definitions\r
281 /////////////////////////////////////////////\r
282 \r
283 // some codes assumes this value is just '2'. check if this value is changed.\r
284 #define NUM_COMMANDBAR 2\r
285 \r
286 /////////////////////////////////////////////\r
287 // Code conversion related\r
288 /////////////////////////////////////////////\r
289 \r
290 LPBYTE ConvTCharToFileEncoding(LPCTSTR p, LPDWORD pSize);\r
291 \r
292 // p is assumed terminated by '\0' if encoding is MBCS/UTF-8 and L'\0' if encoding is UTF-16\r
293 LPTSTR ConvFileEncodingToTChar(LPBYTE p);\r
294 \r
295 #endif\r