SASGIS - SAS.Планета
View Issue Details
0001939SAS.ПланетаРефакторингpublic29-05-2013 14:5802-07-2013 06:46
vdemidov 
Garl 
normalminorhave not tried
resolvedfixed 
121010 
131111131111 
0001939: Сделать универсальный фрейм выбора карты
Хорошо бы сделать универсальный механизм выбора карты для всех операций с выделенной областью. Таких мест где требуется выбор карты сейчас достаточно много и код заполнения комбобоксов списком карт дублируется.

ИМХО фрейм в конструкторе должен получать:
 1. Признак возможности выбора "Нет" (То есть, нужно ли добавлять такой пункт в списке карт)
2. Тип выбираемых карт (Только карты, только слои, все подряд)
3. функцию проверки нужна ли в списке конкретная карта (function(AMapType: TMapType): boolean of object;)

+ еще объекты которые ему для работы понадобятся.

Необходимо сделать метод GetSelectedMap
Плюс, возможно метод Init
No tags attached.
related to 0002015resolved Garl Глюк на вкладке Загрузить 
Issue History
29-05-2013 14:58vdemidovNew Issue
29-05-2013 14:58vdemidovStatusnew => assigned
29-05-2013 14:58vdemidovAssigned To => Garl
29-05-2013 17:45GarlNote Added: 0011457
29-05-2013 18:07zedNote Added: 0011458
30-05-2013 10:44vdemidovNote Added: 0011463
03-06-2013 19:28GarlNote Added: 0011496
03-06-2013 19:32vdemidovNote Added: 0011497
03-06-2013 19:40vdemidovNote Added: 0011498
04-06-2013 09:52GarlNote Added: 0011499
04-06-2013 10:15vdemidovNote Added: 0011500
04-06-2013 10:21GarlNote Added: 0011501
04-06-2013 10:27vdemidovNote Added: 0011502
04-06-2013 10:47GarlNote Added: 0011503
04-06-2013 11:28vdemidovNote Added: 0011504
04-06-2013 11:30GarlNote Added: 0011505
25-06-2013 10:16GarlStatusassigned => resolved
25-06-2013 10:16GarlFixed in Version => 131111
25-06-2013 10:16GarlTarget Version24xxxx => 131111
02-07-2013 06:46vdemidovResolutionopen => fixed
11-07-2013 15:15zedRelationship addedrelated to 0002015

Notes
(0011457)
Garl   
29-05-2013 17:45   
я бы ещё добавил отбор по типу кэша и по проекции карты
(0011458)
zed   
29-05-2013 18:07   
Ну, коль:
>Ответственный Garl
так тебе и карты в руки :)
(0011463)
vdemidov   
30-05-2013 10:44   
>я бы ещё добавил отбор по типу кэша и по проекции карты
Ну я бы для начала перенес существенный функционал в фрейм, а уже потом можно допиливать новые фильтрации и тд.
(0011496)
Garl   
03-06-2013 19:28   
функция будет выдавать необходимость карты в списке в зависимости от установленного в init() фильтра (по всяким параметрам)
или я не улавливаю логики...
(0011497)
vdemidov   
03-06-2013 19:32   
В ините никаких параметров быть не должно быть. Все что касается отбора пусть в конструкторе фрейма передается.
(0011498)
vdemidov   
03-06-2013 19:40   
Ааа. Понял. Ты про функцию которую передавать в конструктор? Так в ней каждый потребитель напишет проверки, которые ему нужны.
Например:

function TfrTilesDelete.CheckIsDeleteable(AMapType: TMapType): boolean;
begin
  result := AMapType.StorageConfig.AllowDelete;
end;
(0011499)
Garl   
04-06-2013 09:52   
такс, с TfrTilesDelete может пока не заморачиваемся?
сделаем готовый и рабочий вариант для одного фрейма, а затем потихоньку будем пилить для остальных.


{ TfrMapSelect }

constructor TfrMapSelect.Create(
  const ALanguageManager: ILanguageManager;
  const AMainMapsConfig: IMainMapsConfig;
  const AGUIConfigList: IMapTypeGUIConfigList;
  const AFullMapsSet: IMapTypeSet;
  const AActiveMapGUID: TGUID;
  const AMenuFiter : TMapSelectMenuFilter
  );
в init() нет параметров, зачем он вообще тогда нужен, если можно видимость пунктов контекстного меню и в create() запилить

с функцией в конструкторе есть у нас где-нибудь рабочий пример, чтото не въезжаю в логику, надо посмортреть на рабочий вариант...
(0011500)
vdemidov   
04-06-2013 10:15   
TMapSelectMenuFilter должно быть простым перечислением на три значения (Только карты, только слои, все подряд)

>в init() нет параметров, зачем он вообще тогда нужен, если можно видимость пунктов контекстного меню и в create() запилить
Нельзя в конструкторе. Заполнение списка карт должно быть именно в init, а вызываться он должен в init фрейма владельца. И обновляться список карт должен при каждом вызове Init - вдруг какую-то карту отключили и включили.

>с функцией в конструкторе есть у нас где-нибудь рабочий пример, чтото не въезжаю в логику, надо посмортреть на рабочий вариант...

Ну например любой листенер получает процедуру объекта при создании. Только тебе нужна не процедура, а функция.
(0011501)
Garl   
04-06-2013 10:21   
во, теперь мозаика складывается.

>(Только карты, только слои, все подряд)
активные и фильтр выкидываем?
(0011502)
vdemidov   
04-06-2013 10:27   
>активные и фильтр выкидываем?
А смысл их снаружи? Это все внутри нового фрейма спрячется. Будет настраиваться через поп-ап менюшку внутри фрейма и совсем не будет волновать фрейма-владельца.
(0011503)
Garl   
04-06-2013 10:47   
тоесть Активные и Фильтр по названию - будут присутствовать всегда?
остальное по перечислению.
(0011504)
vdemidov   
04-06-2013 11:28   
>тоесть Активные и Фильтр по названию - будут присутствовать всегда
А зачем их отключать? Разве что активные можно отключать, если выбраны только карты без слоев.
(0011505)
Garl   
04-06-2013 11:30   
ага пункт активные при режиме mm_maps будет скрываться.