diff --git a/__main__.py b/__main__.py index d460cba..2642051 100755 --- a/__main__.py +++ b/__main__.py @@ -121,7 +121,7 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.statusBar.addWidget(self.sorterProgress) self.sorterProgress.setVisible(False) - # Init the QListView + # Init the Library self.lib_ref = Library(self) # Application wide temporary directory @@ -131,6 +131,9 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.libraryToolBar = LibraryToolBar(self) self.libraryToolBar.addButton.triggered.connect(self.add_books) self.libraryToolBar.deleteButton.triggered.connect(self.delete_books) + self.libraryToolBar.coverViewButton.triggered.connect(self.switch_library_view) + self.libraryToolBar.coverViewButton.setChecked(True) + self.libraryToolBar.tableViewButton.triggered.connect(self.switch_library_view) self.libraryToolBar.settingsButton.triggered.connect(self.show_settings) self.libraryToolBar.searchBar.textChanged.connect(self.lib_ref.update_proxymodel) self.libraryToolBar.sortingBox.activated.connect(self.lib_ref.update_proxymodel) @@ -177,17 +180,14 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.available_parsers = '*.' + ' *.'.join(sorter.available_parsers) print('Available parsers: ' + self.available_parsers) - # TODO - # Associate this with the library switcher - self.library_view_switch = QtWidgets.QToolButton() - self.library_view_switch.setIcon(QtGui.QIcon.fromTheme('view-readermode')) - self.library_view_switch.setAutoRaise(True) - self.library_view_switch.setPopupMode(QtWidgets.QToolButton.InstantPopup) - self.library_view_switch.triggered.connect(self.switch_library_view) + self.reloadLibrary = QtWidgets.QToolButton() + self.reloadLibrary.setIcon(QtGui.QIcon.fromTheme('reload')) + self.reloadLibrary.setAutoRaise(True) + self.reloadLibrary.setPopupMode(QtWidgets.QToolButton.InstantPopup) + self.reloadLibrary.triggered.connect(self.switch_library_view) self.tabWidget.tabBar().setTabButton( - 0, QtWidgets.QTabBar.RightSide, self.library_view_switch) - self.library_view_switch.clicked.connect(self.switch_library_view) + 0, QtWidgets.QTabBar.RightSide, self.reloadLibrary) self.tabWidget.tabCloseRequested.connect(self.tab_close) # Init display models @@ -203,7 +203,9 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.listView.setItemDelegate(LibraryDelegate(self.temp_dir.path())) # TableView - self.tableView.horizontalHeader().setSectionResizeMode(QtWidgets.QHeaderView.Stretch) + self.tableView.horizontalHeader().setSectionResizeMode( + QtWidgets.QHeaderView.ResizeToContents) + self.tableView.horizontalHeader().setStretchLastSection(True) # Keyboard shortcuts self.ks_close_tab = QtWidgets.QShortcut(QtGui.QKeySequence('Ctrl+W'), self) @@ -222,6 +224,14 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): self.last_open_books = None def resizeEvent(self, event=None): + # TODO + # View switching borks the grid + + # In case the listView isn't visible because the + # tableview is highlighted instead + if not self.listView.isVisible(): + return + if event: # This implies a vertical resize event only # We ain't about that lifestyle @@ -303,14 +313,14 @@ class MainUI(QtWidgets.QMainWindow, mainwindow.Ui_MainWindow): msg_box.exec_() def switch_library_view(self): - if self.listView.isVisible(): - self.listView.setVisible(False) - self.tableView.setVisible(True) - self.libraryToolBar.sortingBoxAction.setVisible(False) - else: + if self.libraryToolBar.coverViewButton.isChecked(): self.listView.setVisible(True) self.tableView.setVisible(False) self.libraryToolBar.sortingBoxAction.setVisible(True) + else: + self.listView.setVisible(False) + self.tableView.setVisible(True) + self.libraryToolBar.sortingBoxAction.setVisible(False) def tab_switch(self): if self.tabWidget.currentIndex() == 0: diff --git a/resources/mainwindow.py b/resources/mainwindow.py index dadf8a5..ce15250 100644 --- a/resources/mainwindow.py +++ b/resources/mainwindow.py @@ -11,7 +11,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") - MainWindow.resize(1064, 724) + MainWindow.resize(1062, 720) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.gridLayout = QtWidgets.QGridLayout(self.centralwidget) @@ -26,7 +26,7 @@ class Ui_MainWindow(object): self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.tab) self.horizontalLayout_2.setObjectName("horizontalLayout_2") self.listView = QtWidgets.QListView(self.tab) - self.listView.setFrameShape(QtWidgets.QFrame.NoFrame) + self.listView.setFrameShape(QtWidgets.QFrame.StyledPanel) self.listView.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) self.listView.setProperty("showDropIndicator", False) self.listView.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) @@ -40,8 +40,8 @@ class Ui_MainWindow(object): self.listView.setObjectName("listView") self.horizontalLayout_2.addWidget(self.listView) self.tableView = QtWidgets.QTableView(self.tab) - self.tableView.setFrameShape(QtWidgets.QFrame.NoFrame) - self.tableView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) + self.tableView.setFrameShape(QtWidgets.QFrame.StyledPanel) + self.tableView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContentsOnFirstShow) self.tableView.setEditTriggers(QtWidgets.QAbstractItemView.DoubleClicked|QtWidgets.QAbstractItemView.EditKeyPressed) self.tableView.setAlternatingRowColors(True) self.tableView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) diff --git a/resources/raw/main.ui b/resources/raw/main.ui index f1eac72..3958105 100644 --- a/resources/raw/main.ui +++ b/resources/raw/main.ui @@ -6,8 +6,8 @@ 0 0 - 1064 - 724 + 1062 + 720 @@ -33,7 +33,7 @@ - QFrame::NoFrame + QFrame::StyledPanel QAbstractItemView::NoEditTriggers @@ -73,7 +73,7 @@ - QFrame::NoFrame + QFrame::StyledPanel QAbstractScrollArea::AdjustToContentsOnFirstShow diff --git a/widgets.py b/widgets.py index feb3d9b..1789b27 100644 --- a/widgets.py +++ b/widgets.py @@ -266,13 +266,29 @@ class LibraryToolBar(QtWidgets.QToolBar): QtGui.QIcon.fromTheme('remove'), 'Delete book', self) self.settingsButton = QtWidgets.QAction( QtGui.QIcon.fromTheme('settings'), 'Settings', self) + self.settingsButton.setCheckable(True) + + self.coverViewButton = QtWidgets.QAction( + QtGui.QIcon.fromTheme('view-grid'), 'View as covers', self) + self.coverViewButton.setCheckable(True) + self.tableViewButton = QtWidgets.QAction( + QtGui.QIcon.fromTheme('table'), 'View as table', self) + self.tableViewButton.setCheckable(True) + + # Auto unchecks the other QToolButton in case of clicking + self.viewButtons = QtWidgets.QActionGroup(self) + self.viewButtons.setExclusive(True) + self.viewButtons.addAction(self.coverViewButton) + self.viewButtons.addAction(self.tableViewButton) # Add buttons self.addAction(self.addButton) self.addAction(self.deleteButton) self.addSeparator() + self.addAction(self.coverViewButton) + self.addAction(self.tableViewButton) + self.addSeparator() self.addAction(self.settingsButton) - self.settingsButton.setCheckable(True) # Filter sizePolicy = QtWidgets.QSizePolicy(