96 lines
2.9 KiB
C++
96 lines
2.9 KiB
C++
#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);
|
|
}
|
|
|