private
{ Private \90é\8c¾ }
FAbEnd: Boolean;
- FStack: TStack;
FTreeView: TTreeView;
FModified: boolean;
- procedure ReadNode(Node: IXMLNode);
+ procedure ReadNode(Node: IXMLNode; Stack: TStack; TreeView: TTreeView);
procedure AddSaveString(Node: TTreeNode; SaveList: TStringList);
public
{ Public \90é\8c¾ }
i: Integer;
FavFolder: TFavoriteFolder;
LinkExists: Boolean;
+ Stack: TStack;
begin
FABend := False;
LoadXMLDocument(FileName, XMLDoc);
XMLNode := XMLDoc.DocumentElement;
- FStack := TStack.Create;
+ Stack := TStack.Create;
try
- FStack.Push(Node);
+ Stack.Push(Node);
LinkExists := False;
if XMLNode.NodeName = 'favorite' then begin
for i := XMLNode.ChildNodes.Count - 1 downto 0 do begin
- ReadNode(XMLNode.ChildNodes[i]);
+ ReadNode(XMLNode.ChildNodes[i], Stack, FTreeView);
if (XMLNode.ChildNodes[i].NodeName = 'folder') and
(XMLNode.ChildNodes[i].Attributes['title'] = FAVORITE_LINK_NAME) then begin
LinkExists := True;
end;
finally
- FStack.Free;
+ Stack.Free;
XMLDoc.Free;
end;
except
end;
end;
-{
- 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;}
end;
-procedure TFavoriteDM.ReadNode(Node: IXMLNode);
+procedure TFavoriteDM.ReadNode(Node: IXMLNode; Stack: TStack; TreeView: TTreeView);
var
i: Integer;
threadItem : TThreadItem;
begin
if Node.NodeName = 'folder' then begin
- ParentNode := FStack.Peek;
+ CurrentNode := nil;
+ ParentNode := Stack.Peek;
if TObject(ParentNode.Data) is TFavoriteFolder then begin
FavFolder := TFavoriteFolder.Create;
- CurrentNode := FTreeView.Items.AddChildObjectFirst(ParentNode, Node.Attributes['title'], FavFolder);
+ CurrentNode := TreeView.Items.AddChildObjectFirst(ParentNode, Node.Attributes['title'], FavFolder);
CurrentNode.ImageIndex := 14;
CurrentNode.SelectedIndex := 14;
- FStack.Push(CurrentNode);
+ Stack.Push(CurrentNode);
end;
for i := Node.ChildNodes.Count - 1 downto 0 do begin
- ReadNode(Node.ChildNodes[i]);
+ ReadNode(Node.ChildNodes[i], Stack, TreeView);
end;
- if TObject(ParentNode.Data) is TFavoriteFolder then
+ if CurrentNode <> nil then
CurrentNode.Expanded := Node.Attributes[ 'expanded' ] = 'true';
- if FStack.Count <> 0 then
- FStack.Pop;
+ if Stack.Count <> 0 then
+ Stack.Pop;
end else if Node.NodeName = 'favitem' then begin
try
- ParentNode := FStack.Peek;
+ ParentNode := Stack.Peek;
if TObject(ParentNode.Data) is TFavoriteFolder then begin
if Node.Attributes['favtype'] = 'board' then begin
FavBoard := nil;
FavBoard := TFavoriteBoardItem.Create(
Node.Attributes[ 'url' ], MojuUtils.UnSanitize(Node.Attributes[ 'title' ]), nil );
end;
- CurrentNode := FTreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavBoard);
+ CurrentNode := TreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavBoard);
CurrentNode.ImageIndex := 15;
CurrentNode.SelectedIndex := 15;
end else if Node.Attributes['favtype'] = 'thread' then begin
FavThread := TFavoriteThreadItem.Create(
Node.Attributes[ 'url' ], UnSanitize(Node.Attributes[ 'title' ]), nil );
end;
- CurrentNode := FTreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavThread);
+ CurrentNode := TreeView.Items.AddChildObjectFirst(ParentNode, UnSanitize(Node.Attributes['title']), FavThread);
CurrentNode.ImageIndex := 16;
CurrentNode.SelectedIndex := 16;
end;