Disable on-device editing of metadata in the GUI for devices that don't support it (all the non SONY devices)

This commit is contained in:
Kovid Goyal 2009-03-25 09:33:27 -07:00
parent 2a7c0bab5e
commit 03870b6a68
5 changed files with 193 additions and 182 deletions

View File

@ -24,6 +24,8 @@ class Device(object):
# it can be a list of the BCD numbers of all devices supported by this driver.
BCD = None
THUMBNAIL_HEIGHT = 68 # Height for thumbnails on device
# Whether the metadata on books can be set via the GUI.
CAN_SET_METADATA = True
def __init__(self, key='-1', log_packets=False, report_progress=None) :
"""

View File

@ -35,6 +35,7 @@ class USBMS(Device):
EBOOK_DIR_MAIN = ''
EBOOK_DIR_CARD = ''
SUPPORTS_SUB_DIRS = False
CAN_SET_METADATA = False
def __init__(self, key='-1', log_packets=False, report_progress=None):
Device.__init__(self, key=key, log_packets=log_packets,

View File

@ -707,6 +707,9 @@ class BooksView(TableView):
def close(self):
self._model.close()
def set_editable(self, editable):
self._model.set_editable(editable)
def connect_to_search_box(self, sb):
QObject.connect(sb, SIGNAL('search(PyQt_PyObject, PyQt_PyObject)'),
self._model.search)
@ -783,7 +786,7 @@ class DeviceBooksModel(BooksModel):
self.unknown = str(self.trUtf8('Unknown'))
self.marked_for_deletion = {}
self.search_engine = OnDeviceSearch(self)
self.editable = True
def mark_for_deletion(self, job, rows):
self.marked_for_deletion[job] = self.indices(rows)
@ -791,7 +794,6 @@ class DeviceBooksModel(BooksModel):
indices = self.row_indices(row)
self.emit(SIGNAL('dataChanged(QModelIndex, QModelIndex)'), indices[0], indices[-1])
def deletion_done(self, job, succeeded=True):
if not self.marked_for_deletion.has_key(job):
return
@ -816,7 +818,7 @@ class DeviceBooksModel(BooksModel):
if self.map[index.row()] in self.indices_to_be_deleted():
return Qt.ItemIsUserCheckable # Can't figure out how to get the disabled flag in python
flags = QAbstractTableModel.flags(self, index)
if index.isValid():
if index.isValid() and self.editable:
if index.column() in [0, 1] or (index.column() == 4 and self.db.supports_tags()):
flags |= Qt.ItemIsEditable
return flags
@ -998,6 +1000,10 @@ class DeviceBooksModel(BooksModel):
done = True
return done
def set_editable(self, editable):
self.editable = editable
class SearchBox(QLineEdit):
INTERVAL = 1000 #: Time to wait before emitting search signal

View File

@ -644,7 +644,9 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
return
mainlist, cardlist = job.result
self.memory_view.set_database(mainlist)
self.memory_view.set_editable(self.device_manager.device_class.CAN_SET_METADATA)
self.card_view.set_database(cardlist)
self.card_view.set_editable(self.device_manager.device_class.CAN_SET_METADATA)
for view in (self.memory_view, self.card_view):
view.sortByColumn(3, Qt.DescendingOrder)
if not view.restore_column_widths():