#include <QMenuBar>
#include <QMessageBox>
#include <QStatusBar>
+#include <QTableView>
#include <QToolBar>
#include <QInputDialog>
#include "statusnotifieritem.h"
#include "toolbaractionprovider.h"
#include "topicwidget.h"
+#include "transfermodel.h"
#include "verticaldock.h"
#ifndef HAVE_KDE
#include "settingspages/connectionsettingspage.h"
#include "settingspages/coreaccountsettingspage.h"
#include "settingspages/coreconnectionsettingspage.h"
+#include "settingspages/dccsettingspage.h"
#include "settingspages/highlightsettingspage.h"
#include "settingspages/identitiessettingspage.h"
#include "settingspages/ignorelistsettingspage.h"
setupActions();
setupBufferWidget();
setupMenus();
+ setupTransferWidget();
+ setupChatMonitor();
setupTopicWidget();
- setupNickWidget();
setupInputWidget();
- setupChatMonitor();
+ setupNickWidget();
setupViewMenuTail();
setupStatusBar();
setupToolBars();
setupTitleSetter();
setupHotList();
+ _bufferWidget->setFocusProxy(_inputWidget);
+ _chatMonitorView->setFocusProxy(_inputWidget);
+
#ifndef HAVE_KDE
# ifdef HAVE_QTMULTIMEDIA
QtUi::registerNotificationBackend(new QtMultimediaNotificationBackend(this));
ChatMonitorFilter *filter = new ChatMonitorFilter(Client::messageModel(), this);
_chatMonitorView = new ChatMonitorView(filter, this);
- _chatMonitorView->setFocusProxy(_inputWidget);
_chatMonitorView->show();
dock->setWidget(_chatMonitorView);
dock->hide();
_inputWidget->setModel(Client::bufferModel());
_inputWidget->setSelectionModel(Client::bufferModel()->standardSelectionModel());
- _bufferWidget->setFocusProxy(_inputWidget);
-
_inputWidget->inputLine()->installEventFilter(_bufferWidget);
connect(_topicWidget, SIGNAL(switchedPlain()), _bufferWidget, SLOT(setFocus()));
}
+void MainWin::setupTransferWidget()
+{
+ auto dock = new QDockWidget(tr("Transfers"), this);
+ dock->setObjectName("TransferDock");
+ dock->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
+
+ auto view = new QTableView(dock); // to be replaced by the real thing
+ view->setModel(Client::transferModel());
+ dock->setWidget(view);
+ dock->hide(); // hidden by default
+ addDockWidget(Qt::TopDockWidgetArea, dock, Qt::Vertical);
+
+ auto action = dock->toggleViewAction();
+ action->setText(tr("Show File Transfers"));
+ action->setIcon(QIcon::fromTheme("download"));
+ action->setShortcut(QKeySequence(Qt::Key_F6));
+ QtUi::actionCollection("General")->addAction("ShowTransferWidget", action);
+ _viewMenu->addAction(action);
+}
+
+
void MainWin::setupViewMenuTail()
{
_viewMenu->addSeparator();
QtUi::toolBarActionProvider()->addActions(_mainToolBar, ToolBarActionProvider::MainToolBar);
_toolbarMenu->addAction(_mainToolBar->toggleViewAction());
+#ifdef HAVE_KDE
+ _nickToolBar = new KToolBar("NickToolBar", this, Qt::TopToolBarArea, false, true, true);
+#else
+ _nickToolBar = new QToolBar(this);
+ _nickToolBar->setObjectName("NickToolBar");
+#endif
+ _nickToolBar->setWindowTitle(tr("Nick Toolbar"));
+ _nickToolBar->setVisible(false); //default: not visible
+ addToolBar(_nickToolBar);
+
+ QtUi::toolBarActionProvider()->addActions(_nickToolBar, ToolBarActionProvider::NickToolBar);
+ _toolbarMenu->addAction(_nickToolBar->toggleViewAction());
+
#ifdef Q_OS_MAC
QtUiSettings uiSettings;
connect(Client::bufferViewManager(), SIGNAL(bufferViewConfigDeleted(int)), this, SLOT(removeBufferView(int)));
connect(Client::bufferViewManager(), SIGNAL(initDone()), this, SLOT(loadLayout()));
- connect(Client::transferManager(), SIGNAL(transferAdded(QUuid)), SLOT(showNewTransferDlg(QUuid)));
+ if (Client::transferManager()) {
+ connect(Client::transferManager(), SIGNAL(transferAdded(QUuid)), SLOT(showNewTransferDlg(QUuid)));
+ }
setConnectedState();
}
dlg->registerSettingsPage(new NetworksSettingsPage(dlg));
dlg->registerSettingsPage(new AliasesSettingsPage(dlg));
dlg->registerSettingsPage(new IgnoreListSettingsPage(dlg));
+ dlg->registerSettingsPage(new DccSettingsPage(dlg));
// Category: Remote Cores
if (Quassel::runMode() != Quassel::Monolithic) {
{
auto transfer = Client::transferManager()->transfer(transferId);
if (transfer) {
- ReceiveFileDlg *dlg = new ReceiveFileDlg(transfer, this);
- dlg->show();
+ if (transfer->status() == Transfer::Status::New) {
+ ReceiveFileDlg *dlg = new ReceiveFileDlg(transfer, this);
+ dlg->show();
+ }
}
else {
qWarning() << "Unknown transfer ID" << transferId;