diff --git a/QtScrcpy/dialog.ui b/QtScrcpy/dialog.ui
index 5dcb940..8675958 100644
--- a/QtScrcpy/dialog.ui
+++ b/QtScrcpy/dialog.ui
@@ -6,10 +6,22 @@
0
0
- 564
+ 560
486
+
+
+ 560
+ 0
+
+
+
+
+ 560
+ 16777215
+
+
QtScrcpy
diff --git a/QtScrcpy/inputcontrol/controlevent.h b/QtScrcpy/inputcontrol/controlevent.h
index 7629854..3dd2f83 100644
--- a/QtScrcpy/inputcontrol/controlevent.h
+++ b/QtScrcpy/inputcontrol/controlevent.h
@@ -9,6 +9,7 @@
#include "input.h"
#include "keycodes.h"
+#define CONTROL_EVENT_COMMAND_BACK_OR_SCREEN_ON 0
// ControlEvent
class ControlEvent : public QScrcpyEvent
{
diff --git a/QtScrcpy/inputcontrol/inputconvertbase.h b/QtScrcpy/inputcontrol/inputconvertbase.h
index ded0d0e..b2bf654 100644
--- a/QtScrcpy/inputcontrol/inputconvertbase.h
+++ b/QtScrcpy/inputcontrol/inputconvertbase.h
@@ -21,7 +21,6 @@ public:
virtual void keyEvent(const QKeyEvent* from, const QSize& frameSize, const QSize& showSize) = 0;
void setDeviceSocket(DeviceSocket* deviceSocket);
-protected:
void sendControlEvent(ControlEvent* event);
private:
diff --git a/QtScrcpy/toolform.cpp b/QtScrcpy/toolform.cpp
index 0003203..7bafb3f 100644
--- a/QtScrcpy/toolform.cpp
+++ b/QtScrcpy/toolform.cpp
@@ -2,6 +2,8 @@
#include "toolform.h"
#include "ui_toolform.h"
+#include "iconhelper.h"
+#include "videoform.h"
ToolForm::ToolForm(QWidget* adsorbWidget, AdsorbPositions adsorbPos)
: MagneticWidget(adsorbWidget, adsorbPos)
@@ -10,6 +12,10 @@ ToolForm::ToolForm(QWidget* adsorbWidget, AdsorbPositions adsorbPos)
ui->setupUi(this);
//setWindowFlags(windowFlags() | Qt::FramelessWindowHint);
setWindowFlags(windowFlags() & ~Qt::WindowMinMaxButtonsHint);
+
+ m_videoForm = dynamic_cast(adsorbWidget);
+
+ initStyle();
}
ToolForm::~ToolForm()
@@ -17,6 +23,20 @@ ToolForm::~ToolForm()
delete ui;
}
+void ToolForm::initStyle()
+{
+ IconHelper::Instance()->SetIcon(ui->fullScreenBtn, QChar(0xf0b2), 15);
+ IconHelper::Instance()->SetIcon(ui->menuBtn, QChar(0xf096), 15);
+ IconHelper::Instance()->SetIcon(ui->homeBtn, QChar(0xf1db), 15);
+ //IconHelper::Instance()->SetIcon(ui->returnBtn, QChar(0xf104), 15);
+ IconHelper::Instance()->SetIcon(ui->returnBtn, QChar(0xf053), 15);
+ IconHelper::Instance()->SetIcon(ui->appSwitchBtn, QChar(0xf24d), 15);
+ IconHelper::Instance()->SetIcon(ui->powerBtn, QChar(0xf023), 15);
+ IconHelper::Instance()->SetIcon(ui->volumeUpBtn, QChar(0xf028), 15);
+ IconHelper::Instance()->SetIcon(ui->volumeDownBtn, QChar(0xf027), 15);
+ IconHelper::Instance()->SetIcon(ui->turnOnBtn, QChar(0xf09c), 15);
+}
+
void ToolForm::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
@@ -37,3 +57,66 @@ void ToolForm::mouseMoveEvent(QMouseEvent *event)
event->accept();
}
}
+
+void ToolForm::on_fullScreenBtn_clicked()
+{
+ if (m_videoForm) {
+ m_videoForm->switchFullScreen();
+ }
+}
+
+void ToolForm::on_returnBtn_clicked()
+{
+ if (m_videoForm) {
+ m_videoForm->postGoBack();
+ }
+}
+
+void ToolForm::on_homeBtn_clicked()
+{
+ if (m_videoForm) {
+ m_videoForm->postGoHome();
+ }
+}
+
+void ToolForm::on_menuBtn_clicked()
+{
+ if (m_videoForm) {
+ m_videoForm->postGoMenu();
+ }
+}
+
+void ToolForm::on_appSwitchBtn_clicked()
+{
+ if (m_videoForm) {
+ m_videoForm->postAppSwitch();
+ }
+}
+
+void ToolForm::on_powerBtn_clicked()
+{
+ if (m_videoForm) {
+ m_videoForm->postPower();
+ }
+}
+
+void ToolForm::on_volumeUpBtn_clicked()
+{
+ if (m_videoForm) {
+ m_videoForm->postVolumeUp();
+ }
+}
+
+void ToolForm::on_volumeDownBtn_clicked()
+{
+ if (m_videoForm) {
+ m_videoForm->postVolumeDown();
+ }
+}
+
+void ToolForm::on_turnOnBtn_clicked()
+{
+ if (m_videoForm) {
+ m_videoForm->postTurnOn();
+ }
+}
diff --git a/QtScrcpy/toolform.h b/QtScrcpy/toolform.h
index 5d72b01..2c09f37 100644
--- a/QtScrcpy/toolform.h
+++ b/QtScrcpy/toolform.h
@@ -2,6 +2,7 @@
#define TOOLFORM_H
#include
+#include
#include "magneticwidget.h"
@@ -9,6 +10,7 @@ namespace Ui {
class ToolForm;
}
+class VideoForm;
class ToolForm : public MagneticWidget
{
Q_OBJECT
@@ -22,9 +24,32 @@ protected:
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
+private slots:
+ void on_fullScreenBtn_clicked();
+
+ void on_returnBtn_clicked();
+
+ void on_homeBtn_clicked();
+
+ void on_menuBtn_clicked();
+
+ void on_appSwitchBtn_clicked();
+
+ void on_powerBtn_clicked();
+
+ void on_volumeUpBtn_clicked();
+
+ void on_volumeDownBtn_clicked();
+
+ void on_turnOnBtn_clicked();
+
+private:
+ void initStyle();
+
private:
Ui::ToolForm *ui;
QPoint m_dragPosition;
+ QPointer m_videoForm;
};
#endif // TOOLFORM_H
diff --git a/QtScrcpy/toolform.ui b/QtScrcpy/toolform.ui
index 8b195dc..54b0555 100644
--- a/QtScrcpy/toolform.ui
+++ b/QtScrcpy/toolform.ui
@@ -6,13 +6,91 @@
0
0
- 80
+ 63
497
-
+ Tool
+
+ -
+
+
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+
+ 20
+ 40
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
diff --git a/QtScrcpy/videoform.cpp b/QtScrcpy/videoform.cpp
index c310aac..139c994 100644
--- a/QtScrcpy/videoform.cpp
+++ b/QtScrcpy/videoform.cpp
@@ -13,6 +13,7 @@
#include "ui_videoform.h"
#include "iconhelper.h"
#include "toolform.h"
+#include "controlevent.h"
VideoForm::VideoForm(const QString& serial, quint16 maxSize, quint32 bitRate,QWidget *parent) :
QWidget(parent),
@@ -101,7 +102,6 @@ VideoForm::VideoForm(const QString& serial, quint16 maxSize, quint32 bitRate,QWi
});
updateShowSize(size());
- initStyle();
bool vertical = size().height() > size().width();
updateStyleSheet(vertical);
@@ -125,7 +125,7 @@ void VideoForm::initUI()
setAttribute(Qt::WA_DeleteOnClose);
// 去掉标题栏
- setWindowFlags(Qt::FramelessWindowHint);
+ setWindowFlags(Qt::FramelessWindowHint);
// 根据图片构造异形窗口
setAttribute(Qt::WA_TranslucentBackground);
@@ -149,12 +149,6 @@ void VideoForm::showToolFrom(bool show)
m_toolForm->setVisible(show);
}
-void VideoForm::initStyle()
-{
- //IconHelper::Instance()->SetIcon(ui->fullScrcenbtn, QChar(0xf0b2), 13);
- //IconHelper::Instance()->SetIcon(ui->returnBtn, QChar(0xf104), 15);
-}
-
void VideoForm::updateStyleSheet(bool vertical)
{
if (vertical) {
@@ -216,13 +210,77 @@ void VideoForm::switchFullScreen()
{
if (isFullScreen()) {
showNormal();
+ updateStyleSheet(height() > width());
showToolFrom(true);
} else {
showToolFrom(false);
- showFullScreen();
+ layout()->setContentsMargins(0, 0, 0, 0);
+ showFullScreen();
}
}
+void VideoForm::postGoMenu()
+{
+ postKeyCodeClick(AKEYCODE_MENU);
+}
+
+void VideoForm::postGoBack()
+{
+ postKeyCodeClick(AKEYCODE_BACK);
+}
+
+void VideoForm::postAppSwitch()
+{
+ postKeyCodeClick(AKEYCODE_APP_SWITCH);
+}
+
+void VideoForm::postPower()
+{
+ postKeyCodeClick(AKEYCODE_POWER);
+}
+
+void VideoForm::postVolumeUp()
+{
+ postKeyCodeClick(AKEYCODE_VOLUME_UP);
+}
+
+void VideoForm::postVolumeDown()
+{
+ postKeyCodeClick(AKEYCODE_VOLUME_DOWN);
+}
+
+void VideoForm::postTurnOn()
+{
+ ControlEvent* controlEvent = new ControlEvent(ControlEvent::CET_COMMAND);
+ if (!controlEvent) {
+ return;
+ }
+ controlEvent->setCommandEventData(CONTROL_EVENT_COMMAND_BACK_OR_SCREEN_ON);
+ m_inputConvert.sendControlEvent(controlEvent);
+}
+
+void VideoForm::postGoHome()
+{
+ postKeyCodeClick(AKEYCODE_HOME);
+}
+
+void VideoForm::postKeyCodeClick(AndroidKeycode keycode)
+{
+ ControlEvent* controlEventDown = new ControlEvent(ControlEvent::CET_KEYCODE);
+ if (!controlEventDown) {
+ return;
+ }
+ controlEventDown->setKeycodeEventData(AKEY_EVENT_ACTION_DOWN, keycode, AMETA_NONE);
+ m_inputConvert.sendControlEvent(controlEventDown);
+
+ ControlEvent* controlEventUp = new ControlEvent(ControlEvent::CET_KEYCODE);
+ if (!controlEventUp) {
+ return;
+ }
+ controlEventUp->setKeycodeEventData(AKEY_EVENT_ACTION_UP, keycode, AMETA_NONE);
+ m_inputConvert.sendControlEvent(controlEventUp);
+}
+
void VideoForm::mousePressEvent(QMouseEvent *event)
{
if (ui->videoWidget->geometry().contains(event->pos())) {
@@ -301,13 +359,3 @@ void VideoForm::showEvent(QShowEvent *event)
{
showToolFrom();
}
-
-void VideoForm::on_fullScrcenbtn_clicked()
-{
- switchFullScreen();
-}
-
-void VideoForm::on_returnBtn_clicked()
-{
-
-}
diff --git a/QtScrcpy/videoform.h b/QtScrcpy/videoform.h
index d1cbfdb..7610c51 100644
--- a/QtScrcpy/videoform.h
+++ b/QtScrcpy/videoform.h
@@ -23,13 +23,23 @@ public:
explicit VideoForm(const QString& serial, quint16 maxSize = 720, quint32 bitRate = 8000000, QWidget *parent = 0);
~VideoForm();
+ void switchFullScreen();
+ void postGoMenu();
+ void postGoHome();
+ void postGoBack();
+ void postAppSwitch();
+ void postPower();
+ void postVolumeUp();
+ void postVolumeDown();
+ // turn the screen on if it was off, press BACK otherwise
+ void postTurnOn();
+
private:
void updateShowSize(const QSize &newSize);
- void switchFullScreen();
- void initStyle();
void updateStyleSheet(bool vertical);
void initUI();
void showToolFrom(bool show = true);
+ void postKeyCodeClick(AndroidKeycode keycode);
protected:
void mousePressEvent(QMouseEvent *event);
@@ -42,10 +52,6 @@ protected:
void paintEvent(QPaintEvent *);
void showEvent(QShowEvent *event);
-private slots:
- void on_fullScrcenbtn_clicked();
- void on_returnBtn_clicked();
-
private:
Ui::videoForm *ui;
QSize frameSize;
diff --git a/TODO.txt b/TODO.txt
index da2c20b..13c8c12 100644
--- a/TODO.txt
+++ b/TODO.txt
@@ -1,2 +1,10 @@
-ֻ
-ߴ
\ No newline at end of file
+
+ģָ
+Ӣķ
+tool tips
+
+serverƳ
+mp4¼
+չģָȣ
+
+
\ No newline at end of file