Workaround for erroneously accept of Qt::Key_Delete on QAbstractItemView

see http://bugreports.qt.nokia.com/browse/QTBUG-8270

solved for PeersDialog, MessagesDialog and TransfersDialog


git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2858 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
thunder2 2010-05-06 14:39:50 +00:00
parent 47f97e20b9
commit aae947ecd8
6 changed files with 72 additions and 44 deletions

View File

@ -130,6 +130,11 @@ MessagesDialog::MessagesDialog(QWidget *parent)
// connect after setting model
connect( ui.messagestreeView->selectionModel(), SIGNAL(currentChanged ( QModelIndex, QModelIndex ) ) , this, SLOT( currentChanged( const QModelIndex & ) ) );
// workaround for Qt bug, should be solved in next Qt release 4.7.0
// http://bugreports.qt.nokia.com/browse/QTBUG-8270
QShortcut *Shortcut = new QShortcut(QKeySequence (Qt::Key_Delete), ui.messagestreeView, 0, 0, Qt::WidgetShortcut);
connect(Shortcut, SIGNAL(activated()), this, SLOT( removemessage ()));
/* hide the Tree +/- */
ui.msgList->setRootIsDecorated( false );
ui.msgList->setSelectionMode( QAbstractItemView::ExtendedSelection );
@ -199,16 +204,17 @@ MessagesDialog::~MessagesDialog()
delete(timer);
}
void MessagesDialog::keyPressEvent(QKeyEvent *e)
{
if(e->key() == Qt::Key_Delete)
{
removemessage() ;
e->accept() ;
}
else
MainPage::keyPressEvent(e) ;
}
// replaced by shortcut
//void MessagesDialog::keyPressEvent(QKeyEvent *e)
//{
// if(e->key() == Qt::Key_Delete)
// {
// removemessage() ;
// e->accept() ;
// }
// else
// MainPage::keyPressEvent(e) ;
//}
void MessagesDialog::messageslistWidgetCostumPopupMenu( QPoint point )
{

View File

@ -45,7 +45,8 @@ public:
~MessagesDialog();
void insertMsgTxtAndFiles(QModelIndex index = QModelIndex());
virtual void keyPressEvent(QKeyEvent *) ;
// replaced by shortcut
// virtual void keyPressEvent(QKeyEvent *) ;
void updateMessageSummaryList();
public slots:
@ -134,7 +135,7 @@ private:
// timer and index for showing message
QTimer *timer;
QModelIndex timerIndex;
/** Qt Designer generated object */
Ui::MessagesDialog ui;
};

View File

@ -220,6 +220,11 @@ PeersDialog::PeersDialog(QWidget *parent)
loadmypersonalstatus();
loadEmoticonsgroupchat();
// workaround for Qt bug, should be solved in next Qt release 4.7.0
// http://bugreports.qt.nokia.com/browse/QTBUG-8270
QShortcut *Shortcut = new QShortcut(QKeySequence (Qt::Key_Delete), ui.peertreeWidget, 0, 0, Qt::WidgetShortcut);
connect(Shortcut, SIGNAL(activated()), this, SLOT( removefriend ()));
/* Hide platform specific features */
#ifdef Q_WS_WIN
@ -334,16 +339,17 @@ void PeersDialog::peertreeWidgetCostumPopupMenu( QPoint point )
contextMnu.exec( mevent->globalPos() );
}
void PeersDialog::keyPressEvent(QKeyEvent *e)
{
if(e->key() == Qt::Key_Delete)
{
removefriend() ;
e->accept() ;
}
else
MainPage::keyPressEvent(e) ;
}
// replaced by shortcut
//void PeersDialog::keyPressEvent(QKeyEvent *e)
//{
// if(e->key() == Qt::Key_Delete)
// {
// removefriend() ;
// e->accept() ;
// }
// else
// MainPage::keyPressEvent(e) ;
//}
void PeersDialog::updateDisplay()
{

View File

@ -55,7 +55,8 @@ public:
QPixmap picture;
virtual void updateDisplay() ; // overloaded from RsAutoUpdatePage
virtual void keyPressEvent(QKeyEvent *) ;
// replaced by shortcut
// virtual void keyPressEvent(QKeyEvent *) ;
public slots:

View File

@ -105,6 +105,11 @@ TransfersDialog::TransfersDialog(QWidget *parent)
ui.downloadList->setAutoScroll(false) ;
// workaround for Qt bug, should be solved in next Qt release 4.7.0
// http://bugreports.qt.nokia.com/browse/QTBUG-8270
QShortcut *Shortcut = new QShortcut(QKeySequence (Qt::Key_Delete), ui.downloadList, 0, 0, Qt::WidgetShortcut);
connect(Shortcut, SIGNAL(activated()), this, SLOT( cancel ()));
//Selection Setup
selection = ui.downloadList->selectionModel();
@ -257,16 +262,17 @@ TransfersDialog::TransfersDialog(QWidget *parent)
connect( playAct , SIGNAL( triggered() ), this, SLOT( openTransfer() ) );
}
void TransfersDialog::keyPressEvent(QKeyEvent *e)
{
if(e->key() == Qt::Key_Delete)
{
cancel() ;
e->accept() ;
}
else
RsAutoUpdatePage::keyPressEvent(e) ;
}
// replaced by shortcut
//void TransfersDialog::keyPressEvent(QKeyEvent *e)
//{
// if(e->key() == Qt::Key_Delete)
// {
// cancel() ;
// e->accept() ;
// }
// else
// RsAutoUpdatePage::keyPressEvent(e) ;
//}
void TransfersDialog::downloadListCostumPopupMenu( QPoint point )
{
@ -877,18 +883,25 @@ QString TransfersDialog::getPeerName(const std::string& id) const
void TransfersDialog::cancel()
{
QString queryWrn2;
queryWrn2.clear();
queryWrn2.append(tr("Are you sure that you want to cancel and delete these files?"));
bool first = true;
for(int i = 0; i < DLListModel->rowCount(); i++) {
if(selection->isRowSelected(i, QModelIndex())) {
if (first) {
first = false;
QString queryWrn2;
queryWrn2.clear();
queryWrn2.append(tr("Are you sure that you want to cancel and delete these files?"));
if ((QMessageBox::question(this, tr("RetroShare"),queryWrn2,QMessageBox::Ok|QMessageBox::No, QMessageBox::Ok))== QMessageBox::Ok)
for(int i = 0; i <= DLListModel->rowCount(); i++)
if(selection->isRowSelected(i, QModelIndex()))
{
std::string id = getID(i, DLListModel).toStdString();
if ((QMessageBox::question(this, tr("RetroShare"),queryWrn2,QMessageBox::Yes|QMessageBox::No, QMessageBox::Yes)) == QMessageBox::No) {
break;
}
}
rsFiles->FileCancel(id); /* hash */
}
std::string id = getID(i, DLListModel).toStdString();
rsFiles->FileCancel(id); /* hash */
}
}
}
//void TransfersDialog::handleDownloadRequest(const QString& url)

View File

@ -55,7 +55,8 @@ public:
/** Default Destructor */
~TransfersDialog();
virtual void keyPressEvent(QKeyEvent *) ;
// replaced by shortcut
// virtual void keyPressEvent(QKeyEvent *) ;
virtual void updateDisplay() ; // derived from RsAutoUpdateWidget
static DetailsDialog *detailsdlg;