forked from openkylin/ukui-search
feat(frontend): Set fixed geometry for mainwindow.
Description: 固定主界面位置在任务栏附近 Log: 固定主界面位置在任务栏附近
This commit is contained in:
parent
f62c5dd289
commit
749b101968
|
@ -289,7 +289,7 @@ void ContentWidget::initHomePage() {
|
||||||
QStringList recentlyList;
|
QStringList recentlyList;
|
||||||
recentlyList = map.value("Recently");
|
recentlyList = map.value("Recently");
|
||||||
QStringList quicklyList;
|
QStringList quicklyList;
|
||||||
quicklyList<<"/usr/share/applications/peony.desktop"<<"/usr/share/applications/ukui-control-center.desktop"<<"Theme/主题/更改壁纸";
|
quicklyList<<"/usr/share/applications/peony.desktop"<<"/usr/share/applications/ukui-control-center.desktop"<<"Background/背景/更改壁纸";
|
||||||
lists.append(commonlyList);
|
lists.append(commonlyList);
|
||||||
lists.append(recentlyList);
|
lists.append(recentlyList);
|
||||||
lists.append(quicklyList);
|
lists.append(quicklyList);
|
||||||
|
|
|
@ -198,9 +198,11 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
MainWindow *w = new MainWindow;
|
MainWindow *w = new MainWindow;
|
||||||
QStringList arguments = QCoreApplication::arguments();
|
QStringList arguments = QCoreApplication::arguments();
|
||||||
centerToScreen(w);
|
// centerToScreen(w);
|
||||||
|
w->moveToPanel();
|
||||||
|
|
||||||
//使用窗管的无边框策略
|
//使用窗管的无边框策略
|
||||||
|
w->setProperty("useStyleWindowManager", false); //禁用拖动
|
||||||
MotifWmHints hints;
|
MotifWmHints hints;
|
||||||
hints.flags = MWM_HINTS_FUNCTIONS|MWM_HINTS_DECORATIONS;
|
hints.flags = MWM_HINTS_FUNCTIONS|MWM_HINTS_DECORATIONS;
|
||||||
hints.functions = MWM_FUNC_ALL;
|
hints.functions = MWM_FUNC_ALL;
|
||||||
|
|
|
@ -113,6 +113,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||||
if(reason == QSystemTrayIcon::Trigger)
|
if(reason == QSystemTrayIcon::Trigger)
|
||||||
{
|
{
|
||||||
clearSearchResult();
|
clearSearchResult();
|
||||||
|
this->moveToPanel();
|
||||||
this->show();
|
this->show();
|
||||||
this->raise();
|
this->raise();
|
||||||
this->activateWindow();
|
this->activateWindow();
|
||||||
|
@ -165,7 +166,8 @@ void MainWindow::initUi()
|
||||||
m_menuBtn->setFixedSize(24, 24);
|
m_menuBtn->setFixedSize(24, 24);
|
||||||
// m_menuBtn->setIcon(QIcon(":/res/icons/commonuse.svg"));
|
// m_menuBtn->setIcon(QIcon(":/res/icons/commonuse.svg"));
|
||||||
m_menuBtn->setIcon(QIcon::fromTheme("document-properties-symbolic"));
|
m_menuBtn->setIcon(QIcon::fromTheme("document-properties-symbolic"));
|
||||||
m_menuBtn->setProperty("useIconHighlightEffect", 0x08);
|
m_menuBtn->setProperty("useIconHighlightEffect", 0x2);
|
||||||
|
m_menuBtn->setProperty("isWindowButton", 0x01);
|
||||||
m_menuBtn->setFlat(true);
|
m_menuBtn->setFlat(true);
|
||||||
connect(m_menuBtn, &QPushButton::clicked, this, [ = ]() {
|
connect(m_menuBtn, &QPushButton::clicked, this, [ = ]() {
|
||||||
if (m_settingsWidget) { //当此窗口已存在时,仅需置顶
|
if (m_settingsWidget) { //当此窗口已存在时,仅需置顶
|
||||||
|
@ -238,6 +240,7 @@ void MainWindow::bootOptionsFilter(QString opt)
|
||||||
{
|
{
|
||||||
if (opt == "-s" || opt == "--show") {
|
if (opt == "-s" || opt == "--show") {
|
||||||
clearSearchResult();
|
clearSearchResult();
|
||||||
|
this->moveToPanel();
|
||||||
this->show();
|
this->show();
|
||||||
this->raise();
|
this->raise();
|
||||||
this->activateWindow();
|
this->activateWindow();
|
||||||
|
@ -304,6 +307,67 @@ void MainWindow::searchContent(QString searchcontent){
|
||||||
this->m_searcher->onKeywordSearch(searchcontent, m_search_result_file, m_search_result_dir, m_search_result_content);
|
this->m_searcher->onKeywordSearch(searchcontent, m_search_result_file, m_search_result_dir, m_search_result_content);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief MainWindow::moveToPanel 将主界面移动到任务栏旁边(跟随任务栏位置)
|
||||||
|
*/
|
||||||
|
void MainWindow::moveToPanel()
|
||||||
|
{
|
||||||
|
QRect availableGeometry = qApp->primaryScreen()->availableGeometry();
|
||||||
|
QRect screenGeometry = qApp->primaryScreen()->geometry();
|
||||||
|
|
||||||
|
QDesktopWidget * desktopWidget = QApplication::desktop();
|
||||||
|
QRect screenMainRect = desktopWidget->screenGeometry(0);//获取设备屏幕大小
|
||||||
|
|
||||||
|
QDBusInterface interface( "com.ukui.panel.desktop",
|
||||||
|
"/",
|
||||||
|
"com.ukui.panel.desktop",
|
||||||
|
QDBusConnection::sessionBus() );
|
||||||
|
|
||||||
|
int position = QDBusReply<int>(interface.call("GetPanelPosition", "position"));
|
||||||
|
int height = QDBusReply<int>(interface.call("GetPanelPosition", "height"));
|
||||||
|
int d = 2; //窗口边沿到任务栏距离
|
||||||
|
|
||||||
|
if (screenGeometry.width() == availableGeometry.width() && screenGeometry.height() == availableGeometry.height()) {
|
||||||
|
if (position == 0) {
|
||||||
|
//任务栏在下侧
|
||||||
|
this->move(availableGeometry.x() + availableGeometry.width() - this->width(), screenMainRect.y() + availableGeometry.height() - this->height() - height - d);
|
||||||
|
} else if(position == 1) {
|
||||||
|
//任务栏在上侧
|
||||||
|
this->move(availableGeometry.x() + availableGeometry.width() - this->width(), screenMainRect.y() + screenGeometry.height() - availableGeometry.height() + height + d);
|
||||||
|
} else if (position == 2) {
|
||||||
|
//任务栏在左侧
|
||||||
|
if (screenGeometry.x() == 0) {//主屏在左侧
|
||||||
|
this->move(height + d, screenMainRect.y() + screenMainRect.height() - this->height());
|
||||||
|
} else {//主屏在右侧
|
||||||
|
this->move(screenMainRect.x() + height + d, screenMainRect.y() + screenMainRect.height() - this->height());
|
||||||
|
}
|
||||||
|
} else if (position == 3) {
|
||||||
|
//任务栏在右侧
|
||||||
|
if (screenGeometry.x() == 0) {//主屏在左侧
|
||||||
|
this->move(screenMainRect.width() - this->width() - height - d, screenMainRect.y() + screenMainRect.height() - this->height());
|
||||||
|
} else {//主屏在右侧
|
||||||
|
this->move(screenMainRect.x() + screenMainRect.width() - this->width() - height - d, screenMainRect.y() + screenMainRect.height() - this->height());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if(screenGeometry.width() == availableGeometry.width() ) {
|
||||||
|
if (m_sys_tray_icon->geometry().y() > availableGeometry.height()/2) {
|
||||||
|
//任务栏在下侧
|
||||||
|
this->move(availableGeometry.x() + availableGeometry.width() - this->width(), screenMainRect.y() + availableGeometry.height() - this->height() - d);
|
||||||
|
} else {
|
||||||
|
//任务栏在上侧
|
||||||
|
this->move(availableGeometry.x() + availableGeometry.width() - this->width(), screenMainRect.y() + screenGeometry.height() - availableGeometry.height() + d);
|
||||||
|
}
|
||||||
|
} else if (screenGeometry.height() == availableGeometry.height()) {
|
||||||
|
if (m_sys_tray_icon->geometry().x() > availableGeometry.width()/2) {
|
||||||
|
//任务栏在右侧
|
||||||
|
this->move(availableGeometry.x() + availableGeometry.width() - this->width() - d, screenMainRect.y() + screenGeometry.height() - this->height());
|
||||||
|
} else {
|
||||||
|
//任务栏在左侧
|
||||||
|
this->move(screenGeometry.width() - availableGeometry.width() + d, screenMainRect.y() + screenGeometry.height() - this->height());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//使用GSetting获取当前窗口应该使用的透明度
|
//使用GSetting获取当前窗口应该使用的透明度
|
||||||
double MainWindow::getTransparentData()
|
double MainWindow::getTransparentData()
|
||||||
{
|
{
|
||||||
|
|
|
@ -58,6 +58,7 @@ public:
|
||||||
* @brief Load the main window
|
* @brief Load the main window
|
||||||
*/
|
*/
|
||||||
void searchContent(QString searchcontent);
|
void searchContent(QString searchcontent);
|
||||||
|
void moveToPanel();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool nativeEvent(const QByteArray&, void *, long *);
|
bool nativeEvent(const QByteArray&, void *, long *);
|
||||||
|
|
|
@ -178,7 +178,7 @@
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/settings-widget.cpp" line="101"/>
|
<location filename="../../src/settings-widget.cpp" line="101"/>
|
||||||
<source>Add ignored folders</source>
|
<source>Add ignored folders</source>
|
||||||
<translation>添加禁止索引文件夹</translation>
|
<translation>添加文件夹至黑名单</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../../src/settings-widget.cpp" line="122"/>
|
<location filename="../../src/settings-widget.cpp" line="122"/>
|
||||||
|
|
Loading…
Reference in New Issue