mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Store: Search, clean up values for settings. Default sort on price. Save sort col and order.
This commit is contained in:
parent
c0a1ba448e
commit
6175c8ce57
@ -56,6 +56,9 @@ class Matches(QAbstractItemModel):
|
||||
self.details_pool = DetailsThreadPool(DetailsThread, 4)
|
||||
self.details_pool.start_threads()
|
||||
|
||||
self.sort_col = 2
|
||||
self.sort_order = Qt.AscendingOrder
|
||||
|
||||
def closing(self):
|
||||
self.cover_pool.abort()
|
||||
self.details_pool.abort()
|
||||
@ -102,7 +105,7 @@ class Matches(QAbstractItemModel):
|
||||
self.matches = list(self.search_filter.parse(self.query))
|
||||
else:
|
||||
self.matches = list(self.search_filter.universal_set())
|
||||
self.reorder_matches()
|
||||
self.sort(self.sort_col, self.sort_order, False)
|
||||
self.layoutChanged.emit()
|
||||
|
||||
def got_result_details(self, result):
|
||||
@ -193,11 +196,20 @@ class Matches(QAbstractItemModel):
|
||||
text = result.title
|
||||
elif col == 2:
|
||||
text = comparable_price(result.price)
|
||||
elif col == 3:
|
||||
if result.drm == SearchResult.DRM_UNLOCKED:
|
||||
text = 'a'
|
||||
if result.drm == SearchResult.DRM_LOCKED:
|
||||
text = 'b'
|
||||
else:
|
||||
text = 'c'
|
||||
elif col == 4:
|
||||
text = result.store_name
|
||||
return text
|
||||
|
||||
def sort(self, col, order, reset=True):
|
||||
self.sort_col = col
|
||||
self.sort_order = order
|
||||
if not self.matches:
|
||||
return
|
||||
descending = order == Qt.DescendingOrder
|
||||
|
@ -9,7 +9,7 @@ __docformat__ = 'restructuredtext en'
|
||||
import re
|
||||
from random import shuffle
|
||||
|
||||
from PyQt4.Qt import (QDialog, QTimer, QCheckBox, QVBoxLayout)
|
||||
from PyQt4.Qt import (Qt, QDialog, QTimer, QCheckBox, QVBoxLayout)
|
||||
|
||||
from calibre.gui2 import JSONConfig, info_dialog
|
||||
from calibre.gui2.progress_indicator import ProgressIndicator
|
||||
@ -135,25 +135,27 @@ class SearchDialog(QDialog, Ui_Dialog):
|
||||
return query
|
||||
|
||||
def save_state(self):
|
||||
self.config['store_search_geometry'] = bytearray(self.saveGeometry())
|
||||
self.config['store_search_store_splitter_state'] = bytearray(self.store_splitter.saveState())
|
||||
self.config['store_search_results_view_column_width'] = [self.results_view.columnWidth(i) for i in range(self.results_view.model().columnCount())]
|
||||
self.config['geometry'] = bytearray(self.saveGeometry())
|
||||
self.config['store_splitter_state'] = bytearray(self.store_splitter.saveState())
|
||||
self.config['results_view_column_width'] = [self.results_view.columnWidth(i) for i in range(self.results_view.model().columnCount())]
|
||||
self.config['sort_col'] = self.results_view.model().sort_col
|
||||
self.config['sort_order'] = self.results_view.model().sort_order
|
||||
|
||||
store_check = {}
|
||||
for n in self.store_plugins:
|
||||
store_check[n] = getattr(self, 'store_check_' + n).isChecked()
|
||||
self.config['store_search_store_checked'] = store_check
|
||||
self.config['store_checked'] = store_check
|
||||
|
||||
def restore_state(self):
|
||||
geometry = self.config.get('store_search_geometry', None)
|
||||
geometry = self.config.get('geometry', None)
|
||||
if geometry:
|
||||
self.restoreGeometry(geometry)
|
||||
|
||||
splitter_state = self.config.get('store_search_store_splitter_state', None)
|
||||
splitter_state = self.config.get('store_splitter_state', None)
|
||||
if splitter_state:
|
||||
self.store_splitter.restoreState(splitter_state)
|
||||
|
||||
results_cwidth = self.config.get('store_search_results_view_column_width', None)
|
||||
results_cwidth = self.config.get('results_view_column_width', None)
|
||||
if results_cwidth:
|
||||
for i, x in enumerate(results_cwidth):
|
||||
if i >= self.results_view.model().columnCount():
|
||||
@ -162,12 +164,16 @@ class SearchDialog(QDialog, Ui_Dialog):
|
||||
else:
|
||||
self.resize_columns()
|
||||
|
||||
store_check = self.config.get('store_search_store_checked', None)
|
||||
store_check = self.config.get('store_checked', None)
|
||||
if store_check:
|
||||
for n in store_check:
|
||||
if hasattr(self, 'store_check_' + n):
|
||||
getattr(self, 'store_check_' + n).setChecked(store_check[n])
|
||||
|
||||
self.results_view.model().sort_col = self.config.get('sort_col', 2)
|
||||
self.results_view.model().sort_order = self.config.get('sort_order', Qt.AscendingOrder)
|
||||
self.results_view.header().setSortIndicator(self.results_view.model().sort_col, self.results_view.model().sort_order)
|
||||
|
||||
def get_results(self):
|
||||
# We only want the search plugins to run
|
||||
# a maximum set amount of time before giving up.
|
||||
|
Loading…
x
Reference in New Issue
Block a user