Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikkel Krautz <mikkel@krautz.dk>2016-12-04 02:35:34 +0300
committerGitHub <noreply@github.com>2016-12-04 02:35:34 +0300
commite596b72b9ec45bff38d541675f941b663c3333da (patch)
tree592b2fc51cf08a0ebfc7169a56f939961b1cbddc
parent7dd03f3959b6f3994dace742f2a673c59b867ed1 (diff)
parent95a666d85508a00b654c542d40a9d35e7a8c4ada (diff)
Merge PR #2694: ConfigDialog_macx, mumble.pro: extra cleanups after removal in PR #2693.
-rw-r--r--src/mumble/ConfigDialog_macx.mm277
-rw-r--r--src/mumble/mumble.pro2
2 files changed, 1 insertions, 278 deletions
diff --git a/src/mumble/ConfigDialog_macx.mm b/src/mumble/ConfigDialog_macx.mm
deleted file mode 100644
index 95c3f7229..000000000
--- a/src/mumble/ConfigDialog_macx.mm
+++ /dev/null
@@ -1,277 +0,0 @@
-// Copyright 2005-2016 The Mumble Developers. All rights reserved.
-// Use of this source code is governed by a BSD-style license
-// that can be found in the LICENSE file at the root of the
-// Mumble source tree or at <https://www.mumble.info/LICENSE>.
-
-#include "mumble_pch.hpp"
-
-#include "ConfigDialog_macx.h"
-#include "AudioInput.h"
-#include "AudioOutput.h"
-
-#import "ConfigDialogDelegate.h"
-
-#include "Global.h"
-
-#if QT_VERSION >= 0x050000
-#include <qpa/qplatformnativeinterface.h>
-
-static NSWindow *qt_mac_window_for(QWidget *w) {
- QWindow *window = w->windowHandle();
- if (window) {
- return static_cast<NSWindow *>(QGuiApplication::platformNativeInterface()->nativeResourceForWindow("nswindow", window));
- }
- return nil;
-}
-#endif
-
-class QWidgetPrivate {
- public:
- void updateFrameStrut();
-};
-
-/*
- * This file implements the Mumble configuration dialog on Mac OS X.
- *
- * It implements a Mac OS X-style Preferences window (a toolbar at the
- * top of the window that blends in with the rest of the window, that
- * allows each item to be selected independently.)
- */
-
-ConfigDialogMac::ConfigDialogMac(QWidget *p) : QDialog(p) {
- setupUi(this);
-
- s = g.s;
-
- /* Hide widgets we don't use on the Cocoa config dialog. */
- qcbExpert->hide();
- qlwIcons->hide();
-
- unsigned int idx = 0;
- ConfigWidgetNew cwn;
- foreach(cwn, *ConfigRegistrar::c_qmNew) {
- addPage(cwn(s), idx++);
- }
-
- QPushButton *okButton = dialogButtonBox->button(QDialogButtonBox::Ok);
- okButton->setToolTip(tr("Accept changes"));
- okButton->setWhatsThis(tr("This button will accept current settings and return to the application.<br />"
- "The settings will be stored to disk when you leave the application."));
-
- QPushButton *cancelButton = dialogButtonBox->button(QDialogButtonBox::Cancel);
- cancelButton->setToolTip(tr("Reject changes"));
- cancelButton->setWhatsThis(tr("This button will reject all changes and return to the application.<br />"
- "The settings will be reset to the previous positions."));
-
- QPushButton *applyButton = dialogButtonBox->button(QDialogButtonBox::Apply);
- applyButton->setToolTip(tr("Apply changes"));
- applyButton->setWhatsThis(tr("This button will immediately apply all changes."));
-
- QPushButton *resetButton = pageButtonBox->button(QDialogButtonBox::Reset);
- resetButton->setToolTip(tr("Undo changes for current page"));
- resetButton->setWhatsThis(tr("This button will revert any changes done on the current page to the most recent applied settings."));
-
- QPushButton *restoreButton = pageButtonBox->button(QDialogButtonBox::RestoreDefaults);
- restoreButton->setToolTip(tr("Restore defaults for current page"));
- restoreButton->setWhatsThis(tr("This button will restore the defaults for the settings on the current page. Other pages will not be changed.<br />"
- "To restore all settings to their defaults, you will have to use this button on every page."
- ));
-
-#if QT_VERSION >= 0x050000
- QTimer::singleShot(0, this, SLOT(delayedInit()));
-#else
- delayedInit();
-#endif
-}
-
-void ConfigDialogMac::delayedInit() {
- updateExpert(g.s.bExpert);
-
- if (! g.s.qbaConfigGeometry.isEmpty())
- restoreGeometry(g.s.qbaConfigGeometry);
-}
-
-void ConfigDialogMac::addPage(ConfigWidget *cw, unsigned int idx) {
- QDesktopWidget dw;
-
- int w = INT_MAX, h = INT_MAX;
-
- for (int i=0;i<dw.numScreens();++i) {
- QRect ds=dw.availableGeometry(i);
- if (ds.isValid()) {
- w = qMin(w, ds.width());
- h = qMin(h, ds.height());
- }
- }
-
- QSize ms=cw->minimumSizeHint();
- cw->resize(ms);
- cw->setMinimumSize(ms);
-
- ms.rwidth() += 128;
- ms.rheight() += 192;
- if ((ms.width() > w) || (ms.height() > h)) {
- QScrollArea *qsa=new QScrollArea();
- qsa->setFrameShape(QFrame::NoFrame);
- qsa->setWidgetResizable(true);
- qsa->setWidget(cw);
- qhPages.insert(cw, qsa);
- qswPages->addWidget(qsa);
- } else {
- qhPages.insert(cw, cw);
- qswPages->addWidget(cw);
- }
- qmWidgets.insert(idx, cw);
- cw->load(g.s);
-}
-
-ConfigDialogMac::~ConfigDialogMac() {
- foreach(QWidget *qw, qhPages)
- delete qw;
-
- removeMacToolbar();
-}
-
-void ConfigDialogMac::on_pageButtonBox_clicked(QAbstractButton *b) {
- ConfigWidget *conf = qobject_cast<ConfigWidget *>(qswPages->currentWidget());
- if (! conf) {
- QScrollArea *qsa = qobject_cast<QScrollArea *>(qswPages->currentWidget());
- if (qsa)
- conf = qobject_cast<ConfigWidget *>(qsa->widget());
- }
- if (! conf)
- return;
- switch (pageButtonBox->standardButton(b)) {
- case QDialogButtonBox::RestoreDefaults: {
- Settings def;
- def.bExpert = g.s.bExpert;
- conf->load(def);
- break;
- }
- case QDialogButtonBox::Reset: {
- conf->load(g.s);
- break;
- }
- default:
- break;
- }
-}
-
-void ConfigDialogMac::on_dialogButtonBox_clicked(QAbstractButton *b) {
- switch (dialogButtonBox->standardButton(b)) {
- case QDialogButtonBox::Apply: {
- apply();
- break;
- }
- default:
- break;
- }
-}
-
-void ConfigDialogMac::setupMacToolbar(bool expert) {
- this->winId();
- NSWindow *window = qt_mac_window_for(this);
-
- /* Allocate a NSToolbar for our Config Dialog. Most programs on Mac OS X use Preferences dialogs
- with a toolbar on top, so this makes Mumble fit in well with native Mac apps.
-
- The identifier string is simply an unique string for this particular toolbar. The OS will graphically
- synchronize toolbars with the same identifier, so that if multiple NSToolbars with the same identifier
- are used within the same application, they all stay in sync automatically. */
- NSToolbar *toolbar = [[NSToolbar alloc] initWithIdentifier:@"MumbleConfigDialog"];
- [toolbar setDisplayMode:NSToolbarDisplayModeIconAndLabel];
- [toolbar setSizeMode:NSToolbarSizeModeRegular];
- [toolbar setAllowsUserCustomization:NO];
- [toolbar setAutosavesConfiguration:NO];
-
- // We explicitly don't autorelease here. We don't really want to have to store a reference
- // to the delegate inside ConfigDialogMac's header. Instead, we'll just make sure to release
- // the delegate when removing the Mac toolbar. (See ::removeMacToolbar)
- ConfigDialogDelegate *delegate = [[ConfigDialogDelegate alloc] initWithConfigDialog:this
- andToolbar:toolbar
- andWidgetMap:&qmWidgets
- inExpertMode:expert];
- [toolbar setDelegate:delegate];
- [window setToolbar:toolbar];
-
- /* Hack alert: Qt doesn't export its Cocoa helper utilities, so this is the best we
- * can do to make the window the right size after setting up a NSToolbar manually. */
- qt_widget_private(reinterpret_cast<QWidget *>(this))->updateFrameStrut();
-}
-
-void ConfigDialogMac::removeMacToolbar() {
- NSWindow *window = qt_mac_window_for(this);
- NSToolbar *toolbar = [window toolbar];
-
- [[toolbar delegate] release];
- [toolbar setDelegate:nil];
- [toolbar release];
-}
-
-void ConfigDialogMac::on_widgetSelected(ConfigWidget *cw) {
- QWidget *w = qhPages.value(cw);
- if (w) {
- setWindowTitle(cw->title());
- qswPages->setCurrentWidget(w);
- }
-}
-
-void ConfigDialogMac::updateExpert(bool b) {
- removeMacToolbar();
- setupMacToolbar(b);
-
- ConfigWidget *cw = qobject_cast<ConfigWidget *>(qswPages->currentWidget());
- if (! cw) {
- QScrollArea *qsa = qobject_cast<QScrollArea *>(qswPages->currentWidget());
- if (qsa)
- cw = qobject_cast<ConfigWidget *>(qsa->widget());
- }
-
- if (cw) {
- // Did our current widget become invisible when we switched to expert mode?
- if (! cw->expert(b))
- cw = qmWidgets.value(0);
-
- on_widgetSelected(cw);
- NSWindow *window = qt_mac_window_for(this);
- ConfigDialogDelegate *delegate = [[window toolbar] delegate];
- [delegate selectItem: cw];
- }
-}
-
-void ConfigDialogMac::apply() {
- Audio::stop();
-
- foreach(ConfigWidget *cw, qmWidgets)
- cw->save();
-
- g.s = s;
-
- foreach(ConfigWidget *cw, qmWidgets)
- cw->accept();
-
- if (!g.s.bAttenuateOthersOnTalk)
- g.bAttenuateOthers = false;
-
- // They might have changed their keys.
- g.iPushToTalk = 0;
-
- NSWindow *window = qt_mac_window_for(this);
- ConfigDialogDelegate *delegate = [[window toolbar] delegate];
- g.s.bExpert = [delegate expertMode];
-
- Audio::start();
-}
-
-void ConfigDialogMac::accept() {
- apply();
- g.s.qbaConfigGeometry=saveGeometry();
- QDialog::accept();
-}
-
-void ConfigDialogMac::on_qlwIcons_currentItemChanged(QListWidgetItem *, QListWidgetItem *) {
-}
-
-void ConfigDialogMac::on_qcbExpert_clicked(bool) {
-}
-
diff --git a/src/mumble/mumble.pro b/src/mumble/mumble.pro
index b61558839..e5af435a6 100644
--- a/src/mumble/mumble.pro
+++ b/src/mumble/mumble.pro
@@ -445,7 +445,7 @@ unix {
LIBS += -framework Security -framework SecurityInterface -framework ApplicationServices
- HEADERS *= GlobalShortcut_macx.h ConfigDialogDelegate.h AppNap.h
+ HEADERS *= GlobalShortcut_macx.h AppNap.h
SOURCES *= SharedMemory_unix.cpp
OBJECTIVE_SOURCES *= TextToSpeech_macx.mm GlobalShortcut_macx.mm os_macx.mm Log_macx.mm AppNap.mm