Skip to content

Commit

Permalink
Fix issue with filtered question tabs
Browse files Browse the repository at this point in the history
  • Loading branch information
jfeil committed May 11, 2023
1 parent 344b12f commit 62c8b51
Showing 1 changed file with 24 additions and 6 deletions.
30 changes: 24 additions & 6 deletions src/main_widgets.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,28 +73,46 @@ def __init__(self, main_window: MainWindow):
self.ui.filter_list.clear()
left_shortcut = QShortcut(QKeySequence(QKeySequence.MoveToPreviousChar), self, None, None,
Qt.WidgetWithChildrenShortcut)
left_shortcut.activated.connect(self.last_question_group)
left_shortcut.activated.connect(self.previous_question_group)

right_shortcut = QShortcut(QKeySequence(QKeySequence.MoveToNextChar), self, None, None,
Qt.WidgetWithChildrenShortcut)
right_shortcut.activated.connect(self.next_question_group)

delete_shortcut = QShortcut(QKeySequence(Qt.Key_Delete), self.ui.filter_list, None, None, Qt.WidgetShortcut)
delete_shortcut.activated.connect(self.delete_selected_filter)

self.ui.filter_list.setSelectionMode(QListView.ExtendedSelection)
self.ui.filter_list.itemDoubleClicked.connect(self.add_filter)
self.ui.add_filter.clicked.connect(self.add_filter)

self.question_group_tabs = [] # type: List[Tuple[QuestionGroup, QSortFilterProxyModel, QuestionGroupDataModel]]
self.questions = {} # type: Dict[QTreeWidgetItem, str]

self.old_index = self.ui.tabWidget.currentIndex()
self.ui.tabWidget.currentChanged.connect(self.handle_bad_scrolling)

def handle_bad_scrolling(self, new_index: int):
if not self.ui.tabWidget.isTabVisible(new_index):
if new_index > self.old_index:
self.next_question_group()
else:
self.previous_question_group()
self.old_index = self.ui.tabWidget.currentIndex()

def next_question_group(self):
if self.ui.tabWidget.currentIndex() < self.ui.tabWidget.count() - 1:
self.ui.tabWidget.setCurrentIndex(self.ui.tabWidget.currentIndex() + 1)
for i in range(self.ui.tabWidget.currentIndex() + 1, self.ui.tabWidget.count()):
if self.ui.tabWidget.isTabVisible(i):
self.ui.tabWidget.setCurrentIndex(i)
return
self.ui.tabWidget.setCurrentIndex(self.old_index)

def last_question_group(self):
if self.ui.tabWidget.currentIndex() > 0:
self.ui.tabWidget.setCurrentIndex(self.ui.tabWidget.currentIndex() - 1)
def previous_question_group(self):
for i in range(self.ui.tabWidget.currentIndex() - 1, -1, -1):
if self.ui.tabWidget.isTabVisible(i):
self.ui.tabWidget.setCurrentIndex(i)
return
self.ui.tabWidget.setCurrentIndex(self.old_index)

def delete_selected_filter(self):
selection_model = self.ui.filter_list.selectionModel()
Expand Down

0 comments on commit 62c8b51

Please sign in to comment.