View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0000917 | SAS.Планета | Хотелка / Feature request | public | 17-08-2011 05:46 | 07-01-2013 10:04 |
| Reporter | sheavy | Assigned To | vdemidov | ||
| Priority | normal | Severity | tweak | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Platform | Windows | OS | XP | OS Version | SP3 |
| Product Version | 110427.Beta | ||||
| Target Version | 131111 | Fixed in Version | 131111 | ||
| Summary | 0000917: Изменение видимости дочерних категорий | ||||
| Description | См. Скриншот: если снять галочку видимости с главной категории, метка, принадлежащая вложеной подкатегории останеться видимой. Кажется, было бы логично и интуитивно понятно, что если убирается галочка на главной категории, что она должна сниматься и со всех подчиненных. Иначе приходиться пробегаться по всем вложенным категориям. Чекбокс "Все" здесь тоже не помогает, т.к. сбрасывает флаг Visible и в других категориях, которых достаточно много. | ||||
| Steps To Reproduce | См. Скриншот: | ||||
| Additional Information | Аналогично сделано во многих программах, где требуется сканирование диска (антивирусы, восстановители удаленных файлов и т.п.) Понятно, что на самом деле вложенности в Category.sml нет и нужно улучшать обработчих кнопки "ОК" и "Применить" или делать новый чекбокс рядом с чекбоксом "Все" (менее предпочтительно) | ||||
| Tags | sml, категории | ||||
| Attached Files | |||||
|
|
Да, надо было давно это вынести отдельным тикетом, спасибо. Из 137-й хотелки: Типа [галки] два - включена/выключена. Но при включении/выключении галки одновременно с этим включаются/выключаются галки для всех вложенных категорий. Вложенность же определяется динамически, из структуры категорий, а не из файла данных в готовом виде, поэтому менять его не потребуется. Тупо рекурсия: при включении/выключении галки пробегаем по вложенным категориям и применяем эту же операцию на них. |
|
|
Не стал создавать отдельный баг, т.к. это видимо взаимосвязано: если поставить курсор на подкатегорию и нажать - удалить, то удалится и категория и подкатегория. |
|
|
только если в этой категории нет других подкатегорий. |
|
|
да. забыл сказать. |
|
|
Решил эту задачу переделав в frm_MarksExplorer.pas 2 процедуры CategoryTreeViewKeyUp и CategoryTreeViewMouseUp и добавив новую CategoryTreeViewVisible: ---------------------- Процедура TfrmMarksExplorer.CategoryTreeViewVisible: procedure TfrmMarksExplorer.CategoryTreeViewVisible(Node: TTreeNode); var VCategoryOld: IMarkCategory; VCategoryNew: IMarkCategory; VTreeNode: TTreeNode; VVisible: Boolean; VIndex,VLevel,VNum: Integer; begin VCategoryOld := IMarkCategory(Node.Data); if VCategoryOld <> nil then begin // VVisible, VIndex - для визуализации узлов. if Node.StateIndex=1 then begin VVisible := False; VIndex:=2; end else begin VVisible := True; VIndex:=1; end; // Изменение значения Visible текущего узла категории меток VCategoryNew := FMarkDBGUI.MarksDb.CategoryDB.Factory.ModifyVisible(VCategoryOld, VVisible); Node.StateIndex:=VIndex; if not VCategoryOld.IsEqual(VCategoryNew) then begin FMarkDBGUI.MarksDb.CategoryDB.UpdateCategory(VCategoryOld, VCategoryNew); end; // Изменение значения Visible дочерних узла категории меток // CheckBox3 включает/выклучает функцию каскадной визуализации. if CheckBox3.Checked then begin // VLevel - уровень глубины узла. VNum - номер узла изменения видимости. CategoryTreeView.Visible := False; VLevel:=Node.Level; // Цикл продолжается пока не перейдём на новую ветвь (пока уровень глубины узлов не станет как наша) // Или до конца ветвей for VNum:=Node.AbsoluteIndex+1 to CategoryTreeView.Items.Count - 1 do if CategoryTreeView.Items[VNum].Level>VLevel then begin VTreeNode := CategoryTreeView.Items[VNum]; VCategoryOld := IMarkCategory(VTreeNode.Data); if VCategoryOld <> nil then begin VCategoryNew := FMarkDBGUI.MarksDb.CategoryDB.Factory.ModifyVisible(VCategoryOld, VVisible); VTreeNode.StateIndex:=VIndex; if not VCategoryOld.IsEqual(VCategoryNew) then begin FMarkDBGUI.MarksDb.CategoryDB.UpdateCategory(VCategoryOld, VCategoryNew); end; end; end else break; // Прерываем цикл так, как уровень глубины узлов стал как наш или выше. CategoryTreeView.Visible := True; end; end; end; ---------------------- Процедура TfrmMarksExplorer.CategoryTreeViewKeyUp: procedure TfrmMarksExplorer.CategoryTreeViewKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); var VCategoryOld: IMarkCategory; VCategoryNew: IMarkCategory; begin If key=VK_DELETE then begin VCategoryOld := GetSelectedCategory; if VCategoryOld <> nil then begin FMarkDBGUI.DeleteCategoryModal(VCategoryOld, Self.Handle); end; end; if Key=VK_SPACE then CategoryTreeViewVisible(CategoryTreeView.Selected); end; ---------------------- Процедура TfrmMarksExplorer.CategoryTreeViewMouseUp: procedure TfrmMarksExplorer.CategoryTreeViewMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var VCategoryOld: IMarkCategory; VCategoryNew: IMarkCategory; VTreeNode: TTreeNode; begin if htOnStateIcon in CategoryTreeView.GetHitTestInfoAt(X,Y) then CategoryTreeViewVisible(CategoryTreeView.GetNodeAt(X,Y)); end; ---------------------- |
|
|
проверил, по логике и работе - всё ок! добавлять вышеуказанный код в исходник? |
|
|
>добавлять вышеуказанный код в исходник? Ну я бы дал автору кода еще пару попыток сделать чистый пул реквест, который будет принят. |
|
|
>>добавлять вышеуказанный код в исходник? >Ну я бы дал автору кода еще пару попыток сделать чистый пул реквест, который будет принят. Подскажите, пожалуйста, что значит "*чистый пул реквест*"? Спасибо, за помощь. |
|
|
Ну претензии к прошлой попытке я в комментарии написал. С тех пор ветка уже ушла вперед, так что нужно сделать новый коммит и пул реквест. |
|
|
Создал новый pull request. Сейчас правильно сделал? Спасибо, за помощь. |
|
|
Теперь лучше, но есть пару замечаний: 1. Оставлять неиспользуемые переменные на которые вылазят варнинги не стоит. Я это поправил на этот раз, но следующий раз просто не приму пул реквест. 2. Контролам нужно давать осмысленные имена, а не CheckBox2, Panel1, CheckBox3. То что один из этих контролов уже существовал с таким именем - не оправдание. |
|
|
Спасибо за вклад в разработку. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 17-08-2011 05:46 | sheavy | New Issue | |
| 17-08-2011 05:46 | sheavy | File Added: 2011-08-17_092532.jpg | |
| 17-08-2011 07:42 | Tolik | File Added: Cat.GIF | |
| 17-08-2011 07:59 | Tolik | Status | new => acknowledged |
| 17-08-2011 09:26 | vdemidov | File Deleted: Cat.GIF | |
| 17-08-2011 09:28 | sheavy | Tag Attached: категории | |
| 17-08-2011 09:28 | sheavy | Tag Attached: sml | |
| 17-08-2011 09:29 | vdemidov | Target Version | => 45xxxx |
| 17-08-2011 09:29 | vdemidov | Summary | Определение приоритета видимости категорий => Изменение видимости дочерних категорий |
| 17-08-2011 09:29 | vdemidov | Status | acknowledged => confirmed |
| 17-08-2011 09:29 | vdemidov | Product Version | => 110427.Beta |
| 18-08-2011 04:09 | gpsMax | Relationship added | related to 0000137 |
| 18-08-2011 04:11 | gpsMax | Note Added: 0003513 | |
| 18-08-2011 04:15 | gpsMax | Relationship added | related to 0000919 |
| 19-08-2011 07:18 | zOn | Note Added: 0003547 | |
| 19-08-2011 07:51 | Tolik | Note Added: 0003555 | |
| 19-08-2011 07:54 | zOn | Note Added: 0003556 | |
| 02-01-2013 05:43 | Fed | Note Added: 0010290 | |
| 02-01-2013 05:45 | Fed | Note Edited: 0010290 | |
| 02-01-2013 05:45 | Fed | Note Edited: 0010290 | |
| 02-01-2013 06:12 | Fed | Note Edited: 0010290 | |
| 02-01-2013 10:45 | Fed | File Added: Bitbucket_Import.jpg | |
| 02-01-2013 10:56 | Fetser | File Added: 1.jpg | |
| 05-01-2013 10:28 | Garl | Note Added: 0010327 | |
| 05-01-2013 11:59 | vdemidov | Note Added: 0010329 | |
| 06-01-2013 20:36 | Fed | Note Added: 0010347 | |
| 06-01-2013 21:07 | vdemidov | Note Added: 0010348 | |
| 07-01-2013 05:30 | Fed | Note Added: 0010350 | |
| 07-01-2013 09:27 | Fed | Note Edited: 0010290 | |
| 07-01-2013 10:03 | vdemidov | Note Added: 0010351 | |
| 07-01-2013 10:04 | vdemidov | Note Added: 0010352 | |
| 07-01-2013 10:04 | vdemidov | Status | confirmed => resolved |
| 07-01-2013 10:04 | vdemidov | Fixed in Version | => 131111 |
| 07-01-2013 10:04 | vdemidov | Resolution | open => fixed |
| 07-01-2013 10:04 | vdemidov | Assigned To | => vdemidov |
| 07-01-2013 10:04 | vdemidov | Target Version | 45xxxx => 131111 |
| 07-01-2013 10:04 | vdemidov | File Deleted: 1.jpg | |
| 07-01-2013 10:04 | vdemidov | File Deleted: Bitbucket_Import.jpg | |
| 08-08-2025 13:24 | zed | Category | Хотелка => Хотелка / Feature request |