void PsMainWindow::psFirstShow() { finished = false; psUpdateMargins(); bool showShadows = true; show(); _private.enableShadow(winId()); if (cWindowPos().maximized) { setWindowState(Qt::WindowMaximized); } if ((cFromAutoStart() && cStartMinimized()) || cStartInTray()) { setWindowState(Qt::WindowMinimized); if (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray) { hide(); } else { show(); } showShadows = false; } else { show(); } posInited = true; // init global menu QMenu *main = psMainMenu.addMenu(qsl("Telegram")); main->addAction(lng_mac_menu_about_telegram(lt_telegram, qsl("Telegram")), App::wnd()->getTitle(), SLOT(onAbout()))->setMenuRole(QAction::AboutQtRole); main->addSeparator(); QAction *prefs = main->addAction(lang(lng_mac_menu_preferences), App::wnd(), SLOT(showSettings()), QKeySequence(Qt::ControlModifier | Qt::Key_Comma)); prefs->setMenuRole(QAction::PreferencesRole); QMenu *file = psMainMenu.addMenu(lang(lng_mac_menu_file)); psLogout = file->addAction(lang(lng_mac_menu_logout), App::wnd(), SLOT(onLogout())); QMenu *edit = psMainMenu.addMenu(lang(lng_mac_menu_edit)); psUndo = edit->addAction(lang(lng_mac_menu_undo), this, SLOT(psMacUndo()), QKeySequence::Undo); psRedo = edit->addAction(lang(lng_mac_menu_redo), this, SLOT(psMacRedo()), QKeySequence::Redo); edit->addSeparator(); psCut = edit->addAction(lang(lng_mac_menu_cut), this, SLOT(psMacCut()), QKeySequence::Cut); psCopy = edit->addAction(lang(lng_mac_menu_copy), this, SLOT(psMacCopy()), QKeySequence::Copy); psPaste = edit->addAction(lang(lng_mac_menu_paste), this, SLOT(psMacPaste()), QKeySequence::Paste); psDelete = edit->addAction(lang(lng_mac_menu_delete), this, SLOT(psMacDelete()), QKeySequence(Qt::ControlModifier | Qt::Key_Backspace)); edit->addSeparator(); psSelectAll = edit->addAction(lang(lng_mac_menu_select_all), this, SLOT(psMacSelectAll()), QKeySequence::SelectAll); QMenu *window = psMainMenu.addMenu(lang(lng_mac_menu_window)); psContacts = window->addAction(lang(lng_mac_menu_contacts), App::wnd()->getTitle(), SLOT(onContacts())); psAddContact = window->addAction(lang(lng_mac_menu_add_contact), App::wnd(), SLOT(onShowAddContact())); window->addSeparator(); psNewGroup = window->addAction(lang(lng_mac_menu_new_group), App::wnd(), SLOT(onShowNewGroup())); psNewChannel = window->addAction(lang(lng_mac_menu_new_channel), App::wnd(), SLOT(onShowNewChannel())); window->addSeparator(); psShowTelegram = window->addAction(lang(lng_mac_menu_show), App::wnd(), SLOT(showFromTray())); psMacUpdateMenu(); }
PasscodeWidget::PasscodeWidget(QWidget *parent) : QWidget(parent), _passcode(this, st::passcodeInput), _submit(this, lang(lng_passcode_submit), st::passcodeSubmit), _logout(this, lang(lng_passcode_logout)) { setGeometry(QRect(0, st::titleHeight, App::wnd()->width(), App::wnd()->height() - st::titleHeight)); connect(App::wnd(), SIGNAL(resized(const QSize &)), this, SLOT(onParentResize(const QSize &))); _passcode.setEchoMode(QLineEdit::Password); connect(&_submit, SIGNAL(clicked()), this, SLOT(onSubmit())); connect(&_passcode, SIGNAL(changed()), this, SLOT(onChanged())); connect(&_passcode, SIGNAL(accepted()), this, SLOT(onSubmit())); connect(&_logout, SIGNAL(clicked()), App::wnd(), SLOT(onLogout())); show(); _passcode.setFocus(); }
SettingsInner::SettingsInner(Settings *parent) : QWidget(parent), _self(App::self()), // profile _nameCache(_self ? _self->name : QString()), _phoneText(_self ? App::formatPhone(_self->phone) : QString()), _uploadPhoto(this, lang(lng_settings_upload), st::btnSetUpload), _cancelPhoto(this, lang(lng_cancel)), _nameOver(false), _photoOver(false), a_photo(0), // notifications _desktopNotify(this, lang(lng_settings_desktop_notify), cDesktopNotify()), _soundNotify(this, lang(lng_settings_sound_notify), cSoundNotify()), // general _autoUpdate(this, lang(lng_settings_auto_update), cAutoUpdate()), _checkNow(this, lang(lng_settings_check_now)), _restartNow(this, lang(lng_settings_update_now)), _workmodeTray(this, lang(lng_settings_workmode_tray), (cWorkMode() == dbiwmTrayOnly || cWorkMode() == dbiwmWindowAndTray)), _workmodeWindow(this, lang(lng_settings_workmode_window), (cWorkMode() == dbiwmWindowOnly || cWorkMode() == dbiwmWindowAndTray)), _autoStart(this, lang(lng_settings_auto_start), cAutoStart()), _startMinimized(this, lang(lng_settings_start_min), cStartMinimized()), _dpiAutoScale(this, lang(lng_settings_scale_auto).replace(qsl("{cur}"), scaleLabel(cScreenScale())), (cConfigScale() == dbisAuto)), _dpiSlider(this, st::dpiSlider, dbisScaleCount - 1, cEvalScale(cConfigScale()) - 1), _dpiWidth1(st::dpiFont1->m.width(scaleLabel(dbisOne))), _dpiWidth2(st::dpiFont2->m.width(scaleLabel(dbisOneAndQuarter))), _dpiWidth3(st::dpiFont3->m.width(scaleLabel(dbisOneAndHalf))), _dpiWidth4(st::dpiFont4->m.width(scaleLabel(dbisTwo))), // chat options _replaceEmojis(this, lang(lng_settings_replace_emojis), cReplaceEmojis()), _viewEmojis(this, lang(lng_settings_view_emojis)), _enterSend(this, qsl("send_key"), 0, lang(lng_settings_send_enter), !cCtrlEnter()), _ctrlEnterSend(this, qsl("send_key"), 1, lang((cPlatform() == dbipMac) ? lng_settings_send_cmdenter : lng_settings_send_ctrlenter), cCtrlEnter()), _dontAskDownloadPath(this, lang(lng_download_path_dont_ask), !cAskDownloadPath()), _downloadPathWidth(st::linkFont->m.width(lang(lng_download_path_label))), _downloadPathEdit(this, cDownloadPath().isEmpty() ? lang(lng_download_path_temp) : st::linkFont->m.elidedText(QDir::toNativeSeparators(cDownloadPath()), Qt::ElideRight, st::setWidth - st::setVersionLeft - _downloadPathWidth)), _downloadPathClear(this, lang(lng_download_path_clear)), _tempDirClearingWidth(st::linkFont->m.width(lang(lng_download_path_clearing))), _tempDirClearedWidth(st::linkFont->m.width(lang(lng_download_path_cleared))), _tempDirClearFailedWidth(st::linkFont->m.width(lang(lng_download_path_clear_failed))), _catsAndDogs(this, lang(lng_settings_cats_and_dogs), cCatsAndDogs()), _scrollNotActive(this, lang(lng_settings_scroll_not_active), cScrollNotActive()), // advanced _connectionType(this, lang(lng_connection_auto)), _resetSessions(this, lang(lng_settings_reset)), _logOut(this, lang(lng_settings_logout), st::btnLogout), _resetDone(false) { if (_self) { _nameText.setText(st::setNameFont, _nameCache, _textNameOptions); PhotoData *selfPhoto = _self->photoId ? App::photo(_self->photoId) : 0; if (selfPhoto && selfPhoto->date) _photoLink = TextLinkPtr(new PhotoLink(selfPhoto)); MTP::send(MTPusers_GetFullUser(_self->inputUser), rpcDone(&SettingsInner::gotFullSelf)); connect(App::main(), SIGNAL(peerPhotoChanged(PeerData *)), this, SLOT(peerUpdated(PeerData *))); connect(App::main(), SIGNAL(peerNameChanged(PeerData *, const PeerData::Names &, const PeerData::NameFirstChars &)), this, SLOT(peerUpdated(PeerData *))); } // profile connect(&_uploadPhoto, SIGNAL(clicked()), this, SLOT(onUpdatePhoto())); connect(&_cancelPhoto, SIGNAL(clicked()), this, SLOT(onUpdatePhotoCancel())); connect(App::app(), SIGNAL(peerPhotoDone(PeerId)), this, SLOT(onPhotoUpdateDone(PeerId))); connect(App::app(), SIGNAL(peerPhotoFail(PeerId)), this, SLOT(onPhotoUpdateFail(PeerId))); // notifications connect(&_desktopNotify, SIGNAL(changed()), this, SLOT(onDesktopNotify())); connect(&_soundNotify, SIGNAL(changed()), this, SLOT(onSoundNotify())); // general connect(&_autoUpdate, SIGNAL(changed()), this, SLOT(onAutoUpdate())); connect(&_checkNow, SIGNAL(clicked()), this, SLOT(onCheckNow())); connect(&_restartNow, SIGNAL(clicked()), this, SLOT(onRestartNow())); connect(&_workmodeTray, SIGNAL(changed()), this, SLOT(onWorkmodeTray())); connect(&_workmodeWindow, SIGNAL(changed()), this, SLOT(onWorkmodeWindow())); _startMinimized.setDisabled(!_autoStart.checked()); connect(&_autoStart, SIGNAL(changed()), this, SLOT(onAutoStart())); connect(&_startMinimized, SIGNAL(changed()), this, SLOT(onStartMinimized())); connect(&_dpiAutoScale, SIGNAL(changed()), this, SLOT(onScaleAuto())); connect(&_dpiSlider, SIGNAL(changed(int32)), this, SLOT(onScaleChange())); _curVersionText = lang(lng_settings_current_version).replace(qsl("{version}"), QString::fromWCharArray(AppVersionStr)) + ' '; _curVersionWidth = st::linkFont->m.width(_curVersionText); _newVersionText = lang(lng_settings_update_ready) + ' '; _newVersionWidth = st::linkFont->m.width(_newVersionText); connect(App::app(), SIGNAL(updateChecking()), this, SLOT(onUpdateChecking())); connect(App::app(), SIGNAL(updateLatest()), this, SLOT(onUpdateLatest())); connect(App::app(), SIGNAL(updateDownloading(qint64,qint64)), this, SLOT(onUpdateDownloading(qint64,qint64))); connect(App::app(), SIGNAL(updateReady()), this, SLOT(onUpdateReady())); connect(App::app(), SIGNAL(updateFailed()), this, SLOT(onUpdateFailed())); // chat options connect(&_replaceEmojis, SIGNAL(changed()), this, SLOT(onReplaceEmojis())); connect(&_viewEmojis, SIGNAL(clicked()), this, SLOT(onViewEmojis())); connect(&_enterSend, SIGNAL(changed()), this, SLOT(onEnterSend())); connect(&_ctrlEnterSend, SIGNAL(changed()), this, SLOT(onCtrlEnterSend())); connect(&_dontAskDownloadPath, SIGNAL(changed()), this, SLOT(onDontAskDownloadPath())); connect(&_downloadPathEdit, SIGNAL(clicked()), this, SLOT(onDownloadPathEdit())); connect(&_downloadPathClear, SIGNAL(clicked()), this, SLOT(onDownloadPathClear())); switch (App::wnd()->tempDirState()) { case Window::TempDirEmpty: _tempDirClearState = TempDirEmpty; break; case Window::TempDirExists: _tempDirClearState = TempDirExists; break; case Window::TempDirRemoving: _tempDirClearState = TempDirClearing; break; } connect(App::wnd(), SIGNAL(tempDirCleared()), this, SLOT(onTempDirCleared())); connect(App::wnd(), SIGNAL(tempDirClearFailed()), this, SLOT(onTempDirClearFailed())); connect(&_catsAndDogs, SIGNAL(changed()), this, SLOT(onCatsAndDogs())); connect(&_scrollNotActive, SIGNAL(changed()), this, SLOT(onScrollNotActive())); // advanced connect(&_connectionType, SIGNAL(clicked()), this, SLOT(onConnectionType())); connect(&_resetSessions, SIGNAL(clicked()), this, SLOT(onResetSessions())); connect(&_logOut, SIGNAL(clicked()), this, SLOT(onLogout())); _connectionTypeText = lang(lng_connection_type) + ' '; _connectionTypeWidth = st::linkFont->m.width(_connectionTypeText); if (App::main()) { connect(App::main(), SIGNAL(peerUpdated(PeerData*)), this, SLOT(peerUpdated(PeerData*))); } updateOnlineDisplay(); switch (App::app()->updatingState()) { case Application::UpdatingDownload: setUpdatingState(UpdatingDownload, true); setDownloadProgress(App::app()->updatingReady(), App::app()->updatingSize()); break; case Application::UpdatingReady: setUpdatingState(UpdatingReady, true); break; default: setUpdatingState(UpdatingNone, true); break; } updateConnectionType(); setMouseTracking(true); }
void SystemMenu::rebuildMenu(bool dockHiding) { if (menu()) { menu()->clear(); } QMenu *menu = new QMenu(this); about = new QAction("About this computer", this); menu->addAction(about); connect(about, SIGNAL(triggered()), this, SLOT(onAbout())); /* TODO: Removed for now until I found clear way for managing software on different distros QAction *software = new QAction("Software management ...", this); menu->addAction(software); */ menu->addSeparator(); QAction *pref = new QAction("System preferences ...", this); menu->addAction(pref); connect(pref, SIGNAL(triggered()), this, SLOT(onPreferences())); menu->addSeparator(); if (dockHiding) { adock_on = new QAction("Turn Hiding Off", this); } else { int s = app->dock->dockState; if (s == Dockbar::Normal || s == Dockbar::Showing || s == Dockbar::AboutToShow) { adock_on = new QAction("Turn Hiding On", this); } else if (s == Dockbar::Hidden || s == Dockbar::Hiding) { adock_on = new QAction("Turn Hiding Off", this); } } //QAction *adock_magn = new QAction("Turn Magnification On", this); adock_pref = new QAction("Dock Preferences ...", this); QMenu *dock_menu = menu->addMenu("Dock"); dock_menu->addAction(adock_on); connect(adock_on, SIGNAL(triggered()), this, SLOT(onShowHideDock())); connect(adock_pref, SIGNAL(triggered()), this, SLOT(onDockPref())); //dock_menu->addAction(adock_magn); dock_menu->addSeparator(); dock_menu->addAction(adock_pref); menu->addSeparator(); /* TODO: Removed for now until I implement the features QAction *force_quit = new QAction("Force Quit ...", this); menu->addAction(force_quit); menu->addSeparator(); */ sleep = new QAction("Sleep", this); menu->addAction(sleep); connect(sleep, SIGNAL(triggered()), this, SLOT(onSleep())); restart = new QAction("Restart ...", this); menu->addAction(restart); connect(restart, SIGNAL(triggered()), this, SLOT(onRestart())); shutdown = new QAction("Shutdown ...", this); menu->addAction(shutdown); connect(shutdown, SIGNAL(triggered()), this, SLOT(onShutdown())); menu->addSeparator(); logout = new QAction("Logout ...", this); menu->addAction(logout); connect(logout, SIGNAL(triggered()), this, SLOT(onLogout())); setMenu(menu); connect(this, SIGNAL(clicked()), this, SLOT(showMenu())); }
//public: OClientPeer::OClientPeer(QTcpSocket *connect):OAbstractPeer(ClientPeer,connect) { } void OClientPeer::init() { connect(this,SIGNAL(onLogin(QString,QString,QVector<int>,bool,bool,bool)),this,SLOT(onLogin(QString,QString,QVector<int>,bool,bool,bool))); connect(this,SIGNAL(onAskInfo(QStringList)),this,SLOT(onAskInfo(QStringList))); connect(this,SIGNAL(onAskPublicKey()),this,SLOT(onAskPublicKey())); connect(this,SIGNAL(onAskUserList(QString,QString,bool)),this,SLOT(onAskUserList(QString,QString,bool))); connect(this,SIGNAL(onModifyUserList(QString,QString,QString,QString)),this,SLOT(onModifyUserList(QString,QString,QString,QString))); connect(this,SIGNAL(onState(QString)),this,SLOT(onState(QString))); connect(this,SIGNAL(onLogout()),this,SLOT(onLogout())); connect(this,SIGNAL(onSendMsg(QString,QString)),this,SLOT(onSendMsg(QString,QString))); connect(this,SIGNAL(onUserRequest(QString,QString)),this,SLOT(onUserRequest(QString,QString))); connect(this,SIGNAL(onRequestResult(int,QString)),this,SLOT(onRequestResult(int,QString))); connect(this,SIGNAL(onModifyGroup(QString,QString,QStringList)),this,SLOT(onModifyGroup(QString,QString,QStringList))); connect(this,SIGNAL(onAskUserInfo(QString,QStringList)),this,SLOT(onAskUserInfo(QString,QStringList))); connect(this,SIGNAL(onModifyInfo(QString,QMap<QString,QString>)),this,SLOT(onModifyInfo(QString,QMap<QString,QString>))); connect(this,SIGNAL(onOK(QString)),this,SLOT(onOK(QString))); OAbstractPeer::init(); } //public slots: void OClientPeer::onLogin(QString uname,QString pwdHash,QVector<int> p2pPort,bool isMain,bool isForce,bool isShowIp) { if(client->isLoged)//如果已经登录了