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

@ -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

View File

@ -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.