Do not enable edit rows in device tab for devices that do not support editing ebook metadata.

This commit is contained in:
John Schember 2009-03-23 19:07:14 -04:00
parent 94c5e717a1
commit 9abca9d60f
4 changed files with 14 additions and 3 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

@ -709,6 +709,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)
@ -785,7 +788,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)
@ -793,7 +796,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
@ -818,7 +820,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
@ -1000,6 +1002,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

@ -585,7 +585,9 @@ class Main(MainWindow, Ui_MainWindow):
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():