| 48 |
private |
private |
| 49 |
{ Private 宣言 } |
{ Private 宣言 } |
| 50 |
FAbEnd: Boolean; |
FAbEnd: Boolean; |
|
FStack: TStack; |
|
| 51 |
FTreeView: TTreeView; |
FTreeView: TTreeView; |
| 52 |
FModified: boolean; |
FModified: boolean; |
| 53 |
procedure ReadNode(Node: IXMLNode); |
procedure ReadNode(Node: IXMLNode; Stack: TStack; TreeView: TTreeView); |
| 54 |
procedure AddSaveString(Node: TTreeNode; SaveList: TStringList); |
procedure AddSaveString(Node: TTreeNode; SaveList: TStringList); |
| 55 |
public |
public |
| 56 |
{ Public 宣言 } |
{ Public 宣言 } |
| 287 |
i: Integer; |
i: Integer; |
| 288 |
FavFolder: TFavoriteFolder; |
FavFolder: TFavoriteFolder; |
| 289 |
LinkExists: Boolean; |
LinkExists: Boolean; |
| 290 |
|
Stack: TStack; |
| 291 |
begin |
begin |
| 292 |
FABend := False; |
FABend := False; |
| 293 |
|
|
| 306 |
LoadXMLDocument(FileName, XMLDoc); |
LoadXMLDocument(FileName, XMLDoc); |
| 307 |
XMLNode := XMLDoc.DocumentElement; |
XMLNode := XMLDoc.DocumentElement; |
| 308 |
|
|
| 309 |
FStack := TStack.Create; |
Stack := TStack.Create; |
| 310 |
try |
try |
| 311 |
FStack.Push(Node); |
Stack.Push(Node); |
| 312 |
LinkExists := False; |
LinkExists := False; |
| 313 |
if XMLNode.NodeName = 'favorite' then begin |
if XMLNode.NodeName = 'favorite' then begin |
| 314 |
for i := XMLNode.ChildNodes.Count - 1 downto 0 do begin |
for i := XMLNode.ChildNodes.Count - 1 downto 0 do begin |
| 315 |
ReadNode(XMLNode.ChildNodes[i]); |
ReadNode(XMLNode.ChildNodes[i], Stack, FTreeView); |
| 316 |
if (XMLNode.ChildNodes[i].NodeName = 'folder') and |
if (XMLNode.ChildNodes[i].NodeName = 'folder') and |
| 317 |
(XMLNode.ChildNodes[i].Attributes['title'] = FAVORITE_LINK_NAME) then begin |
(XMLNode.ChildNodes[i].Attributes['title'] = FAVORITE_LINK_NAME) then begin |
| 318 |
LinkExists := True; |
LinkExists := True; |
| 327 |
end; |
end; |
| 328 |
|
|
| 329 |
finally |
finally |
| 330 |
FStack.Free; |
Stack.Free; |
| 331 |
XMLDoc.Free; |
XMLDoc.Free; |
| 332 |
end; |
end; |
| 333 |
except |
except |
| 337 |
end; |
end; |
| 338 |
end; |
end; |
| 339 |
|
|
|
{ |
|
|
FavFolder := TFavoriteFolder.Create; |
|
|
Node := FTreeView.Items.AddChildObjectFirst(nil, FAVORITE_ROOT_NAME, FavFolder); |
|
|
Node.ImageIndex := 12; |
|
|
Node.SelectedIndex := 13; |
|
|
|
|
|
FileName := GikoSys.GetConfigDir + FAVORITE_FILE_NAME; |
|
|
if not FileExists(FileName) then |
|
|
Exit; |
|
|
|
|
|
FavSAXHandler.OnStartDocument := SAXStartDocument; |
|
|
FavSAXHandler.OnEndDocument := SAXEndDocument; |
|
|
FavSAXHandler.OnStartElement := SAXStartElement; |
|
|
FavSAXHandler.OnStartElement := SAXStartElement; |
|
|
FavSAXHandler.OnEndElement := SAXEndElement; |
|
|
FavSAXHandler.OnCharacters := SAXCharacters; |
|
|
|
|
|
FavSAXReader.Vendor := 'Keith Wood'; |
|
|
FavSAXReader.URL := FileName; |
|
|
FavSAXReader.Parse;} |
|
| 340 |
end; |
end; |
| 341 |
|
|
| 342 |
procedure TFavoriteDM.ReadNode(Node: IXMLNode); |
procedure TFavoriteDM.ReadNode(Node: IXMLNode; Stack: TStack; TreeView: TTreeView); |
| 343 |
var |
var |
| 344 |
i: Integer; |
i: Integer; |
| 345 |
|
|
| 352 |
threadItem : TThreadItem; |
threadItem : TThreadItem; |
| 353 |
begin |
begin |
| 354 |
if Node.NodeName = 'folder' then begin |
if Node.NodeName = 'folder' then begin |
| 355 |
ParentNode := FStack.Peek; |
CurrentNode := nil; |
| 356 |
|
ParentNode := Stack.Peek; |
| 357 |
if TObject(ParentNode.Data) is TFavoriteFolder then begin |
if TObject(ParentNode.Data) is TFavoriteFolder then begin |
| 358 |
FavFolder := TFavoriteFolder.Create; |
FavFolder := TFavoriteFolder.Create; |
| 359 |
CurrentNode := FTreeView.Items.AddChildObjectFirst(ParentNode, Node.Attributes['title'], FavFolder); |
CurrentNode := TreeView.Items.AddChildObjectFirst(ParentNode, Node.Attributes['title'], FavFolder); |
| 360 |
CurrentNode.ImageIndex := 14; |
CurrentNode.ImageIndex := 14; |
| 361 |
CurrentNode.SelectedIndex := 14; |
CurrentNode.SelectedIndex := 14; |
| 362 |
FStack.Push(CurrentNode); |
Stack.Push(CurrentNode); |
| 363 |
end; |
end; |
| 364 |
for i := Node.ChildNodes.Count - 1 downto 0 do begin |
for i := Node.ChildNodes.Count - 1 downto 0 do begin |
| 365 |
ReadNode(Node.ChildNodes[i]); |
ReadNode(Node.ChildNodes[i], Stack, TreeView); |
| 366 |
end; |
end; |
| 367 |
if TObject(ParentNode.Data) is TFavoriteFolder then |
if CurrentNode <> nil then |
| 368 |
CurrentNode.Expanded := Node.Attributes[ 'expanded' ] = 'true'; |
CurrentNode.Expanded := Node.Attributes[ 'expanded' ] = 'true'; |
| 369 |
if FStack.Count <> 0 then |
if Stack.Count <> 0 then |
| 370 |
FStack.Pop; |
Stack.Pop; |
| 371 |
end else if Node.NodeName = 'favitem' then begin |
end else if Node.NodeName = 'favitem' then begin |
| 372 |
try |
try |
| 373 |
ParentNode := FStack.Peek; |
ParentNode := Stack.Peek; |
| 374 |
if TObject(ParentNode.Data) is TFavoriteFolder then begin |
if TObject(ParentNode.Data) is TFavoriteFolder then begin |
| 375 |
if Node.Attributes['favtype'] = 'board' then begin |
if Node.Attributes['favtype'] = 'board' then begin |
| 376 |
FavBoard := nil; |
FavBoard := nil; |
| 384 |
FavBoard := TFavoriteBoardItem.Create( |
FavBoard := TFavoriteBoardItem.Create( |
| 385 |
Node.Attributes[ 'url' ], MojuUtils.UnSanitize(Node.Attributes[ 'title' ]), nil ); |
Node.Attributes[ 'url' ], MojuUtils.UnSanitize(Node.Attributes[ 'title' ]), nil ); |
| 386 |
end; |
end; |
| 387 |
CurrentNode := FTreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavBoard); |
CurrentNode := TreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavBoard); |
| 388 |
CurrentNode.ImageIndex := 15; |
CurrentNode.ImageIndex := 15; |
| 389 |
CurrentNode.SelectedIndex := 15; |
CurrentNode.SelectedIndex := 15; |
| 390 |
end else if Node.Attributes['favtype'] = 'thread' then begin |
end else if Node.Attributes['favtype'] = 'thread' then begin |
| 412 |
FavThread := TFavoriteThreadItem.Create( |
FavThread := TFavoriteThreadItem.Create( |
| 413 |
Node.Attributes[ 'url' ], UnSanitize(Node.Attributes[ 'title' ]), nil ); |
Node.Attributes[ 'url' ], UnSanitize(Node.Attributes[ 'title' ]), nil ); |
| 414 |
end; |
end; |
| 415 |
CurrentNode := FTreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavThread); |
CurrentNode := TreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavThread); |
| 416 |
CurrentNode.ImageIndex := 16; |
CurrentNode.ImageIndex := 16; |
| 417 |
CurrentNode.SelectedIndex := 16; |
CurrentNode.SelectedIndex := 16; |
| 418 |
end; |
end; |