Browse Source

Bring dialog boxes in the front when qbt doesn't have focus.

Code inspired by glassez patch.
adaptive-webui-19844
sledgehammer999 11 years ago
parent
commit
a27867ae2b
  1. 20
      src/addnewtorrentdialog.cpp
  2. 63
      src/messageboxraised.cpp
  3. 59
      src/messageboxraised.h
  4. 6
      src/src.pro

20
src/addnewtorrentdialog.cpp

@ -40,12 +40,12 @@
#include "iconprovider.h" #include "iconprovider.h"
#include "fs_utils.h" #include "fs_utils.h"
#include "autoexpandabledialog.h" #include "autoexpandabledialog.h"
#include "messageboxraised.h"
#include <QString> #include <QString>
#include <QFile> #include <QFile>
#include <QUrl> #include <QUrl>
#include <QMenu> #include <QMenu>
#include <QMessageBox>
#include <QTimer> #include <QTimer>
#include <QFileDialog> #include <QFileDialog>
#include <libtorrent/version.hpp> #include <libtorrent/version.hpp>
@ -185,7 +185,7 @@ bool AddNewTorrentDialog::loadTorrent(const QString& torrent_path, const QString
m_filePath = torrent_path; m_filePath = torrent_path;
if (!QFile::exists(m_filePath)) { if (!QFile::exists(m_filePath)) {
QMessageBox::critical(0, tr("I/O Error"), tr("The torrent file does not exist.")); MessageBoxRaised::critical(0, tr("I/O Error"), tr("The torrent file does not exist."));
return false; return false;
} }
@ -195,13 +195,13 @@ bool AddNewTorrentDialog::loadTorrent(const QString& torrent_path, const QString
m_torrentInfo = new torrent_info(fsutils::toNativePath(m_filePath).toUtf8().data()); m_torrentInfo = new torrent_info(fsutils::toNativePath(m_filePath).toUtf8().data());
m_hash = misc::toQString(m_torrentInfo->info_hash()); m_hash = misc::toQString(m_torrentInfo->info_hash());
} catch(const std::exception& e) { } catch(const std::exception& e) {
QMessageBox::critical(0, tr("Invalid torrent"), tr("Failed to load the torrent: %1").arg(e.what())); MessageBoxRaised::critical(0, tr("Invalid torrent"), tr("Failed to load the torrent: %1").arg(e.what()));
return false; return false;
} }
// Prevent showing the dialog if download is already present // Prevent showing the dialog if download is already present
if (QBtSession::instance()->getTorrentHandle(m_hash).is_valid()) { if (QBtSession::instance()->getTorrentHandle(m_hash).is_valid()) {
QMessageBox::information(0, tr("Already in download list"), tr("Torrent is already in download list. Merging trackers."), QMessageBox::Ok); MessageBoxRaised::information(0, tr("Already in download list"), tr("Torrent is already in download list. Merging trackers."), QMessageBox::Ok);
QBtSession::instance()->addTorrent(m_filePath, false, m_url);; QBtSession::instance()->addTorrent(m_filePath, false, m_url);;
return false; return false;
} }
@ -261,13 +261,13 @@ bool AddNewTorrentDialog::loadMagnet(const QString &magnet_uri)
m_url = magnet_uri; m_url = magnet_uri;
m_hash = misc::magnetUriToHash(m_url); m_hash = misc::magnetUriToHash(m_url);
if (m_hash.isEmpty()) { if (m_hash.isEmpty()) {
QMessageBox::critical(0, tr("Invalid magnet link"), tr("This magnet link was not recognized")); MessageBoxRaised::critical(0, tr("Invalid magnet link"), tr("This magnet link was not recognized"));
return false; return false;
} }
// Prevent showing the dialog if download is already present // Prevent showing the dialog if download is already present
if (QBtSession::instance()->getTorrentHandle(m_hash).is_valid()) { if (QBtSession::instance()->getTorrentHandle(m_hash).is_valid()) {
QMessageBox::information(0, tr("Already in download list"), tr("Magnet link is already in download list. Merging trackers."), QMessageBox::Ok); MessageBoxRaised::information(0, tr("Already in download list"), tr("Magnet link is already in download list. Merging trackers."), QMessageBox::Ok);
QBtSession::instance()->addMagnetUri(m_url, false); QBtSession::instance()->addMagnetUri(m_url, false);
return false; return false;
} }
@ -431,7 +431,7 @@ void AddNewTorrentDialog::renameSelectedFile()
index.data().toString(), &ok).trimmed(); index.data().toString(), &ok).trimmed();
if (ok && !new_name_last.isEmpty()) { if (ok && !new_name_last.isEmpty()) {
if (!fsutils::isValidFileSystemName(new_name_last)) { if (!fsutils::isValidFileSystemName(new_name_last)) {
QMessageBox::warning(this, tr("The file could not be renamed"), MessageBoxRaised::warning(this, tr("The file could not be renamed"),
tr("This file name contains forbidden characters, please choose a different one."), tr("This file name contains forbidden characters, please choose a different one."),
QMessageBox::Ok); QMessageBox::Ok);
return; return;
@ -456,7 +456,7 @@ void AddNewTorrentDialog::renameSelectedFile()
if (i == file_index) continue; if (i == file_index) continue;
if (fsutils::sameFileNames(m_filesPath.at(i), new_name)) { if (fsutils::sameFileNames(m_filesPath.at(i), new_name)) {
// Display error message // Display error message
QMessageBox::warning(this, tr("The file could not be renamed"), MessageBoxRaised::warning(this, tr("The file could not be renamed"),
tr("This name is already in use in this folder. Please use a different name."), tr("This name is already in use in this folder. Please use a different name."),
QMessageBox::Ok); QMessageBox::Ok);
return; return;
@ -490,7 +490,7 @@ void AddNewTorrentDialog::renameSelectedFile()
#else #else
if (current_name.startsWith(new_path, Qt::CaseInsensitive)) { if (current_name.startsWith(new_path, Qt::CaseInsensitive)) {
#endif #endif
QMessageBox::warning(this, tr("The folder could not be renamed"), MessageBoxRaised::warning(this, tr("The folder could not be renamed"),
tr("This name is already in use in this folder. Please use a different name."), tr("This name is already in use in this folder. Please use a different name."),
QMessageBox::Ok); QMessageBox::Ok);
return; return;
@ -703,7 +703,7 @@ void AddNewTorrentDialog::updateMetadata(const QTorrentHandle &h) {
setdialogPosition(); setdialogPosition();
setMetadataProgressIndicator(false, tr("Metadata retrieval complete")); setMetadataProgressIndicator(false, tr("Metadata retrieval complete"));
} catch (invalid_handle&) { } catch (invalid_handle&) {
QMessageBox::critical(0, tr("I/O Error"), ("Unknown error.")); MessageBoxRaised::critical(0, tr("I/O Error"), ("Unknown error."));
setMetadataProgressIndicator(false, tr("Unknown error")); setMetadataProgressIndicator(false, tr("Unknown error"));
return; return;
} }

63
src/messageboxraised.cpp

@ -0,0 +1,63 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2014 sledgehammer999
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* In addition, as a special exception, the copyright holders give permission to
* link this program with the OpenSSL project's "OpenSSL" library (or with
* modified versions of it that use the same license as the "OpenSSL" library),
* and distribute the linked executables. You must obey the GNU General Public
* License in all respects for all of the code used other than "OpenSSL". If you
* modify file(s), you may extend this exception to your version of the file(s),
* but you are not obligated to do so. If you do not wish to do so, delete this
* exception statement from your version.
*
* Contact : hammered999@gmail.com
*/
#include "messageboxraised.h"
MessageBoxRaised::MessageBoxRaised(QMessageBox::Icon icon, const QString &title, const QString &text,
QMessageBox::StandardButtons buttons, QWidget *parent, Qt::WindowFlags f)
: QMessageBox(icon, title, text, buttons, parent, f) {}
QMessageBox::StandardButton MessageBoxRaised::impl(const QMessageBox::Icon &icon, QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton) {
MessageBoxRaised dlg(icon, title, text, buttons, parent);
dlg.setDefaultButton(defaultButton);
return (QMessageBox::StandardButton)dlg.exec();
}
QMessageBox::StandardButton MessageBoxRaised::critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton) {
return impl(Critical, parent, title, text, buttons, defaultButton);
}
QMessageBox::StandardButton MessageBoxRaised::information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton) {
return impl(Information, parent, title, text, buttons, defaultButton);
}
QMessageBox::StandardButton MessageBoxRaised::question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton) {
return impl(Question, parent, title, text, buttons, defaultButton);
}
QMessageBox::StandardButton MessageBoxRaised::warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons, QMessageBox::StandardButton defaultButton) {
return impl(Warning, parent, title, text, buttons, defaultButton);
}
void MessageBoxRaised::showEvent(QShowEvent *event) {
QMessageBox::showEvent(event);
activateWindow();
raise();
}

59
src/messageboxraised.h

@ -0,0 +1,59 @@
/*
* Bittorrent Client using Qt4 and libtorrent.
* Copyright (C) 2014 sledgehammer999
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* In addition, as a special exception, the copyright holders give permission to
* link this program with the OpenSSL project's "OpenSSL" library (or with
* modified versions of it that use the same license as the "OpenSSL" library),
* and distribute the linked executables. You must obey the GNU General Public
* License in all respects for all of the code used other than "OpenSSL". If you
* modify file(s), you may extend this exception to your version of the file(s),
* but you are not obligated to do so. If you do not wish to do so, delete this
* exception statement from your version.
*
* Contact : hammered999@gmail.com
*/
#ifndef MESSAGEBOXRAISED_H
#define MESSAGEBOXRAISED_H
#include <QMessageBox>
class MessageBoxRaised : public QMessageBox
{
Q_OBJECT
private:
MessageBoxRaised(QMessageBox::Icon icon, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = NoButton, QWidget *parent = 0, Qt::WindowFlags f = Qt::Dialog|Qt::MSWindowsFixedSizeDialogHint);
MessageBoxRaised();
MessageBoxRaised(MessageBoxRaised const&);
void operator=(MessageBoxRaised const&);
public:
static QMessageBox::StandardButton critical(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton);
static QMessageBox::StandardButton information(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton);
static QMessageBox::StandardButton question(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton);
static QMessageBox::StandardButton warning(QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton);
protected:
void showEvent(QShowEvent *event);
private:
static QMessageBox::StandardButton impl(const QMessageBox::Icon &icon, QWidget *parent, const QString &title, const QString &text, QMessageBox::StandardButtons buttons = QMessageBox::Ok, QMessageBox::StandardButton defaultButton = QMessageBox::NoButton);
};
#endif // MESSAGEBOXRAISED_H

6
src/src.pro

@ -107,7 +107,8 @@ HEADERS += misc.h \
scannedfoldersmodel.h \ scannedfoldersmodel.h \
qinisettings.h \ qinisettings.h \
smtp.h \ smtp.h \
dnsupdater.h dnsupdater.h \
messageboxraised.h
SOURCES += main.cpp \ SOURCES += main.cpp \
@ -116,7 +117,8 @@ SOURCES += main.cpp \
misc.cpp \ misc.cpp \
fs_utils.cpp \ fs_utils.cpp \
smtp.cpp \ smtp.cpp \
dnsupdater.cpp dnsupdater.cpp \
messageboxraised.cpp
nox { nox {
HEADERS += headlessloader.h HEADERS += headlessloader.h

Loading…
Cancel
Save