/***************************************************************************
- * Copyright (C) 2005-2013 by the Quassel Project *
+ * Copyright (C) 2005-2014 by the Quassel Project *
* devel@quassel-irc.org *
* *
* This program is free software; you can redistribute it and/or modify *
#include "clientbufferviewconfig.h"
#include "clientbufferviewmanager.h"
#include "clientignorelistmanager.h"
+#include "clienttransfer.h"
+#include "clienttransfermanager.h"
#include "coreconfigwizard.h"
#include "coreconnectdlg.h"
#include "coreconnection.h"
#include "qtuimessageprocessor.h"
#include "qtuisettings.h"
#include "qtuistyle.h"
+#include "receivefiledlg.h"
#include "settingsdlg.h"
#include "settingspagedlg.h"
#include "statusnotifieritem.h"
void MainWin::updateIcon()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
const int size = 128;
#else
const int size = 48;
0, 0))->setCheckable(true);
#ifdef HAVE_KDE
- QAction *fullScreenAct = KStandardAction::fullScreen(this, SLOT(toggleFullscreen()), this, coll);
+ QAction *fullScreenAct = KStandardAction::fullScreen(this, SLOT(onFullScreenToggled()), this, coll);
#else
QAction *fullScreenAct = new Action(SmallIcon("view-fullscreen"), tr("&Full Screen Mode"), coll,
- this, SLOT(toggleFullscreen()), QKeySequence(Qt::Key_F11));
+ this, SLOT(onFullScreenToggled()), QKeySequence(Qt::Key_F11));
fullScreenAct->setCheckable(true);
#endif
- coll->addAction("ToggleFullscreen", fullScreenAct);
+ coll->addAction("ToggleFullScreen", fullScreenAct);
// Settings
QAction *configureShortcutsAct = new Action(SmallIcon("configure-shortcuts"), tr("Configure &Shortcuts..."), coll,
configureShortcutsAct->setMenuRole(QAction::NoRole);
coll->addAction("ConfigureShortcuts", configureShortcutsAct);
- #ifdef Q_WS_MAC
+ #ifdef Q_OS_MAC
QAction *configureQuasselAct = new Action(SmallIcon("configure"), tr("&Configure Quassel..."), coll,
this, SLOT(showSettingsDlg()));
configureQuasselAct->setMenuRole(QAction::PreferencesRole);
this, SLOT(on_jumpHotBuffer_triggered()), QKeySequence(Qt::META + Qt::Key_A)));
// Jump keys
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
const int bindModifier = Qt::ControlModifier | Qt::AltModifier;
const int jumpModifier = Qt::ControlModifier;
#else
void MainWin::setupViewMenuTail()
{
_viewMenu->addSeparator();
- _viewMenu->addAction(QtUi::actionCollection("General")->action("ToggleFullscreen"));
+ _viewMenu->addAction(QtUi::actionCollection("General")->action("ToggleFullScreen"));
}
connect(_nickListWidget, SIGNAL(nickSelectionChanged(QModelIndexList)),
QtUi::toolBarActionProvider(), SLOT(nickSelectionChanged(QModelIndexList)));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
setUnifiedTitleAndToolBarOnMac(true);
#endif
QtUi::toolBarActionProvider()->addActions(_mainToolBar, ToolBarActionProvider::MainToolBar);
_toolbarMenu->addAction(_mainToolBar->toggleViewAction());
+
+#ifdef Q_OS_MAC
+ QtUiSettings uiSettings;
+
+ bool visible = uiSettings.value("ShowMainToolBar", QVariant(true)).toBool();
+ _mainToolBar->setVisible(visible);
+ connect(_mainToolBar, SIGNAL(visibilityChanged(bool)), this, SLOT(saveMainToolBarStatus(bool)));
+#endif
+}
+
+#ifdef Q_OS_MAC
+void MainWin::saveMainToolBarStatus(bool enabled)
+{
+ QtUiSettings uiSettings;
+ uiSettings.setValue("ShowMainToolBar", enabled);
}
+#endif
void MainWin::connectedToCore()
connect(Client::bufferViewManager(), SIGNAL(bufferViewConfigDeleted(int)), this, SLOT(removeBufferView(int)));
connect(Client::bufferViewManager(), SIGNAL(initDone()), this, SLOT(loadLayout()));
+ connect(Client::transferManager(), SIGNAL(transferAdded(const ClientTransfer*)), SLOT(showNewTransferDlg(const ClientTransfer*)));
+
setConnectedState();
}
}
-void MainWin::toggleFullscreen()
+void MainWin::showNewTransferDlg(const ClientTransfer *transfer)
+{
+ ReceiveFileDlg *dlg = new ReceiveFileDlg(transfer, this);
+ dlg->show();
+}
+
+
+void MainWin::onFullScreenToggled()
{
- if (isFullScreen())
- showNormal();
+ // Relying on QWidget::isFullScreen is discouraged, see the KToggleFullScreenAction docs
+ // Also, one should not use showFullScreen() or showNormal(), as those reset all other window flags
+
+ QAction *action = QtUi::actionCollection("General")->action("ToggleFullScreen");
+ if (!action)
+ return;
+
+#ifdef HAVE_KDE
+ KToggleFullScreenAction *kAct = static_cast<KToggleFullScreenAction *>(action);
+ kAct->setFullScreen(this, kAct->isChecked());
+#else
+ if (action->isChecked())
+ setWindowState(windowState() | Qt::WindowFullScreen);
else
- showFullScreen();
+ setWindowState(windowState() & ~Qt::WindowFullScreen);
+#endif
}
bool MainWin::event(QEvent *event)
{
- if (event->type() == QEvent::WindowActivate) {
- BufferId buffer = Client::bufferModel()->currentBuffer();
- if (buffer.isValid())
- Client::instance()->markBufferAsRead(buffer);
+ switch(event->type()) {
+ case QEvent::WindowActivate: {
+ BufferId bufferId = Client::bufferModel()->currentBuffer();
+ if (bufferId.isValid())
+ Client::instance()->markBufferAsRead(bufferId);
+ break;
+ }
+ case QEvent::WindowDeactivate:
+ if (bufferWidget()->autoMarkerLineOnLostFocus())
+ bufferWidget()->setMarkerLine();
+ break;
+ default:
+ break;
}
return QMainWindow::event(event);
}
if (!_bufferHotList->rowCount())
return;
- QModelIndex topIndex = _bufferHotList->index(0, 0);
- BufferId bufferId = _bufferHotList->data(topIndex, NetworkModel::BufferIdRole).value<BufferId>();
- Client::bufferModel()->switchToBuffer(bufferId);
+ Client::bufferModel()->switchToBuffer(_bufferHotList->hottestBuffer());
}
void MainWin::on_actionDebugHotList_triggered()
{
+ _bufferHotList->invalidate();
+ _bufferHotList->sort(0, Qt::DescendingOrder);
+
QTreeView *view = new QTreeView;
view->setAttribute(Qt::WA_DeleteOnClose);
view->setModel(_bufferHotList);