abstractlistmodel.cpp
来自「这是VCF框架的代码」· C++ 代码 · 共 243 行
CPP
243 行
//AbstractListModel.cpp/*Copyright 2000-2004 The VCF Project.Please see License.txt in the top level directorywhere you installed the VCF.*/#include "vcf/ApplicationKit/ApplicationKit.h"#include "vcf/ApplicationKit/ListItem.h"#include "vcf/ApplicationKit/AbstractListModel.h"using namespace VCF;AbstractListModel::AbstractListModel(){ listContainer_.initContainer( listItems_ );}AbstractListModel::~AbstractListModel(){ std::vector<ListItem*>::iterator it = listItems_.begin(); while ( it != listItems_.end() ){ delete *it; it ++; } listItems_.clear();}void AbstractListModel::addItem( ListItem* item ){ this->listItems_.push_back( item ); item->setIndex( listItems_.size() - 1 ); ListModelEvent event( dynamic_cast<Object*>(this), item ); ItemAdded.fireEvent( &event );}void AbstractListModel::deleteItemAtIndex( const unsigned long& index ){ ListItem* item = listItems_[index]; item->setIndex( index ); ListModelEvent event( dynamic_cast<Object*>(this), item ); ItemDeleted.fireEvent( &event ); delete item; listItems_.erase( listItems_.begin() + index );}void AbstractListModel::deleteItem( ListItem* item ){ std::vector<ListItem*>::iterator it = std::find( listItems_.begin(), listItems_.end(), item ); if ( it != listItems_.end() ){ item->setIndex( listItems_.begin() - it ); ListModelEvent event( dynamic_cast<Object*>(this), item ); ItemDeleted.fireEvent( &event ); delete *it; listItems_.erase( it ); }}void AbstractListModel::empty(){ Object* source = dynamic_cast<Object*>(this); std::vector<ListItem*>::iterator it = listItems_.begin(); ListModelEvent itemEvent( source, LIST_MODEL_ITEM_DELETED ); while ( it != listItems_.end() ){ itemEvent.setListItem( *it ); ItemDeleted.fireEvent( &itemEvent ); delete *it; it ++; } listItems_.clear(); ListModelEvent event( source, LIST_MODEL_CONTENTS_DELETED ); ContentsChanged.fireEvent( &event );}void AbstractListModel::insertItem( const unsigned long& index, ListItem* item ){ listItems_.insert( listItems_.begin() + index, item ); item->setIndex( index ); ListModelEvent event( dynamic_cast<Object*>(this), item ); ItemAdded.fireEvent( &event );}ListItem* AbstractListModel::getItemFromIndex( const unsigned long& index ){ ListItem* result = NULL; if ( index < listItems_.size() ){ result = listItems_[index]; } return result;}ulong32 AbstractListModel::getItemIndex( ListItem* item ){ std::vector<ListItem*>::iterator found = std::find( listItems_.begin(), listItems_.end(), item ); if ( found != listItems_.end() ) { return ( found - listItems_.begin() ); } return 0;}Enumerator<ListItem*>* AbstractListModel::getItems(){ return listContainer_.getEnumerator();}unsigned long AbstractListModel::getCount(){ return this->listItems_.size();}void AbstractListModel::saveToStream( OutputStream * stream ){ Enumerator<ListItem*>* items = this->getItems(); long count = this->getCount(); stream->write( count ); while ( items->hasMoreElements() ){ ListItem* item = items->nextElement(); if ( NULL != item ){ Persistable* persistableItem = dynamic_cast<Persistable*>(item); if ( NULL != persistableItem ){ stream->write( persistableItem ); } else { String caption = item->getCaption(); stream->write( caption ); } } }}void AbstractListModel::loadFromStream( InputStream * stream ){ long count = 0; stream->read( count ); for (int i=0;i<count;i++){ String s = ""; stream->read( s ); }}/***CVS Log info*$Log$*Revision 1.3 2004/12/01 04:31:19 ddiego*merged over devmain-0-6-6 code. Marcello did a kick ass job*of fixing a nasty bug (1074768VCF application slows down modal dialogs.)*that he found. Many, many thanks for this Marcello.**Revision 1.2.2.1 2004/09/21 23:41:23 ddiego*made some big changes to how the base list, tree, text, table, and tab models are laid out. They are not just plain interfaces. The actual*concrete implementations of them now derive from BOTH Model and the specific*tree, table, etc model interface.*Also made some fixes to the way the text input is handled for a text control.*We now process on a character by character basis and modify the model one*character at a time. Previously we were just using brute force and setting*the whole models text. This is more efficent, though its also more complex.**Revision 1.2 2004/08/07 02:49:05 ddiego*merged in the devmain-0-6-5 branch to stable**Revision 1.1.2.2 2004/04/29 03:43:12 marcelloptr*reformatting of source files: macros and csvlog and copyright sections**Revision 1.1.2.1 2004/04/28 00:28:13 ddiego*migration towards new directory structure**Revision 1.16 2004/04/03 15:48:43 ddiego*Merged over code from the 0-6-3 branch.**Revision 1.15.6.2 2004/02/12 14:39:09 marcelloptr*added member function getItemIndex**Revision 1.15 2003/05/17 20:37:45 ddiego*this is the checkin for the 0.6.1 release - represents the merge over from*the devmain-0-6-0 branch plus a few minor bug fixes**Revision 1.14.2.2 2003/03/23 03:23:59 marcelloptr*3 empty lines at the end of the files**Revision 1.14.2.1 2003/03/12 03:12:55 ddiego*switched all member variable that used the "m_"<name> prefix to* <name>"_" suffix nameing standard.*Also changed all vcf builder files to accomadate this.*Changes were made to the Stream classes to NOT multiple inheritance and to*be a little more correct. Changes include breaking the FileStream into two*distinct classes, one for input and one for output.**Revision 1.14 2003/02/26 04:30:53 ddiego*merge of code in the devmain-0-5-9 branch into the current tree.*most additions are in the area of the current linux port, but the major*addition to this release is the addition of a Condition class (currently*still under development) and the change over to using the Delegate class*exclusively from the older event handler macros.**Revision 1.13.14.4 2003/02/24 05:42:19 ddiego*moved the code for the VariantData calss into it's own header*migrated to the new event style using Delegates instead of relying on*the ugly macros that we were using before - same functionality though*made sure everything still works and compiles, including neccessary*changes in the VCF Builder so that it creates code in the new style*This changes to teh new style of using Delegates completes task 58837**Revision 1.13.14.3 2003/01/08 00:19:56 marcelloptr*mispellings and newlines at the end of all source files**Revision 1.13.14.2 2002/12/27 23:04:58 marcelloptr*Improved macros for automatic import/export of libraries. - Warning fixes. - Other Minor Changes.**Revision 1.13.14.1 2002/12/02 00:38:36 ddiego*more fixes to get the ApplicationKit to compile under mingw. Everything now*compiles OK at this point.**Revision 1.13 2002/05/09 03:10:45 ddiego*merged over code from development branch devmain-0-5-1a into the main CVS trunk**Revision 1.12.4.2 2002/04/27 15:52:38 ddiego*Changed a bunch of files include and made it a bit faster and added better include*guards in the common headers**Revision 1.12.4.1 2002/04/08 20:55:31 zzack*changed include style**Revision 1.12 2002/03/01 01:02:53 ddiego*fixes bug [ 524006 ] TreeListControl crash*makes some changes to model classes to utilize event types better**Revision 1.11 2002/01/24 01:46:50 ddiego*added a cvs "log" comment to the top of all files in vcf/src and vcf/include*to facilitate change tracking**/
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?