Exemplo n.º 1
0
void Window::init() {
	psInitFrameless();
	setWindowIcon(wndIcon);

	App::app()->installEventFilter(this);
    connect(windowHandle(), SIGNAL(activeChanged()), this, SLOT(checkHistoryActivation()));

	QPalette p(palette());
	p.setColor(QPalette::Window, st::wndBG->c);
	setPalette(p);

	title = new TitleWidget(this);

	psInitSize();
	psUpdateWorkmode();
}
Exemplo n.º 2
0
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);
	}
	psUpdateWorkmode();

	psFirstShow();
	updateTrayMenu();
}
Exemplo n.º 3
0
void PsMainWindow::psCreateTrayIcon() {
    if (!noQtTrayIcon) {
        cSetSupportTray(QSystemTrayIcon::isSystemTrayAvailable());
        return;
    }

    if (useAppIndicator) {
        DEBUG_LOG(("Trying to create AppIndicator"));
        if (ps_gtk_init_check(0, 0)) {
            DEBUG_LOG(("Checked gtk with gtk_init_check!"));
            _trayMenu = ps_gtk_menu_new();
            if (_trayMenu) {
                DEBUG_LOG(("Created gtk menu for appindicator!"));
                QFileInfo f(_trayIconImageFile());
                if (f.exists()) {
                    QByteArray path = QFile::encodeName(f.absoluteFilePath());
                   _trayIndicator = ps_app_indicator_new("Telegram Desktop", path.constData(), APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
                   if (_trayIndicator) {
                       DEBUG_LOG(("Created appindicator!"));
                   } else {
                       DEBUG_LOG(("Failed to app_indicator_new()!"));
                   }
                } else {
                    useAppIndicator = false;
                    DEBUG_LOG(("Failed to create image file!"));
                }
            } else {
                DEBUG_LOG(("Failed to gtk_menu_new()!"));
            }
        } else {
            DEBUG_LOG(("Failed to gtk_init_check(0, 0)!"));
        }
        if (_trayMenu && _trayIndicator) {
            ps_app_indicator_set_status(_trayIndicator, APP_INDICATOR_STATUS_ACTIVE);
            ps_app_indicator_set_menu(_trayIndicator, PS_GTK_MENU(_trayMenu));
            useStatusIcon = false;
        } else {
            DEBUG_LOG(("AppIndicator failed!"));
            useAppIndicator = false;
        }
    }
    if (useStatusIcon) {
        if (ps_gtk_init_check(0, 0) && ps_gdk_init_check(0, 0)) {
            if (!_trayMenu) _trayMenu = ps_gtk_menu_new();
            if (_trayMenu) {
                loadPixbuf(_trayIconImageGen());
                _trayIcon = ps_gtk_status_icon_new_from_pixbuf(_trayPixbuf);
                if (_trayIcon) {
                    ps_g_signal_connect(_trayIcon, "popup-menu", GCallback(_trayIconPopup), _trayMenu);
                    ps_g_signal_connect(_trayIcon, "activate", GCallback(_trayIconActivate), _trayMenu);
                    ps_g_signal_connect(_trayIcon, "size-changed", GCallback(_trayIconResized), _trayMenu);

                    ps_gtk_status_icon_set_title(_trayIcon, "Telegram Desktop");
                    ps_gtk_status_icon_set_tooltip_text(_trayIcon, "Telegram Desktop");
                    ps_gtk_status_icon_set_visible(_trayIcon, true);
                } else {
                    useStatusIcon = false;
                }
            } else {
                useStatusIcon = false;
            }
        } else {
            useStatusIcon = false;
        }
    }
    if (!useStatusIcon && !useAppIndicator) {
        if (_trayMenu) {
            ps_g_object_ref_sink(_trayMenu);
            ps_g_object_unref(_trayMenu);
            _trayMenu = 0;
        }
    }
    cSetSupportTray(useAppIndicator);
    if (useStatusIcon) {
        ps_g_idle_add((GSourceFunc)_trayIconCheck, 0);
        _psCheckStatusIconTimer.start(100);
    } else {
        psUpdateWorkmode();
    }
}