#include <QToolBar>
#include <QInputDialog>
-#ifdef HAVE_KDE4
-# include <KHelpMenu>
-# include <KMenuBar>
-# include <KShortcutsDialog>
-# include <KStatusBar>
-# include <KToggleFullScreenAction>
-# include <KToolBar>
-#endif
-
#ifdef HAVE_KF5
# include <KConfigWidgets/KStandardAction>
# include <KXmlGui/KHelpMenu>
#include "coreinfodlg.h"
#include "contextmenuactionprovider.h"
#include "debugbufferviewoverlay.h"
-#include "debuglogwidget.h"
+#include "debuglogdlg.h"
#include "debugmessagemodelfilter.h"
#include "flatproxymodel.h"
#include "icon.h"
#include "qtuisettings.h"
#include "qtuistyle.h"
#include "receivefiledlg.h"
+#include "resourcetreedlg.h"
#include "settingsdlg.h"
#include "settingspagedlg.h"
#include "statusnotifieritem.h"
# ifdef HAVE_QTMULTIMEDIA
# include "qtmultimedianotificationbackend.h"
# endif
-# ifdef HAVE_PHONON
-# include "phononnotificationbackend.h"
-# endif
# include "systraynotificationbackend.h"
# include "taskbarnotificationbackend.h"
#else /* HAVE_KDE */
# include "sslinfodlg.h"
#endif
-#ifdef HAVE_INDICATEQT
- #include "indicatornotificationbackend.h"
-#endif
-
#ifdef HAVE_NOTIFICATION_CENTER
#include "osxnotificationbackend.h"
#endif
#endif
_msgProcessorStatusWidget(new MsgProcessorStatusWidget(this)),
_coreConnectionStatusWidget(new CoreConnectionStatusWidget(Client::coreConnection(), this)),
- _titleSetter(this),
- _awayLog(0),
- _layoutLoaded(false),
- _activeBufferViewIndex(-1),
- _aboutToQuit(false)
+ _titleSetter(this)
{
setAttribute(Qt::WA_DeleteOnClose, false); // we delete the mainwin manually
#ifndef HAVE_KDE
# ifdef HAVE_QTMULTIMEDIA
QtUi::registerNotificationBackend(new QtMultimediaNotificationBackend(this));
-# endif
-# ifdef HAVE_PHONON
- QtUi::registerNotificationBackend(new PhononNotificationBackend(this));
# endif
QtUi::registerNotificationBackend(new TaskbarNotificationBackend(this));
#else /* HAVE_KDE */
QtUi::registerNotificationBackend(new SystrayNotificationBackend(this));
#endif
-#ifdef HAVE_INDICATEQT
- QtUi::registerNotificationBackend(new IndicatorNotificationBackend(this));
-#endif
-
#ifdef HAVE_NOTIFICATION_CENTER
QtUi::registerNotificationBackend(new OSXNotificationBackend(this));
#endif
connect(lockAct, SIGNAL(toggled(bool)), SLOT(on_actionLockLayout_toggled(bool)));
coll->addAction("ToggleSearchBar", new Action(icon::get("edit-find"), tr("Show &Search Bar"), coll,
- 0, 0, QKeySequence::Find))->setCheckable(true);
+ nullptr, nullptr, QKeySequence::Find))->setCheckable(true);
coll->addAction("ShowAwayLog", new Action(tr("Show Away Log"), coll,
this, SLOT(showAwayLog())));
coll->addAction("ToggleMenuBar", new Action(icon::get("show-menu"), tr("Show &Menubar"), coll,
- 0, 0))->setCheckable(true);
+ nullptr, nullptr))->setCheckable(true);
coll->addAction("ToggleStatusBar", new Action(tr("Show Status &Bar"), coll,
- 0, 0))->setCheckable(true);
+ nullptr, nullptr))->setCheckable(true);
#ifdef HAVE_KDE
_fullScreenAction = KStandardAction::fullScreen(this, SLOT(onFullScreenToggled()), this, coll);
this, SLOT(on_actionDebugHotList_triggered())));
coll->addAction("DebugLog", new Action(icon::get("tools-report-bug"), tr("Debug &Log"), coll,
this, SLOT(on_actionDebugLog_triggered())));
+ coll->addAction("ShowResourceTree", new Action(icon::get("tools-report-bug"), tr("Show &Resource Tree"), coll,
+ this, SLOT(on_actionShowResourceTree_triggered())));
coll->addAction("ReloadStyle", new Action(icon::get("view-refresh"), tr("Reload Stylesheet"), coll,
QtUi::style(), SLOT(reload()), QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_R)));
_helpDebugMenu->addAction(coll->action("DebugMessageModel"));
_helpDebugMenu->addAction(coll->action("DebugHotList"));
_helpDebugMenu->addAction(coll->action("DebugLog"));
+ _helpDebugMenu->addAction(coll->action("ShowResourceTree"));
_helpDebugMenu->addSeparator();
_helpDebugMenu->addAction(coll->action("ReloadStyle"));
return;
config->setLocked(QtUiSettings().value("LockLayout", false).toBool());
- BufferViewDock *dock = new BufferViewDock(config, this);
+ auto *dock = new BufferViewDock(config, this);
//create the view and initialize it's filter
- BufferView *view = new BufferView(dock);
+ auto *view = new BufferView(dock);
view->setFilteredModel(Client::bufferModel(), config);
view->installEventFilter(_inputWidget); // for key presses
// since this isn't our fault and we can't do anything about it, we suppress the resulting calls
return;
}
- QAction *action = qobject_cast<QAction *>(sender());
+ auto *action = qobject_cast<QAction *>(sender());
Q_ASSERT(action);
- BufferViewDock *dock = qobject_cast<BufferViewDock *>(action->parent());
+ auto *dock = qobject_cast<BufferViewDock *>(action->parent());
Q_ASSERT(dock);
// Make sure we don't toggle backlog fetch for a view we've already removed
void MainWin::bufferViewVisibilityChanged(bool visible)
{
Q_UNUSED(visible);
- BufferViewDock *dock = qobject_cast<BufferViewDock *>(sender());
+ auto *dock = qobject_cast<BufferViewDock *>(sender());
Q_ASSERT(dock);
if ((!dock->isHidden() && !activeBufferView()) || (dock->isHidden() && dock->isActive()))
nextBufferView();
// "All Buffers" is always the first dock created
if (_bufferViews.count() > 0)
return _bufferViews[0]->bufferView();
- return 0;
+ return nullptr;
}
BufferView *MainWin::activeBufferView() const
{
if (_activeBufferViewIndex < 0 || _activeBufferViewIndex >= _bufferViews.count())
- return 0;
+ return nullptr;
BufferViewDock *dock = _bufferViews.at(_activeBufferViewIndex);
- return dock->isActive() ? dock->bufferView() : 0;
+ return dock->isActive() ? dock->bufferView() : nullptr;
}
void MainWin::showPasswordChangeDlg()
{
if(Client::isCoreFeatureEnabled(Quassel::Feature::PasswordChange)) {
- PasswordChangeDlg dlg(this);
- dlg.exec();
+ PasswordChangeDlg{}.exec();
}
else {
QMessageBox box(QMessageBox::Warning, tr("Feature Not Supported"),
tr("<b>Your Quassel Core does not support this feature</b>"),
- QMessageBox::Ok, this);
+ QMessageBox::Ok);
box.setInformativeText(tr("You need a Quassel Core v0.12.0 or newer in order to be able to remotely change your password."));
box.exec();
}
QMessageBox box(QMessageBox::Critical,
tr("Fatal error"),
"<b>" + tr("Quassel encountered a fatal error and is terminated.") + "</b>",
- QMessageBox::Ok, this);
+ QMessageBox::Ok);
box.setInformativeText("<p>" + tr("Reason:<em>") + " " + reason + "</em>");
box.exec();
}
void MainWin::showNotificationsDlg()
{
- SettingsPageDlg dlg(new NotificationsSettingsPage(this), this);
- dlg.exec();
+ SettingsPageDlg{new NotificationsSettingsPage{}}.exec();
}
void MainWin::on_actionConfigureNetworks_triggered()
{
- SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
- dlg.exec();
+ SettingsPageDlg{new NetworksSettingsPage{}}.exec();
}
void MainWin::on_actionConfigureViews_triggered()
{
- SettingsPageDlg dlg(new BufferViewSettingsPage(this), this);
- dlg.exec();
+ SettingsPageDlg{new BufferViewSettingsPage{}}.exec();
}
VerticalDock *dock = new VerticalDock(tr("Chat Monitor"), this);
dock->setObjectName("ChatMonitorDock");
- ChatMonitorFilter *filter = new ChatMonitorFilter(Client::messageModel(), this);
+ auto *filter = new ChatMonitorFilter(Client::messageModel(), this);
_chatMonitorView = new ChatMonitorView(filter, this);
_chatMonitorView->show();
dock->setWidget(_chatMonitorView);
void MainWin::setupHotList()
{
- FlatProxyModel *flatProxy = new FlatProxyModel(this);
+ auto *flatProxy = new FlatProxyModel(this);
flatProxy->setSourceModel(Client::bufferModel());
_bufferHotList = new BufferHotListFilter(flatProxy);
}
void MainWin::userAuthenticationRequired(CoreAccount *account, bool *valid, const QString &errorMessage)
{
Q_UNUSED(errorMessage)
- CoreConnectAuthDlg dlg(account, this);
+ CoreConnectAuthDlg dlg(account);
*valid = (dlg.exec() == QDialog::Accepted);
}
void MainWin::handleNoSslInClient(bool *accepted)
{
QMessageBox box(QMessageBox::Warning, tr("Unencrypted Connection"), tr("<b>Your client does not support SSL encryption</b>"),
- QMessageBox::Ignore|QMessageBox::Cancel, this);
+ QMessageBox::Ignore|QMessageBox::Cancel);
box.setInformativeText(tr("Sensitive data, like passwords, will be transmitted unencrypted to your Quassel core."));
box.setDefaultButton(QMessageBox::Ignore);
*accepted = box.exec() == QMessageBox::Ignore;
void MainWin::handleNoSslInCore(bool *accepted)
{
QMessageBox box(QMessageBox::Warning, tr("Unencrypted Connection"), tr("<b>Your core does not support SSL encryption</b>"),
- QMessageBox::Ignore|QMessageBox::Cancel, this);
+ QMessageBox::Ignore|QMessageBox::Cancel);
box.setInformativeText(tr("Sensitive data, like passwords, will be transmitted unencrypted to your Quassel core."));
box.setDefaultButton(QMessageBox::Ignore);
*accepted = box.exec() == QMessageBox::Ignore;
QMessageBox box(QMessageBox::Warning,
tr("Untrusted Security Certificate"),
tr("<b>The SSL certificate provided by the core at %1 is untrusted for the following reasons:</b>").arg(socket->peerName()),
- QMessageBox::Cancel, this);
+ QMessageBox::Cancel);
box.setInformativeText(errorString);
box.addButton(tr("Continue"), QMessageBox::AcceptRole);
box.setDefaultButton(box.addButton(tr("Show Certificate"), QMessageBox::HelpRole));
box.exec();
role = box.buttonRole(box.clickedButton());
if (role == QMessageBox::HelpRole) {
- SslInfoDlg dlg(socket, this);
+ SslInfoDlg dlg(socket);
dlg.exec();
}
}
QMessageBox box2(QMessageBox::Warning,
tr("Untrusted Security Certificate"),
tr("Would you like to accept this certificate forever without being prompted?"),
- 0, this);
+ 0);
box2.setDefaultButton(box2.addButton(tr("Current Session Only"), QMessageBox::NoRole));
box2.addButton(tr("Forever"), QMessageBox::YesRole);
box2.exec();
void MainWin::showCoreConnectionDlg()
{
- CoreConnectDlg dlg(this);
+ CoreConnectDlg dlg;
if (dlg.exec() == QDialog::Accepted) {
AccountId accId = dlg.selectedAccount();
if (accId.isValid())
void MainWin::showCoreConfigWizard(const QVariantList &backends, const QVariantList &authenticators)
{
- CoreConfigWizard *wizard = new CoreConfigWizard(Client::coreConnection(), backends, authenticators, this);
+ auto *wizard = new CoreConfigWizard(Client::coreConnection(), backends, authenticators, this);
wizard->show();
}
void MainWin::showChannelList(NetworkId netId, const QString &channelFilters, bool listImmediately)
{
if (!netId.isValid()) {
- QAction *action = qobject_cast<QAction *>(sender());
+ auto *action = qobject_cast<QAction *>(sender());
if (action)
netId = action->data().value<NetworkId>();
if (!netId.isValid()) {
// on the client homescreen when no networks are connected.
QMessageBox box(QMessageBox::Information, tr("No network selected"),
QString("<b>%1</b>").arg(tr("No network selected")),
- QMessageBox::Ok, this);
+ QMessageBox::Ok);
box.setInformativeText(tr("Select a network before trying to view the channel list."));
box.exec();
return;
}
}
- ChannelListDlg *channelListDlg = new ChannelListDlg(this);
+ auto *channelListDlg = new ChannelListDlg(this);
channelListDlg->setAttribute(Qt::WA_DeleteOnClose);
channelListDlg->setNetwork(netId);
if (!channelFilters.isEmpty()) {
void MainWin::showNetworkConfig(NetworkId netId)
{
- SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
+ SettingsPageDlg dlg{new NetworksSettingsPage{}};
if (netId.isValid())
qobject_cast<NetworksSettingsPage *>(dlg.currentPage())->bufferList_Open(netId);
dlg.exec();
void MainWin::showIgnoreList(QString newRule)
{
- SettingsPageDlg dlg(new IgnoreListSettingsPage(this), this);
+ SettingsPageDlg dlg{new IgnoreListSettingsPage{}};
// prepare config dialog for new rule
if (!newRule.isEmpty())
qobject_cast<IgnoreListSettingsPage *>(dlg.currentPage())->editIgnoreRule(newRule);
void MainWin::showCoreInfoDlg()
{
- CoreInfoDlg(this).exec();
+ CoreInfoDlg{}.exec();
}
{
if (_awayLog)
return;
- AwayLogFilter *filter = new AwayLogFilter(Client::messageModel());
- _awayLog = new AwayLogView(filter, 0);
+ auto *filter = new AwayLogFilter(Client::messageModel());
+ _awayLog = new AwayLogView(filter, nullptr);
filter->setParent(_awayLog);
connect(_awayLog, SIGNAL(destroyed()), this, SLOT(awayLogDestroyed()));
_awayLog->setAttribute(Qt::WA_DeleteOnClose);
void MainWin::awayLogDestroyed()
{
- _awayLog = 0;
+ _awayLog = nullptr;
}
void MainWin::showSettingsDlg()
{
- SettingsDlg *dlg = new SettingsDlg();
+ auto *dlg = new SettingsDlg();
//Category: Interface
dlg->registerSettingsPage(new AppearanceSettingsPage(dlg));
void MainWin::showAboutDlg()
{
- AboutDlg(this).exec();
+ AboutDlg{}.exec();
}
void MainWin::showShortcutsDlg()
{
#ifdef HAVE_KDE
- KShortcutsDialog dlg(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsDisallowed, this);
+ KShortcutsDialog dlg(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsDisallowed);
foreach(KActionCollection *coll, QtUi::actionCollections())
dlg.addCollection(coll, coll->property("Category").toString());
dlg.configure(true);
#else
- SettingsPageDlg dlg(new ShortcutsSettingsPage(QtUi::actionCollections(), this), this);
- dlg.exec();
+ SettingsPageDlg{new ShortcutsSettingsPage{QtUi::actionCollections()}}.exec();
#endif
}
auto transfer = Client::transferManager()->transfer(transferId);
if (transfer) {
if (transfer->status() == Transfer::Status::New) {
- ReceiveFileDlg *dlg = new ReceiveFileDlg(transfer, this);
+ auto *dlg = new ReceiveFileDlg(transfer, this);
dlg->show();
}
}
void MainWin::closeEvent(QCloseEvent *event)
{
QtUiSettings s;
- QtUiApplication *app = qobject_cast<QtUiApplication *> qApp;
+ auto *app = qobject_cast<QtUiApplication *> qApp;
Q_ASSERT(app);
// On OSX it can happen that the closeEvent occurs twice. (Especially if packaged with Frameworks)
// This messes up MainWinState/MainWinHidden save/restore.
{
Q_UNUSED(parent);
- bool hasFocus = QApplication::activeWindow() != 0;
+ bool hasFocus = QApplication::activeWindow() != nullptr;
for (int i = start; i <= end; i++) {
QModelIndex idx = Client::messageModel()->index(i, ChatLineModel::ContentsColumn);
void MainWin::clientNetworkCreated(NetworkId id)
{
const Network *net = Client::network(id);
- QAction *act = new QAction(net->networkName(), this);
+ auto *act = new QAction(net->networkName(), this);
act->setObjectName(QString("NetworkAction-%1").arg(id.toInt()));
act->setData(QVariant::fromValue<NetworkId>(id));
connect(net, SIGNAL(updatedRemotely()), this, SLOT(clientNetworkUpdated()));
connect(act, SIGNAL(triggered()), this, SLOT(connectOrDisconnectFromNet()));
- QAction *beforeAction = 0;
+ QAction *beforeAction = nullptr;
foreach(QAction *action, _networksMenu->actions()) {
if (!action->data().isValid()) // ignore stock actions
continue;
void MainWin::clientNetworkUpdated()
{
- const Network *net = qobject_cast<const Network *>(sender());
+ const auto *net = qobject_cast<const Network *>(sender());
if (!net)
return;
- QAction *action = findChild<QAction *>(QString("NetworkAction-%1").arg(net->networkId().toInt()));
+ auto *action = findChild<QAction *>(QString("NetworkAction-%1").arg(net->networkId().toInt()));
if (!action)
return;
void MainWin::clientNetworkRemoved(NetworkId id)
{
- QAction *action = findChild<QAction *>(QString("NetworkAction-%1").arg(id.toInt()));
+ auto *action = findChild<QAction *>(QString("NetworkAction-%1").arg(id.toInt()));
if (!action)
return;
void MainWin::connectOrDisconnectFromNet()
{
- QAction *act = qobject_cast<QAction *>(sender());
+ auto *act = qobject_cast<QAction *>(sender());
if (!act) return;
const Network *net = Client::network(act->data().value<NetworkId>());
if (!net) return;
void MainWin::onJumpKey()
{
- QAction *action = qobject_cast<QAction *>(sender());
+ auto *action = qobject_cast<QAction *>(sender());
if (!action || !Client::bufferModel())
return;
int idx = action->property("Index").toInt();
void MainWin::bindJumpKey()
{
- QAction *action = qobject_cast<QAction *>(sender());
+ auto *action = qobject_cast<QAction *>(sender());
if (!action || !Client::bufferModel())
return;
int idx = action->property("Index").toInt();
void MainWin::on_actionDebugNetworkModel_triggered()
{
- QTreeView *view = new QTreeView;
+ auto *view = new QTreeView;
view->setAttribute(Qt::WA_DeleteOnClose);
view->setWindowTitle("Debug NetworkModel View");
view->setModel(Client::networkModel());
_bufferHotList->invalidate();
_bufferHotList->sort(0, Qt::DescendingOrder);
- QTreeView *view = new QTreeView;
+ auto *view = new QTreeView;
view->setAttribute(Qt::WA_DeleteOnClose);
view->setModel(_bufferHotList);
view->show();
void MainWin::on_actionDebugBufferViewOverlay_triggered()
{
- DebugBufferViewOverlay *overlay = new DebugBufferViewOverlay(0);
+ auto *overlay = new DebugBufferViewOverlay(nullptr);
overlay->setAttribute(Qt::WA_DeleteOnClose);
overlay->show();
}
void MainWin::on_actionDebugMessageModel_triggered()
{
- QTableView *view = new QTableView(0);
- DebugMessageModelFilter *filter = new DebugMessageModelFilter(view);
+ auto *view = new QTableView(nullptr);
+ auto *filter = new DebugMessageModelFilter(view);
filter->setSourceModel(Client::messageModel());
view->setModel(filter);
view->setAttribute(Qt::WA_DeleteOnClose, true);
void MainWin::on_actionDebugLog_triggered()
{
- DebugLogWidget *logWidget = new DebugLogWidget(nullptr); // will be deleted on close
- logWidget->show();
+ auto dlg = new DebugLogDlg(this); // will be deleted on close
+ dlg->show();
}
+void MainWin::on_actionShowResourceTree_triggered()
+{
+ auto dlg = new ResourceTreeDlg(this); // will be deleted on close
+ dlg->show();
+}
void MainWin::showStatusBarMessage(const QString &message)
{