Store: Search, clean up values for settings. Default sort on price. Save sort col and order.

This commit is contained in:
John Schember 2011-04-22 09:13:33 -04:00
parent c0a1ba448e
commit 6175c8ce57
2 changed files with 28 additions and 10 deletions

View File

@ -55,6 +55,9 @@ class Matches(QAbstractItemModel):
self.cover_pool.start_threads() self.cover_pool.start_threads()
self.details_pool = DetailsThreadPool(DetailsThread, 4) self.details_pool = DetailsThreadPool(DetailsThread, 4)
self.details_pool.start_threads() self.details_pool.start_threads()
self.sort_col = 2
self.sort_order = Qt.AscendingOrder
def closing(self): def closing(self):
self.cover_pool.abort() self.cover_pool.abort()
@ -102,7 +105,7 @@ class Matches(QAbstractItemModel):
self.matches = list(self.search_filter.parse(self.query)) self.matches = list(self.search_filter.parse(self.query))
else: else:
self.matches = list(self.search_filter.universal_set()) self.matches = list(self.search_filter.universal_set())
self.reorder_matches() self.sort(self.sort_col, self.sort_order, False)
self.layoutChanged.emit() self.layoutChanged.emit()
def got_result_details(self, result): def got_result_details(self, result):
@ -193,11 +196,20 @@ class Matches(QAbstractItemModel):
text = result.title text = result.title
elif col == 2: elif col == 2:
text = comparable_price(result.price) 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: elif col == 4:
text = result.store_name text = result.store_name
return text return text
def sort(self, col, order, reset=True): def sort(self, col, order, reset=True):
self.sort_col = col
self.sort_order = order
if not self.matches: if not self.matches:
return return
descending = order == Qt.DescendingOrder descending = order == Qt.DescendingOrder

View File

@ -9,7 +9,7 @@ __docformat__ = 'restructuredtext en'
import re import re
from random import shuffle 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 import JSONConfig, info_dialog
from calibre.gui2.progress_indicator import ProgressIndicator from calibre.gui2.progress_indicator import ProgressIndicator
@ -135,25 +135,27 @@ class SearchDialog(QDialog, Ui_Dialog):
return query return query
def save_state(self): def save_state(self):
self.config['store_search_geometry'] = bytearray(self.saveGeometry()) self.config['geometry'] = bytearray(self.saveGeometry())
self.config['store_search_store_splitter_state'] = bytearray(self.store_splitter.saveState()) self.config['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['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 = {} store_check = {}
for n in self.store_plugins: for n in self.store_plugins:
store_check[n] = getattr(self, 'store_check_' + n).isChecked() 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): def restore_state(self):
geometry = self.config.get('store_search_geometry', None) geometry = self.config.get('geometry', None)
if geometry: if geometry:
self.restoreGeometry(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: if splitter_state:
self.store_splitter.restoreState(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: if results_cwidth:
for i, x in enumerate(results_cwidth): for i, x in enumerate(results_cwidth):
if i >= self.results_view.model().columnCount(): if i >= self.results_view.model().columnCount():
@ -162,11 +164,15 @@ class SearchDialog(QDialog, Ui_Dialog):
else: else:
self.resize_columns() self.resize_columns()
store_check = self.config.get('store_search_store_checked', None) store_check = self.config.get('store_checked', None)
if store_check: if store_check:
for n in store_check: for n in store_check:
if hasattr(self, 'store_check_' + n): if hasattr(self, 'store_check_' + n):
getattr(self, 'store_check_' + n).setChecked(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): def get_results(self):
# We only want the search plugins to run # We only want the search plugins to run