| 953 | } |
| 954 | |
| 955 | bool DeviceView::selectSegment(int zone, int segment, bool add) |
| 956 | { |
| 957 | if(zone < 0 || size_t(zone) >= controller->zones.size()) |
| 958 | { |
| 959 | return false; |
| 960 | } |
| 961 | |
| 962 | if(segment < 0 || size_t(segment) >= controller->zones[zone].segments.size()) |
| 963 | { |
| 964 | return false; |
| 965 | } |
| 966 | |
| 967 | if(!add) |
| 968 | { |
| 969 | selectedLeds.clear(); |
| 970 | selectionFlags.clear(); |
| 971 | selectionFlags.resize(controller->leds.size()); |
| 972 | } |
| 973 | |
| 974 | int zoneStart = controller->zones[zone].start_idx; |
| 975 | int segStart = controller->zones[zone].segments[segment].start_idx; |
| 976 | |
| 977 | for(std::size_t led_idx = 0; led_idx < controller->zones[zone].segments[segment].leds_count; ++led_idx) |
| 978 | { |
| 979 | if(!selectionFlags[zoneStart + segStart + led_idx]) |
| 980 | { |
| 981 | selectedLeds.push_back(zoneStart + segStart + led_idx); |
| 982 | selectionFlags[zoneStart + segStart + led_idx] = 1; |
| 983 | } |
| 984 | } |
| 985 | |
| 986 | update(); |
| 987 | |
| 988 | /*-----------------------------------------------------*\ |
| 989 | | Send selection changed signal | |
| 990 | \*-----------------------------------------------------*/ |
| 991 | emit selectionChanged(selectedLeds); |
| 992 | |
| 993 | return true; |
| 994 | } |
| 995 | |
| 996 | bool DeviceView::selectZone(int zone, bool add) |
| 997 | { |
no test coverage detected