├── .gitignore
├── QQStars.pro
├── README.md
├── deployment.pri
├── faces.qrc
├── faces
└── classic
│ ├── 0.gif
│ ├── 0.png
│ ├── 1.gif
│ ├── 1.png
│ ├── 10.gif
│ ├── 10.png
│ ├── 100.gif
│ ├── 100.png
│ ├── 101.gif
│ ├── 101.png
│ ├── 102.gif
│ ├── 102.png
│ ├── 103.gif
│ ├── 103.png
│ ├── 104.gif
│ ├── 104.png
│ ├── 105.gif
│ ├── 105.png
│ ├── 106.gif
│ ├── 106.png
│ ├── 107.gif
│ ├── 107.png
│ ├── 108.gif
│ ├── 108.png
│ ├── 109.gif
│ ├── 109.png
│ ├── 11.gif
│ ├── 11.png
│ ├── 110.gif
│ ├── 110.png
│ ├── 111.gif
│ ├── 111.png
│ ├── 112.gif
│ ├── 112.png
│ ├── 113.gif
│ ├── 113.png
│ ├── 114.gif
│ ├── 114.png
│ ├── 115.gif
│ ├── 115.png
│ ├── 116.gif
│ ├── 116.png
│ ├── 117.gif
│ ├── 117.png
│ ├── 118.gif
│ ├── 118.png
│ ├── 119.gif
│ ├── 119.png
│ ├── 12.gif
│ ├── 12.png
│ ├── 120.gif
│ ├── 120.png
│ ├── 121.gif
│ ├── 121.png
│ ├── 122.gif
│ ├── 122.png
│ ├── 123.gif
│ ├── 123.png
│ ├── 124.png
│ ├── 125.gif
│ ├── 125.png
│ ├── 126.gif
│ ├── 126.png
│ ├── 127.gif
│ ├── 127.png
│ ├── 128.gif
│ ├── 128.png
│ ├── 129.gif
│ ├── 129.png
│ ├── 13.gif
│ ├── 13.png
│ ├── 130.gif
│ ├── 130.png
│ ├── 131.gif
│ ├── 131.png
│ ├── 132.gif
│ ├── 132.png
│ ├── 133.gif
│ ├── 133.png
│ ├── 134.gif
│ ├── 134.png
│ ├── 14.gif
│ ├── 14.png
│ ├── 2.gif
│ ├── 2.png
│ ├── 21.png
│ ├── 23.gif
│ ├── 23.png
│ ├── 25.png
│ ├── 26.gif
│ ├── 26.png
│ ├── 27.gif
│ ├── 27.png
│ ├── 29.gif
│ ├── 29.png
│ ├── 3.gif
│ ├── 3.png
│ ├── 32.png
│ ├── 33.png
│ ├── 34.png
│ ├── 36.png
│ ├── 37.gif
│ ├── 37.png
│ ├── 38.gif
│ ├── 38.png
│ ├── 39.png
│ ├── 4.gif
│ ├── 4.png
│ ├── 42.png
│ ├── 45.png
│ ├── 46.gif
│ ├── 46.png
│ ├── 47.gif
│ ├── 47.png
│ ├── 5.gif
│ ├── 5.png
│ ├── 50.png
│ ├── 51.gif
│ ├── 51.png
│ ├── 53.gif
│ ├── 53.png
│ ├── 54.gif
│ ├── 54.png
│ ├── 55.gif
│ ├── 55.png
│ ├── 56.gif
│ ├── 56.png
│ ├── 57.gif
│ ├── 57.png
│ ├── 58.gif
│ ├── 58.png
│ ├── 59.png
│ ├── 6.gif
│ ├── 6.png
│ ├── 62.gif
│ ├── 62.png
│ ├── 63.gif
│ ├── 63.png
│ ├── 64.png
│ ├── 7.gif
│ ├── 7.png
│ ├── 71.gif
│ ├── 71.png
│ ├── 72.gif
│ ├── 72.png
│ ├── 73.gif
│ ├── 73.png
│ ├── 74.gif
│ ├── 74.png
│ ├── 75.gif
│ ├── 75.png
│ ├── 76.gif
│ ├── 76.png
│ ├── 77.gif
│ ├── 77.png
│ ├── 78.gif
│ ├── 78.png
│ ├── 79.gif
│ ├── 79.png
│ ├── 8.gif
│ ├── 8.png
│ ├── 80.gif
│ ├── 80.png
│ ├── 81.gif
│ ├── 81.png
│ ├── 82.gif
│ ├── 82.png
│ ├── 83.gif
│ ├── 83.png
│ ├── 84.gif
│ ├── 84.png
│ ├── 85.png
│ ├── 86.png
│ ├── 87.gif
│ ├── 87.png
│ ├── 88.gif
│ ├── 88.png
│ ├── 9.gif
│ ├── 9.png
│ ├── 91.png
│ ├── 93.gif
│ ├── 93.png
│ ├── 95.gif
│ ├── 95.png
│ ├── 96.gif
│ ├── 96.png
│ ├── 97.gif
│ ├── 97.png
│ ├── 98.gif
│ ├── 98.png
│ ├── 99.gif
│ ├── 99.png
│ ├── K歌.png
│ ├── dfp.png
│ ├── dfr.png
│ ├── dhp.png
│ ├── 下雨.png
│ ├── 下面.png
│ ├── 双喜.png
│ ├── 发财.png
│ ├── 喝奶.png
│ ├── 喝彩.png
│ ├── 多云.png
│ ├── 帅.png
│ ├── 开车.png
│ ├── 彩球.png
│ ├── 手枪.png
│ ├── 打伞.png
│ ├── 棒棒糖.png
│ ├── 沙发.png
│ ├── 灯泡.png
│ ├── 灯笼.png
│ ├── 熊猫.png
│ ├── 爆筋.png
│ ├── 祈祷.png
│ ├── 纸巾.png
│ ├── 药.png
│ ├── 购物.png
│ ├── 车厢.png
│ ├── 邮件.png
│ ├── 钞票.png
│ ├── 钻戒.png
│ ├── 闹钟.png
│ ├── 青蛙.png
│ ├── 鞭炮.png
│ ├── 风车.png
│ ├── 飞机.png
│ ├── 香蕉.png
│ ├── 高铁右车头.png
│ └── 高铁左车头.png
├── images.qrc
├── images
├── QQ-for-ubuntu.svg
├── TempSession_press.png
├── avatar-border.svg
├── avatar.png
├── avatar.svg
├── avatar_left.png
├── background_arabesquitic.svg
├── background_arabesquitic2.svg
├── background_input.png
├── bit.bmp
├── blueStar.png
├── bubble_微笑河马_left.png
├── bubble_微笑河马_right.png
├── bubble_放飞心情_left.png
├── bubble_放飞心情_right.png
├── bubble_祈福_left.png
├── bubble_祈福_right.png
├── bubble_经典_left.png
├── bubble_经典_right.png
├── button-login-hover.svg
├── button-login-press.svg
├── button-login.svg
├── button-minimize.svg
├── button-quit.svg
├── button-settings.svg
├── checkBox-hover.svg
├── checkBox-select.svg
├── checkBox-unselect.svg
├── contact_press.png
├── dud.png
├── duz.png
├── friendList_select.svg
├── friendList_unselect.svg
├── greenStar.png
├── groupList_select.svg
├── groupList_unselect.svg
├── group_press.png
├── imaway.png
├── imbusy.png
├── imcallme.png
├── imhidden.png
├── imoffline.png
├── imonline.png
├── imsilent.png
├── inputBox-close.svg
├── inputBox-more.svg
├── inputBox-password-clicked.svg
├── inputBox-password-hover.svg
├── inputBox-qq-clicked.svg
├── inputBox-qq-hover.svg
├── inputBox.svg
├── inputBox1.png
├── inputBox1.svg
├── inputBox2.png
├── inputBox2.svg
├── list_arrow_down.png
├── list_arrow_up.png
├── list_item.png
├── list_item_bottom.png
├── loading.png
├── lock20.png
├── login-panel-shadow.png
├── login-panel.svg
├── login-panel2.svg
├── menu_background.png
├── progress-bar.png
├── recentList_select.svg
├── recentList_unselect.svg
├── soft-keyboard.svg
├── star.png
├── status-away-1.svg
├── status-busy-1.svg
├── status-callme-1.svg
├── status-hidden-1.svg
├── status-online-1.svg
├── status-silent-1.svg
├── unfold_icon.png
├── unlock20.png
└── 未标题-1.png
├── introduce
├── login.jpg
├── mainWindow.jpg
├── 好友列表.jpg
├── 好友聊天页.jpg
├── 最近联系人列表.jpg
├── 群列表.jpg
├── 群聊天页.jpg
├── 讨论组列表.jpg
├── 讨论组聊天页.jpg
└── 设置界面.jpg
├── other.qrc
├── qml.qrc
├── qml
├── Api
│ ├── QQApi.qml
│ └── api.js
├── Chat
│ ├── ChatPage.qml
│ ├── ChatWindowCommand.qml
│ ├── DiscuChatPage.qml
│ ├── FriendChatPage.qml
│ ├── GroupChatPage.qml
│ ├── MessageListComponent.qml
│ └── qqshow.png
├── Login
│ ├── LoginPanel
│ │ ├── AccountList.qml
│ │ ├── LoginCheckBox.qml
│ │ ├── LoginInputArea.qml
│ │ └── LoginPage.qml
│ ├── MyLoginButton.qml
│ ├── SettingPage.qml
│ └── main.qml
├── MainPanel
│ ├── ListPage
│ │ ├── AllListPage.qml
│ │ ├── DiscuList.qml
│ │ ├── FriendList.qml
│ │ ├── GroupAndDiscuPage.qml
│ │ ├── GroupList.qml
│ │ └── RecentList.qml
│ ├── MainPanelPage.qml
│ └── main.qml
├── QQItemInfo
│ ├── DiscuInfo.qml
│ ├── FriendInfo.qml
│ └── GroupInfo.qml
└── Utility
│ ├── CodeInput.qml
│ ├── ComboBox
│ ├── MyComboBox.qml
│ └── MyComboBoxComponent.qml
│ ├── KeyboardPage
│ ├── SoftKeyboard.qml
│ └── SoftKeyboardButton.qml
│ ├── MyButton.qml
│ ├── MyMessageBox.qml
│ ├── MyRectangularGlow.qml
│ ├── MyScrollView.qml
│ ├── MyTextArea.qml
│ ├── MyTextField.qml
│ ├── MyTextView.qml
│ ├── MyWindow.qml
│ ├── SystemTray.qml
│ └── TrayMessageWindow.qml
├── qmlapplicationviewer.pri
├── qt_zh_CN.qm
├── sound
├── Audio.wav
├── Global.wav
├── msg.wav
├── shake.wav
├── system.wav
└── tweet.wav
├── src
├── main.cpp
├── mywidgets
│ ├── myimage.cpp
│ ├── myimage.h
│ ├── mymessagebox.cpp
│ ├── mymessagebox.h
│ ├── mysvgview.cpp
│ ├── mysvgview.h
│ ├── mywindow.cpp
│ ├── mywindow.h
│ ├── systemtrayicon.cpp
│ └── systemtrayicon.h
├── qqstars
│ ├── qqiteminfo.cpp
│ ├── qqiteminfo.h
│ ├── qqstars.cpp
│ └── qqstars.h
├── qxtglobalshortcut
│ ├── myshortcut.cpp
│ ├── myshortcut.h
│ ├── qxtglobal.h
│ ├── qxtglobalshortcut.cpp
│ ├── qxtglobalshortcut.h
│ ├── qxtglobalshortcut.pri
│ ├── qxtglobalshortcut_mac.cpp
│ ├── qxtglobalshortcut_p.h
│ ├── qxtglobalshortcut_win.cpp
│ └── qxtglobalshortcut_x11.cpp
└── utility
│ ├── downloadimage.cpp
│ ├── downloadimage.h
│ ├── myhttprequest.cpp
│ ├── myhttprequest.h
│ ├── mynetworkaccessmanagerfactory.cpp
│ ├── mynetworkaccessmanagerfactory.h
│ ├── texteditplaygif.cpp
│ ├── texteditplaygif.h
│ ├── utility.cpp
│ └── utility.h
├── style.qrc
└── style
├── menuStyle.css
└── messageBoxStyle.css
/.gitignore:
--------------------------------------------------------------------------------
1 | # C++ objects and libs
2 |
3 | *.slo
4 | *.lo
5 | *.o
6 | *.a
7 | *.la
8 | *.lai
9 | *.so
10 | *.dll
11 | *.dylib
12 |
13 | # Qt-es
14 |
15 | /.qmake.cache
16 | /.qmake.stash
17 | *.pro.user
18 | *.pro.user.*
19 | *.moc
20 | moc_*.cpp
21 | qrc_*.cpp
22 | ui_*.h
23 | Makefile*
24 | *-build-*
25 |
26 | # QtCreator
27 |
28 | *.autosave
29 |
30 | #QtCtreator Qml
31 | *.qmlproject.user
32 | *.qmlproject.user.*
33 |
34 | #custom
35 | /build
36 |
--------------------------------------------------------------------------------
/QQStars.pro:
--------------------------------------------------------------------------------
1 | TEMPLATE = app
2 | TARGET = QQStars
3 |
4 | QT += widgets network webkit svg qml quick concurrent sql quick-private#widgets-private core-private gui-private
5 | QT += webkitwidgets
6 |
7 | linux:LIBS += -lXext
8 |
9 | INCLUDEPATH += \
10 | src \
11 | src/qxtglobalshortcut \
12 | src/qqstars \
13 | src/mywidgets \
14 | src/utility
15 |
16 | SOURCES += src/main.cpp \
17 | src/utility/mynetworkaccessmanagerfactory.cpp \
18 | src/utility/utility.cpp \
19 | src/mywidgets/mywindow.cpp \
20 | src/qqstars/qqstars.cpp \
21 | src/mywidgets/systemtrayicon.cpp \
22 | src/mywidgets/mysvgview.cpp \
23 | src/mywidgets/myimage.cpp \
24 | src/mywidgets/mymessagebox.cpp \
25 | src/utility/myhttprequest.cpp \
26 | src/qqstars/qqiteminfo.cpp \
27 | src/utility/downloadimage.cpp \
28 | src/utility/texteditplaygif.cpp
29 |
30 | RESOURCES += \
31 | images.qrc \
32 | other.qrc \
33 | faces.qrc \
34 | qml.qrc \
35 | style.qrc
36 |
37 | # Additional import path used to resolve QML modules in Qt Creator's code model
38 | QML_IMPORT_PATH =
39 |
40 | # Default rules for deployment.
41 | include(deployment.pri)
42 | include (src/qxtglobalshortcut/qxtglobalshortcut.pri)
43 | #include (qmlapplicationviewer.pri)
44 | #qtcAddDeployment()
45 | HEADERS += \
46 | src/utility/mynetworkaccessmanagerfactory.h \
47 | src/utility/utility.h \
48 | src/mywidgets/mywindow.h \
49 | src/qqstars/qqstars.h \
50 | src/mywidgets/systemtrayicon.h \
51 | src/mywidgets/mysvgview.h \
52 | src/mywidgets/myimage.h \
53 | src/mywidgets/mymessagebox.h \
54 | src/utility/myhttprequest.h \
55 | src/qqstars/qqiteminfo.h \
56 | src/utility/downloadimage.h \
57 | src/utility/texteditplaygif.h
58 |
59 | OTHER_FILES += \
60 | qml/Utility/CodeInput.qml \
61 | qml/Utility/MyButton.qml \
62 | qml/Utility/MyMessageBox.qml \
63 | qml/Utility/MyTextArea.qml \
64 | qml/Utility/MyTextField.qml \
65 | qml/Utility/SystemTray.qml \
66 | qml/Api/api.js \
67 | qml/Api/QQApi.qml \
68 | qml/Login/KeyboardPage/SoftKeyboard.qml \
69 | qml/Login/KeyboardPage/SoftKeyboardButton.qml \
70 | qml/Login/main.qml \
71 | qml/Login/SettingPage.qml \
72 | qml/MainPanel/ChatWindow/qqshow.png \
73 | qml/MainPanel/ListPage/AllListPage.qml \
74 | qml/MainPanel/ListPage/FriendList.qml \
75 | qml/MainPanel/ListPage/GroupList.qml \
76 | qml/MainPanel/ListPage/RecentList.qml \
77 | qml/MainPanel/main.qml \
78 | qml/MainPanel/MainPanelPage.qml \
79 | qml/Utility/ComboBox/MyComboBox.qml \
80 | qml/Utility/ComboBox/MyComboBoxComponent.qml \
81 | qml/Login/MyLoginButton.qml \
82 | qml/Chat/ChatWindowCommand.qml \
83 | qml/Chat/MessageListComponent.qml \
84 | qml/Chat/qqshow.png \
85 | qml/Utility/KeyboardPage/SoftKeyboard.qml \
86 | qml/Utility/KeyboardPage/SoftKeyboardButton.qml \
87 | qml/Utility/MyRectangularGlow.qml \
88 | qml/Utility/MyWindow.qml \
89 | qml/Utility/MyScrollView.qml \
90 | qml/Login/LoginPanel/AccountList.qml \
91 | qml/Login/LoginPanel/LoginCheckBox.qml \
92 | qml/Login/LoginPanel/LoginInputArea.qml \
93 | qml/Login/LoginPanel/LoginPage.qml \
94 | qml/QQItemInfo/DiscuInfo.qml \
95 | qml/QQItemInfo/FriendInfo.qml \
96 | qml/QQItemInfo/GroupInfo.qml \
97 | qml/MainPanel/ListPage/DiscuList.qml \
98 | qml/MainPanel/ListPage/GroupAndDiscuPage.qml \
99 | style/menuStyle.css \
100 | style/messageBoxStyle.css \
101 | qml/Chat/FriendChatPage.qml \
102 | qml/Chat/GroupChatPage.qml \
103 | qml/Chat/DiscuChatPage.qml \
104 | qml/Chat/ChatPage.qml \
105 | qml/Utility/TrayMessageWindow.qml \
106 | qml/Login/textedit.html \
107 | qml/Utility/MyTextView.qml
108 |
109 | FORMS +=
110 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #### 接口都已失效,此程序不在更新。
2 |
3 | QQStars
4 | =======
5 | 此开源代码使用GPL授权方式
6 |
7 |
8 | 基于webqq协议的qq客户端,qt开发,可跨平台(主要给linux用户用,windows用户肯定不稀罕了)
9 |
10 | 开发环境windows 7,qt 5.3.2
11 |
12 | 下载链接:http://pan.baidu.com/s/1ntwW5DZ 密码: eeir。
13 | 其中QQStars-20141215gitd665984-1.fc21.x86_64.rpm和QQStars-20141215gitd665984-1.fc21.src.rpm
14 | 为朋友LunarShaddow编译和打包,在此表示衷心的感谢。
15 |
16 | 直接解压,windows下直接运行QQStars.exe。
17 | linux下运行QQStars.sh,如果程序无法启动就给同目录的QQStars加可执行权限。如果还是无法启动就是用终端运行QQStars.sh看有什么错误提示
18 |
19 | 在LInux下如果无法输入中文的话请看此博客:http://www.cnblogs.com/AfterTheRainOfStars/p/3768484.html#3022718
20 |
21 | 
22 | 
23 | 
24 | 
25 | 
26 | 
27 | 
28 | 
29 | 
30 | 
31 |
--------------------------------------------------------------------------------
/deployment.pri:
--------------------------------------------------------------------------------
1 | android-no-sdk {
2 | target.path = /data/user/qt
3 | export(target.path)
4 | INSTALLS += target
5 | } else:android {
6 | x86 {
7 | target.path = /libs/x86
8 | } else: armeabi-v7a {
9 | target.path = /libs/armeabi-v7a
10 | } else {
11 | target.path = /libs/armeabi
12 | }
13 | export(target.path)
14 | INSTALLS += target
15 | } else:unix {
16 | isEmpty(target.path) {
17 | qnx {
18 | target.path = /tmp/$${TARGET}/bin
19 | } else {
20 | target.path = /opt/$${TARGET}/bin
21 | }
22 | export(target.path)
23 | }
24 | INSTALLS += target
25 | }
26 |
27 | export(INSTALLS)
28 |
--------------------------------------------------------------------------------
/faces/classic/0.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/0.gif
--------------------------------------------------------------------------------
/faces/classic/0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/0.png
--------------------------------------------------------------------------------
/faces/classic/1.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/1.gif
--------------------------------------------------------------------------------
/faces/classic/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/1.png
--------------------------------------------------------------------------------
/faces/classic/10.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/10.gif
--------------------------------------------------------------------------------
/faces/classic/10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/10.png
--------------------------------------------------------------------------------
/faces/classic/100.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/100.gif
--------------------------------------------------------------------------------
/faces/classic/100.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/100.png
--------------------------------------------------------------------------------
/faces/classic/101.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/101.gif
--------------------------------------------------------------------------------
/faces/classic/101.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/101.png
--------------------------------------------------------------------------------
/faces/classic/102.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/102.gif
--------------------------------------------------------------------------------
/faces/classic/102.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/102.png
--------------------------------------------------------------------------------
/faces/classic/103.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/103.gif
--------------------------------------------------------------------------------
/faces/classic/103.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/103.png
--------------------------------------------------------------------------------
/faces/classic/104.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/104.gif
--------------------------------------------------------------------------------
/faces/classic/104.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/104.png
--------------------------------------------------------------------------------
/faces/classic/105.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/105.gif
--------------------------------------------------------------------------------
/faces/classic/105.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/105.png
--------------------------------------------------------------------------------
/faces/classic/106.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/106.gif
--------------------------------------------------------------------------------
/faces/classic/106.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/106.png
--------------------------------------------------------------------------------
/faces/classic/107.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/107.gif
--------------------------------------------------------------------------------
/faces/classic/107.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/107.png
--------------------------------------------------------------------------------
/faces/classic/108.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/108.gif
--------------------------------------------------------------------------------
/faces/classic/108.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/108.png
--------------------------------------------------------------------------------
/faces/classic/109.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/109.gif
--------------------------------------------------------------------------------
/faces/classic/109.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/109.png
--------------------------------------------------------------------------------
/faces/classic/11.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/11.gif
--------------------------------------------------------------------------------
/faces/classic/11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/11.png
--------------------------------------------------------------------------------
/faces/classic/110.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/110.gif
--------------------------------------------------------------------------------
/faces/classic/110.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/110.png
--------------------------------------------------------------------------------
/faces/classic/111.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/111.gif
--------------------------------------------------------------------------------
/faces/classic/111.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/111.png
--------------------------------------------------------------------------------
/faces/classic/112.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/112.gif
--------------------------------------------------------------------------------
/faces/classic/112.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/112.png
--------------------------------------------------------------------------------
/faces/classic/113.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/113.gif
--------------------------------------------------------------------------------
/faces/classic/113.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/113.png
--------------------------------------------------------------------------------
/faces/classic/114.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/114.gif
--------------------------------------------------------------------------------
/faces/classic/114.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/114.png
--------------------------------------------------------------------------------
/faces/classic/115.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/115.gif
--------------------------------------------------------------------------------
/faces/classic/115.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/115.png
--------------------------------------------------------------------------------
/faces/classic/116.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/116.gif
--------------------------------------------------------------------------------
/faces/classic/116.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/116.png
--------------------------------------------------------------------------------
/faces/classic/117.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/117.gif
--------------------------------------------------------------------------------
/faces/classic/117.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/117.png
--------------------------------------------------------------------------------
/faces/classic/118.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/118.gif
--------------------------------------------------------------------------------
/faces/classic/118.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/118.png
--------------------------------------------------------------------------------
/faces/classic/119.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/119.gif
--------------------------------------------------------------------------------
/faces/classic/119.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/119.png
--------------------------------------------------------------------------------
/faces/classic/12.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/12.gif
--------------------------------------------------------------------------------
/faces/classic/12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/12.png
--------------------------------------------------------------------------------
/faces/classic/120.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/120.gif
--------------------------------------------------------------------------------
/faces/classic/120.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/120.png
--------------------------------------------------------------------------------
/faces/classic/121.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/121.gif
--------------------------------------------------------------------------------
/faces/classic/121.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/121.png
--------------------------------------------------------------------------------
/faces/classic/122.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/122.gif
--------------------------------------------------------------------------------
/faces/classic/122.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/122.png
--------------------------------------------------------------------------------
/faces/classic/123.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/123.gif
--------------------------------------------------------------------------------
/faces/classic/123.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/123.png
--------------------------------------------------------------------------------
/faces/classic/124.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/124.png
--------------------------------------------------------------------------------
/faces/classic/125.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/125.gif
--------------------------------------------------------------------------------
/faces/classic/125.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/125.png
--------------------------------------------------------------------------------
/faces/classic/126.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/126.gif
--------------------------------------------------------------------------------
/faces/classic/126.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/126.png
--------------------------------------------------------------------------------
/faces/classic/127.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/127.gif
--------------------------------------------------------------------------------
/faces/classic/127.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/127.png
--------------------------------------------------------------------------------
/faces/classic/128.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/128.gif
--------------------------------------------------------------------------------
/faces/classic/128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/128.png
--------------------------------------------------------------------------------
/faces/classic/129.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/129.gif
--------------------------------------------------------------------------------
/faces/classic/129.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/129.png
--------------------------------------------------------------------------------
/faces/classic/13.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/13.gif
--------------------------------------------------------------------------------
/faces/classic/13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/13.png
--------------------------------------------------------------------------------
/faces/classic/130.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/130.gif
--------------------------------------------------------------------------------
/faces/classic/130.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/130.png
--------------------------------------------------------------------------------
/faces/classic/131.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/131.gif
--------------------------------------------------------------------------------
/faces/classic/131.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/131.png
--------------------------------------------------------------------------------
/faces/classic/132.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/132.gif
--------------------------------------------------------------------------------
/faces/classic/132.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/132.png
--------------------------------------------------------------------------------
/faces/classic/133.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/133.gif
--------------------------------------------------------------------------------
/faces/classic/133.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/133.png
--------------------------------------------------------------------------------
/faces/classic/134.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/134.gif
--------------------------------------------------------------------------------
/faces/classic/134.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/134.png
--------------------------------------------------------------------------------
/faces/classic/14.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/14.gif
--------------------------------------------------------------------------------
/faces/classic/14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/14.png
--------------------------------------------------------------------------------
/faces/classic/2.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/2.gif
--------------------------------------------------------------------------------
/faces/classic/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/2.png
--------------------------------------------------------------------------------
/faces/classic/21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/21.png
--------------------------------------------------------------------------------
/faces/classic/23.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/23.gif
--------------------------------------------------------------------------------
/faces/classic/23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/23.png
--------------------------------------------------------------------------------
/faces/classic/25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/25.png
--------------------------------------------------------------------------------
/faces/classic/26.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/26.gif
--------------------------------------------------------------------------------
/faces/classic/26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/26.png
--------------------------------------------------------------------------------
/faces/classic/27.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/27.gif
--------------------------------------------------------------------------------
/faces/classic/27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/27.png
--------------------------------------------------------------------------------
/faces/classic/29.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/29.gif
--------------------------------------------------------------------------------
/faces/classic/29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/29.png
--------------------------------------------------------------------------------
/faces/classic/3.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/3.gif
--------------------------------------------------------------------------------
/faces/classic/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/3.png
--------------------------------------------------------------------------------
/faces/classic/32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/32.png
--------------------------------------------------------------------------------
/faces/classic/33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/33.png
--------------------------------------------------------------------------------
/faces/classic/34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/34.png
--------------------------------------------------------------------------------
/faces/classic/36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/36.png
--------------------------------------------------------------------------------
/faces/classic/37.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/37.gif
--------------------------------------------------------------------------------
/faces/classic/37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/37.png
--------------------------------------------------------------------------------
/faces/classic/38.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/38.gif
--------------------------------------------------------------------------------
/faces/classic/38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/38.png
--------------------------------------------------------------------------------
/faces/classic/39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/39.png
--------------------------------------------------------------------------------
/faces/classic/4.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/4.gif
--------------------------------------------------------------------------------
/faces/classic/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/4.png
--------------------------------------------------------------------------------
/faces/classic/42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/42.png
--------------------------------------------------------------------------------
/faces/classic/45.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/45.png
--------------------------------------------------------------------------------
/faces/classic/46.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/46.gif
--------------------------------------------------------------------------------
/faces/classic/46.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/46.png
--------------------------------------------------------------------------------
/faces/classic/47.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/47.gif
--------------------------------------------------------------------------------
/faces/classic/47.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/47.png
--------------------------------------------------------------------------------
/faces/classic/5.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/5.gif
--------------------------------------------------------------------------------
/faces/classic/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/5.png
--------------------------------------------------------------------------------
/faces/classic/50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/50.png
--------------------------------------------------------------------------------
/faces/classic/51.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/51.gif
--------------------------------------------------------------------------------
/faces/classic/51.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/51.png
--------------------------------------------------------------------------------
/faces/classic/53.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/53.gif
--------------------------------------------------------------------------------
/faces/classic/53.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/53.png
--------------------------------------------------------------------------------
/faces/classic/54.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/54.gif
--------------------------------------------------------------------------------
/faces/classic/54.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/54.png
--------------------------------------------------------------------------------
/faces/classic/55.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/55.gif
--------------------------------------------------------------------------------
/faces/classic/55.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/55.png
--------------------------------------------------------------------------------
/faces/classic/56.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/56.gif
--------------------------------------------------------------------------------
/faces/classic/56.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/56.png
--------------------------------------------------------------------------------
/faces/classic/57.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/57.gif
--------------------------------------------------------------------------------
/faces/classic/57.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/57.png
--------------------------------------------------------------------------------
/faces/classic/58.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/58.gif
--------------------------------------------------------------------------------
/faces/classic/58.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/58.png
--------------------------------------------------------------------------------
/faces/classic/59.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/59.png
--------------------------------------------------------------------------------
/faces/classic/6.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/6.gif
--------------------------------------------------------------------------------
/faces/classic/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/6.png
--------------------------------------------------------------------------------
/faces/classic/62.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/62.gif
--------------------------------------------------------------------------------
/faces/classic/62.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/62.png
--------------------------------------------------------------------------------
/faces/classic/63.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/63.gif
--------------------------------------------------------------------------------
/faces/classic/63.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/63.png
--------------------------------------------------------------------------------
/faces/classic/64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/64.png
--------------------------------------------------------------------------------
/faces/classic/7.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/7.gif
--------------------------------------------------------------------------------
/faces/classic/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/7.png
--------------------------------------------------------------------------------
/faces/classic/71.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/71.gif
--------------------------------------------------------------------------------
/faces/classic/71.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/71.png
--------------------------------------------------------------------------------
/faces/classic/72.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/72.gif
--------------------------------------------------------------------------------
/faces/classic/72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/72.png
--------------------------------------------------------------------------------
/faces/classic/73.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/73.gif
--------------------------------------------------------------------------------
/faces/classic/73.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/73.png
--------------------------------------------------------------------------------
/faces/classic/74.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/74.gif
--------------------------------------------------------------------------------
/faces/classic/74.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/74.png
--------------------------------------------------------------------------------
/faces/classic/75.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/75.gif
--------------------------------------------------------------------------------
/faces/classic/75.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/75.png
--------------------------------------------------------------------------------
/faces/classic/76.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/76.gif
--------------------------------------------------------------------------------
/faces/classic/76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/76.png
--------------------------------------------------------------------------------
/faces/classic/77.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/77.gif
--------------------------------------------------------------------------------
/faces/classic/77.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/77.png
--------------------------------------------------------------------------------
/faces/classic/78.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/78.gif
--------------------------------------------------------------------------------
/faces/classic/78.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/78.png
--------------------------------------------------------------------------------
/faces/classic/79.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/79.gif
--------------------------------------------------------------------------------
/faces/classic/79.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/79.png
--------------------------------------------------------------------------------
/faces/classic/8.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/8.gif
--------------------------------------------------------------------------------
/faces/classic/8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/8.png
--------------------------------------------------------------------------------
/faces/classic/80.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/80.gif
--------------------------------------------------------------------------------
/faces/classic/80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/80.png
--------------------------------------------------------------------------------
/faces/classic/81.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/81.gif
--------------------------------------------------------------------------------
/faces/classic/81.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/81.png
--------------------------------------------------------------------------------
/faces/classic/82.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/82.gif
--------------------------------------------------------------------------------
/faces/classic/82.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/82.png
--------------------------------------------------------------------------------
/faces/classic/83.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/83.gif
--------------------------------------------------------------------------------
/faces/classic/83.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/83.png
--------------------------------------------------------------------------------
/faces/classic/84.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/84.gif
--------------------------------------------------------------------------------
/faces/classic/84.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/84.png
--------------------------------------------------------------------------------
/faces/classic/85.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/85.png
--------------------------------------------------------------------------------
/faces/classic/86.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/86.png
--------------------------------------------------------------------------------
/faces/classic/87.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/87.gif
--------------------------------------------------------------------------------
/faces/classic/87.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/87.png
--------------------------------------------------------------------------------
/faces/classic/88.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/88.gif
--------------------------------------------------------------------------------
/faces/classic/88.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/88.png
--------------------------------------------------------------------------------
/faces/classic/9.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/9.gif
--------------------------------------------------------------------------------
/faces/classic/9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/9.png
--------------------------------------------------------------------------------
/faces/classic/91.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/91.png
--------------------------------------------------------------------------------
/faces/classic/93.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/93.gif
--------------------------------------------------------------------------------
/faces/classic/93.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/93.png
--------------------------------------------------------------------------------
/faces/classic/95.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/95.gif
--------------------------------------------------------------------------------
/faces/classic/95.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/95.png
--------------------------------------------------------------------------------
/faces/classic/96.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/96.gif
--------------------------------------------------------------------------------
/faces/classic/96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/96.png
--------------------------------------------------------------------------------
/faces/classic/97.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/97.gif
--------------------------------------------------------------------------------
/faces/classic/97.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/97.png
--------------------------------------------------------------------------------
/faces/classic/98.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/98.gif
--------------------------------------------------------------------------------
/faces/classic/98.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/98.png
--------------------------------------------------------------------------------
/faces/classic/99.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/99.gif
--------------------------------------------------------------------------------
/faces/classic/99.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/99.png
--------------------------------------------------------------------------------
/faces/classic/K歌.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/K歌.png
--------------------------------------------------------------------------------
/faces/classic/dfp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/dfp.png
--------------------------------------------------------------------------------
/faces/classic/dfr.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/dfr.png
--------------------------------------------------------------------------------
/faces/classic/dhp.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/dhp.png
--------------------------------------------------------------------------------
/faces/classic/下雨.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/下雨.png
--------------------------------------------------------------------------------
/faces/classic/下面.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/下面.png
--------------------------------------------------------------------------------
/faces/classic/双喜.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/双喜.png
--------------------------------------------------------------------------------
/faces/classic/发财.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/发财.png
--------------------------------------------------------------------------------
/faces/classic/喝奶.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/喝奶.png
--------------------------------------------------------------------------------
/faces/classic/喝彩.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/喝彩.png
--------------------------------------------------------------------------------
/faces/classic/多云.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/多云.png
--------------------------------------------------------------------------------
/faces/classic/帅.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/帅.png
--------------------------------------------------------------------------------
/faces/classic/开车.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/开车.png
--------------------------------------------------------------------------------
/faces/classic/彩球.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/彩球.png
--------------------------------------------------------------------------------
/faces/classic/手枪.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/手枪.png
--------------------------------------------------------------------------------
/faces/classic/打伞.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/打伞.png
--------------------------------------------------------------------------------
/faces/classic/棒棒糖.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/棒棒糖.png
--------------------------------------------------------------------------------
/faces/classic/沙发.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/沙发.png
--------------------------------------------------------------------------------
/faces/classic/灯泡.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/灯泡.png
--------------------------------------------------------------------------------
/faces/classic/灯笼.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/灯笼.png
--------------------------------------------------------------------------------
/faces/classic/熊猫.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/熊猫.png
--------------------------------------------------------------------------------
/faces/classic/爆筋.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/爆筋.png
--------------------------------------------------------------------------------
/faces/classic/祈祷.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/祈祷.png
--------------------------------------------------------------------------------
/faces/classic/纸巾.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/纸巾.png
--------------------------------------------------------------------------------
/faces/classic/药.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/药.png
--------------------------------------------------------------------------------
/faces/classic/购物.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/购物.png
--------------------------------------------------------------------------------
/faces/classic/车厢.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/车厢.png
--------------------------------------------------------------------------------
/faces/classic/邮件.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/邮件.png
--------------------------------------------------------------------------------
/faces/classic/钞票.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/钞票.png
--------------------------------------------------------------------------------
/faces/classic/钻戒.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/钻戒.png
--------------------------------------------------------------------------------
/faces/classic/闹钟.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/闹钟.png
--------------------------------------------------------------------------------
/faces/classic/青蛙.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/青蛙.png
--------------------------------------------------------------------------------
/faces/classic/鞭炮.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/鞭炮.png
--------------------------------------------------------------------------------
/faces/classic/风车.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/风车.png
--------------------------------------------------------------------------------
/faces/classic/飞机.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/飞机.png
--------------------------------------------------------------------------------
/faces/classic/香蕉.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/香蕉.png
--------------------------------------------------------------------------------
/faces/classic/高铁右车头.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/高铁右车头.png
--------------------------------------------------------------------------------
/faces/classic/高铁左车头.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/faces/classic/高铁左车头.png
--------------------------------------------------------------------------------
/images.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | images/avatar.svg
4 | images/avatar_left.png
5 | images/avatar-border.svg
6 | images/imaway.png
7 | images/background_arabesquitic.svg
8 | images/background_input.png
9 | images/imbusy.png
10 | images/button-login.svg
11 | images/button-login-hover.svg
12 | images/button-login-press.svg
13 | images/button-minimize.svg
14 | images/button-quit.svg
15 | images/checkBox-hover.svg
16 | images/imoffline.png
17 | images/imonline.png
18 | images/inputBox.svg
19 | images/inputBox1.png
20 | images/inputBox2.png
21 | images/inputBox-close.svg
22 | images/inputBox-more.svg
23 | images/inputBox-password-clicked.svg
24 | images/inputBox-password-hover.svg
25 | images/inputBox-qq-clicked.svg
26 | images/inputBox-qq-hover.svg
27 | images/imhidden.png
28 | images/list_arrow_down.png
29 | images/list_arrow_up.png
30 | images/list_item.png
31 | images/list_item_bottom.png
32 | images/lock20.png
33 | images/login-panel.svg
34 | images/login-panel-shadow.png
35 | images/imsilent.png
36 | images/progress-bar.png
37 | images/imcallme.png
38 | images/QQ-for-ubuntu.svg
39 | images/soft-keyboard.svg
40 | images/status-away-1.svg
41 | images/status-busy-1.svg
42 | images/status-callme-1.svg
43 | images/status-hidden-1.svg
44 | images/status-online-1.svg
45 | images/status-silent-1.svg
46 | images/unfold_icon.png
47 | images/unlock20.png
48 | images/checkBox-select.svg
49 | images/checkBox-unselect.svg
50 | images/bit.bmp
51 | images/avatar.png
52 | images/contact_press.png
53 | images/group_press.png
54 | images/TempSession_press.png
55 | images/menu_background.png
56 | images/button-settings.svg
57 | images/inputBox1.svg
58 | images/inputBox2.svg
59 | images/bubble_放飞心情_left.png
60 | images/bubble_放飞心情_right.png
61 | images/bubble_经典_left.png
62 | images/bubble_经典_right.png
63 | images/bubble_祈福_left.png
64 | images/bubble_祈福_right.png
65 | images/bubble_微笑河马_left.png
66 | images/bubble_微笑河马_right.png
67 | images/friendList_select.svg
68 | images/friendList_unselect.svg
69 | images/groupList_select.svg
70 | images/groupList_unselect.svg
71 | images/recentList_select.svg
72 | images/recentList_unselect.svg
73 | images/未标题-1.png
74 | images/star.png
75 | images/greenStar.png
76 | images/blueStar.png
77 | images/login-panel2.svg
78 | images/loading.png
79 | images/dud.png
80 | images/duz.png
81 |
82 |
83 |
--------------------------------------------------------------------------------
/images/TempSession_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/TempSession_press.png
--------------------------------------------------------------------------------
/images/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/avatar.png
--------------------------------------------------------------------------------
/images/avatar_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/avatar_left.png
--------------------------------------------------------------------------------
/images/background_arabesquitic2.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
49 |
--------------------------------------------------------------------------------
/images/background_input.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/background_input.png
--------------------------------------------------------------------------------
/images/bit.bmp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/bit.bmp
--------------------------------------------------------------------------------
/images/blueStar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/blueStar.png
--------------------------------------------------------------------------------
/images/bubble_微笑河马_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/bubble_微笑河马_left.png
--------------------------------------------------------------------------------
/images/bubble_微笑河马_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/bubble_微笑河马_right.png
--------------------------------------------------------------------------------
/images/bubble_放飞心情_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/bubble_放飞心情_left.png
--------------------------------------------------------------------------------
/images/bubble_放飞心情_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/bubble_放飞心情_right.png
--------------------------------------------------------------------------------
/images/bubble_祈福_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/bubble_祈福_left.png
--------------------------------------------------------------------------------
/images/bubble_祈福_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/bubble_祈福_right.png
--------------------------------------------------------------------------------
/images/bubble_经典_left.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/bubble_经典_left.png
--------------------------------------------------------------------------------
/images/bubble_经典_right.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/bubble_经典_right.png
--------------------------------------------------------------------------------
/images/button-login.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
63 |
--------------------------------------------------------------------------------
/images/checkBox-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
34 |
--------------------------------------------------------------------------------
/images/checkBox-select.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
54 |
--------------------------------------------------------------------------------
/images/checkBox-unselect.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
49 |
--------------------------------------------------------------------------------
/images/contact_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/contact_press.png
--------------------------------------------------------------------------------
/images/dud.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/dud.png
--------------------------------------------------------------------------------
/images/duz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/duz.png
--------------------------------------------------------------------------------
/images/greenStar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/greenStar.png
--------------------------------------------------------------------------------
/images/group_press.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/group_press.png
--------------------------------------------------------------------------------
/images/imaway.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/imaway.png
--------------------------------------------------------------------------------
/images/imbusy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/imbusy.png
--------------------------------------------------------------------------------
/images/imcallme.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/imcallme.png
--------------------------------------------------------------------------------
/images/imhidden.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/imhidden.png
--------------------------------------------------------------------------------
/images/imoffline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/imoffline.png
--------------------------------------------------------------------------------
/images/imonline.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/imonline.png
--------------------------------------------------------------------------------
/images/imsilent.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/imsilent.png
--------------------------------------------------------------------------------
/images/inputBox-close.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
57 |
--------------------------------------------------------------------------------
/images/inputBox-more.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
44 |
--------------------------------------------------------------------------------
/images/inputBox-password-clicked.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
44 |
--------------------------------------------------------------------------------
/images/inputBox-password-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
44 |
--------------------------------------------------------------------------------
/images/inputBox-qq-clicked.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
44 |
--------------------------------------------------------------------------------
/images/inputBox-qq-hover.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
44 |
--------------------------------------------------------------------------------
/images/inputBox.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
53 |
--------------------------------------------------------------------------------
/images/inputBox1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/inputBox1.png
--------------------------------------------------------------------------------
/images/inputBox2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/inputBox2.png
--------------------------------------------------------------------------------
/images/list_arrow_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/list_arrow_down.png
--------------------------------------------------------------------------------
/images/list_arrow_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/list_arrow_up.png
--------------------------------------------------------------------------------
/images/list_item.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/list_item.png
--------------------------------------------------------------------------------
/images/list_item_bottom.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/list_item_bottom.png
--------------------------------------------------------------------------------
/images/loading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/loading.png
--------------------------------------------------------------------------------
/images/lock20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/lock20.png
--------------------------------------------------------------------------------
/images/login-panel-shadow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/login-panel-shadow.png
--------------------------------------------------------------------------------
/images/menu_background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/menu_background.png
--------------------------------------------------------------------------------
/images/progress-bar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/progress-bar.png
--------------------------------------------------------------------------------
/images/soft-keyboard.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 | ]>
13 |
48 |
--------------------------------------------------------------------------------
/images/star.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/star.png
--------------------------------------------------------------------------------
/images/unfold_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/unfold_icon.png
--------------------------------------------------------------------------------
/images/unlock20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/unlock20.png
--------------------------------------------------------------------------------
/images/未标题-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/images/未标题-1.png
--------------------------------------------------------------------------------
/introduce/login.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/login.jpg
--------------------------------------------------------------------------------
/introduce/mainWindow.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/mainWindow.jpg
--------------------------------------------------------------------------------
/introduce/好友列表.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/好友列表.jpg
--------------------------------------------------------------------------------
/introduce/好友聊天页.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/好友聊天页.jpg
--------------------------------------------------------------------------------
/introduce/最近联系人列表.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/最近联系人列表.jpg
--------------------------------------------------------------------------------
/introduce/群列表.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/群列表.jpg
--------------------------------------------------------------------------------
/introduce/群聊天页.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/群聊天页.jpg
--------------------------------------------------------------------------------
/introduce/讨论组列表.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/讨论组列表.jpg
--------------------------------------------------------------------------------
/introduce/讨论组聊天页.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/讨论组聊天页.jpg
--------------------------------------------------------------------------------
/introduce/设置界面.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/introduce/设置界面.jpg
--------------------------------------------------------------------------------
/other.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | qt_zh_CN.qm
4 |
5 |
6 |
--------------------------------------------------------------------------------
/qml.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | qml/QQItemInfo/DiscuInfo.qml
4 | qml/QQItemInfo/FriendInfo.qml
5 | qml/QQItemInfo/GroupInfo.qml
6 | qml/Api/api.js
7 | qml/Api/QQApi.qml
8 | qml/Chat/ChatPage.qml
9 | qml/Chat/ChatWindowCommand.qml
10 | qml/Chat/DiscuChatPage.qml
11 | qml/Chat/FriendChatPage.qml
12 | qml/Chat/GroupChatPage.qml
13 | qml/Chat/MessageListComponent.qml
14 | qml/Chat/qqshow.png
15 | qml/Login/LoginPanel/AccountList.qml
16 | qml/Login/LoginPanel/LoginCheckBox.qml
17 | qml/Login/LoginPanel/LoginInputArea.qml
18 | qml/Login/LoginPanel/LoginPage.qml
19 | qml/Login/main.qml
20 | qml/Login/MyLoginButton.qml
21 | qml/Login/SettingPage.qml
22 | qml/MainPanel/ListPage/AllListPage.qml
23 | qml/MainPanel/ListPage/DiscuList.qml
24 | qml/MainPanel/ListPage/FriendList.qml
25 | qml/MainPanel/ListPage/GroupAndDiscuPage.qml
26 | qml/MainPanel/ListPage/GroupList.qml
27 | qml/MainPanel/ListPage/RecentList.qml
28 | qml/MainPanel/main.qml
29 | qml/MainPanel/MainPanelPage.qml
30 | qml/Utility/ComboBox/MyComboBox.qml
31 | qml/Utility/ComboBox/MyComboBoxComponent.qml
32 | qml/Utility/KeyboardPage/SoftKeyboard.qml
33 | qml/Utility/KeyboardPage/SoftKeyboardButton.qml
34 | qml/Utility/CodeInput.qml
35 | qml/Utility/MyButton.qml
36 | qml/Utility/MyMessageBox.qml
37 | qml/Utility/MyRectangularGlow.qml
38 | qml/Utility/MyScrollView.qml
39 | qml/Utility/MyTextArea.qml
40 | qml/Utility/MyTextField.qml
41 | qml/Utility/MyTextView.qml
42 | qml/Utility/MyWindow.qml
43 | qml/Utility/SystemTray.qml
44 | qml/Utility/TrayMessageWindow.qml
45 |
46 |
47 |
--------------------------------------------------------------------------------
/qml/Chat/FriendChatPage.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import utility 1.0
3 | import "../QQItemInfo"
4 |
5 | ChatPage{
6 | id: root
7 | myinfo: myuin!=""?myqq.createFriendInfo(myuin):null
8 | rightBar.width: 0//设置右边栏宽度为0
9 |
10 | Connections{
11 | target: myqq
12 | onShakeWindow:{
13 | if(fromUin==myuin){
14 | console.log("窗口震动消息")
15 | myqq.shakeChatMainWindow(root)//抖动聊天窗口
16 | }
17 | }
18 | onFriendInputNotify:{
19 | if(fromUin==myuin){
20 | console.log("正在输入消息")
21 | show_text.text = myinfo.aliasOrNick+"正在输入"
22 | }
23 | }
24 | }
25 |
26 | Timer{
27 | id: timer_show_text
28 | interval: 2000
29 | onTriggered: {
30 | show_text.text = ""
31 | }
32 | }
33 |
34 | Text{
35 | id: show_text
36 | parent: menuBar
37 | anchors.right: parent.right
38 | anchors.rightMargin: 10
39 | verticalAlignment: Text.AlignVCenter
40 | anchors.verticalCenter: parent.verticalCenter
41 | onTextChanged: {
42 | if(text!=""){
43 | timer_show_text.start()
44 | }
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/qml/Chat/qqshow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/qml/Chat/qqshow.png
--------------------------------------------------------------------------------
/qml/Login/LoginPanel/LoginCheckBox.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import QtQuick.Controls 1.2
3 | import QtQuick.Controls.Styles 1.2
4 | import mywindow 1.0
5 |
6 | CheckBox {
7 | id:root
8 |
9 | style: CheckBoxStyle {
10 | indicator: Item{
11 | implicitHeight: image.implicitHeight
12 | implicitWidth: image.implicitWidth
13 | SvgView{
14 | width: defaultSize.width*myqq.windowScale
15 | source: control.checked?"qrc:/images/checkBox-select.svg":"qrc:/images/checkBox-unselect.svg"
16 | }
17 | SvgView{
18 | id: image
19 | width: defaultSize.width*myqq.windowScale
20 | source: "qrc:/images/checkBox-hover.svg"
21 | visible: mouse.hover
22 | Component.onCompleted: root.height = width
23 | }
24 | }
25 | label: Text{
26 | text: control.text
27 | font.pointSize: root.height/2
28 | }
29 | }
30 | MouseArea{
31 | id:mouse
32 | anchors.fill: parent
33 | property bool hover: false
34 | hoverEnabled: true
35 | onEntered: {
36 | hover = true
37 | }
38 | onExited: hover = false
39 | onClicked: {
40 | parent.checked=!parent.checked
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/qml/Login/MyLoginButton.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import mywindow 1.0
3 |
4 | SvgView{
5 | id:root
6 | //sourceSize.width: width
7 | property alias text: button_text.text
8 | property alias font: button_text.font
9 | source: {
10 | if( mouse.pressed )
11 | return "qrc:/images/button-login-press.svg"
12 | else if(mouse.hover)
13 | return "qrc:/images/button-login-hover.svg"
14 | else
15 | return "qrc:/images/button-login.svg"
16 | }
17 |
18 | signal clicked
19 | Rectangle{
20 | radius: 10
21 | anchors.fill: parent
22 | color: "#888"
23 | visible: !root.enabled
24 | }
25 |
26 | Text {
27 | id: button_text
28 | anchors.centerIn: parent
29 | color: "white"
30 | }
31 | MouseArea{
32 | id:mouse
33 | enabled: root.enabled
34 | property bool hover: false
35 | anchors.fill: parent
36 | hoverEnabled: true
37 | onEntered: {
38 | hover = true
39 | }
40 | onExited: {
41 | hover = false
42 | }
43 | onClicked: {
44 | root.clicked()
45 | }
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/qml/MainPanel/ListPage/AllListPage.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import QtQuick.Controls 1.2
3 | import QtQuick.Controls.Styles 1.2
4 | import mywindow 1.0
5 |
6 | TabView {
7 | id: frame
8 | property int old_current:0
9 |
10 | Tab {
11 | active: true
12 | id: friend_list
13 | FriendList{
14 | id: rect1
15 | width: parent.width
16 | height: parent.height
17 | NumberAnimation{
18 | id: animat1
19 | target: rect1
20 | duration: 200
21 | running: false
22 | easing.type: Easing.InCubic
23 | property: "x"
24 | from: -width
25 | to:0
26 | }
27 | Connections{
28 | target: frame
29 | onCurrentIndexChanged: {
30 | if(frame.currentIndex==0){
31 | animat1.start()
32 | frame.old_current = 0
33 | }
34 | }
35 | }
36 | }
37 | }
38 | Tab {
39 | active: true
40 | GroupAndDiscuPage{
41 | id:rect2
42 | width: parent.width
43 | height: parent.height
44 | NumberAnimation{
45 | id: animat2
46 | target: rect2
47 | duration: 200
48 | running: false
49 | easing.type: Easing.InCubic
50 | property: "x"
51 | from: frame.old_current==0?width:-width
52 | to:0
53 | }
54 | Connections{
55 | target: frame
56 | onCurrentIndexChanged: {
57 | if(frame.currentIndex==1){
58 | animat2.start()
59 | frame.old_current = 1
60 | }
61 | }
62 | }
63 | }
64 | }
65 | Tab {
66 | active: true
67 | id: recent_list
68 | RecentList{
69 | id:rect3
70 | width: parent.width
71 | height: parent.height
72 |
73 | NumberAnimation{
74 | id: animat3
75 | target: rect3
76 | duration: 200
77 | running: false
78 | easing.type: Easing.InCubic
79 | property: "x"
80 | from: width
81 | to:0
82 | }
83 | Connections{
84 | target: frame
85 | onCurrentIndexChanged: {
86 | if(frame.currentIndex==2){
87 | animat3.start()
88 | frame.old_current = 2
89 | }
90 | }
91 | }
92 | }
93 |
94 | }
95 |
96 | style: TabViewStyle {
97 | //tabOverlap: 10
98 | tabsMovable : true
99 | tabsAlignment:Qt.AlignHCenter
100 | tab: Item{
101 | implicitHeight: icon.height+20
102 | implicitWidth: control.width/3
103 | //width: control.width/3
104 |
105 | SvgView{
106 | id: icon
107 | anchors.horizontalCenter: parent.horizontalCenter
108 | source: {
109 | if(index==0)
110 | return "qrc:/images/friendList_select.svg"
111 | else if(index==1)
112 | return "qrc:/images/groupList_select.svg"
113 | else
114 | return "qrc:/images/recentList_select.svg"
115 | }
116 | }
117 | }
118 | frame: Item {}
119 | }
120 | }
121 |
--------------------------------------------------------------------------------
/qml/MainPanel/ListPage/DiscuList.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import mywindow 1.0
3 | import utility 1.0
4 | import "../"
5 | import "../../Utility"
6 | import QQItemInfo 1.0
7 |
8 | Item{
9 | id: root
10 | clip: true
11 |
12 | function getDiscusListFinished(error, data) {//获取讨论组列表完成
13 | if(error){
14 | myqq.getDiscusList(getDiscusListFinished) //讨论组列表
15 | return
16 | }
17 | data = JSON.parse(data)
18 | if(data.retcode ==0 ) {
19 | var list_info = data.result.dnamelist
20 | for( var i=0; i< list_info.length;++i ) {
21 | var info = myqq.createDiscuInfo(list_info[i].did)
22 | info.nick = list_info[i].name//设置昵称
23 | mymodel.append({"obj_info": info})
24 | }
25 | }
26 | }
27 | Component.onCompleted: {
28 | myqq.getDiscusList(getDiscusListFinished) //讨论组列表
29 | }
30 | MyScrollView{
31 | anchors.fill: parent
32 | Item{
33 | height: mymodel.count*40+10
34 | width: root.width
35 | implicitHeight: height
36 | implicitWidth: width
37 |
38 | ListView{
39 | id: list
40 | interactive: false
41 | anchors.fill: parent
42 | model: ListModel{
43 | id:mymodel
44 | }
45 | spacing :10
46 | delegate: component
47 | }
48 | }
49 | }
50 |
51 | Component{
52 | id: component
53 | Item{
54 | id: item_root
55 | width: parent.width
56 | height: avatar.height
57 | property DiscuInfo myinfo: obj_info
58 |
59 | MyImage{
60 | id: avatar
61 | x:10
62 | width:40
63 | height: 40
64 | sourceSize.width: width
65 | source: "qrc:/images/avatar.png"
66 | maskSource: "qrc:/images/bit.bmp"
67 | }
68 | Text{
69 | id:text_nick
70 | anchors.top: avatar.top
71 | anchors.left: avatar.right
72 | anchors.leftMargin: 10
73 | font.pointSize: 14
74 | text: item_root.myinfo.aliasOrNick
75 | }
76 | MouseArea{
77 | anchors.fill: parent
78 | onDoubleClicked: {
79 | myqq.addChatPage(item_root.myinfo.uin, QQItemInfo.Discu)
80 | }
81 | }
82 | }
83 | }
84 | }
85 |
--------------------------------------------------------------------------------
/qml/MainPanel/ListPage/GroupAndDiscuPage.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import QtQuick.Controls 1.2
3 | import QtQuick.Controls.Styles 1.2
4 |
5 | Item{
6 | TabView{
7 | anchors.fill: parent
8 | Tab{
9 | title: "QQ群"
10 | active: true
11 | GroupList{
12 | width: parent.width
13 | height: parent.height
14 | }
15 | }
16 | Tab{
17 | title: "讨论组"
18 | active: true
19 | DiscuList{
20 | width: parent.width
21 | height: parent.height
22 | }
23 | }
24 | style: TabViewStyle {
25 | //tabOverlap: 10
26 | frameOverlap: -10
27 | tabsMovable : true
28 | tabsAlignment:Qt.AlignHCenter
29 | tab:Rectangle {
30 | color: styleData.selected ? "#f07000" :"#eee"
31 | border.color: "#888"
32 | border.width: 1
33 | implicitWidth: Math.max(text.width + 4, 80)
34 | implicitHeight: 20
35 | radius: 10
36 | Rectangle{
37 | height: parent.implicitHeight
38 | width: height
39 | x:index==1?0:parent.width-width
40 | color: parent.color
41 | border.width: parent.border.width
42 | border.color: parent.border.color
43 | Rectangle{
44 | height: parent.height-2*width
45 | width: parent.border.width
46 | anchors.verticalCenter: parent.verticalCenter
47 | x:index==0?0:parent.width-width
48 | color: parent.color
49 | }
50 | }
51 |
52 | Text {
53 | id: text
54 | anchors.centerIn: parent
55 | text: styleData.title
56 | color: styleData.selected ? "white" : "black"
57 | }
58 | }
59 | frame: Item {}
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/qml/MainPanel/ListPage/GroupList.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import mywindow 1.0
3 | import utility 1.0
4 | import "../"
5 | import "../../Utility"
6 | import QQItemInfo 1.0
7 |
8 | Item{
9 | id: root
10 | clip: true
11 |
12 | function getGroupListFinished( error, data ) {
13 | if(error){
14 | myqq.getGroupList(getGroupListFinished) //获取群列表
15 | return
16 | }
17 |
18 | data = JSON.parse(data)
19 | if(data.retcode ==0 ) {
20 | var groupmarknames = data.result.gmarklist//群备注信息
21 | var i=0;
22 |
23 | for( i=0; i0
14 |
15 | handle: Rectangle{
16 | radius: 10
17 | implicitWidth: 10
18 | property bool hovered: styleData.hovered
19 | onHoveredChanged: {
20 | if( hovered )
21 | scroll_style.hovered_count++
22 | else
23 | scroll_style.hovered_count--
24 | }
25 |
26 | color: scroll_style.hovered?"#808080":"#BDBFBE"
27 | }
28 | scrollBarBackground:Rectangle{
29 | implicitWidth: 10
30 | color:"#f0f0f0"
31 | radius: 10
32 | property bool hovered: styleData.hovered
33 | onHoveredChanged: {
34 | if( hovered )
35 | scroll_style.hovered_count++
36 | else
37 | scroll_style.hovered_count--
38 | }
39 | opacity: scroll_style.hovered?1:0
40 | Behavior on opacity{
41 | NumberAnimation{
42 | duration: 200
43 | }
44 | }
45 | }
46 | decrementControl : Item{
47 | implicitHeight: 10
48 | implicitWidth: 10
49 | Image{
50 | source: "qrc:/images/list_arrow_up.png"
51 | property bool hovered: styleData.hovered
52 | anchors.centerIn: parent
53 | onHoveredChanged: {
54 | if( hovered )
55 | scroll_style.hovered_count++
56 | else
57 | scroll_style.hovered_count--
58 | }
59 | opacity: scroll_style.hovered?1:0
60 | Behavior on opacity{
61 | NumberAnimation{
62 | duration: 200
63 | }
64 | }
65 | }
66 | }
67 |
68 | incrementControl : Item{
69 | implicitHeight: 10
70 | implicitWidth: 10
71 | Image{
72 | anchors.centerIn: parent
73 | source: "qrc:/images/list_arrow_down.png"
74 | property bool hovered: styleData.hovered
75 | onHoveredChanged: {
76 | if( hovered )
77 | scroll_style.hovered_count++
78 | else
79 | scroll_style.hovered_count--
80 | }
81 | opacity: scroll_style.hovered?1:0
82 | Behavior on opacity{
83 | NumberAnimation{
84 | duration: 200
85 | }
86 | }
87 | }
88 | }
89 | }
90 | }
91 |
--------------------------------------------------------------------------------
/qml/Utility/MyTextField.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import QtQuick.Controls 1.2
3 | import QtQuick.Controls.Styles 1.2
4 |
5 | Item{
6 | id: root
7 | property alias title: text.text
8 | property alias text: input.text
9 | property alias font: input.font
10 | property alias field: input
11 | Text {
12 | id: text
13 | anchors.left: parent.left
14 | anchors.verticalCenter: parent.verticalCenter
15 | font.pointSize: root.height/2
16 | }
17 | TextField{
18 | id: input
19 | anchors.left: text.right
20 | anchors.right: parent.right
21 | anchors.top: parent.top
22 | anchors.bottom: parent.bottom
23 | font.pointSize:text.font.pointSize
24 | style: TextFieldStyle {
25 | textColor: "black"
26 | background: BorderImage {
27 | source: "qrc:/images/background_input.png"
28 | border.left: 5; border.top: 5
29 | border.right: 5; border.bottom: 5
30 | }
31 | }
32 | }
33 | Rectangle{
34 | radius: 1
35 | anchors.top: input.top
36 | anchors.topMargin: 2
37 | anchors.bottom: input.bottom
38 | anchors.bottomMargin: 0
39 | anchors.left: input.left
40 | anchors.leftMargin: 1
41 | anchors.right: parent.right
42 | anchors.rightMargin: 1
43 |
44 | visible: !root.enabled
45 | color: "#f0efef"
46 | opacity: 0.75
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/qml/Utility/MyTextView.qml:
--------------------------------------------------------------------------------
1 | import QtQuick 2.2
2 | import QtWebKit 3.0
3 |
4 | Item{
5 | id:root
6 | property string html: ""
7 | property alias url: webview.url
8 |
9 | implicitWidth: webview.contentWidth
10 | implicitHeight: webview.contentHeight
11 | onHtmlChanged: {
12 | webview.loadHtml(html)
13 | }
14 |
15 | WebView{
16 | id: webview
17 | anchors.fill: parent
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/qt_zh_CN.qm:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/qt_zh_CN.qm
--------------------------------------------------------------------------------
/sound/Audio.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/sound/Audio.wav
--------------------------------------------------------------------------------
/sound/Global.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/sound/Global.wav
--------------------------------------------------------------------------------
/sound/msg.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/sound/msg.wav
--------------------------------------------------------------------------------
/sound/shake.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/sound/shake.wav
--------------------------------------------------------------------------------
/sound/system.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/sound/system.wav
--------------------------------------------------------------------------------
/sound/tweet.wav:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/zccrs/QQStars/fdaf86e828e4432f59cc35c50a830f7913295e55/sound/tweet.wav
--------------------------------------------------------------------------------
/src/main.cpp:
--------------------------------------------------------------------------------
1 | #include
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include "mynetworkaccessmanagerfactory.h"
11 | #include "systemtrayicon.h"
12 | #include "utility.h"
13 | #include "mywindow.h"
14 | #include "qqstars.h"
15 | #include "myimage.h"
16 | #include "mysvgview.h"
17 | #include "myshortcut.h"
18 | #include "myhttprequest.h"
19 | #include "mymessagebox.h"
20 | #include "downloadimage.h"
21 | #include "texteditplaygif.h"
22 | #include
23 |
24 | int main(int argc, char *argv[])
25 | {
26 | QApplication app(argc, argv);
27 |
28 | app.setApplicationName ("QQStars");
29 | app.setApplicationVersion ("1.0.0");
30 | app.setOrganizationName ("雨后星辰");
31 | app.setApplicationDisplayName ("星辰QQ");
32 |
33 | QTranslator *translator = new QTranslator;
34 | translator->load (":/qt_zh_CN.qm");
35 | QApplication::installTranslator (translator);
36 |
37 | QQmlApplicationEngine *engine = new QQmlApplicationEngine;
38 | engine->setNetworkAccessManagerFactory (new MyNetworkAccessManagerFactory());//给qml设置网络请求所用的类
39 |
40 | qmlRegisterType("MyTextEditPlugin", 1, 0, "TextEditPlayGif");
41 | qmlRegisterType("mywindow", 1,0, "MyQuickWindow");
42 | qmlRegisterType("mywindow", 1,0, "MySystemTrayIcon");
43 | qmlRegisterType("mywindow", 1,0, "MyMenu");
44 | qmlRegisterType("mywindow", 1,0, "MenuSeparator");
45 | qmlRegisterType("mywindow", 1,0, "MyMenuItem");
46 | qmlRegisterType("utility", 1,0, "MyShortcut");
47 | qmlRegisterType("utility", 1, 0, "DownloadImage");
48 | qmlRegisterType("qqstars", 1,0, "QQ");
49 | qmlRegisterType("QQItemInfo", 1,0, "FriendInfo");
50 | qmlRegisterType("QQItemInfo", 1,0, "GroupInfo");
51 | qmlRegisterType("QQItemInfo", 1,0, "DiscuInfo");
52 | qmlRegisterType("QQItemInfo", 1,0, "QQItemInfo");
53 | qmlRegisterType("QQItemInfo", 1, 0, "ChatMessageInfo");
54 | qmlRegisterType("QQItemInfo", 1, 0, "ChatMessageInfoList");
55 | qmlRegisterType("mywindow", 1,0, "MyImage");
56 | qmlRegisterType("mywindow", 1, 0, "SvgView");
57 | qmlRegisterType("mywindow", 1, 0, "MessageBox");
58 |
59 | Utility *utility=Utility::createUtilityClass ();
60 | QNetworkRequest* request = utility->getHttpRequest ()->getNetworkRequest ();
61 | request->setRawHeader ("Referer", "http://d.web2.qq.com/proxy.html?v=20110331002&callback=1&id=2");//和腾讯服务器打交道需要设置这个
62 | request->setHeader (QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
63 |
64 | request = utility->getDownloadImage ()->getHttpRequest ()->getNetworkRequest ();
65 | request->setRawHeader ("Referer", "http://web2.qq.com/webqq.html");//需要设置这个,不然腾讯服务器不响应你的请求
66 | request->setRawHeader ("Accept", "image/webp,*/*;q=0.8");
67 |
68 | utility->initUtility (new QSettings, engine);
69 |
70 | QQmlComponent component0(engine, QUrl("qrc:/qml/Api/QQApi.qml"));
71 | QQCommand *qqapi = qobject_cast(component0.create ());
72 |
73 | engine->rootContext ()->setContextProperty ("myqq", qqapi);
74 |
75 | QQmlComponent component(engine, QUrl("qrc:/qml/Utility/SystemTray.qml"));
76 | SystemTrayIcon *systemTray = qobject_cast(component.create ());
77 | #ifdef Q_OS_WIN
78 | systemTray->setParent (Utility::createUtilityClass ());//不设置父对象会导致程序退出后托盘还存在的问题
79 | #endif
80 | engine->rootContext ()->setContextProperty ("systemTray", systemTray);//将程序托盘注册过去
81 | qqapi->loadLoginWindow ();//加载登录窗口
82 |
83 | return app.exec();
84 | }
85 |
--------------------------------------------------------------------------------
/src/mywidgets/myimage.h:
--------------------------------------------------------------------------------
1 | #ifndef MYIMAGE_H
2 | #define MYIMAGE_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #if(QT_VERSION>=0x050000)
10 | #include
11 | #else
12 | #include
13 | #endif
14 |
15 | #if(QT_VERSION>=0x050000)
16 | class MyImage : public QQuickPaintedItem
17 | #else
18 | class MyImage : public QDeclarativeItem
19 | #endif
20 | {
21 | Q_OBJECT
22 | Q_PROPERTY(QUrl maskSource READ maskSource WRITE setMaskSource NOTIFY maskSourceChanged)
23 | Q_PROPERTY(bool cache READ cache WRITE setCache NOTIFY cacheChanged)
24 | Q_PROPERTY(bool grayscale READ grayscale WRITE setGrayscale NOTIFY grayscaleChanged)
25 | Q_PROPERTY(State status READ status NOTIFY statusChanged FINAL)
26 | Q_PROPERTY(QSize sourceSize READ sourceSize WRITE setSourceSize NOTIFY sourceSizeChanged)
27 | Q_PROPERTY(QSize defaultSize READ defaultSize NOTIFY defaultSizeChanged FINAL)
28 | Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
29 |
30 | Q_ENUMS(State)
31 | public:
32 | enum State{
33 | Null,
34 | Ready,
35 | Loading,
36 | Error
37 | };
38 |
39 | #if(QT_VERSION>=0x050000)
40 | explicit MyImage(QQuickItem *parent = 0);
41 | #else
42 | explicit MyImage(QDeclarativeItem *parent = 0);
43 | #endif
44 | ~MyImage();
45 |
46 | QUrl source() const;
47 | QUrl maskSource() const;
48 | bool cache() const;
49 | bool grayscale() const;
50 |
51 | void chromaticToGrayscale(QImage &image);
52 | static QString imageFormatToString(const QByteArray& array);
53 |
54 | #if(QT_VERSION>=0x050000)
55 | void paint(QPainter * painter);
56 | #else
57 | void paint(QPainter *painter, const QStyleOptionGraphicsItem *new_style, QWidget *new_widget=0);
58 | #endif
59 | State status() const;
60 | QSize sourceSize() const;
61 | QSize defaultSize() const;
62 |
63 | const QPixmap* getPixmap() const;
64 | signals:
65 | void sourceChanged(QUrl arg);
66 | void maskSourceChanged(QUrl arg);
67 | void loadError();//加载图片出错
68 | void loadReady();
69 | void cacheChanged(bool arg);
70 | void grayscaleChanged(bool arg);
71 | void statusChanged(State arg);
72 | void sourceSizeChanged(QSize arg);
73 | void defaultSizeChanged(QSize arg);
74 |
75 | public slots:
76 | void setSource(QUrl arg);
77 | void setMaskSource(QUrl arg);
78 | void setCache(bool arg);
79 | void setGrayscale(bool arg);
80 | void setStatus(State arg);
81 | void reLoad();
82 | void setSourceSize(QSize arg);
83 | void setDefaultSize(QSize arg);
84 | bool save(const QString& fileName) const;
85 |
86 | private slots:
87 | void onDownImageFinished(QNetworkReply* reply);
88 |
89 | private:
90 | QUrl m_source;
91 | QPixmap *pixmap;
92 | static QCache pixmapCache;
93 |
94 | QUrl m_maskSource;
95 | bool m_cache;
96 | bool m_grayscale;
97 | QNetworkAccessManager manager;
98 | QNetworkReply *reply;
99 | State m_status;
100 | QSize m_sourceSize;
101 | QSize m_defaultSize;
102 |
103 | void downloadImage(const QUrl& url);
104 | void setImage(QImage& image);
105 | };
106 |
107 | #endif // MYIMAGE_H
108 |
--------------------------------------------------------------------------------
/src/mywidgets/mymessagebox.cpp:
--------------------------------------------------------------------------------
1 | #include "mymessagebox.h"
2 | #include
3 | #include
4 | #include
5 | #include
6 | #include
7 |
8 | MyMessageBox::MyMessageBox(QWidget *parent) :
9 | QMessageBox(parent)
10 | {
11 | //setAttribute(Qt::WA_TranslucentBackground);
12 | setFixedSize (300, 200);
13 | setWindowFlags (windowFlags ()|Qt::FramelessWindowHint);
14 | //QImage image(":/images/menu_background.png");
15 | //background_pixmap = QPixmap::fromImage (image);
16 | //QLabel *label = new QLabel(this);
17 | //label->setPixmap (background_pixmap);
18 | //label->setGeometry (0,0,width(),height ());
19 | //label->setBackgroundRole ();
20 | }
21 |
22 | QUrl MyMessageBox::styleSource() const
23 | {
24 | return m_styleSource;
25 | }
26 |
27 | void MyMessageBox::mousePressEvent(QMouseEvent *event)
28 | {
29 | if(event->button () == Qt::LeftButton){
30 | press_point = event->pos ();
31 | allow_move = true;
32 | event->accept ();
33 | }else{
34 | QMessageBox::mousePressEvent (event);
35 | }
36 | }
37 |
38 | void MyMessageBox::mouseMoveEvent(QMouseEvent *event)
39 | {
40 | if(allow_move){
41 | move (pos()+event->pos ()-press_point);
42 | event->accept ();
43 | }else{
44 | QMessageBox::mouseMoveEvent (event);
45 | }
46 | }
47 |
48 | void MyMessageBox::mouseReleaseEvent(QMouseEvent *event)
49 | {
50 | if(event->button () == Qt::LeftButton){
51 | allow_move = false;
52 | event->accept ();
53 | }else{
54 | QMessageBox::mouseReleaseEvent (event);
55 | }
56 | }
57 |
58 | void MyMessageBox::setStyleSource(QUrl arg)
59 | {
60 | if (m_styleSource != arg) {
61 | m_styleSource = arg;
62 | QFile file(arg.toLocalFile ());
63 | if(file.open (QIODevice::ReadOnly)){
64 | setStyleSheet (file.readAll ());
65 | }else{
66 | qDebug()<<"打开"+arg.toLocalFile ()+"失败;"<
5 | #include
6 | #include
7 |
8 | class MyMessageBox : public QMessageBox
9 | {
10 | Q_OBJECT
11 | Q_PROPERTY(QUrl styleSource READ styleSource WRITE setStyleSource NOTIFY styleSourceChanged)
12 |
13 | public:
14 | explicit MyMessageBox(QWidget *parent = 0);
15 | QUrl styleSource() const;
16 |
17 | private:
18 | void mousePressEvent(QMouseEvent * event);
19 | void mouseMoveEvent(QMouseEvent * event);
20 | void mouseReleaseEvent(QMouseEvent * event);
21 |
22 | QUrl m_styleSource;
23 | QPoint press_point;
24 | bool allow_move;
25 |
26 | QPixmap *background_pixmap;
27 | signals:
28 | void styleSourceChanged(QUrl arg);
29 | public slots:
30 | void setStyleSource(QUrl arg);
31 | };
32 |
33 | #endif // MYMESSAGEBOX_H
34 |
--------------------------------------------------------------------------------
/src/mywidgets/mysvgview.cpp:
--------------------------------------------------------------------------------
1 | #include "mysvgview.h"
2 | #include
3 | #include
4 | #include
5 |
6 | #if(QT_VERSION>=0x050000)
7 | MySvgView::MySvgView(QQuickItem *parent) :
8 | QQuickPaintedItem(parent)
9 | #else
10 | MySvgView::MySvgView(QDeclarativeItem *parent) :
11 | QDeclarativeItem(parent)
12 | #endif
13 | {
14 | #if(QT_VERSION<0x050000)
15 | setFlag(QGraphicsItem::ItemHasNoContents, false);
16 | #endif
17 | m_defaultSize = QSize(0,0);
18 | svg = new QSvgRenderer(this);
19 | }
20 |
21 | QUrl MySvgView::source() const
22 | {
23 | return m_source;
24 | }
25 |
26 | QSize MySvgView::defaultSize() const
27 | {
28 | return m_defaultSize;
29 | }
30 |
31 | void MySvgView::setDefaultSize(QSize arg)
32 | {
33 | if(arg!=m_defaultSize){
34 | m_defaultSize = arg;
35 | emit defaultSizeChanged (arg);
36 | }
37 | }
38 |
39 | #if(QT_VERSION>=0x050000)
40 | void MySvgView::paint(QPainter *painter)
41 | #else
42 | void MySvgView::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
43 | #endif
44 | {
45 | svg->render (painter, boundingRect());
46 | }
47 |
48 | void MySvgView::setSource(QUrl arg)
49 | {
50 | if (m_source != arg) {
51 | m_source = arg;
52 |
53 | QString str = m_source.toLocalFile();
54 | if(str == ""){
55 | str = m_source.toString();
56 | if(str==""){
57 | svg->deleteLater();
58 | svg = new QSvgRenderer(this);
59 | return;
60 | }
61 | }
62 |
63 | if( str.mid (0, 3) == "qrc")
64 | str = str.mid (3, str.count ()-3);
65 | svg->load (str);
66 | setDefaultSize (svg->defaultSize ());
67 | int width = svg->defaultSize ().width ();
68 | int height = svg->defaultSize ().height ();
69 | setImplicitWidth(width);
70 | setImplicitHeight(height);
71 | update ();
72 | emit sourceChanged(arg);
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/src/mywidgets/mysvgview.h:
--------------------------------------------------------------------------------
1 | #ifndef MYSVGVIEW_H
2 | #define MYSVGVIEW_H
3 |
4 | #include
5 | #if(QT_VERSION>=0x050000)
6 | #include
7 | #else
8 | #include
9 | #endif
10 |
11 | #if(QT_VERSION>=0x050000)
12 | class MySvgView : public QQuickPaintedItem
13 | #else
14 | class MySvgView : public QDeclarativeItem
15 | #endif
16 | {
17 | Q_OBJECT
18 | Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
19 | Q_PROPERTY(QSize defaultSize READ defaultSize WRITE setDefaultSize NOTIFY defaultSizeChanged FINAL)
20 |
21 | public:
22 | #if(QT_VERSION>=0x050000)
23 | explicit MySvgView(QQuickItem *parent = 0);
24 | #else
25 | explicit MySvgView(QDeclarativeItem *parent = 0);
26 | #endif
27 | QUrl source() const;
28 | QSize defaultSize() const;
29 | public slots:
30 | void setSource(QUrl arg);
31 | void setDefaultSize( QSize arg );
32 |
33 | signals:
34 | void sourceChanged(QUrl arg);
35 | void rotationModeChanged(Qt::Axis arg);
36 | void rotationOriginChanged(QPoint arg);
37 | void defaultSizeChanged( QSize arg );
38 |
39 | private:
40 | QSvgRenderer *svg;
41 | QUrl m_source;
42 | QSize m_defaultSize;
43 |
44 | #if(QT_VERSION>=0x050000)
45 | void paint(QPainter * painter);
46 | #else
47 | void paint(QPainter *painter, const QStyleOptionGraphicsItem *new_style, QWidget *new_widget=0);
48 | #endif
49 | };
50 |
51 | #endif // MYSVGVIEW_H
52 |
--------------------------------------------------------------------------------
/src/qxtglobalshortcut/myshortcut.h:
--------------------------------------------------------------------------------
1 | #ifndef MYSHORTCUT_H
2 | #define MYSHORTCUT_H
3 | /*!
4 | * 使用须知:
5 | * 此类为 雨后星辰后来添加,封装了app内部全局热键(通过给QApplication安装事件过滤器)
6 | * 封装了指定对象热键(为此对象安装事件过滤器实现)
7 | * 最后封装了qxtglobalshortcut实现了系统全局热键,在这里感谢原作者的贡献
8 | * 另外,由于qxtglobalshortcut不支持qt5,所以我额外给他增加了一下代码
9 | * 总结,此类支持对象内热键(必须为QObject类型或继承QObject),程序全局热键,系统全局热键,支持qt5和qt4(未尝试,可以需要修改部分代码)
10 | * 请不要删除这段话,谢谢!
11 | */
12 | #include
13 | #include
14 | #include
15 | #include "qxtglobalshortcut.h"//系统全局热键
16 |
17 | class MyShortcut : public QObject
18 | {
19 | Q_OBJECT
20 | Q_PROPERTY(QString shortcut READ shortcut WRITE setShortcut NOTIFY shortcutChanged)
21 | Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled NOTIFY enabledChanged)
22 | Q_PROPERTY(bool filterOut READ filterOut WRITE setFilterOut NOTIFY filterOutChanged)
23 | //是将事件传递给过滤的对象,对于系统全局热键不可用
24 | Q_PROPERTY(QObject* target READ target WRITE setTarget NOTIFY targetChanged)
25 | Q_PROPERTY(Type shortcutType READ shortcutType WRITE setShortcutType NOTIFY shortcutTypeChanged)
26 | Q_ENUMS(Type)
27 | public:
28 | enum Type{
29 | LocalShortcut,//局部热键
30 | AppGlobalShortcut,//整个程序的热键
31 | SystemGlobalShortcut//系统全局热键
32 | };
33 | explicit MyShortcut(Type type = LocalShortcut, QObject *parent = 0);
34 | explicit MyShortcut(QString shortcut, Type type = LocalShortcut, QObject *parent = 0);
35 | QString shortcut() const;
36 | bool isEnabled() const;
37 | bool filterOut() const;
38 | QObject* target() const;
39 |
40 | Type shortcutType() const;
41 | public slots:
42 | void setShortcut(QString arg);
43 | void setEnabled(bool arg);
44 | void setFilterOut(bool arg);
45 | void setTarget(QObject* arg);
46 | void setShortcutType(Type arg);
47 |
48 | signals:
49 | void shortcutChanged(QString arg);
50 | void trigger();
51 | void enabledChanged(bool arg);
52 | void error(QString arg);
53 | void filterOutChanged(bool arg);
54 | void targetChanged(QObject* arg);
55 | void shortcutTypeChanged(Type arg);
56 |
57 | private:
58 | QString m_shortcut;
59 | QQueue key_list;
60 | QQueue queue_key;
61 | bool m_enabled;
62 | bool m_filterOut;
63 | QPointer m_target;
64 | QPointer obj;
65 | QPointer global_shortcut;
66 | Type m_shortcutType;
67 |
68 | void setObj(QObject *arg);
69 | void updataSystemGlobalShortcut(const QString &arg);//更新系统全局热键
70 | bool eventFilter ( QObject * watched, QEvent * event );
71 | bool onKeyPressed(QQueue& list);
72 |
73 | };
74 |
75 | #endif // MYSHORTCUT_H
76 |
--------------------------------------------------------------------------------
/src/qxtglobalshortcut/qxtglobalshortcut.h:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | **
3 | ** Copyright (C) Qxt Foundation. Some rights reserved.
4 | **
5 | ** This file is part of the QxtGui module of the Qxt library.
6 | **
7 | ** This library is free software; you can redistribute it and/or modify it
8 | ** under the terms of the Common Public License, version 1.0, as published
9 | ** by IBM, and/or under the terms of the GNU Lesser General Public License,
10 | ** version 2.1, as published by the Free Software Foundation.
11 | **
12 | ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY
13 | ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
14 | ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR
15 | ** FITNESS FOR A PARTICULAR PURPOSE.
16 | **
17 | ** You should have received a copy of the CPL and the LGPL along with this
18 | ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files
19 | ** included with the source distribution for more information.
20 | ** If you did not receive a copy of the licenses, contact the Qxt Foundation.
21 | **
22 | **
23 | **
24 | ****************************************************************************/
25 | #ifndef QXTGLOBALSHORTCUT_H
26 | #define QXTGLOBALSHORTCUT_H
27 |
28 | #include "qxtglobal.h"
29 | #include
30 | #include
31 | class QxtGlobalShortcutPrivate;
32 |
33 | class QxtGlobalShortcut : public QObject
34 | {
35 | Q_OBJECT
36 | QXT_DECLARE_PRIVATE(QxtGlobalShortcut)
37 | Q_PROPERTY(bool enabled READ isEnabled WRITE setEnabled)
38 | Q_PROPERTY(QKeySequence shortcut READ shortcut WRITE setShortcut)
39 |
40 | public:
41 | explicit QxtGlobalShortcut(QObject* parent = 0);
42 | explicit QxtGlobalShortcut(const QKeySequence& shortcut, QObject* parent = 0);
43 | virtual ~QxtGlobalShortcut();
44 |
45 | QKeySequence shortcut() const;
46 | bool setShortcut(const QKeySequence& shortcut);
47 | bool isEnabled() const;
48 |
49 | public Q_SLOTS:
50 | void setEnabled(bool enabled = true);
51 | void setDisabled(bool disabled = true);
52 |
53 | Q_SIGNALS:
54 | void activated();
55 | };
56 |
57 | #endif // QXTGLOBALSHORTCUT_H
58 |
--------------------------------------------------------------------------------
/src/qxtglobalshortcut/qxtglobalshortcut.pri:
--------------------------------------------------------------------------------
1 | INCLUDEPATH += $$PWD
2 | DEPENDPATH += $$PWD
3 |
4 | HEADERS += $$PWD/qxtglobal.h \
5 | $$PWD/qxtglobalshortcut.h \
6 | $$PWD/qxtglobalshortcut_p.h \
7 | $$PWD/myshortcut.h
8 | SOURCES += $$PWD/qxtglobalshortcut.cpp \
9 | $$PWD/myshortcut.cpp
10 | win32{
11 | SOURCES += $$PWD/qxtglobalshortcut_win.cpp
12 | LIBS += -luser32
13 | }
14 | unix{
15 | QT += x11extras
16 | LIBS += -lX11
17 | SOURCES += $$PWD/qxtglobalshortcut_x11.cpp
18 | }
19 | mac{
20 | SOURCES += $$PWD/qxtglobalshortcut_mac.cpp
21 | }
22 |
--------------------------------------------------------------------------------
/src/qxtglobalshortcut/qxtglobalshortcut_p.h:
--------------------------------------------------------------------------------
1 | /****************************************************************************
2 | **
3 | ** Copyright (C) Qxt Foundation. Some rights reserved.
4 | **
5 | ** This file is part of the QxtGui module of the Qxt library.
6 | **
7 | ** This library is free software; you can redistribute it and/or modify it
8 | ** under the terms of the Common Public License, version 1.0, as published
9 | ** by IBM, and/or under the terms of the GNU Lesser General Public License,
10 | ** version 2.1, as published by the Free Software Foundation.
11 | **
12 | ** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY
13 | ** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY
14 | ** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR
15 | ** FITNESS FOR A PARTICULAR PURPOSE.
16 | **
17 | ** You should have received a copy of the CPL and the LGPL along with this
18 | ** file. See the LICENSE file and the cpl1.0.txt/lgpl-2.1.txt files
19 | ** included with the source distribution for more information.
20 | ** If you did not receive a copy of the licenses, contact the Qxt Foundation.
21 | **
22 | **
23 | **
24 | ****************************************************************************/
25 | #ifndef QXTGLOBALSHORTCUT_P_H
26 | #define QXTGLOBALSHORTCUT_P_H
27 |
28 | #include "qxtglobalshortcut.h"
29 | #include
30 | #include
31 | #include
32 | #if(QT_VERSION>=0x050000)//雨后星辰
33 | #include
34 | #endif
35 |
36 | class QxtGlobalShortcutPrivate : public QxtPrivate
37 | #if(QT_VERSION>=0x050000)
38 | , public QAbstractNativeEventFilter
39 | #endif
40 | {
41 | public:
42 | QXT_DECLARE_PUBLIC(QxtGlobalShortcut)
43 | QxtGlobalShortcutPrivate();
44 | ~QxtGlobalShortcutPrivate();
45 |
46 | bool enabled;
47 | Qt::Key key;
48 | Qt::KeyboardModifiers mods;
49 |
50 | bool setShortcut(const QKeySequence& shortcut);
51 | bool unsetShortcut();
52 |
53 | static bool error;
54 | static int ref;
55 | #if(QT_VERSION<0x050000)//雨后星辰
56 | static QAbstractEventDispatcher::EventFilter prevEventFilter;
57 | static bool eventFilter(void* message);
58 | #else
59 | bool nativeEventFilter(const QByteArray &eventType, void *message, long *result);
60 | #endif
61 | private:
62 | static quint32 nativeKeycode(Qt::Key keycode);
63 | static quint32 nativeModifiers(Qt::KeyboardModifiers modifiers);
64 |
65 | static bool registerShortcut(quint32 nativeKey, quint32 nativeMods);
66 | static bool unregisterShortcut(quint32 nativeKey, quint32 nativeMods);
67 | static void activateShortcut(quint32 nativeKey, quint32 nativeMods);
68 |
69 | static QHash, QxtGlobalShortcut*> shortcuts;
70 | };
71 |
72 | #endif // QXTGLOBALSHORTCUT_P_H
73 |
--------------------------------------------------------------------------------
/src/utility/downloadimage.h:
--------------------------------------------------------------------------------
1 | #ifndef DOWNLOADIMAGE_H
2 | #define DOWNLOADIMAGE_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #if(QT_VERSION>=0x050000)
11 | #include
12 | #include
13 | #else
14 | #include
15 | #include
16 | #endif
17 |
18 | class MyHttpRequest;
19 | class QNetworkReply;
20 | class DownloadImage : public QObject
21 | {
22 | Q_OBJECT
23 | Q_ENUMS(ErrorType)
24 | public:
25 | explicit DownloadImage(QObject *parent = 0);
26 | explicit DownloadImage(MyHttpRequest* http, QObject *parent = 0);
27 | MyHttpRequest *getHttpRequest();
28 |
29 | static QString imageFormatToString(const QByteArray& array);
30 |
31 | enum ErrorType{
32 | NoError,//无错误
33 | DownloadError,//下载出错
34 | SaveError,//保存出错
35 | NotSupportFormat//不支持的图片格式
36 | };
37 |
38 | private:
39 | enum ReplyType{//回调的几种方式
40 | CallbackFun,
41 | ConnectSlot
42 | };
43 | struct Data{
44 | ReplyType replyType;
45 | #if(QT_VERSION>=0x050000)
46 | QJSValue callbackFun;
47 | #else
48 | QScriptValue callbackFun;
49 | #endif
50 | QObject* caller;
51 | QByteArray slotName;
52 | QString savePath;
53 | QString saveName;
54 | };
55 | QQueue queue_data;
56 | MyHttpRequest* httpRequest;
57 |
58 | private slots:
59 | void downloadFinished(QNetworkReply *replys);//当图片下载完成的时候调用
60 | public slots:
61 | #if(QT_VERSION>=0x050000)
62 | void getImage(QJSValue callbackFun, QUrl url, QString savePath, QString saveName);
63 | #else
64 | void getImage(QScriptValue callbackFun, QUrl url, QString savePath, QString saveName);
65 | #endif
66 | void getImage(QObject *caller, QByteArray slotName, QUrl url, QString savePath, QString saveName);
67 | /*
68 | * savePath中最后一个目录后面不要加"/",saveName不要带后缀
69 | */
70 | };
71 |
72 | #endif // DOWNLOADIMAGE_H
73 |
--------------------------------------------------------------------------------
/src/utility/myhttprequest.h:
--------------------------------------------------------------------------------
1 | #ifndef MYHTTPREQUEST_H
2 | #define MYHTTPREQUEST_H
3 |
4 | #include
5 | #include
6 | #include
7 | #if(QT_VERSION>=0x050000)
8 | #include
9 | #include
10 | #else
11 | #include
12 | #include
13 | #endif
14 |
15 | class NetworkAccessManager;
16 | class MyHttpRequest : public QObject
17 | {
18 | Q_OBJECT
19 | Q_PROPERTY( RequestStatus status READ status WRITE setStatus NOTIFY statusChanged)
20 | Q_ENUMS(RequestStatus)
21 |
22 | public:
23 | explicit MyHttpRequest(QObject *parent = 0);
24 | enum RequestStatus{
25 | Idle,//初始状态
26 | Busy//请求中
27 | };
28 |
29 | const NetworkAccessManager *getNetworkAccessManager();
30 | QNetworkRequest *getNetworkRequest();
31 | protected:
32 | NetworkAccessManager *manager;
33 | QNetworkRequest request;
34 | QPointer m_reply;
35 |
36 | RequestStatus m_status;
37 | RequestStatus status();
38 | void setStatus( RequestStatus new_status );
39 |
40 | enum ReplyType{//回调的几种方式
41 | CallbackFun,
42 | ConnectSlot
43 | };
44 | struct Data{
45 | ReplyType replyType;
46 | #if(QT_VERSION>=0x050000)
47 | QJSValue callbackFun;
48 | #else
49 | QScriptValue callbackFun;
50 | #endif
51 | QObject* caller;
52 | QByteArray slotName;
53 | };
54 | struct requestData{
55 | QUrl url;
56 | QByteArray data;
57 | };
58 |
59 | QQueue queue_replyData;
60 | QQueue queue_requestData;
61 |
62 | void send(QObject *caller, QByteArray slotName, QUrl url, QByteArray data="", bool highRequest=false );//highRequest记录是否为高级的网络请求
63 | #if(QT_VERSION>=0x050000)
64 | void send( QJSValue callbackFun, QUrl url, QByteArray data="", bool highRequest=false );
65 | #else
66 | void send( QScriptValue callbackFun, QUrl url, QByteArray data="", bool highRequest=false );
67 | #endif
68 | protected slots:
69 | virtual void finished( QNetworkReply *reply );
70 | void send();
71 | signals:
72 | void statusChanged();
73 | public slots:
74 | void get(QObject *caller, QByteArray slotName, QUrl url, bool highRequest=false );
75 | void post(QObject *caller, QByteArray slotName, QUrl url, QByteArray data="", bool highRequest=false );
76 | #if(QT_VERSION>=0x050000)
77 | void get(QJSValue callbackFun, QUrl url, bool highRequest=false );
78 | void post(QJSValue callbackFun, QUrl url, QByteArray data="", bool highRequest=false );
79 | #else
80 | void get(QScriptValue callbackFun, QUrl url, bool highRequest=false );
81 | void post(QScriptValue callbackFun, QUrl url, QByteArray data="", bool highRequest=false );
82 | #endif
83 | void abort();//取消当前网络请求
84 | QString errorString();
85 | };
86 |
87 | class MyHttpRequestPrivate : public MyHttpRequest
88 | {
89 | Q_OBJECT
90 | private:
91 | #if(QT_VERSION>=0x050000)
92 | explicit MyHttpRequestPrivate(QNetworkRequest request, QJSValue callbackFun, QUrl url, QByteArray data);
93 | #else
94 | explicit MyHttpRequestPrivate(QNetworkRequest request, QScriptValue callbackFun, QUrl url, QByteArray data);
95 | #endif
96 | explicit MyHttpRequestPrivate(QNetworkRequest request, QObject *caller, QByteArray slotName, QUrl url, QByteArray data);
97 | friend class MyHttpRequest;
98 | private slots:
99 | void finished( QNetworkReply *reply );
100 | };
101 |
102 | #endif // MYHTTPREQUEST_H
103 |
--------------------------------------------------------------------------------
/src/utility/mynetworkaccessmanagerfactory.cpp:
--------------------------------------------------------------------------------
1 | #include "mynetworkaccessmanagerfactory.h"
2 | #include
3 | #include
4 |
5 | MyNetworkAccessManagerFactory::MyNetworkAccessManagerFactory(QObject *parent) :
6 | QObject(parent)
7 | {
8 | m_networkManager = new NetworkAccessManager(this);
9 | connect(m_networkManager,SIGNAL(sslErrors(QNetworkReply*,QList)),this,SLOT(onIgnoreSSLErrors(QNetworkReply*,QList)));
10 | }
11 |
12 | QNetworkAccessManager* MyNetworkAccessManagerFactory::create(QObject *parent)
13 | {
14 | QMutexLocker lock(&mutex);
15 | Q_UNUSED(lock);
16 | QNetworkAccessManager* manager = new NetworkAccessManager(parent);
17 |
18 | return manager;
19 | }
20 |
21 | void MyNetworkAccessManagerFactory::onIgnoreSSLErrors(QNetworkReply *reply, QList error)
22 | {
23 | qDebug()<ignoreSslErrors(error);
25 | }
26 |
27 | NetworkAccessManager::NetworkAccessManager(QObject *parent) :
28 | QNetworkAccessManager(parent)
29 | {
30 | QNetworkCookieJar* cookieJar = NetworkCookieJar::GetInstance();
31 | setCookieJar(cookieJar);
32 | cookieJar->setParent(0);
33 | }
34 |
35 | QNetworkReply *NetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
36 | {
37 | QNetworkRequest req(request);
38 | QSslConfiguration config;
39 |
40 | config.setPeerVerifyMode(QSslSocket::VerifyNone);
41 | config.setProtocol(QSsl::TlsV1_0);
42 | req.setSslConfiguration(config);
43 | // set user-agent
44 | if (op == PostOperation){
45 | req.setRawHeader("User-Agent", "IDP");
46 | } else {
47 | req.setRawHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36 LBBROWSER");
48 | }
49 |
50 | QNetworkReply *reply = QNetworkAccessManager::createRequest(op, req, outgoingData);
51 |
52 | return reply;
53 | }
54 |
55 | NetworkCookieJar::NetworkCookieJar(QObject *parent) :
56 | QNetworkCookieJar(parent)
57 | {
58 | //keepAliveCookie = QNetworkCookie("ka", "open");
59 | load ();
60 | }
61 |
62 | NetworkCookieJar::~NetworkCookieJar()
63 | {
64 | }
65 |
66 | void NetworkCookieJar::load()
67 | {
68 | QMutexLocker lock(&mutex);
69 | Q_UNUSED(lock);
70 |
71 | }
72 |
73 | NetworkCookieJar* NetworkCookieJar::GetInstance()
74 | {
75 | static NetworkCookieJar cookieJar;
76 | return &cookieJar;
77 | }
78 |
79 | void NetworkCookieJar::clearCookies()
80 | {
81 | QList emptyList;
82 | setAllCookies(emptyList);
83 | }
84 |
85 | QList NetworkCookieJar::cookiesForUrl(const QUrl &url) const
86 | {
87 | QMutexLocker lock(&mutex);
88 | Q_UNUSED(lock);
89 | QList cookies = QNetworkCookieJar::cookiesForUrl(url);
90 | return cookies;
91 | }
92 |
93 | bool NetworkCookieJar::setCookiesFromUrl(const QList &cookieList, const QUrl &url)
94 | {
95 | QMutexLocker lock(&mutex);
96 | Q_UNUSED(lock);
97 | return QNetworkCookieJar::setCookiesFromUrl(cookieList, url);
98 | }
99 |
100 | QList NetworkCookieJar::cookies() const
101 | {
102 | return allCookies ();
103 | }
104 |
--------------------------------------------------------------------------------
/src/utility/mynetworkaccessmanagerfactory.h:
--------------------------------------------------------------------------------
1 | #ifndef MYNETWORKACCESSMANAGERFACTORY_H
2 | #define MYNETWORKACCESSMANAGERFACTORY_H
3 |
4 | #include
5 | #include
6 | #include
7 |
8 | class MyNetworkAccessManagerFactory : public QObject,public QQmlNetworkAccessManagerFactory
9 | {
10 | Q_OBJECT
11 | public:
12 | explicit MyNetworkAccessManagerFactory( QObject *parent = 0 );
13 | virtual QNetworkAccessManager* create(QObject *parent);
14 | public slots:
15 | void onIgnoreSSLErrors(QNetworkReply* reply,QList error);
16 | private:
17 | QMutex mutex;
18 | QNetworkAccessManager* m_networkManager;
19 | };
20 |
21 | class NetworkAccessManager : public QNetworkAccessManager
22 | {
23 | Q_OBJECT
24 |
25 | public:
26 | explicit NetworkAccessManager(QObject *parent = 0);
27 | protected:
28 | QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData);
29 | };
30 |
31 | class NetworkCookieJar : public QNetworkCookieJar
32 | {
33 | public:
34 | static NetworkCookieJar* GetInstance();
35 | void clearCookies();
36 |
37 | virtual QList cookiesForUrl(const QUrl &url) const;
38 | virtual bool setCookiesFromUrl(const QList &cookieList, const QUrl &url);
39 | QList cookies() const;
40 | private:
41 | explicit NetworkCookieJar(QObject *parent = 0);
42 | ~NetworkCookieJar();
43 | void load();
44 | mutable QMutex mutex;
45 | //QNetworkCookie keepAliveCookie;
46 | };
47 |
48 | #endif // MYNETWORKACCESSMANAGERFACTORY_H
49 |
--------------------------------------------------------------------------------
/src/utility/texteditplaygif.h:
--------------------------------------------------------------------------------
1 | #ifndef TEXTEDITPLAYGIF_H
2 | #define TEXTEDITPLAYGIF_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 |
11 | class QQuickTextEdit;
12 | class TextEditPlayGif : public QObject
13 | {
14 | Q_OBJECT
15 |
16 | Q_PROPERTY(QQuickTextEdit* target READ target WRITE setTarget NOTIFY targetChanged)
17 | Q_PROPERTY(QUrl cachePath READ cachePath WRITE setCachePath NOTIFY cachePathChanged)//此属性暂时未使用
18 | Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged)
19 |
20 | public:
21 | TextEditPlayGif(QObject *parent=0);
22 |
23 | QQuickTextEdit* target() const;
24 | QUrl cachePath() const;
25 | bool enabled() const;
26 |
27 | private:
28 | struct MovieData{
29 | QMovie* movie;
30 | QString url;
31 | QString gifName;
32 | QSize size;
33 | };
34 |
35 | QPointer m_target;
36 | QList list_movie;
37 | QStringList list_errorUrl;//记录那些解析出错的gif的路径
38 | QUrl m_cachePath;
39 | QString old_content;
40 | bool m_enabled;
41 |
42 | void clearMovie();
43 | void addMovie(QMovie *movie, const QString &url, const QString& gif_name, QSize size);
44 | QString getUrlByMovie(QMovie* movie);
45 | QString getGifNameByMovie(QMovie* movie);
46 | MovieData* getDataByGifNameAndSize(const QString& name, QSize size);
47 | MovieData* getDataByMovie(const QMovie* movie);
48 | void setUrlByMovie(QMovie* movie, const QString &url);
49 |
50 | bool isErrorUrl(const QString url);
51 | void addErrorUrl(const QString url);
52 |
53 | void startAllMovie();
54 | void stopAllMovie();
55 |
56 | void setTextEditContent(const QString& data);
57 | public slots:
58 | void onTextChanged();
59 | private slots:
60 | void onMovie(int frame);
61 | void onMovieFinished();
62 | signals:
63 | void targetChanged(QQuickTextEdit* arg);
64 | void cachePathChanged(QUrl arg);
65 | void error(const QString& errorString);
66 | void enabledChanged(bool arg);
67 |
68 | public slots:
69 | void setTarget(QQuickTextEdit* arg);
70 | void setCachePath(QUrl arg);
71 |
72 | void removeErrorUrl(const QString& url);
73 | void setEnabled(bool arg);
74 | };
75 |
76 | #endif // TEXTEDITPLAYGIF_H
77 |
--------------------------------------------------------------------------------
/src/utility/utility.h:
--------------------------------------------------------------------------------
1 | #ifndef UTILITY_H
2 | #define UTILITY_H
3 |
4 | #include
5 | #include
6 | #include
7 | #include
8 | #include
9 | #include
10 | #include
11 | #include
12 | #include
13 |
14 | class UtilityPrivate : public QObject
15 | {
16 | Q_OBJECT
17 | Q_ENUMS(ProxyType)
18 | public:
19 | enum ProxyType {
20 | DefaultProxy,
21 | Socks5Proxy,
22 | NoProxy,
23 | HttpProxy,
24 | HttpCachingProxy,
25 | FtpCachingProxy
26 | };
27 | };
28 |
29 | class MyHttpRequest;
30 | class DownloadImage;
31 | class Utility : public QObject
32 | {
33 | Q_OBJECT
34 | public:
35 | static Utility *createUtilityClass();
36 |
37 | private:
38 | explicit Utility(QObject *parent = 0);
39 | ~Utility();
40 | QPointer engine;
41 | QPointer mysettings;
42 |
43 | MyHttpRequest *http_request;
44 | DownloadImage *download_image;
45 |
46 | QNetworkConfigurationManager networkConfigurationManager;
47 |
48 | char numToStr(int num);//将数字按一定的规律换算成字母
49 | QByteArray strZoarium(const QByteArray &str);//按一定的规律加密字符串(只包含数字和字母的字符串)
50 | QByteArray unStrZoarium(const QByteArray &str);//按一定的规律解密字符串(只包含数字和字母的字符串)
51 | QByteArray fillContent(const QByteArray &str, int length);//将字符串填充到一定的长度
52 |
53 | public:
54 | Q_INVOKABLE void consoleLog(QString str);//输出调试信息
55 | Q_INVOKABLE QString getCookie( QString cookieName );
56 | QQmlApplicationEngine *qmlEngine();
57 | MyHttpRequest *getHttpRequest();
58 | DownloadImage *getDownloadImage();
59 | bool networkIsOnline() const;
60 | signals:
61 | void mouseDesktopPosChanged(QPoint arg);
62 | void networkOnlineStateChanged(bool isOnline);
63 | public slots:
64 | void initUtility(QSettings *settings=0, QQmlApplicationEngine *qmlEngine=0);
65 | void setQmlEngine( QQmlApplicationEngine *new_engine );
66 | QPoint mouseDesktopPos();
67 |
68 | void setQSettings(QSettings *settings);
69 | void setValue( const QString & key, const QVariant & value);
70 | QVariant value(const QString & key, const QVariant & defaultValue = QVariant()) const;
71 | void removeValue( const QString & key );
72 |
73 | void loadQml( QUrl url );
74 | #if(QT_VERSION>=0x050000)
75 | void downloadImage( QJSValue callbackFun, QUrl url, QString savePath, QString saveName );
76 | void httpGet(QJSValue callbackFun, QUrl url, bool highRequest=false );
77 | void httpPost(QJSValue callbackFun, QUrl url, QByteArray data="", bool highRequest=false );
78 | #else
79 | void downloadImage( QScriptValue callbackFun, QUrl url, QString savePath, QString saveName );
80 | void httpGet(QScriptValue callbackFun, QUrl url, bool highRequest=false );
81 | void httpPost(QScriptValue callbackFun, QUrl url, QByteArray data="", bool highRequest=false );
82 | #endif
83 | void downloadImage( QObject *caller, QByteArray slotName, QUrl url, QString savePath, QString saveName );
84 | void httpGet(QObject *caller, QByteArray slotName, QUrl url, bool highRequest=false);
85 | void httpPost(QObject *caller, QByteArray slotName, QUrl url, QByteArray data, bool highRequest=false);
86 | void socketAbort();
87 | void setApplicationProxy( int type, QString location, QString port, QString username, QString password );
88 |
89 | QString stringEncrypt(const QString &content, QString key);//加密任意字符串,中文请使用utf-8编码
90 | QString stringUncrypt(const QString &content_hex, QString key);//解密加密后的字符串
91 |
92 | void removePath(QString dirPath ,bool deleteHidden = true, bool deleteSelf = true );
93 | };
94 |
95 | #endif // UTILITY_H
96 |
--------------------------------------------------------------------------------
/style.qrc:
--------------------------------------------------------------------------------
1 |
2 |
3 | style/menuStyle.css
4 | style/messageBoxStyle.css
5 |
6 |
7 |
--------------------------------------------------------------------------------
/style/menuStyle.css:
--------------------------------------------------------------------------------
1 | QMenu::item:selected {
2 | background: #F07000;
3 | color:#E6FFFF;
4 | height:25px;
5 | }
6 | QMenu{
7 | background-image: url(":/images/menu_background.png");
8 | }
9 | QMenu::item{
10 | padding-left:35px;
11 | padding-right:30px;
12 | height:22px;
13 | }
14 | QMenu::icon{
15 | padding-left:8px;
16 | }
17 | QMenu::separator {
18 | height: 1px;
19 | margin:5px 0px 5px 22px;
20 | background: #B2C0CD;
21 | }
22 |
--------------------------------------------------------------------------------
/style/messageBoxStyle.css:
--------------------------------------------------------------------------------
1 | QMessageBox{
2 | background-image: url(":/images/menu_background.png");
3 | }
4 | QPushButton {
5 | background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #ddd,stop: 1 #ccc);
6 | border-radius: 10px;
7 | padding: 6px;
8 | min-width: 5em;
9 | }
10 | QPushButton::hover{
11 | background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #ccc,stop: 1 #eee);
12 | }
13 | QPushButton::pressed{
14 | background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,stop: 0 #ccc,stop: 1 #bbb);
15 | }
16 |
--------------------------------------------------------------------------------