mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00
add settings class
Change-Id: Idc33ed878fa343a748fc28ccf6f6dc89bee73d4c
This commit is contained in:
parent
655683b70f
commit
525f24a712
@ -15,7 +15,8 @@ SOURCES += main.cpp \
|
||||
controller/dockitemcontroller.cpp \
|
||||
dbus/dbusdockentry.cpp \
|
||||
dbus/dbusdisplay.cpp \
|
||||
item/appitem.cpp
|
||||
item/appitem.cpp \
|
||||
util/docksettings.cpp
|
||||
|
||||
HEADERS += \
|
||||
window/mainwindow.h \
|
||||
@ -26,4 +27,5 @@ HEADERS += \
|
||||
controller/dockitemcontroller.h \
|
||||
dbus/dbusdockentry.h \
|
||||
dbus/dbusdisplay.h \
|
||||
item/appitem.h
|
||||
item/appitem.h \
|
||||
util/docksettings.h
|
||||
|
@ -6,14 +6,23 @@ AppItem::AppItem(const QDBusObjectPath &entry, QWidget *parent)
|
||||
: DockItem(parent),
|
||||
m_itemEntry(new DBusDockEntry(entry.path(), this))
|
||||
{
|
||||
|
||||
qDebug() << m_itemEntry->data();
|
||||
}
|
||||
|
||||
void AppItem::paintEvent(QPaintEvent *e)
|
||||
{
|
||||
DockItem::paintEvent(e);
|
||||
|
||||
const QRect itemRect = rect();
|
||||
const int iconSize = std::min(itemRect.width(), itemRect.height());
|
||||
|
||||
QRect iconRect;
|
||||
iconRect.setWidth(iconSize);
|
||||
iconRect.setHeight(iconSize);
|
||||
iconRect.moveTopLeft(itemRect.center() - iconRect.center());
|
||||
|
||||
QPainter painter(this);
|
||||
painter.fillRect(rect(), Qt::cyan);
|
||||
painter.fillRect(iconRect, Qt::yellow);
|
||||
painter.drawText(rect(), m_itemEntry->id());
|
||||
}
|
||||
|
@ -1,22 +1,34 @@
|
||||
#include "mainpanel.h"
|
||||
|
||||
#include <QHBoxLayout>
|
||||
#include <QBoxLayout>
|
||||
|
||||
MainPanel::MainPanel(QWidget *parent)
|
||||
: QFrame(parent),
|
||||
m_itemLayout(new QBoxLayout(QBoxLayout::LeftToRight, this)),
|
||||
|
||||
m_itemController(DockItemController::instance(this))
|
||||
{
|
||||
setObjectName("MainPanel");
|
||||
setStyleSheet("QWidget #MainPanel {"
|
||||
"border:none;"
|
||||
"background-color:red;"
|
||||
// "border-radius:5px 5px 5px 5px;"
|
||||
"border-radius:5px 5px 5px 5px;"
|
||||
"}");
|
||||
|
||||
QHBoxLayout *layout = new QHBoxLayout;
|
||||
setLayout(layout);
|
||||
|
||||
const QList<DockItem *> itemList = m_itemController->itemList();
|
||||
for (auto item : itemList)
|
||||
layout->addWidget(item);
|
||||
m_itemLayout->addWidget(item);
|
||||
|
||||
setLayout(m_itemLayout);
|
||||
}
|
||||
|
||||
void MainPanel::updateDockSide(const DockSettings::DockSide dockSide)
|
||||
{
|
||||
switch (dockSide)
|
||||
{
|
||||
case DockSettings::Top:
|
||||
case DockSettings::Bottom: m_itemLayout->setDirection(QBoxLayout::LeftToRight); break;
|
||||
case DockSettings::Left:
|
||||
case DockSettings::Right: m_itemLayout->setDirection(QBoxLayout::TopToBottom); break;
|
||||
}
|
||||
}
|
||||
|
@ -2,8 +2,10 @@
|
||||
#define MAINPANEL_H
|
||||
|
||||
#include "controller/dockitemcontroller.h"
|
||||
#include "util/docksettings.h"
|
||||
|
||||
#include <QFrame>
|
||||
#include <QBoxLayout>
|
||||
|
||||
class MainPanel : public QFrame
|
||||
{
|
||||
@ -12,7 +14,11 @@ class MainPanel : public QFrame
|
||||
public:
|
||||
explicit MainPanel(QWidget *parent = 0);
|
||||
|
||||
void updateDockSide(const DockSettings::DockSide dockSide);
|
||||
|
||||
private:
|
||||
QBoxLayout *m_itemLayout;
|
||||
|
||||
DockItemController *m_itemController;
|
||||
};
|
||||
|
||||
|
12
util/docksettings.cpp
Normal file
12
util/docksettings.cpp
Normal file
@ -0,0 +1,12 @@
|
||||
#include "docksettings.h"
|
||||
|
||||
DockSettings::DockSettings(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
DockSettings::DockSide DockSettings::side() const
|
||||
{
|
||||
return Top;
|
||||
}
|
27
util/docksettings.h
Normal file
27
util/docksettings.h
Normal file
@ -0,0 +1,27 @@
|
||||
#ifndef DOCKSETTINGS_H
|
||||
#define DOCKSETTINGS_H
|
||||
|
||||
#include <QObject>
|
||||
|
||||
class DockSettings : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum DockSide {
|
||||
Top,
|
||||
Bottom,
|
||||
Left,
|
||||
Right,
|
||||
};
|
||||
|
||||
public:
|
||||
explicit DockSettings(QObject *parent = 0);
|
||||
|
||||
DockSide side() const;
|
||||
|
||||
signals:
|
||||
void dockSideChanged(const DockSide side) const;
|
||||
};
|
||||
|
||||
#endif // DOCKSETTINGS_H
|
@ -1,26 +1,23 @@
|
||||
#include "mainwindow.h"
|
||||
#include "panel/mainpanel.h"
|
||||
|
||||
#include <QDebug>
|
||||
#include <QResizeEvent>
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent)
|
||||
: QWidget(parent),
|
||||
m_position(BOTTOM),
|
||||
|
||||
m_mainPanel(new MainPanel(this)),
|
||||
|
||||
m_settings(new DockSettings(this)),
|
||||
m_displayInter(new DBusDisplay(this)),
|
||||
|
||||
m_positionUpdateTimer(new QTimer(this))
|
||||
{
|
||||
setWindowFlags(Qt::FramelessWindowHint);
|
||||
setWindowFlags(Qt::X11BypassWindowManagerHint);
|
||||
setAttribute(Qt::WA_TranslucentBackground);
|
||||
|
||||
connect(m_positionUpdateTimer, &QTimer::timeout, this, &MainWindow::updatePosition);
|
||||
|
||||
m_positionUpdateTimer->setSingleShot(true);
|
||||
m_positionUpdateTimer->setInterval(200);
|
||||
m_positionUpdateTimer->start();
|
||||
initComponents();
|
||||
initConnections();
|
||||
}
|
||||
|
||||
void MainWindow::resizeEvent(QResizeEvent *e)
|
||||
@ -41,6 +38,18 @@ void MainWindow::keyPressEvent(QKeyEvent *e)
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::initComponents()
|
||||
{
|
||||
m_positionUpdateTimer->setSingleShot(true);
|
||||
m_positionUpdateTimer->setInterval(200);
|
||||
m_positionUpdateTimer->start();
|
||||
}
|
||||
|
||||
void MainWindow::initConnections()
|
||||
{
|
||||
connect(m_positionUpdateTimer, &QTimer::timeout, this, &MainWindow::updatePosition);
|
||||
}
|
||||
|
||||
void MainWindow::updatePosition()
|
||||
{
|
||||
const QRect rect = m_displayInter->primaryRect();
|
||||
|
@ -2,38 +2,33 @@
|
||||
#define MAINWINDOW_H
|
||||
|
||||
#include "xcb/xcb_misc.h"
|
||||
#include "panel/mainpanel.h"
|
||||
#include "dbus/dbusdisplay.h"
|
||||
#include "util/docksettings.h"
|
||||
|
||||
#include <QWidget>
|
||||
#include <QTimer>
|
||||
|
||||
class MainPanel;
|
||||
class MainWindow : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
enum Position {
|
||||
TOP,
|
||||
BOTTOM,
|
||||
LEFT,
|
||||
RIGHT,
|
||||
};
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = 0);
|
||||
|
||||
private:
|
||||
void resizeEvent(QResizeEvent *e);
|
||||
void keyPressEvent(QKeyEvent *e);
|
||||
void initComponents();
|
||||
void initConnections();
|
||||
|
||||
private slots:
|
||||
void updatePosition();
|
||||
|
||||
private:
|
||||
Position m_position;
|
||||
|
||||
MainPanel *m_mainPanel;
|
||||
|
||||
DockSettings *m_settings;
|
||||
DBusDisplay *m_displayInter;
|
||||
|
||||
QTimer *m_positionUpdateTimer;
|
||||
|
Loading…
x
Reference in New Issue
Block a user