void ContinuousSlider::wheelEvent(QWheelEvent *e) { if (_mouseDown || !moveByWheel()) { return; } #ifdef OS_MAC_OLD constexpr auto step = 120; #else // OS_MAC_OLD constexpr auto step = static_cast<int>(QWheelEvent::DefaultDeltasPerStep); #endif // OS_MAC_OLD constexpr auto coef = 1. / (step * 10.); auto deltaX = e->angleDelta().x(), deltaY = e->angleDelta().y(); if (cPlatform() == dbipMac || cPlatform() == dbipMacOld) { deltaY *= -1; } else { deltaX *= -1; } auto delta = (qAbs(deltaX) > qAbs(deltaY)) ? deltaX : deltaY; auto finalValue = snap(a_value.to() + delta * coef, 0., 1.); setValue(finalValue, false); if (_changeProgressCallback) { _changeProgressCallback(finalValue); } _byWheelFinished->start(kByWheelFinishedTimeout); }
QString Translator::translate(const char *context, const char *sourceText, const char *disambiguation, int n) const { if (qstr("QMenuBar") == context) { if (qstr("Services") == sourceText) return lang(lng_mac_menu_services); if (qstr("Hide %1") == sourceText) return lng_mac_menu_hide_telegram(lt_telegram, qsl("%1")); if (qstr("Hide Others") == sourceText) return lang(lng_mac_menu_hide_others); if (qstr("Show All") == sourceText) return lang(lng_mac_menu_show_all); if (qstr("Preferences...") == sourceText) return lang(lng_mac_menu_preferences); if (qstr("Quit %1") == sourceText) return lng_mac_menu_quit_telegram(lt_telegram, qsl("%1")); if (qstr("About %1") == sourceText) return lng_mac_menu_about_telegram(lt_telegram, qsl("%1")); return QString(); } if (qstr("QWidgetTextControl") == context || qstr("QLineEdit") == context) { if (qstr("&Undo") == sourceText) return lang((cPlatform() == dbipWindows) ? lng_wnd_menu_undo : ((cPlatform() == dbipMac || cPlatform() == dbipMacOld) ? lng_mac_menu_undo : lng_linux_menu_undo)); if (qstr("&Redo") == sourceText) return lang((cPlatform() == dbipWindows) ? lng_wnd_menu_redo : ((cPlatform() == dbipMac || cPlatform() == dbipMacOld) ? lng_mac_menu_redo : lng_linux_menu_redo)); if (qstr("Cu&t") == sourceText) return lang(lng_mac_menu_cut); if (qstr("&Copy") == sourceText) return lang(lng_mac_menu_copy); if (qstr("&Paste") == sourceText) return lang(lng_mac_menu_paste); if (qstr("Delete") == sourceText) return lang(lng_mac_menu_delete); if (qstr("Select All") == sourceText) return lang(lng_mac_menu_select_all); return QString(); } if (qstr("QUnicodeControlCharacterMenu") == context) { if (qstr("Insert Unicode control character") == sourceText) return lang(lng_menu_insert_unicode); return QString(); } return QString(); }
QIcon CreateIcon() { auto result = CreateOfficialIcon(); if (cPlatform() == dbipLinux32 || cPlatform() == dbipLinux64) { return QIcon::fromTheme("telegram", result); } return result; }
void TitleWidget::resizeEvent(QResizeEvent *e) { QPoint p(width() - ((cPlatform() == dbipWindows && lastMaximized) ? 0 : st::sysBtnDelta), 0); if (!_update.isHidden()) { p.setX(p.x() - _update.width()); _update.move(p); p.setX(p.x() + _update.width()); } _cancel.move(p.x() - _cancel.width(), 0); if (cPlatform() == dbipWindows) { p.setX(p.x() - _close.width()); _close.move(p); p.setX(p.x() - _maximize.width()); _restore.move(p); _maximize.move(p); p.setX(p.x() - _minimize.width()); _minimize.move(p); } _settings.move(st::titleMenuOffset, 0); _back.move(st::titleMenuOffset, 0); _back.resize((_minimize.isHidden() ? (_update.isHidden() ? width() : _update.x()) : _minimize.x()) - st::titleMenuOffset, _back.height()); if (MTP::authedId() && _back.isHidden() && _cancel.isHidden()) { _contacts.show(); _contacts.move(_settings.x() + _settings.width(), 0); _about.move(_contacts.x() + _contacts.width(), 0); } else { _contacts.hide(); if (!MTP::authedId()) _about.move(_settings.x() + _settings.width(), 0); } if (hider) hider->resize(size()); }
void GeneralWidget::refreshControls() { style::margins marginSub(0, 0, 0, st::settingsSubSkip); style::margins marginLarge(0, 0, 0, st::settingsLargeSkip); style::margins marginSmall(0, 0, 0, st::settingsSmallSkip); style::margins slidedPadding(0, marginSmall.bottom() / 2, 0, marginSmall.bottom() - (marginSmall.bottom() / 2)); #ifndef TDESKTOP_DISABLE_AUTOUPDATE addChildRow(_updateAutomatically, marginSub, lang(lng_settings_update_automatically), SLOT(onUpdateAutomatically()), cAutoUpdate()); style::margins marginLink(st::defaultBoxCheckbox.textPosition.x(), 0, 0, st::settingsSkip); addChildRow(_updateRow, marginLink, slidedPadding); connect(_updateRow->entity(), SIGNAL(restart()), this, SLOT(onRestart())); if (!cAutoUpdate()) { _updateRow->hideFast(); } #endif // !TDESKTOP_DISABLE_AUTOUPDATE if (cPlatform() == dbipWindows || cSupportTray()) { addChildRow(_enableTrayIcon, marginSmall, lang(lng_settings_workmode_tray), SLOT(onEnableTrayIcon()), (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray)); if (cPlatform() == dbipWindows) { addChildRow(_enableTaskbarIcon, marginLarge, lang(lng_settings_workmode_window), SLOT(onEnableTaskbarIcon()), (cWorkMode() == dbiwmWindowOnly || cWorkMode() == dbiwmWindowAndTray)); #ifndef OS_WIN_STORE addChildRow(_autoStart, marginSmall, lang(lng_settings_auto_start), SLOT(onAutoStart()), cAutoStart()); addChildRow(_startMinimized, marginLarge, slidedPadding, lang(lng_settings_start_min), SLOT(onStartMinimized()), (cStartMinimized() && !Global::LocalPasscode())); subscribe(Global::RefLocalPasscodeChanged(), [this] { _startMinimized->entity()->setChecked(cStartMinimized() && !Global::LocalPasscode()); }); if (!cAutoStart()) { _startMinimized->hideFast(); } addChildRow(_addInSendTo, marginSmall, lang(lng_settings_add_sendto), SLOT(onAddInSendTo()), cSendToMenu()); #endif // OS_WIN_STORE } } }
void Window::updateTrayMenu(bool force) { if (!trayIconMenu || (cPlatform() == dbipWindows && !force)) return; bool active = isActive(false); if (cPlatform() == dbipWindows || cPlatform() == dbipMac) { QAction *first = trayIconMenu->actions().at(0); first->setText(lang(active ? lng_minimize_to_tray : lng_open_from_tray)); disconnect(first, SIGNAL(triggered(bool)), 0, 0); connect(first, SIGNAL(triggered(bool)), this, active ? SLOT(minimizeToTray()) : SLOT(showFromTray())); } else {
InnerDropdown::InnerDropdown(QWidget *parent, const style::InnerDropdown &st) : TWidget(parent) , _st(st) , _scroll(this, _st.scroll) { _hideTimer.setSingleShot(true); connect(&_hideTimer, SIGNAL(timeout()), this, SLOT(onHideAnimated())); connect(_scroll, SIGNAL(scrolled()), this, SLOT(onScroll())); if (cPlatform() == dbipMac || cPlatform() == dbipMacOld) { connect(App::wnd()->windowHandle(), SIGNAL(activeChanged()), this, SLOT(onWindowActiveChanged())); } hide(); }
void Window::updateTrayMenu(bool force) { if (!trayIconMenu || (cPlatform() == dbipWindows && !force) || cPlatform() == dbipLinux32 || cPlatform() == dbipLinux64) return; bool active = psIsActive(); QAction *first = trayIconMenu->actions().at(0); first->setText(lang(active ? lng_minimize_to_tray : lng_open_from_tray)); disconnect(first, SIGNAL(triggered(bool)), 0, 0); connect(first, SIGNAL(triggered(bool)), this, active ? SLOT(minimizeToTray()) : SLOT(showFromTray())); #ifndef Q_OS_WIN if (trayIcon) { trayIcon->setContextMenu((active || cPlatform() != dbipMac) ? trayIconMenu : 0); } #endif }
bool hideWindowNoQuit() { if (!App::quitting()) { if (auto w = App::wnd()) { if (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray) { return w->minimizeToTray(); } else if (cPlatform() == dbipMac || cPlatform() == dbipMacOld) { w->closeWithoutDestroy(); w->updateIsActive(Global::OfflineBlurTimeout()); w->updateGlobalMenu(); return true; } } } return false; }
void ChatSettingsWidget::createControls() { style::margins marginSmall(0, 0, 0, st::settingsSmallSkip); style::margins marginSkip(0, 0, 0, st::settingsSkip); style::margins marginSub(0, 0, 0, st::settingsSubSkip); style::margins slidedPadding(0, marginSub.bottom() / 2, 0, marginSub.bottom() - (marginSub.bottom() / 2)); addChildRow(_replaceEmoji, marginSub, lang(lng_settings_replace_emojis), SLOT(onReplaceEmoji()), cReplaceEmojis()); style::margins marginList(st::defaultBoxCheckbox.textPosition.x(), 0, 0, st::settingsSkip); addChildRow(_viewList, marginList, slidedPadding, lang(lng_settings_view_emojis), SLOT(onViewList()), st::defaultLinkButton); if (!cReplaceEmojis()) { _viewList->hideFast(); } #ifndef OS_WIN_STORE auto pathMargin = marginSub; #else // OS_WIN_STORE auto pathMargin = marginSkip; #endif // OS_WIN_STORE addChildRow(_dontAskDownloadPath, pathMargin, lang(lng_download_path_dont_ask), SLOT(onDontAskDownloadPath()), !Global::AskDownloadPath()); #ifndef OS_WIN_STORE style::margins marginPath(st::defaultBoxCheckbox.textPosition.x(), 0, 0, st::settingsSkip); addChildRow(_downloadPath, marginPath, slidedPadding); if (Global::AskDownloadPath()) { _downloadPath->hideFast(); } #endif // OS_WIN_STORE addChildRow(_sendByEnter, marginSmall, qsl("send_key"), 0, lang(lng_settings_send_enter), SLOT(onSendByEnter()), !cCtrlEnter()); addChildRow(_sendByCtrlEnter, marginSkip, qsl("send_key"), 1, lang((cPlatform() == dbipMac || cPlatform() == dbipMacOld) ? lng_settings_send_cmdenter : lng_settings_send_ctrlenter), SLOT(onSendByCtrlEnter()), cCtrlEnter()); addChildRow(_automaticMediaDownloadSettings, marginSmall, lang(lng_media_auto_settings), SLOT(onAutomaticMediaDownloadSettings())); addChildRow(_manageStickerSets, marginSmall, lang(lng_stickers_you_have), SLOT(onManageStickerSets())); }
void settingsParseArgs(int argc, char *argv[]) { if (cPlatform() == dbipMac) { gCustomNotifies = false; } else { gCustomNotifies = true; } memset_rand(&gInstance, sizeof(gInstance)); gExeDir = psCurrentExeDirectory(argc, argv); for (int32 i = 0; i < argc; ++i) { if (string("-release") == argv[i]) { gTestMode = false; } else if (string("-debug") == argv[i]) { gDebug = true; } else if (string("-many") == argv[i]) { gManyInstance = true; } else if (string("-key") == argv[i] && i + 1 < argc) { gKeyFile = QString::fromLocal8Bit(argv[++i]); } else if (string("-autostart") == argv[i]) { gFromAutoStart = true; } else if (string("-noupdate") == argv[i]) { gNoStartUpdate = true; } else if (string("-tosettings") == argv[i]) { gStartToSettings = true; } else if (string("-lang") == argv[i] && i + 1 < argc) { gLangFile = QString(argv[++i]); } else if (string("-sendpath") == argv[i] && i + 1 < argc) { for (++i; i < argc; ++i) { gSendPaths.push_back(QString::fromLocal8Bit(argv[i])); } } } }
void GeneralWidget::onEnableTrayIcon() { if ((!_enableTrayIcon->checked() || cPlatform() != dbipWindows) && _enableTaskbarIcon && !_enableTaskbarIcon->checked()) { _enableTaskbarIcon->setChecked(true); } else { updateWorkmode(); } }
void TitleWidget::showUpdateBtn() { if (!cWideMode() && App::main() && App::main()->selectingPeer()) { _cancel.show(); _update.hide(); _minimize.hide(); _restore.hide(); _maximize.hide(); _close.hide(); return; } bool updateReady = App::app()->updatingState() == Application::UpdatingReady; if (updateReady || cEvalScale(cConfigScale()) != cEvalScale(cRealScale())) { _update.setText(lang(updateReady ? lng_menu_update : lng_menu_restart)); _update.show(); resizeEvent(0); _minimize.hide(); _restore.hide(); _maximize.hide(); _close.hide(); anim::start(this); } else { _update.hide(); if (cPlatform() == dbipWindows) { _minimize.show(); maximizedChanged(wnd->windowState().testFlag(Qt::WindowMaximized), true); _close.show(); } anim::stop(this); } resizeEvent(0); update(); }
QIcon CreateOfficialIcon() { auto useNoMarginLogo = (cPlatform() == dbipMac); if (auto messenger = Messenger::InstancePointer()) { return QIcon(App::pixmapFromImageInPlace(useNoMarginLogo ? messenger->logoNoMargin() : messenger->logo())); } return QIcon(App::pixmapFromImageInPlace(useNoMarginLogo ? LoadLogoNoMargin() : LoadLogo())); }
void TitleWidget::updateControlsPosition() { QPoint p(width() - ((cPlatform() == dbipWindows && lastMaximized) ? 0 : st::sysBtnDelta), 0); if (!_update.isHidden()) { p.setX(p.x() - _update.width()); _update.move(p); if (!_lock.isHidden()) { p.setX(p.x() - _lock.width()); _lock.move(p); p.setX(p.x() + _lock.width()); } p.setX(p.x() + _update.width()); } _cancel.move(p.x() - _cancel.width(), 0); if (cPlatform() == dbipWindows) { p.setX(p.x() - _close.width()); _close.move(p); p.setX(p.x() - _maximize.width()); _restore.move(p); _maximize.move(p); p.setX(p.x() - _minimize.width()); _minimize.move(p); } if (_update.isHidden() && !_lock.isHidden()) { p.setX(p.x() - _lock.width()); _lock.move(p); } if (_player) { p.setX(p.x() - _player->width()); _player->move(p); } _settings.move(st::titleMenuOffset, 0); if (_contacts.isHidden()) { _about.move(_settings.x() + _settings.width(), 0); } else { _contacts.move(_settings.x() + _settings.width(), 0); _about.move(_contacts.x() + _contacts.width(), 0); } if (_hider) { _hider->resize(size()); } }
void Launcher::prepareSettings() { #ifdef Q_OS_MAC #ifndef OS_MAC_OLD if (QSysInfo::macVersion() >= QSysInfo::MV_10_11) { gIsElCapitan = true; } #else // OS_MAC_OLD if (QSysInfo::macVersion() < QSysInfo::MV_10_7) { gIsSnowLeopard = true; } #endif // OS_MAC_OLD #endif // Q_OS_MAC switch (cPlatform()) { case dbipWindows: #ifndef OS_WIN_STORE gPlatformString = qsl("Windows"); #else // OS_WIN_STORE gPlatformString = qsl("WinStore"); #endif // OS_WIN_STORE break; case dbipMac: #ifndef OS_MAC_STORE gPlatformString = qsl("MacOS"); #else // OS_MAC_STORE gPlatformString = qsl("MacAppStore"); #endif // OS_MAC_STORE break; case dbipMacOld: gPlatformString = qsl("MacOSold"); break; case dbipLinux64: gPlatformString = qsl("Linux64bit"); break; case dbipLinux32: gPlatformString = qsl("Linux32bit"); break; } auto path = Platform::CurrentExecutablePath(_argc, _argv); LOG(("Executable path before check: %1").arg(path)); if (!path.isEmpty()) { auto info = QFileInfo(path); if (info.isSymLink()) { info = info.symLinkTarget(); } if (info.exists()) { const auto dir = info.absoluteDir().absolutePath(); gExeDir = (dir.endsWith('/') ? dir : (dir + '/')); gExeName = info.fileName(); } } if (cExeName().isEmpty()) { LOG(("WARNING: Could not compute executable path, some features will be disabled.")); } processArguments(); }
bool MainWindow::hideNoQuit() { if (App::quitting()) { return false; } if (Global::WorkMode().value() == dbiwmTrayOnly || Global::WorkMode().value() == dbiwmWindowAndTray) { if (minimizeToTray()) { Ui::showChatsList(); return true; } } else if (cPlatform() == dbipMac || cPlatform() == dbipMacOld) { closeWithoutDestroy(); updateIsActive(Global::OfflineBlurTimeout()); updateGlobalMenu(); Ui::showChatsList(); return true; } return false; }
void FlatTextarea::keyPressEvent(QKeyEvent *e) { bool shift = e->modifiers().testFlag(Qt::ShiftModifier); bool macmeta = (cPlatform() == dbipMac) && e->modifiers().testFlag(Qt::ControlModifier) && !e->modifiers().testFlag(Qt::MetaModifier) && !e->modifiers().testFlag(Qt::AltModifier); bool ctrl = e->modifiers().testFlag(Qt::ControlModifier) || e->modifiers().testFlag(Qt::MetaModifier), ctrlGood = (ctrl && _ctrlEnterSubmit) || (!ctrl && !shift && !_ctrlEnterSubmit) || (ctrl && shift); bool enter = (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return); if (macmeta && e->key() == Qt::Key_Backspace) { QTextCursor tc(textCursor()), start(tc); start.movePosition(QTextCursor::StartOfLine); tc.setPosition(start.position(), QTextCursor::KeepAnchor); tc.removeSelectedText(); } else if (enter && ctrlGood) { emit submitted(ctrl && shift); } else if (e->key() == Qt::Key_Escape) { emit cancelled(); } else if (e->key() == Qt::Key_Tab || (ctrl && e->key() == Qt::Key_Backtab)) { if (ctrl) { e->ignore(); } else { emit tabbed(); } } else if (e->key() == Qt::Key_Search || e == QKeySequence::Find) { e->ignore(); } else { QTextCursor tc(textCursor()); if (enter && ctrl) { e->setModifiers(e->modifiers() & ~Qt::ControlModifier); } bool spaceOrReturn = false; QString t(e->text()); if (!t.isEmpty() && t.size() < 3) { if (t.at(0) == '\n' || t.at(0) == '\r' || t.at(0).isSpace() || t.at(0) == QChar::LineSeparator) { spaceOrReturn = true; } } QTextEdit::keyPressEvent(e); if (tc == textCursor()) { bool check = false; if (e->key() == Qt::Key_PageUp || e->key() == Qt::Key_Up) { tc.movePosition(QTextCursor::Start, e->modifiers().testFlag(Qt::ShiftModifier) ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor); check = true; } else if (e->key() == Qt::Key_PageDown || e->key() == Qt::Key_Down) { tc.movePosition(QTextCursor::End, e->modifiers().testFlag(Qt::ShiftModifier) ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor); check = true; } if (check) { if (tc == textCursor()) { e->ignore(); } else { setTextCursor(tc); } } } if (spaceOrReturn) emit spacedReturnedPasted(); } }
void Window::firstShow() { #ifdef Q_OS_WIN trayIconMenu = new ContextMenu(this); #else trayIconMenu = new QMenu(this); trayIconMenu->setFont(QFont("Tahoma")); #endif if (cPlatform() == dbipWindows || cPlatform() == dbipMac) { trayIconMenu->addAction(lang(lng_minimize_to_tray), this, SLOT(minimizeToTray()))->setEnabled(true); trayIconMenu->addAction(lang(lng_quit_from_tray), this, SLOT(quitFromTray()))->setEnabled(true); } else { trayIconMenu->addAction(lang(lng_open_from_tray), this, SLOT(showFromTray()))->setEnabled(true); trayIconMenu->addAction(lang(lng_minimize_to_tray), this, SLOT(minimizeToTray()))->setEnabled(true); trayIconMenu->addAction(lang(lng_quit_from_tray), this, SLOT(quitFromTray()))->setEnabled(true); } psFirstShow(); updateTrayMenu(); }
TitleWidget::TitleWidget(MainWindow *window) : TWidget(window) , wnd(window) , hideLevel(0) , hider(0) , _back(this, st::titleBackButton, lang(lng_menu_back)) , _cancel(this, lang(lng_cancel), st::titleTextButton) , _settings(this, lang(lng_menu_settings), st::titleTextButton) , _contacts(this, lang(lng_menu_contacts), st::titleTextButton) , _about(this, lang(lng_menu_about), st::titleTextButton) , _lock(this, window) , _update(this, window, lang(lng_menu_update)) , _minimize(this, window) , _maximize(this, window) , _restore(this, window) , _close(this, window) , _a_update(animation(this, &TitleWidget::step_update)) , lastMaximized(!(window->windowState() & Qt::WindowMaximized)) { setGeometry(0, 0, wnd->width(), st::titleHeight); setAttribute(Qt::WA_OpaquePaintEvent); _lock.hide(); _update.hide(); _cancel.hide(); _back.hide(); if ( #ifndef TDESKTOP_DISABLE_AUTOUPDATE Sandbox::updatingState() == Application::UpdatingReady || #endif cHasPasscode() ) { showUpdateBtn(); } stateChanged(); connect(&_back, SIGNAL(clicked()), window, SLOT(hideSettings())); connect(&_cancel, SIGNAL(clicked()), this, SIGNAL(hiderClicked())); connect(&_settings, SIGNAL(clicked()), window, SLOT(showSettings())); connect(&_contacts, SIGNAL(clicked()), this, SLOT(onContacts())); connect(&_about, SIGNAL(clicked()), this, SLOT(onAbout())); connect(wnd->windowHandle(), SIGNAL(windowStateChanged(Qt::WindowState)), this, SLOT(stateChanged(Qt::WindowState))); #ifndef TDESKTOP_DISABLE_AUTOUPDATE Sandbox::connect(SIGNAL(updateReady()), this, SLOT(showUpdateBtn())); #endif if (cPlatform() != dbipWindows) { _minimize.hide(); _maximize.hide(); _restore.hide(); _close.hide(); } }
void Window::toggleTray(QSystemTrayIcon::ActivationReason reason) { if (cPlatform() == dbipMac && psIsActive()) return; if (reason == QSystemTrayIcon::Context) { updateTrayMenu(true); QTimer::singleShot(1, this, SLOT(psShowTrayMenu())); } else { if (psIsActive()) { minimizeToTray(); } else { showFromTray(reason); } } }
bool Window::minimizeToTray() { if (App::quiting() || !psHasTrayIcon()) return false; hide(); if (cPlatform() == dbipWindows && trayIcon && !cSeenTrayTooltip()) { trayIcon->showMessage(QString::fromStdWString(AppName), lang(lng_tray_icon_text), QSystemTrayIcon::Information, 10000); cSetSeenTrayTooltip(true); Local::writeSettings(); } updateIsActive(cOfflineBlurTimeout()); updateTrayMenu(); updateGlobalMenu(); return true; }
void InputField::InputFieldInner::keyPressEvent(QKeyEvent *e) { bool shift = e->modifiers().testFlag(Qt::ShiftModifier); bool macmeta = (cPlatform() == dbipMac) && e->modifiers().testFlag(Qt::ControlModifier) && !e->modifiers().testFlag(Qt::MetaModifier) && !e->modifiers().testFlag(Qt::AltModifier); bool ctrl = e->modifiers().testFlag(Qt::ControlModifier) || e->modifiers().testFlag(Qt::MetaModifier), ctrlGood = true; bool enter = (e->key() == Qt::Key_Enter || e->key() == Qt::Key_Return); if (macmeta && e->key() == Qt::Key_Backspace) { QTextCursor tc(textCursor()), start(tc); start.movePosition(QTextCursor::StartOfLine); tc.setPosition(start.position(), QTextCursor::KeepAnchor); tc.removeSelectedText(); } else if (enter && ctrlGood) { emit f()->submitted(ctrl && shift); } else if (e->key() == Qt::Key_Escape) { emit f()->cancelled(); } else if (e->key() == Qt::Key_Tab || (ctrl && e->key() == Qt::Key_Backtab)) { if (ctrl) { e->ignore(); } else { emit f()->tabbed(); } } else if (e->key() == Qt::Key_Search || e == QKeySequence::Find) { e->ignore(); } else if (f()->_customUpDown && (e->key() == Qt::Key_Up || e->key() == Qt::Key_Down)) { e->ignore(); } else { QTextCursor tc(textCursor()); if (enter && ctrl) { e->setModifiers(e->modifiers() & ~Qt::ControlModifier); } QTextEdit::keyPressEvent(e); if (tc == textCursor()) { bool check = false; if (e->key() == Qt::Key_PageUp || e->key() == Qt::Key_Up) { tc.movePosition(QTextCursor::Start, e->modifiers().testFlag(Qt::ShiftModifier) ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor); check = true; } else if (e->key() == Qt::Key_PageDown || e->key() == Qt::Key_Down) { tc.movePosition(QTextCursor::End, e->modifiers().testFlag(Qt::ShiftModifier) ? QTextCursor::KeepAnchor : QTextCursor::MoveAnchor); check = true; } if (check) { if (tc == textCursor()) { e->ignore(); } else { setTextCursor(tc); } } } } }
bool Window::minimizeToTray() { if (App::quiting() || !trayIcon) return false; hide(); if (cPlatform() != dbipMac && !cSeenTrayTooltip()) { trayIcon->showMessage(QString::fromStdWString(AppName), lang(lng_tray_icon_text), QSystemTrayIcon::Information, 10000); cSetSeenTrayTooltip(true); App::writeConfig(); } if (App::main()) App::main()->setOnline(windowState()); updateTrayMenu(); updateGlobalMenu(); return true; }
void ConnectionBox::onSave() { if (_httpProxyRadio.checked() || _tcpProxyRadio.checked()) { ProxyData p; p.host = _hostInput.getLastText().trimmed(); p.user = _userInput.getLastText().trimmed(); p.password = _passwordInput.getLastText().trimmed(); p.port = _portInput.getLastText().toInt(); if (p.host.isEmpty()) { _hostInput.setFocus(); return; } else if (!p.port) { _portInput.setFocus(); return; } if (_httpProxyRadio.checked()) { Global::SetConnectionType(dbictHttpProxy); } else { Global::SetConnectionType(dbictTcpProxy); } Global::SetConnectionProxy(p); } else { Global::SetConnectionType(dbictAuto); Global::SetConnectionProxy(ProxyData()); #ifndef TDESKTOP_DISABLE_NETWORK_PROXY QNetworkProxyFactory::setUseSystemConfiguration(false); QNetworkProxyFactory::setUseSystemConfiguration(true); #endif } if (cPlatform() == dbipWindows && Global::TryIPv6() != _tryIPv6.checked()) { Global::SetTryIPv6(_tryIPv6.checked()); Local::writeSettings(); Global::RefConnectionTypeChanged().notify(); cSetRestarting(true); cSetRestartingToSettings(true); App::quit(); } else { Global::SetTryIPv6(_tryIPv6.checked()); Local::writeSettings(); Global::RefConnectionTypeChanged().notify(); MTP::restart(); reinitImageLinkManager(); reinitWebLoadManager(); onClose(); } }
void TitleWidget::maximizedChanged(bool maximized, bool force) { if (lastMaximized == maximized && !force) return; lastMaximized = maximized; if (cPlatform() != dbipWindows || !_update.isHidden()) return; if (maximized) { _maximize.clearState(); } else { _restore.clearState(); } _maximize.setVisible(!maximized); _restore.setVisible(maximized); resizeEvent(0); }
void AboutBox::showVersionHistory() { if (cRealBetaVersion()) { auto url = qsl("https://tdesktop.com/"); switch (cPlatform()) { case dbipWindows: url += qsl("win/%1.zip"); break; case dbipMac: url += qsl("mac/%1.zip"); break; case dbipMacOld: url += qsl("mac32/%1.zip"); break; case dbipLinux32: url += qsl("linux32/%1.tar.xz"); break; case dbipLinux64: url += qsl("linux/%1.tar.xz"); break; } url = url.arg(qsl("tbeta%1_%2").arg(cRealBetaVersion()).arg(countBetaVersionSignature(cRealBetaVersion()))); Application::clipboard()->setText(url); Ui::show(Box<InformBox>("The link to the current private beta version of Telegram Desktop was copied to the clipboard.")); } else { QDesktopServices::openUrl(qsl("https://desktop.telegram.org/changelog")); } }
TitleWidget::TitleWidget(QWidget *parent) : TWidget(parent) , _cancel(this, lang(lng_cancel), st::titleTextButton) , _settings(this, lang(lng_menu_settings), st::titleTextButton) , _contacts(this, lang(lng_menu_contacts), st::titleTextButton) , _about(this, lang(lng_menu_about), st::titleTextButton) , _lock(this) , _update(this) , _minimize(this) , _maximize(this) , _restore(this) , _close(this) , _a_update(animation(this, &TitleWidget::step_update)) , lastMaximized(!(parent->windowState() & Qt::WindowMaximized)) { setGeometry(0, 0, parent->width(), st::titleHeight); setAttribute(Qt::WA_OpaquePaintEvent); onWindowStateChanged(); updateControlsVisibility(); connect(&_cancel, SIGNAL(clicked()), this, SIGNAL(hiderClicked())); connect(&_settings, SIGNAL(clicked()), parent, SLOT(showSettings())); connect(&_contacts, SIGNAL(clicked()), this, SLOT(onContacts())); connect(&_about, SIGNAL(clicked()), this, SLOT(onAbout())); connect(parent->windowHandle(), SIGNAL(windowStateChanged(Qt::WindowState)), this, SLOT(onWindowStateChanged(Qt::WindowState))); #ifndef TDESKTOP_DISABLE_AUTOUPDATE Sandbox::connect(SIGNAL(updateReady()), this, SLOT(updateControlsVisibility())); #endif // !TDESKTOP_DISABLE_AUTOUPDATE subscribe(Adaptive::Changed(), [this]() { updateAdaptiveLayout(); }); if (Media::Player::exists()) { subscribe(Media::Player::instance()->usePanelPlayer(), [this](bool usePanel) { updatePlayerButton(usePanel); }); } if (cPlatform() != dbipWindows) { _minimize.hide(); _maximize.hide(); _restore.hide(); _close.hide(); } }
void TitleWidget::showUpdateBtn() { if (Adaptive::OneColumn() && App::main() && App::main()->selectingPeer()) { _cancel.show(); _lock.hide(); _update.hide(); _minimize.hide(); _restore.hide(); _maximize.hide(); _close.hide(); return; } if (cHasPasscode()) { _lock.show(); } else { _lock.hide(); } #ifndef TDESKTOP_DISABLE_AUTOUPDATE bool updateReady = (Sandbox::updatingState() == Application::UpdatingReady); #else bool updateReady = false; #endif if (updateReady || cEvalScale(cConfigScale()) != cEvalScale(cRealScale())) { _update.setText(lang(updateReady ? lng_menu_update : lng_menu_restart)); _update.show(); resizeEvent(0); _minimize.hide(); _restore.hide(); _maximize.hide(); _close.hide(); _a_update.start(); } else { _update.hide(); if (cPlatform() == dbipWindows) { _minimize.show(); maximizedChanged(lastMaximized, true); _close.show(); } _a_update.stop(); } resizeEvent(0); update(); }
void NotificationsWidget::createControls() { style::margins margin(0, 0, 0, st::settingsSkip); style::margins slidedPadding(0, margin.bottom() / 2, 0, margin.bottom() - (margin.bottom() / 2)); addChildRow(_desktopNotifications, margin, lang(lng_settings_desktop_notify), [this](bool) { onDesktopNotifications(); }, Global::DesktopNotify()); addChildRow(_showSenderName, margin, slidedPadding, lang(lng_settings_show_name), [this](bool) { onShowSenderName(); }, Global::NotifyView() <= dbinvShowName); addChildRow(_showMessagePreview, margin, slidedPadding, lang(lng_settings_show_preview), [this](bool) { onShowMessagePreview(); }, Global::NotifyView() <= dbinvShowPreview); if (!_showSenderName->entity()->checked()) { _showMessagePreview->hideFast(); } if (!_desktopNotifications->checked()) { _showSenderName->hideFast(); _showMessagePreview->hideFast(); } addChildRow(_playSound, margin, lang(lng_settings_sound_notify), [this](bool) { onPlaySound(); }, Global::SoundNotify()); addChildRow(_includeMuted, margin, lang(lng_settings_include_muted), [this](bool) { onIncludeMuted(); }, Global::IncludeMuted()); if (cPlatform() != dbipMac) { createNotificationsControls(); } }