summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt7
-rw-r--r--res/css/main.css5
-rw-r--r--src/abaddon.cpp6
-rw-r--r--src/audio/ma_impl.cpp3
-rw-r--r--src/components/chatinput.cpp6
-rw-r--r--src/settings.cpp2
-rw-r--r--src/settings.hpp3
-rw-r--r--src/windows/voicesettingswindow.cpp12
-rw-r--r--src/windows/voicesettingswindow.hpp6
-rw-r--r--src/windows/voicewindow.cpp5
10 files changed, 55 insertions, 0 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c4fdf7a..de97c32 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -150,6 +150,13 @@ if (ENABLE_VOICE)
target_link_libraries(abaddon PkgConfig::libsodium)
target_link_libraries(abaddon ${CMAKE_DL_LIBS})
+
+ if(APPLE)
+ target_link_libraries(abaddon "-framework CoreFoundation")
+ target_link_libraries(abaddon "-framework CoreAudio")
+ target_link_libraries(abaddon "-framework AudioToolbox")
+ endif()
+
endif ()
if (${ENABLE_NOTIFICATION_SOUNDS})
diff --git a/res/css/main.css b/res/css/main.css
index dcbdf4f..40e1696 100644
--- a/res/css/main.css
+++ b/res/css/main.css
@@ -382,3 +382,8 @@
.voice-state-server {
color: red;
}
+
+spinbutton {
+ color: @text_color;
+ margin-top: 10px;
+}
diff --git a/src/abaddon.cpp b/src/abaddon.cpp
index a1ed343..2fe2941 100644
--- a/src/abaddon.cpp
+++ b/src/abaddon.cpp
@@ -252,6 +252,12 @@ int Abaddon::StartGTK() {
}
#endif
+#ifdef _WIN32
+ if (m_settings.GetSettings().HideConsole) {
+ ShowWindow(GetConsoleWindow(), SW_HIDE);
+ }
+#endif
+
// store must be checked before this can be called
m_main_window->UpdateComponents();
diff --git a/src/audio/ma_impl.cpp b/src/audio/ma_impl.cpp
index a83ddaf..531b24f 100644
--- a/src/audio/ma_impl.cpp
+++ b/src/audio/ma_impl.cpp
@@ -1,4 +1,7 @@
#ifdef WITH_MINIAUDIO
#define MINIAUDIO_IMPLEMENTATION
+ #ifdef __APPLE__
+ #define MA_NO_RUNTIME_LINKING
+ #endif
#include <miniaudio.h>
#endif
diff --git a/src/components/chatinput.cpp b/src/components/chatinput.cpp
index d19ac4b..28ed1ea 100644
--- a/src/components/chatinput.cpp
+++ b/src/components/chatinput.cpp
@@ -41,9 +41,15 @@ bool ChatInputText::ProcessKeyPress(GdkEventKey *event) {
return true;
}
+#ifdef __APPLE__
+ if ((event->state & GDK_MOD2_MASK) && event->keyval == GDK_KEY_v) {
+ return CheckHandleClipboardPaste();
+ }
+#else
if ((event->state & GDK_CONTROL_MASK) && event->keyval == GDK_KEY_v) {
return CheckHandleClipboardPaste();
}
+#endif
if (event->keyval == GDK_KEY_Return) {
if (event->state & GDK_SHIFT_MASK)
diff --git a/src/settings.cpp b/src/settings.cpp
index 82401f5..0b868da 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -70,6 +70,7 @@ void SettingsManager::ReadSettings() {
SMSTR("style", "unreadcolor", UnreadIndicatorColor);
SMBOOL("notifications", "enabled", NotificationsEnabled);
SMBOOL("notifications", "playsound", NotificationsPlaySound);
+ SMBOOL("windows", "hideconsole", HideConsole);
#ifdef WITH_KEYCHAIN
keychain::Error error {};
@@ -153,6 +154,7 @@ void SettingsManager::Close() {
SMSTR("style", "unreadcolor", UnreadIndicatorColor);
SMBOOL("notifications", "enabled", NotificationsEnabled);
SMBOOL("notifications", "playsound", NotificationsPlaySound);
+ SMBOOL("windows", "hideconsole", HideConsole);
#ifdef WITH_KEYCHAIN
keychain::Error error {};
diff --git a/src/settings.hpp b/src/settings.hpp
index 53f3423..40cb1d3 100644
--- a/src/settings.hpp
+++ b/src/settings.hpp
@@ -52,6 +52,9 @@ public:
bool NotificationsEnabled { true };
#endif
bool NotificationsPlaySound { true };
+
+ // [windows]
+ bool HideConsole { false };
};
SettingsManager(const std::string &filename);
diff --git a/src/windows/voicesettingswindow.cpp b/src/windows/voicesettingswindow.cpp
index c009cbf..3749986 100644
--- a/src/windows/voicesettingswindow.cpp
+++ b/src/windows/voicesettingswindow.cpp
@@ -110,9 +110,17 @@ VoiceSettingsWindow::VoiceSettingsWindow()
}
});
+ m_gain.set_increments(1.0, 5.0);
+ m_gain.set_range(0.0, 6969696969.0);
+ m_gain.set_value(Abaddon::Get().GetAudio().GetCaptureGain() * 100.0);
+ m_gain.signal_value_changed().connect([this]() {
+ m_signal_gain.emit(m_gain.get_value() / 100.0);
+ });
+
m_main.add(m_encoding_mode);
m_main.add(m_signal);
m_main.add(m_bitrate);
+ m_main.add(m_gain);
add(m_main);
show_all_children();
@@ -122,4 +130,8 @@ VoiceSettingsWindow::VoiceSettingsWindow()
});
}
+VoiceSettingsWindow::type_signal_gain VoiceSettingsWindow::signal_gain() {
+ return m_signal_gain;
+}
+
#endif
diff --git a/src/windows/voicesettingswindow.hpp b/src/windows/voicesettingswindow.hpp
index cf6b477..9b3498e 100644
--- a/src/windows/voicesettingswindow.hpp
+++ b/src/windows/voicesettingswindow.hpp
@@ -18,8 +18,14 @@ public:
Gtk::ComboBoxText m_encoding_mode;
Gtk::ComboBoxText m_signal;
Gtk::Scale m_bitrate;
+ Gtk::SpinButton m_gain;
private:
+ using type_signal_gain = sigc::signal<void(double)>;
+ type_signal_gain m_signal_gain;
+
+public:
+ type_signal_gain signal_gain();
};
#endif
diff --git a/src/windows/voicewindow.cpp b/src/windows/voicewindow.cpp
index 9e2efee..a915da6 100644
--- a/src/windows/voicewindow.cpp
+++ b/src/windows/voicewindow.cpp
@@ -163,6 +163,11 @@ VoiceWindow::VoiceWindow(Snowflake channel_id)
m_menu_view_sub.append(m_menu_view_settings);
m_menu_view_settings.signal_activate().connect([this]() {
auto *window = new VoiceSettingsWindow;
+ const auto cb = [this](double gain) {
+ m_capture_gain.set_value(gain * 100.0);
+ m_signal_gain.emit(gain);
+ };
+ window->signal_gain().connect(sigc::track_obj(cb, *this));
window->show();
});