Develop and Download Open Source Software

Browse CVS Repository

Contents of /tombo/Tombo/Src/BookMark.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.9 - (show annotations) (download) (as text)
Wed Sep 6 17:25:10 2006 UTC (17 years, 7 months ago) by hirami
Branch: MAIN
CVS Tags: Tombo_2_0b2, Tombo_2_0b3, Tombo_2_0b1, Tombo_2_0b4, B228, B229, B226, B227, B231, B230, HEAD
Changes since 1.8: +4 -2 lines
File MIME type: text/x-c++src
* disable open note when starting.
- support menubar label's L9N.
- FIX: Menu checking is not worked.(WM5)

1 #include <windows.h>
2 #include <tchar.h>
3 #include "Tombo.h"
4 #include "VarBuffer.h"
5 #include "TString.h"
6 #include "TomboURI.h"
7 #include "UniConv.h"
8 #include "BookMark.h"
9
10 #include "Repository.h"
11
12 ////////////////////////////////////
13 // ctor & dtor
14 ////////////////////////////////////
15
16 BookMark::BookMark()
17 {
18 }
19
20 BookMark::~BookMark()
21 {
22 Clear();
23 }
24
25 BOOL BookMark::Init(WORD nBaseID)
26 {
27 nBookMarkIDBase = nMaxBookMarkID = nBaseID;
28 return vBookMark.Init(10, 10);
29 }
30
31 /////////////////////////////////////////
32 // Clear current bookmarks
33 /////////////////////////////////////////
34
35 void BookMark::Clear()
36 {
37 DWORD n = vBookMark.NumItems();
38 for (DWORD i = 0; i < n; i++) {
39 BookMarkItem *p = vBookMark.GetUnit(i);
40
41 delete [] p->pPath;
42 delete [] p->pName;
43 }
44 vBookMark.Clear(TRUE);
45 nMaxBookMarkID = nBookMarkIDBase;
46 }
47
48
49 /////////////////////////////////////////
50 // check the ID is assigned to bookmark?
51 /////////////////////////////////////////
52
53 BOOL BookMark::IsBookMarkID(WORD nID)
54 {
55 return nBookMarkIDBase <= nID && nID < nMaxBookMarkID;
56 }
57
58 /////////////////////////////////////////
59 // Allocate book mark
60 /////////////////////////////////////////
61
62 const BookMarkItem *BookMark::Assign(LPCTSTR pPath)
63 {
64 // get headline
65 TString sTitle;
66
67 TomboURI tURI;
68 if (!tURI.Init(pPath)) return NULL;
69 if (!g_Repository.GetHeadLine(&tURI, &sTitle)) return NULL;
70
71 BookMarkItem bi;
72
73 bi.nID = nMaxBookMarkID;
74 bi.pName = StringDup(sTitle.Get());
75 bi.pPath = StringDup(pPath);
76
77 if (!vBookMark.Add(&bi)) return NULL;
78
79 nMaxBookMarkID++;
80 return vBookMark.GetUnit(vBookMark.NumItems() - 1);
81 }
82
83 /////////////////////////////////////////
84 // Find bookmark
85 /////////////////////////////////////////
86
87 const BookMarkItem *BookMark::Find(WORD nID)
88 {
89 BookMarkItem *p = NULL;
90 DWORD n = vBookMark.NumItems();
91 for (DWORD i = 0; i < n; i++) {
92 if (vBookMark.GetUnit(i)->nID == nID) {
93 p = vBookMark.GetUnit(i);
94 break;
95 }
96 }
97 return p;
98 }
99
100 /////////////////////////////////////////
101 // enum bookmarks
102 /////////////////////////////////////////
103
104 DWORD BookMark::NumItems()
105 {
106 return vBookMark.NumItems();
107 }
108
109 const BookMarkItem *BookMark::GetUnit(DWORD n)
110 {
111 return vBookMark.GetUnit(n);
112 }
113
114
115 /////////////////////////////////////////
116 // import
117 /////////////////////////////////////////
118 // for read from registry
119
120 BOOL BookMark::ImportFromMultiSZ(LPCTSTR pBookMarks)
121 {
122 // release current bookmarks
123 Clear();
124
125 // load bookmarks
126 LPCTSTR p = pBookMarks;
127 while(*p) {
128 if (*p == TEXT('\\') && *(p+1) == TEXT('\0')) {
129 if (!Assign(TEXT(""))) return FALSE;
130 } else {
131 if (!Assign(p)) return FALSE;
132 }
133 p += _tcslen(p) + 1;
134 }
135
136 return TRUE;
137 }
138
139 /////////////////////////////////////////
140 // export
141 /////////////////////////////////////////
142 // for write to registry
143
144 LPTSTR BookMark::ExportToMultiSZ()
145 {
146 DWORD nSize = 0;
147
148 DWORD i;
149
150 BookMarkItem *p = NULL;
151 DWORD n = vBookMark.NumItems();
152 for (i = 0; i < n; i++) {
153 p = vBookMark.GetUnit(i);
154
155 if (_tcslen(p->pPath) == 0) {
156 // root node
157 nSize++;
158 }
159
160 nSize += _tcslen(p->pPath) + 1;
161 }
162 nSize++;
163
164 LPTSTR pMarks = new TCHAR[nSize];
165 if (pMarks == NULL) return NULL;
166
167 LPTSTR pCur = pMarks;
168 for (i = 0; i < n; i++) {
169 p = vBookMark.GetUnit(i);
170
171 if (_tcslen(p->pPath) == 0) {
172 *pCur++ = TEXT('\\');
173 *pCur++ = TEXT('\0');
174 } else {
175 _tcscpy(pCur, p->pPath);
176 pCur += _tcslen(p->pPath) + 1;
177 }
178 }
179 *pCur = TEXT('\0');
180
181 return pMarks;
182 }

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26