⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 listviewiterators.hpp

📁 j2me is based on j2mepolish, client & server for mobile application.
💻 HPP
字号:

//         Copyright E骾n O'Callaghan 2008 - 2008.
// Distributed under the Boost Software License, Version 1.0.
//    (See accompanying file LICENSE_1_0.txt or copy at
//          http://www.boost.org/LICENSE_1_0.txt)

#ifndef LISTVIEW_ITERATORS_HPP_INCLUDED
#define LISTVIEW_ITERATORS_HPP_INCLUDED

#include <boost/iterator/filter_iterator.hpp>
#include <winstl/controls/listview_sequence.hpp>


#include "event_logger.hpp"

namespace WTLx
{

template<typename List>
class ListViewIterators
{
protected:
	winstl::listview_sequence::const_iterator const_begin()
	{
		winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
		return lv_seq.begin();
	}

	winstl::listview_sequence::const_iterator const_end()
	{
		winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
		return lv_seq.end();
	}

	struct is_selected {
	bool operator()(const winstl::listview_sequence::sequence_value_type& v) 
	{ 
		return (v.state() & LVIS_SELECTED) != 0;
	} };

	typedef boost::filter_iterator<is_selected, 
			winstl::listview_sequence::const_iterator> is_selected_iterator;

	is_selected_iterator is_selected_begin()
	{
		winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
		return make_filter_iterator<is_selected>(lv_seq.begin(), lv_seq.end());
	}

	is_selected_iterator is_selected_end()
	{
		winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
		return make_filter_iterator<is_selected>(lv_seq.end(), lv_seq.end());
	}

	struct is_checked 
	{
		is_checked(ListViewIterators* t) :
			t_(t)
		{}
		bool operator()(const winstl::listview_sequence::sequence_value_type& v) 
		{ 
			return ((static_cast<const List*>(t_))->GetCheckState(v.index()) ? true : false);
		} 
	private:
		ListViewIterators* t_;
	};

	typedef boost::filter_iterator<is_checked, 
			winstl::listview_sequence::const_iterator> is_checked_iterator;

	is_checked_iterator is_checked_begin()
	{
		winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
		return make_filter_iterator<is_checked>(is_checked(this), lv_seq.begin(), lv_seq.end());
	}

	is_checked_iterator is_checked_end()
	{
		winstl::listview_sequence lv_seq(*(static_cast<List*>(this)));
		return make_filter_iterator<is_checked>(is_checked(this), lv_seq.end(), lv_seq.end());
	}
};

}

#endif // LISTVIEW_ITERATORS_HPP_INCLUDED

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -