This commit is contained in:
2024-08-07 09:16:27 -04:00
parent fdfadd5c7e
commit 5f971cf684
5200 changed files with 731717 additions and 0 deletions

95
splitter/NewsTree.cpp Normal file
View File

@@ -0,0 +1,95 @@
#include <splitter/NewsTree.hpp>
#include <common/file.hpp>
#include <common/qsort.hpp>
NewsTree::NewsTree(GUIWindow &parentWindow,const Rect &winRect,int controlID)
: FolderTree(parentWindow,winRect,controlID)
{
mSelChangedHandler.setCallback(this,&NewsTree::selChangedHandler);
mSelChangingHandler.setCallback(this,&NewsTree::selChangingHandler);
mItemExpandingHandler.setCallback(this,&NewsTree::itemExpandingHandler);
mItemExpandedHandler.setCallback(this,&NewsTree::itemExpandedHandler);
mBeginDragHandler.setCallback(this,&NewsTree::beginDragHandler);
insertHandler(FolderTree::SelChangedHandler,&mSelChangedHandler);
insertHandler(FolderTree::SelChangingHandler,&mSelChangingHandler);
insertHandler(FolderTree::ItemExpandingHandler,&mItemExpandingHandler);
insertHandler(FolderTree::ItemExpandedHandler,&mItemExpandedHandler);
insertHandler(FolderTree::BeginDragHandler,&mBeginDragHandler);
addItems();
}
NewsTree::~NewsTree()
{
}
CallbackData::ReturnType NewsTree::selChangedHandler(CallbackData &cbData)
{
String currentSelection;
::OutputDebugString("MainFrame::selChangedHandler\n");
currentSelection=this->currentSelection();
ItemType itemType=getItemType(cbData.lParam());
if(GroupNode==itemType)::OutputDebugString("GroupNode");
else if(RootNode==itemType)::OutputDebugString("RootNode");
else if(NewsNode==itemType)::OutputDebugString("NewsNode");
return false;
}
CallbackData::ReturnType NewsTree::selChangingHandler(CallbackData &cbData)
{
::OutputDebugString("MainFrame::selChangingHandler\n");
return false;
}
CallbackData::ReturnType NewsTree::itemExpandingHandler(CallbackData &cbData)
{
::OutputDebugString("MainFrame::itemExpandingHandler\n");
return false;
}
CallbackData::ReturnType NewsTree::itemExpandedHandler(CallbackData &cbData)
{
::OutputDebugString("MainFrame::itemExpandedHandler\n");
return false;
}
CallbackData::ReturnType NewsTree::beginDragHandler(CallbackData &cbData)
{
::OutputDebugString("MainFrame::beginDragHandler\n");
return false;
}
// ********************************************************************************
void NewsTree::addItems()
{
Block<String> groupNames;
TreeView::NodeType nodeType;
String rootNodeName("news.optonline.net");
addRootNode(0,rootNodeName,makeItemID(RootNode,0));
loadGroups(groupNames);
for(int index=0;index<groupNames.size();index++)
{
if(!index)nodeType=TreeView::NodeChild;
else nodeType=TreeView::NodeSibling;
String item(groupNames[index]);
TreeViewItem insertItem(0,0,0,0,(char*)item.str(),item.length(),FolderTree::FolderClosed,FolderTree::FolderOpen,0,makeItemID(GroupNode,index+1));
addNode(nodeType,insertItem,rootNodeName);
}
}
void NewsTree::loadGroups(Block<String> &strLines)
{
QuickSort<String> stringSorter;
File inFile("newssrc","rb");
String strLine;
int max=4;
int count=0;
if(!inFile.isOkay())return;
strLines.remove();
while(inFile.readLine(strLine)&&count++<max)strLines.insert(&strLine);
stringSorter.sortItems(strLines);
}