sublime
areawalkers.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef SUBLIMEAREAWALKERS_H
00020 #define SUBLIMEAREAWALKERS_H
00021
00022 #include <QtCore/QList>
00023
00024
00025 namespace Sublime {
00026
00027
00028
00029 template <typename Operator>
00030 Area::WalkerMode Area::walkViewsInternal(Operator &op, AreaIndex *index)
00031 {
00032 Area::WalkerMode mode = op(index);
00033 if (mode == Area::StopWalker)
00034 return mode;
00035 else if (index->first() && index->second())
00036 {
00037 mode = walkViewsInternal(op, index->first());
00038 if (mode == Area::StopWalker)
00039 return mode;
00040 mode = walkViewsInternal(op, index->second());
00041 }
00042 return mode;
00043 }
00044
00045 template <typename Operator>
00046 void Area::walkViews(Operator &op, AreaIndex *index)
00047 {
00048 walkViewsInternal(op, index);
00049 }
00050
00051 template <typename Operator>
00052 void Area::walkToolViews(Operator &op, Positions positions)
00053 {
00054 QList<View*> currViews = toolViews();
00055 foreach (View* view, currViews)
00056 {
00057 Sublime::Position position = toolViewPosition(view);
00058 if (position & positions)
00059 if (op(view, position) == Area::StopWalker)
00060 break;
00061 }
00062 }
00063
00064 }
00065
00066 #endif
00067