':param gui: Parent gui
:param indices: List of Kobo books or list calibre book maps (indicated by param db_type)
:param callback_fn: the function from action.py that will do the heavy lifting (get_decrypted_kobo_books or add_new_books)
:param db: kobo database object or calibre database cache (indicated by param db_type)
:param db_type: string indicating what kind of database param db is
:param status_msg_type: string to indicate what the ProgressDialog is operating on (cosmetic only)
:param action_type: 2-Tuple of strings indicating what the ProgressDialog is doing to param status_msg_type (cosmetic only)'

def __init__(self, gui, indices, callback_fn, db, db_type=u'calibre', status_msg_type=u'books', action_type=(u'Decrypting', u'Decryption')):

    self.total_count = len(indices)
    QProgressDialog.__init__(self, u'', u'Cancel', 0, self.total_count, gui)
    self.setMinimumWidth(500)
    (self.indices, self.callback_fn, self.db, self.db_type) = (indices, callback_fn, db, db_type)
    (self.action_type, self.status_msg_type) = (action_type, status_msg_type)
    self.gui = gui
    self.setWindowTitle(u'{0}    {1}    {2}...'.format(self.action_type[0], self.total_count, self.status_msg_type))
    (self.i, self.successes, self.failures) = (0, [], [])
    QTimer.singleShot(0, self.do_book_action)
    self.exec_()
