backends/youker-assistant-daemon/data/beautify/plymouth/defaults/default.plymouth000644 001750 001750 00000000205 12312451003 035255 0ustar00saucysaucy000000 000000 youker-assistant-1.0.1[Plymouth Theme] Name=ubuntukylin Logo Description=A theme that features a blank background with a logo. ModuleName=script [script] youker-assistant-1.0.1/qml/img/logo/Manufacturer/SAPPHIRE.jpg000644 001750 001750 00000016735 12312451003 024231 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !qAQ"B2#$ aS4 !1AQaq"B23$4%bDRrCTdt5UF' ?<4 Nv('_vlpG١5 >VBP{ a ^ЌPrY2{Џl-f/t5Ѐ#6$Q 1d͛6c,8O.\t9Iަ7!^TzJtbodKԙD.uGQۻҕM w+*BaU@VYve`K3[i݄o,&_l*UĄ*G|9nQI;(Z=*0,o6u2!HPh#e?cxKLK/ܱAm%xc҄ȕzK%`Z<=GˆJ?kޡRMB6 qqےb`tpZ+@Mټ@;b˻;n4%3KPa:Z@}bJuE,);v.3_`}mNJhkEǐ&y(#jr'Dɲ.KUXTބC=;-*~?J9\94{a }lt@`h G72*>TPkJG|"Fbl`6g]J2ܫЂ d@Gȱs-ACO>;?Ǧ(a$)`LE錤8l(^P8XV-י?m˦mBc'qwAF+.zMߌI s:G) n+7ksi6U͊82/92_\Y'RzB3v]P&8c.G ) ?.@_<&wRSk _%ΎEpEa( $qq(Ho6e,13$wp7dW*nB;P绰6i̢r>%,إq2x|8A;E᳿]>]/om%¨r{wG_0Ĕ4G}^Nn{&Z,Ia2>gWH-& Oi"*Teڤkȃd%O> l3{{lY9U d'"ǜP6(nq2|D u+3S۠1 Of fT,>S 橄 `D -> ^bLύdv%o4' TE 6shiv: g;!mu< arȪCCw)+u7,{[.ב'H诱V7`OdE)U |}q7)|U bj岚tTȐUw~y+s *x\@,j%rNdMsڋHI&L1㌦!h^+-RKۙ,Effzv'H]0˾l1e*d_gk=Dy|SU$YsE8TC/mUpgr{Ӗ`{MvYKrZIJeH>gʍp?lG*egJfE?CI۳(GSz^4*P!ײ;io@6 oJ K™"\$>2,`P5GXɗ{և7Y i:it 0ru!A:eڡj[ٹІ6Fb$R,=|{ZsŝD 7m,aRyL2Mi}nj1܏Ş[G8 +["i(c&Lra0GOrُ|u3mQI)najP.fa\mQԑ]{eT?ptVq+[ 6I+hk b=7>ZS~=meh ^k2[nc}6 bt3l.aTe7#"Gch#?tPH߸{/TCjQ!M+v7ED7sc2X)l)VEn$ruا!1m,_N̻&V-oSItj,'2SaLT`*s,GVU .QSS Q n;"܉ KKj|(ۚ'@܁$lj2THP)Jii+4;c.5{`k6{{® ?]#6鍞]ug'4X#VXiD(O3T&W!VoLQj;n82I$65ڮM*aOXj7aL"P,¼YCLFZ5J{"e^ES< fX̖/HAظ0l;XiKُLi&YJ ̘PeoI:mPsJڞ$.IU+S17yȇGhceZkQYھ*&IlHvw$ J^#38˶VޓS5%48;pd};jz/SݯM9Zmc}L@٣'bV9HP&jkLJ{uW"R+)n:XuM{c4UvzheA~:&6.ISڕMl]1g3j|9.JYA82308g6k%JkQ*no\ ܄ᗅD@fIS#KY-%o8܊4u+IjtfD]f#շ$H BaZr D<}p'[5FiL2.؉Fc1%YPV+]9&P}e9 `xB5RP,eO KIQbl 98s _[8Wݒu~6_XN8=8^ՐHgxLW0^n-J)ƼAPr3p\uD1x֮5G*%q pmri/T8{7s^]a/v}}CrJe5|L@$Ѽz^W{Dy#ˊYk\O#oء2mSZvgiXko5d.v bu.~fVlܘ(m3sFq.1l# oWl?Rt1]wF6d*5T#˛c=ou6F,FNX$ZK3$`eˈjKC dn:ϧe2V9XMVlJ\WBq$,svf ˞j]h#;-udZ0L15WF6Ҫ*s.1> 6Զ~H2@pݴz3<%ЧU%UUX{A۸¢tEVMDS)Plc7+mnhGXN4\(!5E:ڔӖS&c'i7_NY)%lͻ62h7lN --)~#,3iEHf޸/Q>lҼNٳd5sSY^Z?={ |-9# @TZubۮTҐOWf[8U+!$~I\pl7B۴;M)1yc54LJbdmXda%/KU$ +S@#yzl"|a xӛe5SqNFJ]4fe\II(nBrD^yn^)<-/˃z+^_&:5_ <m_'wӷO)jk~|Wyq>dB¥,["jDkVؕԊyP:x$ ψq0*eYn|48^\rql/hD3:v;%.B䙥 4C1/"R3g)JeXj7‚ա1Xr4#(!ln\@tF 4#Y youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/000755 001750 001750 00000000000 12312451003 026077 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/toolWidget/software-min.png000644 001750 001750 00000004713 12312451003 024153 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe< mIDATxڄW[lWwkok;&ΥI6MT  oHx"Ry@R R *񀠢 *4miR'cǗwg;;sfv :>3gy;3 G*~ɷwV ^`[WG<3oT88;}}@Pr# ̽ q/<=ϸa.5iLz;^]s]9g;o`_lի ?#LlY.T U!ʳM^]j8b2@g mlѠ]=(Á *1937 |9p/JZSبVm JsO5?]{ވV\w5LLC]eFg=IfKE&iDӃP'?|:WxiFrTdʚ9jy4k+O9@@w{Sb}1e9~,+TXO0r'ѝ&́.B/xFW{Yky6zG?8<yδR9ڍ\+tfsGj#T:{UˏF1X|BIa1t~d,} }hb-W#X~Y#&(p<}Fe V#h{h=v7Fj`Z#.])5HMʨT@SIIǑ?e;Y3ܯmv Nr YRތ} 98;V K(;Gc*H3HEΫ bdwe=SDNip4A媽= 9 8ʵ Tnދ^pYY\slJ43* dosX͍UWgN[Z^Fbhd[NV̠ح^0X;5@<ْ@. )!2 J*6;]8SGQ?~ZȓsRUP;yjT6 {a {}x'}zQ5a~%ba5/7|0 xRajf`lDmJW cGǖ]5Wc Bf,2* -7TIy~Ui3Z c3U$)X&P"ix+k3ab}e'})ފ3lh$Zg!Jp`a]pMUv3Xΰ tx7)ttݳ1_mɗvT~}nO:Q(M'-fnsgFp܈>O\K44I}ӚͧD˔8%/CKCbF,Q@)Ȃ9v-T;mVETX5j|w?\ k]U'$nG@Cc9P'av$sPWx8v8.oa7]Zs;`X]c8q:p.[[GlzC '+/ׯ]X"sX| mtٕcai+Np91SyW!ƷcfG]M,]V[7V[7HxYjeo/dI/E}@ɀ1N݈CSHH50E?|'n6{Xkeqy L4|IDXR_p=wi;Gvpx!m"ꌊ&=ػ Gg-7S[C4u߯#n51\|2%O쩓"ҥK&*aU4f3`f'GqěNPckCiJN19'*oGsq@JXm0|\0leDC911!F &B\fb4 ʏ{VvbY>#I|}8 KNS)Jh]IXeyO~3o~? {+IENDB`youker-assistant-1.0.1/src/skincenter.cpp000644 001750 001750 00000013714 12312451003 021005 0ustar00saucysaucy000000 000000 #include "skincenter.h" #include "ui_skincenter.h" SkinCenter::SkinCenter(QWidget *parent) : QDialog(parent), ui(new Ui::SkinCenter) { ui->setupUi(this); locale_Lan = this->get_locale_version(); QPixmap pixmap(":/pixmap/image/clothes.png"); ui->iconLabel->setPixmap(pixmap); if(locale_Lan == "zh_CN") { ui->preBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/pre-zh.png)}"); ui->nextBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/next-zh.png)}"); } else { ui->preBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/pre-en.png)}"); ui->nextBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/next-en.png)}"); } QPixmap pixmap1(":/skin/image/0.png"); ui->label1->setPixmap(pixmap1); ui->label2->setPixmap(pixmap1); ui->label3->setPixmap(pixmap1); ui->label4->setPixmap(pixmap1); ui->label5->setPixmap(pixmap1); ui->label6->setPixmap(pixmap1); ui->label7->setPixmap(pixmap1); ui->label8->setPixmap(pixmap1); // ui->descBtn->setStyleSheet("QPushButton {border:0px;color:#1790c9}"); // ui->descBtn->setText(tr("Details"));//详细 // ui->descBtn->setFlat(true); // ui->descBtn->setFocusPolicy(Qt::NoFocus); // this->setCursor(Qt::PointingHandCursor); // skin_icon->setScaledContents(true); // skin_icon->setFixedSize(100, 65); // QVBoxLayout *background_layout = new QVBoxLayout(); // background_layout->addWidget(skin_icon, 0, Qt::AlignCenter); // background_layout->addWidget(skin_title, 0, Qt::AlignCenter); // background_layout->setSpacing(5); // background_layout->setContentsMargins(0, 10, 0, 10); // this->setLayout(background_layout); // this->setWindowOpacity(1.0); // this->setAttribute(Qt::WA_DeleteOnClose); // this->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint); // this->setAttribute(Qt::WA_TranslucentBackground); // this->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog); // this->setAttribute(Qt::WA_TranslucentBackground); // pSettings = mSettings; // skinName = QString(""); // mouse_press = false; // is_change = false; // current_page = 1; // //皮肤 1 皮肤 2 // tip_list<initTitleBar(); // this->initSkinsCenter(); // this->initBottomBar(); // QVBoxLayout *mainLayout = new QVBoxLayout(); // mainLayout->addLayout(titleLayout); // mainLayout->addLayout(centerLayout); // mainLayout->addLayout(bottomLayout); // mainLayout->addStretch(); // mainLayout->setSpacing(0); // mainLayout->setContentsMargins(0, 0, 0, 0); // setLayout(mainLayout); // this->showSkin(QString::number(current_page, 10)); // QDesktopWidget* desktop = QApplication::desktop(); // move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2); // this->resize(620, 445); } SkinCenter::~SkinCenter() { delete ui; } QString SkinCenter::get_locale_version() { QString locale = QLocale::system().name(); return locale; } //void SkinCenter::paintEvent(QPaintEvent *) { // QString skinName = QString(":/skin/image/0"); // QPainter painter(this); // painter.drawPixmap(rect(), QPixmap(skinName)); // QPainter painter2(this); // QLinearGradient linear2(rect().topLeft(), rect().bottomLeft()); // linear2.setColorAt(0, Qt::white); // linear2.setColorAt(0.5, Qt::white); // linear2.setColorAt(1, Qt::white); // painter2.setPen(Qt::white); // painter2.setBrush(linear2); // painter2.drawRect(QRect(0, 30, this->width(), this->height()-30)); // QPainter painter3(this); // painter3.setPen(Qt::gray); // static const QPointF points[4] = {QPointF(0, 30), QPointF(0, this->height()-1), QPointF(this->width()-1, this->height()-1), QPointF(this->width()-1, 30)}; // painter3.drawPolyline(points, 4); //} //void SkinsWidget::resizeEvent(QResizeEvent *event) { // wheel=QImage(event->size(),QImage::Format_ARGB32_Premultiplied); // wheel.fill(palette().background().color()); // update(); //} //bool SkinCenter::eventFilter(QObject *obj, QEvent *event) { // if(obj == close_button) { // if(event->type() == QEvent::Enter){ // close_button->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); // }else if(event->type() == QEvent::Leave){ // close_button->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); // }else if(event->type() == QEvent::MouseButtonPress){ // close_button->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); // }else if(event->type() == QEvent::MouseButtonRelease){ // QMouseEvent *me = (QMouseEvent *)event; // QLabel *lb = (QLabel *)obj; // if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ // this->hide(); // }else{ // close_button->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); // } // } else { // return QObject::eventFilter(obj, event); // } // } // return QObject::eventFilter(obj, event); //} //void SkinCenter::mousePressEvent( QMouseEvent * event ) { // if(event->button() == Qt::LeftButton) { // mouse_press = true; // } // move_point = event->globalPos() - pos(); //} //void SkinCenter::mouseReleaseEvent(QMouseEvent *) { // mouse_press = false; //} //void SkinCenter::mouseMoveEvent(QMouseEvent *event) { // if(mouse_press) { // QPoint move_pos = event->globalPos(); // move(move_pos - move_point); // } //} youker-assistant-1.0.1/qml/img/icons/blue.png000644 001750 001750 00000001322 12312451003 021452 0ustar00saucysaucy000000 000000 PNG  IHDR^T:tEXtSoftwareAdobe ImageReadyqe<tIDATxb4\nC&oZ DkïOlh+ $%9❣75ffjx l Ĩ7MUZ9~*+M, _hdwW-b"9Ԕ8hf?hgirZO.?q9 @]0L+~U,8nC+}8,'IuQVS}ˣnU#W}q<6Lc$O9|{6lԗ 0C 3wlq z !B%E8# O,?˷V2=֯qQ'YsIg kФ(&6Aw]N|@P>fA@̔ Ay,oh`d|&iwh @qϞ=---FIT܌2?~0{n44 ,a0C"dH 2?c6Pd&; ]BB}\P&tXWJ). `_72C`kv<2CP?#Xqu1u ~}3ahMA%Kl]0DG z2Ox;9B"FkmKi[̞c TefTܐsc$H跢`oM@"T,\A9 s;`7Uk]SJT{l epvIENDB`youker-assistant-1.0.1/qml/img/skin/linecolor.png000644 001750 001750 00000002423 12312451003 022345 0ustar00saucysaucy000000 000000 PNG  IHDR<ՊtEXtSoftwareAdobe ImageReadyqe<IDATx CALػC` t?E(]A46@x@x@x@x@x@x@x@x@x@x@x@xf1`5. */ #ifndef MESSAGEDIALOG_H #define MESSAGEDIALOG_H #include namespace Ui { class MessageDialog; } class MessageDialog : public QDialog { Q_OBJECT public: explicit MessageDialog(QWidget *parent = 0); ~MessageDialog(); private: Ui::MessageDialog *ui; QPoint dragPos; protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); bool eventFilter(QObject *obj, QEvent *event); }; #endif // MESSAGEDIALOG_H youker-assistant-1.0.1/qml/func/page/SystemClean.qml000644 001750 001750 00000004522 12312451003 022744 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../cleaner" as Cleaner Item { id: clearmode width: parent.width height: 475 // Image { //背景图片 // id: background // anchors.fill: parent // source: "../../img/skin/bg-middle.png"//bg-middle-tab // } Common.Tabs { id: tabs width: parent.width; height: 435 Common.TabPage { // title:qsTr("Package Cache")//包管理缓存 title:qsTr("Cache Cleanup")//缓存管理 anchors.fill: parent Cleaner.CacheModel {//pengshuang缓存 id: aptitem } } Common.TabPage { title:qsTr("Package Uninstall")//包卸载 anchors.fill: parent Cleaner.PackageModel { id: packagemodel } } Common.TabPage { title:qsTr("Cookies Cleanup")//Cookies清除 anchors.fill: parent Cleaner.CookiesModel {//pengshuang id: cookiesitem } } Common.TabPage { title:qsTr("Browser Cleanup")//浏览器清理 anchors.fill: parent Cleaner.BrowserModel { id: browseritem } } Common.TabPage { title:qsTr("Trace Cleanup")//痕迹清理 anchors.fill: parent Cleaner.TraceModel { id: historyitem } } Common.TabPage{ title:qsTr("Find Large Files ")//查找大文件 anchors.fill: parent Cleaner.FileModel { id: largestitem } } } } youker-assistant-1.0.1/qml/ContentWidget.qml000644 001750 001750 00000012550 12312451003 021424 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "./func/common" as Common import "./func/settings" as SysSettings import "./func/page" as HomeView Item { id:content width: parent.width height: parent.height - 30 //去掉StatusWidget所占用的高度30 property string text: "homepage" Rectangle { id: rectangle1 width: parent.width height: titlebar.height + toolwidget.height color: "transparent" //标题栏 TitleWidget { id: titlebar height: 40 } //功能图标栏 ToolWidget { id: toolwidget height: 64 anchors { top: titlebar.bottom topMargin: 18 } } Item { id:display_content width: parent.width anchors { top: titlebar.bottom topMargin: 59 } height: parent.height - 104 //去掉标题栏 + 功能图标栏 + StatusWidget的高度 property string text: "homepage" Common.PageStack { id: pageStack Component.onCompleted: { pageStack.push(homepage); } Common.Page { id: homepage visible: false HomeView.HomePage {} } Common.Page { id: systemmessage visible: false HomeView.SystemInfo {} } Common.Page { id: clearrubbish visible: false HomeView.SystemClean {} } Common.Page { id: systemset visible: false HomeView.SystemSet {} } Common.Page { id: functioncollection visible: false HomeView.SystemBox {} } //ProcessManager page Common.Page { id: processmanagerpage visible: false HomeView.ProcessManager {} } //WeatherForecast-page Common.Page { id:weatherpage visible: false HomeView.WeatherForecast {} } //systemset-pages Common.Page { id: widgetthemepage visible: false SysSettings.WidgetTheme {} } Common.Page { id: desktopiconsetpage visible: false SysSettings.DesktopIcon {} } Common.Page { id: mousepointerpage visible: false SysSettings.MousePointer {} } Common.Page { id: soundeffectspage visible: false SysSettings.SoundEffects {} } Common.Page { id: bootanimationpage visible: false SysSettings.BootAnimation {} } Common.Page { id: launcherthemepage visible: false SysSettings.LauncherTheme {} } Common.Page { id: windowmanagerpage visible: false SysSettings.WindowManager {} } Common.Page { id: defaultfontpage visible: false SysSettings.DefaultFont {} } Common.Page { id: touchpadsetpage visible: false SysSettings.TouchpadSet {} } Common.Page { id: filemanagerpage visible: false SysSettings.FileManager {} } Common.Page { id: fcitxConfigtoolpage visible: false SysSettings.FcitxConfigtool{} } Common.Page { id: fcitxConfigtoolFontpage visible: false SysSettings.FcitxConfigtoolFont{} } Common.Page { id: fcitxConfigtoolKeypage visible: false SysSettings.FcitxConfigtoolKey{} } } } } } youker-assistant-1.0.1/src/fcitxwarndialog.cpp000644 001750 001750 00000012130 12312451003 022014 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "fcitxwarndialog.h" #include "ui_fcitxwarndialog.h" #include #include #include FcitxWarnDialog::FcitxWarnDialog(QWidget *parent) : QDialog(parent), ui(new Ui::FcitxWarnDialog) { ui->setupUi(this); this->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏 this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); ui->btn_close->installEventFilter(this); ui->btn_min->installEventFilter(this); ui->okButton->installEventFilter(this); ui->closeButton->installEventFilter(this); ui->btn_close->setStyleSheet("border-image:url(:/pixmap/image/closeBtn.png)"); ui->btn_min->setStyleSheet("border-image:url(:/pixmap/image/minBtn.png)"); ui->displaylabel->setText(tr("Are you sure you want to exit the wizard ?"));//您确定退出输入法配置向导? ui->okButton->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); ui->closeButton->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/quit.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/quit-hover.png);}"); QObject::connect(ui->closeButton,SIGNAL(clicked()),this,SLOT(accept())); } FcitxWarnDialog::~FcitxWarnDialog() { delete ui; } bool FcitxWarnDialog::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->btn_min){ if(event->type() == QEvent::Enter){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->showMinimized(); }else{ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->btn_close){ if(event->type() == QEvent::Enter){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->close(); }else{ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->okButton ||obj == ui->closeButton) { if(event->type() == QEvent::MouseButtonPress) { QMouseEvent *me = (QMouseEvent *)event; dragPos = me->globalPos() - frameGeometry().topLeft(); }else if(event->type() == QEvent::MouseButtonRelease) { setWindowOpacity(1); } } return QObject::eventFilter(obj, event); } void FcitxWarnDialog::on_okButton_clicked() { emit fcitxWarntest(); // qDebug()<<"emit fcitxWarn"; accept(); } void FcitxWarnDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void FcitxWarnDialog::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(1);//0.5 } event->accept(); } void FcitxWarnDialog::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } youker-assistant-1.0.1/src/image/feature3.png000644 001750 001750 00000002453 12312451003 021440 0ustar00saucysaucy000000 000000 PNG  IHDRp ntEXtSoftwareAdobe ImageReadyqe<IDATx'x xŇ l٤@"?g1߼@b`eRv heDž`3|{-`0`× ~g5jl\}p6'@FgWYl~Fs7Ïwl  Y~ V .f.a/и; [<8ma >}}r X3Y\p]]7 ~ b 1|QZPe=k[. 1N&_~17BL"* [o`uk!CQ#9;ie~ 30S?Ti8{ĺۯ{(RR0 @(~Ս9o>?qf#)4Q*Y3\[;p2В K^N6 ~GWz5'ÂlTQπ,~ApbzV`XMnC(<_v=\?qk@rHҷ/e}{~K߿XP"7PQT.a6VFWh=&fbhȀ,%c ? X*6fbbn.}뎑M=,%Yi`]81&oUl$`!`(i ~ݽ0$H)U DAC͇gշmaI9!%p~P9{w%\T*cL W<~sm\op1Ie) Î{SɈi`35Yn=4߿f˅xΊ ~f3N^\}{|L<"  Q6a8g@f3}w!| AAg 1g`dĮa۱h 0Cn83 o Nm~"` G*+P`])q^ITs}V{<"+L=#\Vb/><:vgzF-h9|]>{sGn:9s~I$>" ]sfbU !+@mrO@rP܄Av B6mȃ.t=J,vGG+Vw\$XBQ8l#eh i-8rWbb|_}0!<ڙZ F 1^VA fuQ_WW|^ s1a,h.HMTg!>Kb~i]4KPeB# GiAp 4sEdulJL&+`\l;p54mF*8;Nõ `$\"9b؜T]Fpu 효9]>(~FSk ~xM o <-K F"Q%n{xf4ؔ½Ama {{!Mv@;E-˽V6ױ:L7YOw7Vxݕ6U_j$,{XE: ^wWxI I6Dai%&HmEZ\م  Bŕ.ąFvVPE[wHjm y]{c3n  33߈=D6K|w^ +v'dWÎA%oXScDڳu,`1AR>F] !G%<¨>Ă flj {頬WPcgnQG#B8R&N4] x+#D_0HH6iҪ x5iE'Ly k0h <>8uR,ɳNX ^ 03pQ!46eP ؿ8. ޷Y5wSRc&F|AO(b@Z8 pvp;ˍs|a \9sTrpE7ڏbz].hi!덝Mͦ2iK'>Mw #p<\xx>·n&oڼ@u ?p^$s0Y믓e?:z8/a] n$K^-4*3yΘ ӄXE#P!RAZP4?П?FQ]DTKԦ%X*UjtNZ\C?^8ɝ9s>{Zr$ԪlBF:XXyjTI>U2뭠ď1^a6r"߼ZwIL1E֑%++s9WcOdmvC]G[USg+}c/gN.s菮Ob xC@6)*$HxIJ?mA8y*c6=t[ ֈ۬]g`Aqzjֻqiԉ.Kӌl]b#l&xJ;Mf3 6z&m{9 a`2W.6:jZ b:T7 (Ny=7QNQ|-;?ϩ<')m<oa hd#ӵ$wMja\&G- xLB "Fm 7+PfTΦp.76]ku3=V-[Uh [~.<@muI%SOe1iQ+j8-A3i3>zM0Ntd6W@zMPfS#U|J~3Q]\α 2<>w3Ev U?Z˿gMu5x_ `!Bk]+5}~1:h袲H"Kfs]b*U!|Enwmˆ62qE(c%zz #9foO"sXwQ~:U2(ڨ Sى8*Tg {q)uM_:Se.bnO'ba re̕ک;,@KG7>cѳWy>x6@+ sҠRI~& HDrMSDaNXN{8}(Τq*0zvX9 :{,ݽrk2 kH*GcՅ76egvkL%G4Qg0 Zd(q}+3ٶ0.U5-m=v}!v[-! iټ/ԤĽ˽5եZAF>=71Al 9^ Y0R[ڍtlkǵ0슿[ \t z'g~cVT"]3K'LyҮy>t#* '%']Wl"FGN_Al"d:>1dgK2a6 i(C:HXE,sl<~O$9y39גB0QuG^ϡ4_@\=Yj9_n 2k5୷9G`#~K&7Djԥ }0G,źB߼ڸKKD_YԻ/X/~OD6uTj5}*^]ҞzwPxlu57<_S*oݦoQL8wFʮ]sl;Ǘh҃:FO} 3̌yih$b(97 Z?Nes=gui"4Ɉ\nFMF8{da9-=sO$v3pmlzaE8EIG}ل"кNU ^5m1hokE1{Hk i$Hvkh+VGu{vv>bǹIV mBPJ)U*P^r$&\ !h9r@؉c|{wvfqThڕy;Kb}؈F-O|ܐe5D+q |rܖ FWSΰl_sFyfsiVG'e?{b/x%?u?2Ku߲QtXJ*ahtHrD8l;7͙CD"o(U=‰<ោ=ry>hxp~,vĕ0Ui6'͇槝$YWV'#0d1;!@,F<ʭ;~9r+.(G,܆lZE|U*d vsh"2"e g󼍋ؚ1ʛ \$F4+08%QD8YǛj5T٘nϴ2⨂@5n?\'ވksN@*Kk] 9Ґg1nb6QdCHGG3S(AwTGGllnԄG7"uMQ@bεPyXzp.?zw2>ޚmܾoh^|ʡrd#j,5XP"x>㯯wB*2ԭ] 'N.EmMה V&b$c>@w֗jm"1TxrΝ)b'T?oHwQb>M('λy6>K/㈅shVz(<\$=gר‚Y&^QSgЯTchÊR{t{(mn a۶%.MZ 1&;jr*pZlDy[)%"O*HFX~kVEYSTI,mNWEERw[$bQ ]C\% sSnhQc7=} v(m5>YqT+S)}LLN.@4җAssZ6kWQ* 뜀Wy᳑C8 w)xk){b yb2y 7bW3x/wg ;幑Y\7ZbLeNlhh+V߆֮H'K*Ζ Ee#EplIwP.(KP [8i dKJ;*Os2mK")ҤXB_PnT=`{Mbhm( J5rReÎ(LA;uQj? O'NRIcQJ'n022)It;gT!q'`O^nV<ֲ"U.I^4L۔}AKi 4Btt 1 뵵^l>c{)ߎAb|YY*wB6!O|X-{K.(3+B.EhZKPGc|wTG@%wʺ1^'~Fyŗex7cQCq7^=|mOLZL\PJ0[ Qi!(wBX&'GLI,Z܅|&*ͫ!QQiqQ}Hܓ0Y ,y&|V, p,'Ŷ s 37̄ c0:X*_n" O+|p4ʉS4P?py]xG&J!ιdn +;eG "H5;>),:%v9gY3&'>\g/F*UM^ᕾ>rO?m)*\&}5W`tdW_{}=4n_y&:zNlk m]pgq/n~YCw.AĭJ0OPZ6h-8qdi*rӖAU-Iow]66@fZr%:IZMmH*T4C]Н" ;-J.NwEzдPGi3>#wRRQ3nDVy[~dXhD+G!ИPQ l#m[ʭyi˹TpjXB-Rبn7kغ4ZcQ ", @222-rWp(7LV1>".ZcFx O_UhE6Ϙq"%Ҟ5w+D?>[-nm-Jp!Hڀi~ : #ql~EI,|^z%:\oᦛ~HГ+YAb3'{a2̹ `kt.Sرet^㳛}+|}}L$@iKMLclE=Ůz$ ҉nLr^~ `Ӌ$j=ת~1i*p];D|AfőM*́24v+?j}+jTXuVg=6mAkkD5ܳv ^\}7οQ7KƚqG\Myƥ>,ɢsA#Nj*mP*O0p>S0 v~+ /j*ܼe +r|1hh{ځDtp&'f{8`~uh 2TTXXV6Lw9ws>Com6ECTŧO)jU;~bbcC8o .o/\&ʋ!5@3܋ Kܺz-^;p[s~TVi1E޴UYH8JJp=Vp4OL`bhpOd'ixB HٿHtj0cql]V=P[_FHK:κ-LަM[hQg*.x\! dCTxU jKZ* M4i$޽d&Ks&3r߽wMؗ班PpgF+O:*w쁳e%)Is^B IUWkkj5.lcJlj*z*4}Zmu3 aNU<\Ucp{AHSYr{7µ\@53(iR($T.<].W he1ua12pރL f1^}w1IoH~ZB^=!jLapE4Akds蹵GT38p)6ipvӧ%>zrd~K|&ӤͬB#fG`%AZ$ibet-00h *I #0*jݫ\J/:A0wXFoΤal I"6 spF"-&ǘiJ" K,Fμra~ t  RAn/A'. s IJ授rLZɈA_}2=wn)M 7D799Ĩ%yo$ƽ6롅ڐ!b )R[Cs;WR4i `FG2WvLdM`wİ"6X]Y3NXgWd_~lZЛBs!\j9*kfG ]3l* ⣶$!$!UB 9E+U/ N T)M+\a K-MxMVtQiKFSI=ܙbbTX\- tq\V$.)>w2EW*!3:!3mpBlZE) җ%Q'-[wǤ}6AC IANJŧ?8^ހ4K[z; 8)PlP>G4UL[h.vۚ׏d}B]%5r;V*#E0ч/)lIt\^mI߶͓HII JHBA#67vէQD{tjȳka3)2h*5*%T%wY-7₻i3qT%-mF)pt[`I ,UDU6ě4t!FR3 c/*[a>mtr*_9s9^80]}}/C%s0NYo<"Kps7dرf{<ݰ W*\ ,*AvCRBt "=כ B`ϔ!#+ +o3;<#+9nnb k̨P'ӯ /-䐟lTUD& ef`/s $齙GVJLõfO4Nc(T> sq;q1s$w-M7oy9f}4(hɠ{gpcbifKMYa;h`v/(-_˒>.N~rҠ<36dJɨH<ƅr-MPC>cz{P^.bg4<wjKȢɰXEݓL}pi^ߝ62Q20R2_Z,Q4*dUV a;Pti+V}t9L6RQ)-c;jS\uSg|\Und5^Q NMʕ9jq/ hR4a ][^'=G_yH{q2av=nد ¬uF u3& ~1Fy#Eb!'L%5 HD̥*a:2F# ->?Nؐs:묱 NkJ! <+ P3@quuH];bJqYl vi&/-x # 4gqMh]W^l\D`(7I{OefQd1Ihr'%KNB%U!@{Z)=}ƠE$BH#)ҍd֔hB043'ܹl&ep5b(|yV 38:K9h}5ŧ C_l٫kҩ$QKo 9x~BLքiH$O!PuII9zzzFﰗqilT,nL IJ&S=zߣ[=5e&bg@8mKWX&XMŹ0zy=or5NZYeIԔ0 9Rdzn<8 *4E2u<bI>Ћ$r܉ "+5ИWKpu(~E:aӴszxv,E(V>Gric`Ώ>4Inɗ{kEڲ{i9EA>2.xeV ˙DQ^A$Q8|:MlADCmK?a7.YGx x\1ՄӕLHl[Qsl5]3 >^eO~{nS<]ӟv`L2tDyijj,^XXCS 2f,\+~ :>u/"Dqѳ5XfT-6TH]]iMVtX'Ş}9R wT a3]pSU\WMs iˇt'#< 0&'~5[ }r v~? liiCYٸܓ0?OGyuڷpx(+%|}NNnCE"16{+ACbZ9rȜbK u8sV5Nbpۯ/%W݄ ^Ig}A\߆[z]D'f#7&J{y +Jaƍ/QM. 7]0npee5Aw"$kΑvO-lJvqx8EN!(,Y#VN3Kݯ"|Աx;Ѻe~xRë 0V!Lc'p9˪=O\̞-hO&l3?ŸPS׀K!"1>M[H/L:2<l~=0‡r[;[ to}QZANb meݼS{B1it,Z@㻞?j\x^A;hzF`}--w_>;~ቑI),g_޵{&"y}!:⇺нĞ^K A);c[JBT4. >8dy@s,\tRhƁ_kkK";+[Esm {~ 7+nϱqrƄP4mՊH $]-X7b'?]|R@G" 0qdRqd>ZQpµ1e]'}p d~9&_ހqsWdfb:XB8q*XׯࢵuNgxIσ͵]SCL"E4O*9,eR=NJnr?tWyg|0!6?л9"?OsT#*}^Ί,^qxGZ^2WCc$ItvuIl1vɬ?=`;p͊_Ld\x}^ۿz}n %ڼ%o%]5]5,f,{8c͗9e\i nOh1~5 ;Zry7>|4+|$Ļ`Ba~o"Ҹg3ye)ktX Ϭ<4]US 39*F s]~U2bII"~xiikC!O;o8vl@V gɹ-3R  W΀)WȂu?UOSK?Oҍ^ vtWף4Z&/Ixl[3?ghtӼJk[tމ@О0Z;]F*EO]uThًWpq&^27 ЖDeB޼o=𰋏}Ru6<2mTIg۪و[* 7&h7n*qˇ9EHk&G+lnStPES>hٕr?6FF 2i[RDX>d,zE%c׹'X]46]m.*[j|_l՚TJ_hƢ^۝gҌgk._LUwt?cgQ%zTȥs[,ZsNpe\YrX<g7.)ɀϫIL2QQ mo.6Gg ~ie`3ع6uUL brڣ)^g|u#p#pR ,r4VS!z.g#vtue,KoZl ~NӀI继a cDXTk?skk7RwtI\H+*t5>H#s κ15wјU(BM5u[MAd٘9ls=͘JtڠݜRs hx9rKم_FSS;_wKDSY%!VC7P!]c3}f37ZlUԳ̜H}bbt"  R#'xd6t@#^]bG2Zw 7%-t*=4vdϸRoPY,܁PƖQ#-B*7dyՖM@.FWWO3l{ P}_NOӆZLNC Nl){.Z :n <49;OYkeE[^0ǽb-q Uoȭ>⑮ZGlIV]TDB.U S*vZLZ!L6$V:P܉/#KGS]4[ݛiiyZ0fkZ4 YyE3AA15rs\B=kԝ_*E؈=mQmZ^I z Vye fad'LRfABVè+8?=ޚ4dȒ@W+Ӥ7+u:]48SJ{ a kɠ&@}O}W03VE*@#1Ϋl^d54#;):;`dߧ&e) zM(e(Wy_P+an>/U}dhƇ5zX|DVoAuJCKu 2ooӆogD{#!_H6do}v/zo&8#̀7-{ JeV8+SsR׫,Y(\\$UiF=pKH5scKd64 ^/7uJZtU'BJth6{aNPHC.M-}JgSl xhhmnH:oRĿKb[/T;ٗ0/jN.eX;]g4fUHkdil5Q]EZhz A EW}l]ZiV$v":,M(k2jd&GZ.]uP']MIMWp &pF ^'cf|Wz6omcҩj>hQ1RmM2IK᫬J-r)OLa}>* 9Iui0fM,*)Fq0D1=m },hMQPޒɌj'K~v!mJ.KLWrj6p[qӗeiK%n12Wx hGXk˸^rt#Iuiz ی Pqƒ\GvUԕq&a6.SOVu"# #& /}5NnF gK!rd?$d#F#R4KJ+޴IҵF a& [IHYU_βrb>f<~)ÙpɥxcB1LGJqu^284I> #162BfaN;}$3*-XF,XZ3ChHxt.m  P$c 'D 4FAA /RDhƔ 0xl̰o&+Ih:;ɽIml9ɬGEȆAR:C_5  ]=N3]gr3 T֣m&mXUo&@+Iꏖ'Aȱ4Fq,yM'20?`9=3wc:o~[mckq_Z fLRdCCՂ-ah,x 4=gR/ I g at aU_Ms,4{5&PHdBr@bπm< 3ɔE(x*Ndv:w\\1r~@?E# x7=I"q@~`x4m,$_~(M=N[7ojk6}eXbq,[ #`Ѕ3^HIpuڏ1ոdj).Yo\ mACE 2gL-f|59UC*6(sIҜT;뺄YVHG>*)12Wh 葭+?MlCE$nZu\O\Fȗ *]Y!:qg! a*k֊U"Ii)oŠ*\"mpF{LTWvNk3?1]PR\PET92" `Up)JhDά#[0> *7U˩**ဇ%aR z8wxMƢ=S+҉h׀)4N"aD{=%AƩ i  [! vz7o_]!2t1ˆ Ⱦ!8mDu~J3514CX 3˖@`ߖ x17p=Yܥd1pdqtU`*ʕS-LY [!X^'^imΎƲ\~*.v:ХS&9qOi\/rK-Pq@CVHQt,.hc7)&ngl47Q,b|HIZ?$I-y1.2B&UëT#ɡ%G^z^WI|< x%#ů{F|,7`̙o+(?P47T`:%5'?mز 㲭Yrp۫h T[]4 z0\#(К`3+o:c1Z RB&,F6Fs;K6j]҆H;L#I 5mX7loF@¹^/cvݭ;GWR#{= Ŧ `0_}e!gE4%iӔ.!G]񊒐#QBY* B8l6n\4$,QY#*{3>tƴBJڨ"5^Wf1U̙x°?>\ΘӘD&=76y>G[9 )-rR1XYρ("19r*̀xk_\+g͚5ພmA/%暛FZ ,O8N9Aisg͗( G2dV5tݧQ_P"N@ ӣ@T;x``T5r~%l5?\.笝!tsC'CDlCL'ѓ (b!k/BuUro.9$!ҶM7"P\5<9pGk7^iI" e1Nu4ٶ6mGdRYۍdgE*[AhL3T.nCZ{|A%Ɩv6@6'U^2~:_"v|m!?ar=G(\BhyGކKϙDuc/.+,xx(\\ie=娨B9.{ԏ=dmQh)0f07{Domb?>|5FmU)>~5kOq ^zEڋic40ϊ ] (夾 =N!>:tN  -=\Dv\lJGmcvE{I .%WLs`eimmad8~)8iw!ĉTF&Lƴ]$FSfk#NBI@pG{M̘cɲF de8_2%EkB6z}'Fh(?񺑨Sx~yiVP+K0XV_jf̧ |q U͐ZZs2?fƭ$Y󣬦Ԟhťdyf2[ChWBU\p&[ qk1E AUy vP/FiЯRwth@:A=Hph-fŲp '$Td2ǨzuXp=7?dz 9bOסp&.x8tE")\x xj\8gs1n>m@iˆwF+!q} n!<[#fħm-AwJezًUY.#X|ցKsd]s{';LW>Fukpҩe_{>cԍI$M!ՌxmI%nFYjh|r{҂Bb_E]s! z'׺#bp':gׄ]/xijj/h{̓tdT$ ~W+eߘYu \5HN HK Q2 TQ'D<UTflpJ-6|pL*Sg^3Flwε I$Aè?iO;&#t<?y_46G$vCʻ(YIږ~&L&GpʑaæBI׊9*`ێ=o3ZaB!yo]_NٴKr fOD Xp0~1zjRZ :; 9nDyyՏ4IȈD.P&]4-&+-nMMM%<^\AU tp".=(:;+%ߛ\VrJ^QUb&w蝷 ތ_ yoq1xq9§o?'.1E”d 3$ cGНRBfFJEe+Zq};> V Us* #[}p>F3z e҇SP4-N_ }u%U4R5_Bpd>Jϭ)418/!rbK^xgkǢ=Gf0Ӊiߝ G<w+1,=Wݷ^7_{E2ch38lr=x7q؏=>^9 Y\y4/s/©ހ+S?lGBxzr5O\g9-\B-kgVparxAk,tAZ\̶㵥`pѷO['9(i%$J +TU&%_Iih/YɎX=m8[|\=g|]ze6&1u\> V[ܑmmj1\^">x}&e g>O/Yk;tZzȀZ*OlAV+R|\åIVh4/nGCfa2ʝ `;RXsLZoQ MmmlA$H-@)M> ϛAO8*mԐKotPЀdgP=!nW[[vt$5rj:$F$ދP).tXU#/ŚkZ ~{g,?GnJ,wYˈxGnj5fZќ8+noGbŰ 2<6K,o2 +q-86ZZ۱5#X^d:d @ m>ȃt;]8|c8F>k(r2L2ѣϏJ4.yb Wv B&';m#ͬ zGh7ƭ] fS`Sy4\A;Ì4tf{GuAҶvʕ$=2mAB\BҎQT #X Mx#w/Z[I?#Ñ9'g1Uܔh*JFYFɯfBHEzj?" SpɴˁBwptT^UD2x|ݽ0bS`pB4wAnYBol'̔bmlJ#Hp(ơU-jٰ[?AB}CkǨOn ߅ɬsBsn@i m766EC GMS1ƣ ò^z&]ܡlWxH:+TV$ܕ+H<7nmjªkKW\V.0 'fX 鰼soY}owpןߖsY !K?1v[R+ ݢq/} H3Px𤋮Th;\_5sBx*jPBvr˻,u)f9eEp>r %W,Fϑx2RO]GW _UH¥+vV V(?f,)V|x|E#L[}bk_ů_bΕ:?Ư\~~:k6e^q>Yފ<NK1 f6sy8jL9Dgx/qމa.Cc!^$׿>jw憫/̺:虘i[ƹtD;B&TU' qY3)N:P:?G'S;gs#h@h#h{ݝ!ktLT`??a\bZ"8ήc>L#oI vL @Dь~ ]i?ӂW_|4ͻi8|0DּH-pr:>t. ޒHoE#p'6zڦ|?'+AuPmUXYNEI 8i+!gmyp'2r '(xD {UL69K[#f,ŖFG21k}) |t磅.^ݭ z 1 cj]&MW^Y1cFKWJU7flm+/Qa@>o Eo!Y$E}]{)(Ik(Xh8rfM`'GY($uѸn)q4BצG{\!BnKJ`mתѴݤ˜$0+ czSLOP $H]sp.c_{݉( ^ˈr`Q9g= W1ԑ9o.|Xr&'҉d:,@i#mىntG}> u}bXEGB2x,ttDŽ3 L%-˟UW>/'㶇6ٷb 72e[;C<>b,9ck~֎+kSAYux۫ NmXw /ͅGUo(Y;R@QZVL,DƖR& adin} @;D ٠?zfmwK AV{}m}bjHbcG@X\o<^~ȬTeey]m0ᬋ.Fø B<%~wFҴ`7`}#+JuQkwuO~ȪpA;PZQb,ެR<\6z,K~L 5bnkBu-ؑXbS1v?NV8x(1+Z>eU⚏Yin8]G5nsIr[SiW/iÓq#1 ܱ/.Du?c2%Cg,~%Gs~]-Wg f-y s;u%s+%yo#7H IENDB`youker-assistant-1.0.1/qml/img/000755 001750 001750 00000000000 12312451003 016704 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qtsingleapplication/000755 001750 001750 00000000000 12312451003 021411 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/func/common/PageStack.qml000644 001750 001750 00000031701 12312451003 022732 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ** the names of its contributors may be used to endorse or promote ** products derived from this software without specific prior written ** permission. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** $QT_END_LICENSE$ ** ****************************************************************************/ // The PageStack item defines a container for pages and a stack-based // navigation model. Pages can be defined as QML items or components. //add by kobe //the site is:https://github.com/M4rtinK/modrana/tree/master/modules/gui_modules/gui_qml/ic/qtc import QtQuick 1.1 import "PageStack.js" as Engine import "PageStatus.js" as PageStatus import "PageOrientation.js" as PageOrientation Item { id: root width: parent ? parent.width : 0 height: parent ? parent.height : 0 // Page stack depth. property int depth: Engine.getDepth() // The currently active page. property Item currentPage: null // The application tool bar. //property ToolBar toolBar // Indicates whether there is an ongoing page transition. property bool busy: __ongoingTransitionCount > 0 // The number of ongoing transitions. property int __ongoingTransitionCount: 0 // Pushes a page on the stack. // The page can be defined as a component, item or string. // If an item is used then the page will get re-parented. // If a string is used then it is interpreted as a url that is used to load a page component. // // The page can also be given as an array of pages. In this case all those pages will be pushed // onto the stack. The items in the stack can be components, items or strings just like for single // pages. Additionally an object can be used, which specifies a page and an optional properties // property. This can be used to push multiple pages while still giving each of them properties. // When an array is used the transition animation will only be to the last page. // // The properties argument is optional and allows defining a map of properties to set on the page. // If the immediate argument is true then no transition animation is performed. // Returns the page instance. function push(page, properties, immediate) { return Engine.push(page, properties, false, immediate); } // Pops a page off the stack. // If page is specified then the stack is unwound to that page; null to unwind the to first page. // If the immediate argument is true then no transition animation is performed. // Returns the page instance that was popped off the stack. function pop(page, immediate) { return Engine.pop(page, immediate); } // Replaces a page on the stack. // See push() for details. function replace(page, properties, immediate) { return Engine.push(page, properties, true, immediate); } // Clears the page stack. function clear() { return Engine.clear(); } // Iterates through all pages (top to bottom) and invokes the specified function. // If the specified function returns true the search stops and the find function // returns the page that the iteration stopped at. If the search doesn't result // in any page being found then null is returned. function find(func) { return Engine.find(func); } // Called when the page stack visibility changes. onVisibleChanged: { if (currentPage) { __setPageStatus(currentPage, visible ? PageStatus.Active : PageStatus.Inactive); if (visible) { currentPage.visible = currentPage.parent.visible = true; } } } // Sets the page status. function __setPageStatus(page, status) { if (page.status !== undefined) { if (status == PageStatus.Active && page.status == PageStatus.Inactive) { page.status = PageStatus.Activating; } else if (status == PageStatus.Inactive && page.status == PageStatus.Active) { page.status = PageStatus.Deactivating; } page.status = status; } } // Component for page containers. Component { id: containerComponent Item { id: container width: parent ? parent.width : 0 height: parent ? parent.height : 0 // The states correspond to the different possible positions of the container. state: "hidden" // The page held by this container. property Item page: null // The owner of the page. property Item owner: null // Duration of transition animation (in ms) property int transitionDuration: 500 // Flag that indicates the container should be cleaned up after the transition has ended. property bool cleanupAfterTransition: false // Performs a push enter transition. function pushEnter(replace, immediate) { if (!immediate) { state = replace ? "front" : "right"; } state = ""; page.visible = true; if (root.visible && immediate) { __setPageStatus(page, PageStatus.Active); } } // Performs a push exit transition. function pushExit(replace, immediate) { state = immediate ? "hidden" : (replace ? "back" : "left"); if (root.visible && immediate) { __setPageStatus(page, PageStatus.Inactive); } if (replace) { if (immediate) { cleanup(); } else { cleanupAfterTransition = true; } } } // Performs a pop enter transition. function popEnter(immediate) { if (!immediate) { state = "left"; } state = ""; page.visible = true; if (root.visible && immediate) { __setPageStatus(page, PageStatus.Active); } } // Performs a pop exit transition. function popExit(immediate) { state = immediate ? "hidden" : "right"; if (root.visible && immediate) { __setPageStatus(page, PageStatus.Inactive); } if (immediate) { cleanup(); } else { cleanupAfterTransition = true; } } // Called when a transition has started. function transitionStarted() { __ongoingTransitionCount++; if (root.visible) { __setPageStatus(page, (state == "") ? PageStatus.Activating : PageStatus.Deactivating); } } // Called when a transition has ended. function transitionEnded() { if (state != "") { state = "hidden"; } if (root.visible) { __setPageStatus(page, (state == "") ? PageStatus.Active : PageStatus.Inactive); } __ongoingTransitionCount--; if (cleanupAfterTransition) { cleanup(); } } states: [ // Explicit properties for default state. State { name: "" PropertyChanges { target: container; visible: true } }, // Start state for pop entry, end state for push exit. State { name: "left" PropertyChanges { target: container; x: -width } }, // Start state for push entry, end state for pop exit. State { name: "right" PropertyChanges { target: container; x: width } }, // Start state for replace entry. State { name: "front" PropertyChanges { target: container; scale: 1.5; opacity: 0.0 } }, // End state for replace exit. State { name: "back" PropertyChanges { target: container; scale: 0.5; opacity: 0.0 } }, // Inactive state. State { name: "hidden" PropertyChanges { target: container; visible: false } } ] transitions: [ // Pop entry and push exit transition. Transition { from: ""; to: "left"; reversible: true SequentialAnimation { ScriptAction { script: if (state == "left") { transitionStarted(); } else { transitionEnded(); } } PropertyAnimation { properties: "x"; easing.type: Easing.InOutExpo; duration: transitionDuration } ScriptAction { script: if (state == "left") { transitionEnded(); } else { transitionStarted(); } } } }, // Push entry and pop exit transition. Transition { from: ""; to: "right"; reversible: true SequentialAnimation { ScriptAction { script: if (state == "right") { transitionStarted(); } else { transitionEnded(); } } //kobe:换页时的效果 PropertyAnimation { properties: "x"; easing.type: Easing.InOutExpo; duration: transitionDuration } ScriptAction { script: if (state == "right") { transitionEnded(); } else { transitionStarted(); } } } }, // Replace entry transition. Transition { from: "front"; to: ""; SequentialAnimation { ScriptAction { script: transitionStarted(); } PropertyAnimation { properties: "scale,opacity"; easing.type: Easing.InOutExpo; duration: transitionDuration } ScriptAction { script: transitionEnded(); } } }, // Replace exit transition. Transition { from: ""; to: "back"; SequentialAnimation { ScriptAction { script: transitionStarted(); } PropertyAnimation { properties: "scale,opacity"; easing.type: Easing.InOutExpo; duration: transitionDuration } ScriptAction { script: transitionEnded(); } } } ] // Cleans up the container and then destroys it. function cleanup() { if (page.status == PageStatus.Active) { __setPageStatus(page, PageStatus.Inactive); } if (owner != container) { // container is not the owner of the page - re-parent back to original owner page.visible = false; page.parent = owner; } container.destroy(); } } } } youker-assistant-1.0.1/src/qcomboboxqmladapter.h000644 001750 001750 00000004411 12312451003 022343 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #ifndef QCOMBOBOXQMLADAPTER_H #define QCOMBOBOXQMLADAPTER_H #include #include #include #include //#include "entrylistmodel.h" class CustomComboBox : public QComboBox { Q_OBJECT public: explicit CustomComboBox(QWidget *parent = 0) : QComboBox(parent){} protected: void focusInEvent(QFocusEvent *event){ QComboBox::focusInEvent(event); emit focusIn(); } void focusOutEvent(QFocusEvent *event){ QComboBox::focusOutEvent(event); emit focusOut(); } signals: void focusIn(); void focusOut(); }; class QComboBoxQmlAdapter : public QGraphicsProxyWidget { Q_OBJECT Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged) public: explicit QComboBoxQmlAdapter(QGraphicsItem *parent = 0); ~QComboBoxQmlAdapter(); void setText(const QString text) { m_comboBox->setEditText(text); } QString text() { return m_comboBox->currentText(); } Q_INVOKABLE void setItems(const QStringList &items); signals: void focusIn(); void focusOut(); void textChanged(QString text); private: CustomComboBox *m_comboBox; }; #endif // QCOMBOBOXQMLADAPTER_H youker-assistant-1.0.1/qml/img/skin/v_classic.png000644 001750 001750 00000034604 12312451003 022333 0ustar00saucysaucy000000 000000 PNG  IHDR6qRtEXtSoftwareAdobe ImageReadyqe<9&IDATxbt`@7m?X|cgzB4qfo2*\.bk kG+bsϿ0u012^d0IWpPE(OBy7"d>dP b$vO ?@P`v]!ܗ;0H$}&ao. ("JN=/s~`wP7B&k,q 0e2Y$ T?^vG@N~7 7>9UyvfF Ȑ"7$[Ϯ8/I>}V5@,x _yӂc!܆MO/(8?022^{J y߁DΦ2\{u;dQЈ]yPy \41Z0(>{=>W wxAP3l9C áG "<,?4l@A\%Oj^[=(UJ?s29(XP?!.&4?OYQxi[!lD<;u׃7h; q%oڸGA\ 6``7Q&:Bfz!rנpw3SdSaY{W ?`ЕO9g;`^dSe2f ?`ee)4Ï?0[38Jk(aȂdl lR kb_K(YA xys65;5dD:ɗ!l)+!܎mЖDŽX3ǿ@iKFz  O/? azwѯ⾓B@lc@d\W>/7 *8OQ׹).=+{Zujf+NHii='(\v!]3?7Z m5r+5=u' tlg5=翀՜k@1`in~B#WAyPLC2{̜_v ti ]uk҂r4AP+1{_~t/{`^Ѧ߀A/0ea&vFV?\^d-}{HEg01f`nrZ k4N?7 #{]Q ႜ>=Z:h$[7+ (8,d+6g~V V./aaþ ?ā!>J\_w^ux0Q$ϙw_)Ƙm)70EXU߂Kfoerzne62كnh΃LtF(2Np-9! D6bx1<\N¹ū=x9l`/!FzV=g:#*_P?[NѺA~/9wkFج:]׾_y m.NE6)Rj=(7 %rmr20Kyql&lr^a9l+ni濰_kX'=ܱ_j;~KmE1?ZQ^7QmmZLmPFT*"e"R 2S@~*EH)^K[J"m)"4M&4fswd oܹٽ{=ߞssb#[,_NM~O`k%*"=l;aГQ[ )dӚ}Fyqꌥ9KfZN.M_QJ';9<3oZ+:ϘT@{.[R 0̯;6bpn?:L02R( xfD`l;D{[Dy5p_w'ZF;XiQg6N_jjͬ{ EE-ZǴ1ܥ_0sH\sN6WʛKCOo+ ta/Ɨ 묏`%2$ #BRN)Q8jSs_!(Ðxr` PĂUY }N}`4Q)[OE(}Ќy墸GFEPoPGXAA;͸6'\J!( (A_Uhr3Fe ? &OkxEi*{oL.0~oU3($Å:G֗ -4[26YsnT|S8R&nOj݅(XA]+kojCz}.ˮ%G욤r{N[b3mFgڠsn fs fom{nt.m^x.]4&y[s {8W]|a$x}?-AӸ h/FTݎ$J, {M;z(vߣ*4qD)ד,Na\3 ` Ժ6JY#xQeMW.l5[^Ѣ֒3;7VZ_ٙf}qd$;G.^?e&,*3ly9@ @pmU߬wo}wce7hJaaq?*Rٓ6\!j38kP`5 =2t[Mmjl{hPNT4K QE} )`p -.UT'3rfyc܃eUEO]x;5lr#,mŧ #E˧?&h 0Ԟݮ9V  ;' JbfG#xq@J:‰ϯL!I1 %@'BU!I1лOAm!l$![W';˺]?6)^OcKĸ-js}1Lyl7QYDӣ?GY˄'AɃhB$Ġhv zX;G+ˑպcESIh^fH-xk@1,t^ݡ0&zWsV {*PN[x{UQyCS@:VCꯊo)=] T x4՗OɆE> oͰIX?0&LXL~9œBG+,W  ɅL3jH+g\RPv[sN`}ؽPwuLpH.sE"Do$"H|GY?}ZDg01[h0ϥ4|֤LbB'n|0#Hb2!iL:&nr#$ȼzy#Ov~ѡ.~˼9۴iGzfO6#0yO݀z_J+Gw}{˷M?e&OQ<9b[ &-#vwn C}gĝfZ2|K'j,/k35aj《ھپ,,݊XH@cAMbǏ&F11&_~%Ʈ(.*hTEAeaa{ 'gΜ7of޻{mlV\۶eXMZj gF }nFJy\KգMV1&꾂֧=g ffek+t7gIdI^mj*V,#R-SڍDzSUt,B`E -"Xtejj,mtck^,9YUS5Ҵ p` JLyضrb½HvĶ2@(KғȞAo$ !s!XD L< [g@dQ2e<@tv*4Z^ڞnY0"E5`BbbXAѢ4}=sAd3\f}OG#ZoJS'w}:o eb q6: N|2~` :9*CW8-r? (,\tj>zGYQO &SWR-/-+V(mwĭǏu֠շ 7_Gf[74=`X}eo7:d1ʭCS-S8&_xJy-ĀApImŊ?(JHSnӆ[ ѧd{]J9?(D7?0UA'L ((jtzB8;a P8=eb9,R1W|?@Al89dQGM> k3$ku~\60zꗸj[*T()9O_aT*6 IcHQ h~;y^ Rc=ng(,%]8Z=d%RJ(\AIe#'ˏUg?3p8뛈y?̭'eiX"EIVFA4Le\v6˕TYؿ}?]/O;~QlW+|Rry+/f,؞?+8/dq;。ķ܈JD9GK { VEU}FETtd~o8ul_[iWZX*{ l": < z7%k#pQ@ׄ4q;2:vkեk@e}<),PZ0>vOta:"Dȝ.< lJ skL'E;M b0/oc#xZ4nJֲňCw¿C C^qVL1(,qFL<2=wq ,gě Q#zz}̍(iu4i̪XЋPupZs^.nf Lle3\V +#Dm-pnx}9ѓS _E1~˦P/ 'ÍCR)rwϥ+4Ӏ:ᢍC{3 f`tuWf<(!XQ,j )?^둂<ǒߺ_0:1$owmaK#YX R1n?u㦱=/[_V?,;nWy11 1'x**@QA76B6 B3! "dٗ +) |4Z㧢j鄽ոڢ,R( K=Zʤg*H 7J1y*'Τg2C~[Ŏkb*^]-!뵡W:'<"l|Qq5{ 5"3@BgX(_~2=AG1_Ϫ@[$&2(j).qlޔD2擄I*d8dTP+b:ӕHzk* dZVw`Q]i̝ (Ũb {ODce)M5kL5h{HLg{ mYwW7={{`_鶭:SGbYd`$=Ϩ>#:yDN/-4Y#ӥ{kǟbW$j(ɺ"e#WrͧMSFRi Xgz9r>,#_`8,eyV/Qǣ.?J)~7IVתW+y+}:۴Fң u/M6Bj&|/lS# |gKL`zcųc9V?1s9L*SF#[TGX Ruץsb^ʝxZLVjx< ~=@+83sd^ѡ[/V컡c3l|owNDbJ蓾ɪ\km69ݙq)y֎G<@v,5aHjJHz!Q6UNWZ쾦o!#Vˈ+ ҙ*{Vk>aBòsP nQƅSMMm^Z>T7xQHm8 fFs])9*tR0$gckfb4{xGq@ /A2d;"Ps(GNm&En^喣SqL(chiU~VSXLҾ\_H!}vxUԧŃ:gĈ٬j@߷-Dc |4#ErImK։^\fC)HO\o`z{\GyRɾ2V,mWMLkM@UE;PnԀ^#uf *EE^a2vd;Jp5jMC_@61}c{ Q7{/ܞWs͗sM}Z:A jo[ ^pn]ONd!A.䘏g׍V?Ҍ<Ry*m, ڣ)d'L5$es~Q `/}E¬i;<Ғohȱ'qڜ,8}9}5_' =unJD2tu y䯎DY%;mxW4M-ؿdRoN뀑Ŝ Խ#rWc2j[^ Nc\GjW?pk>WbHTuЯK|"`[O>QZoI/(m/4㌎G+;k F{Ӱ吖jA35 z1يHmIA֡EњXO_Guwɇ3##vl ;M4ޣZAsMEOKEO5>]v_%'J$"0")hx#l2Ubq@[޼bk"QS#׍7w1:T}VDO+n/czUK!) o\Ee/tیKߤ{hnUڗ DS(:aΛ:ѭ@ [Xvj:Z5z+;fG9Oَ*P$oM"<=?,fNNV-$PCkSs`)BWCW-cKt^P簞oMy#HT6l8yD=ο˞NȜ|8F=ky䙒5k/wxr]f#*؞ "VO.4~`_b!T\wt'DM%N3oq)n ^TFVsy| iSh~4Q>+ъp8/<B"\m6f"yPv"ȋ* j=)2: _4~ac& pcp?Mm"S}U:jrQm-|@KVbui)!2z5E}EPws~U "\'4n^Wj[(N׾ !RO!e5߼?pN0?^\&w_zkFqY_n"2SsCENdVQoz÷V$RZE{{hGXL<I4%:677в366smrfU4/>]"vJFB!:>GKvЅ7PmǢI D.Zi@ #7fۓ?`ʐ&qQ2Bg#;5шq+I |9:dÏgunzq|_=gj^BNH[hޫoG1BJnzpb̐UӚE2u%ϼv]Sc@wbPg&+ݵ{M%i' b?<;:LGp_ڥ FPt\Ӧҟ /]0?9U7"FVm< /qGF QN#t`:*J>I3VK` ꣴG5B.l#q:w$1sXLF=-ox$C t>FJ⽪ٱb l+CYvG&bH'[亍]VANݢmM>H&|7;>y-B8k,݂Tw.VPLQ"6k+PbU hZ D{Gcg1>-턹-s;<yj iK*v4 j|t::j'F7B5mֺ^?~cVsTTJg;̣wʫ4'3QxpqU@>^Gb7K.JpP\@ Ju~z=3FcbA1he7j 80-eZ#c>q]1ht_LLK1~D]ncVLDDM_|QvĹGD G4M%,G2 bl{s w)N1HƟv4)Ӡ1pv ]G6ߦ)Ʈ!@"Fk4c^0x\ё/Q}0H2kt0oϊYFGo}DYeT@ bZg)̿a¡WF DϲЇNf Vl &@;U9;T*P#9vUc9xB!4,G3n*l ρeC C.3/aXA1;~$ݷ,cGҍ@@.@4b6w˷HeP?MA]@4\.ʝ̬=֒L w5h7 o#R{#-YxLZ'7NF'|h0oS47+ ĿcvZC qA NeK}P6< @iQH8)^ϭsЏ~JC9hкTVAߓKڳ ~b!n_ǡ0PVԀ0W`(6+&w`dU ]1 ݄Ӷ+T$LDJK9f z>G~Z wF ? q_I 4 |bOfʭ`lPVh\o:@0'|JL?(X{Zww)YgnGad[O+\CgZ)(> S[pl% h ۏ>{j[̀QT 1=еBTc}_PXk^ }6{I;%^,|aƋ$HDK07Xʪ%9r,9iAtRՃDNMDpeH\` Z9(nUh]Of; Qk'hυ-툛W ⨓G42!A,+L _U5]9B0+7بXMb>n]eku2ELef2yFOs+3Kcpa ssѵ_p/'EҢNk!ܸ7,n U h0ԫY59ȮɆ|Eh='Zmns^ފDܺG)؄>~MT{"a_\nO*c1mLSX@+RXOEgKB'ut FGFiD"PcYF[s\w!t,zJ}`YZ9%'3?:9XK*f3 >",١%O}i7-lᢀ^5_5;gr3}\FE 8SXq =vo-[ԭGH_ܩx pw"[;lU+ץ}så¡,ح GD ۯrLVdXd3G}W>vtY L}4ػk hh Z "HINEF{RVn+J~@񦼑 $cm+fk`Xg!(t,$| Q\$3gK&,f;7v٠VjAFA_X.kiLh%ԧ9Ǝx =/T"%A+Ÿ ]~Lj!w=|,A<}˞ Q7V8Ou(è1Fv1r뭨Sū^(5M09 :+s:KiȬ"kKajV5SFq‹8\@ 0Ҟ :wUVQ}i,I>ڒ.Cs?OǪeޜWNJ7* HώiHU&?ѭ9i1!3ض. 4[].~4tlH'T Mڵ|:DϮ@ wI*DFt2d!Qp.>P ji.H +ph7mn+B}_.[ )&+u4x|z&ˎsn(zv»wb%ѦT軸g}Udz1_ViT:wh[]3'փMw>\VvQQ= UQyzV_ylXp~ˆ:EcԪ 0p>Zt?0&=D36f8BrqԪ6Q!V~#PZyc ^~zn.gVR<ػGb AdobedF]   1!AQ$Wq4UaB#DT8Xd%5uf(bCStev'7  ATҔ5U!1qB$4%Q2DtEad6& ?!g48"1sCg1cP3,f 1c?,hfk+{_r,x᳃ 9r |9`N=7dw&BthCc$TI5qm.5)%%eMx=OYri2mk<{0b䤻LI X%."A j!i 4Zf\ޅMx5Qa,VnAZnsMهE96vCgxeb{@m 556^3IB&<)p)cݯ7 lsm0' {85}(Mm$څMx4O9Pm.6^sRmB&<S{P 6^sR[лIT$wm 5UEy ܷIwS'E}˟CZKWcTt`Jw2ۊr!6ݠNr +I : NR/jrs=5Q&ܘ|kdop ⛈ͭ `YTzj"Š*_1mfpMcܓQA Mc ]}[bz2Kr/cLGm,NF9TXyw$<~BmTõ5crocLG і7ZX#;{Wzj?h!br6jkN՞XjkN՞XjklCNE1.da9Sҥ*o?1YXD@b:n8A?v+hXx7 (ٻ j)B+`,OrAedI>L5qT9nFlc XZ\aw&JbG> ndX nnMnݛF(e\ gI {c}3eg Hpp`]ÎTBQdou]V~w>1l =F,p !ѹ:8UĨ'j W @.?f8vK߄( U2ϊ aѸxM&I21Sz|`g7ώ#;s 7-b,oSmOrÆYnT-qF  PTl]W|<2TӉw9n/4`Hs.1||hD=f`9IMW~{  E!Xt`KW^牔y +?u"V'qI*DKgT:Ƶ@z` j6)Mܩuk/3㗇lGcT+njz%0>pèBjT,ZAr2(B!6FX>9:v((SyэJ/0 [ZI4nqK w$bŃ1Be;L4qTU֙saw\kehNL>꓂ EYR9Q/׭e+^(-tO>4XubMVA;_#9_G h2Z$ᔆ!!蓈/Oy#`^rV0%b!"yZU.'`e?(0bLw`ف5"U9{hXx6rGvK؀º n1r`nmFwX*ꀡ9P&_'Y#: H^bFcxԇ4K["$ېGdFH71bZT!7.+@BetXj JK̆-@[`'Gi_:bUut >{$>E}7C oC%G0GWzG0}g:%jJAo=)µ$_Ї)4˞9{8蛈/"=RzIqᆂձO/S'ܚ6"q @2vPprNܤbw$Ϗ`I 2#kDL6GwTف8K!6((W+#f5ة[Xg. ܊6PKPC 3y6kV:¸-@n"\UL9H1##HWt`f06qh/5Ʊ'7ݰފ/pYd^fKJV8"tmȬM2UoZa@oԉȩZF5~r'E1v>]ʍv  rz'E VOemw7am|`CmrQDӃEVO'%N$w:O\Z)  ="TDGB ]_qds{U5~?€V& 3r;^(b`Q3q^m ,?E)n܎A EX~jh"QV6bB߼w~wV&+`1EqT(MZ*C8sp`4hTrb2]_\z8E+A]?v:%݋=Y/8Dz. */ #include "processmanager.h" ProcessManager::ProcessManager(QObject *parent) : QObject(parent) { mSettings = new QSettings(YOUKER_COMPANY_SETTING, YOUKER_SETTING_FILE_NAME_SETTING); mSettings->setIniCodec("UTF-8"); memos = new QMap(); readMemoFile(); } ProcessManager::~ProcessManager(){ mSettings->sync(); if (mSettings != NULL) delete mSettings; } void ProcessManager::readMemoFile(){ QFile *memoFile = new QFile("/var/lib/youker-assistant-daemon/processmanager/processmemo"); if(memoFile->open(QIODevice::ReadOnly)){ QTextStream in(memoFile); while(!in.atEnd()){ QString line = in.readLine(); QStringList tmp = line.split(":"); memos->insert(tmp.at(0), tmp.at(1)); } memoFile->close(); } } QString ProcessManager::getCasualUser() { QString currrentName; mSettings->beginGroup("user"); currrentName = mSettings->value("currentName").toString(); mSettings->endGroup(); mSettings->sync(); return currrentName; } QStringList ProcessManager::getProcess(){ mSettings->beginGroup("user"); QString currrentName = mSettings->value("currentName").toString(); if(currrentName.isEmpty()){ currrentName = QString("root"); } mSettings->endGroup(); mSettings->sync(); QString cmd = tr("ps -u %1 -o user,pid,%cpu,%mem,start,ucmd,command").arg(currrentName); QProcess *p = new QProcess(); p->start(cmd); p->waitForFinished(); p->readLine(); //throw the first line QStringList processList; QString str; while(p->canReadLine()){ str.clear(); YProcess *yp = new YProcess(); QString tmps = p->readLine(); int spaceIndex = tmps.indexOf(" "); yp->user = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->pid = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->pcpu = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->pmem = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->started = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->cmd = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); yp->command = tmps; foreach (QString key, memos->keys()){ if(yp->command.indexOf(key) != -1){ yp->memo = memos->value(key); } } str = tr("%1;%2;%3;%4;%5;%6;%7").arg(yp->user).arg(yp->pid).arg(yp->pcpu).arg(yp->pmem).arg(yp->started).arg(yp->memo).arg(yp->command); processList.append(str); } return processList; } QStringList ProcessManager::getProcessAdvance(){ QString cmd = "ps ax -o user,pid,%cpu,%mem,start,ucmd,command"; QProcess *p = new QProcess(); p->start(cmd); p->waitForFinished(); p->readLine(); //throw the first line QStringList processList; QString str; while(p->canReadLine()){ str.clear(); YProcess *yp = new YProcess(); QString tmps = p->readLine(); int spaceIndex = tmps.indexOf(" "); yp->user = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->pid = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->pcpu = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->pmem = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->started = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); spaceIndex = tmps.indexOf(" "); yp->cmd = tmps.mid(0, spaceIndex); tmps.remove(0, spaceIndex); tmps = tmps.trimmed(); yp->command = tmps; foreach (QString key, memos->keys()){ if(yp->command.indexOf(key) != -1){ yp->memo = memos->value(key); } } str = tr("%1;%2;%3;%4;%5;%6;%7").arg(yp->user).arg(yp->pid).arg(yp->pcpu).arg(yp->pmem).arg(yp->started).arg(yp->memo).arg(yp->command); processList.append(str); } return processList; } bool ProcessManager::killProcess(QString pid){ QProcess *p = new QProcess(); // qDebug() << pid; p->start("kill -9 " + pid); bool aa = p->waitForFinished(); // qDebug() << QString("%1").arg(aa); return aa; // return p->waitForFinished(); } void ProcessManager::clearMap(){ processMap.clear(); } void ProcessManager::updateMap(QString num, QString id){ processMap.insert(num, id); } QString ProcessManager::getProcessId(QString currentIndex){ QString currentId; if(processMap.contains(currentIndex)){ currentId = processMap.value(currentIndex); } return currentId; } int ProcessManager::getProcessIndex(QString currentId){ int currentIndex; currentIndex = processMap.key(currentId).toInt(); // qDebug() << QString("%1").arg(currentIndex); return currentIndex; } void ProcessManager::clearUserMap(){ userMap.clear(); } void ProcessManager::updateUserMap(QString id, QString user){ userMap.insert(id, user); } QString ProcessManager::getProcessUser(QString currentId){ QString currentUser; if(userMap.contains(currentId)){ currentUser = userMap.value(currentId); } return currentUser; } youker-assistant-1.0.1/qml/img/weather/n0.gif000644 001750 001750 00000005252 12312451003 021353 0ustar00saucysaucy000000 000000 GIF89a008Z2P(Ai1S5R|1T3U4U7Z">c-Jr-In7Tz/P0Q1R/N/M2S8Z9[:\5V3R6U8Y9Z"?a :[-Ms+Im,Jn0Pv/Ms1Qw,Ik2Pv1Os8Y7W5U{4Rx3Qu7W}9Y9Y8V|6Tx:Z;Y.M0Q1Q2R/M3S0N4U0M5U1N2P6V3Q7W8X4R>a4Q9Y5S:Z=_8V;[<\!?a#Be"@b =]!>^#Ac"?_%Ce9U*Lq&Df$Aa,Ns(Fh)Gi+Ik)Ff,Jl2Sy+Hh/Mp6X~7Z6X}7Y~6W|4Ru9[Nj0N0K6T:Y>_7U:X>]#Eh;Y5P#De$Ef"A` =[%Fg#Ba(Il'Hj$Cb%Dc)Jk+Lo 9R,Mp+Lm-Nq,Mn.Or2Uz/Ps+Ji0Qt.Op1Sv1Ru0Qr4W{2Sv7[4Wy4Ux3Tv6X{1Po9\8Z}5Vw9[~8Y|8Z{?`0M/K2O1M3P2N5Q5R?^@_=Z#Dc&Gf(Jj'Hg$C`*Ll+Nn.Qq5[%>V7[}8\~1K2L9U)Lj8N`5\{5IWCU_L]eXcbalfmxqox{ہп|Ȏڡހ߃ށ߅ޅ΀ۉԏؚނ܂߈އ߉ތ܂ۃ!,00|E P8*\0!ǮOCC CV:DEQ<|S8|H1jϟ@V?uHT |HAG)QXj*5JÇ R6n@ݻCT^tKEjWrǒ ^~Е os2ŘHϠC|* D$FpDr΍Dw] k"{GSO8E SHv \аbΝK\`ө_:6=ڴy" ʕ0iO>s1 | 6|@JH! LA99:ꘓ0;,, 1Č4ΘG ;>PΈ3 56GD)eqD" 4P;c9KX0ĔlepƙqXpA=M:^3 ; K$ʩI0DB4AOa ͑Mx*tDX͵\-zm9|?9 snx[lG\l;cϘw砇9\n:}팉̘#1~N:]R"|@cN9CSN8G pB tw|]B~BLL_4]O B 0 ueN8A07ABd` 1Ca'!@ p*pN{=fnC 0Ї(a A∇(!-hG;VQh<jH c D21hL!FF| x{G?W`H XC$jLcOG@R =qp4#8am̃@DHE."}C"NyJG8bd+a'uf#~۠G< !< ,!*,p#M@YVӕ0A#" bc̠= opܠG'1e8c;ݠ,VPMD`&ЈF`51xS8k#F7Pkx4O2@JT`* J50 rr7 N g^PS,!XA&̀>D&`I/Ȑ@OE, 3'},I"+-dXG P`Nx˒H N+[Y_FAf+Y/DͰYBřPOln $ 3`2p/f+@B#NÖY},#;youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/000755 001750 001750 00000000000 12312451003 026276 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/func/settings/BootAnimation.qml000644 001750 001750 00000023724 12312451003 024211 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Rectangle { id: bootimagepage width: parent.width height: 475 property int scrollbar_z:0 property int lisv_height: 250 property string image_path: "" property string actiontitle: qsTr("Boot animation settings")//开机动画设置 property string actiontext: qsTr("Click the ' Custom Image ' button to select the picture you want to add, select the picture you want to set and click ' OK ' button to complete the setup.")//单击"自定义图片"按钮选择需要添加的图片,选中列表中要设置的图片名称,单击"确定"按钮完成设置。 property int num: 0 property string selectedimage: "" ListModel { id: mainModel } //背景 Image { source: "../../img/skin/bg-middle.png"//bg-bottom-tab anchors.fill: parent } Component.onCompleted: { systemdispatcher.plymouth_init_check_qt(); var plymouth_list = systemdispatcher.get_existing_plymouth_list_qt(); bootimagepage.num = plymouth_list.length; mainModel.clear(); for(var i=0; i < plymouth_list.length; i++) { if(systemdispatcher.get_image_path_qt(plymouth_list[i]) != "False"){ mainModel.append({"itemTitle": plymouth_list[i]}); } } if(30*plymouth_list.length<=lisv_height) { scrollbar_z = -1 } else { scrollbar_z = 1; } } //信号绑定,绑定qt的信号finishCleanWork,该信号emit时触发onFinishCleanWork Connections { target: systemdispatcher onFinishAddBootImage: { systemdispatcher.plymouth_init_check_qt(); var plymouth_list = systemdispatcher.get_existing_plymouth_list_qt(); bootimagepage.num = plymouth_list.length; mainModel.clear(); for(var i=0; i < plymouth_list.length; i++) { if(systemdispatcher.get_image_path_qt(plymouth_list[i]) != "False"){ mainModel.append({"itemTitle": plymouth_list[i]}); } } bootimagepage.selectedimage = plymouth_list[0]; } } Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Row { spacing: 50 Text { text: bootimagepage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } //status picture Common.StatusImage { id: statusImage visible: false iconName: "green.png" text: qsTr("Completed!")//已完成! anchors.verticalCenter: parent.verticalCenter } } Text { width: bootimagepage.width - 80 - 20 text: bootimagepage.actiontext wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } Column { anchors { top: parent.top topMargin: 120 left: parent.left leftMargin: 60 } spacing: 30 Image { id: previewzone source: "../../img/icons/previewzone.png" } Common.Button { width: 94 height: 29 fontsize: 13 hoverimage: "blue.png" text: qsTr("Custom picture")//自定义图片 anchors.horizontalCenter: parent.horizontalCenter onClicked: { bootimagepage.image_path = systemdispatcher.showSelectFileDialog("bootanimation"); bootimage.source = bootimagepage.image_path; var imagename = bootimagepage.image_path; imagename = imagename.substr(imagename.lastIndexOf("/") + 1, imagename.length - imagename.lastIndexOf("/")); systemdispatcher.add_new_plymouth_qt(bootimagepage.image_path, imagename); systemdispatcher.readyAddBootImageToList(); } } } Image { id: bootimage width: 165 height: 114 anchors { top: parent.top topMargin: 140 left: parent.left leftMargin: 80 } // fillMode: Image.TileHorizontally source: "" smooth: true } Text { id: chooselabel anchors { top: parent.top topMargin: 120 left: bootimage.right leftMargin: 100 } text: qsTr("Optional BootAnimation")//可选的开机动画 font.bold: true font.pixelSize: 14 color: "#383838" } Rectangle{ border.color: "#b9c5cc" width: 460; height: 250 clip:true anchors { top: chooselabel.bottom topMargin: 5 left: bootimage.right leftMargin: 100 } Component{ id:cdelegat Item{ id:wrapper width: 440; height: 30 Text{ id:listtext anchors { left: parent.left leftMargin: 10 verticalCenter: parent.verticalCenter } font.pixelSize: 12 color: "#7a7a7a" text:itemTitle } Image { id: btnImg anchors.fill: parent source: "" } MouseArea{ anchors.fill:parent hoverEnabled: true onClicked: { wrapper.ListView.view.currentIndex = index; if(systemdispatcher.get_image_path_qt(itemTitle) != "False"){ bootimagepage.selectedimage = itemTitle; bootimage.source = systemdispatcher.get_image_path_qt(itemTitle); } else{ //待添加原图片路径不存在时的说明图 } } } Rectangle{ width: revoke.width;height: revoke.height; color: "transparent" anchors{ verticalCenter: parent.verticalCenter right: parent.right rightMargin: 20 } opacity: wrapper.ListView.isCurrentItem? 1:0 Image {id:revoke;source: "../../img/icons/revoke.png"} MouseArea{ anchors.fill:parent enabled:wrapper.ListView.isCurrentItem? true:false onClicked: { systemdispatcher.delete_plymouth_qt(itemTitle); systemdispatcher.readyAddBootImageToList(); } } } } } Common.ScrollArea { frame:false anchors{ top:parent.top topMargin: 1 left:parent.left leftMargin: 1 } height: parent.height-1 width: parent.width-1 Item { width: parent.width height: bootimagepage.num * 30 //列表长度 //垃圾清理显示内容 ListView{ id:lisv anchors.fill: parent model: mainModel delegate: cdelegat highlight: Rectangle{width: 440;height: 30 ; color: "lightsteelblue"} focus:true } }//Item }//ScrollArea } //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } onOkBtnClicked: { systemdispatcher.custom_plymouth_bg_qt(bootimagepage.selectedimage); statusImage.visible = true; } Timer { interval: 5000; running: true; repeat: true onTriggered: statusImage.visible = false } } } youker-assistant-1.0.1/src/fcitxcfgwizard.h000644 001750 001750 00000012315 12312451003 021317 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * Authors: * lenky gao lenky0401@gmail.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef FCITXCFGWIZARD_H #define FCITXCFGWIZARD_H #include #include "fcitx-qt/fcitxqtconnection.h" #include "fcitx-qt/fcitxqtinputmethodproxy.h" #include "fcitx-utils/utils.h" #include "fcitx-config/hotkey.h" #include #include class FcitxCfgWizard : public QObject { Q_OBJECT public: explicit FcitxCfgWizard(QObject *parent = 0); ~FcitxCfgWizard(); signals:void refreshFcitxSig(); private: FcitxQtConnection *m_connection; // FcitxWarnDialog *fcitxWarnSig; QDeclarativeView *view; FcitxQtInputMethodProxy *m_improxy; QString m_separator; private: QStringList m_im_list; //注意:因为fcitx提供的库的缘故,这里必须采用malloc动态内存 //因为fcitx库内部会调用到realloc,如果采用固定数组会出异常 char *m_string; //QString m_string; char *m_font; //QString m_font; int m_candidate_word_number; int m_font_size ; //布尔必须采用fcitx库里提供的boolean,而不能直接使用bool类型 //否则读取/写入失败 boolean m_vertical_list; FcitxHotkeys m_trigger_key; FcitxHotkeys pad1; FcitxHotkeys m_prev_page_key; FcitxHotkeys pad2; FcitxHotkeys m_next_page_key; FcitxHotkeys pad3; //枚举类型,直接用int代替 int m_im_switch_hot_key; boolean m_im_switch_key; //QString m_skin_type; char *m_skin_type; boolean m_cloud_enable; private slots: bool connected(); void emitrefreshFcitxSig(); private: bool is_connected_ok(); bool get_fcitx_cfg_value(const char *cd_path_prefix, const char *cd_file_name, const char *c_path_prefix, const char *c_file_name, const char *groupName, const char *optionName, void *ret_value); bool set_fcitx_cfg_value(const char *cd_path_prefix, const char *cd_file_name, const char *c_path_prefix, const char *c_file_name, const char *groupName, const char *optionName, void *set_value); void save_q_string_2_m_string(QString q_string, char **m_string); public: Q_INVOKABLE QStringList get_im_list(); Q_INVOKABLE bool set_im_list(QStringList im_list, bool real_save); Q_INVOKABLE QString get_font(); Q_INVOKABLE void set_font(QString font, bool real_save); Q_INVOKABLE int get_candidate_word_number(); Q_INVOKABLE void set_candidate_word_number(int num, bool real_save); Q_INVOKABLE int get_font_size(); Q_INVOKABLE void set_font_size(int size, bool real_save); Q_INVOKABLE bool get_vertical_list(); Q_INVOKABLE void set_vertical_list(bool vertical, bool real_save); Q_INVOKABLE QString get_trigger_key_first(); Q_INVOKABLE QString get_trigger_key_second(); Q_INVOKABLE void set_trigger_key_first(QString hotkey, bool real_save); Q_INVOKABLE void set_trigger_key_second(QString hotkey, bool real_save); Q_INVOKABLE QString get_prev_page_key_first(); Q_INVOKABLE QString get_prev_page_key_second(); Q_INVOKABLE void set_prev_page_key_first(QString hotkey, bool real_save); Q_INVOKABLE void set_prev_page_key_second(QString hotkey, bool real_save); Q_INVOKABLE QString get_next_page_key_first(); Q_INVOKABLE QString get_next_page_key_second(); Q_INVOKABLE void set_next_page_key_first(QString hotkey, bool real_save); Q_INVOKABLE void set_next_page_key_second(QString hotkey, bool real_save); Q_INVOKABLE int get_im_switch_hot_key(); Q_INVOKABLE void set_im_switch_hot_key(int hotkey, bool real_save); Q_INVOKABLE bool get_im_switch_key(); Q_INVOKABLE void set_im_switch_key(bool swh, bool real_save); //获取当前所有可用皮肤 Q_INVOKABLE QStringList get_all_skin_type(); Q_INVOKABLE QString get_skin_type(); Q_INVOKABLE void set_skin_type(QString skin, bool real_save); Q_INVOKABLE void all_cfg_save(); Q_INVOKABLE QString show_font_dialog(); Q_INVOKABLE void send_fcitx_ok_warn(int window_x, int window_y); void create_fcitx_ok_warn(int window_x, int window_y); // private: char* deal_R_L_diff(char *key_str); public: Q_INVOKABLE QString get_fcitx_hot_key_string(unsigned int qtcode, unsigned int mod); private: void set_trigger_key(); void set_prev_page_key(); void set_next_page_key(); //配置下发,让修改立即生效 void update_cfg_to_fcitx(); int mainwindow_width; int mainwindow_height; int alert_width; int alert_height; //本次alert的x坐标 int alert_x; //保额次alert的y坐标 int alert_y; }; #endif // FCITXCFGWIZARD_H youker-assistant-1.0.1/qml/img/logo/Manufacturer/TONGFANG.jpg000644 001750 001750 00000011400 12312451003 024201 0ustar00saucysaucy000000 000000 JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  !"$"$CF]" 0!"1AQ2aq#BRb$1!QAa#2 ?t()JJRR()JJŗYEe RTt>욬#[_c:%f_CWo#KAHhz׉%(m_]i.~i)_>xsLk5nvJ.jn6Q:=}]sdMV8]BZ~@ujڒV =DZ);L.9IbP-~9#MCl6M |||T<'BBGG4aU}܎.(%J.k֟-ױZ6dJPV<#D#4e ;x&JTKiu=Wܭ;bCG*u%. hh8|]썎*L@8ԥuzH>A$4h/$ńuCBն~ y+ UEY\t-KRul"{kgm"M-Kk=vڵGG. 'qokzuw ?j5U'g[S>i7V+wIYsZAvo$$v{'C]_ԛxܗ YPq؝ԄQqj@*H>}'Vm!iJRVO 4[WM.夂Tz #c͞fxK\xƗ?';l}?6[qؔ%F뺵c08LIhY_yr4CwR~QfM3ȅ!VV}ĥ H$(> 5֥!) H@VNVQ_T90mQ2 JA*SoSI]_dOC5 !7Lp$]x#^KB{|}׏D əa&dc$e#XxbÄh?Ϊhn*^;qMcihuzZelֳhkv^%GzN3b?MXG)mf;d儕?jGE1,9ۂ$$t2put2}m  pvTC;v[f2NZN.T!?. ֽVW߽NE.މq_pŒ|I$Mzg|qg&7I1R))G$Hu1klյ-( $ u$ҔIR()JJRR()JJRR()Jyouker-assistant-1.0.1/qml/func/common/private/000755 001750 001750 00000000000 12312451003 022025 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/weather/d1.gif000644 001750 001750 00000005444 12312451003 021345 0ustar00saucysaucy000000 000000 GIF89a00NT|==?>@A@BABCEDFEHGGIJIIJHMLMLOORREUUWZZN]M`Vcgj`\frqwvqy}n׀y܍ޝ9JH^Yd{VloÍ˻ѥѿ~ՠkUԾ\܏KPV]|7=BGBNU[k݁ $%)-/!,000ᓥ*\P (ԘhBŋe`""CV((+ܲ%eH.^x%W/8s%/^It0^1sCӧP1uFgfHԌ 4paٳhӚ= k֘{M16(s߿+ƛ4ݫ74'VÆ4ز58*Oc=ÏnYΆ$j ȶ:H!@24[7“;Oӭ:C;C .Bn!+!4,=#:N;sCO%rH+qHBP<ۏ=#8k*_9hC!̻ļH"H>;r;3N#;ݚ9D1<ԋT=DUHm?;O< p܃;t5D, x/ˆ/wH8S+4989!4>n/z׭/4#D0¹Ѥ#?D L8(x<}4mSN:l97$ _\a(p4H@iHC ֈ7 VP8-l$$ FCa L h@F`67$H(Xc`!%"AENb 0 O< $@J1%@D6q P"0fH|$"1>q+#07Rp/)F620.x$,AJJXb&q 8:@< ]dEQj`(.Tx6,q f6D&AȦ6(؂`2MZ4f 84)hfH}FQ` `d *` " QLhBՄ!mn+'P:EPP` @CB")$X)0Q50P4` eL2&`1j4XDN7M8` kXoAMvR mgP x@R>74 '6щ#~ | EJ`D \  NlD:A~$1j4J !eL'[* v N|B IP@\7 h Vv xm- P"P'O`.A Jx0.a &H0.U*xսnn Pcy@ RBI P@Q:/`+Ps[`]슀F@P"a EEXŤ@$VGxcXJTpN c@(Z\SP܄( C#Xa xA J J Q4)L:p\$Tb4+"dS漊9 p ah1hSBpMUc8ŜS>;հ_j'@A޳+V U"س*T xBXЎ[A Y ,`VBOx, gۮp+j1goA cȢֆ,d1a#ܲpg1sSj; Wc#,c$cŐ,!X;;youker-assistant-1.0.1/qml/img/weather/d14.gif000644 001750 001750 00000005220 12312451003 021421 0ustar00saucysaucy000000 000000 GIF89a00:==ABCCBDDEG>MOHQUWVn}alӃyhȈrƔ}˟ϩ9;;<==>>?@@?BABCEDFFFHJIIKJKLMLOND=PPOSSVUQ?zGYXZ\^Nac\eUiPp^critvcy{~~}tdÂuրؕڠآ۱ޭ!,002*\xPTq[°EJY.%|BIɓ#T(P@0cʜ `fK1oDѣH4)BLb( bµׯLpDC : X2xE/" Zd!z>lhǐ#KLɔE]t]2%' $ A"@'Xw &WTYdad'"j &jp F, waG)Xhb@ ( 9$Dɢ CB A9;B (G)&(ZD2(Dn1ZdC(!D0 4Ё;U2ʙDj(")l((а@<8C: )褩) ) 'bE;IHAA |BpЂ Ͳ@)V[*x0G 4CA P`B :cq+lB>x ,Ѓ ǫA 4Sp )P++BGx=g 1pZATdCd"+$>3<0wЁ'l8p,lB ?LP)$x0 4g;|AwP'T +`l x 1+wz1c OO\8xA 2+t! -0)9\*x:p@3Ȱ4L)t-rK,tĺ{*Ƃx1dЃk#CXA[₹_,,l5:@@ Ba4/tC]hvOp0bX5PЏyы. ,P ( \P#Zۺ>Ꮐ;youker-assistant-1.0.1/src/changecitydialog.h000644 001750 001750 00000001447 12312451003 021603 0ustar00saucysaucy000000 000000 #ifndef CHANGECITYDIALOG_H #define CHANGECITYDIALOG_H #include //#include "sessiondispatcher.h" class QSettings; namespace Ui { class ChangeCityDialog; } class ChangeCityDialog : public QDialog { Q_OBJECT public: explicit ChangeCityDialog(QSettings *mSettings = 0, QWidget *parent = 0); ~ChangeCityDialog(); void init(); private: Ui::ChangeCityDialog *ui; QSettings *pSettings; QPoint dragPos; // SessionDispatcher *sedispather; protected slots: void writeWeatherConf(); protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); bool eventFilter(QObject *obj, QEvent *event); signals: void readyToUpdateWeather(); }; #endif // CHANGECITYDIALOG_H youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/ccm/Conflicts.py000644 001750 001750 00000046773 12312451003 031357 0ustar00saucysaucy000000 000000 # -*- coding: UTF-8 -*- # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Authors: Quinn Storm (quinn@beryl-project.org) # Patrick Niklaus (marex@opencompositing.org) # Guillaume Seguin (guillaume@segu.in) # Christopher Williams (christopherw@verizon.net) # Copyright (C) 2007 Quinn Storm from gi.repository import Gtk from Constants import * from Utils import * import locale import gettext locale.setlocale(locale.LC_ALL, "") gettext.bindtextdomain("ccsm", DataDir + "/locale") gettext.textdomain("ccsm") _ = gettext.gettext class Conflict: def __init__(self, autoResolve): self.AutoResolve = autoResolve # buttons = (text, type/icon, response_id) def Ask(self, message, buttons, custom_widgets=None): if self.AutoResolve: return Gtk.ResponseType.YES dialog = Gtk.MessageDialog(flags=Gtk.DialogFlags.MODAL, type=Gtk.MessageType.WARNING) for text, icon, response in buttons: button = Gtk.Button(text) button.set_image(Gtk.Image.new_from_stock(icon, Gtk.IconSize.BUTTON)) dialog.add_action_widget(button, response) if custom_widgets != None: for widget in custom_widgets: dialog.vbox.pack_start(widget, False, False) dialog.set_markup(message) dialog.show_all() answer = dialog.run() dialog.destroy() return answer class ActionConflict (Conflict): ActionTypes = set(('Bell', 'Button', 'Edge', 'Key')) def __init__ (self, setting, settings, autoResolve): def ExcludeInternal (settings): for setting in settings: if not setting.Info[0]: yield setting Conflict.__init__(self, autoResolve) self.Conflicts = [] self.Name = "" self.Setting = setting if settings is None: settings = [] self.Settings = settings # if the action is internal, include all global actions plus internal # actions from the same plugin. If it is global, include all actions. if not settings: for n in self.Setting.Plugin.Context.Plugins: plugin = self.Setting.Plugin.Context.Plugins[n] if plugin.Enabled: pluginActions = GetSettings(plugin, types=self.ActionTypes) if len(setting.Info) and setting.Info[0] and plugin is not setting.Plugin: settings.extend(ExcludeInternal(pluginActions)) else: settings.extend(pluginActions) def Resolve (self, updater = None): if len (self.Conflicts): for setting in self.Conflicts: answer = self.AskUser (self.Setting, setting) if answer == Gtk.ResponseType.YES: setting.Value = 'Disabled' if updater: updater.UpdateSetting (setting) if answer == Gtk.ResponseType.NO: return False return True def AskUser (self, setting, conflict): msg = _("The new value for the %(binding)s binding for the action %(action)s "\ "in plugin %(plugin)s conflicts with the action %(action_conflict)s of the %(plugin_conflict)s plugin.\n"\ "Do you wish to disable %(action_conflict)s in the %(plugin_conflict)s plugin?") msg_dict = {'binding': self.Name, 'action': setting.ShortDesc, 'plugin': setting.Plugin.ShortDesc, 'action_conflict': conflict.ShortDesc, 'plugin_conflict': conflict.Plugin.ShortDesc} msg = msg % protect_markup_dict (msg_dict) yesButton = (_("Disable %(action_conflict)s") % msg_dict, Gtk.STOCK_YES, Gtk.ResponseType.YES) noButton = (_("Don't set %(action)s") % msg_dict, Gtk.STOCK_NO, Gtk.ResponseType.NO) ignoreButton = (_("Set %(action)s anyway") % msg_dict, Gtk.STOCK_STOP, Gtk.ResponseType.REJECT) return self.Ask (msg, (ignoreButton, noButton, yesButton)) class KeyConflict(ActionConflict): def __init__(self, setting, newValue, settings=None, autoResolve=False, ignoreOld=False): ActionConflict.__init__(self, setting, settings, autoResolve) self.Name = _("key") if not newValue: return newValue = newValue.lower () oldValue = self.Setting.Value.lower () badValues = ["disabled", "none"] if not ignoreOld: badValues.append (oldValue) if newValue in badValues: return for s in self.Settings: if s is setting: continue if s.Type == 'Key': if s.Value.lower() == newValue: self.Conflicts.append (s) class ButtonConflict(ActionConflict): def __init__(self, setting, newValue, settings=None, autoResolve=False, ignoreOld=False): ActionConflict.__init__(self, setting, settings, autoResolve) self.Name = _("button") if not newValue: return newValue = newValue.lower () oldValue = self.Setting.Value.lower () badValues = ["disabled", "none"] if not ignoreOld: badValues.append (oldValue) if newValue in badValues: return for s in self.Settings: if s is setting: continue if s.Type == 'Button': if s.Value.lower() == newValue: self.Conflicts.append (s) class EdgeConflict(ActionConflict): def __init__(self, setting, newValue, settings=None, autoResolve=False, ignoreOld=False): ActionConflict.__init__(self, setting, settings, autoResolve) self.Name = _("edge") if not newValue: return newEdges = set(newValue.split("|")) if not ignoreOld: oldEdges = set(self.Setting.Value.split("|")) diff = newEdges - oldEdges if diff: newEdges = diff # no need to check edges that were already set else: return for s in self.Settings: if s is setting: continue elif s.Type == 'Edge': settingEdges = set(s.Value.split("|")) union = newEdges & settingEdges if union: for edge in union: self.Conflicts.append ((s, edge)) break def Resolve (self, updater = None): if len (self.Conflicts): for setting, edge in self.Conflicts: answer = self.AskUser (self.Setting, setting) if answer == Gtk.ResponseType.YES: value = setting.Value.split ("|") value.remove (edge) setting.Value = "|".join (value) if updater: updater.UpdateSetting (setting) if answer == Gtk.ResponseType.NO: return False return True # Not used for plugin dependencies (which are handled by ccs) but own feature checking e.g. image support class FeatureRequirement(Conflict): def __init__(self, context, feature, autoResolve=False): Conflict.__init__(self, autoResolve) self.Requirements = [] self.Context = context self.Feature = feature self.Found = False for plugin in context.Plugins.values(): if feature in plugin.Features: self.Found = True if not plugin.Enabled: self.Requirements.append(plugin) def Resolve(self): if len(self.Requirements) == 0 and self.Found: return True elif not self.Found: answer = self.ErrorAskUser() if answer == Gtk.ResponseType.YES: return True else: return False for plugin in self.Requirements: answer = self.AskUser(plugin) if answer == Gtk.ResponseType.YES: plugin.Enabled = True self.Context.Write() return True def ErrorAskUser(self): msg = _("You are trying to use the feature %(feature)s which is not provided by any plugin.\n"\ "Do you wish to use this feature anyway?") msg_dict = {'feature': self.Feature} msg = msg % protect_markup_dict (msg_dict) yesButton = (_("Use %(feature)s") % msg_dict, Gtk.STOCK_YES, Gtk.ResponseType.YES) noButton = (_("Don't use %(feature)s") % msg_dict, Gtk.STOCK_NO, Gtk.ResponseType.NO) answer = self.Ask(msg, (noButton, yesButton)) return answer def AskUser(self, plugin): msg = _("You are trying to use the feature %(feature)s which is provided by %(plugin)s.\n"\ "This plugin is currently disabled.\n"\ "Do you wish to enable %(plugin)s so the feature is available?") msg_dict = {'feature': self.Feature, 'plugin': plugin.ShortDesc} msg = msg % protect_markup_dict (msg_dict) yesButton = (_("Enable %(plugin)s") % msg_dict, Gtk.STOCK_YES, Gtk.ResponseType.YES) noButton = (_("Don't enable %(feature)s") % msg_dict, Gtk.STOCK_NO, Gtk.ResponseType.NO) answer = self.Ask(msg, (noButton, yesButton)) return answer class PluginConflict(Conflict): def __init__(self, plugin, conflicts, autoResolve=False): Conflict.__init__(self, autoResolve) self.Conflicts = conflicts self.Plugin = plugin def Resolve(self): for conflict in self.Conflicts: if conflict[0] == 'ConflictFeature': answer = self.AskUser(self.Plugin, conflict) if answer == Gtk.ResponseType.YES: disableConflicts = conflict[2][0].DisableConflicts con = PluginConflict(conflict[2][0], disableConflicts, self.AutoResolve) if con.Resolve(): conflict[2][0].Enabled = False else: return False else: return False elif conflict[0] == 'ConflictPlugin': answer = self.AskUser(self.Plugin, conflict) if answer == Gtk.ResponseType.YES: disableConflicts = conflict[2][0].DisableConflicts con = PluginConflict(conflict[2][0], disableConflicts, self.AutoResolve) if con.Resolve(): conflict[2][0].Enabled = False else: return False else: return False elif conflict[0] == 'RequiresFeature': answer, choice = self.AskUser(self.Plugin, conflict) if answer == Gtk.ResponseType.YES: for plg in conflict[2]: if plg.ShortDesc == choice: enableConflicts = plg.EnableConflicts con = PluginConflict(plg, enableConflicts, self.AutoResolve) if con.Resolve(): plg.Enabled = True else: return False break else: return False elif conflict[0] == 'RequiresPlugin': answer = self.AskUser(self.Plugin, conflict) if answer == Gtk.ResponseType.YES: enableConflicts = conflict[2][0].EnableConflicts con = PluginConflict(conflict[2][0], enableConflicts, self.AutoResolve) if con.Resolve(): conflict[2][0].Enabled = True else: return False else: return False elif conflict[0] == 'FeatureNeeded': answer = self.AskUser(self.Plugin, conflict) if answer == Gtk.ResponseType.YES: for plg in conflict[2]: disableConflicts = plg.DisableConflicts con = PluginConflict(plg, disableConflicts, self.AutoResolve) if con.Resolve(): plg.Enabled = False else: return False else: return False elif conflict[0] == 'PluginNeeded': answer = self.AskUser(self.Plugin, conflict) if answer == Gtk.ResponseType.YES: for plg in conflict[2]: disableConflicts = plg.DisableConflicts con = PluginConflict(plg, disableConflicts, self.AutoResolve) if con.Resolve(): plg.Enabled = False else: return False else: return False # Only when enabling a plugin types = [] actionConflicts = [] if not self.Plugin.Enabled and not self.AutoResolve: for setting in GetSettings(self.Plugin): conflict = None if setting.Type == 'Key': conflict = KeyConflict(setting, setting.Value, ignoreOld=True) elif setting.Type == 'Button': conflict = ButtonConflict(setting, setting.Value, ignoreOld=True) elif setting.Type == 'Edge': conflict = EdgeConflict(setting, setting.Value, ignoreOld=True) # Conflicts were found if conflict and conflict.Conflicts: name = conflict.Name if name not in types: types.append(name) actionConflicts.append(conflict) if actionConflicts: answer = self.AskUser(self.Plugin, ('ConflictAction', types)) if answer == Gtk.ResponseType.YES: for conflict in actionConflicts: conflict.Resolve() return True def AskUser(self, plugin, conflict): msg = "" okMsg = "" cancelMsg = "" widgets = [] # CCSM custom conflict if conflict[0] == 'ConflictAction': msg = _("Some %(bindings)s bindings of Plugin %(plugin)s " \ "conflict with other plugins. Do you want to resolve " \ "these conflicts?") types = conflict[1] bindings = ", ".join(types[:-1]) if len(types) > 1: bindings = "%s and %s" % (bindings, types[-1]) msg_dict = {'plugin': plugin.ShortDesc, 'bindings': bindings} msg = msg % protect_markup_dict (msg_dict) okMsg = _("Resolve conflicts") % msg_dict cancelMsg = _("Ignore conflicts") % msg_dict elif conflict[0] == 'ConflictFeature': msg = _("Plugin %(plugin_conflict)s provides feature " \ "%(feature)s which is also provided by " \ "%(plugin)s") msg_dict = {'plugin_conflict': conflict[2][0].ShortDesc, 'feature': conflict[1], 'plugin': plugin.ShortDesc} msg = msg % protect_markup_dict (msg_dict) okMsg = _("Disable %(plugin_conflict)s") % msg_dict cancelMsg = _("Don't enable %(plugin)s") % msg_dict elif conflict[0] == 'ConflictPlugin': msg = _("Plugin %(plugin_conflict)s conflicts with " \ "%(plugin)s.") msg = msg % protect_markup_dict (msg_dict) okMsg = _("Disable %(plugin_conflict)s") % msg_dict cancelMsg = _("Don't enable %(plugin)s") % msg_dict elif conflict[0] == 'RequiresFeature': pluginList = ', '.join("\"%s\"" % plugin.ShortDesc for plugin in conflict[2]) msg = _("%(plugin)s requires feature %(feature)s " \ "which is provided by the following " \ "plugins:\n%(plugin_list)s") msg_dict = {'plugin': plugin.ShortDesc, 'feature': conflict[1], 'plugin_list': pluginList} msg = msg % protect_markup_dict (msg_dict) cmb = Gtk.ComboBoxText() for plugin in conflict[2]: cmb.append_text(plugin.ShortDesc) cmb.set_active(0) widgets.append(cmb) okMsg = _("Enable these plugins") cancelMsg = _("Don't enable %(plugin)s") % msg_dict elif conflict[0] == 'RequiresPlugin': msg = _("%(plugin)s requires the plugin %(require)s.") msg_dict = {'plugin': plugin.ShortDesc, 'require': conflict[2][0].ShortDesc} msg = msg % protect_markup_dict (msg_dict) okMsg = _("Enable %(require)s") % msg_dict cancelMsg = _("Don't enable %(plugin)s") % msg_dict elif conflict[0] == 'FeatureNeeded': pluginList = ', '.join("\"%s\"" % plugin.ShortDesc for plugin in conflict[2]) msg = _("%(plugin)s provides the feature " \ "%(feature)s which is required by the plugins " \ "%(plugin_list)s.") msg_dict = {'plugin': plugin.ShortDesc, 'feature': conflict[1], 'plugin_list': pluginList} msg = msg % protect_markup_dict (msg_dict) okMsg = _("Disable these plugins") cancelMsg = _("Don't disable %(plugin)s") % msg_dict elif conflict[0] == 'PluginNeeded': pluginList = ', '.join("\"%s\"" % plugin.ShortDesc for plugin in conflict[2]) msg = _("%(plugin)s is required by the plugins " \ "%(plugin_list)s.") msg_dict = {'plugin': plugin.ShortDesc, 'plugin_list': pluginList} msg = msg % protect_markup_dict (msg_dict) okMsg = _("Disable these plugins") cancelMsg = _("Don't disable %(plugin)s") % msg_dict okButton = (okMsg, Gtk.STOCK_OK, Gtk.ResponseType.YES) cancelButton = (cancelMsg, Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL) answer = self.Ask(msg, (cancelButton, okButton), widgets) if conflict[0] == 'RequiresFeature': choice = widgets[0].get_active_text() return answer, choice return answer e youker-assistant-1.0.1/backends/youker-assistant-daemon/src/appcollections/monitorball/000755 001750 001750 00000000000 12312451003 032027 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/CHAINTECH.jpg000644 001750 001750 00000007504 12312451003 024276 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1! AQa"2qRr#$4d%5H 1A!Qaq"2Br4$%񂒢#&6 ?H٫- ) \)큂o :qGeE E1H&p"U)ep 5xb5r!B"e 4R @3E 0M$T.(LBh(2 J~2LT&,V Vf\(DL fArh dtR WMwEA W/I8*ڥ$ lP<ΕB23B*#r9̝9G`ΜY<%Z{dSV;31G1޴}/#.|ǝWkIS7:6Cߨ5yv c}WUSUV}wL2YZyZ٣%/z)R(JJsJ*N`!RMꈍ9ڗ'Qp1W 58bxv(9Q azi H. &,V Vf) %dtv.C=gl߳þ1s~;aVD [9po޴ Es-uEny}\Z򜒽[o:7xE7J&'*‚=Tt劫TZwbo֫k۴Oh[umb>}kR5vuR:-)@ȌzGoWK<9v@@+r{#Β#T& .30W; tѩ]#Zz]d#:/ڊjt<;w^1zUuh]lwwsR2/)@Aj#,==b  ʷa٨ݴĞ^icF8 k]eSkgYWݫTc 1R$x Ljh`&C8`&ԵueGmۏ;W@t7fv»|tvF =33t}5b>]FZ,HJTna1ZttVZ>k"F<$A8n ̖^tgsZ6 P@6`ĬūJg[5K ˨qKX-1/=-Fԯonr3a#1@vUm[bt{tH8:mYl#\H'#0kj&P|_~LvxárPw=_ڽuHQd-n>oF+HpH>F5}sG)qWlf.ĺ#15#rDdx{&i}ݟ0S}N?/ykʫUsuS\a㴁MZ[=q_fV%:G6ذA!f AdobedF]   1 !"BAQ2#$ aq3sT%x9:y1!AQq2Ba" ?a= V(^ 67Bae жѩt1mlh[Yr"65r֮aHMРjXryCt7e[Sq2cS9=,?Z)8m&MoX䦢G'IԊkc눫DE#_~m—)MlhQU!L+vBhognM/w4f8Wv+\$z"87D= P>A8ڝ[ڛYtgvD{sj{ZU;{f)|@t~٧٫v`z@PlnRÐBm*qXw#Kjb wEUO$ v[ elTG'8 J @sG( QU\%ڟ嵦cYiK-o.35p:dLu j_Koqvh%KMrڏRRbxXٞcGlHb 7>Hfvbomgv*E%>ceŨhǴ[՗s8ycUGN\"穧;{N(qU7ci_xZmHS8#\21u"x5Һ VlCO&C%ȜY ]I7ІX\sbct(^z $ee$mkyXyWΌ r0%>A#,Q]wK1+ `@c ~DEaR<iuc==k;9m1?:9]s }=IiQѰ*cv׊㈭$R)Sm6Ҧǖu7u"gޓԛf@tN SJ/=c{Ҟ`4M귊cFmLV/4Gdm)Apr'<]7K%Ond5,J;7c3r gpQn"=pdD*7&Ef.킔`&Fa(=s/ʫnic8HT Qz&RJخ޷Р=lqAL!r&ho1UӔ˟K3\CĬؗD Norg2ENu!%1T99Q1?wOs"'J`:"%ʃUv˹Sw.tSPVh&!P/yGznxxfBq`cb Hho #40:dGNH10D*gb*V0"`H5#B R,䰿reVU˻ 0x_a` DEϛR EkPQKbq ΅7.Ս QEQQbϦjj|μfL2%n{̼3wsMhoa7>:)%NhUI`L?:M^9HvCq2V@2.7Zpr ݇%b1[xɼP"z}>w>1r<3C\M5cfԹ+D_X3OetП^p{/^W`>O K8mȒNN##0YAZ;pt&s޹K$l]OV/&|Ks>Mіm"Tk~v·Jr31P9&a_L]FomݽIT6lKnAlQ{=qaaZ]zVlU3訸E^3\8ꆐY\.|)\^V2f 9.kɏMv z1F @2| X{nQY% kFCu Km beA~JF={LPZi5Ye?_֬淍"Y;q6U&B"!RJ{RU?!qやp@m*MIqӔIj;CGݵg׻kξ{o4r׏[buI-OnpSQ̥^]_/\侚+Flq 0|0:=gH?[EɤΕ-$mZzjg%& P g o!*G JA”&++xddG5D1"Dx"ɉ:V1UNQ؁vW[# Baq`\eAljR*oN9s8MlH˰E>/_qQL)ͣxqD;O.AZNICaMm7u|?_t`56لN!$*&bnL㩹h(mloEC1*+leΟ}:!gRaGH@KB/Z$YkS-_T/~n tP?=~ñġ}|ZԷ9P 'aqfw887ԭ?@]h3"/̡(g;Z[\y[f8*V([| ɧ#<qӏ14i#`}OZ cO] ؋VyG3dߖb:ql.fyr7aIb%;pb?ۧoBppT/.$r79dE9*YdN-<o=IfnuNlHpHv#Uk%8-ڦ/%Kkkv&gsd&h1KrVo+6 B% K9sGUGhUZ]PPW]W,6* -)" Ņ]S5jb/bbŐ M TqA 4(m Lv{<{g=s;:[j=4Ǯ*ѕdq]< wnHƱ6ۘʁvbZ# 6u;Q\{8?k̴j‡Kq%9bCi@Щނu%cm`ZbCNI2_2p$~x3@E4=s/oO <q5o[tg+jѰ-ؼ"ʭ7c_">{xẖ6/8 V:aOM_LcŦF;<"v|CzQF]ך8!8+T8?y1LǗvSEr\:Ҏkg~A77NtH!ыQT5,POګ/Ư1fbʫ-X%2he49XIR~RE IJ0}\ ˂>]c^_+~^MLWwf2dwAӚ9v1v fNjsb"ԕItب[y[T+U( HD,#N*es0pCĪQ *7kk!W9yZ};0Yg_kD襥^وs,WǪC!sQf-u4#mxׂӰ~=J:4N)4b̍h^Q2SU5~B3D@>Acd~DeKak g.VFA#f?q^XQ뺺ԣ_Ks b|pIlo Z&f &J xs])тQ9Cr:Nv&p3C4c9iNA\y rxf 7}4&(͞N`iDJ eY'R%tWX'@Ći6p=Goއx/;&qHxZ5?N=4_b'd8yً9mmia3gfXeD^ZU\LqSZA⼽4W*'{laF [X`2}xl/(- Z2a` /}̳]oCBqX`Erކע Ep(ǚ~̨+CB.cG/p1!1Wi>\cl-"1!w5Wzm:xL0([>{Ë3>s~7lBk_P+,}NN,R*+OS3/ڦa@VM͗ XrMvbt_9 ;ݹS}<_)KLA鄀ӄR%d]9s3f c#a&CvmZҔGdn1n{JsIUaIJӫ ?%AJhfκ ]$-O>@ Yq"2UթLqk~֒@Y| P񓆨E/6)j+Jo\R8Jlꀵ$=P-k J$7NxKK_TMX2A[S6w]OtfiC)ibQyHV1घQ) *5*rV [8xz"GyLlq>H3 S%Kq>WogkofSV%@sW[GqY;|?;BPL1 $E)R#ZQG)UB[*ԡA_9Nl'??ǎ̾cM{oo~~mڔ)i&:HXџN*q7&8kt;9jp.OGNXoŵDwa̘.F}bm6t' @wC1}/}<k]I!p~§n0VBrQ6GP,5~y+ȭĖ2o.٠kdNfԝ0 'Ą:L}8BC=ApiJ_sOQAFi5[DIvZOT*8>Tj+qF`8@j'QtPt*\[[]Fvi_ u' (uG3ͤ!g:F%feIdTMMPb-1Q8.%~u]!|@Jmݳpٯ-0>-1S+ $V-4<'sZA{͟l_InۃM%(wa^،) y# 1f ad!%ӛxAI9R C ҭĦAqmވa7Vi#/"v6vمxm ([ AK(?BH{[l, ]K whI"kDWO;7`c^ ] 'Up,uAR[MY8H+.?lAII&[ZŋRZCA\nju0COv/Ҙh+ނL,+Ʌ754B``o?ڈ˗>^/bzE<ܳ2H.nt <( ~l;ޅ^2OL:՗y7`Q4#ݱ.p-=<5<*|Х᪚RB9n(Yvzq_kZ胗2l>uN 5ND%֝L_VG߫Ì$<%q,+ՅPѐ?a xdA6T!W;0tCV Vuٞfy4>9S8ھ,fFyk{~~hw~zhv5bQ,D 瓸C2& b>.]u r"߶  7,w!#0FdƲz™*#{A<HJ)b€SK[2; Bk(H{߶P=4Odkڽߴâ̵⩗+`H_Λa "\U]=U~ w OnRa&c%$,kֿ 'ބ+Y`{Vr[':/aQ=kHY_}(%EHIh\z%KqZ4?-Q]vlF&}Ng=%6֦Z;e5?ee⍽Fy|Yd&Ό=DGvqlE8l+fdib8jV%~vtlCy hBR\ť"<6/2:mGY=+pL㦼3QMzgsU:y4Qo,\b]y'Bk{4JG[YcWhZ3ق:sN[}SƯ+Aُ ᣤ;Q N2qDk+lm~ٍLƏS7M+6~܆&D.DF{ Z("EyS+`[ꄏ[|n18#h @kۢJ3jQ#" ťКhD! ETJ*G<"q:>$`^B)L$, $,Y!V5XxBԉ4^-ëlWIę'6+k4udv>bcHK4{h|&*dt i-IG*CV9ݼI LBsö\B$aPXiiVWB;~ =#vs7oW̡+8!$'nX >Id$`#YY2=U^JԒ7Q)TT2p JˢtR|Rk;GYi$M0Mlj{Vt8v˟d2 W8jPt2qQv0ЍČQ OTK~z ~R۬VuyUQJX1`ueX:g`d#{n!IENDB`youker-assistant-1.0.1/qml/func/common/TabFrame.qml000644 001750 001750 00000005657 12312451003 022564 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import StyleItemType 0.1 Item { id: tabWidget width: 100 height: 100 property int current: 0 property int count: stack.children.length property bool frame: true property bool tabsVisible: true property string position: "North" default property alias tabs : stack.children property Item tabBar: tabbarItem onCurrentChanged: __setOpacities() Component.onCompleted: __setOpacities() property int __baseOverlap : frameitem.pixelMetric("tabbaseoverlap")// add paintmargins; function __setOpacities() { for (var i = 0; i < stack.children.length; ++i) { stack.children[i].visible = (i == current ? true : false) } } Component { id: tabcomp Tab {} } function addTab(component, title) { var tab = tabcomp.createObject(this); component.createObject(tab) tab.parent = stack tab.title = title __setOpacities() return tab } function removeTab(id) { var tab = tabs[id] tab.destroy() if (current > 0) current-=1 } StyleItem { id: frameitem z: style == "oxygen" ? 1 : 0 elementType: "tabframe" info: position value: tabbarItem && tabsVisible && tabbarItem.tab(current) ? tabbarItem.tab(current).x : 0 minimum: tabbarItem && tabsVisible && tabbarItem.tab(current) ? tabbarItem.tab(current).width : 0 maximum: tabbarItem && tabsVisible ? tabbarItem.tabWidth : width anchors.fill: parent property int frameWidth: pixelMetric("defaultframewidth") Item { id: stack anchors.fill: parent anchors.margins: (frame ? frameitem.frameWidth : 0) anchors.topMargin: anchors.margins + (frameitem.style =="mac" ? 6 : 0) anchors.bottomMargin: anchors.margins + (frameitem.style =="mac" ? 6 : 0) } anchors.topMargin: tabbarItem && tabsVisible && position == "North" ? Math.max(0, tabbarItem.height - __baseOverlap) : 0 states: [ State { name: "South" when: position == "South" && tabbarItem!= undefined PropertyChanges { target: frameitem anchors.topMargin: 0 anchors.bottomMargin: tabbarItem ? tabbarItem.height - __baseOverlap: 0 } PropertyChanges { target: tabbarItem anchors.topMargin: -__baseOverlap } AnchorChanges { target: tabbarItem anchors.top: frameitem.bottom anchors.bottom: undefined } } ] } TabBar { id: tabbarItem tabFrame: tabWidget anchors.top: tabWidget.top anchors.left: tabWidget.left anchors.right: tabWidget.right } } youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/compizsettings.py000644 001750 001750 00000006255 12312451003 031742 0ustar00saucysaucy000000 000000 #! /usr/bin/env python # -*- coding: utf-8 -*- # Copyright (C) 2007-2011 Tualatrix Chou # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA import logging import ccm import compizconfig log = logging.getLogger('CompizSetting') class CompizPlugin: context = compizconfig.Context() def __init__(self, name): self._plugin = self.context.Plugins[name] @classmethod def set_plugin_active(cls, name, active): try: plugin = cls.context.Plugins[name] plugin.Enabled = int(active) cls.context.Write() except: pass @classmethod def get_plugin_active(cls, name): try: plugin = cls.context.Plugins[name] return bool(plugin.Enabled) except: return False def set_enabled(self, bool): self._plugin.Enabled = int(bool) self.save() def get_enabled(self): return self._plugin.Enabled def save(self): self.context.Write() def resolve_conflict(self): conflicts = self.get_enabled() and self._plugin.DisableConflicts or \ self._plugin.EnableConflicts conflict = ccm.PluginConflict(self._plugin, conflicts) return conflict.Resolve() @classmethod def is_available(cls, name, setting): return cls.context.Plugins.has_key(name) and \ cls.context.Plugins[name].Screen.has_key(setting) def create_setting(self, key, target): settings = self._plugin.Screen if type(settings) == list: return settings[0][key] else: return settings[key] class CompizSetting(object): def __init__(self, key, target=''): plugin_name, setting_name = key.split('.') self.key = key self._plugin = CompizPlugin(plugin_name) if not self._plugin.get_enabled(): self._plugin.set_enabled(True) self._setting = self._plugin.create_setting(setting_name, target) def set_value(self, value): self._setting.Value = value self._plugin.save() def get_value(self): return self._setting.Value def is_default_and_enabled(self): return self._setting.Value == self._setting.DefaultValue and \ self._plugin.get_enabled() def reset(self): self._setting.Reset() self._plugin.save() def resolve_conflict(self): return self._plugin.resolve_conflict() def get_schema_value(self): return self._setting.DefaultValue youker-assistant-1.0.1/qml/img/logo/Manufacturer/ASZ.jpg000644 001750 001750 00000014070 12312451003 023441 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     1!A q"Qa2Bbs$ #4T3CSt5U !1AQaq"2Br#3$ Rb4dDTt% ?Yx(. `FPAxCAAҘn0A8~PA8{~z^0xSAKc.NoK Bam՗j,. `FQRO 鯢X ǡԯP(H Pi(4^Z&ͶQ4LYUPtmaջƝG2>ww ; nYP:ǗG(3:3Wx"GdG`o0M=H5@)(X,} tGe%]q3>8)/F~Y䫱V܇~?##&Za"ѕ1T3#o2ϘFNv]sY[~GAqd?GR;OLr]YÑ87;ײ,\sҜ؏ p{3ĵoE~lNPrRm3j/G4[xem+,9 1˻0Hi~zȌD8\ߎ )B0!/Y\4 C=f}g3Nm}$tihq g5ǜVqp9Pt`2DiI *;Z30D]mA*kK{>ge> z]֊R5Җ@!ðdG)ɱO4W3wүP]f?rVgH Eb1kg[c"R݇ʵG۝-ewd%ۆbqV=E{pQ5u?Vpby@&6=7tڰu$=P͒r9Ğhe)IOA]ZLS]r;A[ CsJIgzc-w:S+ [^E;2ϛ^S3I8HOOꦮ06 w/%uh b8 Y6Ґ8/YW4KuqF`MEk%G#0?F~Oiy{g^*D<}y^WM6l|'5lS6HD>^r9g)3- dT[UEBٯKOP@/ x6iI=mhAҺDFٙQ*ٳF--۔/ NZ7Sݠ>qdW[:5ԭ E zp'L\{IXi2o+RQΐzsrcɎJa deIqk6-Ҥk'4Hp!rq|J}жj5{b(oVC~zg*¬{u5҉ǘЙUY@U31E75~6'IEs!XpL#K-ϻho.R6XOdKfjj)'B3eɅg*ff\|??5R& J"cpip0u/yڬj|F J)d'rm`R 5$ጾ1 YND`LgX #)T$Q` BAP/0yɩ3 ۃULo}KY}3Om}'`wwQSRLII LI޻=_?/u2RU—!%fI}jG 3rj^O]T** 'W7/iꭝY*JA:L%(V 2!(fh/ԟ$=W)d Cro PBӨu0ecn-qYk;7Ƈ|V&\ H||tO|ihCs>UTuy5&Sņt5цqUCwntdޛ>nHd>ֳ@_t6h ԙd6MyC(9M TybHx8ӎz/MڤSoPh١: BRs 2 3Li$d5͕LSU(MMr5xmSFːJR9q\:GMĞmO"zݽ8(o9԰nEMVj|zg\_hhEЋٕ,Cw÷l~ߟ.^I`,9br":%ӳ?+&ٍt;Jv蟋 ە4ARY$ L&w`pk@ڜA6с pr2ʥwfM?W! b{~R6ƪEn5̥ %"}iQ}LSWP&}2(R%<7n_l^m녇kЁ ômp;_9־_S-\rIT&  XB?MT|H2Vͪy}x{~?48ģ` !HBgo P>_FHME>eLjQfIxƿrwӬu2x%#Bxd%_\2+Ǝ^4|o2~ȭz |hu~(mknX[Ǜ-jIO6dHt^$˘ŵhўUa9h3|?nheEKafֱtIz$_j< ~%$1-ͩ@[r^V&`+WSˌ_m6NŔ:>Px1vZUS;e &10+oo-BH c<@L8J|Ot5{܎+ WڳR|JۄKؽ!pM#2gs=׷R s#O"%Iv}koH?ܖI5 ʬqʜр>^ %q8Y jђHO;O N9cm(Fd ?4g!0;og{\4k)- vp'7}m1& PHP! 0n(}=;fq´TG] >yu& 2"㝦eZ!y<ɔoͱpLd!f {;C^kk8Rc$kU\Y#u9# *_,{~s1>Wg-<;~Z3R0RUZ1pv7QVvU.ZmU+VGO. ; cԦrzs9Cc(T_::t@Ķ)O"|~-&˩ʳo2k]&t@jZJE\t Ȍ+mZt0GՂRMp ?A(_/wnT7JmT\2E ~C9?9D2UEr?jəc)Lci&ɣVplA+bQwٛR#0 }A۴vt`ըm4B@ Jr9vbDXsSPFd]8YgUn֗ lku-<UR!?z #У5PZ'#6{q?`'>0Hpb;}]kjk7/J6XX,)+"ݣWbg%<`y*s4^$ǐQi>*yPplu4Q3`S9s2A0lA s-a|j$ԇA9࣢1'i*{>)`N$U,".4GvpE(6$ihx o#I `rL<GоGɌjv:_oR,Q;wcv;׺R>vڲZAS(| @-M?q dEJ*ڢ?yTP n}bR閳>F$wvDzbDճ%f'Em1a9g~DanY)gh0;clWWS\A+=52WJ'P05H$@PࢼZP(;53a'ɌJ*Wt4N6a2&͂Uأp=C5e'.&( <@s3sJPJp t.90R Frg1v陆Lr%c1#nP) wÅMXX,1mPcI:؉gqFwOrU⫆2sEe *yrȀ7hhHV:\#|JznQe5l]jŚH6@>۸Cs" 1p8"vwaY ~swM h kBK֢[NR3ufG V/*W1޳PŐSc)| n*v_9+ )Lc"<˗,{;??[S}b%p?Q Y2Ǟ"~0tYA @^,kHtgtUH(H)K %6ҭ|rv˔֏|EA7gˤ PG^ߠ}$=Q9t 8>a>h[F5e1 8iD^PFP@w|4Nߪ0~Nߞ0Ax~`F s8>a>h[Fyouker-assistant-1.0.1/qml/img/logo/Manufacturer/MICROSOFT.jpg000644 001750 001750 00000006445 12312451003 024360 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1 qAQ2B!"#4% 1A!BQaq ?Ǔm}#2&MǻGEM| o.~\ [;-`@me˰w"?Ť].M NPoZQ{tQ߷P vhI E˿0P%P\pxh)kl]ZMp2&MǻGEM| o.~\ [;-`@me˰w"?Ť]<1֓ z\-& vF-)$&wZLd}끪8=^<<EG{WkvUoÝw ttcG.tC }q"FF* Jm2UpX~]c%ҋ26NKkVDճҩӡr[۪Z$iL8rZ3GU &ZA]÷EBK? g.]- yDקSE%W2X7Adh;qԳddEڷ`d2*hy!X*Ujz&=_)PHpL<C^mmI~g-D}T.U(E:sm:tSZuތ[OG\ ' <?\?G՚w7(t,T$5eJcXœEIY>T yVqX">c6;2#)|*Ɯʛ`T߼W}ݾs]) rGӣ oI=;1Rjiv'CgnoI#?U43%䫑Y~=!C ncE둩SR{Se;CNNtMG $XY6yHK-ӧ;gq;êFWUJXӻ-Z1ݺ8z#e:d3=D-/f0d Ƃ̯%F֊q4=QJ#bD5"L6p5-%GnEQ- U}17Xղ]G|coU>gE%*Ʒ@H(JnB~nT}WyZr2ǩW#|J?I"TX;T=,W> /yU2|A܆)B[Կ6[%"6)vG,[&.pD$O_OJX.>ۨ]dc4.ھ]+| U<-QU{TR2& 6fןWebmずzwGZ.n9=A] nR4Ƒ&xIR*. SS-^`s=`~ ߙd|S,lt99Abg<3zd4!H@FÁxpI%dۦf\!o1q>Ace) o]T=ȫC";(W *#|RUxb+ي)% oXۭ$7$rP#IE#dsAeW!B2j '±7y!=80K0fqۇXg4.#cDc(VJG+pP̥q0Zʭe^韀y; :q́ oSqn:0Ec:z9x/gJaݍ5VZ /o(QFe!fF ꦵG.)ią+7ZcMŲ6lV&"U G5N\̹R@N"J+!|* ܝ_ӻ. &[y#c`RAd ]ughl\ڤ$qVʔJ MLS"u wb?Ť].M NPoZQ{tQ߷P vhI E˿0P%P\pxh)kl]ZMp2&MǻGEM| o.~\ [;-`@me˰w"?Ť].M NPoZQ{tQ߷P vhI E˿0P%P\pxh)kl]youker-assistant-1.0.1/qml/img/logo/Manufacturer/ONDA.jpg000644 001750 001750 00000006262 12312451003 023531 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF] 1AqB !Q2"a3C% !1AQqB"2$ ?&\˓_'T eA5^Ȃ:I~YE˯0%qFƂJT.];Vi4し& NA5[*A56(kP:uQeAϺ^aEPJˍ\`wQ]b)ql2i].M~PkʶT(j=lQק{" ta%ugA.Š +PtSZd [*su\/Se"$ivJn͋6D0vz:oWUtSnkw{S:.(C-䀘<+p1ϏG 1I&7gqMz׊KdATrL{2Pfx+b 7M(Ԋ*M(\b9O_b%ҘY+xࣔc*;O~㾌_OdF/[JԔ]]<+6-wK<^Xtmj>wD? ;M>GG>?㛰3rv4kMn(dH@ e[vgM G^+s$ľ({aԗ3 Oq~Nj/֟"P:1bfw7Kb%ؾؘIX>bHJsc|fmH̭tMv >%3Uf|ml}{-z}chE_TVZD"d8;wx-TkBgyQS(>5)魸  O]i ñ>az1^Eݶ$9'dFfq cp)Zi˔derg=n!z==sqzC.bx&"ujU"y\g(P}]o[*qNuL+?CYKoJ M 2LY3Rx@,fir cwO6n-FCE3H4C(I J"ط8=Mt-;ȰGtboVL)iM2knpXƢ9Co\lW4k]qeZow7oFnoNǎ쵕1n.|'&Ưvls -aD,=*S6i4し& NA5[*A56(kP:uQeAϺ^aEPJˍ\`QB)ql2i].M~PkʶT(j=lQק{" ta%ugA.Š +PtSZeһ\(1:וlQ{(آ OuBDPEK>΂.]yA+ 7.4V2rEuʵŰIw 5PbuB *P QD^.Ӫ-}՝\ *Wn\h 4eB;O/?kayouker-assistant-1.0.1/src/aboutdialog.ui000644 001750 001750 00000015227 12312451003 020766 0ustar00saucysaucy000000 000000 AboutDialog 0 0 400 320 400 320 400 320 About 0 0 401 271 0 About 10 1 64 64 :/pixmap/image/youker-assistant.png 25 17 351 20 Youker Assistant Qt::AlignCenter 296 42 101 17 V1.0.1 18 66 361 161 true <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> Youker Assistant is a powerful system supporting software which is developed by Ubuntu Kylin team. Mainly for the naive user, it can help users manage the system. At present, It provides system junk scanning and cleaning, viewing the system hardware and software information , system customization, task manager, monitoring ball, and some other functions. </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> The software is still under development. Please visit www.ubuntukylin.com for more information. Welcome everyone to join with us. youker-assistant Homepage: https://launchpad.net/youker-assistant.</span></p></body></html> Contributor 18 76 361 151 true <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Maintainer<span style=" font-family:'Droid Sans Fallback';">:</span></p> <p style=" margin-top:11px; margin-bottom:11px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ubuntu Kylin Team &lt;ubuntukylin-members@list.launchpad.net&gt;</p></body></html> 10 1 64 64 :/pixmap/image/youker-assistant.png 75 22 221 20 Youker Assistant Qt::AlignCenter 298 20 91 20 <a href=https://launchpad.net/youker-assistant>home page</a> 291 281 81 30 Close youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/desktop.py000644 001750 001750 00000007036 12312451003 030327 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import gsettings class Desktop: # ---------------desktopicon--------------- # -----------------默认值----------------- # Get Default Value def get_default_schema_value(self, schema, key): return gsettings.get_schema_value(schema, key) # Set Default Value def set_default_schema_value(self, schema, key, type): default_value = self.get_default_schema_value(schema, key) if default_value is not None: return gsettings.set(schema, None, key, type, default_value) else: raise NotImplemented # ---------------------------------- # show desktop icons, True/False def set_show_desktop_icons(self, flag): return gsettings.set('org.gnome.desktop.background', None, 'show-desktop-icons', 'boolean', flag) # get is show desktop icons def get_show_desktop_icons(self): return gsettings.get('org.gnome.desktop.background', None, 'show-desktop-icons', 'boolean') # show home folder def set_show_homefolder(self, flag): return gsettings.set('org.gnome.nautilus.desktop', None, 'home-icon-visible', 'boolean', flag) # get show homefolder def get_show_homefolder(self): return gsettings.get('org.gnome.nautilus.desktop', None, 'home-icon-visible', 'boolean') # show network def set_show_network(self, flag): return gsettings.set('org.gnome.nautilus.desktop', None, 'network-icon-visible', 'boolean', flag) # get show network def get_show_network(self): return gsettings.get('org.gnome.nautilus.desktop', None, 'network-icon-visible', 'boolean') # show trash def set_show_trash(self, flag): return gsettings.set('org.gnome.nautilus.desktop', None, 'trash-icon-visible', 'boolean', flag) # get show trash def get_show_trash(self): return gsettings.get('org.gnome.nautilus.desktop', None, 'trash-icon-visible', 'boolean') # show devices def set_show_devices(self, flag): return gsettings.set('org.gnome.nautilus.desktop', None, 'volumes-visible', 'boolean', flag) # get show devices def get_show_devices(self): return gsettings.get('org.gnome.nautilus.desktop', None, 'volumes-visible', 'boolean') # if __name__ == '__main__': # ddd = Desktop() # print ddd.get_show_desktop_icons() # print ddd.get_show_homefolder() # print ddd.get_show_network() # print ddd.get_show_trash() # print ddd.get_show_devices() # ddd.set_show_desktop_icons(True) # ddd.set_show_homefolder(True) # ddd.set_show_network(True) # ddd.set_show_trash(True) # ddd.set_show_devices(True) youker-assistant-1.0.1/qml/img/toolWidget/chrome.png000644 001750 001750 00000004176 12312451003 023020 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe< IDATxlW]lGfv;qN:`L4A.B(PhPA[dGPA+ !% Z/h))-N6?;?vݻ?39gvֹgvwv|s̬o>/۶=ͷ+24䏝R=? .lqCm팅'˗~_k_\;8[ќn6jT|}*vDzՀZ* yd)\iR}7'lC|4V=cɹgFGO_N=(XM=X(^Aa sYN{Ok @06Μ$hly:1j^vG QJlȉ(e'3y,E*'!<9Ӊ:]D[Fas3Q 242?4#pE*SE>rT&f'mmR&Ir(ɴZN"pU$w`|ĢI3* I;|q6E0NPwLٓiiP hP-+ JT O  j^+cFp31dQl#50u=c\v.d;R$iuf ASk]{~7ѵM[a03: <G `%% l\•!> ST.mŞLVѤA65“n.dMNGJsqxCs^^4W{`N~.~YH W9" ֌P!9ԃ}ޘTO2t)euGxT|W\@3R+opg~6w mshRd0J 5"k;hThN(#ixb$,N}?^_"J)b"ڥ%_J{ӫSG4E/yQkHI G("Jd#$Py;J#N؈@/CLDQs'O#QʕB'SKfkDs!40ENS'Er!$lȫ.!W&g8: R[J9T4)֯xFn8 KydQ,*b3&IOh>yl`ǻw#R ({:ԠKŦ4DR_c*rU oBd#p8<I\+﫛^㜐a"N!J#dz7>|W1BpkUОW*+2$d$Kv*JY^_3Gi3`СtL. B+Ð'ъ4wn@>vIH*\УK?o%3<+VDoWp~GsXj+I T >aDk `i=63n'': yOVT„/V߮<ۃM47)D~*}p3(񑋡W;lQT:y8y߾9*WE1jGgw?Ӄ9=&L&!`hvE*+ |O't^qx}e8iwtݱ{+MP n(z&䅀\&&!V|::rBן۔O-o;MP8t9:_`D$ЀcP2q~_:6d $a4*D9PtX׸~"5F[@źD] NI71 \9}(_ xi FWNGENƄD u?^X5C x4ћBv6"^v<,<| o![ѵ,2z#'pkHӐJH߁KW.llG#4 4kM-A> =*&kF/d?R(, jiG5t ]][_A?ޯtxz`ŧsPd#t\<"۱m9Ro`$7^ 9x׷1 Ǩ[IENDB`youker-assistant-1.0.1/qtsingleapplication/src/QtLockedFile000644 001750 001750 00000000032 12312451003 024424 0ustar00saucysaucy000000 000000 #include "qtlockedfile.h" youker-assistant-1.0.1/qml/img/weather/d25.gif000644 001750 001750 00000005435 12312451003 021433 0ustar00saucysaucy000000 000000 GIF89a008u݀˸ζɱַݍƩĚƷ˲ՁɳȬ󞨴ٿڅ兝éϰͩ5r8s9t:u;t>yC{8dUGp^ceeffjQyvswysy^}܂ᅵ偰`zz֍*`'Z/l4r3p4q0g5r5p7t6s7t9v8s:v9v9t5l>;w:w:u;x:v=z8p5j>{=z=y>y=w?z>zA}A~4dA|A{B}C~B}DC~=q7gEHGCzG~>oMDv=jJCtQMK}AmGvNYSS\_VIta`\Xdb\ed_\gic`mkbQxotssW~vuvzywys}yׂ䁴ㄷ恳bin1r4d[tvv|߃サ▸ۻ!,00eN*\ȰaBYkɣN:;3jȱǍyg(S\ɲJ%(d͛8s3=J @ѣH*]4)@z3Ր@XC~a"8q䨍#q Y O&~PRIc܏莤sGozTC&ٳgB&(6p{C6pl=FG wxD$9BHpڼY2) P0 & Da*(9(D,lbn;o,lDFosAm:`v #$p"R¶|C::7 d 4 I+H8 n/o04C4 3Tr=@ , /b> Bh0 H.>,TOEsD0 %Pa<6816#XG:ЁP0XP`k  آ"D!!.^x*T)Р NAE@dHqA" y[D5/p +.PщN"I!S$#i_/+` ¸0Y_B?bE.b SBU I +|.a C .< ,r8.L) -00 )Z-daJTb )-cp=:L-DxX1™Z@8@g 1Nr6sƈ1! gg=qJn cX3G>,48@OeSG -#)i~ H Q-G+d352ь:ay2Z~  ELچVD %Ua`mT-Ԣ cC2Sc +{B͘qWծxB3@Xf E,{XgE* b0 p:\ht B*rьh#a 2#;e3a.x-3ZhD#Xp;\fC30# 5`]z%'A >#F;Q^`{0| ӨQ{ӘF,1WL _]i0E! 1< SXB iX%4xP QjȘQ4d,xdx12SX"==Bz/ 9@?Za](K Y wH`~;\q0:6u84RA0܆(CY3|wBpC0$:G>}T`5L#xC>0 l\51#cxG/ (c<2hE*q2]2\ ʾ} 0ae©ЍmtװF]1a.]nHc61xc(ü~6r |H; F7arfȸ7{G9;youker-assistant-1.0.1/qml/img/sysButton/sys_button_close.png000644 001750 001750 00000004634 12312451003 025031 0ustar00saucysaucy000000 000000 PNG  IHDRhHtEXtSoftwareAdobe ImageReadyqe< >IDATxb?^16[_f@@qF ra Or?M 222@> _ixaqLԭj(kicny  C)6b# Pau6'ԃ 恜kA4@ @' 3Me:HJĈУ L0;1}thm3`h,0!ң@ P̀BW'~@1t^|zZtL &ёA ˢ;/M۶m:vvv&4p9~ W>abaC |||4888~ "zy [t巰mEk#c@Ng{0.OYOO>m FhE.(ՈH-sA (># @+yu8/YiOuIF՞k׀!x x.Sο>JIIq=}4 ؓ u=@{+))߽{=)0@Cs-Q!Ϲ<_{h (?BCc9.߀ J``&Ԟ yY="{C(>'FE9+%e~h,0` ~el@a߾}ׯwCܸpܹseP !PTrB1(~B= J(rd!@[H>Q34)24B3%7rPx MJaB%} ] ġ.?>ր}l"Ay }ڣ H|E .!R•:^?B(@ l)(($ ff KBhCd٣ ڣd{!Pj+"Va-j@ dp&` ju=!vb=7\3 ~zA\\}^LFYLAK;M2sww@`cccCx9_&Kro/Sd.=GWv I|?-(Z`],i[k͚5/&`X'ɑk̙3A1{8C"~GV6׾UϾ| }@y }a LqU@Ç^xq8 #include #include #include "qtoplevelwindow.h" QtMenu::QtMenu(QObject *parent) : QtMenuBase(parent), dummy(0), m_selectedIndex(0), m_highlightedIndex(0), m_hasNativeModel(false) { m_qmenu = new QMenu(0); connect(m_qmenu, SIGNAL(aboutToHide()), this, SIGNAL(menuClosed())); } QtMenu::~QtMenu() { delete m_qmenu; } void QtMenu::setText(const QString &text) { m_qmenu->setTitle(text); } QString QtMenu::text() const { return m_qmenu->title(); } void QtMenu::setSelectedIndex(int index) { m_selectedIndex = index; QList actionList = m_qmenu->actions(); if (m_selectedIndex >= 0 && m_selectedIndex < actionList.size()) m_qmenu->setActiveAction(actionList[m_selectedIndex]); emit selectedIndexChanged(); } void QtMenu::setHoveredIndex(int index) { m_highlightedIndex = index; QList actionList = m_qmenu->actions(); if (m_highlightedIndex >= 0 && m_highlightedIndex < actionList.size()) m_qmenu->setActiveAction(actionList[m_highlightedIndex]); emit hoveredIndexChanged(); } QDeclarativeListProperty QtMenu::menuItems() { return QDeclarativeListProperty(this, 0, &QtMenu::append_qmenuItem); } void QtMenu::showPopup(qreal x, qreal y, int atActionIndex) { if (m_qmenu->isVisible()) return; // If atActionIndex is valid, x and y is specified from the // the position of the corresponding QAction: QAction *atAction = 0; if (atActionIndex >= 0 && atActionIndex < m_qmenu->actions().size()) atAction = m_qmenu->actions()[atActionIndex]; // x,y are in view coordinates, QMenu expects screen coordinates // ### activeWindow hack int menuBarHeight = 0; QWidget *window = QApplication::activeWindow(); QTopLevelWindow *tw = qobject_cast(window); if (tw) { QMenuBar *menuBar = tw->menuBar(); menuBarHeight = menuBar->height(); } QPoint screenPosition = window->mapToGlobal(QPoint(x, y+menuBarHeight)); setHoveredIndex(m_selectedIndex); m_qmenu->popup(screenPosition, atAction); } void QtMenu::hidePopup() { m_qmenu->close(); } QAction* QtMenu::action() { return m_qmenu->menuAction(); } Q_INVOKABLE void QtMenu::clearMenuItems() { m_qmenu->clear(); foreach (QtMenuBase *item, m_qmenuItems) { delete item; } m_qmenuItems.clear(); } void QtMenu::addMenuItem(const QString &text) { QtMenuItem *menuItem = new QtMenuItem(this); menuItem->setText(text); m_qmenuItems.append(menuItem); m_qmenu->addAction(menuItem->action()); connect(menuItem->action(), SIGNAL(triggered()), this, SLOT(emitSelected())); connect(menuItem->action(), SIGNAL(hovered()), this, SLOT(emitHovered())); if (m_qmenu->actions().size() == 1) // Inform QML that the selected action (0) now has changed contents: emit selectedIndexChanged(); } void QtMenu::emitSelected() { QAction *act = qobject_cast(sender()); if (!act) return; m_selectedIndex = m_qmenu->actions().indexOf(act); emit selectedIndexChanged(); } void QtMenu::emitHovered() { QAction *act = qobject_cast(sender()); if (!act) return; m_highlightedIndex = m_qmenu->actions().indexOf(act); emit hoveredIndexChanged(); } QString QtMenu::itemTextAt(int index) const { QList actionList = m_qmenu->actions(); if (index >= 0 && index < actionList.size()) return actionList[index]->text(); else return ""; } QString QtMenu::modelTextAt(int index) const { if (QAbstractItemModel *model = qobject_cast(m_model.value())) { return model->data(model->index(index, 0)).toString(); } else if (m_model.canConvert(QVariant::StringList)) { return m_model.toStringList().at(index); } return ""; } int QtMenu::modelCount() const { if (QAbstractItemModel *model = qobject_cast(m_model.value())) { return model->rowCount(); } else if (m_model.canConvert(QVariant::StringList)) { return m_model.toStringList().count(); } return -1; } void QtMenu::append_qmenuItem(QDeclarativeListProperty *list, QtMenuBase *menuItem) { QtMenu *menu = qobject_cast(list->object); if (menu) { menuItem->setParent(menu); menu->m_qmenuItems.append(menuItem); menu->qmenu()->addAction(menuItem->action()); } } void QtMenu::setModel(const QVariant &newModel) { if (m_model != newModel) { // Clean up any existing connections if (QAbstractItemModel *oldModel = qobject_cast(m_model.value())) { disconnect(oldModel, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SIGNAL(rebuildMenu())); } m_hasNativeModel = false; m_model = newModel; if (QAbstractItemModel *model = qobject_cast(newModel.value())) { m_hasNativeModel = true; connect(model, SIGNAL(dataChanged(QModelIndex, QModelIndex)), this, SIGNAL(rebuildMenu())); } else if (newModel.canConvert(QVariant::StringList)) { m_hasNativeModel = true; } emit modelChanged(m_model); } } youker-assistant-1.0.1/src/image/ok-hover.png000644 001750 001750 00000006516 12312451003 021460 0ustar00saucysaucy000000 000000 PNG  IHDR^T: pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F{IDATxb_0!H;Cffd 02h b_ٍXHq_ ,b̙?5MWF ,>30&1J*"9dǑ43 43Ͽߴ3?-  v/]yfԔK 0pC"PL sHO9/KC?hΤJXDo3Y*p͝, 62ˆWwԖ @CE,:YP؁!SPP"Φ8 P%|r{,{zfJxlٟa 1B*&oc/TL&Pzm|ȵ!pm$(i׼옱 1zR1-9P]#= Yp:^w݉T#=[Բ0Dd t:^ÝTԳ;x3|H*/OV!eDŽ]c5T4|X7t p<Gi?xK*Qoۤސ !Q['v3IENDB`youker-assistant-1.0.1/qml/img/skin/h_classic.png000644 001750 001750 00000036254 12312451003 022320 0ustar00saucysaucy000000 000000 PNG  IHDRIAWtEXtSoftwareAdobe ImageReadyqe<s(OI!03iQѿBY8?gd$)d0N'+~P `/!'YFd*CȘs0? zʪ/>u}d,<{66,_>Ҝ#%=[ ܞ-A` mIV o4WDys/ cA( y#+O~ \&̃ W/N'&~mZ `@; _ Nz ; v] "R@=Tu2 @w! e/!U!CHYZy/gM<VYr=K9v(tsǾ55?AEıE7~S^161pCIN`XvencsP"}VL&{ uٯ\l\Ll,,Lm> ?HګsOx!Tʷ(Y$w,{%- 1| 338)@|2Z @7ZS3x r:,U31.B|9<@2160:ba(7n#|j󗦙c(D+(w\kq\GZEma! `%oEg hepY . dgXut'Ìs +Ѱo3x(F\Ă6? ?3ˠ"!壉dN\ mH -"7FͥUք@ ]`'{&9?-x Jld@pAпBo\3x/>`elV!_럿2A^ucl ] X󓅙.Kߟ)d40([#?~"{ cw~4nzߵ c-^lD0S8g~DCp'8 @nn>p'@w~1`9@v+ ސ@B "VnKuPK:WZe.ZۺhuKűjek} Y䡋PޔHB;w $ԖO&s8܄|ss8Mя; C[op5ɫqSJl=oYnwZdZ[5@zoOYmu]adDˑL:zP}i-iϙ?|z\U]srrvHdIfRk+Pk%/#NvNEkI< Ɖ9ATb&zLK7N.QjVïrm΍ Yf+}p̅}‚K ȼ}1J0߁D+I1BvcJ+ ?UvVd>WѤ+ O9d4>cқaJۿio0T!X\JBԟ6 8?Џl%~S;\ʙ~hb#N~5\ڗ(I_!QL>}v 9[ [&QvF@fg%/k!y2X¦_c Ѧr,~z3=c8;5h~~y3|TXmMُܼlUUmSڻ»,ʙ]LW_-nf3]Ξ/y0| ÷| ZtC0Ivx. O܆>YZ 3CaU.{h놼ehu;j53yO[ΒЦub&cy$ÓU9Wȅ%= { 8?큘Ɇ9:wD]<;o!" {q&0w,!j6Vo* Ue9"S-n\ 6%3,@-&d=Т1CvߨŽ 1[VP8[m9ٛm-v&6&vtvvO8YLӋTk `q>lVvX)e㒟kS57؜ѬZҙ )e=>x|ɿ-g G˳f2WS3Z/q{rH17W#$げtfC^H!чh@A: )^^1 ,7'j 3D$bJ.[뤖 rr-}F/^֞i8]-9M3Xg@cJ6M}G~Wꢱ̥ic#rUWޑ[Otǖ]ӡ&!yӂ{>jl^YdO]r.4!>B)78qʫh2 ~3ȊffM㝍uLBrTG1}\Bcbi`eϨix {׼qӺƁ9/Sѩ5*܊roȑ9MiF)۴^pTQfA@ !V8NL jRS$fʹ`շWh`1 A:=! R:c.PDKkF#G2jC}ly 5FN@H/h^ߴ`!"WgO3=wq4D x_VaU佅!zl1/Ҹ^bk ̇GyxFDtgE$5ҬL amErFGMm?^Rll=:hi,uyЖX!Mϊ|8Wm5#IbU leALGeO%:pluU쀬IaYWEOGX՞p@ހ4"r=zM>_I=.eI΁%Q6M?t]Q[w%PMkxnDP\- u7jj}}V}oEVW">QE+*ȖBBr{ɽd#V_Jœ{8ý|syngPݱ ̥\Y۽2M 'g'p5,G/z#5k(SUU,W4RnؖG25q[Pk',QZrX3tpЮEH %|ds)Kp{)`>я'acMoEvTSe4jiq.>2ZK@hK;5$p_jFaRdn9Π}qDy (>_E{ ߊ%R-Dd\6bћd=y^[[>1\A߅e \ vٽgmCQ *zxftge@~t?M%(jfk> J'6j1}Y}돃m\O¤j$hA3Wšߜ\~rlGDR1vX?x25IazPI5 ^LeՎ7ɪ?]5nN.<W˩ÆyJ'XPsޜ^e_ҁsFߦbx]I$3P/xIR'JbWXѨM+^gh:qrq˥u8%xZ V0 “={z`k'7hM< &js;6V|~*rUYHڋn7KpC Z%:kQc*KĆ&l܄"wU)^l/e>j'lFwrؠU!R ) fMy?+wLC׊ -}VE_ {Cj d?EL qc_MleOc| p|λ:>&)WG0%>oXb 躔nڄ|Q"Z Ϊ?T-N}6pߙ"vpoW퉎 EYvlXbs_:6Wo0{Q5ƅZM-龨&2ve2*mt|Ào2CھC[ӑwvHaz~x7A˸o 2;S 0],1ntDmBڱ h~N-᱾,D/4TtFܖ롶boITwgruW6RT1^8Ap'|z*;17KPe{!^eR3Hx #7ZS naV5ZC޽;Z2dzmAsP31c~Gf$Shi}JE2o JQ#BfaNH94dP^ڞ>Й?s=-_- L_X7R{gY2S 5`sHUس=HPBxpyi (53*91rg-U4ޛ{j^+ۓeHÑh7{/ }2{O[ykq;3E!–pҵQkbMUSq+@{E޳MO $@UBM A""?4)Rޥ# % M3vdS@Kyd;9, FZ1(KwN>eO,I'O$מVB^TZu!9匕k_[W. vlyySQH#>SҞnt<5 @2j,%1P`@~]8?jf7"4ZpKhhSߪr EIq k6$[c _`gjЮ7Q@:GB]q{mfuDQ~[+{w~2'bLC`_)u^aSעU=Q ҝ)kĨ&uGj?XIm7DɊ xLJ:…hzg8S.wmK@3;\42zhJԱGuh}^}ޱuR@@4-6 % 6zX\j:5 ExWITi@['Ѩ HG[cGIq eꪳਕnb *2O֌,u܋,E|E,4QClWae3(y%F9' hy?Uanund0ZQ-)CJ4.n#a#o0f OgvsxpdcFC*:(^wb CYKVW;+er@9?Y.Ueʞ+ (r(W\z `W`D%ٝEDk{#mXK|"HZ3@Ͳ 3`G*Ys⚦[=zZq%hq4y r% wRˠfqL3@N1Ӕ aN@j3JU^0UvZ~]}c|WVDZ;#I-^%DJ2˶§\+m|Q02ǘkn@~5e 4 J&rk7 'vŵ'_A~Uj?fВ`݃qƲ'NlkGz;1 F[r1Y }O.>n^ZYɪH=U9_b6]6uhPqM@sMnh3I{Y1ILjLb# q#hNmxjtJ5S?^!9DSwz;8Ǧħ1$$#n5QO^,ԺC{V3tOԞx*y߬lE؛EIu7y2=MI^sF[ZU:]_k@@Xt07ns7=0XO;)s(+Ek ChP%e/9VlP ^hkp ˳B5M:mhYCsuF,d-\wo,,H@+VOmɤ`SIC/"=eO!zsڞl||9ʊn7 5 4h(QћU[߈vBjeϿ bs;[m^9EtsIڟf%i\ZCX>nj%c@Q~wX!bN4QJo{oͻ OT;Ff/<%zZHƮOWj>y8ɸpbu3z{0==P?wЀiqA_[hF~\v&8MxL!)*i(ߺzd[OJ1Kc->+]I5m>+):u k" j4B.M%}]>/:MxՓovrVl'&[I.1HNEoL()ft͞9[_ZmXuY؆1<[ckZdlcLi<07Qej%_4s 8zEcݼd\g@?8{Opݚo*ڇV~;& 8l`gkpG9A-;1n`y2! yVnj]/CvQ#?bFJJBF 1Umjdz %x" 9lLε:ƽ=ŬME>26(Sܡ[Cmrcr4˱;Q [ x]Fj'ȱI!K>|eZ'iMYkU&7vf&cA9y=Lز.`흾oM=e V UlMH@wIm$2|ZP7~{A:NkL1MJZ>f3JqZrΡԾ2|r"^5\=}gF5 .jT 8I&ֿU#%ݪ_{5ar\@=w&5//QzޜmzzXfCD:j(ը+JFR(HZkt{Ȅ%c)/<xa# aV(ZkJJdm7-&8$E*ژ[ygn66 Gf$4G98kyθXzp!yYrw#A BȆ ګ)o{/neZD֥lׅ}BN2-S.PW7ΜQt/1nw SQoy6(8G^9L)Dfuq Huxr#a"oϜ%lr.ʏoTᘠ%?_*h0Bk {'9+)߃6U;R(fA-*D/I?=9a{EqE ߜZ[',D%a7m)O}#2w[7FZUÎގcXCj#uajǛb&)P X*g ~ߙJ"Dj}3Գٳ/hw'&u}7BY꒰@,. .39D30sG xds!w0`gNIUltK͍{Ƌ&f.I!S8EJ ^~6\W4Z,C7REV otTiUǷ7wLUuz O MڼEC<Xlk_ VD"t[bkn@{yV1J.b/:@&.mN5u5Ů(?%=R8@[ߛ (ԗi֐y6/f2KMnי) !f!Z 6'V8c+/3^!@j{U*jee)3&`v[IENDB`youker-assistant-1.0.1/qml/img/zh_CN/cleaningup.png000644 001750 001750 00000017126 12312451003 022547 0ustar00saucysaucy000000 000000 PNG  IHDR-]tEXtSoftwareAdobe ImageReadyqe<IDATxbh~  (-_w 4 " LL@qɃ b6_p7T# _082M̰.,}m5Yfة0a?^Q]mKdd`aGA.g@1y@b xEug??Z 41p[T j$)!K`➏ f2X!4;fV8#$00 TdS +`6haF  jC:Oh  Ch=aFHс\Dq"?&%ohXƈgb)tOx=tДp/fh31" &XPm g7^aQg`bvF "^ L`ҨὯ?/" v1 r(r;g+W~ =f m Lq`hjN°w|@pp30BDVƋ XeˆT1#`Lqz&4J58uȕG.# Wgba@}մ6,=شRDz%AD֫@ xl"ICԚD;μJ $;;NywyCmz "T 8M2 q[Ӥ3xc#نI zd#$o݇BdMsg]gdz|D/ 1~g0q#A|Lߞ0{|kxo$eYt%B<ҡ!P 8{E}oJd16 'S=rLEԷ1n/Ƣ` 2B\l*Pnpϫka|Y^Wk<+5L2dT.Vp(~ ,!/!Kbї4QcK_41j|2oƇF#6ݺC[M+Rl.%-{fvv38 ̜33;kh;{c-h-ݲ",Jhp7ՍwsG9h^A[g?Se2A+M&<)c;)V9SUIAC}=Fo"(ZdHDG5]6l#X?=r%D'9uha?&8s= ݉"-ֲx#`G;>.^nd ?}%<3)-\e}1n:<#\مdC؆,r{8}>Ӊn%p_W^8Xsp\LSka GjHk35,NU59Wt,=2e驎V4L_}7s8qyjW}\6*> QtXexE\`F+3El}c@gIǻ):>H{]{>9C<Rna ۱fo#H9d#23&m ,"wkf7D oH;Sx,3.] V(1!*y1y|jWA7D|l5Ko#זqg۾HbjBq8ڛvgOZ"1'qnp/ST\em?ߡ68m嚛#deb/q{"R3<ӳ{;Utj6~+fzt'ic_My{ _s 9F1 T:o*NxWQr QpOOZnnnF|\s=*B\7uNW(W9oNEP̒mBsT̩@-zAHzjfn ul7d^. ^G%mFvO[;Pp} rӨXץli٪j0\#OL BHKR%0]07] bs¿ouQTQ١vJ)?B!5 C]˃D &&H4>/ bL6FHb AB-O]v;{޹sgagv~v~̹|߹!?h)|fA"tVU]|r.s9 ōwq }\'$T ,ϴ_hJx"&-I apv` f82B F.A}c A?%,Yhk&,;Q8IP\%7 Aw)>2q>,(t=1FVI5ܒ'w Y+ doBм;q׀IZ#0do= 8lnD, 97l'KWEs\˒bv|bS) GV́k-1G0\YrIߒvEw*^#xn/V_;iLIG{GcL,-oN%-,`kɂXM, E2 k[? '7p٦,S?AV~q*Բ?nmVLˠv>/e $ )P36\cOZOl[=.݃1I*pUN)8)V;Sd~Xlq]-h C~ksх\u#aӥ^_1gVҪnUÓ{Zi @ހ!9ߑWۯyx]6NFṔ8bL#:iRاB_+@&zz;hN}٣q)CN,_y#sr,EbzG` vuPwnFqoae~k12lM -u| &8o#HCVC%ݨq)4Q^t2z WUyYy}4t`w_ +8P$wZOz%'< l>YA\:H&P^b B0vGpd)(58avfݵv] -fWB±!nļ}îB0i5ȃgXr+rnMj [Xw`Nxfx4:تolaF7h:I""CtݒWc6Ét]BpoV*+8Z2P4:Mq gDeX<yq69>U림[Dڶ.[ !mfi}pM839mW~f:!W?" 52QSm/kGdjjbH'mױ*vEdlaJ/7z} ٹWM9[2Xx@MhY+$tHs)p1?EZѫfٮm"l_uʻp}Jtyv\mQ qbxENqXxFdlpkii |V G/J`FV )m`C۔JtౄXp]",c>h,Oe"feʬ;.YYEl涚>;]wZg dC[S\6t܏dà#1\F+j[}d(ɓW) ? 2rIz5$<^M+DT4l4m[=6f 6`(Ʈm  hp@QҔX-VF?A**UߑHCHC$M@iH[(ۼ)1~w;{xwofvv}N;ɾy7|}Z^?j)GU~"5\)dcA3 loȣl|E^uw^;v m}Ko[Wh^#;il7 0ḍ } aҚ*_va86Eg:`܈ .}&d4e!Ŭ_~e*҉,#ͻ@AcL mk-RP'bbB*^={ᰋ)Cc-IFe @$L6mcI4ȇ dLnX!g<8,+D5Ed⊔$ "fb> 2NH@noQL̠k%8p\S$[=t˔3A,*yIFP02 Kv &UdZ5B9mk3{u>VOoGط申:fBQ$5ܚ{O `f\>S&e ȠM:qFAo@f5~W/Hܚ5 bfw?{pF;sBaԢw2s~&l\^D=²|jYe=85/Ƅcv ByhdfLbdB;yԕ VƿpȠԧRy[ten-&;qpV'>?_8{p MEqtх> 1>?H(NK>|s !c^n~^"ص;VeEW;ZX ͽ1i;r7ؚE&4{=W#xllоKqwF=6Q3>;wv/Emm4<2\{*Z f]֦r'9ֆ_dpMvsAܗ"%}l>1a0ĉΙEͩ{'bKxkK>^gl;agT߭o5;m2͸3o8mYsp8d,te߷ZՈ]|ZXx(-·UR1y pcLn0&˘uI`E^qCN.)"@*\MQ/-_.yGr"VyK hۑ(n0jLNL=ڕ3>|kSJ@z3'm> dடiqSܣbMpXDM-Ù;?ai`sdO8pz# r^e_5"7?Lbr>fUU =:"[?JzBWD 2yDn>tJ[%w[y$Kt Z.aJL2y"CcP\Vo ,'{JyؙYU 2(CN HN :6`/ʵ#m$HG4&Q0;C d-㚕g π޼$e%ey]c>v9 6v=ٖ8K[!;, HÝYX=U?w._O.$C&.낝PW!FT,` il6]Z⎴"nZBKOㇹذbdE+% &҆ AXp0>X V,тutL\Pmfdb<0L#zk{2+7>~{Ѩ)0zW(b"*} r%sxُaudpq3%ODD9jִd[E~^ AdobedF]  1!AQqTa2BS$D%5 "#4&R3Cu61!AQaB$"24qbDdtT%Ee ?eY*⟳o5!L^m')DY|)DYPhxqR6"m根2~ݼJZ [T@lv<ԣ2sZElSm)"ͼD(6(6xQ*RM9|&O۷)C QKj\ 9?nuN|_rSv(͕ ~ͼԅ1xDYfRإfB"ݡJT؉/'C$ feY3f)L巳g lEhJbxpr*rrϣiTpܣ ɧ/Jy^3]*s3 [.!+E`wVy;lGFX ^s7x=] ӄ5eGznK2,f5c 9Lp0 $EG 6\ݮT8NK49#S\ÖQv $9P )WD$H̚\ljz1ΖAKSYubV|5IoAѸ˓s/ؘ͚.LK]k&J(ɵ&׺9 )k-+|qKI8zL&^{6U)6RfJ"rEGKbE|N5K>v? ?0N,ueQΦRܚǷ1Srs\9D[ एTJUK8A]%a#|ϓ ܪwOs!za&3jq^lfӵI%K:[^: s;xm3yNDjFύ>6 >ҍݨ.Fv~mtٙ VYCa%R‘jhY P=9Dvxһo/ ֽ( gC͸6yDZлV ǫdcqL4ߞy\r1fPgzDP$p-c @ƴV[_HzɚMcP>d-U„PE9j;JUdi N04\J#*bi`n`"Ѷ oiu/ nDeW;WLAHdzQԅpgbZ L& ;TTϴ X2zπJT,,[[sAM#`I 3?N+(iMTNxx. e\ʯA9sg DFeOH5#GBI,QB!@~)&W҄;r/͑J9|Gi9ؾҦNh""#%Ɨ./>AFMC,F򼐫5좻sԒvJ9MQ[H:9o2841~hV^ S_P)b7%qǔ,ET2%E4@;a4T' nAS=`֭vyxtԬY @j]X(ngCpq̮w I80JmmF`tw,q?cru>N)!{,yM%sڕ+Ҋy5VOGi_Thpr1rEcl: ╻ 4k5ڿG:2! =18,9 q^k`m5(K¡k觾xom={]w꾟KCCM[/Wz郛iSb]30! z_J&CE PaCmߌJ2\c$pDIxߊ&a/;:CWpN7$!]SM\>%[Ilx<5I[Opp/eogiw// y /%yY೼0q6 Ѣ}SɑUg_)kx. sx.;9ٿ> wwc/3y߻%&fV0qF(o }a7ߠ3f>uF( .{}Q~1\Q^oM{0Pz]G}I~4%TLaCB]OԏNn4.uzC M*Wy bo%9J"ͣ䥱J";*=ECÊo_5ɓ P@Rڦ"eO۰<i'ܢ݋youker-assistant-1.0.1/qtsingleapplication/src/qtlockedfile_unix.cpp000644 001750 001750 00000006614 12312451003 026424 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Solutions component. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include #include #include #include #include "qtlockedfile.h" bool QtLockedFile::lock(LockMode mode, bool block) { if (!isOpen()) { qWarning("QtLockedFile::lock(): file is not opened"); return false; } if (mode == NoLock) return unlock(); if (mode == m_lock_mode) return true; if (m_lock_mode != NoLock) unlock(); struct flock fl; fl.l_whence = SEEK_SET; fl.l_start = 0; fl.l_len = 0; fl.l_type = (mode == ReadLock) ? F_RDLCK : F_WRLCK; int cmd = block ? F_SETLKW : F_SETLK; int ret = fcntl(handle(), cmd, &fl); if (ret == -1) { if (errno != EINTR && errno != EAGAIN) qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno)); return false; } m_lock_mode = mode; return true; } bool QtLockedFile::unlock() { if (!isOpen()) { qWarning("QtLockedFile::unlock(): file is not opened"); return false; } if (!isLocked()) return true; struct flock fl; fl.l_whence = SEEK_SET; fl.l_start = 0; fl.l_len = 0; fl.l_type = F_UNLCK; int ret = fcntl(handle(), F_SETLKW, &fl); if (ret == -1) { qWarning("QtLockedFile::lock(): fcntl: %s", strerror(errno)); return false; } m_lock_mode = NoLock; return true; } QtLockedFile::~QtLockedFile() { if (isOpen()) unlock(); } youker-assistant-1.0.1/qml/img/weather/n19.gif000644 001750 001750 00000005406 12312451003 021446 0ustar00saucysaucy000000 000000 GIF89a008Z2Pڇڱɯܽ˺ᇓ}̭Ƿ̼ϾԷ职Ĥҳ2T0Lq;Xδɣ.O1R/M6Y:^1O9[4U:\5V6U;\%Be+Kq,Lr)Fj1Qw.Lp*Ee2Pv4Tz8Y2Pt7W~8X7W}5Sy:Z9Y:Z7Uy;Y6Sul|}Ũ0P3U1Q2R/M3S0N5U0M1O5U8Z6V7W3P8X4R9Y=]3O#Be!?`!>^9W*Lq7S'Eg%Bb-Ot%A_.Pu1Tz-Ln2Ty-Km2Sx,Jj&?[3Uz4V{0Nq5W|6X}7Y~2Qs8Z/Lk:\6Uw?a/Hd5LeNn>WrG]vSh\pǸ/M0N2P3Q/J4R0K5S>a6T7U;Z:X9V Aa;Y#Df"Ab'Il&Fh*Km)Ik0V{,Mp+Ln'Ec-Or-Nq.Ps0Sw.Or2Vz0Qt.Op4X|1Ru2Sv3Tw7[7[4Ux2St6X{5Vy6Wz9Z}7Xy:[~;Tm0L3O6R<[ EKV7‚wk@/}␕-Z4ѥ/ &NafSogZKE8h\R^-JBb.͂ BN%\s•k=׻-Xxw}ƌV#`+y |DaJx<]4`"P <a2/~ 2za#-h; 1 # B?1F#/ȕTɋ!bg† #6 p$J1\ H.r-!8-D$ N jÒ 48/<.70r3PEi"d  tA020(P( !YBICCoAȠ%/X'y"rJ83#md8NOCq2M ,A Ax-jp98`J/ #L~:N )HoP ; S1HI 0`DDpo =| /[PSe /P@bp(`$@P$ nP A ( v$hHqBB KB+1&'ƒ8t[| $ N$aDNda$؉cDƈx) "`aT!C(Jq A!pc#Ee(P1By )ʨB*R e01F' Ґ4! I1PDڸ&K+ԭ06FTah.vw60!b p!컍h`@QLL}LDc٠| .dš)q'\8F"@#(%s' % (apt_cache, filename, str(os.path.getsize('%s/%s' % (apt_cache, filename)))), filter(lambda filestr: filestr.endswith('deb'), os.listdir(apt_cache))) aptcachelist = ['%s/%s<2_2>%s' % (apt_cache,filename, confirm_filesize_unit(os.path.getsize('%s/%s' % (apt_cache, filename)))) for filename in os.listdir(apt_cache) if filename.endswith('deb')] return aptcachelist def scan_apt_cache(self, path): aptcache_list = [] if os.path.exists(path): aptcache_list = ['%s/%s' % (path, filename) for filename in os.listdir(path) if filename.endswith('deb')] return aptcache_list def public_scan_cache(self, path): publiccache_list = [] if os.path.exists(path): publiccache_list = ['%s/%s' % (path, filename) for filename in os.listdir(path)] return publiccache_list def firefox_scan_cache(self, path): firefoxcache_list = [] if os.path.exists(path): firefoxcache_list = ['%s/%s' % (path, filename) for filename in os.listdir(path) if filename in 'Cache'] return firefoxcache_list def get_softwarecenter_cache(self, homedir): centercachelist = [] if homedir: softwarecenter_cache = '%s/.cache/software-center/' % homedir else: softwarecenter_cache = os.path.expanduser('~/.cache/software-center/') full_path = softwarecenter_cache if os.path.exists(full_path): for one in os.listdir(full_path): tmp_path = full_path + one if os.path.isdir(tmp_path): size = get_dir_size(tmp_path) centercachelist.append('%s<2_2>%s' % (tmp_path, confirm_filesize_unit(size))) else: centercachelist.append('%s<2_2>%s' % (tmp_path, confirm_filesize_unit(os.path.getsize(tmp_path)))) return centercachelist if __name__ == "__main__": obja = CacheClean() obja.get_apt_cache() obja.get_softwarecenter_cache() youker-assistant-1.0.1/qml/img/icons/tool-hover.png000644 001750 001750 00000001047 12312451003 022625 0ustar00saucysaucy000000 000000 PNG  IHDRltEXtSoftwareAdobe ImageReadyqe<IDATxb?2@{@" $@*@ ϟJ'@1@Mb3UGVkd>Ǐppp00@gb?faaK ~?A Ex/ޛ7o~bյ@X@u"@ b`ddd `&CM)z8Pw. g [N)l@?Ԅ `LRRRo< ':/_< }XA} @nr@CǏHI=,Ɂ4r|a;0U01A'?o߾10(#ˁ`ׯ_-{'d, %n@ X8l#4ǂ4ra X49x5MD Z%IENDB`youker-assistant-1.0.1/qml/func/others/ToolsDelegate.qml000644 001750 001750 00000006330 12312451003 023637 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Rectangle { id: scaleMe // scale: 0.0 scale: 1 Behavior on scale { NumberAnimation { easing.type: Easing.InOutQuad} } width: 78 height: 82 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } color: "transparent" // function iconClicked() { // scaleMe.state = "Details"; // settigsDetails.setTitle = flag; // } Column { anchors.fill: parent anchors.topMargin: 15 spacing: 10 Image { id: seticon source: icon anchors.horizontalCenter: parent.horizontalCenter } Text { id: btnText anchors.horizontalCenter: parent.horizontalCenter font.pixelSize: 12 color: "#383838" text: name } } Image { id: btnImg anchors.fill: parent source: "" } MouseArea { id: signaltest hoverEnabled: true anchors.fill: parent onEntered: btnImg.source = "../../img/toolWidget/box-hover.png"//btnImg.source = "../../img/toolWidget/menu_hover.png" onPressed: btnImg.source = "../../img/toolWidget/menu_press.png" //要判断松开是鼠标位置 onReleased: btnImg.source = "../../img/toolWidget/box-hover.png"//btnImg.source = "../../img/toolWidget/menu_hover.png" onExited: btnImg.source = "" onClicked: { //屏幕坏点检测 if (flag == "CheckScreen") sessiondispatcher.showCheckscreenDialog(mainwindow.pos.x, mainwindow.pos.y); else if (flag == "Desktopicon") pageStack.push(desktopiconsetpage); else if (flag == "BootAnimation") { var component_boot = Qt.createComponent("../settings/BootAnimation.qml"); if (component_boot.status == Component.Ready) { pageStack.push(component_boot); } } else if (flag == "SoundEffects") { var component_sound = Qt.createComponent("../settings/SoundEffects.qml"); if (component_sound.status == Component.Ready) { pageStack.push(component_sound); } } else if (flag == "MousePointer") pageStack.push(mousepointerpage); else if (flag == "TouchpadSet") pageStack.push(touchpadsetpage); //kobe:选中项深色块移动 // scaleMe.GridView.view.currentIndex = index; } } } youker-assistant-1.0.1/backends/youker-assistant-daemon/dbus/com.ubuntukylin.youker.conf000644 001750 001750 00000001474 12312451003 032174 0ustar00saucysaucy000000 000000 youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/theme.py000644 001750 001750 00000025756 12312451003 027771 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import gsettings import utils class Theme: homedir = '' def __init__(self): self.homedir = utils.get_home_dir() # ---------------themes--------------- # -----------------默认值----------------- # Get Default Value def get_default_schema_value(self, schema, key): return gsettings.get_schema_value(schema, key) # Set Default Value def set_default_schema_value(self, schema, key, type): default_value = self.get_default_schema_value(schema, key) if (default_value == '' and schema == 'org.gnome.nautilus.desktop' and key == 'font'): default_value = 'Ubuntu 11' if default_value is not None: return gsettings.set(schema, None, key, type, default_value) else: raise NotImplemented # ---------------------------------- # get themes def get_themes(self): dirs = ('/usr/share/themes', os.path.join(self.homedir, ".themes")) filters = ('gtk-2.0', 'gtk-3.0', 'metacity-1') valid = utils.check_dirs(dirs, filters, True) valid.sort() return valid # get current theme def get_theme(self): return gsettings.get('org.gnome.desktop.interface', None, 'gtk-theme', 'string') # set GTK theme and window theme def set_theme(self, theme): gstheme = gsettings.get_schema('org.gnome.desktop.interface') gstheme.set_string('gtk-theme',theme) _gstheme = gsettings.get_schema('org.gnome.desktop.wm.preferences') _gstheme.set_string('theme',theme) #------------------------窗口主题设置`````````````````````````` # get window theme def get_window_themes(self): dirs = ('/usr/share/themes', os.path.join(self.homedir, ".themes")) filters = ['metacity-1'] valid = utils.check_dirs(dirs, filters, True) valid.sort() return valid # get current window theme def get_current_window_theme(self): return gsettings.get('org.gnome.desktop.wm.preferences', None, 'theme', 'string') # set window theme def set_window_theme(self, theme): return gsettings.set('org.gnome.desktop.wm.preferences', None, 'theme', 'string', theme) # get icon themes def get_icon_themes(self): dirs = ('/usr/share/icons', os.path.join(self.homedir, ".icons")) '''filters: if use only one filter string, the 'for' block in check_dirs() will split the filter string to single chars...''' filters = ('cursors', '#') valid = utils.check_dirs(dirs, filters, False) valid.sort() return valid # get current icon theme def get_icon_theme(self): return gsettings.get('org.gnome.desktop.interface', None, 'icon-theme', 'string') # set icon theme def set_icon_theme(self, theme): gstheme = gsettings.get_schema('org.gnome.desktop.interface') gstheme.set_string('icon-theme',theme) # get cursor themes def get_cursor_themes(self): dirs = ('/usr/share/icons', os.path.join(self.homedir, ".icons")) '''filters: if use only one filter string, the 'for' block in check_dirs() will split the filter string to single chars...''' filters = ('cursors', '') valid = utils.check_dirs(dirs, filters, True) valid.sort() return valid # get current cursor theme def get_cursor_theme(self): return gsettings.get('org.gnome.desktop.interface', None, 'cursor-theme', 'string') # set cursor theme def set_cursor_theme(self, theme): gstheme = gsettings.get_schema('org.gnome.desktop.interface') gstheme.set_string('cursor-theme', theme) def set_cursor_theme_with_root(self, theme): try : fd = open('/usr/share/icons/default/index.theme','w') fd.write('[Icon Theme]\n') fd.write('Inherits=' + theme + '\n') fd.close() return True except Exception,e : return False # get cursor size def get_cursor_size(self): return gsettings.get('org.gnome.desktop.interface', None, 'cursor-size', 'int') # set cursor size def set_cursor_size(self, size): gstheme = gsettings.get_schema('org.gnome.desktop.interface') gstheme.set_int('cursor-size', size) # ---------------fonts--------------- # get font def get_font(self): return gsettings.get('org.gnome.desktop.interface', None, 'font-name', 'string') # set font def set_font(self, font): return gsettings.set('org.gnome.desktop.interface', None, 'font-name', 'string', font) # get desktop font def get_desktop_font(self): return gsettings.get('org.gnome.nautilus.desktop', None, 'font', 'string') # set desktop font def set_desktop_font(self, font): return gsettings.set('org.gnome.nautilus.desktop', None, 'font', 'string', font) # get document font def get_document_font(self): return gsettings.get('org.gnome.desktop.interface', None, 'document-font-name', 'string') # set document font def set_document_font(self, font): return gsettings.set('org.gnome.desktop.interface', None, 'document-font-name', 'string', font) # get monospace font def get_monospace_font(self): return gsettings.get('org.gnome.desktop.interface', None, 'monospace-font-name', 'string') # set monospace font (use this func to change document font in ubuntu) def set_monospace_font(self, font): return gsettings.set('org.gnome.desktop.interface', None, 'monospace-font-name', 'string', font) # get window title font def get_window_title_font(self): return gsettings.get('org.gnome.desktop.wm.preferences', None, 'titlebar-font', 'string') # set window title font def set_window_title_font(self, font): return gsettings.set('org.gnome.desktop.wm.preferences', None, 'titlebar-font', 'string', font) # get font zoom def get_font_zoom(self): return gsettings.get('org.gnome.desktop.interface', None, 'text-scaling-factor', 'double') # set font zoom def set_font_zoom(self, zoom): return gsettings.set('org.gnome.desktop.interface', None, 'text-scaling-factor', 'double', zoom) # -------------------------平滑性---------------------------------- # get all hinting value. none:'No hinting',slight:'Basic',medium:'Moderate',full:'Maximum' def get_all_hinting(self): return ['none', 'slight', 'medium', 'full'] # get current hinting def get_hinting(self): return gsettings.get('org.gnome.settings-daemon.plugins.xsettings', None, 'hinting', 'string') # set hinting def set_hinting(self, value): return gsettings.set('org.gnome.settings-daemon.plugins.xsettings', None, 'hinting', 'string', value) # -------------------------反锯齿---------------------------------- # get all antialiasing value. none:'No antialiasing', grayscale:'Standard grayscale antialiasing',rgba:'Subpixel antialiasing (LCD screens only)' def get_all_antialiasing(self): return ['none', 'grayscale', 'rgba'] # get current antialiasing def get_antialiasing(self): return gsettings.get('org.gnome.settings-daemon.plugins.xsettings', None, 'antialiasing', 'string') # set antialiasing def set_antialiasing(self,value): return gsettings.set('org.gnome.settings-daemon.plugins.xsettings', None, 'antialiasing', 'string', value) if __name__ == '__main__': ttt = Theme() # print ttt.get_window_theme() # print ttt.get_current_window_theme() # print ttt.set_window_theme('Crux') # print ttt.get_current_hinting() # print ttt.get_current_antialiasing() # print ttt.set_hinting('none') # print ttt.set_antialiasing('none') # print ttt.get_font() # print ttt.set_font('Ubuntu 14') # print ttt.get_font_zoom() # ttt.set_font_zoom(1.0) #ttt.set_monospace_font('Ubuntu Mono 13') #print ttt.get_monospace_font() #aa = ttt.get_default_schema_value('org.gnome.nautilus.desktop', 'font') #print aa #ttt.set_default_schema_value('org.gnome.nautilus.desktop', 'font', 'string') #aa = ttt.get_default_schema_value('org.gnome.settings-daemon.plugins.xsettings', 'hinting') #print aa #ttt.set_default_schema_value('org.gnome.settings-daemon.plugins.xsettings', 'hinting', 'string') #bb = ttt.get_default_schema_value('org.gnome.settings-daemon.plugins.xsettings', 'antialiasing') #print bb aa = ttt.get_default_schema_value('org.gnome.desktop.interface', 'cursor-size') print aa bb = ttt.get_cursor_size() print bb ttt.set_default_schema_value('org.gnome.desktop.interface', 'cursor-size', 'int') #aa = ttt.get_default_schema_value('org.gnome.desktop.interface', 'font-name') #print aa # ttt.set_default_schema_value('org.gnome.desktop.interface', 'font-name', 'string') # print ttt.get_theme() # print ttt.get_icon_theme() # print ttt.get_cursor_theme() # print ttt.get_cursor_size() # ttt.set_font('Ubuntu 11') # print ttt.get_document_font() # ttt.set_document_font('Sans 15') # ttt.set_window_title_font('Ubuntu Bold 11') # print ttt.get_font() # ttt.set_desktop_font('Ubuntu 11') # print ttt.get_desktop_font() # print ttt.get_document_font() # print ttt.get_window_title_font() # themes = ttt.get_themes() # print themes # print ttt.get_theme() # ttt.set_theme('ubuntukylin-theme') # ttt.set_theme('Radiance') # ttt.set_theme('Ambiance') # ttt.set_theme('HighContrast') # iconthemes = ttt.get_icon_themes() # print iconthemes # ttt.set_icon_theme('ubuntukylin-icon-theme') # cursorthemes = ttt.get_cursor_themes() # print cursorthemes # print ttt.get_cursor_theme() # ttt.set_cursor_theme(cursorthemes[1]) # ttt.set_cursor_size(24) youker-assistant-1.0.1/qml/img/logo/Manufacturer/000755 001750 001750 00000000000 12312451003 022300 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/sysButton/sys_button_min.png000644 001750 001750 00000001432 12312451003 024500 0ustar00saucysaucy000000 000000 PNG  IHDRhHtEXtSoftwareAdobe ImageReadyqe<IDATxb? tՖ_ن$^ " zt?VD/ F99 r9H@*A.+:O#zn>bbE82R@ 'x30#Z,,!-Q{>l3zndͤ %aivx߹< { LWE)aAb 9aZ Ȋ1s\/ȼ ?0 1FYP!`rb'%hb@{1 C4Z(zhCa8@lPL=DD Gs{Xh1 6buh  yh HS{`bb &1X!+xz/w@C>#,`ViXSbO-z&g6OGͯ~r3#_N/I/ 4" H= q>*ᔇlصFQ0A`4 K ̈́'2!H`8agbn b!( jp@=,m|wP+t` HC?,Xފ6^ |b`O3||pQ$chv @Q$:%>Do3ev~r tXL[p JABy]E@A.Cs8~̦j,AA ?R!wWS}IENDB`youker-assistant-1.0.1/qml/func/page/WeatherForecast.qml000644 001750 001750 00000061734 12312451003 023613 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Item { id: weatherpage; width: parent.width; height: 475 Rectangle { id: weather_widget anchors.fill: parent property string actiontext: qsTr("Getting weather forecast data from CMA/Yahoo, providing reference information for users to travel.")//获取来自中国气象局/雅虎天气的天气预报数据,为用户出行提供参考。 property string week1 property string week2 property string week3 property string week4 property string week5 property string week6 property string img1 property string img2 property string img3 property string img4 property string img5 property string img6 property string img7 property string img8 property string img9 property string img10 property string img11 property string img12 ListModel { id: weahterModel } //设置六天天气预报数据显示在QML界面上 function initWeatherForcast() { //("星期日"),("星期一"),("星期二"),("星期三"),("星期四"),("星期五"),("星期六") // var dayNames = new Array(qsTr("Sunday"),qsTr("Monday"),qsTr("Tuesday"),qsTr("Wednesday"),qsTr("Thursday"),qsTr("Friday"),qsTr("Saturday")); // var Stamp = new Date(); // var dateTime = (Stamp.getMonth() + 1) +"月" +Stamp.getDate()+ "日"; // var num = Stamp.getDay(); // weather_widget.week1 = dateTime + " " + dayNames[num]; // var alterNum; // for(var i = num+1; i=7) { // alterNum = i - 7; // weather_widget.week2 = dayNames[alterNum]; // } // else // weather_widget.week2 = dayNames[i]; // } // else if(i == num+2) { // if(i >=7) { // alterNum = i - 7; // weather_widget.week3 = dayNames[alterNum]; // } // else // weather_widget.week3 = dayNames[i]; // } // else if(i == num+3) { // if(i >=7) { // alterNum = i - 7; // weather_widget.week4 = dayNames[alterNum]; // } // else // weather_widget.week4 = dayNames[i]; // } // else if(i == num+4) { // if(i >=7) { // alterNum = i - 7; // weather_widget.week5 = dayNames[alterNum]; // } // else // weather_widget.week5 = dayNames[i]; // } // else if(i == num+5) { // if(i >=7) { // alterNum = i - 7; // weather_widget.week6 = dayNames[alterNum]; // } // else // weather_widget.week6 = dayNames[i]; // } // } var release_date = sessiondispatcher.getSingleWeatherInfo("date_y", "forecast"); var release_week = sessiondispatcher.getSingleWeatherInfo("week", "forecast"); var dayNames = new Array("星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"); var value = 0; if (release_week == "星期日") { value = 7; } for(var index=0; index<6; index++) { if(dayNames[index] == release_week) { value = index + 1; break; } } for(var i=0; i<6; i++) { var weektime = value + i; if(weektime > 7) { weektime -= 7; } if(i == 0) { weather_widget.week1 = release_date + " " + release_week; } else if(i == 1) { weather_widget.week2 = dayNames[weektime - 1]; } else if(i == 2) { weather_widget.week3 = dayNames[weektime - 1]; } else if(i == 3) { weather_widget.week4 = dayNames[weektime - 1]; } else if(i == 4) { weather_widget.week5 = dayNames[weektime - 1]; } else if(i == 5) { weather_widget.week6 = dayNames[weektime - 1]; } } var updateTime = sessiondispatcher.getSingleWeatherInfo("fchh", "forecast"); if(release_date == "2014年2月19日") { locationLabel.text = sessiondispatcher.getSingleWeatherInfo("city", "forecast") + " " + qsTr("[ The weather forecast has stopped updating, please wait interface update. ]");//[ 天气预报已经停止更新,请等待接口更新后再使用。 ] } else { //未来六天天气预报,预报时间: 时 locationLabel.text = sessiondispatcher.getSingleWeatherInfo("city", "forecast") + " " + release_date + updateTime + qsTr(" o'clock release");//时 发布 } //将字符串类型的时间转成整形 var updateIntTime = parseInt(updateTime, 10); if(updateIntTime >= 6 && updateIntTime < 18) { //白天 var result1 = sessiondispatcher.getSingleWeatherInfo("img1", "forecast"); var result2 = sessiondispatcher.getSingleWeatherInfo("img2", "forecast"); if (result1 == "99") { weather_widget.img1 = "../../img/weather/d" + result2 + ".gif"; } else { weather_widget.img1 = "../../img/weather/d" + result1 + ".gif"; } if (result2 == "99") { weather_widget.img2 = "../../img/weather/n" + result1 + ".gif"; } else { weather_widget.img2 = "../../img/weather/n" + result2 + ".gif"; } var result3 = sessiondispatcher.getSingleWeatherInfo("img3", "forecast"); var result4 = sessiondispatcher.getSingleWeatherInfo("img4", "forecast"); if (result3 == "99") { weather_widget.img3 = "../../img/weather/d" + result4 + ".gif"; } else { weather_widget.img3 = "../../img/weather/d" + result3 + ".gif"; } if (result4 == "99") { weather_widget.img4 = "../../img/weather/n" + result3 + ".gif"; } else { weather_widget.img4 = "../../img/weather/n" + result4 + ".gif"; } var result5 = sessiondispatcher.getSingleWeatherInfo("img5", "forecast"); var result6 = sessiondispatcher.getSingleWeatherInfo("img6", "forecast"); if (result5 == "99") { weather_widget.img5 = "../../img/weather/d" + result6 + ".gif"; } else { weather_widget.img5 = "../../img/weather/d" + result5 + ".gif"; } if (result6 == "99") { weather_widget.img6 = "../../img/weather/n" + result5 + ".gif"; } else { weather_widget.img6 = "../../img/weather/n" + result6 + ".gif"; } var result7 = sessiondispatcher.getSingleWeatherInfo("img7", "forecast"); var result8 = sessiondispatcher.getSingleWeatherInfo("img8", "forecast"); if (result7 == "99") { weather_widget.img7 = "../../img/weather/d" + result8 + ".gif"; } else { weather_widget.img7 = "../../img/weather/d" + result7 + ".gif"; } if (result8 == "99") { weather_widget.img8 = "../../img/weather/n" + result7 + ".gif"; } else { weather_widget.img8 = "../../img/weather/n" + result8 + ".gif"; } var result9 = sessiondispatcher.getSingleWeatherInfo("img9", "forecast"); var result10 = sessiondispatcher.getSingleWeatherInfo("img10", "forecast"); if (result9 == "99") { weather_widget.img9 = "../../img/weather/d" + result10 + ".gif"; } else { weather_widget.img9 = "../../img/weather/d" + result9 + ".gif"; } if (result10 == "99") { weather_widget.img10 = "../../img/weather/n" + result9 + ".gif"; } else { weather_widget.img10 = "../../img/weather/n" + result10 + ".gif"; } var result11 = sessiondispatcher.getSingleWeatherInfo("img11", "forecast"); var result12 = sessiondispatcher.getSingleWeatherInfo("img12", "forecast"); if (result11 == "99") { weather_widget.img11 = "../../img/weather/d" + result12 + ".gif"; } else { weather_widget.img11 = "../../img/weather/d" + result11 + ".gif"; } if (result12 == "99") { weather_widget.img12 = "../../img/weather/n" + result11 + ".gif"; } else { weather_widget.img12 = "../../img/weather/n" + result12 + ".gif"; } } else { //晚上 var result1n = sessiondispatcher.getSingleWeatherInfo("img1", "forecast"); var result2n = sessiondispatcher.getSingleWeatherInfo("img2", "forecast"); if (result1n == "99") { weather_widget.img1 = "../../img/weather/n" + result2n + ".gif"; } else { weather_widget.img1 = "../../img/weather/n" + result1n + ".gif"; } if (result2n == "99") { weather_widget.img2 = "../../img/weather/d" + result1n + ".gif"; } else { weather_widget.img2 = "../../img/weather/d" + result2n + ".gif"; } var result3n = sessiondispatcher.getSingleWeatherInfo("img3", "forecast"); var result4n = sessiondispatcher.getSingleWeatherInfo("img4", "forecast"); if (result3n == "99") { weather_widget.img3 = "../../img/weather/n" + result4n + ".gif"; } else { weather_widget.img3 = "../../img/weather/n" + result3n + ".gif"; } if (result4n == "99") { weather_widget.img4 = "../../img/weather/d" + result3n + ".gif"; } else { weather_widget.img4 = "../../img/weather/d" + result4n + ".gif"; } var result5n = sessiondispatcher.getSingleWeatherInfo("img5", "forecast"); var result6n = sessiondispatcher.getSingleWeatherInfo("img6", "forecast"); if (result5n == "99") { weather_widget.img5 = "../../img/weather/n" + result6n + ".gif"; } else { weather_widget.img5 = "../../img/weather/n" + result5n + ".gif"; } if (result6n == "99") { weather_widget.img6 = "../../img/weather/d" + result5n + ".gif"; } else { weather_widget.img6 = "../../img/weather/d" + result6n + ".gif"; } var result7n = sessiondispatcher.getSingleWeatherInfo("img7", "forecast"); var result8n = sessiondispatcher.getSingleWeatherInfo("img8", "forecast"); if (result7n == "99") { weather_widget.img7 = "../../img/weather/n" + result8n + ".gif"; } else { weather_widget.img7 = "../../img/weather/n" + result7n + ".gif"; } if (result8n == "99") { weather_widget.img8 = "../img/weather/d" + result7n + ".gif"; } else { weather_widget.img8 = "../../img/weather/d" + result8n + ".gif"; } var result9n = sessiondispatcher.getSingleWeatherInfo("img9", "forecast"); var result10n = sessiondispatcher.getSingleWeatherInfo("img10", "forecast"); if (result9n == "99") { weather_widget.img9 = "../../img/weather/n" + result10n + ".gif"; } else { weather_widget.img9 = "../../img/weather/n" + result9n + ".gif"; } if (result10n == "99") { weather_widget.img10 = "../../img/weather/d" + result9n + ".gif"; } else { weather_widget.img10 = "../../img/weather/d" + result10n + ".gif"; } var result11n = sessiondispatcher.getSingleWeatherInfo("img11", "forecast"); var result12n = sessiondispatcher.getSingleWeatherInfo("img12", "forecast"); if (result11n == "99") { weather_widget.img11 = "../../img/weather/n" + result12n + ".gif"; } else { weather_widget.img11 = "../../img/weather/n" + result11n + ".gif"; } if (result12n == "99") { weather_widget.img12 = "../../img/weather/d" + result11n + ".gif"; } else { weather_widget.img12 = "../../img/weather/d" + result12n + ".gif"; } } weahterModel.clear(); weahterModel.append({"date": weather_widget.week1, "dayIcon": weather_widget.img1, "nightIcon": weather_widget.img2, "temp": sessiondispatcher.getSingleWeatherInfo("temp1", "forecast"), "weather": sessiondispatcher.getSingleWeatherInfo("weather1", "forecast"),"wind": sessiondispatcher.getSingleWeatherInfo("wind1", "forecast")}) weahterModel.append({"date": weather_widget.week2, "dayIcon": weather_widget.img3, "nightIcon": weather_widget.img4, "temp": sessiondispatcher.getSingleWeatherInfo("temp2", "forecast"), "weather": sessiondispatcher.getSingleWeatherInfo("weather2", "forecast"),"wind": sessiondispatcher.getSingleWeatherInfo("wind2", "forecast")}) weahterModel.append({"date": weather_widget.week3, "dayIcon": weather_widget.img5, "nightIcon": weather_widget.img6, "temp": sessiondispatcher.getSingleWeatherInfo("temp3", "forecast"), "weather": sessiondispatcher.getSingleWeatherInfo("weather3", "forecast"),"wind": sessiondispatcher.getSingleWeatherInfo("wind3", "forecast")}) weahterModel.append({"date": weather_widget.week4, "dayIcon": weather_widget.img7, "nightIcon": weather_widget.img8, "temp": sessiondispatcher.getSingleWeatherInfo("temp4", "forecast"), "weather": sessiondispatcher.getSingleWeatherInfo("weather4", "forecast"),"wind": sessiondispatcher.getSingleWeatherInfo("wind4", "forecast")}) weahterModel.append({"date": weather_widget.week5, "dayIcon": weather_widget.img9, "nightIcon": weather_widget.img10, "temp": sessiondispatcher.getSingleWeatherInfo("temp5", "forecast"), "weather": sessiondispatcher.getSingleWeatherInfo("weather5", "forecast"),"wind": sessiondispatcher.getSingleWeatherInfo("wind5", "forecast")}) weahterModel.append({"date": weather_widget.week6, "dayIcon": weather_widget.img11, "nightIcon": weather_widget.img12, "temp": sessiondispatcher.getSingleWeatherInfo("temp6", "forecast"), "weather": sessiondispatcher.getSingleWeatherInfo("weather6", "forecast"),"wind": sessiondispatcher.getSingleWeatherInfo("wind6", "forecast")}) } //设置Yahoo五天天气预报数据显示在QML界面上 function initYahooWeatherForcast() { // {'temp3': u'-6 \xb0C ~ 4 \xb0C', 'temp2': u'-7 \xb0C ~ 7 \xb0C', 'temp1': u'-6 \xb0C ~ 6 \xb0C', 'temp0': u'-6 \xb0C ~ 7 \xb0C', 'temp4': u'-7 \xb0C ~ 5 \xb0C', // 'date1': u'17 Jan 2014', 'date0': u'16 Jan 2014', 'date3': u'19 Jan 2014', 'date2': u'18 Jan 2014', 'date4': u'20 Jan 2014', // 'day4': u'Mon', 'day2': u'Sat', 'day3': u'Sun', 'day0': u'Thu', 'day1': u'Fri', // 'text2': u'Sunny', 'text3': u'Mostly Cloudy', 'text0': u'Sunny', 'text1': u'Partly Cloudy', 'text4': u'Sunny', // 'code0': u'32', 'code1': u'30', 'code2': u'32', 'code3': u'28', 'code4': u'32'} weather_widget.week1 = sessiondispatcher.getSingleWeatherInfo("day0", "yahooforecast") + ", " + sessiondispatcher.getSingleWeatherInfo("date0", "yahooforecast"); weather_widget.week2 = sessiondispatcher.getSingleWeatherInfo("day1", "yahooforecast") + ", " + sessiondispatcher.getSingleWeatherInfo("date1", "yahooforecast"); weather_widget.week3 = sessiondispatcher.getSingleWeatherInfo("day2", "yahooforecast") + ", " + sessiondispatcher.getSingleWeatherInfo("date2", "yahooforecast"); weather_widget.week4 = sessiondispatcher.getSingleWeatherInfo("day3", "yahooforecast") + ", " + sessiondispatcher.getSingleWeatherInfo("date3", "yahooforecast"); weather_widget.week5 = sessiondispatcher.getSingleWeatherInfo("day4", "yahooforecast") + ", " + sessiondispatcher.getSingleWeatherInfo("date4", "yahooforecast"); weather_widget.week6 = ""; //未来五天天气预报,预报时间: locationLabel.text = sessiondispatcher.getSingleWeatherInfo("city", "yahooforecast") + " " + sessiondispatcher.getSingleWeatherInfo("time", "yahooforecast"); weather_widget.img1 = "http://l.yimg.com/a/i/us/we/52/" + sessiondispatcher.getSingleWeatherInfo("code0", "yahooforecast") + ".gif"; weather_widget.img2 = ""; weather_widget.img3 = "http://l.yimg.com/a/i/us/we/52/" + sessiondispatcher.getSingleWeatherInfo("code1", "yahooforecast") + ".gif"; weather_widget.img4 = ""; weather_widget.img5 = "http://l.yimg.com/a/i/us/we/52/" + sessiondispatcher.getSingleWeatherInfo("code2", "yahooforecast") + ".gif"; weather_widget.img6 = ""; weather_widget.img7 = "http://l.yimg.com/a/i/us/we/52/" + sessiondispatcher.getSingleWeatherInfo("code3", "yahooforecast") + ".gif"; weather_widget.img8 = ""; weather_widget.img9 = "http://l.yimg.com/a/i/us/we/52/" + sessiondispatcher.getSingleWeatherInfo("code4", "yahooforecast") + ".gif"; weather_widget.img10 = ""; weather_widget.img11 = ""; weather_widget.img12 = ""; weahterModel.clear(); weahterModel.append({"date": weather_widget.week1, "dayIcon": weather_widget.img1, "nightIcon": weather_widget.img2, "temp": sessiondispatcher.getSingleWeatherInfo("temp0", "yahooforecast"), "weather": sessiondispatcher.getSingleWeatherInfo("text0", "yahooforecast"),"wind": ""}) weahterModel.append({"date": weather_widget.week2, "dayIcon": weather_widget.img3, "nightIcon": weather_widget.img4, "temp": sessiondispatcher.getSingleWeatherInfo("temp1", "yahooforecast"), "weather": sessiondispatcher.getSingleWeatherInfo("text1", "yahooforecast"),"wind": ""}) weahterModel.append({"date": weather_widget.week3, "dayIcon": weather_widget.img5, "nightIcon": weather_widget.img6, "temp": sessiondispatcher.getSingleWeatherInfo("temp2", "yahooforecast"), "weather": sessiondispatcher.getSingleWeatherInfo("text2", "yahooforecast"),"wind": ""}) weahterModel.append({"date": weather_widget.week4, "dayIcon": weather_widget.img7, "nightIcon": weather_widget.img8, "temp": sessiondispatcher.getSingleWeatherInfo("temp3", "yahooforecast"), "weather": sessiondispatcher.getSingleWeatherInfo("text3", "yahooforecast"),"wind": ""}) weahterModel.append({"date": weather_widget.week5, "dayIcon": weather_widget.img9, "nightIcon": weather_widget.img10, "temp": sessiondispatcher.getSingleWeatherInfo("temp4", "yahooforecast"), "weather": sessiondispatcher.getSingleWeatherInfo("text4", "yahooforecast"),"wind": ""}) // weahterModel.append({"date": weather_widget.week6, "dayIcon": weather_widget.img11, "nightIcon": weather_widget.img12, "temp": sessiondispatcher.getSingleWeatherInfo("temp5", "yahooforecast"), "weather": sessiondispatcher.getSingleWeatherInfo("text5", "yahooforecast"),"wind": "}) } Connections { target: sessiondispatcher onStartUpdateForecastWeahter: { if(flag == "forecast") { weather_widget.initWeatherForcast(); } else if(flag == "yahooforecast") { weather_widget.initYahooWeatherForcast(); } } } Component.onCompleted: { // sessiondispatcher.get_forecast_weahter_qt(); // weather_widget.initWeatherForcast(); } //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } Column { spacing: 10 anchors { top: parent.top topMargin: 44 left: parent.left leftMargin: 80 } Text { id: locationLabel text: "" font.bold: true font.pixelSize: 14 color: "#383838" } Text { text: weather_widget.actiontext font.pixelSize: 12 color: "#7a7a7a" } } Component { id: weatherDelegate Item { Column { spacing: 5 Text { text: date anchors.horizontalCenter: parent.horizontalCenter } Row { spacing: 20 anchors.horizontalCenter: parent.horizontalCenter Image { source: dayIcon } Image { source: nightIcon } } Text { text: temp anchors.horizontalCenter: parent.horizontalCenter } Text { text: weather anchors.horizontalCenter: parent.horizontalCenter } Text { text: wind anchors.horizontalCenter: parent.horizontalCenter } } } } Item { width: 700 anchors { top: parent.top topMargin: 120 left: parent.left leftMargin: 130 } GridView { id: weatherGrid anchors.fill: parent cellWidth: 700/3; cellHeight: 180 model: weahterModel delegate: weatherDelegate focus: true cacheBuffer: 1000 } } } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/E-MU.jpg000644 001750 001750 00000007747 12312451003 023524 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !Aq2B Q"#a$Df 1!AQBa"qR2#s$45 ?&˓_ڃMyVEMGF&BDPQeI}"טQR@Q@iXEˠyEwZxWx2^UDQQ PQ<׌cƠ}p+c{t8\kX /RUBv6@qOs chN ROKw,SZzJa+E۫6[pQ%5A23Saݘ\403*B5|OgVjp%T:i:c30ct},Z-hDe_%q =6ԩo˦uEnErA cZHTKmj}&fTHrIT6:;˚&/ fA300H)G@5¿\gCsYzo&tT#ҧVCy/6F,Z.+rO| 1\xOMnĐ.-w,w?Jdkvne~n/\_ӷhQW]k=[vl,mtXf*\=w*VOL `XaV"A: |%:пUb}RQPo8^zc^>Qk_aU\NRDzmzWcMF͒Rw.wfc^:I)Eqq[#1@+U?Yp?׵sS'zv ۜG8OːkwӖp ash9O?adT!|#lֻͥƓn{6qz;Lˁȯ&_IM'KK'|^=<)@{Q3|ڿ4w*ۢ+nvq (ǓP*I6}o1E"b9cl;v=6I`c|7쥼eM’RYjT(UjF/?`#IwT-TKAF;Mlux@R#+ _d6mBCP]}@]ln,f,ϻX:vts^0n 늱di=Ƀ2Wn<90%! [{nOoۡ]n9VhkI(3OZe h c,s3Cu""9zʤEw5/+`s=@D)sqK<8 $dFyz-'}v7.hZ5FWm۳aQniږb yK*\IՉŦdo"gnm=Q5ZrĕV 贾$>J uM#q9+Y߰G& bMrʋDXܲ5R;>$nX%IUrt@걅iPO|Ȕ "{`(Rl6c+cݾr#3r^e%Z앍KV r9fˮTfJQJ\M2b훲mdǘ.;܀ܜu/*t=*{ AdobedF]      !1 AQqB$a"Xx2r#%789  !1AQa"qB 2$47t%uwbr#CDdU8 ?!O GzCp}se4,{8lxW뗹YQEMq1Xaϒ] }j+]Xl&%(J' Prux4;:Uyr%GlLD q?Ӿ}#Z]f[ΥPkwMjƧ՟ijj!kW" SEljQJmvܖp:׌W3S(8$Q°աm:㫶?V所'c{G[}XR$&R JP0*8\^FѦmd*"SIv]ܘfHND&IRl SӰos[-;zp:wJLq{fVon,Mӷ8<5D-b(ȸ븚 ҚƖ[]}dӹy[Ҩ8+omDyk}n{Ut`" ,"30 IٛJgOn-q'QeNj8 $A"ZI '>dę%5=³ob>W߹êQ >}\\Qc1;ggO@4NU0ä~#8`/<akKχ40tF5YmœP0G܂b3Rkp"HfTU#%MvWڑߐl+p)wÁtGm/EJYۋ]E E J9L!<^ℰpˑ% nڝ$6w$gz/ BkFr{P. c(DfR%)b]]A}-ƅlUp}saBk|6̥W`We\1CxW] 1U6ӑh*N濊4pnUTu>e-c?61xF'?w}ߎ9DGj)UʐJ4SDcq2_c{/G4O5)Kkc}#JybVj;jki{5F:QX<$! D5er3K5ؔʀL 5 @%PP/(Mgܯh r_[Hu_< R)-/6LTL.Zm[Nԫd!@'$!,gO$ٗ՘-ˠVި춛SLPLr8bbhc=Mɍ+Υ I|gT,)Y+ۧ[ONHv5:k{w[mʳ2L@`e,YR5ۻ[5T05vV$Z%AP5U.G>#bTAQzGզq..C""z`0l$d"( HVog>y!! L?FUSӃA %j@+P11 f}#(!wŨAtlKRj1)g*X;:*֥fɥ7pP1 ȘqR˷'Pt ?u-Xo:@fZ$Dφ9d' ARZ+\ZϜ2d]*QuťxtuxA4guɑh$g8-Ρ,᳧9[o R96@Tݐ 4\W]/*ﭒ/3{M5Q#X T.v~h/cn\_ȵzΖ!҄ xD@8Dc/9< na eiҠ"PHcuq +lXR< ˁ℧6sַ"ڿ_5Q<.d""qmy"D%QV/aT\lc2N#Jm)P]"QSjcψVY(#% l 6շf,%*<>}YgSq;8n[sHL2}h{щvKOc:n,~bvo ]mZ/Xw_t!$s8=7m7zC:UCLh^;Z@KZU5$ $GJ5fLݮHR#ׁɚ4N& h*45LeiGo[S@ÎY8o~2k>RYͶ O8#LAQ \Lŭ$-lR$ߌѕwĔYM5 ĢLA(+tUB4PCQN3}X򼩄>39ÿ=SNֱ+ 1=rj<Ӗ>(D *5LY(̨eRYsFxP-6jW KhG+P ũ24E{n"/Ɣ[5ce<ǧ+ܪEw\6%ypUTH3IS!XJY`\RnbZ[%|2`3|(,kS:yr2RBGUΆu2&_W D SBc,P?omw5T^(hL c5`RɏRr63}K%+ӵex%@xDD% [aP" Au]4cP~/Gw m#k^tH>K])q!&^)2'ro1#fơ&,ce5^NwgC^|cYe0j J[/QUea] fH@ݻPaH礬6OD !F\rc'z:s:^2qW r!UHpզY0,܂sva+6cR$YnJ;IdkoQHoE鋢#EOQT^'탏It( N?GSUmAn!)JSndCLs)H$IC;G%LkRmzO(pRƪ~frRSˇ `Pz5IA3Q1Լu-])[re'{L~,S ."S̘!w;=E2ɒ!SQ u  .;T5합HE:Es&.Gh9LWeaX-ܺ+U ZM+L:p'!2#3ӹnb qUL.4r}]t,g>Y?]L nBROq+4***,OegO`.9MR'j@l:)sqV$=YInȠ ?d'Z=?P:nCKV% HS_,.UHX#fLa,+JQWn@Cg̨kDeH˱PŊ{W-[XoVmTiMc .G጖Ey1fE  *!պiԆP1ؽnU J;ƵpiOR=L ,g lc*%Gl:TK~X5$T4bU"%[ڛOGl}|d6_`e5ZWֶv,{K2D{ ѫ{BWʭcw䓁-!v\<\dX ]942!l4]4􏆺ek%PēðD@:*zVۦh䠑6GMBL('^RrHYE]̇<U BTLJ=Iz#ǎYnVdY CGa#ue]vfnR]Bs@s _FYSy*1P/,7qR%+Q])wCYVM:*O2#(=-MXR.U[N94I)<1+)FxN; "C@~REXM6X*hJ<=!CU)T-9UbTI<{ 3u/Qۏh]_l53R9AfTw ɡ3ZьS. ||_'U)b|9oqv ϛPjc.TJRotʄ| h;3av ȕO4qEQ0˽1D;-7{YQQ9+G.B5MЉ2_մ7u=x>Dd!at5}Wb۱Z0۴#Kt)%SdeR %yQl6qù+6%LI 9#!"TC+?+.RKe:j.9S>(y ;}#MGؗtfQ ..Хvp<0BC!PƏeO=BnxYn=j.ɨIe,7#ᴟJx ؾeye(9,>8&-Z;'N% drH L#D1Q%|')JN3N8~P Tlˆ@5ruf\WŴO>2k~m.x[--V3Q$,Y f<&Nni~ιM]='?m2*~Xb^uA<8:.<[(V1G!<0xa<0xa9{Jp Ghpp}:^8>`Ɣeo~7A:`yixN#,1`࿇ߡ cyouker-assistant-1.0.1/qml/img/logo/Manufacturer/M_AUDIO.jpg000644 001750 001750 00000006600 12312451003 024121 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !qAQ2BY $a4%5I1A!QBqa"2 ?&ɏ&<" &#Fh~%:y t&_h8D" l@Aٵ"X/.Wxؾ [&p2cIDIAѢ$ǧ0ߨqH, =<+[vmp 0 ˀudE=>/VɄw 1<c+`b=Pth17"\C 7BedO/.]5^ʭ٦YfR)R.reNIw';t;ܔ%ecƭW=lJR=Uj]| c )kI4IRJSʨ(il׍SJu, `$;;8ĚULQE*UXjuj25+5ʬ0i4biDgS( TckPQ&fi@yQR^؉+S6S[X-%h6eK4bVqP'}IL$|IaM0G_5ruҙ6$eVjBnAeG.td9M'(-?82h f]OыjMNyJ^{0J.Tvy(;mZ#SQ`e[Iœ*Ŝ &TKHT e-ֆj^ӨnMhuaYJ3%IGzc=ճDƩP9zRJs{#NzVˮ6&N.eH;-Fz픙w$Z]R!Dl&1oOvb.R a=TB4 z[eQ-fW$I TI#FydbˌW{\WetگR$w,! 4Sg7Zܫ}ɢvܶɨ]Y(v^pɾRim(B9RMڊh:ZDW n綆o_%a-Ts^-~*k@URBtM[ww0\6Vy[޾)UL?:wY5?"9;Q>Sj-?tӟ*^F{"o,S &g9-Pg qАHߊ*OyߐEn{Wg (᧽<"L3*zۦo{F~Pz}=oާAn{WgO>m/e3/y?CPe+?'S>WTo ?j𼿇J~(e(T}|9/C)C%UK?'yG<ڧ%x@<xJ0FC4d>y1@byB$DŽV$zcoDO$nȞ^\x-;6DK: "T[d;^L}P1h1:4DF.!2ADz'!`Kbͮyp삼j0しD'"LxEl"LG&=<цDKtAfLqELjAX؀kD^\; ")E|youker-assistant-1.0.1/qml/img/zh_CN/wizard/000755 001750 001750 00000000000 12312451003 021205 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/system.py000644 001750 001750 00000025263 12312451003 030204 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import gsettings class System(): def __init__(self, sysdaemon): self.sysdaemon = sysdaemon # -----------------默认值----------------- # Get Default Value def get_default_schema_value(self, schema, key): return gsettings.get_schema_value(schema, key) # Set Default Value def set_default_schema_value(self, schema, key, type): #fp = open("/tmp/default.txt", "w") #print >> fp, "--------------" #fp.close() default_value = self.get_default_schema_value(schema, key) if default_value is not None: gsettings.set(schema, None, key, type, default_value) if schema == "org.gnome.desktop.wm.preferences" and key == "button-layout": if default_value == 'close,maximize,minimize:' or default_value == 'close,minimize,maximize:': self.sysdaemon.change_titlebar_position('left') elif default_value == ':minimize,maximize,close': self.sysdaemon.change_titlebar_position('right') else: raise NotImplemented # ---------------scrollbars--------------- # set scrollbars mode overlay def set_scrollbars_mode_overlay(self): return gsettings.set('com.canonical.desktop.interface', None, 'scrollbar-mode', 'string', 'overlay-auto') # set scrollbars mode legacy def set_scrollbars_mode_legacy(self): return gsettings.set('com.canonical.desktop.interface', None, 'scrollbar-mode', 'string', 'normal') # get scrollbars mode def get_scrollbars_mode(self): return gsettings.get('com.canonical.desktop.interface', None, 'scrollbar-mode', 'string') # ---------------touchpad--------------- # enable/disable the touchpad def set_touchpad_enable(self, flag): return gsettings.set('org.gnome.settings-daemon.peripherals.touchpad', None, 'touchpad-enabled', 'boolean', flag) # get is touchpad enable def get_touchpad_enable(self): return gsettings.get('org.gnome.settings-daemon.peripherals.touchpad', None, 'touchpad-enabled', 'boolean') # set touch scrolling mode edge def set_touchscrolling_mode_edge(self): return gsettings.set('org.gnome.settings-daemon.peripherals.touchpad', None, 'scroll-method', 'string', 'edge-scrolling') # set touch scrolling mode two-finger def set_touchscrolling_mode_twofinger(self): return gsettings.set('org.gnome.settings-daemon.peripherals.touchpad', None, 'scroll-method', 'string', 'two-finger-scrolling') # get touchpad scrolling mode def get_touchscrolling_mode(self): return gsettings.get('org.gnome.settings-daemon.peripherals.touchpad', None, 'scroll-method', 'string') # set touch scrolling use horizontal True/False def set_touchscrolling_use_horizontal(self, flag): return gsettings.set('org.gnome.settings-daemon.peripherals.touchpad', None, 'horiz-scroll-enabled', 'boolean', flag) # get is touch scrolling use horizontal def get_touchscrolling_use_horizontal(self): return gsettings.get('org.gnome.settings-daemon.peripherals.touchpad', None, 'horiz-scroll-enabled', 'boolean') # ---------------window--------------- # set window button alignment left def set_window_button_align_left(self): gsettings.set('org.gnome.desktop.wm.preferences', None, 'button-layout', 'string', 'close,maximize,minimize:') self.sysdaemon.change_titlebar_position("left") #return gsettings.set('org.gnome.desktop.wm.preferences', # None, # 'button-layout', # 'string', 'close,maximize,minimize:')#close,minimize,maximize: # set window button alignment right def set_window_button_align_right(self): gsettings.set('org.gnome.desktop.wm.preferences', None, 'button-layout', 'string', ':minimize,maximize,close') self.sysdaemon.change_titlebar_position("right") #return gsettings.set('org.gnome.desktop.wm.preferences', # None, # 'button-layout', # 'string', ':minimize,maximize,close') # get window button alignment def get_window_button_align(self): value = gsettings.get('org.gnome.desktop.wm.preferences', None, 'button-layout', 'string') if value == 'close,maximize,minimize:' or value == 'close,minimize,maximize:': return 'left' elif value == ':minimize,maximize,close' or value == ':maximize,minimize,close': return 'right' #elif value == 'close,minimize,maximize:': # return 'default' else: return 'custom' # set right click menus have icons 菜单带图标 是否可在菜单项旁显示图标。 def set_menus_have_icons(self, flag): return gsettings.set('org.gnome.desktop.interface', None, 'menus-have-icons', 'boolean', flag) # get is right click menus have icons def get_menus_have_icons(self): return gsettings.get('org.gnome.desktop.interface', None, 'menus-have-icons', 'boolean') #-----------------------窗口控制按钮位置---------------------- # get window button #def get_window_button(self): # return ['close,minimize,maximize:', ':minimize,maximize,close'] #左边/右边 # get current window button #def get_current_window_button(self): # return gsettings.get('org.gnome.desktop.wm.preferences', # None, 'button-layout', 'string') # set window button #def set_window_button(self, value): # return gsettings.set('org.gnome.desktop.wm.preferences', # None, # 'button-layout', # 'string', value) #-----------------------标题栏鼠标滚轮动作--------------------- # get titlebar wheel def get_titlebar_wheel(self): return ['none', 'shade'] # get current titlebar wheel def get_current_titlebar_wheel(self): return gsettings.get('org.compiz.gwd', None, 'mouse-wheel-action', 'string') # set titlebar wheel def set_titlebar_wheel(self, value): return gsettings.set('org.compiz.gwd', None, 'mouse-wheel-action' 'string', value) #-------------------------标题栏双击动作------------------------- # get titlebar double def get_titlebar_double(self): return ['none', 'toggle-maximize', 'minimize', 'toggle-shade', 'lower', 'menu'] # get current titlebar double def get_current_titlebar_double(self): return gsettings.get('org.gnome.desktop.wm.preferences', None, 'action-double-click-titlebar', 'string') # set titlebar double def set_titlebar_double(self, value): return gsettings.set('org.gnome.desktop.wm.preferences', None, 'action-double-click-titlebar', 'string', value) #-------------------------标题栏中键动作------------------------- # get titlebar middle def get_titlebar_middle(self): return ['none', 'toggle-maximize', 'minimize', 'toggle-shade', 'lower','menu'] # get current titlebar middle def get_current_titlebar_middle(self): return gsettings.get('org.gnome.desktop.wm.preferences', None, 'action-middle-click-titlebar', 'string') # set titlebar middle def set_titlebar_middle(self, value): return gsettings.set('org.gnome.desktop.wm.preferences', None, 'action-middle-click-titlebar', 'string', value) #-------------------------标题栏右键动作------------------------- # get titlebar right def get_titlebar_right(self): return ['none', 'toggle-maximize', 'minimize', 'toggle-shade', 'lower','menu'] # get current titlebar right def get_current_titlebar_right(self): return gsettings.get('org.gnome.desktop.wm.preferences', None, 'action-right-click-titlebar', 'string') # set titlebar right def set_titlebar_right(self, value): return gsettings.set('org.gnome.desktop.wm.preferences', None, 'action-right-click-titlebar', 'string', value) if __name__ == '__main__': sss = System(None) #aa = sss.get_default_schema_value('org.gnome.settings-daemon.peripherals.touchpad', 'touchpad-enabled') #print aa#True #sss.set_default_schema_value('org.gnome.settings-daemon.peripherals.touchpad', 'touchpad-enabled', 'boolean') #bb = sss.get_default_schema_value('com.canonical.desktop.interface', 'scrollbar-mode') #print bb#overlay-auto #sss.set_default_schema_value('com.canonical.desktop.interface', 'scrollbar-mode', 'string') #cc = sss.get_default_schema_value('org.gnome.settings-daemon.peripherals.touchpad', 'scroll-method') #print cc#two-finger-scrolling #sss.set_default_schema_value('org.gnome.settings-daemon.peripherals.touchpad', 'scroll-method', 'string') dd = sss.get_default_schema_value('org.gnome.settings-daemon.peripherals.touchpad', 'horiz-scroll-enabled') print dd#True #sss.set_default_schema_value('org.gnome.settings-daemon.peripherals.touchpad', 'horiz-scroll-enabled', 'boolean') #print sss.get_scrollbars_mode() #print sss.get_touchpad_enable() #print sss.get_touchscrolling_mode() #print sss.get_touchscrolling_use_horizontal() #print sss.get_window_button_align() #print sss.get_menus_have_icons() # sss.set_menus_have_icons(True) # sss.set_touchpad_enable(True) #sss.set_scrollbars_mode_overlay() # sss.set_scrollbars_mode_legacy() # sss.set_touchscrolling_mode_edge() #sss.set_touchscrolling_mode_twofinger() #sss.set_touchscrolling_use_horizontal(True) # sss.set_window_button_align_left() # sss.set_window_button_align_right() youker-assistant-1.0.1/src/image/feature1.png000644 001750 001750 00000002257 12312451003 021440 0ustar00saucysaucy000000 000000 PNG  IHDRp ntEXtSoftwareAdobe ImageReadyqe<QIDATx'x xŇ l٤@"߿hO?1컴D#H뛀jPӎ +3`OCaP@` mN6G >ï<:YGFFs@ Wv1021%Y~ fy SZ4,x0Z0Uj,{,.IG1A.AW‰aX҂*_? 0oMW1 FF 7>#/ϟ?~- ܲo?P22 $zjN8Xg/>8NY,B񤶀;v=\?d|J`_t[ϗJ?@r~} UNJ@ ]^|ʠ/_ UN(*/ 30YXYخbdc$oS LY  SSn6PiJZA9 CIK0O?7 )FBHT o> AdobedF] 1!AqQ2B"aR3#Cs$!1AaQB"# ?ǣjGeѿV !:(oPQ tˡ) .+[(c,NøxQ]Sx2m].Po´QQD#~ʅNe] O8VxtQX؁Ge `vŠ"Omj8to#~F纎!T/Bw;(J~a³~"\5U,SF}J!;Qw)O¶Qw \.aQL셨v#̤.ꓡ #/BX<9e2{BRIvry&{  ^Ŭ h~h Y;d|Y )QN$r%9aX\0_BQ}H Q}ݶqlٳl@꬯G*yLs,uc9xMZ3X 6,ĴsK}~vIhE%Z@}umrZ{ajscݛ W(oܟSw7-$2V1ҭ.LL@Y1rYEWlz +h)@NNN¤cp\j=f-YE*3'n |eNcJϋ K6LCyǠ7a۴ru%-dvh:^?%k,ym >Z^tbTDM#bz꬙>? [7-Fp3d>?rgcqsGeFOIK\eD(yHRXEmnZǰҜC`s07&`10h7n^]ߥiM/\A*b9aZ^O_'bk5'NK8sr(&Ij۬1uՓYm0?Xio7 %Yg r+ȹ WDlhJE BʒI:-+Eu \CM2\g507?XXG$%3ƣպ٥QX?ǔ[,.cN[Zlׯ Ԓ;J ` +G&xS<QG]:T=NtӮkUT8kFZ>`G2}?i\=Og.sySa'_~ܜ/"-U-5B~H֗nirJVL#}0\zdl.x4xvuӨr--,/bĄ׽K;'}nݣKN5T\qO䯒N?ֹĺ?+E=Tc.%":~_;Y}Q|hG:ÕYۙ [DM|uezN69 XSNo&БYjڥk특LA?N.-νbrW4Yt1􍛅y 75ñzF߉Yajo2 *ީDud:!,3!2LjĖ@}AvoSԾX7vJTӧdS7T'2m].Po´QQD#~ʅNe] O8VxtQX؁Ge `vŠ"Omj8to#~F纎!T/Bw;(J~a³~" ;,p mXӰWqx+l^ Wqˣu'!,B7=tQߧ~EBS>];V QcjX.p𢻈[byouker-assistant-1.0.1/qml/img/icons/000755 001750 001750 00000000000 12312451003 020017 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/icons/dot_active.png000644 001750 001750 00000001217 12312451003 022647 0ustar00saucysaucy000000 000000 PNG  IHDRhOGtEXtSoftwareAdobe ImageReadyqe<1IDATxb`uB1iΟ\maپ|(sH m3a&brX_}I(b AĖ?4{\ VvNfKy,hUa1N-RWӏ/ Y Ȉ?o~ݮϕ÷_?^<|;*@0l㯲(A9Ɯ^a*9.z0,fNY1. r+F?Dq`w?d@Ɵ~IejJ: KoX5E@' ~ `0I$ex6s거210?o_zovG`o1Ӭ͞=, ^1;RSj[RR=?|~UWw/Y'qcˏEy~~OPvNK=)lە[z5d6?t]ZJ[N7N w&>W[nnN\ O$[ۙuovX8T,>*$[淽O?Z,?r uѩ)ﶪ=cbCy*}']ǡmLyUݓl=of1%9}Keu,ed\Zb6=7l `t}][j>lNG`6f?If I-6}]tk-65m"CD5^Fs^@ -X]OH`Z7;ԣH[\ůI\NE6<[.%6=F]I.V&9s i2IM|N1ߓ| X:ie $Ab_vqC,w k&w[4oPc U[p3:}nKOseog>g;g}I%?zyg$Wd9Wd fP<7{a^ï2U{lŧt*]Qv̈́}N̏bC'#Kmc̻1׶v{W~Ϊk Ѥsȸ3+#*}L/?亇Of{+kuFc#OΔ+'-Ĉ^㑍] ixc/PET[s3@|%E K='_Uzgfc2,hFcfnG=r٭oy캆gتe7ﱕDo;w+Q*C ^W{^Ȑ[yKiw8֋OD1;RSj[RR=?|~UWw/Y'qcˏEy~~OPvNK=)lە[z5d6?t]ZJ[N7N w&>W[nnN\ O$[ۙuovX8T,>*$[淽O?Z,?r uѩ)ﶪ=cbCy*}']ǡmLyUݓl=of1%9}Keu,ed\Zb6=7l `t}][j>lNG`6f?If I-6}]tk-65m"CD5^Fs^@ -X]OH`Z7;ԣH[\ůI\NE6<[.%6=F]I.V&9s i2IM|N1ߓ| X:ie $Ab_vqC,w k&w[4oPc U[p3:}nKOseog>g;g}I%?zyg$Wd9Wd fP<7{a^ï2U{lŧt*]Qv̈́}N̏bC'#Kmc̻1׶v{W~Ϊk Ѥsȸ3+#*}L/?亇Of{+kuFc#OΔ+'-Ĉ^㑍] ixc/PET[s3@|%E K='_Uzgfc2,hFcfnG=r٭oy캆gتe7ﱕDo;w+Q*C ^W{^Ȑ[yKiw8֋OD 1 93 70 1 72/1 72/1 2 2012-04-16T09:36:14+08:00 2012-04-16T09:36:14+08:00 2012-04-16T09:36:14+08:00 Adobe Photoshop CS Windows uuid:d94422aa-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:d94422a9-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:6307520c-8764-11e1-93bc-952fd8ae208c image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?FGqWohwFGqWohwFGqWohwFGqWohwFGqWohwFGqWoh1Wzxk?3ūIZEvU> uRqwh4[R. Adobe Photoshop CC (Windows) 2014-01-09T09:15+08:00 2014-01-09T11:08:42+08:00 2014-01-09T11:08:42+08:00 image/png 3 Cleanup Cache Cleanup Cache Cleanup Cache 拷贝 Cleanup Cache xmp.iid:29ca4164-ca55-2847-a07b-2b51ebc9f957 xmp.did:af4d37b8-f1e7-304b-9c14-53c1ad218b0c xmp.did:af4d37b8-f1e7-304b-9c14-53c1ad218b0c created xmp.iid:af4d37b8-f1e7-304b-9c14-53c1ad218b0c 2014-01-09T09:15+08:00 Adobe Photoshop CC (Windows) converted from image/png to application/vnd.adobe.photoshop saved xmp.iid:393c0002-6b70-0e45-a8c1-c7358b67b5b0 2014-01-09T10:52:08+08:00 Adobe Photoshop CC (Windows) / saved xmp.iid:36452dc2-e36b-9043-aea9-94deeb6b97a7 2014-01-09T11:08:42+08:00 Adobe Photoshop CC (Windows) / converted from application/vnd.adobe.photoshop to image/png derived converted from application/vnd.adobe.photoshop to image/png saved xmp.iid:29ca4164-ca55-2847-a07b-2b51ebc9f957 2014-01-09T11:08:42+08:00 Adobe Photoshop CC (Windows) / xmp.iid:36452dc2-e36b-9043-aea9-94deeb6b97a7 xmp.did:af4d37b8-f1e7-304b-9c14-53c1ad218b0c xmp.did:af4d37b8-f1e7-304b-9c14-53c1ad218b0c 1 720000/10000 720000/10000 2 65535 116 29 " cHRMz%u0`:o_F IDATxb?a]dkI3}C"Q.O"DnDh7+FXmξb!,do *v߱grePc+*D\|o׭|6 <-ab?'QG.Q# {%yX~{g0000001p0i3|uEi7ÉDž _at`x}4O4/KD9^ߊ~20000liNpOlFA0}y ?Ka ڷw (8(Tp;+8Au*Buѭ'E,E*ׂz?҃ ݒ!yDV2C":7xz=ӻ8q RuT9~ƸHGLe_0?@$=Bwpqfb5@UxlOY#3O#6 ]U:FK:ZiEn1o_C -p֫BHE%;0JRid'?hSQy&JR|D*I u'bQJDD"tu3TQ 6]Ʀ 1&ml{9nb"5P;cc5I>>{Q3[yU͑*mgBS5DZ!0ٰNT? " KLSYԖ>(^^ W4FT2j:bƘHb&j,L&3Bq3Yy3JKK-rEKH"gsNNs?=sI}(ϚW2WD'zb1y=#\֝b'r[( \'j[}NT]OaLsiLG# rm %jldԒcL2wi(D̛P&ip#[1Ma6vZm's 쇉O0I_h5 B? ~_I1:"D:TjÌഭG{e4!Aɖ}-=rV~Oˤ|O(gբhg;W@OG.G^z v#Ey=K필TKе/\gS>Ϝ"=tf2 ABPr=1d6Nu"M V5qmß}ɶS4,rXX|NBc Lb( tbC0< ngWi]_YWMu"~c"oPb.CuɾRGĞ'mn/vU򥩆f"+>|5oVF,>d^In& nyꃤS~gtɺ]L&<%чwivRiSP#[Ӱ$Ȟ1OM{Kyok&%ORnayQr)yaLcMg޴ӡ´Jj$@4F&j4$&151&$"B&EQ D@ DZK j+ݦLtw1uZ-t9;sϹ'޳\+{F6ayޮ,m2V6: 3wf* *+DG\2HAu1M,>EoC:$}e fسS3'߃PLw QŅI*?>idK_E S38#@1eřk4M@`~Pl #q/4ጞ_`ɐGq1"^\tJ"!OsuFPsވ%NTpGֹFy驅9dn'2wla%(!K ϸNHpNGMw{P^͹Z1or4^̓F1K%d/X!%"ìX#K/$ kY^gg,AvR\*bR%+Bge~{6ݴj}Q!^uCe)l7|R[*-\`!b 0Siۦ͵g@Hng8UrK(J*l{@lB %jM+؈ 6mZ@;TaqV{?z \` .o%-XWk,0YUg!w M1561БXOpOGk ¨}e?I J;`/p۴ls=qPηGbl$Gǎ*7Hz+/`MD[ȝ\vU*%}.P~.9^hk &|l|URs Zg+xYx=wn,sIt W9TY*֬H)f5L_ D588tV7\GUrHe%{aI7; /H̭CTh *}h/\5CӁX?IǃruhCoHop.r &;8s'q#'7fΓn*(JCD]T"ݡB 3ƠqUʌ6h!Cr7IENDB`youker-assistant-1.0.1/src/suspensionframe.cpp000644 001750 001750 00000013635 12312451003 022063 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "suspensionframe.h" #include "ui_suspensionframe.h" #include SuspensionFrame::SuspensionFrame(QWidget *parent) : QWidget(parent), ui(new Ui::SuspensionFrame) { ui->setupUi(this); this->setWindowOpacity(1.0); ui->title1->setText(tr("System runs smoothly"));//系统运行流畅 ui->title2->setText(tr("No need to accelerate"));//无需进行加速 this->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); QDesktopWidget *desktop = QApplication::desktop(); this->move(desktop->width() - this->width(), 80); ratio_sus = 0; locale_Lan = this->get_locale_version(); if(locale_Lan == "zh_CN") { ui->fastBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/upshiftZH.png);color: white; font-size: 12px}" "QPushButton:hover{border-image:url(:/pixmap/image/upshiftZH-hover.png);}" "QPushButton:pressed{border-image:url(:/pixmap/image/upshiftZH-press.png);}"); } else { ui->fastBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/upshiftEN.png);color: white; font-size: 12px}" "QPushButton:hover{border-image:url(:/pixmap/image/upshiftEN-hover.png);}" "QPushButton:pressed{border-image:url(:/pixmap/image/upshiftEN-press.png);}"); } ui->descBtn->setStyleSheet("QPushButton {border:0px;color:#1790c9}"); ui->descBtn->setText(tr("Details"));//详细 ui->descBtn->setFlat(true); ui->descBtn->setFocusPolicy(Qt::NoFocus); this->resize(265, 173); } SuspensionFrame::~SuspensionFrame() { delete ui; } QString SuspensionFrame::get_locale_version() { QString locale = QLocale::system().name(); return locale; } void SuspensionFrame::get_sysc_data(QString upspeed, QString downspeed, QString ratio, int used_memory, QString free_memory, QString cpu_ratio) { ratio_sus = ratio.toInt(); ui->uplabel->setText(upspeed); ui->downlabel->setText(downspeed); ui->ratiolabel->setText(ratio + "%"); ui->ratiolabel_2->setText(cpu_ratio + "%"); ui->memory_1->setText(tr("%1").arg(used_memory)+"M"); ui->memory_2->setText(free_memory+"M"); update(); } void SuspensionFrame::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void SuspensionFrame::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(0.5); } event->accept(); } void SuspensionFrame::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } void SuspensionFrame::on_descBtn_clicked() { if(this->height() == 173) { this->resize(265, 288); } else if(this->height() == 288) { this->resize(265, 173); } } void SuspensionFrame::on_fastBtn_clicked() { emit accelerate_memory(); } QSize SuspensionFrame::sizeHint()const { return QSize(height(),height()); } void SuspensionFrame::resizeEvent(QResizeEvent *event) { wheel=QImage(event->size(),QImage::Format_ARGB32_Premultiplied); wheel.fill(palette().background().color()); update(); } void SuspensionFrame::paintEvent(QPaintEvent *) { QPainter painter(this); QStyleOption opt; QPixmap memory; QPixmap background; background.load(":/pixmap/image/accelerate-bg.png"); memory.load(":/pixmap/image/memory.png"); painter.drawPixmap(0,0, background); painter.setRenderHint(QPainter::Antialiasing); //消除锯齿 wheel.fill(Qt::transparent); blister.load(":/pixmap/image/blister-big.png"); //线性渐变 QLinearGradient linearGradient(76,10,76,76); //创建了一个QLinearGradient对象实例,参数为起点和终点坐标,可作为颜色渐变的方向 painter.setPen(Qt::transparent); QString color1; QString color2; QString color3; color1=(ratio_sus == 100) ? "#ff2f00" : "transparent"; if (ratio_sus == 0) { color2="transparent"; color3="transparent"; } else if(ratio_sus > 80) { color2="#d13625"; color3="#d5311e"; ui->title1->setText(tr("Computer runs slowly"));//电脑运行缓慢 ui->title2->setText(tr("Using 'quick clean' ?"));//使用一键加速? } else { color2="#00b0ff"; color3="#006eff"; ui->title1->setText(tr("System runs smoothly"));//系统运行流畅 ui->title2->setText(tr("No need to accelerate"));//无需进行加速 // blister.load(":/pixmap/image/blister-big.png"); } linearGradient.setColorAt(0.0,color1); linearGradient.setColorAt( 1.0 - ratio_sus * 0.01,color1); linearGradient.setColorAt((ratio_sus <= 0) ? 0.0 : (1.0 - ratio_sus * 0.01 + 0.01),color2); linearGradient.setColorAt(1.0,color3); painter.setBrush(QBrush(linearGradient)); painter.drawEllipse(7,7,65,65); opt.init(this); painter.drawImage(0,0,wheel); painter.drawPixmap(44,231,memory,0,0,memory.width()*(ratio_sus* 0.01),memory.height()); painter.drawPixmap(7,7, blister); style()->drawPrimitive(QStyle::PE_Widget,&opt,&painter,this); } youker-assistant-1.0.1/qml/img/icons/unity.png000644 001750 001750 00000004470 12312451003 021702 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxWII}wUWUn/cY3AF! B|u$N\8pW7x -{k{F첇ي\{-qxx xxlgc %Xy~$Ya{{Qxyk"-*5ek׮ʕ+x ޽k,NVf=zis}?~lkL& ).VUɱ}x}΢]X&(h4۷_x~sLS Txei˂~Pwi}pO SBn9 P]6˂><ba1l;؄7P*3󠇱OD>G,3},CO}>pp皠O%jUAor)x>B "ȨnkJ!UX@"O;~ghUHA=#KQlJ׼7GY * ⊣n8ZZva%4[+ p]Ezr@<2Z.ėb]4##mß9Y-M$S=ҷ|C@zyv.bon9, cp8k.rJ*Q/q8?%?†'5gBe^TYsW4k,VTF%P MWPsG[=n/^1NȚ1񹙄nj@Yt,FE`@7T5w1q`Lq0j AD= teiA"BrI R+R΄T #FfcTȰO055tN4\jFf,=+B1h1Y^:lH6M fOq BxL(g3#2";yC0FH7 p dѯ pV9Dʆ&SmSXa*Fɗ8WJ%vN%)y:*V6_؅)jF9cuC4`xJb6/d_rW $U3a~`H|'o+XՀxv:exq0;>hrx{驽׏|~53Bhk#!p:QG Tv*\D{{8a`(,WPm ˛.ȔssAEIm_DcfcbҒ|4fFI6RYV`gf  ̰p. Xμ%Kɐ\T˩MLJuzCͪZΐz+L#0I۰qπ4ҎY4sSX,3p6ÍM/ &rQV\HOKSڹzB ;HK%: TR4߽8ߠf)àkjuviݢ*'Tt; <8&VW[ Ɉ(幮6Ȍo#9ƛw1&BB[C"/*g,1+@AװX>h/d& i6ڊI Ȃ6"Dܺl2a `+8}"zjACYH6b<.!vG\3lGw:s~+XI":|炰{&{ Xqea^OloKS܆^W³pF ?a{E^<F搆rfd BI¡%{XZlRfIӹ!g ct f̈́aTξhmn8Wۦ5Ueo@gB/ //`gIENDB`youker-assistant-1.0.1/qml/img/icons/tab.png000644 001750 001750 00000000222 12312451003 021267 0ustar00saucysaucy000000 000000 PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<4IDATxb/7ӓO`lb?|(0&t=D`L}`ĉIENDB`youker-assistant-1.0.1/qml/func/cleaner/000755 001750 001750 00000000000 12312451003 020474 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/func/common/TextArea.qml000644 001750 001750 00000005211 12312451003 022602 0ustar00saucysaucy000000 000000 import QtQuick 1.1 ScrollArea { id:area color: "white" width: 280 height: 120 contentWidth: edit.paintedWidth + (2 * documentMargins) property alias text: edit.text property alias wrapMode: edit.wrapMode property alias readOnly: edit.readOnly property bool tabChangesFocus: false property alias font: edit.font property alias activeFocusOnPress: edit.activeFocusOnPress highlightOnFocus: true property int documentMargins: 4 frame: true function append (string) { text += "\n" + string verticalScrollBar.value = verticalScrollBar.maximumValue } Item { anchors.left: parent.left anchors.top: parent.top height: edit.paintedHeight + area.height - viewportHeight + 2 * documentMargins + 4 anchors.margins: documentMargins TextEdit { id: edit wrapMode: TextEdit.WordWrap; width: area.width height: area.height selectByMouse: true readOnly: false color: syspal.text SystemPalette { id: syspal colorGroup: enabled ? SystemPalette.Active : SystemPalette.Disabled } KeyNavigation.priority: KeyNavigation.BeforeItem KeyNavigation.tab: area.tabChangesFocus ? area.KeyNavigation.tab : null KeyNavigation.backtab: area.tabChangesFocus ? area.KeyNavigation.backtab : null onPaintedSizeChanged: { area.contentWidth = paintedWidth + (2 * documentMargins) } // keep textcursor within scrollarea onCursorPositionChanged: { if (cursorRectangle.y >= area.contentY + area.viewportHeight - 1.5*cursorRectangle.height - documentMargins) area.contentY = cursorRectangle.y - area.viewportHeight + 1.5*cursorRectangle.height + documentMargins else if (cursorRectangle.y < area.contentY) area.contentY = cursorRectangle.y if (cursorRectangle.x >= area.contentX + area.viewportWidth - documentMargins) { area.contentX = cursorRectangle.x - area.viewportWidth + documentMargins } else if (cursorRectangle.x < area.contentX) area.contentX = cursorRectangle.x } } } Keys.onPressed: { if (event.key == Qt.Key_PageUp) { verticalValue = verticalValue - area.height } else if (event.key == Qt.Key_PageDown) verticalValue = verticalValue + area.height } Component.onCompleted: edit.width = area.viewportWidth - (2 * documentMargins) } youker-assistant-1.0.1/qml/func/info/MonitorInfo.qml000644 001750 001750 00000075744 12312451003 023015 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup Rectangle { id: home; width: parent.width; height: 475 color: "transparent" property int itemNum: 5//每个模块的子项个数 property bool firstFlag: false property bool secondFlag: false property bool thirdFlag: false property bool fourthFlag: false property int columnSpace: 10 ListModel {id: firstModel} ListModel {id: secondModel} ListModel {id: thirdModel} ListModel {id: fourthModel} function show_several_monitor(num) { var Vgaproduct = systemdispatcher.getHWSingleInfo("Vga_product", "monitor").split("<1_1>");//显卡型号: var Monchip = systemdispatcher.getHWSingleInfo("Mon_chip", "monitor").split("<1_1>");//当前显卡: var Vgavendor = systemdispatcher.getHWSingleInfo("Vga_vendor", "monitor").split("<1_1>");//显卡制造商: var VgaDrive = systemdispatcher.getHWSingleInfo("Vga_Drive", "monitor").split("<1_1>");//显卡驱动: var Vgabusinfo = systemdispatcher.getHWSingleInfo("Vga_businfo", "monitor").split("<1_1>");//显卡总线地址: //--------------first-------------- home.firstFlag = true; firstView.visible = true; firstModel.clear(); firstModel.append({"title": qsTr("Graphics Card Model:"), "result": Vgaproduct[0]});//显卡型号: firstModel.append({"title": qsTr("Current Graphics Card:"), "result": Monchip[0]});//当前显卡: firstModel.append({"title": qsTr("Graphics Card Vendor:"), "result": Vgavendor[0]});//显卡制造商: firstModel.append({"title": qsTr("Graphics Driver:"), "result": VgaDrive[0]});//显卡驱动: firstModel.append({"title": qsTr("Bus Address:"), "result": Vgabusinfo[0]});//显卡总线地址: // splitbar1.visible = true; logo1.visible = true; logo1.source = InfoGroup.judgeName(Vgavendor[0].toUpperCase()) ? ("../../img/logo/Manufacturer/" + Vgavendor[0].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //--------------second-------------- home.secondFlag = true; secondView.visible = true; secondModel.clear(); secondModel.append({"title": qsTr("Graphics Card Model:"), "result": Vgaproduct[1]});//显卡型号: secondModel.append({"title": qsTr("Current Graphics Card:"), "result": Monchip[1]});//当前显卡: secondModel.append({"title": qsTr("Graphics Card Vendor:"), "result": Vgavendor[1]});//显卡制造商: secondModel.append({"title": qsTr("Graphics Driver:"), "result": VgaDrive[1]});//显卡驱动: secondModel.append({"title": qsTr("Bus Address:"), "result": Vgabusinfo[1]});//显卡总线地址: splitbar2.visible = true; logo2.visible = true; logo2.source = InfoGroup.judgeName(Vgavendor[1].toUpperCase()) ? ("../../img/logo/Manufacturer/" + Vgavendor[1].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); if(num == 2) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*home.columnSpace + 10*2) *2 + 40; } else if(num >= 3) { //--------------third-------------- home.thirdFlag = true; thirdView.visible = true; thirdModel.clear(); thirdModel.append({"title": qsTr("Graphics Card Model:"), "result": Vgaproduct[2]});//显卡型号: thirdModel.append({"title": qsTr("Current Graphics Card:"), "result": Monchip[2]});//当前显卡: thirdModel.append({"title": qsTr("Graphics Card Vendor:"), "result": Vgavendor[2]});//显卡制造商: thirdModel.append({"title": qsTr("Graphics Driver:"), "result": VgaDrive[2]});//显卡驱动: thirdModel.append({"title": qsTr("Bus Address:"), "result": Vgabusinfo[2]});//显卡总线地址: splitbar3.visible = true; logo3.visible = true; logo3.source = InfoGroup.judgeName(Vgavendor[2].toUpperCase()) ? ("../../img/logo/Manufacturer/" + Vgavendor[2].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); if(num == 3) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*home.columnSpace + 10*2) *3 + 60; } else if(num == 4) { home.fourthFlag = true; fourthView.visible = true; fourthModel.clear(); fourthModel.append({"title": qsTr("Graphics Card Model:"), "result": Vgaproduct[3]});//显卡型号: fourthModel.append({"title": qsTr("Current Graphics Card:"), "result": Monchip[3]});//当前显卡: fourthModel.append({"title": qsTr("Graphics Card Vendor:"), "result": Vgavendor[3]});//显卡制造商: fourthModel.append({"title": qsTr("Graphics Driver:"), "result": VgaDrive[3]});//显卡驱动: fourthModel.append({"title": qsTr("Bus Address:"), "result": Vgabusinfo[3]});//显卡总线地址: splitbar4.visible = true; logo4.visible = true; logo4.source = InfoGroup.judgeName(Vgavendor[3].toUpperCase()) ? ("../../img/logo/Manufacturer/" + Vgavendor[3].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*home.columnSpace + 10*2) *4 + 80; } } } Component.onCompleted: { systemdispatcher.get_monitor_info_qt();//获取光驱详细信息 home.firstFlag = false; home.secondFlag = false; home.thirdFlag = false; home.fourthFlag = false; // systemdispatcher.get_audiocard_info_qt();//获取详细信息 var num = systemdispatcher.getHWSingleInfo("Vga_num", "monitor"); if(num == 1) { home.firstFlag = true; firstView.visible = true; var vendorName = systemdispatcher.getHWSingleInfo("Vga_vendor", "monitor");//制造商 firstModel.clear(); firstModel.append({"title": qsTr("Graphics Card Model:"), "result": systemdispatcher.getHWSingleInfo("Vga_product", "monitor")});//显卡型号: firstModel.append({"title": qsTr("Current Graphics Card:"), "result": systemdispatcher.getHWSingleInfo("Mon_chip", "monitor")});//当前显卡: firstModel.append({"title": qsTr("Graphics Card Vendor:"), "result": vendorName});//显卡制造商: firstModel.append({"title": qsTr("Graphics Driver:"), "result": systemdispatcher.getHWSingleInfo("Vga_Drive", "monitor")});//显卡驱动: firstModel.append({"title": qsTr("Bus Address:"), "result": systemdispatcher.getHWSingleInfo("Vga_businfo", "monitor")});//显卡总线地址: // splitbar1.visible = true; logo1.visible = true; logo1.source = InfoGroup.judgeName(vendorName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = home.itemNum*20 + (home.itemNum - 1)*home.columnSpace + 20 ; } else if(num >= 2){ home.show_several_monitor(num); } var vendor = systemdispatcher.getHWSingleInfo("Mon_vendor", "monitor"); if(vendor.length !== 0 ) { productLabel.visible = true; vendorLabel.visible = true; dateLabel.visible = true; sizeLabel.visible = true; inLabel.visible = true; maxmodeLabel.visible = true; gammaLabel.visible = true; outputLabel.visible = true; supportLabel.visible = true; monitortitlebar.visible = true; montitle.visible = true; monitorlogo.visible = true; var vendorName = systemdispatcher.getHWSingleInfo("Mon_vendor", "monitor"); monitorlogo.source = InfoGroup.judgeName(vendorName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); productText.text = systemdispatcher.getHWSingleInfo("Mon_product", "monitor"); vendorText.text = vendorName; dateText.text = systemdispatcher.getHWSingleInfo("Mon_year", "monitor") + "/" + systemdispatcher.getHWSingleInfo("Mon_week", "monitor"); sizeText.text = systemdispatcher.getHWSingleInfo("Mon_size", "monitor"); inText.text = systemdispatcher.getHWSingleInfo("Mon_in", "monitor"); maxmodeText.text = systemdispatcher.getHWSingleInfo("Mon_maxmode", "monitor"); gammaText.text = systemdispatcher.getHWSingleInfo("Mon_gamma", "monitor"); outputText.text = systemdispatcher.getHWSingleInfo("Mon_output", "monitor"); supportText.text = systemdispatcher.getHWSingleInfo("Mon_support", "monitor"); } else { productLabel.visible = false; vendorLabel.visible = false; dateLabel.visible = false; sizeLabel.visible = false; inLabel.visible = false; maxmodeLabel.visible = false; gammaLabel.visible = false; outputLabel.visible = false; supportLabel.visible = false; monitortitlebar.visible = false; montitle.visible = false; monitorlogo.visible = false; } } // Component.onCompleted: { // systemdispatcher.get_monitor_info_qt();//获取详细信息 // chipText.text = systemdispatcher.getHWSingleInfo("Mon_chip", "monitor"); // chipmodelText.text = systemdispatcher.getHWSingleInfo("Vga_product", "monitor"); // var cardVendor = systemdispatcher.getHWSingleInfo("Vga_vendor", "monitor"); // chipvendorText.text = cardVendor; // driverText.text = systemdispatcher.getHWSingleInfo("Vga_Drive", "monitor"); // cardlogo.source = InfoGroup.judgeName(cardVendor.toUpperCase()) ? ("../../img/logo/Manufacturer/" + cardVendor.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); // chipbusText.text = systemdispatcher.getHWSingleInfo("Vga_businfo", "monitor"); // var vendor = systemdispatcher.getHWSingleInfo("Mon_vendor", "monitor"); // if(vendor.length !== 0 ) { // productLabel.visible = true; // vendorLabel.visible = true; // dateLabel.visible = true; // sizeLabel.visible = true; // inLabel.visible = true; // maxmodeLabel.visible = true; // gammaLabel.visible = true; // outputLabel.visible = true; // supportLabel.visible = true; // monitortitlebar.visible = true; // montitle.visible = true; // monitorlogo.visible = true; // var vendorName = systemdispatcher.getHWSingleInfo("Mon_vendor", "monitor"); // monitorlogo.source = InfoGroup.judgeName(vendorName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); // productText.text = systemdispatcher.getHWSingleInfo("Mon_product", "monitor"); // vendorText.text = vendorName; // dateText.text = systemdispatcher.getHWSingleInfo("Mon_year", "monitor") + "/" + systemdispatcher.getHWSingleInfo("Mon_week", "monitor"); // sizeText.text = systemdispatcher.getHWSingleInfo("Mon_size", "monitor"); // inText.text = systemdispatcher.getHWSingleInfo("Mon_in", "monitor"); // maxmodeText.text = systemdispatcher.getHWSingleInfo("Mon_maxmode", "monitor"); // gammaText.text = systemdispatcher.getHWSingleInfo("Mon_gamma", "monitor"); // outputText.text = systemdispatcher.getHWSingleInfo("Mon_output", "monitor"); // supportText.text = systemdispatcher.getHWSingleInfo("Mon_support", "monitor"); // } // else { // productLabel.visible = false; // vendorLabel.visible = false; // dateLabel.visible = false; // sizeLabel.visible = false; // inLabel.visible = false; // maxmodeLabel.visible = false; // gammaLabel.visible = false; // outputLabel.visible = false; // supportLabel.visible = false; // monitortitlebar.visible = false; // montitle.visible = false; // monitorlogo.visible = false; // } // } Component { id: monitorDelegate Row { spacing: 10 Common.Label { text: title font.pixelSize: 14 color: "#7a7a7a" width: 150 // height: 20 } Text { id: slotText text: result width: 450 wrapMode: Text.WordWrap font.pixelSize: 14 color: "#7a7a7a" // height: 20 } } } Common.ScrollArea { frame:false anchors.left: parent.left anchors.top: parent.top anchors.topMargin: 30 height: parent.height - 40 width: parent.width Column { anchors { top: parent.top topMargin: 10 left: parent.left leftMargin: 30 } spacing: 18 Row { Common.Label { id: titlebar text: qsTr("Graphics Card Info")//显卡信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - titlebar.width - 30 * 2 } } Column { anchors.left: parent.left anchors.leftMargin: 20 spacing: 10 Item { id: listItem width: parent.width height: 0 Column { spacing: home.columnSpace anchors { left: parent.left // leftMargin: 30 } Item { width: 680 - 4 - 30*2 height: home.firstFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) + 20 : 0 ListView { id: firstView anchors.fill: parent model: firstModel delegate: monitorDelegate visible: false spacing: home.columnSpace } Image { id: logo1 visible: false opacity: 0.5 source: "" anchors { right: parent.right top:parent.top topMargin: 40 // rightMargin: 30 } } } // Common.Separator { // id: splitbar1 // width: 680 - 4 - 30*2 // visible: false // } Common.Separator { id: splitbar2 width: 680 - 4 - 30*2 visible: false } Item { width: 680 - 4 - 30*2 height: home.secondFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) + 20 : 0 ListView { id: secondView anchors.fill: parent model: secondModel delegate: monitorDelegate visible: false spacing: home.columnSpace } Image { id: logo2 visible: false opacity: 0.5 source: "" anchors { right: parent.right top:parent.top topMargin: 40 // rightMargin: 30 } } } Common.Separator { id: splitbar3 width: 680 - 4 - 30*2 visible: false } Item { width: 680 - 4 - 30*2 height: home.thirdFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) + 20 : 0 ListView { id: thirdView anchors.fill: parent model: thirdModel delegate: monitorDelegate visible: false spacing: home.columnSpace } Image { id: logo3 visible: false opacity: 0.5 source: "" anchors { right: parent.right top:parent.top topMargin: 40 // rightMargin: 30 } } } Common.Separator { id: splitbar4 width: 680 - 4 - 30*2 visible: false } Item { width: 680 - 4 - 30*2 height: home.fourthFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) + 20 : 0 ListView { id: fourthView anchors.fill: parent model: fourthModel delegate: monitorDelegate visible: false spacing: home.columnSpace } Image { id: logo4 visible: false opacity: 0.5 source: "" anchors { right: parent.right top:parent.top topMargin: 40 // rightMargin: 30 } } } } }//Item // Row { // spacing: 10 // Common.Label { // text: qsTr("Graphics Card Model: ")//显卡型号: // font.pixelSize: 14 // color: "#7a7a7a" // width: 150 // } // Text { // id: chipmodelText // width: 450 // text: ""//systemdispatcher.getHWSingleInfo("Vga_product") // font.pixelSize: 14 // wrapMode: Text.WordWrap // color: "#7a7a7a" // } // } // Row { // spacing: 10 // Common.Label { // text: qsTr("Current Graphics Card: ")//当前显卡: // font.pixelSize: 14 // color: "#7a7a7a" // width: 150 // } // Text { // id: chipText // text: ""//systemdispatcher.getHWSingleInfo("Mon_chip") // font.pixelSize: 14 // color: "#7a7a7a" // } // } // Row { // spacing: 10 // Common.Label { // text: qsTr("Graphics Card Vendor: ")//显卡制造商: // font.pixelSize: 14 // color: "#7a7a7a" // width: 150 // } // Text { // id: chipvendorText // text: ""//systemdispatcher.getHWSingleInfo("Vga_vendor") // font.pixelSize: 14 // color: "#7a7a7a" // } // } // Row { // spacing: 10 // Common.Label { // text: qsTr("Graphics Driver: ")//显卡驱动: // font.pixelSize: 14 // color: "#7a7a7a" // width: 150 // } // Text { // id: driverText // text: ""//systemdispatcher.getHWSingleInfo("Vga_Drive") // font.pixelSize: 14 // color: "#7a7a7a" // } // } // Row { // spacing: 10 // Common.Label { // text: qsTr("Bus Address: ")//显卡总线地址: // font.pixelSize: 14 // color: "#7a7a7a" // width: 150 // } // Text { // id: chipbusText // text: ""//systemdispatcher.getHWSingleInfo("Vga_businfo") // font.pixelSize: 14 // color: "#7a7a7a" // } // } } Row { Common.Label { id: monitortitlebar text: qsTr("Monitor Info")//显示器信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { id: montitle anchors.verticalCenter: parent.verticalCenter width: home.width - monitortitlebar.width - 30 * 2 } } Row{ anchors.left: parent.left anchors.leftMargin: 20 Column { spacing: 10 Row { spacing: home.columnSpace Common.Label { id: productLabel text: qsTr("Monitor: ")//显示器: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: productText text: ""//systemdispatcher.getHWSingleInfo("Mon_product") width:360 font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { id: vendorLabel text: qsTr("Vendor: ")//制造商: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: vendorText text: ""//systemdispatcher.getHWSingleInfo("Mon_vendor") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { id: dateLabel text: qsTr("Production(year/week): ")//生产日期(年/周): font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: dateText text: ""//systemdispatcher.getHWSingleInfo("Mon_year") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { id: sizeLabel text: qsTr("Display Area: ")//可视面积: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: sizeText text: ""//systemdispatcher.getHWSingleInfo("Mon_size") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { id: inLabel text: qsTr("Dimensions: ")//屏幕尺寸: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: inText text: ""//systemdispatcher.getHWSingleInfo("Mon_in") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { id: maxmodeLabel text: qsTr("Max Resolution: ")//最大分辨率: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: maxmodeText text: ""//systemdispatcher.getHWSingleInfo("Mon_maxmode") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { id: gammaLabel text: qsTr("Gamma Value: ")//伽马值: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: gammaText text: ""//systemdispatcher.getHWSingleInfo("Mon_gamma") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { id: outputLabel text: qsTr("Current Output: ")//当前接口: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: outputText text: ""//systemdispatcher.getHWSingleInfo("Mon_output") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 height: 40 Common.Label { id: supportLabel text: qsTr("Support Output: ")//支持接口: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: supportText text: ""//systemdispatcher.getHWSingleInfo("Mon_support") font.pixelSize: 14 color: "#7a7a7a" } } } Image { id: monitorlogo source: "" opacity: 0.5 anchors { top: parent.top } } } } //logo // Image { // id: cardlogo // source: "" // opacity: 0.5 // anchors { // top: parent.top // topMargin: 75 // left: parent.left // leftMargin: 570 // } // } //logo } } youker-assistant-1.0.1/qtsingleapplication/src/qtsinglecoreapplication.cpp000644 001750 001750 00000012355 12312451003 027635 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Solutions component. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qtsinglecoreapplication.h" #include "qtlocalpeer.h" /*! \class QtSingleCoreApplication qtsinglecoreapplication.h \brief A variant of the QtSingleApplication class for non-GUI applications. This class is a variant of QtSingleApplication suited for use in console (non-GUI) applications. It is an extension of QCoreApplication (instead of QApplication). It does not require the QtGui library. The API and usage is identical to QtSingleApplication, except that functions relating to the "activation window" are not present, for obvious reasons. Please refer to the QtSingleApplication documentation for explanation of the usage. A QtSingleCoreApplication instance can communicate to a QtSingleApplication instance if they share the same application id. Hence, this class can be used to create a light-weight command-line tool that sends commands to a GUI application. \sa QtSingleApplication */ /*! Creates a QtSingleCoreApplication object. The application identifier will be QCoreApplication::applicationFilePath(). \a argc and \a argv are passed on to the QCoreAppliation constructor. */ QtSingleCoreApplication::QtSingleCoreApplication(int &argc, char **argv) : QCoreApplication(argc, argv) { peer = new QtLocalPeer(this); connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); } /*! Creates a QtSingleCoreApplication object with the application identifier \a appId. \a argc and \a argv are passed on to the QCoreAppliation constructor. */ QtSingleCoreApplication::QtSingleCoreApplication(const QString &appId, int &argc, char **argv) : QCoreApplication(argc, argv) { peer = new QtLocalPeer(this, appId); connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); } /*! Returns true if another instance of this application is running; otherwise false. This function does not find instances of this application that are being run by a different user (on Windows: that are running in another session). \sa sendMessage() */ bool QtSingleCoreApplication::isRunning() { return peer->isClient(); } /*! Tries to send the text \a message to the currently running instance. The QtSingleCoreApplication object in the running instance will emit the messageReceived() signal when it receives the message. This function returns true if the message has been sent to, and processed by, the current instance. If there is no instance currently running, or if the running instance fails to process the message within \a timeout milliseconds, this function return false. \sa isRunning(), messageReceived() */ bool QtSingleCoreApplication::sendMessage(const QString &message, int timeout) { return peer->sendMessage(message, timeout); } /*! Returns the application identifier. Two processes with the same identifier will be regarded as instances of the same application. */ QString QtSingleCoreApplication::id() const { return peer->applicationId(); } /*! \fn void QtSingleCoreApplication::messageReceived(const QString& message) This signal is emitted when the current instance receives a \a message from another instance of this application. \sa sendMessage() */ youker-assistant-1.0.1/qml/img/icons/bootanimation.png000644 001750 001750 00000003354 12312451003 023375 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڼWI\U=ׯ!mg41ID".TĝBDqE4 hFD!A$ƅ\qM6q|]A RdIYJJJ(3I4O%eX߆!ŵPA{W@0'&gaIR^jZ%HFJ?` *!=AL:wqB>9a'0{1PG2G99IRG(!8Sb9rBP*N)`-@312neuoSX6gyMO=oN}D'ZT(&ˣpxx6,\;⼑ق!X<=Ԁ9yꦵ8ze*UJN1;KLn3FLDapd24: i=gO>ԂK02[딤LP>0ԗғ~jMcUr_c$dbLq+%H*)6߱_?i\GX/#>xkGYkR N GkUK])tm@zk:{Gb,2rD!,9~+:D ,cc;^ 24"` ۮՉFŦppl{h<4#2M'4l3vEpưM2>_w:oV,oƎP #`O_j8y6Zo1<LqUS A@>@#`: . qac9.jDersGg<";3QmR-]u@;z`KtwM,`pQ:&<DViCC"`s*L*01Zd7m(]*j13"<)v=2y%^'j k W3]뷝{GxMw5:ӌl>Vv֩$pݶQd(SA^G:-'&Z613 mDN7Ř:hM!KlC,r3> EL= $m-kVKs܅(XυC3479o ܉ DvtwNÜ<6a{I|Ȇ3LOX}[?ۊs>1?ߦ+_]Κ ~|Jw0mxAa>LY"sfU`+Ve~Mq_Bp_ @s=}[n~bi5vu? Br"6"F~霭hS헃Q {4Hf;~1e>s'^BB/reT>T ,G򂚆RZbY ~(4PPR. */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup /*------------------最多支持四个硬盘的显示------------------*/ Rectangle { id: home; width: parent.width; height: 475 color: "transparent" property bool firstFlag: false property bool secondFlag: false property bool thirdFlag: false property bool fourthFlag: false property int itemNum: 6//每个模块的子项个数 ListModel {id: firstModel} ListModel {id: secondModel} ListModel {id: thirdModel} ListModel {id: fourthModel} function show_several_harddisk(num) { var diskmodel = systemdispatcher.getHWSingleInfo("DiskProduct", "harddisk").split("<1_1>"); var diskvendor = systemdispatcher.getHWSingleInfo("DiskVendor", "harddisk").split("<1_1>"); var diskcapacity = systemdispatcher.getHWSingleInfo("DiskCapacity", "harddisk").split("<1_1>"); var diskname = systemdispatcher.getHWSingleInfo("DiskName", "harddisk").split("<1_1>"); var diskfw = systemdispatcher.getHWSingleInfo("DiskFw", "harddisk").split("<1_1>"); var diskserial = systemdispatcher.getHWSingleInfo("DiskSerial", "harddisk").split("<1_1>"); //--------------first-------------- home.firstFlag = true; firstView.visible = true; firstModel.clear(); firstModel.append({"title": qsTr("HDD Model: "), "result": diskmodel[0]});//硬盘型号: firstModel.append({"title": qsTr("HDD Vendor: "), "result": diskvendor[0]});//硬盘厂商: firstModel.append({"title": qsTr("HDD Capacity: "), "result": diskcapacity[0]});//硬盘容量: firstModel.append({"title": qsTr("Device Name: "), "result": diskname[0]});//设备名称: firstModel.append({"title": qsTr("Firmware Version: "), "result": diskfw[0]});//固件版本: firstModel.append({"title": qsTr("Serial Number: "), "result": diskserial[0]});//序列号: splitbar1.visible = true; logo1.visible = true; if(diskvendor[0] == "Western Digital") { logo1.source = "../../img/logo/Manufacturer/WDC.jpg"; } else { logo1.source = InfoGroup.judgeName(diskvendor[0].toUpperCase()) ? ("../../img/logo/Manufacturer/" + diskvendor[0].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); } //--------------second-------------- home.secondFlag = true; secondView.visible = true; secondModel.clear(); secondModel.append({"title": qsTr("HDD Model: "), "result": diskmodel[1]}); secondModel.append({"title": qsTr("HDD Vendor: "), "result": diskvendor[1]}); secondModel.append({"title": qsTr("HDD Capacity: "), "result": diskcapacity[1]}); secondModel.append({"title": qsTr("Device Name: "), "result": diskname[1]}); secondModel.append({"title": qsTr("Firmware Version: "), "result": diskfw[1]}); secondModel.append({"title": qsTr("Serial Number: "), "result": diskserial[1]}); splitbar2.visible = true; logo2.visible = true; if(diskvendor[1] == "Western Digital") { logo2.source = "../../img/logo/Manufacturer/WDC.jpg"; } else { logo2.source = InfoGroup.judgeName(diskvendor[1].toUpperCase()) ? ("../../img/logo/Manufacturer/" + diskvendor[1].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); } if(num == 2) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *2; } else if(num >= 3) { //--------------third-------------- home.thirdFlag = true; thirdView.visible = true; thirdModel.clear(); thirdModel.append({"title": qsTr("HDD Model: "), "result": diskmodel[2]}); thirdModel.append({"title": qsTr("HDD Vendor: "), "result": diskvendor[2]}); thirdModel.append({"title": qsTr("HDD Capacity: "), "result": diskcapacity[2]}); thirdModel.append({"title": qsTr("Device Name: "), "result": diskname[2]}); thirdModel.append({"title": qsTr("Firmware Version: "), "result": diskfw[2]}); thirdModel.append({"title": qsTr("Serial Number: "), "result": diskserial[2]}); splitbar3.visible = true; logo3.visible = true; if(diskvendor[2] == "Western Digital") { logo3.source = "../../img/logo/Manufacturer/WDC.jpg"; } else { logo3.source = InfoGroup.judgeName(diskvendor[2].toUpperCase()) ? ("../../img/logo/Manufacturer/" + diskvendor[2].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); } if(num == 3) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *3; } else if(num == 4) { home.fourthFlag = true; fourthView.visible = true; fourthModel.clear(); fourthModel.append({"title": qsTr("HDD Model: "), "result": diskmodel[3]}); fourthModel.append({"title": qsTr("HDD Vendor: "), "result": diskvendor[3]}); fourthModel.append({"title": qsTr("HDD Capacity: "), "result": diskcapacity[3]}); fourthModel.append({"title": qsTr("Device Name: "), "result": diskname[3]}); fourthModel.append({"title": qsTr("Firmware Version: "), "result": diskfw[3]}); fourthModel.append({"title": qsTr("Serial Number: "), "result": diskserial[3]}); splitbar4.visible = true; logo4.visible = true; if(diskvendor[3] == "Western Digital") { logo4.source = "../../img/logo/Manufacturer/WDC.jpg"; } else { logo4.source = InfoGroup.judgeName(diskvendor[3].toUpperCase()) ? ("../../img/logo/Manufacturer/" + diskvendor[3].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); } //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *4; } } } Component.onCompleted: { home.firstFlag = false; home.secondFlag = false; home.thirdFlag = false; home.fourthFlag = false; systemdispatcher.get_harddisk_info_qt();//获取详细信息 var num = systemdispatcher.getHWSingleInfo("DiskNum", "harddisk"); if(num == 1) { home.firstFlag = true; firstView.visible = true; var vendorName = systemdispatcher.getHWSingleInfo("DiskVendor", "harddisk"); firstModel.clear(); firstModel.append({"title": qsTr("HDD Model: "), "result": systemdispatcher.getHWSingleInfo("DiskProduct", "harddisk")}); firstModel.append({"title": qsTr("HDD Vendor: "), "result": vendorName}); firstModel.append({"title": qsTr("HDD Capacity: "), "result": systemdispatcher.getHWSingleInfo("DiskCapacity", "harddisk")}); firstModel.append({"title": qsTr("Device Name: "), "result": systemdispatcher.getHWSingleInfo("DiskName", "harddisk")}); firstModel.append({"title": qsTr("Firmware Version: "), "result": systemdispatcher.getHWSingleInfo("DiskFw", "harddisk")}); firstModel.append({"title": qsTr("Serial Number: "), "result": systemdispatcher.getHWSingleInfo("DiskSerial", "harddisk")}); splitbar1.visible = true; logo1.visible = true; if(vendorName == "Western Digital") { logo1.source = "../../img/logo/Manufacturer/WDC.jpg"; } else { logo1.source = InfoGroup.judgeName(vendorName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); } //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 硬盘个数 listItem.height = home.itemNum*20 + (home.itemNum - 1)*10 + 10*2; } else if(num >= 2) { home.show_several_harddisk(num); } } Component { id: hddDelegate Row { spacing: 10 Common.Label { text: title font.pixelSize: 14 color: "#7a7a7a" width: 150 // height: 20 } Text { id: slotText text: result width: 450 wrapMode: Text.WordWrap font.pixelSize: 14 color: "#7a7a7a" // height: 20 } } } Row { id: titleRow anchors { top: parent.top topMargin: 40 left: parent.left leftMargin: 30 } Common.Label { id: titlebar text: qsTr("HDD Info")//硬盘信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - titlebar.width - 30 * 2 } } Common.ScrollArea { frame:false anchors.left: parent.left anchors.leftMargin: 20 anchors.top: titleRow.bottom anchors.topMargin: 20 height: 398 width: 680 - 4 Item { id: listItem width: parent.width height: 0 Column { spacing: 10 anchors { left: parent.left leftMargin: 30 } Item { width: parent.width height: home.firstFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: firstView anchors.fill: parent // width: parent.width // height: home.firstFlag ? (6*20 + 5*10) : 0 model: firstModel delegate: hddDelegate visible: false spacing: 10 } Image { id: logo1 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar1 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.secondFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: secondView anchors.fill: parent // width: parent.width // height: home.secondFlag ? (6*20 + 5*10) : 0 model: secondModel delegate: hddDelegate visible: false spacing: 10 } Image { id: logo2 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar2 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.thirdFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: thirdView anchors.fill: parent // width: parent.width // height: home.thirdFlag ? (6*20 + 5*10) : 0 model: thirdModel delegate: hddDelegate visible: false spacing: 10 } Image { id: logo3 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar3 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.fourthFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: fourthView anchors.fill: parent // width: parent.width // height: home.fourthFlag ? (6*20 + 5*10) : 0 model: fourthModel delegate: hddDelegate visible: false spacing: 10 } Image { id: logo4 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar4 width: 680 - 4 - 30*2 visible: false } } }//Item }//ScrollArea } youker-assistant-1.0.1/qml/func/settings/000755 001750 001750 00000000000 12312451003 020723 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/icons/button_pressed.png000644 001750 001750 00000001443 12312451003 023567 0ustar00saucysaucy000000 000000 PNG  IHDRnsBIT|d pHYs -HtEXtSoftwarewww.inkscape.org<IDAThK`y7fF:fk&ME㎲y{z;qH.A`ҋ"R6]C7be; L!|$8'4 ڦiVo?dݛs]թ9MӨ(xpIр(aZ>NLLZ__㓓wTC*_fnT*ǚRpppp-˽x 奥*m,@TW^[[Jj:EQ 0l6JwBDR1ƔޮI[p ތdU&@VebɪL{! $1ܜ$˝8%\ۊHVeȪL0yHD "`QBI}ߗvcͦ eգ( OOOk25Dӳ@+:>>󱣣Gq|xxoӗ[[[WZaq(y^azzb=B'R("7*CsN8!G^433s dT*JȽt:Eqv?XbGJIENDB`youker-assistant-1.0.1/qml/img/weather/d12.gif000644 001750 001750 00000005435 12312451003 021427 0ustar00saucysaucy000000 000000 GIF89a008u݀˸ζɱַݍƩĚƷ˲ՁɳȬ󞨴ٿڅ兝éϰͩ5r8s9t:u;t>yC{8dUGp^ceeffjQyvswysy^}܂ᅵ偰`zz֍*`'Z/l4r3p4q0g5r5p7t6s7t9v8s:v9v9t5l>;w:w:u;x:v=z8p5j>{=z=y>y=w?z>zA}A~4dA|A{B}C~B}DC~=q7gEHGCzG~>oMDv=jJCtQMK}AmGvNYSS\_VIta`\Xdb\ed_\gic`mkbQxotssW~vuvzywys}yׂ䁴ㄷ恳bin1r4d[tvv|߃サ▸ۻ!,00eN*\ȰaBYkɣN:;3jȱǍyg(S\ɲJ%(d͛8s3=J @ѣH*]4)@z3Ր@XC~a"8q䨍#q Y O&~PRIc܏莤sGozTC&ٳgB&(6p{C6pl=FG wxD$9BHpڼY2) P0 & Da*(9(D,lbn;o,lDFosAm:`v #$p"R¶|C::7 d 4 I+H8 n/o04C4 3Tr=@ , /b> Bh0 H.>,TOEsD0 %Pa<6816#XG:ЁP0XP`k  آ"D!!.^x*T)Р NAE@dHqA" y[D5/p +.PщN"I!S$#i_/+` ¸0Y_B?bE.b SBU I +|.a C .< ,r8.L) -00 )Z-daJTb )-cp=:L-DxX1™Z@8@g 1Nr6sƈ1! gg=qJn cX3G>,48@OeSG -#)i~ H Q-G+d352ь:ay2Z~  ELچVD %Ua`mT-Ԣ cC2Sc +{B͘qWծxB3@Xf E,{XgE* b0 p:\ht B*rьh#a 2#;e3a.x-3ZhD#Xp;\fC30# 5`]z%'A >#F;Q^`{0| ӨQ{ӘF,1WL _]i0E! 1< SXB iX%4xP QjȘQ4d,xdx12SX"==Bz/ 9@?Za](K Y wH`~;\q0:6u84RA0܆(CY3|wBpC0$:G>}T`5L#xC>0 l\51#cxG/ (c<2hE*q2]2\ ʾ} 0ae©ЍmtװF]1a.]nHc61xc(ü~6r |H; F7arfȸ7{G9;youker-assistant-1.0.1/qml/img/logo/Manufacturer/D-LINK.jpg000644 001750 001750 00000012146 12312451003 023724 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF] 1 q!AQ"2B$#4tw9  !1AQaB"q2$R#Dbr34tE7 ?Au)$pq8CE˯Œ!pBLHt)13F-&Ό&,!8A5 ar&|0S(I~p^!C  prl4Sbg W:Ky?ef7<^2V6K]oP%PyOE%.eqdxZwe]ukiPx?x2D Quo}vX.}5#ZP8 ˰or6mwn7,`ѻr5lq]) *@̢ L/Rۥ|S֑Jή;*)! Аt>8! oQh3P RgԾkGKo@dѦJԊĪ+8؜BUIW#J%Q2"x6 .?psCS9x[V)r-nj'P8;)x(CcmY-erTzj ☛57H [3ZXBQ')[KJ~H:mT_h(w*z Zzo/VD^ڇ\B;6ջW|ii_|C 5J*PHf+ԑՑE~AW<[M˶6dkӳ#KD3O Q͵9"TApll}/2W2&#H!gfF4IejǑ:jAS\ Br U jqu6L7@TT0oQa $ I"۬}OUjROT.!I*at6wk0ۘ춆6nYlԌ.j\kWrŢ)hokSWuH?)r7)zG&lz~Ǹv*XOTMIJ.'Ԑ7, Q iqzQFSyH ,ɲ0(Y~Lݞ8#~@z먤'mI. M~7C-1kc)ci ⍡WR'Y] pNզyOSH@Q.nrM.ҪkmE9TR1T֬J@=sY{L#XP{fHK_6sik?O͟6Oh6n=),λQ["2/OE]TB- GyT'iӎ~R/y[k[m ^C)t(*mx [/QL˕9 \FHUFhZ2f Sޒ0T0/k(|~- ̸0' BT򱯳(ҊWpL mscpI.nwr-jC@"Č+xxejTeLTT-sS':4Bp]Wa\~RR3'_h57]~v-i$K3@ sӓpR8TR_Sr&ۧy${gR ;M+%CmsbzE%* DEd3c!{;4wq+:4>G.w A;#@֝b/ͤѪ ć(!W=JV2]!I%L}TVw⊺|l B ޫۘչXt&nemP/#~y_eC3!Ll#WMH2d;e8xxܼW@ۭngP\fPBʽ:g󅎩vӤ 3nZ +VකBO6b3>צ^!C,h=6m{}~i}H&x(Wt+ݢeU ~R`CW!3r&hKW܅/C8Ƙ*3F7=՛W1YJ~bNQ>꬧T]뽉Dm&Ԟ@ݣ2 8A}aXM{㍶4m UUȒ~BĤh$FNYݵWRʋTNc22RKudy4}?(y>|OXAQs^Q":_rP=7,oRF'qr$ʏ|P_(L 9q#6%6R?R Q(ÐSߕx'[^ rĞRRJ(7/.퉵{h^Zⰶ1 d΅lD}&`19D,תEeI@(&pz[ﶩ6}v6*oE "aRSS(~v7ofDM,9ԑ{;SDrzt*$YXgd@J(֪)g69w-xu•5!{L ̞ǖQhSdI=S3'8DݿEg!WcHYdפU%J<B!@uZsNf:OPwآ7::Q.kj~{~Jt<-mn$ISZǩ)=EQB\I* ;nd ,*\r^n=E {>6!qJf\[MRj0bKjuҷYKom$Tⅲ3!b#-xyS:TA ^îAw5j%J7؋tA91i L4ʖUJ'H!~oUۻ→̃).-8PFp]†H7-;ׅ7.,ݞFh'KM2xS&It7=л!5N r hc:0 \!׆#&݅ `A vaL%!.]xa 38-bDEˠw}OǏ鉜7?youker-assistant-1.0.1/qml/func/bars/ToolBar.qml000644 001750 001750 00000004253 12312451003 022073 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id: toolbar property bool showok: true property bool showrestore: false signal quitBtnClicked signal okBtnClicked signal restoreBtnClicked BorderImage { // source: "../../img/icons/tab.png" width: parent.width; height: parent.height + 14; y: -7 } Rectangle{id: splitbar; x:2; width:parent.width - 4 ; height:1; color:"#b9c5cc"} Row { spacing: 19 height: 32 anchors { right: parent.right rightMargin: 42 top: splitbar.bottom topMargin: 10 } Common.Button { id: okBtn visible: toolbar.showok hoverimage: "green.png" fontsize: 13 text: qsTr("OK")//确定 width: 94;height: 29 onClicked: toolbar.okBtnClicked() } Common.Button { id: restoreBtn visible: toolbar.showrestore hoverimage: "blue.png" fontsize: 13 text: qsTr("Restore")//恢复默认 width: 94 height: 29 onClicked: toolbar.restoreBtnClicked() } Common.Button { id: quitBtn hoverimage: "gray.png" fontcolor:"#929292" fontsize: 13 text: qsTr("Back")//返回 width: 94; height: 29 onClicked: toolbar.quitBtnClicked() } } } youker-assistant-1.0.1/qml/img/skin/h_dark.png000644 001750 001750 00000042734 12312451003 021620 0ustar00saucysaucy000000 000000 PNG  IHDR.tEXtSoftwareAdobe ImageReadyqe<E~IDATxڴU;Q=oA,L!A(6FL#" EBFlBB~C mR@TAAMA?qF$[feΞ3sg%h4RNp8 #x<3|FF4E\fjT h6(z |WYp |O&?. 5& n N*M&z=@ r9r _Y+H8ܫ&;U,-ozxRDZ"şD&Vqp2 g6|"ɕ苗Q~o6,W(\V$L"A"`^x\.)JхVVsPTr .1FK-Bk߇^墯00 hYC.v| h6 "NDŽR F#vj"ТSw Jr{2TE6G BRt:c J%DVR҉eV%V&( |™L7\.ݮ( < #$~ @}ճ& Wm , A8H"tC'AJ*v\ Nũ8;C7); Z*C!yEW@$IZt#M&?69B"rUUg\f0T*Q:&ML exau^^GBW^,l &$FF(JBLlo|};F^y-S*ڬWP|@𜌻")W:]\’%=ؿ C}aJE}ӻJ7BmVlӧAY~Q^#)R3LDիh4 QwQ.lrt:_ OQ2$˲ݮIy#?} l=g7b18@\pj5,0RPC̟L$-X /CCCLLGC9J%I~!dp8LüD8k \.-h1~W;5EQZR0% p oA~,Tw& T& 42F^fl=ftzknU=M5Ϋ ODpAJvߤ+-Ns_?C6m+_e.ܢk Qq]NvDX,wގj%K|rumo+/+Őn7!n73BԛMHTaVAQIR.D#)]D ֆJR"FHpPM DNI Aia73i9v.7Ҝ3q=9_ 6?ɷh+ obmܸP44 Y^yP%anAA/ۅcRCOE"zQwe'twwb>Rm/B-P gxM)//Wn33#(N<ijjq|Hݓ#άޞX:a7"V }K]i]헑Wr۞fmȑ,2LOg^>q "3K7lb-g>FSu:+BpVp$lD$s& |u&#aǡ4 q^4xAJHŋ8 x"TR$G XPoDŽȜKgt`F@xA?Et63# ɂ .!vccc푤P2oETh"YnY5f W%$< HGص ~Y3`Ңa>FPFjOPGCCC;lH>B{&黾>7ud]zzzqZӄCFR"S.ĮI')ZJ-Z5`>H R# > MM変x~{fΜw>bg$sϜ9w׺R{+/]sƈƒZnbhUΫy1$d1V N;CCC;[UcoVUZ- NWRR{ NsިgϴV|),dLtA% 0|Ouٶ-ײDž۷o/  -288{); P@=Yzf%(xJLP ]9;Vul,^[͒l6FHd߳OJȋA뚅uM\, 6彼qƢXᡖ-[VBQ۶m+$>= ҉ +uBI}VIK߅zYߛ secu.ԨmlX_y&8%&Bcrtڭ:$ldOb7;]ED#8~G^WbLS`9Gf$$0f& a+?!|AxNlbݼ26J c wxNll$!#B Ǐ/(dgՆEGQO 9|fnWA&k,^o+5kwG9qҸmJC!_|paŒ֋o=qqv3޹ؘp(y;ds_??޼$.OnMbG jDyyzk⍓CcO7W=>8U}s8{qewQջm ç+;[4!9IS Ny:tWzǮM[i޵#늠. +6~]ʑ)TcڭJxC%܇>:xŧ'wT[ǂc;T@(cӖ\+:"uu2 μ/|ףMƅgvs~z }ծ^:bj;׿??xJ/0f.}gp@&qAdBOꁈcѢcOĻW??{b?|eW~Գed>R)8[ sɢ;K~X-+bWׇ=whxJ F]4¹}1htz.>(հln(8*R@[s*)ӒVH$G2ngaмs\VMМ'aBƜK&)HѣGKOf &^։ʉ%d6f͚nF12#Z;L6]uhH]PA9vW> "-[tVccZ4u 2 I%4'O05=.Icw5U]wy ȩV] t:.0>89;.wu~.p}A5}T亖O¤y:>-;]0_'Xꣾf:Mp{y 13NKȪ&jժq]ym2%Ƥ[Xl6pTrA 9,YIIL,m ܹ38PxtW-D1YzBC/ zDG ILvM'4bGSv,VaOzdȩʢ$~%CӜ U`G: f"c=#Li/tQ%!Nߊu̗w(M\4‹`Ks"!NK36I:tDKdCe'ᲝJXK Vh)o@lgtmڴ47&z ;q U!jfFk6Eɜo4a'Fe0"%5 |AOuvDe}t4nNp!dN4wdOQ׵eO8֭MLH~ʘ1), jBVg:Q_iQ [)A5}8f]&;95dYv~;CD=rV?ù k}/kP NBRvCqE802!\^f$`o(MtTowje{TęJ5nk1PqL"$}3o֜'[3{-DG=Uz~߾}fDBk]UvhA 6(*EX E'Q1jKJh !JC5/$KB`xΚ9=δv=瞹wZ{/X;=v ~p{Ev !`-Zݹe'/Q`Q@+t GBH*veop88m#N6M?#]$|ks'7v\U2>%@cbEɘ~'|'z ;yº[ӕW^[yvt(Ko+1~z{ȼMU#< t3aQܡu V$:~;@Ƈ7.X] aq3֪wS!+\C3v!,PM{]s/:kl]eb Rwvzugl0T;<$FzP3-V ך5krF|xʝbo1N>Kv]Io\piC-Y$?WGA/ _u^@XF|Ew)\vwS.?i\̊0uҥ]VnJAU,"] l( =96Se*XL wArz͢ŲD۝G4 mi*B\Ǘ:0h_ RBE_A V16K5Tn˖<0>oG8/TpSA>7:QCF86ߜ I:4qQGZP:E!ohka$l`QLZ:r3lR5!L:5CБ8]}&A@%<]mVG9td{jj|Y_~:}+̆Cos'aG?'|=yatO'AM׫_~֬(u GwD[lJ_[ݟؼ!ׅu%j^6O'l%M',MzxӖOtUw;u3kցi/ؖWܐ~ɩg|R=k{tI/viNIxtk?-'ҺI\@5'dV> gJ5wS&rwHx:w#l'ݿylڸ!=zߊ3f+ៜ}/|wg:MrHҔi3}&L^=GD08z}4j#sˮtasOn:~y%q qUg>J>SM^zH{5sOn:=9uۖgcrysT+Ϥ=̘3?82'ԫ&k]ni ϻvwU_hざs1{얨Ur8 l%\tNF;޻%C5IS'O,,nNg< R#o ݘ12G.t{Ngm?\3NetF8 hf`Hr^BS%9c\2?.O&OMǝzI2?óQ;1=]޳/Se'Ǿtszo7W.W*Xyo[7MhFԡ/bAI\±O:jL~5c+iFm>"n3z39?_dّfsVZЪ4HciA]"Ժ𷟄>;ٿ}=J#'qn#'WĮ}薔E/h38o5B`.c=,!I0÷Qnz0 v8ph HzbFG\OY5vtQA,3_$ʕ+@X` ~Pl;*q y\in1(+'zzg͚W,j״ V$NZTXa}D_ױ~^PsA;:LU ׉Yˤ2DZ݄[mUW] *}ʯC=%o?釞G_S$x@B$ػ 0B φ 8zG$3*eQ! կ|{;<0G)j12 5ԙ&v^w`\'ƔL9z)AT*'l59 감w9GDÇ [2j_a^MZ S .j=1= vCծvOU Ο]%bWUz'a 1W{TZk;_(QՄ' XBWD1 (T(6! 3N݁aWr $BjZU "tDTUөO6UjGUVQQcG#իҥKi[-Xy5aY %uAUʎÙۡۤ  v"Z>@E> [Y&#.7भι+vl%CxeV6#Rnkqg/Չ?^3iv {)-U@Xp›*kIǫ7 TUR . 4U?Z!&"P%ψY$Nb=X:OJT a3vW;hhtQhDF hhY Vìzd4ۉ 99 /X`y4/=!Wf VxQNMPvƹsFo%kx=Pr[_cEr+V\D@Z᪶I$$nd!1dOREoW 5k'iTDZVe˲BiQU8 dGrV)׎`TZ44a M7 PCF,~ *Hh-U~ 'v/fz>PM`%V"hjƄ! a5A9mC³6:DS \ 9`[;FԙQwl7a]zDK\W?&3nC!8ݔj:K>`ܛ?4vt|t vt2^禢BSr{0kLiއ>zu]UP;|iΜ99!#Wi nUj 5 Lo0{r/6L>)/=0PYtT_'Uh9a ;o;: T/X GFK!,J=`T{ c|'Zv*({O!ơ1x3^[  潂s-k@EhY"9o޼\.€\CM*ڏ0Ͷ.`@xb7\E^(9 Zoψ.Z_?ٳ3q+,Puds5[<Ǝ/Ԏ19`2!ۜp0 dIDIÔ*QM-_h&~{G_<ʈ1+ry*= t)ЎS{*rA`HdPA"* L8ZZ,tb:}SRkBժ%DJ(Oy!Iulν眛!w3g{k~),"f(%#?nEՈʘ] ͙3'{i% {@LrYNmaP` %9>CXRv dtD mVu¢꼔nn׎QTwZ|r0FNVҒpv nz="Ru6&A^NK :&2ě/JY<8z GIq]Ej%v^GVR!٘" eV 0 r$B"JPs4daURnf'M5ʄ9uu]0{T5Ec5 n^TjI Q%tױ_H@X=zPPY=;6qgȈb5놑Yhƌ9ABϟpvM[ }-nHŠMU %\QԭV3y1A@si`*"3 XST0~lrB/@Tz-sM{|#6޴ Z/%GyrމJ :5jdv0.{WG]*4ZB`w"Ǧ>vy睗iD[G EBv'E50 9RDq}!zMtGu%܈#I4 kwq}EK;@,s5#mpgGe΃z:%{RI5kֺkK |ZtHR!.}3>K(Kw^rwmLD>Qi/oCh['!tRx.++т{ GT#o&MʁzQ5YeyA.q\/IME5뜦9d}< /UĒE9&#T%{y+,9sf@D N'N\W\WC55DD2t%vIε=H|XWi0bdZBDh)(ɞAٙjBt6e(K*kwᥞJڛnlo)~xpޑM.e{!ՅMOh6(E$۵ѺȎ:8!$kikȘw|UjFu6*hZYiSrW_}uF<ۢ?a4@]@ q_D&[0[z1T}2Fk8 R}]hTk 3#6lKKjiӦeNJtN \k/'tMMx@58l0gC5kU_)^ԡkR$ WA@:+ʪ! Z^҆O-:33!5M+Dxg BJK =O 2BvO/ 3J<(#.! `8B%QLjBkc]Ӗ]h:(ŕ ;d㉁#ڸ>"b Dg#ۧ T{fxcZ[O6=$]Ӈ>v,Wm+}~~yoo`Ⱥ8%Mnr~:PV'v:UӤ7atWViKBnMV,᣶JuLO_tY5f\=w~[Z{ӥ}1ıfI_dĵ5k}ݸUV G}!iNK;N:8=r5陊4x.~V,_-YnE+F0a4O7oZUIa={osaq{{Ɗ`Ǯ. alVWX$1taM GÇhW@`} ^į}iŲ%b.jB>A/Wt䌯E3ߏO=5'C8}_Dumwk7K}"=ЍiW!? f{[~|Azѳi߷&M~owc&Vz"gy8ѹi]L}!Bu#Nմl67 ?<`}_lzcK+tݷN$OiXZ5Y'fiRIҊ /Mc*;]]CJEO?MgVzk-i3TUZ[ql^o K'}涴Ңn]wYZpߵiI!}"=wlYm[ݧN$܅L+YagW׶`4=陧J7~sdzt)/!MzWOoǧ>YOjtp5oՈ%iwLO?Qߕ!m{.=E ڜ@0C}(;) np6zU,^u WAV/zimFXm~3*]tG˞ybz=Dr^>]O?7ଽy4{UkMx֟\_߯^7φ=|DiW*ݎNamߧG&M+'/LcG;?Oiw>Sla$dNjb@ HqtM7[xKk4t1ڭBjmZaޭ[]k^d$b7~|u;FkZy &!/w➪63 9IN^WkL}^ՙPV|6Wk bnR/O7wHs G471 Dȇ֝Ktz&$U+K/wDb,hUeA&~7qq0[U%LHȫتآpIda79ߺZ0Um l&!Wj5-U aMVU6%jS;RYpB`%~{G.xGQcNn:Aޑ"jdj=@At$93E{J} tZ[ tݪ!yD4dHu .K&oV:AP倞N8UK,Oȿn6:+?I<3@n qn 5>F$D\`Cu`XbgJ\`oQ3L;Ct bQwI-pܜr:gGpy?;Ӻv{T?}f&qO#%ڼBZԾ3gN;87`a'FɒIBvHd @4\-#Ύ 3N!lІ\&.VA=Dxqs=w]k7  1iQEeb#>= 6%Db%^,3DbI,օ4!jRZNF(6AK;:QCDAswkG*6$Yy d1Q=dF*iF |Rp"B:[և ۶Ga߳dRHfE" \Y :=[B'٤^!y1IC2CWV({疪 t5;Ǫ&c3L5OabM'Zm{.]ILJjF, #ev$9@7@.4&瑃jvXK#SOOV>0HpY" \Hz<m_y69z<7<8.U]e`קԇYߵHHEjkz?5B1 ׳0INhGo o9t=JEprΘ1#RB*ƔQ3TIDvaDrYxN:nDj|/H_oʀRy}0rcSu$Aԭ~9Q2FqA %Q_:'p ujemkH-V*Fc-]l t 0("S1Nuh' OigOf !L㣋\ѐ ʣVA:ŬYJ@F~UX3S)|˺ ;@z8@;rMЇZdm*&}A`\^s) 7SL'|rNJH0K]T4Cph:~4ς4b0jh'n^^C-QKMl/RkE}b@xjTjH%*)aT1jSaЅdޚ}p^٥92Kqb^!Z!Fb<zꩧf5w;$i"B@w-6 ŠKǐDE쯀rsCe6=<8HFp e٧QkFUs*4G56v l4@HˎUj 2 xnJVF@K(ٔm hklPTI(#Hj7Cl0QZl'{šXtfrm#-Jdڔ ֍P>[OTLr( Sø@ǒ=٬˅LV'/z̫su׭ E7:Zi2rCqG}4w8ó Չ2O)qNuEeZO+,J1 tMa޼yQP8ҟ>}zA I1;f jn)5|Jv (u(6Tf,HHnvRDq͖)1]7!eq6F6+Ab34mM|Ѵ@-+2FpA2lQt@-8U{°h}PR >?YL 6IENDB`youker-assistant-1.0.1/qml/img/logo/000755 001750 001750 00000000000 12312451003 017644 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/func/common/behaviors/ButtonBehavior.qml000644 001750 001750 00000002165 12312451003 026007 0ustar00saucysaucy000000 000000 import QtQuick 1.1 Item { id: behavior signal clicked property bool pressed: false // Can't be alias of mouseArea.pressed because the latter is read-only property alias containsMouse: mouseArea.containsMouse property bool checkable: false property bool checked: false property bool triState: false signal mouseMoved onCheckableChanged: { if(!checkable) checked = false } MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: true onPositionChanged: behavior.mouseMoved() onPressed: behavior.pressed = true // needed when hover is enabled onEntered: if(pressed && enabled) behavior.pressed = true onExited: behavior.pressed = false onCanceled: behavior.pressed = false // mouse stolen e.g. by Flickable onReleased: { if(behavior.pressed && behavior.enabled) { // No click if release outside area behavior.pressed = false if(behavior.checkable) behavior.checked = !behavior.checked; behavior.clicked() } } } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/HYNIX.jpg000644 001750 001750 00000014110 12312451003 023676 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1!q AQ2"B#$w9aRu&v8H  !1A"aQq2B$4 btu#C789RSsd5Uev ?xx'as#7u7y?)YDz'Fw3|r1ީ'8& )co'(*Fރ 1;ʳ7 ͮfFT'$)&8==y["tii|r[ JoU2Mi17q $"Kmk.# +_nPVN՚k8CAEv%T!j"f)PRH Dv\T}AP=)CcP#Q$.p<©o{6ߚ"2L&텪蕬R8 8P C17eo-]^ ZH 8O|1hKӦ] j/pF:ӞYK Ow8ϡMN5Z)MTI{TJLܟ:ck/?.fdQ)f]g(ΰ.# *D  Q0ٻjq9iն=Nޔg Rf}LrxJg~t&om8GU%x)eTSHltQ@S2TE1L)~Syt(vM1J.1%KI L$~kT;t-lӨ**BfIr# d%Mn5y6֯s2*V`g˟jnRbRnlpN&-!36`8Ӯ]BiЭ|ٕN lj22P滷؍ܪ]p j;HRPW0352Y{!L H/q1U9bG09krV$2-1~+zyxlZ0:[> %}OLH9IP  VRHuSmRKKŤ6.r]6i!W6ĥEkg.ݹeVߗw-Eҙ*M#́#V( vҊ$@Dd=W#67eҿPS2D3aa(WfA~-J{ZEl9_JyK#/LY>g1y)l=KnQBVtVk݁/E%7$) r)!,Y;˼n֠(2. JH3S~-~ݼ 4+KU3.Kii!_\LĠMXa==VO1Lj#$1~Q9?b[y}7K//ǻ|=xy+_˨S_w*;TqE{-BOe&e௤=%5;{욳_޺>=TYǥyxp{Oܟz^^Lqi]➢K6ghg\+%CjZL](Z,)IX$) |0wV]/ CT$p塢~K{Y'AUiu3.]if eVNW&ڙf&%5FMF:4j*z#G7PYVEY͙rnawhp١h ⒤0R#8-qgv#k-zҨH^jOS#ժKIts7ʚìqJzV2S\@t R^* 56@"EJW Yb֌Jq'3 HTkwd\{nY5ܸԮb$J@J̥NY'=2[ aoyຐ媂;R3/vjL)DLFtHUڹ.+oEQ^\) $eK2S#۽f;YAٶ莜񽮥4-S䖡JH7I6$SJqc\܂~*'M+߲kZQV -P%qaլnNdxRn16Y@L0#+[mH-JK򦹔R›hDD|8tjnk7[^`ޙ@lHd6yRPQ!R&@u5?kc{,#:d, ؉L؂zTPFAtivI`}ϣ$'Qid\T{M'YBGLte~#|ET]Օ <*+ BPv7>)RJS9J_h|b5Ld6 Bq<ڶ5Zi{ _+F։i$JDʔ5(F<4}*pb\g48LO݋߾ݰ;%pTA@m^46v3.QWa^G+7S֟3ػǽo7=teF=~h:r}l> xO1rOoDγr?͓&^9/(-h܌Ƭ5U*DxSӤZ:WD&D+km%bFg$t:w"=Jt BT,`'2g/;α6u[&+[J](u?D'wj;$D7nd&u2\μ(RШJvtb}>UӷF_QI)L9q_;2)hZSR+LFb+p:I*s3]rfD類%n)[@3:xUJ:9\U4,7H:uC \f&Ækuv vsKluU2_MrGd~yڜ<C2πܽճ?~RUx]$=漱xebxnv_q:-g#:}Ӑs C#s{dZ®cQaCR9ennò\{niqQm!JRuiP O9H|yjlmjT*H]iY\ P"7mm3JRD9ox~޻yjiJR 7GI'*=mTL/zhp%OK D"[v-ѹRSm*[IrIP3tZ*(z{) P @1#v n*tmڒ1P5P16o-م5x!+sKOOʙ39c}ڍULSmF =B2j@tJ%:-ѽMt7R¦> qxc>S=oU/ifltp<Z`|YFHD%q~J] @00:}g=wSŮo/᧎YO1||KiN`ur_t0l$g&X&/@?YIRr9DBg e)c,Vg 63 zO]3+7y;: (_^W=rtέUCec D@vϣh[[I$fI$̒cMy^7\N۽Ҟ\OTS-A! %% (7G ׈`G! 8tL(CP|0#炂~?f8/"i0rk#C׆Czx('as#youker-assistant-1.0.1/qml/img/logo/Manufacturer/ENLON.jpg000644 001750 001750 00000011150 12312451003 023653 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !qAQ"B 2#r$4֗8  !1AQaqB"2Rb#$%34& ?y6פMZB& -J`vSѠ0]ͥ(/~C$ߘiD Sd G.(LjbEWMZB& -J`vSѠ0]ͥ(/~C$ߘiD Sd G.(LjbEWMZB(cym Z7x S JSI^-P0JGD&0gծ_^QmoǬՠܫaeC2"\'2<iT@QX9#mtP`ܫaSQ7jTr~nT7~G&r5 Sd G.c1Dyئ\wgq2M/O LޕSKKXWYf_Nf$0c)~Ŋg֧3` ,l@d7:r#n\bSd @uHH§׏䌗&Z'gWn(X86mF \sp3o4˳eu] 40yme)~Wy mUL˘̋OӐ@-.OҪ5:Ou>2;5džknW}THx]I^T4v#L;r4Qh5ͩ8dr# m@g`M;vAuifNZvb{<U%TC;6zg;&XUPZgM9*8$ݮ o,o(fJp˟aV:d04ML{ Q}Ak+[7{&+$6)Ш%sYsOM<1TRsnJ"_z;OBM.?揱a'룲 ? +Z'8KCoj̥Ur&H\Q^eVȗ3Wc% R8p~_mMo|8K`\uܘRGFwr ADқD9aPM{Qp%驱'Rc *%/q":ϥ@ªGsM(?&u=@K#Oqh~Hy#gY<* nmrٔh)@mdh ZP}w" x6 =G^__ٛ*?/s\WMz^Iݥ_ /#B@(K4l0dA"8ҙިͬ|Pl!.ЌpYTuw40 m g-JifwTڹ}IօݡxWA=?4mPmש q.Ib}*z]IT,TnC#HH^ ",hjH^(Wh5f9稙1˩c=!&K.|yr;VglMal.Pk]Uj#D6-H87+oa0U$:^]Oye4=J0re/?v~+?Φ-qEon-" H誗MR…ØVX%Q(!Dwm)m! ̺韚O@T@?/)w0Y(t o5#VKQ}TR2 6߮]O?h=j(v5}C(ϼ bA}o na)A+=j-ýfO7~'; G`4~z 嶂%#?(j_QBT?gr8+1a,xFصO0+;ѳ$̑@$iLX*S*g@J*GӘ)kQ6Naj~ .K'(g[ kx:C;_ҬT [*}vejXԊԌܗ7ID  v֩5kNkU&`hv^~LSx(jQɿHS7TLq`z4 yy%A٨d (a`4LH;٥>^~LSx(jQɿHS7TLq`z4 yy%A٨d (a`4LH;٥>^~LSx/youker-assistant-1.0.1/qml/img/zh_CN/wizard/1.png000644 001750 001750 00001000166 12312451003 022057 0ustar00saucysaucy000000 000000 PNG  IHDRWtEXtSoftwareAdobe ImageReadyqe<IDATx[y^U}_NH!  $$ B'AK"."RPKbjJD@F%%#0lPҲfI^;ˢϙ^{=w~th~rzsQIomӹiSt,&kN^h77͎ sMhMvu;Zq k_R.ὶr0-@<>=JSƽwri[PtQL Mp)l"S]<+htӋt] 2FX=WW~u!\ܱp}{CUۅQfL7"7]vnF%D^hY@T|#u;]CNVp³9(Xڽ?o"} \[739zi#+ƢfiFB?=Z֙XVIq洐L@6d*ޛHU`nB#}3u |޶hs_DЩ('4wK#[h^xeR{L) 5{#Zvf%v> {Ct̵-vl-15_ӦF՛q/"aKs֊ e+yvYi`MT3-Fuѳ;e2U|gv!M}/x7@1Uq<s1l:h|bZ"i]H)b&nߣԕUV%tLsw\(*M٦͇!a:HBia6|+z!Mߋ' "j*HR_}cD$>̨;J(%o#UB|:C`E(HHJ|f%xkay'v Ke0WX3GoDvjo)3O̳ r;;pU p0xI|jE;_^4Qk6,i*|V1U2L`ӒwUWb.OolxpsH шZe?xPc"HB=fk[.H o\%sF6<53gkZ~#;vqKϾ@rWn]蓑A,6-]-Mhk.Hݔ3 w; F||XIE Z;5jRnf1Av^|2^-Dwwrb3:{1<>{N6Swu<e*Jp%>*2LJ&k6?g,#D4<}]SerܑI#%9MtE` Rf..{shB+lSuTS.^H9RzvGv")2c;; j$}>}WPj=m]Dr&8L-G[Vۈ"z6TGufyY` ;uX)ez`|= F:SH{1];߰5 D&8ww<m6kig_i 9 &xJe1fiՑi˂=/~ӸEk~Fa[⥡?aaq)^ل#%"R2gFԃzbp|Sk:PW2~-+,mq}CmHҎz&(C撿Aq8k%<@ƅOXL\Tl\>޸͓#3Z@]Ysg7.~miL4.sT.Kkb.K( i$0%i$cPc`kiCb hx]F{%},C Y֝T P՝s%Jnn}ˉ@Z@a&ku?Rd&C1 9qASI"wsM-$P=+)qJN Q[,fd g«Ĕ2KA3BBRN^VVy)azzT}S8z +xWڳqZQ[Df G枤1:2N9v'zk%t碧i!r؍رQlZu!w,%''Ǎk7# !D,c]C_#0XK=\Tö%ZE9E\+lX8vK'KGZeO#iGv,p-sN= :v=Ho.ڟ1M}}z7#d+6WDZh(vlC3ԬmmR!Mʬaf3 ]yi:xX!CS g^MSJd$rUb] tkذLl>_(^& y|]cDUH 75 ? ¹xd}Tޒ #Gmowh1X :Nƕ/8cAqG}]A1땮<ɕƨ}Ow:-yw?83-/܊s{jNt]w]ˑ氈Z\9 y![z[v"t^q)ffkKJJROXbV(9%ăàk}6ī }(ufV٬4Kl>=j;T?Ɯwa}оԱ Qb]( (Suopo80>/ m-ELf'-PެD:(EvhdTMi+#8T/Y7t?8 k7YV,S+ ϦVӔ}̖h[HJ&גG-"NF u'm2EC(Uj(mmk86^S|{lfW4@I5gKdy.I9'j׈ʫwS۱6H@C#R x06^"n;sp!H<5 ߏW^zǨS^$u3mÿ҅چ"||E4ÜJ'6kVDp>Vu㌉@&p6-8Ր4-'P%𣄇8Gʸ?.49[z;46\K 'b d ܁ڹL>7'᧪<vJu;r<.rNL= iG]<+7YW4ڙ:唼jYDb=C8ƻ/ں?{+.7Q/OaЈl.+i}q=>[y؊袟L|At,謲>9?3 3tytYx+U6KfTRr c~ 3RQ`1!݃=1gb|o̳6bMiQܐ'&~zpNZ<2Y:mX5Dpy:ޖUT'M!Wf AX|C]'n_֔ 1A78C=kLvu#``xFhM{;$*9l{Iۃt X;юn϶3slܹHkSoK\C]gȮeVN)zi2R5~I´i3N\Rs[_rZW;q5Ex }aHN6+p AkʙzߎxPuZp$IkaϹa\V$u r/.7%~x ƏvbkZLtZpnwϹLYdV6|EgAf|$q,̬K}T: .fpXhY6 v&CXׁ嵷:eQBȒv5CڀTl#%8!̷) &bnl&/H%%\hC\»AO/*BP\Zs}XZ"+Vix̤'=nIYbavLRgHiSw+7T`Zp!ȁ+#lWRNNƴ1Lk0w>l?{%6ݲ#UCט*;K]vZ&r25K{j~AH][FoC"u7o 3)X>3ę_lit_'b%_1;@N]jO9kqyko0̂VkSt&J~3*lLdg.bmq]¢6\4Q61I &h)vTfd:lՇi?O?>w?*_=Nbw|r l?-Y6ǜO;ş D@ {җT:iWv:hg Ǽk11[[zܵvQ:Yob"˃E#蠲n芗'DY9r|ϥr_)BZnYze[E&.tgCyǘJ9ו]:-[~Jku_N ?B#E6kKQ,$A$%, !#v:X: uEEn\ `", ,#rewaq`BT7L90(-Т1*>.  HBANTS8CDGƙy*W SZ!u|H ;Mj?AIU0A0P]yt\y;fYe YƱb;ݬ16P !I BJr8 R6SSVC`ccLc`[eYfyoL($ϼ~7],l`Q^{\H[28Cf+ͅP.Ws'x*0D&+#E5_"X.Sd'*$<ćÐ}_q4Dפ>`W␥, !5d@U`\$yemy|^")0=AnWmRj^O҅a~pMWu՛6#"%5O̱ V+΃&}q+"+KgɃG)nǂkȇ`L4Z/^)M&xwQrA*ڴŏٟ߰_`To?3d/ao,uDo%CF3V3kLJ .[)v\$I0IH)ȡ,sZة hNY%Axr5Zlq^vA"oJk2WejKC!<&TI#^Le]yw *E%i³]-tZZSބofҢ&7GoĖO00\:=ta/ˇ*ȅVI\tiNi㊙BM!- c><.G1akg,?[Gc8fDRo?~I^Xo[.Wڈ[2|fH,˘&{Bh}NczTdYq'wxnG ߈\ĭ``@gg"<{ ̚`$[giRUnӂ[p&,; SFwb`z<6\e<#W5g:Ƕ攥ZU\j)M؃Ǟ>m;<q*-;.BPVjqfVڬ;c̨c`Zgq QjZ'XKR㔋J^8v6Ƌegk{*?kNFBu5hˣuy媐W@}B'fȎHZyt_^'I2Zߴz.U@?%:N"́N`۽Gaױ}V;\lVx 3kao^~Թ&Bc.q-~C2.m'9]C=XiuuAG~zmdr~D&|T*Oc{)%?%|ّffhs\ OUM}8kɜ ܖÎj`#@. Ĕc.cUH]'6f Pe4,4$ 왴|ewXJiϚˋNP"c[x;Ryz$3o,fe扸Pq oY\V$۾_sҨP:5Y%:#h7%&rL{VeN U\Wޗ-]7Dq-v⩷W,šmatl[nbU.fXJL+7/F1*9l;1:2}+ʯR u| \k~f hr*g]#Fvꦇ Wz"qȋdR0F",s%C9&[>eX }c=GJ8CrwM~~\Is |tmlM/K~XSc>3~IFGgc9_Eu4,Y+'&#,5eJWz#އO &Um˻=Nȟ9ö1Ҡi%,+`#+~$8++ъqseN9hͻW,( i;7,8@V !3[|En3;~xlDlt[@(U:|K_{\MW2F;~?&W_-:3,=Itי}x qPWN.w.'7+?DŽ4\r |N:}ՅN9duT5]2R)3UU5l2]I@49L~_ר ~N,`[.2o0J*89k8mY &7'?!l}&Oxr赥v Wd>0Z'c#ckU|@zP,'b'!l##T\ _oG1wQ 9,ͲTN8TSA%DZTԣ, f trjYm2[̫/oFGv~d)Z\Q }q#];}ʄep 9\ j%eB̓i0>> yAbA%;\D%3NFsc#SsƎPu^ym~᧷}I(-1wXxŵ8s Nn#Fpt,T.GQ⒝$Y#G%vOTב*b":-GgoI\/]VFګV>'6bXD&kQ)=U᎟+dKPix ~ MGWTLS6(=QF+d,ru" GZ0B(A)dmKkPOc!ucd?؈;QƠar҄54e߸Xa+'7`wPm<;X lozQ1 JN KB!).%LQ MٳEP"&49JS^#oao :ZV )DmXo/chZ'^!/4=ze@bReFE`=O"c`9Nn DGlz!niq?J+|mnTOT{Y&Wt#-tff (KB$sKB_{.^cCV0O3ф5\! )y+ 6?3Ϫp?k&Z}ŀۗ+ȝZsH-sUg4b-ڣd}~zn>a"YRxshT,q(R奈|HZ7W KbBlȔ=Д XBP+G$+8xm@6tLW6)!Q^<Ǒa-`]FdT`}k|VՕ:H\1@2>Nkl+eyp-9xw٭2m>ZjqJ]OUsgb޿+gvi&jyFqY,<Npmoqa|mN03\+p|5I t3ÈLO8,3Ki(&|9 S+.?w8A_s~4CY $׽IfHO*& #kiPN#u,49H!`/3۫+0ܺ.BLu~4;bl! P "hQ7sCbtZ_̠^>$1lM׊ p{~ y"-g)UA*?g̬ e$@ڷĻVG2* INE X'3ʟB3AHljs-a“E(1/ 葢)t^.EX|gsz-à<]cؗ;}=RU}1KccD,=v3<-%\]?JN6KZ1p7armM"RY,ȧk_LxgY]tH."fn,,TN33I_3s㪾t:[gNaG畈r-9sI$`Nl&'`U$N /}TCsL1W`KQN ֺ.5aA4 !E}E jhZg,wZ,C + f$VjIS\#JkU1 f } eUy9Wf 0 A#nMch]cZYt'iVǎ)B5b JcA PPoosoitjo8w:GXPi)#R3J $"i(OW1?TӋ?C DZjUY0;bs,Pc׍-z)E( [ON2% 疹<17q~QX0w[$>(* VdxCIpKg$NZLG$xb P!ࣁ^r /x@{&DxNuJGib|oZ;HS_daezڱ962P(Mwq.$-^L*"$BZ .vPLJZ"`Gc.m(ZcHB-xK;KW fV Qh =/M,^ 2³0-D5n02 1 k55:hL\Ґl+u:z%;]o[-,5ff GXa (2!`/=5}ϸ,,*akjSr"kVQ'T6)#*1DOv1fx$o7$~8NBYә o7S #$qbA&|*lHg 5T94)3<]xR0meLޒp]&"І0Q7^By5:o }~pu1UP_< g͜ѹ.ՊSF;p_2hlf$4 e":Q={~qLʩn' MfZҠqn}V̀6La[<Ŏ@%lZ tti 2{fz oq-5} yũ:x\{y``SmZ u(-.Bֆ8e͎ޅnz[NI`5"kZNu i1&(wVA SR1[PL-\6|MB.v*2gxL嫂8Y] %1 --Eu@ut-"]`wsfH5ӂc,A .~]>v= 95-O {:z^AzqzZ,M2hre N`*\R6;qؐQ%1cD7%@FfcτE<u .:1sudN&F^,2&y&z a"5#S4| v}h=^0? ~*:c -Ts7"[7pò2|Ca5?Wtv<||xW%hwu?mpepr7)€p*.71Đˏݚ05hx=HiV]8F .cOϏS@x54kl& nÍO !~)T ~aK4QjAx)#T 2Zijx#7n: Ej,la 8DGos+&^Ņy};!ɦ(޼fm QUBw]k2ƅuSkN &#ݟAI~Wn_|KB4za|2ZCEUSm.,_Vl+ Hw9Ef/bYx܎%vS7aaB.b(pȔ 8~ޞ!xnҳm+M錊7OG)>,gLY/ҬqjEA,?Ʀpvo->*`;333bF dl}nt=O;0ܣҢYo-uLƬcfֹha8xcräCIhxDIEF^&C3.bL4uBWLg{MM"q<〓̍$&DaA Dd ;{~_Pjz|u&oxf?jo*FHC&h)aص"}>US1I[ST߅dR?Ѐ3\2N2_Xޒ~IvgJ7o02iDnZqe7&b)f9'TkMšb  q | 9ⓗù+} <|Vy?.mJΒ+XLxA),E۰FKDFs:-Y2ݠ 3hHY0n!~ Y\AK2B:24?1_!WSq[Ӏĉ?qBІa+fg˞=~k E! NAr?:w=ZcL􋗛 jrBcEĵBi݋; /QL-uea co]B-bC0}iwz 3HMK fKpng>χIFcu1㻘/ |np;Y,g%< Ɯ17tĈfj^6UDԞM0#25J}js;ݙ!K (+4'H b+H YI=0oL;ʰP?B+V| -xh]CG"\{㑅VbA7/Kbq}-:[c4H3^̄QY%Za*sDDƌ]l/hqL>r;DobAnYlHv?gM;MpV7,;_j#40p=0== glX̓W&- 114S:^.óuȒ6ǣajq*Y'=>YI:ZxG{9 7*j O HGW`㺔УTG;QefǢ*-HgWfxB5 \GnޘO.5?/bY | !b.jn{߰ n3ph.+9oWoy܌g˙`KzeT(0T@!KnՆJEIa6I _-Q::*:m!Lн,N5` Vѣ0573h83 kRY3̭|/ 8;<.db^y||:;;a!XnT}&ae_?^ Zxɧ_;v[U;;)tJEZIXP_<"fsجt͘./g|l}geW2L-_=ݿOskv. V,( #]f41ӜaoNz3<ЊWS]5Mt2 @r|\o&\zk=9u<Ѓ7ylVsu073 mmm#CCP*eЎOMMÇ10ȥ\ĨjOj>/-8ro Fh bfnXo>)C1V ?6_>y ="A"DG: i ,hJ , Zx] D^36zVq7Ws1X^n 0_Z]ϡ2wB +fs- hņOg᯿|^"(k1 kf2)3al_}P} 샴=ѻ#5e{Ak6-8XMEbŵ}SFsIvp=5bZr-MM$[ h>4uG4+ IܢY6UBwB R Y^:8cuӸUnNNL~0g?vEh4fyhhJw?~c] ʘ)A HSYS3vb_? c҈%K%DGǧw>ƿmΡI *[P^:p+|S6DqP a٭π91"$3 >٦Enܾ0,aС WWG?.K\ӺĤo}Z{*U$!]-4I\)W8{Ac>n)򂝙Pגcb]*k}UPW1ǀbB"/I-SablnضM:%i;T?o@W2{p- LᚮN4P.LF܇v@a :φʠHoFMҸ|l!6RdR`Q1%[X1l^僚 _JO:t@3$ň3Ê <%n);Go&@nzSURӸr<|q̍pE[ᴍ<wЌw%/=?ع)tTl]*o0)x_hSc/1@|ټb*Z]<##tBqTpadrP` hHRb<~AEtP#վN[xiCL1j P*EBFKC|%@*J HJZ T lg’;Nhot (PqSy, (*i`ġ6㱃*= OcD߹Dp]^Ĺm{a (KȭL"r44H-TH9/&v^p ^3b,d$4C ,KvU.l;P~cE oVfl-/0]wk<{gAҞh#ۀo|tW4nP?Vm,PU5eBĘH/g;{Nm7v)?kܡA,k{vШ&XVt4&w.|=s9ޝ0=WI j* 2୔*+q| wf+9=M9:(jl33RmPLJE*MkQp:)ڝʲ_+dszZJñAkbx<U\ﻙ{%:1@G%Y㒮bHTAT겏ܾp L*)lJa*7. pۘhDӰd=BKZ#R)5wY,1U]@) E~3V q դcЧ;ԉ} =w—8m UIˠ\2XlXu(Vr)h\p^f"VʡP4ڢ _oPഊ5F|p%gqNmiҺQPD,Mf$nǿ f># xgb>)c 'iƙIcFи-rFdy'1R7Y`H8y2.2Al?.T;㘿_x]h$\zъNC+[$|?'i_o`2 B0IFhTrWGE#yy5j96v$KLf _''WmtXxm’lEfi YH)>_I3HQFX]u/R(8l q ֊WpO>qT%7BJ5Rla`]= */dI_㉥ŮzP#}UE)|JRmT)UDz$TNTbM_X\`> 2=+ rgQ>7 XE-rH@o+&5SYhaJ}G)mEs6ɸch: -ktGW5<hw,'SfXCmPq;}redD[ȹ7.C*[ƃ"8%=ؒ9qˠ/ݹw Cƍřn+B3VQ*g*xaG*ՙm`F:J%OΠzIFh."%Db,,'dςL/I(y2zmd^xL6q6nFS DSUasg$"yY3Y:KYbN̂&x;faN0fmlS6 ɂp;HŲc'wJ hWM갃č'΂%`ɩ3 ,z<#;S%H` l,~2HtVufv=g:%YNPYQZ lzzܻCZ!!@ {tXI=6nWVPw( -d=x* >·jML, ۸ @b‹I=Y0^V&PL0'@ 4n^ D(fEgN /2xSsfbW < gy~K6ϯC٨Y6%Dc)rF V(,3*+J-łU*)g6j fO^ mQ]Pɩ$9 s0l+ UypV-0unExhxhV$s' ]d:gSZZuďȔZRY@kDޙ+:,x9_5LŠg:ͩ" .[Q| ymjI+7zE C:M,"l:Έ\SDJӛ$+p}{[̱̽ENJ {@꨻`Iٕ 7}BPfqX@ݥsɳzZ]*ޘfDǥF"< XOډLzVs[z'MUIm&A쥌HD2DANwuk`dHP=f4uLkLg@y3@<r!'^DK{ z9D?=S-L2u-~)^XT8Aɶ)Ee26Κ}}LJ+U> p߸٧ӦNcGFErmp^##ݽSOJfRn5iB6Q[qY|G&1n=-9g~UtM"\ϵ]]' ǟ21BX9t3@`cJ뢼e6*Ţ" !c|EP)ܺ =>]GMK<5ɡA1[HOSUD[:Ykr̘:dc'"VC+F.6`­=7kKb.n. k5 *]+iOʸiH=FR~m#GЭioXgJTؼ e@n$ahwYt&4w<ȁ,Կʽ}zYb!kVF3ϽqN[-:$lOi X-&u&PھN>nHNimBJF #Ipy-OҤ2\#\EnwNy2G$9q1ְ VM3-$ _I|p gOu 09zjL9g"0x},q0m4Pq3x4Q-Bt&Bx򥘨JX>3.`,0hBX0;n XjǴa0]˽%rj[wTn NU澣_ݣA#?籊 ').D@OzF W?S(׾o j0w7T #o2{3)vY2\hu2X+ _ ~6&,rtDSЙNsNjWE7n^bi+:hT~F}˿zN=~r8?~w}]AB.IrԸg&JU29.#ScjP!3nG}"ƣzAEEJ,mBG/zFAw]}%֓ŧe^ڱSK4}ީ:,ӏիԖmr]x0s&(d-TZڜi,m5H6$4& F U~%sznACY RP=B8S4˶y (8WC D ]N ms;V~~=RSwp; Z-Co,8iyʱJ;6 M[o9LibZTl)vvÔ0P}>>\> qQ ޭF1ԕK0{h%`Euc{We+:U#Q{~ ~; >Xxzv* !I6z[tPDiY\gjcc4-e WxfHJ7qw#]]UP:bOD9 &'?j={>m-7ܻ(Wݒ6"iչSUg Q '!"pH3yY ŐqVDzf'IDmhV-a&{3Z_ki5CC_B ,גNQ]|y!{T=\tT/B.aoJA4  jE4r_0R_sXAa`dI@:xsqlR&4QVxN^]=Ѯ ; @ɆW%yQ41sڂ.a#zyRg)aѐ_;:,o۬#*Hy}6COA@]rsBPSJLV׍ 2߈(*+HpF<6<_YL,?s{v9'1Z=%$",nػaM rˣpG#kdf[4iLw,[s4 b$~*=ɚHN*1R $xx7L/Y@Tu'n5S%Onޣ_-SZ״TkQH9KXA% Mԡ3$d5Ad̊5PsOl蔮&u +ʄQ3?Nb `y^@nS6oxP:3FZ?}3 T08qnNlp+a]q1{na7JdRvcZLL2f $+e H5^sFPPbzyHM 0< "5כX%j=GUia9xlublܥ[ggP`Es͈0z\bwmlT}<5{lcHxiVU$w5;~GsW^\,=5 jېvگ= aQ \ع?{~;M,vI8ƀ!l\CNNlП>ul}uPRENF-WL=$;0F$ˤ+ gwha ď3P}:ybTYG\(;\/V(`1ƕ+kד$+x Pلn퉨i0:,Mޢ0, 4ՆXml:FK'Jz xgڇ]}g?~"ċpi*!6l#): } :#BEIAkZ[L$xh"7{χP*4̛Ti[eNL[Iiq7p0|'W ?\>TϪ kZA叫w.IX--LoI̿qaHZL׭R08Qy=%pOY_g,[ W^qm KqD ڑ!3cP,9uCRPߵP:PbZWlֵή8iS?0!T1/<öQ7}Wqnhet|F([n|)\sTM ~_5xyp7MMӓ?Ep)II[x#!T!c?l }Jr-j >z^Qf0Эt ۣ2}z=?B/>3dmiAa9/ߧhxSu4=?>x|kK+<"GLsPazNOVIC@O%CAY8q.[0L\u9+L4Ӻ҃=+~ q6 z~<xTxϽ4ԩo(I[fe h괃^,: AQF*no[ s}YܻKw)_ 6‘CĎ53o~8* Tu5p䮫s#Vp9#XLg ͇U K[UxtvU(o&vbt +mQMr)!K[AkbF^*/ҦNsLir:úOU_'}ŇieV/Y ]ټpCkH(yU_Ļ+ʵ;f/Ax--(lg }}jA3CVP; ?Pz-tfn 3CVR-^zUشq;DW!Ȑ\ (~)x1(uRvNPG)4ߠ`HCn!;38ӬA x|c ,j^M{{dsk ]h:AiTc4dM@@bUeh/ci9ܹg@y oA\dzƋpIa0zdm>cV&@w6c0glo?r=4xXKg)y5waXxq;::\m۹z{4 Z#}3':\ bD́#D4(T=5s8> }6ܦy2XgA,}lk-MDsI!GR3L[5J\ #'VX/|o-]E(+_*A؆X#`ۡo1Ϋ#qT*b!Ə.~Ӻo<;+]{n:y"`BV.:2 v붴ׯN42r˕dN0qO͏n ]ɷ'"oݶLX:%5*.9KMwވ-C$aZh(S+5fFT^P[M- A{MF\Sڋ{nӯ?8o~;\{oĘ>)Gabb`֭зJX3p_"o'Ą A R "`k=>UN"pZ; Γuw|o毜497۪ҏZ3[f^% vyځBɢo%kLheȎq3L_>Upr-,U.)ZPg)]fyn.q(Za)3> O=,;8ퟂ79 ,j mby֙0MEUe1HW; sW m]SU }{J DSBK;jxCf99PFD[ 0ٍW[S1i ;+q2LКd C?hM6%ȱVG(5adBe|)|(ԋH*{c{n8U0iu?3g͂y̿ni4,^ȟ> w,\S+<'ܲ ׯ9~ nz[_z(bٶX"`KvxR""H֭RⴅvNX2,NF2wyh<6֌O-2M+M(K:BrX̛ZSGY *7` ɝۥ;YdX _&{8J]~B0t:`lv(~5A04u&.~o~l[yrפ ad?n+CPVsPҜfphtԺI(_ly{j5A]̘0YB"orN\ot֑klcq)<=IW HUk= t|DQV!Wn`m`Y8*G:8Qq(׼R>vPZĸ{ ۿ,aP,_y|zPSFe ļ7zck_Fؽmu(TױB!S@­frw%8~#h9T`*TY$OaYvL 頟ZK4nzabdB?F>x_q5pǷs'92LJ_Gr P]EEa.2g Uf0fQio.g-A ЄJ_,R6R6x ST,x:(%aeWxU]Vظdekf=GYwcR/}/?>no;;onŧ^?z [!qZ@Kp݌J= }>pޙg@o{&rGM;6i* Ij*dP5R C(;BC, ǥ#Sk| vLG"h`b N P .Mj#0>U;_U88~R(ޕ_(Ų ^w\v K_SN:@:G FFF#cUxd8C*+aJTQȩp H',&}E ;rBF)$0)7.5%}1]V'Y"@&$?1yZ$Sqe Zp(Mʹ7#w~_ ~xoB{4(ӣZGeTj]ٵcx>\? 0m:4/ f ? / 6+O9x{/)޻W-.͏E@*ɗe ? pzD"l0w1$Z''vüATV%l§/e:ZmJNAeBNnlL}" f߼MVCPᶩ}w KO@Gn ruLwǰڹ DSt,/ZZۭf2v+u2mĈz)$nA(]-Dl:5 F,b7!@9^ r ɧAS—=gRbd~JeG>3nv•}O(+߽ {g@Y~ЊiJ> {ຫ.}< noO@Dz8Y![ֹ6/8]5>JZ)+@! 2A₃Z!@a cLTདྷl^vu32U8TݩnK>u%oXү'уxESccÜ'O~,/9 1ݷJ+^NYP(n.F?L/h91w Ap$!ÖXahd6am .cm'ɼ`%(m '8 4u5Bb&e}://+P31m-ԛgwspPT>V y"L:8)\Hdbo9taB +lp" dt 2N9㼙um gl>"\yԧdE*QvSfNEPijI=eDKӌ# SFFf>xb|s85O"]&ţ/P >HO˿IGqWyܷoyݦFܦ4'QH[(tE, GCp( xnO$:ΪСL*v.db*{ MN AH 2Ϥ.@$Hpp{2 R$ H) Hlpg/'HV]DI*tm|GvgdKQ,qEJ+(4c7!2!Sq1g! ,f_/fdT߳x7>xXLypApJ]=>a|`\ t$5F33? HcOS:<.hRνF"XbMEMuKŘFB"B> < YVl7E>'O;a2Uz)o:?GHqp@璪8nS C>'g!hd:4 HI\WGPsfCL I DZ~zkü4D_5}Im>i N>ItN}9ue@`g,+3C'x3D"#V=k. W|L-278k~7>f(@L23Kh DRB0C:C0"  Aܓ%{5:GOrBNG]sVdIʙހcɆ~.c ~Iln۸Bl:0o?ul?/X͌}mmzv:-oZ[Nuŭ743ETզ1ןAhػ"CO_ʤFI'KTsALb8#YED뮥Rq0;2Sm톥2#a/pT& X?3:XS4luKXJTe vbvLL_]?U&cēw^ijqt/׳'wQxpJTH Í &INz]cIs vJYSSʗiq 2.&f$@0WݺK< d ĦG`E2Z+dc2= Z$B_$ës`J9M _?vV) yr *V3/Q>hVZvnF=Dž3^(Z2.Y[O~Li%yJB-4B $E%HŰD%6s[꒓g,`dE3:cqHf>AdrqgfF>Jdic=*}DYa~VfwC+U~p#|WA/U EwMKدgu #  ʻU r&$Kݿ¸S77]$;Q:Bۤ6B 4 H?bJxXa?<<Nj=[6)n̝5Rkᆷ; Q:YM"jv ݥcrqgZԈOb T$6Nҿo(0ɰV"}|Ь``bxqvwwTjb(pjLp{=oz0Xw\pTpVgjd9e39L6 5<& IwL@#XN"djR~0j"?IpB80,=!Xon[:FYG.Qf ᅯMٱbNƠ`NG*WP0 mJ jX.|P &e/빉[AAd9|<Fm36{œpaӘmsC5&`e;P#,dl0IHu"^?/VrXl1 /6G~a'eaY yq3UpD}Bsq~|T-̨*haO¹t3:̟U@SOFrïP*)WO9`@: cD³C9 Q0w3RXlpdD)8#59iEf[OR%ns_]-9\_<6,{+&)[e>oSVsX=ڣkb\@_:7ӿ~O`:;f2fCg)_y:}%#ʉSЄԛiE$?Uz*W-;+_WTP4VnDmȩHܢͻgp4>_=.μIӛE5s/$K*eykcuF³Pa\,BdW~x2W]Q~\ S)e?:*R+S|2׏*L-AuAI|db~cpG?;M-(nu[~N6ʠI<_Yed W|뀄 ^|XS:vyw@NTQmr8$uP$*fدccwS }tX]?9.uVSx"9fP&KEb(l(^&f%PX/R0֐G!! x%*yJɤ\釸CŃOf1F:vفC0Ifn Ecb-1s{r ڜպuڦ,5[Ci#~f)e2ZTRˠ8 _";DY$(dÃEr"XF*av6h|ޣms|.b0Ż/ wVuXTf;hoWsqG$0K=f1^NVq}-,TOONS[vBL 姑x7wq0a;(1)CuT␽"@6NZ_%p)c:$E'e]@csUtDQjs2 Er VB$q:Pܱ¦l^ЧYǽ8vcebQ7[;%6| ̵Q#s- Ls9|S߹2%4 e2.-{`1 s3+8C)bH /e訢Ag¢nf1%]HY,^,TX1c*aT /*78ǨV`9Q?XVvj[Ej1 DXL% 1rx8"}KX8nEANSm_{U Ol*ޫ2d@mPՈ,+0T AmSBcͻB=\`>mlߕE\dz@OnҎLJb0 |K˾Dn% gI&!~¡9(](ՌtLԁHۭbt+p)gN&l!)Y~cd'~Nq2Ь@I.IIuN(囌qWSr4(M:X cWTDFG~-xi ^+*b NXpk,K։uq﫨Π#cZ7zmr=cxA4q%lMZ*(CĐd!7˴LF3CuL7#~qR'g&$#\T93@[?fgX3>R.Td fX0r%oշ_~ `qlhV9! A 6o0d H!D@ (U+mvU_Uo?ܝvW爷\7OQ9[14*\I1(…rz"g,NxavþR&`!'xbZ(do۪@TGfe~*gfU d,^,iA]4hM Qa K^-ILDe,ux#bc ZkjRTx]Sb'=7-ѹ^}BRs"ѓ[?>e{(@H!SwKr5g(mN 4b' F։p@MaHn~B .vfKֺm/\" }IV/~e&>@vge?;v]0d ]BܲC Z^fcXgz ARHR)HgR߰Zte+v6(G**ZbVUH^]ڝdimJ*<\]! ʵ| )о| AZE;6n $bVDKNtJ5$- R9e]v쩖p;o'N\Ͻy>S%hɟG'CIx VEhQY 7FҊUy4̚rOreGEJkcg]oe?uP%Mp͛$wQF`hI֪dMi*+$2 h1},aHI`͂WhҗӱJS+r/xJxv??S7YNcBk+XXrn"TDk{ Ab*#Sp3E2~Ad ^_[HۑhډGe!FH#.tT)3ۅn;SE3NiOm}t-zRNNp>KeWm@i9L]B >~l&6;2^1m<ƙ޹GV4pZ3iݒ^ 6F3q6ZFtΡcn$Zx(up406gU(1-lER*;9nRC m&kFЙG| *0JɡN ./DJxBBLqe$(ig ߑb*Xhu/*TrfyzȆt;OJMTLw*0tBWm]^K_c:wƦɄcamHmsψ tξCslq:ĄFunUڗ59QbK-lZWi#Wxrz7ehi!lHZ5?~̃ Ao'̻]ٍi$,rZ_d>L7ZBVnDZ>Ȥpx!{2ƥw?7f&+ȘQKIQ?fBC<;o o"SLЋ+cg~Ƿ (xwt|J/i^4 +[˼&BY`Z%4 sl0"Mi8Uޕ L[/HMMʢ d:'jwd}%rtɶ# АiE6yl{]- ٿm?#*w2¶R‘UzM-"j"gDn:?f; ؅ONl^1h,~kO‚w:4A=ccۦl*GLLW'l;4 c0OK"v54M8ZK.*vRTRokzf2vy~#|lX[3nv#c:2D]WNX$ʈT^7v*S*fʊ$lGߙZ#SH Q kŬ;ʏryT&AV}YM`3SzqzB"yQ]=ͶxfT $xyuu5^'Gb~10qϣ{l׎%>pJ5w?rV쿬 J;Ϳ{33̌wn¡ +x|K.NM%Z 8a5|0\aq)fU ͏tH\0ȝO&wn*]M6[f`M7?TG)t';ctH(@mQ&-Ɔ]޺G S{%=I؉&QMOTC|<9p`:v#,Gy@PCŰoj-h!gek# oydN6޹:5Ɲfh602;>o :?1>rCx!Q" lQƬޘίb& %\Gla! 8qSSh)/&fÆɷVXf]$l'I`lBq6w "a"YK )Nk]}ɦ)'w%p_*6RO)_ă&QV1i9ޑh[PbhHd"vADҩ "dO7 Oz(N*IO}3~-o|7sk|&«hgxҿס:7Qb؟?_%8xaKM[-fC[fTl`zmCOղm8~Adby*fk6̠vj^{v \ꍌ^ SdA?7 IcH8m|gqz@؉ nij^ &Ӕ"%/u>e_mX!f#Rk0n#U--Ǻi)F@ toCnZ+BU 6;Q\:^_K =y<[hqRh9zYOFgZ /ހRJ͛.-=-:r}֧wl2lgJ 8Я_76Eb[0 `%}6pUލ:\x/wvF*BZz,^ 0 x=$+H}^!3}|Y7XA Tw7j7J hX`߳R(+FGi> of>0LAUf(G2p{Ҝ=Uk'mEnp مb_7/)z޴;2%R-{wq`GdYN¬GexbTB^QC/ ͋/UGisY*k!܋1-lӗm#{q`X5/?<f;Vws7mƫ᩽3} o8;D^7 <::t ٪7dNQx.CF q;Nhy(=p [pˏÅAEǠo}3քk.bLLla{Zs|ӯ_>:V0W\ 4^*⎇qXY+A*tel_6|57'bhVH;ࢀ(٨%JG (8[h}>BRYg6!) I7@Dig :d觻*.m4+&23rI2+U/C& J釦cfDbVH*KJ&V==AzdNʒ4oB+tAw ;2LiWp NA׳8Y9n\3#>Kʠq&M$FH!vq~'EzQ>svcX7QM Ip?5 eB.G+K0ַ- ,B z͍f-b۪<6-#)dfǞXՑB^-n>aZx%:݂ڲ jFf2DS} 8 7yl֋Lۍ.6i[ș"Iv \12TϘ|nj}!(<1ZՉݺфLe9nt27iAA /ثuZ´, tpDv/9eIEhZO\!{Eg8<ۗ\![hqHgx?wKFm+[T "I;UݣrҮ~*qg`rG'mUOYvWRfuo8e7׹~xriAedr^?Nklʨ"fS1dX3S~UW178u03 %XI,.& *Hԃ(1 %P $𸁂!=KTsڇiC,RY o53!5¡ !-s ֡o`U:[UwJP$LBӅ< r `&g*bcc\[b?)p^h=9umdAyBgQEQn>ĨdSVq45%%rt* V6T M1UJFl"2VC:OH9?(*0ԊeR)F+LCˆż@1yJ|僒mRz`E+N(, y[)@=Xf=ݮH~r7!  >4qBx[O64$7*Ұ5;8z# @ᄁHi'&Q%2簷H!yVa'd =u%4S45W--+lL1R KJq4+h)(v)G1.3-M1&tZyʓO =,q>/FGp'`q~k-[^b8;UTWh"ah,U^-?}L/Peq:siwR,%!u)=%b>[kDJefcM^۰8EX# *thoU'?o /bZ#@Ro﷡IG ܻ7)jGjöC}>vhh_bl߬?c. [<kxQeQ7 sꀣ傻yowR9'tZjp*_.KUJox~>%LΚ~EUSj(CY TFQֶu;S645׷C{otK?R ܤ7RMqn%}x3slbɄt ַd$0Y<76=v76E'q,Ԏlwf bu4 I+.k=Cћ9x@s <8ljv,'ZS[~Ԗs-@݅љ=˅">uXU` q3qֳ_xoŏ^tqĪk/Ç~z(8tI:{#دgro =^|Cnÿx fS8m 1JC_=[Cގo8i{WUGZ¶M;r|)^rō_<W?v),r)tmakN(u`>i<(z"f(f h97MZ6X6b(2e&y'ƺLyj+"Q"M.-HGV"LA:/mںE!%b|Yl AZ}%e"#Q4[Ƶ&yran;sSPL6P_]VBDD\:Z0'ȗ2N{wsD: C;/^e뙔L~*@j>B`ӷl6 *Jc+f 7dQDZ!9rYXo#复z$vaZ!ڷ݃9 2}AXd*,W,.<mZo{tk@tIf|b$}>ai<<iwD~o&˗LgɘuTp‚)M Mq#'!w: zsҳ/ZT%>Xwe :T9u̝+@zD9Y>(!3-DXO<:hMw:yϾ>[$XXprbrέH9 %k;N3$tD鯐ԃ2djhtU]Nj4y&2eV($HzWԤ"8~A :z"I;G"!G1d)2(ē{u-$o)+DY b5HZLE ;~6#,Zʜ#fv~C)^L'9cİrQ31"0]x{R6+mDBO]vFC!h}F&-l騶3Nҹ~8͂PڸOxy.6꼗贛2S{539]jן97=cT`TN>:$ (y|]ya.; P(2?1śኬюΊ(}wdK1/K]5\Gu)[DU*MyN*_dg{_I= W(h +~E&S۵YgB$ dTT6B[!>mmFBw_,t!/;N,1*9zPſ*bk|Wi&'+zўhzԿ?f c:$oү@&q  NwTJ-D]9f~{Ed3qv^%?<PE*ۼE Q-v\t"j{ixN>FaެaIOmW]UpqQo#N9F۾alv%/y6La=Ao x֋pwKOg_#XzAk &~iWo@iq\=Vl dzCbUK e!ج& SgWTpט4)) <K9n~?w,4kTcel Iy:"c;G-cTa4uQjZ0>7z;c6A|\c´elFwuǟkT ʄA݁FĢC`ӡ;ta 퐤svKC B/֬t]F;/ ǥ :;=>z7pDZV _a,2CoK.h~nnɘ39Υ15 ûLJ3s'uDNsA6!u@Vݿ( 적H+)Ԇ%2#\bRhOc`Ym쨠. sD0F0\z7?s'\oy 9X&.}%may ܮdkaF%%rDZ1]h)&Oi0aablT"?5ANQXN<㽘oDg܇mT+OA_wopK_c8P B lBXNWA1̗,S9yr"KtUWp?fpId/GCL҄!KX|<*k[D9)9LlVjr˅(Y;$tӍ0zHb[pPP9n)B"<$D6,6cN "sMSџ g^+Nö6fx'3S'%1{fGW({-UU Uysͦ9zFcTЭ`"QwA_pE[SH(UV%u`gnAlZz*9lcpv9r^jA|VB:QK3hڏtѸ'2u<71«V")N)AfD[$"m1ph~A2Zvm# Ĵ.0b%ȩz nMtFBh< _ t!vH(x߱w)&8q1U ־V$MWbk?/ҩ/TjW%jB<1Np~`m*i =^m -.D\XZ%U׃69zM5ئ ?Lo:IQ٪^$= BSjC@Yݝkb.a-/7+;RU29SKkԇ%Iׁ2C.[+i@~aDZo[-8CXiZ K"fw͉>th;c1ٱ{XDmVtwi35VwIO;imiLK(Fh*8Ps;g}:X#)J8 ѮG[ua9^gJ= p6=]=~ټkP{Mz(v&Xѕ%fbO8DGdhUY+ ȥ dkoLgYJ'x'zWw_bՕhn%~@eBذk8=${ p`2o=d| A(oѲ:DzYƌ*KaURŐj/ґs$*(">51RX%I =`tl _y[$YnVᒨ$VbgRaEB!6.c M xH~PHYQ;G_O'JK:-4YLȣ/ўX7zD0(t.{ʉTI~Q1Û}JFZZk[A@J "bżGi32-Fz|A$P.ÇJ 4_VtB6tVl WVA6}̉;5"rl*%!M̓Պ RB>7;Ԧ(8hr"pvA0}b8M*S#R]b9󬛧i˭Oӄa qI՘Ti!@UakÂTTO^y_?o//J~ij[u^=s OZېImyyҬKrXdJ L5f >;P! 3Y}΁$wl͞fTm{Ջ805޳ )՛i@I^qmތ\,X'/q=o3^W`͚7/ȜhHL zSFU1$y-bz5%is5Q2 1uP B7tT 2hGT(Pw^A_MLфԆO>tbucwa%B:ם|#BOnnAzx)Y>~+M[iٯ32vL#bV.78u0ZO>t6Is$8l4*9){^uFV=ʂqHoxH .ߪPҐ~Jw$2v#[Ԟ\)\=ry~Z;Pld#)]\H)j{AoY؊kr@KMɐ/#hfMF 9?ЅܡY=E֢*CaFwˮT]Uq:__3$atbz#ɈDY4 ·rQͽlgUt>J^OK(+xʢJdswў\WᎹr»+*8q>(|/3 2"jEغqSt^߅:MMjQ4 erǬ4tyl]jSPH5H\铝(Qt L0T.g KIP,(" q:N}i\,Q:y$@ uN|g3v&E7.No^a>ܬ.ǧيӮUuU|H@kOR¤IȲHҵP)3 E+րp X;b㕉E@+v)mddMu~1>>yxX{=ӵ8}iIo>xԦtJ?[xDG?k !-'O Mb%Ee4 Ơ^hN~}A $.8B'ah |Fϫ=U5\CVFG X 9Is+&+#Ʈݻy&4본K5Qlq m݆g R.[_m9Tq/ SsC|Gʚgş"wDsq?B,8IhP X+>\4(g֧jZy$)>D4B#}xw7.8yxˑqdgm*S'YM0D IrV/>la;"(yBpX$  Ly~Ӂb [K( OM};~B[N&􁔃ɫ3RǾRi.Mx6!WW6bz5#*|Qm#Mo؅Jcjv\Oمml;;M'%(U?hcP̈́(q/[{$79a69=yVS'#d)b޼F5qdU?8N:{R;[dd., Y䤼(Y[7? 逭UX C ?[~+:d݁ݸG߿/gZ9UO ~u+΄ڮիEe&]HW6So=|BAu*UV HOX|B@BV!.萃#@,"m7wL==Cgwk;Q/[F[ղ6 %3!j5HRQk_i3cO0F /~^QXbU4]Rn~wxٯ@܁+W rtc>'PC繝٣ }zc%ޡ'?~| _4n|އOK\vϞ!9TL`i1{ u`j" t8wxwzF/O />@L8af!e-4S毗[ǸX NMt㜺dTt2DvF", R$p[0]9(o+RL6>www/D?yˎ@eaiop"[p)J1VYP[gEMmx^ sLA^}MZ\c L٘(Z޻Hq3w%[tc7u(M=EN*Ut1UFAX՚˪zԛ^6mGоLwsW*Ǖ\P&G4{߳^H# S֛ullا K( |䓟utux݉~|ɗq>l{Cpop썸\l,k])isTȦ^RKJmRrtV*, eIx 8@ DЙ2cTJ=y'Űhml#ځ:mxa8j?KTkش搋iqIy Z o9or"~J@;""νf%l!Ey j>iˇ&Rۨ<h _1EuLk]ёߊs8[/Fd̺*&-jwh%6"=6oKj\ˌI]v,pG{9{R wu>H+u]H*EGN8ñkh-^`^.NJJ8I,mQ>u 2?` 4Oxghƭr.i7A*򆱪 pêYTpݧƚ:VCu-?0ğPYQ0)Y2&dC p`LHǎ6t D (VjJE+3C<"[WICshI]jv:o&)k>BBH{`%!Eӊ+1dt#/Z֌˗-GZŵ^iz wuvB72ъbWDj|CQ]q͸vW/yo~WPvQ@K^"4I_~~)ǩ7gH)LW OƄ( @F|ȣ'U$j"o痢0$r5?9vVm$y TTpQ$\xNko9QyiK~?ly X yQk X i4&^[u:[ʝtꍩ="(T֛ة~#':E 'm0(EX'kڴ/c6?iFf{H+]|ݗtOT\n"}8CVPҞk&A*&K6_S5ChZB{:Q# =}'ޖ~:jbm7^Ï;YK0w,!Q{ic>m[j_:zt*x:&f:1AAy1,yGUH9DqN_|}} Wޖ\hGI,< \h[##ߴ^ ZРv`>¤bO=Wj76 S5ו5 ]jyR*ʯ$Ĩ%W-}:a ={l>!KD5ƞJ| BHXEcדPILSLxɤլ%0q1U7/e`鴡@݂DcW0DBs;=3{^* 7pq6=IAVannq|)6]e>u n嗰N+oنj H c׽gx߄FG1nQv ,?L`q/|M;H,ԏ>7iW/3r(]#ݟ+r]o*)}N$(46 q % D]%iΘ7W Ut[lLZXd cFvFxɹ\NZi*M;T>B)DZ1Emx.%<a!r. OB7Ó|MphW!CO x (@k~nDޔBorW! 1l-"ՠ_~ֻ'/pQ ?W.U+~= eܚo6w݋W5l*'v#ݍҪàvoMvB׀f:X邚/#߅Ms9V-YK.>nNL永Pfa/Fk8G㔗ҷ103~6X@mkއD*G`)#ɤ4l,Ms6wR=#ilYH$LF r t5Q;BH)>Yc u3eο90VD\ #y~PF0- 1)R  }.Zv{IHFUrFʐu!552LOp$&dDi*:0o_u nݎl۶ ڄ_blڴ+V,Ãnݣ^ܶI艚oOk@坝z;M/hi<{U']o<ӻqmz7NC݇"|WMwC(޹^Fta(<x5Ƭ$!MoVYމTLJB(|oA߂%бD&IT@/+U)RI$fc4#ث2ndlGE:{e(9O!>Dg- ^l|ɩ:Lr$uT,V{|5<mƴ*wnUhNNK 6/˟!/,j9`"5y0Q D6#w"@lBd!~t㨡ł6ף)̗v[6ZUS?wqN>#hJManr]}Jث7\n&n~_SN1F`8u >a`݉{.>oks#SGAsW.[iBx={'QT6r#{t =^i::;zJf༷ wCF.=+6p` {8-e>b+XC3Ȓ8Oִ;2wt=z;|ZDLX-}r, <+ ftX$} 'WS5"l5py-A%_|UHu'On̫_uΫyclÇqC/ ~ dM`[H $,N6x{ghȮJ)j<@ib&pwL-@; 9zgx=i)~׾\& ;z1?=pʕ JŒfJ |훎834)م-/<ߣ /k2:c!;u ͙ |4%PdJw Q6aE˼~ .2 s!~dÉCJR`UV` (OxqG(E>xHpk?S mb"8ژM +Q3)h%=b6/~70ëO`桛%kF[8nZ,XQ"f!ggЃzZhs7ެiM/^{zV-h;R#@8)m .ĬN=9|񆗞uW>} g, 7 YLՁ5j&+#KЂǚC\UGa3D dtޮHH%lZo($_٤ DRB.|ڄ)doԘbNmɝXQd5K1- لu+ LkmHe>BwwmF &A޴ g74U"^]VL>fE(C!DND1^mSϻaw߿)?`xjSuѷ|YطiN<'VqLBowgkOFg3rDpӮiqo|c 64^{8؋~ s!'>mx'Vvta+Q9x;&,Ys݃߁;:DGOOJ&(t'㙎.]^bMdF(;@A%68 5Uv l#Vb"FsGL0*&(œBdAb+t /\Lw&D2f}*T?{ h7+_#@m#t[-W_ 6Mozuu(gnV]f7עmJc^A-*u2P.'aZ}IlN0+QguV^[xr^\RtxL˫ }ӝ*TF&E20U2<@AI*J(5))!2 ^b +ZUDM}‹Q["oN]3)2o쑑o`pd[ X{GIfC#~a WI\pk߄p/K,>K_ =op翌=ߊzSr_Czden!Nztn3 K|Օ췿-կ87Ks|ـ{! 2,uq-ȅK9*rL QY':ee-+'?ceJUa :#&3x)fiB!Scy.ϧPdtPxvgKY>FÉ@ FdGL!$K*W])}ґPg%>tOSq"Je3\,D˧7myw]-R>}O]kqqޱxl?\s5wf~|=J]:ó<Waѓ4Z!'[ qK$O'X, &;bWx(dl(DG^V3DHY^<2]*FhDcҚ[<{X?SiGٚç8O$y0ͮp{BZy ̪HF/0R}WFU*̎D0 /dHy$r@;MY4_sMy VlRK+$! hS2O#c{tDPL' 8M:FgmjSR]1Ċ PD.ka";Ҿ8ՍlUW!XDTȱ0 ʛ_ DxW*gD5cVtvVaDI|w h2 =IM8Oi5S2OSLNOLm8 rF!UOedN0稅1qwWP؉OzK(6j ɇIbV[#)J8sL Q?9;xڟbQ1Q2Vgab!BJL&y)9"I%Rw%s*HLgx6He޺'telib։S- i7#q01XH΍(D%)yRԛ9E3#wRQxgC٦DFіnfK(.39ſ5&GLp[D2I"ODx|{gSb?EҰaDג>^Kj/?{hzoׅeё@XqԳ ׀|(uC"#%Y WHMs1 mF^SQ,F; _:rOWEc2uP$_C"T^+7٧D&$XQO*CAΐAw uBs8 F0^tV 2h g:ʗFyX ]%ummE8x # Rډi1ʛ|1l1 y%{n+"ٝv?V w9DPYl+NQͨ)8تaN . Ay>eⵛ%bm&2O% ,nqJ,ڣRY@ YA[ cCށ'#j A~QNAJiEkz}C(1? <,/ޱK\Lf{>H#WѦiX/i_4< Ũ,(i\By8s)ȒD!ya> EU[FWJy/af=yq*,) h<Ö͉TEV/( 9Hrv=*^ bwjkv=@T}0I[ }]GDےGa#派5CwMqҐJ8ma,T U抚NDu-CҪw Xs\,LF@>HE76&(ʸ'S6FI O<"`7&Q`; еM:O@F̟EEZˁ*LA=zF+Л]2\HX;@ЅJ:lj[2aR)ӈu yU UA$b7E#&-PEtw{o^w]!nSQbA`nP z #\M+W,3%8w.+>搟Ka4d,/0c\=V,/}| %v\Gfю7 l9p"͇vNC&y|ӭ~}#)O7; _O̔? [FRaIm@D/Q1*у2HU {We?wpgU%S{ &"%u|)5KmܙU >ݾw ̴a,@UѐҨqJ}BbASd*}qv;l*PZbto i#]9=uʗͽv=5 35w~i6}?pKς^1om;S`c|>k{1௽acswpKMWh`~\?aG?<SCX46/Fhf>w}saT9$3Y;~zF8vj~0Zթ.c_f"V|P pR/R+I F0KKy%?r"x;02}W6v~Op<8`/z͗Y x?0ÝsGa }욘zegx}d{VCI̛'OE[/!$씪ҏP$;0ʢ MX8$&9Y)[/01X̍DW&><fFjЭWÏj}[-:]ꅮ7B[q5hwr31ؼUP$+@ ۇOp">S2JRCj5cf%K g!<3I]Ǧ {xW~lײ1`%0>{>Cgßeg )Dt~iuMۮ]/<fG_[8Tbv9ۼ#~z6Xv&86lɠQiiyw! Bwn{fvKtG) J,M=]8nK>/L:kTq-ٻuي~zMQ0'%>vAj=4pyD\7po!haU41RXDJx Vq.r}lqySaG%HΩ@ؙC~/on xwz k"!gI_Dw> ƩW_w9U:,5+ ,fgno|6̙ G^PnvdIAz~R³#Zs聳 @?P!!H]ԟv ِ`Ѡ "TTy@1쨣j(s &ҨcF2"Be^͓Eg;WVfZʪ- ,DRp8]_=qsW9Y*!`!d_1wp=RGi?G8 F4~?9}xu1 o|5ppŎNq.yϱ|5i mV,F>Y./TrN!KU'A }‹Ŗb,^o&(CФj7% )*1'lN/7?V6,t1ﮰ'i4A Bv V1S&ȢIZ@˝z 6g+H.fR>$|V"h*. 8}:-Aw-G_ݼޥ+xUN6ÙS»Z !]6NUVB۲gV.GGUHG1O'fD^kQuW?Hd$D"I q̆kcʶOCQwbyQlώ[UcIl*SL!lhr܆RZmAQ|y('y8D8ԽRGUHg` E1hhfUE Y]j2 )EŊ0Hy vUm=o#p_}}v=~(6U 0rmǽk H7̑Q/rQ`xhJEP#SOY׷j}8F9Zg'Lm K#J#y=Ćpd]G+ JW*0 QnIӵV8 CqOG ԔVPdQEewO8G %'(H"QdZs$V*%賔.A~awtembET? |+k5$5;#^]G=z)2Do'::'=<ͯ0\'v>oA&k|)_Ñ)A5uױ'>ښn>M=v^ ÙS|C'ݶ59Bp%ԤL^J ^oG'25Dss=i?\~o뽄E\b~1H˅ Bvgߓ]96 NV"_ |OC"]a(/ ڼ"5hJH `n0"u?C{h.[7`X[ t3 ˩ xÄɏ?}j42N%4vI`HұR3ID=G"}!,D&Z&y}|_ Na+𢝙ji5?:Юn CeH'jX/{k xksر|_~ﲁ[pv6 |Vo!F9h35?$;{wհUa_7ppyP濟jAp_|6o@4$ﵫex9>gp-ox~X +F>?ۺ . k2|:y2C_*L>t-[/FR_̽۱(vI'd >dUGϲA-3`5;G&T] BS2f7 s8gdڗaɷ *-6cHX{vS(2ac'pH} )^yq >߿d-J6ktp|/YY/S׎ugTla)7kËT @sy>#Si_|VCA_ s.\&<ͻ|EhN5߸]_~vfA#kʆ:w|nCv^?`g i6e>$/^"vViyOٶe|߿w }Ig/qp1c_rT2†jѾP+s}}Ȗ!l5ߜiW<׺㭼Q~,Vlɔ`/#g\f4$`43<E##`1I6 8onH#N+%<5ⓦp 5 }CK W/Di$z,Ig=j(`ᚏs<]{ 9)l(/Gx?w))|DOT0NP,x-;k+Xqމmk9F!ޙwI՜{{a4`8vPc'K`xw|SZ}q/YnaY~ MXI0h5[=+y2;PǟEΩ7lDxcxk"nnxw|@5/9zx-;.Hzvo<%\; _Y7RS!pNO c!j}?<:l"LG6;'7]L͟&aݝaɔr^9 :zcCE(X9 C*?g;=EľY47Z#f>TV ƣ"O sgEX|rF WA 3R\,:1}|%rf@BZG-hQ0HskWuuNTd&n k%ϚzoMU,̺ZH@IBAtdP&׻չ@9[2/;A1;ʟ9Z@ف"H;6 FugJWXd Gsđ`籢@Z~Wc IE,a TW1lI@tja0*p<<dUi}&nW"g )SQ^y KXTEf]1Dm*]? J4̷6Z .XhΎ ۵]// VɲvAZV))jґ% Az.k[쩖ta:e2sFbQ'Eڳa5/U =aR̹\+=EHԩH>Aq@6`&;V(\Sw.Er=հP pC8\?88ߺ*t<I4!6'PvO9gp.v _EPRuOcUzʩݐwP9s.ͻ8 8> ۶Wrhh 3kWqF.T' p=6[X<@EC1˲VQ4Kٞ |y-S|> ,RȮXH M,g{̌On_vmB4rTrbx F 9Q Ky%5Ɠv}(Q0bK''=B/'CkF]R C?ӷ^s:^ݓasAMuO[8'Py E2H;YfI*HrP ֜$y_ 0l\'a|IWUzrWv0ӣu6iw_qvCBM (b@B' IaJ:gźHH70}94H~ȐݮRs>`fKsMY؋*v!YI6^(tʱ|Ph7u:ROO,t6?ӝg<xD,  HXsR-%ETD˜'5!C*_bK̦> @ 6,_ hϯGkxv'8b t>xxâ1М*.?o$<7ܯ=:䔅76#9 ѧj3Hc./CNQgg8;hXDj)<Ͼܜ,NF }D*dlFPk.cM-챚ƒDs'6%;U4erHI}M A ?X!6,NI`([*.gpV@UP0du\j.:]ʔ(35 \[5c*2/wP H`hp=U,6`PC)N8(YZn*y̼AcZUw Հ9p fw`g ԟ X 8J6lARCi(*ǐV_p]n NFBJ[4@+%ч`œRu4oCHD"a=0OD>R6HD OvPh_$Ou257NjZ. \>g0L,Qe ]ZRI#*jQ.Jrj .ibnh3ؓA+ՓQ* ֕J@AtYEFM̉d$!CGȃIޒcPoS[k, Bh*.2`":-τ5HU`P fAOP#q^K`xc.Mꁘo{3'jdʑᕲv $4FS)x~PqYg.,ʺIrکΣp˵k*ZNhҬ_Bb$Ǧfl=>8iK ̲8 P&!~czK=(75h̟&VAӒܧ˙E!Q"iA5q3; GŸ9B"B"KW m(nzbP@`&ʋ4H-"! Z?,i*)F/@I mZDOI(IWRX&(ku±(Bo\2Rd#BGXPn`2C|z'# Mlobzm +g3M@M"Tj&aNYVӉ1z!=㎩z PÝiTmd4~,sֲ#'.*T҆ ޠR$0I"_ERJ# "ʢLC )~ť(wf9DEz,w6Be,( Br<ؕz*ҋ w!_xH=Fqʑa/Ra]h϶fדX$M=3t4EMq<HrE:߰qVBYJ5Z>Fbj!iigӌ޽Q=|ֹ}~Q@,J6Taڠ0LgБdGTT(A+v"ޔQeZ#^_؃v >@#vTU@"BHHBRIeJ*<{z[^Z{[(7{7{[]:Ϸ7w_"gGYesY6nc;z #t#I`SIp(6!s wŤ &^{<Nkx0i$r~LQ Tms*}7Uނ 9osL#*}+6fn [ВzVqo[](^9?sTsmS~BBU7"i}G X߿ׁ: 0t(`-/n"QqU ƧMO<"ynmȊJmf-ؾ J׼yzA+P\$*WTUo {rNh=MD(OB9ȲDA2[z6"c 1)J"$ U}nWS&S=f J+3M7U(A97cf?sAev by[v(CqD$nlĆ *EtYf7{|G&:QimNw#`3 ?/x~>@l02?w8Px>ͳbX `Po>>zhl J&tݞ63%bX,HOԑܼ=-zC9462FE Dq~IT͈kxl;ʼΐ:16!p=4ntgW6@&e\"T\XLڎڿŵb倂je( VS8/Bqp0Q}c6>wmFYp^FajCjlh$:?g<^֝hG7*)L(" D+X 0 / B B t3>,xGm$}{TLLa-}m $pS̍$R23P̛ gy*Yӽ3\ N Kqpߤ6y[+eODR^|_0.(Ø|4{)N>*$wKRG,v %ڶ0oT,ZjM~*A/nvDVM'cǰ\>T9 Ũf t$=_J,gV*08s`R0_ץƬN&X/Nc&J*7|~;pR{0TI' |! @sxN'WSN'dyT+s;U3K^(ݦN0P;14΋5;$T i衺 7ܹHٕc9.Hgw<1e]kUѳSʒN:%E'^:P2AIӂ!L|S4l}тhBm iD$ML eW4HN8g2d& i:YN8$" ې|Wqff,*oͫnUs[~`Q0^~,UWeNhi<>)'ћ[CӶgoaM :lhPafD(G"jV=h'͟3wN adˋ|c3%!ɞb[+NK. oosh.qDcHsZotK(Z%@n򴚸(<؍+cI4>Bm#`W5-{޲PY0@ F5[TKQy[{h UgT,Um@FZ pgQ€LSA5YLŸ*mn*)}5WO(O2a|d~=O5JQ PeiPlH,,n8 MdO9G~sq0h`^oM\T]n%ee𤕈g!9ju %dU,iBRNC\mM =xURw "b|*BU͋|8i)mYȇm~LT}bS\U<1Nn|TN*b_ W Յ.-nd|4WvʒJ1*&zHHN/ G[9.ñ FA=ρǟ)D8i4?RM(99(v!>='\ tTř> Жxhdjϊf=hTQMGEV:jh:Yg[iZCpp1 \ EaV!RaQ&t-` NE~η2:9+@RhA?Vy+SRByi7d%ʊ5P=KuSy#Ƌh^epWgOq&"W GƏ[,IR9+"; G9lY]ZَqR fO4YMr\GCXB uَ]Ut1*Ie µ*-Y*B]h9zO`9ypOuB#GwARcH/-  "eyWCBXC)&T W4RP׷9H Lna4d&զ$dϧ"Q%uƔ9B>8/%DpD=VE#V >k*ןP|!T9ːmjݦJUS"},!-Sq +[$T:]R4V,&@)(s"G[Ǎ!D[x~U/ -l*|HyEXg'*_!M L` с>cD:NJRH IP[tD .0+rӑh L;X 6 +*>ΓZ `e!FU 2X/+)>%9nE0(;BC@h̷׶HڈT+sGY\[`ILwu%_9hðɆmhgCQڱ˜o*R &3 }:|d>wAZOI*DO7dYzb1NT82 ]*<-: 臛f6R(&bX bK1~'_-QuTxzag!ǒi~<\QEz,Kkg7wW >)>+ A`?(0l JaXt%cB)JӷgsJ~(1]9.:1֫(S*EyC*d(Q:63`*j1n1^)w U"mnn'mkagUѰ :I$gUx,13XRv,5'`^-,#Yd1LZ`Ed_%."z5dޅ@| DWt-&``Fϝ=)c؜P_(~" g9)E=c|# [ ?-PX ] /v9VЙ{Ư7u~/dA 'T ekRC <F g*Aǒ˕?{FOt JbH$wF{,%~>RlKя,"ė%Ӂv^ {Spo ei3ey{!861ԟKP` #4 +n}tߧa #_l򰔥%}':W*XnٕhU~4=Co'UuogkP?hq (_T$v\{5t}tbl kD+ih (TkJ0N}yTHg2 0~}[9a@gfBN܂dlKFf e>LyoO2֚鋝^3H=wdq(ҩEqIwB5׬Eię{G 迆֣{ʵaSW?Ö KH*B[^f/MJɶJ #2iEBO6NhX^2֊"y> *CKEmhލ[ ^g|67fj#IwbܬڟGhZ(rXiWkIacR2Q c`{o>1\:_6&7΂CpLd]D%9;P[{̄E]ft@ }ɓB}_r2TVfGj7MKj89{cZj5J[Ztk:>C%7@Qvfh.ןHaQa" 렶 <$woeğ[Ufsi2?HU$|T !*1~ 3~z]T4\b_q$`wZ #YUUp j*}sxSӯ l}oZ{iNbF?||]Z&MK+ yjWN'oMWd6ֲ>ARz(*^0 1y0W Uӥ'B:sgVaa"j!SD'~nu[r*r@+l3K6|eV+Ѽ7ŗr.QMvsɱ4ɰ0\& }HD o*ʿQ]ے ¥ʛ5gqp38XU#nU%﵇c1Y՛7^}>r;ܸo >4dժ*g GWwahpl+Vwf@K6'q ci'Ρ5wۑZznʴhA gc7x\ht^ذ$!s+G3xF /Ʃ"qt=Vp0GVd`bNV槽AeuB}M $fk5qT1 rYZ|{_~]"]]1 EGG᝿&xžƄ)Zkl"x.pAmWi+px*w3m:G<9KfӬnz0Ε CT(t t^~iHa6;qC)l{53x͞}nߩ'L3ڻQz 9ͦDl[֠Su=i"BNƁƍ[2)+}zXR'+W |{-m BoDcj𶠧2۔=p~x ̍'t.faU_/?<^c09'Z09_9=YZ8TkUhA괹<:} !tCsxROhg4i/LiԿ,cRP›{gr)R(zXTHSI&73{Ѡ?s u%@Qq6P+5@D#*\@J;4o~/ ,Q6f4TN"NK_PIc*#$ L 44AOǩc5rdz $E?-/JV6PU`AS'lׁw X;ЮswYymv;l)p`o|~ u=F>_hCtjW?w@ړ^lqpC/t=]^)R7s p ES~gU@pA c3G?j8QO;Ga=BbrgYQдDvdļdJmM} ܵdI PN~žKbsSh$CEUAZup˕wn !; a#~~k^z&lKсan)W6Ἁ~_o6&c=VsPA2dz?sF?ڈqZoL $*Fad8kWGTM 7V\FUPSi26^u6@4][C%0|δ^}04<r i1?q큿<8k[Bz ȵT*U㽗[Gs17s"f z3:^hx&z9wv+T;}cjzM=sPl3xH>&HösqTG^Tk5 PjBSAM^JciU 40b:4[<r4 K[yBgw^'_j`JEKsP ~;tY9>!+QDj/UՋmKܵ~3l6W٘lKD ECo'#䈲p|*MHjƭ|`+v<;wm!KPIDžz3х dgઋ5DcٴJ/ i^uS @|=lZ~cQD]OY-C+lJmKr2y۶,fXhj hn{;臺[zz+__׆שZ+)1$TJA` V ὊnS .-5Kn'[ހ5^k^):%!5U_2h,@xl=𣗎\)x>8sG{7_0 G{1WwFO5mfȣ?v>)xŅ;afeO?{3G+3k0hTuzB=g޴vW9 7 Ù=pPc&/^]Y؀v Oތ޼ });O_$\?M"ptО`Y@{қ wG[ώ~Zَ;@4NfЃnڎ%اb>]g[tI:"$AϸfJh]ȀhW_6}.bЭJf\Ia(XJ86s7 ;Bm:SS46X[/7>*@(ϧi!<\gW >h4[+}0?gTz `]/Cu:9Է6uso|' Z] {ulڗ3fCsf~]޿fҿփDxUx= 3P⦶701xfzԛwC6Zv^ï``@E}&bzb~h(]+{5x^+#&jP߾>; Pntzpo{mnw;gE>-z!W̊0;< ٣Dp(_jBǤx|{*k9f'].Lsi@Ϯ(8?(舢N0dRoTh1tݭJn%ZMzL_ $ esv8}>S_] WGWKpD4tPO^<0t A7_ 8446p!8ڄ[Z?|l.Z[o.ir" (%UA}Qy3{JS{~8{l.3 w|Nxj}<7w S}g\ZL}Z/e87{Owj$=PËMOvrYm^iª"8<0 ~\37:zowϑԏ\^شv#SSaM 9 z>^WIAkfT B蓐v3jpD8c)XphC;IPێ`14yґCjl % D\iCGwSng†UkU2 :}(ޛzhAVhJǏpM˳JJiSH *q*ŷR:u4wvmصc@P9~f X%;5wEh @õ3Tנ`8kj)&3e Δ㈐= 7 +eg^t6&SܧsgW[yA¨kk% zq՞m~ݰw Tπˑݦ0:GPE.z.r؅{W+ڙb ^z2ԁż~Mͤ^r}mX"5_@o$0VɭQK?lQv#RQgY/qL_Wؘ Y*4dB?tݭ;aQ;%YqγoI0q*:4 (B6% k3MKS΅L*AE$8iϑ%]^;uEub:%$I_s^zܲ]X(&cLLT-7!VKRvܞHHB2B/pG),{M= #9s[cD̔NR?s޷t RZgT3*10^2K#@`[]0/H;,8314"mnʑS(uFh"*{!xJ{\ B2UDzq%S} j%P<ĒVZsA^yp6Ub11JsZեLH:cX3I ` <V'%`n|[<.cCK4a#D!xÂvӘ^LWf;2)usoi JGNd4v,Rpvpnh;I'ځ1d0i5J#-ߩ OufW_fT Oyl*aA!*p3|r A=װc56YG~$'Me"-EOF(_)woGŁC`P2N?%nmpvq0/|v~N8P_ nԧ^w0#}<467 Np}5_'x l^xC;>C>N~/䷳nNF? ߶is۝𺖻E_oxKRFJhX}NU/ЎʍD QOj3 ^2)*=ҞۄV0 UZQ_ áwH&)Ϩ¤`"HA&d>,θM!zkpה4"D)wlA 'G80_8Lp焮>P_ (P\*+K{5os {ֱu߄_}6x= 9 P|cp30abr>񉿁K.>/尶|طl8sP> ==:$|w~Y}?c{nC9 {w?y~~^UDL$[̱WWqYԃ:DwtlD`2OQ2;H(4OXsGmο+yF~~ՎʶT("GzmE6+gEX-b:weC[Ri5.bI;MQ;2Y1tޒJc62mHAե'ʎ^ cр IIV\l+:جH z71+xyLI(S5IpH.=>2I3ٙ9x~?7\^q 6.+m?<&K/ֈCϗ,(KQqY>vaj;m/^5} Z#S@UlfVFa P¦R֥^uN8c{ldVf9 2ywKӛƃyԉ$2:QblF\OSϤSO~ʼn4FICs!݅MyT4P mZV_baIzN|Ax ގtVyK*QS<>Yoe*J_?T:ia5߿wϒ)0 <>ۅ4(k$|:70ks졭޷PW[Gʥ-*X=z|I:Bu{g^2#|$B@In\1yPUB<\ ΫO`EiR :5k,Vo8Gqۆ>yW놪'!z+ y77r2VIUih?J/Vr9O Kk͎U2C: -bK(:V[fijʧ&ϭiSaJ$Ia )bjBǎa~?H6 /7:zkz2_BIBP8[saZq ޢiiMccm1}zGƠorA^kK}V|h)y[uZ~e 3/l ˶o\ =XUogX=.j" Ϣ~p!0j=s^St۔_KM>c 1 X#0l;M #1rѼdK1Vw*uR_]T5Gҥ~ӞU"ogʦ a?C:*sC}?KNO /lʸc瑹D_O/H)zx>657y?OO AEyaWC@z z!?#1<=Tz~^g4yuhhƿk^ A smcKzL{jp؝.bPJ-9s2:A 4m#6:dpt-*]m)c !0,np$D5V  ȓwR̲K: xDbE:"8":NUTL1{-Co ׽X눼$χm8OʽsKl38)LhlK̹DͭL +bJf`Ҍ{jnIFX@slMHG_6usDH'i@LT) DSʮZ%%Ŀv~,ߏ QAB=z cC\J:ɞ^iC&%=##a&V0&E c skʁ3ES{23-^ #<ѡ0 5}g`xGe:fld0DDU σswMe?XC¹UQ@sR^,SjRi92+܂n+ǝ dR,?m1lr >7#DYq-V@u: ,G;1{ "۷I0[r7aŴ7 9&^$\8|j#@TڹwޔqWOLm@—fN:hĆ0d~3 @aV0RWGoxbBsh6U2"k+Ȍlq:SzPV6C#9(캈(Vr۬4bt@n=A> ^ kø e?/BooM6xz *n!6/޹KT+AE=ߛWh\p"cb#h xmabӒc.nogZoNܲCn[ yxAu*/fBhk2\3^^_H4(FGQ0$36-Py4}gפ#_DZu۔e]nIdҍ/ʻ^c2?Qzwj6{T̪b/[`AIY8sેO~ ,r^m|CO7[QuI*aw K ` bdN (2jH7N8 ,/ kis>HH*ݫj687،.U>S=#U T씡ϓl&aMoF'ˋԶ:Q[o`(уuX`{~_MQq=o"t(-$aA&?P|kѐ-m}੥{J? %vC#㰾 /<;^ C}g6|‰TFSlyyppsO(" [\RVE,rr m'_E<'Ǜߴ-VZBt"D .r7C]VIpK3HhVZDǣL$" t_)Ǵe,%E Ȉ}6^E4?ӣgW:-6P k7NQ/+Ypq-~XpP]Wy p籏^~Tջ~ -'{N \v0a4K'l5i3C7|8%^g]4C{W @jNDXآܓ|.'[T(eţpTIΠsr6Kd矔D@Zd`#JGw'[Ӿ4`iN7Z`^5Ym o ͘.1SQpfK>|&1.GŁCKt/ߑp'KxQP_,gF9JMlu%[hNYdD8]G6Z =?Ec7BRGKY[k-c'V "?nW|PzӅ=sd' ?uaqqxfQ%?} ٹG#/σ/ëϿ62sK_Gm8=F΂c`۶x0>GM}[; #5< N= 5`Sk+K&5:I=păf!XzD.(L* G`cCWOM4lsZя/5X\Z/Ow7Z>כz }z, BrAUB+OUFe.+M!K'cGaSx]Zx$fԻ*ȜMkU!E3oH|XG8 N6_0 F#JXjBb|Q KXjw> ծ㪜~%#6퇏?Ax߯Oz ; 3.< #= Y[#amm|pg׎CO~xHoԗrUڄ[Wj4г >|t 3_ KΡp7Mnjdćams n]0zzkgnkF#zc.@?\zj 񣟃 _7i6|FnΚzKF}G`v 5tN,=7o &ԇaqeZIMhЯےaX1l7+URa Z:&rw gE\VGoc"dG!n)b[* ׏01d)(>Q<|%;l)Em:a~f; ppU"& CF ^0<&3~\G% N_xIX9']q`a].baYģ{QV(6( D:jf}W|>i֦mWfsEƙ<;cSI7v8NC]{ڳ/RXiU^]E?\u] zfr{L_u3x.o}lmYcM39<~?{·^(3݃g;}⽯3F3C}[L;`ڠ5aolׯ} &`6{s4ڐ*`oCMTUګZT:j])6D̑tVWIhk9܋8 ][`|T]XxAh3Cg[HBn`ƹx>FIhN)Ft'Fz̚43J(LƤǧxN$nӿdYu zoo9罎iq)crO^0I<'\88 *C.6u-GZ(2.FR0TI(q_Mqj32-\a5IXrkj.|Cٹs[o7>W9Wwп+F[&t%Dv3e A"*Ȉ`5t;*Q߉\pk9 QMx~iHh"ZTGkF۽"l4W'ˊO0A] j= mՀö%JEB(KThKEՅf8OؘJa&gl:hrcDAoN6p ldX7sK>T*I*Ҥ壘p ;vceAHs vݿ_N׳ 1_b9[{/&Jzp1Hs6M@Zց"\԰]%#T M`"jXp.ư<9qп< kh>/̕ӐyJŞ%Y,b)PI>_]J_I'((2xQ;V|O%9Y"h{x̣P*Q.@Q CIv6Ƭت z脶#޼}9]-hj-X{fe|(bߥ%,:r^wgnʨ<.!tkRD,4 @ƅD PI>,VR0A +:`-!GQKEa $n-VCWSD XaQq <5aS\bae^G1W~JG;گ M)!zl)c2 Q/o"P -~^{қ#yH\%t"x*2E_QѨ0~|/Nⷓ]`5zNUF3tdq@T=sw\M@RPTHb& ɁU<64e萀;4D#d;@x{.Ar>QQ1#Ԩb>R2zGA"m:6BͺO,w(`el QhN`=hl#з%Pe(Kq{LApX|,56㪫5+㝖M؆2ޙ^cfU[E\5F2P V5 A.ʻy* TRӻ96#64gUM wlCA(b0XZ.+"u R0j%Ʀ |C\9 FŤ{lI/f\Y0~!Q05ГOGwҷ~gn}o$CqjcX]ΏJXȥ`,F`:rΐ(,WDo?Tb0 ƏWd4cbkZ; !IZH3rB +hEi:kͨydD =Gfc!=<;>ft3Dd$0P /?'E2B>2ZԀ/| L /xViVfctg@[{8q>}~$4lC(DC%k&cI"z^Qм'O|^J[\BRfʴn=z H8/FثSzk(,*)`0:>} (2IpԚlT|ODЩ|Y=kvuB T % +Tn"yEl,i5Jzvk~ "4@b3lp6 ._/l_rYߒ@cӶ:4c,TM:-aV WFB0Du[{F{ʅ#ljO7ߢnHIHuu͟ 2!?#uu`^#; ^QCt0uNAKZ@@yy2L$t8Joxe&ڨtte<\u] UG7 LwZ;[KˠZPm WWO@6(7[UXGZ[o ^]bpe_УӁz]55$MM*>VI} "^9*Lb;آ =rn{קc(Ҍq%b.4iAvcдy> MZ/Pˊy\zBPZEasIhTƝ|SUK|JLLL+ N%C Gmn87W[ 3`7Ր6 MPQ(TW)x=pW@oל ]TcfY}b6 &,<=0ypُ@*H 6䄢QIV&rAa߹SnRޅS$K\,ݧ^Co~ш0a| )hJ{,1Kr2T1: R} 3:-ydz'fc %٩c޼rK\@[Qcg҄ɲk-BNt.+CB0Cڴ ϟUz` :^AmִAhlw_op}jgo^ }7]ÿ-x= M^쿃߾=0;s'.!rvb(Wv#M\ >aߋ{^yWɕԽ018ijǗ3\VzBa:8Bd&E?zx"]HXֿ~aH8([[UJ7VN!XܘqPY݈;}R.@`V9GrEBę[,T@Z!O%W[to*8W&rh;/|6Q^)^TlǛkOl !^O&b Y4b N_蚄+$-V*+8}OHGCN3p)-'Pd\QL>~H3E*RP!K> cΡ7ы;[gYѸ0ߧ 2[S9PJi&J쥯/0S{`<ObNu Aц&.*ϭ5@WnO pxU2yJZ<n(o񄢌I1C6؆7-z \IOB~[a*9Tq=N򂄑ЪLǩKfܻ{Wr׺PTwI[7*pLf(Wek/ O4By _=ϙt 69Nds"d~S%3ڈۮ9`o]8$ &4SD \" [Z6\' A,GV!=g{5^Z>B5,ŸѨ'UzAUJd]a<Pm;3ڜ'֭zVT]=.gFb!ۻ(G?;|3e^Zhȣ%\Va;V@9cI g,u{#Xn;v}}!Ƶ*SU&Uzf@DmFbqftڧ%iH: ׵*=J=> aD(:TlVMMOC7#1JKR8d,UgńmJTZOxC#HBKsJ}x=pUR[*̇dDG3F GT,{&`eJ迴DRžn?#n,U뾻 Q  e9G2U2{̽sA,">OA*7b9$,; JŸb4|s,JNZ0 zo[jBI* s {u,8׾P0.mPAzo wr R?ȔPőS%{RF 1[~+ѵ֚Ri<tO]G?L0qCwŭttCP4N*۔H7<{R۵[)荟WcNL1/pV$2Q駟^K+ qɮa?  2Bb5!^4T'"УA##*`WI@rD?2Q ;m0y0HZ,M5`:>bUQ{CGjxͯ_}{d)hJˁ[7"c ]Ӑ[]YZ|Rqcg4g~SG(3x4Ӂ4G@n X\@b1Rی~#.9o\k]+5EYN*"C FV$T)VC8yn߃zUXKQEKkz {m#@ ZX6?w {pf-åoG1!ln"|㟂KϞÕ׾VRiRFc \(~FRS{QJ1x9+>R,'`mSE0k!0^Z+W,zB}7ר 8tI/ CE97Y fj xQb<.ӪZw<(DnDQpD:/ }PH/lfF*6W=?UZCGF~6|ttXYBGxgz?q/C EL>09~xʹmUI XY̠ آݖ+nX;F(/Ex/pdm% ~ ͊Ǿyhؼt wL. o!¶EUr1>z(Nv>nG)'EM@27;ӿhic [p6$t07@v0>yp͞WeQ-hoxvi ñ%xr!#&lo+}56חګ ʔ3obW6aziqpb8epdy8b;| 8/-,Ĥ0NՆpxaň

m 8Zg(mއ{%w WEvƗ#= w ;wR B\Hapů@9#r QnF363}sbAuE Nz3Ka1uFsMeBڅ*TFM܋3*p3?wQ |;aȋ>uPs.߃w} E¦Dyb^r6-եذ> ?^Xe%€ސ?7^pOYO Zp7 ނót5<78<5 _>z+?y64“pcvG;  #Oޑ7e#OCPnOgoGO§vjpp-C09xQ03Ol~wi\ve)x^ۧ7;ubhPո7z`@ߢy1]MWںhtͲ,ޟ9;}q/R5# }߯ ӀAۖ~ ڱ;j ORs83,B`̽Z oi)R~#l?yL"餋LLm.K[_(YS`Kv] xP/fR>"Ȑ Ĕ})NUen#0OYE I⠅n@U+4)/wy\}^zka7e# ܼXg{?bw=IX$/ spyozp;7_/g+l׍U3bshgS;zo6 nݰo }a;1;ـw>8n[,Ez̦SY?QgK8*k]I}'mګٙ 3K|iIvIƠ*]WdslNI Xh4᐀n)VN8}ByWS+2ow*N9X`FlW/ SE%YJܩ׃Tq%Y#=ʀǿT!zK`k)NNka ghz mvOZ./+=S|cob"ԂdY=@s̾ OSZwqQTǗ aD1՟((uW8c,0#`T<ӎ]JTnY<S8Nds7o; m(w o,@.>mϒ>ܵ֒01}vefs>6ë>jU^a^6tŞG{U{~szX@EVD{^ ͮ(Wr(6.J"E: ]֚of֔wf*y^L&c"KyZnOR۶Q?cj<5'0Y#0J@LcvstA5&|T󩱜HS4L8'(l>h "Ѝ}glbT;]!_N(Ŗ(I„_s@81f52bs"Ā>VVR)Ebqŕďvl I'nXeԣvU j9<[9k\x&#! (s7x+醌IHEMeF븼+qEWEDʇwe-ćӸQiY[] ,]kotOC_$#%C 46ԕ2= ͮwR:DB랿)* ng-n:E̅(RZ?=U\u0`@ *paՔ(QEf0D|^ 呈gqZMyE"3C],Y10Š?SMoúeNw&2#&B$ k hyE@ܙh^RŠVTf$y%WK6iY&Z;i-N#(2h_0fy1u|bCAVkʼ^(Qլ>9[;+zcc: +,UYW4t tt/L[a ĤdwM9EV9A;Tzu˛EHo*WLdoI(͢LM[U 9>"B8ae*U/ Ώn^bBI gUF-^M\TlT.%>6jέ z@TWɫZ3Of-rjҊJTtr9C%]QGOU: k܉u{"2uϬ o`W=s?aVs3Q$>b^@!̩c @_-_c;;yGyfNE!p3aO*`N Ou V廜-6K[v&1|a#R9ٛねrL)G3+3$(rña]a:&V(JɓEQV&$ϯF濳ƙ۽(.3*6dqTV󁫖h+eۡ0>@,5oNUE4@OO~ccb!W@:BUZ6786X4:>-J멤ywBKIǤj UQ_ VsҼ&y1Rzatܱj=ݸ13p9ٗn!GOg-]J^߽l~q׍C׼=Rl$ƟexL>OLh儻eLs#ϒy2$kbdˠR+z4z._IBtj矢./b/ûn6}JTlDO_FmB}|T$**F?0֐QhRJ6q+՜yN~Wd3+aLurfVԑVW{ȣR eEV +*]iˠ: Rh2@ؐ AC v^m0Ҟ}m/Z%[$dD*j*ZNb|*EkhpcLh%ųp\ʪ{q!׾xOa(*|<7{qg?7Xj{N +1Siylߩ8wUfk1KOzx-O{66e`Aܶ,B]e9Rq5j]%#D`o&eEĜ"H{D~d 蠼 E?nû¬CX a|3#-U*Meg.}0;g57'w~U<Pb)Cl5)KmO4^Y^E{xU|hQ33Gnfe:gFIxXYIF\^g.|p![qK_M7/+^~"r_0߉Fo[6UϠw?>Mv7DF]eq:z J~TP3vVESmg22~ #*"/˼3'U7?]&؄}E!m0&VNKFZ% 6--e%,'.4@*fUݮ|l[>nlG^slpy8+*d?7 lL3gWY T <';&'?DCh(Fz6%CSQ?771Rچ*6hg( |qh^Ct7(s yb;hIcKSW󮂪+DV`oIb˔!@gR~5wCb1<Ŕhn#0!L$WOݤs{-Pէֽ7aU< |}+yAN?f..Nu yESl?u 8 \r]fjüHx 6+VlT4ZLR,˷A{Vc2={As74 ':~?Spë+IRp"t\nWBO[āf>!J@qT%?3BJF&SQ oۿ8ֈ[z VCWyPPrD$ː YM)?fʏSdDe[j2UH?Ko{}7 Ll y FCȓJM DҁUH'4Q٬BuVWzR OG*7H8*;o^O`زqf)祛梃} ib;䷺GPt]c-X9Oiϧ!xnWo}ˣ?Gu`Nځ64 5׊^9 PV%bl|dMqV@ BM`[.*>ί^-m2aUixlNex!TTZ˟T^i+$ߐL߄$w!qĕD/RLms7mǹ_6?y~Р)W#nEugB#r{13Eh5*.D鼃uftXDIQ|EDZ a#h9EV-|Oa&8ڭ)w;rZ;2tLAp`.Si})[d?B2!o:'Cr4RQ흤laOGTn]Y?cxى/92;v>䆞2qđG`a 4W _M9VgEC[n^KIJFӳqM`1`Փ+^&S<8r=g@V﵊"1&hůy Uח7]P=?5K9Cg-_{&1+nܜIZMG^/Q:87Wܱ8"shop3B&$qMIhNvf![s+ҮLԊwh %uzqHfbY4,EsBF2nPVPmVВAU}f(jwQ;V+'"Kݢ3zd[s\i".hryxScWW7MFϯv:ö_wn~!]λn.%Ki4Q>9ұkVϝ?wGG116tt|~8af͑rEϣ4VսR%{c" g _UU)(pL>&;b[Zjr^ Z^*3ܚs$4Z͏uN3[nT}o5Y8$iHr jpFhQ90n5ufCd(rΓo fb@Q] H]- q!iW*5ޞl=OSᦖSDUJ|%ӄf\=iV=;o%')OOc]wǓ˟'> l޼Ӧ0M+'ї@9=T*5xKܝmrC048q9=a5&GI¾6}T<3*jޒhMʼn L)S۶kR1y:rJOvӷ+*2fMVԧKZcfrpP鑫M3[Zޱd3o=VpQ+™2gջ=zN팔66 ' cLͽ2s["#ʢ7W)HLwY#X(h 齖3Tlr4GA"#fPu5& P W@ȝ'U:8}UïvAr'6( q!Cw];{?70:#])QmKد&mq[ow%ÈL y<)2L4)# eܩ/C7nҥKq'#<: s>7Mxކ:Hok"w 02C`> btO,Ls=pݛx[ߌ;zz;ڋ(#+_2f/yLһڷȻJ^7?,w@\!讘ShnjS] r*最eJ!XNkfaZֶe;翳1\k9>$D! 7%QАLdž)YTYd\'k,&bQܡ{'SEmH㯠Ca`4FAXZSAsZ 9(b]譡eTcdt\FM{챺{!*{DIҵa yccD߳gaW} Kƪ87|p٧:\+|s_׾u4ǶW_D)wnZS&ǜ9{92*/xǵYa8eN߄tv%v2ɉ=yjYW5  ck> Uٿ*xOc?~.]8)hҢ^\/E,KT*iZ"c(p4wi7"TίZ{]M4G SQ.p$ ;Pdޫ ZwY.Ud+&dݡ[RC3fVwVnB<4ôiSu>s<+/<ˈm VOhܲ9)Ӄ~}'u>ӸN'WݖI.8-4:a%H3T P]V^U 'Ң+)DW?Rq-/'=/Y}ǘ" R$D;;J @4`?rN'0*0+G1F^lLtD%wDYGS $T:8IwWj]:kȰҮW9=TꫤAVn4gTL(3j2-P$w'RcltD/F|Dޯ|իh‚Od,)zaEZuE2cz{cdbt9cU~52;aT8"g=5'䵙ʆ'yɝzAdWQ^iH]͡|$nMQzfһQ!J=A)*fꡣ ۂ(m=@v¼DN| aC^0 ZtSfyg!~#}k2ӂBhC.RhUOʹ)h+rq7E͹Mܜ2MV&+,R>VӅrދ^Mʈz\0{l ē^իnAM:v>aȊ;:6֚)y\ n[ ׇOE5ӳ [I Hy_l@U.CwGf£PC`QxFK*iAFNsQ,32\u L D]5:&<}o00$1^@:@!~: MDcςJЀhb=u%P-薞=QtSYI+IK$^Oԑʐ[^FUxSƗUP1rL yƤӪ*M\MT%hlS_9nPc2-\T!s{[s!tE?T+MZuG-Z# 7/Ƒqk_8?.lۼQF UTj}H.FNtϜ~0q;ɵ?&6lA; >/%L6*33>0C9 Eй|kp Tp'_]{WWD\`p`8h,c5~y+6hWAD@ͼڟv"oQAt,Mdzv~h@e #6!ߠ_~vylrݑY/Gk|^>1#m~lZ^Tccc9fL[MxٸL:;ЩcO>%X_𼣎1!>s[vCό8u fϜڄٽ2EF9`}|Ϭ]Ugh\6o?q*H@A2{E<{ aպ-:ep*Z2 Sa4w`ʔ>kh;5#er[Eiۨ@&R\[Debc&°othtUr!P+im+2 F(=(sAM `pAUԗoAx!rPm܄R\ϸ7FhmM%w!Cw@G!J[51YrDۘƸ4ϵ s2^{bݦ8b\:?/5w߇ͫ7xpS׼я1Sf5`yv&B% z u #u, D6OcVPU,q3=*(@fwof>Dr~4"tNZ}01=2V` yVaF%h?*mUP䜊J]TUxbɒ%Xnr!˴'PUcR|ɋ?Q@炙h]=LNʳvW?Z״*ѯy nݢو#&dDc+.WWX;L[d˨Y:6XKi3 .h4`?(J /Yރ: -!nn]ړU=O\YEt)7?SɡJ~W]ɿk L;*\fMZ;=A5jQR>iTVlyJG8ju-GM2̫q y^1芔i$| չ\O? f̞cnXzXh4CkVጷ)1t{ǟ F0mCdݧs?|[K_v".=F*2.|I'<{ />Yig};p=OW=ScCq|\l:1ɻKys[/ jkI A>Yӑ6[y$Uj3Q9L<#a09=/Jf0O,Pu 哎]%< A^.-YimԪNt!|kI|)Y ? oX˜$8c=h+1D;# A.r}$hs0ϻq̛;ᏺ+e+a5sfϧgWwOl{c3`:.:44džQ՗\ 't˗/>ZڤcN8P|x~c Wޱo5݁`ٳnLdžcLJ=ЯuKFE5UkV㳟.\gV.ō7f<.Ç>~!-&\&$nUVƬ҅ m5?_M"ap騄0jBᤲ\ NE6ܬ8Iq(=w% E(n´fȠ<="v˗9D0\ S C X󌜺4=G]X J|8;|*Wԩr!Öm[P߇rע%WWB*#Z\;^G5JN0ɓ \RG~߻2OU#w)ISS?^EWc֭W/E^o}8ͯĆ5k1|F}g,턔Z~[f}/.<&9.xIo>G9ijc&]L]<(csl7(cF[>%8/~S 3ڲ(VOn"dI+E(#1R !pfR H]ӥkՒ-_VFBAzx#$9J =YEOTmhw|.?-U8}CK-’CmwW*ZlhΞ~WWU>c:Fe4F__;kj;l̞;'A< <.Cb}=Tqᗿ1r2ko|se4q vk1n12m =˷W+xG+va% ~<'wJm ﰂ47ιuj@ I9sWirYD`~;q.5z|'d wVGu4w〽T]l毸'зhObw8hXn{KB˖-AU4d*AO-!&ǦMp+NEVŒŻꫯd/a5+2P5|Wc#^{@P΋ʯe\/ "Ѱ6DՏijR8k<ݰ W<~\\˟b 7TLdbߎ9dA?:]nrg]v GJp!x[dJR7(O~3-_u6, vC#yv?_[k"II|uգ^h6{N&&BQ<2n͛hgR0LVɾŭ7 :ˁ3ʰCD5̆p;Z gT*;!B66=ʈ25؎E> ^>!jU;;"@x"+;dxeur3ژvBIku, \D˜@=.m`b'uUt|r5 OAopݨ?6HR i5k>8gnܬ!?eI>['0Go]2H@ BCx9PؔK_٢0\?󢂈~gNM_ܱ u)(=Qᐜ@ah0z.hZTb *S2S v`L~'`9VN y9\d^vc)ظ~#{ } L2Ǟ-s=^1}w[0Ī'dq~^Ȁt L k|3W'p\lƍ?'W<\%>ףeAwOoY;ˤ|^Y#J p Pyr ea](ox0,M]q)g_=:c}1k"=7Od^ tv\CJn3uFz)!ҋ\TR!/}][EkyӴܹhVBXa -% 4,('"I*ɺ3Z6oE{vMI"»|Đl1!΋"߂hBr'fse%FpFЏg̥|8tDS=0{IAFƊX!" #:BC_ctDL6Bk b4R>9 'MF*(,sfBv S.(NR<$b}U8cPF!4kOD=Q_x QhC`.Ը|B,Y> ?5Q@wK:/zq8K>u VQى2B1^tLYarT& 3Bϝy 3u O|:eޓ\~}JB8C٪6eZ;$Zβ2PS7#iPY*;Uʘ ͼ?A_q8e朡ϸ QxlC$ EQcwCn,utg"JiJ[M[:J@0A8f͞ozq7eq2s^[e:;*=od4r$ Ju`E&Gτ=,<]Q>7Ɲqe^ Wҡ0jYwiP DHD&Z9h##8.֮D(E<୬qz#[͹J;ed(;̶I&BDү_{D`/q()̟F mFqSų`;H7"-Fyl˓z`gEc"_*g0kBw. L oE 1ԕvWλZMϗ=j Dx|YgofEI^(N kiq<%(,*V3a;h?LH$Ht8e3m.Q B!"p mVy: BiH@ x"$ْYXcvUYTԧtL"tdVzaVB$_Z*{"Uo_][=uP2h 9?V%:w~2{3XZKU v%sUgKXTY$3'O!-A4BS,lrVu͕7;Jݍ7vgd1+r V7?Fg 8xsVtvGJn.YzIlT,A}EȪ3 \MrkoxDc,2H,%vR0L"tH8BQ1/n )IT_kQ]{gטŇ4:W:ukנjV$D^Sunw54s0qTFa9N23zLv*xbӕ傓vGߏ(W )#lv1ahk$%Q#y ,ܸNhNǍtXXutzv܎e„˄:y,.ϓ y6&DmQoUy) ;曑Jym {VI5PЂ ϥ>SRYc.[[!|Gס~CK z!biIuK̆|Q AU8]`1$#"0F`NY}ƌХ%Gy9<evs8IEDQ9&J5A"aaڞq;0vy8޹)b cp). ,%u["*3"` mJAJ$Vvwq?Wձo[V__{;cԡnB1Wko߷>#Q/͎F1Xn#ò8Fa4R -2=!5M*//ߓw* A"-QPŢ"ܞ5_M&S 1,EmBA P"/Rr7V.J, (p]JC,Q A KJ"8'QX$E =+[B{ZpN曎 |E{FY"p EEK,`)2;8EޥB F LYB_ފ:J; B1 0*(Dq5v8XUF\GDy|MbY9q'YV~'AG&Vjz٠,%lWt^,695+qDu YЃMX64~mO Zl"rtu- UuZ rCBsy\Hzm3문G &(@DC Xh;ֶ̝#ȊC'Bq(YQaHQ-D+-ehN:.e;#gR61+L,#%<eF>P~B(epg3MRc'@TF$I}AQG#\zdkYaa|y QZ=*}mH)0_8,j%Z?Yz Ba!`QMb Mpi EX8#`SfDPxend@HӖDT_cIdAGive1ⱚ(/AȻP`S^@U8)J\=:qÞ(U.}ӝ5kq=~[R<(iV ̚#`]X=t]|#kGz@w.Jp^Wˡ(0#%xXy'uWJҒ)MꉩA0a4d,te$0dQ>tqXhGg1 Ei^ndhk,[xYs(J:gQVC=B c7Fr?qxYjڀ"E4Z3<3ϩŝY̐ PD~O=pHAbtfPo< E2jCL+Vm*QXe;{/" Wdn v_61̞cfe%Ė8V@CVln"`vL" EBEIءS6Q؜ U] ,Vʥ2E&*$OjBۻI "e`NKnNAe6Q E=>I^$,!f07H!b5zGrActav,yŌd\˟NF<+c*媪̅g&=hS}"ry(!Yw2ܓp‘fHdc ;bk"YhSŨDaˌ 30`J3pa$mgE+x>@F"pDmf dAf.!.BOF(+b8R.ǜw,,J"\0-pVdqڮR $[Aڝ~6|+ZSt~[ؠN .EɢG,=T3AE2""ifwT7rSPĢ(d6JHqq00Kg1v90Ee$0"Av\Mf݁bBzmjdY&LU6,R)9By8],ҝVV+`.D8x28n;/K& u W"ЕJ j8S!-U۝hp 6+" Ъ$S&,kO:wFF ^M\YgZ[_^=G>Wɯu n ˒] B X cb+'}ݘox̂ZtNOA g%XB3$dkSɉ A7##j`Y g/d\'P=H(O8'p &9jFǽyɨ7#j ce4+e/eWڥ}G1\dr͗}᷎?`ޮ. 7tn\ccOo?T_^yjV i#cu0O 6ck߮{ǡ$)/ >矰{^<ntqe#hA2AAYHw( "*faXDz>D ( Lj/riL(ͲIЁ6h)@aqDX :СQ)eam'wCG@7/5)tFF!Dn&B C=zV6C6^9Z `Ed"}Y TU"[7;1 U{puO'6UKO;GQnȰB;[CH8l?GסrelqBtJ\qNX+2ПϹ=qЯ?)рżql Z8adHpIXC,DRrhPxD1׻/E$('wѦӐ ͈XUf|HG 4/mN| wz@vz?BiTf>9*M-c7P<%knn[w oiH'0#pWsƿixkxgCT_. F_GRXFRv<°J}yI0폧zq \ʦ$SۢzAgE6+W0i,ZMe#sP_ _zxw-i̩dr KkHm? "DGI,"a:/(; pӶ #cjyN  qnQC<\`_ûk:t/ f0:B4_=,"SRN(`}31 )`V ۆ/ S*G/˗N2mGQ}<_܈ՎC):0~ Axr~_. <UE2 Oҁ\ cRL;WĦѼO z:@ab5&ːa y{ޗGYVV{z`hD . <2QKc>8=EM$8ė{1$j3$(<E@fnzsUn{gϿE%MO̔=9KդW/FP^#ݦz' { !T ${/^ /V^Pr_#A9QbS wK&ׂAVlt9[pP$Ps'VL*]?r=#5!" ɦmsvW< -ݯ!=l&4wg.Wφ6޻.߄O5ۺ^>3ܶ^sfx2U9h:cVEљyĊxws /X,HoDykb ee> 4fC ԏ\۵^]a J!]`L6M'^ծ&5#|cp# k2)6cyJ1BQAYr鐪NJ 6ܬŧXѨrdsYYm NPXH`5F߸޵`<)?猣Q\<:V`ˮ쿺oa= ޴q|~ D2\z옔&ݗMi_+tرw>?.MǛ~,s!: oVdaS(]NM}HȥƽC< \' %2 / *K @Y`"7^L#NN'#[ ~qR,^L\&4un*)8)F>2›mG Y]9 ~cT4r˂@i#F Ixm7 _vKF'8Ov. P˪E ƮCi7 [ &DB :y;/o#ꈒNQƘ08V|iNCNx0 ` wYQ(l,uR:,$rPRFq;oeQz<B%ڈ\!̄l$L}#CP@a]rzPӨ* US7_Gai/qIHW:ҳo|d.U,wM+#+ 钫;r9'2_~hu|n7vw`zy\xa<!%Ij?Bv3ڑjBּ՛U@TMv0%>vpiM`1׮G8gj!dF! TTKC@LJFV rMJZތ|3D)qlVnAaM1VYjZGltx:GaóMX= t-x^@/(եFqC4t1ilrў8.|%8@_]f?.KL#}>}]ok.;sj 3?57_pxSyao%.iAG f->}W)OGPIy(0:#icIHU#Rl*w N6rW|Pٴo@ 0.rOiD5dC <{eL #Qc! jG \I([}2BXeUA?8@M'e,옧1}4م)[L)kF{̸oRuKm/_G8-˗ꢰ2k?fhCOl'Fyw?6W>)f| xJk{gbvwo8ky'~q"C`4;n8r,a"ZzgaSse4 S_ hîNZKMF#]s@ƻl{`@dP` %Tc WЙ<]<aD5|\픾NiR6iXaz  `-o[Q]Ot#Ǯ>= XIox%fl n:"e<,X@y{Q$OQN¦]Y=l T˓Qp11Ij 6PN.z&P"kiYCbb)'$Ii2O*ry" xwʡlLLūFh7Û$ ,MT?!W@/*rYo[7S2ۼQSxՓh*B:+y T{1,٢)g. hXי^Ϧ~  (m5W,Ht3Of؅YE&N&tT.]XK[vR9(K5UGiCg)JGtE,7VSGe@*Qg΁vCUEs 4֙5ɯu, IY@'%GH U rZH5q9V:mZTWcA2FVVA}e̜T dg8KcJjސ7ߨEt9yTI*^)(ѵ<2pE;$[@9_ ͟n4A8KC5Jل2L]!U2& )9$3N 1IzvxfUM,g8HE 66FM$|&6Zd =&^;W_(nll_opF;Ď|G ! s%[ Kι6E^/#T5ag~0ԑN#^e,.\֗@HH5 a Z@STf#!S 7#NMS\406ޱkjxf6p}ZK6~8W~ч_AzI8́./RnlMW#mx)/]$g;YߏYAf͒Rv(% SQ& ܚYk}UWֽ ,زuMGu upJuW 0.Ody?mz:{|y84 Q=Wlr>:~9g&\dg̲5~|twvvn?NE>ƾC.׷kˏpΖNpp>.\wyxfz͵p~~? :!/}縏R>y/G><9Sy6IyhBUwޛQ_^ók'5.\c|o>aˎvckq@" ~S^٨[ZI)Ol½nu|Gw7k(wPIlFWAf;兦6zN7(CFU{XZM+Q]4b/j|*7ϛU#->ou"9cc pp ؋r<675٠p&>n] !o<} <%G.F8k)µ|Gm9K9;{sal~ŦpncAv\Sۦe*tNW`f#8%<-l;e}k7?w-Ϊ~NY^«679ޞ\^~Lq멬cg\W'4ߛ8_2Wh5Fz=NlwGZ'+qY <ǧ)IF%Y~}͇ 'vr+n¢X dfΗzza(;jZ*<  *8O##,jGICH"z̳!zӟh,)E3u;qK3-LV6MolK9 7Re7e᝸%s}K7V7%''~K@$nۆ.Z;p;GpTS-#=-ϩv<ֆwR{o&X;p |P:\Ƶ} |u^t.>9}yyc~W eyXϮwo[|.SٵT6چM; 9ox;X7 l]&gu3m.=o=}gk2'?`ϊc.>1>ǔj~o?s ׇ3Ȟ݀5 -'j"[zԠS"K"_$2eTIj 6 +^wbZ”nJ1Cгj*,$br73+iѹ3hFvxS}\Cny G'F8EG6$]qq;gwYN%NEQT*4{/9a!z }{;;':C ApdC4CS~ϰ-m~§1װ3_HkWp;/>T#0;7IovL\ƯY"V._S)FY">Ǘ>O?m^2|J^FMTv68Uk*ܣ3C@y5f=:`s E2a6vj/]zwIK78tr 84>& *VS AM]}'p̚1|&jo^N_<7Pׯp#EKԕŠVbwp1|#lD_껨oq)ppsϻ܇I#\"i򱂑:b:~ys|Sv2,v@8R?YLJ_5gSx)<\uW JQ_1ٞʙ#9Gyt?q~NrIUɯdCOL%ߘ[w1}s.=ҕE E{`wwㆅ/@c=Zk2D\D 0Z\/,E 8<:T[`'.bq.lA9P I9VB F,絜~)ܺ jtt8%7_†uлت=_'/_^Iy.|6ÎU>|l6ßY_|&)aLqН7P\^?Lbĕ 9<E ;!HCil7ܤ٩q:7 8߮QF V%# G?`c GiIG6lLK}>YNl'_F |n|~ {` N|E4[[Xz{ vR*<_7 l`2GijMYԓXQ4hT`ɚxU{q1 =AW4k2JL X}T0z)Pj$?8 jG ЪҨQ]֌2cc rԄLf҆F@9Sb|J7a"!(7{dM:v((PNxb4 D-+nx1d!cyFQ(B *8l rI#X'<Trl#Wz4>*#N`\<Z~֌ 9eK՞H17'9]EHRTj} Ě~ 5 ,7Y+Aw~>-M+l,w:@B8v4IS]y@ZmH]k谼v)էr@N~`j>>]񝦣S/W ;`0FQĮff\YCq<"8֐i ln@eGkn*8 ssRN#סfqόY@1rs7l#\6T ҆ʲ}SDz+v92Nbp9hz?+d8<=|] ]9]ۅ0 px~8kG?NTM4Gi {u4)G젢+NYώ`5z և *2fI( B%vRf!PŒ;Tcs15Ds/ 5#& E(_-(5ZW-QG÷V VSCzP>zV x(rX]M"[̎TTtD(̨K*Lս廢c:պxza>TT j?zQuy;jaDD WFv6L CT?`>W赥eڃ.~a{\B?pfCnf6ʌV[]XPbU htvnxXY1]Qi1ՅX%XhS+KF N@t5mRcIX[_r{q))SD/(JӇ?PڇeE-K<m ) #lW6w4Orp.<og=\py1N:h1=u+B\t_yI%n1+n>X#`["27w:72e#s{) w'YZ+&CK69[_/Iѫ25 L{Β|h9hR(o̤-aBrI-*n~!ht 4J-C8_%'nJaU":nXoW6F0\Kxbzk-\ۀ#V\&"T^I79g3&!df05Qpj@v};X}6ϼꀂѥʺT,/HY>GG*G|cI Xi 5\EWtpB`$b@#pyS GsSp ƨPgzzm>_^Dg|3: U_ӗC̎-zs!&~R0߻O&q )z`$T>ﻧYNbtBj=?j)|lNAɹվN_^=eݵݞۦ[J->p`(sä4vvz+&4hfTVM;,T@9O9QLL{#0 4uLG$ZcGHHbU[)Q<f%1 ̓jYу9 C CR# 4Svcnʇq`_ >:%ْBPTk3=$1Me1y=8snXd$|~k-Oec?8~vp~37rЇ@7 5U)YԊg?p(Y︳p=/X}yma\"}\;zp(N!JB_w/5hɐfx0FBlQKᑩSߎVx}}D}O .Iu)#g nFa@B5"-34ȪGE'm*hm~d' >r:CvbLWuŰWqw4&4I2╅ 1|srL2Um1"181­l̗A|e{6rt>qYEwG,싹?g(L#\ׅtcWr=/@y$zPש 7VpU_fBe6m Gľ,3q\v=sxp@7*dNR7xCkC5'e>@/@OZ>R|YrSh8XqhaRBgdfv`x@.;zN5A9e`+R.<7=Rm1~`'&V"=b&,i` qұ2R*Å0AT_ulb$v+d{z_-|1g6NOZ6y5ߟ#3gv\v hLlDe=VoJ.Y KKS\0-B$mG3XXxϔ,߼x95~8V,^KD랺yCJ GnPZoJLOJC3g@P '4G^R梯a</Tz*<;zi@m؏f(d~TG#>1fffaln~۠fE*MKY?D>X~+}Bߛ`WdHH{)-5РRAh.JʏW[:kp75c T~J]HJ#$.#&)lAh9-Ym{Šu%6Vq06;^SgBc؎ yXMQٚx (J52qa׎u*Cem#Sq ΫyW :z.h5*?c!rD>ZEbgn/ Q>Ą3qEA`3&tı? Ӌ~]g^)X4V&Aj~O C(%ە8zK]uܕ} MTDѕP9٫:}'嵡Vdj=s ؙ#g*Vj"jxYDR&Pjcw*aBOn"6+HZ=jkS>TfA$>KmW3ZWɛ\Ɍy@ZQI|3kaפӥ r ˎ-ʰQ]\&՗%{q%3CiLCjp؟_&Ǫ:sx46,2BRo`e JߐlDvҩo SI_Kc)jo&ЩsƩjyZDmk:OLc!KI:sB7$–% Vf31UU Lԍ0{}c2;m걾N Bk|' ZJG?M™)#h/7Z`鸯RxiWQ- F,TwL{sY0r0hVVtnʯwkBH->0gSIeୱQ.ϸ,ӛҵj$S/QjyY9k@iQ*Уh?rdᖬICwIkd:s8@4O*BH>E>nyw :%K^PsiV@ G&2ǘIJK?FTi[gUl[Y%̱ .w莨6<6rQA1ܘPCT=&J] s@ hp n걨NPSQt Vu &F뺍T'4Uل5 h?X; Lt#XxFna¾nLH#&17e|j ލ V5|[}Q3ۡ* Džn؅5x\̀ohFeZ+|f  lҫ^LVwX{/2\nڶ/a9:Vӄ-Ezs/Ɓ=$C:yJM 6 @qR5?ޙJ1c:neĹdS]Գ0\=T4 Z Ӱޑ32ʺQ5:ؤ~7Eǡʁ5Ml`f:eY"Ѥ|KTB1݈5%+2 [bCCZquȭ QzWKEbz߱h`8)ޕ:CxB;&fF#Ќ~wf63/șspnaO+'yך`(Pay\HqzK"hh܏&N5&~r%f4H*-In<7&#>3)P!LI{v>ިlRA&X 71U̞RqwdҺ"ߤkkEk42`2Bg2:=@/**rvٕz&jH Zs1[t:xli#?I4׏&{XPE/@ 5@>ߩ|QEVj1*4˓ȧC[ω7ǗVɑ RV9k:?t/Q9W<}4@eAFJ;W[Fn^dLs#dFǚQC5jl38WD7Uz`vQhq4ov,X:$ ]FB 'X5W]"y2x \TWkOT{eo*ڱRc,/ژN&ӽ]1)v;c` "K%c`n8h8r~C`l|YbݿjuσT_&yt!2ɛ)YotD Pk&"MߌW03 1TnW;0)fjXYTԬR."~L0 ;Z#&HYE߹5dKi$ץP4 e'Wm-R&UNWcWZ/@ohM&Ttq8zSJ0 uy ;)If_/{o&Yvs_D䞵WuU%ԭI I0lY |0f32c0 ˀ0Xc aH0}WUU][V=s]Ͻlm4)Ugfdċo[|3KP*6[%EK*blJ7fZJgT)v8vv V SNk;wD,g&m@Bv6D=k).XIl#8|0_%;Dž|(j=5v!p%]݅ON9 =q[Qxq`gʁGP׎ ._ew]ju4ʯ[m8? 'sCB伟Q%AW=G*&/& YuԦ {^_Yb-wlA(viK'uP:p2\q{*3^dsEJ'x /n_^Qͳy!{+N@] m e93AOy' Bh@w14M:",NY{L`p6E0(}Tr!K`,_+e!BG9ڡq%dUSucة.} ;aڬ{ÖkCAj44Ķź &qI{E'2Jy)ь"pKB 0,6T_`C$rxR E&Em"Ald ]€?NqtV2К-VLԔ7.4 ^'E\{Re+I#TI2II~y9b=V E#yW0/D?ٴ6,A*{Baߌ;ΫCCZHgFj!2LRcܦMt7H4,۔Ra;lڵS<FӒ'>/o{W%6N9 *X@A(*[3Е<3,*riغkPXAk*^,wA'B0t~7 PMZ#rSQh%?$D͐ڌsΎaQҒ_ަadZ~u$XӍ 0G8$ !cV,x!%  3J)E0 *Gtd&kd4RjJYrˋ[$'@'嚉&I:,4O caSc~ȔE(kpFh|>JG["*pcS IMu)e!=v%) W\[ Kgh~1$Aoj /ƈlpO`[TjfЈkE&P[kl&݈r?ZCkvbzn__]1sYL9.]+@Wv7-pOKv&q/Ё/ 9*R}R.ȄIaDfH쩴B`MVGqk )톤% 5CyM Urzyi!Cٵq($RDT k^ciD ىGA)jaފ>HsK"C$<7^C! YdR SJ B Ge(O@ttB$1|(Webk ICԠOժba=8TY& V~*c 5Hbok'5gAm5B0 j ! NPs{]K*x*~ۭuǪ zˠTm=l%wS0&AB!h*KdBP}vkYGm,UATz*ѳQ$T,b̯ډNAjɏ<. 88H^ywe8L CR"؇n]G lB_- 1R8Ó\3a0w哃=^7>jrJ12c bI-E~I3W^ܓr16'$HM~Wޢx.'>HEiY9/DCz$S2g3cS02B֮TK)kK7bE;i 0E;QBܹ1烤#LCB1H4E=؞@j`(h+ UHMJ:" vh+916)07m2{=Kz.>Zz> ~G u7f^m@C$4k?ec@] -/ c+hHVκ}(2x4C40R@ҭlɫViE˷)+}oCM3 !(]}"@]>9fۏ {\s DwEoң< .ZXvjZ`f%7`~@>${Z- Ķ&`ն`I )R0(Z!>!=C19N\X$GRd2b|`ͬMRˆ=HADjAzR#"IQ$H(82p~[%(4<{ֲ*\7BGN6ATebG@ RAњ(EvX`_!Gg\?*C^xx[Ͷ}@~|[3uW̺`_^L4\gtv`R%=i`t s=g呭(47SU*( )BèiADOLeP+=}b@(qNi '-(dMҮցBU1 UG? *u:°(qXzE5i᫦ &F_:@Xng~=*UM*H \\uH؍\p|+y٬va}&ޚG4c;,}T~pZ!l~tERouM ( m(tj{,hb-K4UԍD?U~T *2W5r˒9c0@2=VGlT٪r j_r}`|PωR2vWU`V@EB TGnRN|Рm}GW_gk͵uĔ槷4 #7xWa!}Vބϒf*/`Λmr4}}$ O}hc[Y( lkrp+~ ?sPڷ.f>$ { ",d#Iއ"+_;]Pӭ%+14Ƞ?*o $9%RJě VԆʳ_@h\<%”#~[hZcP* |rp`sb{ڎ %|MGۨiP$Z)J @W2s֭휑;]B7=5G:E麄")YB/%P Y '#6:j%~hl+T%d4uN`$cY_$:P˅T(rZ^.< R6n_,x+W]MV-J,%ٙ$}TmB@ WLC&Ii6Paa' I؞rō`*4%[B~iL8mjuBz)2PTZOxfA$^!eW1M uKZ$a"_snُ*y^+y枷p|V߅W& Wfp,A;9V?-2S1—v2I~0%Ѯ\D0k7ee$ v~(kToÏ$C 'Y(\L H,Pa8$"8V^NVvLBXG*ټgC)BE!q3 yH nOĊ\czd$J4F&B 2ɠ$&$'] w<4\LEU"Mk+a 祂=ᯆpAU_0n"C٠  RPKp&| s^69K Mif=$G^O,Ig7 dcs\bzc'uè'aDEȮmd,*;H`I^8TRĕm.9i{2s~f2/F!f:bF*%jK0ȫz(%t{cЩ;yb*0[JD~ȝ^0(cgmVlQCb#J)腀H-f,uU*c9e*7lD@#.]C3sݼgY\y{?oF|Œ_"z2=vcaoyXh9ʪ+q&'԰3)=c6ORNSw:i2 d:$%JL:{%S= O5e?잟U52&Κlč F?@m}+.:( iN I ueU d {..[̋cѶIRdKFv˱ ʎE[6'6Bď )) 01{_Qág 4!56'#i,8.ԕBFAz59c:9& (21i^\Ӽ2dn+J+XyS=;|?'%ar*H$ps7-1nJS=y,iZm5J-0׌y ), hq*%;Uރ$@ݱvIAFtU qO-"Oմjp7*t `~P<^E Y F W-Pn DB)CR(Ă2z㚨E6`/],;_>ߋ"K}9mX T͔@iPh $"9f9!PK:M 4=X&i%)D - hP;$)'-(a,**)~#7wGG_k) n}eVWY wc䚆9%k@3Ϛo?!:cm$E/e(?r%h1MA . Yc$Ifl :OpI /^;!K$y#s9C%Owt ,Wc RSzG{;*a{S54c f*UN* OhaXip'}ϠNVmYdMAERTQ/clgRYgbHRTb8z[ | *cp'H?q0GTRSx+D8\`9lJz0L +XA9)b̮hoc!( (A)$M*$0Lt)qLucpea?%N T+%?wdTt !'|vDS36!Β g719*UM">gfDrIK|='r]2ܻkk&uN_1twQMm[ԡ?FJ*N$?9F #J*TQ5端pB%By1"}uEu5LB8/UUVS%JͲ5=Kկv`B]Owi !Sk3*Z,Sb6KmՂy|_gl.3.ty_QUP #v|%u>1X2">lhGZjLU02 +WۆLBםL|ʀ @&c@X@Y2`1"`I 7]+f2Hd ĂB8F:cRI cT0-Z8hA |سk",Ĉzs+&,5Pa&Xamv"ODD4$1 |Hк RR( Wo81ܶkx[ݗܔó' n< FW/u'S@(HtM2<-/& 2p΄}@PV&T:,U,HlD<$Aܐ +Crz ~9 mbe^wKl:fg69 OY=ڀ= 2bln?TzhAr}RaPL' >ĉR2)p0md Å2"}`j{gʂUD[V, aڜĶ$ˤB.,ylCSLJPPk3#DM%$mO>$h?GpSB/rsM-Qb2~#E]"!lSx> &Ak1=Z9fEr@ןt}9$_RDcJtG:'G7TLp*J GRŤOFI=1*X$Il_&Z֠֜"F?Cj&q/aH09܏q[T1B)Q3qR\Cy%WvY e[l Y+qBO顧ow5ȇw6u͸^in-oQ%  MRJj<Ψ%oklVGb @cJ:/v]{%ՌZ8;HPqz}V .J #i&Be]w*|dE?Df.lbudeIx!_Le;>IN2Z Rp3@|`mCNs=Gqs2"̬W-t%O}J\B >~祣 UQ) rOȞkOADxrd@]lHM՘7DjWrA)Y]el [[T(tm9,<' ƝÌ|~ܚ#MO^3F{DٙOEc>rP& F ݚJ6cC} Cs/Fij"m~(h|1IH:5*-c?@T'(ZNpQqD+1 )|𿉟,N:*o @Pk?) EAՒ&b ʨY>`ZQ+љVYӁGb(צO19IT" Q=,|1G%W# sƨlU,ݲ/bQ,'c%"@1߶9 #0- kP!dc ֯PK[%B{$>3Ά=ɟGy\ua~z^qj~|˛5g-~]$,#>|"N))rDsݥ(ij3#H7.)[Lhy:CHUw\ mhdXs~sBQ8-4DAd <*1O|V{, ,VTXyDkд:IUSkKs/P0?j9;E¡D-H ;;B263WF* EZNf(Q"E-dMWP2Pp'P$,#c&I{#z,0I0jTq9QǮayHtL{CO~)}B( KD6ơ A `Gr%T+P pE hDpǓ4nUJN+ ͕`NjW~?ö!%QN=_ʏs M~۟Y22+tI \Om}(ǖf܇A)̽@jyb@o~wTBVQ[86 N2R+ID. VgM ?vQj?&ߠ;d F  LQ(vA!ЯXKdx!p 9} 'MW =v4u?g[ "5?OFf2X20ЮEeA 2 PjIzZ^(v_~ξ˔K\-GNk`8 \fgäbs>=+yooHh:d'Nx݌& Er nC%2͖ېKOBxRX PP#%pV#ՠ_ Kqwͣj*b\|S8wkVWMX_iq0j&hL0K`I3͛LdT}}u ,}ޒ/0`s ObcK;QxCOSTIhR0,^%fn j%$ B!WW@# !qhcl~("!rTba>$B荋8*&B ksYö&!O#$pdDїƖ$HZ Kcj $>*  .ZN`^=VqYJ]v}Wb3怍6:qöޔ3tAHj H ay=[$my4:[ꐂuP?=6kWN $[O( &ІeG>$%ȿۯ\s2fM2~yλoU\d# ۚ(#O&b1(\ ˩^gХ\#yﱝi^$beARv5W}+exڋa2+k9gV6ڦ9/k_a?}Bj}!р$ #+M؝`U{=kffFs9s0; smWS$!1J? @` o[C# @xL}ŬYw3Hk(Kک7no|AЬdgUKYY/q[E^xX'ff3RBZ1Cn-Y<6;|8I/ڐMDr $'@q|$QP >io|knYr6'owi%>Yc'_;P 6{rT0N_xߎyu$D,r^"sim:r~U [pqs`*+XѼ 'a}Gz,,^Ė90kVV~|d^Ϧ c3k z1{Y&,AaA(SEwUz(VNCB򬃍5U mCD4O<|U;TN) g'lk?om't3FDJ W @U8X"@N2jw K.r*k8 v|tO#\x~c/@*(Ms˗(Oz_x%WFd ~NOfV*Zj֍v'unb+x=݈Ua@W:!^B}Zh aki޽w H{|쩖,XÆk DȠ~Ɍ|d*Uxǟ߳zӀfO=1 S0;?|=w]pv0,npd6~^~a<e_zv n_ڀkهfb76Wyd^ m#5<^v>ཏ@߬ڷ8+cڹ6 ,rxruS.Y,cL1ԥhiS QmM~TL^h7!C(6(oMKQxlɾ # W̱v;>~0튳 *&hTdzԛ 5&L|uOD\Me&'.hzNW/'Nw^Җv&vG|z9^r~9zCk UA^wpLx?1иd DWVT J.$$Ce* mKY~<rDzLiu6*>'fӕT>e'o |vwM+!:Jtȷ/ڣ0Yx'̂ ~Λko?7Scغ ?ڧ~_~z &_]/~6}̬~=t%sz'5mA߃30c ǰss}MGÍ's_yh {}PDJh^\ 3 ) %q%e6hhvá,٫,Z-sn0m3^?A6@K4"Tzcq|ΉoRʣ 3!£&p C`oq055Ȝ9FDb{W'|P] cX=N-`ʺ91Sھn".+$h6h?1/7G=S O$($ Kr?hmSI>=OyB]{e+i"UT'"Ѿ)jy4V7u$SY![yBcK?VXI/YX9gJ™~-3?įEae}WHxt<V`2[?πkV/y:|< .jn?[nJ٫&',f`ЛiC .nlf=kܭ͠o*&+ۦ3gcÔlByLyǯۙ>ƂCny~~d{/Kf8| Z ~+g>W 7 Y >|`L0&u艂ܗ8^?T X럃),sXWqZ4]Co\CHI.`p_;i~g762 ~X(z|΍IS̃ڧMo]9p-l<<уw+_as],ձ0V=8 /z07W!8vAn\?T6pGOgLP[O 3.m1{w|4~X1A$p0DQ&@oxl:m*?qA)j`K 3\{)IoZz: dLd4|"zy-xp}b 4?m*5}|-bs\`ŧ7mOV J ``;f= f&+|*^xz?jaհL\s`{&x5x;)2``h`敩yNccqLlA<b%o2xoLǢ3-1$$^Ygݳ]3E?V,O2k :j||20ݘw&M:4E>tޡO߇6 eq_̾0A5z_K| G?ybE*XeR$u͵`\4&]M Mۏ/  }{a81ͫm[_s[М`n z36R߬PW:xR M8? ueaI7"1יX׳E yG lxIm/E=ѮDWcG&$N{-VUs? z,&:-/x ߟm{EA ڱLTf4-vӶ%ެ&(-uPzqQJKhIy''|0+ƭ##7py;G& ɋ8&Fܱ-/lkPC; [d~?t NdB4FնpHt/Dk*3:3C)^ |íUm (o @?cI['672 Yquř&@`z෾68y'_r ~qyh'non`-n0kJ2hy7ge8ys7MIJ&1oB@ !߿wy^e/o{o7 nXg71<WlvFd%pn7_߷s3~c~.KejQ!L@ (_ݙO#5psۏxkិۍ[NzY5x,ܯ1ߌS318*m=joP"T /ЄcKt@9'm9sL Ptq3x͜Cb>as=-;r(BZjSPLm tn'A{ogeO< m{k[n!8>4_zTeĜ,Iڽ'I+z<t*i;a# EHlpFk߽c/Lucf{{eS:^ s4˯~%xx ݟssa,e3.ÿ|569:[-+`𫏛0>|.woeXp_Yg_`_({/ ۮ8ƻ?~O=bg]u>'|?)A eEf~]p F<ڃnvs߾>:hdΛ%>~\w=lU7j|&;_s18 Ͻb kbs}~5) m)IyCֆ6Z4Uj4طlh\ꮉl2Ys^j렿}8Q[,xcxdcdjq?'z 3#gMe&84G3f47?on=q>Yxkwsǖ-u3lwj~t 6G#s<_7skwW_'ga%;V` v lm܃12wN Cho5\C&~{aAa$Y?zpU V<'Y`Uozrkpvv{>l&{=c01$Ԃ~ms?_H _O'(80cRgDtDؖenV@W3;<'OҎ<8UAArW'*ļO!^u f9B7F֨K: ϛ̦ɂ]&˃bI>ȱs.f[%u>qQG]D{ʠ j|3?O'&I6"VcL1aEG҃( >7U -;xܥn4d$7 ߈N EM^p9GyǗl5sDž-W60c\vÆb][1_#ȴǔI&9Wh Knـ+57s030oU/vB<ۇMؙg}qP R}W<r`.% 6Q"6&-?z:YB)Lwn[O?rf~(̬n`k8omRË涣[}n֎o<2ǵjr[buz['H֎[t[xNmo珯;8~8wg 9`!W$G81aiLA8YWXV m!ODyEU#CbW~ej)AcqZ@8fGWC~OMʋ$1ٔoU g4Hp&ĵ 8ˮhbT 'm _@+1aa2%!I)i3Q;7 0ׄ K!s>NAuwNvL G5hߪF*t# x#]X yf*㭰⚥U_ֳ&(2àr)@>b`.֨d]'}ǎi9©~ M;wv]RJDX^ *!1|=?sE(M'F``])h)^O̚˷n"/Za@ 'm5p"J],X*'mE5> eAEVr^@sxEђZD` @g{aKUH㄀cAE/֞H:! $Z;"ixhοgCz,n- Zs%9v108P0ˑs}ȉ#3hy$}UgA\­ %a"fnNCI^%6JFeWGT91 'zӔƪuQ)PU>a *zϒ ݭHHۃ9' C˜GO6XXX^/,C FÉcf{8&hY5%héS0Zا7)VqJ?s1 @ 3b{Wj^Ga BhO[DȘmoiqo Y%ϩ 虂EV248w|/BYtN'2Lmph]ٴhb 0iQKUF*:::PE=ieCg!D@3{$`~S EmWMBHlCfc ' &FL!2"B?.WaԈ UT J Dȍ&@j}*D g^gn)u7íX`E(ɉQsA"Y>AVF)$[w q?p+;ooo}:\^۲:쓝*.Bgv:LI llUDeS@-$$=0LG,ƾ_$Egb L%Xa=~QH2ujG} *RaVs=1/\qXKm3[:_`2K%ϑgrm]kk7B讑TRk4[-r&G硏{{\19Z65J#M'~,btEm9GBZXkKxAGj:eP.ɨa g] 5gr;0~>ߦ+Xڷlg%/mx<\p >v$W뮇E~z{'w1{&Q|yW/Ç>~& luW9v S{&1xk^ |(|jP|W}%ocGk+h۟x>,/|@Ϥ'pEXX^/җ65IL|=zN8&A'p0;;g;kkkpyc2K_r',d 3y]d8nJZ9`KPoTT(kZK:EXsR|'IU 1ENNDΪ(2_uUff:COcz:6aض=:0)Qb &z$ЫbKyx1JWHIdw]が ؠ Zb19 :m?-Wi>,'.=PgD{h޼ WA  %'6A9"v3M;lUjL 9|2vj:&`h$Ba7kgѩ -Z{=&֏VD?5RO B vOpFU7Dϙ7 wf&6:Y [4/mp47ȡKcǒ^_ۀy}),xcgsgamufB>qsE.]6.^X1v-C{.-,1#Q F*6XIi;&ffsl6`Mvl42i$ZfŞ#z;;[v?EYAb8Pw }N mV`| ]d=HA$`gġH^ K^ +Hа|(h"NzzvK2f|秱7l?Nh88骸OQTE<:iWn9(&STǢ Ƿ Xq3X)cR9ߓ#e]ClGnF]q$&'29Q+q22~b (sދU8 ǖEHc|ĀH rlP\GZ$ɱbrcEUj̇!. 3^KUwSmqzܧrIm؅(^t)L\'wv=~hJ߷+W{s:Hss*4KӘPQЕm>iXA~ԎZx9"0Q$h}Xd.Fgu 9L?zRr6¡wc\{lu8wqn$=]+舃!Pi0mG|RS{a"hr|+T<[N-m6 ג)x_|$X*~D6_[ ׆V@JC0m7p@la#klmҹv@yWb~_5I@w@ Ws)Kw#& "DVj|ܦ cSfw ⩯'{"@!9-7~1IJX>P +b?q-I(sy_'8yBK8Q34 u6LZ I\7T?Ayu&>ٱF{9? h]Պs0m98&?'L?(V"" ]b)CnW8LvgWg{]_o~q,56p,G X&Sp9 h(awsYA/SRw.ʽcG?ި0㨧 3#bS&GeQNDEB m 5=e.ЬmȤl)= )׬^Ї{}SK8fP2k([3;k`va.*O}IvcwCFBUWBe%TݤQ)B^eN0 QPz { B_fR"tʳbR9?@y5bM47Ie6鹳X&06oG) n7,8c~,< '|lʍ$8W3Q%1 K.n.'nD*/XGf=m63'-^Ұvwx3:؎眆-3;~l͉[z ?~= #1G氉(Bϻl0uUJN^t_H,͟#&YaIA{ZkF L\:u?݁Q%1tzv&%0kP<}T=Vkq 0-` L;Ot xT > v_BXi !G2p/#_ƜM.8~d hOUn-R̥nX'~!_YS{ gߡ`yb+=~RjOB?Cjp% /8󙤲8 [rMg]& )z肚t.6=dM+` jxl6q>ubg q[nǠ4A/ ?{'Q~U'Q+ %HH MMD"~Ãgl3bㇱ}ͽ'|c r62HBBqVvwvLS_ᜪ:{f<>fUO蜵X P5negVqb[+!=L= uJʄ)e1X1?phD, Y'%%-%/ s&4kJsZ=[%N"*T rx_rdt3,8[Q=LX;zd|b,ԭa5Uul9ݗ>E?7g PXİWO0k_8g?- ,tdLKy=RfEiȾbK@UF!a貮GEe./uJ.f^Zv~2q)c &lqTG%պcjֻz'U閉(}/缜$f~ @dRaR14-V`ې_`"/_ar2-kGMam]fp"bw웢աK >~Q]J'[ho%3)!&Cؐ ⌀)# ĞRF+R2,y+T+'@u@uϺ&V6_X*cГg#j#Z216 @!pIhVBu4wD ^-\hy/㘬or[z#22-Jn_{8ijr-?[tbbgk# Yr ,<ݶ+j,6jmi"l>©f5u amZp/a0VI7 7"E=Ti˰3.{DeʠgK1]w{ji(P ::&\:U= Z0X15V!lK9 dTTŒŠ2_W~ ;>O7 /ab:៾7~&t:-L]w7;܎ťD/JnCj%^)n0G7jQ4Y【/`hba"QyldsHQ/53s܅uWd̵terYtl4e2t.ԁWv%Iiz{ԛO3tC!_&#[[8YWalHqFa9J/]q%wa&mĜ! 9n<.ui<-C9XqP̓o+'y2Vfq\IH,ܧ*glؗQHElcj،=/2l0 qhYk*,pCDvC~yDl{j@~ 4q:uI xI8u4eA~t"#; e-0cU偾¿|XVht0^ۈ<اG?Zh@ItbS044O}^}xڕsذK=7161%C\$q ƹ.z/˜ !K2cʐӏQ99X ޵LAը_nmzVPT*Ep'Q{vQs~YS,sSE\+rL:<,-imo[,0=_Z^⸊NZJIE~RitdsSX#1nq2(#rlpx,+5Hoެ9z,~ZmX,:wԨ̺}^1L{@-*ǀkϝۣGhqe]x% {,,=/9`d^ Q]W?Oׂ=/p/P\{]*@i ;YmB kG3:灺,Eg0l|ЂNG~ưN5R͑8 ev\4XLpRm?"!p_#5eKa<+P sxeԖ=[D,+}B B^L~H^|d"*Te^[ez2" cGDsaXp&4 h`9=O:<`q~OzsPU\Z%f# TL)^|^:҄g$RMLrC-͸ʙsOO|Gy_"]H%A]=wN"C3́~lt1_ȻJ u 郒7] ($ Jn yM¸̢$fD9x5JteDKFFP;i7^vчY̮av~g>Õq,g\BE㴓 BJX-3c=\>?¿28u\s=݊]):읹= ;~x;'}:}ە2|ޏ*>s]Oޯh,qކy/V2w0ܿal9ﳸhan;~OyZjlՒ~}@> Qi<]_#{3ѧ˚᭘YzIL/P2KoRu%)ڈM.z* S^-ʘr8ѹ-,Th3#++\qQ4kc5.Rpa+2d,C y1[!@imy%YMu5J/*w^b\&Yt!U+ۧSp00GWpRy9hJanN(|.Iu~<) H1 &$,y 3cЁ3DlP+ӔDq*+ĄHLFYU2GMiW%Eŏ k!A j2gZMXPR9fXFmJ2=5!^NEvov}onk xoÁ}ȿᕗ Uߏo? s:"SıX?3MOuc>kaGۡ=?.} ~Ӂ+߉]?>P!:p͇/^ឿgk옼j_;c.C6"xąuy2|7>zઝ/'os>u~P,:z2TMC8oe(`FwVũH߇A}e-z Mj V#~>sO}6~rnֱQ .a2zu} ) zQOQ-|\׺Ȣeg&hu@OB4- w J '9 z;y 5 2~m?~EGg 0leE%=S?9 Y fCG^̋$&>i>@`ˀ6x_^"]u:#vt)'"-h"0'aOFkRN/혐@AH}B۟!,qܯ5r@ѥb< B֙XkY曅x7T.%<2bCǠg $QFVdIלc@PL.WU$O 'pREJ&lفVǃ)#+ʨm꽤to5EjM68tXrR L`*Vbo`_1)۩rQI&i;5Jbt)eQҹ-7!}!=ou jb:F[Z@MS9H=6;vQK35Q"R6Pj^35-NԞ䏃r]YE;~sDm("0ǦpB͔84VjMF˜S8[r^HTzMd7Fhk猢*HK'*畄kɵ63aP鮾߶N֗YYpG/2[svA8!ʉ"uʾ`8,)Z-S>.v%f̚:q!i!L&0O~sᑜ4pb׼>SzROןg/u,kY$1AKJNXJyv4A!1vD^O\*k,1 ob1Cғ%h͌S 'Բhi"9t?Lv^-5TAsű\2BGEg|?M#lq nz+>qӜ:!<?# i^Z"Q!icЭ>=ʞO)HQ]Q} 8 /Ç9/hK3OWFZz_͔^ҽ@H GݣS㼄&&x}(<}4HC u4et=M D,OK71@3q5, ;"$%)HJO"]~DzF:o ߹vN&@L Q=p=l#_7M瀓A{R$:^]:!md6V SRZOBҠ%5zEq"!VeAO-{}>%!O~GvB{O|#&XX//CGLp% hذ= 2/A|?Մa} cs^8c󳑵Wc,!}t~f s䠾ռ539~׍j + H#rͥX}Htӑt1 ^#͌\? }/,dJp؀/*m y %=^" U6n j*˔Z?togH0;2"|pQڽ|̦Clڟ*ꦌ^ڧֶƙy`N*2'~ʬS"3 r>JS9 (+StUYHGYd(- hiEl{]fyK ye,dwrQ~^$":ExP6*]hJ `QnS&r'f{fXR%Y {od/X^ (ˉ‡aZیA~ 5dX{xy&z*c/2`g]'(nwDA0dVnz Nr[%#M>`:mR,"X r:V~yK"qb=zQZY/"9Njs,Os'0Mu/]:gKE([g !1.BDlV& 0#…8(k̥,+A>Ÿzs <z'V~xpH=ЙA@ˣ̴(8Tg6xVWB.t!c|DG('D۾ Ttd l.̵tYt3^ƀ#ohjj%UuNmlb TN?lNĹz$GQޏhR%R(kljXucM;38t$/JÏ ֑zOQ55tIhZ_z[/v(4_aYN' ,9_4cgFQ6DꗑEsULc̒eؐm/ͽ;5,CfeD Įc4B3%!R˕x -r@I! X\{,$V`L }*Q9?DYՂ˗OUQt{^|ԩnq524n WH{{Na|b ֕S.!ˋ?3aDKJm+ePYkĆ,)76/"@F98ɋF^9VRB|c(C;69 ps-oFDlHô|Wɀu3jh)ϫs9_0F*Brw$P BƭzidP9it;^0't1JA?+O"uM}왻[ǀ2!z>GK R:f*yCKL߱𹈝Y?e'!yAe;KK?{̌ "omxorv&cEq#5\/ `]Z{ Xʂ꒨]t9n+t|Q()G0m{K91ƫr2[\zTKVZ꧉vcgTIMr0$@56g_>ỲEȴ4U4=7y;[w?xSEux_¿ů/y+}_R|TJP./UVJV\J&aydSAWxu8u&r@<!{fHW ܥS:.EH1ıc0OS ,c@q4. mwPqs퍔q*s^Nj .qO{;,+V |\/Z޳ `kVnb,(/Xgww.Nl׎$G{S5RFE-۔ED]|njНtoSk,s|`#, }ۀcʺtBF:bp%V򬁵s a;E`p2@_,x  G/|,6+\21ItŞȢ^)55’МU#VJ94;?Xwt^L݅?9q&Bwz VɁ*G'sZ5ۏ}7&֭M\G=a< =My2`Oi(=ʕ׫G r="8, /$t־.z?cY(h*kRg2VGޓ@im+`$XU?5&Y0o4wg* ԼYýj?l< h g8Z 0<|G%YSQ2RX]$2|-V8g>2*9`#en2}p25o/>h & 5rH*p&GeJ_v$xս_Y]=~YN u|սx{f3Vs44VSa{JS_ywU/~AЁzKwku~fR :Cp|>Ep_fV"lg>})s5yHP>rŪׂYjx%s~,C3+k{~)}o=8,>`&16יe) Eʆx@c:X{#&*LӨQۋ'J:fCfΩcV(C+EH$gߢ" 3%%idZ0JQ{W_΄A?f /S #aٮ/ja$ϟK 7`z69bI*jY7% 5 {x@yd>k i~i 6RcN-,hھ=䰻EV@Z? Vr9V􄬙<­Z%Pt/;iVr٤abB6M}L5[l|vj:o\O,l8u'*TSmkԿ5:֚~C?naTsl8t3) xIUCQ!.zp}t>N}tN=(O4хXjk8ƚڶX %l'牆Q%GFr׫tRy/>Q'3rQWf̶zpfexukY`\-G]%g#1ebɼW{LqyΝ}HiC*Ԭq3S:ˢtMdqlf싖h}pRhl_a QeGEfYAs-* )9"'ev$GFSM#n aJ%; gSf23uu. ] '0dJWrY2.#i{=#8!K?NȈ.VLK1k!(&]xHvQJ|W5twf! :{wSV ?:7?2] :]\o.dзkExW^w=vX݇p`& Lh܋˷^\ٸjٻ?K/}~x蛸W1XA+~ߌw5&Ԅ̝? px~ W'Y]Z/Mǿ^?(ޏ]Fs/yB1e_؇;/Tǿ{Nމ_kxh~t{1?8 \b.WDJVz%-z8 Y8:Iz<&|GEWR$#}e%Z@%j5 S cBD'D kE79gPYhO5hH*^2yK;w{y̓ M}͐8[AY jUlj}(Ul5Y[>=m*89NrZ8w1YuOA:ٔ1Zv 1EY9Xњ_E(cQf;2^.vYTdl~: @<Ǥee.<v2cxc/iGEU|/hs&vL O?ZlނZ*ʮWFmXl-`9\c:KĤhios^Pe Gvh}}8k bJ M{o«v|gi/~[s|ڍbR]/ݖO 9\Inbz8.tVd\;M C @} YyQvi3 ]٥dX q_ōc{wBR+Y'FT⸚:C ֌8Bud 7V)z_c(kH`]{鹹 Et oGHӧR;(%ύ⌝rkj-C>b)%f(H/@ |Xk'|NgS4 2 9&Ð:>;܅ y2)nHet<%XJ*:߷]9$8!{۔9k1SgA" dB(';c1T JuҲ J tMdC>KW ),4hޏhZ{6kif~CDV6E+;4 @wխ=V䈱bak16{?n?tV%KZbޑv/UȇY(t|Pc&3Ah+m3n=9NUÝr4eH@RRf}%9,ThCeSB Y20QhRgtgNQL=^GPWȩ||s+ѺYS [Q ()gF@eCdd /kn+d^;!̂gty? !)1żw,xS- iG e37˚`j}\¬[0pV:]eDc?h_[Y #c%zo~s1ǵ{>ލ)NI"?Յv`'I+ZhhWբȊVvf́,ȜY[T"O+~;ȼ ԙQЈeScËBoN1+S~5zA5[ 2fXSyf-D`de!#+F ?[{J@uucؓUR/b`\4K6^z\KqoG|8r G$OխOqGyN~ O2x*Q0VP),d9…O#8ӻyIy#g#:Ab =,.RtI[9znz2zQO?QbO:8!ΡCW{_2#"G@FO /n%]^ (2CJQAǚ@UdY'qX1CpZݸ/n2eh e.`tUgQ)U Cƀ[ g%Z@'HrhЪiQfqobQ ^pS1<ۢ )FF< 7x+M炋/Su R*5[X7ZC GеR2Yx$,}2 ;JO\ϻܙa6[Yg6&`^ bʳOwC+1` :֟ 2"s/!dʝS % $"2Mp$"\KfRʣ)^6@.;0;gG#*_eʲ2xJY~Wxy!C-{+y0Cn fd"TsPGqsG*VB%!ؼ8 @Ȳ@ E,]$)fehͼKĔ B$.rTPS`[ۨa,*H60=;>xRM1  XU-@mۋ]v䴨K/58 #pnz@E Gjk$,jaiȦW$$ARcΕ0T2xfIbR-\;D[DsnuLZɐ:JDF˭T:6X*7究iSJ, rj"wM"06Q}R mf'[|k*jK}܊&}FEϋ꥔$VZ,mwj! :{0TYjϋMC*o~s'Hu'ZՊ9ۚ:F y<ƐИ[lz'7x1ddKy*9$Ix)iN͛ZVy\emq ##2d[d(ndu[y6޵2x?z1^ 6@;Y#>Bdطy 9қDaX?]m? :ǀzc0Kh7Ct`>&A>  ?`~Η u2yMm_d#e|%.w.>]eR,mw(oP) rQM2~hGzH3(p3AfZH嘑e'(ja:zm_(r 6< 22Q,!0v6畳!tkL*q.-~+5Y>_4ϹCZV Ga=ێ|O=E`ӕ8zj?neSW%쟹#uxS? 7%ZcG+/L{po(#Y3u-v{ }(;csG𽽟xfe;xyol|4Z%<8}'sX3k7avyʁiV:M݋{ ~ocU£? 8LuUo}xeW_gkehq+:>umZ}Q9?4NxsiEhFoPW3v>S[ܬ޻W9ND۴Ώd5L 1{rhwϷ9@-pI6ܼig{jA}rی*Fv{ANܗeX~Tޥ٣қy+.;b%/@Yzܮ6X`[}/jA^Qd%NCFZ& /9J tʋI$9cИR#N u6) hwrȩ<БՁA 1(HH|RSnFT^8E^(T2Ǹ5 ,b2 bd)a/ &WG9{. )Hͻ<&*$-ea+ Cv: YZxv,W~z,l8O OEWٜ1rZ K8ej9mְS* n,.c!5ٕ/J@yELN'koI*4-ċ.e|;˶c Ú *¥z #㯽YA-8ӥ}|O^q?uFjc7}v>S*^=n~!rr4vᔺ2zQV6]р[at;_(7^ArBDuȪdNj(gCj?Te$m7cmT[#@mN Eazi6`d{C]VVSlޒ֌}V˜6,WY K|j>zA:ďz*1,,̩1pO߭|m'n~s𪉉)Njld4Dmn(Sy^F%Eax^:+wIPs_O5Nl lKy+|6c06ytJ[;'wNHseƊ~Lt;/(,%mʅj;52Z"Վun {s3Tw@IΤuF]}^eqe N涌وxIjuIS;b2b$(`^@w7*~y]hEEw<:H󢋔ns3⬷mB߆ Jbz"rj2sM#fG`F۔vj&㓢&0 ZPFRKi}gG/`fSLbELuHCQ0D=F.xQ퓢rjZRۍJnQƜR b"W)1X7yNW.ZGUUUWvfI4iޟZS!qf>bXPPU4\,v4{3x?ԓA{~@s9RXs*^zu&yq.2+1N6~eFH +\`xG; r&i c r 9EN̴@3pQى[Zuչ|Nݟgsycxr>#Q$ T]__A0\L]fu-:-N  C;2$" AeP]=G~5iܩyH9SC}pIdZks`Ij9EZpYb6=Mapx I߹~v_w0:e;!Q"{!gkEET$]n, FE2ls4xk)=dQz.x ( !E(yHѫ0ɑ=nB'UKOc9-:3:e[nST-E'Ul83lL˝xG+Ć" ][lS,ˇ1Eɩ%յNsl-曱f*'«1u.Vx]zviUDQM]hSKs*,MvǸ(5Iwp K *cZ9+.5Q3fTM9X4Xh☲X7X]= qpr j ',SHFjvHu?xMVRRLc_pJgzg3NM3U:L&GyMa j68܍w9|[ 10^:u*s1i|*# ,B)+YGS֫,=]y6 _tmjSd=ۖEj6uN;~XUضDȜL2ޫXƻ~'*7Y{.]j5J:fA:@32an t]X.ɭbw>N({;JG]܍[f;"N) 9'M]D)af6b| 3"d "yksGy}$exM$ np-E~y4/ˢD\!ORV/ö" O6hEŖpHM"-q@mF䥟`pe@k`:ݴ#p!3e&8c0Q_bfH*~ gUe w+2-ԇ1$N*Q~*ês{5\(TU}gJ9+ gpur,(}dj94`AT|RNG5"N 37#5bU C/E=9k!YBZcGѯ,ÞَږR{n#F:bgC@w>`k ɝ3uz]`qԢq G03vͨi.~ 8,zɑ!ƾNx$EC4^vTDT(Wsti]U.)JƎ>wk?a/<qTh^ ɷ(BӄX-SR*ڶȰr&ȦfS8`B9%6kkJ?V8E)#^5 ʬ[" 1eD8mtGB?gJN甒?lMԘv*=OM{8C6mΩ}A#Smiz #h,-EyphD0ˬz"3ܕlfunRPM" Anyy;TjؖNV&\rg@(He:e0&'kr&fQ3e 2X` gUvӍuͷe pKY6DN*ECAؠu{fSjq] | Y"^ƢyK~쀾1(OSw( `>hm '.c()tmAPY~wnƾ؄&6 7)->-ɥlܤ ecQE _k&UTk6r?_7*Nѓqy8O@Ng[Z-j".9*9J)CG45\;iq_R4f2fRDlf2ZiPwLΗRwb@Η#BpӵP1.폺+ت /,T1&t)hsـ8\ߌW`tr 6cMXTÄ2^%6lڊcVNxu/ݟ1z5] 0E5Vф4<%S)J&1KfELf u6 /bj!E-Q·ڦiDž5ИK.C^p :ox#Ni,~H8ydJ:sLM=Al^3**:Z,~nܩI9i |{y5q};KxyR/pϘ{Snǯ<‚@[m֋_8{oڔn*otcOƌ ~Xt ĕ #T~&""y =.E v-0'r'# huS1,ޒ+w"*]J]3aX`ŝC1ؠȌnp`]9(ExԬpo)@ڶ+s9i>ZD4"@΄lqN cSA]9{Ncff6r2&*脲9utP[XFzcV֛R3&]we!3׽l7qF*Fb;޽qۏnYz[ ﷐%mpZj}oOLtLF;. B[m?^Y패pCAY%v%fKGALՆ/w@P_gY jx?i0ls7T^3qP.`D20ŧ%l.ћDZh㎣ X@ub#AܟCހAÿ| n>8 7 k!5?g_=; ѹ6.7|@$;e Pa  L%}>oCfY[ 4RA}%1fߣLbI9%BB({[0PlDYV%8ʼ_~1f,Ny^*6\e S'iZpo:~R?=?}kjH1@*ypIujO|ړ0Tcf*Gb'D-^yިN{n ^p;0%ZU}VR,BP#ւ0e:RK$ҳQ%6־2q ?:A5ul-:mBRbYkM*" DFXCajq֝gG~f-aYۘjr]5դS5EE%H'?0i5L }܌D<} m.n,ڠ뷟_4%P_@ֱ ٕ*Hruc~{iN Bi} I6(Il{bΝ Q@J g3֠}ELI2t.z 2tW^-8E&96%C@Ϩ\EIba {ۚkup  7xZ:zn|Iet ̚ G"_ur[hUSUuUNvbHyոAR\ԷD؍W0i<JDBM<)ԶXՂ߾{=Ƹ)biۆ&E[ĖV|-<ܴi"wh,/w C-gaST-{.86zYg#M~j4:yaǶkĤ)AR 6P=q Çl`љW7麈.wEKd-UE2."maW^# UYHmcxVlbMm-б}Սb~#ĿaU=\|J"﨣pӐ|Eߋv&̚w(Ub=:4 JqY᎟] TJJ1228#N?&|w. Vit$7(H;󆄼J!?g2x6L(?X&$6%U]gB;TkQ%1A~DG:IzH(4ŽڠHP$.?U}_h䖴|K+^1HČ!*~ύyOC&ƉF? 팇xЇGt'NQPi攫o4ϰ+I\C6֓~ `D*pa#t F"!U&򵐵!(ca@B„KQR){D\Hʮ>(ʍwq- ۩L؁Fvf1e$u> ccr1"O7 "{;~x 1il^gl~F&|~W'bCr&X۹O=;@c YT2pΙ0AK"NeDy2hɀ,Rנ~ F|^$~ 6qSP"Le(͖D2Tܯ%"JU9̃ۓ4`4RU*:H ly, v6/*n U;B=%&=jU±0Us1I(umbI,ZDܠ^yMTکQ9Mu qQ93q `Ը8+'״bTm č_ N=H Ż>$L'_`br}DT漈D*!Ŝ9s+7B 耫{]6~(ڡqÒ/θoF1׵q(/$B`}ϒm݇`}Yw pe_!N?WwI}3ՏHQx`}t=.Bg5ٸTs9!mmpז.؋.>| N۫E׏ge}1wvoZ6eJ.V$zkI\$! P!9gO僇~ϛ8? GW++mG|0Ү'öb@0 ]D >Ql].@eDbIvD|VdX $MsSm,9)[⟭Rx 2"0XNMPuB Γw=Yv)<^\+}Uq׉Wt >?4,vq?qAīn|Vs)R.*ժ"lpUg!q)I"~_.K9oLGb"X,c{xlzޅHN$QlO܅C<ՊڪZ$ҢʦJ_LGTH}I0\'.J4jrk5umx^vɓq7bHRdczztJC Ph9}x: fz wҨA(RBIeZ[S+@>+ʕː F$T"!":WIl+sAӕ pdIND"Ru$a2lD#sr(I#Z[lJds9}(Zuv j/#j~0$.Trṵ3p6PD?d7=Ƅ9EN ,kkvZsEhxt`^6| m_.עk3Ǯ9DL xq\{P->7SiGA ΧSK{o jռ _3}~cotpՓhXm09aGm@޵.8cZR#hAu_./mp}ĀWBt0<D9 Z+X)\iHwM\^28Ļ?zC2#x"f< ҈$I 1XI&~I"z>}1QZo%N7oPd6<93Y!tULxaS q%ˁRƾxvy+C 8'ţ6\#|uAhBt epl'0zH:U?MG!ڀEG:z%*"UY}}` 6/G2:C-#ōÐETR0){C*"{KJr^ 9Wcږ~)[A*>GWD@{HJ0 (JR,J39DEV$XQn^H h &-9 .>HS3XAFv8Ylz}%6#^Mw)~ȣDmF)VmmYXz%F}MiGbQ諟s>"c1{W+Q~..f HԣkfxlAoX"$&>Q[[wwTUS>&4EeOA"5( 2~8yNE"4m8lݸ^%4A羶V t ה slJeS(n'R!1T2v2;:Ģ9nr/j8Ƃ{D逻%.KCL$i0XYQӔ m >9 _b.~I8-k;E@#eRtZ6c{P$"6[FxI} sz`km,)2o¤ֶvVy=zN"J==]0!UE7`k\ɦ8mRU iYД-gS~>߿ҽ' 1,Q^؋)/O{L@!?ϭG2j"ݡP?/WEXN dJЏxtz։vӴ&I/Sxbik=o88ng"Wm6Bp#+ÆA\1 `̸>FD:1ȸq"zvԢ+C1=@Zԙ?H@G*^Ac\wBΒEbI׊@YB[pFn"H*8IQUP0Vyb/%EU9 Q}̉hGl| @p#~_mI@ǖcIFj~';fE2@xf"){TREUHH$D.޳$O5Y{e9Do5Kxʩ2NJS1{8S1o޾hj&$߹ #gGsH"v/+ "InY'<ӈA]"7B<&I(\& زu#mjŶ2 ?z3hHa6O9F\yT|eVKpUO?ڇ?!o\{|Qi:8=V>{\Ѱqٿ?.,j[8XH Q 3CC1/Kde# ZaI -'cMH*}/r&I(M//*8d v\֐x\M$ ^Wb"QW^-j$+*nZkZ tfĈvUic<.[)m{nm-#e˄RHv"װ8$%{I~F??6m::CMhy):N:%zq_YB%4bzёi7[51q[3?l| %{2S[P;ε*`wºĀ_(g.9o0xȻə>$Y)a5)10~;Iﱣ%Jnp1 ;ʜ*GܢrT>CPÇ#')C$?_ Nf!'^+_ I1{j]r0P id<].Dnl11{@Ӈ *5*:<;(-dC196k gOTTPn NAn3[~B)rۧ,֐F$Eg$+oh'a*} -Hc"E*bB >Vld"Q G.!ؒzĿB6H!yqDp; *IcR–zXWX*߉.5Wg$%JXnT$P&Z1n3[̃+!cwLN&8 {NחUe_dyG1Bh^Fg4̐m8@(~=L> u2VF ܼe6l\=L&+W_{]|mGg'LML7m٤ *HrQyJϸc%OD9 v ϫu+߻5)t5="Z "{b0jKz7n<)qG->LU?LIACUD)ϖ$KM؆xBh41f0H sw՘azޙ3OtEA?)~oq.0Jh~GN¨2[izMFBJ#Dm wv_bP='O${ o?04V,5[D8$.i Y(bHPez!g∗LLǫ1lQhS CMrâY('a!`yG$1 ru<B/YED 瞓5)`R cnjƆgo޷rê|.Ή/k;g/׉ւ E΍C~tl UL.JݔIȕ;qi _)19&F irMm4BN4ՖJd?MDV I JޘH>n ^Sx2Q1ù0[E 4VN"$ɽy͵qv ο >x߹쇨oj~+_? l?⺦/8V}*n+eWghnX^z;N}ܩ) zSRL$jKYq1qol3O:AD(ΔB~hacQDmD@/!}b"f\\7=~ ?t-HXuq{^NV@\LȚQd=඙ֵf£JmT HVne0f@y󤰏ey-x`?+G.*:g7\1~ڮǍ; 3#QgÑgݎ=O˗ݏ=fӏ]_zG4csG *2̈́E~|O/2WSG7//-KPZtWqg\(3{1:ֿ6RłEtǘ~q S6"C޼+u #ukHƶC_Z;5g#GBD>暿gX0JDdJ+*2^>Nl^x69ku+!4ޘŸo_- F#ER?AO qaڲZ}|LX#/kr'I.6y9?1 x'I5aJ(J 9o`YWCp}p"<0#d܇+m2҉Z`'Ilx] z$*P[Sl.+'J b$.dFcD]:> t<o`ZKwRIttH!]6qBQeV,q҉_FlYɉ+v~ul@WEh]w͖ qOn@YvI꾘9y4!HY-|Ӧy{i2RHT,/Uj#J,7I`~9i#T"h_h)/h coM-/XGJ >M5HeHH"+u5i#ya̡!dGkFT~}n/8J k\#@OEGsJI++ c>0Tmn@TD!;7iYb_ΙI*}UB.tcJ0NrǓH ,,-^#53 0/*C99@#1)*xږ J"&U e䘌#H+6E2(}->JD񾸔51fľU#KFhX&2?OXf>9-Ncf9_O67@R4>z}L>M$U$r$b$P #xye_3fPaTF9NR+)F}o8PEl 6"nn^ \($@MRc/oQT]%{=c(态xRH1QlnmK %-JPBq*{L|IMѢeʊ+ޗIP)YɁ)YI*D%, Q y( ǺKԆI&A}@!!XxBعy&LQqJuvBS[8WO>DX󨶅8l&#GV2 d0b(Z:vWLб}Y$S*"jɇz:&+e* (jaNf(fQw0Fɿ"X$m;c׿?1{#󋯃v3FPa{(N>Qܙipwg{"',<`:X#mX("81D}{~:/Fi w?^l뀿Ϯ_S0^Gb{ =IaAQVGNαABQkV sPٍ3V {CCɶjzX_(ex w:DǜdEgzi5ed1&jQnRMN$%I;6E%=4Ty|v+/jB}F(.OʛxwfIl"qJԬaHȱ~z_-&pz<}MTM8j÷y}jՇ V=yp'\& rj_.w@̘^plpleEkXX*aWhuk#t_l"8XvHp[ t!m{wT:75xn^f_8;$)`ɞ{$ϙfe/7aR(jJR F]KA2OPKQD} 8x< h˴{cLN bím<0; L9}#^_z"ZR"q\Tc%w`H#C&"pGpbnxH$ a4үo"}) rXn=ܤ#Wn^w#2qՌFL^_`7ihR|ޫ.B|_7~f5Kr% ^ށǐ"dLwΫ8o}PAؒʅjϰW۹,"LF\S/hԖD/"k~o)K'8?nkF CzŮ 8vKG[&Sq_|O翞Z T ,ٗy W, /,K*%M{; QYk`2r!a5*/81D:ٺyڎs9-d1A<1yy,0/B}P|\A+/1![hq@1xkboLKZe,&#Z6pyJO\sa8}zF |_=OпJNEEI9+%n?xb;7`c#@ސH6O\ 0iohb@?H$&f$/@OyX\*I.yӀ6ɘ:Gpd3(ظ8YcUFXIiFYQ%>w@KX9۝d)#TX?7q^,$*Kg*U\ȳ/T6nB^$>d~2%Ͱ"0~Ӿ {b*$c%Ct (:,7יִ\Xv߹f[;x6|Stɼ}mѹs$|KӨ _yFcڵ,(c]I ʃ C3t;m\K~ q [Jʫoz| ? dsQɃPa^5Aв(+PTGp(x2XJɹ' ^v :BAH.d~VoG}j|Ϸa4q%Ӿ7?!ݕ9#5#(bTBM:%cJWD:aJ@ʵNy r7Z6|]F0bp Q@E61]9rJy s0ءi >5LV<$3jnWSeQ6IظMY&53G,i(qX5uX4 7ccl[umر#|K㠱xcvLhIb8_߆=<FWc'ヌ?y+o۱5Mm6-Cu/}NH7 oݨk@{x䦘!*tl ܑȉb4~QK#&xZ*/!O\rQk/ 7.EjIَxhBϟ~hCߣϡ7x…|a/۲vuLҎ%yIjD/+WOURCm ҩn /*YJ.ۂ~MK^G~ L<7-Q[+q_O$ A-ذ^jMf91gF/:q4Ԯ'7?o]vL;#4-w2y18<|[^Q-U>^p9*D.FZq%Bxy,`CaW/7q玕.rCt/Y{y-a Ӿ1\|X$xA G63ƑSI xK|#㲛č1wG|3^m͈ϑs(gKH'?p xQओNOᴉXN`v {ZPNA+ p'J̝OZVXEP/32j*97)I|Dzm] ?4)ʜ8433T[ř4$`ȿ(oP"?a Gټu+r/*% тwJH h2].a3vI~ap7Nae.>@Y"gW\'|RY NV۷+M_v=r}k_šx}y7u ciƏOz-^yU{޹hkuaÎDŽQN$Ä{믿Ögvҏb{Q^ZbDc ֮]:ف~Tew$tQ7?p>v-sIYOc:,30zч/j6T@zOe Ľj#<`nzm5g;}sι7jQX3C\!A\ܜ]11K% {LtB0}} DacU\"PIF m@ J-",4Mvr"5M0-H@H @\Up^i44)DsZK,ܖڵp2 *中'찲&Q ٠wAvӢY>? F?,K"ZHr ȃXR3ע(n0 (qCK eI㮺i^lzh+⪗Od?>r} O*&4ӧOY.Cs[3}i3klYAIvT'c(ʠR=CZcr>z2 ] 7eKbع}*A'']׀;vI׎-$+~#cC }и T-e~XN;4(m۰0oƍ/ /g^#O>N?s8l*hB~ÿ_mrbή9<;{7ǏI~kJźz\x/LBxJ%_[#Rϧɜ$#PQuSɦXxmtKU3u[Lеֵ51..9 g3UT}=x#&!j\-LJ<([Gg?nN}1w eARL" q4G"w2{ZAs˫p|4XB8 0 .yX77zipն:HZWG[B!Q-H6¸F^Ub㖝0i2i ;9q7`aF|/G L;rcqiV[;R+8cws5Uaۆuh'%?v0VVos(f7Y 6LynIrBՉ/E\tE (Y1OC EQO8 ]p&>Z>vc/ҋڰ H>ěƠĪի%]c,<ЃHk~_^q)5߂kz JH4s?ϡ޷WGoDƸ7!%_HRU5h;$XdE4o Ƹ_EW!in]'-mk Ul(FIai>dA9}ߛWS<`ZI_[N`8Iֻ{220\+\eFm~[;mr`:΂.v1 eŲvԴ"n2(fKF΃FCm<J^gBWoF*Katf͙$4TARw)k:-JDf0j8EV"nE$@w7aNL[<=7fL:M@}CH<)2`2klj7 aLso\ ~>Թas<7Ix/#s-o|Jm酰"9Y PC,b ;Fty )Ӗ1&{|=OU\#F,D!ef ̴Jè*du}S?F@[G5{(μDkfx&v=xD4Jt7ʁ`k(fhhRS#&Lo˒- aYkDbBסEByb.f yg,?P&z ؁>s$<$KaƳp#0 9)26[1,)*Br }q| 6OyI?£5q6}&jJHvA,x f.[ڵm|_\ ~މ\}22 1VvE6VEWHXpER:ֹ_t }}8P]S#+mQŻ;w?q,'s}ٍ7eIJ7GAbgI۹pd3*m CN&&V^E.w\oXtfsXz~uΫ⼌ĔQ#NUO^ǻ0*ȑ-=K;TuB(ǐYg֭[e݅چz{PC\Í{1F|GEh"07]72Rھux44u)Wڮ:DBj7V0߂[K*[Put^sk8$7on\':9|,%WјWI"v TV`S[8㊺牜qZ >B´Qi0ɝlکi- 65u3" ^5=uk8 4pJkÑo$]K/`Fd* i ۚTXǁmuQ&(`>{ňjM]"y㼲EyHt- ;4 /kׇ>Zp0GEٰ`?]@Wawvи z0DqM;yzJa[y.kKe U,&UJ x x0e3hB/vi= wop#`K6a%xFIR) "kk=FUY%̔VQפP(%$L- Y)(N`7b+cKBg͆W%%L} bN?|Cnj3dud s% qN1` % p*r㏠ndbWK~Hw>i_= uuRl)+~J.Bt83bW܅[)ν _~y_w&3w<^Yg=wދf5W_۶FJ$Rw$^qޑ)8,^%ZOtG'tI/}:frI8}$0B\^ %p߃Ȁs n2ݚI1<2. Q#YA0AO 1DA=l(Nn3p'lۯA`sgB1,}ZB?8PswD Aɉ/ w;B/Q5EJ}vϦc 8i=nYd~Mwm>ںq(LZ嶏. T1d@\κ,l_);q8w!* Avho-z~|&o'z5 la~-h>$Kkb3/!-YOWn։཯//.Bf8夓"/4 % .bߝ((/bHzRO*.d4 B,FI58Sл =pQqS|Ce=:OHa>A|1Pnܤ\FԠ]J~kbݩ kOb!ېQܠ@WCtc~䏶z<[^޾icMFHKXlv9h7ѱy#F/>O ~A3qgg{n0_Gbx.3fHŠK1iش#IN*JeX|ል悜b~fW|-wA!?HTKbIfҩZisTi/ǽދc9k֬c.hݭW|]7G~|Aل4,b,O<G\0NmݍK)7چey1",@&-m e1#. Jq5r]\,wpm6v| l"܋q̹gϲ5R-B X,P{pZ`9-5:?8An1 ?ܲ*c}Ω&UIRIiNny+" W< (U} H#"$!t!=뜽xs59 }|'Uukv1g)= :Y4""\~I62LUvjJqUA+vM*|>5rN.km {WŚ/oڸMkq>TOw+C.a!`{!f<"(SKwL7 ['7_K=p6гi~F'Eg={MyϢs+t'>in=Loy_G?Awڝ;>~gIڠU3mlNزFp87yE[ozslkDwhc} Zeugx|(~şvm<|+"sAҮ[h 5E?@}C W}>~,Z?>_2IJWc"b6X6DҺ ǘ:#<2sʕ[QY(Z=i!V ka._t͹t z$})X@[R`J Sv2;٨WTU0Ic`qs*XL&QmЈ+D2+ HR} HGXkcwVoD$CَŻJ1eT)+r~Ryfc{K`}3;GiP9Ǚ( =_^DSP" ig 9|^ϧ>d>4>HJ_(=ơeljOe8gB~ i/F;.0]"DOzT |#9鬳΢t^τ[8&6i-M0=HO=تޥj֕`iķr. ȳfeǧڦJqJ@TaiǽS pٝ,ldE%yQH8)0N1, lSX~]ۡ5Ru[ *ctV|˨"?J%ƘeZW#31GQSj*IjV=y@@ J~, ʷl,4iv >+"&.FpPI>oMfi{Q8 6g0Etq%%$oy󥭁в 6bWF:g|kP1O S9˨ YjE2° _ҷh43 +c܊pK6G]r-yIyL2fQ]pts'o{`1 YWc'WVfcPnEy{.~錻ݝ5Jѿ]9׿{k 줋v+t3_Ftӧt~Ҟ[K]ώ ?YݲU5[ |u ntD-tA.0̋Om$O(3R.3#GG7jU/]lM5\튋t5YH Vǜ6ڤ&{>Raf-9f nVfL.m ^J`j,#] $g];L Z ]Q(/m$ kaQm,%5RmV}ui@ʒϨ\M <Pp lT@cxRܕL'_e!aZ`C{wݎb͗xh& ;(MˤF+ 2 }NcVڍ[ˈJp>c$>RtF!/JT<͒pFXeG]h39g++:{mfؘٿ/8BKiGQI_=>9<xݝxy~[AO{cS~OCz#Ϥxgh;;6 9zpngG3:͕M HYM]D.Nu#nٝlê2}ϒ]]Ϟ9e: դN&lAT4Dr!t};fi@o"aǺ66+vZYV{ϹOȦH l,]`=|8aVAQ4wm,']<2klBז``ņwb6'j6L-A[:NVHEȪgRw k+He\\sqTbG؀zLS1획de:l+.Uc_& `U[(H:,,{5\IQ=/9Kp7dA7M宒 F/yo+^"%//:v[<n*G=?tՁv:pO |x8&ӛ_F%aȲh}B¾M2uIڴx 뫁bvlȤRv|ڔƥ!O<8=1g{zpDlOEZQ||>?2f1M7Frkm۳Ɗ1 ӿkra0}m!I?\gC\-zKTFq#Si3?1~$N'N]KSY_("Rau);=U:7c{^ImSoՖmAΨ0gv6re [Yn4~FpeM6rD4?EA־=^s!2 n_mmm3qI;7xƚY>/qaH&۶Ur>*2eiXYpOߎs޿S_۲ٜС#vlӑc3GpMڽ{Ѿcop?noݴݣNmrHg g13܉ըPRԕ rFkrZM轊]MSe˔M{- t8_Kk.!kdh>0+ [ቱlRlӦD< bs>+|efItu!|bZgR"8 *AL7mzɬNN[5Jόpxdވ"J0@IU] e^2 F!STYVZ0+n(1qu wt:҅LWw2zUu۾Mj憏ahOے=ccl'p%NUxVac(¨*.RU3':g\`#ϴzU_\^H<7Z{W+^/~rRXCн~?C/y8}O<ݰK{ KO_Ϋ -R@}ڒGSWf|ҔwSRacOYު_Tt0. w_.GkA暞"8q'Ɏ$EsYQ'/u'H2u&gHHAS*j'6<9I2(6FcRYŮ 8UHϦ+q߽+77UŭN1˺: o-U)NrSaCU3$O #찮Y*JhLD?"1pFoۛÒJ!7ww܏3 aAY'^%H(%vf\+4 H(Cu)OʌCtg>E/\۵ػVFqp-tћM[ůx:عmDbxTKC*sZ4__1}iΓv@0|G g :h:h76ucKe2pOK.vRsgŕ%9u0jjҿ/e[!~Qm2 HHN={sS#BUS^ӼzaeRzuծ5:g2G9N¾ii%0+@"b Q4ZL,L,̾i1i4BURX=U>:m3mGw{&ά%tI tpssޤ+N4mdP,xl1z_s%j%–ṕDO xDՉ;gr$U)j z´tϲB~o֞ۑ^Wj\Q|Z#:mz,U0٩+8qIlU X́e2?FyRybUAD'QSEOI:dan$SoqecSOz4y}:ZP=$_JBU OM@ntBt+L$Fw@H¨Db'6zNы J*7kW/ OfKas?g:mZJ2FE `kQi"]*ߢj38zH1/LUOF&6On)lQAXE b.}m$_L2cnd[ӈ1, (b:1ݩt v!/\+%,{4$r"Z TkKGTÛQ%C>B. !n٭eJY59gB}Ciy ,@ˠ&֮Rf(LQ$!Ϩz 2"ؖ$4\~rE ND@"sFX"%*csmux1SRy>57P3b 4޽VMJ[jYj+J:jsgQEK3 jTjTB)zDBϑ J(E ZfūR| 1d<p'mt$j0Js[kV*(1MWF1pO~ȢLcҳquT$7\xhL1òNvY/54Cg`]H\q(kr Ep+A-U=bHCFMn{,Qi d)|so4:Sy0t L4h@["7`z#cΝ4)o8VlJZU:7e+gufOQ <ԑ ]>׳t ܩɴL:T OBOlYI PԧݹtnYs(WdMD,8cbvNToO1@ D[ ' ,S 6G.bJ©,!dF;84YJV&%eAWރ86ZZ1e!hRW=n^2Q ztL(O3%|e*#ﰕXi{ sj^E*d'f'zLH(ƭ{%f\THV(@ƥ |PBx.# 8{\`QN(g)H 렄|j'9Xkq{eԠFKb\j*1Z5}M#/ZU\]EVO`W1bC'[|}"*t0E*2>9XpF܅ !#rv ̣&J OJ ;\'oebH )Ԭ J4D9J,;JT M #B"Zd̀0N)\`OP:F pe.iT蜆|j:֚ZqT,-&G=^l?\<*1.[I°Z~ =y)QOe51\wz ˒!QG)v-mH%nS82q1xϦC%k)s1NEi@-sQRjϱ\ i-iwR}SE^>1!AU){`lP:;FkT>ѨO':iW`ƬD. .ʵuIѺ!J##+s3;2quL-lf D!1, [u->;s GPVyRU#=:*Jv "J(, kg'kM2*ri4O%p=JfdI9pea)U8V*A:HI`!,91)=v}W&ed`kKYYY^Q>!'@<]Җ觜g-0rM\XéW3m? KCJU?ka 3-2lˤںay)?>!f˼ֺ7BʑgV# 0;F=fZqRmՔ\oQtP_MnU[oI{cEB0 )P=wVM> A@:fڸN05`yʽZ]$QD' ]/tjH2SxHnQVY}sф+--'}P\E+30\G ųk_s(>L <4 O%,UM %H'qȄfqYvHŀd5 3!0%N S6R4X;):*;rӖ<\essMP-d-aR7"2!"p_lSJă{7kD֤E "FZ%2\̄0`lHU_)GGj "eկ"VR@0؃<''o5" u>ܮe/&M0lC5BE(g?O>U"lރ:c$=kZVB!P>'hʆ8 D;@@ER3T!3a\&KfPUAJG2RzRIM ;WVTִDvnf2It`a#ԇ"j&Uc>mRؐ&Cf=#\K9Ǧt!{[ARyR`$K<&d7Q* {J9A>!>K/K+'{5ŌSDٲղvsU_.`-NJ"Eܳ@$g\}TѼV5'bcMZA bbԒgSfA-"-'$]џȰ DHM݅&~3-j -H،'fAZlѥ[d|>HD.NUa&6@Kfemt!syd!w QxSCFa$A+_G=HK%ϽOJMe~rѳTHWyqy:QlP܄Ti>j3Rc-h4BE ,Kߑ&RxM+C$q^؜Ϛ`1fKbOQ;p1Af\,>7l&Ȇ/ 0cjRyiߎ,$ @F$J=tSvx"u{2*4DX𔜷w7?5ӻA%CwXl9h S !\d Aj[ y"cЃa$ YȖBo-tqٜ IUvXl3,`E ଠZ rCH?3Y3cbDu<$H\Kz*fз.JLLP'mF6 xdCkD3`Yyti C"/xPd9 kWF9HˎILf]JU-MV |V F[ bL| 8((# B8Enڟ~OZ%BdXᗖ膰 Hxh%Uw)au NeEңC ZaH<e3~뙫y0 ͞] cne@hmv_%E @0sBv G\Bw;ddٹec/bX1d'`Z" G8>&cJBhEB`RmܬLM*=J @1e$5u?Xm2dN~ I_` W Z+\BbxXJnOjjѺRc9:]y%Nh]'SnGϊBZ| Y@A 2hp򝐃XL>jsMUkojF^+4BX4z: 'C[1IتfV=`{jPV8WJH$UoP\ q9˸YLZKCJoRq*!g'Ɲ2U9T)E?ՙ<?AHsҠ.Kd!!,ὗr Պk r|ϊy{EͪYftPPq@V2VڝM  VdfMyUd\J I D /A+C3adJpIQQ-@dbE lrdE,fY^1d5Txt@!$qX8% _ɣ9#~E%jqQ`Ye,TtZʙ8Kz2L HҸV\"";y^‚\ )k:yk ƱA;Db#*<iP @RD;obUF|K"l@Yr%RaLA]v]noR$FFr-%U!od`s0/LR) Xb< E*h$ͨJ͸OVbin5JgEp 4TA5l me3IJN%+U&PԪQ+l fżL R>μ2)R$ ⒝\CF+uݲ>]}Jb<%d-q_蟮;:ir<3N'|-k>۞mߝn y^7"-XŴ|}V_8>?ӎ9=h=ྍTufLŸ'8%0\vIBGРxOBt:xqNXù5pf̚E^)ah6PaF09=)L<]uA]]^B8)?g0fůzYwmou,# #!@S7q1rdJyjpM4b t Xy5 (*qR3Gګ]gTdR[+ҧg̍G̍xeM4V3yzݰՕ @՟q&4LT5+Qd4}8YQ`$ * "^uJ !V&̰6Jh|3- "M>Qʿ!jgє梬k?QEP =]jj*z6b @g|1I]m^. *ge(O;q ٸ|c8~:E|hD%LorGMķz'pGMfY49;DYo_W*B'X4rbaM $Hnt*`.Ɖ0[:*Ë-?A K%tGd?*ɶK1!ȕ;`:|ёkS -!o91 G>HįgX+$}B~\t)%\f2"ț&Nϼ^tp1%!16`x0{SKa#qbCC;s ;?$*/yy}?+=ޕ{|+]Q))|!mNh:D0grcbJGOޙӒkܻd@5ՓĦĶ5aE@QT+ Z˴XWO)hKӌZQӞ`Xhp @l慞pS7mXjߑ?e;uaL$P@tC{Bu|tϩjJLJ57OxT19c*{TۈGMwߵ}<[^= C0oJSqc<>^go<@_A~gA{?^p9ݑaGv<55luLIsO!\mkyllPF\34^kU WLn_<53`8ܮQcA" s;SQ*hG:@lxru*3~Rr3N&dcb>8=,֘S-EY Yb4 rZ@V f$,E! J[OufMFl@z@DU2:hJ[%V9δ e26y=4'2: 襞kPvN%m<=$"$QYyr{\QaydoI׿m?"+V~жbz8ħ@#tmtu3cP tlL iqjaje\U)p/?lzw89"q&H Ï_߅Ͼ(>}^d~-O0g4?><.l2^W "\%Lxα9eNPM@YE HэX9ue @ǟ4jkuf$&D+V3&ˇ ϊX}M~ϥm~tt '>al7, 5 $`Ʃ{}ȁ uPa Oy;dx9ZS_@4dTY(]-VľQ5#((DDP8YOh PɻAw[QkWe3|Dhw*3Q+|Bʫ|:fV 2R*xAV*NFL׉Lf[2#v==i6Y!HG;aCJ֐*h윥(Mgg{Ju`q^y/ o]cE!sTpM-Lje pxۯَ{BFp i'm+m[>{RaLFz# TGyXKHj/IE5wm`;dwVT5wVD<ާG#1-&L/so/۟q 5#@'n$"fk*ώSY7a]LS&VbF66 1֊$*5;ij6 vZ59Prq0Nԩ~ҁ'-i$s1*?3m D{XV˺=1 -V| .}@$ٔ*v#DH F?.)' rC^@]-`3(eQ L)l uV>vx=x3TB% KJ,d~#yН 1BQ̐@lMy>E.IfX<⪈]j:/ _\+&pτ/GF.rkDCKƻ86J-_AyKЏ%|YXjE~},|pЏ Q|LO#t^T鏽Ǯq038Pt|kʷ@)[_CpKxC\I:btyl={Sο@QbnN /򻨓{?o>B# YGu\tHɿbVJtż.!S)TUD5C I T~n*`[&VeIbt{W_ޠl;dW/ttOlwZZ弢y.SO>FUX t>Tocd0Nu&e* Zv ƣiUiRgi͛abN,GIx(Vvw,  WR4љTpS?V&YLK2 {2v~_:}1h8PzWSGϹSgRZ' *Av~_m]}T/pvB% ùr@XyPR8y݃ ~{=~j[z4f[ [Doht! >MO+giRaƵ(ŋGm #^? k h` EPX 3ZgT֐p!A̳#KH@&],%=>}zsj=<EO3uÿ|~ \9x:$$SB;n;*p*]yh hq?N[jp ͍)ϳa5Q%OxX\c.;cq/c Op<&>ӖD@7}&ϻ΃IJGcEa3]մ"?&'{Fn> .nO_M] P&Թr0%\M&&̪U^v˜#|&}Un\ZD|N`1lCt!\: EtxD^eI`Qm}#PE%\W+z)&?Kļ;:Rg!\R 0@FuVOF:3\$h"FL0i7;pthä}QߚPBQjڌW&K+F^qkkP@nҪV+|(VN0Oab: Q:I@}MS$\VokϭwÄV@s_!ߪӅt(v8io5ؿ?U׬4csq\r6? nf8sv4_L<؏w_ A=ϵݹ>%h-/J Q8k 33c 91F>"181lprU=8ׅy.1ҋMx}~/bD viX1tW+ O '#2$)Ĵ^GT 'NL9#|LJݲF#D1[ي[DXءoچ}V@U(?Gr]3u,>d΁Ҭ~`>%QݽǶ|(K}jD)C6[ TT*S]֐3-H טŅm=ex ۰툉vSd AO0%PN'.G?E?{ŭ*%z.%q}}"WbR#sB>@M>`:7\q_1! UsaF;`20"-Rn]K3'!΁ M##V-x{G:l^{/=$!TF;>XQ56 [eh? P(e5abQƹmK!M${&m ;tro> ]~c-\;AxFOq/3VzQED|Й' 9RQxRB_=;ޟN g5,V{-W®UږN&`d˼+-a}a0% 5R[Fl-ItG%S*d=@.'[BA/=NOj̇+ ~gבּCJ' 8`MGzgi$&vȆR`SmZr*r^ NgUWJ:=@O0pei/ e<~za͉9bEHnabɪg.#\ i΃,YM3i`u K! eV<1(JJ >Կկ.9{BOoD RƤD257RM\|"!ۀX(=A%ma41y<3/~lI.M 71B:(zCXl[< g&vOG#/W\^>&`Ql^rI'2CKfYǿ:θN3A/fI)f JQKfĢ2!ZKO:}`Vじ1eOx譄!M$e(EC\l׹O7A$ =}J ֻ)fP偋%/5ܫyq`Q~#6x؉.|HC WpIdg-G~x/]F{ 5}3[BEWܗ $q??(M[_ ;t|tBBBT' ,+] >u$""1x~giFҲ$ Ч{>h4zH -_&oHŽ߷>q)6D6X'å!dphɵp?- Se)dVT 寲C{s˱SN9:z!3/#C3sayY*_:ɒ`\e3 : GV(2vD7q?^3KʅdV`U ZzL7] meIZZX$HrShXs% ctݣ^] j1qOE\hfKVOHORvyx=}MeCEɛ)_{>mw\%7r~>c^=bp}x JC\Zql{(}=l< '"7.b=m *m]0T6* ,NHI2q%ا;tҼ1GEjn^g:yr7\I( 6|92pTuޘH:j<=gFM$G9H*@HJGJ=Hn*F+M<0*r% ;4iO̺)* \ͼ:<FAtH{VݼIP"ܛcd ȴ#='}!04r)h}]K'vxȪlB\# Uѣ]IZ+nɼh?kյՅh3U4M~XCZٮ0-?m_)U䠈XOgW}!}!M%k@y J@,\=ΈCzxfW9ݔU:~jE:G܌GaCi0Wlƅљ(o5g>WVb/b8:S5 !%bs0.YY6Ty5ifźDž"Ջԟn0yzFjJדJe<$V1󈙌 Iv6Bl[$); H;,%Vq r^q^1IwbqǤ^,X V\Ph||Az ΞB*3pB7S=LڂηIYV|riQZ`#yl;j0LaKMP~zqߒ5E[D,8=z*jup¬o~iIdE 'f?w ~4P#2KKy`*,XY.  ~~*D/Β' 2Z\$ 7~L :(ȅu`E&>W<|*ܠ^[Tc1+Vfp_66cv],9Jt^<65VI-z Xm̎d[t֥eX 3VlLǸ˞k!;闔8$9qI5:ꨚG *㳬 жTj>=Od*U4Oa $s(dAu 8H+b$qgU(K"˱d !*Sk!+B ޘMcqmH(iTِ󶜎ш(b`ll`xFg36t|_ܒ7&3ڋ:OSǪzVxf]aBbbX!;ȉvZY˕ hD*_ς~Yo$ >se)ewPۓ h D!?A1NI&).&7c},#^) r1m$H!ywyէxmN O}$U (*H`iKrl%宁Y{ή6 1?FS&:'BȤH6uq-,^tԇwO vrF7rPDV6Y $kJיK+.V?Z.P-g@q3`w Tbڒ:P{Y%(UR(9$iLDcJ~J lH6 sE]Gm>`@k<2MGީrT>RvCʂHX!9鰦iy\) FVA<'R}lj ;_B^cm X MH}U1n{IbIܱg]?[lUK_`#1a!qٝi9{Jd){Ρd[Rs?i }:ԟp {r%Kps8IT+Soԛ"4FqasrրZF$pP+;Ex=x}LXGRlPbh5q,YbfZ"26KQtY顈qxcb/<+%BeSbeJMPoG1lLkP2׌i=lx`|ϖ$jp,lhx8vjK^qO'/oʁˆz)zL¾e\m1OV#c 1\{O"Z9"LYX8n pWWC?1q,Lq>:qB&bzO9,T,.xDONјbjcÔhyr ՞!j7͌ @{` t!uZ`/AXtoe@4^DO+EJ0 G&rzvޕi)8|[׌2E>dΛ$?b56 ܼ(N/L2% R.' #ՂɝԊF4A@WfGQ@TIѶ lOU}gnQg$ \IJ?pͦv8 UVyGѽw8zkv5_xN/܂9VmS v0f{'5SkO76Lp7|e/$ڵm "YsN5.ӎS u5ooskcx:a dsਧi)h@@`[4秅sϼ.G|MS{l8 \sf{_۶"OڱAhxg7wuozzmcYw\郷{r[h,+(d`8{x۰O zν<}dte6xaP!lheJn ?1z1T܈poό`?isgM64Vz2:\pe,+3Ah#U.,]]M)匧=n/k+ =K<f2_M3 p3A+f;]G&'pb`3ZLҎվhϢeOID7@hOX ?r˴e,kx:g'/}"',4aQdc"7x4|歇<:.>q͓_BLX qd~. C@M~ZO~nZ.ٔ1szgyݧ ΟDlQ۶{L0!bJGYLKF  ?YX#CѰoϿD1/c%{8zĩDc-l IģLX.:{Y6w8\ Gm XOd1$>HZP5=F=~=w HpYқ'n++I9"Ǟ^6jf,=#`YfWgvH dċ3*P't8A΃ p?XA@Byۍ˯XcBvɩnRl)(ƯOpҟiL(&ۅYH<6OSϾeE6+BAk+~È >MIJ#Tl'''/f['9<❞:=F=  CV Oxm ɱua}OxiHcxQ8U(Ҵ+B׆lm*0<3xdm}Nv?[˨dН1q>Kej Cp?*bb"xtW{5,'7(|̈:PFzp\547'ٯ=gF r IN+2>n2c~Ѯi#18M[ސ\=]q{|D?sFo}{B?\7Х! ޵ć3j^0EE<{09r斁I3J8:%&j+tpꛐqFN_g{x-SKL&c`睙\9(3b !c3BR=x(`\rK:=+'M x4Ѭ<-JK ǀ<8TC& iise2Y1 Z]M+632Ru# clp%j2S A2 7=u?pe X~Ax+AhNC?Jt){L荡J X^. rfC0F(}pFX׾+}FEF3.!Ld"^Orc"7@}>^3GCz_H6&oӫW>x|j:\XG5WB_6=?{)*jO !?JHJ6Bbv$=#*#zA%h$@x>}Nvp]wcGBޠ'cx%+l|HFl;m$ewGWȟ|9ϛ0K`YIᦓAPѧw}֞/w`&m;myޓ hJ̤E$\2i҇b&-`kW$B ^,ElN_28>q 0K@jIIKx̞Z֧%F0[Q۾4u!{$<#^4.R9yL2#Y @Bj8_yJ@HrDk͑7+$v\pj mH;.K?]8>Z>+T֛:L=m<#^yt~/T _B#d }ۼV|XF{ఝ*&+P>?&8`~~06&tc"ڍQocB77#_Qv ȋGBW%Wl%:E1|1g~p| %Z!Se򚫇 >&"Şp>/`A~s觞77鵩ᄌw߰6J_gsDznkm)_(:%3*b`p|&*.׏o}}k,Oݼ7G$ gDGpg~;/.ϥv? v:}J(}A&JxN KYZG/Rs: hK^r:,s,fTit.$/OڇnI]ˮNv9ufԡܑguOןT@hcUܟ50хU7}^~KoWBa~YHjO=zN_ye?;J=\҆d_zX(R1JGiϤXLv:N<6g~\Jt<繇+tLקcW([)<3}*)^޳iso3}'ߒ^{.]ô]q6G4{z>&Gٵ}~uCTB K]dܒK߱_'#z|)-т}%A߷l `okP{lwXʓf;KmgXG46mXqmbA{D.>n ;C[WhوxBKvrbIWnR!ŞpTH"wkAP|hn~2ōo*7 'b8Z&yS~l `2R .׼O0ړFy5wCE5uqYǟ Kzϝ1mLB{癗wU1 iQQ]m? _x\6<~t:uF3Ӝ}ΦEJJ;5' t.B8u}5~1w[:~՜?:A◞ˌ.З]ǗG J_ﻇh&Wz+^y/}D:44éyOGWt ?GSXѠ\䋩~I:7wtv:&KW3mO9'e;qޔ8䅣\TiQ:v=P:%#GnknMŻ8>Xtt4"T8__, 3%q,䙼.μt Em v#!xka17ܰH(_T|p/B}–N@?yl8Woj3uV3o E^s~U"@N7:G2n~!X* HZvK[q7uiVK lBBK6UsbO8 hX@LV؊P[sG,ߘ@X?+OI0džGgX `DW|/rJc@lh:3|c83(p8sk JNe VΏ#!z^{4p[CŠڱ -&QK/~gBR|2gLo{t6Q1\ncE`QF}x޽okbPh#`K _Ge1ȴKJQ]zYXܗgǯ Xlu/k>qVqAcgGY$bsO>,IV1 50ެ[2C׉ABK;y&zVuh&15/)6i{_~md1:\趲]HR[k"C詆tnF ZŽ$1K a_odΐ2 a`! #-ٱgC6)l,#WHb&NDюi+Jv=;6H1a[FjTM"#>\Z@D8'mbiW'ZЗI/1:r-n\:PR]Ԑ|f cU rm 6` MzxvXP[׭b^olQ}&w3+wRe>o:+pI~>[@hpq+'hdlwXr "@8~PP*i?@x#c*2?X m@YE^ΎhtrT\\I+s]/P4D>TTz-6,3YB*G,0 8d[ b ,R}p-, 2"ڟy+Wwޘ 'Fh)lwy*`ѬYQ8p?y\=g2\ RŠլ:8^rϷl° Z;ꐉqScf{. ё o"* JQTwjLPJϸ0cohh^PS-ιlcA{U%bL8OLbBdpRKd0xW בu S  0tdmP^ClktelߡX h|뤹wmvMzE@&6ta,2ƭ{H 13n2PLQ/Be37aA@Llrt6G>lV!SzFdFO<':ѣ4+beƋZr^{Os?@ǡ#hh&x5hI+!Y0:B5<%}O?}G"){@/xdhg$]X wW't]1a⦋𫞲xѭ;uc'-Ͽ}!}H3;I=p%BvSbn*{ѵN_#}oSyPχ tg:_yWHoK3Hۦ7n%ډGmYW't^~V{3 ?KȦ9lȊb{usS8j4k:=yxA0hb%.F/ Q ظ$gȯkDd兲.?le z, ~]χFPbΪV$`<^Ho F@_Cx_te`Ą֑<ҳ/XI6E34@ # ӋbC3wxZM4}>s ͱ fZ4q8h3O,qM>ay5uzd`ɇ#.}׼nk kx(}{(d8Ae2Q@b\W=(bFd2  Csj^feVՇ@ l&x d}JDfri2ڟ}n0^iG%\칯ݵj$/. Qq@w^Kp.ϼO7ͱJ6\EtssQ> CJB7 1XBTWKMn}05' ݝS GT/}}}-{zXO t_qrTHmO<|~Qay_5QO;XlׯT׼(_;u7XʐM_MbP;cϣ-ϿfZ0A" ݐ*U1'RIґ@B?G8 v-6bbi5z,xnH&[&yٱ&#RI=?FT18rb];#j=?{YY̒ 2959{"놴j|e#}-?|^ i?iG/+ML o>LoNSiJÉ_|Y>''ݡ~-u-!?=Fzdt7{ T<#黥M_ <_yG侚z+ç~6wbn,:h:9k.6gIFdBqַY,}=*oUfl ^biF{k@]V\ mƹѿ֛ʭ$Ж_شo-Dmo8d#};R)D˶QE 1Ve#^4H;\lfyIV1rUV&FE}$䎀h7eLgy|z\!0Xj.ba$G i>Ji&Ol}!CC_Y˲q&z\AFYrZ̬so6#c )Zw[P94x#0Q/}Fj㭌# ?=h$mW tDI'F5"|QaF?6^M}4DHs~kF~-3ґ#]w6cB*z%iߛw?lWM7ӆy8@AM}W_5"<攗9>SGwM'yG* 35'тg\`z29kԯ] >tAȹ)(Dy#2w:_  EH d~y2*%!! ŭ(?IJ>[Zx<[a^k1#AđWƥZ-Zm?Le ~e9xLl׵-Kbf{䥺V xME"҉q͡T@,F.kjH:W|fdA`R{B&<\Nd]vAl_ D/ 7Vt.d,XaL.SY 6@g!lv-xhm%)(ZA]Q&g*i[њrK-fh[ \; .;L az/W7Njk85|}7i;RBztPoSɸtԮw%=6̣U}1Q3-%J0m>::fbմw|z=n^ySpsgG7}/F>]%~@/߼3'6P*'Nr"\fgkoK=9,2)-|g5/@XM^w'RAp:M}R!G9] d spqu{0]xTFr^s=g468KNB!6+ٛ"Ll}7V1* Y 1>!0.5[1 /mg'kCWD\+ 8Sy+!oN7Yɐ<ɘ|#-PWg( $&ْ9'85tY~n*(8:+b$Eqo o!` #<%1IȨ7l>ܣY ^+nTDk hWGYvv!}5vF$VV/ppi5t8rHiXK\bol 2&=p e2:P'YxsOmX O_v~>{+<ק Cu^]X)y_T:?HG~2mWS]GZk`itS_W?{ɚߧNZ>1/#@EQє7_|I+A VANt~w)!- >}ߟ3xƸ7~&yzG&Jƒzw\7קr>?sAhJHōwFz^]"?\k#``*+K_|rQZ2 ._|d0:m vX 7d6 u |0lVQ5 ,dp2h6!6N現(,H[+p_( Љ⫗8f{0#?`)LpD0aFxMVFhؘG #|wϫюUMѐ"kL - KW?Ag5kˆa5U&$_**_ (2!LdLʼpvtRCqo;ө^wqΩq:Wv_uS]WX|snz@ h,}zWAA%2*,?H \X苁PȾԉ}RvxO(C{=h%WoYQ;a8,#UwlgmeQ֢G۴Лx=sʎb><f0<nDS)! ͣ-]jt/ߠFjဈȃ/l-dL!nX1 cޭ$qUI[ox6D9B%VֿNl1^Cx 9yaҡ* nĉ7Zp pq9Ȝf{_JF`KZt8=.䣍Jz;U[>sel 0qvm3QV\*禯wA >)20f{t$z;3#b=K!쯕> (qj$S}GZfF/l`!4^YaZpQ\,RV ; CUu#c]TqҺSoT> *8y8G^'L15'uUcurn։֦P$ǹ\""H]\ỎҫI`TDF֛<}ɪ1e1] Tfڽ \8AP5Xuz a{u3ZewBvBUp \7n`VЅV@ E!,K^l+$AbմF_ՃϏtAk(ü  0mn/4f׹JWw?vUe y(=yicCvc9Q0=l kvl.9 ,s^D͹~_I`wacaR vʽ6 ƻ^`f/ h$&a^XJ"X 8E7>p3jl3|PX)j9nu̎PFSQ@8|>5݈Y(Fz(qp]w lsqp' #ٍ5F3{L>Tn':-xh=*M-.~Y3U ~a rv?C9 debq+" g1}>iF@pUiRT.!Z3SmŵʶW/vN dm#T`n9'rTŏ s*pqd较lHR3bjvϲZtLӪUW{ٍMɫ2v 3aUs9CP;e@t$1[cZL2877Eg2EUa:lF6bs2`F`"Ș3  @Q +p&BbBgpnQ &+S?Z`oJ1F Do/.|HYa0aݫkXYfe0 ЬQ!V#o]ó5|u/D#1K&HE [O%q5ZB ̶)@#'2fU71"_*k`P~(yݪgt\#~Fh~kHF2G;na[^ݒcS {rs'Fp|dI,~M&q7TYƆUI[ 1y{BOs5%pkAHv'36g UӐ- n!(L>ktET¥pV@܎,VrLzcvNE@DW`7u46,F\zFx8R5D5vDvZi0"voGH!ț$l:u(TC{cd +L "]1e1$&;,ہ n$jRz~=f0M?mh:dvVe-cd9y8.,r,Y~l@V{JqrوEڈJxoTOrd>ʢ_wY3uC0Mq%XKY]Q ɏݏF fq`޹:fFykO5J= -;ug,m \D7e 56s - 9 IFo8 6{5~GE>"f.l;sL)1ڛ `OȚk2؞DC%!cqc+yĠ$GNEϸ{g8zdDx8#lp6 M> YGF;̉nku`*vkƒCAKHcWR0[PpsYo*z 3Ycj/H\elzGgb+lv3[ AE@WJ XoP JvÂ}@D߳_@5D`;oK&MʊlFb0=U4G9A].JalWN ͕3y|}A vnQt&d%:®.^okG}|m"ù0k@Oa\YyT@uҚ!ՈIENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/appcollections/000755 001750 001750 00000000000 12312451003 027505 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/IBM.jpg000644 001750 001750 00000015215 12312451003 023415 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !AQq2Ba"b#C$4d'  !1AQaq"2B$Rbr4U#T%3CtE& ?M1qɯ0G1^%eQ`t `^l /#N]{0  0 r`G|-`hI3# v!4s' `^l / 1J`P0$(0Z -c9Dr30VRq)j%-ZcG Տ@ ȏ1O(V0Gk4`}nE-vmHKVnMs<C]T-gH BD(MىLMb)Ls9ODՔwV L {η AFb|pህM#kX|_{7<\Mb"r3}ܴԙnDf=-<,.LPA-<^R'Ԫ8L^q{Mi=˵7Ȟq#G.d9ׅQJ}zxǣ^=II2.A__{toPzp,+5/#?ǿun}6ܷX7 M>?T*`x-TEDԦ)(1IuJGq  }WzEXl_z2"y1|bl.:մjRɣoSWq^in ^Xc: {0{kq΅iJѦu"[C{Ѵij0T(;Hk̞2+XV9(J  r=L9c{ܽ HGz]+]m^ɶqSV0&K]>R"1}tU zڽS3S2%9%1qID£yr%JerɖDuß|F#RwFvFnӷ56Ne*W+UPHcÑC)fOp:q'(7%BSyQU,[HǦ9w*\Sn;$ :-+x=׋0On7{)!*7BRZj~*0k"aZ6R.FfcIC:e OK+h1_nNG]4fk-aPHŽpNAb!i䖝ZI4S zDp)qЗ)[m.d`pvHFѩd%kW2qW;:1]x#DƕR8}L<6YcTۻ]FVK4:MI"ۍN}'!A6(ScVE;19OƛۤJwFlN JPӪ-B9b5ݺW\I3âY9c9".eDd(f%IH#!'\qH,)hLn# jz.S+t`3"Z^bZD YsT|iRVoKĶJJ@'fX h/,٧zmo6 nv̆[8y۝aN̤XVTw h80T`@棿BܵQމ3YLfz5u7%>k˘(vDw% vmj?}obnq$323])lgTa/M:tqAG(cԶmWEaBxLT2H1 6昺eE]t%=s28Sg\*?QF6d?gݎD}6W}Uʻ-hV5lvKsXTͮeM+D̪L[6d&J  :UBiflK4 33Rqs>ޮВUGt$]$ x,KAm*ӧV-tE;iD^Jv/E9Uu)Z:m3YMkO.cD>Fl]A7?gJ -ҧY(wKR>!rtjTƨ5Y pIgtmi-Re-N%Á4w&_4Uрako9U45whRTw6JFs5G GkLy٪:*nBt2u&GmS&qzG VUYk^Rg cK;ZK!=QP{l/Bc0)%H>e6AG*: Q||iN|jBpKPGQ a6\6ths >]J8t&c8e{ŊƛrD}Ƒ҉C"@԰ik[ L&*@Qfݧ 7\'&IF1i^#rs&H$8jt#3pmHخW{,ALR+CyVtHd {3nmO+E!XmuwFX^J evlBmмsT:I 'js99J'7 =)j#tG)v%fjZ[`Ԧ0 7Ԇ0LȘP;|x֯ږ޹&@IBx 3I9;3OQI?nn&.^751xh-yIRТ0/ x31uKIHŚLza15rfRJL gl_m;TVlJʆ~{6T)+rvUhxRB*GAC/zO*j8gdXu+ , x,{b?1{N_~Oţ/*MmnzIE C&N1IKE֛zE+)9T̠lr6%vP (˾&y#r[tۥjE29#8/GDgqZe xUi@䕒W쩿ݱǶH)\QKu&5.N5hҧ8%Ì\E3m7?YM0H1+ʫVy.&X<7foWu_ݱ_w>ƍTFw[#{kxj?ѽ_;H䝕)k[ t%ʌ/4ixdKzE2 ˓`(S1)qa+ے]oSN} Cgzbkoki~sOҹvEu^r\]ӚҺƕL̗zj*i#gDDH!(dP?Od}m iՎ-[JfOI:cI^ܸ}uIOL;>Z,l2m^\:4?HcqmȔs:uT+~ygxWb񒪟Ww`l|IOg5&%^|;rԨ-Qw!)UEʡHhJjX@Gb4wV[xL>1OkG(Ʒæw rnŧs_"JБ3}&6LfHҏ&aLf]VT592坳qU}R?sHv8 ]"X(akEZM1'&M{<MGՁ&^4?т yy&H$w0PQ9u CX 0:ç( 4„2ˠzف,Iyouker-assistant-1.0.1/src/httpauth.cpp000644 001750 001750 00000011025 12312451003 020472 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "httpauth.h" #include #include #include HttpAuth::HttpAuth(QObject *parent) : QObject(parent) { mManager = new QNetworkAccessManager(this); QObject::connect(mManager, SIGNAL(finished(QNetworkReply*)),this, SLOT(replyFinished(QNetworkReply*))); } void HttpAuth::sendPostRequest(const QUrl &url, const QByteArray &data){ mUrl = url; QNetworkRequest request(mUrl); // request.setUrl(QUrl(strUrl)); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); mManager->post(request, data); } void HttpAuth::sendGetRequest(const QUrl &url) { mUrl = url; QNetworkRequest request; request.setUrl(mUrl); // request.setRawHeader("User-Agent", "Qt NetworkAccess 1.3"); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); mManager->get(request); } bool HttpAuth::isDigitStr(const QString& str/*QString str*/) { QByteArray ba = str.toLatin1();//QString转换为char* const char *s = ba.data(); while(*s && *s>='0' && *s<='9') s++; if (*s) { //不是纯数字 return false; } else { //纯数字 return true; } } void HttpAuth::replyFinished(QNetworkReply *reply){ if(reply && reply->error() == QNetworkReply::NoError) { /*QByteArray*/QString data = reply->readAll(); // qDebug() << "Result:->"; // qDebug() << data;//status=success,id=5,level=0,name=kobe,score=5,isfirststart=0,lastlogintime=2014-02-13 16:41:05,lastlogouttime=2014-02-13 16:41:05,holdtime=0 if(data.contains(",")) { QStringList tmp = data.split(","); if(tmp.at(0).contains("=")) { if (tmp.at(0).split("=").at(1) == "success") {//login success QMap kmaps; for(int i=1; iresponse(kmaps.value("id"), /*kmaps.value("level"), */kmaps.value("name"), kmaps.value("score")); emit this->successCommunicate();//查询当前信息,动态显示在界面上 } else if(tmp.at(0).split("=").at(1) == "search_success") {//search success QMap ymaps; for(int i=1; iisDigitStr(value.at(0))) { ymaps.insert(value.at(0), value.at(1)); emit this->refresh(/*ymaps.value("level"), */ymaps.value("score")); } } } } else { if(data == "no user,") { emit this->error(-1); } else if(data == "no pass,") { emit this->error(-2); } else if(data == "beat success,") {//每隔30分钟链接服务器成功 emit this->successCommunicate();//查询当前信息,动态显示在界面上 } else if(data == "beat fail,") {//每隔30分钟链接服务器失败 emit this->failedCommunicate(); } else if(data == "network,") {//主动查询网络 qDebug() << "newwork ok..."; } } } else if(data == "status=logout"){//正常注销 // qDebug() << "logout success......"; } } else { // qDebug() << reply->errorString();//"网络不能访问" // qDebug() << QString("%1").arg((int)reply->error());//99 emit this->error((int)reply->error());//99 } reply->close(); } youker-assistant-1.0.1/qml/func/cleaner/BrowserModel.qml000644 001750 001750 00000073332 12312451003 023623 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id:root width: parent.width height: 435 property string title: qsTr("Deep cleaning up the browser cache")//深度清理浏览器缓存 property string description: qsTr("Deep cleaning up the browser cache, to save disk space")//深度清理浏览器缓存,节省磁盘空间! property string btnFlag: "browser_scan"//browser_scan/browser_work property bool firefoxresultFlag: false//判断firefox扫描后的实际内容是否为空,为空时为false,有内容时为true property bool chromiumresultFlag: false//判断chromium扫描后的实际内容是否为空,为空时为false,有内容时为true property int firefoxNum//扫描后得到的firefox的项目总数 property int chromiumNum//扫描后得到的chromium的项目总数 property bool splitFlag: true//传递给CacheDelegate.qml,为true时切割字符串,为false时不切割字符串 property bool flag: false//记录是清理后重新获取数据(true),还是点击开始扫描后获取数据(false) property int spaceValue: 20 property int firefox_arrow_show: 0//传递给CacheDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property int chromium_arrow_show: 0//传递给CacheDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property bool firefox_expanded: false//传递给CacheDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool chromium_expanded: false//传递给CacheDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool firefox_maincheck: true property bool chromium_maincheck: true property bool firefox_showNum: false//决定firefox的扫描结果数是否显示 property bool chromium_showNum: false//决定chromium的扫描结果数是否显示 property bool firefoxEmpty: false//决定是否显示扫描内容为空的状态图 property bool chromiumEmpty: false//决定是否显示扫描内容为空的状态图 property int mode: 0//扫描模式:0表示两者都扫描,1表示只选中了firefox,2表示只选中了chromium // property string firefox_path//firefox的cache的绝对路径 // property string chromium_path//chromium的cache的绝对路径 property int item_height: 30 ListModel { id: firefoxmainModel } ListModel { id: firefoxsubModel } ListModel { id: chromiummainModel } ListModel { id: chromiumsubModel } Connections { target: sessiondispatcher onAppendContentToCacheModel: { //QString flag, QString path, QString fileFlag, QString sizeValue if(flag == "firefox") { firefoxsubModel.append({"itemTitle": path, "desc": fileFlag, "number": sizeValue, "index": root.firefoxNum}); root.firefoxNum += 1; systemdispatcher.set_browser_args(path); } else if(flag == "chromium") { chromiumsubModel.append({"itemTitle": path, "desc": fileFlag, "number": sizeValue, "index": root.chromiumNum}); root.chromiumNum += 1; systemdispatcher.set_browser_args(path); } } // onTellAbsPathToCacheModel: { // if(flag == "firefox") { // root.firefox_path = path; // } // else if(flag == "chromium") { // root.chromium_path = path; // } // } onTellQMLCaheOver: { if(flag == "browser") { doingImage.visible = false; firefoxmainModel.clear(); chromiummainModel.clear(); //Firefox缓存清理 firefoxmainModel.append({"mstatus": root.firefox_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Firefox Cache"), "picture": "../../img/toolWidget/firefox.png"}) //Chromium缓存清理 chromiummainModel.append({"mstatus": root.chromium_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Chromium Cache"), "picture": "../../img/toolWidget/chromium.png"}) if(root.firefoxNum != 0) { root.firefoxresultFlag = true;//扫描的实际有效内容存在 } else { if(root.mode == 0 || root.mode == 1) { root.firefoxEmpty = true; } root.firefoxresultFlag = false;//扫描的实际有效内容不存在 } if(root.chromiumNum != 0) { root.chromiumresultFlag = true;//扫描的实际有效内容存在 } else { if(root.mode == 0 || root.mode == 2) { root.chromiumEmpty = true; } root.chromiumresultFlag = false;//扫描的实际有效内容不存在 } if(root.firefoxresultFlag == false) { root.firefox_showNum = false; root.firefox_expanded = false;//伸缩箭头不扩展 root.firefox_arrow_show = 0;//伸缩箭头不显示 } else if(root.firefoxresultFlag == true) { root.firefox_showNum = true; root.firefox_expanded = true;//伸缩箭头扩展 root.firefox_arrow_show = 1;//伸缩箭头显示 } if(root.chromiumresultFlag == false) { root.chromium_showNum = false; root.chromium_expanded = false;//伸缩箭头不扩展 root.chromium_arrow_show = 0;//伸缩箭头不显示 } else if(root.chromiumresultFlag == true) { root.chromium_showNum = true; root.chromium_expanded = true;//伸缩箭头扩展 root.chromium_arrow_show = 1;//伸缩箭头显示 } if(root.firefoxresultFlag == false && root.chromiumresultFlag == false) { root.state = "BrowserWorkEmpty"; if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else {//清理firefox后的重新获取数据,此时不需要显示对话框 root.flag = false; } } else { if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 toolkits.alertMSG(qsTr("Scan completed!"), mainwindow.pos.x, mainwindow.pos.y);//扫描完成! } else {//清理chromium后的重新获取数据,此时不需要显示对话框 root.flag = false; } root.state = "BrowserWork"; actionBtn.text = qsTr("Begin cleanup");//开始清理 root.btnFlag = "browser_work"; backBtn.visible = true; // rescanBtn.visible = true; } scrollItem.height = (root.firefoxNum + 1) * root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; //扫描完成后恢复按钮的使能 actionBtn.enabled = true; } } } Component.onCompleted: { //Firefox缓存清理 firefoxmainModel.append({"mstatus": root.firefox_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Firefox Cache"), "picture": "../../img/toolWidget/firefox.png"}) //Chromium缓存清理 chromiummainModel.append({"mstatus": root.chromium_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Chromium Cache"), "picture": "../../img/toolWidget/chromium.png"}) } Connections { target: systemdispatcher onFinishCleanWorkError: {//清理出错时收到的信号 if (btnFlag == "browser_work") { if (msg == "browsercache") { doingImage.visible = false; root.state = "BrowserWorkError"; //清理过程中发生错误,解禁按钮 actionBtn.enabled = true; toolkits.alertMSG(qsTr("Cleanup abnormal!"), mainwindow.pos.x, mainwindow.pos.y);//清理出现异常! } } } onFinishCleanWork: {//清理成功时收到的信号 if (root.btnFlag == "browser_work") { doingImage.visible = false; if (msg == "") { //清理取消,解禁按钮 actionBtn.enabled = true; toolkits.alertMSG(qsTr("Cleanup interrupted!"), mainwindow.pos.x, mainwindow.pos.y);//清理中断! } else if (msg == "browsercache") { root.state = "BrowserWorkFinish"; toolkits.alertMSG(qsTr("Cleared!"), mainwindow.pos.x, mainwindow.pos.y);//清理完毕! //清理完毕后重新获取数据 root.flag = true; if(root.firefox_maincheck && root.chromium_maincheck) { firefoxmainModel.clear(); chromiummainModel.clear(); //Firefox缓存清理 firefoxmainModel.append({"mstatus": root.firefox_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Firefox Cache"), "picture": "../../img/toolWidget/firefox.png"}) //Chromium缓存清理 chromiummainModel.append({"mstatus": root.chromium_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Chromium Cache"), "picture": "../../img/toolWidget/chromium.png"}) systemdispatcher.clear_browser_args(); firefoxsubModel.clear();//内容清空 chromiumsubModel.clear();//内容清空 root.firefoxNum = 0;//隐藏滑动条 root.chromiumNum = 0;//隐藏滑动条 root.mode = 0; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_browser_cache_arglist(), 'browser'); } else { if(root.firefox_maincheck) { firefoxmainModel.clear(); //Firefox缓存清理 firefoxmainModel.append({"mstatus": root.firefox_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Firefox Cache"), "picture": "../../img/toolWidget/firefox.png"}) systemdispatcher.clear_browser_args(); firefoxsubModel.clear();//内容清空 chromiumsubModel.clear();//内容清空 root.firefoxNum = 0;//隐藏滑动条 root.chromiumNum = 0;//隐藏滑动条 root.mode = 1; sessiondispatcher.cache_scan_function_qt("firefox", 'browser'); } else if(root.chromium_maincheck) { chromiummainModel.clear(); //Chromium缓存清理 chromiummainModel.append({"mstatus": root.chromium_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Chromium Cache"), "picture": "../../img/toolWidget/chromium.png"}) systemdispatcher.clear_browser_args(); firefoxsubModel.clear();//内容清空 chromiumsubModel.clear();//内容清空 root.firefoxNum = 0;//隐藏滑动条 root.chromiumNum = 0;//隐藏滑动条 root.mode = 2; sessiondispatcher.cache_scan_function_qt("chromium", 'browser'); } } //清理成功完成,解禁按钮 actionBtn.enabled = true; } } } } //背景 Image { source: "../../img/skin/bg-middle.png"//bg-bottom-tab anchors.fill: parent } //titlebar Row { id: titlebar spacing: 20 width: parent.width anchors { top: parent.top; topMargin: 20; left: parent.left; leftMargin: 27 } Image { id: apt_refreshArrow source: "../../img/toolWidget/browser.png" Behavior on rotation { NumberAnimation { duration: 200 } } } Column { anchors.verticalCenter: parent.verticalCenter spacing: 10 Text { width: 500 text: root.title wrapMode: Text.WordWrap font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: 500 text: root.description wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } } Row{ anchors { top: parent.top; topMargin: 30;right: parent.right ; rightMargin: 20 } spacing: 20 Row { spacing: 20 anchors.verticalCenter: parent.verticalCenter Common.StyleButton { id: backBtn visible: false anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Back")//返回 width: 40 height: 20 onClicked: { root.firefoxEmpty = false; root.chromiumEmpty = false; if(root.firefox_maincheck == false) { root.firefox_maincheck = true; } if(root.chromium_maincheck == false) { root.chromium_maincheck = true; } systemdispatcher.clear_browser_args(); root.firefox_showNum = false; root.chromium_showNum = false; firefoxmainModel.clear(); chromiummainModel.clear(); //Firefox缓存清理 firefoxmainModel.append({"mstatus": root.firefox_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Firefox Cache"), "picture": "../../img/toolWidget/firefox.png"}) //Chromium缓存清理 chromiummainModel.append({"mstatus": root.chromium_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Chromium Cache"), "picture": "../../img/toolWidget/chromium.png"}) firefoxsubModel.clear();//内容清空 root.firefoxNum = 0;//隐藏滑动条 root.firefox_arrow_show = 0;//伸缩图标隐藏 chromiumsubModel.clear();//内容清空 root.chromiumNum = 0;//隐藏滑动条 root.chromium_arrow_show = 0;//伸缩图标隐藏 scrollItem.height = 2 * root.item_height + root.spaceValue*4; root.state = "BrowserWorkAGAIN";//按钮的状态恢复初始值 } } } Common.Button { id: actionBtn width: 94 height: 29 hoverimage: "green.png" text: qsTr("Start scanning")//开始扫描 fontsize: 13 anchors.verticalCenter: parent.verticalCenter onClicked: { //扫描过程中禁用按钮 actionBtn.enabled = false; root.firefoxEmpty = false; root.chromiumEmpty = false; // console.log("-----------"); // console.log(root.firefox_maincheck); // console.log(root.chromium_maincheck); if (root.btnFlag == "browser_scan") {//扫描 root.flag = false; if(root.firefox_maincheck && root.chromium_maincheck) { doingImage.visible = true; root.mode = 0; root.firefoxNum = 0; root.chromiumNum = 0; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_browser_cache_arglist(), 'browser'); } else { if(root.firefox_maincheck) { doingImage.visible = true; root.mode = 1; root.firefoxNum = 0; sessiondispatcher.cache_scan_function_qt("firefox", 'browser'); } else if(root.chromium_maincheck) { doingImage.visible = true; root.mode = 2; root.chromiumNum = 0; sessiondispatcher.cache_scan_function_qt("chromium", 'browser'); } else{ doingImage.visible = false; actionBtn.enabled = true; //友情提示: 对不起,您没有选择需要扫描的内容,请确认! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Sorry, You did not choose the content to be scanned, please confirm!"), mainwindow.pos.x, mainwindow.pos.y); } } } else if (root.btnFlag == "browser_work") {//清理 if(root.firefoxresultFlag || root.chromiumresultFlag) {//扫描得到的实际内容存在时 if(!root.firefox_maincheck && !root.chromium_maincheck) { //友情提示: 对不起,您没有选择需要清理的内容,请确认! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Sorry, You did not choose the content to be cleaned up, please confirm!"), mainwindow.pos.x, mainwindow.pos.y); } else { doingImage.visible = true; // console.log("33333333333"); // console.log(systemdispatcher.get_browser_args()); //开始清理时,禁用按钮,等到清理完成后解禁 actionBtn.enabled = false; systemdispatcher.clean_file_cruft_qt(systemdispatcher.get_browser_args(), "browsercache"); } } } } } AnimatedImage { id: doingImage anchors.verticalCenter: parent.verticalCenter width: 16 height: 16 visible: false source: "../../img/icons/move.gif" } } //分割条 Common.Separator { id: splitbar anchors { top: titlebar.bottom topMargin: 18 left: parent.left leftMargin: 2 } width: parent.width - 4 } Common.ScrollArea { frame:false anchors.top: titlebar.bottom anchors.topMargin: 30 anchors.left:parent.left // anchors.leftMargin: 27 height: root.height - titlebar.height - 47 width: parent.width -2//parent.width - 27 -2 Item { id: scrollItem width: parent.width height: root.item_height*2 + root.spaceValue*2*2 Column { spacing: root.spaceValue * 2 //垃圾清理显示内容 ListView { id: aptListView width: parent.width height: root.firefox_expanded ? (root.firefoxNum + 1) * root.item_height : root.item_height model: firefoxmainModel delegate: CacheDelegate{ sub_num: root.firefoxNum//root.aptsubNum//1212 sub_model: firefoxsubModel btn_flag: root.btnFlag arrowFlag: "firefoxcache" showNum: root.firefox_showNum arrow_display: root.firefox_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.firefox_expanded//firefox_expanded为true时,箭头向下,内容展开;firefox_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag emptyTip: root.firefoxEmpty onTellModelToOpenFolder: { if(category == "firefoxcache") { // sessiondispatcher.open_folder_qt(root.firefox_path); sessiondispatcher.open_folder_qt(path); } } //Cleardelegate中返回是否有项目勾选上,有为true,没有为false onCheckchanged: { // root.aptresultFlag = checkchange; root.firefox_maincheck = checkchange; } onArrowClicked: { if(cacheFlag == "firefoxcache") {//1212 if(expand_flag == true) { root.firefox_expanded = true; if(root.chromium_expanded == true) { scrollItem.height = (root.firefoxNum + 1) * root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = (root.firefoxNum + 2) * root.item_height + root.spaceValue*4; } } else { root.firefox_expanded = false; if(root.chromium_expanded == true) { scrollItem.height = (root.chromiumNum + 2) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2* root.item_height + root.spaceValue*4; } } } } } cacheBuffer: 1000 opacity: 1 spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } //垃圾清理显示内容 ListView { id: softListView width: parent.width height: root.chromium_expanded ? (root.chromiumNum + 1) * root.item_height : root.item_height model: chromiummainModel delegate: CacheDelegate{ sub_num: root.chromiumNum sub_model: chromiumsubModel btn_flag: root.btnFlag showNum: root.chromium_showNum arrowFlag: "chromiumcache" arrow_display: root.chromium_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.chromium_expanded//chromium_expanded为true时,箭头向下,内容展开;chromium_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag emptyTip: root.chromiumEmpty onTellModelToOpenFolder: { if(category == "chromiumcache") { // sessiondispatcher.open_folder_qt(root.chromium_path); sessiondispatcher.open_folder_qt(path); } } //Cleardelegate中返回是否有项目勾选上,有为true,没有为false onCheckchanged: { // root.softresultFlag = checkchange; root.chromium_maincheck = checkchange; } onArrowClicked: { if(cacheFlag == "chromiumcache") {//1212 if(expand_flag == true) { root.chromium_expanded = true; if(root.firefox_expanded == true) { scrollItem.height = (root.firefoxNum + 1) * root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = (root.chromiumNum + 2) * root.item_height + root.spaceValue*4; } } else { root.chromium_expanded = false; if(root.firefox_expanded == true) { scrollItem.height = (root.firefoxNum + 2) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2* root.item_height + root.spaceValue*4; } } } } } cacheBuffer: 1000 opacity: 1 spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } } } } states: [ State { name: "BrowserWork" PropertyChanges { target: actionBtn; text:qsTr("Begin cleanup")}//开始清理 PropertyChanges { target: root; btnFlag: "browser_work" } PropertyChanges { target: backBtn; visible: true} // PropertyChanges { target: rescanBtn; visible: true} }, State { name: "BrowserWorkAGAIN" PropertyChanges { target: actionBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btnFlag: "browser_scan" } PropertyChanges { target: backBtn; visible: false} // PropertyChanges { target: rescanBtn; visible: false} }, State { name: "BrowserWorkError" PropertyChanges { target: actionBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btnFlag: "browser_scan" } PropertyChanges { target: backBtn; visible: false} // PropertyChanges { target: rescanBtn; visible: false} }, State { name: "BrowserWorkFinish" PropertyChanges { target: actionBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btnFlag: "browser_scan" } PropertyChanges { target: backBtn; visible: false} // PropertyChanges { target: rescanBtn; visible: false} }, State { name: "BrowserWorkEmpty" PropertyChanges { target: actionBtn; text:qsTr("Start scanning")}//开始扫描 PropertyChanges { target: root; btnFlag: "browser_scan" } PropertyChanges { target: backBtn; visible: false} // PropertyChanges { target: rescanBtn; visible: false} } ] } youker-assistant-1.0.1/qml/func/common/ApplicationWindow.qml000644 001750 001750 00000001505 12312451003 024522 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import WindowType 0.1 Window { width: 320 height: 240 property alias toolBar: toolBarArea.data property alias statusBar: statusBarArea.data default property alias data: contentArea.data SystemPalette {id: syspal} Rectangle { anchors.fill: parent color: syspal.button } Column { id: toolBarArea anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right } Item { id: contentArea anchors.top: toolBarArea.bottom anchors.left: parent.left anchors.right: parent.right anchors.bottom: statusBarArea.top } Column { id: statusBarArea anchors.bottom: parent.bottom anchors.left: parent.left anchors.right: parent.right } } youker-assistant-1.0.1/qml/img/icons/move.png000644 001750 001750 00000001410 12312451003 021467 0ustar00saucysaucy000000 000000 PNG  IHDRWZtEXtSoftwareAdobe ImageReadyqe<IDATxbu6 J)1b)"%A`` @ >{5_{hX!@ d nsUYY d/H!H Uw0T%ނd1c@ 30jFY"Ā _)0P(ru2bXri0A`y  °7@5@SBV( Kwq4)d*8r0TO8 O=e2`bi#c aA;o9fÜ3/>|f_{= L!`>X-K- Zi0>X# % XV& x؀8!,%8Kz P>bs У=@À|@LfȐ]@섮 \PP@6%i@pJ(,^\'S 8%hb1F.P苁cd@ W 3lwk=5@:$/,Kagaa2ZXAA0uI9Xf ¸ $cC8Xl) &d[(; 1?~AY=А0Ah OIENDB`youker-assistant-1.0.1/qml/func/settings/LauncherTheme.qml000644 001750 001750 00000025141 12312451003 024165 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Rectangle { id: launcherthemepage width: parent.width height: 475 property bool first_slider_value: false //系统初始化时会使value的值为32(最小值),需要过滤掉 property string actiontitle: qsTr("Launcher settings")//启动器设置 property string actiontext: qsTr("Setting the Launcher display mode, Icon size.")//设置启动器的显示模式、图标尺寸。 //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //使用云配置后,控件状态根据配置发生相应的变化 Connections { target: sessiondispatcher onTellDownloadCloudConfToQML: { if(download == "launcher_autohide") { if (sessiondispatcher.get_launcher_autohide_qt()) { launcherswitcher.switchedOn = true; } else { launcherswitcher.switchedOn = false; } } else if(download == "launcher_icon_size") { slider.value = sessiondispatcher.get_launcher_icon_size_qt(); } } } Component.onCompleted: { if (sessiondispatcher.get_launcher_autohide_qt()) { launcherswitcher.switchedOn = true; } else { launcherswitcher.switchedOn = false; } if (sessiondispatcher.get_launcher_have_showdesktopicon_qt()) { showdesktopswitcher.switchedOn = true; } else { showdesktopswitcher.switchedOn = false; } } Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Text { text: launcherthemepage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: launcherthemepage.width - 80 - 20 text: launcherthemepage.actiontext wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } Row { id: settitle anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 120 } spacing: 5 Text{ id: launchertitle text: qsTr("Launcher settings")//启动器设置 font.bold: true font.pixelSize: 12 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: launcherthemepage.width - launchertitle.width - 40 * 2 } } Column { spacing: 20 anchors{ left: parent.left leftMargin: 60 top: settitle.bottom topMargin: 10 } z: 11 Row { spacing: 294 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: iconsizelabel width: 170 text: qsTr("Launcher icon size: ")//启动器图标尺寸: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.Slider { id: slider value: sessiondispatcher.get_launcher_icon_size_qt() onValueChanged: { if(launcherthemepage.first_slider_value ){ //系统初始化时会使value的值为32(最小值),需要过滤掉 sessiondispatcher.set_launcher_icon_size_qt(slider.value); } if(slider.value == 32) { //系统初始化时会使value的值为32(最小值),需要过滤掉 launcherthemepage.first_slider_value = true; } } width: iconsizelabel.width maximumValue: 64 minimumValue: 32 // tickmarksEnabled: true stepSize: 1 animated: true } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { var default_size = sessiondispatcher.get_default_unity_qt("unityshell", "icon_size"); // console.log(default_size); sessiondispatcher.set_default_unity_qt("launchersize", default_size); slider.value = default_size; } } } Row { spacing: 294 - 16 -20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: launcherlabel width: 170 text: qsTr("Launcher hide mode:")//启动器自动隐藏: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: launcherswitcher width: launcherlabel.width onSwitched: { if (launcherswitcher.switchedOn) { sessiondispatcher.set_launcher_autohide_qt(true); } else if(!launcherswitcher.switchedOn) { sessiondispatcher.set_launcher_autohide_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { var default_hide = sessiondispatcher.get_default_unity_qt("unityshell", "launcher_hide_mode"); if(default_hide) { sessiondispatcher.set_default_unity_qt("launcherhide", false); launcherswitcher.switchedOn = false; } else { sessiondispatcher.set_default_unity_qt("launcherhide", true); launcherswitcher.switchedOn = true; } } } } Row { spacing: 294 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "no" showImage: "../../img/icons/cloud-gray.png" } Common.Label { id: showdesktoplabel width: 170 text: qsTr("Display desktop icon: ")//显示桌面图标: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: showdesktopswitcher width: showdesktoplabel.width onSwitched: { if (showdesktopswitcher.switchedOn) { sessiondispatcher.set_launcher_have_showdesktopicon_qt(true); } else if(!showdesktopswitcher.switchedOn) { sessiondispatcher.set_launcher_have_showdesktopicon_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_launcher_have_showdesktopicon_qt(); if (sessiondispatcher.get_launcher_have_showdesktopicon_qt()) { showdesktopswitcher.switchedOn = true; } else { showdesktopswitcher.switchedOn = false; } } } } }//Column //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar showok: false height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } youker-assistant-1.0.1/src/image/loading.gif000755 001750 001750 00000026017 12312451003 021325 0ustar00saucysaucy000000 000000 GIF89a22gؘ38+i扶W.B6*zt49.̼BPB9TݘG3)B-K;T,-òBcUJiC+Iwv6kx;01[b[2blNdBrtP`)Ɉj~,X<#=LLHe 5ZC&8~Va y ѧwCKHQ2 H lq?˸@:,P $I+ (NxeTK!c8FX8+@lJghb@[`(e\ }D?#$I%;80VD +$ADh A{@Sl^×A  'yNI@хWt3$ r7 hA&shP?474G"BlSɧ :P/,#lz b@Ȳ@\p|PP@'@!pC-r+G#B#¹ƻ0žSmn>!!1"2P@;3G0sȦ O`O*-pBC7`@P\  l 80$1% t$Ab2 @A0C.]tA6]DsS@:AA7Ov.\ Pq7r2pBr6?҆7B |R!,00 HAiIÇniӜ"0i*Ga22$TǗEA ,0rKF RF()e58 iJlSV`=ӨM/S%DÅmoRZ+AW@ %1b9Kز +7l 4h("m teRu`i`&#vUbdB;F[ KoܠkqH3BMrAa!6y€$I"  Zq+ ԉ IsAA  %4 RDXhE 0 U H58?CBzͮѤ@z$r?p38 tʰzO12s4K$VT lwQtPMģ1mX zTPC`Y6I5|J(lXpP;נ BxP/+ mB:(T0S!Ds"?|@7QT\@46ߑTՄb@|Y-vf[}G??p6CfB!,00 H*\Ȱ@R簢łExC Fk+(\$_M%8lSR]IifN%0<ɥa@aTӢ^d&L Y]ȯ P%t)ɒҋ x ĕ.ADWd #A]ژHfmƙ18Bb7osg#] vT8ZXZ=P3gld ,A=Ӂ`q<P'BX[oX׈x tCxmJa 0AmE"Xb0GE8P' 10*R"1&NQoF8P/5pA ;=H yH (>4MF1ޕF@`^.Fpc?FqO&JC9 =O3"[B 921`M"`@ɴHg'*IG"gd TM2)>@MoƦp{$ƂC?Tcl1$ # Ԏ)|D Ҭ'4t >56*q 'ؼ .3_Q;=K5w4f",.HE K $D-*JJp9At. ) PG=rJrC ")5|Ͱn\m b U 2 ?!pQ!{Q>wPC+Д?R"a]#!^?;!q3!?S?^3E7d@!,0+ Hp` a7\FSP!A2T.+bUq&J`\R LD* ,9:TRH" Atӄh-xkL4-u*U< ,?󼘘%V%N2iWߍysae%ٰ1 aPf( +l!*Â<`?3^穸'!,BںohG8Ƹ'E^n0MO8NDX+:015vyJiTRP_C=$_R*E$C($CI$B - @.kq ~!-rɠ'?H \(q $5@r48&vE(\ӡ)SĜ5d`ye"dS 1&r2mL"-5grgPM)L0„2M2 >p \p?zq)\g$`FpA?Ř'F=\)zR !mP(NO 5-6O=RC * F;;`QD8p+. H5몢P$N>DS*s̱ 6@!r@#0|@x!S` C|A:l"@r8]ҤB4H9Ҳ<%@ ,H Ep K70!Q$ $eBdSQw-#N:Pr`#FGC#bQr#aCw,r2tR%gpF@ȟӥ/yp3|(ƢmsǤg@bq$/NR>H# ҆곀)vDuO@zAz#"ybL i\>biW.p ?"iq#5RC2*k d!{rD1S'@'G1)T)[D?|J1z>z*Qs 5*9X>)psP3߀Ʉma"@5-$JM >܃"(D Ō(P숂;p<'Z p!oH2'BńrrE.$c ^DL تAqhҬ 4p=En ,N6EcμUQBٸc2<x%0Ѝ |BA&~!,00 HMX1) 0HŁ*6mTa¤L9X^]\IQ]!Ȕc+AOsdD%dj32ȕs.~ίBb4)U|GȮ]Bd+87-EK C8۸fv&J!Bt`_~kd&VD$ J$'ÿL nFVd-@ toʐa Ib3"a#;-^XRp)Q"OiNcOp\ KP+Z@ @| A04 $ 70I O,?!p%r?WR04"ǘr4dr`)G#!4ś@:r?L14 ƟbOAlbAmyYw>H:6 ЎK M*TZ6B5 ʃ/`k5/9Q)5T(sD5VCTP >ՠ")7$>䦀O|`M(ǻzrtm 9%XӴ @5 5kpXc5ܓb\$Sܵq@CR`qq \02 st "C: ж 9cLr!XAF$IeMRA2tJe JʿP8)V ߂`)d!,/0 HȠѤI7+yH9d* Y|.8S%#O_ξ /U3)m݊RyRG\B %Gb&O0yR&8UT+A°I+`ڵt/,Rř\nBZ"c XE[ @XYQbHi@4 =T%A9?$90gN0^9 r tNtЧ @;bp Щ&6' *`pǦ89&6m5`f<r5CvL,E 5P)bUu$)9ؑ>S 6`%(!@|X@$NLtB1=)"@bm\9:Xp9(C֘04$#dCo:CX@ .#L2 ̤wG@3R`q 1p,#;Ÿ2 .Af`_,.84xPtfQX! @|aQH_[hrՐ< @ ,Slb!,.0 H O!#Jy|_8nIqVHK!F3'MbFH0aa*#(d 4)Qhm&Тp~G)8qlNOQѠф.W+ v3eR\ǜ}%"H se\dGV2Wäv `PC]TJh:H8Q$ 2 +QyũDt&`<0bL%N&L +L&ZĖIEˊ` ~E´0+ xa'`DhD$`vQDž~#`$" +"~Aǎ܈\ 8Z>pN L@@p9IArfN!̹x çD!L`ZP4:!GP*TiA1ʩ1?pZ f>p !N8Χ@H"{b"$"E:I؜p ҪM> $CPs 퐀o1DB:8bI2#(*"–1N,C(cPbm'vQA 5S6d.tK,x?0;X"9C"c@wL"g oGN4R<%v6@F4htq@8 T [li@!lL, .妲t§=B,]0Q,$㎕  B=Dq:Et2 4 6Atٮ CO/A)6C!pȹЍUhB:P;#$ E<3uweα+;opPL1&E 5B wEdC *.5P)A:-JJ "z o`AaG=6< BDH:HѰ%"CQ v)wPH6hr;youker-assistant-1.0.1/qml/img/weather/d23.gif000644 001750 001750 00000005377 12312451003 021436 0ustar00saucysaucy000000 000000 GIF89a00·ִ҈ȷ׼¹θͶن־Ģԩݻ6q8s7n:uyA~?z>z@{A|6gB};pC~C4bD6eD|HE~8eGKDx?n=jOLJ~DuRWVMCn^UR][U`dcba[hfe_hjckiRznmkpmpuswqvutsv|ywY{zy}|{〳~}ނ側ㅸ炴Ⴒ߆䅵⋺pXoihipnptuxzw}s~߃サ⦻!,00 lFM4pԴAðÇ#:$ͨ- <4ӈIɓ$w %8gذ8ӣ͛8s f7tdt3ѣH*] 7l޸35N7tPʵׯ`1V8gY6rޱzuʔ÷kzr(^mb;fp2th3ɣd>@Yͺ>@Qzb\ -c'=t?xanrbC HɟO?P{" ܠ B \0B|"F!Q  03! Aᄈ(c bȌ.xy"Ѐ,\@(?!Ȍ1*Ȕ(b^Z&f0 3P @)\,B%C $uNGpA C,Ђ "Y$d X` tF#4RBbDbwH0$~'PBp)%7$TP &L@2k k-if,`lFf *pp 'c<+%K އb8ñ0n )0RB1`^0 5 "D*1 RByP*NqT"TE.>a D  6l}#T8 OT'F %l.hcNW*\#\D Wؐct "hb *P.bv#XԢcEq Vq d%DQX 0) H%&c!NP,Zd|aȅ'KyTƂ7t` r , U.hq Z"H ] s2)L\h$IOh-rD-n\bG@ab@Q g&#)[#9׹]Bp.t0a_G[0ը$qt@>t Z-xAӚ Qh/b0-L1 &B0 F`N7a|!LhBU&0VX"0/0s5(8 Xl N0n:W* aP(0!%:ܡZ  0z_(v0bִE0 d pf!Y 2h;uVm1[droZ)H̘3;c<&!eLڕq S QhA/ ^2cU` iX2_X82P`5E2Lce/ e`ó'B/ac<#b?Hvx @}Vp3as@2QΠ30ʏ~ rHbțALf yQ2 iL$X1 i4A]s<1kF66႕n5af0O#4! XHB `;hV8"f4YhGҘ%@U#Р4 mh@ҰFah( 5jkX#u6+d 4jlDѸ<+\n{Ɔ5o`cؐ<ҭy oyl=эmlCYNF5;youker-assistant-1.0.1/src/image/memory.png000644 001750 001750 00000010477 12312451003 021237 0ustar00saucysaucy000000 000000 PNG  IHDRW)ttEXtSoftwareAdobe ImageReadyqe<IDATxڼK @D <'Dׂng2ApjGrlw}F!w(€PchE4Sٓ+>Z?aRSKM0D0d@39#/0Y?{})a@LhDaJNơsoPq(ޟRjwW2FA dXXÕ2[^l0i6M&ofM|nb,c ..t2p?o-B~2raos~!AE,foqۗ3 ,x(bJ T1H!s)aL"/FDXr`)lMÿY]ua lP[׾C{_( A6KG)!NR2d;љ+>7x¼!υcML&573te/ڕ)RNmS$ƨܯ(G*ḵ8ȱHC/ԩS** t(?U%8Ym+k NG`m߯X AkyCYZ]-9V:і(e + ^" xA9m)k 9M'|jn(֟ !Q9 բ@kZH/B|V9l2R[*o>7Ro;҈ \+c u!U/ vP},݁er۫z&2OzĬC6:A7WVkK24` 7JX NBv!a2^TSMH;`#v`]+Hra G<3Wnp`[4#Nvds(REY6TJn4^>7>R 0%ϋwDHrHHֲru|"v\P _f 4LXV9~Kɞ?c?U ][j'T$H}6dqi`vW># _ w*S"q=yX{ ]fjm5%ۍdSu%1[us!( 6Z3@½}M*Lo8`4WOK.z,D'"Z"~DLG7|@~bQa6Mu&uF08VRQVdbVB6Env`r6,2`W/OCJ.+qOOR;iOx0Oiɔ _& 3;[_9(aGM$tyGT%;IԿstpt'O['o VqxRSX_iH)oVzw<5g؉ɇHAw R $S&Nhη`|8z޲TX[Q@H@ J &؈G^H(U+v%EG]sڋH%bANx;ЗɄҞQcPsQ¯\^<\!Co?1JXei)|hBڽQ\YtD<<Pμ 1ߍFo*ƊHBGo{xRmyFH+!+^ k9ZJuMu?'{F 55Μ\?PU|n>͏>l7ŅK/ 'ܥvD8s zRQ}7aWnL}_}?s.;`1 ,YΚo03K$ FBbԝKM/.Ww:$3ѨJRT/)Eٟ+}M/WnûtPl 莇~x碻>_c 0ԁ௤ %`Cy$l;ȿGh=t[* V ~J[6_kZɩ85sq̫ u׿w{?׶˿ˁ6Dx"e@YcW@"wQ A ]љힹv<7roiR@(* mZft8nV-Hb] b&Ҁ1J+pa {^Gή?a[T_jH "eUH[tz*s ﲄv37QH7!+sѰ2R3^[T\[}`89T]O!'71V%*yPP0X|\[*` T\cݶ4j8cFb✊:+o0qnk\U jXW;ЅyG1Nbӄ0O_9UtP=[:OvRe6kMK ] o Q* =\`ZqiW`vSpi5+'R3T^*'Nć)T4cmMvz^aI5{n/ ٱR=ŧ:T탇\Of` N ]Th=1f(:BY"̒h]imODBTP]%P}EJuxBŋPa&wjꁕσMRvy tA@jpfYៅu>B5Yxhx 3eMrG\"L&z/ ej7hRAo`yP1O%8X|T@9OUhcUJ5R\C~'/+`r6TDp88UUH`2=8sSilsMuP{*|$y|mٖmدme[Bi&IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/cloudconfig.py000644 001750 001750 00000074665 12312451003 031166 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import ConfigParser import os, sys import threading import gsettings from shutil import copy class CloudConfig(threading.Thread): def __init__(self, sysdaemon): self.sysdaemon = sysdaemon self.conf = ConfigParser.ConfigParser() self.home = os.path.expandvars('$HOME') self.youker_path = './' self.kuaipan_path = '' # write profiles def write_conf(self, section, conf_id, conf_schema, conf_path, conf_key, conf_type): value = gsettings.get(conf_schema, conf_path, conf_key, conf_type) if (conf_id in section): self.conf.set(conf_id, 'value', str(value)) else: self.conf.add_section(conf_id) self.conf.set(conf_id, 'schema', conf_schema) self.conf.set(conf_id, 'path', conf_path) self.conf.set(conf_id, 'key', conf_key) self.conf.set(conf_id, 'type', conf_type) self.conf.set(conf_id, 'value', str(value)) # Save system configuration def save_configuration_to_local_file(self, file_name): self.conf.read(file_name) sections = self.conf.sections() # 桌面图标显示控制----------------------------- self.write_conf(sections, 'show_desktop_icons', 'org.gnome.desktop.background', None, 'show-desktop-icons', 'boolean') self.write_conf(sections, 'show_homefolder', 'org.gnome.nautilus.desktop', None, 'home-icon-visible', 'boolean') self.write_conf(sections, 'show_network', 'org.gnome.nautilus.desktop', None, 'network-icon-visible', 'boolean') self.write_conf(sections, 'show_trash', 'org.gnome.nautilus.desktop', None, 'trash-icon-visible', 'boolean') self.write_conf(sections, 'show_devices', 'org.gnome.nautilus.desktop', None, 'volumes-visible', 'boolean') # 启动器设置---------------------------------- self.write_conf(sections, 'launcher_autohide', 'org.compiz.unityshell', '/org/compiz/profiles/unity/plugins/unityshell/', 'launcher-hide-mode', 'int') self.write_conf(sections, 'launcher_icon_size', 'org.compiz.unityshell', '/org/compiz/profiles/unity/plugins/unityshell/', 'icon-size', 'int') # 触摸板设置----------------------------------- self.write_conf(sections, 'touchpad_enable', 'org.gnome.settings-daemon.peripherals.touchpad', None, 'touchpad-enabled', 'boolean') self.write_conf(sections, 'touch_horizontal_scrolling', 'org.gnome.settings-daemon.peripherals.touchpad', None, 'horiz-scroll-enabled', 'boolean') self.write_conf(sections, 'type_scroll_bar', 'com.canonical.desktop.interface', None, 'scrollbar-mode', 'string') self.write_conf(sections, 'touchpad_scrolling_mode', 'org.gnome.settings-daemon.peripherals.touchpad', None, 'scroll-method', 'string') # 字体设置------------------------------------- self.write_conf(sections, 'default_font', 'org.gnome.desktop.interface', None, 'font-name', 'string') self.write_conf(sections, 'desktop_font', 'org.gnome.nautilus.desktop', None, 'font', 'string') self.write_conf(sections, 'document_font', 'org.gnome.desktop.interface', None, 'document-font-name', 'string') self.write_conf(sections, 'monospace_font', 'org.gnome.desktop.interface', None, 'monospace-font-name', 'string') self.write_conf(sections, 'window_title_font', 'org.gnome.desktop.wm.preferences', None, 'titlebar-font', 'string') self.write_conf(sections, 'font_zoom', 'org.gnome.desktop.interface', None, 'text-scaling-factor', 'double') self.write_conf(sections, 'font_hinting', 'org.gnome.settings-daemon.plugins.xsettings', None, 'hinting', 'string') self.write_conf(sections, 'font_antialiasing', 'org.gnome.settings-daemon.plugins.xsettings', None, 'antialiasing', 'string') # 主题设置------------------------------------- #self.write_conf(sections, 'gtk_theme', # 'org.gnome.desktop.interface', # None, 'gtk-theme', 'string') self.write_conf(sections, 'window_theme', 'org.gnome.desktop.wm.preferences', None, 'theme', 'string') self.write_conf(sections, 'icon_theme', 'org.gnome.desktop.interface', None, 'icon-theme', 'string') # 窗口设置-------------------------------------- self.write_conf(sections, 'window_button', 'org.gnome.desktop.wm.preferences', None, 'button-layout', 'string') self.write_conf(sections, 'menus_have_icons', 'org.gnome.desktop.interface', None, 'menus-have-icons', 'boolean') self.write_conf(sections, 'titlebar_wheel', 'org.compiz.gwd', None, 'mouse-wheel-action', 'string') self.write_conf(sections, 'titlebar_double', 'org.gnome.desktop.wm.preferences', None, 'action-double-click-titlebar', 'string') self.write_conf(sections, 'titlebar_middle', 'org.gnome.desktop.wm.preferences', None, 'action-middle-click-titlebar', 'string') self.write_conf(sections, 'titlebar_right', 'org.gnome.desktop.wm.preferences', None, 'action-right-click-titlebar', 'string') # 文件管理器----------------------------------- self.write_conf(sections, 'location_replace_pathbar', 'org.gnome.nautilus.preferences', None, 'always-use-location-entry', 'boolean') self.write_conf(sections, 'auto_mount_media', 'org.gnome.desktop.media-handling', None, 'automount', 'boolean') self.write_conf(sections, 'auto_open_folder', 'org.gnome.desktop.media-handling', None, 'automount-open', 'boolean') self.write_conf(sections, 'prompt_autorun_programs', 'org.gnome.desktop.media-handling', None, 'autorun-never', 'boolean') self.write_conf(sections, 'thumbnail_icon_size', 'org.gnome.nautilus.icon-view', None, 'thumbnail-size', 'int') self.write_conf(sections, 'thumbnail_cache_time', 'org.gnome.desktop.thumbnail-cache', None, 'maximum-age', 'int') self.write_conf(sections, 'thumbnail_cache_size', 'org.gnome.desktop.thumbnail-cache', None, 'maximum-size', 'int') fd = open(file_name, 'w') self.conf.write(fd) fd.close() # system settings def setconf(self, conf_id): conf_schema = self.conf.get(conf_id, 'schema') conf_path = self.conf.get(conf_id, 'path') if conf_path == 'None': conf_path = None conf_key = self.conf.get(conf_id, 'key') conf_type = self.conf.get(conf_id, 'type') if conf_type == 'boolean' : conf_value = self.conf.getboolean(conf_id, 'value') elif conf_type == 'int' : conf_value = self.conf.getint(conf_id, 'value') elif conf_type == 'double' or conf_type == 'float' : conf_value = self.conf.getfloat(conf_id, 'value') else : conf_value = self.conf.get(conf_id, 'value') #gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) if conf_id == 'window_button': value = gsettings.get('org.gnome.desktop.wm.preferences', None, 'button-layout', 'string') left_list = ['close,minimize,maximize:', 'close,maximize,minimize:'] right_list = [':minimize,maximize,close', ':maximize,minimize,close'] if value in left_list and conf_value in right_list: gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) self.sysdaemon.download_cloud_conf_signal('window_button') elif value in right_list and conf_value in left_list: gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) self.sysdaemon.download_cloud_conf_signal('window_button') else: value = gsettings.get(conf_schema, conf_path, conf_key, conf_type) if value != conf_value: gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) self.sysdaemon.download_cloud_conf_signal(conf_id) #----------------desktop icon settings---------------- #if conf_id == 'show_desktop_icons': # value = gsettings.get('org.gnome.desktop.background', # None, 'show-desktop-icons', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('show_desktop_icons') #elif conf_id == 'show_homefolder': # value = gsettings.get('org.gnome.nautilus.desktop', # None, 'home-icon-visible', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('show_homefolder') #elif conf_id == 'show_network': # value = gsettings.get('org.gnome.nautilus.desktop', # None, 'network-icon-visible', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('show_network') #elif conf_id == 'show_trash': # value = gsettings.get('org.gnome.nautilus.desktop', # None, 'trash-icon-visible', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('show_trash') #elif conf_id == 'show_devices': # value = gsettings.get('org.gnome.nautilus.desktop', # None, 'volumes-visible', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('show_devices') #----------------launcher settings---------------- #elif conf_id == 'launcher_autohide': # value = gsettings.get('org.compiz.unityshell', # '/org/compiz/profiles/unity/plugins/unityshell/', # 'launcher-hide-mode', 'int') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('launcher_autohide') #elif conf_id == 'launcher_icon_size': # value = gsettings.get('org.compiz.unityshell', # '/org/compiz/profiles/unity/plugins/unityshell/', # 'icon-size', 'int') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('launcher_icon_size') #----------------touchpad settings---------------- #elif conf_id == 'touchpad_enable': # value = gsettings.get('org.gnome.settings-daemon.peripherals.touchpad', # None, 'touchpad-enabled', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('touchpad_enable') #elif conf_id == 'touch_horizontal_scrolling': # value = gsettings.get('org.gnome.settings-daemon.peripherals.touchpad', # None, 'horiz-scroll-enabled', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('touch_horizontal_scrolling') #elif conf_id == 'type_scroll_bar': # value = gsettings.get('com.canonical.desktop.interface', # None, 'scrollbar-mode', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('type_scroll_bar') #elif conf_id == 'touchpad_scrolling_mode': # value = gsettings.get('org.gnome.settings-daemon.peripherals.touchpad', # None, 'scroll-method', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('touchpad_scrolling_mode') #----------------font settings---------------- #elif conf_id == 'default_font': # value = gsettings.get('org.gnome.desktop.interface', # None, 'font-name', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('default_font') #elif conf_id == 'desktop_font': # value = gsettings.get('org.gnome.nautilus.desktop', # None, 'font', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('desktop_font') #elif conf_id == 'document_font': # value = gsettings.get('org.gnome.desktop.interface', # None, 'document-font-name', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('document_font') #elif conf_id == 'monospace_font': # value = gsettings.get('org.gnome.desktop.interface', # None, 'monospace-font-name', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('monospace_font') #elif conf_id == 'window_title_font': # value = gsettings.get('org.gnome.desktop.wm.preferences', # None, 'titlebar-font', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('window_title_font') #elif conf_id == 'font_zoom': # value = gsettings.get('org.gnome.desktop.interface', # None, 'text-scaling-factor', 'double') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('font_zoom') #elif conf_id == 'font_hinting': # value = gsettings.get('org.gnome.settings-daemon.plugins.xsettings', # None, 'hinting', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('font_hinting') #elif conf_id == 'font_antialiasing': # value = gsettings.get('org.gnome.settings-daemon.plugins.xsettings', # None, 'antialiasing', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('font_antialiasing') #----------------theme settings---------------- #elif conf_id == 'gtk_theme': # value = gsettings.get('org.gnome.desktop.interface', # None, 'gtk-theme', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('gtk_theme') #elif conf_id == 'window_theme': # value = gsettings.get('org.gnome.desktop.wm.preferences', # None, 'theme', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('window_theme') #elif conf_id == 'icon_theme': # value = gsettings.get('org.gnome.desktop.interface', # None, 'icon-theme', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('icon_theme') #----------------window settings---------------- #elif conf_id == 'window_button': # value = gsettings.get('org.gnome.desktop.wm.preferences', # None, 'button-layout', 'string') # left_list = ['close,minimize,maximize:', 'close,maximize,minimize:'] # right_list = [':minimize,maximize,close', ':maximize,minimize,close'] # if value in left_list and conf_value in right_list: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('window_button') # elif value in right_list and conf_value in left_list: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('window_button') #elif conf_id == 'menus_have_icons': # value = gsettings.get('org.gnome.desktop.interface', # None, 'menus-have-icons', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('menus_have_icons') #elif conf_id == 'titlebar_wheel': # value = gsettings.get('org.compiz.gwd', # None, 'mouse-wheel-action', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('titlebar_wheel') #elif conf_id == 'titlebar_double': # value = gsettings.get('org.gnome.desktop.wm.preferences', # None, 'action-double-click-titlebar', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('titlebar_double') #elif conf_id == 'titlebar_middle': # value = gsettings.get('org.gnome.desktop.wm.preferences', # None, 'action-middle-click-titlebar', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('titlebar_middle') #elif conf_id == 'titlebar_right': # value = gsettings.get('org.gnome.desktop.wm.preferences', # None, 'action-right-click-titlebar', 'string') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('titlebar_right') #----------------file manager---------------- #elif conf_id == 'location_replace_pathbar': # value = gsettings.get('org.gnome.nautilus.preferences', # None, 'always-use-location-entry', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('location_replace_pathbar') #elif conf_id == 'auto_mount_media': # value = gsettings.get('org.gnome.desktop.media-handling', # None, 'automount', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('auto_mount_media') #elif conf_id == 'auto_open_folder': # value = gsettings.get('org.gnome.desktop.media-handling', # None, 'automount-open', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('auto_open_folder') #elif conf_id == 'prompt_autorun_programs': # value = gsettings.get('org.gnome.desktop.media-handling', # None, 'autorun-never', 'boolean') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('prompt_autorun_programs') #elif conf_id == 'thumbnail_icon_size': # value = gsettings.get('org.gnome.nautilus.icon-view', # None, 'thumbnail-size', 'int') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('thumbnail_icon_size') #elif conf_id == 'thumbnail_cache_time': # value = gsettings.get('org.gnome.desktop.thumbnail-cache', # None, 'maximum-age', 'int') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('thumbnail_cache_time') #elif conf_id == 'thumbnail_cache_size': # value = gsettings.get('org.gnome.desktop.thumbnail-cache', # None, 'maximum-size', 'int') # if value != conf_value: # gsettings.set(conf_schema, conf_path, conf_key, conf_type, conf_value) # self.sysdaemon.download_cloud_conf_signal('thumbnail_cache_size') # desktop icon settings #if conf_id == 'show_desktop_icons': # self.sysdaemon.download_cloud_conf_signal('show_desktop_icons') #elif conf_id == 'show_homefolder': # self.sysdaemon.download_cloud_conf_signal('show_homefolder') #elif conf_id == 'show_network': # self.sysdaemon.download_cloud_conf_signal('show_network') #elif conf_id == 'show_trash': # self.sysdaemon.download_cloud_conf_signal('show_trash') #elif conf_id == 'show_devices': # self.sysdaemon.download_cloud_conf_signal('show_devices') # launcher settings #elif conf_id == 'launcher_autohide': # self.sysdaemon.download_cloud_conf_signal('launcher_autohide') #elif conf_id == 'launcher_icon_size': # self.sysdaemon.download_cloud_conf_signal('launcher_icon_size') # touchpad settings #elif conf_id == 'touchpad_enable': # self.sysdaemon.download_cloud_conf_signal('touchpad_enable') #elif conf_id == 'touch_horizontal_scrolling': # self.sysdaemon.download_cloud_conf_signal('touch_horizontal_scrolling') #elif conf_id == 'type_scroll_bar': # self.sysdaemon.download_cloud_conf_signal('type_scroll_bar') #elif conf_id == 'touchpad_scrolling_mode': # self.sysdaemon.download_cloud_conf_signal('touchpad_scrolling_mode') # font settings #elif conf_id == 'default_font': # self.sysdaemon.download_cloud_conf_signal('default_font') #elif conf_id == 'desktop_font': # self.sysdaemon.download_cloud_conf_signal('desktop_font') #elif conf_id == 'document_font': # self.sysdaemon.download_cloud_conf_signal('document_font') #elif conf_id == 'monospace_font': # self.sysdaemon.download_cloud_conf_signal('monospace_font') #elif conf_id == 'window_title_font': # self.sysdaemon.download_cloud_conf_signal('window_title_font') #elif conf_id == 'font_zoom': # self.sysdaemon.download_cloud_conf_signal('font_zoom') #elif conf_id == 'font_hinting': # self.sysdaemon.download_cloud_conf_signal('font_hinting') #elif conf_id == 'font_antialiasing': # self.sysdaemon.download_cloud_conf_signal('font_antialiasing') # theme settings #elif conf_id == 'gtk_theme': # self.sysdaemon.download_cloud_conf_signal('gtk_theme') #elif conf_id == 'window_theme': # self.sysdaemon.download_cloud_conf_signal('window_theme') #elif conf_id == 'icon_theme': # self.sysdaemon.download_cloud_conf_signal('icon_theme') # window settings #elif conf_id == 'window_button': # self.sysdaemon.download_cloud_conf_signal('window_button') #elif conf_id == 'menus_have_icons': # self.sysdaemon.download_cloud_conf_signal('menus_have_icons') #elif conf_id == 'titlebar_wheel': # self.sysdaemon.download_cloud_conf_signal('titlebar_wheel') #elif conf_id == 'titlebar_double': # self.sysdaemon.download_cloud_conf_signal('titlebar_double') #elif conf_id == 'titlebar_middle': # self.sysdaemon.download_cloud_conf_signal('titlebar_middle') #elif conf_id == 'titlebar_right': # self.sysdaemon.download_cloud_conf_signal('titlebar_right') # file manager #elif conf_id == 'location_replace_pathbar': # self.sysdaemon.download_cloud_conf_signal('location_replace_pathbar') #elif conf_id == 'auto_mount_media': # self.sysdaemon.download_cloud_conf_signal('auto_mount_media') #elif conf_id == 'auto_open_folder': # self.sysdaemon.download_cloud_conf_signal('auto_open_folder') #elif conf_id == 'prompt_autorun_programs': # self.sysdaemon.download_cloud_conf_signal('prompt_autorun_programs') #elif conf_id == 'thumbnail_icon_size': # self.sysdaemon.download_cloud_conf_signal('thumbnail_icon_size') #elif conf_id == 'thumbnail_cache_time': # self.sysdaemon.download_cloud_conf_signal('thumbnail_cache_time') #elif conf_id == 'thumbnail_cache_size': # self.sysdaemon.download_cloud_conf_signal('thumbnail_cache_size') # Restore the system configuration def use_cloud_configuration(self, file_name): print file_name self.conf.read(file_name) sections = self.conf.sections() for conf_id in sections: self.setconf(conf_id) return True # Get kuaipan directory address def get_kuaipan_path(self): kpconf = ConfigParser.ConfigParser() kpconf.read(self.home + '/.config/ubuntukylin/kuaipan4uk.conf') return kpconf.get('client-info', 'Root') # Determine whether kuaipan process starts def kuaipan_run(self): ps = os.popen('pgrep kuaipan4uk') kuaipan_ps = ps.read() ps.close() return kuaipan_ps # Configuration file upload def real_upload_kysoft_cloud_conf(self): if not self.kuaipan_run(): # 快盘没有启动或没有安装,提示用户安装并启动快盘才能上传 self.sysdaemon.upload_cloud_conf_signal('upload_norun') return self.kuaipan_path = self.get_kuaipan_path() + '/[Ubuntu Kylin Sync]' if not os.path.isdir(self.kuaipan_path): os.makedirs(self.kuaipan_path) self.kuaipan_path = self.kuaipan_path + '/youker-assistant' if not os.path.isdir(self.kuaipan_path): os.makedirs(self.kuaipan_path) self.youker_path = self.home + '/.config/ubuntukylin/youker-assistant/' youker_abs_path = self.youker_path + 'youker-settings-cloud.conf' self.save_configuration_to_local_file(youker_abs_path) copy(youker_abs_path, self.kuaipan_path) self.sysdaemon.upload_cloud_conf_signal('upload_ok') # Configuration file download def real_download_kysoft_cloud_conf(self): if not self.kuaipan_run(): # 快盘没有启动或没有安装,提示用户安装并启动快盘才能下载 self.sysdaemon.download_cloud_conf_signal('download_norun') return self.youker_path = self.home + '/.config/ubuntukylin/youker-assistant/' youker_abs_path = self.youker_path + 'youker-settings-cloud.conf' if not os.path.exists(youker_abs_path): os.mknod(youker_abs_path) cloud_abs_path = self.get_kuaipan_path() + '/[Ubuntu Kylin Sync]/youker-assistant/youker-settings-cloud.conf' if not os.path.isfile(cloud_abs_path): # 云端没有备份的配置文件 self.sysdaemon.download_cloud_conf_signal('download_notconf') return copy(cloud_abs_path, self.youker_path) self.use_cloud_configuration(youker_abs_path) self.sysdaemon.download_cloud_conf_signal('download_ok') def upload_kysoft_cloud_conf(self): threading.Thread(target=self.real_upload_kysoft_cloud_conf, name='UpLoad').start() def download_kysoft_cloud_conf(self): threading.Thread(target=self.real_download_kysoft_cloud_conf, name='DownLoad').start() if __name__ == '__main__': pass #cc = CloudConfig(None) #cc.upload_kysoft_cloud_conf() #cc.download_kysoft_cloud_conf() youker-assistant-1.0.1/qml/func/common/Dialog.qml000644 001750 001750 00000006142 12312451003 022270 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import WindowType 0.1 import StyleItemType 0.1 Window { id: dialog width: 400 height: 200 signal closed signal accepted signal rejected signal buttonClicked property QtObject clickedButton: null property int noRole: 0 property int acceptRole: 1 property int rejectRole: 2 property int helpRole: 3 property int ok: 0x00000400 property int cancel: 0x00400000 property int close: 0x00200000 property int help: 0x02000000 property int buttons: ok | cancel modal: false default property alias data: content.data Item { id: content anchors.topMargin:16 anchors.margins: 16 anchors.top: parent.top anchors.right: parent.right anchors.left: parent.left anchors.bottom: buttonrow.top } // Dialogs should center on parent onVisibleChanged: center() Row { property bool mac: (style.style == "mac") anchors.bottom: parent.bottom anchors.left: parent.left anchors.margins: 16 anchors.topMargin:0 anchors.bottomMargin: style.isMac ? 12 : 8 spacing: 6 Button { id: helpbutton property int role: helpRole visible: buttons & help text: "Help" focus: false Component.onCompleted: if (style.isMac) width = 22 background: style.isMac ? machelpdelegate : cancelbutton.background onClicked: { clickedButton = helpbutton buttonClicked() } Component { id: machelpdelegate StyleItem { anchors.fill: parent elementType: "machelpbutton" width: 22 height: 22 sunken: helpbutton.pressed anchors.centerIn: parent } } } } Row { id: buttonrow spacing: 6 anchors.right: parent.right anchors.bottom: parent.bottom anchors.margins: 16 anchors.topMargin: 0 anchors.bottomMargin: 8 layoutDirection: style.isMac ? Qt.LeftToRight : Qt.RightToLeft Button { id: cancelbutton visible: buttons & cancel property int role: rejectRole text: "Cancel" onClicked: { visible: dialog.visible = false clickedButton = cancelbutton rejected() closed() buttonClicked(role) } } Button { id: okbutton property int role: acceptRole visible: buttons & ok text: "OK" defaultbutton: true onClicked: { visible: dialog.visible = false clickedButton = okbutton accepted() closed() buttonClicked() } } } StyleItem { id: style visible: false property bool isMac: (style.style == "mac") } } youker-assistant-1.0.1/qml/func/common/PageStack.js000644 001750 001750 00000015765 12312451003 022571 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ** the names of its contributors may be used to endorse or promote ** products derived from this software without specific prior written ** permission. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** $QT_END_LICENSE$ ** ****************************************************************************/ // Page stack. Items are page containers. var pageStack = []; // Page component cache map. Key is page url, value is page component. var componentCache = {}; // Returns the page stack depth. function getDepth() { return pageStack.length; } // Pushes a page on the stack. function push(page, properties, replace, immediate) { // page order sanity check if ((!replace && page == currentPage) || (replace && pageStack.length > 1 && page == pageStack[pageStack.length - 2].page)) { throw new Error("Cannot navigate so that the resulting page stack has two consecutive entries of the same page instance."); } // figure out if more than one page is being pushed var pages; if (page instanceof Array) { pages = page; page = pages.pop(); if (page.createObject === undefined && page.parent === undefined && typeof page != "string") { properties = properties || page.properties; page = page.page; } } // get the current container var oldContainer = pageStack[pageStack.length - 1]; // pop the old container off the stack if this is a replace if (oldContainer && replace) { pageStack.pop(); } // push any extra defined pages onto the stack if (pages) { var i; for (i = 0; i < pages.length; i++) { var tPage = pages[i]; var tProps; if (tPage.createObject === undefined && tPage.parent === undefined && typeof tPage != "string") { tProps = tPage.properties; tPage = tPage.page; } pageStack.push(initPage(tPage, tProps)); } } // initialize the page var container = initPage(page, properties); // push the page container onto the stack pageStack.push(container); depth = pageStack.length; currentPage = container.page; // perform page transition immediate = immediate || !oldContainer; if (oldContainer) { oldContainer.pushExit(replace, immediate); } container.pushEnter(replace, immediate); // sync tool bar // var tools = container.page.tools || null; // if (toolBar) { // toolBar.setTools(tools, immediate ? "set" : replace ? "replace" : "push"); // } return container.page; } // Initializes a page and its container. function initPage(page, properties) { var container = containerComponent.createObject(root); var pageComp; if (page.createObject) { // page defined as component pageComp = page; } else if (typeof page == "string") { // page defined as string (a url) pageComp = componentCache[page]; if (!pageComp) { pageComp = componentCache[page] = Qt.createComponent(page); } } if (pageComp) { if (pageComp.status == Component.Error) { throw new Error("Error while loading page: " + pageComp.errorString()); } else { // instantiate page from component page = pageComp.createObject(container, properties || {}); } } else { // copy properties to the page for (var prop in properties) { if (properties.hasOwnProperty(prop)) { page[prop] = properties[prop]; } } } container.page = page; container.owner = page.parent; // the page has to be reparented if if (page.parent != container) { page.parent = container; } if (page.pageStack !== undefined) { page.pageStack = root; } return container; } // Pops a page off the stack. function pop(page, immediate) { // make sure there are enough pages in the stack to pop if (pageStack.length > 1) { // pop the current container off the stack and get the next container var oldContainer = pageStack.pop(); var container = pageStack[pageStack.length - 1]; if (page !== undefined) { // an unwind target has been specified - pop until we find it while (page != container.page && pageStack.length > 1) { container.cleanup(); pageStack.pop(); container = pageStack[pageStack.length - 1]; } } depth = pageStack.length; currentPage = container.page; // perform page transition oldContainer.popExit(immediate); container.popEnter(immediate); // sync tool bar var tools = container.page.tools || null; if (toolBar) { toolBar.setTools(tools, immediate ? "set" : "pop"); } return oldContainer.page; } else { return null; } } // Clears the page stack. function clear() { var container; while (container = pageStack.pop()) { container.cleanup(); } depth = 0; currentPage = null; } // Iterates through all pages in the stack (top to bottom) to find a page. function find(func) { for (var i = pageStack.length - 1; i >= 0; i--) { var page = pageStack[i].page; if (func(page)) { return page; } } return null; } youker-assistant-1.0.1/qml/func/common/ProgressBar.qml000644 001750 001750 00000002130 12312451003 023313 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "private" as Private import StyleItemType 0.1 Private.ProgressBar { id:progressbar property int orientation: Qt.Horizontal property string styleHint implicitWidth: orientation === Qt.Horizontal ? 200 : backgroundItem.implicitHeight implicitHeight: orientation === Qt.Horizontal ? backgroundItem.implicitHeight : 200 SystemPalette {id: syspal} background: StyleItem { anchors.fill: parent elementType: "progressbar" // XXX: since desktop uses int instead of real, the progressbar // range [0..1] must be stretched to a good precision property int factor : 1000 value: indeterminate ? 0 : progressbar.value * factor // does indeterminate value need to be 1 on windows? minimum: indeterminate ? 0 : progressbar.minimumValue * factor maximum: indeterminate ? 0 : progressbar.maximumValue * factor enabled: progressbar.enabled horizontal: progressbar.orientation == Qt.Horizontal hint: progressbar.styleHint contentWidth: 23 contentHeight: 23 } } youker-assistant-1.0.1/src/sessiondispatcher.h000644 001750 001750 00000050532 12312451003 022036 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SESSIONDISPATCHER_H #define SESSIONDISPATCHER_H #include #include #include #include #include #include #include "quibo.h" #include "modaldialog.h" //#include "skinswidget.h" #include "httpauth.h" //#include "skincenter.h" class QSettings; class SessionDispatcher : public QObject { Q_OBJECT public: explicit SessionDispatcher(QObject *parent = 0); ~SessionDispatcher(); QDBusInterface *sessioniface; Q_INVOKABLE void show_slider_qt(); //退出前的准备工作 void ready_exit_normally(); //打开文件夹 Q_INVOKABLE void open_folder_qt(QString path); //弹出登录框 Q_INVOKABLE void popup_login_dialog(int window_x, int window_y); //退出登录 Q_INVOKABLE void logout_ubuntukylin_account(); //得到yahoo城市列表 Q_INVOKABLE QStringList search_city_names_qt(QString search_name); //得到对应yahoo城市列表的geonameid列表 Q_INVOKABLE QStringList get_geonameid_list_qt(); //得到经度 Q_INVOKABLE QStringList get_longitude_list_qt(); //得到纬度 Q_INVOKABLE QStringList get_latitude_list_qt(); //得到可以获取天气数据的id Q_INVOKABLE QString get_yahoo_city_id_qt(QString geonameid); //得到SessionDbus的验证值,可以通过其判断该服务是否正在运行 Q_INVOKABLE QString get_session_daemon_qt(); //扫描浏览器历史记录 Q_INVOKABLE int scan_history_records_qt(QString flag); //扫描系统最近打开文件的历史记录 Q_INVOKABLE int scan_system_history_qt(); //扫描Dash历史记录 // Q_INVOKABLE int scan_dash_history_qt(); //扫描同名文件 // Q_INVOKABLE QStringList scan_of_same_qt(QString abspath); //扫描大文件 Q_INVOKABLE QStringList scan_of_large_qt(int size, QString abspath); //扫描cookies Q_INVOKABLE QStringList scan_cookies_records_qt(); //扫描firefox和chromium的cookies Q_INVOKABLE void cookies_scan_function_qt(QString flag); //扫描apt和软件中心缓存 Q_INVOKABLE void cache_scan_function_qt(QStringList argList, QString flag); //扫描不需要的package和old kernel Q_INVOKABLE void package_scan_function_qt(QStringList argList); Q_INVOKABLE QStringList get_cache_arglist(int i); Q_INVOKABLE QStringList get_package_arglist(int i); //扫描旧内核安装包 // Q_INVOKABLE QStringList scan_oldkernel_packages_qt(); //扫描浏览器缓存时的参数获取 Q_INVOKABLE QStringList get_browser_cache_arglist(); //退出sessiondubs服务 Q_INVOKABLE void exit_qt(); //弹出新特性对话框 Q_INVOKABLE void showFeatureDialog(int window_x, int window_y); //弹出屏幕坏点检测对话框 Q_INVOKABLE void showCheckscreenDialog(int window_x, int window_y); //弹出警告提示对话框 Q_INVOKABLE void showWarningDialog(QString title, QString content, int window_x, int window_y); //弹出确认对话框 Q_INVOKABLE bool showConfirmDialog(QString title, QString content, int window_x, int window_y); Q_INVOKABLE void set_page_num(int num); Q_INVOKABLE int get_page_num(); int page_num; //得到安装操作系统的语言版本 Q_INVOKABLE QString get_locale_version(); //得到当前登录用户的主目录 Q_INVOKABLE QString getHomePath(); //----get system message //存放当前系统和桌面信息 QMap systemInfo; //得到当前系统和桌面信息 Q_INVOKABLE void get_system_message_qt(); //通过键得到对应的单个信息的值 Q_INVOKABLE QString getSingleInfo(QString key); /*-------------------get and set default value-------------------*/ //获取和设置字体默认值:theme.py Q_INVOKABLE QString get_default_theme_sring_qt(QString flag/*QString schema, QString key*/); Q_INVOKABLE double get_default_theme_double_qt(QString schema, QString key); Q_INVOKABLE void set_default_theme_qt(QString flag/*QString schema, QString key, QString type*/); //获取和设置字体默认值:desktop.py Q_INVOKABLE bool get_default_desktop_bool_qt(QString schema, QString key); Q_INVOKABLE void set_default_desktop_qt(QString flag); //获取和设置字体默认值:sound.py Q_INVOKABLE QString get_default_sound_string_qt(QString flag/*QString schema, QString key*/); Q_INVOKABLE void set_default_sound_qt(QString flag); //获取和设置字体默认值:unity.py Q_INVOKABLE int get_default_unity_qt(QString name, QString key); Q_INVOKABLE void set_default_unity_qt(QString flag, int value); Q_INVOKABLE void set_default_launcher_have_showdesktopicon_qt(); //获取和设置字体默认值:system.py Q_INVOKABLE QString get_default_system_sring_qt(QString flag); Q_INVOKABLE bool get_default_system_bool_qt(QString schema, QString key); Q_INVOKABLE void set_default_system_qt(QString flag); //获取和设置文件管理器默认值:filemanager.py // Q_INVOKABLE bool get_default_filemanager_bool_qt(QString flag); // Q_INVOKABLE int get_default_filemanager_int_qt(QString flag); Q_INVOKABLE void set_default_filemanager_qt(QString flag); /*-------------------desktop of beauty-------------------*/ Q_INVOKABLE bool set_show_desktop_icons_qt(bool flag); Q_INVOKABLE bool get_show_desktop_icons_qt(); Q_INVOKABLE bool set_show_homefolder_qt(bool flag); Q_INVOKABLE bool get_show_homefolder_qt(); Q_INVOKABLE bool set_show_network_qt(bool flag); Q_INVOKABLE bool get_show_network_qt(); Q_INVOKABLE bool set_show_trash_qt(bool flag); Q_INVOKABLE bool get_show_trash_qt(); Q_INVOKABLE bool set_show_devices_qt(bool flag); Q_INVOKABLE bool get_show_devices_qt(); /*-------------------unity of beauty-------------------*/ Q_INVOKABLE bool set_launcher_autohide_qt(bool flag); Q_INVOKABLE bool get_launcher_autohide_qt(); Q_INVOKABLE bool set_launcher_icon_size_qt(int num); Q_INVOKABLE int get_launcher_icon_size_qt(); Q_INVOKABLE bool set_launcher_have_showdesktopicon_qt(bool flag); Q_INVOKABLE bool get_launcher_have_showdesktopicon_qt(); /*-------------------theme of beauty-------------------*/ Q_INVOKABLE QStringList get_themes_qt(); Q_INVOKABLE QString get_theme_qt(); Q_INVOKABLE void set_theme_qt(QString theme); Q_INVOKABLE QStringList get_icon_themes_qt(); Q_INVOKABLE QString get_icon_theme_qt(); Q_INVOKABLE void set_icon_theme_qt(QString theme); Q_INVOKABLE QStringList get_cursor_themes_qt(); Q_INVOKABLE QString get_cursor_theme_qt(); Q_INVOKABLE void set_cursor_theme_qt(QString theme); Q_INVOKABLE int get_cursor_size_qt(); Q_INVOKABLE void set_cursor_size_qt(int size); //window theme Q_INVOKABLE QStringList get_window_themes_qt(); Q_INVOKABLE QString get_current_window_theme_qt(); Q_INVOKABLE void set_window_theme_qt(QString theme); /*-------------------fonts of beauty-------------------*/ Q_INVOKABLE void restore_default_font_signal(QString flag); Q_INVOKABLE void show_font_dialog(QString flag); Q_INVOKABLE QString show_folder_dialog(); Q_INVOKABLE QString get_font_qt(); Q_INVOKABLE bool set_font_qt_default(QString font); bool set_font_qt(QString font); Q_INVOKABLE QString get_desktop_font_qt(); Q_INVOKABLE bool set_desktop_font_qt_default();//when is null ,we set a default value bool set_desktop_font_qt(QString font); Q_INVOKABLE QString get_document_font_qt(); Q_INVOKABLE bool set_document_font_qt_default(QString font); bool set_document_font_qt(QString font); Q_INVOKABLE QString get_monospace_font_qt(); Q_INVOKABLE bool set_monospace_font_qt_default(QString font); bool set_monospace_font_qt(QString font); Q_INVOKABLE QString get_window_title_font_qt(); Q_INVOKABLE bool set_window_title_font_qt_default(QString font); bool set_window_title_font_qt(QString font); Q_INVOKABLE double get_font_zoom_qt(); Q_INVOKABLE bool set_font_zoom_qt(double zoom); Q_INVOKABLE QStringList get_smooth_style_list_qt(); Q_INVOKABLE QString get_smooth_style_qt(); Q_INVOKABLE bool set_smooth_style_qt(QString style); Q_INVOKABLE QStringList get_antialiasing_style_list_qt(); Q_INVOKABLE QString get_antialiasing_style_qt(); Q_INVOKABLE bool set_antialiasing_style_qt(QString style); /*-------------------scrollbars of beauty-------------------*/ Q_INVOKABLE bool set_scrollbars_mode_overlay_qt(); Q_INVOKABLE bool set_scrollbars_mode_legacy_qt(); Q_INVOKABLE QString get_scrollbars_mode_qt(); /*-------------------touchpad of beauty-------------------*/ Q_INVOKABLE bool set_touchpad_enable_qt(bool flag); Q_INVOKABLE bool get_touchpad_enable_qt(); Q_INVOKABLE bool set_touchscrolling_mode_edge_qt(); Q_INVOKABLE bool set_touchscrolling_mode_twofinger_qt(); Q_INVOKABLE QString get_touchscrolling_mode_qt(); Q_INVOKABLE bool set_touchscrolling_use_horizontal_qt(bool flag); Q_INVOKABLE bool get_touchscrolling_use_horizontal_qt(); /*-------------------window of beauty-------------------*/ Q_INVOKABLE void set_window_button_align_left_qt(); Q_INVOKABLE void set_window_button_align_right_qt(); Q_INVOKABLE QString get_window_button_align_qt(); Q_INVOKABLE bool set_menus_have_icons_qt(bool flag); Q_INVOKABLE bool get_menus_have_icons_qt(); Q_INVOKABLE QStringList get_titlebar_wheel_qt(); Q_INVOKABLE QString get_current_titlebar_wheel_qt(); Q_INVOKABLE void set_titlebar_wheel_qt(QString value); Q_INVOKABLE QStringList get_titlebar_double_qt(); Q_INVOKABLE QString get_current_titlebar_double_qt(); Q_INVOKABLE void set_titlebar_double_qt(QString value); Q_INVOKABLE QStringList get_titlebar_middle_qt(); Q_INVOKABLE QString get_current_titlebar_middle_qt(); Q_INVOKABLE void set_titlebar_middle_qt(QString value); Q_INVOKABLE QStringList get_titlebar_right_qt(); Q_INVOKABLE QString get_current_titlebar_right_qt(); Q_INVOKABLE void set_titlebar_right_qt(QString value); /*-------------------sound of beauty-------------------*/ Q_INVOKABLE void set_login_music_enable_qt(bool flag); Q_INVOKABLE bool get_login_music_enable_qt(); Q_INVOKABLE QString get_sound_theme_qt(); Q_INVOKABLE void set_sound_theme_qt(QString theme); /*-------------------filemanager of beauty-------------------*/ Q_INVOKABLE void set_location_replace_pathbar_qt(bool flag); Q_INVOKABLE bool get_location_replace_pathbar_qt(); Q_INVOKABLE void set_auto_mount_media_qt(bool flag); Q_INVOKABLE bool get_auto_mount_media_qt(); Q_INVOKABLE void set_auto_open_folder_qt(bool flag); Q_INVOKABLE bool get_auto_open_folder_qt(); Q_INVOKABLE void set_prompt_autorun_programs_qt(bool flag); Q_INVOKABLE bool get_prompt_autorun_programs_qt(); Q_INVOKABLE void set_thumbnail_icon_size_qt(int size); Q_INVOKABLE int get_thumbnail_icon_size_qt(); Q_INVOKABLE void set_thumbnail_cache_time_qt(int value); Q_INVOKABLE int get_thumbnail_cache_time_qt(); Q_INVOKABLE void set_thumbnail_cache_size_qt(int size); Q_INVOKABLE int get_thumbnail_cache_size_qt(); /*-------------------monitorball-------------------*/ Q_INVOKABLE double get_cpu_percent_qt(); Q_INVOKABLE QString get_total_memory_qt(); Q_INVOKABLE QString get_used_memory_qt(); Q_INVOKABLE QString get_free_memory_qt(); Q_INVOKABLE QStringList get_network_flow_total_qt(); /*-------------------change skin-------------------*/ Q_INVOKABLE QString setSkin(); //皮肤对话框 Q_INVOKABLE void showSkinWidget(/*int window_x, int window_y*/); // Q_INVOKABLE void showSkinCenter(); /*-------------------weather forecast-------------------*/ Q_INVOKABLE void get_forecast_weahter_qt(); void get_forecast_dict_qt();//天气预报数据获取完成后,通过该函数返回其获取的值给forecastInfo void get_yahoo_forecast_dict_qt(); Q_INVOKABLE void get_current_weather_qt(); void get_current_weather_dict_qt();//当天天气数据获取完成后,通过该函数返回其获取的值给currentInfo void get_current_yahoo_weather_dict_qt();//yahoo当天天气数据获取完成后,通过该函数返回其获取的值给yahoocurrentInfo Q_INVOKABLE void get_current_pm25_qt(); void get_pm25_str_qt();//当PM2.5获取成功后,返回给pm25Info Q_INVOKABLE QString access_pm25_str_qt();//把pm25Info给QML //得到配置文件中的更新周期 Q_INVOKABLE int get_current_rate(); //更新当天天气 Q_INVOKABLE bool update_weather_data_qt(); QMap forecastInfo; QMap currentInfo; QMap yahoocurrentInfo; QMap yahooforecastInfo; QString pm25Info; //通过键得到对应的单个信息的值,flag= forecast/current Q_INVOKABLE QString getSingleWeatherInfo(QString key, QString flag); //显示wizard Q_INVOKABLE bool showWizardController(); //显示更改城市对话框 Q_INVOKABLE bool showChangeCityDialog(/*int window_x, int window_y*/); Q_INVOKABLE int getLengthOfCityList(); void initConfigFile(); void getCityIdInfo(); QStringList getLatandLon(QString id);//得到纬度和经度 //改变主checkbox的状态 Q_INVOKABLE void change_maincheckbox_status(QString status); //把优客助手运行时,系统的默认配置写到配置文件 Q_INVOKABLE void write_default_configure_to_qsetting_file(QString key, QString name, QString value); //从Qsetting配置文件中读取系统启动时的默认配置 Q_INVOKABLE QString read_default_configure_from_qsetting_file(QString key, QString name); //fcitxconfigtoolkey获取sekectedfcitxfont Q_INVOKABLE QString getSelectedFcitxFont(); //一键清理扫描 Q_INVOKABLE void onekey_scan_function_qt(QStringList selectedList); //金山快盘云配置 Q_INVOKABLE void download_kysoft_cloud_conf_qt(); Q_INVOKABLE void upload_kysoft_cloud_conf_qt(); signals: void finishScanWork(QString msg); void isScanning(QString msg); void notifyFontStyleToQML(QString font_style); void startChangeQMLSkin(QString skinName);//发送开始更换QML界面皮肤的信号 void startChangeQMLCity();//发送开始更换QML城市 void startUpdateForecastWeahter(QString flag);//发送开始更换六天天气预报 void showKeyandData(QString key, QString value);//根据天气的key显示对应的数据 void startUpdateRateTime(int rate);//发送开始更换天气自动更新周期时间 //改变主checkbox的状态 void startChangeMaincheckboxStatus(QString status); //把cache扫描结果告诉QML void appendContentToCacheModel(QString flag, QString path, QString fileFlag, QString sizeValue); //把cache的绝对路径告诉QML // void tellAbsPathToCacheModel(QString flag, QString path); //cache扫描完后告诉QML void tellQMLCaheOver(QString flag); //把package和old kernel扫描结果告诉QML void appendPackageContentToCacheModel(QString flag, QString pkgName, QString description, QString sizeValue); //package和old kernel扫描完后告诉QML void tellQMLPackageOver(); //把largest file扫描结果告诉QML void appendLargestContentToModel(QString sizeValue, QString path); //largest file扫描完后告诉QML void tellQMLLargestOver(); //把cookies扫描结果告诉QML void appendCookiesContentToModel(QString flag, QString domain, QString num); //cookies扫描完后告诉QML void tellQMLCookiesOver(QString cookiesFlag); //把一键扫描的总数告诉QML void tellScanResultToQML(QString flag, QString msg); //显示登录动态图片 void showLoginAnimatedImage(); //更新登录状态 void updateLoginStatus(QString username, QString level, QString score); //刷新用户数据 void refreshUserInfo(QString level, QString score); //登录失败 void loginFailedStatus(int status); //告诉QML界面,标题栏控制按钮位置发生变化了,准备改变优客助手自身的控制按钮位置 void startChangeControlBtnPosition(QString position); //把下载和使用云端配置的情况告诉QML void tellDownloadCloudConfToQML(QString download); //把上传配置到云端的情况告诉QML void tellUploadCloudConfToQML(QString upload); //程序退出之前用户信息写入服务器端完毕后,告诉tray退出程序 void ready_to_exit(); //告诉QML确认云配置操作 // void tellQMLCloudConfirm(); public slots: void verify_user_and_password(QString user, QString pwd); void handle_data_after_login_success(QString id, /*QString level, */QString name, QString score); void handle_data_after_search_success(/*QString level, */QString score); void handle_data_when_login_failed(int status); //获取天气预报槽函数 void accord_flag_access_weather(QString key, QString value); //扫描完成槽函数 void handler_scan_complete(QString msg); //扫描过程的函数 void handler_scan_process(QString msg); //扫描的总数 void handler_total_data_transmit(QString flag, QString msg); void handler_change_skin(QString skinName); //更换城市槽函数 void handler_change_city(); //更换自动更新天气周期槽函数 void handler_change_rate(int rate); //接收缓存信号,把数据动态堆加到model中 void handler_append_cache_data_to_model(QString flag, QString path, QString fileFlag, QString sizeValue);//data_transmit_by_cache(self, flag0, path, flag1, size): //接收cache扫描完后的信号 void handler_cache_scan_over(QString flag); //接收cache的绝对路径 // void handler_cache_path(QString flag, QString path); //接收package和old kernel信号,把数据动态堆加到model中 void handler_append_package_data_to_model(QString flag, QString pkgName, QString description, QString sizeValue); //接收package和old kernel扫描完后的信号 void handler_package_scan_over(); //接收largest file信号,把数据动态堆加到model中 void handler_append_largest_file_to_model(QString sizeValue, QString path); //接收largest file扫描完后的信号 void handler_largest_scan_over(); //接收cookies信号,把数据动态堆加到model中 void handler_append_cookies_to_model(QString flag, QString domain, QString num); //接收cookies扫描完后的信号 void handler_cookies_scan_over(QString cookiesFlag); //程序退出之前接受传递过来的用户信息,准备写入服务器端 void handler_write_user_info_when_exit(); //连接服务器 void connectHttpServer(); //处理连接服务器失败的时候 void resetTimerStatus(); //处理连接服务器成功的时候,查询当前用户的信息:积分、等级... void searchCurrentInfo(); //根据积分计算用户等级 QString score_count_level(int score); //接受标题栏控制按钮位置改变 void handler_change_titlebar_position(QString position); //接收下载和使用云端配置的信号 void handler_download_cloud_conf(QString download); //接收上传配置到云端时的信号 void handler_upload_cloud_conf(QString upload); //接收确认云配置操作 // void handler_confirm_cloud_action(); private: int mainwindow_width; int mainwindow_height; int alert_width; int alert_height; //本次alert的x坐标 int alert_x; //保额次alert的y坐标 int alert_y; int alert_width_bg; //皮肤对话框对象 // SkinsWidget *skin_widget; // SkinCenter *skinCenter; QSettings * mSettings; QString initCityId; HttpAuth *httpauth; int waitTime;//超时重试次数 QTimer *timer; }; #endif // SESSIONDISPATCHER_H youker-assistant-1.0.1/src/qmlaudio.cpp000644 001750 001750 00000002357 12312451003 020454 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "qmlaudio.h" #include #include #include QString music_path; QmlAudio::QmlAudio(QDeclarativeItem *parent) : QDeclarativeItem(parent) { } void QmlAudio::setSong(const QUrl & songUrl) { audioObject->setCurrentSource(Phonon::MediaSource(songUrl)); } void QmlAudio::play() { audioObject = Phonon::createPlayer(Phonon::MusicCategory, Phonon::MediaSource(music_path)); audioObject->play(); } void QmlAudio::pause() { audioObject->pause(); } void QmlAudio::stop() { audioObject->stop(); } youker-assistant-1.0.1/qml/img/weather/n17.gif000644 001750 001750 00000005631 12312451003 021444 0ustar00saucysaucy000000 000000 GIF89a008Z2PӰ˅ˮŲ݄·̪Ѽåɸ2T7Z1P;X}ƹ.O1R/M4U6W#@c :[%Be*Io'Dg-Ms/Ms3S|1Qw2Pv4Tz1Os3Qu9Y5Sy6Tz9Y9Y:Z;Y9W{CZwVinv0P3U1Q2R/M3S0N5U0M1O5U6V7W3P8X4R;]9Y:Z"Be8V!?a >^<[7T#@`+Mr%Ba)Gi.Ou*Ik/Qv,Jm3V|2Sy/Mp&?Z7Z6X~5W|6X}7Y~3Qs5Sv1Lk?a0IdFh=Zz6Nh=WtLdI_x[ph{ġ/M0N2P3Q/J4R0K5S6T7U3N?a@b=^:X Ab!Bc;Y#De&Gi#Ba#@^(Ij*Km,Mp-Or-Nq(Fe0Sx.Or-Mn2Uy0Qt/Pr.Op4X}1Sv1Ru3Ux2Sv7[5W{4Vy3Tv8[7Y|6Wz9\7X{5Uv9[~/Kh9Z}?Yt`m3! \P9pCC7|M+jCrNyҬ uag `0"P '@x ,G,`Bt( 8CY둸B {\8 0,z.y8> '^ p6L ۠8 Boͷ9"̓Df:]l0 +oв 1C]MDBD:"vE] : 6@T '\N-xdA(< t6061S0u'AOG>y^\8ۼ;xB %p&di 4~0 Y`E B` a-璽v &ۀrŸ垫 p7v%-p lH.;@ l i`o4 T,\ @(( ?C F8B]P5C$@+lA Ѐ7.*_>PqP` X "b7H h-l`$0@8 x!`'P0@y a]QF kdB"`>b0LK`B ƁU N]DرAaE/vq> 8}@  qYAC`F.XG8, fHEvPM`pc&a@vЂ<`E% `ncxb4FA _XxDDk WjPJC^1LX⨁+,W0!bb(B.SGB}@2`Q|QyȄ8,1|Jȃ_ #t Lc(P2ԉ<@NH-Ql5%tBB Jp,Q # P/ B(Cp2 B<_ a8AD!LAȈk!; eЫ_7[gL+a>AH]\Tԇ>>> H3&# /d$ `5_h k2q\&!'LbQ v0A q˄6|f4# h6xXf+!c`!hDCE >A" `A:@0 aD&V!@H3F. */ import QtQuick 1.1 import "./func/common" as Common Rectangle { id: root width: parent.width height: 30 color: "transparent" property string version: ""//优客助手版本号 // property bool upcloud: false//金山快盘云配置使用 // property bool downcloud: false//金山快盘上传云配置 Connections { target: sessiondispatcher onTellDownloadCloudConfToQML: { if(download == "download_norun") { // root.downcloud = false; downloaddynamic.paused = true; downloaddynamic.playing = false; sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The kuaipan4uk is not running!"), mainwindow.pos.x, mainwindow.pos.y); } else if(download == "download_notconf") { // root.downcloud = false; downloaddynamic.paused = true; downloaddynamic.playing = false; sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Not found the cloud configuration!"), mainwindow.pos.x, mainwindow.pos.y); } else if(download == "download_ok") { // root.downcloud = false; downloaddynamic.paused = true; downloaddynamic.playing = false; toolkits.alertMSG(qsTr("Download OK!"), mainwindow.pos.x, mainwindow.pos.y);//使用完毕! } } onTellUploadCloudConfToQML: { if(upload == "upload_norun") { // root.upcloud = false; uploaddynamic.paused = true; uploaddynamic.playing = false; sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The kuaipan4uk is not running!"), mainwindow.pos.x, mainwindow.pos.y); } else if(upload == "upload_ok") { // root.upcloud = false; uploaddynamic.paused = true; uploaddynamic.playing = false; toolkits.alertMSG(qsTr("Upload OK!"), mainwindow.pos.x, mainwindow.pos.y);//上传完成! } } } Component.onCompleted: { } Row { anchors { left: parent.left leftMargin: 10 verticalCenter: parent.verticalCenter } spacing: 5 Image { source: "./img/icons/arrowhead.png" } Text { color: "white" font.pixelSize: 12 text: qsTr("main version:") + root.version//主版本: } } MouseArea { id: mouseRegion anchors.fill: parent property variant clickPos: "1,1" onPressed: { clickPos = Qt.point(mouse.x,mouse.y) } onPositionChanged: { var delta = Qt.point(mouse.x-clickPos.x, mouse.y-clickPos.y) mainwindow.pos = Qt.point(mainwindow.pos.x+delta.x, mainwindow.pos.y+delta.y) } } // Image { // id: downloadImage // anchors { // right: parent.right // rightMargin: 5 // verticalCenter: parent.verticalCenter // } // width: 16 // height: 16 // source: "./img/icons/move.png" // MouseArea { // anchors.fill: downloadImage // onClicked: { // console.log("1111111111"); // sessiondispatcher.showSkinCenter(/*mainwindow.pos.x, mainwindow.pos.y*/); // } // } // } Row { anchors { right: parent.right rightMargin: 3 verticalCenter: parent.verticalCenter } spacing: 10 Text { id: b1 text: qsTr("Use Cloud")//使用云配置 visible: false } Text { id: b2 text: qsTr("Save Cloud")//保存云配置 visible: false } Row { AnimatedImage {//动态图片 id: downloaddynamic anchors.verticalCenter: parent.verticalCenter playing: false paused: true width: 24 height: 16 source: "./img/icons/download.gif" } Common.ColorButton { id: downBtn anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Use Cloud")//使用云配置 textColor: "white" fontSize: 8 width: b1.width height: 20 onClicked: { if(sessiondispatcher.showConfirmDialog(qsTr("Tips:"), qsTr("It will use the Kingsoft disk cloud configuration!"), mainwindow.pos.x, mainwindow.pos.y)) { downloaddynamic.playing = true; downloaddynamic.paused = false; sessiondispatcher.download_kysoft_cloud_conf_qt(); } } } } Row { AnimatedImage {//动态图片 id: uploaddynamic anchors.verticalCenter: parent.verticalCenter width: 24 height: 16 playing: false paused: true source: "./img/icons/upload.gif" } Common.ColorButton { id: upBtn anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Save Cloud")//保存云配置 textColor: "white" fontSize: 8 width: b2.width height: 20 onClicked: { if(sessiondispatcher.showConfirmDialog(qsTr("Tips:"), qsTr("It will upload configuration to the Kingsoft disk cloud!"), mainwindow.pos.x, mainwindow.pos.y)) { uploaddynamic.playing = true; uploaddynamic.paused = false; sessiondispatcher.upload_kysoft_cloud_conf_qt(); } } } } } // Row { // anchors { // right: parent.right // rightMargin: 5 // verticalCenter: parent.verticalCenter // } // spacing: 10 // Row { // Text { // id: downBtn // anchors.verticalCenter: parent.verticalCenter // color: "white" // font.pixelSize: 12 // text: qsTr("Use Cloud Conf")//使用云配置 // MouseArea { // anchors.fill: downBtn // onClicked: { //// root.downcloud = !root.downcloud; //// console.debug("00000"); //// if(root.downcloud) { //// console.debug("1111"); //// downloaddynamic.playing = true; //// downloaddynamic.paused = false; //// } //// else { //// console.debug("2222"); //// downloaddynamic.paused = true; //// downloaddynamic.playing = false; //// } // downloaddynamic.playing = true; // downloaddynamic.paused = false; // sessiondispatcher.download_kysoft_cloud_conf_qt(); // } // } // } // AnimatedImage {//动态图片 // id: downloaddynamic // playing: false // paused: true // width: 25 // height: 25 // source: "./img/icons/download.gif" // } // } // Row { // Text { // id: upBtn // anchors.verticalCenter: parent.verticalCenter // color: "white" // font.pixelSize: 12 // text: qsTr("Upload Cloud Conf")//上传云配置 // MouseArea { // anchors.fill: upBtn // onClicked: { //// root.upcloud = !root.upcloud; //// console.debug("00000"); //// if(root.upcloud) { //// console.debug("1111"); //// uploaddynamic.playing = true; //// uploaddynamic.paused = false; //// } //// else { //// console.debug("2222"); //// uploaddynamic.paused = true; //// uploaddynamic.playing = false; //// } // uploaddynamic.playing = true; // uploaddynamic.paused = false; // sessiondispatcher.upload_kysoft_cloud_conf_qt(); // } // } // } // AnimatedImage {//动态图片 // id: uploaddynamic //// visible: root.upcloud ? true : false // width: 25 // height: 25 // playing: false // paused: true // source: "./img/icons/upload.gif" // } // } // } // Row { // anchors { // right: parent.right // rightMargin: 5 // verticalCenter: parent.verticalCenter // } // spacing: 10 // Row { // Text { // id: downBtn // anchors.verticalCenter: parent.verticalCenter // color: "white" // font.pixelSize: 12 // text: qsTr("Use Cloud Conf")//使用云配置 // MouseArea { // anchors.fill: downBtn // onClicked: { // root.downcloud = true; // sessiondispatcher.download_kysoft_cloud_conf_qt(); // } // } // } // AnimatedImage {//动态图片 // id: downloaddynamic // visible: root.downcloud ? false : true // width: 25 // height: 25 // source: "./img/icons/download.png" // } //// Image { //// id: downloadImage //// visible: root.downcloud ? false : true //// width: 25 //// height: 25 //// source: "./img/icons/download.png" //// } //// AnimatedImage {//动态图片 //// id: downloaddynamic //// visible: root.downcloud ? true : false //// width: 16 //// height: 16 //// source: "./img/icons/move.gif" //// } // } // Row { // Text { // id: upBtn // anchors.verticalCenter: parent.verticalCenter // color: "white" // font.pixelSize: 12 // text: qsTr("Upload Cloud Conf")//上传云配置 // MouseArea { // anchors.fill: upBtn // onClicked: { // root.upcloud = true; // sessiondispatcher.upload_kysoft_cloud_conf_qt(); // } // } // } // Image { // id: uploadImage // visible: root.upcloud ? false : true // width: 25 // height: 25 // source: "./img/icons/upload.png" // } // AnimatedImage {//动态图片 // id: uploaddynamic // visible: root.upcloud ? true : false // width: 16 // height: 16 // source: "./img/icons/move.gif" // } // } // } } youker-assistant-1.0.1/qml/func/info/NICInfo.qml000644 001750 001750 00000036363 12312451003 021771 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup Rectangle { id: home; width: parent.width; height: 475 color: "transparent" property int fontSize: 14 Component.onCompleted: { systemdispatcher.get_networkcard_info_qt();//获取详细信息 var netName = systemdispatcher.getHWSingleInfo("NetVendor", "networkcard"); logo.source = InfoGroup.judgeName(netName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + netName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); // var pat = new RegExp('Intel'); // if(pat.test(msg)) { // logo.source = "../../img/logo/Manufacturer/INTEL.jpg"; // } modelText.text = systemdispatcher.getHWSingleInfo("NetProduct", "networkcard"); vendorText.text = netName; driverText.text = systemdispatcher.getHWSingleInfo("NetDrive", "networkcard"); busText.text = systemdispatcher.getHWSingleInfo("NetBusinfo", "networkcard"); deviceText.text = systemdispatcher.getHWSingleInfo("NetLogicalname", "networkcard"); ipText.text = systemdispatcher.getHWSingleInfo("NetIp", "networkcard"); macText.text = systemdispatcher.getHWSingleInfo("NetSerial", "networkcard"); linkText.text = systemdispatcher.getHWSingleInfo("NetLink", "networkcard"); maxText.text = systemdispatcher.getHWSingleInfo("NetCapacity", "networkcard") + " Mbit/s"; // bitText.text = systemdispatcher.getHWSingleInfo("NetWidth", "networkcard"); var wnetName = systemdispatcher.getHWSingleInfo("WlanVendor", "networkcard"); wlogo.source = InfoGroup.judgeName(wnetName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + wnetName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); wdriverText.text = systemdispatcher.getHWSingleInfo("WlanDrive", "networkcard"); wvendorText.text = wnetName; wmodelText.text = systemdispatcher.getHWSingleInfo("WlanProduct", "networkcard"); wbusText.text = systemdispatcher.getHWSingleInfo("WlanBusinfo", "networkcard"); wdeviceText.text = systemdispatcher.getHWSingleInfo("WlanLogicalname", "networkcard"); wmacText.text = systemdispatcher.getHWSingleInfo("WlanSerial", "networkcard"); wipText.text = systemdispatcher.getHWSingleInfo("WlanIp", "networkcard"); } Common.ScrollArea { frame:false anchors.left: parent.left anchors.top: parent.top anchors.topMargin: 30 height: parent.height - 40 width: parent.width Column { anchors { top: parent.top topMargin: 10 left: parent.left leftMargin: 30 } spacing: 18 Row { Common.Label { id: basictitle text: qsTr("NIC Info")//有线网卡信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - basictitle.width - 30 * 2 } } Column { anchors.left: parent.left anchors.leftMargin: 20 spacing: 10 Row { spacing: 10 Common.Label { text: qsTr("NIC Model:")//有线网卡型号: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: modelText width: 450 wrapMode: Text.WordWrap text: ""//systemdispatcher.getHWSingleInfo("NetProduct") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Vendor:")//制造商: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: vendorText text: ""//systemdispatcher.getHWSingleInfo("NetVendor") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("NIC Driver:")//有线网卡驱动: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: driverText text: ""//systemdispatcher.getHWSingleInfo("NetDrive") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Bus Address:")//总线地址: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: busText text: ""//systemdispatcher.getHWSingleInfo("NetBusinfo") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Device Name:")//设备名称: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: deviceText text: ""//systemdispatcher.getHWSingleInfo("NetLogicalname") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("IP Address:")//IP地址: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: ipText text: ""//systemdispatcher.getHWSingleInfo("NetIp") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Mac Address:")//MAC地址: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: macText text: ""//systemdispatcher.getHWSingleInfo("NetSerial") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Connection Status: ")//连接状态: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: linkText text: ""//systemdispatcher.getHWSingleInfo("NetLink") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Max Bandwidth: ")//最大带宽: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: maxText text: ""//systemdispatcher.getHWSingleInfo("NetCapacity") font.pixelSize: home.fontSize color: "#7a7a7a" } } } Row { visible: (wmodelText.text != "" && wvendorText.text != "") ? true:false Common.Label { id: biostitle text: qsTr("WLan NIC Info")//无线网卡信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { id: splitbar anchors.verticalCenter: parent.verticalCenter width: home.width - biostitle.width - 30 * 2 } } Column { anchors.left: parent.left anchors.leftMargin: 20 spacing: 10 Row { spacing: 10 visible: wmodelText.text ? true:false Common.Label { text: qsTr("WLan NIC Model:")//网卡型号: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: wmodelText width: 450 wrapMode: Text.WordWrap text: ""//systemdispatcher.getHWSingleInfo("WlanProduct") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 visible: wvendorText.text ? true:false Common.Label { text: qsTr("Vendor:")//制造商: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: wvendorText text: ""//systemdispatcher.getHWSingleInfo("WlanVendor") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 visible: wdriverText.text ? true:false Common.Label { text: qsTr("WLan NIC Driver:")//无线网卡驱动: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: wdriverText text: ""//systemdispatcher.getHWSingleInfo("WlanDrive") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 visible: wbusText.text ? true:false Common.Label { text: qsTr("Bus Address:")//总线地址: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: wbusText text: ""//systemdispatcher.getHWSingleInfo("WlanBusinfo") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 visible: wdeviceText.text ? true:false Common.Label { text: qsTr("Device Name:")//设备名称: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: wdeviceText text: ""//systemdispatcher.getHWSingleInfo("WlanLogicalname") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 visible: wipText.text ? true:false Common.Label { text: qsTr("IP Address:")//IP地址: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: wipText text: ""//systemdispatcher.getHWSingleInfo("WlanIp") font.pixelSize: home.fontSize color: "#7a7a7a" } } Row { spacing: 10 height: 40 visible: wmacText.text ? true:false Common.Label { text: qsTr("Serial Number: ")//序列号: font.pixelSize: home.fontSize color: "#7a7a7a" width: 150 } Text { id: wmacText text: ""//systemdispatcher.getHWSingleInfo("WlanSerial") font.pixelSize: home.fontSize color: "#7a7a7a" } } } } //logo Image { id: logo source: "" opacity: 0.5 anchors { top: parent.top topMargin: 65 left: parent.left leftMargin: 570 } } //logo Image { id: wlogo visible: (wmodelText.text != "" && wvendorText.text != "") ? true:false opacity: 0.5 source: "" anchors { top: parent.top topMargin: (wmodelText.text != "" && wvendorText.text != "") ? 385 : 0 left: parent.left leftMargin: 570 } } } } youker-assistant-1.0.1/qml/img/en/using.png000644 001750 001750 00000004477 12312451003 021155 0ustar00saucysaucy000000 000000 PNG  IHDR$:tEXtSoftwareAdobe ImageReadyqe<IDATxbg-ƀ X@; / x%Cf0 `OneȝxY&_ +вLm?y#~&?Y>s{};@1N?nō >@6 w1s գ+Aؠ:#(LE~AI[Q`?EgM̘7\`JU03-ؙh.$Vs uˍPDe8}й͌AX׿`#* 37 gXop302"d__AS.?9^40#_ 0\bf`7bĽ ,%bP:Dcdʆ,߽ .lj+H;"Un>HAۙtY j@ 9,,@ϯ 3A?83oӏ~.Һ|OgO>Wg^w5kC[J(9& ;V @ # 7Q6=U/P?ؠ/>bU0%WY5nqJ}<¥gA ԗy^<` .9@._?aг 1"fF ˟V&̢@l=0WS30KS(E)L ]066-A9@å(v7? Á-Nwx" vIt/O>bfLpP@Or};;7@1?7>p+f&6013203b'7aª@5r\jzt]-4ec X 1YT(a+{ l@H28af?-,Vup'H\ԱAO|eZ`S7 ?a*`h\cL|`lgӋ$8 _)F#b߿p~㗇i߁Yfc`X{ڄj%g\:3569 1KDPY@hPPu t1VUhl꘡`Tc`8N{XA+Wbݩz5xS`ldB5wX-`fWAm^ kX 1$C̟YqanяE,2R悷:p&Hp1(Asݶ:X0N:lTL\HJ N+N~.әY9-օ=tw; j4-A)w gd\6/ `-˸]:`o}]āL~~sSǽ0c`%;;K0+_e† 9y&+ J ~HĂ?24"J-, e8,!g}6 q1{B`5o|fh?Wͬ$9_4r )Vcev0HHy"~48! MyLR5_ÔpP-LH +/CnYjHD Bar︨6C=̀g!@\k3SbL/dp J. ՋuJjlmxrDq !u(\@m j{?q'8ˆ &Ft P8M( vq;3,ifEHB2XST߀ O~ IRC!|^!Qa~Mhӟ`bpMN#4" j@IXWYQGc4?iZk (#Ij 9lKugmd>ٞ ) i 0|!p! /FX- U<4th *cbfLVfaÑ梕3-P&Á`yZ8_闶]#Pj F6^/}_pŔG$@'(:y~+ܪzn П+} _?ρ4sqVRt8ztԙ{5+}e: 2O*;FхdNݼPFe_We8Mb#hv4J߹׏Ac HdxTM*.4*j?DlIENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/dbus/com.ubuntukylin.youker.policy000644 001750 001750 00000001350 12312451003 032537 0ustar00saucysaucy000000 000000 Youker Assistant http://ubuntukylin.com youker-assistant <_description> system level settings <_message> To Change the settings, you need to authenticate. auth_admin auth_admin auth_admin youker-assistant-1.0.1/src/modaldialog.ui000644 001750 001750 00000007077 12312451003 020754 0ustar00saucysaucy000000 000000 ModalDialog 0 0 329 195 Dialog 230 156 94 29 border-image: url(:/pixmap/image/quit.png); font: 11pt "文泉驿微米黑"; Cancel 120 156 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; OK 10 6 26 20 33 6 26 20 8 85 311 51 11 border-image: url(:/pixmap/image/message.png); :/pixmap/image/message.png 8 47 291 31 12 <html><head/><body><p>Monitor Check</p></body></html> 0 0 329 195 border-image: url(:/pixmap/image/dialog-bg.png); QFrame::StyledPanel QFrame::Raised frame closeButton okButton btn_close btn_min displaylabel label okButton closeButton youker-assistant-1.0.1/qml/img/icons/list_item_selected.png000644 001750 001750 00000007454 12312451003 024400 0ustar00saucysaucy000000 000000 PNG  IHDRN6iۯ pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FWIDATxK  N?$,-jW{RUM@B?ZNqۤl6,ʯ뢿|||(0f58UFẴPv' p@qO' SC^9ۜwTpg8UdcRٜw`_(= x]<F"`U" 1ogDψ<'ŁҰV>΂vCD ғ#Rohʁ?>~]W;j'mU7g) C!*YޕEiJ_@`s}}r `6٪jT&ŃY<*g`JL2hP@+ H[7$,r2m3g"= \:T.Uͥ(`GM5I5haYΛۭ2'MVjխ+46QqLM" 2wpV䁻;Fl`JRj#)Q"6fU@KE )c)J5H=8b:w?#@x2ѥ8O.U|7}`rDQ͊K!ݘwLPRLԶ\w$VERIqJZU܊,n2c(.I^70V@gv5Zi]C`J2Miʳ14nGjyM5.39+kQI{Mkj6eyHg_QPxzg컃(JL+_1M1[__&vGm W}%_UyAn}W~,k셬6VU?ۏXAG`ю[geF۞.GkzViHznh{kߣnx3^SEqǣo&iNk/%YEh*4;([ ͪ' Iq2TeU|iN2[ \@c>SD mD&HHe߃#bp YM#Ӡ8Gk{k[y <IENDB`youker-assistant-1.0.1/qml/img/icons/arrow.png000644 001750 001750 00000001671 12312451003 021664 0ustar00saucysaucy000000 000000 PNG  IHDRS tEXtSoftwareAdobe ImageReadyqe<[IDATxb,9`{ؙ``&p  fb  p}+n9Ӊlp5V ǧ l F$Tq }@fda$Xà4 M  = dt2W@`3@ ٛ(!~"&gXQTGi63+# aA7T j 7gPd8de0&:R.!'sj2D4Tz"b{Kq"&$64܃&^fhhC`ȆԸ@2F8`` 0`"rI (8Yx>m`180DS 8a2s14Ycx>NP*[@_n0f*̠*hpy5~8YW .އMrOBb Xt!ArsBIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/FIC.jpg000644 001750 001750 00000011145 12312451003 023405 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !QqAaB2XS$4"R#Dt%F7GWH  !1AQaqT"BRғ$42#3rSDdtU ?y4rkR&U&5\L_ju)G~0u#^&e0TP\]<ԣΙT7RI^T 95) cxL^\`E. 5~J`d: ɑ˯XR SK2ܘ *(.G.jQL*bEү*1#@hsnP,@ 6(i vrm0stң$ SvLQ^<bD]Gg1Ym.aJ.N.+(?'bC_h?vH~/K֙6\>(.NF^Ӵ{^-Srą0&yU+P_ n-[3'[*;lT!FY uw=`Q+h:1o%eD'$ 06[w $C.i7O5.I0fcvvOsⶖbb@B{Fڦp & RD{Ѻ2xl7.{`֝⸑rKd;D$WS$ (wFn]cvo+&efVgM󕧴k}zɫc0$`"Lܠ@GboE;6?z͵1Ʊ~J-e+7sv&`DGPm>V>h2of8Bjڻ:ioeӍ>, yHX,:oGT lWQV?z8=xߩ?&˿TbrܭI 5cf#[K/Yf7kPEk"g#"CD&0-uG[)Ig  `JZsnw[}+X[Um׺{{׿ko圻vW~ן?oG8dzdo跰w^pܤiJ%TGG3O*`5U _2fi$ SĮp س C2o\hQM`2 ﶎNTVֈ'zi*q8[_A~Y6~}^ƥS(7O<׬+rb \QiQAr0ͰnrT\Li([x8B葂CiJo%An&XC.C F6޵ۓnKmדw3t"ȶf죵liZN6rH` ;qngsSN;F1&$rfVюD̹ap[ 'w+ns61/IK6y*+s <}-vvoE 0KMn=Fjsj wV'W}+{m?SI7B^@7A|gnc1Fg[45({i-G i$ 0ZC=E Ϊ5X|(?7jrӈrC9wt> rzo0-q6%2WuHP1Ρ]CY^h0QelhZnZOsVVSr;l0 ژ[Ծ,nmFSUnR"{JÐNm1<3ÇS; 1&@p^t՜Nd_qWJ`Y6gȬemJ#/^!m޾[H@0Yfoӳ̜_$Sư} \.]p017:|Y3O6{?ꬺ/. Q #QF&+ul@|5v}?;37YzK2 F6vr U<Ibw61)ZZdU_)(@WTGc[쉃`VT5t/c)锃eR}LU2=K'/;&7L; bixژ[ KZ [8Dm;47o:N'c62Niܘmbgl@ $E)wR3:OZ@ٔɨ*O./ƛ۸.`kQ(ިwяI^Z"F#OHf6[1~[iD4KV[ $ju^]z/ :H;nxkF Ԁx=2KZ1qzˀ/tw/xw_>~ٳD76/%1χd':?[n&Ck͵79OYϯ+ZMtp2ZK]CW]{u{!gV@#աRS˒Y8Nj!ӭV Kt,1ro2̬r6e[cSf5U-pi%Q`TI 1^_0Tif95;2j'3w+ͻtIt:y-~WOAee2X%D{u{z2Mm;J?q1m/.@S~#܏WOK镑.vM^Dz'eLtxWIԾu*ss} *  qj=c]S>PkCCAi/($G"3rqˋcW՚zo-C;d47{Ys~sZgPVDZsAk Y B]މ"gf8\V8Mǯ.tnbG[ S*՘3j]o^O[DN{?*/=[=I7HC& 7 x2|zI:I)dI:I)dI:I))"d)$d)$d)$d)$d)$ Photoshop 3.08BIM%8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM;F]eyfn]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM  ]FLJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I9bI$I%)$IJI$RI$Zgַf\ыKir˧}`]R^'n:?9L1,t5'FBq?8@ xs-8Oh.7@S?Xlߩc sߠ佳V4._z8qQq3< .wT}FWA kcc[o&e^?yHevrnr"I]_c9"r3rcc|1q%S oy $d{/]k`Zqpnem;v7ɸ%V/VNw2&b7Zzė3oUvt@i> $ju^]z/ :H;nxkF Ԁx=2KZ1qzˀ/tw/xw_>~ٳD76/%1χd':?[n&Ck͵79OYϯ+ZMtp2ZK]CW]{u{!gV@#աRS˒Y8Nj!ӭV Kt,1ro2̬r6e[cSf5U-pi%Q`TI 1^_0Tif95;2j'3w+ͻtIt:y-~WOAee2X%D{u{z2Mm;J?q1m/.@S~#܏WOK镑.vM^Dz'eLtxWIԾu*ss} *  qj=c]S>PkCCAi/($G"3rqˋcW՚zo-C;d47{Ys~sZgPVDZsAk Y B]މ"gf8\V8Mǯ.tnbG[ S*՘3j]o^O[DN{?*/=[=I7HC& 7 x2|zI:I)dI:I)dI:I))"d)$d)$d)$d)$d)$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIM2http://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-03-05T13:43:13+08:00 2012-03-05T13:43:13+08:00 2012-03-05T13:43:13+08:00 Adobe Photoshop CS Windows uuid:909f7135-6685-11e1-91d2-fc4f58cca079 adobe:docid:photoshop:909f7134-6685-11e1-91d2-fc4f58cca079 adobe:docid:photoshop:ef3e3a7f-6685-11e1-91d2-fc4f58cca079 image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?ZUثWb]v*UثWZUثWb]v*UثWZUت7pT_i'~\~aZݎd#:HW+^^aAt}Ysd1^C8Wb]^uY|".  Rٝstz8rGgxokkW7Y`z[SU-b1Yf&L##~{|.M tkgu%V@o\^#B2cC2OBirnegD7 ;`ѓ#͗x8ac/I?5|VfwGqdFR6#/WVbL=͏03܋/5{-uDf)"u9Fy6vohS8VK+_C{VFQ/./':xBb/i5y#5.O殧zg$"Q~(ǜ8jzŦ6_kNrps5_HK:#Å~g0uwO MӜ~j͖>vL&Nwͦ ,mVhj8!#Vп,kڗKAeN?PzF5x;/>\YL7tR4Ol:}=L\0ˎ/ &q-MNUxgW? 4W]1/r?S{SO6O:/c6ڽ;\` [40Sj:?z_#=ZPHŸ~ir7ϋ12~]KMn}FXŗZRr4$=q˦㘕]l_O,"\Szة̺-[""ĨM֤lj8#T p -HգJH 2B1٘(/]=MnjT** W陇Zjgῧ"徑收fscuiDxTmr:77]ِWji/X\|#Ԗ׺li)@F`(>UQu 4*ZB$u ݬ:aeҍr) CBQccۅ@ B_Ɂ!]-eeВ@h[]6Z+2̮BQЭau9#DԵ[}QAAD' I7nf2*lz(=38h,"qԼoOߺXi4)&';jk by&pr.4tdP Uu1 ,MxTFX]6Hah(R0X dqދ&ߥeptGTMXh:}qL'7%<%j!jY;=Ʊ: p \[^fG6)$Jjܕ }͋aଙ;pef35(m&)-pkpXE8%}FNn2hIe=᥎=O\FK, E[}pPZvGV8|G>d.pQ W"8rng.DDZN㰄hx .!Dؾ~O3 B㨢wf6nM1n6[ZbhQ4R|S(O> QAmbkV*"ZmJ&sfdؤ2ܿٛ/gqeaШ4tn&S;9i^c[}k,g^I,3eKcD:33>YycKd{_5t WÐ͍pdţŌx*jNZg{ 1Pfަ{" Uajp+B/:*(Cބ՛0}f j@L~i9/k .ak:d^!FcЋ(6c~Ǖ ?%En#p·*zT `^CM߅o.R`]%a9Sɡ.oiz '['Q~I"w`귿 1E/Гg!Xi۬%Jbt_q QW3W׎d\.9jơ?uzZDf́`& p!qYO) {Tj+Q%3JMl,Dےm94$k!S0HRQ$w79҈sO5+ú`?/lTLtV pg}@wh3#? Jm$x6ڛM!Fx:زtk^m]kc8a-# h[XXHcƈ&?PI4i$b QcTB ZZXknۥ̛yo=*mIfwgwv3`R.EN |*%7b:>,/PF8ܦ8V]S5PFee]oWR, eb weR>bl3))!vqpe$ v'mTe$|g},˶0a=8x;P 9-wNl5:ŬU@Fm%!2pew:j<R NLzVN3~ĕ 5N;N cD!#):ηު -0-%ߓjT4 GTyVi:ea38nR 4ՄmNw:Uf):^Xj>DCvܭƎW~Y$q5\4 {II6OP:R ES8uo|t=A!/Gbwc9 K~Ԓ^%A\~ܨU8Lšp oށ-+|hj*߆ZY5;9P2CCÎi7> #MXlt<[ۆ `bg% ?s K7XG,&pK1ꢡΗA ?e1<JJJWLHvKoXEv^r)ch%Q4.^s3;5sG?HBuMy.ZUxUڳ.t$DDSd0 ̻w-ƣ,aT(1mHGap""+2&YVp7]ӕ=s.|﷠Ռ2KrxGKB hRIxULÑ͸A:;Qqx ,?cɃ$OdcЦP^f\炒6E5 "-9w4p݋8jy/Hg!wwd\+ˋvxlz||j'Oۡ&'7gzTnw6RSRTp2s6cv7uZoz/T5ض3kıZzd(w+FuɅ&s ëC;8ⱃǠFޭ,owW6TsQ)eOIU'd9Xt HKspl3c5y$3hT8Nn*#pFI4p_8jS=5&t"LFb$x.֘PY\Ѐ.710N E$=)/"pLd:S*ֈ;X:e-"3t3N.ָO435[%[3\det(ה7Z \(4pl68O8ޚ}f!¥r{c ΙIQqs.²$l0(Ph*I?*T`X&LUP*)bR9؛={}ׯgBYag3~f RBbд[: ԅBJ*\Yg`; Sm7uJi7wQ}M}F+>sNmpݜxnz M˺p8Sy4l :~DoÝۙ-r'VX;e2/n$= 7ϼ,sﵜl&_Oc2Cv$RXFUx1l+h<O t!xOHĪvы61fU퍿Wf=u &ceE5Y(/n@kY;>""3%مPNҼ]C6Fq'Y==(pIʨ6(f=ߩ{nɋpbRSJ磳_^ϣ7c'1#.<.&g1Ququ\ty br<>g%ţI ~I\d"L߂ܸ9j{c O+ثp*2ońr v'꛱tޯpTusﳷwM5q^ 9eJd[`f-3=dH:On\,$K28=p~$XXFk1rQ+p`'gZ?SoA8:2/>uxvxյX@?G%JraEf%RHrfoy=j0m hbq")1ˆáIJ")횤L}4kTPOv 4M b?7['ށ/?p4u?g{ٹNcOCR9+8fW {vYG/i%EM4+F'nɫ 3"GnCyqJ|X8}}-PX1h>q%qAdx?)p%A[>i)p82qǰ$()F,ُP!"]ߏGwaǿڟH|10r>j'-{of 1hѭRHpAҜpgpaM5BYjUiXLS WHeߑpf o:G/V鴅 zu /® 3ofR1?ywbzf4]rx v|2{9DBj@7tL}bYRn~ۏD4Ħmq]go!y?05}ˢC3R֓8?RB{ sߠ}|FÇe+zH|>8&^~^ zPf/F (S-\ch[8ڻl[M#/D_ET#eKRaݚR FҴּ$PK΂uZ ^L[!Naw2Bگx4Оv^Gҁ_LݺRBj՝dkC]&p$|b.Fvwd_]2W~Ƒ[giޚdpf3! g&@ ӅSe3dH,yT}nzϡ}l:ap?UJ qwU4ɑ+a/`[ kh,qc&bG XYi"ƅxY|/!cw[~@Is,LG4ǃwp,ߍW'0r9ׅMxQmxMwh]CH>|ځfI-BXBo2e#蜢q"- [(/8EY6Da?I!&FP!= =9Tz[O^Zo(B!hhOmbMX"BC&(n͸ɦ.;;;}ii[߅v9zEuHvGcV Hヒ"_KYo IBqq̻΋/ 9È 7 Tm&$d?lc/Bdc#%_.f R_z3Sa=d"OzZ.;;T5@]~(S"ӆ wܖzϳzi߈ÁR#Q9iRo}aBӍtIʎ8?|-KLꞌM4Z P)?Uk5B@fmU''+/ ?{{s X~y7_m\'~!-BZe||IIES->'4 lgad WOAm -(R"1Fcb0&F qD=o\=x?04ƠPjUEY :;8tv3m~%H8j(n%n2 D(XhoAPbZ~DI d bmB&D34c;4kj&))x45cK$AYؖ))(G&0yq< EF}"rth*-F' l.;s;.,84Vf65ZA 5tKr\vzi ݍ&:BJ`ihrkЊ!37661QRq+tKnFQrRl7 cFC9P[^OayMȭ,÷z+y>(T&^o"J0u1f8y\Ӆq 10Wj tbG?7#Fe;DpW6k.ѹ; ךipR;9"?x80첻BY @T+%6 7IMJRmj7mO>|i APb4EV-bHH@`K0`gΙ9CNvpo4R() u?x( #3kNcY[P]  iTi/̕ς9y-ΰՁsޑE]d,VxW)FBɱb^} ;/.L;USimQd{659| ~iߍhڕ^uTh4*b("\]85BMy)ka7Ga7G˱uB sXmrb P翮?i>G XP˩8u$2E裶b~.y}c.RReaso(V̓];kk|]/ϼ֦ϭaO !=9phKܚ . Gz;47_&>cs]69.Hg%ZF4%/&QIE{EE<ҒON6ם^ؒ@EcLtGGMQLEd} bD23;d(D<>R2-˳[l  ߗu+I3rgi9s"1f222 UKL2dz m ehGy*ZY(\c-Oj%GGh XK.v*`pl2C-CìE0sk1"ysdCȑ5duKU!ۿo@IQaqiNxO$y5C#$4p擏-PS` hHDv0djsr]Q2SDhs|,NzGȯbȊSAfPm ^ ]49Alao;I}.؊YDq6̤]55`L.YlkKEw 7GAh@25?va:^1^sES6Gs|`D384 ˖:K0X0Rس֖Rh}UJPz'$ fa'Liux-͇a)J~{%L4UׇK?=q[8[T UScmKu <:Mr8 {OJ>P#I2 g҄GUKl{vtB#[r)tӭqaB$n!J읚VnJKit~Khop.7͚F͆\쳃:tI syk`C3RP? !b(Q)V? UjժRѨRUQ$ &PuӀɣ1xXW{3sg{ $a/wΝ3̙s}ÑdkVW9$I5e׾k25. Žl4$I.IvC`'̚z9\ї8XNcbwđꤣZ4~RTKLI\"DRfR {$)-`=k#da \IT8xb{^ Gzꈷ J$E DyH!"P[+nԃTO{Fɵ +s窾sD]d  oaQx=XVvM%N3?YЏ9 (ao]^,4~_ŇJǣOmEfF0 r2"r] L3gLm÷4A`GGtW7m {pxyC^ӡ|LaЧ>++:|x 4Cp"|(W\ Yه'Niج6rwZ]e.Ϝ>`)z! 4[6[G K?q4fyTUV`^fe/6NW jF$m]s&p:s.iiH)?mn3lۼ?˖aۚU6Y̲+]=Xrw.ǟu`WS؎p8eBoOsʎg D]jk!a!l$:$իLO|b%TWxV]z/aGE[1'bZ3"q>}b|7n?IDd0:]w> jx$tE/sꈌ+Gw$2USYY`Mؗ:Z`N(a&ZUW@~b½r혿`tRKF wg `'Ǯx5kp`xj,&/Ԟ(,^;v);VL*ͮ[B,`SSz]RRڿ>3!<]=w0in~6hIk%ø}ry*t\smEh ޡcr #yEX]t^*^pHS+diPty;/ET|$_ Z["- `)mrAV*W?Fp_h'TM=9BܑQ Րq #Uej\msؖRր? 7/ѱ{W; (^tk6- O@<3Mh'+b Y: eA[t/CFS(U$xIjKOkԁa(]pqm]J GIsi fG_VS}7~(0uQJį^u%+J,!jĢ]s Xq=)*C`2FwU7a,E΢u!1>n{6V']jFˉdC5ڛ!hu9[RV S!}@2# @ 8_͟3M_zpPN6IРb!AfYGs 6#>頽LІӭf3PZRʑ8S29vv>)N}X?_[ ffd¢f ! /;yŬWpymٜ4(S`Q]sI6B :hĠ=,zvIm;?o^[͵7`Nø;u@_!K(DHq[ns#N7]m2? 7Z^n3f3T=[0h$<*H2S=_gHfk7|gCڸf[;}Yl jr>Wlk_ @|ZՅ5,Z:3z@5+:G jl\KMvH["*iPW ,I9RR5aVLֲƾ۰~-nekg͛ BNeH>9M_3nY&Z\! r7lZZ/6G}LIjxOYY9Pw+TZ7F`GY~ǡv.8WI6V#UmH:~]wޕtqFd88-p8|{'[`(Xe+,FPf ?Gzm[ƨwsә5i94rÓ`^ N|(uZ:SڨovaO[UY"P;4ɡj8@D9%!x,?˂S-̌] qʅS^t饄aÝWHJV'e1f>+PVXZan>?.EhXpoXY>f<@'(4( K 'N7â!ڤKt2J{Pt"qd@/)(6Lfͅ]{x]Xa]yF~x7l< +׬j~bbEi $}sFxgĽ'\n #i@Ik-! #V5 W_~GFbhxuNˇ7,ugǽ0Cw0$&MAi<"Ry+^0==P, 37?H!2(0D+։%d~Ǽ,ZO3B>lŌI>9 {tt-Mc/VZouO V{$R!BePAMi (1v#Ezk7??N1{lx?޺exo%sWU~Z&t{K3a]=fC_w7]t*8s2d!x %߿ [yh)A~ӟ͋փtHɎAyL|?~twȾ/` Qxw `uQZ$*^͵TP|j|,&xx06~+\XYd{x`G0Ƥf,. RsXK%((jW= ee\")d0!B;,Mu66{B!Q.RrpVo?%1xEs'9_oA~qܱq 7!n4kߜ@ݘ6=nsԄIѿߗC_68#J}O6hz_omݷ7sQ0Ry[)nmrm4fjpQXt)Yδ>,=O"myE98~.Z/@3eEтBv~߽ 9c pۣBͶ] xoҍ0 LhY)t@8[JIR7 ;z ,]?_>}}'eԓ?'2RGăyJ0ٱF/Nc*e WZ@|4 M@2uHظ-qOwARb+n|%b{wC6,YXΑiYӈ2bތqFVA% i|S/ip$2.~svOK:唂'WB4QNP"D$ sԈ %8Ji 'bbو,L]A!5H\~D* ARX`p\ynRa\"bP2)V*Cx[6KI>=1 8@- \LX5D^O MIA6QR xNʟ&x< D @O?Μ yEsәl|vA=[|BS #PWxXݖ6V3>wï<"G+q-EG7f gmߺֶpՋb%E*%BDrD"Z^֫wmvn)8y]f5® N{ lo쇫l ژ%yeck#_-eh4j>.EM0`*(|[Aw2A=ԸLu,g3..orʢQxcj]M-Lˠ#iv&C"IuUQuC!ײ&̖b ~}7}<&[<34?Yٱl s粿3KTylA[&̄۹yWv= lcSL-~;p/&@EfL%t]ii] e잫pMq+v e2N3q֞?D=t[*kӌ/,(HQTIB89e%P>ϫ Cs/<>X66qگJfF=&؊bf|CZb5|(9 c`,,t[vtdjjpEETzE 7^U[ַs>{0# ZkHw1hCB`kAm{gqBa_++7C)R,A+sT!IԃsQmL 5ᓋW!xH|7yN{ [{[GKqF#NLJn:-2o ;H`9ԦQAJ3wBCEx)xv=:̟|22F=PCjAι9[F2lH@EifHN (*ibփyHW\LN罏$cP&&U5%M?źN*fxYKg[ QV¶[ZI-(Ten*^Ӭ2s^K~Nv#?VŲ&ɢK}/Q&` 580 "vCݜkU*b/bVVd%Kk#mm6i-psz¡R./.jO .8*z /@Z| ҕ>@ htIk[:uvud/d袤 ivXqt Ξ=,}1SՉqsUrr`/v_zቮs`}Gln޹ 7nf Ta Yo;,ضs+^n$l/O:"LNLhmW/-B[vYW]mpΰ,&%Ka #Pky)l޼-e%ز1/ҺZv89C`fB2/f%ES^:ƌ/ܟuϨmҏ) gl36ձJEBs#U7D, Gg+)`z>Gf9iCV&gkC*5 oz8˅>͌مyH0hiڽCt믢ahN!pPv@RYB92z[R%f~T̟wA/bF_̹&@+&BpO`EK!f%34x5$If, /v(~wxDS\oی,jI Y(%x |X,oo+?ط̗K"}wOɐhl(p bpCgtN!w WF Kg~ }25յ*v(03~ l5t:,|o>7J_,/.(MOT݃@M3xYtjJBY j0CLZs/y-A;0x& 3GgbJ QAnZǷ>ʐ$c.!soqx$nr=MTŖHp2D:HhDN6s )^bV$nwB!b>GY0kֺ % n3oE:Tx04a=IVn  ؘC ʚAH,Z /OK ) tpnd]M.գ 3;qHt!H?ww~ใ Mz88uk ԏ?:ͅ/Fddرή0`= > rX{6q!pH|Zj ݆ia4c熫-ޮ`OiPN===~lvay G>vM;8v6wBu W,xύS|> v*(8-Vܨrwsb,#gS9{^A* ػAm"ϿrD-tF r&\sF^{FSǣ'q5oGwN\f9ꬖ,ՙTU9nq@`wr^߃34ua_~r`Hak(`^_ن֯1Hj*u0z!XE1$bX?0LY8 I QgqD}=CSsC[Z[ُk7~|& "::3~r'{~T*qVYU'*LNLD.|uMPS[1$@qi0Cmtp Oa[-jc QG½a*η${>IX,4#lr ZMZzxL3(|}+lT*̐)&DC=?Re6[MO{\@TS=ܻO.%L/;s[^ם41څeU f@9!ఛM]=YLF(ANWl-?*#T}櫥2PQb 7r豐:;J Hf #eD3kfȆk|g˪DQ9$ 63`,zIVi+f}HIm<+BQ\D_è+'FL/)ɑ4#JuRH/Omhq#f' Gܶ!k| s?VTQG|8mm)K)Z_S QECY!U/UN4 BTN)N1zRuz;$U~,qFdζFN)j3l=E2LJqϬ|'U3uXӗ-jK*rՖpIߒY!HS~m̲1( : qf;`+:}Sӡ9CBdJ!5|dt@AScCfv#%-hE/.P*hJ, ~CD\j9fFAft>##(-YuI zdhuD ZmB'S%KCB;rYknN90BwʛʩBD PU>H pTXvT D/Zi\[9b0/~h'MBysZ(ld׵_>48B5gw>B 7|w,hgƒq.! ƎD#ٗ0qиt`|A5BʇXïXEFS?ELIENDB`youker-assistant-1.0.1/qml/func/info/CDROMInfo.qml000644 001750 001750 00000033014 12312451003 022212 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup /*------------------最多支持四个光驱的显示------------------*/ Rectangle { id: home; width: parent.width; height: 475 color: "transparent" property int itemNum: 5//每个模块的子项个数 property bool firstFlag: false property bool secondFlag: false property bool thirdFlag: false property bool fourthFlag: false ListModel {id: firstModel} ListModel {id: secondModel} ListModel {id: thirdModel} ListModel {id: fourthModel} function show_several_cdrom(num) { var cdrommodel = systemdispatcher.getHWSingleInfo("DvdProduct", "cdrom").split("<1_1>");//光驱型号 var vendorname = systemdispatcher.getHWSingleInfo("DvdVendor", "cdrom").split("<1_1>");//制造商 var devicename = systemdispatcher.getHWSingleInfo("DvdName", "cdrom").split("<1_1>");//设备名称 var firmware = systemdispatcher.getHWSingleInfo("DvdFw", "cdrom").split("<1_1>");//固件版本 var serial = systemdispatcher.getHWSingleInfo("DvdSerial", "cdrom").split("<1_1>");//序列号 //--------------first-------------- home.firstFlag = true; firstView.visible = true; firstModel.clear(); firstModel.append({"title": qsTr("CD-ROM Model:"), "result": cdrommodel[0]});//光驱型号: firstModel.append({"title": qsTr("Vendor:"), "result": vendorname[0]});//制造商: firstModel.append({"title": qsTr("Device Name:"), "result": devicename[0]});//设备名称: firstModel.append({"title": qsTr("Firmware Version:"), "result": firmware[0]});//固件版本: firstModel.append({"title": qsTr("Serial Number:"), "result": serial[0]});//序列号: splitbar1.visible = true; logo1.visible = true; logo1.source = InfoGroup.judgeName(vendorname[0].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorname[0].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //--------------second-------------- home.secondFlag = true; secondView.visible = true; secondModel.clear(); secondModel.append({"title": qsTr("CD-ROM Model:"), "result": cdrommodel[1]});//光驱型号: secondModel.append({"title": qsTr("Vendor:"), "result": vendorname[1]});//制造商: secondModel.append({"title": qsTr("Device Name:"), "result": devicename[1]});//设备名称: secondModel.append({"title": qsTr("Firmware Version:"), "result": firmware[1]});//固件版本: secondModel.append({"title": qsTr("Serial Number:"), "result": serial[1]});//序列号: splitbar2.visible = true; logo2.visible = true; logo2.source = InfoGroup.judgeName(vendorname[1].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorname[1].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); if(num == 2) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *2; } else if(num >= 3) { //--------------third-------------- home.thirdFlag = true; thirdView.visible = true; thirdModel.clear(); thirdModel.append({"title": qsTr("CD-ROM Model:"), "result": cdrommodel[2]});//光驱型号: thirdModel.append({"title": qsTr("Vendor:"), "result": vendorname[2]});//制造商: thirdModel.append({"title": qsTr("Device Name:"), "result": devicename[2]});//设备名称: thirdModel.append({"title": qsTr("Firmware Version:"), "result": firmware[2]});//固件版本: thirdModel.append({"title": qsTr("Serial Number:"), "result": serial[2]});//序列号: splitbar3.visible = true; logo3.visible = true; logo3.source = InfoGroup.judgeName(vendorname[2].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorname[2].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); if(num == 3) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *3; } else if(num == 4) { home.fourthFlag = true; fourthView.visible = true; fourthModel.clear(); fourthModel.append({"title": qsTr("CD-ROM Model:"), "result": cdrommodel[3]});//光驱型号: fourthModel.append({"title": qsTr("Vendor:"), "result": vendorname[3]});//制造商: fourthModel.append({"title": qsTr("Device Name:"), "result": devicename[3]});//设备名称: fourthModel.append({"title": qsTr("Firmware Version:"), "result": firmware[3]});//固件版本: fourthModel.append({"title": qsTr("Serial Number:"), "result": serial[3]});//序列号: splitbar4.visible = true; logo4.visible = true; logo4.source = InfoGroup.judgeName(vendorname[3].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorname[3].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *4; } } } Component.onCompleted: { systemdispatcher.get_cdrom_info_qt();//获取光驱详细信息 home.firstFlag = false; home.secondFlag = false; home.thirdFlag = false; home.fourthFlag = false; // systemdispatcher.get_audiocard_info_qt();//获取详细信息 var num = systemdispatcher.getHWSingleInfo("Dvdnum", "cdrom"); if(num == 1) { home.firstFlag = true; firstView.visible = true; var vendorName = systemdispatcher.getHWSingleInfo("DvdVendor", "cdrom");//制造商 firstModel.clear(); firstModel.append({"title": qsTr("CD-ROM Model:"), "result": systemdispatcher.getHWSingleInfo("DvdProduct", "cdrom")});//光驱型号: firstModel.append({"title": qsTr("Vendor:"), "result": vendorName});//制造商: firstModel.append({"title": qsTr("Device Name:"), "result": systemdispatcher.getHWSingleInfo("DvdName", "cdrom")});//设备名称: firstModel.append({"title": qsTr("Firmware Version:"), "result": systemdispatcher.getHWSingleInfo("DvdFw", "cdrom")});//固件版本: firstModel.append({"title": qsTr("Serial Number:"), "result": systemdispatcher.getHWSingleInfo("DvdSerial", "cdrom")});//序列号: splitbar1.visible = true; logo1.visible = true; logo1.source = InfoGroup.judgeName(vendorName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = home.itemNum*20 + (home.itemNum - 1)*10 + 10*2; } else if(num >= 2){ home.show_several_cdrom(num); } } Component { id: cdromDelegate Row { spacing: 10 Common.Label { text: title font.pixelSize: 14 color: "#7a7a7a" width: 150 // height: 20 } Text { id: slotText text: result width: 450 wrapMode: Text.WordWrap font.pixelSize: 14 color: "#7a7a7a" // height: 20 } } } Row { id: titleRow anchors { top: parent.top topMargin: 40 left: parent.left leftMargin: 30 } Common.Label { id: titlebar text: qsTr("CD-ROM Info")//光驱信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - titlebar.width - 30 * 2 } } Common.ScrollArea { frame:false anchors.left: parent.left anchors.leftMargin: 20 anchors.top: titleRow.bottom anchors.topMargin: 20 height: 390 width: 680 - 4 Item { id: listItem width: parent.width height: 0 Column { spacing: 10 anchors { left: parent.left leftMargin: 30 } Item { width: parent.width height: home.firstFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: firstView anchors.fill: parent model: firstModel delegate: cdromDelegate visible: false spacing: 10 } Image { id: logo1 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar1 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.secondFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: secondView anchors.fill: parent model: secondModel delegate: cdromDelegate visible: false spacing: 10 } Image { id: logo2 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar2 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.thirdFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: thirdView anchors.fill: parent model: thirdModel delegate: cdromDelegate visible: false spacing: 10 } Image { id: logo3 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar3 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.fourthFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: fourthView anchors.fill: parent model: fourthModel delegate: cdromDelegate visible: false spacing: 10 } Image { id: logo4 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar4 width: 680 - 4 - 30*2 visible: false } } }//Item }//ScrollArea } youker-assistant-1.0.1/qml/img/logo/Manufacturer/JETWAY.jpg000644 001750 001750 00000013635 12312451003 024015 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1 QAq"2Ba#3$brs4D !1AQa"q2BR#b3c$D%rC4 ?<970A7a+&vAGf.<ִJy~M]ntkTC0l \F["s(3, \o6buK8^DKzZٵ7U("D/BQFS)!@SJ q5@#Lzf)DIP1@i9WfGTA9Vo=&@jJ'ڽ>;).4&.8B-=34@(WI]ޮ0w%JeD466K UB}mfkS [7!% uuҖԧ{Aփ!yUȬ1- 3g)s"?ìVutH$s7|vrU,\)Umk{zc1M!Ug\xc|t<y)'mXA־sy\@P)^f/c+ÌX#nuz)}ƶqՕA /cFYL@7:` a0噱^,ut_o[YaMd9!䶞كPkݸ?ɹKWCGlPr3ru7rL+eQ V]xԸ3avcqxq(zkfT*7A{{hz=a\t4Z<#0!:Mnmk? >L gK\Z;"JUV"W( *ύ% jMRG^ClY9ȬšA*<l*X)iPN)#J۫kI0LZ9>W1-I_:̚o p{?3mRO8*Aj21.8<Ppݍ&9w=Xagb|-^Vv3Mm%ȝ9{@WA[ ;+MO?MLE`V.#>2ǟpo¯KjΟA_Th"ݍ<^$.5ʒ `D$9U]J;2r1qg7_8?#ia0"TjFNB <Tؽ@u֖ÝSHC&Zz*aV i +ʅȍ]]Y%iz)YO@؀4D=!ᲣP4,Fj3Kbw]B/U7Qx_29Ms_=DQf RR@|Qͽ"+&#_I &c*c!hCYZsdc5v tN& W)tB@&Fd25C([9\c1].ʨ3Upb2 ͘YZbbiR`(#eKx}L#%ވ0kjqAjZ=bP,zLvwa2eU XMVYԂó]h?־]>=n 8f/%`nry~T?~$25Εl RNo pyt2ZpJ QP/8=l*UU]PZvM|$Zkv%yYƒDn>F2gR+Bjو糸OǭOمns`إ^i`DBIٶ6)#'46疕:qRO8sbUaNRtđ6EⒺQ\ʈҋČ\$8S1}Tߍr\Ijuk >~[[|'^@S$]GβSoGzYE!\/%~STҀb]-~4X8v)g|drp8K&IOGSMENغ7N_=0,8sL`N1T!2mHcm^H9jnܾ:}n&6CX]#.f|MWѯQ-לe.eV: 'TV\^"èc2CtBLw^`)Њ8ո^asF駋O}`*H#.؟9Tb^iWRS5?::ޛP(-fk^#4m:1D v5C ,"12ûg^jѼ} SX_=GEG UlT.+Cn4gV.W =Z\|(g <܇(#9yaіliIE%Nl1ϡ6^SWEZ M2)<ġz$˻zbPKߕZW5 =L.hamb2Èџ@p<RtoPsVqwU=n.LܲSi[mܒOߓ BˆF n&]- FyO}7@f5Op%lϵ1չhg-iL {Sȵ iv/^EӋSgE.B.1ԖDn%9L=Md0|%* P!3e(frId٪X`L;M@taRp"ֈcRdC@3P0ÖUz'#zNUsMj`9aX%$IXq"QsPGHU#R,VDV"įC84ޤ:Іˠ+妳P!E!N}>+E6֞c_\r7LpzyB)pVɜy=ZU;nrɨVLNc}KK|q\jƩW*5&c$uU z_.#-7"9v~Izb.BE'S$L1\ eLDʌyLbοrb%k HW0Zt;o(grܑ̳'6k){3ڂ\Yk]Vz٘/ k݌,ro` 6u%VMIVlv~C7=x\_YM|w_sc{ww7Vc+S&[sUng(ߣozVϾ |;;_sˇ-XwwossiT2/Yl˳}8{nމɤ&C&9w=Xbb|-^youker-assistant-1.0.1/qml/img/logo/Manufacturer/KINGBOX.jpg000644 001750 001750 00000007315 12312451003 024111 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1  !AQqTG"2B$ђWw(X#S1AQa!BR2 ?>L#>t&>ĵ5c Sb>bL|b\C̿h8К4BI^Z5m /:m5m$NE(k(}(K>~j>C66~_Q6'r??/xVƧɯڽZEz:ii+yP)Jj8؋EXPm &ČN'q>AK9Icx` ݾ^ @Wo0ײ|?񆽐~v񦽡 5Tv >I=-cN_mڊ$5s&q $͘ MRil@ɽgx6ܥm{vWJ3)SVW)y&B5SyUy-bʚD*C0,cB0ȏ iDQ4VӰ\4q;M6X 6xytJGy6c%R֍ng5q׶ʈ٪dRh R˘\)d٧f}F96%Bnq[&afeh-/Rjj@a&TifZ3l`2 eNS]MPb4cn[J-U֤PЩhtҟ.r,mf&]rS%DUj`jE!aXEuM2jz*tƓ vͶ:LZi18N&5p(RZ/Z-< Ν],{EO3⬓Ux2ן*4pbV*PoF] %UKBf Vml+,?L\JcMLT*ա:OhCdAtJԭ)XEͤ p,]˞8Ih\r1:ў |di›Bx^6z'i ƨJ&V9y,iRc s`>Y۾>70͙O?/6i}y8x*qGgO?:.wG<7ŨiYĻ=ٚ'{ 'KNyawG̑;߸_mduXGAGQ;߸_mgZt7yt r3:y8/ֲGADl 7!:y,n8GE8j&!<]ٖ,k ?N+蝱jF{*8nh"wq^/Dk\ n b&;z$e{W*D丿G~'lZ=Z#ɏ1-M`ĘC5Ę3r/DEFen3/?t&.ĵ5c Sb>bL|b\C̿h8К4. ### END LICENSE import gsettings from compizsettings import CompizSetting class Unity: '''if compiz: key is icon_size; else if gsettins: key is icon-size''' #def __init__(self, name, key): # self.setting = CompizSetting("%s.%s" % (name, key)) # ---------------launcher--------------- # -----------------默认值----------------- # Get Default Value def get_default_schema_value(self, name, key): compizsetting = CompizSetting("%s.%s" % (name, key)) return compizsetting.get_schema_value() # Set Default Value min=32, max=64, step=16, key="unityshell.icon_size" #def set_default_schema_value(self, key, name, type, value): def set_default_schema_value(self, key, type, value): #default_value = self.get_default_schema_value(name, key) #if default_value is not None: return gsettings.set('org.compiz.unityshell', '/org/compiz/profiles/unity/plugins/unityshell/', key, type, value) #else: # raise NotImplemented # launcher auto hide mode, True/False def set_launcher_autohide(self, flag): return gsettings.set('org.compiz.unityshell', '/org/compiz/profiles/unity/plugins/unityshell/', 'launcher-hide-mode', 'int', flag) # get launcher auto hide mode def get_launcher_autohide(self): value = gsettings.get('org.compiz.unityshell', '/org/compiz/profiles/unity/plugins/unityshell/', 'launcher-hide-mode', 'int') if value == 0: return False elif value == 1: return True else: return None # launcher icon size 32-64 def set_launcher_icon_size(self, size): return gsettings.set('org.compiz.unityshell', '/org/compiz/profiles/unity/plugins/unityshell/', 'icon-size', 'int', size) # get launcher icon size def get_launcher_icon_size(self): return gsettings.get('org.compiz.unityshell', '/org/compiz/profiles/unity/plugins/unityshell/', 'icon-size', 'int') # launcher 'show desktop' icon True/False def set_launcher_have_showdesktopicon(self, flag): launcher = gsettings.get_schema('com.canonical.Unity.Launcher') icons = launcher.get_strv('favorites') desktop = 'unity://desktop-icon' if flag == True: if desktop not in icons: icons.append(desktop) launcher.set_strv('favorites', icons) else: if desktop in icons: icons.remove(desktop) launcher.set_strv('favorites', icons) # get is launcher have 'show desktop' icon def get_launcher_have_showdesktopicon(self): launcher = gsettings.get_schema('com.canonical.Unity.Launcher') icons = launcher.get_strv('favorites') desktop = 'unity://desktop-icon' if desktop in icons: return True else: return False def get_default_launcher_have_showdesktopicon(self): return self.get_launcher_have_showdesktopicon() def set_default_launcher_have_showdesktopicon(self): self.set_launcher_have_showdesktopicon(True) if __name__ == '__main__': uuu = Unity() bb = uuu.get_default_schema_value("unityshell", "icon_size") aa = uuu.get_default_schema_value("unityshell", "launcher_hide_mode") #aa = uuu.get_default_schema_value('org.gnome.desktop.media-handling', 'automount') #uuu = Unity("unityshell", "icon_size") #aa = uuu.get_launcher_icon_size_test() #print "bb->" #print bb #print "aa->" #print aa #uuu.set_default_schema_value('icon-size', 'int', bb) cc = uuu.get_default_launcher_have_showdesktopicon() print cc #uuu.set_default_schema_value('launcher-hide-mode', 'int', aa) #bb = uuu.get_default_launcher_icon_size() #print "bb->" #print bb #print(type(bb)) #uuu.reset_default_launcher_icon_size(bb) #uuu.set_launcher_icon_size(48) # print uuu.get_launcher_icon_size() # print uuu.get_launcher_have_showdesktopicon() # uuu.set_launcher_autohide(0) # print uuu.get_launcher_autohide() # uuu.set_launcher_have_showdesktopicon(True) # uuu.set_launcher_icon_size(48) youker-assistant-1.0.1/qml/img/skin/bg-bottom-tab.png000644 001750 001750 00000013357 12312451003 023025 0ustar00saucysaucy000000 000000 PNG  IHDRRFU pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F IDATxKjPQ (Mت{JMWԽ\MA'!H "8|; [mmvwhE|߲SSWR%,9fJW)._5X۵ݡ}˧ʾu]iQtm* SiW6Fݠe { $h $h $h $h $h $h $h $h $h $h $h $hܱ 0EQqr;r_D!GNRVZVR>;NJy"RRT'U'(nJUJYd9j)u*%\:)?|chx>|>|>|>|3|3|3|3|gggp/1 @j̗Yd'ˇ.!>!>!>!>C| >C| >C| >C| >ć@|ć@|ć@|ć@|!>!>!>!>C| >C| >C| >C| >C|~1 0E J ._kٶyxGhhhU3mܼ}}}}}}}}hhhhhhhhh}}}}}}}}}hhhhhhhhh}}}}}}}}}hhhhD KNPфc`ݓ{",Hݤ@[*:s66_tկ3wWڽͯVN1=lm1O36 ҝIg9cXM1MVToWntٲu>afQC?*I{WyvGUǗ-֏^?Py?^,^ Z Ⱘzwq喗- WIJL[{ku}}}}}}}}|>>>>>>>>>@@@@@@@@@>>>>>>>>>>@@@@@@@@@>>>>>>>>>>@@@@@@@@@>>>>>>>>>>@@@@@@@@@>>>>>>>>>@@@@@@@@@>>>>>>>>v1O@`X89\{i/ێ:,.gǰ:HSbG/?=Kp@ }>d }>dW7>ٟoǷ}~@ }>d@ }>d}>d@ }@ }>d@ }>d@>d@ }>@ }>d }>d@ d@ }>d@ }>d }>d@ d@ }>d@ }>d}>d@ }@ }>d@ }>d@>d@ }>@ }>d }>d@ d@ }>@ }>d }>d@ d@~beIENDB`youker-assistant-1.0.1/qml/img/weather/n28.gif000644 001750 001750 00000005631 12312451003 021446 0ustar00saucysaucy000000 000000 GIF89a008Z2PӰ˅ˮŲ݄·̪Ѽåɸ2T7Z1P;X}ƹ.O1R/M4U6W#@c :[%Be*Io'Dg-Ms/Ms3S|1Qw2Pv4Tz1Os3Qu9Y5Sy6Tz9Y9Y:Z;Y9W{CZwVinv0P3U1Q2R/M3S0N5U0M1O5U6V7W3P8X4R;]9Y:Z"Be8V!?a >^<[7T#@`+Mr%Ba)Gi.Ou*Ik/Qv,Jm3V|2Sy/Mp&?Z7Z6X~5W|6X}7Y~3Qs5Sv1Lk?a0IdFh=Zz6Nh=WtLdI_x[ph{ġ/M0N2P3Q/J4R0K5S6T7U3N?a@b=^:X Ab!Bc;Y#De&Gi#Ba#@^(Ij*Km,Mp-Or-Nq(Fe0Sx.Or-Mn2Uy0Qt/Pr.Op4X}1Sv1Ru3Ux2Sv7[5W{4Vy3Tv8[7Y|6Wz9\7X{5Uv9[~/Kh9Z}?Yt`m3! \P9pCC7|M+jCrNyҬ uag `0"P '@x ,G,`Bt( 8CY둸B {\8 0,z.y8> '^ p6L ۠8 Boͷ9"̓Df:]l0 +oв 1C]MDBD:"vE] : 6@T '\N-xdA(< t6061S0u'AOG>y^\8ۼ;xB %p&di 4~0 Y`E B` a-璽v &ۀrŸ垫 p7v%-p lH.;@ l i`o4 T,\ @(( ?C F8B]P5C$@+lA Ѐ7.*_>PqP` X "b7H h-l`$0@8 x!`'P0@y a]QF kdB"`>b0LK`B ƁU N]DرAaE/vq> 8}@  qYAC`F.XG8, fHEvPM`pc&a@vЂ<`E% `ncxb4FA _XxDDk WjPJC^1LX⨁+,W0!bb(B.SGB}@2`Q|QyȄ8,1|Jȃ_ #t Lc(P2ԉ<@NH-Ql5%tBB Jp,Q # P/ B(Cp2 B<_ a8AD!LAȈk!; eЫ_7[gL+a>AH]\Tԇ>>> H3&# /d$ `5_h k2q\&!'LbQ v0A q˄6|f4# h6xXf+!c`!hDCE >A" `A:@0 aD&V!@H3F AdobedF]    !1 AQq"Ba2#$5w8RS4%Uu6  !1AQaq"2B5r#$4TE7R3Ddt%U6' ?y7c˓т13oEs 8&`Y7ux|)aKA̹w .c ,0],0v1\˗pzՂ3)1XݍVv2.uӝl+rhXkdT E]T1P-ARIu5d =N[TMJ[җF- :aS JX~uheLG?dz޺̔Ȓq6*,Ί@_5<=<tx? bq[MK 5YARŲ>YA[Q=jr C S Gw>U* -8&9zl3#H۩D6Do;xSgPjˇ;.e^@s⿭XU ˟ԗs~+X֟ρZyw[4e[lnjesR(9jY#"ζ>nh߈}?Ü9ӮޘZZP +T+4gmWɪ>Nm{3U4.e.C1W&ĕ4 'gV5Џd.)hiRЍ5xnd(& $drvYٗh(ǩɠF>;Dg[Euujބ\3J5ycfl#wXRNRv%FgPZzL2.w%l*jYRԎ*6S)`ØyG`Q5zHs?fyK2m#Q =q2f(!|~ O8Ea gYǹDvb%M' VxP^pw[z}Y2:vT};@/mOgy1n}9#bWM̒\c2 C};g=\iQ#A 1 =6<olm M4{ڊnUm`*-;,bkL[̝D͹4NR ^өQ),Aϛ 7]7Ĉu^]/1DKv^`rP˷kegoH;ew1}o-<~?bS7f5K_tDt712o5ZM\ c~ul8PZ=cnÊ@S5 rĬU9W3;RRxPoGo\⫭Ss%KHJXythjsLϽJ<_h #  w0Ȉ̌T M >|רH*WD ZYTdE*dPAh5g}uLyQPH`:65#%W>^qXېc| -exCP+ ^E :pWOM)\-=XɃGlvJxbrFӕSzDqJMuJ\ 7d`́UΌn)H"m}_cB!2u@kzG`(ǍH$uYk&]+Wau^U;q+V_0D`A2].@e@pj/YիDmѷ;gV?i`^;2!26:ITr4 LQ{9N!C_|g;7>O3vuWa};rPh=/Shd(իO!0D7fPb6s5Q)q1-BH ]UVN.ERqYAQXҤbczpgn{GRy$;Kx{ղǭ.+-e{΢|gPlZjlXQpN&D &`?1%h~P&G 9ƞ!eՏS. AyoToمX{&.dKI.zl]V0"̤EJTM Dy89\t[*QݍؕZuG]!g_,č9Daww<ݳfelmwM68[ -V~nm}˺gDѶNm1BB12rq*"ˈaiRR=qqO%2V}8*Nt6<ßY̘=m )nM`I-Zibj:Jk1F&BPDN#d"Uń$$ ٩8j&ԗM0ŒcQ`o7۰xN~=Yl 0,k:i$M#t`S, MUZc<"HC0=cyzW~1 kKu.wEɼMG"XyZ-Yr\T:O HXFޘSdŴ)hΞ.'C2y<ßSÅk ] 6nk0 '==o;&.ds.Se+{)d!\̕==/V+,$KT̴L&b .ޞZ-e b5ʏU0Pa.qZ}sXV[Njj'ʮة)ՍkVcA&2J)T" #5M1&0p[tD/17 @ {ڴij+y+#z:٫]MAUǷt5ycrDȸ I83z,NJc ǣf).nΰ9y;EfvRRMkW*r2qCՐ8qb}ڟvsO)%bz@)d ΋lLPϲ]1 Wy;C|/$F >P6c)k_vsj40H$n7ypzՆ-4oi7as ,7!c8&dW0oF ̀aYwɂ ÷Ռ702(4-e`-{dˆ_?ׂB5=pzՌm{},nyouker-assistant-1.0.1/qml/img/zh_CN/title/home.png000644 001750 001750 00000004707 12312451003 022474 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe< iIDATxb? ȈMf42={e˖Nt14?p>oii饒bƃ P` r0@1`dQQ0[FcAo 999=>| ' }"dKKr?@1R,8]t9(t" p•>`gx8U#ibU(b{ME.NY PK}9fb<4 q @b)&|[рK*YCT`Mb|цRw= oOA,|||I@T'R ϟ@d,#a XN.ҏ6T?2\, |u@4/^R%R?+v,=0o }ƚ\SLɃ%q pKI m\C}L`?% _"1qÝPR?z7Ry?0dF33 3+++N3hdʕ+/_,]T644t0^ݸq7!!]iH@w@gX'Ϝ= Po4&.\1/ *@۷G)JT???9!6r+I:Z!_#f^hIPacg)&ӓ0:} ճA \x$ #cȳX@''NiL^PEf[MhA^7MG~b""D-* 1'Qz<Ainy!BB hLG&mm1$M7d IjMxdfv3߼7o&%y")E)$y ^ >z8˲+כ!rDkl1`y OOOc!s`@_*M8F&k5w, 8q(C)tQ'T-eRS+.·i-499i ҦtBɍbH|Q[q:t27=22rNPB!4ɜD"~t:' MZ mNw>+Pa>J_A5Yw ,N˿(EscRr`-<\chpB~|8qIR&jmm?1 -z|Kط=af!# &+T!h`RaXiʋ($|b0zv곺 Z9 *;;;|>  |yLy. hƙ6`p?W|*MӔA^{8M&R;X szj hZWΌ;,?+ 9d@LF*f2UG__߻HA_cZO?hc (sMۡV:m6شkml AdobedF]    !1Q AaqB9S$hY"4xRbr#3cD&WH)  !1A$Qaq"24TғDBRr#3b5ႢSct%& ?>IDqL;dsXM??8vh'+K7yq#nw~j g[xǯn|'z|}с13FSuμAe N䆢Ȋ3 TUKքݶ^@ۆVe Y5YHD3ޖ)x#*eZ@l$|xUs.ʶ:}Q|ؖPt\`C`ټO@>nGڑzT˭HCG@s6X&RX;-.!iN)ܧ/$YɤV)KV@ YVn`-ۑ5*R5-D@uD"f}hZ||غ:v_=%p6I'c:co`&f$ p lbJ(ѧwd>Gݽ;IpT]%AvoGTeB%)A[ZnLm(d;n[JVىm(]ЭUDyE)U.a路'c:co`'|VLO϶0ӡ{ ,81OI ꡶Ư ZZIGKlrPKoKՃm{F meN82đ,=(yGEO=Qjg7d"I8DA܈hl2Mrd:+v!inu B\.yb SѤU7NR jzEʉ^HFndDag[:5ʧYnmBKfrv'lrP2" P- hEhE~SIVxl&l>II"rL]"/PGSR8:v1]s.:i4?PZKwh~O:YQ5׏6o'g+;(gYoS#HuGhЖZJ Q& Գ+aUV6^3p]6rmejB5'pum[3k LRCˉbZ)WM}? 3!&v͚(-rcR4g5bȉ(7rΗ\LN*hXCܘ ՚1ȿt* *M*jZ5ʦrfLܐ b3Yc V\j -Z+j̍+re9,ijRtI.K- Klj#O4pG/2C!QEԠAU,WCx&VD- ڹJesaK9,GDȺN JYWsIv4Z6)c^ZbXa;o"(@SNNs|7=P[Miu@%(t N=Gj\&'jl!E@bzeSTRgvԫSBn5xڨR?&36#6@zaĞns/޷@bGKԃU'cnm:1/lGٓ iFT0_ԊSrWmUv Wl|XS%s0db3PZ>A̠l$PQ-}h͎& @?}wwI$pyU\dXL*V aV䝵uJCbؖIpBC%*zy\)-fm͚CnM~Q54&%YͻY',LAKo8)o-2+~5_Yy5cX*ow-T$sTvJ~ʐ  '4SXAk*!RWV}5$3!,[iyv;Hi(#j "j_q|J>_[K*V6 sLzvطjCc*Rp#ǿU+M_7nÊ1*Bժ;YIJUܾrlaFR,0PA=ܤj-g|UlKFDHbUSQ3Y)fIt&ȶV4Ƹ9Rm"Y6ʫI[r,LPݤ*⎤mNTӑaO[FY,r8ll+)'6%2e$.46Fz=fј;EbIߩ뤌BU@')H< cּ+6!2=sRtFP\HɖlI32L/5$[ف?#Aq>ohѽh#1@;Md;fW+.X}MֈyLBcہϳ辅v+.҂^* WfKҭ[Y1P;Cá?=iO<"aT%Xf~jRp臛 #enp@;] kAjGNw<TvVevGC~jTd*o633D @@Np+-)=R+ZMOg>EHj6۬mG1eǝ0xtqG(Eу%K x܈ijMjLkxپE+7jI9וYg)|,9J=jx~'U|zծRu7Ix5ej6Zv7Rյĉ"o)⅛y4߮ioTg3h iIFFQM[-gl8ha 9L ;Vo6-Wj$Xvme"c23n˃N#њs0ss3hqmf/w'Cz~||X|-{@9ppuotQ%vRPy5xj_܏Xz(KxxL>hu#1aOMĕ 䚚dD 4o|2 -zҬ}nқI <Nrÿ=δ~bv'1˻QN7!n_;,[F sm`$mbDGv,<%tyibJm[+ij+ڱOVjiv)uT_PP RS3?T.脸ЅӲ)(Nq4שׂbo+şWV}VK`miv~_}seXN}e9b_8}GG+<%X+ؓo?O^~W {)a pou~>k}`=_wp{e 5؊oW1!:?SW ?8p{dݟG/;jWh=O1A?j}Gd 2^~ق:W؋0> $&'TFȭFȚ[NJMdv[_^hS ,5bcH򌕪ZJd/aƞfp|4ohyouker-assistant-1.0.1/qml/img/zh_CN/installed.png000644 001750 001750 00000017377 12312451003 022411 0ustar00saucysaucy000000 000000 PNG  IHDRZZOqtEXtSoftwareAdobe ImageReadyqe<IDATxڄN0 7B{ԅ3OǕ;#¥I,xD-Hcٖ>/۹yVwq8 8_8GZFU jZ5VנX=MʴG=t& WQq峚΁9. Pmw{Dfh4mT:Z8E"{Ѿ*,"YZXT.  v&dZzg4Op(V9ݎ:^c%iɃlt(vVn( JG JGl``` R M?5 5x"W "ܪ ϟ|k ׯv4(23.Pd4$3JB_0 HcP5gp;!p'jg;p{4gx{Ci÷hAivd n cՌ vgDNXcl?(;A~447NOR.QVF۝6)$ĺR+V< $R!liC *;wnҖ643ww 6prV2tVl+*^hckܧ&˲kHr؍O(Lձ3ydVdz"4WlBWswhh4!+/L-^"baHXaQ,z((==G+cT3YCVGPI/̺17W!3sFnZޢ7Z秪@B; I>&\_˴;qWn&: B9V1>6RY 7v&oQbStJfE~h'*@=u>y~]"4?Զ]N[%%hGZ& o׍57mZ*KP[^JN=w/EAKEj%J{HiZ}Mf2lmSu`Xf67!fhK@Xey~NQo-|[zj~#,ӑQ nZW=Wqs|$;xsmbKb4 }'05 ï?w7IpC=v⳷P!1?+:x6nTᎀ >1{ZǒsHpp<(-k5 o)6dpdn^^wJc5: <Қ#fZBL[艞qh|OKMup )c.818p2k7PJhՀ#/b'}yU]p.~y#svҟw;mhZ. !P{V9%bBX{C5S~R{KgHi_EPlPϯYڋqU>ȺIl"\G= ~#J*?0T[jp`h"ڬsUn__ BF$>z&-1G3wvgIj$k6v7٦*)R?AbK~"m[( V}L%hQ`MJlI }hmw~xι`vaٹ3{6E*`vhY8[c[̫sQ__WG}{+>m_$IF&..v;t,Wp!~9A0US;-a(}x Q)g%8|/#էNYz/(t)o,*D3S\u3;VˆZ @A#\ugRs /NLYR#x2 z}*[/TJMY VqLY?MZuc\Utecͨ_MXr!kK騨"QZ4ߩ|l)tWUc'dÓ\[kbSWoV%m~YwO S JzBeBKřyi-qIw4sӭ5PkQTQvA   "R )`~4Ġ@@jcB5mvsǹ3sgnn;ߜ9sҌeN:"UC_pŎqEmP(Vjl50ơhԧCҳYz?]Jg,a*UU$117jqZtWQ}XTLRJh`h`A-lմ^"ltpeQЁ a5p}`=2x 'd&.bc9 'N4pc#(K!W5w[<*xcQu Tp婀;-dUG': W< wJ~+]׻B 'nw ~ Up "b~fW u ӲzR=ߩ)ED[tjagEvZ1}a,i;4{Y6Bafw =Ew ?42݅x"uSqw,%SL4͕N}?85iOX|Z{޸Π=jjZjL8^ |A{x^l ƗW*=\b nʏ%ϘdT '6jG>Tދ.'Kq:tŔsW4e=B\ ^eiqu&fIUK+XXI/ahojyߢmn 8W?sXlMŢCR$ݓ cS=9èAM{OHDd\)~ý8wk/:ֺwſ "KpGnHڵCw^Yg*ʊL˙_ Ξ _T.AEkMYѨ"88J^dwNeۡG! S % Ynn)'glj1{ޙYjs$㺐8]MYhAѬTbFpP-NE у0-iXb}á&" w#|Ro໼ɶc1I 5na+nߌ'ŽjuU=;WhQ(D5]| *ָK 8I~3nqG WT&DެT խ\EnCŚNETsѤ j8 MsxXXU{<8_)YxkEm*8U:R&e,ˮvҎ9-9ಏd5I aj~ogbp '5x@6"K> :y8$V8w63K!?*{?;(;w%ݑ\% @A|) UF 8ZS3N;ZEJg|wj}RjbNP+ %^>޾<%@ .dowso ^bED*f&E![uꯍ9]F; DQmBd*hۚ9*OeX9a9&iL~ZuӖxa LDCSJ4݇5`tT&\+w=S˱D֩ˇŢnKg2E-. U߉eXyl__yݾ |'j0cBHh*m]:!IZs2#Χq ܣ1с˜i-(Qc;/줡a4pK >#Ȃ JI| O¨q̒= F'BZʐ !էSpcQTE-[lYC,G*!=`Ot 4tZO3LW5KgN3Ao{ 4ܡ^q[VP랊y݁yP?\nI-kN_Xt \#:1kMȗp߲K_'<q\y:P>nY`מApR&bS{ 8 8!E&^_|`l_we\~#]s? /C4n{ P!!x3z\1vl|'na=_rFႱtYdq-nt[(p-a(r~~˶1:Y OlJ39z?"/8߄kg<Fǯk:̷Ec <[VoE٥̲ڃ5keRiK礵ܣm:KBƾx7Mh؀ُMX ,^ZfFɸp/!{> n0f_p{0wG:ٳI8f4ĵ0VgVK<7y =2(pt`5r,.>26}gäWu {Ɵ98t|̊%:|D)p&'\j_,58SZ)dpC{ڷ cj~?y%Vm*O+WK<9\7aM>=Up,j/n@Aҭ M%΂~c'L ȋą:. Gw ِ,z>ʏY}7h!6bu[4gi.f\%B ~Xh'OY6&7G,Vyʋy=sS;]R$~\2eIGUIqEK\"X$/ǕE;;!{zY#U$E5\Yx#p"# AH2--6wLDǥt.p#2 x7ixx0Y͖@`+Ht4y!dzt 8L!4\wzS}?t0Cg /Ҁw;+H,ԁ; H W( pxU2/܅( P x,ܬ'$#-\1PfVPZ}+i%灧iNxGSҀ|)wUL*s;%Q?QfRB ,yA~?z>z@{A|6gB};pC~C4bD6eD|HE~8eGKDx?n=jOLJ~DuRWVMCn^UR][U`dcba[hfe_hjckiRznmkpmpuswqvutsv|ywY{zy}|{〳~}ނ側ㅸ炴Ⴒ߆䅵⋺pXoihipnptuxzw}s~߃サ⦻!,00 lFM4pԴAðÇ#:$ͨ- <4ӈIɓ$w %8gذ8ӣ͛8s f7tdt3ѣH*] 7l޸35N7tPʵׯ`1V8gY6rޱzuʔ÷kzr(^mb;fp2th3ɣd>@Yͺ>@Qzb\ -c'=t?xanrbC HɟO?P{" ܠ B \0B|"F!Q  03! Aᄈ(c bȌ.xy"Ѐ,\@(?!Ȍ1*Ȕ(b^Z&f0 3P @)\,B%C $uNGpA C,Ђ "Y$d X` tF#4RBbDbwH0$~'PBp)%7$TP &L@2k k-if,`lFf *pp 'c<+%K އb8ñ0n )0RB1`^0 5 "D*1 RByP*NqT"TE.>a D  6l}#T8 OT'F %l.hcNW*\#\D Wؐct "hb *P.bv#XԢcEq Vq d%DQX 0) H%&c!NP,Zd|aȅ'KyTƂ7t` r , U.hq Z"H ] s2)L\h$IOh-rD-n\bG@ab@Q g&#)[#9׹]Bp.t0a_G[0ը$qt@>t Z-xAӚ Qh/b0-L1 &B0 F`N7a|!LhBU&0VX"0/0s5(8 Xl N0n:W* aP(0!%:ܡZ  0z_(v0bִE0 d pf!Y 2h;uVm1[droZ)H̘3;c<&!eLڕq S QhA/ ^2cU` iX2_X82P`5E2Lce/ e`ó'B/ac<#b?Hvx @}Vp3as@2QΠ30ʏ~ rHbțALf yQ2 iL$X1 i4A]s<1kF66႕n5af0O#4! XHB `;hV8"f4YhGҘ%@U#Р4 mh@ҰFah( 5jkX#u6+d 4jlDѸ<+\n{Ɔ5o`cؐ<ҭy oyl=эmlCYNF5;youker-assistant-1.0.1/qml/img/logo/component/harddisk.png000644 001750 001750 00000001035 12312451003 024144 0ustar00saucysaucy000000 000000 PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڤSKKBA=WZhi/sAʠ"D^hSǢv)HEa v -hfWj#}g;3Q|*y^G;m:'Oȁ,4h/kN$y?EUL&16oT|NU3QCr,BmM88:Ac< ˉt8U^C2:X؆bF^ 0. */ #include "warningdialog.h" #include "ui_warningdialog.h" #include WarningDialog::WarningDialog(QString title, QString content,QWidget *parent) : QDialog(parent), ui(new Ui::WarningDialog) { ui->setupUi(this); this->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏 this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); ui->btn_close->installEventFilter(this); ui->btn_min->installEventFilter(this); ui->okButton->installEventFilter(this); ui->btn_close->setStyleSheet("border-image:url(:/pixmap/image/closeBtn.png)"); ui->btn_min->setStyleSheet("border-image:url(:/pixmap/image/minBtn.png)"); ui->okButton->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); //QLabel自动换行 ui->displaylabel->setWordWrap(true); ui->label->setText(title); ui->displaylabel->setText(content); QObject::connect(ui->okButton,SIGNAL(clicked()),this,SLOT(accept())); } WarningDialog::~WarningDialog() { delete ui; } bool WarningDialog::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->btn_min){ if(event->type() == QEvent::Enter){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->showMinimized(); }else{ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->btn_close){ if(event->type() == QEvent::Enter){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->close(); }else{ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->okButton) { if(event->type() == QEvent::MouseButtonPress) { QMouseEvent *me = (QMouseEvent *)event; dragPos = me->globalPos() - frameGeometry().topLeft(); }else if(event->type() == QEvent::MouseButtonRelease) { setWindowOpacity(1); } } return QObject::eventFilter(obj, event); } void WarningDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void WarningDialog::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(0.5); } event->accept(); } void WarningDialog::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } youker-assistant-1.0.1/src/image/icon.png000644 001750 001750 00000003356 12312451003 020655 0ustar00saucysaucy000000 000000 PNG  IHDR\tEXtSoftwareAdobe ImageReadyqe<IDATxb`^oR, [kϿgDa9Fu1b|U|aL^dt\Vܒ K-vI# ~򴸻P!9A5&&`x  Z  p@6) Ca4-) .tBAp<"RQ+B.kg30<_ѻFD_FLoou04WZEiX·)R p~'g)k*K-X’lq1j<L+\?,q&h#IYo*u!*]fLT h[+)L6Ma~vv6~Eb(zizQջ7(xo= ٓ( * ZDE1PFmӄ5M&~*300;_g~ɐõ~cs8ƫ׫I,Ĩi AB krT痈$ =H5a: /0F|- = (2lYv5:ɝ/AŊEv<4>Pg{^ lDG֩Ndܨ% '{_2sS),"ν&ccX~+cdX`ܠѭCS5&.tl=Η e2I"^jY78twsT(-L7]+9{mzTQ.=MDa~̙2\4Dӈ4A@e&7Dݸ?HƕQ_FH\4 $ Z.g:s6i;37y_P(>Jj% z5 G4kT3W0VIת_jOC7dB.2 $ `'I-Zk,D*7M3(1mH$*n*>8|!TRuB󘅁`uċTk@VAn-1TڒF7##o( p%B*Oөba!dwV "(f{Bz&.I/\JX)E-A:|Ɖ*@)'Ҋ3!m-;XKg'nϕ"CL p>EəN-M)53rU? IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/ccm/__init__.py000644 001750 001750 00000000104 12312451003 031144 0ustar00saucysaucy000000 000000 from Conflicts import * from Constants import * from Utils import * youker-assistant-1.0.1/qml/func/others/InfoDelegate.qml000644 001750 001750 00000004213 12312451003 023430 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: delegate width: delegate.ListView.view.width; height: 40 signal sendFlag(string flag); Row { spacing: 10 anchors { left: parent.left; leftMargin: 15 verticalCenter: parent.verticalCenter } //显示图片 Image { id: icon // width: 20 // height: 20 width: 16 height: 16 source: "../../img/logo/component/" + iconName + ".png" // source: delegate.ListView.isCurrentItem ? "../../img/logo/component/" + iconName + "-active.png" : "../../img/logo/component/" + iconName + ".png" anchors.verticalCenter: parent.verticalCenter } //显示文字 Text { anchors.verticalCenter: parent.verticalCenter text: name color: delegate.ListView.isCurrentItem ? "white" : "black"//选中时字体为白色,未选中时为黑色 font { family: "Helvetica" pixelSize: 14 bold: true } } } //分割线 Rectangle { width: delegate.width - 4; height: 1; color: "#d8e0e6" anchors.bottom: delegate.bottom visible: delegate.ListView.isCurrentItem ? false : true } MouseArea { anchors.fill: delegate onClicked: { delegate.ListView.view.currentIndex = index; delegate.sendFlag(flag); } } } youker-assistant-1.0.1/src/image/closeBtn.png000644 001750 001750 00000001304 12312451003 021465 0ustar00saucysaucy000000 000000 PNG  IHDRG(tEXtSoftwareAdobe ImageReadyqe<fIDATxb?2`'N區 XXX0| Fd-`YFF bqP:& Ft7XPJH:P0h7t %yP\IJPZ DNt5P@/﹒ݻw;0sssG܀+99 ]CDr.\ʐՐ'"K -䴁ĥx5ijjzU@JOx5]vm/`r̀90܇@an%NRRN@\\\˗,T6 Ro>ŋ3@rT8 /xG,04Q h XIǏ /;0C4FUb1@ spp0|,n:,,۷o? d YS T;P d`~zvJHٳ/_~ *%Xpl߾]f젃0 W '!M \\\el4%(>V^ΝS?r@lϟss<2pW^Y'''>/5q.qaIENDB`youker-assistant-1.0.1/qml/func/common/Button.qml000644 001750 001750 00000004522 12312451003 022344 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: btn signal clicked signal exited signal entered property string text : "" property string hoverimage: "green.png" property string fontcolor: "white" property int fontsize: 12 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } BorderImage { id: buttonImage source: "../../img/icons/" + btn.hoverimage width: btn.width; height: btn.height } // BorderImage { // id: pressed // opacity: 0 // source: "../../img/icons/unselect.png" // width: btn.width; height: btn.height // } Image { id: btnImg anchors.fill: parent source: "" } MouseArea { id: mouseRegion anchors.fill: buttonImage hoverEnabled: true onEntered: { btn.entered(); btnImg.source = "../../img/toolWidget/highlight.png" } onPressed: { btnImg.source = "../../img/toolWidget/highlight.png" } //要判断松开是鼠标位置 onReleased: { } onExited: { btn.exited(); btnImg.source = "" } onClicked: { btn.clicked(); } } Text { id: displaytext color: btn.fontcolor anchors.centerIn: buttonImage font.family: "Helvetica" font.pixelSize: fontsize text: btn.text style: Text.Sunken styleColor: "#AAAAAA" } // states: [ // State { // name: "Pressed" // when: mouseRegion.pressed == true // PropertyChanges { target: pressed; opacity: 1 } // } // ] } youker-assistant-1.0.1/qtsingleapplication/src/qtsinglecoreapplication.pri000644 001750 001750 00000000504 12312451003 027636 0ustar00saucysaucy000000 000000 INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/qtsinglecoreapplication.h $$PWD/qtlocalpeer.h SOURCES += $$PWD/qtsinglecoreapplication.cpp $$PWD/qtlocalpeer.cpp QT *= network win32:contains(TEMPLATE, lib):contains(CONFIG, shared) { DEFINES += QT_QTSINGLECOREAPPLICATION_EXPORT=__declspec(dllexport) } youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/searchsame.py000644 001750 001750 00000006461 12312451003 030573 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import os.path import fnmatch import filecmp import hashlib class SearchSame(): def __init__(self): self.style = ['.gz', '.bz2'] self.style_dic = {} self.tmp_style_dic = {} def search_by_style(self, spath): if not os.path.exists(spath): raise Exception('no such path!') else: if not spath.endswith('/'): spath += '/' for name in os.listdir(spath): tmp = spath + name if os.path.islink(tmp): continue elif os.path.isdir(tmp): self.search_by_style(tmp) else: front, behind = os.path.splitext(tmp) if behind in self.style: addf, addb = os.path.splitext(front) if addb == '.tar': behind = addb + behind self.tmp_style_dic.setdefault(behind, []).append(tmp) def search_by_size(self): self.style_dic = self.reduce_the_dic(self.tmp_style_dic) size_dic = {} for k in self.style_dic.keys(): for abc in self.style_dic[k]: filesize = os.path.getsize(abc) size_dic.setdefault(filesize, []).append(abc) return self.reduce_the_dic(size_dic) def search_by_cmp(self): final_dic = {} size_dic = self.search_by_size() for k in size_dic.keys(): for content in size_dic[k]: sha1sumva = self.get_file_hash(content) final_dic.setdefault(sha1sumva, []).append(content) return self.reduce_the_dic(final_dic) def get_file_hash(self, filepath): with open(filepath, 'rb') as f: sha1obj = hashlib.sha1() sha1obj.update(f.read()) hashvalue = sha1obj.hexdigest() return hashvalue def adjust_the_dic(self): final_list = [] final_dic = self.search_by_cmp() for key in final_dic.keys(): tmp_str = "<2_2>".join(final_dic[key]) final_list.append(tmp_str) # init self.style_dic = {} self.tmp_style_dic = {} return final_list def reduce_the_dic(self, tmp_dic): for key in tmp_dic.keys(): if len(tmp_dic[key]) < 2: del tmp_dic[key] return tmp_dic if __name__ == '__main__': path = '/home/kylin/ubuntu-tweak' obj = SearchSame() obj.search_by_style(path) #obj.search_by_size() #obj.search_by_cmp() obj.adjust_the_dic() #obj.get_file_hash('/home/aya/test.py') youker-assistant-1.0.1/backends/youker-assistant-daemon/src/systemdbus/000755 001750 001750 00000000000 12312451003 026670 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/toolWidget/box-hover.png000644 001750 001750 00000001654 12312451003 023452 0ustar00saucysaucy000000 000000 PNG  IHDRST tEXtSoftwareAdobe ImageReadyqe<NIDATxMOQNC$Bb!.MR ;F&F]H K ӡs^[ 8&oBt{4tF(A#ggNv?nnn$x<:r3:mu:G vHaVKWSJɑwY%/Ըn^njHf`r;&_ŎB^j\|4]ԧ"9xJ V|+(Q'銪{*p| +]>n,$-b]D#1lKCQ"K#hj `q#~ѥT^(B$r+) ݸFjW6{܈{`N U9)LLac@cs <ʤ+ `U&xLggVSbCCRCkG9rEK~Z^Sz7Rʋڷ<怙Ym)13LlA2Lw_k7e5_e'`gTjppuIENDB`youker-assistant-1.0.1/qml/img/weather/d21.gif000644 001750 001750 00000005221 12312451003 021420 0ustar00saucysaucy000000 000000 GIF89a00Ҁ׼݂ɰǸδʶ߈¿ѻ䂍ɱȶīٸѨմ9qѱ3p6q:uyB}GLL|VJscdffhkqowwvuy{Z~ゲⁱ܅lԋ'[2t3p-d4r3p4q2k7t6s6s6q8u5n2i9v8s;x:v9v9t8t:u;x;v=z{=z=xwҽ@} *;w"|rCnHj|X>Š {w#gG}{vB$B$'ҍ?hM~h"$O"HިF`#4r"xFꭷB, 7C k,_(ɇ ȇ#JRI%4j^ t $X⇓y 8$\R%TDg AH 7A 2ddNb%\bH &׀@pe\B(X 5ǙJX JhF$S>P>| A`3ppfɣ<ʨ'd y8qr-AzVhz&0B 6!zKTIdb@C| `B+A-\`y@Rk&ZD%$h{' + -'0l'.G RBpdz B .`y3(  hCvPl0(,A /h rѤp3jB1BW`76 )|=YCf*1 ºL } 6cߥRp .@ 0/;3V096Λ)2ܐ'İ%\ծÞx1JTo}*a s@mr܏n7<?ݞէ"x/'P^\: d@^+^AVL p%<2 VO)( Vȏ`+PZp)@Yȡ8Q;O ȰM@YZ"W|8'bM`( 1&hE Md8D Y gdGZ" Q,hZHAp,NaSOB+`A Ubhc+p 'b*)(\XN 8,@|" e.f\В$>AcR4y *ri/ɋ[8o1 ^ @$nqoR3/zs H.O] ?Mutg0VD}|B@:@]X4VZ0i0|A (Q'"50S]t?aJbæ@1V5 U5F,> >VaT+XAV[kVֱRU Ѕ2uSUWbh+XAعv)b! e,am [86 Ȃ0*Y:#B2B{ e~jWѪ^؇(de3 f(- +l[Hry g4`&z[i,B3[h G6 yDE<[" $/p7ԀF~A rC4xՠNR;4Am,7a Sc^bFq9mfj o8Ʊ5ËqІoLeot!x6$k# Tr.gC`=`lXCnpsl=wrs6/tEZF6"-}tN{Ӡn@>эRc gMZ˺cG>1T;youker-assistant-1.0.1/backends/youker-assistant-daemon/data/beautify/autostart/000755 001750 001750 00000000000 12312451003 030446 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/icons/on.png000644 001750 001750 00000010572 12312451003 021146 0ustar00saucysaucy000000 000000 PNG  IHDRLwB pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FIDATxb?6m/_+qsqJg//C8rtf ( A6bF`J>v׏ U/ݽ)```x@$} *&"ƯaX=EePR*7X?`?{gGa````Ho`b``d``"0^530000_mrZ]~A. w2ػɆX*~  CN+w1<```'ְ`ޣ  \H```Olp`PPE$\`ig$'3`錃;? #g0Plδ}9EeO>`reFwyZ TR}=D&]#9 $=o\Jr'DbPQTC#_9```E!U<4^?e0g``xMrUB Ua9='(ټӐ˷9Qtˁs aK(Q*3c$"y; $ 5Qь"yF R)ei%hH4bRfcc1n~2^*l,| 9Ym0z=& {4ch~Ԟ]_Mgմx# *kgrnmgwbbH OPT>{eYbi.j0J[BR\^QeP ]oUkƼdW%ϊqzXbv)yP˩l K|%N- n#vߎ"8~5F4!{;;i=)IRYKq(K5Յ?qxhY"E09?їerYm3ݓ-s'4$@ЧYp]|Pg~!MQۼqJf.(QjFTPT8ĠK3 ( ꡂ^"I zz!z%"(2lkn96[ށs9=cr\7ϖ8|&mUoZiu A t+vphp(<>hLTH6VKp\0rpܛTg1P+!j*i=IV)F-Nj ;Svۅ}Ph^ITZic`ɺv2sR~~84z`.J˪Dfm4sytv]K?pZ?8@jMxZr]'+wۢh)d.7.~껌(3W JK/*wIT8`!(1ۭD|t(atQ"Y9)0<֞F`z1P&-f2}5_n H=p1z)lt9‘-[*bxH0 2e߄fS\n/?F2*l4RXuX>$!H}BIĬYy>g7_ϽwIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/VIA.jpg000644 001750 001750 00000015111 12312451003 023420 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !QqB$A"2%՗Xa34& !1AQa"q2B$R4Vb%rt ?y8jJ#.N?vDN=N'hxCC CИ~I0wPxi8 i zա\)4{' gF# ǻIC>x |hy} /V /Ѝ XNZe1b)@8&aۤFft' |q}.ʌSy~/?vd,ުq9v6]#"[; /fVFe SmGUr(0"DsI@ۘ7EYBYnQ/hb߭nbWD&S"~r1}֓uOVUL_"uqKnab{"mbɍP3$@Ѝm$ht5C˰--?yPm=4W֊:HSp_sIiMx)gis\6tUTcC^/2FcB^7"g%FC3gr7Vjm֯+ۜ)*VeȶDޣ65 PAH S|Aqia$ 9ƪ2f`4o*cT5E ;SvNC+M:~@VHSRy>T)l Il}u0 vΣX™=$2[3sHR!O|D/6K2נ_igG?۷y9b2?!1c'ٍE˸7&|\雬%1eqyq4Q%P .5Zr3 rmpE%Ե7ZVO>X?DO I:-٪.՗ֺZ`j(]Vb,o6EVWl۹y=c; [Yuw\@XF-gi Vf %wcp= `Bevn&(R]*iB)L ""J"bi7W޺!-jh 'Š !?EtHTQdq퀓k>4nWkkH*@VޔU B, p}:=6\]RdIj,^Zn~%}Vԫ/1Pe *fDRWP|]Ԋq mq#ڷ$f(d3I"2DH[&;20[(z; 7sK_V%S۪ՓĒ7-ϝ5VWCD<4N 2p5:XF0"{r7Nᾪ!\jU[f|EPbTX`55z],Ca:qI:rHɹeӽk/ڬtqOqUZ/t50WoiH|Rx>DjTՓ$9BdԊ?f~3{[]MiDD;D rٖتq9]2##~D&;e;!\T>ASVܳmA}+"׫vOQ* ҬH9C(tMn)|:J f:ԧ+ZZQdLQeMAc;iJ`(^iإސGG}[c 9]ITTRCJ(@(zܺL0V44J@inD%J{!Vs̋[ZV!/OIDQı(o) Go&Nn}Gu]_qJM?)܉[Vp݇d(;S*@!0bc@0G!36 "'Q^P:Ze),-MJJp@bdm):v@)5B`h-W'C}PXp§buTu=Zֵ-0D9HR;bg5:}7Zr6⛘-bYRNvRx3Gjis7yo1bbMq|u[l|I%3c-LE8-+j"$FJ_R^|RNTu3SEv@YUZT (Ƈ\ sޜTHau6)ol^Vλ+AE4ܥGN ?8/N]W{h = SS촉qΜsҸ%h];)De+>"yJJ܋,ZLrKJ&AtD7h6?ڻ3jQR?b6I.B-wJ=. ೬Q) [T;Ѭ{V *?+,iRg4S[M/>,{?2m--Spn}D:R \ KApwlVWtۋX7>_k[4DKiByc^Tdl⑹|BaflNO4aEp~@,~5p50[EŨ+͒DKV^7IA2:96®y# ( X0<.ګK)DB{ c~vzt`Q#4сD#bWwiXB+@uYfT 3LΝ^q݂GYtjskL>[|֎t]x\XӸ-ڱ##AE 0!ye ax:`HPAiآ4< ?Ʋީ-T G!N \Q:4nQIR5(e*Hڸ jf!Tz݋Ht=:~Lqg- UJ?LY FAXm 5ȧ4jVZW0k\Wku:>TnZ-->x ~rJ#5 sGdUݶNH5rP7vԒFG- ӡPG(&Y>m" 2 ąJ.(EC[яI(W*FvcbFSR(N1w$wKcK7lW|Ki9&f#7XK\`lY+dss *uRjf# Vk$HTE՘d;A⠖h$z'Kʤo.N %#aקRsԑ#%x8% ax:ҳs"cېG@CU \eL@yPGC.'&<el3pܓW4-mvLir4&*P=@@!ɦG*B9ΣU9y=a\ucshl2ZM.tma.K7X*@ yÎ^6ZƻFi5 S>@gR5hGSZw[s%oRIYӧ7ZjLcE"R{^kIYрarq qvA8C'/6_fKդtǼ4#H! v (CH\Ow٥ i8k:0 .N?vDN=N'hxCC CИ~I0wPxi8 i zա\)4{youker-assistant-1.0.1/qml/img/weather/n15.gif000644 001750 001750 00000005313 12312451003 021437 0ustar00saucysaucy000000 000000 GIF89a008ẔɁܠŠ»܆ȷ᷻ٛǾ6Z~¶/N :]6S{wȪĘŻ.O3U0Q1R/M7Y2S0N3T1P9[4U:\5V7W3Q!>a9Z#@c :[%Be,Lr(Df,Jn*Gi!6Q1Qw4Tz3Qu9Y7W}9Y9Y5Sw:Z9W}7Uy;Y}?_^"@`!=[(Im%Bb&Dd$@^.Ou/Qv0Rw":T2Sy4V{0Nq5W|'@[7Z6X}7Y~8Z4Rt*C^1LkFh=Vs?UnNe~1P0N4S8Y2P9Z.I4R5S1L6T:Y7U;Z2M@b Ab=\9V!Bd:X;Y7R >]%Fh'Ij&Ef+Mq+Ln-Or+Ll*Ij2Uz/Ps0Qt4X|2Tw1Ru.Mn2Sv7[4Ux2St5Wz5Vy7Y|/Lj9\7X{9Z}5Mfg{w0M1M2O9X6S4P;Z7S>]?^%^ʚKݻxz-$띬B)NȻB'pBUa>|1XqZ Eӵ ъ H#,Yz4jӶٲudA]##7kРq.K+JYd"DWe_DJRfaӆx裄! .tL ΒK ;ԡ +hAe2".<.)d <(B -r0A. 9030cc0`Nbs9s̑UH"x0#@B P!PrO6" GN;9"tJD *J0!$N@1HO+CI:̩@ A!x &P |0!1@1 2L : ,0&x % 'A9c,1D8h.5n[s d-AiHs 1z 0)Pa1SA0lpt>q5 j0`BH<@*昳JtD1͐)Za@55AkH:שB[ "1e tFj $4@SA!H= eD0"$ P`omb~98 mX@ T#H3 j$MF@Gp-!@WiQ{X0((nl2`QP[ \``8@}9#Aa5J,x2ыN 5@0( VQ~/ ) 1 I,H-gx3qpg8!}?Ё"fpKh@޴?O,@CP$sNp, Gd(80 ` (pNc%VjKt՘%Vp#:pD8v fT VPF3 G`(? *㤙@O/Zh8r"VC0 t\-C$aU^] '"k8CθF&L a G! ^!5q&҈)t^5 ihC`P7RѴ/4qMtַ`6 gpBXRQ~45k5Ml PShpZ=.'lp"I}\{TlBF4 N$xAURHýF{B 78e( 2Od ' ' Ԁ5@b":‹AOZ)ЈC>汒A!+ F2o, PPWVLftM7!khfrnbrFsǜg3Y'm9mVs @̡( ; ^P|#~t,H97leO>.d֢C7PeQԞŝP؂5<-R\4}MjYl2z 1,a;youker-assistant-1.0.1/qml/img/sysButton/000755 001750 001750 00000000000 12312451003 020716 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/zh_CN/title/toolkits-active.png000644 001750 001750 00000013367 12312451003 024667 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<IDATxbO,_aLdxov=WA|7,^q}~jKWoğ>{Aݻo /_~fp`pkа3D!.Vo/Ϟ" a>ӻWl'\+g;X"+3|^|??~ˏߟ&T(~՟AVK SObXY5#q+ua7_?YPִƜK_| c@ #9O궁Sq_?f$˟O'BRaiΟ̠lkמ0RaO?iFгw>{3Hc=,؞<~?)ڸIwJpP3uU0|wy72Nj p Sy>ccc t|EXZ' Ona<3ϟb{j޿{/ϟL~f+^_LL,tG]/ŧ[] e%?՗3Գ| WK?AB7Z޾cw풜2SO׏?2$hZ?Rxc'Y~FG~GYY | 6i0LosB ]z crU $Ҭ(R2SOm|R%_ωKJTB]We:).@Ja'+jcѠ+~]{lJ5gɟv. ƣjp:b,y0'5 w<"M*O8t@w$-q<44n~oK@@(:.qQ:lڭfI3\V^H^fu"1IyFzj/g>0=mÆYh}4. qPNLݓ3g;Ka@m=F_pܬX 6UpGM,8llPͺ}DZs^b^Y{{o}\\*/ƜObsrcGʝG2ҰzUkwtf7\рµ W6ߖd 1ÀpX? jc_mo B|@tY6-%?%[6g23~HpD777[+ "EZ:>lmo{o{woӒfM{9y{= W׹!s^p$漒_X}>{hה l)Nخ܅z9ˑWaU:a]7G&mKUT:@!Y t9 A|~‹l.͏g bbi0@ΪY}|͇`P\6.(K3Oa*^vEUV8W_bUc巪ܴ=-= 84f ']G{80-YV+UM z8wwkΝ<,IOm R莴]m"cP~IhP<2/˓j!kJ W07-\/Wӝjomضl9~8;7: {Tb,o QǺ%5{6Hpȉ НIc]_JmkN"<}vBI6k  d>Kj7T U2hHQ⑪ֽ&ǧ-^>Gi d8<|oS8M }6s&>nռܘ_d2N[87>HЌ4su/5f`oD̤dvDTNozϻ^ `4]^t(2! JHaqy~O`9sn@"y)ΗY.A9kszw`Thi{?@̏%V``{_Bd: Jj&#ᢙu&\$G9&nTٞv4§njdEs+23]Pٿ bg!J)@ujWZ=mX,#QL `M͘HLJ0 ftBaLC[Jh3P\ 8?b)Yϕ}tW? ՌƖ^{s=;B|__&p͈1,O<p}՛ fDăk&8;c4l*%"XcyVE6ywK(BK 1jHtj", >3Q>V9L%++րisSaȒs9}޺BCrp>X4R#В+. "<SfC7ۛu _qԘ:t~[/jcd$vvNi^Ȣ: 89 TRx#|IJym 4@}1OXƧp@s.$c)%S5k*.N_gn <5a`.l6۵c>H5q &/kvp4tc.lL C*9Xuq|Yy xyKX?\t WVvj}d .W*fv! Z9pf%%5 H{T;3 .M 2r+Ӂ`~P5͔֠ai'Jqz%)x27nJPMaG-22Y[='JabUV\J&!.;F*+ճI)P)R(Rq 3wdF"&zUiNc޿~ vM~jy'syͪefl<}%;xžZ\LJ2Leq.*W<̀/ ƻ,޶2'ÓXQ1BD"VJ&.OOX~O-8./$G@?L8g 1"0 ~kIyN(wrvػDɈ |/v/(2yQ${LA؂TR)NF_ 7kJka^nkyA! rY8nu.WLÝ&ӭEq^-${]4[ 殌6__G04GCa !K D[KV=awa"Db!A'|\%٘Co;TNDPdvj>yQ*WrM8+Ț Z[Vwx_wc$i%dr$JnSɲl"۷?ڠ #Lx#t>@ Ն^\y;Iy \2˩ۧ)"{7X,SM&Sgi4xz$ږlyguB+g3ۛ"xӹƤ] z-lPeIu*H*q44z]azWHjगCF Qhi3dEpL?:2qn8܏M`fֺooZ)p\8|Q "ɩf,h=+UUyݷ #ެPw4)ۆzN]m_gVYPa`㱔䤐\"_:]7sټ`A8kݮ18BsrFc7pY9^~Sٷ|q@P]RUdq(DJ]BF2Ƒv A޿6<KG[.<WgUF$z5%U %ÈD%Czt[|lLAl7;U ip, Zj?R\I?{Ege8UPpbe2"40,51` W#KTVȄhë@^C)`,sVl,`4=#3>czbFqDڂLy8Oc8nλEݱ\ dg y꡿psL zqNcMהE9 pQ!cW[gvr㵑xrChJfl Bq_,mA 5$)TeAp zmȰM^F={RBõ2TH&K.=*Zޖ<oI,Bd,"DL{iベo67Lr-_/S(]L=-CrH_܎' LRIENDB`youker-assistant-1.0.1/src/image/flag.png000644 001750 001750 00000002135 12312451003 020630 0ustar00saucysaucy000000 000000 PNG  IHDR&tEXtSoftwareAdobe ImageReadyqe<IDATxboh+pS& س(pl t~v(bu?HƥG`iuaM.s A)2C!Fa`nϷ?m4 `afdc@7ͫˠO;3<f7/ 6_P`Њz]v>N)^8}.5xÎvo?Ƞ첿=g cU pTNn6$E (q'7 sXXY`/V6F/ q Eg 8XXX8X~aUX@`E@/ 92z ?`5?o F L r "l _a`ddS2H ?dQx0fj+8 *R273\t,&.?~~<@o?voCؑ >ab>aɱq˹f+ ~G<|T.z2* IIW<2$011#・0<"" ~z-O.U@ b fx830p32Xb4DU~ %f``#^ɰ~"102",/ 7_C!_8 ÖcS._; Ȯ4T5 63rE=; ~օ .opfI0 4w:z I,H'cfbDO6^.H8 ! D10321 ` bj8)TE$i޻75XE˰kǛEd8]pd[2*¿cر &_"  Y ߡr)bPĠP2Lw4FIENDB`youker-assistant-1.0.1/qml/img/en/cleaningup.png000644 001750 001750 00000020120 12312451003 022134 0ustar00saucysaucy000000 000000 PNG  IHDR-]tEXtSoftwareAdobe ImageReadyqe<IDATxڴQ1JQ}&VXX`gd-7x`#^.;!MofvYj^}?Ǝ=ZP! I}ԿWcyB IǖН:k;,30#vQeU ^`+bͭGFqP2F+Hho #40:dGNH10D*gb*V0"`H5#B R,䰿reVU˻ 0x_a` DEϛR EkPQKbq ΅7.Ս QEQQbϦjj|μfL2%n{̼3wsMhoa7>:)%NhUI`L?:M^9HvCq2V@2.7Zpr ݇%b1[xɼP"z}>w>1r<3C\M5cfԹ+D_X3OetП^p{/^W`>O K8mȒNN##0YAZ;pt&s޹K$l]OV/&|Ks>Mіm"Tk~v·Jr31P9&a_L]FomݽIT6lKnAlQ{=qaaZ]zVlU3訸E^3\8ꆐY\.|)\^V2f 9.kɏMv z1F @2| X{nQY% kFCu Km beA~JF={LPZi5Ye?_֬淍"Y;q6U&B"!RJ{RU?!qやp@m*MIqӔIj;CGݵg׻kξ{o4r׏[buI-OnpSQ̥^]_/\侚+Flq 0|0:=gH?[EɤΕ-$mZzjg%& P g o!*G JA”&++xddG5D1"Dx"ɉ:V1UNQ؁vW[# Baq`\eAljR*oN9s8MlH˰E>/_qQL)ͣxqD;O.AZNICaMm7u|?_t`56لN!$*&bnL㩹h(mloEC1*+leΟ}:!gRaGH@KB/Z$YkS-_T/~n tP?=~ñġ}|ZԷ9P 'aqfw887ԭ?@]h3"/̡(g;Z[\y[f8*V([| ɧ#<qӏ14i#`}OZ cO] ؋VyG3dߖb:ql.fyr7aIb%;pb?ۧoBppT/.$r79dE9*YdN-<o=IfnuNlHpHv#Uk%8-ڦ/%Kkkv&gsd&h1KrVo+6 B% K9sGUGhUZ]PPW]W,6* -)" Ņ]S5jb/bbŐ M TqA 4(m Lv{<{g=s;:[j=4Ǯ*ѕdq]< wnHƱ6ۘʁvbZ# 6u;Q\{8?k̴j‡Kq%9bCi@Щނu%cm`ZbCNI2_2p$~x3@E4=s/oO <q5o[tg+jѰ-ؼ"ʭ7c_">{xẖ6/8 V:aOM_LcŦF;<"v|CzQF]ך8!8+T8?y1LǗvSEr\:Ҏkg~A77NtH!ыQT5,POګ/Ư1fbʫ-X%2he49XIR~RE IJ0}\ ˂>]c^_+~^MLWwf2dwAӚ9v1v fNjsb"ԕItب[y[T+U( HD,#N*es0pCĪQ *7kk!W9yZ};0Yg_kD襥^وs,WǪC!sQf-u4#mxׂӰ~=J:4N)4b̍h^Q2SU5~B3D@>Acd~DeKak g.VFA#f?q^XQ뺺ԣ_Ks b|pIlo Z&f &J xs])тQ9Cr:Nv&p3C4c9iNA\y rxf 7}4&(͞N`iDJ eY'R%tWX'@Ći6p=Goއx/;&qHxZ5?N=4_b'd8yً9mmia3gfXeD^ZU\LqSZA⼽4W*'{laF [X`2}xl/(- Z2a` /}̳]oCBqX`Erކע Ep(ǚ~̨+CB.cG/p1!1Wi>\cl-"1!w5Wzm:xL0([>{Ë3>s~7lBk_P+,}NN,R*+OS3/ڦa@VM͗ XrMvbt_9 ;ݹS}<_)KLA鄀ӄR%d]9s3f c#a&CvmZҔGdn1n{JsIUaIJӫ ?%AJhfκ ]$-O>@ Yq"2UթLqk~֒@Y| P񓆨E/6)j+Jo\R8Jlꀵ$=P-k J$7NxKK_TMX2A[S6w]OtfiC)ibQyHV1घQ) *5*rV [8xz"GyLlq>H3 S%Kq>WogkofSV%@sW[GqY;|?;BPL1 $E)R#ZQG)UB[*ԡA_9Nl'??ǎ̾cM{oo~~mڔ)i&:HXџN*q7&8kt;9jp.OGNXoŵDwa̘.F}bm6t' @wC1}/}<k]I!p~§n0VBrQ6GP,5~y+ȭĖ2o.٠kdNfԝ0 'Ą:L}8BC=ApiJ_sOQAFi5[DIvZOT*8>Tj+qF`8@j'QtPt*\[[]Fvi_ u' (uG3ͤ!g:F%feIdTMMPb-1Q8.%~u]!|@Jmݳpٯ-0>-1S+ $V-4<'sZA{͟l_InۃM%(wa^،) y# 1f ad!%ӛxAI9R C ҭĦAqmވa7Vi#/"v6vمxm ([ AK(?BH{[l, ]K whI"kDWO;7`c^ ] 'Up,uAR[MY8H+.?lAII&[ZŋRZCA\nju0COv/Ҙh+ނL,+Ʌ754B``o?ڈ˗>^/bzE<ܳ2H.nt <( ~l;ޅ^2OL:՗y7`Q4#ݱ.p-=<5<*|Х᪚RB9n(Yvzq_kZ胗2l>uN 5ND%֝L_VG߫Ì$<%q,+ՅPѐ?a xdA6T!W;0tCV Vuٞfy4>9S8ھ,fFyk{~~hw~zhv5bQ,D 瓸C2& b>.]u r"߶  7,w!#0FdƲz™*#{A<HJ)b€SK[2; Bk(H{߶P=4Odkڽߴâ̵⩗+`H_Λa "\U]=U~ w OnRa&c%$,kֿ 'ބ+Y`{Vr[':/aQ=kHY_}(%EHIh\z%KqZ4?-Q]vlF&}Ng=%6֦Z;e5?ee⍽Fy|Yd&Ό=DGvqlE8l+fdib8jV%~vtlCy hBR\ť"<6/2:mGY=+pL㦼3QMzgsU:y4Qo,\b]y'Bk{4JG[YcWhZ3ق:sN[}SƯ+Aُ ᣤ;Q N2qDk+lm~ٍLƏS7M+6~܆&D.DF{ Z("EyS+`[ꄏ[|n18#h @kۢJ3jQ#" ťКhD! ETJ*G<"q:>$`^B)L$, $,Y!V5XxBԉ4^-ëlWIę'6+k4udv>bcHK4{h|&*dt i-IG*CV9ݼI LBsö\B$aPXiiVWB;~ =#vs7oW̡+8!$'nX >Id$`#YY2=U^JԒ7Q)TT2p JˢtR|Rk;GYi$M0Mlj{Vt8v˟d2 W8jPt2qQv0ЍČQ OTK~z ~R۬VuyUQJX1`ueX:g`d#{n!IENDB`youker-assistant-1.0.1/qtsingleapplication/src/qtlockedfile_win.cpp000644 001750 001750 00000014661 12312451003 026237 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Solutions component. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qtlockedfile.h" #include #include #define MUTEX_PREFIX "QtLockedFile mutex " // Maximum number of concurrent read locks. Must not be greater than MAXIMUM_WAIT_OBJECTS #define MAX_READERS MAXIMUM_WAIT_OBJECTS #if QT_VERSION >= 0x050000 #define QT_WA(unicode, ansi) unicode #endif Qt::HANDLE QtLockedFile::getMutexHandle(int idx, bool doCreate) { if (mutexname.isEmpty()) { QFileInfo fi(*this); mutexname = QString::fromLatin1(MUTEX_PREFIX) + fi.absoluteFilePath().toLower(); } QString mname(mutexname); if (idx >= 0) mname += QString::number(idx); Qt::HANDLE mutex; if (doCreate) { QT_WA( { mutex = CreateMutexW(NULL, FALSE, (TCHAR*)mname.utf16()); }, { mutex = CreateMutexA(NULL, FALSE, mname.toLocal8Bit().constData()); } ); if (!mutex) { qErrnoWarning("QtLockedFile::lock(): CreateMutex failed"); return 0; } } else { QT_WA( { mutex = OpenMutexW(SYNCHRONIZE | MUTEX_MODIFY_STATE, FALSE, (TCHAR*)mname.utf16()); }, { mutex = OpenMutexA(SYNCHRONIZE | MUTEX_MODIFY_STATE, FALSE, mname.toLocal8Bit().constData()); } ); if (!mutex) { if (GetLastError() != ERROR_FILE_NOT_FOUND) qErrnoWarning("QtLockedFile::lock(): OpenMutex failed"); return 0; } } return mutex; } bool QtLockedFile::waitMutex(Qt::HANDLE mutex, bool doBlock) { Q_ASSERT(mutex); DWORD res = WaitForSingleObject(mutex, doBlock ? INFINITE : 0); switch (res) { case WAIT_OBJECT_0: case WAIT_ABANDONED: return true; break; case WAIT_TIMEOUT: break; default: qErrnoWarning("QtLockedFile::lock(): WaitForSingleObject failed"); } return false; } bool QtLockedFile::lock(LockMode mode, bool block) { if (!isOpen()) { qWarning("QtLockedFile::lock(): file is not opened"); return false; } if (mode == NoLock) return unlock(); if (mode == m_lock_mode) return true; if (m_lock_mode != NoLock) unlock(); if (!wmutex && !(wmutex = getMutexHandle(-1, true))) return false; if (!waitMutex(wmutex, block)) return false; if (mode == ReadLock) { int idx = 0; for (; idx < MAX_READERS; idx++) { rmutex = getMutexHandle(idx, false); if (!rmutex || waitMutex(rmutex, false)) break; CloseHandle(rmutex); } bool ok = true; if (idx >= MAX_READERS) { qWarning("QtLockedFile::lock(): too many readers"); rmutex = 0; ok = false; } else if (!rmutex) { rmutex = getMutexHandle(idx, true); if (!rmutex || !waitMutex(rmutex, false)) ok = false; } if (!ok && rmutex) { CloseHandle(rmutex); rmutex = 0; } ReleaseMutex(wmutex); if (!ok) return false; } else { Q_ASSERT(rmutexes.isEmpty()); for (int i = 0; i < MAX_READERS; i++) { Qt::HANDLE mutex = getMutexHandle(i, false); if (mutex) rmutexes.append(mutex); } if (rmutexes.size()) { DWORD res = WaitForMultipleObjects(rmutexes.size(), rmutexes.constData(), TRUE, block ? INFINITE : 0); if (res != WAIT_OBJECT_0 && res != WAIT_ABANDONED) { if (res != WAIT_TIMEOUT) qErrnoWarning("QtLockedFile::lock(): WaitForMultipleObjects failed"); m_lock_mode = WriteLock; // trick unlock() to clean up - semiyucky unlock(); return false; } } } m_lock_mode = mode; return true; } bool QtLockedFile::unlock() { if (!isOpen()) { qWarning("QtLockedFile::unlock(): file is not opened"); return false; } if (!isLocked()) return true; if (m_lock_mode == ReadLock) { ReleaseMutex(rmutex); CloseHandle(rmutex); rmutex = 0; } else { foreach(Qt::HANDLE mutex, rmutexes) { ReleaseMutex(mutex); CloseHandle(mutex); } rmutexes.clear(); ReleaseMutex(wmutex); } m_lock_mode = QtLockedFile::NoLock; return true; } QtLockedFile::~QtLockedFile() { if (isOpen()) unlock(); if (wmutex) CloseHandle(wmutex); } youker-assistant-1.0.1/qml/img/logo/Manufacturer/KINGMAX.jpg000644 001750 001750 00000012562 12312451003 024106 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1!AQq"2$WXBR3DE&#S4Tt%w9d5H  !1AQaq"$TU2Bd5R4t%7D& ?>M$<{&$ӽ i iC')tGJ3/|FHb!z` oOh]D+t. % [BK m.M.9 $w|"bLgP'Q'XFݽL#5}ɬ&$5uL!_<4 |}k򝹴;0=˨-v͡OѡE;Mh򟸷T~kӀQBgK@AK VҖ_0d)8\(WmqV]mm0Eȱ^$_Pm]*ڨF&bcq%{΋ʪ _SM.ie}` p<7ejW$LUŧ}]ClZzfKmQ\tn{^-o{r̋e?22v~Z\EΥ<_Ԏ-F#N1qޓZJs]z֗.#{kRw|ɽjWu3 #vzZ_YJy*ĩ1ay ?i1޳ZfYSd:guԲk{~RJ\ji}"n +Xċ ~ QdZ`EV"XmN+׮n%JmNR5wuBє75SOKo jٚ,MXlb|.pk5B+cTuLpPQr|Q*!'-o:WH5<-9Em]0ؔĐg'%) f<@1bav٥E?zjT?T q;maǁ!n|w ^̚mquAZȠWC4-7$l7=/|Wڽ~MlJW\_c?{9>Hu\a\;m|xxrxv%sU[hRӵ68S%LCo:~h& 1su?= 7Gyou圡M\3JOS>n'0t\B,U3fU~JH*KMztH@[X*&@In ɣ"h@k{.+I7s^apAߚ4lFTeJ M,*U);a(uIZA%ռ[146@ 454wzTTbrsrF!UC ,SW(r ;6*5˥!M)w9c);*.S,NhT9<̀4ꑟ8#r&h)hdXij~ʃ`֙Yq<426 }/Hy},Xܾݗ Rkē\)a\ތ<59ph2Yyɫ 4X nmKcx-mt|>GovMpnٶR'9'RͫXtS[1j3E93qY ŝ]ک];\$w@Xu)1)p=>\,bT%LAB!z[Y-?έ sgX8_}w1ܺd/ML+ IJ:BCaCx\6xea'oLq&790;\Q┩Fj*;޴V`|2_\vl3hͲă9YS4ki"IhBZ9Rt8$l_z1lFp~LWj$ڴC{Elo?6'=,_ws\«%M:A̲^8VcRi۶|r=ߡk3Cyy5kUʼ.Ug{\NhpN[[*Wz%w%:Z{)W w:<ƭٳYJ@7ҴcE98f_cܮTӭIpDo_6[p[o$mmWW*Q֥~ᘼOD1OdPj8(VC(a5E)]22Qἒc(6%{Îl(,ǖ$s#سX#N"AXc 2 Tϩƾ\2.?uO1[1Wk^vsBwQkVq (Cדc92![; /NCnЧ-JxSлo7~/|gO1[1U ^voJ_, Lм4{Ҧ*k7m=Og:gkZ~,]X>[2gQr_Sџ_-9d0_8Hյ]_xg_TU-hmY" v" {/:e dܡYM@F's,'.9ȝG$9Ml|5sr+]Ei I6ֹGOb6Ěwb:bM#ց:bM=Hde1.@&e؉];,D/L ؘ #ˠ:ځTH܅z.ղhQ؀(1&XNHnNOGR?LK::P%=ə{B6"GN@ z|6&D$vG'!^youker-assistant-1.0.1/src/image/dialog-feature.png000644 001750 001750 00000046335 12312451003 022621 0ustar00saucysaucy000000 000000 PNG  IHDRIx4tEXtSoftwareAdobe ImageReadyqe<LIDATxW;oAٽ;!x4H!BE/PPO(r. CCA Vcf׭(@Huݝه=x?zt)s޾8ancs]@Җ$FI)yΘvCJۭ_ӆ]=yFZ䀡CQd(BjI_)e%J+0[`PJ{!JT]6'7rƏ)-5XW["SH{W9i%֓|qB9 &ƅPLLǤ:zJ$7zϳ TEF±9 qed!І〾` WPLquz>pr+ip2^,aw+ |ƶX? 3$ HZ`1lV7h1V??G/51 PZ$s L]@nnu30}l.4?cgw=[%^[8:{QpIv}=W޼+3:# ݝp8O=ȞhUn媐Z._;0B`W`4kWۏ1w7@c4B g@RO~ q\{7q6!Ci)-K%hnԊ g 8-6j7h 7g!;l4,2-,zA4ui2.Ii沘*?,rkt؆=Ή\$)b; @ u۳3lI:  spaW3ܭ"0:!;BQ>d[Drֽ#[OK"xQxcW{ :ZzNlwjq*ߩ?=ź`S0_#Ъӓۛe Ըϻv}_# .^?=IvNM$ iݥר@@r+7j^D3gu{ԯ?=2š+Kfý0md0#+άoQzh6GZQ{rO#):4Mt3!/:Z)X\iǿǩboLvi5.4_A#B?n4H_ G&` nIhl5QjA l6-<ե sPJu;+D$w>J'=8ٺ;1v~s(Rt"Cʱj䓞3ng ;0B wJ?9+ڄvfe/aqeFG(/ %:pt Cjg{kϣ {TnZ`uSy[;s˲~r%ZKwMAt7. Tp"Z BjC#Hn7;ΉE?"c8w緳=@ܨO@@er#~*)CPz&E 7pjT̀;xj˒z@is:  IOi+W˺~6s'bd6RzKL pz9Y§u}~[c1qp)kEǼ"3B@bpm gIޮ&qN"K2زb2V$Wu @f l)?GCdHekBk( $k^(,UxTu9ѵIesi2 T %Xo@R)3EX_i tV~*O*%yDK]PYm^Ij=̶ X)#/Uؖ*]Jh$Kdrj%]H ߿SYUA>it>ۣfI\hC_\ɇopZ*pM?՜oiX|6"uy{Mh*k,"}{'&oid@MwGD 7ǾZW󨏷>fwÿGd5T4- $Xٜ4@>OI2<˗"")B:ckj=_jL# b KL2& ,l+niZ[s@fKh{ȲX<&2+}X-O8H>6YT ~f&INKg1cf=xDՒnSg)gKMGwJUeu+T:Fb׌puw ,Д;ELvX?Mqs6B_QJ(~<])G\K񣖯BwOc"r "#aF$.O3c(Cu.CKoh K%}~jE(|/zB"U7B: *cBABӭ(61f1ޗM! ]5^}717[mVp|tik`wo;(aR yGԛ%Aerɍa+`v 9ܴ#+o׷wpG"A,yl灾.@hd'C^*3d57I zAGD|Z_KPZceKq07']TuI h; ?Ih)nq<]fu4kSK)GN3X ڈg%$`@IM{KY+tx@!|#pMǬGh@":q鱁}ᘳrA<` O{.3}ˇc{>dlL%˿%5ވFx rntqRLneY3U6קÎHWޑTUr߆NɄfzR/s؞hp ǩ|F>NKq nl䖮boC HW^'bec-Z ڑ-i2*/ sty&pm,4idYO{ NOKhD4A38_㨽IpI ꕍO߈U-شo@@@@ sAi|`lv88^3Ic$F" 1ks  y Cqb;mɖM[ /qܝwuO\A XrٝOuuoׯdǿ=UEV{{>C3iJ90m8l;[(eˢ̖E-[e:,Q" Ƽ DEVDK" Nؗ/z 7\@.2!܂Rf6[B24BWI(FagD=,j U I1`( q,ƣ#hz9[, ??Ѣ4{*4;Fh_zuKl)0xM\e 5-@ MYbh϶- YH\EZTa>T9h ˰JƒQƺSD-we9,ADEvSL)BI B(E(8}mi\f(: Ǭ*S:fwIؘH.W?͹3“2aY%'aI~rw ޥ7P+FY(\*U;bE!L<ҜP#؁A2ג…xUfA[Uj# CA +G`c!:YPPH[QWpLGtU^7^Q'&%mS\܄am<FF|P FKxS 6z>f?[6ފ1Z Cx>g02"<#y8Q-ɶI$4/-q= iCx喁 gΧ$5!UWu';1"ʂKX kWggOBd/&佗\YԝB4h=8 eYF}못8ЇcfROT@K}2hlÆB%tm"ldi=k;n&|2;. q-G0t,M80lrP|MaUZ+kDzo"ĮzF۲ӡ, }L0 &2q$^1>k1?4j2Ev2RaTb\YjA 2Ɨ47^>\=oJȰ˩~B!Z!=5,_oϤ0t(Y8@eVQ+KALTĹf odTeT9Npo4X1-O?Ժ1ha/jxݞrzv.9'_QdWGGxf4_ܼo/|ukmĴa~#K^i'W̡vb/nR4W `#J9|iӆS|hH-ƟOE E}4lEk_ VK(4dErځAp^1n]s8?SU|Ev>SE]|\}67rQmO@ڂIHu^lpݙ,9Ħ9#,De£%NzZg[0!H U3Eudbj&E*Vq %8=oxqR{Qrv uyG{>{_3(\9`meoGV Rte&h냽xK/~ 9\k(%Yˣl܅'Z 6:<6W߃%S>ZS.ygǕ%bl|r~:z Gʞrw㧟[Y.hMd.a_,wam]y-}]Yٌ0?PuOaT@HXs,@jY`X=3`lSyafj1"ad\Edk'x+1CwwַPF͙ s[0lҁ{P^LXmpnn/C םsC@3%)Tfp >'ZqU22TuG=@Ϟ2,/AѝaZt%WےEJv~qhW`yyR.ya|QVݷַ(]V7nvıloeQfˢ̖-2[elY:ÓKWi37Glػ%# tO䐖H(%J+}}oݓ{ߣ_VdCӍF뿲 4g(r+`OPU2U_/UKH@O(RiVWݣɳy{ٯ*6I޸vV1n kPB @*,TPdB *,TЫF5;WwJOzPnų إx!{džqhiK}&˿j !?2*`ZX5\vRt`8͖kSɌZbP]ْޤVvFC6ARS%{GٽdL}3z!ʗHV%;GVIho^e:1DZw嘑BIrmq!?VK !sdΪ0(q]0,|=#חr!G;o3)hegugR+;yaw( w4*[dxg,nNQl1s=u'eo׶įpx|.ò"}9gqeCL\}he=ed*Å 78U/dw ֜гດ t-]"^x2ehlt%lotUcJ,L2[rGD_tҠe1jdߔV TbUcFjEI&8:$L%VQJ.FGA[Y~S`b:Cl  T!Ԧ-ؙ4kTVTVOW7߀WulSm l&K@gc"{KhJG죁Y-o00P&!7FR :`gTYV=hĆ׋ +3HIni4[6JQge :!] NˈCLA2QSZ:2 0b2Ɍ洖VV Nf`i@p-}W:ӣwt?ʸttbPG7f2l-gqr# ۿ/bU_Bc*1d'c5$AsI !}*P5)'FVjy&P85a?'vqtފt J^]3zMr&??Šom<% #sgIJBUeJO軈]j[wox_ v>C z1O˒WV/ᩴ֏e[rP|(ʺ6jecOLb|TfR0e&DL/ -sNg6*>L./`a5%瞩-kdZQqr;禮1̟CUWKX@8*-f:6NiUXB6RZ鄺Qm:r3YbC$FF؉'8K*1sAkB718$z 6(?uѺWڄ35BM ,D$8w7߷R%fJ׬Av8K*#ZUؙ \[3\oÕCj 2t\TpJWA~nd Q*]]\b>js xvY?8U1q7$'m l5#PG6Rۨ&c0r8RRCh^\KuC8ϑE]SCdr!FDO$%,Hݱ?'1yKOtΐl̽ R)6" !=Ѯ$fʼn3}ܺ5N6oepک"$u/alWT-$(9gH^:W_/+eى+r9k [P _l07i #rc'4qEԬ,(}S~I_fse| (vX,7J7{‚v#^EgxxY`Dqvr%τ|p6[eGab)޹ +(;5c# 63QCbmD.a#&ECo uwP -ٹ^zn(08N'А;r/4cx #PF>]DS%>oԌY#᥂OP~ `jq^tKA@^܌Q_l]~o(kGNvKE>.Gpzoa Agye2ֲ^"nvHU*i'@wx~he*iN~_@M:Hk7@PN\2TdF,]~ Ĺm_vY" -F)ZpۯA-A&+a 7;5\03"Dyϟ/c21{ G>+yY<15RT"p>guX 8xt{?=:>G[t80V)^$qa-Mu˧>]g.'D|֖;D/h A9{ @o{n&^~hz:_hu_m;A4@Db p7nޗzۺ4-`b ;ܢ{w>bZsZn-LVDɦZ)v:[<bF ų8jY#XN% ¾uJ.)ж}Xtm%AKPO~2n\;‘%BIrgXШ~bqtKr ,%n0]rhmc?l=,{c֐YL-,F:\YRry>hB!b8Qp5rیC) +REX}4ve3}s.ic Z"5[FaW>Cyn>@n+(Q/\UO/. |Q6bo1P44[?ӓ6}MLP Rwj{ӛ8YСb-L܂ G3~o 'ˍ( Edo+i 1Ϟ.ywG.D}\7) ?iί}MC0wo|YŃ%(r*kɋ4%ף $}`i`W )fQέaW֥-}8<8)[sx/+Vnnv_Eb}|EQ0J"㇤}:WӝU~\G/,Hl犴 '.x0Ŧz1KT`hm(d%rE8]|ϛ:)ץ!_1j IY 32JWy V|`~յ/ m7y=뻶"E3W0oL w plꅮ5&} 4{go?;$̶N$E屷:& lZ'H F!gwÓ/&[дTƢ#xk?Mʦ=qGR(WM)OLsBu |)̈`I nb>=hr uY~fqЕ}x?Ӄ3< 2l:*-Lo"w)U(,O ޽38:Awn߇)@pB9o+kMxrYB ~ G'w#=!I@ !I@ !I@ !I@ !I@ I HxС@ tI_P[#tI9٩S\i2BCјRّ7~˅3)W^eIoZׅ#nRx'- wB+/yQ`ut6M?GBlzU23\axUkWD/5׮y+,ݾ}CO˒z5{hU}oȽǸs}$ך.Q:G~Kj\>Mh# v WgӉ]/YU)8ْ+KlZ TsWr5 QA&9+ip,9,k>"oAw ^pࠩ@1btu%Ps ֮U x~"C$j9+r1%ņFf՟uI,Z|M kbDgIm]FH&hheE# lk`[._MyMV6+2hT>Օ6`iBH["ǰa֌ Ѿ~dU5D'ƁR/ߤznTMC$cdLt=Zm+y7dYݻ6G*Kٶnǘ6@(K t*{!ScjAҩq.>asS\n+ѡXCI(1qAƄLU"_4F; =ζw !@<;`KTO GP Fn7їBO ~Mpw2Sus kO܌0kKꊝ̶Im9몤-H濡 TXi`͚|biWEGPA)IǬay5_\P`ϠUSTF❩ln@uciSaqʭjH] i,[Ӄ[3ˠUUƚW3G^QfΣ֥nmT{jȴNu5]{ ȏ` 4tˉB )[cf9@YP֝.Fن!ᕶ[~N H0PחVA(UeW?tbaԙ2!dB)ҢCCwD`y ߰!J֞ KH\}z>@(UQבEdWjvn21?{sO,]L9&CϞl<EFmC|j \:_y81Uc z ?9Eh(E]&z\֊KL7v0 l@4#nV7wfCMFMZBTa9cڑQ /v"Fpjz]Xb lLDGy<Y * x.LtD"J譺6 > %IXf2eXkk"H/B%3@$aC[*F0ZN }ߩrBI$rc`,JPЦ\<:ody0,L: uЋN )i ;^n]bF&;2+rmԉul쉌lN]9i4b:*"~}+Fdʹg_b${q9]Y3Ud23V)D dN`å Ch{3v7^BC[Vd >9Eq}}< .ĒۍD0 >蓰.+zijq*pKk.xdHf> #J &_,!Á3֞T&էd6tzŐ}b^jrܥ4  ԏe|m~@i&$1ւD;WV3! ȩ rhI*ܪHFҩ;llH'|@nbRw d0q@ⶰ¤q\GXa'綤~l3;FPFu5FC$a*N%k&[iN(5.b湗],xRYWY=66kjuH?8Y k?~zvH`CU7לELxؠZz.g#)^ $͍ JîJ\tZQrEIa"UQD/OO*;iސU9ɣ/((p&&Tn3mu<dž1SYAS1VwHQViS* +i^7 mpGJ-d S3sr~aD1V)K|fY7v ((2/HcÉ=ߍ[A`g S|m9Z-]H wQ%kQ=%[QbI'5ʶYZc[V^zuD=кj ܑ7V2uj'Rlx50_nl #Dϓq@Gb5:Vu)&*Ϗ,(qW;㈗_=SN4S"8hڽM!xSclЦN^ՊY|eL&aiKE:W^:m`sҴ>vIJ}(u_5a~YBnVT`hn)mR/|m&6^vGacxe[ ;.bՄÄtDx|Gӧ㉒(< WR,X3(==د?nWEh Vԡ!¾= ,4!z? F'ZƦLGnpYMҮ|WYrL?>u7Ld>͊MU }kN=at\Zg5hڝi 88`d{<9/tc 8ˊ41Y$H!6{le` 6[J{fS>RQ|V^o|ŭ3D401n|_5f..q"KZٶEyt&$z\j2:;G]t +zZz̞gԙHߒ-Yxz䇸v͎Z$ ؛585kc(2J18^/]%_"Ht%dhN)3(sQ I%80 c3SAc)#+)e;VylÿJCVxnܽoN_];>rc1neeZM@I!X:y'ǀm]_;4n%&8vV ,ƿmtN9xW0iW_fTR|_E]e޾qkšX' lwl{W+o]nKj􀨱?E>VY$1v _^=}ީ.veo6}TKu,uG߆Lf;]O#ɛToϫ/6UQH ISGQCwy~ G/frhpsv'F.T yh ^=)&^EGWw2s؝ؔ0W½~[HR q(|+Wl4+ӓ?\ճ;8w ^@pp]adiŌOK$uzg2%-h=pqn%MF 9Xϡ(V9VfY8[,*D#4, PYgy;J8%) ͫv=Q3QP+o}}:&ӌYS(KS$vvߗ^>ZOa]l"f1Խ,V"MdNf٭ԅ$"<5wЃRz}~u֙!MfKZAAթ6&q(uuWDs}keem*Ř׻k{ÐfsMnpW2k&GmY߻B@p3pw^+Z4dy KmG_#>Fžpz?ya!<~<!I>'/yԋH4;2t <~HK10esTVߍCL[!kV:*U{CxG_@pI8(&|J!VsxY`Z*x̓cY<^|UWuNƼϽثbJܽ>_^zy yfLoJ &&}Ro'V 7pg-Fm0q{R^L.H@}X-uMZNwph29S=/8Z 6ٗ$?,nGj8c0;1XdidptS<Y*M |)߄g/g'Gu0kr$v"߮5ƻf6&}HrY=P!̳a/7  TP.Od#0@КޯOūO;sPJP}W)}ҍ&AQ<=t3,F^ajRx-ރ;žSL`baXͬɸY"ME,ӾR!=U-'~x3x} TC$C+Bf;b¦&i2+P1,D佥::_HR ڻٓW [g#Kd"UnH-NBg{G([niȑ]I@$-822aKOKX$B DqrD\Yer+Aw㗤&`EACC2ov2gb[R45t U/Oq Ll )}]S*:)a0,3kbj͞XV3[ "@RdABj,eDR@B`_3"˳g0ppKy2]c!Ć!1eJQ*ZjbDK\5We9~]|Sū!HF4_dynElm)4!3Zڀ@ x#|cz9)8OS׊SEhZG+&Nn[l%lVd,Y]HR \ S'뇃^}ɹ!ZXZW!*XK>IU>C -akUXٶAPW./sh՛-p簎L l&2t71ԫ#"zUMem|(z9 =&C'I /ެK?K5@ I @ I @ I @ I @ $@HR  _?ßޛK?X?&zbIIENDB`youker-assistant-1.0.1/COPYING000644 001750 001750 00000104513 12312451003 016376 0ustar00saucysaucy000000 000000 GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU General Public License is a free, copyleft license for software and other kinds of works. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Use with the GNU Affero General Public License. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: Copyright (C) This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . youker-assistant-1.0.1/src/image/accelerate-bg0.png000644 001750 001750 00000006765 12312451003 022472 0ustar00saucysaucy000000 000000 PNG  IHDRT#}K.tEXtSoftwareAdobe ImageReadyqe< IDATxb?Cڛb=>6&@vkn`PW6f/?0|$?l3|A矿 _('w<| +~V@HKK+r1pq}ƻbx7?3pC,( &(HRa _g 1O8IgJ8PhHGqr8xC`++0mM?ea큡){x-+2.B6i3~<hUB3Qpga(kb9n+\d=>$ViMLg^>n9$Gs!V-R*ap6,qZ`%X >`c cX"rq?nɮ8N-lfgkzȽr R  H%kz7?!+v6l7 Edl:fn{+j ӑhyMWДb`oCK_E=ui"]SpD,>]*oALpuCTMٱ"cvf-ȴJɳaN,[dN35hx#SN .RPF!ʡ"1C&0iaʏuFۼ-gB% F*a%:zy3$y ėV.DAHJ#VCԢx h5 DQإ{g3P`LdrsK ^F22]ChGɜ40 Xݳ FNR8Rk b_+V *ne1ɾ6b2$:=e!x']8ocߩL925!m'CốI(aq6]&YYzwju_Tv|o4o1Xj lo"+El4?Q`"Ўs2Fܥ&-cRM>ɻO75ǩ]*/?^* :<%8%m :4Q`{-dë~@J?o񣖲fR;S BdKXW2k ]pBVq~W椐葔T=<+R/%&dّl+tѥ'y^xUGcu~2~kg" 3u1ADP_.@| bXZ`BXBcHzwg,80$s8|WW~OWM+bG3}e^?RH#%j5j=ɳw[O͍GQfby鳚oOILx*C>$'g}֐uzV~/Z73H"&TI$\ ]U2|M|Y]u`^aS]X^p%ߌl5,PT$t@Ir7ҧ2;Q@\Oe"5*@5obYiR@ʡ^w=:zZ ,sRҙeyPv8.zn)#eވk3Rs&H)jQ3TջB5ë| ']]LB 6F`S9t#+8UDR%pCQ@xґO{Zt:!"oDL37~ǻ(ū\l%5(Of+uTK'HFCMF;q9g <|F F24;,J-Igq;Y}LyVv"Փs$C<|CdZWxn)h2O:dH!$']C vpn(~o$oLHB1/\-&VY5: A@CkBtR8(,uܻ\+LOv֫+Q]0P&ҘDJ5A`T*ӟ:P"!}D>÷(kODj G{f27ksCGR4>Dx$0stV psVF緤e ļGʼT(m5Qy*uB e )F۶o0pNR Z+"aC=Dl"6f7tFM!\،!RQ;dnыbþݴ\G _L+ yV&iB=ޠ jk)*ʧ6>K8(x\ܶ1TY9LeD9eeQ5z6N|[?@jk8@gp+!;JeRIy2hl_`WGq~דD_p*--֏6GkʍZԉck ˲Վ۷xEʭHt[ _Nwߟyncx?IRrOc{7;6Әzu[ؗ?"$ .?q H.?)߇Ϧ>cIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/TRUST.jpg000644 001750 001750 00000045314 12312451003 023732 0ustar00saucysaucy000000 000000 JFIFHH?ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:03:14 14:02:19]F&(. HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IO1 G/]#auGj[-pp%cߟn=sObO,qV>32Xȥ[pm;\}qzCeݑZn׵cا!Bˆx⌢,d*dn$sqz%Yv nڇ/GuY=_V-eZᵢv׿vWmѾIJ3pwѹ9R\SkUYc 7VhW:^p T$~JuRXmt_jmx=[iӷcXSiL[RSԤ`}|9X*pm,wnC3*=^[%WW}̦$:*^CKtoCTu[i!Ķ$m$^/Wu̇ -KwWK{Y:UX6/}ew 3:8|_~]f;ZL<˭-ZW^Բsٳ/ٲb{ragV?ո\vƹD'/MK/1dJ?u~\uG\RXwR/uX_wb0>߉77s@a lٻw$oRvSrNVݻ7~ÌԦ>魍h[;+Z \\ Th/PYV]ydͥ{'s[ceF~G2RF߿{y%40>Y?/}t߉sm cˏK6ն}dUޛ|c?n2ZeEVq&^kLkl,ͫ*AmnXuֵ.l{*IN/ɧxxQHcke`36-RgC3wec6Y]֏8]oaabpӛ!l>ogF=b[fEw4m˫}ѵ2JTI%)$IJI$RI$I%)$IOTʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ Photoshop 3.08BIM%8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM=F]QH QIq]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM %]FL JFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IO1 G/]#auGj[-pp%cߟn=sObO,qV>32Xȥ[pm;\}qzCeݑZn׵cا!Bˆx⌢,d*dn$sqz%Yv nڇ/GuY=_V-eZᵢv׿vWmѾIJ3pwѹ9R\SkUYc 7VhW:^p T$~JuRXmt_jmx=[iӷcXSiL[RSԤ`}|9X*pm,wnC3*=^[%WW}̦$:*^CKtoCTu[i!Ķ$m$^/Wu̇ -KwWK{Y:UX6/}ew 3:8|_~]f;ZL<˭-ZW^Բsٳ/ٲb{ragV?ո\vƹD'/MK/1dJ?u~\uG\RXwR/uX_wb0>߉77s@a lٻw$oRvSrNVݻ7~ÌԦ>魍h[;+Z \\ Th/PYV]ydͥ{'s[ceF~G2RF߿{y%40>Y?/}t߉sm cˏK6ն}dUޛ|c?n2ZeEVq&^kLkl,ͫ*AmnXuֵ.l{*IN/ɧxxQHcke`36-RgC3wec6Y]֏8]oaabpӛ!l>ogF=b[fEw4m˫}ѵ2JTI%)$IJI$RI$I%)$IOTʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-03-14T14:02:19+08:00 2012-03-14T14:02:19+08:00 2012-03-14T14:02:19+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:208f50bb-6d9b-11e1-b399-988578345a81 image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ޛ1qryb'Z`R SMM2HR\&v m.!5 +JZ㡍 ^emY큭&]HL+R+ViP+c՟kt?q?_gΟjOo[zqս][w힣K)f!-jieeji(r(C;\Cy76EH.ze&iP~H#H# M(/j O~b..T:ӤӮ#OyTjzޝ{Czul}%}]76/x߽Ux(w.lw Q,%\TY,nZH*xfDetRR(hz t)^׺u{{^׺뿺S_7cc6m~ǐfǘ[P@,mUFHH*TЎzٞ;lW77IhPZi9"]7ee`A n{VPhhH #=e66 yUXCQZ0 A0Ak7O۟tvwivOnTxH5mN^L)i MH${ȎTg]٭w G} Lr,8sX}Gs=ߞsعYf&- D (/"P@j'⿑s\x]{6Sv l+68٪d-S϶TI$>歷qݬw DsFV* Ǒ>K|7nZ>^l;g+E4dQЊ*~D4&[7_OON}^돬6xmTWmr9g|8mUP و`tPXm $?:6v7<^3{ӭdޒ.CrM8'A嫟WҸXeӏT*1}˲6vfv?wm|WXowش3dV|^xr4L:mAkKztf>`2;fm~ܞ/x}wEff/e4e\}Ue -:Ǥǽ&q@äl{ >2lѿ7/7wf !.2mc6K5ڒzVUb=Jgi530d{K|yE%>N-WJi%_qViymoմ7U |}z{~VUovo/ ]| ۻ+t,t˃Z]ŷVh&d*4t@A,:-A$cғlJ䧞=IS'ǵil=6FO^3{uQN$`;7] K3c *(Jci:LuO= ߝѲl9zQ`[sTT9ǝhb xBeYMow P3׺ sxo}G}3mnڌVu{ֻ5MEV0-n9!s\1s&ź‘+*悟{Cۿh#y~bZe6m#,n* kzNޓ`;7n_f8 -un.M-]%%SRF$ob.=— Do#F 5:'r(-[.a)2"ʉ* VeԼ Ҡձ=Fk?1WovJuh \r/[–qأoU[wS޻?.~ztKM?A|oبjctU:__':ޟ%r(7Kh#;+enIv|YܾrY9_2x-#HP;ګnF*8bL?ݗ-:gо;j_0QXlAxJjEGyؒI:SgiuX_"io흺+39mq{rbs5\oFE>Fd*ҞYHtw7TOT:vnO𜾊;^v/C=[uh캽ל`my%EI5Nvhҡ]!::_Dco}Cӽ=Yv7O ؝K'S:qqa:IIJ/k|U*o[1o/%ƒv7 ꬇enw|I =ef?=6׭bY+bZyfT~ j:ЩQU>]Y~?J7owo}`~>6n Smjl7pf)X)]GħUuԶϚ~P|[K؛w&#pcNOJ1Cn)2*嚧Pp8 uj{|T_ ,nݻwOw`hk[/ J*Zwe&X{^W'O#;ِ]7_y&}uO5g4F}aWP#=wv-7T e!xug {Sg!{l=ܻd6o☆z|3PM sы`q|Yjw#b3rn~;67IgrIx>67YCB/lVRmNݷ XaT, HxTw}>{Ϟ㝴Ykg-]zt/=P,:c7DoM[]Y͵2Q_QUU[G5. QήRGɇy)1*]k*;~6>ȃrVL^JHAƱrIn4滛کcqlN?D[^MwN]߳w\N_XXrx\KzL,*XQqLum?gTOxoQ3g?m\=YE`6Y-×t)ҝd2V>X3{z-ܿ'Ι i8}6{+T,fFUM[I,5, d_W_ui۟^lcB1˾sifnK2CM> Ƕ( Dy)jR*D2h[[^z; ޕGFN'7ٗdUazͥ9 JRIT3VI'ϭ s?5.CQ孠"z1Fg6/]]_C<wObbUTFާ-h;xUtb_ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~youker-assistant-1.0.1/qml/func/common/TextField.qml000644 001750 001750 00000002163 12312451003 022760 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "private" as Private import StyleItemType 0.1 Private.TextField { id: textfield minimumWidth: 200 placeholderText: "" topMargin: 2 bottomMargin: 2 leftMargin: 8 rightMargin: 8 implicitWidth: backgroundItem.implicitWidth implicitHeight: backgroundItem.implicitHeight clip: false property string styleHint background: StyleItem { anchors.fill: parent elementType: "edit" sunken: true hasFocus: textfield.activeFocus hover: containsMouse hint: textfield.styleHint contentWidth: 200 contentHeight: 25 } Item { id: focusFrame anchors.fill: textfield parent: textfield visible: framestyle.styleHint("focuswidget") && styleHint !== "rounded" StyleItem { id: framestyle anchors.margins: -2 anchors.rightMargin:-4 anchors.bottomMargin:-4 anchors.fill: parent visible: textfield.activeFocus hint: textfield.styleHint elementType: "focusframe" } } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/VIRTUALBOX.jpg000644 001750 001750 00000006441 12312451003 024506 0ustar00saucysaucy000000 000000 JFIFHHC  !"$"$Cdb" ;!1AQ"aq2R#bBr&CTUe,!1"A$a2QRqr ?(.m=H35b~CL`ih[WZ= nvoxU]^hl.,뢷<}iŹ2/]h - R/HcV\_q?AKClb8BEp n5ɲIg>G4|]p[S~ c+m!D%~QօkՆE^X!\@RmaĀ@#ҜZ1kXv\[wpzJRArW{Sq_S.':);NmZuT9Fxx3sIe#KƊߘ}86ҷbyӉX4؍+{+(!!56y)RI),Gi^wGW5{8- m%Gq=K$@'ovE+qx2EmVAk ޯ8́(1o^#1c9G_]x;G6XoT#y{}E:^]s.HuEC>Tu˸Ltm'RMJWa%Ƒ T{s|fk3|Sqo:9k`4$_1?TiuQ"]{Py]078RĒbJ R:% tn t nYiƦVE&>#I9Mѕלq6EWdVA]:ݾ@nڵcRTZB\ @jy-yXV==m/Z!(8(W$I}i%doM\ؑgEL$7!-oa'QE~k=.2M6ɞP;>J:妥- hÉ B`G0\`Tyk}uk*QF>%M}:A?e7mꛄt-= %*Hy|zֳ9[٥>W;;rn6t D㪕9=Sj}#5i aE 9p9隫'm2i֭5ld @f}NI*Q'u(C9˞?iVچ穮/^#J@Wn;k4^ ,aI*Vx&a ,./vEۗm\=^OV]-h;"Zzj>Q veJ@b\0:gM/3o\a̷)H#y֮wT'"oZe|$9 [5ޕq{IxA tczY듨ꕞU՚>tgk7Uv;<:q'lp)HZ mVKQ\ɁX\P@+hZ}w{ž %"ckն!Mmø=SiW1JڻCZۯȓ[ܖPOpg}D#*ڮe.*;'ӑ=j;Wy!o8)6-Ǻrdp#ﲝ]R_a$ި'iް̢fH ݛOQtOޝ;^$yO |\v};b }x@鞧N~%ċ,hh74ODk|FJF2:jJ 9hmiʞBkf;911<`rTQ\IQD!EQQEB`v! (B(((!?youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/dashhistory.py000644 001750 001750 00000003526 12312451003 031020 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import commands import sqlite3 class DashHistory(): def __init__(self, homedir): self.full_path = '' if homedir: path = '%s/.local/share/zeitgeist/' % homedir else: path = os.path.expanduser('~/.local/share/zeitgeist/') self.full_path = path + 'activity.sqlite' if not os.path.exists(self.full_path): raise Exception("Dashhistory: path did not exist") def scan_the_records(self): self.browser_conn = sqlite3.connect(self.full_path) self.browser_cur = self.browser_conn.cursor() sql_select = "SELECT COUNT(*) FROM event_view" self.browser_cur.execute(sql_select) number = self.browser_cur.fetchone()[0] self.browser_cur.close() self.browser_conn.close() return number def clean_the_records(self): tmp_path = self.full_path user = tmp_path.split('/')[2] os.remove(tmp_path) cmd = "su - %s -c 'zeitgeist-daemon --replace & >& /dev/null'" % user (status, output) = commands.getstatusoutput(cmd) return youker-assistant-1.0.1/backends/youker-assistant-daemon/src/detailinfo/000755 001750 001750 00000000000 12312451003 026604 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/weather/n26.gif000644 001750 001750 00000005313 12312451003 021441 0ustar00saucysaucy000000 000000 GIF89a008ẔɁܠŠ»܆ȷ᷻ٛǾ6Z~¶/N :]6S{wȪĘŻ.O3U0Q1R/M7Y2S0N3T1P9[4U:\5V7W3Q!>a9Z#@c :[%Be,Lr(Df,Jn*Gi!6Q1Qw4Tz3Qu9Y7W}9Y9Y5Sw:Z9W}7Uy;Y}?_^"@`!=[(Im%Bb&Dd$@^.Ou/Qv0Rw":T2Sy4V{0Nq5W|'@[7Z6X}7Y~8Z4Rt*C^1LkFh=Vs?UnNe~1P0N4S8Y2P9Z.I4R5S1L6T:Y7U;Z2M@b Ab=\9V!Bd:X;Y7R >]%Fh'Ij&Ef+Mq+Ln-Or+Ll*Ij2Uz/Ps0Qt4X|2Tw1Ru.Mn2Sv7[4Ux2St5Wz5Vy7Y|/Lj9\7X{9Z}5Mfg{w0M1M2O9X6S4P;Z7S>]?^%^ʚKݻxz-$띬B)NȻB'pBUa>|1XqZ Eӵ ъ H#,Yz4jӶٲudA]##7kРq.K+JYd"DWe_DJRfaӆx裄! .tL ΒK ;ԡ +hAe2".<.)d <(B -r0A. 9030cc0`Nbs9s̑UH"x0#@B P!PrO6" GN;9"tJD *J0!$N@1HO+CI:̩@ A!x &P |0!1@1 2L : ,0&x % 'A9c,1D8h.5n[s d-AiHs 1z 0)Pa1SA0lpt>q5 j0`BH<@*昳JtD1͐)Za@55AkH:שB[ "1e tFj $4@SA!H= eD0"$ P`omb~98 mX@ T#H3 j$MF@Gp-!@WiQ{X0((nl2`QP[ \``8@}9#Aa5J,x2ыN 5@0( VQ~/ ) 1 I,H-gx3qpg8!}?Ё"fpKh@޴?O,@CP$sNp, Gd(80 ` (pNc%VjKt՘%Vp#:pD8v fT VPF3 G`(? *㤙@O/Zh8r"VC0 t\-C$aU^] '"k8CθF&L a G! ^!5q&҈)t^5 ihC`P7RѴ/4qMtַ`6 gpBXRQ~45k5Ml PShpZ=.'lp"I}\{TlBF4 N$xAURHýF{B 78e( 2Od ' ' Ԁ5@b":‹AOZ)ЈC>汒A!+ F2o, PPWVLftM7!khfrnbrFsǜg3Y'm9mVs @̡( ; ^P|#~t,H97leO>.d֢C7PeQԞŝP؂5<-R\4}MjYl2z 1,a;youker-assistant-1.0.1/backends/youker-assistant-daemon/src/systemdbus/server.py000644 001750 001750 00000004671 12312451003 030560 0ustar00saucysaucy000000 000000 # This class is modified from gnome-lirc-properties project # the original file is gnome_lirc_properties/backend.py # GPL v2+ # Copyright (C) 2008 Fluendo Embedded S.L. # Copyright (C) 2010 TualatriX # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd import dbus.service class AccessDeniedException(dbus.DBusException): '''This exception is raised when some operation is not permitted.''' _dbus_error_name = 'com.ubuntukylin.youker.AccessDeniedException' class PolicyKitService(dbus.service.Object): '''A D-BUS service that uses PolicyKit for authorization.''' def _check_permission(self, sender, action): if not sender: raise ValueError('sender == None') kit = dbus.SystemBus().get_object('org.freedesktop.PolicyKit1', '/org/freedesktop/PolicyKit1/Authority') kit = dbus.Interface(kit, 'org.freedesktop.PolicyKit1.Authority') (granted, _, details) = kit.CheckAuthorization( ('system-bus-name', {'name': sender}), action, {}, dbus.UInt32(1), '', timeout=600) return granted #def _check_permission(self, sender, action): # ''' # Verifies if the specified action is permitted, and raises # an AccessDeniedException if not. # # The caller should use ObtainAuthorization() to get permission. # ''' # try: # if sender: # kit = dbus.SystemBus().get_object('org.freedesktop.PolicyKit1', '/org/freedesktop/PolicyKit1/Authority') # kit = dbus.Interface(kit, 'org.freedesktop.PolicyKit1.Authority') # # # Note that we don't use CheckAuthorization with bus name # # details because we have no ways to get the PID of the # # front-end, so we're left with checking that its bus name # # is authorised instead # # See http://bugzilla.gnome.org/show_bug.cgi?id=540912 # (granted, _, details) = kit.CheckAuthorization( # ('system-bus-name', {'name': sender}), # action, {}, dbus.UInt32(1), '', timeout=600) # # if not granted: # raise AccessDeniedException('Session not authorized by PolicyKit') # except AccessDeniedException: # raise # except dbus.DBusException, ex: # raise AccessDeniedException(ex.message) youker-assistant-1.0.1/qtsingleapplication/src/qtlockedfile.h000644 001750 001750 00000006307 12312451003 025025 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Solutions component. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QTLOCKEDFILE_H #define QTLOCKEDFILE_H #include #ifdef Q_OS_WIN #include #endif #if defined(Q_OS_WIN) # if !defined(QT_QTLOCKEDFILE_EXPORT) && !defined(QT_QTLOCKEDFILE_IMPORT) # define QT_QTLOCKEDFILE_EXPORT # elif defined(QT_QTLOCKEDFILE_IMPORT) # if defined(QT_QTLOCKEDFILE_EXPORT) # undef QT_QTLOCKEDFILE_EXPORT # endif # define QT_QTLOCKEDFILE_EXPORT __declspec(dllimport) # elif defined(QT_QTLOCKEDFILE_EXPORT) # undef QT_QTLOCKEDFILE_EXPORT # define QT_QTLOCKEDFILE_EXPORT __declspec(dllexport) # endif #else # define QT_QTLOCKEDFILE_EXPORT #endif namespace QtLP_Private { class QT_QTLOCKEDFILE_EXPORT QtLockedFile : public QFile { public: enum LockMode { NoLock = 0, ReadLock, WriteLock }; QtLockedFile(); QtLockedFile(const QString &name); ~QtLockedFile(); bool open(OpenMode mode); bool lock(LockMode mode, bool block = true); bool unlock(); bool isLocked() const; LockMode lockMode() const; private: #ifdef Q_OS_WIN Qt::HANDLE wmutex; Qt::HANDLE rmutex; QVector rmutexes; QString mutexname; Qt::HANDLE getMutexHandle(int idx, bool doCreate); bool waitMutex(Qt::HANDLE mutex, bool doBlock); #endif LockMode m_lock_mode; }; } #endif youker-assistant-1.0.1/qml/func/common/Tabs.qml000644 001750 001750 00000007162 12312451003 021765 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: tabWidget default property alias content: stack.children //将tab页集合设置一个默认属性 property int current: 0 onCurrentChanged: setOpacities() Component.onCompleted: setOpacities() function setOpacities() { for(var i = 0; i < content.length; ++i) { content[i].opacity = (i == current ? 1 : 0);//将当前的tab设置为非透明,其余透明 } } Row { //此组件为tab选项 id: header anchors{ left:parent.left leftMargin: 5 } Repeater { model: content.length delegate: Rectangle { id: mytab // width: 165//165每个tab标题的总宽度 width: 140//140每个tab标题的总宽度 height: 36 color:"transparent" Rectangle{ anchors{ bottom: parent.bottom horizontalCenter: parent.horizontalCenter } // width: 160//160每个tab标题的宽度,其中:每个tab标题的总宽度-每个tab标题的宽度 = 165 - 160 = 5,即为tab之间的space width: 135//135每个tab标题的宽度,其中:每个tab标题的总宽度-每个tab标题的宽度 = 140 - 130 = 5,即为tab之间的space height: 30 border.color: "#abc2c2" Image { anchors.fill: parent anchors.leftMargin: 0.5 anchors.rightMargin: 0.5 source: "../../img/icons/tab.png" } Rectangle { width: mytab.width//parent.width height: 1 anchors.bottom: parent.bottom color: "#abc2c2" } BorderImage { //tab选项图片 anchors { fill: parent; leftMargin: 0.5; topMargin: 0; rightMargin: 0.5} source: tabWidget.current == index? "../../img/icons/tab-active.png" : "" } Text { horizontalAlignment: "AlignHCenter"; verticalAlignment: "AlignVCenter" anchors.fill: parent text: content[index].title font.pointSize: 10 elide: Text.ElideRight font.bold: tabWidget.current == index } MouseArea { anchors.fill: parent onClicked: tabWidget.current = index //存储当前选中tab页 } } } } } Item { //tab页 id: stack width: tabWidget.width anchors.top: header.bottom anchors.bottom: tabWidget.bottom } } youker-assistant-1.0.1/backends/youker-assistant-daemon/src/sysinfo/000755 001750 001750 00000000000 12312451003 026160 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qtsingleapplication/src/qtlocalpeer.cpp000644 001750 001750 00000015041 12312451003 025220 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Solutions component. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qtlocalpeer.h" #include #include #if defined(Q_OS_WIN) #include #include typedef BOOL(WINAPI*PProcessIdToSessionId)(DWORD,DWORD*); static PProcessIdToSessionId pProcessIdToSessionId = 0; #endif #if defined(Q_OS_UNIX) #include #include #include #endif namespace QtLP_Private { #include "qtlockedfile.cpp" #if defined(Q_OS_WIN) #include "qtlockedfile_win.cpp" #else #include "qtlockedfile_unix.cpp" #endif } const char* QtLocalPeer::ack = "ack"; QtLocalPeer::QtLocalPeer(QObject* parent, const QString &appId) : QObject(parent), id(appId) { QString prefix = id; if (id.isEmpty()) { id = QCoreApplication::applicationFilePath(); #if defined(Q_OS_WIN) id = id.toLower(); #endif prefix = id.section(QLatin1Char('/'), -1); } prefix.remove(QRegExp("[^a-zA-Z]")); prefix.truncate(6); QByteArray idc = id.toUtf8(); quint16 idNum = qChecksum(idc.constData(), idc.size()); socketName = QLatin1String("qtsingleapp-") + prefix + QLatin1Char('-') + QString::number(idNum, 16); #if defined(Q_OS_WIN) if (!pProcessIdToSessionId) { QLibrary lib("kernel32"); pProcessIdToSessionId = (PProcessIdToSessionId)lib.resolve("ProcessIdToSessionId"); } if (pProcessIdToSessionId) { DWORD sessionId = 0; pProcessIdToSessionId(GetCurrentProcessId(), &sessionId); socketName += QLatin1Char('-') + QString::number(sessionId, 16); } #else socketName += QLatin1Char('-') + QString::number(::getuid(), 16); #endif server = new QLocalServer(this); QString lockName = QDir(QDir::tempPath()).absolutePath() + QLatin1Char('/') + socketName + QLatin1String("-lockfile"); lockFile.setFileName(lockName); lockFile.open(QIODevice::ReadWrite); } bool QtLocalPeer::isClient() { if (lockFile.isLocked()) return false; if (!lockFile.lock(QtLP_Private::QtLockedFile::WriteLock, false)) return true; bool res = server->listen(socketName); #if defined(Q_OS_UNIX) && (QT_VERSION >= QT_VERSION_CHECK(4,5,0)) // ### Workaround if (!res && server->serverError() == QAbstractSocket::AddressInUseError) { QFile::remove(QDir::cleanPath(QDir::tempPath())+QLatin1Char('/')+socketName); res = server->listen(socketName); } #endif if (!res) qWarning("QtSingleCoreApplication: listen on local socket failed, %s", qPrintable(server->errorString())); QObject::connect(server, SIGNAL(newConnection()), SLOT(receiveConnection())); return false; } bool QtLocalPeer::sendMessage(const QString &message, int timeout) { if (!isClient()) return false; QLocalSocket socket; bool connOk = false; for(int i = 0; i < 2; i++) { // Try twice, in case the other instance is just starting up socket.connectToServer(socketName); connOk = socket.waitForConnected(timeout/2); if (connOk || i) break; int ms = 250; #if defined(Q_OS_WIN) Sleep(DWORD(ms)); #else struct timespec ts = { ms / 1000, (ms % 1000) * 1000 * 1000 }; nanosleep(&ts, NULL); #endif } if (!connOk) return false; QByteArray uMsg(message.toUtf8()); QDataStream ds(&socket); ds.writeBytes(uMsg.constData(), uMsg.size()); bool res = socket.waitForBytesWritten(timeout); if (res) { res &= socket.waitForReadyRead(timeout); // wait for ack if (res) res &= (socket.read(qstrlen(ack)) == ack); } return res; } void QtLocalPeer::receiveConnection() { QLocalSocket* socket = server->nextPendingConnection(); if (!socket) return; while (socket->bytesAvailable() < (int)sizeof(quint32)) socket->waitForReadyRead(); QDataStream ds(socket); QByteArray uMsg; quint32 remaining; ds >> remaining; uMsg.resize(remaining); int got = 0; char* uMsgBuf = uMsg.data(); do { got = ds.readRawData(uMsgBuf, remaining); remaining -= got; uMsgBuf += got; } while (remaining && got >= 0 && socket->waitForReadyRead(2000)); if (got < 0) { qWarning("QtLocalPeer: Message reception failed %s", socket->errorString().toLatin1().constData()); delete socket; return; } QString message(QString::fromUtf8(uMsg)); socket->write(ack, qstrlen(ack)); socket->waitForBytesWritten(1000); socket->waitForDisconnected(1000); // make sure client reads ack delete socket; emit messageReceived(message); //### (might take a long time to return) } youker-assistant-1.0.1/man/000755 001750 001750 00000000000 12312451003 016112 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/icons/others.png000644 001750 001750 00000004302 12312451003 022030 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<dIDATxڼWylWGu7vHJW))P @%D(? 8RU\"?JPBZZӒ@$P9g'{fwݙ{AJFz{3322 Ѩxp#V5܏? Ϯo=uw[۹0>dj!Oy{_z \VC!906 ->㒢ׯ\Q"C=,4oZF'RE2B ѓDSQO'Tk0 #8P"zEE ZV S_)VL%P-TH%Q͗y[U;{bkv=XrXZ,"L@$aAdxj&+Jh繘 Η&%ؑN]̃9{!H^`upH eaȘ@"⨕ .YWY9wUz_ {m %!b̏CJ"ɘ+Ld $:YDG i@#Vu(xdhpA-O)2JU2^E\1 <sc(f4Eb5^dBp2pG<+S0}xh~+ ';䉮4b=J+-04nE2'smGJQoݎGw0^VϾWh HfENhpQ~J5ch#%F= ʌN G,B"]Z]⵹y&5A֑)Ji!E+T* p9|ox }xl! yKuA~:Y QO> FЌM|J g4MLNNK؟Bب_>B75 &mH)kK×3cػF.gζ$ H0(Z }c0s+++rB3w Hpr1F/ӗA'OblCU t.zcʂL* m ݃c13t982^d(ܧ_^̘Пq v leN tk4KMiJd^Ɲoلpz MM11W,ת3% mp ;lh~fęsSMr8_Wj gC gصdBЅ0 cFo\c59ё[Tu񟛥b~dn?a,.ȃ-¡O.EPVORfcҦZ-8U{GH%=~t +)ρ5ma,j,| K1(" #i? 'QH$(.eN筵C6BJY9bv"䳳!G.!6~S|]{!9-ݫc}(꺀aقI2w" H$̕"psm$V>3K p1yV 5M˜ cEX[FWe2y&#Ί+ҚFs,,:ir&Ř!t-5@B$ɫXÄ+3i˾Unr-P)eS3/c<{`j.eN9-@x$NAz29P^D6#oIh><[vG&8 òjbP%Xa8L+5 ,͸ JE|s>|uFb0[0n޾8|ȸjtlwI'Xl*"v[;,^1TzYXD2 AZ+xl7ݚQJQ|,2 U_5/+$\%xhȹs8otC>L;*v$d\é^:9TnW4v8J±}lHE=xNy:u4!,ZK !f!s2'CO4ŝ.`2aɇCT#&}05mh-6zÆfc6EjBZ_xu nY tQM TeIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/OCZ.jpg000644 001750 001750 00000010642 12312451003 023440 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !qAQa"2BR3ӔUSs4D5 !1AQ"qBa2R$VbrC4Tt& ?ǓJ,qS_e!Ls uIdA5]H&^<ԥKuCe9u$TTPd.QLw*jتiW&B j=T"M|R yyJ:$ $r)FIK1 4N]=ԣ֙IT7Uү*NM}1$]%)ztE z(#PRtI/IxR WX Z l=pA&Ψ-Ah8DmrF[@;6#\k:ˀ'Ol $/T7Uү*p^fyy{0.'T'%̇F{2e;2Fv)\N% D#3O<5TO,Dfq  < 7992$.僜9'-n+D{ᥑ9:2c8#k!AUqKq-?0~ҨDŽ's"?;0Z8*W^*3s*,k174K`P;}d$b?L gX59M,_޴Vm*9Zy&$9nwq:iEQ&%#0 8pCu>tg6n~q^ xϬ R~V.E]婩bǧJ*ۊDejoL'}V%|ฝ' t\bV;cߦX]!8 I9#[:%FF{6?UmSDQ[VJr]_9kc/ޫ0"=P |,9X %ב?)s{/!ڇZ32]4n\}$k/%;>%vc3dtLƀD7$Zb JmpO䗯 }%}X}$|Xz]q~rr=}x,.KR eHT#0RYQI0׾ꮋP9h$!OK_2~DPԪ(c݇O ßo/ #8|ŋ&ɞ?A[n?x1iczSRrK8}JX.Uү*~:)''nHf%-]r`4_mDxߒRDS8,/m{mir}k-'vKCoUvѰ 0zql£Ǭl#8S qeݗmC'M;;|-~OnݝgN6W=yZ?u_3`\J8̹xe3O¾"( $msSorT xKmbNs[vwXڴ_+5b_!_#8H9xa۽SY,cn3K &P:^1s/I8ec>?F̑&ؚ=\3PT0] qch![ǹ TG6ܜp?Y ypH!zr pǑWSXfH/OC, KW34JDl#hnǗVV:]Pʎ4?Ti@ Ю'V JKKu[;~}?bI ]NеaZkjxS2 k 2*a,B1bYGb rNE8df?0GTD=5V~Vy,o fx z1t(?R7fQ|K6x,q=Zso2VDmKTf֬ fK8I&P! e7Xr3PD=$HnDCP ٯM`n4Fn6l=oQt}GUتiWjnm-@  cvH@tĜduIdA5]H&^YҢjnHW572$AbKBݲqh#5 盗_N4LKŢOh[4Z6֠?AXr `ikuI(Ų phioPꗉDF-_I2dm짷=݋DM5)KH}5MUi4ʁS_e!Ls uIdA5]H&^<ԥKuCe9u$TTPd.QLw*jتiW&B j=T"M|R yyJ:$ $r)FIK1 4N]=ԣ֙IT7youker-assistant-1.0.1/backends/youker-assistant-daemon/data/processmanager/processmemo000644 001750 001750 00000006731 12312451003 032107 0ustar00saucysaucy000000 000000 gnome-keyring-daemon:用户密码守护进程 gnome-session:gnome图形界面会话 ssh-agent:ssh远程登录代理 dbus-launch:dbus进程通信子程序 dbus-daemon:dbus进程通信守护进程 [fcitx]:小企鹅输入法[废弃] fcitx:小企鹅输入法 fcitx-dbus-watcher:小企鹅进程监通讯控 gnome-settings-daemon:gnome设置守护进程 pulseaudio:pulseaudio声音系统 gvfsd:GIO虚拟文件系统守护进程 gvfs:GIO虚拟文件系统 metacity:迷你GTK2窗口管理器 gnome-panel:gnome任务栏 syndaemon:输入时触摸板控制程序 gconfd:gconf守护进程 dconf-service:dconf的dbus服务 nautilus:文件系统管理器 polkit-gnome-authentication-agent:policykit用户权限代理 bluetooth-applet:蓝牙小程序支持 kuaipan4uk:金山快盘Ubuntu Kylin版 chinese-calendar:中国农历软件 Docky:漂亮的启动菜单 cairo-dock:cairo启动菜单 nm-applet:网络管理框架 indicator-printers-service:右上角指示器打印机服务 indicator-datetime-service:右上角指示器时间日期服务 indicator-session-service:右上角指示器用户会话服务 indicator-bluetooth-service:右上角指示器蓝牙服务 indicator-sound-service:右上角指示器声音服务 indicator-sync-service:右上角指示器同步服务 indicator-china-weather:右上角中国天气预报 indicator-messages-service:右上角消息提示服务 indicator-application-service:右上角应用程序服务 notify-osd:桌面通知驱动 gnome-screensaver:gnome屏幕保护程序 telepathy-indicator:指示器telepathy支持 mission-control-5:telepathy任务控制器 zeitgeist-datahub:zeitgeist的日志系统 zeitgeist-daemon:zeitgeist守护进程 cat:合并文件和打印输出程序 firefox:火狐浏览器 youker-assistant:优客助手 deja-dup-monitor:deja备份工具监控器 qtcreator:qtcreator开发平台 gnome-terminal:终端 bash:一种shell脚本解释器 gedit:记事本程序 python:蟒蛇开发语言程序 man:终端命令帮助手册 wps:金山wps文字 wpp:金山wps幻灯片 et:金山wps表格 chromium:开源chrome浏览器 chrome:闭源chrome浏览器 init --user:用户初始化进程 upstart-event-bridge:基于事件的启动系统进程 window-stack-bridge:平视显示器进程 bamfdaemon:窗口匹配库 hud-service:平视显示器服务 at-spi-bus-launcher:at-spi2-core系统进程 unity-panel-service:unity桌面 upstart-file-bridge:文件服务 upstart-dbus-bridge --daemon --system:systemdbus服务 upstart-dbus-bridge --daemon --session:sessiondbus服务 compiz:由OpenGL驱动的运行于X Window System上的混合窗口管理器 evolution-source-registry:Evolution注册表管理 evolution-calendar-factory:Evolution日程管理 gtk-window-decorator:GTK窗口装饰进程 zeitgeist-fts:记录用户的活动和事件的服务 QQ.exe:Wine版QQ通讯软件 wineserver:用来运行Windows程序的平台Wine services.exe:Windows服务进程 winedevice.exe MountMgr:Wine使用的Windows驱动程序 plugplay.exe:随插即用进程 explorer.exe:Wine使用的Windows资源管理器 TXPlatform.exe:WineQQ使用的腾讯即时通讯客户端相关程序,用于阻止同一个QQ号在同一台电脑上登陆2次和支持外部添加功能 unity-webapps-service:使用Unity桌面的Web应用程序集成服务 unity-webapps-context-daemon Launchpad:Launchpad平台 QQPetAgent.exe:QQ宠物的运行程序 QQExternal.exe:QQ弹出广告程序 rpcss.exe:Windows的RPC端口映射进程 gnome-pty-helper:gnome帮手 unity-scope-home:Unity Dash进程 unity-files-daemon:Unity文件守护进程 youker-assistant-1.0.1/qml/img/logo/Manufacturer/NOKIA.jpg000644 001750 001750 00000011370 12312451003 023645 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 q!Q2BA"$a# R%w!1AQa"Bq42R$TbrғD%5Eu&V ?M+$\ cxH&JR RA5PGH.RpI/ ɕ˯0&.(Ңrtʟ/?uLSz-&yP*HSA5RW"MGR >Au/I~ nL]y(0 )qF7$+@e(Tybбi4ʁW&B *j="M|R y}K?eCrer)EɆ)K1 4\`{)G2SޅI^T \ӫOԌbwCۈTxaΌ+n +o˪~x}Ҟw[iM[Ui#*1P8oiٮi\LA z,5M߂eNJ[=UۻܑJ<߷eBͬd]# 'FUH[a5RIn cCۭoKZO/|{Պ^{G~.LAl3YH>=bxv53~5P^[ ػ+vfuwX9J죐qZZZA~>JIjǤ+kP.Zk}<76NrS1ꨌ*H`mX_銪˕Q#EJ\M^n[m ;ƯO-r23?UL)%khxd(/{:nu,A.F$in81;K1ˤgI"@$5߀kTyCl$0$"gdUcK7$<[ׅ<^/ *~=GCp'ѝTdgL$)-kpY`cZLG[jޖ[F:IxvGp-!^E3i&.P{$U ⷻúMn&i]t͠9Tk#UI#x5mX  ɄBzJfP:̠Y'~HvZJg ;z AWoGסǻ^S-߆hvj̓s WA'GJ|ڏs+?>5iBշ 4a.%-m<:aP)54u9 +7W-Y_^n(w./9Tt%U>Y6\G?zY~ PmߛRra6KP4wWW>Z5+Oc'k/[Vp' +ߵY²uc;NN5X-wwSĽ,omV @0۟@pnYf/ EX&<+`?WW8|Vy,w;zT{̱d#UV4pǏemoȻs53d<猰쉾)'݁ENu6Mǀ)D<=Hwʚ{(i|Wf2r~Kƚa Ī%1m8KԱdivS3"Z<Īp#˒ `i$}cidJbX/p7th(Dw/JTk -0-'#dJB+!|,ȹ }r=:qJ3c&9}1Tݍ0M+c Bt)xSW3Kvkt^ ѵgqL}[H^ZOC1t&<ظp]Xyxбi4ʁZu J-W7&~irm7Xzg H S(LƜm(ļRrsͳ ƾ2I B@%<2] WN{ˁ) >>ll|RrXI![$~@+BJ̱a\ `\ԕxdvkǺ[+KWEyi+&0EMD06;D[`jӺڞ5X)qN?^ޝQeڛ5:'/KR2N$J "YسFo._yPExaOCޛ-8:dQ1gǘM@2Y;xes[FJp#Jo?7slƋ9s 5T:WSP% ,+ sm݋g{nc@`ɮYY=#'xb+ :]_PH71ZGq.$ AV[2FD,68rl1c҉+JQRB])U\(@7C~?x(d2E9(" i Nʯ(q W@>^~8бi4ʁW&B *j="M|R y}K?eCrer)EɆ)K1 4\`{)G2SޅI^T 5RMyTȤQk蠏]C(_9*+^aJ.L1H \QE;J<>^~꘦,ZM*Uɯ7kʤE e._/E}_e)GAPܙ\ Qra@RnH *(.W.QLT7youker-assistant-1.0.1/qtsingleapplication/src/QtSingleApplication000644 001750 001750 00000000041 12312451003 026030 0ustar00saucysaucy000000 000000 #include "qtsingleapplication.h" youker-assistant-1.0.1/qml/img/toolWidget/kernel.png000644 001750 001750 00000004741 12312451003 023021 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe< IDATxڼWocw%8N$N&iLi-ET y*Q HH"D//HH VފvTTL&L8%8r;dX::b-?s_9u-k?Ӳ2Uk?ɍow_My: ":bk[t2]ѵsCLl1.攫u\~ҍeg8=QGEj/n&Kh:lCkr_`ݞN`·::P_. eYQ__%L[Ԩ!?֨c~;u ԫX:_cy-9oN!-T. tx>ֱs+ {*Иs<P` |-Љ!,_ `;%'Rw\ Ɲ,NCb[b߅"NxWVZ@40DA,0cώ vøKtbHՃ, f9r W:0k:3th@Vq8:v!p(pa&aa:9j4TTt󊮅F}P?=Bvf,SA v*5E-tMW;C7`|w gZ0^''"L|p]0Z eĢ1F5 сEںIq[kxv bz_ilNܐKR94N)mgԷݶYyTa ss{s  XR%6d7g4ᛋ Z{p'%f`-yj3R(vIh:s'lP&l)0<jF S9 wi5@ۛyLX4h()7ێ(ݪif U\z[?`Yԓ.4O(yWDW' PzT+ܟp^׍|:.n1ͺu^/f`RG2j^Vk+a'թb`HV7I$t4MZN*b)qr*YcS ׋i%_W38N}cc eiD {Mr-b4Etz<iN^DBwO+o)JmW/)  b.HN5lԱ h,N. oL;ŒD+ΨM'syU\o`l%" ) x`"\VDpKN2(J* *jh`#d M ;|Em3AnՅz:tnp]Åg_c׿{XJc6ROH`Wy~}G; s0EO.W=4-߁Eu~a.XmMpT\Aj.fpi22N#ÁRO=(Kad"‹[:̭%x<8=>*r^'u83 Ѕn_z_xܑ .+yל:b 33ן^ |nr[9 s縟Es@=es Mlyݰ\t|M?JNRer\" V#D㥶>#M wx.>H;Y 9niZF._,LQMʵu>EiGcB] 8vZ"r؉>L^>/t{?O֩˳Z/[1]vuj;t; RM_݄m49}"a '+-u^<?6y^{ 2TjIENDB`youker-assistant-1.0.1/qml/func/info/AudioInfo.qml000644 001750 001750 00000032514 12312451003 022413 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup /*------------------最多支持四个声卡的显示------------------*/ Rectangle { id: home; width: parent.width; height: 475 color: "transparent" property int itemNum: 4//每个模块的子项个数 property int viewSpace: 10 property bool firstFlag: false property bool secondFlag: false property bool thirdFlag: false property bool fourthFlag: false ListModel {id: firstModel} ListModel {id: secondModel} ListModel {id: thirdModel} ListModel {id: fourthModel} function show_several_audio(num) { var audiomodel = systemdispatcher.getHWSingleInfo("MulProduct", "audiocard").split("<1_1>");//声卡型号: var vendorname = systemdispatcher.getHWSingleInfo("MulVendor", "audiocard").split("<1_1>");//制造商: var address = systemdispatcher.getHWSingleInfo("MulBusinfo", "audiocard").split("<1_1>");//总线地址: var drivers = systemdispatcher.getHWSingleInfo("MulDrive", "audiocard").split("<1_1>");//声卡驱动: //--------------first-------------- home.firstFlag = true; firstView.visible = true; firstModel.clear(); firstModel.append({"title": qsTr("Audio Model:"), "result": audiomodel[0]});//声卡型号: firstModel.append({"title": qsTr("Vendor:"), "result": vendorname[0]});//制造商: firstModel.append({"title": qsTr("Bus Address:"), "result": address[0]});//总线地址: firstModel.append({"title": qsTr("Audio Driver:"), "result": drivers[0]});//声卡驱动: splitbar1.visible = true; logo1.visible = true; logo1.source = InfoGroup.judgeName(vendorname[0].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorname[0].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //--------------second-------------- home.secondFlag = true; secondView.visible = true; secondModel.clear(); secondModel.append({"title": qsTr("Audio Model:"), "result": audiomodel[1]});//声卡型号: secondModel.append({"title": qsTr("Vendor:"), "result": vendorname[1]});//制造商: secondModel.append({"title": qsTr("Bus Address:"), "result": address[1]});//总线地址: secondModel.append({"title": qsTr("Audio Driver:"), "result": drivers[1]});//声卡驱动: splitbar2.visible = true; logo2.visible = true; logo2.source = InfoGroup.judgeName(vendorname[1].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorname[1].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); if(num == 2) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *2 + 40; } else if(num >= 3) { //--------------third-------------- home.thirdFlag = true; thirdView.visible = true; thirdModel.clear(); thirdModel.append({"title": qsTr("Audio Model:"), "result": audiomodel[2]});//声卡型号: thirdModel.append({"title": qsTr("Vendor:"), "result": vendorname[2]});//制造商: thirdModel.append({"title": qsTr("Bus Address:"), "result": address[2]});//总线地址: thirdModel.append({"title": qsTr("Audio Driver:"), "result": drivers[2]});//声卡驱动: splitbar3.visible = true; logo3.visible = true; logo3.source = InfoGroup.judgeName(vendorname[2].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorname[2].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); if(num == 3) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *3 + 60; } else if(num == 4) { home.fourthFlag = true; fourthView.visible = true; fourthModel.clear(); fourthModel.append({"title": qsTr("Audio Model:"), "result": audiomodel[3]});//声卡型号: fourthModel.append({"title": qsTr("Vendor:"), "result": vendorname[3]});//制造商: fourthModel.append({"title": qsTr("Bus Address:"), "result": address[3]});//总线地址: fourthModel.append({"title": qsTr("Audio Driver:"), "result": drivers[3]});//声卡驱动: splitbar4.visible = true; logo4.visible = true; logo4.source = InfoGroup.judgeName(vendorname[3].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorname[3].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) * + 80; } } } Component.onCompleted: { home.firstFlag = false; home.secondFlag = false; home.thirdFlag = false; home.fourthFlag = false; systemdispatcher.get_audiocard_info_qt();//获取详细信息 var num = systemdispatcher.getHWSingleInfo("MulNum", "audiocard"); if(num == 1) { home.firstFlag = true; firstView.visible = true; var vendorName = systemdispatcher.getHWSingleInfo("MulVendor", "audiocard"); firstModel.clear(); firstModel.append({"title": qsTr("Audio Model:"), "result": systemdispatcher.getHWSingleInfo("MulProduct", "audiocard")});//声卡型号: firstModel.append({"title": qsTr("Vendor:"), "result": vendorName});//制造商: firstModel.append({"title": qsTr("Bus Address:"), "result": systemdispatcher.getHWSingleInfo("MulBusinfo", "audiocard")});//总线地址: firstModel.append({"title": qsTr("Audio Driver:"), "result": systemdispatcher.getHWSingleInfo("MulDrive", "audiocard")});//声卡驱动: splitbar1.visible = true; logo1.visible = true; logo1.source = InfoGroup.judgeName(vendorName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = home.itemNum*20 + (home.itemNum - 1)*home.viewSpace + home.viewSpace*2 + 20; } else if(num >= 2){ home.show_several_audio(num); } } Component { id: audioDelegate Row { spacing: 10 Common.Label { text: title font.pixelSize: 14 color: "#7a7a7a" width: 150 // height: 20 } Text { id: slotText text: result width: 450 wrapMode: Text.WordWrap font.pixelSize: 14 color: "#7a7a7a" // height: 20 } } } Row { id: titleRow anchors { top: parent.top topMargin: 40 left: parent.left leftMargin: 30 } Common.Label { id: titlebar text: qsTr("Audio Info")//音频信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - titlebar.width - 30 * 2 } } Common.ScrollArea { frame:false anchors.left: parent.left anchors.leftMargin: 20 anchors.top: titleRow.bottom anchors.topMargin: 20 height: 390 width: 680 - 4 Item { id: listItem width: parent.width height: 0 Column { spacing: 10 anchors { left: parent.left leftMargin: 30 } Item { width: parent.width height: home.firstFlag ? (home.itemNum*20 + (home.itemNum - 1)*home.viewSpace) + 20 : 0 ListView { id: firstView anchors.fill: parent model: firstModel delegate: audioDelegate visible: false spacing: home.viewSpace } Image { id: logo1 visible: false opacity: 0.5 source: "" anchors { top: parent.top topMargin: 30 right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar1 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.secondFlag ? (home.itemNum*20 + (home.itemNum - 1)*home.viewSpace) + 20 : 0 ListView { id: secondView anchors.fill: parent model: secondModel delegate: audioDelegate visible: false spacing: home.viewSpace } Image { id: logo2 visible: false opacity: 0.5 source: "" anchors { top: parent.top topMargin: 30 right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar2 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.thirdFlag ? (home.itemNum*20 + (home.itemNum - 1)*home.viewSpace) + 20 : 0 ListView { id: thirdView anchors.fill: parent model: thirdModel delegate: audioDelegate visible: false spacing: home.viewSpace } Image { id: logo3 visible: false opacity: 0.5 source: "" anchors { top: parent.top topMargin: 30 right: parent.right rightMargin: 30 } } } Common.Separator { id: splitbar3 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.fourthFlag ? (home.itemNum*20 + (home.itemNum - 1)*home.viewSpace) + 20 : 0 ListView { id: fourthView anchors.fill: parent model: fourthModel delegate: audioDelegate visible: false spacing: home.viewSpace } Image { id: logo4 visible: false opacity: 0.5 source: "" anchors { top: parent.top topMargin: 30 right: parent.right rightMargin: 30 } } } Common.Separator { id: splitbar4 width: 680 - 4 - 30*2 visible: false } } }//Item }//ScrollArea } youker-assistant-1.0.1/src/translation/youker-assistant_zh_CN.ts000644 001750 001750 00000632423 12312451003 025454 0ustar00saucysaucy000000 000000 AboutDialog About 关于本软件 Youker Assistant 优客助手 V1.0.1 V1.0.1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> Youker Assistant is a powerful system supporting software which is developed by Ubuntu Kylin team. Mainly for the naive user, it can help users manage the system. At present, It provides system junk scanning and cleaning, viewing the system hardware and software information , system customization, task manager, monitoring ball, and some other functions. </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> The software is still under development. Please visit www.ubuntukylin.com for more information. Welcome everyone to join with us. youker-assistant Homepage: https://launchpad.net/youker-assistant.</span></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> 优客助手是由Ubuntu Kylin团队开发的一款功能强大的系统辅助软件。主要面向初级用户,能够帮助用户对系统进行管理。目前已具备了系统垃圾扫描与清理、系统软硬件信息查看、系统全方位定制、任务管理器以及监控球等功能。 </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> 各项功能还在不断完善,更多功能也将陆续开发,敬请关注 Ubuntu Kylin 官网 www.ubuntukylin.com 了解软件的最新进展并反馈问题,欢迎广大优客一起参与。优客助手主页:https://launchpad.net/youker-assistant 。</span></p></body></html> Contributor 贡献者 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Maintainer<span style=" font-family:'Droid Sans Fallback';">:</span></p> <p style=" margin-top:11px; margin-bottom:11px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ubuntu Kylin Team &lt;ubuntukylin-members@list.launchpad.net&gt;</p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">维护者<span style=" font-family:'Droid Sans Fallback';">:</span></p> <p style=" margin-top:11px; margin-bottom:11px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ubuntu Kylin Team &lt;ubuntukylin-members@list.launchpad.net&gt;</p></body></html> <a href=https://launchpad.net/youker-assistant>home page</a> <a href=https://launchpad.net/youker-assistant>项目主页</a> Close 关闭 AlertDialog Form 对话框 AudioInfo Vendor: 制造商: Bus Address: 总线地址: Audio Driver: 声卡驱动: Audio Model: 声卡型号: Audio Info 音频信息 BoardInfo Motherboard Basics Info 主板基本信息 Motherboard Model: 主板型号: Motherboard Vendor: 主板产商: Serial Number: 序列号: BIOS Info BIOS信息 BIOS Vendor: BIOS产商: BIOS Version: BIOS版本: BIOS Manufacturer: BIOS产商: Bios Version: BIOS版本: Release Date: 发布日期: BootAnimation Boot animation settings (only supports the PNG image format, does not support Chinese naming pictures!) 开机动画设置 (目前仅支持 png 图片格式,不支持以中文命名的图片!) Boot animation settings (only supports the PNG image format !) 开机动画设置 (目前仅支持 png 图片格式!) Boot animation settings 开机动画设置 Click the ' Custom Image ' button to select the picture you want to add, select the picture you want to set and click ' OK ' button to complete the setup. 单击"自定义图片"按钮选择需要添加的图片,选中列表中要设置的图片名称,单击"确定"按钮完成设置。 Completed! 已完成! Custom picture 自定义图片 Optional BootAnimation 可选的开机动画 BrowserModel Deep cleaning up the browser cache 深度清理浏览器缓存 Deep cleaning up the browser cache, to save disk space 深度清理浏览器缓存,节省磁盘空间 Cleanup Firefox Cache 清理Firefox缓存 Cleanup Chromium Cache 清理Chromium缓存 Tips: 友情提示: The scan results are empty, no need to clean up ! 扫描内容为空,无需清理! Scan completed! 扫描完成! Begin cleanup 开始清理 Cleanup abnormal! 清理出现异常! Cleanup interrupted! 清理中断! Cleared! 清理完毕! Back 返回 Start scanning 开始扫描 Sorry, You did not choose the content to be scanned, please confirm! 对不起,您没有选择需要扫描的内容,请确认! Sorry, You did not choose the content to be cleaned up, please confirm! 对不起,您没有选择需要清理的内容,请确认! CDROMInfo CD-ROM Model: 光驱型号: Vendor: 制造商: Device Name: 设备名称: Firmware Version: 固件版本: Serial Number: 序列号: CD-ROM Info 光驱信息 CacheDelegate Items ] 个项目 ] No content 无内容 CacheModel Deep cleaning up the system cache 深度清理系统缓存 Deep cleaning up the system cache, to save disk space! 深度清理系统缓存,节省磁盘空间 Deep cleaning up the system cache, to save disk space 深度清理系统缓存,节省磁盘空间 Cleanup Package Cache 清理包缓存 Apt Cache Path: /var/cache/apt/archives Apt缓存路径:/var/cache/apt/archives Cleanup Software Center Cache 清理软件中心缓存 Software Center Cache Path: 软件中心缓存路径: Tips: 友情提示: The scan results is empty, no need to clean up! 扫描内容为空,无需清理! Cleanup Thumbnails Cache 清理缩略图缓存 The scan results are empty, no need to clean up ! 扫描内容为空,无需清理! Scan completed! 扫描完成! Begin cleanup 开始清理 Cleanup abnormal! 清理出现异常! Cleanup interrupted! 清理中断! Cleared! 清理完毕! Package cache cleanup 包缓存清理 Software Center buffer cleaning 软件中心缓存清理 Back 返回 Start scanning 开始扫描 Sorry, You did not choose the content to be scanned, please confirm! 对不起,您没有选择需要扫描的内容,请确认! Sorry, You did not choose the content to be cleaned up, please confirm! 对不起,您没有选择需要清理的内容,请确认! ChangeCityDialog Dialog 对话框 <html><head/><body><p>Change Cities</p></body></html> <html><head/><body><p>更换城市</p></body></html> <html><head/><body><p>City List:</p></body></html> <html><head/><body><p>城市列表:</p></body></html> Cancel 取消 OK 确定 <html><head/><body><p><span style=" font-size:8pt;">Clicking the &quot;configure&quot; button on the main interface, setting the city name.</span></p></body></html> <html><head/><body><p><span style=" font-size:8pt;">默认配置三个城市,点击“首页”上的“配置”按钮添加城市名称。</span></p></body></html> <html><head/><body><p><span style=" font-size:8pt;">Three cities to be set by default, Clicking the &quot;configure&quot; button on the main interface, setting the city name.</span></p></body></html> <html><head/><body><p><span style=" font-size:8pt;">默认配置三个城市,点击“首页”上的“配置”按钮添加城市名称。</span></p></body></html> Warning: 警告: Cannot find the city! 没有找到对应城市! The configuration file is not found! 没有找到配置文件! ComputerInfo Minutes 分钟 Hours 小时 Computer Basic Info 电脑基本信息 Vendor: 制造商: Model: 电脑型号: Version: 电脑版本: Serial Number: 序列号: Hostname: 主机名: Running Time: 持续运行时间: OS Types: 操作系统类型: OS Version: 操作系统版本: Kernel Bit: 系统位数: Kernel Version: 内核版本: Kernel Arch: 内核架构: CookiesDelegate Items ] 个项目 ] Back 返回 Rescan 重新扫描 CookiesItem Cleanup failed! 清理失败! Cleanup interrupted! 清理中断! Cleanup successfully! 清理成功! Records 条记录 Delete 删除 CookiesModel Cleanup browser Cookies information, to protect your privacy 清理浏览器 Cookies 信息,保护个人隐私 Clean up user login information, support Firefox and Chromium browser 清理用户登陆网站信息, 支持 Firefox 和 Chromium 浏览器 Start scanning 开始扫描 Tips: 友情提示: Firefox is not installed! 没有安装 Firefox! Chromium is not installed! 没有安装 Chromium! Cleanup the Cookies saving in Firefox 清理 Firefox 浏览器保存的 Cookies The scan results are empty, no need to clean up ! 扫描内容为空,无需清理! The scan results is empty, no need to clean up! 扫描内容为空,无需清理! Scan completed! 扫描完成! All cleanup 全部清理 Cleanup the Cookies saving in Chromium 清理 Chromium 浏览器保存的 Cookies Cleanup interrupted! 清理中断! Cleanup abnormal! 清理出现异常! Clean up automatically saved logon information by Firefox browser(Cookies) 清理 Firefox 浏览器自动保存的登录信息 (Cookies) Cleared 清理完毕 CpuInfo cores thread 线程 CPU Info 处理器信息 CPU: 处理器: Vendor: 制造商: Serial Number: 序列号: Socket/Slot: 插座/插槽: Maximum Frequency: 最大主频: Current Frequency: 当前主频: FSB: 前端总线: Core Number: 核心数目: L1 Cache: 一级缓存: L2 Cache: 二级缓存: DefaultFont Default font settings 字体设置 According to personal preferences to set the system default font, click the 'Restore' button, can be restored to the state before the font settings. 根据个人喜好设置系统默认字体,单击"恢复默认"按钮,可以将对应的字体恢复到设置前状态。 Completed 已完成 Font Settings 字体设置 Default Font: 默认字体: Style Settings 风格设置 Hinting: 平滑: Antialiasing: 反锯齿: Change fonts 更换字体 Restore 恢复默认 Document font: 文档字体: Titlebar font: 标题栏字体: Tips: 友情提示: Has been restored to the default font! 已经恢复默认字体! Desktop Font: 桌面字体: Your system's desktop font is the default font! 您系统的桌面字体已经为默认字体! Monospace Font: 等宽字体: Tips: 友情提示: Your system's monospace font is the default font! 您系统的等宽字体已经为默认字体! Zoom Mode 缩放设置 Global Font Scaling: 全局字体缩放: OK 确定 Your system's global font scaling is the default mode! 您系统的全局字体缩放已经为默认设置! DesktopIcon Desktop Icons 桌面图标设置 Set the desktop icon theme and the visibility of desktop icons 设置桌面图标主题和桌面图标的可见性。 Set the desktop icon theme and the visibility of desktop icons. 设置桌面图标主题和桌面图标的可见性。 [ Current icon theme is: [ 当前图标主题是: Completed 已完成 Icon theme settings 图标主题设置 Icon theme 图标主题 OK 确定 Icon theme: 图标主题: Restore 恢复默认 Desktop icon display control 桌面图标显示控制 Show Desktop Icons: 显示桌面图标: Home Folder: 主文件夹: Network: 网络: Trash : 回收站: Mounted Volumes: 挂载卷标: Tips: 友情提示: Desktop icon has been restored to the default configuration! 桌面图标已经为默认配置! DesktopInfo Desktop Info 桌面信息 Desktop Environment: 桌面环境: Distribution: 发行版: Language: 语言: User: 当前用户: Home Folder: 用户主目录: DocumentFont Document font settings 文档字体设置 According to personal preferences to set document fonts, click the 'Restore' button, can be restored to the state before the font settings. 根据个人喜好设置文档字体,单击"恢复默认"按钮,可以将对应的字体恢复到设置前状态。 Completed! 已完成! Document font: 文档字体: Change fonts 更换字体 Restore 恢复默认 Tips: 友情提示: Your system's document font is the default font! 您系统的文档字体已经为默认字体! DriveInfo Host bridge: 主桥: VGA Model: VGA兼容控制器: USB Model: USB控制器: Communication Model: 通信控制器: Ethernet Model: 以太网控制器: Audio Model: 声卡型号: PCI bridge: PCI桥: ISA bridge: ISA桥: SATA Model: SATA控制器: SMBus: 系统管理总线: System peripheral: 系统外围: Driver in use: 使用的驱动: Device Driver Info 设备驱动信息 driver in use: 使用的驱动: existing drivers: 可选的驱动: IDE interface: IDE 接口: SP controller: 信号处理控制器: Network controller: 网络控制器: Drive Info 驱动信息 FcitxBar Cancel 取消 Previous 上一步 Next 下一步 FcitxConfigtool Input Method Configuration 输入法配置 '<<' '>>' button to add/remove input method, '▲' '▼' buttons to adjust the input method priority, click 'Next' to continue Settings, click 'Cancel' to exit the setup wizard. '<<'和'>>'按钮添加/删除输入法,'▲'和'▼'按钮调整输入法优先级,点击"下一步"继续设置,点击"取消"退出设置向导。 '<<' '>>' button to add/remove input method, Up Arrow and Down Arrow keys to adjust the input method priority, click 'Next' to continue Settings, click 'Cancel' to exit the setup wizard. '<<'和'>>'按钮添加/删除输入法,'▲'和'▼'按钮调整输入法优先级,点击"下一步"继续设置,点击"取消"退出设置向导。 Current input method list 当前输入法列表 Available input method list 可用输入法列表 Switch input method 输入法切换 FcitxConfigtoolFont Personalized Configuration 个性化配置 Global configuration according to personal habits, click 'Next' to continue Settings, click 'Cancel' to exit the setup wizard. 根据个人习惯进行全局配置,点击"下一步"继续设置,点击"取消"退出设置向导。 Display settings 显示设置 Candidate list: 候选词列表: Horizontal display 横向显示 Vertical display 竖向显示 Candidate Word Number: 候选词个数: Hotkey 快捷键 Trigger Input Method: 切换输入法: Please press the combination keys 请按下要设置的组合键 Prev Page: 上一页: Next Page: 下一页: FcitxConfigtoolKey Appearance Configuration 外观配置 According to personal preferences to set input method skin, click 'Previous' to return to the personalized configuration. 可以设置自己喜欢的皮肤,点击"应用"完成设置, 点击"上一步"返回个性化配置。 Completed 已完成 Skin settings 皮肤设置 Using skin 使用皮肤 Change fonts 更换字体 Size 大小 Font settings 字体设置 FcitxThreeBar Home 返回主页 Cancel 取消 Previous 上一步 Apply 应用 FcitxWarnDialog Dialog 对话框 Cancel 取消 OK <html><head/><body><p>Tips:</p></body></html> <html><head/><body><p>温馨提示:</p></body></html> Are you sure you want to exit the wizard? 您确定退出输入法配置向导? Are you sure you want to exit the wizard ? 您确定退出输入法配置向导? FileManager File Manager 文件管理器 Manage the Nautilus file manager. 管理Nautilus文件管理器 File manage and control 文件管理控制 Use the location entry instead of the pathbar: 路径输入框取代路径栏: Restore 恢复默认 Automatically mount media: 自动挂载媒体: Automatically open a folder: 自动打开文件夹: Prompt or autorun/autostart programs: 提示自动运行的程序: Thumbnail icon size (pixels): 缩略图图标尺寸(像素): Thumbnail cache time (days): 缩略图缓存时间(天数): Maximum thumbnail cache size (MB): 最大缩略图缓存尺寸(MB): FileModel Quickly find large files 快速找出大文件 Range:1M-20480M; 1GB = 1024MB. 大小范围为1M-20480M;1GB = 1024MB Range:1M-20480M; 1GB = 1024MB 大小范围为1M-20480M;1GB = 1024MB Cleanup path is: 清理路径为: cleaning up the maximum files in user-specified directory, to save disk space. 清理用户指定目录下的最大文件,节省磁盘空间。 Cleared! 清理完毕! Please input the file size (M) : 请输入文件大小 (M): Browse... 浏览... Begin cleanup 开始清理 Tips: 友情提示: Sorry, You haven't set the file size or the value is 0, please input the file sizes ! 对不起,您没有设置扫描文件的大小或者设置值为 0,请重新输入文件大小! Sorry, You did not choose the scan path, please click the 'Browse' button to continue! 对不起,您没有选择扫描路径,请点击"浏览"按钮选择! The scan results are empty, no need to clean up ! 扫描内容为空,无需清理! The scan results is empty, no need to clean up! 扫描内容为空,无需清理! Sorry, You did not choose the content to be cleaned up, please confirm! 对不起,您没有选择需要清理的项,请确认! Unfinished 未完成 Exception occurred 出现异常 Completed 已完成 HDInfo HDD Model: 硬盘型号: HDD Vendor: 硬盘厂商: HDD Capacity: 硬盘容量: Device Name: 设备名称: Firmware Version: 固件版本: Serial Number: 序列号: HDD Info 硬盘信息 KFontDialog Dialog 对话框 Font 字体 Style 风格 Size 大小 View 视图 Cancel 取消 OK 确定 <html><head/><body><p><span style=" font-weight:600;">Current Font:</span></p></body></html> <html><head/><body><p><span style=" font-weight:600;">当前字体:</span></p></body></html> <html><head/><body><p><br/></p></body></html> <html><head/><body><p><br/></p></body></html> Change Fonts 更换字体 Tips 提示 You haven't change the font, please choose the font! 您还没有更换字体,请选择字体进行更换! LauncherTheme Launcher settings 启动器设置 Setting the Launcher display mode, Icon size 设置启动器的显示模式、图标尺寸。 Setting the Launcher display mode, Icon size. 设置启动器的显示模式、图标尺寸。 Completed 已完成 Launcher hide mode: 启动器自动隐藏: Restore 恢复默认 Launcher icon size: 启动器图标尺寸: OK 确定 Display desktop icon: 显示桌面图标: Tips: 友情提示: Launcher has been restored to the default configuration! Launcher已经恢复默认配置! LeftPage Quick cleanup 一键清理 Cleaning up... 正在清理... Cleared! 一键清理完毕! Quick scan 一键扫描 (totally cleared (共清理掉 garbage) 垃圾) historical records) 条历史记录) Cookies) 条Cookies) Cleaning up history trace of Firefox... 正在清理Firefox的历史痕迹... Firefox history trace had been cleared! Firefox的历史痕迹已清理完毕! Cleaning up history trace of Chromium... 正在清理Chromium的历史痕迹... Chromium history trace had been cleared! Chromium的历史痕迹已清理完毕! Cleaning up Cookies of Firefox... 正在清理Firefox的Cookies... Firefox Cookies had been cleared! Firefox的Cookies已清理完毕! Cleaning up Cookies of Chromium... 正在清理Chromium的Cookies... Chromium Cookies had been cleared! Chromium的Cookies已清理完毕! Apt cache had been cleared! Apt缓存已清理完毕! Cleaning up Apt cache: 正在清理Apt缓存: Software Center cache had been cleared! 软件中心缓存已清理完毕! Cleaning up Software Center cache: 正在清理软件中心缓存: Quick clean up system junks, saving disk space and improving the system efficiency ! 一键清理系统垃圾,帮您节省磁盘空间,让系统运行更加有效率! (Scan to: (正在扫描: Cleanup Garbage 清理系统中的垃圾 Clean up the Cookies, including surfing and shopping records 清理系统中的 Cookies,包含上网、购物、游戏等记录 Quick clean up system junk, saving disk space and improving the system efficiency! 一键清理系统垃圾,帮您节省磁盘空间,让系统运行更加有效率! To help you quick clean up the Cookies, garbage, traces and plug-ins in your system 一键帮您清理系统中的 Cookies、垃圾、痕迹和插件 Scan to: 扫描到: Quick Cleanup 一键清理项目 Cleanup garbage 清理系统中的垃圾 Clean up system junk files, free disk space 清理系统中的垃圾文件,释放磁盘空间 Unfinished 未完成 Completed 已完成 Exception occurred 出现异常 Delete History 清理历史记录 Clean up the historical records, to protect your privacy 清理上网时留下的历史记录,保护您的个人隐私 Cleanup Cookies 清理 Cookies Clean up the Cookies, including surfing, shopping and online game records 清理电脑中的 Cookies,包含上网、购物、游戏等记录 LocationDialog Dialog 对话框 <html><head/><body><p>Please enter a city name or pinyin to search</p></body></html> <html><head/><body><p>请输入城市中文名或者拼音进行查找</p></body></html> OK 确定 Cancel 取消 Search 查找 Warning: 警告: Please input city name and click 'find' button to find! 请输入合适的城市名字后点击“查找”按钮进行查找! Please input city name and click 'search' button to find! 请输入合适的城市名字后点击“查找”按钮进行查找! LoginDialog Dialog 对话框 Cancel 取消 Login 登录 <html><head/><body><p><br/></p></body></html> <html><head/><body><p><br/></p></body></html> Remember pwd 记住密码 <html><head/><body><p>Register</p></body></html> <html><head/><body><p>注册</p></body></html> Register 注册帐号 <html><head/><body><p>Passwd</p></body></html> <html><head/><body><p>密码</p></body></html> Forum account password 论坛帐号的密码 <html><head/><body><p>User</p></body></html> <html><head/><body><p>用户名</p></body></html> Forum account username 论坛帐号的用户名 <html><head/><body><p>Ubuntu Kylin forum account login </p></body></html> <html><head/><body><p>Ubuntu Kylin 论坛帐号登录 </p></body></html> Please input your username! 请输入您的用户名! Please input your password! 请输入您的密码! MemoryInfo Slot Number: 插槽号: Memory Model: 内存型号: Vendor: 制造商: Memory Size: 内存大小: Data Width: 数据宽度: Memory Info: 内存条信息: Size: 内存大小: Serial Number: 序列号: Memory Info 内存条信息 MessageDialog Dialog 对话框 OK 确定 <html><head/><body><p>Add kuaipan cloud conf</p></body></html> <html><head/><body><p>添加快盘云配置</p></body></html> <html><head/><body><p>Add file and window manager</p></body></html> <html><head/><body><p>增加文件和窗口管理器</p></body></html> <html><head/><body><p>Remember user account info</p></body></html> <html><head/><body><p>保留用户帐号信息</p></body></html> <html><head/><body><p>Access Yahoo weather info</p></body></html> <html><head/><body><p>增加雅虎天气信息显示</p></body></html> <html><head/><body><p>Login with Ubuntu Kylin forum account</p></body></html> <html><head/><body><p>使用Ubuntu Kylin论坛帐号登录</p></body></html> <html><head/><body><p>Cleanup thumbnail and configfile</p></body></html> <html><head/><body><p>清理缩略图和配置文件</p></body></html> <html><head/><body><p>Add CD-ROM and Audio Info</p></body></html> <html><head/><body><p>添加光驱和音频设备信息</p></body></html> <html><head/><body><p>Add Device basic Info</p></body></html> <html><head/><body><p>添加设备驱动的基本信息</p></body></html> <html><head/><body><p>Modify system cleaner</p></body></html> <html><head/><body><p>优化系统清理模块</p></body></html> ModalDialog Dialog 对话框 Cancel 取消 OK 确定 <html><head/><body><p>Monitor Check</p></body></html> <html><head/><body><p>屏幕坏点检测</p></body></html> Left-click to change the color, right-click to exit from this detection. 点击鼠标左键进行更换颜色检测操作,点击鼠标右键退出检测。 MonitorInfo Monitor and Video display card 显示器和显卡信息 Current Graphics Card: 当前显卡: Graphics Card Model: 显卡型号: Graphics Card Info 显卡信息 Graphics Card Vendor: 显卡制造商: Graphics Driver: 显卡驱动: Graphics Card Bus Address: 显卡总线地址: Monitor: 显示器: Vendor: 制造商: Production Date(year/week): 生产日期(年/周): Bus Address: 显卡总线地址: Graphics Card Model: 显卡型号: Current Graphics Card: 当前显卡: Graphics Card Vendor: 显卡制造商: Graphics Driver: 显卡驱动: Bus Address: 总线地址: Monitor Info 显示器信息 Production(year/week): 生产日期(年/周): Display Area: 可视面积: Dimensions: 屏幕尺寸: Max Resolution: 最大分辨率: Gamma Value: 伽马值: Current Output: 当前接口: Support Output: 支持接口: MousePointer Mouse Settings 鼠标设置 Replace the theme and size of the mouse pointer, then click the ‘OK’ button to confirm. 更换鼠标指针主题和大小,更改设置后点击"确定"按钮进行确认。 Replace the theme and size of the mouse pointer, then click the 'OK' button to confirm. 更换鼠标指针主题和大小,更改设置后点击"确定"按钮进行确认。 Replace the theme and size of the mouse pointer, then click the 'OK' button to confirm. Also, theme change need to restart system. 更换鼠标指针主题和大小,更改设置后点击"确定"按钮进行确认。主题更改后需要重启系统生效。 [ Current Cursor Theme: [ 当前光标主题是: Completed 已完成 Mouse settings 鼠标设置 Mouse Pointer Theme 鼠标指针主题 OK 确定 Restore 恢复默认 Cursor Pointer Size 光标指针大小 Mouse Pointer Theme: 鼠标指针主题: Cursor Pointer Size: 光标指针大小: Small Size 小号 Big Size 大号 Tips: 友情提示: Cursor configure is the default configuration! 光标配置已经为默认设置! NICInfo NIC Info 有线网卡信息 NIC Model: 有线网卡型号: Vendor: 制造商: NIC Driver: 有线网卡驱动: Bus Address: 总线地址: Device Name: 设备名称: IP Address: IP地址: Mac Address: MAC地址: Connection Status: 连接状态: Max Bandwidth: 最大带宽: WLan NIC Info 无线网卡信息 WLan NIC Model: 网卡型号: WLan NIC Driver: 无线网卡驱动: Serial Number: 序列号: PackageModel The ongoing: 正在进行: Software operation schedule 软件介绍 Uninstall unnecessary procedures and old kernel packages 卸载不必要的程序和旧内核包 Cleaning up the software that installed by other software bundled or old kernel packages, to improve system performance 清理软件安装过程中捆绑安装的依赖程序或旧内核包,提高系统性能 Uninstall unnecessary procedures 卸载不必要的程序 Users can selectively clean installed program according to the scanning results, to save the disk space. 可以根据扫描结果选择性地清理安装程序,让系统更瘦。 Uninstall old kernel packages 卸载旧内核包 Users can selectively clean installed old kernel packages according to the scanning results, to save the disk space. 可以根据扫描结果选择性地清理旧内核包,让系统更瘦。 Tips: 友情提示: The scan results are empty, no need to clean up ! 扫描内容为空,无需清理! The scan results is empty, no need to clean up! 扫描内容为空,无需清理! Uninstall unnecessary procedures, old kernel packages and configfile 卸载不必要的程序,旧内核包和软件配置文件 Cleaning up the software that installed by other software bundled, old kernel packages and configfile, to improve system performance 清理软件安装过程中捆绑安装的依赖程序,旧内核包和软件配置文件,提高系统性能 Cleanup software configfile 清理软件配置文件 Scan completed! 扫描完成! Begin cleanup 开始清理 Cleanup abnormal! 清理出现异常! Cleanup interrupted! 清理中断! Cleared 清理完毕 Back 返回 Start scanning 开始扫描 Sorry, You did not choose the content to be scanned, please confirm! 对不起,您没有选择需要扫描的内容,请确认! Sorry, You did not choose the content to be cleaned up, please confirm! 对不起,您没有选择需要清理的内容,请确认! ProcessManager ps -u %1 -o user,pid,%cpu,%mem,start,ucmd,command %1;%2;%3;%4;%5;%6;%7 Task manager help you to understand the detailed information which procedures and processes are running on the system. 任务管理器帮助您了解系统上运行的程序和进程的详细信息。 Current User 当前用户 All Users 所有用户 Refresh 刷新 Task manager help you to kill the processes that are running on the system. 帮助您了解系统上运行的程序和进程的详细信息。 Help you learn more about the program running on the system. 帮助您了解系统上运行程序的详细信息。 Refresh completed! 刷新完成! End process 结束进程 The end of the process operation is successful! 结束进程操作成功! The end of the process operation failed! 结束进程操作失败! Sorry, You did not choose the process to be killed! 对不起,您没有选择想要结束的进程! Back 返回 User 用户 ID ID CPU % CPU占用 % Memory % 内存占用 % Start Time 启动时间 Process Description 进程说明 Process Name 进程名 QObject starting.... 优客助手正在启动中.... loading module data.... 正在加载模块数据.... QUIBO Form 对话框 RightPage Network Error! 网络错误! No User! 没有该用户! Password Wrong! 密码错误! Login Failed! 登录失败! DeadpixelTest 坏点检测 DesktopIcon 桌面图标 BootAnimation 开机动画 SysSounds 系统声音 MousePointer 鼠标指针 Touchpad 触摸板 Logging... 正在登录... Feedback 问题反馈 Name: 用户名: Level: 等级: Score: 经验值: Logout 注销 Forum Help 论坛求助 Features 新版本特性 Report Bugs Bug提交 RightPage-org Network Error! 网络错误! No User! 没有该用户! Password Wrong! 密码错误! Login Failed! 登录失败! DeadpixelTest 坏点检测 DesktopIcon 桌面图标 BootAnimation 开机动画 SysSounds 系统声音 MousePointer 鼠标指针 Logging... 正在登录... Name: 用户名: Level: 等级: Score: 经验值: Logout 注销 Forum Help 论坛求助 Features 新版本特性 Report Bugs Bug提交 SessionDispatcher Select folder 选择文件夹 SkinsWidget skin 1 皮肤 1 skin 2 皮肤 2 skin 3 皮肤 3 skin 4 皮肤 4 skin 5 皮肤 5 skin 6 皮肤 6 skin 7 皮肤 7 skin 8 皮肤 8 skin 9 皮肤 9 skin 10 皮肤 10 Youker Skin Center 优客皮肤中心 Home 首页 Previous 上一页 Next 下一页 Last 末页 SoftWareRecommend WPS For Ubuntu Kylin, the best office software in the Linux system. WPS For Ubuntu Kylin,Linux 系统上最好用的办公软件。 Details 详细 WineQQ, the best version of QQ in the Linux system. WineQQ,Linux系统上最好用的QQ版本。 Recommendations 推荐金榜单 SoftwarePage Progress: 进度: itmes need to be updated, the number of completed updates is: 个项目需要更新,已完成个数: Download 开始下载 Downloading... 正在下载安装包... Downloaded 下载完成 Start 开始 In progress: 正在进行: If it takes too long to update, there may be network problems, you can click the 'back' button in the upper left hand corner to exit the interface. 如果太长时间没有更新完毕,这可能是网络问题,您可以点击左上角的 “返回” 按钮退出该界面。 If it takes too long to update, there may be network problems, you can click the ‘back’ button in the upper left hand corner to exit the interface. 如果太长时间没有更新完毕,这可能是网络问题,您可以点击左上角的“返回”按钮退出该界面。 Updating software source, please be patient, there will pop-up prompt information automatically after the update completed. 正在更新软件源,请耐心等待,软件源更新完成后会自动弹出提示信息。 Software operation schedule 软件操作进度 If the software is installed successfully, you can search the Chinese or English keywords in Dash and start it . 如果软件安装成功,则可以通过软件的中文/英文名关键字在Dash中搜索并启动软件。 Operation completed! 软件操作完成! If the software is installed successfully, you can enter the keywords from the Chinese/English name of the software in Dash to searching and starting the software. 如果软件安装成功,则可以通过软件的中文/英文名关键字在Dash中搜索并启动软件。 Uninstall 立即卸载 Access web 进入网页 Access webpage 进入网页 Install 立即安装 Download Address 下载地址 Upgrade 立即升级 N/A 未发现 Software operation completed! 软件操作完成! Back 返回 Detailed Info 详细信息 Software introduction 软件介绍 SoundEffects Sound effect 声音效果 selected music file name in the list box, do something such as audition, substitution and reduction. 选中列表框中的音乐文件名,可以对系统事件的提示音进行试听、替换和还原。 Selected music file name in the list box, do something such as audition, substitution and reduction. 选中列表框中的音乐文件名,可以对系统事件的提示音进行试听、替换和还原。 [ Current Sound Theme: [ 当前音效主题是: Completed 已完成 Sound theme: 声音主题: OK 确定 Restore 恢复默认 Tips: 友情提示: The current theme is the default theme! 当前主题已经为默认主题! System event tone: 系统事件提示音: Listen 试听 Replace 替换 Custom Sound Theme 自定义声音主题 Does not support the audio file in the path that contains Chinese. 暂不支持中文路径下的音频文件。 Sound settings: 声音设置: Login tone: 登录提示音: SourceDialog Dialog 对话框 Cancel 取消 OK 确定 <html><head/><body><p align="center">Tips:</p></body></html> <html><head/><body><p align="center">友情提示:</p></body></html> <html><head/><body><p align="center">Tips:</p></body></html> You need to add Ubuntu Kylin software source, or the software recommended feature will not be available. Click 'OK' to add the software source, click 'Cancel' to give up! 您需要添加 Ubuntu Kylin 软件源,否则软件推荐功能将无法使用。点击"确定"按钮添加软件源,点击"取消"按钮放弃添加! StatusImage Unfinished 未完成 StatusWidget Tips: 友情提示: The kuaipan4uk is not running! 快盘没有运行! Not found the cloud configuration! 没有发现云配置文件! Download OK! 使用完毕! Upload OK! 上传完成! main version: 主版本: Use Cloud 使用云配置 Save Cloud 保存云配置 It will use the Kingsoft disk cloud configuration! 该操作将使用金山快盘云配置来设置系统配置! It will upload configuration to the Kingsoft disk cloud! 该操作将会把本地配置上传到金山快盘云端! SuspensionFrame Form 对话框 10K/s 10K/s 20K/s 20K/s <html><head/><body><p><span style=" font-size:14pt;">0%</span></p></body></html> <html><head/><body><p><span style=" font-size:14pt;">0%</span></p></body></html> <html><head/><body><p><span style=" color:#008000;">Computer running slow</span></p></body></html> <html><head/><body><p><span style=" color:#008000;">电脑运行缓慢</span></p></body></html> <html><head/><body><p>CPU Utilization:</p></body></html> <html><head/><body><p>CPU占用率:</p></body></html> <html><head/><body><p>Memory Utilization:</p></body></html> <html><head/><body><p>内存占用率:</p></body></html> <html><head/><body><p><span style=" color:#008000;">Proposed a key acceleration</span></p></body></html> <html><head/><body><p><span style=" color:#008000;">建议一键加速</span></p></body></html> <html><head/><body><p><span style=" color:#008000;">Using 'quick clean' ?</span></p></body></html> <html><head/><body><p><span style=" color:#008000;">使用一键加速?</span></p></body></html> <html><head/><body><p>CPU occupancy rate:</p></body></html> <html><head/><body><p>CPU占用率:</p></body></html> <html><head/><body><p><span style=" font-size:11pt;">0%</span></p></body></html> <html><head/><body><p><span style=" font-size:11pt;">0%</span></p></body></html> <html><head/><body><p>Used:</p></body></html> <html><head/><body><p>已使用:</p></body></html> <html><head/><body><p>Unused:</p></body></html> <html><head/><body><p>未使用:</p></body></html> <html><head/><body><p>Memory</p></body></html> <html><head/><body><p>内存</p></body></html> <html><head/><body><p>Memory occupancy rate:</p></body></html> <html><head/><body><p>内存占用率:</p></body></html> System runs smoothly 系统运行流畅 There is no need to accelerate 无需进行加速 No need to accelerate 无需进行加速 Details 详细 %1 %1 Computer runs slowly 电脑运行缓慢 Using 'quick clean' ? 使用一键加速? Recommend the use of ‘quick clean’ 建议一键加速 Switch ON 已开启 OFF 已关闭 ON 已开启 SystemBox Dead pixel test 坏点检测 Boot Animation 开机动画 Fcitx Configure 输入法配置 Software 软件推荐 Recommend Software 软件推荐 Task Manager 任务管理器 Default toolkits 默认工具箱 SystemClean Cache Manager 缓存管理 Cache Cleanup 缓存清理 Package Uninstall 包卸载 Cookies Cleanup Cookies清除 Browser Cleanup 浏览器清理 Trace Cleanup 痕迹清理 Find Large Files 查找大文件 Find large files 查找大文件 SystemDispatcher Select the boot animation 选择开机动画 Image Files (*.png) 图像文件 (*.png) Image Files (*.png *.jpg *.gif) 图像文件 (*.png *.jpg *.gif) Select music 选择音乐 Audio Files (*.ogg *.wav *.mp3 *.wma) 音频文件 (*.ogg *.wav *.mp3 *.wma) Warning: 警告: No find the softlist file! 没有找到软件列表文件! SystemInfo Computer 电脑概述 Desktop 桌面 CPU CPU Memory 内存 Motherboard 主板 HD 硬盘 VGA 显卡 SB 声卡 Device Driver 设备驱动 Board 主板 HardDisk 硬盘 NIC 网卡 Monitor 显示器 Audio 音频 CD-ROM 光驱 Drive 驱动 SystemSet You can perform a full range of customized systems based on personal preferences! 您可以根据个人喜好对系统进行全方位的定制! Personalize 个性化 WindowTheme 窗口主题 IconSetting 图标配置 GTK Theme GTK主题 MousePointer 鼠标指针 SoundEffect 声音效果 BootAnimation 开机动画 Unity Unity ThemeSetting 主题设置 Desktop 桌面 Custom Launcher 自定义启动器 Window 窗口 Fonts 字体 DefaultFont 默认字体设置 Others 杂项 File manager 文件管理器 DocumentFont 文档字体设置 TitlebarFont 窗口标题栏字体设置 System options 系统选项 Touchpad 触摸板设置 Dead pixel test 坏点检测 TipLabel Support cloud conf 支持云配置 No support cloud conf 不支持云配置 TitlebarFont Titlebar font settings 标题栏字体设置 According to personal preferences to set titlebar fonts, click the 'Restore' button, can be restored to the state before the font settings. 根据个人喜好设置标题栏字体,单击"恢复默认"按钮,可以将对应的字体恢复到设置前状态。 Completed 已完成 Titlebar font: 标题栏字体: Change fonts 更换字体 Restore 恢复默认 Tips: 友情提示: Your system's titlebar font is the default font! 您系统的窗体标题栏字体已经为默认字体! ToolBar OK 确定 Restore 恢复默认 Back 返回 TouchpadSet Touchpad settings 触摸板设置 By setting the relevant properties of your touchpad, make the operation more convenient. 通过调整触摸板的相关设置,使操作更加便捷。 Completed 已完成 Switch settings 开关设置 Enable/Disable touchpad: 启用/禁用触摸板: Restore 恢复默认 Property settings 属性设置 Scrollbar type: 滚动条类型: Features Type 特色类型 Standard Type 标准类型 Touchpad scroll trigger mode: 触摸板滚动触发方式: Edgemotion 边缘触发 Twofinger Scroll 双指触发 Touchpad horizontal scroll: 触摸板横向滚动: Tips: 友情提示: Touchpad configure has been restored to the default configuration! 触摸板配置已经为默认配置! TraceModel Start scanning 开始扫描 Cleanup History, to protect your privacy 清理历史记录,保护个人隐私 Cleanup history, to protect your privacy 清理历史记录,保护个人隐私 Cleaning the internet and opened documents recently records 清理浏览器上网记录和系统最近打开文件记录 Firefox is not installed! 没有安装Firefox! Tips: 友情提示: The scan results is empty, no need to clean up! 扫描内容为空,无需清理! The scan results are empty, no need to clean up ! 扫描内容为空,无需清理! Scan completed! 扫描完成! Begin cleanup 开始清理 Chromium is not installed! 没有安装Chromium! Chromium is running. When the browser is running, could not perform scan or cleanup operations. Chromium正在运行中。当它正在运行的时候,不能执行扫描或者清理操作。 Cleanup abnormal! 清理出现异常! Cleanup interrupted! 清理中断! Clean up the Firefox Internet records 清理 Firefox 浏览器上网记录 Clean up the Firefox history records 清理 Firefox 浏览器上网时留下的浏览痕迹 Clean up the Chromium Internet records 清理 Chromium 浏览器上网记录 Clean up the Chromium history records 清理 Chromium 浏览器上网时留下的浏览痕迹 Clean up the recently opened documents records 清理最近打开文件记录 Clean up the recently opened documents in your system, to protect your privacy 清理系统上最近打开的文件记录,保护您的个人隐私 Back 返回 Rescan 重新扫描 (Scan to (扫描到 records) 条记录) (Have been cleared (已清理 Tray MonitorBall 监控球 <html><head/><body><p align="right">10K/s</p></body></html> <html><head/><body><p align="right">10K/s</p></body></html> <html><head/><body><p align="right">20K/s</p></body></html> <html><head/><body><p align="right">20K/s</p></body></html> 10K/s 10K/s 20K/s 20K/s 0% 0% Hide/Show window 隐藏/显示主界面 Hide/Show monitor 隐藏/显示监控球 About 关于本软件 &Exit 退出(&E) UpdateDialog Dialog 对话框 OK 确定 <html><head/><body><p>Service reminder:</p></body></html> <html><head/><body><p>服务提醒:</p></body></html> Cancel 取消 The software was not found, please try to update the software sources. 没有找到该软件,请尝试更新软件源。 WarningDialog Dialog 对话框 OK 确定 <html><head/><body><p>Tips:</p></body></html> <html><head/><body><p>友情提示:</p></body></html> WeatherForecast Getting six days weather forecast data from CMA, providing reference information for users to travel. 获取中国气象局的六天天气预报数据,为用户出行提供参考。 Getting weather forecast data from CMA/Yahoo, providing reference information for users to travel. 获取中国气象局/雅虎的天气预报数据,为用户出行提供参考。 [ The weather forecast has stopped updating, please wait interface update. ] [ 天气预报接口已经停止更新数据,请等待接口更新后再使用。 ] Sunday 星期日 Monday 星期一 Tuesday 星期二 Wednesday 星期三 Thursday 星期四 Friday 星期五 Saturday 星期六 o'clock release 时 发布 hour release 时 发布 WeatherZone Unable to get weather data, 无法获取天气数据, please check network. 请检查网络。 Weather 天气 Wind 风力 AQI 空气质量指数 Current temperature (℃) 当前温度(℃) Temperature range 温度范围 Humidity 湿度 N/A 未知 AQI: 空气质量指数: release 发布 o'clock release 时发布 Current temperature: 当前温度: Temperature range: 温度范围: Humidity: 湿度: Wind: 风力: Sunrise: 日出: Sunset: 日落: Changsha 长沙 [Change City] [更换城市] Current temperature 当前温度(℃) 发布 [Change City] [更换城市] Release time 发布时间 Forecast 预 报 Configure 配 置 Update 更 新 Update completed! 更新完毕! AQI:N/A 空气质量指数:未知 Temperature:N/A 温度:未知 Humidity:N/A 湿度:未知 Temperature range:N/A 温度范围:未知 Wind:N/A 风力:未知 WidgetTheme Theme settings 主题设置 Choose the theme what you want. 选择您想设置的主题。 Window theme settings 窗口主题设置 Window theme: 窗口主题: Restore 恢复默认 Gtk theme settings GTK主题设置 GTK Theme settings GTK主题设置 Choose the theme what you want. The first is the theme of the currently used. 选择您想设置的主题。第一个主题为系统当前使用的主题。 [ Current Theme is: [ 当前主题是: Completed 已完成 Tips: 友情提示: Your system's current widget theme is the default theme! 您系统的当前窗口主题已经为默认主题! WindowManager Window 窗口 Manage Window Manager settings. 管理窗口管理器的设置。 Window settings 窗口设置 Window control button position: 窗口控制按钮位置: Window control btn position: 窗口控制按钮位置: Left Side 左边 Right Side 右边 Restore 恢复默认 Menu with icons: 菜单项旁显示图标: Titlebar mouse wheel action: 标题栏鼠标滚轮动作: Titlebar double-click action: 标题栏双击动作: Titlebar middle-click action: 标题栏中键动作: Titlebar right-click action: 标题栏右键动作: WizardDialog Dialog 对话框 <html><head/><body><p>Weather Configuration</p></body></html> <html><head/><body><p>天气配置</p></body></html> <html><head/><body><p>Automatic update cycle:</p></body></html> <html><head/><body><p>自动更新周期:</p></body></html> <html><head/><body><p>Location:</p></body></html> <html><head/><body><p>地点:</p></body></html> <html><head/><body><p><a name="w_98"/>minute</p></body></html> <html><head/><body><p><a name="w_98"/>分钟</p></body></html> <html><head/><body><p><a name="w_98"/>minutes</p></body></html> <html><head/><body><p><a name="w_98"/>分钟</p></body></html> Add City 添加城市 Delete City 删除城市 Back 返回 Finish 完成 <html><head/><body><p>Data: CMA/Yahoo</p></body></html> <html><head/><body><p>数据来源:中国气象局 / 雅虎</p></body></html> <html><head/><body><p>Wind speed unit: Beaufort number</p></body></html> <html><head/><body><p>风速单位:蒲福级</p></body></html> <html><head/><body><p>Data: CMA</p></body></html> <html><head/><body><p>数据来源:中国气象局</p></body></html> <html><head/><body><p>Data: China Meteorological Administration</p></body></html> <html><head/><body><p>数据来源:中国气象局</p></body></html> Warning: 警告: The city already exists, please click on the '[Change City]' button! 该城市已经存在,请点击 ’[更换城市]‘ 按钮! The configuration file is not found! 没有找到配置文件! youker-assistant-1.0.1/qml/img/logo/Manufacturer/CORSAIR.jpg000644 001750 001750 00000010725 12312451003 024111 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!AQB q$"2#34C  !1AQ2Baq"R3$t%rC4DT ?/\y\TTv$NA:$:A8 ‰drxVjuO^EH*ON5UXmg,W'>U: I:tN΄N=;¤)$Y%\?*4UA{?SW$dR2JӾUx,/YϕNH'mN4A9s:$N*I8<(IW'ʍh^ƧTUI$TU^%@DDDt 9,>ts|_wSs`k'ƍwEk#:$֒L Uuz{":ل=a#[-l|e7a#֮9+u!WbA?HlH _ܻ}z/,y5,:L3G\2B7IXJw'ER`CܳzcX@#*Q?:"6H  d\侤Ik#Ek'%b Jr S"* 5{m=A9NQ$FiY%V!NS؀0 "u(pև ʛTV;hp $2JӾUxoj2&0D1Ӧ/0ɗ[yb=aKY$9 pMZp(6Mp`>WWzTU[eG13@`I&L_fk⩽k8m3)}%s\l0RBSy-spĞWHdF=X;hN"XM*1f6&Պw$tU(-syOk)lH"#/0km pHɗd:OwmԴ{%5oNF }^S|Q"vVfO=xMGR57R~3Ȯ# t/;{*c.mJ7-WYY#qQYq1#Q&bZ8 ʻ%Zz:̗Dvm=d\[;C' m1e-enWۚnkչQ/8EX\`?~hX8W)6iKg 0ݕ ;Zɓ8F1Dw, r_$YU]R(K bZXzAtUnƌ!x0Ki:4q6~edcL6ls1;*l"}emw}ꕦ8{d]4먩)?&t߇]".:ݿ6N-Ejj/-xfÏΞAEś`]D+9mjپsW^i:DuD>?(16&F>lAy[{P_baRIwX/{/o=Gn>%q%+9IFK>"ZT,tW F ZHS,vB{g\)3.d;9Hg^grl1߫錉f$c8W~=\*q;p vnFD+IɠA= bB%XrRj1xM1]aw˧1N 'y- F$[[K,5]i3{03*;lݰ*R`Z E&E*̮T51pؿk dhz?x%M5w*ۇ 1mͱ{ YCSĢЍqa0:.ɑͅ%"Ui[Uhs]]h+Mʋ~p.Lēہw1aBYM;^hlq9iVGfWl-f764̉=R퐜$MwEK"7˄BFU*4L kprKwT*f76C5.lE \%nM6,/+I,R }DWBhHdo W&6»HG^3Sbê@&9, 04mTߙ-َRiپِ9H_z BBy"37Ycʌʛ⏨63Ҥ |F^osxl=ܶ8'r˾Fez| ƻ:Q^AY'sSuH'mN4A9s:$N*I8<(IW'ʍh^ƧTUI$T>ǵO=?O|o>uZf^Ӷ+*UjN$R h:'DrBtH'RUqxQ,O* N֒2H%WFKt{ʧUZ'Tp Н ǧxTE$~K$FH/gS|**FIUzwѪyouker-assistant-1.0.1/qml/img/logo/Manufacturer/ALI.jpg000644 001750 001750 00000010455 12312451003 023414 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1!A Qqa"2$ #GHS4d5u)BR3sDUW8Xh9 !1AQaq"2$4DBrst%57RST#Eu&V ?Q z #xLA3d%LA0JL}bCBf(9͆H "QZXޖ[ RTX9YFNuqle(%`IGc5Sb<: LJ%}bCB- |2Ï80D4j$D`Su`օ@ai!*'5ŶZÉQi[_VITH-SSEc b#(V?;S[)ugWld3?"PW mW0MqPб&L>{LjɏҁϭEe3CZGMy!g!!wKHcc#Z 8FO@R]Jaȡ0N ŏQ'OiJ6jJa Woaoؚ# j 2<%B֏_^}xWLbxJ/h'~t?F`0~`Kѧ^tIQÏ/ջh5FHn&w,m|C}[3|Mߜ^o8f~m˭3XeuaS3!ɃW?ɶ]GNJm>SD_mqlGZ<>K?RV`jﵻBB&߁2f{;e4sQP%( 40pfYL{/`uG{ϭ:I~@eZ> XNl:fXɁͫkeT;S {~V, Zg.cτau] l;J_oN w\&P%?)*q'd 4pa|"u+gӖ.btZ3lF,`;@X}x R_gc聤9[dp7ucB|U[ݘ@K\(4R "y%$HOT q蟡sVo4 ?+u [ʭn?k\ngb1QAf?"w XS$Siͯu,r/tj/56˰,|u7uU~#]vug{joo>*OJG-pϰ^,pM퉾+ܔfYU v{yx0 ;V@ngyd_-VRrp*)Uv2ΝVl$L|Irjq zeOȍ9'k#DzFFANjf>"+Y˧(k,= r;b(UK= APs :ZpQYjF2ڵc)nƩ!f# 7"n6S+uR#~ U4ifV6"6؄,:tϋب|Z3==-QY䬫,[u—ᵄO@)&3e7_NaŞ6}BV\z'8}aN4ck^1m̰xZqMG?N%QLmW׬́$oKT)NP]TY`J]"9;0Sh mSCt[V2 2j$֔03 G_kkgtOg}VjEdOZڱΈ/>,*y,lF.kٞCMCBmk-O3KmLe44(|t39Gҫ/-Gk<\Y25ZpȞu%LeBv_[O81:v#L[䝬\U\ɶ~j"5\5RF@`5=[^H8F1ei9gwR+#讓IK٩|f)鋈Q/$e|mΌ~V~neyDɓm3ɬw+,kH3a)KiHt=o~j봵Sw\ɕEgj±PP5j``,k| U*X۝jԚ+>awJUQ{5QM"U7Y/!Y9H//ťF权_@!6Y^>>Nsi'!W*Q}HQЊzFuZ4c&JwX 5rs@G"$$8˦59l,z`4F@M0iA;+øܴ l_@b z #xLA3d%LA0JL}bCBf(9͆HCaA0BhJ0!02q$xc"cp:( p&,8gN! S)|X0R¼ E6(cQb y&*b GBTdKS500Al7"Gpa"Så,&KR@64A-1E/youker-assistant-1.0.1/qml/func/bars/Progress.qml000644 001750 001750 00000006661 12312451003 022342 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: progressbar property int minimum: 0 property int maximum: 100 property int value: 0 property alias color: gradient1.color property alias secondColor: gradient2.color width: 250; height: 23 clip: true BorderImage { source: "../../img/skin/progress-bg.png" width: parent.width; height: parent.height border { left: 4; top: 4; right: 4; bottom: 4 } } Rectangle { id: highlight property int widthDest: ((progressbar.width * (value - minimum)) / (maximum - minimum) - 6) width: highlight.widthDest Behavior on width { SmoothedAnimation { velocity: 1200 } } anchors { left: parent.left; top: parent.top; bottom: parent.bottom; margins: 3 } radius: 1 gradient: Gradient { GradientStop { id: gradient1; position: 0.0 } GradientStop { id: gradient2; position: 1.0 } } } Text { anchors { right: highlight.right; rightMargin: 6; verticalCenter: parent.verticalCenter } color: "white" font.bold: true text: Math.floor((value - minimum) / (maximum - minimum) * 100) + '%' } } //Item { // id: progressbar // property int minimum: 0 // property int maximum: 100 // property int value: 0 // property alias color: gradient1.color // property alias secondColor: gradient2.color // property string background: "" // property int borderSpace: 4 // width: 250; height: 23 // clip: true // //背景图 // BorderImage { // source: progressbar.background // width: parent.width; height: parent.height // border { /*left: progressbar.borderSpace; */top: progressbar.borderSpace; /*right: progressbar.borderSpace; */bottom: progressbar.borderSpace } // } // //填充 // Rectangle { // id: highlight // property int widthDest: ((progressbar.width * (value - minimum)) / (maximum - minimum) - 6) // height: highlight.widthDest + 6/* + progressbar.borderSpace * 2*/ // Behavior on height { SmoothedAnimation { velocity: 1200 } } // width: 23 - progressbar.borderSpace * 2 // anchors { left: parent.left; top: parent.bottom; right: parent.right; margins: 1} // radius: 1 // gradient: Gradient { // GradientStop { id: gradient1; position: 0.0 } // GradientStop { id: gradient2; position: 1.0 } // } // smooth:true // rotation: 270 // //旋转的中心点 // transformOrigin: "TopLeft" // } // //进度 // Text { // anchors.centerIn: parent // color: "black" // font.bold: true // text: Math.floor((value - minimum) / (maximum - minimum) * 100) + '%' // } //} youker-assistant-1.0.1/qml/func/others/WeatherZone.qml000644 001750 001750 00000025765 12312451003 023354 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Rectangle { id: weahterzone width: 208;height: 147 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } color: "transparent" //设置[更换城市]按钮是否显示 function resetChangeCityBtn() { var len = sessiondispatcher.getLengthOfCityList(); if(len <= 1) { changeCityBtn.visible = false; } else { changeCityBtn.visible = true; } } //当启动时没有网络的时候,设置默认界面 function setDefaultWeather() { weatherIcon.source = "../../img/weather/d0.gif" // locationText.text = qsTr("Unable to get weather data,");//无法获取天气数据, // ptimeText.text = qsTr("please check network.");//请检查网络。 weatherText.text = qsTr("Weather");//天气 windText.text = qsTr("Wind");//风力 pmText.text = qsTr("AQI");//空气质量指数 tempText.text = qsTr("Current temperature");//当前温度(℃) temperatureRangeText.text = qsTr("Temperature range");//温度范围 humidityText.text = qsTr("Humidity");//湿度 } //设置PM2.5到QML界面上 function resetPM25(pmData) { if (pmData == "N/A") { pmData = qsTr("N/A");//未知 } pmText.text = qsTr("AQI:") + pmData;//空气质量指数: } //设置天气数据到QML界面上 function resetCurrentWeather() { var ptime = sessiondispatcher.getSingleWeatherInfo("ptime", "current");//eg: 08:00 var need_str = ptime.substr(0, ptime.lastIndexOf(":"));//eg: 08 //将字符串类型的时间转成整形 var pIntTime = parseInt(need_str, 10);//eg: 8 if(pIntTime > 7 && pIntTime < 20) { var img1 = sessiondispatcher.getSingleWeatherInfo("img1", "current"); weatherIcon.source = sessiondispatcher.getSingleWeatherInfo(img1, "weathericon"); } else { var img2 = sessiondispatcher.getSingleWeatherInfo("img2", "current"); weatherIcon.source = sessiondispatcher.getSingleWeatherInfo(img2, "weathericon"); } locationText.text = sessiondispatcher.getSingleWeatherInfo("city", "current"); ptimeText.text = sessiondispatcher.getSingleWeatherInfo("time", "current") + qsTr(" ");// 发布 weatherText.text = sessiondispatcher.getSingleWeatherInfo("weather", "current"); windText.text = sessiondispatcher.getSingleWeatherInfo("WD", "current") + sessiondispatcher.getSingleWeatherInfo("WS", "current"); sessiondispatcher.get_current_pm25_qt(); // var pmData = sessiondispatcher.get_current_pm25_qt(); // if (pmData == "N/A") { // pmData = qsTr("N/A");//未知 // } // pmText.text = qsTr("AQI:") + pmData;//空气质量指数: tempText.text = qsTr("Current temperature:") + sessiondispatcher.getSingleWeatherInfo("temp", "current") + "℃";//当前温度: temperatureRangeText.text = qsTr("Temperature range:") + sessiondispatcher.getSingleWeatherInfo("temp2", "current") + "~" + sessiondispatcher.getSingleWeatherInfo("temp1", "current");//温度范围: humidityText.text = qsTr("Humidity:") + sessiondispatcher.getSingleWeatherInfo("SD", "current");//湿度: } //设置yahoo天气到界面上 function resetCurrentYahooWeather() { weatherIcon.source = "http://l.yimg.com/a/i/us/we/52/" + sessiondispatcher.getSingleWeatherInfo("code", "yahoo") + ".gif"; locationText.text = sessiondispatcher.getSingleWeatherInfo("city", "yahoo");//城市 ptimeText.text = ""; pmText.text = sessiondispatcher.getSingleWeatherInfo("time", "yahoo");//发布时间 // ptimeText.text = sessiondispatcher.getSingleWeatherInfo("time", "yahoo");;//发布时间 weatherText.text = sessiondispatcher.getSingleWeatherInfo("text", "yahoo");//当前天气 windText.text = qsTr("Wind:") + sessiondispatcher.getSingleWeatherInfo("wind", "yahoo");//风力 tempText.text = qsTr("Current temperature:") + sessiondispatcher.getSingleWeatherInfo("temp", "yahoo");//当前温度: temperatureRangeText.text = qsTr("Sunrise:") + sessiondispatcher.getSingleWeatherInfo("sunrise", "yahoo");//日出 : humidityText.text = qsTr("Sunset:") + sessiondispatcher.getSingleWeatherInfo("sunset", "yahoo");//日落: // temperatureRangeText.text = qsTr("Sunrise:") + sessiondispatcher.getSingleWeatherInfo("sunrise", "yahoo") + "; " + qsTr("Sunset:") + sessiondispatcher.getSingleWeatherInfo("sunset", "yahoo");//日出 日落 // humidityText.text = qsTr("Humidity:") + sessiondispatcher.getSingleWeatherInfo("humidity", "yahoo");//湿度: } Connections { target: sessiondispatcher onStartUpdateForecastWeahter: { if(flag == "weather") { weahterzone.resetCurrentWeather(); weahterzone.resetChangeCityBtn(); } else if(flag == "pm25") { weahterzone.resetPM25(sessiondispatcher.access_pm25_str_qt()); } else if(flag == "yahoo") { weahterzone.resetCurrentYahooWeather(); weahterzone.resetChangeCityBtn(); } } //用户修改了城市时更新 onStartChangeQMLCity: { sessiondispatcher.get_current_weather_qt(); // if(sessiondispatcher.get_current_weather_qt()) { // weahterzone.resetCurrentWeather(); // weahterzone.resetChangeCityBtn(); // } } //自动更新时间到了的时候更新 onStartUpdateRateTime: { updateTime.interval = 10000 * rate; } } Component.onCompleted: { weahterzone.setDefaultWeather(); var rate = sessiondispatcher.get_current_rate(); updateTime.interval = 10000 * rate; sessiondispatcher.get_current_weather_qt(); // if(sessiondispatcher.get_current_weather_qt()) { // weahterzone.resetCurrentWeather(); // weahterzone.resetChangeCityBtn(); // } // else { // weahterzone.setDefaultWeather(); // } } Text { id: locationText text: qsTr("Changsha")//长沙 font.bold: true font.pixelSize: 14 color: "#383838" anchors.left: parent.left } Common.StyleButton { id: changeCityBtn visible: false anchors.left: locationText.right wordname: qsTr(" [Change City]")//[更换城市] width: 80 height: 15 // flag: "ChangeCity" onClicked: { sessiondispatcher.showChangeCityDialog(/*mainwindow.pos.x, mainwindow.pos.y*/); } } Text { id: ptimeText text: qsTr("Release time")//发布时间 font.bold: true font.pixelSize: 14 color: "#383838" anchors.right: parent.right } Row { anchors.top: parent.top anchors.topMargin: 25 spacing: 15 Column { id: leftrow spacing: 5 Image { id: weatherIcon width: 48; height: 48 source: ""//http://l.yimg.com/a/i/us/we/52/21.gif } Common.StyleButton { id: forecastBtn anchors.horizontalCenter: parent.horizontalCenter wordname: qsTr("Forecast")//预 报 width: 40 height: 20 // flag: "WeatherForecast" onClicked: { //1、获取六天天气预报数据 sessiondispatcher.get_forecast_weahter_qt(); //2、加载天气预报界面 pageStack.push(weatherpage); } } Common.StyleButton { id: preferencesBtn anchors.horizontalCenter: parent.horizontalCenter wordname: qsTr("Configure")//配 置 width: 40 height: 20 // flag: "WeatherPreference" onClicked: { sessiondispatcher.showWizardController(); } } Common.StyleButton { id: refreshBtn anchors.horizontalCenter: parent.horizontalCenter wordname: qsTr("Update")//更 新 width: 40 height: 20 onClicked: { if(sessiondispatcher.update_weather_data_qt()) { weahterzone.resetCurrentWeather(); weahterzone.resetChangeCityBtn(); toolkits.alertMSG(qsTr("Update completed!"), mainwindow.pos.x, mainwindow.pos.y);//更新完毕! } } } } Column { spacing: 5 Text { id: weatherText text: qsTr("N/A")//未知 font.pixelSize: 12 color: "#7a7a7a" } Text { id: pmText text: qsTr("AQI:N/A")//空气质量指数:未知 font.pixelSize: 12 color: "#7a7a7a" } Text { id: tempText text: qsTr("Temperature:N/A")//温度:未知 font.pixelSize: 12 color: "#7a7a7a" } Text { id: humidityText text: qsTr("Humidity:N/A")//湿度:未知 font.pixelSize: 12 color: "#7a7a7a" } Text { id: temperatureRangeText text: qsTr("Temperature range:N/A")//温度范围:未知 font.pixelSize: 12 color: "#7a7a7a" } Text { id: windText text: qsTr("Wind:N/A")//风力:未知 font.pixelSize: 12 color: "#7a7a7a" } } } Timer{ id: updateTime interval: 60 * 10000;running: true;repeat: true onTriggered: { sessiondispatcher.get_current_weather_qt(); // if(sessiondispatcher.get_current_weather_qt()) { // weahterzone.resetCurrentWeather(); // weahterzone.resetChangeCityBtn(); // } } } } youker-assistant-1.0.1/qml/func/common/private/ScrollAreaHelper.qml000644 001750 001750 00000005363 12312451003 025736 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import StyleItemType 0.1 import WheelAreaType 0.1 WheelArea { id: wheelarea property alias horizontalScrollBar: hscrollbar property alias verticalScrollBar: vscrollbar property int macOffset: frame && styleitem.style === "mac" ? 1 : 0 property bool blockUpdates: false property int availableHeight : root.height - (hscrollbar.visible ? hscrollbar.height : 0) property int availableWidth: root.width - vscrollbar.width anchors.fill: parent anchors.margins: frameWidth horizontalMinimumValue: hscrollbar.minimumValue horizontalMaximumValue: hscrollbar.maximumValue verticalMinimumValue: vscrollbar.minimumValue verticalMaximumValue: vscrollbar.maximumValue onVerticalValueChanged: { if (!blockUpdates) verticalScrollBar.value = verticalValue } onHorizontalValueChanged: { if (!blockUpdates) horizontalScrollBar.value = horizontalValue } StyleItem { // This is the filled corner between scrollbars id: cornerFill elementType: "scrollareacorner" width: vscrollbar.width anchors.right: parent.right height: hscrollbar.height anchors.bottom: parent.bottom visible: hscrollbar.visible && vscrollbar.visible } ScrollBar { id: hscrollbar orientation: Qt.Horizontal visible: contentWidth > availableWidth maximumValue: contentWidth > availableWidth ? root.contentWidth - availableWidth : 0 minimumValue: 0 anchors.bottom: parent.bottom anchors.leftMargin: parent.macOffset anchors.bottomMargin: -parent.macOffset anchors.left: parent.left anchors.right: parent.right anchors.rightMargin: vscrollbar.visible ? vscrollbar.width -parent.macOffset: 0 onValueChanged: { if (!blockUpdates) { contentX = value horizontalValue = value } } } ScrollBar { id: vscrollbar orientation: Qt.Vertical // We cannot bind directly to tree.height due to binding loops so we have to redo the calculation here visible: contentHeight > availableHeight maximumValue: contentHeight > availableHeight ? root.contentHeight - availableHeight : 0 minimumValue: 0 anchors.right: parent.right anchors.top: parent.top anchors.bottom: parent.bottom anchors.topMargin: parent.macOffset anchors.rightMargin: -parent.macOffset anchors.bottomMargin: hscrollbar.visible ? hscrollbar.height - parent.macOffset : 0 onValueChanged: { if (!blockUpdates) { contentY = value verticalValue = value } } } } youker-assistant-1.0.1/qml/func/bars/ScrollBar.qml000644 001750 001750 00000007730 12312451003 022417 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the QtDeclarative module of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Digia. For licensing terms and ** conditions see http://qt.digia.com/licensing. For further information ** use the contact form at http://qt.digia.com/contact-us. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** In addition, as a special exception, Digia gives you certain additional ** rights. These rights are described in the Digia Qt LGPL Exception ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3.0 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU General Public License version 3.0 requirements will be ** met: http://www.gnu.org/copyleft/gpl.html. ** ** ** $QT_END_LICENSE$ ** ****************************************************************************/ import QtQuick 1.1 Item { id: container property variant scrollArea property variant orientation: Qt.Vertical opacity: 0 function position() { var ny = 0; if (container.orientation == Qt.Vertical) ny = scrollArea.visibleArea.yPosition * container.height; else ny = scrollArea.visibleArea.xPosition * container.width; if (ny > 2) return ny; else return 2; } function size() { var nh, ny; if (container.orientation == Qt.Vertical) nh = scrollArea.visibleArea.heightRatio * container.height; else nh = scrollArea.visibleArea.widthRatio * container.width; if (container.orientation == Qt.Vertical) ny = scrollArea.visibleArea.yPosition * container.height; else ny = scrollArea.visibleArea.xPosition * container.width; if (ny > 3) { var t; if (container.orientation == Qt.Vertical) t = Math.ceil(container.height - 3 - ny); else t = Math.ceil(container.width - 3 - ny); if (nh > t) return t; else return nh; } else return nh + ny; } Rectangle { anchors.fill: parent; color: "Black"; opacity: 0.3 } BorderImage { source: "../../img/icons/list_item_active.png" border { left: 1; right: 1; top: 1; bottom: 1 } x: container.orientation == Qt.Vertical ? 2 : position() width: container.orientation == Qt.Vertical ? container.width - 4 : size() y: container.orientation == Qt.Vertical ? position() : 2 height: container.orientation == Qt.Vertical ? size() : container.height - 4 } states: State { name: "visible" when: container.orientation == Qt.Vertical ? scrollArea.movingVertically : scrollArea.movingHorizontally PropertyChanges { target: container; opacity: 1.0 } } transitions: Transition { from: "visible"; to: "" NumberAnimation { properties: "opacity"; duration: 600 } } } youker-assistant-1.0.1/src/main.cpp000644 001750 001750 00000012521 12312451003 017557 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "fcitxcfgwizard.h" #include "toolkits.h" #include "systemdispatcher.h" #include "sessiondispatcher.h" #include "youker-application.h" #include #include #include #include "qmlaudio.h" #include #include #include #include #include "qrangemodel.h" #include "qstyleitem.h" #include "qwheelarea.h" #include "qtmenu.h" #include "qcursorarea.h" #include #include #include #include #include #include #include #include #include #include #include #include "processmanager.h" #include "devicemanager.h" #include void registerTypes() { qmlRegisterType("ToolkitsType", 0, 1, "Toolkits"); qmlRegisterType("SessionType", 0, 1, "SessionDispatcher"); qmlRegisterType("SystemType", 0, 1, "SystemDispatcher"); qmlRegisterType("ProcessType", 0, 1, "ProcessManager"); qmlRegisterType("DeviceType", 0, 1, "DeviceManager"); qmlRegisterType("FcitxCfgWizard", 0, 1, "FcitxCfgWizard"); qmlRegisterType("AudioType", 0, 1, "QmlAudio"); qmlRegisterType("RangeModelType", 0, 1, "RangeModel"); qmlRegisterType("StyleItemType", 0, 1, "StyleItem"); qmlRegisterType("WheelAreaType", 0, 1, "WheelArea"); qmlRegisterType("MenuType", 0, 1, "Menu"); qmlRegisterUncreatableType("MenuBaseType", 0, 1, "NativeMenuBase", QLatin1String("Do not create objects of type NativeMenuBase")); qmlRegisterType("CursorAreaType", 0, 1, "CursorArea"); } int main(int argc, char** argv) { //单程序运行处理 QtSingleApplication app(argc, argv); if (app.isRunning()) return 0; //编码处理 QTextCodec::setCodecForTr(QTextCodec::codecForLocale()); QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); QString locale = QLocale::system().name(); QTranslator translator; if(locale == "zh_CN") { //加载Qt和QML文件的国际化 if(!translator.load("youker-assistant_" + locale + ".qm", ":/translate/translation/")) qDebug() << "Load translation file:"<< "youker-assistant_" + locale + ".qm" << " failed!"; else app.installTranslator(&translator); } //加载Qt对话框默认的国际化 QTranslator qtTranslator; qtTranslator.load("qt_" + locale, QLibraryInfo::location(QLibraryInfo::TranslationsPath)); app.installTranslator(&qtTranslator); //注册QML模块 registerTypes(); // system("/home/saucy/Slider/src/wizard.py"); //启动画面 QSplashScreen *splash = new QSplashScreen; splash->setPixmap(QPixmap(":/pixmap/image/feature.png")); splash->setDisabled(true); splash->show(); splash->showMessage(QObject::tr("starting...."), Qt::AlignHCenter|Qt::AlignBottom, Qt::black);//优客助手正在启动中.... //同时创建主视图对象 IhuApplication application; splash->showMessage(QObject::tr("loading module data...."), Qt::AlignHCenter|Qt::AlignBottom, Qt::black);//正在加载模块数据.... //数据处理 application.setup(); //显示主界面,并结束启动画面 application.showQMLWidget(); splash->finish(&application); delete splash; return app.exec(); } /* a ARRAY 数组 b BOOLEAN 布尔值 d DOUBLE IEEE 754双精度浮点数 g SIGNATURE 类型签名 i INT32 32位有符号整数 n INT16 16位有符号整数 o OBJECT_PATH 对象路径 q UINT16 16位无符号整数 s STRING 零结尾的UTF-8字符串 t UINT64 64位无符号整数 u UINT32 32位无符号整数 v VARIANT 可以放任意数据类型的容器,数据中包含类型信息。例如glib中的GValue。 x INT64 64位有符号整数 y BYTE 8位无符号整数 () 定义结构时使用。例如"(i(ii))" {} 定义键-值对时使用。例如"a{us}" a表示数组,数组元素的类型由a后面的标记决定。例如: "as"是字符串数组。 数组"a(i(ii))"的元素是一个结构。用括号将成员的类型括起来就表示结构了,结构可以嵌套。 数组"a{sv}"的元素是一个键-值对。"{sv}"表示键类型是字符串,值类型是VARIANT。 */ youker-assistant-1.0.1/qml/img/zh_CN/title/home-active.png000644 001750 001750 00000006767 12312451003 023755 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe< IDATxbO,_a,dx?\@rR=>vyȑ ゚{S&=(߽Ə w~f`PKޚ/~FqŹ?@82On_ m@ĸd_Ի?528 k'hB@;7#Y$|&?KԗwۢAkEdopH0Ey7/ۛoy@laqɯo\/32W0:}X3+?}#'X-߸-'G+P$R~f{ٳvRh,("ABV/'O>38%?|1.n.>ٝѶ^,,,E8}C*ӷ_:^vsA>egw. zJ& 11Bv>pOfvvSzjP2~ez>n+z.P53*@1?- ן ?]@~d7J 䍸Q{ٯ?j \2|Iz<9u5~^u.bHw:}fh'eoٹy|׽ HXN6\O7@6EmAR-@p|No*8Lv2|/.OzX喀\XSu:D ԣRy2g%T;=AqJq_lQhޣp1sfI)5iuQ$ ["#J=q޺$j3Ld'B7lh zzYr=:p U,ڝx"iIjlneSW]C4Kh I"xV'1/B`ޑBBJ䁤(ymI$6od'M׿N'W.[-{bxfbi'(s"hiŸjaCɀ#E96h*a#VkXš~1 aS5E4<9#嗚%u-#h^7Ȩ"$c[[LU>3svv}"mzhj15&ʋИMM|D-ik4XP{))P"nòaggv3V P K쟜l;?!N>v BQ6L "L"%m=he*CvٔT,%G=6Al%}<-.' MOc'}O5Sa}fNOm;ےb 'eb3h޻'Ipw}}d2TU\"J>. , A iRY̛ìդMQB@Q%w+!ͺ錖:n g9}@=Ykm? uK>5C PZf`YN컝uray}!^-n?E^(]럘S +Ps܍ Vd~?}$~T%҈wB{'6}+TYW{eWGkݮ/n#KPjeL Iڭ~h(ČaU!]Ҿ;GIZ~3$`%mSdONj;9aP2($ ;P45] >V;wm2ayrX-ҐGHQWg)o]L(qϨMk[š[h1n݄alP3a}2%QL<)WPy)V2!6j.\<_5 ^~:J}zэlqm@lju~\[)A mEN^4׼(U%=@I5H;Ӊ. */ #include "quibo.h" #include "ui_quibo.h" QUIBO::QUIBO(QWidget *parent) : QWidget(parent), ui(new Ui::QUIBO) { ui->setupUi(this); this->colors = new QStringList(); this->colors->append("blue"); this->colors->append("purple"); this->colors->append("green"); this->colors->append("orange"); this->colors->append("red"); this->colors->append("black"); this->colors->append("white"); this->cindex = 1; ui->bg->setStyleSheet("QLabel{background-color:" + this->colors->at(0) + ";}"); this->show(); this->setWindowState(Qt::WindowActive); this->setWindowState(Qt::WindowFullScreen); } QUIBO::~QUIBO() { delete ui; } void QUIBO::mouseReleaseEvent(QMouseEvent *me) { if(me->button() == Qt::LeftButton){ this->changeColor(); }else if(me->button() == Qt::RightButton){ this->close(); }else{ } } void QUIBO::myshow() { } void QUIBO::changeColor() { if(this->cindex >= 7){ this->close(); }else{ ui->bg->setStyleSheet("QLabel{background-color:" + this->colors->at(this->cindex) + ";}"); this->cindex ++; } } youker-assistant-1.0.1/qml/func/common/private/GroupBox.qml000644 001750 001750 00000003261 12312451003 024307 0ustar00saucysaucy000000 000000 import QtQuick 1.1 Item { id: groupbox implicitWidth: adjustToContentSize ? Math.max(200, contentWidth + loader.leftMargin + loader.rightMargin) : 100 implicitHeight: adjustToContentSize ? contentHeight + loader.topMargin + loader.bottomMargin : 100 default property alias data: content.data property string title property bool checkable: false property int contentWidth: content.childrenRect.width property int contentHeight: content.childrenRect.height property double contentOpacity: 1 property Component background: null property Item backgroundItem: loader.item property Item checkbox: check property alias checked: check.checked property bool adjustToContentSize: false // Resizes groupbox to fit contents. // Note when using this, you cannot anchor children Loader { id: loader anchors.fill: parent property int topMargin: title.length > 0 || checkable ? 22 : 4 property int bottomMargin: 4 property int leftMargin: 4 property int rightMargin: 4 property alias styledItem: groupbox sourceComponent: background } CheckBox { id: check checked: true anchors.top: parent.top anchors.left: parent.left anchors.right: parent.right height: loader.topMargin } Item { id:content z: 1 focus: true opacity: contentOpacity anchors.topMargin: loader.topMargin anchors.leftMargin: 8 anchors.rightMargin: 8 anchors.bottomMargin: 8 anchors.fill: parent enabled: (!checkable || checkbox.checked) } } youker-assistant-1.0.1/src/qcursorarea.cpp000644 001750 001750 00000004523 12312451003 021165 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qcursorarea.h" QCursorArea::QCursorArea(QDeclarativeItem *parent) : QDeclarativeItem(parent), m_cursor(DefaultCursor) { } void QCursorArea::setCursor(Cursor cursor) { if (m_cursor == cursor) return; switch (cursor) { case DefaultCursor: QDeclarativeItem::setCursor(QCursor()); break; case ArrowCursor: QDeclarativeItem::setCursor(Qt::ArrowCursor); break; case SizeHorCursor: QDeclarativeItem::setCursor(Qt::SizeHorCursor); break; case SizeVerCursor: QDeclarativeItem::setCursor(Qt::SizeVerCursor); break; case SizeAllCursor: QDeclarativeItem::setCursor(Qt::SizeAllCursor); break; case SplitHCursor: QDeclarativeItem::setCursor(Qt::SplitHCursor); break; case SplitVCursor: QDeclarativeItem::setCursor(Qt::SplitVCursor); break; case WaitCursor: QDeclarativeItem::setCursor(Qt::WaitCursor); break; case PointingHandCursor: QDeclarativeItem::setCursor(Qt::PointingHandCursor); break; default: return; } m_cursor = cursor; emit cursorChanged(); } youker-assistant-1.0.1/qml/img/logo/Manufacturer/TEXAS.jpg000644 001750 001750 00000006114 12312451003 023670 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1qAQ2B !$1A!QB"aq ?ǒ˒J NA/´QDxT/AnwQeI|Ǖga-a-DK V2r7*+E=<~յp2҃K+A.;Q [Yt_0qYE~!EXKQGRՌ\ ʊOOmEew /+JK:A/BDu]yVvr߈QV@QԱc+-prS[Qz  `̢ҹ_/ujoHg:z.=OǾUS y77#çݞmw# z95H]M3SOP95`9CiNCD){@CTՏ>~b%u ¡~" pۺ.K<;o( j (X@Z9Q^b)_\a/,]+nXSp Me)3<0 9ǙcR ͫ aT;ݸx_F-~:֎w+?<xiO/.8ٔƜ' ڍ`T{~9l=N2dHE3h{>U"XǦFUEkt`+ ^ٙlr[uu(ӣ^4]:?#woG 8sYX1oͽs*־>e fK)"\ a&#(1Bz[%Of0\2q/c V D%H>6&Cdb]MGȶweȹV`3O̿S^H3cĩV[ӌ^.R%U fHfO-ڦ{q>Ǧ<ߖsOb<>&c\Q*jFTYL:gNSb1yHk0~]rH^S7F2MtyUS>F*5IUQreQrH:4W4(rčwVŬdKcrUc3q ɘV_x'}>3ȷ]8"gh~Ls)cslӓaIJh,ҏe#ۊ)ZƇ4 C 5+XJ`NQ*k+w,O !?8Ȅ-/yTV3r&f76)SB(U[S(>4m)՜`((Sl)eG($S^25(*UYh$zi?͐Ν=:Jq?N/fIrxϐYB]N\晳ƇU|uRʥӊ4,{7h5Ĵ:jZ1/#)a8b(-+`d$$XYUU qSO3i^`^EN SեDYٱfut5$9l!9^/ v4ʯg4?;)ontjJUUuIG}`8 mD R= ki2ƚR36X:)Th(ݣя ]cE[_~{j\#i7%:&K'DۢS%W+A.;Q [Yt_0qYE~!EXKQGRՌ\ ʊOOmEew /+JK:A/BDu]yVvr߈QV@QԱc+-prS[Qzi-].K(1; ұD㺎KPmEA%U\Uu,l -X`1V^ZKWq˒J NA/´QDxT/AnwQeI|Ǖga-a-DK V2r7*+E=<~յyouker-assistant-1.0.1/qml/func/common/behaviors/000755 001750 001750 00000000000 12312451003 022335 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/func/bars/000755 001750 001750 00000000000 12312451003 020012 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/HYUNDAI.jpg000644 001750 001750 00000005122 12312451003 024103 0ustar00saucysaucy000000 000000 JFIFdd0ExifMM*1www.meitu.comC     C   F] }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?S ( ( (P{XiMU_h~⿃ $]o(tm5;;mu z) (OM'N\ӭJtAaƨ_]"xfєѤ= #YižկnuGQx<+7ӁM? <;6aw{[0K*thcGP0khq\t2.by}t͜%R;1@Z\}WK쫪^ܾst=FiW=?nE'ȓXE ~4qz= ~|= ?iԵ7ws$>v >zx?@Ͽ6v[)P&|:{!*2\r2{締Zw:+hE.vb'Ytց g<z;G4;y߈:|E<4Co t߉=_LJcoդ=H6pa ly`X? MOe9G y;^t=ğ~XQ(z tk>>TW#pGҀ (^|iKec EqazyWgRxmž/Hݕn`m*Ӌ[Ƒxg!0fܷA@Jk QBm!gۑ@w_{m"/ \xk[%~}cTL=kU4;-B@AFap= ՞)c-e%@EHPҀ,P@#}@c㦓>.ݍc.ovEW%FюyJڅb$8W_zf*𕥥hrB-ۺDęqCtCRqn 7߃bt\׼)g 5mnnopGХJ忊?~k>?ӵ/kWRx2K$clڮKRT/#kzaaX€ FoC<)imnSb$Q(htP,@@94uP@P@P@youker-assistant-1.0.1/qml/func/cleaner/FileModel.qml000644 001750 001750 00000030654 12312451003 023057 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id:root width: parent.width height: 435 property string title: qsTr("Quickly find large files")//快速找出大文件 property string description: qsTr("Range:1M-20480M; 1GB = 1024MB")//大小范围为1M-20480M;1GB = 1024MB // property string scope_desc: qsTr("Tips: No support the path contains Chinese.")//提示:暂不支持中文路径。 property string btnFlag: "largestfile_work"//清理的标记:largestfile_work property int sub_num: 0 property bool resultFlag: false//判断扫描后的实际内容是否为空,为空时为false,有内容时为true property int lar_num: sub_num property int check_num:sub_num property bool check_flag: false//true property bool null_flag: false // property string yesOrno: "false" property string directory: "" property int size: 0 property int deleget_arrow :0 ListModel { id: mainModel } ListModel { id: subModel } //获取数据 function refresh_page() { root.sub_num=0; root.check_num=0 var largestfile_data = sessiondispatcher.scan_of_large_qt(root.size, root.directory); if (largestfile_data.length === 0) { root.null_flag = true; root.deleget_arrow =0; if(statusImage.visible == true) statusImage.visible = false; root.resultFlag = false;//扫描内容不存在 } else { root.null_flag = false; root.deleget_arrow =1; statusImage.visible = true; } root.sub_num = largestfile_data.length; systemdispatcher.clear_largestfile_args(); subModel.clear(); var num = 0; for (var i=0; i< largestfile_data.length; i++) { var splitlist = largestfile_data[i].split("<2_2>"); if (splitlist[0] == "") { num++; } else { subModel.append({"itemTitle": splitlist[0], "desc": splitlist[1], "number": "", "index": i}); systemdispatcher.set_largestfile_args(splitlist[1]); // if(root.yesOrno == "true") { // console.log("is yes..........."); // systemdispatcher.set_largestfile_args(splitlist[1]); // } // else { // console.log("is no..........."); // } } } root.sub_num -= num; root.lar_num = root.sub_num; root.check_num = root.sub_num; if(check_num != 0) { check_flag = true; } mainModel.clear(); //清理路径为: 清理用户指定目录下的最大文件,节省磁盘空间。 mainModel.append({"mstatus": root.check_flag ? "true": "false", "itemTitle": qsTr("Cleanup path is:") + root.directory, "picture": "../../img/toolWidget/deb-min.png", "detailstr": qsTr("cleaning up the maximum files in user-specified directory, to save disk space.")}) } //信号绑定,绑定qt的信号finishCleanWork,该信号emit时触发onFinishCleanWork Connections { target: systemdispatcher onFinishCleanWorkError: { if (msg == "largestfile") { root.state = "LargestFileWorkError"; } } onFinishCleanWork: { if (msg == "") { root.state = "LargestFileWorkAgain"; } else if (msg == "largestfile") { root.state = "LargestFileWorkFinish"; toolkits.alertMSG(qsTr("Cleared!"), mainwindow.pos.x, mainwindow.pos.y);//清理完毕! refresh_page(); } } } //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //titlebar Row { id: titlebar spacing: 10 width: parent.width anchors { top: parent.top; topMargin: 10; left: parent.left; leftMargin: 10} Image { id: refreshArrow visible: true source: "../../img/toolWidget/searchfile.png" Behavior on rotation { NumberAnimation { duration: 200 } } } Column { anchors.verticalCenter: parent.verticalCenter spacing: 10 Text { text: root.title font.bold: true font.pixelSize: 14 color: "#383838" } Text { text: root.description font.pixelSize: 12 color: "#7a7a7a" } // Text { // text: root.scope_desc // font.pixelSize: 12 // color: "#7a7a7a" // } } } Row{ anchors { top: parent.top; topMargin: 20;right: parent.right ; rightMargin: 40 } spacing: 20 Text { text: qsTr("Please input the file size (M) : ")//请输入文件大小 (M): font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Rectangle { anchors.verticalCenter: parent.verticalCenter width: 50; height: 20 Image { source: "../../img/toolWidget/green.png" anchors.fill: parent } TextInput{ id: size_text color: "white" anchors.fill: parent selectByMouse: true selectedTextColor: "gray" focus: true IntValidator{ id: intval bottom: 1 top: 20480 } text: "1" validator: intval } } Common.Button { id: selectBtn anchors.verticalCenter: parent.verticalCenter hoverimage: "skyblue.png" text: qsTr("Browse...")//浏览... fontcolor: "#086794" width: 94 height: 29 fontsize: 13 onClicked: { root.size = size_text.text; root.directory = sessiondispatcher.show_folder_dialog(); if (root.directory != "") { root.refresh_page(); root.state = "LargestFileWorkAgain"; } } } Common.Button { id: bitButton width: 94 height: 29 fontsize: 13 hoverimage: "green.png" text: qsTr("Begin cleanup")//开始清理 anchors.verticalCenter: parent.verticalCenter onClicked: { // if(root.check_flag) { if(root.lar_num > 0) { if(size_text.text == "" || size_text.text == 0) //友情提示: 对不起,您没有设置扫描文件的大小或者设置值为 0,请重新输入文件大小! sessiondispatcher.showWarningDialog(qsTr("Tips:"),qsTr("Sorry, You haven't set the file size or the value is 0, please input the file sizes !"), mainwindow.pos.x, mainwindow.pos.y); else if (root.directory == "") { if(root.sub_num != 0 && root.null_flag == false) { systemdispatcher.clean_file_cruft_qt(systemdispatcher.get_largestfile_args(), "largestfile"); } else { //友情提示: 对不起,您没有选择扫描路径,请点击"浏览"按钮选择! sessiondispatcher.showWarningDialog(qsTr("Tips:"),qsTr("Sorry, You did not choose the scan path, please click the 'Browse' button to continue!"), mainwindow.pos.x, mainwindow.pos.y); root.deleget_arrow =0; } } else { if(root.null_flag == true) { root.state = "LargestFileWorkEmpty"; //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"),qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else if(root.null_flag == false) { systemdispatcher.clean_file_cruft_qt(systemdispatcher.get_largestfile_args(), "largestfile"); } } } else { //友情提示: 对不起,您没有选择需要清理的项,请确认! sessiondispatcher.showWarningDialog(qsTr("Tips:"),qsTr("Sorry, You did not choose the content to be cleaned up, please confirm!"), mainwindow.pos.x, mainwindow.pos.y) } } } } //分割条 Common.Separator { id: splitbar anchors { top: titlebar.bottom topMargin: 18 left: parent.left leftMargin: 2 } width: parent.width - 4 } Common.ScrollArea { frame:false anchors.top: titlebar.bottom anchors.topMargin: 30 anchors.left:parent.left // anchors.leftMargin: 27 height: root.height -titlebar.height - 37 width: parent.width -2 // width: parent.width - 27 -2 Item { width: parent.width height: (root.sub_num + 1) * 30 + 30 //垃圾清理显示内容 ListView { id: listView height: parent.height model: mainModel delegate: FileDelegate{ sub_num: root.lar_num sub_model:subModel btn_flag: root.btnFlag arrow_display: root.deleget_arrow delegate_flag: false // main_check_value: root.yesOrno onSubpressed: { root.sub_num = hMark; } onCheckchanged: { root.check_flag = checkchange; } } cacheBuffer: 1000 opacity: 1 // spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } } Common.StatusImage { id: statusImage anchors{ top:parent.top topMargin: 15 left: parent.left leftMargin:610 } visible: false iconName: "yellow.png" text: qsTr("Unfinished")//未完成 } } states: [ State { name: "LargestFileWorkAgain" PropertyChanges { target: statusImage; iconName: "yellow.png"; text: qsTr("Unfinished")}//未完成 }, State { name: "LargestFileWorkError" PropertyChanges { target: statusImage; iconName: "red.png"; text: qsTr("Exception occurred")}//出现异常 }, State { name: "LargestFileWorkFinish" PropertyChanges { target: statusImage; iconName: "green.png"; text: qsTr("Completed")}//已完成 }, State { name: "LargestFileWorkEmpty" PropertyChanges { target: statusImage; iconName: "green.png"; text: qsTr("Completed")}//已完成 } ] } youker-assistant-1.0.1/qml/img/icons/list_item_pressed.png000644 001750 001750 00000011446 12312451003 024251 0ustar00saucysaucy000000 000000 PNG  IHDRN6iۯ pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FQIDATx9D3k 8\p'l8>&J RgxozUk~Wr>Kx}VDy?UF,) 6?EPJR8b>Oo10U\ GF`㞊<GP8|L>W.i'c SW"SDdL'86o ЖZW4*:%1ue1EPNwTQ/idVAg=L(Jv\BqW@"0P$Ww*;aR|>/0OX7# Qrк$#aF1c_=)_`!0 s*jYї,ʹ\si!ҙ"@)E~ dk 0@ŷ+ʹ+P!ݐ <4`˴|sS-hSdB䕻ux:RZfO5TGi MR9 P 5;[FDi^7jK=RT 3@~#SyrjFХ"'XVU1t$ʳl80#h>3>+Rҫ;{%Zs)tu/g3/nZ47fԅ3ܩFyrs=v`ҎZss ֙ёr-;4Tϛeshެ N7+']^W}`(`9STMNf~gesӴrJkJ`1*L4ymaYM)R LX}p/eCen] kUejPJy>|؁*$AKє2guӼÏDRm\|\Piz_Iennq&Frh25j_EqvReZ MiNȓ7ӑ4"8Fm,}9Jx kn͟F P=aU^5:{>#&ɴ tW0ڧ=]Ť8uy9oᙖѡ:DWuFm49&e:ѳ/J$yҶI;s?|7۔⬎r)/'kWѿK81:²9[xep^Ĵ\jL@{T%dNÍFy8iskiުlBf?8`#Oޝ,⍵w*8}.X]Y=fXo;HUw O6孎_\&u% 9V-Ԕa><(y-_}SGsQy&poUZzVCxPDklq5QݔtO hϤ63-a S15*ݨN0җr>uc;(d ԟۚV>Ҳ1\dβ4//IQRSx*blGgL.W\UT?Vr `ch#2JNe^ T4TBԕ"{@#ؤ Gb xHW]K[L-87^Vs4X!a}h0ս߲G_77T(//.\L8z-p[KAm ĶD&m{픱4Ҭ˟ؙ/zrj fĦ/[V_EIENDB`youker-assistant-1.0.1/qml/func/settings/FcitxConfigtoolKey.qml000644 001750 001750 00000027625 12312451003 025224 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "../../func" as Func Rectangle { id:fcitxconfigtoolKey width: parent.width height: 475 property string actiontitle: qsTr("Appearance Configuration")//外观配置 property string actiontext: qsTr("According to personal preferences to set input method skin, click 'Previous' to return to the personalized configuration.")//可以设置自己喜欢的皮肤,点击"应用"完成设置, 点击"上一步"返回个性化配置。 property int flagCheck: 1 property int flag_i: 0 property string h_fcitxSkinImage: "" property string v_fcitxSkinImage: "" property string currentFcitxFont : "Sans" property string set_currentFcitxFont : "" //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //温馨提示 Column { spacing: 20 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Row{ spacing: 50 Text { text: fcitxconfigtoolKey.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } //status picture Common.StatusImage { id: statusImage visible: false iconName: "green.png" text: qsTr("Completed")//已完成 anchors.verticalCenter: parent.verticalCenter } } Text { width: fcitxconfigtoolKey.width - 80 - 20 text: fcitxconfigtoolKey.actiontext wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } function refreshFcitxKey(){ skinModel.clear(); //set font============================================================ //将系统初始的全局字体缩放写入QSetting配置文件 fcitxconfigtoolKey.currentFcitxFont = fcitxcfgwizard.get_font(); fcitxconfigtoolKey.set_currentFcitxFont = fcitxconfigtoolKey.currentFcitxFont; fontStyleBtn.text = fcitxconfigtoolKey.currentFcitxFont; sessiondispatcher.write_default_configure_to_qsetting_file("font", "fcitxFont", fcitxconfigtoolKey.currentFcitxFont); //get font size======================================================= var getFontSize = fcitxcfgwizard.get_font_size(); if(getFontSize == 0) getFontSize = fcitxcfgwizard.get_font_size(); sliderFontSize.value = getFontSize; //get_skin_list and current_skin================================================= var getSkinList = fcitxcfgwizard.get_all_skin_type() var getCurrentSkin = fcitxcfgwizard.get_skin_type() if(getCurrentSkin != "default") { enableSkinBox.checked = true flagCheck = 1; } else { enableSkinBox.checked = false; flagCheck = 0; } getSkinList.unshift(getCurrentSkin); //js将数组第一个添加unshift进来的 skinModel.clear(); for(var i=0;i5$xF&ĊyP2ؗ a\_ TZUm]`ӌ BajSxP e;zCi^ CzRpuP3C邃;?/EB75&xKi\(^jmDkCh9w2NZE(=d"I(٢@p,/E]JJ^#Hˇ0~?AH K(<`_qٜw*)=('QrKBAЍ39ܗJW Ok(26 aQOEιۇ~ mX&Y/4`ʕ[ݍ KY||^ *a,o.ϒB%3mOhe|q1 N^Et~8~B_ w=Keߑo/^?.1 aIQ%/ 0 }bq5JxzJ mb.E:pK$Ƈ8sB? On}/]l{gϸwlA30ktၒ  b0$J 麛5]ڗ"2wbOykӢʕ}W^cKdĹ@e+R!6eK-Ɏū"ٍ˱ZenK_Esӏd" )ۅKa]6RK;!1`b{VX)|iBMaE2~4$S̤)ʹ.T!&7.a4K* ѼGY U@# 2dEa #V`e; 8o5%x-ieQa- k_,V -2l"[ .淒qD `HWJ.k,ᡊ0nᳬg~hl݂LȌi5}+?.nbrbnTyUe(YJmԐ]j0eC|,:>[y eR񐩛ᰙ#q[*$N'i>kg˳պ],%}$;_ʖ{ga4i}ןy n3Ȇ-c&IENDB`youker-assistant-1.0.1/src/devicemanager.h000644 001750 001750 00000002150 12312451003 021067 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef DEVICEMANAGER_H #define DEVICEMANAGER_H #include #include #include #include "yprocess.h" #include "util.h" #include #include class DeviceManager : public QObject { Q_OBJECT public: explicit DeviceManager(QObject *parent = 0); //得到硬件设备及其驱动信息 Q_INVOKABLE QStringList getDeviceMsg(); signals: public slots: }; #endif // DEVICEMANAGER_H youker-assistant-1.0.1/qml/img/logo/Manufacturer/RALINK.jpg000644 001750 001750 00000047575 12312451003 024004 0ustar00saucysaucy000000 000000 JFIFHH(ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:03:14 14:01:45]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOB߬=Xfb˭uKO?tΕ[mf;]qNִ{J~ 8B81ׇo|A7h1jf\%q]+~YΝ,E2M^:y]f'87a󽭫D搿&\^0}?Yv 6c1g4TwGWCWUfׅSn5S=~~sTi?:F5C?in6VP.pɭ5OpN _).A8+$x_1weK5[+{[i9y%?[zNOX▋^8l4:A쿪Ejm c\~{6? FC.)Jr KZUz,\ &f;#fZe+]sgsSV۱:+/[c7Ui]3xuY.%n7[-/5RZݭֳoZ?1e"Uz82Ü,<'v=Qժ}_.pɭ5OpN _).A8+$x_1weK5[+{[i9y%?[zNOX▋^8l4:A쿪Ejm c\~{6? FC.)Jr KZUz,\ &f;#fZe+]sgsSV۱:+/[c7Ui]3xuY.%n7[-/5RZݭֳoZ?1e"Uz82Ü,<'v=Qժ}_ 1 93 70 1 72/1 72/1 2 2012-03-14T14:01:45+08:00 2012-03-14T14:01:45+08:00 2012-03-14T14:01:45+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:208f50b3-6d9b-11e1-b399-988578345a81 image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~KIPmǽTW^8\~ީOn΢#w|>g '~e+ou1>_o:v'-O6C4 e!aR]W^-rxK?YIi7%3UqZ[%O$i3D:ԍ$WN ؛q+?̞lm?ôIiꪶ%,cQrc?.$Ml3ZJi8}:?xySye)qI,RIV =!|l- ܸ|f6[_tmqY,tm,D!F_ٽݶD[tiM)Rj]@KՓ[ kGLLTn GB5ݜvvW]ċV!}:fek߷l2%Tq7O4}w[%~9f ]P#K|Xu|Pᨖ2 $6|ܙu~w_"xJpP >wt乚 q$/#H%"@p {q^Tgmt',?|0uo_cr4%No𘍏Y)2KG"W=R8 9vNT"nb2̵UK~cO]At otn}-Yo6=xu+QR¨\@q:;63{Uu^km|^`){GM #CE20P/qe=D3'Ėwclj5:gmwwXWMoVŒ~B:MMzQKdk)1չ,dOGCE;JyX O+eEROͳoq+I6r#$⟙7FXެ̍j}( zmk1S *5[y]smͯO\}Fcppd%#AG&N*&s܆OnA$}>}'n\(' 8෶5JM6Tr*0պ>-:LuV\xB-p}Xn-fHJ@?exV[Kd:I4ϥ$M:G 1K+qEj^IdXc`UZ@TMHlͱ5wtyW-81iӊ]EU))ndA<+b3Ld?hc{W m֔Ofmay䲙љ]Sd1"g1  6}\&wm/)xjTL*jZˬvݤ>Kix"SFty½l/!Y71X^\wƽ-{K-04ݍ}I* '$SWRѝexR>^mIT"eJ5;2BPq'3ɶrFEo-~ڕ0|T Ѫx`W7ϊkf펾ob]ok7S9xܦ?63umy3jԧ#yxC2 '9˔ydwdVP +UaV|*z9 Ý9{j[Չnw&J KB2p444k2φ|{] .J9{O'&58UiQGOGvh"eW~Y}nm2N z@A(['ieDEV8ݼ> {IfNCߖ_>͝Yu_dzҷw6SE7U6+p2u?eZ:JXT5;%w\^&<"A2VE =˘,_6ܭhrPxRi0 j|F;?]vvc+۝g֝y4Uϓd2:} QHx]y(w?#n[͛[rĖPZPP{_߰lܥ˖\5(!I  <]?;'+1}7Oݱu}}]x .^-8zoϣcmz2$tY 1oG"V(V@~6 1\T:0گa[@yaHLj>ޠ~)]~Ȯ\r=mǜyNcʋ%)s|f/OMw3:ga0أ fSf.Bi1S*6`Wmi94k{>4+^_r5\"bEf=9r=Mz?=ֽ ^Y}Sظl >ٴ`r?k/ =*"tc!O'm{}$ԂiUzǝeZj+heR(4#:hJ*zW|;휞S_6:6_16cnw3Fշ:buĐ(C"grm -VP-\O\sou ڙ$R*`%18G?+zq{쏒uw^a#"dirLut8\nUpX^Rl!o$~ g~S?:佰tHZ sٚ Ef豭Ut)5r  E\Λ^Ѳ],єBMԓ<ʻ{8Yv⇪S6Gn7pu[0~ﬧjlm'.3mn|XR>& zH 3 ,Q!;m{庶^PXjV.i\Ҿx){gc&Xa;[9+1>`u?k٧Gb#FVCB/xc_ߞIu5U+Y _Gct^?i1=~o^9~׺SsJ@ }׺袛}~Pghk^V}oҽq1FH%"'+ǯqDE {BOEz\|Q''$:Y5=wO#ou"I֨=:_ʟ.AJyuߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~youker-assistant-1.0.1/qml/img/logo/Manufacturer/BROADCOM.jpg000644 001750 001750 00000055225 12312451003 024201 0ustar00saucysaucy000000 000000 JFIFHH ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2011:12:02 10:23:03]F&(. HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJ\_֯}CS֛]%?hݾ.yuc?}bdSE͎&t~Yb'GcкfszOh/`~`B ~ Lq] 6$I%$I)T^0nVa1z_dx߮6Շkz9Y"n;Vo6qbJ}%♿Ynǹ =Anmmk=޶xj8ܸ=}.&<ߚ/&oϮ#Lq:=[1ELcYٯof^O+qjׇC"}Kw}4K96i<\7V`욺K~;]/hm|PVf3>7K2>>L`;v};ڋ I/"w7;tfupvE=V{]k 9IO^_UY]1*[KA/3c:Ljq}85m5'nqw=[V'T[mnn26msV(M -u>a7܄y(DJsiPTc.YerJUzGs.ķ3!+"Lѵvm]OC7ulhe&"ֶ<lvnwt5eP=\maݽ?خT`?bcN&}_鹀f=_UzwTgTkl4 k]m5آ ;ًǃ19g/ю7α}Yj32zYSrGkCvA?Hlz_[x5߻OW*븍`p*M5UXjnmc@h.a0?Gd2C 3CAc,s˄Vx.o= z?Xwbc49d[Z[=XS>Xx-1ޭkS19V92_d?kGMT/ǮȍԽG7?eԡ~=__/; =a{ݹlb?G/ٿo[zgzJ뤾/6~w.'& d8q8K;zdqb89Og?Z9ü- . w-4Sg\;ϧK/ݷ}G5ޯ~?Yԭu{Z^ևu/߶=__]GVgWFDu:~}=o]['h(gz, 1ak_}>wYj,-꿶X`D;Sgt1(l2&n_I+T,?(?m$z^FnOڽg^hyavYUbѱ+h]axY%ij\&Qc\_,ZNGWH;C!iSDzSPYC_]ԕbԎ(}wFgPʫӊǐǺ+ i {>#e~_VI: DTʩ$ꤗʩ$ꤗʩ$=~Dϻ)/RI'wꤗʩ$czݳփctwȋTI_Photoshop 3.08BIM%8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM?F]g*h-7]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FL JFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJ\_֯}CS֛]%?hݾ.yuc?}bdSE͎&t~Yb'GcкfszOh/`~`B ~ Lq] 6$I%$I)T^0nVa1z_dx߮6Շkz9Y"n;Vo6qbJ}%♿Ynǹ =Anmmk=޶xj8ܸ=}.&<ߚ/&oϮ#Lq:=[1ELcYٯof^O+qjׇC"}Kw}4K96i<\7V`욺K~;]/hm|PVf3>7K2>>L`;v};ڋ I/"w7;tfupvE=V{]k 9IO^_UY]1*[KA/3c:Ljq}85m5'nqw=[V'T[mnn26msV(M -u>a7܄y(DJsiPTc.YerJUzGs.ķ3!+"Lѵvm]OC7ulhe&"ֶ<lvnwt5eP=\maݽ?خT`?bcN&}_鹀f=_UzwTgTkl4 k]m5آ ;ًǃ19g/ю7α}Yj32zYSrGkCvA?Hlz_[x5߻OW*븍`p*M5UXjnmc@h.a0?Gd2C 3CAc,s˄Vx.o= z?Xwbc49d[Z[=XS>Xx-1ޭkS19V92_d?kGMT/ǮȍԽG7?eԡ~=__/; =a{ݹlb?G/ٿo[zgzJ뤾/6~w.'& d8q8K;zdqb89Og?Z9ü- . w-4Sg\;ϧK/ݷ}G5ޯ~?Yԭu{Z^ևu/߶=__]GVgWFDu:~}=o]['h(gz, 1ak_}>wYj,-꿶X`D;Sgt1(l2&n_I+T,?(?m$z^FnOڽg^hyavYUbѱ+h]axY%ij\&Qc\_,ZNGWH;C!iSDzSPYC_]ԕbԎ(}wFgPʫӊǐǺ+ i {>#e~_VI: DTʩ$ꤗʩ$ꤗʩ$=~Dϻ)/RI'wꤗʩ$czݳփctwȋTI_8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2011-12-02T10:23:03+08:00 2011-12-02T10:23:03+08:00 2011-12-02T10:23:03+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:0e0a365b-1c8c-11e1-ae7e-db667b27342f image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺZ4/~SVtǭڃ0[g'عm邭s1aǂZEz䕪p@X8'};ifDQaZ+(#t/Ϸ{C{e+y#̛̲jʵZn3 HwC #[/ T$m< )?o<`*2,)TIP.yE5m9|;P + xl~`ZjPEOF=׺Bd_c&>Gs1;{ M_7E>b~&VzYbk&Pt#EM#~?c7(]ilSm=s6srEQ-JŤHמy 'v ¬M>ʜt]ɾџdC{]/ٝsؿu[[Q6>y; MYO$ Uye,z(fb Q˕+0}pr)k}mK#\cUR:x##{t$P0~c?Ʈ9_{'k`viS~Acp&tcu;& %=%d5RߺUK;il7oI>dvG^Kl nͅ׸VM5y;yTF H{)ݟϐ4{{!]Wlٙ]K?5{nJ3{K;E1YT,T1K[Y]=)6Ԣ=je$.vI\UT8颫VXrs.d Yg}}Z=} ڄOH4̔"ʊOHQX{Kn,/'x|{#ߝ]\+}h#7av6jITtZYNu ]Pxk?o!;= ~`ؚÙEe4@YG 8z Žv/&fN>"0__蝕_Ը\p3kcwک Z6NdX 'F*) B8 tH~W"sw|Z/GtP^xuٲ6,߻nd(s4{qMX詄8*:UX)=; :T/Og~a V_Q%YDW`C0P SRc)=>sޝ{ҿ*;7;vn{das{bQbTU_ܾ\Łkl5>b \$Y[y2أ%R;Z4 e-K){Cg Vtw<a{ VaZO^}}g9܎Fض8!pҵBgA2 ͡ 9{~鬗e&;c's#JŒ ,ncBɊ,tzJs1UI׬wǠc)_Mu"S{{;}yt،^ic0۫id/CѪ*+᭣#DtyZ7-7k5]MF<eݿ~w^[ڒV֝%kr3{jus|>ωaҽj]n~^Ow'0LligIOT($6,J@#z]=٦×M4,֑M,oRđV2h+\?O )ߝ&bԵ`vuÿM7,j=2{^h0|v>HFHh [X'V>ru˼7,C$VD]g}ǿq^osQubexβ9Q.-փQ|~U-~@?,aˋlޣVⲔra2remH6g-zJWf$I/inwɸo)J j4ܟ>{M5J˛;}H;$lXr̷2biDbɲ'\겿zl&.d|UQP&kjnhmgw44k歐>x;'3Ҟ{/&{Y M0LIJCA 8,%-7km];;iRIDlx)ғ HjqsZ9i)#*cɬ'54~9kq?zkK=0.%  W ^{v&ev[?:embYu;k%^R<,HԸ@{X䜟icS ß^`oyl{>f-wPO$- v"  ?W;S?/V;S%tWdMzZ}Flgggw7W^'ܟt|O;ga:Sk77%3d9W^VǒǴB=퐢iU_)#^#˾#;/-ۘ\mV7fl)*o&즆9MW`}׺m8fvN;Wz߹Nr=)Uw.ms+MRvya2\n7#8G6W^{'r-7K^ym>5nsbS 6l#CZHRZ rb7ӱ7P6$NEUڪX+eW8+aO_2kߺGߺ^׽u~{ߺ^?4Zuckֺ|_Uz-ߪ=zU+JyR)g_ߺ^+QࣗQmfY0k|SQ ZqM&8MW: ^Ww%[Tҿ\C{q{3y;n|43/ʢњ]k.ꓮƫ %"/#jm47-ݺwRbuf\kjںҮܘ )3QSaްd#ϭ4TcMj| l־?{GvT+u!>ӤPzd׉:w9hg{|Y$-1FbM@o2:.rwLsvkvSb;5kn>ԡ)iaqdx) CifV)"<"xv+tܬ/ W)o`1#žJ@y--jH;=}4.ݹ*pn[7Ȋ967 Kǵux3v٫ڽ3.zpm)jWZʲ]Jעxuj:J~ک}wtsn ī$OllMK>%mA ݣcQ%eqh6cSqص?su}K`:ZsNљXFbx-BAVOqy}?<{s%<7%_x\;Hd}e@BL/)A'ytҏ`~7_tkӣwϠ| 7kuWW׏QݴH<_ѯtqvuߺ^׽u~{ߺ^>+_?ɾ?ׯ׫WM;)|z[~kfVztyhӧ<{Hu{_ߋegO ~_ [V϶υ-t Na~>ŧgO)蛯youker-assistant-1.0.1/src/image/accelerate-bg.png000644 001750 001750 00000040044 12312451003 022376 0ustar00saucysaucy000000 000000 PNG  IHDR  ̶ tEXtSoftwareAdobe ImageReadyqe<?IDATxkAƟHXmK*5Vo((8x=9HJαŒmConz ð(u`:ڡ:ZDo s ;; `eh䶌bIäV39\h򥁋q< ]ϗ_ Y|֏*leS=H;{-N}v IRhhih}C! _RcCG?@H[DZ(MJٝٞ3Z'!Fn ga-,t꛳~f-FF3|6<ۧlظ݆"TZm@_bE"#X >!j 64<OjV lR@~ȈG B|cW+pqrL)JH!ϓ tH|Auۙ `rGC1I!}H%-TKk0ԕwC^qebqVfiׇ98XgK@N S0;H3_QH>Y]{suatZ^,Wc@` !  *"Zx#ϡߖVز0.@T+R:גR*@ %ǒU|jbԈI">333hzN/]1TvX*(K} 7…<|ke;J_ ?+ob^`82]4!wơmɃ92ҋ򌔝e2lO*TO# 10̌@P̜ >ї. qյ)wkn l @c*2Ahw Ng$7ۍ 𵎍c bjj󅅟nW]/cY Hpl_[!Ӯ%ОShq  \NUk **ӛͪ*`1SVѰ"xaY?#ӈ2|ڵ;#9QBhq#۫U8A/\'a$CKuc0:;;ՆoL<;ေd}ǹ_5;ɇv:s BGđ B 4 B 4 B 4[Khheg< ^Me%$"F?/{qaI]s%=Yv*'b݁w{xw{U= 4 B 4 B 4z3y{4x ';// A$ŁmVgڏu "l8N@,:!88t|xu KH~o>}/q% aD;mjɯsdyAEmG "km㺢w3ÏhQȦ,٢-9Mn] * ]fe  dMlҠn6Q6FZ!Xvc)ɔ,;ηHѲư$=xHsϜ{ߛsod-SN=;::d*N>[]]Yr/g[eK-i{`зQeXgiF4-n(r?z|Y1{ AlMRM[ 9cN +2\-z}GR=Q:ݫ̚r lxo)WlRtO|$Zd+u'tאPj5jlہ"[r }z ¿ [kb]џU\=k8ӡ;"ZU#R=\"E]70pRɄAIat/sD&.HpRQ_6kdNɊ/а1#{^08',jg{X"R)!zYpP4{Qͯ‘)xb?\_H77A] v~i/\\6X]QQQ .F g L&7\R·kyQ$P ,߅U6h(UIt2kbJ[S4^y lQqێSD hJjQsCPUBK;;*:V %`,UZkSNhs1G WiR T!$le4;O Idҗ./߂Ѱ|X4{F'pCuRH#@B n>. atĭWɷzR'^?64mR n;z_^̈́E/ {1N $B0d320⨬ǣBw(E m >ba*z|āф<2jL ^hm^ʎ=R=+ {'|i4OKѺ))[2qFҍ .x>CsQ;|, 5]'h~k#14ٹKغ |^ @gQTz5EďBL\! >0]Z= VRJF$ ΂`O>0Sxp^S M4 $Ka퀏\yr @SQPl^dq6ԻMySO'$36̻nS*%48>dLBR2Jܴ=)ȁk׳+jpjj'O7\R]2N<3D-4Stbe"6a#.,hxZ:x~T7I)v{_HD "DIABAk(B ')D @ )D @ )-~/_5!_<ڻ l=)~v>Ӷ&{kۚx:6)``ߋlHqfi?_o5~ {a˭޵Ρ!)A<3@dm+2IpVb!LRMAB@ )D @ )D @ ) v+ٓGh9&&/›?9m.ͨxK{́qmT ie˲h90N޶ra|z'bTl))K*k''vF),\m 㴭J69s-h=O>S|MMA RA R|MI R N)R "b>Hhv<>]ku>".\ҮVòc#p(Zc]G)$@~i$p`$@ (((F"jc ^뽑V%oNϹw宝ƉK90 {g=`߁n7HE ]9߰3*ݘޓeرcycH2ig3LV-9S{_~[^.R#xW e쩧:OTq<P._::-:$,>{9u\1X!;?}=Mp]äaLZ=cԵ^x{@X۷o?x嗫lR oިk ( 7lˀ=BMeЧGn<| A$ŷvObng9G+D &DoN3O<_Zb>0Ua"Ɗ:.̰ # 0`jn{k^H޷?$}.N;zT2"ܼc sT U0Qc]@RCϙRt=U/jQg~}IʈL3ͦkK2?_MnQz$[H$L$jDD M> |HDoހNUȮ]p|cBO3ϯ`jknUTI d#Mt5r]n z_$ חΜjn;AL $122;U,/w`f"/<2d 3Ph#48RLiB&BlC} dݠ衇prEJeC5h(`d KdTA,3ČI,#i&7}' t$f*a5l|~B{y6[-+u+Pr=lX" l*Ɣ&tH:#Il6 |AjkHBIH&mPWXz.}GǏRUҳ@6lDt@aR2zKt)Q< EL)T7i4TfJH...[^ k-g,MQq⨪Nb3~ ?j}RO׫MeHeRӃ/+m.NɡD"Y%(;>EyxLB6ΆU6iZL X0FZF1TC^dAJ⇪jIX*!i$kpx}}aʘ{%!r׫.~+S,thsb|@] Ip]פBVաPjdu2RЏ5 M\xIuen(&$72ՔжUC"^XR)Qv^*@ "jPAWT&UA(Z-Gk*R ZPA4VPfĄH+e-wbUǯ= %R ~e#;1&؈";J9٩aF2PL]SѲ-0R"H<JĩDLzKCK! nf:%d U0e!d3M):zє"B$͔ pőӬLTr .$oM=^i\kC:؆*/RUvBq[הiBH!\Xo*# eiKQO@TK2>t5wRSR%"c!#;A ?6|8- =& D’e(n-B,IdgY7TWRNUR4JJZRA(ߠȡɿȔĈ!B:3$15! @`t4lK+"45@Ő5hb@(B=Hb5D.˜A$u ;bI]/ m!z!O̾}>>4Rtaȓ7-$+ؖLlASXP}< /iG@ZkB -Uorhssg2,58_ƔMBg@uU& $L2I Ku ɸ# ˥bqy=i#l{DŽ\m[{[eRp=L3P]ل2-+V:KJV9i+M@r4 JBSOC*(4qeզƧCCㄱRS3h~㟼l6A!jbO,MϽTb(a>ávBt(;9bPR 5Hj//:Wv~G7xfc"B$9 eܜF^HHu 2 IA6titXLjOZO5j\MC(Q:Ni &ٞ9+uqS$H$4D *; 6!o2JPDzJ%BJpa}g~Oa 5'4~xY8/,H A{ .bh"*^D)s@cTagT_&VOL^!4מ7zĉo/E- VUBPHR%SwjLAq.-ʙ">e#Ek__:tIK3HePP@Ͷ) JuR3##DŽ Ezbb?zq5NW7\xm!SH eIv.5cjpBtڇ[w-Z8Z0nѡtq'xwuדA$"kRfrRߊDH8 b1H1h~ѣG9rOod*u",A%ܨ+C `";!> .^}XMLDnAf׋FGG!^Oo{ųN 4%=脠9t]my֜ +' c :n 1mB0#L.;\)2Vz2L`0!L`0!L`0!L`0!L`0!tT=5?E!|@wUB|.s``!!MЅ^߹y'q߿rT//llrP !BYԛ֗^ > Jtక:6\!4#4B\gB?64H=zKϮ\yHBJ3 )>ꦇsf9e06).Z;qk֑?["#k)#o4`d0!L`0!L`0!L`0!L`0!L `B0 &wÆ]01y~r{m !>/QQc}plBP;Od`>91&!!+DA,nca($)}\Q:L8Bt? \~a3k!>\bZ& B3y| HmD aE<G1KE1&!" xL~7^. :L&fTqtP?T9_)Ίҩst L읳iպUů{ !h@} 1飛 A2Xe0`vkH. X7DW (v TL cadh!;ASU,\eĸҴ)> ޹U^w׼gkk4FAp(64K R+CQ#iP"Q"PG!RBph!cy{ݙkYgvΝ;s\덴jK !r2 |f25T!^lJ9I[TȦ=xȕ侻oScbd"~p"  c߱coz{fM.JZDLT D44PBeqY7#:MLUhy- [ Fif׷vMsό`$l@$DFd(|˷mPj|5$ LP<צ\ʣb.%<ak7/{Ley08U!BP&F@4U ,ZELz8R0\??CGĘi H R =#}^WPԄ6a/f(pw^Wu(:F2N~L{):ryDK$ Ui[4 ĶQ5ã%}HoYMbA{>us&Qb& w}f5rU͛0ZޱzriZ[^eʬ2xDųxF+ ^12ae}HJ5::Yf0+|7yϢJ'P N$C5k?Sr Fr\G˴rZ+ePp$b 6ag# 0H4_)B7R "}+"4xbi[XT_#=+Ϳ"NgyBXg>s}/>8鑱)*W*P "zc"q6 Ѫr{yD)P1S +YC 9.__+gF"SCzt!LQd'OϦý324 xYo%4k_JTnD}Ilx&'mb7*$/.`^?1P+<8Ax3A&0FfOR<#w'>OLŐ^+x$pJl:9/صu _m32ĨnMЊnPbN7rpq?G*9sؓ'0ª#[ q+k""esPރ)l̕t*Sy+2p֌Ȅw}͛7ȿb2'!DB:Y EdyHxU@+ e u 33',:p2S5<f],$vpJTYr:fBzx*QJXL;%MҰ݅Yo)$L?u|)qqQ9{ٗM(ɳ_O1Z?"1yb9J(sx;tK30aDBkX$(Y{ Mbf*kA^KVxggyzeƛ?^)r] 9x]ұ(aMe8Ai,KO{j'j"V* E\4{qD2!FX,\__4\61GKZ6˽mX&9 )}_V6 @=9ucfHȼDhE50zOl9Ejm-_`_fmBw1Wz&˰[BأÈ9ʥD~WsT CZuL@y^C#$D ̮]wi\uF*Wea@BVjC&%m?[b*ʰ^hoɲDʳD'!'cI˨TLXVz}FxOrrRԙUdsw\"p$YKz-CVjjXh|B(VVpqb?MقCՊjrMUP5á 4ĢE4}=Z*ˆ e3zu'Tһؔɥգ!9Kxlo-Y%5#)¦Y^.mEA ѣT/J dCY ]A96XNE~n=c3T̳K±tA:qҒVEX;Rd>k}.R<={dj2_5?JՀ@$_QHx7t CRFdI/BΊŐ&m*ˈCkvf=A; W'ʯLgJQPWo-p:VKώLίZW\AeFGۈDB(TիW=Ga4";e'?T%mPᇥ< }?T^[,剥8,NZVu\*770SC+֮ =u=X~"37H$Ģqݍ~_|7OCGLq).rLQh_!9MaF)2Aě>E5k=*ϭ. 6oc3cQ&grO$Z uݻwzdddlozϚЎ'4QF *v͜KXk7fnmhOBR͍hSmze)o?^VGbXHx䥵Zwu׍[lPR[BR3{ȧ2SeY!7a['8o^%Ӑ=/07B7㹉?T!X$nk6b!Ð뮻m;v8#a^~t&!іmcy˛eٶ+hF]CE 4X\rR_ܣC>&g-ׅ8"pk69 Eo~^ lw1PiJȌSϩVB؜iG-[s6u (-Nx%L69پzw`+9Жn)?XH y u1d߭z^u2F^ĦJ8=R,W'$ߠH IkJ\9眳}{e###+RRh̪l9S(DB7B2KyDoNH, . <3Rf?wx6.fV2n HyJRu\%@X<] 4(UdƼns_OW` i[^sӋ!-p;KЬ "?vع"aͿag n, :I`E*D J,I`  D@$ D@$ H "H "HD@$'hKrDb1M$”Ihy#'+pp\ qO7~y-<R]_TmY8k)b/K FEX[:||pC^>p|+i{/,F>d"1pja- M _6tHt. |D7^aME6«p螟ymwvᖇ^X!$KzS20V~?]y}m;SZ.H82D{#3嫶.c"TßV-y|:,!eYÖ,BZJ~!5Kŷ޳  7^_ Xf"񽏾m[a '#x_WDdMOZTG!P&./AN  D@$ D@$ H "H "HD@$ DСr_:lm]Uڶc[&qo4"xU<{;?ʉ7AȉsEV$H<}p! mOag{ cL 7lka8U ?dc 2ٶS2ܐ7ߡB 0BS`'ב"!} _>ecg)i>[cnD""^zǧ iOL\x}NB DR "Q9ylE-Il/D^`8g vع:G(  |,0R4q:W$"3qц=/mgdͯx'bN/idvpNbpwl:*n 8{&:Mtj&.Pw ax찃 xtv'Aj/a{,v'anpy %CxSӓXh `-p$Hav"Atn\}O_+q Kb!rJIENDB`youker-assistant-1.0.1/qml/img/weather/n13.gif000644 001750 001750 00000005441 12312451003 021437 0ustar00saucysaucy000000 000000 GIF89a008Z³ʱȧĶ܅ǹεӽ-O.P0RϺ/N5W7YBYxɔ³Ⱦ2T.O5X0Q1R/M2S0O7Z3T1O4U3R<^!>a9Z%Bd8Y5U{4Rx9Y9Y6Tx:Z.Ge:X|]X5Y}3Uw7[4Vy8\6X{6Wz8Z}8Y|?Yth{ƶʻϳ0M1M2O4Q3O6S5Q6R>]9V;X$Dc'Hg'Fb+Lk3Y}.Pp7[}+CZ1K~_CR`4DDc+婓>_t̑(*f2(z*ؑS|4va h8ǎcq8"|#7;ATN9XN.h9 4O.ѣ r14hn[Nʜrց H:SO?cNPC .Qh6uzQ)8;>C 5sRΝw1窬ZjzG:?c<aDr1ne1MÚRkzT[->m> +2&``4HsD+aF/tJ<΃=B `@ P@A]TFo,L<)3Ol SP0a.h2G!}xq]t.W`bx_t IJ`IT3vиZD: `5܀ t)cAIBxАu{cH`7P'n:m &㌣:DBax *lp$XB15|(?KpX &[`bk4Ƙ0,\Ϣ%pK|W.8`| R@4BP!?D l; #!p gɁsԀp` 6+a H5w4p 02, =a-jaC[&0`w6660J E40*jq@Q8l@ԠZp e(:ڑ)ȀJX#(oqMTOXh@N@u&-y6n![Ђ˛ \)j@d2qȑ&d&-l!r ✂C%nLF: B\(\f<MԠb ̉s:"B ,2 PM{js?50X !RC1nfմK;`D2@051Lz.LzR] ⨄E` B L qpw7{a AaTA QjAFPJ0V@0a-|'a /XG`*ABK8*"C xc_1 \\# BV ÝHV JT Xq>Bc [D,K@% 0pZHD,*Tk <e_b]yQ b@ `5Xa (!F:pP @X"7h"a( ! \07lahNA\B'p`$,"F!E"0@ G*0<JC9эJ H0c_8DfcX/@`&Yp  E7 > # & @,,HXlh'#, K" H4N dTX&MR p$v[{`qjH@]` Ee[y@/vQg&$B @.z( M(DbݏEiM(zp-aCb5]g(z7'q :ž'>is:ېB:P y x܄Jh< ;youker-assistant-1.0.1/qml/img/logo/Manufacturer/UNIKA.jpg000644 001750 001750 00000010271 12312451003 023652 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1$AQB 24%5v7aq#3DdtEu&f'X"brSce6VƇ8 !1AQaq23R"4t% ?G4 f,ZϊQ[$+k*V`cUXzO&:]n+Yp-[rպB&UZx[$%cZAfk[Gm=UBM 2KJbSFTdfťsN9 m-DH-Kqt<Wc@'=쿽?v^nY*~;Ry{jb/U@]a9 |zQX8ZPm|9QCg6 dݝJEavFqu`qx&NZiÏȍ244mbHGik}} Gu|ъPPL5hyew߶ڮa3rE&J N}fmj=5v{n `[G/(Du<} =KR5JQ4#?-YE7ҿaU ,_EM+>p𼛼1ݖ{|ީB`rڢW5!,w]p h.SjzWUaE>H)@?T k"@ i_*X`XkK{o\ÇnWV %z@cR٢{,^P=󹿒DO6G^˄[| mM۷~ua/Bzn j5:vp˚n2xl A 3g( MH[W王bJor̭KXU쎯7T$5"%M6yJÄ%'3exhM(hWp| 4%qAo.$mI@Tzx]k_{>؜vRR_1cH=H&z9Yepr:KAMCËs*;/x§qO:l {瘨ݻLiYi$j[ixc+ TҐ #xg7 |H5TzڶuI[hȓYsP9i|Ѿg?VfEQYEO_h<=΋[jǛ[xe|ީIrڢW5!,w]p hkOɄ@-e-YE<.0[J^hbt=xm{ xV-[qʺneAZ[fFT&o`+U[h9d{֎j fZoQKY~f^:TcE8D׷bHY\,ŞnƠ M2zDO("W{1;0ng;{o<of㞌y?\m&hWڣu3&5#ulKFѨr{Nڒǀ6ϋi))9)9 8LO(97p^+Κ]7i8]3 S#fO%&[2iv\ ]]Z^c(,r50ޯf QbJOw%v_PCau^ї)v 5cwӄfx.|~ %z@aX0iu-"a{jiV\ɜN]|XE?n@G_|6GWی9Za/l5Aڍc Dikewpñi)r#PWUpSn="eIR`bS&[T$'*Z[},?QxC&^>bc˪R7 %{r1w Ŗ]&ٻM&PWG% fmf ;,K-J6HFb7&ZBxlTGf aY%RPX&M!<EJs+kx>nËgZt/}#j^T7,w]p hfd:Qgwpod%{Ob 1ҫfbԊMgtR5EP3|BMH~" y_8J[ޒNwq%9 ari}C5`c>Ʃ'5׋$fz 3KĀzﱐ&DOb >mwz-~i#9<>^ %z@apXy{4ŋcy:]kfQ > pod=P{Ob 1ҫ5ТDZӒF~&5_%0㍢QHCKd % #À o/(>3bNJcJ3Q)*9cGsi[tV_7„EQ"Qp@|4USI9w\vx܏S 7]+'=]E% }< Sۉ:g 0,?%X䄷BUr.sqXx(.m*{)]K:E:1ƴLAP5R@C!aPX0iu-"E:>VH -tmUr:-=PZxSx9k*6:.~_e^nhrG!ŞlٷzGN}©t&c#\ZBhvŽ( u4f8h*ƭM>4b/6pC;G^jr5ݥP@>U4$k~&PS[Sg6TM{{1^F|o^8M֚kjqyj?\#AkoD5qk\ߛMz{`1I%vջizAEsV/:(qP@9zc4RCpEfvT_/4CZ)mjR(n"PrjS ҙvUM!f)**!p]pyouker-assistant-1.0.1/qml/img/en/title/toolkits-active.png000644 001750 001750 00000011406 12312451003 024260 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<IDATxbO,_aLdxQ{G_ct8_aj1˻w^~6҂zSn pf=vMXUB;[0Wy<ժ+(qÝ P0OKf3}u?=p~U 3|]<24}Wwt۷ss~1gqcO^F{bA9 woFI.`LH Z*,S-2ypwA8q_}bg`p}}zgc[i&:utmEЊ:hua_n |b3Y K}WTKK7 U<{3C_lu|~15N\FQB]}?C=_pŰ2#M^_.q%'#7IKJ]k#,jwUWfx&ÃLB o30(a+st Hݤ7OYy~Y ԟf,Z Q-߿,kV+;{ZUay5Vk0rƺ&2$ տ ozAM/00.zV?La;ZBZ `":D1H QD'E@nEc4 h Ēkw޵~ X(!-=l›DHd(])4s-__uڴd |~lL.b[A>S4t*\hBnpC]<,̯hR*H찁uI yW^|Bj—UN*;G$ 4E)<^N_6!e۔i ˰D^hW4h-.Z^c:PNSKp t󡲛gkHID,W[JC;_k3YTxeYsV8|b}/gTtoRN1ALTJQRK&tOg!z {`E]Z߻dxkj1yDT-M?RAY86@'j׼ڻp@۳LP옆x[l&W'Qb>Ҷـ6lDWUS鴒gq(t}CcB *Vk߳.(g0B B(CQgu\ɖqQ''3*rQQّ|/.|{v#XiZ`q-eyKؑQ` jU*8@3_=2{:JFyqatn83jdSfLh#F)5t+}@Q-P-g"~9ww96=$) 6Vp?dpJV]sf]#0v9$+XvJNO lš]U ٝ̅Z]Hs)`R}B[||XNٝlP=0sWy,mpu!f\ HBR4"LA {Sm[ZVgq)ETs'Uz(N1)_̍#0'Gpכ hq^ JDI . ET a3P%Vle{iG?nN,zRPm!~)ÇCA)M-rF> qr*ʡƦO7zU_ !}Nf#Q7^>7x5z/+7݈yT < Z+zx|~1Z^h*>~~oVeϗ_7\jX"Vk]} oG\gfH07:.uvj\@vyKh< S9D0$c%޽8vWIT3`!G( )^[V;J[N9I,+%4rWF rOPg@HmP*i:!/ƦPlYl'/Q,`~!t<[!G7= c?̥٬Sߟ5-K_<6[Tu2sV33+-QC&fӸ"'W^.7ͦ"X)IB x,Wz d8NB"7&"D&RQPHmT)J"VԪjqZS$JjB|lm >;{̵֬UhIO;7}]C|v?pQ;lڽ3=~`2=&ڙ@㰞+8}}TCRƐJS8iL?eH{jYOo"T1GXM!tbLw}fb5)Izsc;+K6Uo@ZclU 5˼q[a)\ McӁ$3\FG|:A++fFJ>y]dp5?YɩnO+%PC[gQ&@jC3mlRrz1g&(\aQiY?O耟dS:5L-0YES8~$Xo$* 䭝KM1mÅq^tą)9t2YWc/{_ĹKY.φ2α,3`h6}$Q",*ٚKL2[4uNJD>2\ j Fd$b^  7Yl!<y#sUy|^MkW1yN=;Vʺ|JZ| <!!%@=nMNͰq4EۧufSg)- F^ !67(Lhb>Q4qM#um0y R 8e}!Ru3CEsN+FeAQoN+жsa~㾶޹ՎBwT2w6ls{\MƝ{~\Yy.8zU^J3-H5KG//.põY~vCE[>?^RK1j%]OvO]k2L❎9Z{h劆z"P^~//zjZ'JU2Qqyz:7I=4H9 6*35ꕯ]CޢkA ͖|NtO'\';NUUUB {t^4.7ۿi)oNW^SԬߥ.DwҐiՌ).p7NSژ~LJoUU^J _.玆8} 7TBJ,KG”s \?e^z8vk0i YH.g*7c&GSm90q9 X*vx (dM)q G^ XGIENDB`youker-assistant-1.0.1/qml/img/weather/d30.gif000644 001750 001750 00000005014 12312451003 021420 0ustar00saucysaucy000000 000000 GIF89a002q䓕fY[vFָA;yrĽD>}թ$kQXf/߰&BvG}V‡M6ne6td}BVAzA۪&tnԩjwۅ28sbJC[4qۭ"P|yI?|DRi*HB~q3U5q?zƲORG~r;we^ݬ"dQXšաc]wJ٬&h2yy耯Ȧ8vϮ?u`[ARj۱15֪,:AQ3U:p8u|C{n؅aNF3qܬ$MzJkC~q6X6s>zREr:ucޫ$`RY^j=wZG{J! xat.com Image Optimizer !,00DN*\ȰÅ '@!h$v*ةǏ C1b(J>Xʍ$aQ:D"'hytKD]ɂˡOy*D"J(uUׯJXX '׫z+VXu]%0.5uU@wݻ kˢvf ML]-hQXgNlU FB z=ꂧQ&[<_|%OΝ8| 2w"lXU[}3yD|H >09 | !Q%hC~JBЊ{ 4p _(9ʑ<'B$b{†~GQipe_YA/1F+n8D'.y!bliv n0F_|.d香PJ)jH}<0C })9 I{PɭVb뮕UG%JC %Gx9 2n1H >l>QI!0`[ R@k>,kj[IRrA{/Ұ/GJ;ܺF,ćD&0#ZH#p!&ʇġvQHʇЛ_":HzAHsr4') Llo%nQ ;g5AJLmve3 snQ[|Fv4+]7c!Ҡ(`5(h}xDTdDgK` a +v  @CLBE*Lq4@ @LGG!}+zCV` a(h*a,By !p-Hkb2YĶ' ?P| RЈ@w˝`D?bX@ To  (@;@ $TטDUXB F5M ~H+; d #0uT5`T6BxX a0?,BP%@r;Xd#$IX *mt >I]]X*\Jf8LW S@A8T{*;z.BL:yL9L!+f7tL+Kn:j,B߹~{'@` Ђ. HCF@@UɁ 0!5PCF+P.LUNwN9Hs@ dTvhABjx ըWi 5L*HAH! 2 @ LAO\JWKT^5X'@..hU`SL`ObXK0vQAjQçacKҚiju,P@;(hh a Ӫ5jQ L{éfz-fLP7%p6P($XBE~%.w pz]t4@uC] A Y$& OBvD0`AGLXXa<8$`'nq)8=1I!p;youker-assistant-1.0.1/qml/img/logo/Manufacturer/POWERCOLOR.jpg000644 001750 001750 00000011652 12312451003 024502 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]      1!qAQ2B $ a"R#SDb3C4Td%E')  !1AQa"B q2$U4t%5rd&v79 ?pDL594?'bA&، SQU@&AE?K ' % a ~QX鞥C:e1!ys)JPDxct ̫xw]qf1+e5vUG\fBYz1J⾛ȈHc 4hT&a.dy]OY6mwAtCJB(HLFHm9\kBֲX͔`]O*%6Jd)Ī!t$kivI) qnZLY5PW4$^?&z[xۤk%;=$X+YX[.wSʐ$?݂MۆwO0&}Ƃ)'M r|+dѐvE*tRC4VDڲֆTGևs4YN(.3D(G(2 jT ܛmvh? n[FNDY`wV:qDE=(}܄ػr[B {4qx0f=Q\tR/m47!?FIpPҕ+Ã;:Ƀ?3aG{ː+Dkc7qNeLUߙ HIZ?qM'+[zXRZ_b1e Kq#F'h{nOy~c8.Hඵw1\Su7NfG> %]+NduUjRM+R*t:un(e\m [ϧy?m>;Q'¯KO #Pݴ+QWpߔ^!NA2$BP*2\'v%W6k/ z6uG/(hyg 鼭A' l$HQtdY,z*'3W TβW"^ r8TgDŽ6yF6};1+*2yV*g;_],Nl۠ &ņ:ƘwB/\U"1ȹb}e-'YI N|_EM.4slE dB_ !mPҺ}J^[hk6^\jVpgOڣ )Tr/EiTJ as0{<@ڧyvSkJ%%H;N# %Z/NY'/@|7μ$"Sa!6o~lb;ZM1 ;3.S=Y [2uLG~!{P2u4-sgϖs=6E)ZVK&КZL߅e F˛V9q .loԇ4^-{N|u"$ rw%o[gA5HT@%3nAZAP'NA0 rf`?Tf(ȳn~chȺ]нթnWVa2k[2c::qجnx6ob"ޑ[(ZTrsSID]QO Z-Vo@Y&O#2z<~J_POnٌ2Nq `. cAzBEc/XsmL(J-;~u, B .*@ac3s2Z$:2gM Q}(ОZFI(u\D2d 4>Yi?rC~"Jxh"A**$hTo'k+Hm00|ZDsFdfa[.OI:l32$smޒ? hv\Paw#+Ln^6[p[ٝI섊i.5y5D Yߋ*"?ߺ}KQy$ ,7m¼ka4&(|?vZ6t 4HǕP];@@n"F ~|k0yrf.AjƎD.[Rִ6,\lֻ6;6Xg_Edp !޲i͐9xr:&Py#41hjv]mե׭ ޽)s{tl7kvNXdյulO_w]* m*Jibd,!$AQ0ēanÍSĄ)D@2zX1UܢiQɯU``uɦ bpM0M|ͮgm*v0fqUjRH,  .U4-=m^M>N_D)KrX: V `bew(?m.ORZ{qP-U"kRVYe-Ӳ9K)FGduXmxۣ"̇xWryOb\q ʹ55vyUɜ('GIyGP {ǰF^)m&sFwPu4`~nI;8U#[8*:2/| D!B"D!B"D!B"D!B"D!B"Dطa Ü1|I~:GaBOC$m\+Z(K5oD)' *{RKpkoHٲ~gM0PBOC[p˿fT^a=Y7,9{r/I֤ZF3Vq5$ז-+3wɔ[=ΑFeNs`ExەW#J*_p)Z>e,X[ɓRw/矿nr/D';˹rOj6"D!B"D!B"D!B"D!B"D!BsMoϠ( ~c)EH|q5Md-nEoz뙰o Tठ<–IL[ra"iqS0 XX*"2Gyɉ5+~{Z1k|'Bq*ӬL-$3s\+'Hi//a濶U=MYc]dVnqJ9-Րf8MyU my瓭zOe&ŧy/wpr#f.T.=>%Uߊm0J=k?Y*;+{6nd+C㘝Uv>|,}lqx {1u^0ȏB@! B@! B@! B@! B@! B@! B@! B@! B@! B@! B@! B@! B.{4 DQ_cY-,fɆ#[/'3Ԝdâjx5zCf K.T??#?1l]zuf6i=v#̦06-IfS:6eTc[-.G"2Zna5f0Q zq-^5TP9}ϏQN3ӓ~W=|5>' LXū%9kՁYR=lnSe8ءVwFBz#׌,TMI]:~( t6[l8Jϛ7Wp͕gbƥvaU8s[,~q(++:*Ew޻&"3Z ߊX.F0Dz~Si1턤d!ݚ -۟&&z4N帚FihԍY~mN#*T{)ɒxnPe#nv8컄|0AiEk:FEQ&[{i! Ga@7bXWLb$l;;!g-|݂G+rޭ3iR۵?`Yi,F)^,ʷ(4'O1TI!m2NhdeS- ̪y2֠ԍj,79'ђojzua7INq^TGO,~q ;FZbգyyeT>֓mۿ]XFde}Dg}3=Ka+lO'ݺU|DkΛB5OQ{؁oLo'Zn^|vΚS,k7(usfժ0b<-y,7^b̨( )؈,=^pOc+ŮfnT;/7}[|M^JIz.K]S@u䞗}Uo<Cru/Qsncy8'Z~̾h#+~[68QmץEEc$ b}SХ"o6n,P(GT7_bLL9f +}iuᢝGپ<ǭ͕}[j0O0b-GT;F^mEMh-ݑWh^K=וO+rYW 'jht4<{'jk3ҾV[f }<~7n[ed-ꩳCT9]i."C0ͲvP#o&B;p_D6~ꋧ;L>#vގx^1bC5]S~VlΎߎˌíգbצ{Ƭ|4S1f9{CT_ct1i6n}QGxZs}ZL % .yG[hፎg7j5X'>zg+χ~1+X-$jZ,hA>F {\}S̫DF췼dfCNr!}8Jv(oh텊ܬ89Fi,-Ř"[g:'{n|ytԷX_*~Hߣ൮+-75]4- n0ɶIEVC;zp961XHSVm+;J!68cS{x8pfmM鶖X\-6yF9sV\ޝZ2]%u'l>*NQ[o2 ̯\hY?߈SK=VSYQ;><}u##krڸ(gffzmg'c=Q_c,֊hkG2YE|<ƻy^fq{1y'<FaއS,*CG'+dA6d2KF }ơmDoQYh Ҹ0 bИ:z ./_m<޾gZɕk G>+gYݳ]Ayc9ű$Qݫk|lik AlXa[+]q2b"ε|&Cop4"f+cq~$0UجohRm~wsP߆|J{00T̵^1P.&) Vn}HE,6*et7_(6o-k[f{2{V9x k04.՗n7Ѻ}TS^)zUM,=U9X^8aܸᖯwn[+][׉y罌bpdT_Aw`dfNsքOpwmڵ֦9ZjM}w(“}TnD# xI[.]z|U\1+͇]}kes@ѽ$nӦ,qۖLiIe;v\!YŭyCkKڷ{Nz:jв3{RSݎgӣB#5$K{Rb[JsO:bL^I޺YAGeVf~x9_wⲕv+p|]~-XxJ^*߂CM u1.LQo/JA23.t'n^.=Ws-LxĢT fGW5I{(<kvxu1Xb/嵌a׫nmqi%֡St[\1n_mgQ=$o.Ee<Ċ v]XWݫY_[Z6Kgtbi_y1cZ+6Feqaxr EZQ\,YA7T-F<(-_ꊥ1ND4-dïii'.̦u,y`-ynK36yvy<,D[o/6IWhgX7s#  kv25QNk˘vYZUABu).Ç"ol䞴>qk.;f>SssWD1\] U\9|/kBxBA&9G`8 B!^zXzB0' G=! Wz>'BB愀BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@AA!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BBBEBB!! BB!! BB!! BB!! BB!! BB!! BB!! -_eq("=IO=pRR*7*%A*};> plVA9Xبm nBU/C?'F׿W2c{iE}}o81{{N@rJˉ=~?yrS™{%<ݚVW;Yfٙshs#o[7[ȑp]每]nWw-Wi'Ma3ck*>r\)P 6S w&Ƚ[`.%K}:A#o8Zr{ BXWYǶ}]CwdטPtjn9Ugn:m14|ة9y2櫅"?#a^| Yܽ:;erݷL Jş^lΉY"g^@kq,E4E }AwrT~qr5y󨎑ͯR`i0m=YloYw6jkXgt)nd}L+cѓUlǨ9ލUkퟑQ} 3c?{!h ѝt\9ww ޯ%u8:7{oe'ϓc'V:Wgl99j-O]PڛϾvѓ'"}oxǁ]|g6c)9ٳ?o ӸJ]mհ(`:jdܺ1dbn=ºfl1(XEq1 KUJ#6-?.W(-N_u{LٖWuxq;L7O"eSmXfJ;ٵôګ),dVQ*1IT5rkcQ3q urNձFnFeRCAԁ!D\^\*K,U5&T.WZ N_Q/\*RQ<ܶ=wif7'÷:ߞY?5%Zo_+ Kll?>,ثU9{UqLw⩫*AYX̦q̚?w{{$?g=0-X^aޖC\pc$$[Yh] s>J(!f 䦕ŦwjUǦќg: #In:Ge4g=*yQjNٕ͚$ZOn/R wUv#_=ڇu`]1m_ Ǵ72.@Kk.Mf).,Zc,h;})xںpεV:^6jdKi{=8WlmE.HC1~DON$;'cth/bow.[:׫yMq*ԘS>r&Ʃ5ZOgtrr쬜ͱxܾ=Vwˣ%ќ4q}~ߝw ͺ޽Qjcu|ch׌syKcf|T+tŶٍ#8r~n6I">.ӳ+c$W2xw\3~ǞTuCX wW?`3Z(;9VF:GbQ{]x|Tޘ*N#gE`5/PbXΜ'>r[,xd0҉#yڮe'jUvcUlg.fd*f/63KK7$%|L}^LΈY5c۔pC6v~jᆼ*ŋqW'lڢE \ş':OIPnwQ*q\}c~#5FBSq<ά}G~DsTyTL$Ƚ޳Y_J={bevm0=cgz>ouΎFsˣ|[ V[7ꚬEX:L;m?MXm4QN*>-1MݵΣ+lG[#=;7AYfTv|']۳vc;qo̚npM(0zb{X|e^>VgȪN\23Sfva:{ ܪpa!-7#ϾLϘ3z;=; ݱ=lWI{T׮ֲ~0;/ڔQ6\swZY#ݿ{?+};OߨRTWBOsnT^9$҄vU k3݇ZJvl_ *Us| n:ui@9ZXr'XhnIylkc*G혙&[bW}uY[[U4jI?Oα^Nd)Y*U1҇fXԻo7ԟ!OޕR 3Cۊ?3ʉ2mh)Q~&!6O h. */ #ifndef TOOLKITS_H #define TOOLKITS_H #include #include #include #include "alertdialog.h" class Toolkits : public QObject { Q_OBJECT public: explicit Toolkits(QObject *parent = 0); //启动alert提示 Q_INVOKABLE void alertMSG(const QString &alertText, int parent_x, int parent_y); private: int mainwindow_width; int mainwindow_height; int alert_width; int alert_height; //本次alert的x坐标 int alert_x; //保额次alert的y坐标 int alert_y; //alert message提示框 AlertDialog *alertBG; //alert提示框timer QTimer *alertTimer; //alert提示框隐藏timer QTimer *alertDelayTimer; //alert提示框GOE QGraphicsOpacityEffect *alertGOE; //alert提示框透明度 float ao; //alert提示框y坐标 int ay; private slots: //alert提示步处理 void updateAlert(); //隐藏alert提示框 void hideAlert(); }; #endif // TOOLKITS_H youker-assistant-1.0.1/src/util.cpp000644 001750 001750 00000003661 12312451003 017615 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "util.h" #include QString Util::get_id_from_cityname(QString cityName) { QString cityId = ""; QFile locationFile("/usr/lib/python2.7/dist-packages/youker-assistant-daemon/src/weather/location.txt"); if(locationFile.exists() && locationFile.open(QFile::ReadOnly)) { QTextStream in(&locationFile); QString line; QString location; while(!in.atEnd()) { line = in.readLine(); location = line.split(':')[0]; if (cityName == location) { cityId = line.split(':')[1]; break; } } locationFile.close(); } return cityId; } bool Util::id_exists_in_location_file(QString id) { QFile locationFile("/usr/lib/python2.7/dist-packages/youker-assistant-daemon/src/weather/location.txt"); if(locationFile.exists() && locationFile.open(QFile::ReadOnly)) { QTextStream in(&locationFile); QString line; QString tmpId; while(!in.atEnd()) { line = in.readLine(); tmpId = line.split(':')[1]; if (tmpId == id) { locationFile.close(); return true; } } locationFile.close(); } return false; } youker-assistant-1.0.1/backends/youker-assistant-daemon/install.sh000755 001750 001750 00000003253 12312451003 025707 0ustar00saucysaucy000000 000000 #!/bin/sh backupPath="/var/lib/youker-assistant-daemon/" backendPath="/usr/lib/python2.7/dist-packages/youker-assistant-daemon/" cd `dirname $0` cp ./dbus/com.ubuntukylin.youker.service /usr/share/dbus-1/system-services/ echo "Copy .service file to /usr/share/dbus-1/system-services/" cp ./dbus/com.ubuntukylin.youker.policy /usr/share/polkit-1/actions/ echo "Copy .policy file to /usr/share/polkit-1/actions/" cp ./dbus/com.ubuntukylin.youker.conf /etc/dbus-1/system.d/ echo "Copy .conf file to /etc/dbus-1/system.d/" if [ ! -d "$backendPath" ]; then cp -rf ./src /usr/lib/python2.7/dist-packages/youker-assistant-daemon/ echo "Copy backend folder to /usr/lib/python2.7/dist-packages/youker-assistant-daemon/" else rm -rf "$bakendPath" cp -rf ./src /usr/lib/python2.7/dist-packages/youker-assistant-daemon/ echo "Copy backend folder to /usr/lib/python2.7/dist-packages/youker-assistant-daemon/" fi if [ ! -d "$backupPath" ]; then cp -rf ./data/beautify /var/lib/youker-assistant-daemon/ cp -rf ./data/processmanager /var/lib/youker-assistant-daemon/ echo "Copy backup folder to /var/lib/youker-assistant-daemon/" fi rm -f /usr/bin/youker-assistant-backend.py echo "Remove /usr/bin/youker-assistant-backend.py" rm -f /usr/bin/youker-assistant-session.py echo "Remove /usr/bin/youker-assistant-session.py" chmod +x "$backendPath"/src/start_systemdbus.py ln -s "$backendPath"/src/start_systemdbus.py /usr/bin/youker-assistant-backend.py chmod +x "$backendPath"/src/start_sessiondbus.py ln -s "$backendPath"/src/start_sessiondbus.py /usr/bin/youker-assistant-session.py echo "Build symbol link for service file" echo "^^ Now, You can run the program in QtCreator!" youker-assistant-1.0.1/qml/img/logo/Manufacturer/ECS.jpg000644 001750 001750 00000010371 12312451003 023416 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1! QqSXAa$2B34TH"#C%RrsDt5 !1AQUaTq"B$4D2R% ?Rİ!rAt9asFu}\m7EsQ]]Uk,Ԑ,QZSLIH\OI>WVDq0<-O |D?o6FIp'4.tDcx[_2K ͅcln~e,Lr2LL`re#}YW[@E8ܱGr -bkwo&rݛLS;%;ɗ~o7#n44N[ iʤO1}V%H׍2TO7Slq8R%^tP=<ؽSlqm.{)qz.uLp68RW /)^P}>ؽSlq6{)wz@J׽3/OV/s+Lh+MJzޛ|EB.[ZcGZmjS+j p6|eiݩO[vi~1V+s+Lh;M^JzޫUD[ZcG}kS } b=KƎ3֧;N^M8zeigiݭg\K*/,p .8ZB֍CΊ.+@I6h ۅah 8jqK5R .Tn}dԨXF1&)#FfPY}3OR {P2g\K%-ø 2Y9^KWZ\ԔohNCC<+(h0c֩DAQg5H_H9}kFQ2Q`1hF*0 X53g_cXY N&ceﱬv@ q\ŝa<-h^(-Er]z~EboQFVq8W@J4Ĝl]|UmMQ[>eִec.H)]1_SuWܙdK.P 3/Sqh/~z\/X)].N.#%7*Rf:U,~j3Xd4E(Hu< ʦ*Gol\pJ@>ъ[qXWV16j)ee1h%ӅqneByul)"LeeM.nݎ2b*"efM|"=prsTs0&"YD@?IJ9k:%(I94ˆ@w=y?SC^5V1L;1I4) fUG!Bqx,fXj_/kO]u:P)0"M|hPi@B%1-(RTu^V*^Ou7܉giD>Ya4E-t8M7s5uVz?Ճf:($n Ta<_*R@ZItɢRP/L%Tj&502OBJC1q8Dt^D,؛(oֱ>SZ>c X,et򡩋H2~ђecmu(w!;$ʭwPLH۴9aT Fed'fQ$qx4W)c]^^۽rxͨn\I[q'Lf3w/P~f\ ~p'0lZsڍ\3ncN{Qp4ANA/2ӞjGBp4Qp@p 2 Ew,2nQ8r| 5Ck!.hI=g3JiX5Bk#.I]6W^>+/5`lӺ^&֎ZqecV O˼k.{ץGK-j|R6]/ޓO-w]zTtY|M1{0PΓW-7]zTWl&ՃSvwL43:M6W^+^V_Lj]euwL4/]j+J/+/5>=f =| ץGJ헔Yg0 =| ץGJ헔6r 0Юu{l*]+^P|SnioW Ar| ץOv\kۃ7k겎 Q[L9h4M06'6wJw. 0n*Gvi icݰ7?HbKVcg, Q[L9h4M06'6wJw. 0n*Gvi icݰ7?HbKyouker-assistant-1.0.1/qml/func/cleaner/TraceModel.qml000644 001750 001750 00000071031 12312451003 023230 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id:root width: parent.width height: 435//420//340 property string btn_text: qsTr("Start scanning")//开始扫描 property string title: qsTr("Cleanup history, to protect your privacy")//清理历史记录,保护个人隐私 property string description: qsTr("Cleaning the internet and opened documents recently records")//清理浏览器上网记录和系统最近打开文件记录 property string btn_flag: "history_scan" property string btn_flag3: "chromium_scan" property string btn_flag2: "system_scan" property string keypage: "history" property int browserstatus_num: 0 property int chromium_num: 0 property int systemstatus_num: 0 //母项字体 property string headerItemFontName: "Helvetica" property int headerItemFontSize: 12 property color headerItemFontColor: "black" property bool check_flag: true property bool null_flag: false property bool null_flag3: false property bool null_flag2: false //获取数据 function getData(history_msg) { if (history_msg == "BrowserWork") { root.browserstatus_num = sessiondispatcher.scan_history_records_qt("firefox"); if(root.browserstatus_num == -1) { toolkits.alertMSG(qsTr("Firefox is not installed!"), mainwindow.pos.x, mainwindow.pos.y);//没有安装Firefox! } else if (root.browserstatus_num == 0) { root.null_flag = true; internetBtnRow.state = "BrowserWorkEmpty"; //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else { root.null_flag = false; internetBtnRow.state = "BrowserWork"; toolkits.alertMSG(qsTr("Scan completed!"), mainwindow.pos.x, mainwindow.pos.y);//扫描完成! internetcacheBtn.text = qsTr("Begin cleanup");//开始清理 root.btn_flag = "history_work"; browserstatus_label.visible = true; internetbackBtn.visible = true; internetrescanBtn.visible = true; } } else if (history_msg == "ChromiumWork") { root.chromium_num = sessiondispatcher.scan_history_records_qt("chromium"); if(root.chromium_num == -1) { toolkits.alertMSG(qsTr("Chromium is not installed!"), mainwindow.pos.x, mainwindow.pos.y);//没有安装Chromium! } else if(root.chromium_num == -99) { //友情提示: Chromium 正在运行。当浏览器运行的时候,不能执行扫描或者清理操作。 sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Chromium is running. When the browser is running, could not perform scan or cleanup operations."), mainwindow.pos.x, mainwindow.pos.y);//Chromium正在运行中。当它正在运行的时候,不能执行扫描或者清理操作。 } else if (root.chromium_num == 0) { root.null_flag3 = true; chromiumBtnRow.state = "ChromiumWorkEmpty"; //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else { root.null_flag3 = false; chromiumBtnRow.state = "ChromiumWork"; toolkits.alertMSG(qsTr("Scan completed!"), mainwindow.pos.x, mainwindow.pos.y);//扫描完成! chromiumcacheBtn.text = qsTr("Begin cleanup");//开始清理 root.btn_flag3 = "chromium_work"; chromiumstatus_label.visible = true; chromiumbackBtn.visible = true; chromiumrescanBtn.visible = true; } } else if (history_msg == "SystemWork") { root.systemstatus_num = sessiondispatcher.scan_system_history_qt(); if (root.systemstatus_num == 0) { root.null_flag2 = true; fileBtnRow.state = "SystemWorkEmpty"; //友情提示 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else { root.null_flag2 = false; fileBtnRow.state ="SystemWork"; toolkits.alertMSG(qsTr("Scan completed!"), mainwindow.pos.x, mainwindow.pos.y);//扫描完成! syscacheBtn.text = qsTr("Begin cleanup");//开始清理 root.btn_flag2 = "system_work"; systemstatus_label.visible = true; filebackBtn.visible = true; filerescanBtn.visible = true; } } } Connections { target: systemdispatcher onFinishCleanWorkError: {//清理出错时收到的信号 if (msg == "firefox") { if (root.btn_flag == "history_work") { internetBtnRow.state = "BrowserWorkError"; toolkits.alertMSG(qsTr("Cleanup abnormal!"), mainwindow.pos.x, mainwindow.pos.y);//清理出现异常! } } else if (msg == "chromium") { if (root.btn_flag3 == "chromium_work") { chromiumBtnRow.state = "ChromiumWorkError"; toolkits.alertMSG(qsTr("Cleanup abnormal!"), mainwindow.pos.x, mainwindow.pos.y);//清理出现异常! } } else if (msg == "system") { if(root.btn_flag2 == "system_work") { fileBtnRow.state = "SystemWorkError"; toolkits.alertMSG(qsTr("Cleanup abnormal!"), mainwindow.pos.x, mainwindow.pos.y);//清理出现异常! } } } onFinishCleanWork: {//清理成功时收到的信号 if (msg == "") { toolkits.alertMSG(qsTr("Cleanup interrupted!"), mainwindow.pos.x, mainwindow.pos.y);//清理中断! } else if (msg == "firefox") { if (root.btn_flag == "history_work") { internetBtnRow.state = "BrowserWorkFinish"; } } else if (msg == "chromium") { if (root.btn_flag3 == "chromium_work") { chromiumBtnRow.state = "ChromiumWorkFinish"; } } else if (msg == "system") { if (root.btn_flag2 == "system_work") { fileBtnRow.state = "SystemWorkFinish"; } } } } //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //titlebar Row { id: titlebar spacing: 20 width: parent.width anchors { top: parent.top; topMargin: 20; left: parent.left; leftMargin: 27 } Image { id: refreshArrow source: "../../img/toolWidget/history-max.png" Behavior on rotation { NumberAnimation { duration: 200 } } } Column { spacing: 10 id: mycolumn Text { id: text0 width: 700 text: root.title wrapMode: Text.WordWrap font.bold: true font.pixelSize: 14 color: "#383838" } Text { id: text width: 700 wrapMode: Text.WordWrap text: root.description font.pixelSize: 12 color: "#7a7a7a" } } } //分割条 Common.Separator { id: splitbar anchors { top: titlebar.bottom topMargin: 18 left: parent.left leftMargin: 2 } width: parent.width - 4 } //文字显示Column Column { anchors { top: titlebar.bottom topMargin: 50 left: parent.left leftMargin: 45 } spacing:30 //Internet browser record of firefox Row { id: internetRow spacing: 15 Image { id: clearImage1 width: 32; height: 32 source: "../../img/toolWidget/firefox.png" } Column { spacing: 5 Row{ spacing: 15 Text { text: qsTr("Clean up the Firefox Internet records")//清理 Firefox 浏览器上网记录 wrapMode: Text.WordWrap font.bold: true font.pixelSize: 14 color: "#383838" } Common.Label {//显示扫描后的结果 id: browserstatus_label visible: false text: "" color: "#318d11" } } Text { width: 450 text: qsTr("Clean up the Firefox history records")//清理 Firefox 浏览器上的历史记录 wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } } //Internet browser record of chromium Row { id: chromiumRow spacing: 15 Image { width: 32; height: 32 source: "../../img/toolWidget/chromium.png" } Column { spacing: 5 Row{ spacing: 15 Text { text: qsTr("Clean up the Chromium Internet records")//清理 Chromium 浏览器上网记录 wrapMode: Text.WordWrap font.bold: true font.pixelSize: 14 color: "#383838" } Common.Label {//显示扫描后的结果 id: chromiumstatus_label visible: false text: "" color: "#318d11" } } Text { width: 450 text: qsTr("Clean up the Chromium history records")//清理 Chromium 浏览器上的历史记录 wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } } //opened documents recently Row { id: fileRow spacing: 15 Image { id: clearImage2 width: 32; height: 32 source: "../../img/toolWidget/systemtrace.png" } Column { spacing: 5 Row{ spacing: 15 Text { text: qsTr("Clean up the recently opened documents records")//清理最近打开文件记录 wrapMode: Text.WordWrap font.bold: true font.pixelSize: 14 color: "#383838" } Common.Label { id: systemstatus_label visible: false text: "" color: "#318d11" } } Text { width: 450 text: qsTr("Clean up the recently opened documents in your system, to protect your privacy")//清理系统上最近的文件打开记录,保护您的个人隐私 wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } } } //按钮显示Column Column { anchors { top: titlebar.bottom topMargin: 50 right: parent.right rightMargin: 20 } spacing:40 Row{ id: internetBtnRow spacing: 20 Row { spacing: 20 anchors.verticalCenter: parent.verticalCenter Common.StyleButton { id: internetbackBtn visible: false anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Back")//返回 width: 40 height: 20 onClicked: { internetBtnRow.state = "BrowserWorkAGAIN"; } } Common.StyleButton { id: internetrescanBtn visible: false anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Rescan")//重新扫描 width: 40 height: 20 onClicked: { internetcacheBtn.text = qsTr("Start scanning");//开始扫描 root.btn_flag = "history_scan"; internetbackBtn.visible = false; internetrescanBtn.visible = false; browserstatus_label.visible = false; root.getData("BrowserWork"); } } } Common.Button { id: internetcacheBtn width: 94 height: 29 fontsize: 13 hoverimage: "green.png" text: root.btn_text onClicked: { if (root.btn_flag == "history_scan") { root.getData("BrowserWork"); } else if (root.btn_flag == "history_work") { if(root.null_flag == true) { internetBtnRow.state = "BrowserWorkEmpty"; //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else { systemdispatcher.set_user_homedir_qt(); systemdispatcher.clean_history_records_qt("firefox"); } } } } states: [ State { name: "BrowserWork" PropertyChanges { target: internetcacheBtn; text:qsTr("Begin cleanup")}//开始清理 PropertyChanges { target: root; btn_flag: "history_work" } PropertyChanges { target: browserstatus_label; visible: true; text: qsTr("(Scan to ")+ root.browserstatus_num + qsTr(" records)")}//(扫描到 条记录) PropertyChanges { target: internetbackBtn; visible: true} PropertyChanges { target: internetrescanBtn; visible: true} }, State { name: "BrowserWorkAGAIN" PropertyChanges { target: internetcacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag: "history_scan" } PropertyChanges { target: browserstatus_label; visible: false} PropertyChanges { target: internetbackBtn; visible: false} PropertyChanges { target: internetrescanBtn; visible: false} }, State { name: "BrowserWorkError" PropertyChanges { target: internetcacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag: "history_scan" } PropertyChanges { target: browserstatus_label; visible: false} PropertyChanges { target: internetbackBtn; visible: false} PropertyChanges { target: internetrescanBtn; visible: false} }, State { name: "BrowserWorkFinish" PropertyChanges { target: internetcacheBtn; text:qsTr("Start scanning")}//开始扫描 PropertyChanges { target: root; btn_flag: "history_scan" } PropertyChanges { target: browserstatus_label; visible: true; text: qsTr("(Have been cleared ")+ root.browserstatus_num + qsTr(" records)") }//(已清理 条记录) PropertyChanges { target: internetbackBtn; visible: false} PropertyChanges { target: internetrescanBtn; visible: false} }, State { name: "BrowserWorkEmpty" PropertyChanges { target: internetcacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag: "history_scan" } PropertyChanges { target: browserstatus_label; visible: false} PropertyChanges { target: internetbackBtn; visible: false} PropertyChanges { target: internetrescanBtn; visible: false} } ] } Row{ id: chromiumBtnRow spacing: 20 Row { spacing: 20 anchors.verticalCenter: parent.verticalCenter Common.StyleButton { id: chromiumbackBtn visible: false anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Back")//返回 width: 40 height: 20 onClicked: { chromiumBtnRow.state = "ChromiumWorkAGAIN"; } } Common.StyleButton { id: chromiumrescanBtn visible: false anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Rescan")//重新扫描 width: 40 height: 20 onClicked: { chromiumcacheBtn.text = qsTr("Start scanning");//开始扫描 root.btn_flag3 = "chromium_scan"; chromiumbackBtn.visible = false; chromiumrescanBtn.visible = false; chromiumstatus_label.visible = false; root.getData("ChromiumWork"); } } } Common.Button { id: chromiumcacheBtn width: 94 height: 29 fontsize: 13 hoverimage: "green.png" text: root.btn_text onClicked: { if (root.btn_flag3 == "chromium_scan") { root.getData("ChromiumWork"); } else if (root.btn_flag3 == "chromium_work") { if(root.null_flag3 == true) { internetBtnRow.state = "ChromiumWorkEmpty"; //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else { systemdispatcher.set_user_homedir_qt(); systemdispatcher.clean_history_records_qt("chromium"); } } } } states: [ State { name: "ChromiumWork" PropertyChanges { target: chromiumcacheBtn; text:qsTr("Begin cleanup")}//开始清理 PropertyChanges { target: root; btn_flag3: "chromium_work" } PropertyChanges { target: chromiumstatus_label; visible: true; text: qsTr("(Scan to ")+ root.chromium_num + qsTr(" records)")}//(扫描到 条记录) PropertyChanges { target: chromiumbackBtn; visible: true} PropertyChanges { target: chromiumrescanBtn; visible: true} }, State { name: "ChromiumWorkAGAIN" PropertyChanges { target: chromiumcacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag3: "chromium_scan" } PropertyChanges { target: chromiumstatus_label; visible: false} PropertyChanges { target: chromiumbackBtn; visible: false} PropertyChanges { target: chromiumrescanBtn; visible: false} }, State { name: "ChromiumWorkError" PropertyChanges { target: chromiumcacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag3: "chromium_scan" } PropertyChanges { target: chromiumstatus_label; visible: false} PropertyChanges { target: chromiumbackBtn; visible: false} PropertyChanges { target: chromiumrescanBtn; visible: false} }, State { name: "ChromiumWorkFinish" PropertyChanges { target: chromiumcacheBtn; text:qsTr("Start scanning")}//开始扫描 PropertyChanges { target: root; btn_flag3: "chromium_scan" } PropertyChanges { target: chromiumstatus_label; visible: true; text: qsTr("(Have been cleared ")+ root.chromium_num + qsTr(" records)") }//(已清理 条记录) PropertyChanges { target: chromiumbackBtn; visible: false} PropertyChanges { target: chromiumrescanBtn; visible: false} }, State { name: "ChromiumWorkEmpty" PropertyChanges { target: chromiumcacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag3: "chromium_scan" } PropertyChanges { target: chromiumstatus_label; visible: false} PropertyChanges { target: chromiumbackBtn; visible: false} PropertyChanges { target: chromiumrescanBtn; visible: false} } ] } Row{ id: fileBtnRow spacing: 20 Row { spacing: 20 anchors.verticalCenter: parent.verticalCenter Common.StyleButton { id: filebackBtn visible: false anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Back")//返回 width: 40 height: 20 onClicked: { fileBtnRow.state = "SystemWorkAGAIN"; } } Common.StyleButton { id: filerescanBtn visible: false anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Rescan")//重新扫描 width: 40 height: 20 onClicked: { syscacheBtn.text = qsTr("Start scanning");//开始扫描 root.btn_flag2 = "system_scan"; filebackBtn.visible = false; filerescanBtn.visible = false; systemstatus_label.visible = false; root.getData("SystemWork"); } } } Common.Button { id: syscacheBtn width: 94 height: 29 fontsize: 13 hoverimage: "green.png" text: root.btn_text onClicked: { if (root.btn_flag2 == "system_scan") { root.getData("SystemWork"); } else if (root.btn_flag2 == "system_work") { if(root.null_flag2 == true) { root.state = "SystemWorkEmpty"; //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else { systemdispatcher.set_user_homedir_qt(); systemdispatcher.clean_system_history_qt(); } } } } states: [ State { name: "SystemWork" PropertyChanges { target: syscacheBtn; text:qsTr("Begin cleanup")}//开始清理 PropertyChanges { target: root; btn_flag2: "system_work" } PropertyChanges { target: systemstatus_label; visible: true; text: qsTr("(Scan to ")+ root.systemstatus_num + qsTr(" records)")}//(扫描到 条记录) PropertyChanges { target: filebackBtn; visible: true} PropertyChanges { target: filerescanBtn; visible: true} }, State { name: "SystemWorkAGAIN" PropertyChanges { target: syscacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag2: "system_scan" } PropertyChanges { target: systemstatus_label; visible: false} PropertyChanges { target: filebackBtn; visible: false} PropertyChanges { target: filerescanBtn; visible: false} }, State { name: "SystemWorkError" PropertyChanges { target: syscacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag2: "system_scan" } PropertyChanges { target: systemstatus_label; visible: false} PropertyChanges { target: filebackBtn; visible: false} PropertyChanges { target: filerescanBtn; visible: false} }, State { name: "SystemWorkFinish" PropertyChanges { target: syscacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag2: "system_scan" } PropertyChanges { target: systemstatus_label; visible: true; text: qsTr("(Have been cleared ")+ root.systemstatus_num + qsTr(" records)")}//(已清理 条记录) PropertyChanges { target: filebackBtn; visible: false} PropertyChanges { target: filerescanBtn; visible: false} }, State { name: "SystemWorkEmpty" PropertyChanges { target: syscacheBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btn_flag2: "system_scan" } PropertyChanges { target: systemstatus_label; visible: false} PropertyChanges { target: filebackBtn; visible: false} PropertyChanges { target: filerescanBtn; visible: false} } ] } } } youker-assistant-1.0.1/qml/img/zh_CN/cleaningup-hover.png000644 001750 001750 00000017126 12312451003 023670 0ustar00saucysaucy000000 000000 PNG  IHDR-]tEXtSoftwareAdobe ImageReadyqe<IDATxbh~  (-_w 4 " LL@qɃ b6_p7T# _082M̰.,}m5Yfة0a?^Q]mKdd`aGA.g@1y@b xEug??Z 41p[T j$)!K`➏ f2X!4;fV8#$00 TdS +`6haF  jC:Oh  Ch=aFHс\Dq"?&%ohXƈgb)tOx=tДp/fh31" &XPm g7^aQg`bvF "^ L`ҨὯ?/" v1 r(r;g+W~ =f m Lq`hjN°w|@pp30BDVƋ XeˆT1#`Lqz&4J58uȕG.# Wgba@}մ6,=شRDz%AD֫@ xl"ICԚD;μJ $;;NywyCmz "T 8M2 q[Ӥ3xc#نI zd#$o݇BdMsg]gdz|D/ 1~g0q#A|Lߞ0{|kxo$eYt%B<ҡ!P 8{E}oJd16 'S=rLEԷ1n/Ƣ` 2B\l*Pnpϫka|Y^Wk<+5L2dT.Vp(~ ,!/!Kbї4QcK_41j|2oƇF#6ݺC[M+Rl.%-{fvv38 ̜33;kh;{c-h-ݲ",Jhp7ՍwsG9h^A[g?Se2A+M&<)c;)V9SUIAC}=Fo"(ZdHDG5]6l#X?=r%D'9uha?&8s= ݉"-ֲx#`G;>.^nd ?}%<3)-\e}1n:<#\مdC؆,r{8}>Ӊn%p_W^8Xsp\LSka GjHk35,NU59Wt,=2e驎V4L_}7s8qyjW}\6*> QtXexE\`F+3El}c@gIǻ):>H{]{>9C<Rna ۱fo#H9d#23&m ,"wkf7D oH;Sx,3.] V(1!*y1y|jWA7D|l5Ko#זqg۾HbjBq8ڛvgOZ"1'qnp/ST\em?ߡ68m嚛#deb/q{"R3<ӳ{;Utj6~+fzt'ic_My{ _s 9F1 T:o*NxWQr QpOOZnnnF|\s=*B\7uNW(W9oNEP̒mBsT̩@-zAHzjfn ul7d^. ^G%mFvO[;Pp} rӨXץli٪j0\#OL BHKR%0]07] bs¿ouQTQ١vJ)?B!5 C]˃D &&H4>/ bL6FHb AB-O]v;{޹sgagv~v~̹|߹!?h)|fA"tVU]|r.s9 ōwq }\'$T ,ϴ_hJx"&-I apv` f82B F.A}c A?%,Yhk&,;Q8IP\%7 Aw)>2q>,(t=1FVI5ܒ'w Y+ doBм;q׀IZ#0do= 8lnD, 97l'KWEs\˒bv|bS) GV́k-1G0\YrIߒvEw*^#xn/V_;iLIG{GcL,-oN%-,`kɂXM, E2 k[? '7p٦,S?AV~q*Բ?nmVLˠv>/e $ )P36\cOZOl[=.݃1I*pUN)8)V;Sd~Xlq]-h C~ksх\u#aӥ^_1gVҪnUÓ{Zi @ހ!9ߑWۯyx]6NFṔ8bL#:iRاB_+@&zz;hN}٣q)CN,_y#sr,EbzG` vuPwnFqoae~k12lM -u| &8o#HCVC%ݨq)4Q^t2z WUyYy}4t`w_ +8P$wZOz%'< l>YA\:H&P^b B0vGpd)(58avfݵv] -fWB±!nļ}îB0i5ȃgXr+rnMj [Xw`Nxfx4:تolaF7h:I""CtݒWc6Ét]BpoV*+8Z2P4:Mq gDeX<yq69>U림[Dڶ.[ !mfi}pM839mW~f:!W?" 52QSm/kGdjjbH'mױ*vEdlaJ/7z} ٹWM9[2Xx@MhY+$tHs)p1?EZѫfٮm"l_uʻp}Jtyv\mQ qbxENqXxFdlpkii |V G/J`FV )m`C۔JtౄXp]",c>h,Oe"feʬ;.YYEl涚>;]wZg dC[S\6t܏dà#1\F+j[}d(ɓW) ? 2rIz5$<^M+DT4l4m[=6f 6`(Ʈm  hp@QҔX-VF?A**UߑHCHC$M@iH[(ۼ)1~w;{xwofvv}N;ɾy7|}Z^?j)GU~"5\)dcA3 loȣl|E^uw^;v m}Ko[Wh^#;il7 0ḍ } aҚ*_va86Eg:`܈ .}&d4e!Ŭ_~e*҉,#ͻ@AcL mk-RP'bbB*^={ᰋ)Cc-IFe @$L6mcI4ȇ dLnX!g<8,+D5Ed⊔$ "fb> 2NH@noQL̠k%8p\S$[=t˔3A,*yIFP02 Kv &UdZ5B9mk3{u>VOoGط申:fBQ$5ܚ{O `f\>S&e ȠM:qFAo@f5~W/Hܚ5 bfw?{pF;sBaԢw2s~&l\^D=²|jYe=85/Ƅcv ByhdfLbdB;yԕ VƿpȠԧRy[ten-&;qpV'>?_8{p MEqtх> 1>?H(NK>|s !c^n~^"ص;VeEW;ZX ͽ1i;r7ؚE&4{=W#xllоKqwF=6Q3>;wv/Emm4<2\{*Z f]֦r'9ֆ_dpMvsAܗ"%}l>1a0ĉΙEͩ{'bKxkK>^gl;agT߭o5;m2͸3o8mYsp8d,te߷ZՈ]|ZXx(-·UR1y pcLn0&˘uI`E^qCN.)"@*\MQ/-_.yGr"VyK hۑ(n0jLNL=ڕ3>|kSJ@z3'm> dடiqSܣbMpXDM-Ù;?ai`sdO8pz# r^e_5"7?Lbr>fUU =:"[?JzBWD 2yDn>tJ[%w[y$Kt Z.aJL2y"CcP\Vo ,'{JyؙYU 2(CN HN :6`/ʵ#m$HG4&Q0;C d-㚕g π޼$e%ey]c>v9 6v=ٖ8K[!;, HÝYX=U?w._O.$C&.낝PW!FT,` il6]Z⎴"nZBKOㇹذbdE+% &҆ AXp0>X V,тutL\Pmfdb<0L#zk{2+7>~{Ѩ)0zW(b"*} r%sxُaudpq3%ODD9jִd[E~^]&Gi(Jm(Il'Hj$Ba">[*Kn&Ed-Qu*Kl)Ij-Os,Mp+Ln-Nq)Hg.Or.Pr-Mn0Qt.Op0Qr5Y}4W{3Vx2Tv7[8\6X{5Vy6Wz8Z}8Y|9Z{:[|?`/L1M2N3O5Q=\?^c͇mf>y['rҩ N<UcB(PG/^ 0$a5x9ÃWE|TEP 7t6(X!1#^(}; @6M 1@ u1wt ะtTga `pbG:Q`*a&>`fBt E4?1SE@4@^xXS c=eOWc؆*Uf=fa NS /N D9wl \6M􂫁pGNC,PFD2 h -'8"HX,e<FB A\G#hkedBR%` h@Cʈ4 ]AUPygH,,@c. J#^J$a)PFdX"QF'Bq KPF/:@XB3v AXbx,<A! G!B, N؃.E3Q&xDDi tQȂ%jQg Ps*qb4*QcmϘF0|\U lN&ELz- y͐X͏y`WD 8k bAԠF 葏̀Wp iȂjDlYuE3r|;P lw+؝M4 H%0 ^D41F,aC.a.y-*Q <(G1qg /Ա'N%Apn{0F<,oF s9s;|@5*ь8a0ԧN[ӯ.CP4xhO~KCm4^i6zVczBXH_*Q>OE6sFn$ YnG+]xO{r-{kFq'WAc?n1_e `c`o~71ϣcy☏1?c"eQɓC1eun- 9i˚E4fSCUMXD]_Wq/e@&YC=kZֹ{dt |/}EhK?qӆh+N)./uy00#LևDa;%Ճs?߹iOcZÎNj{G]T;:I]]8ЌW0oG^-r0k) qzg"Vv{=/Ju[!?gm2o5:lٲz.{F]ddYMQB2WHe15;Q;߸W11rfM,cC?j~RmhGZΝб}캗ŕ:.wKyT:&{o̤gS[AyvQdw6cCd{2 [ѭu_ >(Sv S^+%+k7S߹Y_;g;_l== ":;@D$I$$I)IKɬ[Ss!${cOW{GvFjIr5r&hE@Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ .Photoshop 3.08BIM8BIM%F &Vڰw8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMCF]sunplus]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM G]FL+JFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IO7]bl{Xʡ_?rVukxcriĥ0Zʫv?5gK,kh`iS{PqN݋ܙ'Fz!uF!3S\U?\V.F lChgcKn[tۍu6>m4^i6zVczBXH_*Q>OE6sFn$ YnG+]xO{r-{kFq'WAc?n1_e `c`o~71ϣcy☏1?c"eQɓC1eun- 9i˚E4fSCUMXD]_Wq/e@&YC=kZֹ{dt |/}EhK?qӆh+N)./uy00#LևDa;%Ճs?߹iOcZÎNj{G]T;:I]]8ЌW0oG^-r0k) qzg"Vv{=/Ju[!?gm2o5:lٲz.{F]ddYMQB2WHe15;Q;߸W11rfM,cC?j~RmhGZΝб}캗ŕ:.wKyT:&{o̤gS[AyvQdw6cCd{2 [ѭu_ >(Sv S^+%+k7S߹Y_;g;_l== ":;@D$I$$I)IKɬ[Ss!${cOW{GvFjIr5r&hE@Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIM2http://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-01-05T11:12:21+08:00 2012-01-05T11:12:21+08:00 2012-01-05T11:12:21+08:00 Adobe Photoshop CS Windows uuid:f29b9da8-2b78-11e1-9c1d-e060394baa3b adobe:docid:photoshop:f29b9da7-2b78-11e1-9c1d-e060394baa3b adobe:docid:photoshop:14e7de70-374b-11e1-96b9-84cebc0057bb image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثW,6(iH' WK?b\.ǎ=yhVY\n/颳 !7xG9'T6WZ~bi^Z\麎{{ftw5ZIH14u@o%1n,ЉvuW بujrS-: (-C]{7)2L{)khnt T^H*9!nU揕Q_m+es|mL!Mq9!pq|6áCsŦtE ~?V'Az]y[2"u(ms=Na;⬿Wx\go5ߗ:Nkv06DM,sƲ(oҮ* d3],#) 4JmBe`*k%QAKTyT~M^D,<*%^ mqo?Q/vk7_%77)bc ,l~<+PBCW.L?ʟtt'˿w,M?a]i hKX$8'W"*J?h*l/ nV[#P mg}|1C҂I_xػ$sgτ6I:^K> *KdGi]wrK3dI`|k##J5,Zbmo {lb$ш xGO1qI6+IO(~oC~ӯCx|?l_N>/|GM*UثWb]LUT&ڭj0-ͤ5=J07E$(H叐j -e,6s#󹿜Z?'%8~=8jf5GN*UثWb]v*UثWN*UثWb]v*UثWyouker-assistant-1.0.1/qml/func/common/Switch.qml000644 001750 001750 00000003503 12312451003 022330 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: container signal switched(bool position) property string fontName: "Helvetica" property int fontSize: 10 property color fontColor: "white" property string imageOn: '../../img/icons/on.png' property string imageOff: '../../img/icons/off.png' property bool switchedOn: true width: 76 height: 29 Image { id: toggleSwitch height: container.height source: switchedOn ? imageOn : imageOff fillMode: Image.PreserveAspectFit smooth: true } Text { // anchors.centerIn: toggleSwitch anchors.verticalCenter: toggleSwitch.verticalCenter text: switchedOn ?qsTr(" ON") : qsTr("OFF")//已开启 已关闭 color: container.fontColor anchors.left: toggleSwitch.left anchors.leftMargin: switchedOn ? 5: 30 font { family: container.fontName pixelSize: container.fontSize bold: true } verticalAlignment: Text.AlignVCenter } MouseArea { anchors.fill: toggleSwitch onClicked: { switchedOn = !switchedOn; switched(switchedOn) } } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/TSSTCORP.jpg000644 001750 001750 00000042170 12312451003 024267 0ustar00saucysaucy000000 000000 JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:01:05 13:20:46]F&(.pHHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOU_;?㜬T^A:09羹tq(c\a mܟ"SG'r YM<eM/deMy~N=[.,|vܶq>{*67¿vQ\+ 2/mc3uN̬M69 nX}?yY?ns602bj )u=vG卽N+\\Ƶ#Wk V׼r?S^|No{[~y/uDгU[NWzѾu.+ u#tHř^g,i??4g\7ƏEsxɷ qcLZaJ1KH̟"?Pr՟?̳IoSS|G+:wԾ1 ln-ŏ./ Ӷ3gdm8LX8F2'Ե$T ܖaߒMnyG\׼߳t ?)W?jv8N1Q#@ϜUoPϮlʴ{ߕ{Ǩzd&6ԯ'9s8wH]8GҊ7 DbH݇WD5X Ov֮oOQvɏ6+z>ԺUlǶ,րf 镽-{-ecN\De _#?A^˺,nv;coEIu.<X.N#EaKۙQJ5zq䇢)c|Q:G\ԻLp<)ƪ̫@?T}Q-SO;z&z-"YZG_^DbY*30[VګelѬhkGIg6UuMǮia|lվt'(HJ:^[ҩkX3?Uwi)~xV[dn *3VS0zVF9L˰nvkYѤ쑎` Vwæf~CLMos޻{*67¿vQ\+ 2/mc3uN̬M69 nX}?yY?ns602bj )u=vG卽N+\\Ƶ#Wk V׼r?S^|No{[~y/uDгU[NWzѾu.+ u#tHř^g,i??4g\7ƏEsxɷ qcLZaJ1KH̟"?Pr՟?̳IoSS|G+:wԾ1 ln-ŏ./ Ӷ3gdm8LX8F2'Ե$T ܖaߒMnyG\׼߳t ?)W?jv8N1Q#@ϜUoPϮlʴ{ߕ{Ǩzd&6ԯ'9s8wH]8GҊ7 DbH݇WD5X Ov֮oOQvɏ6+z>ԺUlǶ,րf 镽-{-ecN\De _#?A^˺,nv;coEIu.<X.N#EaKۙQJ5zq䇢)c|Q:G\ԻLp<)ƪ̫@?T}Q-SO;z&z-"YZG_^DbY*30[VګelѬhkGIg6UuMǮia|lվt'(HJ:^[ҩkX3?Uwi)~xV[dn *3VS0zVF9L˰nvkYѤ쑎` Vwæf~CLMos޻ 1 93 70 1 72/1 72/1 2 2012-01-05T13:20:46+08:00 2012-01-05T13:20:46+08:00 2012-01-05T13:20:46+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:fbac8e27-375c-11e1-96b9-84cebc0057bb image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثWN*5#BӟQծlҰfQD ۟l)LE2ƿs~Z?MS̏fow9,$iA7Ofoܿ{!|7NQ/⵳C$pÐ&ǖQ 3,,\ߖ{OqTfow^ו<4KuNrU&"ʲ駏#.E~j~^-ms."LDrqe'<T7oOy/fo܏C-?& hs~YSSqTo_CGC~uǟ*Sߦb𛮭N*_+yE,{$/ckg3C(>mԴ7P.m$hgܔ:,a! ȣLH}ťsQΉw4UxR~bO]}?6c~`׵/3k{pyGi4Hb&ĵUE?Y rd* 5$nbi&b)nc׼幦Hﵶ[15\O)G!=ƔݜnʟN*ֵ(QI1'Ê@wF>m.uv5;Fܙβr?#}}iOe?<)j| OZLtߣGّEoG_Y1WWz_3[c^zzm S~g N;?.|iSCìWj?k)Pxeɞ|k:Ⱦ&yf *8[#f> Ca叝GɲbioѿJsQy۲=:\mMZRTn|_,!}moV E ,h<E3&ͻp)S_N*}gVj~IqN?aٸ\}L>~]6M_VId萨v2*1_˖nXlϟKt.Z[c?Fc5O&Kؘo*M"H#D?i_,yGȨhw|-'>kմVS8EiTq,p吔2k94O V0߈P dp?2 'qlbPѿHZŦB,{s#ӏrpNUis>q;N*3--M,m섇hLJ|UvV0\Mf+?=j/Eoo/ؿ=j=O0' \mH4q߷/<مΑWQtD _ROO,P*>)SF9B}S_W2~Ư=Oj$mQkz?w#˕eYQ,Aas-55\%\UQN/UUZqc583a,?,B[,F.)~zԵpk55mKov*N*UثWb]v*UثWN*UثWb]v*UثWyouker-assistant-1.0.1/qml/func/common/private/TextField.qml000644 001750 001750 00000007116 12312451003 024435 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "../behaviors" // TextEditMouseBehavior // KNOWN ISSUES // 1) TextField does not loose focus when !enabled if it is a FocusScope (see QTBUG-16161) FocusScope { id: textField property alias text: textInput.text property alias font: textInput.font property int inputHint // values tbd property bool acceptableInput: textInput.acceptableInput // read only property alias readOnly: textInput.readOnly // read only property alias placeholderText: placeholderTextComponent.text property bool passwordMode: false property alias selectedText: textInput.selectedText property alias selectionEnd: textInput.selectionEnd property alias selectionStart: textInput.selectionStart property alias validator: textInput.validator property alias inputMask: textInput.inputMask property alias horizontalalignment: textInput.horizontalAlignment property alias echoMode: textInput.echoMode property alias cursorPosition: textInput.cursorPosition property alias inputMethodHints: textInput.inputMethodHints property alias activeFocusOnPress: textInput.activeFocusOnPress property color textColor: syspal.text property color backgroundColor: syspal.base property alias containsMouse: mouseArea.containsMouse property Component background: null property Component hints: null property Item backgroundItem: backgroundLoader.item property int minimumWidth: 0 property int minimumHeight: 0 property int leftMargin: 0 property int topMargin: 0 property int rightMargin: 0 property int bottomMargin: 0 function copy() { textInput.copy() } function paste() { textInput.paste() } function cut() { textInput.cut() } function select(start, end) { textInput.select(start, end) } function selectAll() { textInput.selectAll() } function selectWord() { textInput.selectWord() } function positionAt(x) { var p = mapToItem(textInput, x, 0); return textInput.positionAt(p.x); } function positionToRectangle(pos) { var p = mapToItem(textInput, pos.x, pos.y); return textInput.positionToRectangle(p); } // Implementation clip: true SystemPalette { id: syspal colorGroup: enabled ? SystemPalette.Active : SystemPalette.Disabled } Loader { id: hintsLoader; sourceComponent: hints } Loader { id: backgroundLoader; sourceComponent: background; anchors.fill:parent} MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: true onClicked: textfield.forceActiveFocus() } onFocusChanged: { if (textField.activeFocus) textInput.forceActiveFocus(); } TextInput { // see QTBUG-14936 id: textInput selectByMouse:true anchors.leftMargin: leftMargin anchors.topMargin: topMargin anchors.rightMargin: rightMargin anchors.bottomMargin: bottomMargin anchors.left: parent.left anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter color: syspal.text echoMode: passwordMode ? TextInput.Password : TextInput.Normal } Text { id: placeholderTextComponent anchors.fill: textInput font: textInput.font opacity: !textInput.text.length && !textInput.activeFocus ? 1 : 0 color: "darkgray" text: "Enter text" clip: true elide: Text.ElideRight Behavior on opacity { NumberAnimation { duration: 90 } } } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/PHILIPS.jpg000644 001750 001750 00000007520 12312451003 024116 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     1 !q AQ2B"34#ar$Tu&w891A!a"BQq2R3 ?&ɏ&;J&#&<= .!e4gaXK"K #X sA])Fȼ [&p2cIұDIADItBDKpAe~ExAVȀV/.Wx}Q/Ʉw 1;c4Qb T%6,jOx崤UHNZ;-R2:,T]َf"lO}P:7_vҽ>vd/I csԆRZbj5Sw7g#&߷\).`]iy^bs3UC)O`|)ESfȄU10-7NY(mIEQ7NHוLZ*ީY+6Qd"^ebbXh\wgNY]3lJtk\rs@ᬖQx6HUiyz#$͔pgm*8Zn1e.9%$@ iW*}[zu n\L >ABIkr ZWuVg Tu9U;YB";8U z~c6z]^{ϋgއ{(~u:GVJ~1Rn] xL/Ul2Q)T\ 3v.//{?ǡWJ]ȈvөNztNrDTNnD{:W_JY2 #7 1ữQܛ$#pUpRʪ<י&ۮ(ly6}d/Iqf^wci_U.=U]촒L8UBL-ͮ̊&a$tkdTՙTȋr9.voAJ8FrOm\eU0Hnvő\ cRoŔr4<*5\* )dQ4$> mtS4< -Tҷ_52?V{|& U7^U+հ')AO=C5MNd`*g'*xERl&( MOGӴ6دbl^2n~JG;]IF_xgډE1:imbgL"'>&\LhDm-jȮwZJ2#ZUr)rvs5a;b%J?`Orvd/Gye쿠K'J(e*ijpVrݘNt7|:R%Hm{,R0 2[.1(AA$L[&yXjZGZơdu.8XԈ+d$eP6NTsϙblZށ0F\֧*tJPkדteNH44%愈.y~"HZ4~y %Chk:Ա(*oH[ZJRz]2;$LЖ=QIŒڴrwz uaf8҂6JjnvʾH iis{SK'3m6v#k4}r(Zy};y4%d- cIgI@ 3zqEQ}m>vߦ~7-n+ե6WZ3< B(FY̅޾I 6 JV!AYIAjŻ3$5dd.0]ggI8'$~ds) gdBQc5RE锄WyCLjjm6,X.S<3&JTgQv{t8M.JPq(dv*Z;䯁<ϺK?焻{t1<{{Gyɏ&;J&#&<= .!e4gaXK"K #X sA])Fȼ [&p2cIұDIADItBDKpAe~ExAVȀV/.Wx}Q/Ʉw 1;c4Qb^ )Ȗw?1A}vϟ?53;fΜ$'O @ylll:,,,FҼ= @ X P{`NHT?hP @yV(*Y~! w?U*p=P#G2ۇNC̰ Ԙ~M'dٺu.mFPc&N)xë/?^~Wo>1y>}bVAy5XXX:lH-0P骢G@\g/]4 iݰsߖ?=<o_5=LPXZ@jb[ V#zW!ݻ =Qbѡ^ R g-mQxv%CA1 "9PPOPJKd=s@T#Qڐdƺ)Q|d2 1ͼWTF"sAsɎ5s tÅwJe#U{Mށ W%i8Pµzb^d_ՉR1~#e1bSK˿vXD UK+`Ym<jcP(T*fUUHie1g}]Z&CЄ e CR؍b;hTۑHM<L&rkxM9"sHzrĦfL%`+b]C$t+#0Y_il`rWMx桝͎IJtw%?2+D/ڷ6 M4M01 `BhCKZ<ུbPR(=VZ[J/PzR`+(H)ՖbC /4dٿlcO ;o޼yof^D 7A4Jdy6[*ìSEab_A_Ҁ4?\079 =ZZhplìڄC0|$#UF:ZȔ1uU?u9Dq0p88NJF(c]ݩ ;2֛tT>judI)X%)%x%gEfi8o;+Tfh O Db,# AD"8.W Bp]0LNAD"'^_{i^B9';>guZ0(p %5Y9jep\:L j666qO{{{(mγ1s /0{ Gv*<6@[yc _N֢f#(RA9fڅva4i0 8_mO F&sN===@\ 7555nkVmsX?VbY6:;;xe} ~y2`? Ukr$TPG{enڹe3~\#*Ui΅PkK Kp/ؼ2ޟT9k83tU R]].iz 6552agW.BfZ__$u: R$0)3yһfBe' *NdO3lfQ۠ ÝgPzv@KIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/UMC.jpg000644 001750 001750 00000011451 12312451003 023430 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     1! AQq2 aB$"rSdRC%U& !1AQaq"B2$T5Rb#3Ddt%' ?LdB&~"3\L>):J9&K!29sQa`!sFE; <"}_&i(XB&~"3\L>):J9&K!29:#0a5 %S!:ri>NFH4{XMb#HX0MQ6A >H[OLÊ9CԏH6& Ldzn(<&5ixLB8 r0j3oB;?Z0u:a. tx/M8a&hL /nm6M,x^EOD9)yGTٌ4Wٍ~֫DzS%{vJ\߄V#:Yiȗ#<@e Ao+"OLxᓈCGQ҄E$g+~r깍:Lŵrw*Vj~4io1DMȷܖZUֈB,aIv-,<\՛7lRc5%_~bzǝ /UMBKiQJ3'fB}ͽ0jI}ǽemXuwUn5cp=K,G4Y}X݀)eU)nT_ƫF,-.P@d# yvzT6FUh?('֐:~ *J%ߟU>**N#w~i|NĠ _ >%a)>xo%v7-z鲎R0.R-+&k eS($,|uu?הݹS'FD#k\rwe4T4cH#cp՞|њT݇(뀢KQWHUĞQ0jx2"&cL3mKӄ0vY/͜B/]ɂٜ!e߆<0!ʬioBuԆlƟ>Mq-0_+C-EyA,N93H^{Ixԥf{8+ۮz35Tk>wr$?[PҪv3jv 'xBPvVnA 2t39v5ynMŢۣ&j4 ;9uƭӧ(_PSYPT32%F vۜ. +4W5%4>lt+U[QvNڃwt#dtuuAbTbȸpH#ٛJ+/Pp'{;: zXn7䏝zbcXyܬ:D*d aoEri*~YrM@o}`3/UۍvEsaZۛi˘_Vt:Y2sF̂|CU6= HcC "jΦժ\tI(,N ?00HX}KKC58 Y;%֝7/r50 %+J6?5/{v-\ Nt(P910a>]nV"ݭ*ҰED&af/aasǀStrړ2L Nn<2WV} W9GͷY}ފo l}㺓n]oYFZ]Wv{{d~G^R_M. :=RdR 81L՛N e:Re݌ЅgaÏoc=>\\;MywwU/ZP 4-ࡁymD,ْ[ &t# {v‹Vf1G0 xhRԺg,9}D}b\4_֢~%-Q^PvLҜX;@ 0*`cso&YR[_ld.p`,XY7uF# = ^c2=R =$tTPpպΘTH?넵tb77QzrIo R.aOXq+X7?I)Hmaq8zrrIҍBzNwcɕ%]ҐHᇳԅ6{1|V5t=YS4XQ5 rw/2\A*| `FT:ҺCh-xkqzkit`0 ƀn3ǪEҲY<'U`m>936ԭξ/tW-OkN#-9`wZ63:'dRڿ HQ9hė:"M$1+kB21L:nFL3_?k-51ҵQ)-V;8 Yio+6q9VŌ>䬎~q oΟ`(N`ki$=WNFo|7_k(fTv0+E6D[{O+j][)vg\ΰU4% P .|^t9wVJt #include #include #include "qtlockedfile.h" class QtLocalPeer : public QObject { Q_OBJECT public: QtLocalPeer(QObject *parent = 0, const QString &appId = QString()); bool isClient(); bool sendMessage(const QString &message, int timeout); QString applicationId() const { return id; } Q_SIGNALS: void messageReceived(const QString &message); protected Q_SLOTS: void receiveConnection(); protected: QString id; QString socketName; QLocalServer* server; QtLP_Private::QtLockedFile lockFile; private: static const char* ack; }; #endif // QTLOCALPEER_H youker-assistant-1.0.1/src/000755 001750 001750 00000000000 12312451003 016126 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/MAYA.jpg000644 001750 001750 00000016066 12312451003 023542 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1A Qq$TVa24%B#d&F"356v7GW  !1AQ"2aBr3STUqR#bC$4D%5 ?\a57" ~L']Xݐ`5{"aLL?h9>Bmӧ!t0>8>wBoiˣ}!}t1CCw{*H`u{ ;g nҮt[IPy} "eΐ{zw:g}C4= ߧiWzCޓ_ggO~Ү['C ,"IR4Ws{'V?Ÿģ1SegWsm(+4D$jq̢B9[獔!<q{7crܾ=%a˪ K@l [l\eJyً hZUJYY.eiL7[ 84CUGD JB:hV,089V\e٩@elqz#Px6_>xƥiylaMXeNmM,cb_(8?A/ \8reպTz]K0dO,wmuf7%ߦxr8x/NT5} p (N'|ʣ*ש5y?@GG<|xs׉tTs4 5-r`aAN`Q,bb+hh B~4C%A4J{@B{?IBWw+i^ڍFت)9% mPFh3IgcHBDq9{{ΛR YPC,pU X;N\3*+E^L>znAÓu9|ej3OFxKȱlGIb۰' mjeUl6\uwa9@ӕ QcS w.w8a2Q5䶙~ՎⵅHp(,CtqڧSiIms 468Gc֊w.m*urĕ+Ch%Tq@Fk#49x0B$Ћ0w_\]CbcƱ!JG^ꜻ'Y]F˜[[EZMxݒMZpq[]NؕG=;K¹$g6.XaF`cnrR@#>\N1k} winC930Oڰ)BP7 ɴfWG bH  pJ6Yt&==TJr@lYC0c7DATbǜܝVו:zP!Xk_kp!\ZPG#oN|'iY8+o;H< ]/bZ2)5 ^V;ҀzrQdGli圎L0Z" hB=7yCFbCZ ehui4.s9iCakll(6ഇ[ 1/^[jtP)h $p!tL 0C)Q01AX#Wȣ: i6`Wv6K j'@ecԕ՚l\' J;%1eT˭6[QĶ,F qލJDO>q@*bRA&M8cn>0z9etΙ9~bkQ9 kaUs]dh:g*[ysb'xݾ [4sRۜ=ڼh5k4iAlHKOp' ND0C-usDmqx ̩~V5HCiijZ\քDU`S1 q&`XjNY)4UhL$T qivS1N/mر}S۔z9}0@e 3gx-_ޛ"vβ9֦u BS(Kk6dNUw"q&Y9e:me$C(-%B\ fy~i%dS\Ygp\b3~&UcҿiހD"UmUQI<9^D8ק+N5!uadp"0)x[;m:IIIYa#˸macOoC2ЙvO&L4֓PT4Tb}"xg4dEY ^}cF68'mK8]վ K/=ݵ"Pdt7umm5FJu %*O*=D*QFH$M@J)RRI$Й,G3$i=j3\gKǛoB8) d:qnM:Xi "Ԓ֢K~>P1l:ZȜiEuzm%`=1 E al J- f#J0ߴ=jە̵.qz͑xӔc!겐,b Mܡ"9XWyyxUB2ʨJ|pjC\\Y)-fQ.sIn,D0w65V0#PK$5nhVH6J9\sRԀ*-%! PTAPNiq6YED[ͩmuO[N$ʵA9:a(CnZ[VOӚT:IG4I{b1r-V:;=C[$.>Eظ5UdpUn*ބV<)KA]&ԙH(`ns8963=տS4u- η v DU=-AgbLٷ|J z¿JZUYB-\,+" 7tpm 8ʹ5Pj%GGeQ5.A2/Q!2_@!tf@J.X\fS씧E4 I#ˈaܓ 8rU!Q=.atM,q"VBVB Dm ٰ*wwʭIfW{%Mym8tT.9UlJrjGK.>1 @ ͢0}Mh!ĮyLMGrS=!-]ꂡ0sap5\T;bmֆ*^RqPUY~R%Wȵ~*9ȂMtÔq{ϲl+gTS&af4mqg$A)j F_TӶsG o$v% WMj*= <}]k3c5U9Y[8!/4p=[,0K_h7BG%60c~}s lis)M };ѴQPiYpc$ ~Oy-3{d{cj{2^mV60McK2X[LmPG9vjz̆Nnq3"ъٗ h6홷LW9g6ir[IJ*$ڲ Im kGЈ(pc<jP5O4U\ T$=S@̲i"3a miaڽA=빚J^%oms'2qLSͿrI7$s70|&^ʳg2o jpR 'nP[M5`z,&Tp$yzr;bu79NEج29Ze6dKJo&zwDȻkue)Km5W8L )YIhUQM>ޙ2/&@$=Yc9SlX9`^[ J^v?(AɁ?+;_T%SiJl<男oiMS̮*0 C-{A9exE15DADxq(3h -q #Z,Z9X;-b*mg\"dl+ƣƱց Q  AnI`p Ĭec2S736.n'd?H|m/=W{*99oˍ` @+,,ļS9\08x1M!TЙ(AB0ˇ )&%|! 6Q"'蟱ل!S!iNC;ހ=@?vV?^# [}^-R$H#TN+6t[>ϰʼqUy{*+D":d G95T$B2\UTݑCOb-dށ|o‹dށ|97){7p;|߄#4绗3<_\@&?M#SNܮKLTٱz{]k~GM}Q;rzh;`u0jR\{uO~nOMͷ::{l.DZZ~Tڧvpw5\eY4SR{'EߓEЏIڰ-g쾖GM mK잖WMsM`'كF#=4?Q쾒OM~LD?m?uU}vOKQ쾒OM 1]>O,5zI4Uw=~+]qTٽ$Su#G47MeޒGM^o“BKWU}C#E&oI#~=YDa57" ~L']Xݐ`5{"aLL?h=T@!!"FƶS= ˷@~{h( qyG͛Ӝ`@!u? 'Ѽ¥aO Q@jɫwX%= |v>@(>F_;+W>􋰚 ˬn&m^|t}AXA|=7&<^?DQ\yQ/Ԭ)-u(>f ν4a~' fgQ `j_b1?lPj,*4 a*2-U;<Ϸ8M)V]O@O@b/4>tbи^Z .Jsj.L4Kż72tYF?nvB"k|]7qT[ƂGWݞuR{@|nC/󷿫J_HG Uksvpzo}Jo wt@jRl|*?JHʏ=kSQ$MEV%PNqetqo&*gpq)"IPJL M6/"ps46Oϝvav2aFXڊQ{OV̅\~W~o+'.i@}E6_+w|4z݋7.S #~&u"R;V짟s0xz`/3w~)U&|=? |q/u˥rtZ{n3lk{Wf!T''JBq|Nwc3aku6:?>6l@ cF|i>q mfIENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/weather/yahoo.py000644 001750 001750 00000032763 12312451003 027631 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2010 Sebastian MacDonald Sebas310@gmail.com # Copyright (C) 2010 Mehdi Rejraji mehd36@gmail.com # Copyright (C) 2011 Vadim Rutkovsky roignac@gmail.com # Copyright (C) 2013 Joshua Tasker jtasker@gmail.com # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os, sys, shutil, tempfile import threading import pywapi import string import locale import urllib2, urllib from urllib import urlencode from xml.dom.minidom import parseString import re import json import datetime import calendar from pytz import timezone import pytz import time import math class YahooWeather(threading.Thread): # Available conditions by yahoo condition code # Format: condition code: (day icon, night icon, is a severe weather condition, localized condition name) _YahooConditions = { '0' : ("weather-storm", "weather-storm", True, "Tornado"), '1' : ("weather-storm", "weather-storm", True, "Tropical storm"), '2' : ("weather-storm", "weather-storm", True, "Hurricane"), '3' : ("weather-storm", "weather-storm", True, "Severe thunderstorms"), '4' : ("weather-storm", "weather-storm", True, "Thunderstorms"), '5' : ("weather-snow", "weather-snow", False, "Mixed rain and snow"), # Use American meaning of sleet - see http://en.wikipedia.org/wiki/Sleet '6' : ("weather-showers", "weather-showers", False, "Mixed rain and sleet"), '7' : ("weather-snow", "weather-snow", False, "Mixed snow and sleet"), '8' : ("weather-showers", "weather-showers", False, "Freezing drizzle"), '9' : ("weather-showers", "weather-showers", False, "Drizzle"), '10': ("weather-snow", "weather-snow", False, "Freezing rain"), '11': ("weather-showers", "weather-showers", False, "Showers"), '12': ("weather-showers", "weather-showers", False, "Showers"), '13': ("weather-snow", "weather-snow", False, "Snow flurries"), '14': ("weather-snow", "weather-snow", False, "Light snow showers"), '15': ("weather-snow", "weather-snow", False, "Blowing snow"), '16': ("weather-snow", "weather-snow", False, "Snow"), '17': ("weather-showers", "weather-showers", False, "Hail"), '18': ("weather-snow", "weather-snow", False, "Sleet"), '19': ("weather-fog", "weather-fog", False, "Dust"), '20': ("weather-fog", "weather-fog", False, "Foggy"), '21': ("weather-fog", "weather-fog", False, "Haze"), '22': ("weather-fog", "weather-fog", False, "Smoky"), '23': ("weather-clear", "weather-clear-night", False, "Blustery"), '24': ("weather-clear", "weather-clear-night", False, "Windy"), '25': ("weather-clear", "weather-clear-night", False, "Cold"), '26': ("weather-clouds", "weather-clouds-night", False, "Cloudy"), '27': ("weather-clouds", "weather-clouds-night", False, "Mostly cloudy"), '28': ("weather-clouds", "weather-clouds-night", False, "Mostly cloudy"), '29': ("weather-few-clouds", "weather-few-clouds-night", False, "Partly cloudy"), '30': ("weather-few-clouds", "weather-few-clouds-night", False, "Partly cloudy"), '31': ("weather-clear", "weather-clear-night", False, "Clear"), '32': ("weather-clear", "weather-clear-night", False, "Sunny"), '33': ("weather-clear", "weather-clear-night", False, "Fair"), '34': ("weather-clear", "weather-clear-night", False, "Fair"), '35': ("weather-showers-scattered", "weather-showers-scattered",False, "Mixed rain and hail"), '36': ("weather-clear", "weather-clear-night", False, "Hot"), '37': ("weather-storm", "weather-storm", True, "Isolated thunderstorms"), '38': ("weather-storm", "weather-storm", True, "Scattered thunderstorms"), '39': ("weather-storm", "weather-storm", True, "Scattered thunderstorms"), '40': ("weather-showers-scattered", "weather-showers-scattered",False, "Scattered showers"), '41': ("weather-snow", "weather-snow", False, "Heavy snow"), '42': ("weather-snow", "weather-snow", False, "Scattered snow showers"), '43': ("weather-snow", "weather-snow", False, "Heavy snow"), '44': ("weather-few-clouds", "weather-few-clouds-night", False, "Partly cloudy"), '45': ("weather-storm", "weather-storm", True, "Thundershowers"), '46': ("weather-snow", "weather-snow", False, "Snow showers"), '47': ("weather-storm", "weather-storm", True, "Isolated thundershowers"), #'3200': (False, False, False, "Unknown condition") '3200': ("weather-indicator-unknown", "weather-indicator-unknown", False, "Unknown condition"), '9999': ("weather-indicator-error", "weather-indicator-error", False, "Network connection unavailable") } _WeathercomConditions = _YahooConditions def __init__(self, sessionDaemon): threading.Thread.__init__(self) self.sessionDaemon = sessionDaemon self.cityName = None self.geonameId = None self.__lat = None self.__lon = None self.code = '' self.locale_name = '' self.get_locale() self.weatherData = {} self.forecastData = {} def get_locale(self): (localeName, encode) = locale.getdefaultlocale() if localeName is not None: self.locale_name = localeName.split('_')[0] else: #locale.setlocale(locale.LC_ALL, 'C') # use default (C) locale self.locale_name = 'en' def get_weather(self, id): #self.yahoo_result = pywapi.get_weather_from_yahoo(id, 'en') self.yahoo_result = pywapi.get_weather_from_yahoo(id, self.locale_name)#'CHXX0008' 2151330 10001 USNY0996 self.get_temperature_unit() self.get_code() #fp = open("/tmp/yahoo1.txt", "w") #print >> fp, "--------------" #print >> fp, self.yahoo_result #fp.close() self.sessionDaemon.access_weather('yahoo', 'kobe') #print self.yahoo_result # Get current weather def getYahooCurrentWeather(self, latlon, cityId): cityIdStr = str(cityId) self.__lat = latlon[0] self.__lon = latlon[1] threading.Thread(target=self.get_weather, args=(cityIdStr,), name='YahooWeather').start() def get_current_yahoo_weather_dict(self): self.weatherData.clear() self.weatherData['code'] = self.code self.weatherData['city'] = self.get_city() self.weatherData['temp'] = self.get_temperature() #self.weatherData['humidity'] = self.get_humidity() #self.weatherData['pressure'] = self.get_pressure() #self.weatherData['visibility'] = self.get_visibility() self.weatherData['text'] = self.get_weather_text() self.weatherData['time'] = self.get_release_time() self.weatherData['wind'] = self.get_wind() (self.weatherData['sunrise'], self.weatherData['sunset']) = self.get_sun() #fp = open("/tmp/yahoo2.txt", "w") #print >> fp, "--------------" #print >> fp, self.weatherData #fp.close() return self.weatherData def get_yahoo_forecast_dict(self): self.forecastData.clear() self.forecastData['city'] = self.get_city() self.forecastData['time'] = self.get_release_time() for i in range(len(self.yahoo_result['forecasts'])): high = '---' low = '---' temp = '---' if 'code' in self.yahoo_result['forecasts'][i]: self.forecastData['code%s' %(str(i))] = self.yahoo_result['forecasts'][i]['code'] if 'text' in self.yahoo_result['forecasts'][i]: self.forecastData['text%s' %(str(i))] = self.yahoo_result['forecasts'][i]['text'] if 'high' in self.yahoo_result['forecasts'][i] \ and 'low' in self.yahoo_result['forecasts'][i]: high = self.yahoo_result['forecasts'][i]['high'] low = self.yahoo_result['forecasts'][i]['low'] self.forecastData['temp%s' %(str(i))] = "%s %s ~ %s %s" % (low, self._unit, high, self._unit) if 'date' in self.yahoo_result['forecasts'][i]: self.forecastData['date%s' %(str(i))] = self.yahoo_result['forecasts'][i]['date'] if 'day' in self.yahoo_result['forecasts'][i]: self.forecastData['day%s' %(str(i))] = self.yahoo_result['forecasts'][i]['day'] return self.forecastData def get_code(self): if 'error' in self.yahoo_result: icon_name = '9999' elif 'condition' not in self.yahoo_result: icon_name = '3200' elif 'code' in self.yahoo_result['condition']: icon_name = self.yahoo_result['condition']['code'] else: icon_name = '3200' self.__current_condition = self._YahooConditions.get(icon_name) self.code = icon_name def get_temperature_unit(self): self._unit = "" if 'units' in self.yahoo_result \ and 'temperature' in self.yahoo_result['units']: self._unit = u"°%s" % self.yahoo_result['units']['temperature'] def get_temperature(self): _value = None try: if 'temp' in self.yahoo_result['condition']: _value = self.yahoo_result['condition']['temp'] except KeyError: pass if _value is None: _value = "---" return "%s %s" % (_value, self._unit) def get_humidity(self): humidity = "---" if 'atmosphere' in self.yahoo_result \ and 'humidity' in self.yahoo_result['atmosphere']: humidity = "%s%%" % (self.yahoo_result['atmosphere']['humidity']) return humidity def get_visibility(self): visibility = "---" if 'atmosphere' in self.yahoo_result \ and 'visibility' in self.yahoo_result['atmosphere']: visibility = self.yahoo_result['atmosphere']['visibility'] return visibility def get_wind(self): wind_speed = "---" wind_units = "---" if 'wind' in self.yahoo_result \ and 'speed' in self.yahoo_result['wind']: wind_speed = self.yahoo_result['wind']['speed'] if 'units' in self.yahoo_result \ and 'speed' in self.yahoo_result['units']: wind_units = self.yahoo_result['units']['speed'] wind = "%s %s" % (wind_speed, wind_units) return wind def get_pressure(self): _value = "---" _unit = "" if 'pressure' in self.yahoo_result['atmosphere'] \ and 'pressure' in self.yahoo_result['units']: _value = self.yahoo_result['atmosphere']['pressure'] _unit = self.yahoo_result['units']['pressure'] return "%s %s" % (_value, _unit) def get_release_time(self): release = "---" if 'condition' in self.yahoo_result \ and 'date' in self.yahoo_result['condition']: release = self.yahoo_result['condition']['date'] if ',' in release: release = release.split(',')[1] return release def get_weather_text(self): weather = "---" if 'condition' in self.yahoo_result \ and 'text' in self.yahoo_result['condition']: weather = self.yahoo_result['condition']['text'] return weather def get_sun(self): sunrise = "---" sunset = "---" if 'astronomy' in self.yahoo_result: if 'sunrise' in self.yahoo_result['astronomy']: sunrise = self.yahoo_result['astronomy']['sunrise'] if 'sunset' in self.yahoo_result['astronomy']: sunset = self.yahoo_result['astronomy']['sunset'] return sunrise, sunset def get_city(self): city = "---" if 'location' in self.yahoo_result \ and 'city' in self.yahoo_result['location']: city = self.yahoo_result['location']['city'] return city if __name__ == '__main__': pass youker-assistant-1.0.1/qml/img/weather/n9.gif000644 001750 001750 00000005425 12312451003 021366 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P췾սʺ҅ºdzʱȹ₋ĸͼ0R,Iq|Ⱦ/P0Q1R7Y2S3T4U5V1O<_6V%Bd,Lr1Qw2Rx/Mq0Nr7X5U{6V|7W}9Y9Y5Sw6Tx:Z;Y9W{;X}F\v|ɹڼ/O1Q2R3S/L0N0M4T5V1O=a8[6V2O3Q7W:]8X4R4Q9Y5S6S"@c;[!?`&Ei"=\8T+Mr*Kp'Eg(Fi%Aa/Rz-Ot2Tz1Sx-Kn4V{7Z5W|6X}+Fd7Y~(A\3Qt9[3Qq.If0Jh>`:Y{4MiOnShrÆŭõ/M0N2P9Z3Q;]4R0K<]6T:Y;Z<[7T:X#Dg!Bb=\;Y"A`'Hj*Kn)Ik.Qv+Lo'Ed,Mp+Lm-Or-Nq0Sw.Or/Ps-Mn0Qt.Op4X|1Ru2Sv3Tw7[4Ux8\5Vy/Mk7Y|6Wz5Vw9Z}:[~=Umcv/K1M3O9V?^(Ih-Qs-Pp+Lk5[/Qq7[}8\~6Yz7RCyEid ^7Vx 薮?q /{A̼8`ǎY? rxpƁ0 ~w_ŷbh-1 a,Ay@ `P6y-{AN@cuS,,y ȁ$EME$9~BN-]"&91'2tp > x@A|BΗB˗K-x %Yt c^x0&8 #؉gA)@‹ #-B-7_Fp wFA 1|ix0,lFK.DLD7ihb$XB lw C -|E(vR.R p'<ï " 4\-B \prス ,9(陂 F$ _|1%y C 5l N"ROhآ1P@ 5 7؀epCG/>/byA <`0!p-Pm5Z .cH.F '+坨`Jq 2O,zE& Dz-݀QBipB *H0[`΅]|sJ1H"|¹ \ԐBxS _mָw1)CJ O0,5p ,@ >,d^Ʈb "| `H 0q T}RA RjY 60)[ ,  "(E*R T< E(p`@k0`Dʑ D ,0_#$AOB:p9p# 9(CNP  a@ŀ$HEa,c A b$E"( D cAnp  %P$~AerJ81qC,cGX'qB*1AA,qVZC %2 e#\G2c4X/Lt4b D"1Mn6#"0v3͌2u(X AS\.1r4Bс]0CU3&ʌ`0Cx&6 ,(2@P z2֡ fЃE)JӉ>3$ Da# "`Hx# nX3nծ"xDXh0c 4".4S<}`dM`[$L#@b& /5&H?L `4e46a ӨFkA,ըF1-"p!##6wMm$&D F5 $dc-vel' T"@Ξ;~І6p^ AC.Ow`AX@D3Q./ =86Kk$ /^#r/["61Jb kmM ڒ,+H{ƶ` iYȄ;[S{sz($o N<@3-c6Mw[Q6@1;youker-assistant-1.0.1/qml/func/common/000755 001750 001750 00000000000 12312451003 020353 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/HASEE.jpg000644 001750 001750 00000006654 12312451003 023642 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF] 1 !qAQ"2Bar$4%5!1AqQaB2 ?&˓'t A7_hYp$pq"߈AVȀac+.PW~<~Q.ZMeɿMFM D/Aw,_8Fvr d@Au1`(+E??(c-&p2&#mb&M{ od\ /|;wU @m˰x"lܪ̽G]GU],Hjii>D`):Fqk6]4j3髟m5UZ)yZAYM>V%WZnGF[6*Dic4M5 9||ajtL ,V,͊Onve )ȧּovWMS\ˇeS|M(TxP#CQ ʬiܜPU\[.]6a Q_fK\uԉb~ܡ@j]*NZS0F&$S`sOoVqNRmoSw'I|F\oiڕz˪z~RA5U-J2d%',fpOgUG =y[C$8Ւ&7S ;M!%}U`P*Oy%L*f!sHbf=`DTzL;8-u῭LY&&NiUCiOGTP֗STLF&A㻩 MkWWuTm+fdQrI7eK˷ζ+uzܻBRK.r:a=Er}N7zrT2b,2VaY& ( UyC`RZƖI),7~V6Bq-ԕpssm\Tnq6_tM;W e4t۟*UUIk -Qrf}~<~PN\6N#V%*R BOVIpug7Gfѯ&q*lCƬPjИT-*u@،]z^-i =w,R}?HjGk?F#7vZuK,@e+%gjTWjb=PYfmvҖu]7,p1'^͒[?*JIpۂwO$L U3 O%?8Yy6u7&MZHau#+o^jW|u~UMiĿ*M9Xjzʚ@F*Jb1ZbUJeL|!|PB DEjNR%ǩ.`B*ժdө$9 9'E3f P8{/lK4oލO#;@96Mg5Wu:^RJ閏¹Z v}%]Qեk,ZA`(,ز+e =P\֗be5\n5kJ\meQQz:IMDÕ̓?,h8bmiݧtyqРm!K(hp{c=u2P5Ӹ6⒕rjK*Y@7k*PL$(a4e`!(*`M!}9yO#ETD)%^1}1iy,42fPG]>#.[H1&Գ~UeŽTP4sC^FZy1\h8ro~Dq& ]÷ .>Q\*Yr]l 6eb< OǏ6EIw 7@bwB X AD~.K(.]a,9.F2rz"e;\ 1;߄mQ| otBDpˁ%ga.B D[ XvDSv?youker-assistant-1.0.1/qml/img/logo/Manufacturer/PIONEER.jpg000644 001750 001750 00000010630 12312451003 024103 0ustar00saucysaucy000000 000000 JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  !"$"$CF]".!"1QAqa3br(!A1Qaq ?h""" ""}Du^n[l[06@\X$ѢCGzS]T-5GR>hCb׻DeosG:tvt.\19?d҈OӯYr+.kQn#-\]$k[vۢW_S7U1>ZtS&ˬ麍w$y_ߞ TPYd,e5S$pvoƾz[CT._DmZ̯E=]W$(Acw l:{j(ixp}glT -|mp?E\]/ jJ6SUA53ɳG s?}>w~B.[/u6VrNb} /ACDkkki@4d`oQ:Qؤrk,]SųOey 2冺L 4Ǧ=_<~ WӟN-TX28 'W']շJ[b_٘zSDͨcK|0ϲ:scYYpEGKJ q o}ֳEf=˩M>]ȯ,DY$LO%^DzCZ4~纴tl6qf+|I!{m+I",JܙTxڝ$-?pg4Yl*x9ak|GߕZ ٱ AdobedF]    1 !AQq"2B$ 34aRr#C%&W!1AQa"qB# ?<1sMC) 6 ф?`C͉cdPw<]Y NC,`z݉_R~ J"lMC) 6 ф?`C͉cdPw<]Y NC,`z݉_R~ J"l>E sUFN5*@a1 T^8i8jVJT1!}f0CKI6 28 4^^FLdIEG.ChɍXEA%I뜠"bQJ2%!@06mųN{RWcӼ2B"@.8jF\+PTO蚚7jS 3`T5$ BV[6ȧ7EeskyosiD^Ju%QCUTj)! bgPOPvswnNAr:Cjh"J%APU*+)G,$* 0q~,qn-vTNeȎt,:rvQyk*?GVfnV<#7?\A~K}"laZWF}El2Rc) ':B]&0s14qi^EuՖGifƠۗ.W 5{ORK/QMb%wuTRP) ݛz9r9O'=y:S둭]9\r])j5=kр mT2 1.@ws!Z_Ts""PRὺmx5[ &uK+Zg{TޝT_V'^)ÝRo0aldNF+Q'$m/dW *_Ri2"fljIt[m$,D>/Y*SL۴8-IzL=Ji}ܠPT8GV~w1kp7+<๾\'|N{>Wp53B:i )cv9m-DWgH?6ƙXJ?P1 :Höΐj:ث{ S"ua!LO2e΅ɵx,='*KLS!(%G<}pڿCg;h[BMoj}bNǭ aߨJ&nӵ ng%j(bFh?߳|+;ʯ2Jet?3+uoVo}+x5ws\c-^Rrյjmm'dKLzpꥡ6tX|-{saWu!U:)&2>ۓsl8tt<>뜧r ,nf|~U;*]uon15m.Zuin1#J05tU"fW#  E#8g!soa筕oo$nZC{];-c+ۨj;kQ{[>ι֕Sqei,wJ>Q MV5oWvGw޺ ')VLciQ8Sfq8ppzg[ҫQcjҮ,R[WqKar)T|RFE*D2A  GtCMcYNTL]Լzr-išMyﲛRJIt$bM+&6eR"(E,|)]f4uVat,5ҵƐUηjopXAM5p^@R66ĩwi-#ʒM3Ӿѽ`5ռ WOnۗm1W$X+@V̥LiޯSofrvZ9ܹ 弣)8>]nx\ nl.1|uզ&#vGId Nj)Jm+ӑaN^S `F;1ڪK(rJR{^&([kNwg?uMdOr&hVi†YqiTY^**n?7ٽoNŚ&8҉iԨZզsCTŽeuV`5:`ٍ֪Yզ"${]!qyA>\21dU) 1JP;/fq̪32), *cBU4MB2Dq0[;a NUq{KgIR`eԮEC+XJ+`+j'3_*e&>oN6j$)мouBj EZmTǧoUF6]EJXUNj6B!$ C{2"T5#n(\ueif -KV+]5}s"ՋQ2O*eHss 1aJ`iF- Ď3xnnnB A +Vup )kR"Rmh+)SUHI+ '|oq@{y& \op5i4ށP^\Y;]J8)~+"yRԯ/,XiA` L%<,{2{==_f=MC) 6 ф?`C͉cdPw<]Y NC,%jPO]ZM`aɷوe<6`C&bt6z0hyy,z vA˷1+"u`6`rP{+PO]youker-assistant-1.0.1/qml/img/skin/ubuntukylin-theme.png000644 001750 001750 00000062310 12312451003 024051 0ustar00saucysaucy000000 000000 PNG  IHDRxxNcDtEXtSoftwareAdobe ImageReadyqe<djIDATxڜ;hQy>l # j$>JlA!" he0`g]G0AI$AR *" Yfv;;Jw.PdCǻ4zv{Da.ϷYE`!̀w"0v!Na@CU4i+D%*—YjҲCQ4Ia13Ξ#d5P;g)%;gjHE$%݌lD"BFKŚ_qK΂K\պ#+FHӱ,CpD`c,,XE4*eeA>_lUIe28TΎݴ4ika.ػLv粼b'.}# 3X*4E|.S:ųs<V"ΓGIzt9X gcǩ_S<)gyIuေbYV[udWajl_du]1^ź5W+QUDPmዜ\G"=$dDggWj_ʞc}|Up,˳*7L?>,-K m4miG7щLatKgH IB0heٰ ݏ]ߜ@E `"EvA:=8򕏭o+hbOېe#EErm&AhPRlE0$\"Kn}7XıQLM %™S<]l > 0{MBq I%n aZ)a5Ob=U{SxIz6j:֞#UP]g1{'K( JJ:es B 8W4] dӟCx{P-Tڎ8q\e Wf/x6)Q8[f???}=@ w?2V, QQK_LOr|滒_.=2_W_r)"SiX]?4+MRO_Ouͤ 9=$F͸\< W."Zo>14woCq{tύR^EBBR)%ŅUVg!yv7VYoSoOæ˸Tը#T]M7&ZqSǻ'£_M޼ZuϐϏg8מp ͥ8c#G?,C/ ,bΗP 85u{^<(O xW ߺY}lUguk:kB]+SX )T0*[q3$fAbVa:fnq?R˄1dqDB c )r[G={={{oĘ쐛sm>ł*ǣۤlfյ*pn4kyp*֑tHaR&0m ڗ0=natR.%v"`E3T`2 !"0MQr#¯AxsH u.0$u.o-j_U( qj}evpX ֔5P?y #|K\,tSC#ê6DmںD8>}%:צa˭ٗP6<9np+!.mɫV1 {=lVkjJwFΝZ>-U$,|ۤ+[$'²򒟃+h#bKY?{_ Bl-H>3x!~8OAlymE'LE8%]xM7] ^_"s$׭л)R jURţ&jR0q}hG@}$|*e搩N,,lOepS8X=]Ҍ9 fzܶQX.^PxNl^GnBu׶ֿvWT`,Ewy3GFQ.L6"5h}q8!@{݈'C߭M$bVV>2|Ȍ(0)''O_2Oױѩ`E|8됙>r Bu-^oCpIW*\,!6yk߽wfdBy<8:VEJEt:Vm팎8Ze(NkQh-"bp|AHL yd>fC:iuc\ݽ?Ο[6ol0CUuSMĸJLHwԖ~WrDHZ as<@jG"֯(,M#< ;w˕'a eB*KM0(W9GmUP8\i.Z*!$#"qRϺD ߜ.`ݧIV0ݚQ.Wq)^l\+uCO!ww0ixOeoy2Q>vB0U}R{(W^Wh6Gqeh~C<񗑑RM.bb#? 2.AȫX!o\ةS&x]cVb70bёinآk\yfJc[(ǟY~bz)73fכjRb=]dڡ f@0 CM3ӥ3dS%71#^ps(xaҢKLm!04}< X=ӾglM5z:OaKj]LnCpG?} IȻXMی)SbnT$@ 5ugL-ŶM2"LDo whUHvq玣PT:Xo-sN'&3`2S bb9&LBgg2X+u}f~5%M= uӦ$uubN)FMEo˧_X8B"̸bX>{Y*7m"X6/ 2-[0j4VrݶpAy$|Z,sd)+,9vx1#b[+1O% zH8sōk}F!w'PS=7[wϜ'Xmބޮ_Wμ KŢ_= Xw?IatݺT(q(3<RiU10OBx#\9T47iZ)7e9wǨmv;Jp_m<)>Cx}Qr#T<#2_fMj-8]`5K9= 4»ps/s/N=5wL EBm c%AIi3Y' bs/bWI"͂t$:Z?GQxޛq}Ocڿmc0a쭲e1+BEGdp>/~W^˽os`1S3'#lgϏC$(V=2L;QVW`i{WcҖ;J[DH?V^` N'}8fVkyyY0O@c_W YarohCl|9(VbGW Či?`*`&Y<D87۲QZWyaV0r|}TxヷݲۊP4"ZYwEqIEޔ06\=^E.9,ҵ_BHL!=!Y H,q+b%=ൄtVw{̩<0[4?$;K$ .qZ3["\Qƃ-PD ܖShubO7j,9߸<-ڳ/&G)VR,&HS^؇4"e`JFծ]Yg8 {vkv)ޣW ˞ Yw}b-Ɇ_=:5S> /K^&a =ѐYT )Ƣ %S҆ Y7u@n`,VZe8Gtg_g&Z'UevoĢST`$3hjVleЀ^:Ɯl?e,Huw"L{h ;,(-_c]ۼ=is^^gs;njہlp7:P\DsRER%QF1ZAFr^[/-s4[~;! ;i(Y #.R6e˛5ن`kՠm47ijG3ˍzp+( e9'IT9cG?{02N\xaU}+OL<{ll̙gAڏe# Rɵ^BOt֏ГɜKEJiYp_,t k í`asԆIfMT_A_] i4%"jzaevFAcCz2ewmR հMl -n@llL#hޛr<µHwٖئ񤥭Qe0lMMTġ^R3xJ&?*'ƞmޞΫVR $6I<GSSs.:\R҆ܕN)ʒJIw"Y@Ky9Vگ`8F}]J~V)0-T(7D/2U8f!XeYz5~a]̮]<;BY'{ꩧb޼y5jZ}\Ud`"窰N+(TH AGu}KNg視8>, ^, qNq|bMI]xxꩧPUUe`ىSI3|\pZ‘<Յ, ㈐DR#,"Uڡ׮(ͮpT[!iaz8NK Sƫ*12F1Mqj:%~XPiT МU*3fغu+>8-HG˹L(' k(xRC -31 muLtDÎY`U^]O! aԴ5//rzUsD"OsL&I/ =a ŬFLrZT%`OkwV>O9L&eoQ~ne*g,>%!)6&2Dc'OR.@P,IJà/E3!n%.tR-q٦?Il rQVkVK[̌4NI9$Z" m\Mbx>.y#9AtxRNIU*Zqt uRJ&K2i (bɁ2u2g *ڱw }l]qL\4 ubA_/|̹}_yP%]C1<2l_(J|2`'TuLu4Sk<HYb#L옔zOT#;^GdxEEh}]_-m ^~8D/ϲerd~O( -5:J_dɢˆ$&w.*$԰@XiZ-3ky q4ӃoCի2ٖ}ሣYx},4gź͛TONL "p4G7 >Ch:WRjL_@O[Cww&Lm01c6,# Y$|ؑEA $z\MרM:|=heۥ==ZHL^ 2UKϠzSrՓzñܧ0Qgu&Fթz1kLSyqJ,Eiy%.5k!L[7#rK F?ֽ $[|+"G:^v@ E>HciW׳%MM;dĈ:%ylbųyg퀜"[0tEdQrL FBRMyŬRn ^_@LWg_jŨ'ET{*8PTR$OvEZ=On'j̯kFp_k[>ӄcXI`3睃MF8ObHD eѝ0^\A )5:=gv6miDŸ_Վ{*;ɖWABmͣϕ/#qxZ}=Nb4iLYD铨B3'TF-;;];z:H ?a".W8B/lBoχ%eǗcz]C -κ(W Y^'XC-xࡼ6I!uLc75MTնʊ {9GS"w`8Ȕ\ptKX] ර_5_>mcl\˿Ux1I%O;(U. cㆵ5WǍ?_%p aWr-o7zK)ux:XQNʙKt">{NRۑ[/?ag_^ {BLMt~/cĨq8&57)k p *$eጢ߄~~+3ޠt#{lQ'gŒ'󾄑Ucqdƣ%ՁGo^z),z$]rh< $m%Q0 F? m$WTsNvcxE9fNE߹ N6J,s g?V30,X+ICi/d/[} sAu\;G#1HުjS*&w݆N4#ȑsVi% O☎!!yْ/1z!Uj=hGd9%x G[$zgAY\KWѬ_OYh s-1ηп'8!sc~=OٹFNXhs3F:1'N `+B>[Vٷ]KLB( D,/\ [ pEy;*?& #gIBGz^~=kh%]<9Ma &~^Y+*_mU;˻pO8ʂ"1 7hXr$Fϐoww} VʢtrV%gn)}O9ꇱSuc0np$z=-ywb,BO|MB-:v|b aulL kF|",1>=,2G$zmۦGpøWOib%xo7^zlibnl{9m`o}u-~wMø_b_>xbz7! W[ Do$ g`t-*"u?dÍ_-@cBSEr&M8˱ږq/4Ey* j BǯQиpob  )R<F_ B+po}݁66oZ.O/co? YcW-EZ>7}}!SL??\A~?/Z7q? sO?O_D1xgc3O,X_]=o]} Xhq JXXC^$f,FRx&B,+d@Jpot I VL/ UoY80d(rT.y]wW76}s8S ɧaUZUTo;XpHzQX`.MM.ǧ<3,TGQq񖧅q~/+dڠ&u~ \ܯ}[ݖ+qϽ.#<_>bHDyg+볱2ݘV .k\=6}t9;-p>Ⱥ8jXljlS[#e"\q`wӫBM±@=Ɏ۱ٻǹH]]chQO+,כuMojvV}}IIxꁅyML¼a((|xQ>{&؁Ce&& wU^iLS%YrA1 5&:$R PB6Y6!CBh8t"ccYFnь\R74sg+;}S=Ms/O:>_I[7wWt7ajdr#-i2o:יge2a~8}DQtb)/ʧ%HvI<lZ3^ xD@bd9T尀JZ f1vy]PDha4aTe(|x;uHhR s0" ]Jd^ t I.ztϐ*%<35KsIPckC=)29\:QF9\;dvЫ#D U k{`RS,sHm YI`M<|>Wˬ! ?/h 2D7 9 umZQ\)iK̷ˈ 1c9ov΄J!Z6iyBT",`eY3bUpGXKeL9 1J"so׍P(H .ّD=غYnwDyLhY{Έ;0'QOn݋PjW.5YN1> }i}W٢XyǗٵ5zlT1ҿFdBτ挺%IVδ ҋN y[[ڸEnћkPDpw$$1F:} f \ d!yGsm> EjL=]vL&!G B{HheXI64D#11G&qMo\Xm&Q€V!=h?f`B*!I®d{σH&tUKN7Җ(G0i73>bκix2Z IŔ!y3Rš+}M!Rl/k(ԐYa{nȤJYtSSmHu G|_ z؟'!3cHvM]qw(($WbF@>(z]W4ϧv_=`~eh>|#ST Cܷ̰И*^6wb%"s Uila'/eYdҼG(RtJv9nw!{WXss7^M֋ Q^V($C7f]Kx٣׌ݤиYW- RfCj09ȉ;-"'@q \K{&9br쌲+rcʷޮZ>0,B=4QnPW/-I:1"}s6% 7S/6l릹*r9uR 4 vx|C7\#g_ʼn ~$i-FU2DLsx|&dR{B`sn1R.(|iD%Ρ99{rH"R70 b s aK?zC!-(^ H qF-FdYIgF5]^vFmvœ󘤬)M[f%(\5K<:Flf~miKmGL"3e:}H(I(U }WS3Fc%XrC(~L!H^+}7j! J6ZpPP1 6)bpZjG뺚}YM7nAyƵ`gǃfr6RN]jATE >Rƿe'&mc>M'm "|i'*:B1C4źfSX lI^+R! g!?騄htaE%< RP]˗m]htwnwQH'by{Nh Kw8/9$ v)'OR #>iYbblR;۝~ DVNU$a*|Df⹽[lYϥ( xAo8]ӛh:>`,!t X&HFLmRXg,38c1"c_BuU@{)YIȻ]RK "3X-s=2e $rDIa|Yw,8K'_[;L%j)_|1| mdi)ﳓ޲#0NS\ᮅ@` b=[7 "iGt!@d#k4]/2O}r뭷⤓NBss3NTË#pOC9{7>`Jh5kwfϞG;w.^|EPT+rz[}ʦņ>msAsytBeH@j ?OP*%y9Ax5cüTJ@聾NK Jq"%1DFЯ4Itu9TO=p4#F>']'oqrn 4qfNJHwW L>My FMv/^3g'jqwm9x\S[<'PkB6X>$@zMQ4\51Ւ享7aQ}1 0Lcӈt?5rtMQ1VQl1.K ]',0GrΖ&epCKj#.=6%%#R |2Ѣgc)U_u{J%,.'" pp &Y#0t^*lnTRR&e>K)}&rmG9j(E&7o0)aI}kWϡ]IQF4x眞x<6͢+Mz{2T'C)9M\=tLRu(afD 5Y8,H)bjHIaRQǀl]H(/7V4@uju-`H[(;پ{bq{/lQXB2tQq(YIA4ׅmy ?t?j [HۜgGPM(L._y$̸/K7#|'/Q'pꕏQ`' Of9,2MU16A>“J0uK&nNӄ[%\HݙӔ2Xk׬e tbesCg7 PL?V$BXヌʪ*3:ɍx(G+EvTB"-iR֊FC&I8bfsIG@}b#u5c^Fc,׺>10zYIW7q5>ϐΦb[* PS^ŒV0~Lce'[>>Tg`#>mNyH%AE7p EEp3um0~rK ZWbD=ƍG0 OАSl4CJwt-+&В_AE&a8Sv<TU8,K$ ?D/l{`vu(ʻ\"1QnPLT QH`iګqםwb0똠-,m@G7gF *i*c˗~r#zzcOB,W4A jiaBS;h?Szd9䳃XnZvնwxǀѱn*vciFyPv0|+jcop i8XX`HTcZ"Ebޝd'M_s7/^yuK9¬] TԽv[[;zzzdc3,jxWQzl6sΜ,`%[.<Wu슷uEl]U֡}zln}i MGwߐ (ly|0z̻i!Rز, rbv$ޅ% 2Hl7);4 jN94$(fMV:0.UL8oEfǘ׎ȬZ/:gᮧە ,'΁4tHK> ]4֖!CqՏ+9^֊mW=;f;??kjD3o;Μ03Bۅ0Kҙԩ-b`P˖+nqPT(VR1QfgT%" "6g.+W{P~3 O@]U}Pbʤ8}`:9 2*{ZWE8sga`Y?}os >Ju+jxz ՟={3s#.$leW@))!:pӁdvl; ώLj^O[7;S(twpt$KIUEqdcekUۨoPq)Wپvk ӽMH$XS};N+gGrHL˒~/Ӏ,,BԔd\"*1}C j2c?d_x*E6!d)):Y"C؇O D%J=BP2w 8SJoR3p)!K4EKǒs(QVw;8Y4GT~8}>mB;;.S "AkbYE㉒eiTLje kEN˨s )[gBjOBz'P=͌S:@-IRZnܳ9g1*ڨ)%L%񝋾E_c6i  оa=6ttcΜ0kǝL3++F/2'n3M?^ӂ[+jx+xu"ut㤯8_-oaiiJ-Psk0JP"ei8}I$<^VkUS_X?[ުЪozMzcj;ά2_0-J`I[J^Mfjb!yB4`((%*fl?RlS%iF٬ 9 fvLtѲNnbX/f>ىLL\w+g^/Seu+f<ø tEӇi=G^HE6Zt,P;nvCHPdyr)-nCq'˯ cG3q?ISW+7܏n; y Gy.yCd\|zg8尯b/#N,>(ڕy@P aURsFfTeZ]hP߆9FXgk^TD*ث!/kW*J#J!14[pU_D=0<@Ϡ~x뙸{qį';kpg`n9'oc6Om#=g#Sȿ_\q 7_#K>p/G'{yJs粓PN Uj\׭>"< v<t nS?9hl;DwC͸ :V={_1nf3x6hFE\<Eka8b71yf؇A򂩇 Ӵ>\Spʛ-JO@+>a14uul;.3Mf ~|񩘲qu{u/p_'Z_їq̩gcxUHyzL_ÎWtKM4ޮ ضEhNtRGݱnOr`3T{"~R/&¬.ǎQzӗCo6x;ѳ#|G~5=ܙH#u*Jzڙu6t'ԡ.q~MRHY]l}Sʪ'J>R&`ACzjʸמCunY >OQg3}Ӭ{_3I|L(Jo40,ȏ(&EjAPrE96 mqF6kRwlc$]H;ݑ@tMJEJUUU DUK5 '-ڜ"V%[y[NU([gSk} ֤Qu-x_)+2I-F PNQSbcPGS֢QٍH}pL,Qwp(l_ xiǠ lqd0Ģ/A_O0yWX7ڊ8s󖛃n⺭uTRNʏ?os#-k#DSPx }ʟ^ jFob (;O?+ g>YD n@g5wCˑ] 1*TMedՒi ݽM>KMLb *֍A>ArY[$KI_ǘN/#mRDža(wΫ{#?WȚio86G*N$ǍU+ Hz%c%tCdDr2} JXSS[ǫPvx1O~Uda!T}z1] KZYDhfm\'FaZż]]ݜt ljV4u>Th 뗿T|OEeXc'w_} &y|_y CvS{1dۯ\GN!Dw%݋^!\jd׬D_ n;:`d׊Ɠ Eas*PDd&8MV =v0;;xC7b]SLpXO߃[X^wcB.L w8G=Vw{gP,CەG {g~q ޮ9_jR.Wla^R%: ֱC{da|]6ѵ9iTMv܆M;Y&"}c0|Dؓs"eTn>T6=1?4ܳd &dE͏64OV7V1TpPGFi\LR;m]wk ɦ=q_.E^Fƃc >9{sXiAW;C6 /"X|Ð2˗.ه᳛b3W'g<2iGY1oT_ ^HnlcNA u)Rrt^x#4Đz$T:nz?Mbҁ0բ0L_>jdWg {JG:..gNJńL,y=Fٗ-X, !.7an1F.;ǟz} O=>HFE8=pؙV:w .lO?zp]CO6g#7.chbB|T"dϚ)Te0\D"8ܭFpD¡[ҮIpk IWXml223SjII|ywg`Gn;8ࠃQdF{mM^۹Aj)Cc.UijLT>/?2tRJ][4~0)ӑL.Ud~qJv ~9 a3,fp aA}̈́I^ABM$#MHcP]t"7sqb/`Ek+mey9qکjd7P`yBuXh)Es^ܥP(s2ɭb_r:u?3k_~ep_A~;xgA=]k7Q2:!(GEHTsn1HDrJw0=Ag5Ow簘CGy<.Z̏Q++vƕW] ox ^y#?~#ޥy5C-uQЈo7=|{wa ,Qf &4oN4HE/qȵ-u]S9 w՗{Vℓ|}8K/j?y33#.0Xhi";'uYErS*20'"OEsõ?- f:E<Zw1Uu]I$#U|$BW,6zi#LZ(/Kr t==IDATxڬ+qǿkưl%f5qvsS 7rq&KqpPl,-jKZZkgg<_S~ 8~L&@ MJDXJ3aZ=LQ0@uS'J>HVۼdI엧wx4N5u|>ߤN`ǧ;"OR^"m.VTkn\~⠺iR,#zVPrhh3$Rs1dwf wǬ 2&6F+B=Nb + oP0f[Yr gZa tuv튒mKW <:y+7XB>"L4 h(18![zAhuYI*F=KKQǏ  ܕZB`)iE%>(Uк6}[D DA !]cy 8;DQX,KE7Q T*Eli"ʊ,JԐHxjL-XZO{AA܂>׽(Jcc}~[ B@_z +[~`rLvG|:{ykꘔf3FZYHJe4˳PU8Re˳2XN$C߿4(*l5HəٚWIn\*˦eڛwt c- &7\"OfFIv:`:=8QʄRX,+t"ys*99G=h$0M)h_x33z]c:VmSnwZ Skv"Nu|SuIDRrv 9J ϢXd)c kgvfYX,,e `Tb֤~3&FMC"IbbXI MR@i <Ǻ; fggze&gy=9 K`0Ȉ:Juu5K b 330"fg?*QR"h;kjؾ [lnno h|typӉ1~6pᄊ΂+2EdLI7`anѨ@&4F9h(ؘ 5("LE0`&; 2:6$)߉F'p+/?s{)׭WD" W9eKN'x_Vzi麞hJ&ª&'Ixxgz;$ ?wn҆C47S`b[>O62dPϤ'`ٯ'pḑۋ*.^1i!^^^nU4 5/\`M+*EU Z,EpLР0 & &O%3e#ɖ3 ΃ޤՀW"a; ݘwhiJ{UUUm:e.ҪS >.ɼ`LI;Jӥ+ <%7q>˒зM!wkN)"$nW$䷮MHA*q%f299IZgGGǛ---eh=QA&&tu}ȍ $R\ZlǪGe#F&i2 `W6Z˩C0#qL ː؝%9ͼydL3Y):f[ccc5XȞ.KVV-- WO8KNM0`ʼcB7p~hWOL7zjfBdRjc/n_6JzciS7g'a69\HBb¤`{)q=@`u'"T꘠d?qrwmR@ӋՇƈt:9jS&mRぉIh~?"NPӫ )=΋mw~ rP&SByPPXxͨewwwtA![5*@N-%LFub$+ |_ߦ:2GX_/1Itep ?gd' APOyf\.xs?e1+d(58t$z1\&5*@,,[B0#h7P&brVC$GcѶ[2!Ț:]A<=i7~zKu .b3\ޗY^$L8;v}#< !awF] cCN8+[7I nR0=g*ioڶ%KOuAץieHJ>)A4*Ge4{E ~(L–<27S@JЭENO<-5<ݏι[*S/wb OMMC<STp 8QZđ+6gJ&ě5eM @׊p%0HdXvl>Sh6tp!moJご"3dJfp- r|t?Ȓ%-aj2@71Ý9ӰnNIdsK6 7i;GVȣ,)Z *5Ęr-\3^24aҫ_K 1b%C0 ҅Α,귻VRY% }e=)qje /q@C3CXVW)@Ns=$Nib ;lsQnσ7`ljX |]X1w>ZszWT5_޸F pʛF .Ћ؜ΗGa83˙<C5z;z  XJ9O7\d\QUBt:`^Q&SCgG  ƏGdܐozȫ3#g\N"ޙodxhomU *7ZBAJ|񘘢 \wpE1lDF# ^\GA&8!' m`>|-7gm]P4gd9~p[,yAJoIv?<|gggyri=$}z@߇QCh,N ɚ͎` D:HFK9,vQe=ީqOOԔa.J?R{ϞHv TX5~辵1&sW]дƂ@cG{wB_DpapۉP[N?F+-wJq ܴys{<}}}iiiy>@,f8 /6l<ާk` `yYs[BdX;?]D7_|ߛ+9Yrd10faƛa(*ܫ@hɠcB"2"Eguӯlқt476!-4-݉HuQG, JjAJW*wjPxzl d\yp==4:I $9l8mlvZp xMȺ*]e˅Sq⭸ ލ+uTC%cmIHH#͡9c[bT-]՚~ӌ]qA`+ ض} dK]RtL7pD=%R8imΞkC?Id\\1Are¿E+!)>擶OEQdg V9/i$uʸr{vehu!xS p8NaM{2-S0BO62#KD| Ξ~j꠲ ,YbRo6;^S}FXh)XPR\;-:錒bNo5v0dʲs77#[GBO!&' K۷ycCA+>)> ׻*o4ML7s 71"[v# $YlYk:13]c8M+۷@hl FH&[8Xֱ!ro\.5:=pP\PgIj 2q)Qܞ)IH:)ec8x#phXV)Od "JDePtƕo^ʓǣQPvyY +N5c.-BC 5 Lǡ׋|29>=%\!BD#GtSJpnP~W:'J' 3]}Vɴ(2-@oT703 |6!!HޒOCJS7UyGMYDb33z&DV]$t $=/ZFpU29)5'~- Οԣ^4&S4asea0%d.<ʐڳ޴ #jYLPi3yPXp(p] \mŊ('[έ_>:vW)Y%!C6Rw" kF ei܍ҥ D3g#d;,f͜YM/wykXW#] )k*ּV,.R@ /%ft r<)S2 vND*&0,Tft '%F.hw<7Ϯrjl8֛&&& O2UAcw+%Yy9D|h<DnA(_~>E!aDWCÿQ&&.3uWʉgOܲ{HeñAh .f판)+P^K B/ihD(o~ 4kZ Y #UTlf; lbJEB 5ݎgͭB9Noذ9DggcC?}D4 b&BԅEax\U7jG@S0~Dh%3J j,& JCCC{7DVWU (u2e]}BR%ϡℋE.&U(25A58=D@n0+S5kWGW:Do] BmQ"b/h/w VHvSd妦Di=w1nlӬJO)^LLDUhj^VK v૩|69!dN\qvw"j }HWڮl.7 Ty< qm+2YMԗrݓ%662Y& )O/wjs46UG0:o^T_k0ɃS߇LG./gvT=+*axDk]MTE1b%Q3MۆU^=,Z&Gt:`e˞3_G} z:d~zlъ~Lmk~(j)(wsh^zw!WCK}rL>FxK#|*> 'WUXk+Zy *g!Ai!@ƾ_㣰.|'XMTv_0VQl߰d%Y2ytLOd/xPnW 'MFҞq\QRTa `0eu-* ҙNۣɦs 󚾟Gŋf O-}B"uM8F֭|!UݦGt_Ȝ=OWe(ߡsv`gtIUL1 !f'_%8p~੿K:+C3iG;>u^7jQ&žvxC q+=\4@)Sנ Q]YQ/,T|a7X'AhV1쟮:vq5d4<~~̙3X3,Q WT"6'j{~O"QE NGO" h8 ~oUyϒ`Wz -Z`0&?>v/Y aߋ0!lĉ ѿ<倽_|jh: CIq!2)e:u';?(pFo>YtIN J71^HwoиD9VŰ̝ϯ ;j! %6D72۬]pBpfq1Cǽr [:}]x/Mi zž#Jx@VPF.$\11~R\7 dލx9TC9,syvZ2pZ6H r1[ؖsº FqC:EZaF[Zځ*\GAkRVMC?Ez*@y6 S?u'ǐyv˘r[d\HFD/9FBXjvT`cP\.+8`zY-1;or3:t<^n9QNNx%b#hܳߥYEEP7>=MQ-|uu5@EaUv?? c&ÅǜըĤp01z$Z^qJL\tic.ԑn*z-~?A-yjG#Ms}?ڻjϙǙ#4WpԂ(XrkuQQ ]Wr^EE*(TD GRBKIKӦ5Is;ߙI½u9߷ooIً۠F8/ɯ 64x8kG-XvH,F\ s0w GΞzs?{852J]U!_ U)d2 fz6(k_Vݸn~_EU@UMTYSo$+=#p>2J4* ugS#h"+:+~_@q6ۦf&z6~RTR;i 4D#wl.Zkq”WxZ`Joe3zpygoz I~\8g{7 ,3 ɑ$o/YNb"!Tܑy5٪Ρ{Gzb)@t+- :0 6CWֲ, 6@A#$)iEcT.@V)e,Y)ƩFX-O,׭gN;GZ(4Hҟ|~̶J7hFԧjXQS:ub>"m+^\_ _X-ؙ]xj@AOT/9 tƁ4Lu8p7<^4٦5f޸vbQš C_~EC./TJV?S. udYn-mixxs , 4@(4i>q%ɇ AOuPAtÇ). ӤqLAʲRFfzbZiYY匿KTZAU畗7Z/:R3["Njb/ʡW+cey: ?Q{fLKg'ICy6U7.E,( .g苨+1-L6l-" M;(c23da7@G(6NEA,$q~#Gdnpk=h@;;;B!b9QhB,(H{Ƀx=(H,EA4Jupz)>e(UoF'p@m;0@Ek ^a8: $Oܯ]fuߛoݔ΁'?~gvxC~*K)peRwO (oX@Uի EZ!J/\ro$ɜ@/T,&LUHJ<Ϊ zYl}x:G6MPTNJDP.Т zg!d 9 (u^ʘ%K#C(z Eh]l.jܲq-)nxV&L0xU ^Sn[{Wd _4^D~S˞Ajjj/LM$zqt۸qK۶m '> FaG=zu-r-E#֡(obdE@.[bm<ҷ4ϻcIcü3[CԼ4Ӝ8_7x@ a_9xS]UsC`>g ngXA0ſ4Zlgy*MWWW?k*qS2w5ktYȎ{SWuB1 ƂÇdT929hKПREmT%TxRWt#l1 SAKu 0萮L Mj3UCfvkܠȮ2.;z?J%z@ڵ7֭d;iEy&4S9s6h[GGzʔҤxW9l'pIi"=o?@"-e`1q47Zt8'F@ St:F,Z%ۊ@Zs}ݦ͛g?V?0}mAx hju---Wxbz?杋0Z5JLC;%GTY,dG{L\Z'a^vCe p4 BOUJ>(c$OdX$},$s&ViH#Z9Ȃ.V,V\B'l(m\ŋ苼"x%!ȏך(dT8>/-NԷo/Dz5ի}饗b}&H]{{a|x=x|=[l7F)hYy~;_WX)8 u*2 {1}cdv |= Cعq}(ψίCCIXr2H022]<,?>-Sţ\nһ: gQ4و @@iD'Q+n(u (X3Y@ i@{?%2؅)8<ү|W+gA(7WUZQ3Q%yr|7Kk4 oԿZJOg2`X(2_~V[傑xQ6|[YЀײ(Xi|Fdl8=\_b:7IqU]H/}ݨ6 cvBރ}mFK4 %vwIu&׼wt *kDIxE(p \;%A6*eo ^oiOJ ka`hL3i>q~%o%TQƺVZJ/`MeAS`7q5w jJ1^!$$+| >f5IhhDw*G)Q 7)sH)aAVGV+ =-3YaQ9EIM6 ܯ{=PWĿ7[?fwy&@Q@v&'Vw]5S۹s&I9~# 2Ss&55_VY]umE1& vϔz,Ewt/f-@%W#1XP̷nX Ro;:06ꪫns>4'+[mՑpLO ڸfIZS'dg9f%%yzTt~MfG@;c1s`X;ϟǑQʿjx#[_ߎueaߞ(qӹ!/ZVXyHp6*0XJ}d: p j4Ճ""~jy`A.ZFcNN Z0oo_gz]V]=X?Tls T*s;*qCǩ'W\b5ad 8v@=KLFS,I9P#ǣA˙P]YҔC,T3D" 'e{$Pza4b)l˜1mPTJ d"qFGf.P쟝.iFgҴӺiɎr~HS8ΏԙhUO3YPM:("b9XVmﮄ(r]g?+4$)08`I|K73$؃Hw,(/`4!'H~3IƖUP+4Ifx BI#)//3iEIq7W_`wW7>,8y_)5ws dNܑP}zw>{ڗ^)xȣU(K*?N}Kҍ*ذq!Zch+^K,ɑihw?uXsSܝ~|$IQ4Kaph4צ3>݊[n |Vmiߓ-}Cv^Lk8tS`'R]~?$7E}P]}hZu QO6wQK<&!glpfc''MʹaRD P)#ĨG 3g.ʓv\+ loJ SiNMR<2a>n-GOwB!7_8eMcWW?6a/Af=^j{6o~;vi&IH/&`I;񋥟λ==`EcS ii)nCQVN X%6IkY ּ.dpvwMfuN}ofM7~5Π^9F.+Xfpޟ=6/Â/r6HeMt.XlSRS`Qr䦖FvU{dFqQbWujWm۶?m߾S^/jJ9)gwV%w]y97DAnF vlK|ym=GׯW/>l;J;v߷~5ts*E׆Ra -hw;T\7aY]- \K EZot.B2 QJ/T`kHţv4<"Хiv\cqg` d,O'giӗɘwOJ} [X|Vl@bڎe$i`JQ4(P*rv;U[ %;*~*s*s,BjBЛE$9xw` E"c\b(]mӎi*w'6,7)|iA2 ۃ)gT$#0+Йgj5ZRXQA%Tj1|LVp¡ٌ'1˦sO-I]vmkM2{hvM qb(TO8mD Bg3nd柍ǣzq=-V`ϴ-i_9fnOs8hmo  ϶C3Ũ['NzkƂk„eoBl{_B mY϶) AIENDB`youker-assistant-1.0.1/src/tray.ui000644 001750 001750 00000004350 12312451003 017446 0ustar00saucysaucy000000 000000 Tray 0 0 84 35 MonitorBall 14 -1 35 20 Qt::LeftToRight font: 6pt "文泉驿微米黑"; <html><head/><body><p align="right">10K/s</p></body></html> Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 14 14 35 21 Qt::RightToLeft font: 6pt "文泉驿微米黑"; <html><head/><body><p align="right">20K/s</p></body></html> Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter 54 6 31 20 font: 9pt "文泉驿微米黑"; 0% youker-assistant-1.0.1/qml/img/logo/Manufacturer/ASUS.jpg000644 001750 001750 00000007503 12312451003 023562 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1A !Qq $4Dda2BW#t%նG  1A!QqTa2B$UEbr#34D%e ?4d+RS\ xԈI )ALH (HHcRw")‚L8oT+kX5a\\CIOQrnH.!R U$4&X2 0A" !HT"] DJ0R4]boՅrq5%>@nEɹ HTЙb$5!PwxPR"L()*ÏJҹvIۺV[^-۶Cd] ՎdN9ZG'* ygwq[>l^f[ou MjvK1& cu>@/aU#ϊɘZ%76*EVv@-}Kkn 6wIX 얶@. Sf9 `L;Ʊ)owIIhT列 fλ-Բ<#|+,qx¦]Ի>ō聆&lPI(ʜ(5!*^hsѕѧ.7dyU}2OGgUp"[9GIr4L6e3\WYd@.@8ߘ(f8E@~`IB&AsկS}EmORVh݄ƛF6.BoVɓ,nI>j4^鄊Rf߱峓N &α[`\٪p6hpZtu\9 C\mMLy+f^%wGfi@%'iε83#l y;QLj+-4eRcI?u*?2t/:upvˣ|35!T:ę P hkO`_7U]:wcJ1}g]*^kԯ)[O|?~^_6y;+՗y֧ ^ʖe(*Tulh6˔e W0ŚaaCrIf W;-mɒ'HR)O7Yd6ȡ0I_xަciM-3||EDO?zC{*N%5Ѽݒ]K+.em6L[C([TǍ=w|!)5U 0 T[]ʵ2hjJ'Hn:|[.X(%SZTY=F%XPDLfe~T%:YG^|Ikd W8]SuGbRh->Wgȴj\Ӣ`jUz*p#iU0C{k피YaO1IZIݱqWDbwzpM_fG>OdJǔ0Z?BPL fƺiX&L?+xa` pvυn57U?XSk_5>q7p>VxSl]Z7}|nu{oP*ͤw_"ɿ[*ZJ1;Z 7qđhCYՇ9->Ҕ6~{V]e r-Nk% ]@n_([Z B™"9 !#3[Bf2%B?(y Y[LY4t pifѭ]F*$Laa!\$Y=`ux^e5C ck!sN mx9-2fm$Muc0`{8HZV,Fdz~&//?BYvwz: wyj]t!zw[{WdnF[¤` E Hc! ْGL6 y46j\vhz͋0J}:ԯ~)I^>'>..Քmwcx"mϘ,z[\d&G|Ǩ͢dGVV|vUڞɶ%6joKB|χ{orFVCn"üoϰtZ;,W>W]0z?}XI%˵}ЗO lYD#9?2W<Pr:J!chvl34J%2nֱi7wVj¹\U 7pܐ\CƤ@H hLH e@a@DCE\()H&raSzMi\ZŤY rjJ}T‹rAq 12 ()  I jBrE PR"UɇuM7qrkuf+ˈq)Rw .M # Maintainer: Ubuntu Kylin # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE from gi.repository import Gio as gio import os, sys import types from common import Schema #http://lazka.github.io/pgi-docs/api/Gio_2.0/classes/Settings.html class Settings: #db = None #BASE_KEY = "org.gnome.gedit.preferences.encodings" def __init__(self, schema): self.db = gio.Settings.new(schema) #def open_settings_db(self): # try: # self.db = gio.Settings.new(self.BASE_KEY) # except Exception as e: # print e def get_value(self, key, type): try: setting_type = type get_func = { types.IntType: self.db.get_int, types.StringType: self.db.get_string, types.BooleanType: self.db.get_boolean, types.ListType: self.db.get_strv, types.DictType: self.db.get_string, types.NoneType: self.db.get_value, }[setting_type] return get_func(key) except Exception as e: print e return None def set_value(self, key, type, value): try: setting_type = type set_func = { types.IntType: self.db.set_int, types.StringType: self.db.set_string, types.BooleanType: self.db.set_boolean, types.ListType: self.db.set_strv, types.DictType: self.db.set_string, types.NoneType: self.db.set_value, }[setting_type] set_func(key, value) except Exception as e: print e def get_schema_value(self, schema, key): schema_default = Schema.load_schema(schema, key) if schema_default is not None: return schema_default else: raise NotImplemented if __name__ == '__main__': #list_on = ['GB18030', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16'] #list_off = ['UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16'] settings = Settings("org.gnome.gedit.preferences.encodings") ##settings.open_settings_db() #value = settings.get_value("auto-detected", types.ListType) #print type(value)# #print value #if value == list_off: # settings.set_value("auto-detected", types.ListType, list_on) #else: # settings.set_value("auto-detected", types.ListType, list_off) #settings = Settings("org.gnome.nautilus.preferences") #value = settings.get_value("always-use-location-entry", types.BooleanType) #settings = Settings("org.gnome.desktop.media-handling") #value = settings.get_value("automount", types.BooleanType) #print type(value)# #print value default_value = settings.get_schema_value("org.gnome.gedit.preferences.encodings", "auto-detected") print "default_value->" print default_value youker-assistant-1.0.1/src/image/login-zh.png000644 001750 001750 00000002447 12312451003 021454 0ustar00saucysaucy000000 000000 PNG  IHDR^T:tEXtSoftwareAdobe ImageReadyqe<IDATxb4\nC&oZ(/>b0՗(~I>}C4|fEPS(N#b? EI 0~Ft7b ffj@s#p hrQo< r /| UV y0O@L#c I~0C6n y> l MGIJ"9Ԕ8hf?*%rXFŕ1 7^goT}@c!җ7owٽVb88ܝٙh잾RLe|rYyUŧd\(7adQqH ܗgwdLƄ9l UEKuT{o{t5cO6#iM*)&jf-ڣ}܌}uOM0Y.O-X=?,$ӧ~ ˷mWn/m+wzKh^B}B(ea뇷@H rIt3AϠd>i kN=aZ> ?糳?jBl8j7lE#v=Cj͎ƇVܱOD vX9d5y\Gyc3[ݡmr[`ߣ93Aޣ`+kH6,|=CjNA T` 0 LIENDB`youker-assistant-1.0.1/qml/func/common/ScrollBar.qml000644 001750 001750 00000013274 12312451003 022760 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import StyleItemType 0.1 import RangeModelType 0.1 Item { id: scrollbar property int orientation : Qt.Horizontal property alias minimumValue: slider.minimumValue property alias maximumValue: slider.maximumValue property int pageStep: styleitem.horizontal ? width : height property int singleStep: 20 property alias value: slider.value property bool scrollToClickposition: styleitem.styleHint("scrollToClickPosition") implicitWidth: orientation == Qt.Horizontal ? 200 : internal.scrollbarExtent implicitHeight: orientation == Qt.Horizontal ? internal.scrollbarExtent : 200 onValueChanged: internal.updateHandle() MouseArea { id: internal anchors.fill: parent property bool upPressed property bool downPressed property bool pageUpPressed property bool pageDownPressed property bool autoincrement: false property int scrollbarExtent : styleitem.pixelMetric("scrollbarExtent"); property bool handlePressed // Update hover item onEntered: styleitem.activeControl = styleitem.hitTest(mouseX, mouseY) onExited: styleitem.activeControl = "none" onMouseXChanged: styleitem.activeControl = styleitem.hitTest(mouseX, mouseY) hoverEnabled: true property variant control property variant pressedX property variant pressedY property int oldPosition property int grooveSize Timer { running: internal.upPressed || internal.downPressed || internal.pageUpPressed || internal.pageDownPressed interval: 350 onTriggered: internal.autoincrement = true } Timer { running: internal.autoincrement interval: 60 repeat: true onTriggered: internal.upPressed ? internal.decrement() : internal.downPressed ? internal.increment() : internal.pageUpPressed ? internal.decrementPage() : internal.incrementPage() } onMousePositionChanged: { if (pressed && control === "handle") { //slider.positionAtMaximum = grooveSize if (!styleitem.horizontal) slider.position = oldPosition + (mouseY - pressedY) else slider.position = oldPosition + (mouseX - pressedX) } } onPressed: { control = styleitem.hitTest(mouseX,mouseY) scrollToClickposition = styleitem.styleHint("scrollToClickPosition") grooveSize = styleitem.horizontal? styleitem.subControlRect("groove").width - styleitem.subControlRect("handle").width: styleitem.subControlRect("groove").height - styleitem.subControlRect("handle").height; if (control == "handle") { pressedX = mouseX pressedY = mouseY oldPosition = slider.position } else if (control == "up") { decrement(); upPressed = true } else if (control == "down") { increment(); downPressed = true } else if (!scrollToClickposition){ if (control == "upPage") { decrementPage(); pageUpPressed = true } else if (control == "downPage") { incrementPage(); pageDownPressed = true } } else { slider.position = styleitem.horizontal ? mouseX - handleRect.width/2 : mouseY - handleRect.height/2 } } onReleased: { autoincrement = false; upPressed = false; downPressed = false; pageUpPressed = false pageDownPressed = false control = "" } function incrementPage() { value += pageStep if (value > maximumValue) value = maximumValue } function decrementPage() { value -= pageStep if (value < minimumValue) value = minimumValue } function increment() { value += singleStep if (value > maximumValue) value = maximumValue } function decrement() { value -= singleStep if (value < minimumValue) value = minimumValue } StyleItem { id: styleitem anchors.fill:parent elementType: "scrollbar" hover: activeControl != "none" activeControl: "none" sunken: internal.upPressed | internal.downPressed minimum: slider.minimumValue maximum: slider.maximumValue value: slider.value horizontal: orientation == Qt.Horizontal enabled: parent.enabled } property variant handleRect: Qt.rect(0,0,0,0) property variant grooveRect: Qt.rect(0,0,0,0) function updateHandle() { internal.handleRect = styleitem.subControlRect("handle") grooveRect = styleitem.subControlRect("groove"); } RangeModel { id: slider minimumValue: 0.0 maximumValue: 1.0 value: 0 stepSize: 0.0 inverted: false positionAtMaximum: internal.grooveSize } } } youker-assistant-1.0.1/qml/img/logo/component/audio.png000644 001750 001750 00000000623 12312451003 023456 0ustar00saucysaucy000000 000000 PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<5IDATxڤ@g9#XY[l,,I%ZhXd/0g4naXvu~/B i4:_W213Il+BDe^qL (al.! lA@uy2iu a(DqG?#;Pm9_IM&`)JInYiжoe$+E4$s@9m .ˈlEQ8pa='=5#vJBmbo,K ėKJ. */ #include #include #include #include #include #include #include #include "wizarddialog.h" #include "ui_wizarddialog.h" #include #include #include #include #include "locationdialog.h" #include "util.h" WizardDialog::WizardDialog(QSettings *mSettings, QWidget *parent) : QDialog(parent), ui(new Ui::WizardDialog) { ui->setupUi(this); pSettings = mSettings; this->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏 this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); ui->okBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); ui->quitBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); ui->addBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); ui->delBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); spinValue = 0; newCityName = ""; newCityId = ""; ui->btn_close->installEventFilter(this); ui->spinBox->installEventFilter(this); ui->quitBtn->installEventFilter(this); ui->okBtn->installEventFilter(this); ui->addBtn->installEventFilter(this); ui->delBtn->installEventFilter(this); ui->spinBox->setRange(0, 60); ui->spinBox->setSingleStep(5); loadConf(); connect(ui->okBtn, SIGNAL(clicked()),this, SLOT(writeWeatherConf())); connect(ui->quitBtn, SIGNAL(clicked()), this, SLOT(close())); connect(ui->spinBox,SIGNAL(valueChanged(int)),this,SLOT(setSpinValue(int))); connect(ui->addBtn,SIGNAL(clicked()),this,SLOT(addLocation())); connect(ui->delBtn,SIGNAL(clicked()),this,SLOT(delLocation())); } WizardDialog::~WizardDialog() { delete ui; } void WizardDialog::loadConf() { pSettings->beginGroup("weather"); spinValue = pSettings->value("rate").toInt(); cityList = pSettings->value("places").toStringList(); newCityId = pSettings->value("cityId").toString(); pSettings->endGroup(); pSettings->sync(); ui->spinBox->setValue(spinValue); ui->listWidget->clear(); int len = cityList.size(); if (len == 0) { ui->delBtn->setEnabled(false); } else { for(int i=0; ilistWidget->insertItem(i, cityList.at(i)); } QListWidgetItem *currentitem; currentitem = ui->listWidget->item(0); ui->listWidget->setCurrentItem(currentitem); } } void WizardDialog::setLocation(QString cityName, QString cityId, QString lat, QString lon) { bool flag = false; QStringList idList = pSettings->value("weather/idList").toStringList(); for(int i = 0; ilistWidget->insertItem(0, cityName); ui->delBtn->setEnabled(true); QListWidgetItem *currentitem; currentitem = ui->listWidget->item(0); ui->listWidget->setCurrentItem(currentitem); newCityName = cityName; newCityId = cityId; //添加城市后,重新写天气配置到配置文件中 QStringList listName = pSettings->value("weather/places").toStringList(); listName.append(newCityName); idList.append(newCityId); QStringList latitude = pSettings->value("weather/latitude").toStringList(); latitude.append(lat); QStringList longitude = pSettings->value("weather/longitude").toStringList(); longitude.append(lon); pSettings->setValue("weather/places", listName); pSettings->setValue("weather/cityId", newCityId); pSettings->setValue("weather/idList", idList); pSettings->setValue("weather/latitude", latitude); pSettings->setValue("weather/longitude", longitude); pSettings->sync(); emit readyToUpdateWeatherForWizard(); } } void WizardDialog::setSpinValue(int value) { spinValue = value; } void WizardDialog::writeWeatherConf() { QString strValue = QString::number(spinValue, 10); pSettings->setValue("weather/rate", strValue); pSettings->sync(); emit readyToUpdateRateTime(spinValue); this->accept(); } void WizardDialog::addLocation() { LocationDialog *locationDialog = new LocationDialog(); connect(locationDialog, SIGNAL(sendCityInfo(QString, QString, QString, QString)), this, SLOT(setLocation(QString, QString, QString, QString))); locationDialog->exec(); } void WizardDialog::delLocation() { QString currentStr = ui->listWidget->currentItem()->text(); QStringList listName = pSettings->value("weather/places").toStringList(); QStringList idList = pSettings->value("weather/idList").toStringList(); QStringList latitude = pSettings->value("weather/latitude").toStringList(); QStringList longitude = pSettings->value("weather/longitude").toStringList(); QStringList newList; int size; int index = 0; QString cityId; size = listName.size(); for(int i =0; idelBtn->setEnabled(false); ui->listWidget->clear(); pSettings->setValue("weather/places", newList); pSettings->setValue("weather/cityId", ""); pSettings->setValue("weather/idList", newList); pSettings->setValue("weather/latitude", newList); pSettings->setValue("weather/longitude", newList); pSettings->sync(); } else { //将删除某个城市后的新城市列表显示在界面上 ui->listWidget->clear(); for(int j=0; jlistWidget->insertItem(j, newList.at(j)); } QListWidgetItem *currentitem; currentitem = ui->listWidget->item(0); ui->listWidget->setCurrentItem(currentitem); //将删除某个城市后的新城市列表写入配置中 pSettings->setValue("weather/places", newList); //将删除某个城市后的新城市id列表写入配置中 QStringList newidList; size = idList.size(); for(int i =0; isetValue("weather/idList", newidList); //将删除某个城市后的新城市纬度列表写入配置中 QStringList newlat; size = latitude.size(); for(int i =0; isetValue("weather/latitude", newlat); //将删除某个城市后的新城市经度列表写入配置中 QStringList newlon; size = longitude.size(); for(int i =0; isetValue("weather/longitude", newlon); pSettings->setValue("weather/cityId", cityId); pSettings->sync(); emit readyToUpdateWeatherForWizard(); } } bool WizardDialog::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->btn_close){ if(event->type() == QEvent::Enter){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->close(); }else{ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->spinBox || obj == ui->quitBtn || obj == ui->okBtn || obj == ui->addBtn || obj == ui->delBtn) { if(event->type() == QEvent::MouseButtonPress) { QMouseEvent *me = (QMouseEvent *)event; dragPos = me->globalPos() - frameGeometry().topLeft(); }else if(event->type() == QEvent::MouseButtonRelease) { setWindowOpacity(1); } } return QObject::eventFilter(obj, event); } void WizardDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void WizardDialog::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(1);//0.9 } event->accept(); } void WizardDialog::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } youker-assistant-1.0.1/src/image/font-bg.png000644 001750 001750 00000004423 12312451003 021255 0ustar00saucysaucy000000 000000 PNG  IHDRLytEXtSoftwareAdobe ImageReadyqe<IDATxұ 0 EAҤbꈅc1Q -3'hm?Ϋأx:=|Ov@,J1!H,L@Q>bowZn&Q'\4O?#>#>Ҟ/>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#>#\a  a` Iggga" `\ ;r!k"htK灐.+jn` b|¸?}? ~|^S5/,oK@ I? ~@? ~@?? ~@? ~@? ~@? ~@? ~@? ~@A? ~@? ~@w^5 csIoط{0óp r\p؀\hF`fhfbr6a r"òE< l _Rz8 4_gbK</ok_ R? ~@s?|CL6I缸 &k?? ~@? ~@? ~@A? ~@? ~@? ~? ~@? ~@? ~@? ~@? ~@? ~@AF? ~@? ~@? ~@A? ~@? ~@?? ~@? ~@? ~@? ~@? ~@HYw&8]nڻc0 D\ (ImG!/,Vv^@\-41AJoki/ v 6fsb-% 32?@E 1pY4@3 xjv{kުޒV/sշ[~}=3tu8TTZJ(N#5~iU/Q+:wiӈ44C]})r^DsGFPqAcRc~rv|o%noݻswݭvc1etp70Σr/?bFM]On0UCu,G;Mf+,O=PQ~kLקnvL-F;ɞeҌij 9F5u<3SGU"3)Lx5Yu^m8m]2cy񞛝6I&"F`fVAР{Ohk* Ŭ2? H[ɿF7+τi4{^w(WH{&&'X5?gco[Mѱ#]x!>,Mb&@,!]yD_>YUFTHK ^= 9iqB4>f_mMvyLrEEN!]0& Au\Dg<^5M.% !IR.] *v Hep70.[$p^Lͻ1OP9ZoXTZam:HQ<czOOOS\B3L侑ө9oH&ijlGazM PU"򎡉 1;ধF@@Tʼn䨰:#.Z~*JI(]]]O˖-B FZfRpNԳmi{H</4mee;55E_5Ԉ)[%{{{oY\d4Mδ"0;3GzS"QB9{aDlnS 8AQܥ%@ | }tEidfd"Ĝ>}Z;zHe||\%05=ʎ5JU-P+iߋ"io#|qbfVnuJjQ{ bH6mŋ D`L\+r|UWц Djw}utM7 1n̡fK,Z쐮>D`#|$8Y!&27 I={9B7n5kPgg5:ꫯsBx__駟իnAFmuϲ iQiPԮ̦,o֠JmzVgZ`ϟnB V" \.'(C=υ0q [Y}vZ!:YDT;[u3R0=I1H~XGĉ" J;#6gH}]ShppP$I'&xA)*VjQ-22s^d._p:$ nHܼ[4 @̳>Ko ?\w]YV94w^04F -[fWpqݺu6! J}Ĩk/HK.>$ 8ԺChԕQ_Hݹ<4=~y_8NQj)Hرct} P1H jJ@kjvazT o!H^URWi޴-HqKwT 8 `vvVy$Z%OC=$ ?9&&&dEIDŚK:^ *^yz2SO!t@nhJ2=K/@R^{mfGFF+;!g-c Wk!cê5zdU{#]yAhUKIN"[9rVXKiAScs ٺq4[R3Lasݺuϳs7iKύ5mH}L~&,7OP$|VdvP0\8Lߧ{xD 1E | s({uoMBR3Cb0xe9iS?ypsև4ZQ@跙3\&';< 'cv„b\b*GT>Ѵ_reP) j=QRhw b;}@]J  5TxNq#A}K06,7j#6v,GhDId;)$EAꫯstm: h(2K) 'QJ2``)d#Xv4k%, w%#۽{ܹstqII$VQAng P)r1HQT;u$X4Ie1u qPJöx ^Z3@H9"0ƅJrw˖-rM[g,I-iv"=6uzk Ly g sd kvkpY?CX0zK}UԾRpƌ<<va8 aNEDڠ=BRV(fpyG }zÎ$‘2jN ͗;i˻o~)/; ȵ#6Z 6bR lFz;Dlye?0WT,EDG0/ײ-䀘g6MTJAo'"M4__d~b@UP#H*i@bUj%mGr&X6> ի{3=ΐm rfIҎOw>8`=9~ & 9 0ӥ Cd.!4e@ ?^<@ǖTENh@vО')Sn(Wm =QBph[|ר;sO>m6bGi!Z:Խࣾp62Vcc "$KkQ)ƂrbO{bm5v˲xR=Ƌ&M(T|MܴͣZ4?QdtsdBfh&"Mϗ^J"<A .٩"\snlpɆl?KiƄ'_nv}w\_^G@:j9 8-8Gh+o"19<!KǏ9IȧC|U2p\3LͿ{Ե/ؠH=?p_7^P!ٲۡwXv`~v~V~e4fןY S|9B_jS0]o2IENDB`youker-assistant-1.0.1/qml/img/weather/n11.gif000644 001750 001750 00000005642 12312451003 021440 0ustar00saucysaucy000000 000000 GIF89a008Z8Z鴻˹ָòȶ̾ŸĩӮވƵɹͱ!;]]&Gi(Jm(Il'Hj$Ba">[*Kn&Ed-Qu*Kl)Ij-Os,Mp+Ln-Nq)Hg.Or.Pr-Mn0Qt.Op0Qr5Y}4W{3Vx2Tv7[8\6X{5Vy6Wz8Z}8Y|9Z{:[|?`/L1M2N3O5Q=\?^c͇mf>y['rҩ N<UcB(PG/^ 0$a5x9ÃWE|TEP 7t6(X!1#^(}; @6M 1@ u1wt ะtTga `pbG:Q`*a&>`fBt E4?1SE@4@^xXS c=eOWc؆*Uf=fa NS /N D9wl \6M􂫁pGNC,PFD2 h -'8"HX,e<FB A\G#hkedBR%` h@Cʈ4 ]AUPygH,,@c. J#^J$a)PFdX"QF'Bq KPF/:@XB3v AXbx,<A! G!B, N؃.E3Q&xDDi tQȂ%jQg Ps*qb4*QcmϘF0|\U lN&ELz- y͐X͏y`WD 8k bAԠF 葏̀Wp iȂjDlYuE3r|;P lw+؝M4 H%0 ^D41F,aC.a.y-*Q <(G1qg /Ա'N%Apn{0F<,oF s9s;|@5*ь8a0ԧN[ӯ.CP4xhO~KC#'Z&m? !Db'Qf;3٭}4e sڹ(Xmjw嬢fX8-"h !$ o|; R.Ajc$v ,{m2D(2"n/],P?Fa[XMxM`ʰFF$I(!P[kLݿfN ]Wn71Ira Tk="2P _1"9XFc9A&EˬS "뜿 !>}0ow_B0MRp2mdgѠ   \P LE,4r@-`fԚb>^` N= d8XY8h83d`dϠ)o|% m'04Nd Tgt 0YG,(R]A9I0(*AL8X.?T2  8@#I-+@?8ձPW Ea<}SVEHSCP-Z!d4:-i QTBKfX;v]+7qx9W>\4L* KᎪs6^s$PQS" u 5I,eFLn=kAUmi[LV$+jDMT/ IHBABxD^bgG#\<uR^ !;T.Gm"7ǪGT CpK+%ILnus?e*T?֪CH'6'bX; ,-"l#'?6- ŀc-soD0oR؟*+GRxvƈ Jet[hr`,]WuƗM&Z6W/$A&7+c!ڇ?I)P_.Ma>3V%lQ .]7JRnFAjK%C1?{MIp3ܐ3&91o٣/79g@)H= u R&5" μ-pU & hTԊKsN:lWJMRHrIh> _xUv,lO3ڋط8^:)lJoDfs$Um? )4dx1/zKZ(Q #Jta(_'Gfv<|B{S;Ρ\ѧΌU,%ƭ4wfD˝!yn,Vgt B:Z$ey:djrWNT֙lېΦpNtf@J/O<Fv Ac4^o)gBguhTLg]Ϛu{8s@hǃӓ-ȪCiTE9w=z6!S#kiN9=3zٙg!gq9(7 :(ZCǭ{FZ*!Dl̬8>֕-4WE!CB*RDQ""[N%t{t\i lBgrstR#1)Z{0kuqQw_ִڦ5`}hU/`E}ZOA1Bb_ RK#ژ4M7&kݛMrw;vc3wf7gΜܐφ^Hr­I{c:O뎵ɈYAknCӗFq3S^HbuoG/:Nu {DL^Ą)Ī u[lVɚ([ԨęЅ&z$bFPm2-_O,ςyi2B[X-5p{+Ly.)PP,c[AH,n _0'& O5oaQb6QKhԕ!&ԀL:)Y'A[.JN:ᵵ: ׮ svo~z|py&1>l l{) >}OqchnD}c0=Ҍ#tou;y򳦮~cֱ}Olƭ7yѦuKC.5=rp䗙, J(xBVu^*)YYdeIIQ`p~zY|uGobz}߼~}fsxӘfp LNM{sS9A;[{Drj_Wqroyyn q0ve<'}9_<ŋaDZv:=Tqb,\v0lr_ʥ;/\:5/Ё8xf=vuKɎ7qe"{YI2vvDВ Q!wũÒsvν.ߟ(jq._ZmgY4 2Q˄oKc5ZQXV9XazocÞyAs|y4\L64~huZqKdE!&JHw5ʉtlf[*XM XĉXϟA-Vfmg5ѵj @JQdЙ<ձtbEAl&$FzI48$V)&B]o}l֫X4AoIi%1xϓ* A;_D?51's-v+z<4Ysc :CcAe+ v@5~P&w >_ |$mw7U 3:!A5z@ӻׯe"Prlw=Uk%֌&oQTavB b )F" ?HhD+?jT0 Cy#.h1-}sζH@6;;;{73yvj*;Ls2*AB*yY'\Tf&]|,e4j@_ !-ш-/EY%?$ЉDc\\T 4i.[ = 2ǓB0CkѢ^/HOp2ryiÈ>x<ݡDrׄO;;r.2 u+\WDF$VN+eQg>qt&*KȞ zwl7W.7#,Xp %YC6Q>N)ď dS!sFDZgeVJ)R\~?ZF G￐NtqBZpQp9M "ln>Zd:{4Q@eă/s`OWd*n\Ƽc0ˏ'p4 ?~JsBG)#A7M \`/֝ 7M<7edN\1R('A͙zy^0Q҈W݌pXن_NWM}];w&l^O6G,H6bSߏt:KlsC Be[{P'շDž T)M_ΙӿX:Ne803>z^Bٷ}2|Qjyfz {OmǠk }㩩6hD,;N|lPʷd>k 5l=~h {36pc5&c嬏TZkbbMX鮷TNL-Va98 жW@,U}jt W}JNoݺEİSD́S;2 ^+Gz9Lǘq&5{LZ?Ǿz\exaǃ(pH/6LGIY#ְb:h{edD/^o|΋C r)ZΑsMI.F>?bH&;n>.P\+?N}OCCQ?';ؘ6FTh Q TL8pf;b`Z m5o}Nŋ`-6[CƈrS7$FQM[gƾLQ-I;("Rʍ MNMf: P-hY@j2s) Fy'1y46U\5DU5dƵvWIq]tN ƺ,VԥVƹlz ܱ%:nkCs3xRS\8/6+Zj brj sې AyIԊ1(v?6?UiTR KCSX7S#7GAwmT("0?cBD-9CLtc,+0S'z-\XcEy ˏO36MT5N9ȊPSt*`mX_EL̒dySLrIku~zWd-z%""~U .*`EB)XF,}Y!x0+<ȳ'F AHф { ~͢C:1$ּqIʋ (ǃ^ه{܅3+#=1>tƔbہpɔv&T-o `fR~ by^ڋ,8,N14wP=u4< */ıhhD}G8&onfjL( Xh1-؃n,vAIla̯U|Ol7bv>¸ ɉyP-݊)$Z˝chِMJ uGҹ&:@B/2q2# Ye$urN9Ԃイȫb9E\}ζJ?N 7]Oae8s'W­hy?쪥oO\|xZo"z{MxmRo?fV.IJ=(&}^?,*&6ۿycm~?ĒqͅwbQr~3;D+m4z-U(S:+ ay]JQzc[ӗpςo݋޼(f!NnoVyi t|:SBy/i\ȏ5)e>q<ܲ 3fGdm|NԜgAYPTYR6Ms׌dml5.>P'=rE3l{j,.oxBMyh$_?tn{l%CDY}v='\0YJBS wJ\=b< ;% iegح/\ --LV:]K\ GHf.id:yT:fDp\ۜ0Dk80;oDH7qq4nd+ҽ$eqQ&͙[X9J,pk8Gq\'$D^Q^bnqoD T-ErJP4GC^jX@" t7; 'pN͝Wy+v;#dMf(qXI]h}ũ9čLSY8_$N4ɛܚ;zb)^bx7ny9=?2G ꪅ'DҪLA>4o"4oBݺa AdobedF]   !1AQ$ q4a23SD%FBRTu&V'Csdt5EU6GW  !1AQaq5V"2B$4DU6 #%dtEeF ?B]݌cBv¶É7`Ml8h`vC<^8vC67aFɷp@0y8|6BCw;p~ >.t/o QA ~>t\xu..R Inx|yp\n>˅pOesYn|O.a[;U)F41>rvt%`{A Qm1f#nG&t1rv-ҧ<s&/gKtqe_DCXu+fW#N>ڜin+?k'aGop''v -YH2z">(hp]}m.4s; )cOCy .~ ڹ^:|:&2;,D"j+O(S+dAUlc L \.9#cn;9'+mA!U&S>Zm*r2S$v\G#cnl'6Б,9&q0rnP@6B_-E rxi(ǶO,ܭ '؉gI_?Ùn>MH da&}sC d~ZM܈pv2BswM[/b'p{WWtBP6̧֥pH(Js2{9N_zc>rէeꄝhkgH=[B :u-),њNtNTXi ^$|DZ~+~4_43Ν;ռ-Zۺ[51U&,PR6Q[̩]YGΥ (g hTN, K?gN.'Aꣵ\,l*RyLĥiIT*Y96ڀv)Qc7tkZm2"w NhIW+,]T5j{7q$Yos+(̀Fs&mXw9Lר[,)OeYn,2C NQ<03!tQȯ+yvڻY Rݟ eB "*ClVKu'UϪ=6ZR@$z n*W G~.їFjƯ/;*YJۥjNvpowsV})%׮NՍu[jP =EHk9.JKm4PsLweL_:837:huw/"JwV7V{˗mf޷`-Me .- |KԥbqfrHJR91I+YVXm+a~ֺ ª4J3ҫHhH ٣-fGCigC~\_Z1ͫ@-Aq*bΎeu[}JP%Y=mn~AV/AZUK:S$rN3g9mN zjtiU7M\-6`N۝McX3`C-'m.ݹW3WXȸdjЅ7AzqR%U4y\ /'?/25sN;ƙgʩe-)|X4W5YEjU{κ]˸\1q07.BS6bl?DbuwR:qĐr&Aq!+&*jG  pS ZT*o+WXM%Y R -P-5 0-\Ø MJ$8 st:pB^Y`lZ-UL6&v"RBdڮʣmM#:~x^UoSnݖ%az:$Ự*dnʫE)"b՟[/HTBT !MHX*ۜWFG O.Fyo3({1{j-{Wj&$8sN5#82?,`ۆsԔ:{I@Ȼ+I#oׂI(wtl"n-=9Nܜ@q8,` Vx_tAPHKRV1EW)Ab@Udgdp6s)\i)$D10QΣh:miDܤ(>(ׯb_‘Rnj4d,$^ o&9JX%FIQ(]Pۤ,JQP 1YC2sr""VX>PZ/&!EjmvpN$K&]+Ƣ6B^ot˳m %;ĀГz^BNNsg; U,YCtGQĎDL|lxD>wɡT ? p !yAWiBO $,WF]S2mUkW (* A*m t2m#jEX u[Ɨi۳aGhYW3JgjyRXF[m"3Ir4&MO&4j*y1!&վ o^^pD{,QH޻s7}ψF87o ψC|( ~Ig![ʷYvV@iޯn;9?] [@8/QrpP5?"n^,` =xt7KWb;7mx7 c+FjDi!₿0LG1GWN0SLlS'IrG~,l ,V5\O3D7o1!<+&;xoDUwήf?ph~GKGތތ?5}v7- ~Gߝ?f_/v|^ߚIl,qGK= z3z3/vS_;Kb">#ήzfb_/׆|^ߙKl4 vuqt'[ћщ|:㰯^:wM4Avivq4za[*~9 :Lb8h(<#,Q]љ? KOUM4A<%NľTP=WOKyq'ՉG/FdžTn"k.ӫb0?}m ~yͿm_C*~9w3^j&fuLSGA;a[aě&I0;!Ğ/;!ě} 0d Mt<>![!ĻN?ACH {7m|(youker-assistant-1.0.1/qml/img/logo/Manufacturer/PINE.jpg000644 001750 001750 00000007527 12312451003 023550 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !AQq2B֘) "wHX9Rbr#%Y1!AQ2BRq"ab ?M+<\NA5 A5ENCM|<ԇ]CRǐ`PQr*,NcJPt@{*WYE>OoFevV.M}U T Qu !&jC.cI~0v(t(u Bb1A\=+'2 ZM+q&SM{(MGS_5!DPT$;}:he,qׇD)rLY]1mODbr)|]xZҭ;y!_|P(dw;̘M!ftXBM,f"&9mc2C/D.eJ((̮J`eɯ^.QT1H~<<,y=DD|"#E)TߒN$qjwHeiL[{9MG}=ūon`Q@ۑg 3[#i7:ثr8JEREnH؅^}nbGe = .87/4ڑ7r84\g;{lX&l1PO %3h9`B"/:?H'>18?3ISƦ>i.#~\1![1ɻlɦF&ĹN-28H܌)Rj) |-k޻ULm-džw/;8~6Y}*N چ,S>`lWoKDZ;gaeN9O9>awg޼'bۄXWcCZi+`a!Y$qljS*dVg{֦㔓7g/p?d|p1^:s}R@,hg =G!!96hp=(eNփ)q7@J B+taeowyήxyv[;XS.(DK<3H),HP,e%q!G5OJn[&~Ok4cM*&>)8X"p_(mT(d I:kl/T%P :Wm-'WP/c?$_:Ϝz=q:yo|CT=uƜtYn/l^`_5{/OOʷ"_ߓL@*E==?-Ư_籽?t ۹'ixgO+ im܋4D>X H~wm܋4:ݱN~oX-(۹ /hubT?KKnW8wOfL^68BPkGKȵ.8˴^:v'lԷm.>%--8۹'e?Fc%hhv3:ױ]G?I>[w~88Iv؆Rd;960L0[&9{ڪCiql|rWyTD 4f\NA5 A5ENCM|<ԇ]CRǐ`PQr*,NcJP=\pQ""r@=8ܺB~(}tԿJ9&SM{(MGS_5!DPT$;}:\JK1SҀT.^3(wG_uZ|Nyouker-assistant-1.0.1/qml/func/common/PageOrientation.js000644 001750 001750 00000000122 12312451003 023774 0ustar00saucysaucy000000 000000 var Automatic = 0 var LockPortrait = 1 var LockLandscape = 2 var LockPrevious = 3 youker-assistant-1.0.1/src/quibo.ui000644 001750 001750 00000001162 12312451003 017604 0ustar00saucysaucy000000 000000 QUIBO 0 0 400 300 Form 0 0 5000 5000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/OMNIVISION.jpg000644 001750 001750 00000041230 12312451003 024474 0ustar00saucysaucy000000 000000 JFIFHH ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:03:31 16:39:32]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOTI%)$_SzM:Ts} 乭-@DY4E~^[>!œ2S_ 35z8K~>ܗoȠr@2ÓrDNrN'iF~נIS}[c=Z-1A )PH)$EkzwNǕo?6\v ,ckfT7{XN3DƵ=C'"T:׳`;:m!-5v{twbcĶ́k.ۚk?Hr4lدLp y\pf7ٮM6353zWnVџsiV׋jUs[_V߫9UP6Ӗ{^N^a:}w{ zl) t:?GɊyqN9!#DY}Mz>{(<12틦?P1r0gL~0-Hsk?_VL91攱GL+?u5G3FrQ=%Gku|2ڟHbP67n{zlu#кR鹌mWeko~p:gF}_*%kk;ps_{Okѫ}7kgl3Z#wE /Apcjn\_\<ܾaLRhz_ܾղp1 8'ޝm6:^ѓokwuީSӛS1׻ԲX55VeVFVYnM\ NDZ.ӽrqKif5K=ZMȁsY?WiH䔌#)HH.~7.ۍCFg {7 7Q7]WGp8=hgM7~otKVmMc7X}Vçﲺ?@72vg wTI%)$IJI$RI$I%)$IOTʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ Photoshop 3.08BIM%8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMGF] AtherosQSa]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FLJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOTI%)$_SzM:Ts} 乭-@DY4E~^[>!œ2S_ 35z8K~>ܗoȠr@2ÓrDNrN'iF~נIS}[c=Z-1A )PH)$EkzwNǕo?6\v ,ckfT7{XN3DƵ=C'"T:׳`;:m!-5v{twbcĶ́k.ۚk?Hr4lدLp y\pf7ٮM6353zWnVџsiV׋jUs[_V߫9UP6Ӗ{^N^a:}w{ zl) t:?GɊyqN9!#DY}Mz>{(<12틦?P1r0gL~0-Hsk?_VL91攱GL+?u5G3FrQ=%Gku|2ڟHbP67n{zlu#кR鹌mWeko~p:gF}_*%kk;ps_{Okѫ}7kgl3Z#wE /Apcjn\_\<ܾaLRhz_ܾղp1 8'ޝm6:^ѓokwuީSӛS1׻ԲX55VeVFVYnM\ NDZ.ӽrqKif5K=ZMȁsY?WiH䔌#)HH.~7.ۍCFg {7 7Q7]WGp8=hgM7~otKVmMc7X}Vçﲺ?@72vg wTI%)$IJI$RI$I%)$IOTʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-03-31T16:39:32+08:00 2012-03-31T16:39:32+08:00 2012-03-31T16:39:32+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:d8c5e77a-7b0c-11e1-873b-c4fd423be6eb image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثWN*UثWb]v*UثWN*Uث?O|ZĖJ_ִSC.HӶ.U<@LE(ߖdMo*PM?)擭UwrT,њ[28X6&K2DcdyϾY.p[ `aNBqey9zϫ\W1t5-C FB@$Q=fF,..]8e\IZ;v*^]SWgIӵ2s<)oonDݙi>f~LX8ш7ޕy_qӥ_'i1]hz$]C̣#JSÓˊ},a9Hw e~dF/u8ӧ]z uL."iS1_MJrd'q_eX&oS#\`aukq1x_UvE7䙍Y/2v݉9tyo~ `i?ހ$Vep*TK4yc__]]tzHfY8/D>T{%4=I.)z$/ٓ2z W*?Li;xx?}G5-Huiu[e在V[Ecr޻˩,_?N>̖ˠm&x8F8:1*[M>(^4Zd-0_c-yhZLqYAHc$UfLu>>fq 4%ҮnoY9I=f94:*FJ ]חc__Ҵ_\oݪi|oJ<毄>%^AѴ4]E{cY*.Μڟvsˬcs CE.'ݤ+(ۃ?k{CMoSoDxsxlrKtFTW=o2dK~Z|kygooĞ)BEQ\͞e8Og5>4e;cA'5un-nԙڠHe/ɽ0o~f`vyȎMԌOa=3o {_Ru=TcwW? l#[Sˠl5Ok+'PlOj]@;rGm/:ysuaA+}9V[XH6\JBfCּK}s(S|L|!TN*UثWb]v*UثWN*UثWb]v*UثWN*UثWb]v*UثWyouker-assistant-1.0.1/qml/func/settings/SoundEffects.qml000644 001750 001750 00000037527 12312451003 024044 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import AudioType 0.1 Rectangle { id: soundeffectspage width: parent.width color:"transparent" height: 475 property int scrollbar_z: 0 property int play_pause: 0 property int chooseyy_height: 200 property string actiontitle: qsTr("Sound effect")//声音效果 property string actiontext: qsTr("Selected music file name in the list box, do something such as audition, substitution and reduction.")//选中列表框中的音乐文件名,进行对应程序事件的试听、替换和还原。 property int musiclist_num: 0 property int current_index//当前主题的索引 property int default_index//系统默认主题的索引 ListModel { id: choices } ListModel { id: musicmodel } function split_music_name(str) { var need_str = str; need_str = need_str.substr(need_str.lastIndexOf("/") + 1, need_str.length - need_str.lastIndexOf("/")); return need_str; } Component.onCompleted: { if (sessiondispatcher.get_login_music_enable_qt()) { soundswitcher.switchedOn = true; } else { soundswitcher.switchedOn = false; } var soundlist = systemdispatcher.get_sound_themes_qt(); var current_sound = sessiondispatcher.get_sound_theme_qt(); var default_theme = sessiondispatcher.get_default_sound_string_qt("soundtheme"); choices.clear(); if(current_sound == default_theme) { for(var i=0; i < soundlist.length; i++) { choices.append({"themetext": soundlist[i]}); if (soundlist[i] == current_sound) { soundeffectspage.current_index = i; soundeffectspage.default_index = i; } } } else { for(var j=0; j < soundlist.length; j++) { choices.append({"themetext": soundlist[j]}); if (soundlist[j] == current_sound) { soundeffectspage.current_index = j; } else if (soundlist[j] == default_theme) { soundeffectspage.default_index = j; } } } iconcombo.selectedIndex = soundeffectspage.current_index; musicmodel.clear(); var musiclist=systemdispatcher.get_sounds_qt(); musiclist_num = musiclist.length; for(var l=0; l < musiclist.length; l++) { musicmodel.append({"musicname": musiclist[l], "musicimage": "../../img/icons/broadcast.png"}); } if(30*musiclist.length<=chooseyy_height) { scrollbar_z = -1; } else { scrollbar_z = 1; } } Image { //背景图片 id: background anchors.fill: parent source: "../../img/skin/bg-middle.png" } QmlAudio{ id: song } Column { spacing: 10 anchors{ top: parent.top;topMargin: 44 left: parent.left;leftMargin: 80 } Text { text: soundeffectspage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: 650 - 80 - 15//左边区域总宽度-左边space-右边space text: soundeffectspage.actiontext wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } Column{ //声音主题 id:soundtheme spacing: 10 z: 11 anchors { top: parent.top;topMargin: 120 left: parent.left;leftMargin: 60 } Text{ text: qsTr("Sound theme:")//声音主题: font.bold:true;color: "#383838" font.pointSize: 10 } Row{ spacing: 100 -16 - 20 Row { spacing: 20 Common.TipLabel { z: 11 anchors.verticalCenter: parent.verticalCenter kflag: "no" showImage: "../../img/icons/cloud-gray.png" } Common.ComboBox { id: iconcombo width : 345 model: choices onSelectedTextChanged: { sessiondispatcher.set_sound_theme_qt(iconcombo.selectedText); musicmodel.clear(); var musiclist=systemdispatcher.get_sounds_qt(); for(var l=0; l < musiclist.length; l++) { musicmodel.append({"musicname": musiclist[l], "musicimage": "../../img/icons/broadcast.png"}); } if(30*musiclist.length <= chooseyy_height) { scrollbar_z = -1 } else { scrollbar_z = 1; } } anchors.verticalCenter: parent.verticalCenter } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 105 height: 30 onClicked: { sessiondispatcher.set_default_sound_qt("soundtheme"); var defaulttheme = sessiondispatcher.get_sound_theme_qt(); iconcombo.selectedIndex = soundeffectspage.default_index; } } } } Column{ //程序事件及选择框 id:chooseyy spacing: 10 anchors { top: parent.top topMargin: 185 left: parent.left leftMargin: 60 } Row { spacing: 270 Text{ id: eventtitle width: 100 text: qsTr("System event tone: ")//系统事件提示音: font.bold:true color: "#383838" font.pointSize: 10 } Row { anchors.verticalCenter: parent.verticalCenter spacing: 2 Text { id: listen font.pixelSize: 12 color: "#7a7a7a" width: 50 text: qsTr("Listen")//试听 } Text { id: select font.pixelSize: 12 color: "#7a7a7a" width: 50 text: qsTr("Replace")//替换 } Text { id: revoke font.pixelSize: 12 color: "#7a7a7a" width: 50 text: qsTr("Restore")//还原 } } } Rectangle{ border.color: "#b9c5cc" width: 550; height: 205 clip:true Component{ id:cdelegat Item{ id:wrapper width: 530; height: 30 Image { id:pickcher source: musicimage anchors { left: parent.left leftMargin: 10 verticalCenter: parent.verticalCenter } } Text{ id:listtext anchors.verticalCenter: parent.verticalCenter color: "grey" anchors.left: pickcher.right anchors.leftMargin: 5 text: split_music_name(musicname) } Row{ spacing: 40 anchors{ right: parent.right rightMargin: 30 verticalCenter: parent.verticalCenter } // z:soundz Rectangle{ width: play.width;height: play.height; color: "transparent" Image {id:play;source: "../../img/icons/play.png"} MouseArea{ anchors.fill:parent onClicked: { wrapper.ListView.view.currentIndex = index; systemdispatcher.getMusicFileAbsolutePath(musicname); if(play_pause==0){ song.play(); play_pause=1; } else if(play_pause == 1) { song.stop() song.play() } } } } Rectangle{ width: next.width;height: next.height; color: "transparent" Image {id:next;source: "../../img/icons/folder.png"} MouseArea{ anchors.fill:parent onClicked: { wrapper.ListView.view.currentIndex = index; var selectedmusic = systemdispatcher.showSelectFileDialog("soundeffects"); systemdispatcher.getMusicFileAbsolutePath(selectedmusic); systemdispatcher.set_homedir_qt(); systemdispatcher.replace_sound_file_qt(selectedmusic, split_music_name(musicname)); } } } Rectangle{ width: revoke.width;height: revoke.height; color: "transparent" Image {id:revoke;source: "../../img/icons/revoke.png"} MouseArea{ anchors.fill:parent onClicked: { wrapper.ListView.view.currentIndex = index; systemdispatcher.restore_sound_file_qt(split_music_name(musicname)); } } } } Image { id: btnImg anchors.fill: parent source: "" } MouseArea{ height: parent.height width: 360//宽度不能超过360,否则会覆盖试听音乐等等的按钮响应区域 hoverEnabled: true onClicked: { wrapper.ListView.view.currentIndex = index; } } } } Common.ScrollArea { frame:false anchors{ top:parent.top topMargin: 1 left:parent.left leftMargin: 1 } height: parent.height-1 width: parent.width-1 Item { width: parent.width height: musiclist_num * 30 //列表长度 //垃圾清理显示内容 ListView{ id:lisv anchors.fill: parent model:musicmodel delegate: cdelegat highlight: Rectangle{width: 530;height: 30 ; color: "lightsteelblue"} focus:true } }//Item }//ScrollArea } } //左右分割线 Rectangle{id:leftline ; x:650; y: 0; width:1 ; height:425; color:"#b9c5cc"} Rectangle{id:rightline ; x:652; y:0 ; width:1 ; height:425; color:"#fafcfe"} Row{ spacing: 7 anchors{ left: parent.left top:parent.top leftMargin: 665 topMargin: 25 } Image { width: 52 height: 52 source: "../../img/icons/listen-pen.png" } Text{ anchors.verticalCenter: parent.verticalCenter text:qsTr("Custom Sound Theme")//自定义声音主题 width: soundeffectspage.width- 665 - 52 - 15 wrapMode: Text.WordWrap color: "#383838" font.pointSize: 10 font.bold: true } } Rectangle{id:topline ; x:652; y: 110; width:parent.width ; height:1; color:"#b9c5cc"} Rectangle{id:bottomline ; x:652;y:111 ;width:parent.width ; height:1; color:"#fafcfe"} Column { anchors { top: parent.top topMargin: 150 left: parent.left leftMargin: 665 } spacing: 20 Text { text:qsTr("Sound settings:")//声音设置: color: "#383838" font.pointSize: 10 font.bold: true } Row { spacing: 20 Text{ text:qsTr("Login tone: ")//登录提示音: font.pointSize: 10 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: soundswitcher onSwitched: { if (soundswitcher.switchedOn) { sessiondispatcher.set_login_music_enable_qt(true); } else if(!soundswitcher.switchedOn) { sessiondispatcher.set_login_music_enable_qt(false); } } } } } //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar showok: false height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } youker-assistant-1.0.1/qml/img/skin/HighContrast.png000644 001750 001750 00000047334 12312451003 022766 0ustar00saucysaucy000000 000000 PNG  IHDRxxNcDtEXtSoftwareAdobe ImageReadyqe<N~IDATxڜSMhAfg̦VZi-zxWP=)EQcO"( Az(ўT Zml6Mn$;YiA|07{ߛ20S#$G^eG I8`$K 1m`PZS*A2 1}\j3ڇbz&Vuş+c!>E SIVR_bR% =[׹Q[ԍb,[Ga9"NesN2ҙ\WHՈ_x~ o {lA MRl at+W nEaVxX||48~}gfjE0mzޣZ0'Уrn\~EZfll7:(vB_f v0Ju˲q<_Jߦok؀0gS5a~B uZk C^=YC +\Hv2uR$"~ g#hX"[lR&$J@R6~[HT"UX-Ic$d4μyoTV as=lj YQV8(,'*مQqͽQ+XOwa] g/Ƀ&2'Eyˊb/HiEt:'bE~;HK]^I&/dlpD6V:Xmeg!b];8vҒ9t4 B[嬋\$F'@C+{*,rm}ZzkJS}ITJ"߳3yYf#ʡT=g@~ omHk66PRߒɢ9_|~x vm8J~LڎASMd a{ r(>ğILg2WA#vZے<åR)@I0itjKntAu09]'nܭomsx֦(MimiS*PQŅ҈QnTtQ+sZpłh[QU""bqPJRicuxL+j! ̝9;Srujw&lgRƐ&-?Q]!΃6mYA(Kk | G**;oUp&!GP4`g,8Lc1ɂWDO<I%̽# 0jm&)[6z`)xLVP7s8z O9~i09tGdue3kf6-m$jg%Ӿ ;)q>*Es"0#`];Z pÇ*G0Ǯdkt҆򷨧 j/'l뚯2Lչ`NJx8XƟaFȒBYRz Զ͑T+H°bA|1#!¦1~t8oJ.>G8zO6M5uxχvy$l00phtr^5 2$;@h"Oi& ebgBV(VHJp2o7^U6(b/_Cw]2Z/mRFd&nd2 .'rhhHa#2HƖ6}M> 2%;UHl#o`!&GJ*@νfQ1Qzu`133? Ul!"^)j_ʒ023%o[SUBڦƿh%bVn?#{NNr gI-Cެ46* bLm" D@MĢ4À?L]A# h !!BdMj@Bmkj)BI-6B;t3yνw-1df^߻޳|n5R](5TjY6!{-Ն%2, ?rItXГ.! BM^gqӨiB#5F#wFТ S0ea/i!D:J76MŮcH^×r\$d_dA׆z;snao+PaE_)ي2(3*CDLӠ SpuDҐ>X '](B*ytnlVtS F0 "؝K;stnvaǗKqd'2 (Vx'5R`xG^PJĿGKC%wEn}~aɫ5ʺz4nEaw18!>֎$8{'0񕚔عfP6)5}bobEluv?ZxlZOסP-n؂ @{_~ށmxÍp:3O/EA#yF%pm8U[?C}q<ۅ!eNLp[Rhto 90? PG$zr7oEE" M+xbY 1;N˥I!6p_,Gg#/a%wL F.-O&DH9WBavv80 Z➝VFǚ%fx>塦 ȢDy1m2JfӅSq ϬكD^9|Qn9V,_1nUVVo$WXw[hgLT>u8QSÄ'Éډ<&ƎÇZ݃h%&hGyy p ʞzqaS2a8k`g ^ΆĹ^vE3ڃ(o޼ 7Hx%Gh)0&-uV@Mk08Eg:if bIҊyD4BBGrwowޛtܙeow·sBGlw&zu4пmvh&b3=E[<[.pS&u<߆RV\59`i9tsj) һ\ϹхER6߯"?kYGZ^POw5y2mBǖ)Ha$N0oh}aqB7XywG(;eiqi1zF|y("@i4~ UDA232(7l32,)\:Iմ|yNgDzg%9Xգ B‘\gq)BGiӄ(f{q_/H4bYP`]]ZkC]o춡6:G!̀xR $ ]cD-&lzf6u%ϯp!T4&)w2* &?/$>|Nq|phQo}UI~~Da&6da*E.&VIϣAdbMEi@.-5tPs)_A["x6&rcL3 ぬLJFBJJ*ĄW;5EI H:^ f ߯9}1I)/=#ar!~CNv&t*TOg p ~ϰy>"hy)-{f~"#ܵ cPrG FǫM܎4Y2{?"_;%8  @(uWc㞣z aPuC&¡gZ&o }04_Heb=a#rǜ7.EeU堗aj.ͱp_HIՅYJ'!i.ߡp}~񘰾: (;~Ѿ[-%o_~ Vt72O#3[thL|kt- 1rh>a@*"#\ :rA&ռё-|iګz\I4:+.Ý'OƟm━5xr\<݄wMDz굗?'M}L6l!Duu]AR̘o޼I9yϷb>kti¤>rOIy>Ew#tT3~~(iGzY8D=VbNzsv{Q 8¡^ֿQNB́Zd ;amɄ }B6lM//_b{J(Y'=9eg.'OJ_p}}¯cL/6LKg"'|3^c(Gn춋Z̑֬~۶FՏsc-0ltu8k`czX&k-yURܥՁ^l|+ÇD[2Y*~gΠvr'%D}TSu»pTJ / TTZui+ڌgZﰆ7C-䉋c J ȕ x_Na>rFC}xKъS&r|9|R*A+**PCW 6He62Nh}0],l_BsCL1Lӣ*"j q">cjoh\^3T֕JHSCǤW鱑jgXj ֠ȒmT6wODP)֏!j7bbZ)ҺLU|!RC`ydbZe:IK&˶50ʷ٠.bm)^tC~ۊF 9gT2!KSZJ 8a<8(]똡Gߠ<T:HCTH$$GDO=GMsC=WM08k^j+-^>X]1TOA7唢n娚+E‡f*_{ZtfBqnW_YdLhZҚY[bdZ.l0Xۖ ) ԉ^9$)C8YmV` G$%̐ `˝qTݻ;q#âz4@ɀi,vՅlHmM]I[gL11DM'L/ "@bf̽c.Q]S=r:ToPXX61ıSD"*qE*5Ph-pX*DT}!;j}TB1&t.ӻI3]SC AK ,Qw$򣬤'߭þ=pI2TsmC1Q`Mhd`Fx}G_ĪG!Џ@Ы}Pb*X icrM\m!%D֗gKS\cJx"0j0 5,iT(m"LENNi1x@[ZM3_ѣ2{ 8L&LâǷ#n2~>t\?FR1q042ڵp M딮zt`d(FbK j4wa]ĸD\_EM`#._8S`8v_W;x' vv]+y0R\iG7-Dв<u|faue 9 LȈM[HL(hi4 Ki'p?|mf2/w9dqĐ%.WYnH 1HLcH,*BOiV<ׯVR]5%pIyKH^=7$SK)SR5ePgŜ3ut9JW;K!pj*.!55fo=x84ݎp8=0M|\v MHae)Ԍ4DKm RdIT.3%YT&Ql0="IS~ij`/t^ln}e *,`J>N6at^}c*+* [.ЯF,0WQzZ6%k*g%阼QĞ+ˡҒiIdʀi_֜ݱctJ-p8WVTThuqb{pnKij)Β+,%SLKм!d/7NL7h)L=+(C -?7YZ̸u,޻mbv1][%n_/(K=lIܨ \WyrPcTTA?9bHlm#q6BIֆ00Fk#G9!pIĴOې|o䜏28\.~04nB1(D}9#XWWmkލ=Q;!%-MYQf97"RHCB me`DSDǪh*ZBֈŹkLP MQݱ}GjGLԿC`iyo%δys]S?9snDUY5vK_WW4S6uˆ*:X;ISubjΝ8qni$FcZpӉ0/1`T?HKM1oc nߏn WrXw_@4d*2t@==<9>6}rNM<̙BnؗKWab mi")ELܞT^ .,"#ggw?.\oVC0.ޝӷ~(>ܐ *O w`ݧqZWIꔘ* ddaƜih oOÒœ%׋o\axOٓVs+HG_5$pҊ=}`]ޏ' -V<K} PuF{׳:zM[Su9!xְ nX䌌X%k}X3ҰݷPig%Xc(xtУI;ywzj|)m_;xɋb_i+s+:8ocC]#ƏMEZ 5-v w+**!hS[ryq] g~^ ӧߵ$)M&Gvk= )$?3dK6BE|> 6uj듷7m-fd [Kk[t*]FI5QΚu+1#+n.NK{OOq5 \d~{5&脑g La"K..iiRmڴk׮E}PRR&fa=JG(@Uv%Xn`S:;:J۫͛7OMW?ooq)̞=K//>vLE}jw,T 7/NˊDm/.@ZFFFܴZXX9 {o۶M1wTu?{\sgiw@pL%dB./wVtƌf=x_a%F.XO?ُ}]3ZO;I^}o(\}ߔĬJ!2"HB$( ѯ_1 ]?hG*kUJmK$>n(sdAl ت.}adCIxPɲՊ^pbe2M/V>ڃӧOOҳ8r"O"޺^r9E1-=}Xt)t/.ucC6&1XsyrRؼys`oho"u.wt,uËU^Vk 0k:ԩKJI/s$s媟AV'{/ک%goDffߺB!|_o;)/<|BnI gK{DY=:!5gW!#09+z0v M [2+Vɕr/P ED7F~47j"U–a]_ IDZ??oKxġh4c"G[njڔǝ㾼ch}6X@#6I[zz&}'7+12;gO0L{uL廘4~<)G|xd,Y{Z+?mڴ*1)42^LNLxpqhsYUZ0.7ބAQܲd~OkOole6EP; V?Q\'^~A敶=M;Hp&7<⊦2eD=܃C[X-~~ߋZ_XY 5z>~,ƽmKhKWL&͞3ݳPTRi0| ppa缾աPC?ƚָٗ8ڣq:,Z:k"SA#W)2gGoPA]j^)?D[I4} xT;ɾ=}QY"U[ZZժZ `ܫ * *"[@ R'e2}߻d>;g?wnIa| }fUn@$1iE/ri0H-z$0MEbl: yBZ8lU&{"!(݉Ҭm&Av @%3gQd6*JU 7# 5L+To;mBZPh.nT#R'&z HP~"zCO-2Z'PͮaW h즒 nw.6, &ĄV>EO`'hQmW#QxLBq:Ǯ-ϝcPP/ <=iDKJ1{U[1(eY5)vhNT|O>?Es(cFX|v?d/,B0GD;ܨ<܍fSUu (bh +U'L SE%bƝ!D5˺8-B0$ loQsU18V--**YB# e-*T8 A3&p*Ϛ9E%!)ĢqӰPLuX>m%p +Q@͕'vnInY'2lg)B$FHBct`+a 4cC3Jnu\33Soj\RUx.;U5xy,DbW7pmL4GT~T%Hl*E SC4Uh=X.D 5p3oc*WdrΆա1]uGh57 Bd5M,b!SNK) ~p.qЖQ;Q=CR[Vפ* {dzGszM4Pu=LbKl<=hw?M*p6*$xZwP#֌~J1[ԲjRdZyyBHRϝuNhV>N ^M$HSr -LqzXe#} #||c! MJ${axM3Opck ӄ0ԑFw6AqM\VAwnk[.0nT_0 նApmNr.̷id{T' a#,u 󰴰Ү5 RPf{e+*_-|-! GV>S8f"-LQ-!dKjp"">PƼn/LT{j.o:#pN 8z8ѹ0L]fƕΧw.THDLH1q}_C~ Pot3Fs DST"n"şAtC 6}ptDNI4b^H2’2Wg@ʘ؇`s0qJx~;(pt(ަjg~"WmP!pD'qSPfG:#WhQ jIm06D~BUפ HBd :u !h{Љ=-fOGىVꅿ}Q]v*w5j|'|¤KsDMCtzw(x|a>5j7Hh=;[ʊ?Ña# P@@[:AS,-;dD.ƍx^c4n_4 n[ӓĬ'3ZM=a['v{Dl.ZR8,_&|lF8tYV\#F;kq^c_/ 0nT7!'w {]Gj8M:[Q۬0oOEJJ&Ww {nG`fwUT1JT*Х{gA` 9D n  =j00$5aeV<EVH|."[f!dEߢcllsxۧ/pw_~a^yذa&O@Uf v>KZ_<eg6[0' ~)wMlw?h`?$,O2 hJ"D, G #nm`7+ƼAAѰ 'ތa)b#0IC͝eKrNbHK܊;G_\.P7|!:a9bFa{,>Z*ACLpƠSZ]2n*Ď;ox߇5S8/iB~n*32--|Ҟ9|Ibq7C;Bi0LHb ˓Dak O.P3* ='m[vl8$fDA5g@( ׭`gCh|h#t ?BZٺm*:gjR Zʺ*ĢWXz WDz"z06OMMo bU43 +Wkv-Ck;ʐSs4ĩ2;y~̈́'{kD&"&jc:ҭfnvM1r% ̑ ϫK+"6m= V0h-P!{>>;X[8I| 䳯Vݺ)-!![/"wL#YƻdPf  J)ys*+ b<%; 3ZziwERøhi1ɫZ >˄zVL ˹kº 킩Xb`0C! }"7nZSپj>$ ·pܡNZ,΍̧fa}c 1RC*1嬺K%(GUC([iZHP'M`3}n$n^ǖaC m gU<ӦH*v}da@% s u9ޒ64ȵ"dQ98A:!e&b3o`{Y|y ȍ63BmL/8qjRbUcb sФ WX1&D/Pe؅Q~ .ΫBS))y!ħ2@|h"IJ `*b q&,.\7ut].7u(ܼ#+>؈o);Kj;.KNMvD;C+%f*& EfN}L0cP3g$qlo脄@ #v/E\n1[*7 ΡI<vi_P$(/E16蠴[UUO?ɩI< vKDHabm۱fZNS'LFf^{uN8g#{*L2GIq;aemv!J)DJ6$1q\ J#z v$co̕e>$ /R\ >Q g9ǫBPX14:\"&5\rEdgd l՚|EXd̞h֬^Ů}L8_1ha$"Ɓ,Q+u"tAaD{ޛ"ђ%`* ɸ$_?b7r$|\΢2-$01't,qMPIE@huA$5ä~1ā17? dANѵkW<98' q#'\!&{/9Q9.0O+NƁZfTѥHVocX7N!j/>ˇ?qĝfdEJz-Rb>N $y-Kf'$3=sv|؎9$ Lտ񨬮j3a y |'UGL׹4yRM! `w>WHbGnHKѕkj9sD"w_M. IL*B2j'̢=vm l17V|EDCU2E3ϬPeiA(J`֔FJf*B^֖`W(T&mA@Ն ,CЮSQL?wڒɂP )?,x@F~Hp¡Wxx1y\N(ԃ [ID8U~\*yVZJeNu$%7N]x;f>$l:"1!ɹ{p|M>NO@}Py);S 뛙*l$ODGEsC܌jk*wB~VsjT\PÇƈ$L r LToٱ]Af~Sӑqkk+cNX]  ٹܨoJ[Y$` :nM>+lĽ!bg_dAs[f#{&xIsϽ|uQkƋOÁ-%;+qc܁̱w1ԕs?#O쾘PSts%}W,Yї݊ ڎ+U0g[h.|\V&#7Lv1L\e\~&"ux)cMx}uC^cX%Y׫ @-24G  T&+kᛯ$WJݸN MER \94۽W< 9EFXğ5 mJ@EUL63ppcLdϾ2qˆ۶eG1ŧ%f}ŧ nf'$u?#>[gh)`JaA9zFi"\DX:|T)xh4"6n`4q&ZHJ (+?8&8y+yl14@ӣ{!6=q5-YUS\} dgп_G‹d"$b0Q 9YlQ}ص[|9T,h𢢦 ::nL$>ZKuspt3=bPWbrWfh~vu/V1L,%=wf[-p% W67"wƶ=mCѽgVGC2y TV,9%e"- 1(lmQr0AIțyܫpdM2dڊ;0#W {b^׌߂. ?vSza}3b8MqNo&b\W#>1^55VLz;k O?6<+)/\!\.;J eZ(= [DhݒƍMe5v_wmƜ9O}%f]n{/}/1 S̷ $_UkA/2aMT.aG zQSS5v߂^؆ PW.gѽ(v=%d?*(ڶ`n1QagE| 0o&N42_P (0ۍ(1" 1Ji'.,x<eFikEg)uX\w0:<=m_= YwxLȮQUkķjk֙YJW~ 7э4µʺlm^s|1i=xt: /v,;̺2=79b=۷/GUX2xf7U'E*-  kgΜՂ6/D0t<ޜm  Io|?,S蒁&~P~5Z̎ݓ"q j:3 ;NvS,{ݘܶ65J7w@@B&¸qm:2}9eTf;3 ŢmH&%kpŗWOF)Pk 8rc(12M ݲ[pH߲S,MK{ǯn o$GTh'57L7 \o]A'GӧiѿXoj"tZJXmyEnN)KsyE9n=<rPIdŰДm6/- q|ǒuLݸm³%9 ^7&"Ui<F)ݰp1޴i7k;/E#W߁= XJNEbn:8v5?vϰr&L*>F`Onz!p?W*q#at7;vèm=8@сtzݷE8|U䆯07|d/nVeb)N&W(wMiVH,DŽkY|{:x?_K~G1N77W.Μ5Oz=;;dd1X0cpp^7>Z7MG9 X=5 XTTp( =XF\t/: &qW;Rz?zeI xvFV]%(6|(R: ӭ-(+/CNv7؈ki#]㉱Ux5Љ=.-=+9}5d2 EZfꙿxYx&%TsmMtĶ"Z@N"pdp ²cF~=@KUuk:|G 8%g!cG++!)dܤ%- Stfqk؈H$gCt(F4?ѕ3Na3·")Nn!xرmIXB|t |;h_ kԟsCtʛIQzȐ![-]/47RJ4]>^C1v_pYl|y;.Vp󰵎Y]zb;lL\TX W~͎Vʋ~_Mr@fC`m{iь7" Y]t~>%W$왛mƔb#/'wL?1܁((7pb Icrs%ܱ*fe]cQu΃x'`d0i+b=5mg}6 ΰ#ag <8 ϊg+io-/)|~xu`\w<+9OU"6mf5%U11Ln!+ ,kz㓲J˕B4JKK !M94J%5Pd߳ñ\ S]Ѕ~oLSݱcUIENDB`youker-assistant-1.0.1/man/youkersession.1000644 001750 001750 00000000704 12312451003 021117 0ustar00saucysaucy000000 000000 .\" Hey, EMACS: -*- nroff -*- .TH YOUKER-SESSION 1 "19 AUG 2013" .\" Please adjust this date whenever revising the manpage. .SH NAME youker-session \- launch backends .SH SYNOPSIS .B youker-session .SH DESCRIPTION .B youker-session It is used to launch backends. .PP .SH SEE ALSO .BR youker-session (1), .br .SH AUTHOR youker-session was written by Kobe . .PP This manual page was written by shijing . youker-assistant-1.0.1/qml/img/weather/n22.gif000644 001750 001750 00000005425 12312451003 021441 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P췾սʺ҅ºdzʱȹ₋ĸͼ0R,Iq|Ⱦ/P0Q1R7Y2S3T4U5V1O<_6V%Bd,Lr1Qw2Rx/Mq0Nr7X5U{6V|7W}9Y9Y5Sw6Tx:Z;Y9W{;X}F\v|ɹڼ/O1Q2R3S/L0N0M4T5V1O=a8[6V2O3Q7W:]8X4R4Q9Y5S6S"@c;[!?`&Ei"=\8T+Mr*Kp'Eg(Fi%Aa/Rz-Ot2Tz1Sx-Kn4V{7Z5W|6X}+Fd7Y~(A\3Qt9[3Qq.If0Jh>`:Y{4MiOnShrÆŭõ/M0N2P9Z3Q;]4R0K<]6T:Y;Z<[7T:X#Dg!Bb=\;Y"A`'Hj*Kn)Ik.Qv+Lo'Ed,Mp+Lm-Or-Nq0Sw.Or/Ps-Mn0Qt.Op4X|1Ru2Sv3Tw7[4Ux8\5Vy/Mk7Y|6Wz5Vw9Z}:[~=Umcv/K1M3O9V?^(Ih-Qs-Pp+Lk5[/Qq7[}8\~6Yz7RCyEid ^7Vx 薮?q /{A̼8`ǎY? rxpƁ0 ~w_ŷbh-1 a,Ay@ `P6y-{AN@cuS,,y ȁ$EME$9~BN-]"&91'2tp > x@A|BΗB˗K-x %Yt c^x0&8 #؉gA)@‹ #-B-7_Fp wFA 1|ix0,lFK.DLD7ihb$XB lw C -|E(vR.R p'<ï " 4\-B \prス ,9(陂 F$ _|1%y C 5l N"ROhآ1P@ 5 7؀epCG/>/byA <`0!p-Pm5Z .cH.F '+坨`Jq 2O,zE& Dz-݀QBipB *H0[`΅]|sJ1H"|¹ \ԐBxS _mָw1)CJ O0,5p ,@ >,d^Ʈb "| `H 0q T}RA RjY 60)[ ,  "(E*R T< E(p`@k0`Dʑ D ,0_#$AOB:p9p# 9(CNP  a@ŀ$HEa,c A b$E"( D cAnp  %P$~AerJ81qC,cGX'qB*1AA,qVZC %2 e#\G2c4X/Lt4b D"1Mn6#"0v3͌2u(X AS\.1r4Bс]0CU3&ʌ`0Cx&6 ,(2@P z2֡ fЃE)JӉ>3$ Da# "`Hx# nX3nծ"xDXh0c 4".4S<}`dM`[$L#@b& /5&H?L `4e46a ӨFkA,ըF1-"p!##6wMm$&D F5 $dc-vel' T"@Ξ;~І6p^ AC.Ow`AX@D3Q./ =86Kk$ /^#r/["61Jb kmM ڒ,+H{ƶ` iYȄ;[S{sz($o N<@3-c6Mw[Q6@1;youker-assistant-1.0.1/qml/img/skin/frame.png000644 001750 001750 00000000620 12312451003 021446 0ustar00saucysaucy000000 000000 PNG  IHDR=qtEXtSoftwareAdobe ImageReadyqe<2IDATxJ0{"wXQ]Z>0"0Crqls#|_9M.6r: tz>*~3Y3ɏ{[ZSBsZ@DmXfT] 6_|wbz5-צ4EL i2N2*I > .2D MR .TX~iJ{tÔ|~O)BRjv,_wJWA -Re8,]ѹ:M .:E]DlT\vlMcI ܱaϴM"KۻNv ~cIENDB`youker-assistant-1.0.1/qml/img/toolWidget/browser.png000644 001750 001750 00000011654 12312451003 023225 0ustar00saucysaucy000000 000000 PNG  IHDR22?tEXtSoftwareAdobe ImageReadyqe<NIDATxZy|Uյp䒄2 "2C"( 'mZS9Ԃ}JkQ*-*h/(! 77әZ{7 Vs>[>fX|R`2j[dXHqs4xlw*r*2TIRh814eYU2U+G30#1dL󭁘&7\+Nngq{\>7ODLP%9]I$[Hd=**$N.r;\ʲ[׷ϵUOe'^uKl6 avk̲b1x`I0~Y\YsCrTY#?Xȕӭ*jWY{t}@VjfL}6֯82)ݜNi ]ʦFz٣O4r2hezXWD.`,h6긻H4lfi!D:cQc%٭p:/юLUh n5 @~tۤ9,jk}c(vP1f`%E=JA8|jF—e $J|=*!Y}#sHQ0&4c_LT'‘gFXՈnOFӽ-o3%7i!Htf{3)S"Ƞ }~'TZ: LSb.z\f8q?8T I#xt8e`Gh%]f= -pY^Z,XipkMXkIϘV2^?S,jzgO qֵ$g&pg 7s?IyFZYZyMBY,^}m9bx # -f8,7ϊqΏ'i[>mZtw4#'Q[VHtnFt#0s|F2VrzaK7d!޴FTe"r./_Oroo; "q;\w/&WfkChŒiL6篷D$2Jv62 1 {|1xq9r\QUg`1>Ehō6z B‡֢kvgN4Gڠ~[HIbk 4AArۺd=># pWx?란_K;uXf.~htK@FΔQ}ޔ$6h9!Q#@ҌI̽#BT`|ٯ1eS3iGQH~vR$2zyusB<J?Yq0*c? BP̹Jv+4&@ Yf+rǰaDD­w2Qm )7tzA pO,Xd_=.9\h+?)pzп$Ry+)Ie V5yi\]֭+^i"XR[N#绫FfKΟNԆj"ct5l+ 5SRhwݙҠx4ɥ6:1t\w|g9~ȟ^G $ K P"z![iFoIn|rwoKb c>Im$fJ֜S 7()˩vw4H##v}shA䌽 bqWmaqwѵ(%+5uj4;|2Hst~s*_i€"ptU ̆ܪŠq| AJ ]-ٗTIMUc{E +"EÄ?ʒGJ6IL<1a#M]O!UE<#[m' FO49n@S0th+|ijB@:*>1ˮ($h<?Aڠ<ͣ92lJ4 ΝCyTUUaq [iH4@b*:bHU jE ᕬUKu'ugYfof݁/fp @i袋xHܜX\‹f.@E$zq8}B_BjB2ff?a[;eށ q֭42220a2233cҥ8q"҈R6l@uu5ƌӉ'O8Y ^5tbKFՔBY2YriC@dx#%Q]vJػG _<{I.& P__/&չsg1QnVqپ}0Bq}ȑB[ ϚcVZ,Nwf~hlRJ#\WXx>HV6(o#grQzUI7(RІ w63w\<â0x 2Gd!]dhZo\kkbAD-dk2юdĴqo[ւ^EN⾂L655Lּ~9 S 7ř,X^x3g Eg=QS)g8ur˫;QC;q8!{]KŮ bO>J5 CĔ$ô`ٳG` ,^-?> <>3e9y_˸ЧrуCYqEV3fk8u5& SϽPrbM WTv "k=C VB[kPcGk79׈v7~Կ1+uԵh>'HD vF {0섣TY;#e4M䨺8LΣ>X; ~F~ |d/[&\3?/jz[Rδ5_EK{Wbmh`) D0o&]pFcP9L#FA1nq" DfڵKh`Pt{rG|OU<|GwZ(JB? 4+r׮Ș)HěC*:uJLSN ';u*S29"<]>:V(kDYqЃd&nB%Xx]_}@ Do1T(@ 3UV8v(nrDd7ӈ 2}dـ\n& IdЦ]k戌#aѮ_^ .LÔrHϿի1vI5440~BI'RVpwI,+1Sn~wA|cE- Xp]R6K˫{nx^4󭖖37tKӦMc#&~B!~9`$ٗw-Դ2)y RJ ȺQ)Ib[a2d8killll1{%j mmcqY=#}]@Cq$U #iZ3pꀣxM4[suǙ3gHϑ<7{XGSnn_ؖZr2ڈ# ͵?W-ILQۢQ:r5\KX1MP)ǿ9~pO)mYRZy3<9 $)Ir0E? ks[[IENDB`youker-assistant-1.0.1/src/translation/youker-assistant_zh_CN.qm000644 001750 001750 00000154570 12312451003 025445 0ustar00saucysaucy000000 000000 ƞF['ۮ&66RC\\ s{}|ze.@Q>fCHJߡ39[ߣ3K[N>yI,u)2o:!""%2o7_E>MeP5&wh:y#f=eT5^!Q} iXlc#RBcL +ΟP Dy{/{"{1C{~E{]ttv:@&ydX)Ku^4ܤ{:fJbKZ]SzS`5zB[+OP-ażͬcZzᗣcF>AcJ ?zD ȓ*S\ H.w.w%.w3.w.w9WbbbQ?+N.a/t2@T/WWJ Z,9\|vrJrRrrcuv0tvĠw'=GkKI)IBILIMIZPIhIl8IrH^%,/1W*4WMWZWi!WlbWqWsWW\.q$YmFVVa{P{P-{P6V{PXS{Pn{P{ϦP.Gp*x@-R0O3] 1vtA,0T@H083G4)R5:rKgKg.l cAOGb0\qyad!ea nqUtH$#K}CZZЀUdbxCJQJ\sS. Z?( !@P5Y@ n0Dv =J$PMtiQt-S~^(^^(^aP1n$6tFt7 {'ZNZ`3`Rd%;m qiy!.{P9 (V Mse%93b\peWr1wx@8yf$0s:{gp=jIU#Iz*zjzS<p_u<j.Mt'ʶ:<ʶbyĮ L<OM QU XO ^ `4!A ck/[ dT s3x\ s3x tfi :> E! Ŝ* ) + _ ʀs  ؿ z  ^\ u O |EK 9g .4~ 2, D`+\ E#$ ILjAu IV IP;a IP>C L \ Up+ bLTp }3p } DY!  e F 5 [G ϸ!  w? ۍ) {\ u ,k  v > :? Y9" ` %Y` *JA 3[!z ?I B Bp_ F K`-T K`6 K`on K`wy Y * em( r62 r+ z^) |tDk 2 Ķ * Ķ Ķ |( , 2d v $ ? UE #ݱ/ #ݱ %!+ 1̰8? 6~e 8bo 8\C @ڊ| HKm S8 U{ Vjt e t y ? {v h d _qo _q" _q. _q2 _q~ _q ; > +% _ $[ E (V : ~L ~ N3$$t $z%)Kqy)Kq%_)KqP,v^ $Z%"X\ԳGuqg0@>|A:$$$$S$ؐ`{{68u"+q*v*v$I*v3*v@*vK.?@ā^GzqRXRjUÞYq__T^Y,`u{h`>W+g:zTWwJw?NADC0ԧzaB> <n"`i6<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> O[RbKf/u1Ubuntu KylinV_SvNk>R_:Y'v|~ߏRoN0N;bTR~u(b7 Y^.Ru(b7[|~ߏۈL{t0vRM]QwYN|~WW>bkcNnt0|~ߏoxlNO`ogw 0|~QheOM[R60NR{tVhNSvct{IR0 </span></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'Sans Serif';"> TyRW(N e[U fYRN_\F~_S elQsl Ubuntu Kylin [Q www.ubuntukylin.com NoNvge\U^vS͙ k"^Y'O[NwSN0O[RbKN;uhttps://launchpad.net/youker-assistant 0</span></p></body></html>

Youker Assistant is a powerful system supporting software which is developed by Ubuntu Kylin team. Mainly for the naive user, it can help users manage the system. At present, It provides system junk scanning and cleaning, viewing the system hardware and software information , system customization, task manager, monitoring ball, and some other functions.

The software is still under development. Please visit www.ubuntukylin.com for more information. Welcome everyone to join with us. youker-assistant Homepage: https://launchpad.net/youker-assistant.

 AboutDialogr<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Cantarell'; font-size:11pt; font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">~b<span style=" font-family:'Droid Sans Fallback';"></span></p> <p style=" margin-top:11px; margin-bottom:11px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ubuntu Kylin Team &lt;ubuntukylin-members@list.launchpad.net&gt;</p></body></html>

Maintainer:

Ubuntu Kylin Team <ubuntukylin-members@list.launchpad.net>

 AboutDialogn<a href=https://launchpad.net/youker-assistant>yvN;u</a><
home page AboutDialog QsNg,oNAbout AboutDialogQsClose AboutDialog!s. Contributor AboutDialog V1.0.1V1.0.1 AboutDialogO[RbKYouker Assistant AboutDialog[hFForm AlertDialog XSaqR Audio Driver: AudioInfoO`o Audio Info AudioInfo XSaWS Audio Model: AudioInfo `;~W0W@ Bus Address: AudioInfoR6 UFVendor: AudioInfo BIOSO`o BIOS Info BoardInfoBIOSNUF BIOS Vendor:  BoardInfoBIOSrHg,BIOS Version:  BoardInfo N;gWg,O`oMotherboard Basics Info BoardInfo N;gWSMotherboard Model:  BoardInfo N;gNUFMotherboard Vendor:  BoardInfo S^egRelease Date:  BoardInfo^RSSerial Number:  BoardInfo _g:Ru;nBoot animation settings BootAnimation`SUQ[NIVrGc bmRvVrG N-RhN-nvVrGT y SUQxn[c [bn0Click the ' Custom Image ' button to select the picture you want to add, select the picture you want to set and click ' OK ' button to complete the setup. BootAnimation][b Completed! BootAnimation [NIVrGCustom picture BootAnimationS v_g:Ru;Optional BootAnimation BootAnimationVBack BrowserModel_Ynt Begin cleanup BrowserModelntChromium[XCleanup Chromium Cache BrowserModelntFirefox[XCleanup Firefox Cache BrowserModelntQs_^8Cleanup abnormal! BrowserModel ntN-eCleanup interrupted! BrowserModel nt[kCleared! BrowserModelm^ntmOVh[X"Deep cleaning up the browser cache BrowserModel m^ntmOVh[X wxvzz6Deep cleaning up the browser cache, to save disk space BrowserModel bkc[bScan completed! BrowserModel*[N w `lg bntvQ[ xnGSorry, You did not choose the content to be cleaned up, please confirm! BrowserModel*[N w `lg bbkcvQ[ xnDSorry, You did not choose the content to be scanned, please confirm! BrowserModel_YbkcStart scanning BrowserModelbkcQ[N:zz ent1The scan results are empty, no need to clean up ! BrowserModel S`cy:Tips: BrowserModelQIqO`o CD-ROM Info CDROMInfo QIqWS CD-ROM Model: CDROMInfo YT y Device Name: CDROMInfo VNrHg,Firmware Version: CDROMInfo^RSSerial Number: CDROMInfoR6 UFVendor: CDROMInfo N*yv ] Items ] CacheDelegateeQ[ No content CacheDelegateVBack CacheModel_Ynt Begin cleanup CacheModel ntS[XCleanup Package Cache CacheModelntoNN-_[XCleanup Software Center Cache CacheModelnt)ueV[XCleanup Thumbnails Cache CacheModelntQs_^8Cleanup abnormal! CacheModel ntN-eCleanup interrupted! CacheModel nt[kCleared! CacheModelm^nt|~[X!Deep cleaning up the system cache CacheModelm^nt|~[X wxvzz5Deep cleaning up the system cache, to save disk space CacheModel S[XntPackage cache cleanup CacheModel bkc[bScan completed! CacheModeloNN-_[XntSoftware Center buffer cleaning CacheModel*[N w `lg bntvQ[ xnGSorry, You did not choose the content to be cleaned up, please confirm! CacheModel*[N w `lg bbkcvQ[ xnDSorry, You did not choose the content to be scanned, please confirm! CacheModel_YbkcStart scanning CacheModelbkcQ[N:zz ent1The scan results are empty, no need to clean up ! CacheModel S`cy:Tips: CacheModel<html><head/><body><p><span style=" font-size:8pt;">؋MnN N*W^ pQ u N v Mn c mRW^T y0</span></p></body></html>

Clicking the "configure" button on the main interface, setting the city name.

ChangeCityDialogX<html><head/><body><p>fcbW^</p></body></html>5

Change Cities

ChangeCityDialogZ<html><head/><body><p>W^Rh</p></body></html>2

City List:

ChangeCityDialogSmCancelChangeCityDialoglg b~R0[^W^Cannot find the city!ChangeCityDialog[hFDialogChangeCityDialogxn[OKChangeCityDialogfTJWarning:ChangeCityDialog\e Hours  ComputerInfoR Minutes ComputerInfo u5Wg,O`oComputer Basic Info ComputerInfoN;g:T  Hostname:  ComputerInfo Qh8gg Kernel Arch:  ComputerInfo |~OMep Kernel Bit:  ComputerInfo Qh8rHg,Kernel Version:  ComputerInfo u5WSModel:  ComputerInfodO\|~|{W OS Types:  ComputerInfodO\|~rHg, OS Version:  ComputerInfoc~ЈLeRunning Time:  ComputerInfo^RSSerial Number:  ComputerInfoR6 UFVendor:  ComputerInfo u5rHg, Version:  ComputerInfo N*yv ] Items ]CookiesDelegateVBackCookiesDelegateebkcRescanCookiesDelegatega_U Records CookiesItem ntY1%Cleanup failed! CookiesItem ntN-eCleanup interrupted! CookiesItem ntbRCleanup successfully! CookiesItemR dDelete CookiesItemQhnt All cleanup CookiesModellg [ ChromiumChromium is not installed! CookiesModelBnt Firefox mOVhRO[Xvv{_UO`o (Cookies)JClean up automatically saved logon information by Firefox browser(Cookies) CookiesModelJntu(b7v{FQzO`o, e/c Firefox T Chromium mOVhEClean up user login information, support Firefox and Chromium browser CookiesModelntQs_^8Cleanup abnormal! CookiesModel.ntmOVh Cookies O`o ObN*NyGlobal Font Scaling:  DefaultFont^sn Hinting:  DefaultFont {I[[WOSMonospace Font:  DefaultFont`bY ؋Restore DefaultFonth<nStyle Settings DefaultFont hh[WOSTitlebar font:  DefaultFont hLbVhn Desktop Icons DesktopIconhLbVhf>y:cR6Desktop icon display control DesktopIcon N;eNY9 Home Folder:  DesktopIcon VhN;nIcon theme settings DesktopIcon VhN; Icon theme: DesktopIcon c}SwhMounted Volumes:  DesktopIconQ~ Network:  DesktopIcon`bY ؋Restore DesktopIcon$nhLbVhN;ThLbVhvS`'0?Set the desktop icon theme and the visibility of desktop icons. DesktopIconf>y:hLbVhShow Desktop Icons:  DesktopIconVe6zTrash :  DesktopIcon hLbsXDesktop Environment:  DesktopInfohLbO`o Desktop Info DesktopInfoSшLrHDistribution:  DesktopInfo u(b7N;v_U Home Folder:  DesktopInfo Language:  DesktopInfo _SRMu(b7User:  DesktopInfo XSaWS Audio Model: DriveInfo OcR6VhCommunication Model: DriveInfo YqRO`oDevice Driver Info DriveInfo Ou(vqRDriver in use: DriveInfoNY*QcR6VhEthernet Model: DriveInfoN;he Host bridge: DriveInfoIDE cSIDE interface: DriveInfo ISAhe ISA bridge: DriveInfo Q~cR6VhNetwork controller: DriveInfo PCIhe PCI bridge: DriveInfoSATAcR6Vh SATA Model: DriveInfo|~{t`;~SMBus: DriveInfoOSYtcR6VhSP controller: DriveInfo |~YVSystem peripheral: DriveInfoUSBcR6Vh USB Model: DriveInfoVGAQ|[cR6Vh VGA Model: DriveInfo S vqRexisting drivers: DriveInfoSmCancelFcitxBarN NkeNextFcitxBarN NkePreviousFcitxBar~<<T>>c mR/R dQel %T%c etQelOQH~ pQN Nke~~틾n pQSmQnT[0'<<' '>>' button to add/remove input method, Up Arrow and Down Arrow keys to adjust the input method priority, click 'Next' to continue Settings, click 'Cancel' to exit the setup wizard.FcitxConfigtoolSu(QelRhAvailable input method listFcitxConfigtool_SRMQelRhCurrent input method listFcitxConfigtool QelՑMnInput Method ConfigurationFcitxConfigtool QelRcbSwitch input methodFcitxConfigtool P N*epCandidate Word Number: FcitxConfigtoolFont P RhCandidate list: FcitxConfigtoolFontf>y:nDisplay settingsFcitxConfigtoolFontLh9cnN*NN``ۈLQh\@Mn pQN Nke~~틾n pQSmQnT[0~Global configuration according to personal habits, click 'Next' to continue Settings, click 'Cancel' to exit the setup wizard.FcitxConfigtoolFontj*Tf>y:Horizontal displayFcitxConfigtoolFont_cw.HotkeyFcitxConfigtoolFontN Nu Next Page: FcitxConfigtoolFont N*`'SMnPersonalized ConfigurationFcitxConfigtoolFontc N nv~T.!Please press the combination keysFcitxConfigtoolFontN Nu Prev Page: FcitxConfigtoolFont RcbQelTrigger Input Method: FcitxConfigtoolFontzTf>y:Vertical displayFcitxConfigtoolFontNSN勾n]Uk"vv pQ^u([bn, pQN NkeVN*`'SMn0yAccording to personal preferences to set input method skin, click 'Previous' to return to the personalized configuration.FcitxConfigtoolKeyY‘MnAppearance ConfigurationFcitxConfigtoolKeyfcb[WOS Change fontsFcitxConfigtoolKey][b CompletedFcitxConfigtoolKey[WOSn Font settingsFcitxConfigtoolKeyY'\SizeFcitxConfigtoolKeyvn Skin settingsFcitxConfigtoolKeyOu(v Using skinFcitxConfigtoolKey^u(Apply FcitxThreeBarSmCancel FcitxThreeBarVN;uHome FcitxThreeBarN NkePrevious FcitxThreeBarZ<html><head/><body><p>n)cy:</p></body></html>-

Tips:

FcitxWarnDialog`xn[QQelՑMnT[*Are you sure you want to exit the wizard ?FcitxWarnDialogSmCancelFcitxWarnDialog[hFDialogFcitxWarnDialogOKFcitxWarnDialogRc}ZOSAutomatically mount media:  FileManagerRbS_eNY9Automatically open a folder:  FileManager eN{tVh File Manager FileManager eN{tcR6File manage and control FileManager{tNautiluseN{tVh!Manage the Nautilus file manager. FileManagergY')ueV[X\:[MB #Maximum thumbnail cache size (MB):  FileManagercy:RЈLvz ^&Prompt or autorun/autostart programs:  FileManager`bY ؋Restore FileManager)ueV[XeY)ep Thumbnail cache time (days):  FileManager)ueVVh\:[P} Thumbnail icon size (pixels):  FileManager_QehFSN_h/Use the location entry instead of the pathbar:  FileManager_Ynt Begin cleanup FileModel mO... Browse... FileModel nt_N:Cleanup path is: FileModel nt[kCleared! FileModel][b Completed FileModelQs_^8Exception occurred FileModelQeeNY'\ (M)!Please input the file size (M) :  FileModel_b~QY'eNQuickly find large files FileModel6Y'\VN:1M-20480M1GB = 1024MBRange:1M-20480M; 1GB = 1024MB FileModel([N w `lg bntvy xnGSorry, You did not choose the content to be cleaned up, please confirm! FileModel4[N w `lg bbkcύ_ pQmOc bVSorry, You did not choose the scan path, please click the 'Browse' button to continue! FileModelF[N w `lg nbkceNvY'\bnP<head/><body><p><br/></p></body></html>-


 KFontDialog<html><head/><body><p><span style=" font-weight:600;">_SRM[WOS</span></p></body></html>\

Current Font:

 KFontDialogSmCancel KFontDialogfcb[WOS Change Fonts KFontDialog[hFDialog KFontDialog[WOSFont KFontDialogxn[OK KFontDialogY'\Size KFontDialogh<Style KFontDialogcy:Tips KFontDialogVView KFontDialog&`lg fcb[WOS b[WOSۈLfcb4You haven't change the font, please choose the font! KFontDialogf>y:hLbVhDisplay desktop icon:  LauncherThemeT/RVhRLauncher hide mode: LauncherThemeT/RVhVh\:[Launcher icon size:  LauncherTheme T/RVhnLauncher settings LauncherTheme`bY ؋Restore LauncherTheme nT/RVhvf>y:j!_0Vh\:[0-Setting the Launcher display mode, Icon size. LauncherTheme (kcW(bkc (Scan to: LeftPage Qqntc(totally clearedLeftPageApt[X]nt[kApt cache had been cleared!LeftPage,ChromiumvCookies]nt[k"Chromium Cookies had been cleared!LeftPage&ChromiumvSSuՏ]nt[k(Chromium history trace had been cleared!LeftPage"nt|~N-vWW>eN e>xvzz+Clean up system junk files, free disk spaceLeftPage8nt|~N-v Cookies ST+N Q0-ri0n8b{I_UCleanup GarbageLeftPageN.nt[kCleared!LeftPage][b CompletedLeftPagegaCookies Cookies)LeftPage ntSS_UDelete HistoryLeftPageQs_^8Exception occurredLeftPage*FirefoxvCookies]nt[k!Firefox Cookies had been cleared!LeftPage$FirefoxvSSuՏ]nt[k'Firefox history trace had been cleared!LeftPage N.ntyv Quick CleanupLeftPage:N.nt|~WW> ^.`wxvzz |~ߏЈLfRg eHsTQuick clean up system junks, saving disk space and improving the system efficiency !LeftPageoNN-_[X]nt[k'Software Center cache had been cleared!LeftPage6N.^.`nt|~N-v Cookies0WW>0uՏTcNSTo help you quick clean up the Cookies, garbage, traces and plug-ins in your systemLeftPageg*[b UnfinishedLeftPageWW> garbage)LeftPage gaSS_U historical records)LeftPagep<html><head/><body><p>QeW^N-eT bbۈLgb~</p></body></html>T

Please enter a city name or pinyin to search

LocationDialogSmCancelLocationDialog[hFDialogLocationDialogxn[OKLocationDialog0QeTvW^T [WTpQ gb~ c ۈLgb~7Please input city name and click 'find' button to find!LocationDialog0QeTvW^T [WTpQ gb~ c ۈLgb~9Please input city name and click 'search' button to find!LocationDialoggb~SearchLocationDialogfTJWarning:LocationDialogZ<html><head/><body><p><br/></p></body></html>-


 LoginDialogT<html><head/><body><p>lQ</p></body></html>0

Register

 LoginDialogSmCancel LoginDialog[hFDialog LoginDialogW[^Sv[xForum account password LoginDialogv{_ULogin LoginDialogQe`v[xPlease input your password! LoginDialogQe`vu(b7T Please input your username! LoginDialogOO[x Remember pwd LoginDialog epcn[^ Data Width:  MemoryInfo Q[XgaO`o Memory Info MemoryInfo Q[XgaO`o Memory Info:  MemoryInfo Q[XWSMemory Model:  MemoryInfo Q[XY'\ Memory Size:  MemoryInfo^RSSerial Number:  MemoryInfo Q[XY'\Size:  MemoryInfociS Slot Number:  MemoryInfoR6 UFVendor:  MemoryInfod<html><head/><body><p>XReNTzS{tVh</p></body></html>C

Add file and window manager

 MessageDialog^<html><head/><body><p>mR_vNMn</p></body></html>>

Add kuaipan cloud conf

 MessageDialog`<html><head/><body><p>OuYu(b7^SO`o</p></body></html>B

Remember user account info

 MessageDialog[hFDialog MessageDialogxn[OK MessageDialog\<html><head/><body><p>\O^UWOphmK</p></body></html>5

Monitor Check

 ModalDialogSmCancel ModalDialog[hFDialog ModalDialog8pQ h].ۈLfcbrhmKdO\ pQ hS.QhmK0HLeft-click to change the color, right-click to exit from this detection. ModalDialogxn[OK ModalDialog `;~W0W@ Bus Address: MonitorInfo _SRMf>SaCurrent Graphics Card: MonitorInfo _SRMcSCurrent Output:  MonitorInfo \O^U\:[ Dimensions:  MonitorInfo SƗbyDisplay Area:  MonitorInfoO=lP< Gamma Value:  MonitorInfof>SaO`oGraphics Card Info MonitorInfo f>SaWSGraphics Card Model: MonitorInfo f>SaR6 UFGraphics Card Vendor: MonitorInfo f>SaqRGraphics Driver: MonitorInfo gY'RsMax Resolution:  MonitorInfo f>y:VhO`o Monitor Info MonitorInfof>y:Vh Monitor:  MonitorInfouNeg(^t/Th)Production(year/week):  MonitorInfo e/ccSSupport Output:  MonitorInfoR6 UFVendor:  MonitorInfoY'SBig Size MousePointerQIhcY'\Cursor Pointer Size: MousePointer hcN;Mouse Pointer Theme: MousePointer hnMouse Settings MousePointer hnMouse settings MousePointerXfcb hcN;TY'\ fe9nTpQxn[c ۈLxn0N;fe9TT/|~ueH0Replace the theme and size of the mouse pointer, then click the 'OK' button to confirm. Also, theme change need to restart system. MousePointer`bY ؋Restore MousePointer\S Small Size MousePointer `;~W0W@ Bus Address:NICInfo cr`Connection Status: NICInfo YT y Device Name:NICInfo IPW0W@ IP Address:NICInfo MACW0W@ Mac Address:NICInfo gY'^&[Max Bandwidth: NICInfog ~QSaqR NIC Driver:NICInfo g ~QSaO`oNIC InfoNICInfog ~QSaWS NIC Model:NICInfo^RSSerial Number: NICInfoR6 UFVendor:NICInfoe~QSaqRWLan NIC Driver:NICInfo e~QSaO`o WLan NIC InfoNICInfo QSaWSWLan NIC Model:NICInfoVBack PackageModel_Ynt Begin cleanup PackageModelJntoN[ŏz N-cF~[vOVz ^ eQh8SToNMneN cК|~`'Cleaning up the software that installed by other software bundled, old kernel packages and configfile, to improve system performance PackageModelntQs_^8Cleanup abnormal! PackageModel ntN-eCleanup interrupted! PackageModelntoNMneNCleanup software configfile PackageModelnt[kCleared PackageModel bkc[bScan completed! PackageModeloNN~Software operation schedule PackageModel*[N w `lg bntvQ[ xnGSorry, You did not choose the content to be cleaned up, please confirm! PackageModel*[N w `lg bbkcvQ[ xnDSorry, You did not choose the content to be scanned, please confirm! PackageModel_YbkcStart scanning PackageModel kcW(ۈL The ongoing:  PackageModelbkcQ[N:zz ent1The scan results are empty, no need to clean up ! PackageModel S`cy:Tips: PackageModel Sx}eQh8SUninstall old kernel packages PackageModelSx}N _ʼnvz ^ Uninstall unnecessary procedures PackageModel(Sx}N _ʼnvz ^ eQh8SToNMneNDUninstall unnecessary procedures, old kernel packages and configfile PackageModel%1;%2;%3;%4;%5;%6;%7ProcessManagerb@g u(b7 All UsersProcessManagerCPUS`u( %CPU %ProcessManager_SRMu(b7 Current UserProcessManager~g_z  End processProcessManager$^.R`N|~N ЈLz ^v~O`o0<head/><body><p><span style=" color:#008000;">u5ЈLab</span></p></body></html>b

Computer running slow

SuspensionFrame<html><head/><body><p><span style=" color:#008000;">Ou(N.R</span></p></body></html>b

Using 'quick clean' ?

SuspensionFrame<html><head/><body><p><span style=" font-size:11pt;">0%</span></p></body></html>P

0%

SuspensionFrame<html><head/><body><p><span style=" font-size:14pt;">0%</span></p></body></html>P

0%

SuspensionFrame^<html><head/><body><p>CPUS`u(s</p></body></html>8

CPU Utilization:

SuspensionFrame\<html><head/><body><p>Q[XS`u(s</p></body></html>;

Memory Utilization:

SuspensionFrameT<html><head/><body><p>Q[X</p></body></html>.

Memory

SuspensionFrameX<html><head/><body><p>g*Ou(</p></body></html>/

Unused:

SuspensionFrameX<html><head/><body><p>]Ou(</p></body></html>-

Used:

SuspensionFrame u5ЈLabComputer runs slowlySuspensionFrame~DetailsSuspensionFrame[hFFormSuspensionFrame eۈLRNo need to accelerateSuspensionFrame |~ߏЈLmAuESystem runs smoothlySuspensionFrameOu(N.RUsing 'quick clean' ?SuspensionFrame ]_T/ ONSwitch]QsOFFSwitch_g:Ru;Boot Animation SystemBoxWOphmKDead pixel test SystemBox ؋]Qw{Default toolkits SystemBox QelՑMnFcitx Configure SystemBox NR{tVh Task Manager SystemBox mOVhntBrowser Cleanup SystemClean[Xnt Cache Cleanup SystemCleanCookiesndCookies Cleanup SystemClean gb~Y'eNFind Large Files  SystemCleanSSx}Package Uninstall SystemCleanuՏnt Trace Cleanup SystemCleanSaVGA SystemInfohLb Desktop SystemSet[WOS Fonts SystemSetgBy Others SystemSetN*`'S Personalize SystemSet|~ߐ y System options SystemSet_g:Ru; BootAnimation SystemSet [NIT/RVhCustom Launcher SystemSetWOphmKDead pixel test SystemSet ؋[WOSn DefaultFont SystemSet eN{tVh File manager SystemSetVhMn IconSetting SystemSet hc MousePointer SystemSetXeHg SoundEffect SystemSetN;n ThemeSetting SystemSet dxgnTouchpad SystemSetzSWindow SystemSet*`SNh9cnN*NUY}[|~ߏۈLQheOMv[R6QYou can perform a full range of customized systems based on personal preferences! SystemSet N e/cNMnNo support cloud confTipLabel e/cNMnSupport cloud confTipLabelVBackToolBarxn[OKToolBar`bY ؋RestoreToolBar*njetdxgvvQsn OdO\fROcw0XBy setting the relevant properties of your touchpad, make the operation more convenient. TouchpadSetS Edgemotion TouchpadSetT/u(/yu(dxgEnable/Disable touchpad:  TouchpadSetryr|{W Features Type TouchpadSet\^`'nProperty settings TouchpadSet`bY ؋Restore TouchpadSet nRga|{WScrollbar type:  TouchpadSethQ|{W Standard Type TouchpadSet_QsnSwitch settings TouchpadSetdxgj*TnRTouchpad horizontal scroll:  TouchpadSetdxgnRSe_Touchpad scroll trigger mode:  TouchpadSet dxgnTouchpad settings TouchpadSetScSTwofinger Scroll TouchpadSetga_U  records) TraceModel]nt(Have been cleared  TraceModelbkcR0 (Scan to  TraceModelVBack TraceModel_Ynt Begin cleanup TraceModellg [ChromiumChromium is not installed! TraceModelJChromiumkcW(ЈLN-0_S[kcW(ЈLveP N bgLbkcbntdO\0_Chromium is running. When the browser is running, could not perform scan or cleanup operations. TraceModel&nt Chromium mOVhN Q_U&Clean up the Chromium Internet records TraceModel2nt Chromium mOVhN QeuYN vmOuՏ%Clean up the Chromium history records TraceModel$nt Firefox mOVhN Q_U%Clean up the Firefox Internet records TraceModel0nt Firefox mOVhN QeuYN vmOuՏ$Clean up the Firefox history records TraceModel.nt|~N gbS_veN_U Ob`vN*NyNClean up the recently opened documents in your system, to protect your privacy TraceModelntgbS_eN_U.Clean up the recently opened documents records TraceModel(ntmOVhN Q_UT|~gbS_eN_U;Cleaning the internet and opened documents recently records TraceModelntQs_^8Cleanup abnormal! TraceModelntSS_U ObN*Ny(Cleanup history, to protect your privacy TraceModel ntN-eCleanup interrupted! TraceModellg [FirefoxFirefox is not installed! TraceModelebkcRescan TraceModel bkc[bScan completed! TraceModel_YbkcStart scanning TraceModelbkcQ[N:zz ent1The scan results are empty, no need to clean up ! TraceModel S`cy:Tips: TraceModel Q(&E)&ExitTray0%0%Trayv<html><head/><body><p align="right">10K/s</p></body></html>;

10K/s

Trayv<html><head/><body><p align="right">20K/s</p></body></html>;

20K/s

Tray QsNg,oNAboutTray/f>y:vctHide/Show monitorTray/f>y:N;uLbHide/Show windowTrayvct MonitorBallTrayZ<html><head/><body><p>S`cy:</p></body></html>-

Tips:

 WarningDialog[hFDialog WarningDialogxn[OK WarningDialog e S^ o'clock releaseWeatherForecast8SN-Vla\@/ņNvY)lbepcn N:u(b7QLcOS€0bGetting weather forecast data from CMA/Yahoo, providing reference information for users to travel.WeatherForecast>[ Y)lbcS]~P\kbfeepcn {I_cSfeTQOu(0 ]L[ The weather forecast has stopped updating, please wait interface update. ]WeatherForecast WeatherZoneS^  WeatherZone [fcbW^] [Change City] WeatherZone zzl(cepAQI WeatherZonezzl(cepAQI: WeatherZonezzl(cepg*wAQI:N/A WeatherZonelChangsha WeatherZoneM n Configure WeatherZone_SRMn)^! Current temperature WeatherZone _SRMn)^Current temperature: WeatherZone bForecast WeatherZonen^Humidity WeatherZonen^ Humidity: WeatherZone n^g*w Humidity:N/A WeatherZoneg*wN/A WeatherZoneS^e Release time WeatherZoneeQSunrise: WeatherZonee=Sunset: WeatherZonen)^VTemperature range WeatherZone n)^VTemperature range: WeatherZonen)^Vg*wTemperature range:N/A WeatherZone n)^g*wTemperature:N/A WeatherZonef eUpdate WeatherZone fe[kUpdate completed! WeatherZoneY)lWeather WeatherZoneRWind WeatherZoneRWind: WeatherZone Rg*wWind:N/A WeatherZone b``nvN;0Choose the theme what you want. WidgetThemeGTKN;nGtk theme settings WidgetTheme`bY ؋Restore WidgetThemeN;nTheme settings WidgetTheme zSN;nWindow theme settings WidgetTheme zSN; Window theme: WidgetTheme]揹 Left Side WindowManager{tzS{tVhvn0Manage Window Manager settings. WindowManagerSUyef>y:VhMenu with icons:  WindowManager`bY ؋Restore WindowManagerS Right Side WindowManagerhhSQRO\Titlebar double-click action: WindowManagerhhN-.RO\Titlebar middle-click action: WindowManagerhh hnڏnRO\Titlebar mouse wheel action: WindowManagerhhS.RO\Titlebar right-click action: WindowManagerzSWindow WindowManagerzScR6c OMnWindow control btn position: WindowManagerzS㋾nWindow settings WindowManagert<html><head/><body><p><a name="w_98"/>R</p></body></html>?

minutes

 WizardDialog^<html><head/><body><p>RfeThg</p></body></html>?

Automatic update cycle:

 WizardDialogn<html><head/><body><p>epcngenN-Vla\@ / ņN</p></body></html>7

Data: CMA/Yahoo

 WizardDialogV<html><head/><body><p>W0p</p></body></html>1

Location:

 WizardDialogX<html><head/><body><p>Y)lMn</p></body></html>=

Weather Configuration

 WizardDialogmRW^Add City WizardDialogVBack WizardDialogR dW^ Delete City WizardDialog[hFDialog WizardDialog[bFinish WizardDialog0W^]~[XW( pQ [fcbW^]  c DThe city already exists, please click on the '[Change City]' button! WizardDialogfTJWarning: WizardDialogyouker-assistant-1.0.1/qml/img/logo/Manufacturer/MEGASTAR.jpg000644 001750 001750 00000011714 12312451003 024211 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !$4AQq "2B%5UWaR#DE(XTdteu&Vv'7H !1AQTaq4"B$D5U6VRd2#t%E ?>K"-%!91%+LbKG @!-րԅ0h  -! S*C H5f );څ/`O{܉HmdW b1%؅Ė@ KhnB4eAڈs)!ȂB0'D6^_X- ~z(Pv7b;Бr#Q_ /WK-֟=r={ճ<_|H;ہ[;3lNۭZ!$6et1B鳧UKN*ֶP I"7<$UҶY!VәLpҧOcEYuk( TZ.&M*d $mn䙥 D8N&*ފ3nc2sTL=m+*&Uẉvy3UٴB0Ɇ."bBsAO.Pje8yM&:\}qE@ ˭﷭﯀UURD7M&`k)dCDpk:6D)7TL-FZ=aF\ Gw9AT*(*E8kn {ӕf7!ia = %d&[SsU 2_4Ʋ鄉//&3r߀=n AIo=(2խXu#c7~KwDf;5C^J6od)ImPla4|BVq՚].7=^z*ZӴ٥e[@gzIS@oC }^$,%d:;ۃ%euM56ea0<+?*ZX s_nuSih<^'16ōOUm":K|/7RNEd :cI$6 v{^ۛnKʕ(XLZ:!ަ7żijLsSmSb_zbJ{%,k+w}dw7Si 5T$Φ!8nSF5-C ᅝEkskQanc(}O" ׃_1$`!lS0iۍN]MʘW6KLIK+K 6x0ց=wS٦t)w=C7^ w 5$Lo)e5E0glJH[;pчnbf fs+3!Xy8JSsXESt`˶ @8i5,:V8۬W`H,jRHgc]E)"3/53sVᴦӬ϶~,{r.zr4,_T*Zf?3]I7F|4hh:5!sDJd+$7L FNH^h!xJylxcb C_)^* Hl\]ꚲؽAM5MdtB{d_UqոrVI )M#H=g[K;61sZȟf I}t徬T* u%yΪ[]"LA}e;4qTzzG eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FIDATxbg"z&2~u`Qf|{e?[p*zrzWM{+ʰ..NZc b}v:f} ڟ) .=`UɟXa z&h ^.NC/߾߰d100|a``GJֳ&h mg4anͥ&QA"QHo(Ud9^DHlһX/zQIؖkm6LܬvY d}sp/}yhijV"&^))ˤjwxSo~>ufF$ "L!E(`1j98v[Pk6՟mL&߄_eF EH$0 hZy7[@~.(W;O޳֠oQk4Pk**W!!Dl~74x3{o^'0XPwƉ%yk\K]i2T.\~暃5_*.xzIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/SMP.jpg000644 001750 001750 00000041031 12312451003 023440 0ustar00saucysaucy000000 000000 JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:03:05 13:41:08]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TB9X%.$ ԕ$bg/bg!&d 5K혟8z\CUɒAf'jޗ1?Wpp=$O?/bqT{&I 8pk,cxT"Uu!=K(Mݮ.__{ qq?*8,@]\4d|Qk:s)% 7bVm,j]/;:]hua+Z'}%Jh}Wmߜ B:J2]%``w;`  K꩜t<"r_L1vQ88joWqӇOYY{dƥC+LnQFw8btQ/wڟ5Rf;'8*CK{wz?kCf}b>b8]rFAVd?UP܎},uI.YDhEσS FٟoM̺:HSl-^\ѥg,]B;mh7 9]d0 ja⢎\q ~zO'鼹5cag`9ǀ;?Q~UDzNkgEuvi8L.]$mU>UU :MyH#MqlMllDpFQ0#LqEAz^z{i4Px #RY{kBX oS WvUMJR<2"'"^5^Cdwڟ5Rf;'8*CK{wz?kCf}b>b8]rFAVd?UP܎},uI.YDhEσS FٟoM̺:HSl-^\ѥg,]B;mh7 9]d0 ja⢎\q ~zO'鼹5cag`9ǀ;?Q~UDzNkgEuvi8L.]$mU>UU :MyH#MqlMllDpFQ0#LqEAz^z{i4Px #RY{kBX oS WvUMJR<2"'"^5^Cd 1 93 70 1 72/1 72/1 2 2012-03-05T13:41:08+08:00 2012-03-05T13:41:08+08:00 2012-03-05T13:41:08+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:909f7134-6685-11e1-91d2-fc4f58cca079 image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*}SMGd{UԐdPAAYp忥lF/ǽxsK__돋=/d1?>,{׀;-^WA#ǽxsK_O돋=/d1?>,{׀;-^ܾGOA71I#tDubi@p&S6/N*2|ǪR`nI.vWSrʿ]*=Շ宷qn\K jZƛfN= lh!u!zd r8&גC6Qxa5Ivnia%ޡ mp);nɖ0 [ c1~s3͎,џEuMm&{`!_y6fJz oDq ݰC̗< *@( jxTt4Љ/.M&%:/d΍ԿN*2G HaWW3ʶ;Q=ɶHD2Ȩt5?= Yy_۫Gk 8xTÓ\yXnR^4IdĢ!AbaJ ٓ fOcM[T5? rj:jʲ|?*(6r'S#.#*0Fjz.tTܧEp5sj q+k^guo`$5ÛPrhńCWRe?./d΍ԿN*]_Ujש>L%9cV%3e99(ԸbOg^Pq?{w(Ըx!"[Y28QSXDHG}o[=)Ū;截o2gՁg6YmhU";@T~Wo9<`tVF\V<<:F U^~xhq;c+˟ +Dp4\PCLfhQ֚f9:Os.L*.UDy%}.T]@eTrKwWqG<zl*r1dLeόEaq[s& {`G8w?󬷼m{:G{b`awH}&m R"%)KnML?DLMy)+H9Py~t}L#~3'?;?{ox4`O~gACc.OnUD^ |pC;;Hd c?M (`PW|M1sp?c90pkwhh=A6Fa/oxo j81ݾ}}˿{jfۤQ>wumMF#mڭ맛ʺ=Hxo{VڭSBfLЌA~Dw.Zѽly-r#w4*E%b)ШtTsE3o}%m׳4lo};AummB@bd{* xG1۝H:\)\YuxP.VLΗrP4{s#f =e34{1WZTډm, )B\!MԮ+2߽柮 U`4`]$ dtˉ!R =-y|ɐFb0 L1S1SȪ &Cv&?31F.[/8Y "앉W]Ti7r7H*K9qhD&t-^jBip뛔5F%IgbHS4A,Dq+f4܂p!@)+,3uTGf+m'V &` j.Xx!P?@=n4'm2L(J9&k4 SF,>+cάX?" uU "t9DʏpJt;fL-`ŸMLUiH45 z(]+,zӰ8B3P~~c!0Seo;G#8J^Çcr3R}Dz-q[9)M]b)JcMN(r('QR'`)R/dT=e;*G *|܍2_S S7qOTiDMq`kTGTCV G0.J?PuɥRJ=gς> DOor/;')12=+g/={zM;8PP$o6+7 ,1'@iO4>XKAHP<> k ƹ~؟t_?#2GCbw>0r;؝ &==waw{˨s3r48?Hd lrCpa Z,&opy<ȥ47u\.t -2Fg6Z1mN[LŬw1!vLRyNOੳ I3r!kWZ;[Yt(v 2ajcl&8@"go6u*RSX 3ӰU・hVh-ُ9K#x"zw@dC8MpɆ}k z%ڌO*+Z3KWp(j4i\&YfT3 j~77e9;yOd~Ɋn1Fw4/\ܝuDIC^Pb_R[2"Pt`8q*m|K%d'(,Lն@ S| SG$+g]iؐ$@Y0-Fa@V[Grn̸%)|3q @E3@a=ҹh}gؽ(&LD^ O9yL5@=ȩi?P}#Nޘ&=YĞYr xz K(v:E|Vv+ uBf&(d?/ ˶ hS_zߜML2O屟y!3p,t&d9[wGɕ-YB*!MtjQd x6732uWƒM¿D:[_B$c `%s}]~ 8:GuH#Ⱦ 1*b&^鋟Fx e9r3T#=}BZagrX媪],Ը>Q7N]ω{uV6(oI.9I{?g'wƊOJ X|:Ȱs*;S&v6;H~V (kk%$V^}(Րyꁝ£֬bC:cW,P'K>ݡTXyɹ@ m?諾-&L^pFL H{ÛzP!T[U4zqm嬷}*dt͇/m%u,␋6JΒ6tO`Y币>pb)vamIƋiG;`#37#[XO v1w铴_d&cP=w6ŧ]Z72vlP5Ǡyۉ0;Ui1{&UEFXѭ'&=淪A7~^cbf4o O Mn\GL=\ Ϧl^&<1GUߴ] 灦;311m_# m|"}Z} `DV ',׺r Zfh4|M&_;|M&_M&_׎&_kGk5k5|h5|Mv4|M&_;|M&_׎&_kǽޢ=kiµj{nt6L1J :HDb3dpAđDЉ?@:s"@(T NI{v-Ukժ܇vۮvzUcgP(O[^xLְJލ.|t=T%AԙXs63AmJ,@4l1 4^klPpȠ>UoJUN e ?܌j2*ӃR+]|3]橜{?Տܼv8z};_;NqW0AyX~γeЙO( NPߥ!+Q^_y uzBJi`'B5GB7SP:/e7!wԘi0ScJj[LCduKǬg2!Z4!GUP }E' X@}ހue"./qd!zTD\ }:݅G:;@%A~7׿RNvdz;S8M $ _^ n&|t0nw[' mBpM ȉ .>bzaD )s)2O5fحk;伫~CW7b/^ |3pw$ F![f(}M?n`A3(VhB.QDJ PF+c-t⅑ޫJV3! G<^ĭ c_f7~Wo+p3}~7Eg#"fjj8DKE#o󿼾 ܌F$s{Y.2]L'd!r<"Q cٔC-zF c$1'YY$\48Pf S(* $aBNX*Tmˆ6/Vou`[a%͊AZ&n)IJ[r RaV݊h?;HyG(Y-đQX T!u6WR! YivxsÈBk>;;Ĺθ3g?ՃXrUd&Wh#E1´ge1-LD't6۱.>Ѣ/ir=X!)r{VEmBFDrIKE| =LHے;,ZV*Affrf)b[Ѹ AEXvHa_W纗5ȕ.s<z}0{!һmin~M\[ Rv 9 )bn>ϩ(HsY&X( G^D[ u&Z&Q",'f(rEG{Q2j dF귊J=Q:RAC(:V(9#:"H)*rI$/:p?h27TI2q2ΤI|'}wSe*3;xs|mU-}r321c-B;|e ]Kqپk󺵚xEs@H>>4ݚu<Ǯ¢y{Bw.C=:9wa["i_D6Yu`'C+CcfY:׺u!F Nzτ5]]}"V]"IY <.>"i@lƠ_>u]Z7Ufb6):ֶ(Pl\gh Iŕk+M>A[u(3 ~ N;X<߅~] ;gjN;.Tf{l+,VRC)m^P" DZrb,=;{8[B7A] Ξ7Aq`L" qqlA 뀭[ڞKCmU+Ԏ髊x(G;E˩_˨څ]Qt1.W3|&%pF,0۾roY"\4{{!T;FvJ¹|(SKP\&֢Zan$^2ſAtQ9:x"y0V5ڠ!0:Uw&<me&|mڛļHE|Mɰ?xEf{ʜe gyX6.D=ZQ*׽";}o m+cTʹMH(a^2xih|E1y ..!r 3^ڙ }60Z`;ms]L7yV1/ڠ ߃[-)#a%BV53CnmѴ>[`QtPj^I|y`TaS}V.&Պ-O`AIWg]kwm@byZې%P{ {|U8g)QL#0 ؕAo)0"j0Ύ߽?[2u^y<ua˚c8eoaG KNM^n?77ǟsss9n?77ǟsss9n?77ǟsss9n?7ǟss9nn?7ǟss9nn?cG+? nnnY]͏eUS3 &1 b)ABY !!Ea"6M"@ $Jl:TSli_w߽u~u>~T]xD/#;h03'WO듉D@?3[.Or!$(g<>;tQg}QϗqOMۨOEl]z= f= 8Q*0i/_z`}:}^+QC!ׇaLXHa+3W/{̓Wid.| 6Mvz6C:ʩQM ^ .|?$#lZNByB:rzTyo&Rf*H2n Xz$"`WS3n^D7× .m1tn!v뿝kIޚ5MAR I}HkwAt$B$,iBюhֶA)CZ>h2Fuvm1FY95 K? Ǡ#i 7Ϋ3N$W6"dE3/=z[w΢ۇt:m8Փpj)! 2"y!Yi36Ց1giT=fNmʻ|X"$h|GI4/URz]?M>vdL^^}b?f32[ Cj+9nUgP-)~Kf*-mJYb8Ɉ)wy?*2ɋ# yW{p BIlM^fԸ0 gibL%ӗ牏ݴ7SYU"c0ZDq:׎7+Oyf[U2Иäzj|$ !3G%ue22L1q)lnt7clL7駟SZe*6(. emS׽>pѥ٫m~lIm6(^?TX Ɏnkx6y'b Y1I\oV#P<R n@NEDH=-0 B3|;i3f#}Ǯk[oa,7T"2i3f̿;Ω`id FP7`*L{&Ei(.@0-gA%[Lyj?DaĀ.j#ǯe>&#w}ݛlBhFQ 'oll>Wodud5(.0,: H?욌xŁπ9-\q6uB'v܌t ?޻Qʀ;)lu֗~))y7f<* 2bT_YY <We'8/k, c0a.(a %p7V hK?P~?G>x Ͽ:ȃ#L?\6*yt{1j;NJ%D14%EUUu ̵۪/>}v3~~тׂԬ¦XTNU_|B0yJNI FX}?|s1ƮStxܦ|E ~ _4_iUDzƅ7Ӌ!U%~FSOwh|Bܖ A SK7>,SVE 0 Lo(T0+е.*(-O`i˪ȑc`4Vvȝ%Y\K}2g<յ_k/o/Зcztyo_|/+; V(l$^CtP0+h5W ÈKR]Zg|xlVc:'fš5GT~k-u_jxL; Y}qƟfD T%,\O{4){Qrtʌٮ-w*ZblMBŨ-eb!j2iuH.*U$1i ry䷾f_Qp-Ͼ?+hrh!:kИ3\s kp d7_\~d_X pa뢘b*ۂ't^'?T&Kl{ {_QiXbFRdWFS84 '=埡kB w$G#or"lȷMQ E=2M8J M{/>jP;ʀ;q[e *Hͯk^*ls?fe{*QȘ;!EJ2L?c`>4ȅ̑:hGP@dUSFmD hZӰ"1n9}C3b,Ę71s&1ز^IJ+ g* fѬ8`fFʽ'v!:Č!G" ؘF!3{J2d¦*nᤄ4Ī&"y0PnҪ)]wmI@VXLAo$7J҉]g#KDKf-Z\3ErΔcM:"-f2j* J6M2olC kL_>K@ 柇.0jxȥx 9V}MWb ¶>0ٲPz Qf*L .`pͯ}LA6T"?LF|ܔ$4RO(eN8 `!YNo8/BרI{456#p'".ʦp+Zxhbbv￰J:kS H|kS[s` ]Q5q@76@ 4r,0z*ebs^ˡ%KszKހDR'T%Ts@E2MQAhb 9[x˳<:M@Z(PP}$^&RX_WfuP=pJȋ[P\a gf I .<}R sR.ip!S])W2<0e;Xʥk $X^1+r"`KҚX@SW2TWMT" l*fGF8sb& ʬfJmkiZqnՐgd$ R1bQDv|P`{%-h:+'gOa [8/)|Wg.8sg}>Ϣֹ*Ƕǥ?xסԻ)"RP ==FJYayl&$YT5HnclE,ۚ^'L*MԳ^ Lop/B{OAGL3i@RGRFT.F$EhBZNs{ZPn-Qgc1h"IF0B>a˽ w=mq;b[+4D#e5P@v̢ X*~)ۂZ}WIB-/]uYޡt5]"f gA\ Lز徧t`Y@){,*&!,dNDh Dg(c7J /@I_TL lRyOfFh>lO%=SZa6e,bc PșRj`6u5Pa)Y 2@ # l !j:|m&W &oΖQLSF{pzhBumF@3WAtsԗKZѓdH7N]lA}3IoBKlq %b]*&mKAZFJWU $Zp %(5izh7JJ,,vU*Y`Fcvk, tJ;͇-+/S"GAƍed-$NSD F3s/q3b]ʹ'Sـ͘԰Jot[CTWWMa =ZPCZ4Z.+JT"|rz4%[k}= Q! 6+/LO4BpEFz啾h2nfҹ oI~-Y %fpW1y Xj1&sl4 v.CTg&ihN,"3Ptjݮ,&nX`'e{5 7`盲}'/RK[Lх0SK4wa[45SA门4$*dwR|$O 0HH̜ e=wH`zs4-0 pQ'Al@ñ-'j W МQwpQj(ų L$VapzBP!Å] VzkwpLCZnc7Ȉn&i;VQn[۬Əv!T~DhxML{Y|l1naWŢK,epî~ގC mRBcҊi_V y-d ,V4-G }sVþ/XϮ[|%7m|},۴Ngw&vQ#4\яmoHh@`q_;;xl+(JE(7zSf%JgvmK=s[X.\&.Ѧ`6aWUilm k@*+h=BÜI*(sW :8,ٜpKzgLk:BbҢCSIy]eanvI.o0ǛS"fπvķ*p [ֺpS$, jI< mXeFR] ~wÚ^!o\[69Vxo5'ؼegiBqkXR&KШol]4jָsںj(RT`c=t3<7y2LOKZݖ'N-2I^@"R)R^>`YtTw u]ȭz9.ie1Sͷq=pRICl!JG?XA]RW}|Xא@1_:[w9ɢK6ovgX:=>˘uSiWf܂}bkC1}; |uFsqq8\\|.>sq8\|..>sq8\|..>sq8\\|.>sqq8\\|.>sq8\|..>sq8\|..>sq8\\|.>sqq8\\|.>sq8\|..>rkdk>s`b.Kj>gsɌǃ5Ml[bnJ@DBED@!!%% +兛r@nŘ@,3/c{ƞkjUjgwOygڵֵॿ+CZx\W%8xOoG~4ByA: _!L_^rtj@NLtJP?eO3mt j !}%C, A'.}-ҸoCLoA}/PrOޣ?,K7v7c!2@8g<փ2y`uL_4i\|ٳ<<24!~!`p1qtF.'1б7 49:]ʫ߸n_ !b[{?=ίn>,"BaTȧ~\?=|ˀ?n3#'4)KmFL[ 2/ȳV~0P~fha#qbJzdF'!<2s'|;'tGE"@ QyzғޓR/~D^y tdQ44g+_qUN).mi z3OT yM +Sk,`!GOEr8qx!#b381M's⩹;o~]7[`, |~ $+y%ЫZq#Y APW#GN-S*azR+1?KŬ+=,;@I~S<ѵI%s5wqʏzSZ1i8pG2.<$}X~T e:LRz%rdP,ڰqj<5C>UEiWLKefE)& K3G||@y>ߋqÏ~_o}w{o7O&DDP UTX("M,+XPVblD}dmlޗVgQPMYU JT'iXL{C-!IN6g~^}c`le|>7E AOY6:y~4P4?bpJ"¦#^l僓Hc.,V|ܼhaZFMYԮmUyDVXC5cy>~7o߾(竷_z CL>j3w{ ?׭#ܹ{~G~׮v Q9cy2{afD掼`8<Ȕne>ymx}|!3D_k'~"oޙ[1S}~'~GI/ho1}{2[9|BQfe;Ɏ_K 7X.]M:%aW>0TԐyòB6@ CA aS<-*}VV+?8(bJQBkŠp $d0Ku\#-jn`3> t> epq>~s_?ӣ?~ͳW;I?GhHRJE>|<`ԀUx^.֝_/_ߧGC~}"밿>O~& &%~Ɇ,"%F< yy#G׏oUDdq{O0[o$hMd  ); {tv>科L'tcja[HFm1?}w>qyPKJ3f/%SDidMLp*N&huxi }E}xyjztV1&;<= oBcZ."wӋ1б#Lݤi=o{`woSv]/qp؞ x#urCbf燖`;ۗͼ!C"SjP*BQ`˟ h i0K.lDkXڀ}1#<^h}UKC@-Rӎa'uVcOzzx1!"cNNwG2WR8%^!~bdI=rgɑg~K;H ws.޺߸3>y⍓<^h'n!Znk2B'8H7"i1|/&9>[ -Zyu;}f n -ռf\YR7j韞^=:VoKKǓ:YE+uzvt\: Q$)_Qr\͗E}JA[^FNiO1@('UBXR%j3ʬRuk~J_MjP gF}c$R HgY.ߡR?[v|N0r`2㏞C.GɁ7=~ȬCNq|A\Di 0|C#1!Ihsw-5Ym3Ճ~8K@TfoSS<$ |ɢF%!O88q8鞋\)sËT UP@~蹐\g>"EX@Zܓ R7AtIYU]X\H2dfUqK'1'(Z>$yGO OJ,НfʐCU(I9 6"hEř7rZ!sXf }WK+mF"B_b?DC\%< KU,f}%W7,JI. w'ZwiJ3*,6O|OBiUVJD5Q9%] j$ŗW52T⠓^)?S \QQJ6R;W_cPp;%SR~d"zA֝Df.PA=lN?=n⻘C3 Y U0ڲf5u N Pbo=R,Gȷat%A:ۍh1L<)5 lyq$J@D:챐]M ,vgԨգث*o%s9A%GaSFJ)piA'8i4뮩ij&'`iG,6aA|Hv7Α!]SXօy`[ժ2y֫PڵJyHAu0QnUĚT"wOS]7@1Kqjɣr6cĈ'B:$V;l)(4bqT*;}~LkG?'bQr2l<<+HWG80k2.Ong}NA(&@չ#(R5q(e -n)enܽ-qT\{8gtz21;iQT`k6%A)!(fNH'͝ɫPEl2No.{v80 *m"7TsFXəp5%sI@)P>1 8s.7M6%jo*YtX]za]$yh$8ayh^=(A ɵz!Ȯ1L?Hfe {@u.Doh!H_}YAS)a%>9,r.SOHot ˭p}ryīif@w*g>_&& 8{qSqܘ uP}Zb,yV傁BtyN̶\w8]ue.aa# &<'2VwPv*%"M<8mة aE*)Jnebݪ: ݦJ9A]ٛGYccӅF$XaY)~U dUWf T&SǽoIʈ@D՘󃄄@Z z;T\>NTRm~z)G! A9/}MwJi1QN?9"_n~r"'D1GR'T9n@Dj-RHvHKw:zGIy I-ِ9QiP2 黠tX*(syb1 |O6tlγm^U>]<|8ѷp}?-n7F U|\ hײu+mCC,~@Ň{މC.6I:6YNf@u/ vCӦW) СYs愌 yvh KT9dbKܗ\r)۬@;: -$)Ntve_mY ,w`J˺ {^ l˚mpuZ&Jyos~2+n{Kv5|),v.:X67G7xwUBEG*J/ z{5g˫rXKU.wN;Ps])`{إw6 \p/t1: w{A\]w5 RwEK <NƎE6 [Xv~PѬmTPzj,+$z(eB;U{iDgaޞ鞭PazA}mR pv%/=rŻҫ}9v9}0q;eXKp PWcQlP+iwuӟC R6e6WJv-@BF8(n18i&A a ]pRJ7U F|.oϺ:2Ya|ݼ MŃ%3Lo3Ӑ4N 8uN.T0Xʼn]s^ub[6u@'1Ŏ]gFoUC[|{Fsti ̒Km>jW}Z B@Fڧu nTMgh\!'nȽ RT oIzAZ* uwp}o^="[]OCU;ltoùokjwa@ ,x+,ZkT `VN- \qȡǻrC &V1NP[2e^UxB"Eo';38_a2l!m+RufCVâK WMKX^)Q,ZX\ , ˨EK]f/)VVEǰǖ8O]]1~R/_~e!R5Z0+ޏH%w>{g6$٭>A¡=p'NllI\JG.l=]U0vI%;.X 1vQUI֮Kw:ڪpvkHXnHqkD:xg0<>.PƆ-=%@*\M4T#NYhJJloǼ@++G;W_P=d=(dr>Բ4_L43|)܃ t\бC6%nY4m}+;lZju,6ΧW.A(o:h:x \ĸ`x0_eהUj Xb cYyy%7$'K^jDalĞ^{Ñ+}T/қUyl \k~`. Ky‘K֠t z VIzW׶wۼ[B~/NoȆhrofS S6vR<]>oYgK3Lfho^|gg0<)=9\;!= *RCv|*J4_S,l]?KgE>_~ B >`03 >`03 >`03 >`03 >`03 >`03 >`03 >`03 >`03 }`g0 }`g0 }`g0 }`g0 }`g0 }`g0 }`g0 }`g0 }`g0 `0 `0 `0 `0 `0 `0 `0 `0 `0 q`0 q`0 q`0 q`0 q`0 q`0 q`0 q`0 q`0 >`03 >`03 >`03 >`03 >`03 >`03 >`03 c'ů( :6 l^`03 >`03 >`w,ΓEQ%1J a! Q a;ĉ@O $?l ȆF,' ؎C)k! g+zsNթ{gZH6[u<Z /n槹a8}V7j"?_%9 WQ[۷W `Eں{7_́~ll+'di<n/G0| ?-m;ue9o{{by<_ zgI{e*CзM9^sYzZ |p+Tv&psCD(ǩ2|9_#[o~Ixp>'#!bm{>brN lݚ$"ٌv{Je{rO[eVn)n]A{H;racFHή|;n%Ae5&%{Ԩs*@}?HT^,4)ʃ.^}2 }2?//̟oKnR?P_ݴe6JߗѧF;q |_(OR[@>7Nx=?Dz xӧm]PwR '1>z޽vٍ́.‘:~ /+r{* l\jXT/"#{7CPVMU(5v5{T% [,h&9F'R_`+*Ԃn=A0g9loBCcG Pe栗BLC!YR[(N:)Wjdkf!TRׂH֤>/ϋ3N%wXiBҼ.nf^=Ԙw(iyC$c=%ջ]מGi C+^XtՔI"ewk:0.`l|?u釮\;D9X|?7~o<]DKu0q&߃T_ycδl6e<r#7]j7b!lH Mb(݅ڝcި(gSybji Z1v:eh"c5/O$^:>1-%' jr 4{jY3AJ…fǫ,lŬheb2K}hˮ moF9۲~Dl@W9xbgh5QX^0`wo¥?BZ Xor.I$D7$s &fT<.g?=xHKi>!j36W\A9{Wl(dQKj٢FẙOD7F&ϝIsRcbQo:V<Rٹu>ZKD"}$tn`3X34uZMxqf?v JUAV_*Q=;P).yMwJ݅ W;!U+0oѫ?-wRfW6Ì*w(GKߞ?|q2;rE+}zH ѲIm) pǑ@S> Yٓ9,P.,~ &{=.:vT:f8Cg*:k.0{O+$v0&zcآ)ք5`6j f2yNwwy>_'/]=nRdyalbgSS<3\=.92j~%IBEs5벷رmAUW آc[4pqꊟØHσ7ǾGm*#M@q<;vAuҾ p2wӍg@TR3"tq>eP5*^8&5TKuG bl)&j%5j8YMN L%JQsQȇ^8ڒ`,@ pAM>pPnHlCv !٥N[g/} _3?Ӎ`Ra )( &mE5Tm!fv%0=̩/y#1`;`˘P;>|v74f(J#^d'GTWa`臞6!jR2`pgx8y1\@j >^BPyQ81mKT)ҞCI}Z#x$[}Mb'@rWh'lܥUEe}X&&JR 7aIG9/[XR6kXh_RF$NJ;w+N$Ƴ+~gwUo҈JKG&uNg ZtIjMLr[UdQf`mP_Ll×HK2eS0󡧯o˜RRhU 2!]b?O EP9/]4 *lZS.ᴮj: b5PM!>2vu͛ *e<$R+"hIɤE!AK:`7y/uOPZ#mof8"B"S_a}0 -$p`- Tƣ-FB%ωvO_g^?}lv'ʇ_Skf䴈HCɰR.5ڽ܊ Ns52 U Sy)(wt$y;+Q35iaSqAi+ * ?`䥬4޸ ,_g%x~RnCir_XZ%oJ$[UeGxQ`.2~L(fmP68Sw"BCW|[%,uN'FVrUEX%w rȮZ sf(cm3ڜ^ &buy}O}CT MFH>/~K׶ *$%$>h*#jZTl8`3>6l6-R82UMA\,<}=ymkKޗW17j<9au|TRva:*ʅ4}tLB59]\tXfŚj#uD isk2Rv>GYETYnD>r2R?&i$$M6bŘYX\ҔV[ۄc%F6lS5L`b<}__;+yJ|4Lc7'=~[iz//]Oo:ėtnF>罺ufөpE!#leL\,ԭhXUγ*B8Tn-G\?Si5+}=KYVV|;Ade|A>طk)4"nyﵐe1*-4-ybJȸGd "ZL7 t {Ɩ)|1+ą$/[SdR6SAaxB3RبP0gN>`$DD΢5̘6ZL"VVSA>~_?'nyɵM|ɏ/vYW/7>91E~?m"HU֢q\Po~~ۻW'M*'y MF[eF{4\/UisN-G6PB bȕ&d0T# .}ng)mBQ廞6,0j!'9!IsύR lzcbךX +$t挙q*=Jv|V ąQT t~p?+T %L{>,K5j"l&7Ja[7b0UŽ:)LǘQ@gc?mWogy7+K|;/v62EWX#6g{KҕFj<2Dpl/s_ՃaK~OolG«MtLw TXb,t@ 4-6KF l+);'cw$\mʋ?}W]ݒٸqeまq'};KA?1}̮m$Uj-U҇D&hu>0[#eU,F EIj+k!r}IR AUqX'^틨ѵ:Mv@"*- …U_j2NdbO%rR Quu4#ğlʝ +}_|m8l&"jZƳQzxF_DĐ w >lJ ;I qTcB#1ֹ:ܜozVKIҲȮU+nt9)++SkbT°׿ &eDI_?Ǿ cX/RK ~ 4&elB}Zy"#q Yvea`U%`_HtOFY0@ d(йvp#`0H  c+崶s5rt Ɖ0###s4ݠJ;&tZCK'HEHU 50Gs_xx|}O~1 Lzc;ҵϧR[S&G~KӲ<;??uDC-@i)D"*fXI.}SyW7^n#t\\Ls I7w_NǸ슩Elv\)R|Jn·?y[z >6VDL}酇B6k-^ۍ2yhib%ݦX ~釃MpQn>:D`| ]P%3 4ʲn5gHlʃ$ U -& kMK~ c3tj+tn&4d%h3D>%$e8O€O\|S?G_1GCHyq8o'Y;.!X{l dė2I~ 4NŮD*OHsv*P$Zъk Е{Yӈt3 mMՈ3Ps5P ue[:i Gs}߈ ̃W]ZSI<Ҏ}y.^1w#YLR 5ҿ)8-U⃷;۔ғ(`흧jN%5KKSfwIZXH4 _??gk̬C܇i5{cEmt sʛ3v)ܶH6i?Giy_~YF2nXYȔd#ur&uJ JmPISDբSY%)޶{n6gg^>~[zyxR;nϗ^ O_ɯ޺}ǮnB4w=y3/Y 06`7 ͯ8ѫWz6XqZ[@URv3d2l7X,I~g:}v03M83ETuG|_=O8yM ,s7N a o}##+;Jh|݄} {uy*篨-JBfT~e]uf7\都b䥾~rn~CSE j4 V|A߸j9:Cl܆5 A4-:cl>򕓨iݲF!c81xE!\CO׶Dqj7 (%.ҝx޽9}i 'pId MAd*qmY>g rW2ݒ&{V=A8Vq #H/+ՈpQ5n SN& 9R ahEM%Ò= @V!H8δ^]Nekt U Ӥxs*r~J=&.G(;ִɩyE~)l2zͤ}S᜜n;7ѫo-|7!bmeJc4_4.yVI`J၈^YBhE׃CU;&aңJ*5BQt5y~#[wŢ&a?~RÒZ.Q1)flXДv%.'tt֕V jfUku=6l)^[PdzBVeUX PhNcpdaGN:Bҗ.)m7?_߾ɯ,M,I?kR̬QmX8ّ r).deBM%bI"2qv`>݌DF6gumM(1 QrRqgj|WČ2h[ "!Qde$.)nEN" %tpoFk8fuT&ffէv6|S_zӯ$\Ж͘D >o1Ve' SPҤ5K9Gi0`KKhmsl/_2mWZHڎg0lvs-)턽Ȣj'j sz$e#$>Z#:c5yػ?3'1IG |/jLQSl]-HI>ٕ>҈e} nS˺ag%Hmc6 xuH62̶%Iųޚב3tՎSZKI#ٺQvA1DRGz}ǘM~Q/M]yyn~֝[g<{;kǔe)9RN׶̱ox JpM)ɉZM~!Ur½Zd?5j9ieSht]V­:G^ʢnu]5djdO1!O7m!u-z١614&)%ҵ>ֹ5 x/I!8ӵ]B9a'''syn?~ks~䇞z'1)e,6w!|7tKb:=@5mZuh4.U_D:$Wi!l 4W.pF9qdL/԰O;T"J;1)v/ H!]ZQ5ٌ*@=^͖ -V ou_2 fDd(G[dRZϠrFszW !`f&5MQg$t_*jԼ`]Ue %: '&}~dۺ bϚym%!= v#>DYlрJE3l7elgxSfa X#OerGds9#r9,W4|Gg?eh 8SYn)LVjXǬB,{ջR4 S8+osbjCR⚞뻼 DaNGtF#8>!WLߠ|&:ó6< OTmIM#OfSYi .AzPBpD OD0ь󭈓ܟ?HRt[]Y|(U 6SNEn3朗ʨU 4KӨR$.:Nz\뤧:@J?P+۱8!0oL4L&­*>ZTHmP`k>Pk(u6 Sq0o`mM1pc5'|r#YVЋjJ LMB%8 {`gSf>bS'4Sۚ%7J-&IzjBu%}-*ߌ6ś ;ԉ3TW|$;ڤڏH3ߐ04gXOz\_guqnJfؤ]ӨFt]ǢyR]ei9M}\$Z~LCnJf 2LLo(ʻm”>`Yb0D3x&I{qm+^I+KUY oV[` `u"52Lٍt큖6 f\rk4`b@ڕpUBnZFl}gmv8^vgtr}etkAJdI0M&5s:D8/W~fkA-^F65¦$JYK&],vxZuq\ivjd9P$Ix bQ ɮM tlN]l\(nb2iɝh il&R dclKD:{?NNcMP %2M>%5Xr:s񆹽K/:O1JeCvo۪F'7 v#!WcϘ*2&sq1%n!UnjN^D3q6 sF?zz!]rָ$%ArUgʩd̃cFM/5N& v@RڅXOFQ] U,"A3x 3TRߐK!&f(.@DGXl4ؤքV2MIiC,%7aQ'~j)E)kOb(RRe 8KXr9Hyej{9hmATʈvJ-_#qYcEu UhvkoPE3V |ўN 3u Ii}r8jt_ӲguĶ mw$׽+ި2ay]Q',d20U~*dHՎpRƝ6n!EiֽCS4 w'jOI /mvπTFSf0'6ak̼ Pc.JUV".zG8Z?ĒoSnd6l֒N@M<*R9Z/74wVcz:9>PUn}]mSTH9!4"\$-`J"f%f>:x흩:\j@ZkkvkXMeljۡ=m,vx|jD䀒Mfd`ZXH͏' ੼Igկ}T" 3χ¤zHP! H&n%=͉sLdVEEϩVHjmΔ,a<'dct­_h >KKWgv[Z(=J2vܛsc[6+{ͦsVTIrEX)Rb(UJVa8]kSjeÇI?/jt"Oi{3lwXƊHYHS~.FF:ʓz pLKԍ%qĦz<%CEL?LsLFGEg*=BW3fT_vm{tcDP5R}I,oii*= `ߚZS1H.RSq";QS,I%B=/vӜ2t~;$YBT%APnT[%!VWj0 2}.Mux[̐k0rM\H;Vbdw_xs7ȍUܜ_7 M"7WLĥOVlU$DLͯX*x쐘lkkR88JojѴ?4HLjd}#u L͔#aݖmE*YaA]X%͋c`E~zHi@mXJ?Q*Cۼ"-V'JR>Xgn;Fg lsct I2D̀RCzR/HdaQ#>݆6a7)J!J:T.H-w('sӮ}~Uc)]ǶX(/#(B扇UBqsYkĜj)֩x;Rdjhh/eFi[v/d2dFa22I2i\BbZ' 2Iـ8*"Jxƌ`z"0I1Kbc: wk&"ŭ+ei3<ƍ}~.IؖHY+OHShkϡ#4\b{MAm786$F[ IZH-[LFdxDX`piKYY[T4go??^,mc.tyR #^T;TVq9,Itҕ*ZXN^XjDI˲&n.Qo`-м¹*6?`PsBm$disk0Jr=R@thqr^S lT%l`vQ)r!QPs1Nl&id#DM4A6yхTݧnUKŐ {o3(T\[Wj t<`r$eK4*6Loyr'An mPm$۝]'f$4l^cin)n* ȅM!7%54"{6<2\ËnLZxg5+roUF`B+2:KfZ4=I"I(5rJֺ̀tfȄ%1Yn )eZUx<d{کz\h] ZyTzb$]UQRdnT%o X 6Qk௻yT 6~@ ?N[F@*yǗbrpj`9&}gnB]T)J?;r Nʍ /&?f9Ot2.M JT!>WMO!($H_:~sra  Nvj7tY-;\G+Fvt"~v!Lg6:*>]!~u-7 CU%s8> In0u+Uk%)_B M}$_57m@tUi`z8K wV:JmdiOl8 з3*'uH]o1ǴCH  ǰZIU|Po*J]xIc|¤SH-$(>/򦕖%[+6hb0Vykrz˖x/F3Im/xUzr9$! MMkP¾E3Ĭo-֛Ԧڜ@mg넯ү M Q ((=Ld:ıh"Τq]7;sNDrͅܘ5{X*UX$Ȧ>a2@T)0Y ߂[$EB$U`RFdM=,4EQuyD]T 5AjdDU+Q+(".h)bHVpv+a 5LJRe,V~8Z&GUˬLV1@#I ;^ѥCjPefG\7%#10ѥGCF!F6ljٵH͝9y;JOHH|3NJtuOSF92ԂeGk6 A⏧l)s#j#hwm|R.Ԋ3IqI$VzY}sSTO>*totFgق*|t4[IZyLkeQc͉HadpES"Am9HQEe0ٮ*hZ;iùuE/S YGj.ZW7i!wY#HmY럞v`8LF֤.zb|Tt"mLVjIJRW1X*E!TgɮZƯ-t%:Wi}ۓY$Twb3T!C՜)ປ}f4HU㲪pzc;;`BVY딳q6{ 8?VWКwNQwƜONzرs [нXV+a[izȴ9Ӓ 8rcelFRJd,=Qf)]T;MCJ [YGE_NWAxO| 5:Tqga9crf4e $-j\ ![qYٹE8Udk Yėe_y=J%ۘF٥$̺`k~1Hm$_ZP%-w%z5İލȥ6gF{IJ'LCif@Fn2p'c@ú82r`f߹TApu ebmL榇GV%JQfI7&P H=NHt9I5 y8F;Pfk*6TOꡖDW֤"TĈ3WiH{&;ߪU6j*%Ok4ī[lcttFŀ8I%ڄj"%ڪ/eIz0#E5~7rnj723^(|{Rc/R+Ya\& @Eb~薋߮6V+&"eo`]î򒛺g@y GM^A/{ nTR1Nd#$"S"|Q͘ZCЦAUF] )Q{|G &8@H_3*%HfQBuKTHbݣK Jԧ$]oYiJK$kb5\\',őԖp6H$QXQ=ۃβW+$X<|kB_=.U@IhAq;IF.="B`G{Zmu ݭsB9$Ҫ1̎Q9^ƛMؙ5+SV|v L6Ϟ촏UiVAԱv&.W Dƌx!ƚaw ܯ65M.aafmG[mֻaҋJ`g/6U, .X0whPi*Zv60'?a (X?`gHZ$13@Y?z]ꩶOA*i;Ƕ)̧ liTdK2Xn޼˶qR{XǕ*:i. k}ThAaA$\%rIyHb tF!J) m٘6 E81~HeN3[+ӭ3ӎ}1X渵Aq>J7,Y=4~[pq~iRR\8{JĪHOIMN,0)[z"VT6*Ѿ%ÁZ[̙ټDSG vV+nTCsaf{btSE7w>t}l8,\_iy 2Lg:\uVCRІ7ߦş´[sr>HtE{h~aph]+_XJL2t nQ&֌otS0zRq,^ PaWMBTQE<5n­ |8­=f1oő[%l?cn=xu8kŎcOlFwTq 6'jp!^|bl:[b"8v{a= yE|Z; i+hxU_4{{/.6K;$`?xO Ӂ8tb2֚fјY1'Ty9/hm:Єd]~Lֳs "Md拌$ĩC?@T|҉#ޫE 35%w &2 9si.*ILJ~lj,#Qy'By׌y Y9#S<2cCEC8Lol;ɟ5hyNc9ޓeSuEԥjuK.+7{nR taOzV{2m|X3-GT,뺨s*(X,n`8vf4y` [yƪa7N-ۖEQ:%n8n&d¥i-u=px/-2=_mt"q3d:mhoʥǤWٷΘ̴Za-n 0%\ɭkM|7og6ϩv fQ;G2"<ӥ-zT~9yJZ~,мF2g}}`pU3lTbCȌPb˗'j`L&+$!$w67?Q<8z]>l2I1{3Xc}L$? f\lý]ͳ8;XW$,}}h~TR/WƾGg[qtY%Z } 1XBdžPG ϶0iN : ؍9MۦoTz9p(J- Hnvlpd2$,h^eևwctߞKsXg K2ݰwlLW=Z2$ac3}e$b 9^:d10WQ[&ئH/v[l_q#waœF[!Xif\JvM s$-\ۭJmk,IGڍ h.vcOpeHYY2*~k x&~8h3#_| sôK0m/R}4P@O[G><(eF䲐jEHs3V֕H7vNUUx-F6X7bn`%ri.B&ά>07`-VƩ@U(WoT OludFA3ƥ@3~ҽ4_x;}}9Ǔ)mYϛƇ9W?QHb=zf"RgkSWf[cA` p.@;9b>v^lu~(}zZE>+6|&ԴoiM;4eq :͏78lB Foܼz;9o;gQZ.JͦHZ.wC1p`g_T<46uuݮ5SÚiAi⌬Wvh⣉9poZ\h8AYY|+ݭDX_[k5ڄ *sWgJ$ENg]@fR'VGb6`@;9o3,"\7:mxlncTd f%2kͨ`!KR5tĜP(ifa{%:Z,YOݹ_Lt `Hcaޒ߽+odV}h~\VGa =YM9[89o+ogׂ͓! 4L n%f֝L>ZR~n$gz&.LNܹo %m48sGʛ ^.ڤ渲B$"3[ SZG+.!h&UaJa4mƇZZqɆsWti{6ޖ]a9lb}kr[mM&ժ zJ 6mV dIJ4'M_{M>2KSM4]?vufަjfSz]]Q{3 0FҲPfE 1Z0Sdts8_n ӟ-*2Û-Vh.0ۧL4Ⴥ|uu,ޠsq})l<(,.\ԚUѡNht/s۞f*yn 3L%}LojL?"<#_t%o@O.}Ҝb0|N92q*1i0r:-?F#3EA89o+͐ ,Q aaJS9m%1\0%X~GbvMmh&]c:930;}rABg*&$UfpGt?mGxw1Vd5}\I+iw1vWnŹp]z GҺts8Cwr6KA}A_;9nL}cgnp8pps8}p8}p8}p8}p8}p8}p8}p8}p8}p8ùp8ùp8ùp8ùp8ùp8ùp8ùp8ùp8ùp89sp89sp89sp89sp89sp89sp89sp89sp89sp89>ps8>ps8>ps8>ps8>ps8>ps8>ps8>ps8>ps8}p8}p8}p8}p8}p8}p8}p8}p8}p8}ùp8ùp8ùp8ùp8ùp8ùp8ùp8ùp8ùp8sp89sp89sp89sp89sp89sp89sp89sp89sp89sps8>ps8>ps8>ps8>ps8>ps8>ps8>ps8>ps8>p8}p8}p8}p8}p8}p8}p8}p8}p8}ùp8ùp8ùp8ùp8ùp8ùp8^aYp8pkw,8yùp8ùp8ùp8ùp8ùp87-ˮ\{_E.;;ݻʢ,T%@XB D QHA  TB⃟ %Ȍ/^sYki^ ;nfDw9f5c9+o۾y> :bu?_qO(G;s핶R_Ѿ+[i<=oG|_H ׹|O{mӏ "W}܉[ L/ B^{ `M]ν|Mކά=N4|İ evHSoS8?>WӃ?v-䷸f#3?<cZ0  qMM:z37f˗zzl&c>YeMWGuDPfؙ;÷Nrb1PVG^u+-C^ Û ~d}!G:6{=;b_`}{IٍU5ۃG:vG~}OؾOqsH\ Xq·z 8ð{*|f<|{ lggS@# D6D^Րm2͜#!emH.T=OH^O\L! q&K%5~S5!Sw%$ߪ󜤸I(tfׄ·+ 6h$TÊ3ѝ:+M~:EsZlH>ѽe4fR ,齔/@U VCyp&X lQc}PŜGYe|ï bS lS*yl['y,<;a$7) n3,S) eaD>jHP^||YyvkgVg!ݤG aqbв48ak؞T?uiohe{ u 2EBh0L"tH‚GCzˤ蓱$mn 9 k@ :CG.?hjQ*nU S@QhSo#I6NCúe1Y 谁lT-Gm3&֣9CRwa`mɆ6b||ҳG6蔌 A]YA( &lf B>jfaܣlD'HP5:ϛaʿ.cySՁuk0BJSo$9v^˘pM؃F6'/8ql5T1* W9,O!9B< W b{g\;]P>>ڎ?w]r=`_tX߁( a Zb鱁µ< r#&a*7iAۈUS$RLqgCkz(R:Ԃpr">h57K*Y6;]Chaa'#IHdiC \zPI'@ `d"4MtLBBn?NO 45[hށ 4/PX,]Au`IB{ݠiEA#}>T2<S@w-,q7,rhREAA]NΣ&[=:50MP3NMGSop42wu 5o<4S+'lgI߷WjpXk"u@m'?aO;]㈨]zہvC ֤٤Hd#PWhU bFV@abY,uԞ[H+$N{yF[?҃}B'K$7!blւD tfG;F( $r=SC|\"mll*PMLF3s3/43fd0@jLZ1ȼ?Kj *讉YE2щ199x5D%y!I2E`rTPbµRi'rQR yhdnWTD=b V s r^,zl/ԚBqozi#OnpL+H뎔a᥸V/_+OVV~z˘bVNlߣ܁Z7H/>GދũgڅF "y=[cl!*9S?jHOwVS^RR6U@r\e_u^hZJD0)+s]s%$)cUL#!9jen"CC)<{ir&ODBjYN 煹,-QYOE&Ϛs\!/n2= З @\lŘzx <|;MJ*(&TpZϊ:L 0 O'ד'!٫sKJ#ӖNkv`er]J®<Y#yIˋ`7QAˇc@Gӗ }Pe1*[\( ܐb0 ?n|X/]hl,玒=@z𵢺k_H>Js,X4Ffw)ט7&ɭ%dT6)Կin@Dr,P*&doA&JQpOj1iv HrL3I0a7Mʝ'Hh\jd 6h'fG-kg@YJ;2\,A[ Y[Tg/u-8M a#b3Oy=G0wn_9[vϯʓq]S%uXU]ÚTa=[#hnQJ @%HjJV*DUeV~AQU5Jzboh]-ɬVZ@ -+ڈv#bV)aR}>ed\9MaD*tVQF`T_@=~ڟSoڨǃG}X00e< b|KilyǡD:B(H"r\'1y:lOZg?r#}IKdAzv$XΩGL̖БoA05ŎEqksHzS'4zfٴS%[:k;v@dzA+n]f*9zY4EY_m6a+}߭{u{~շ/ܹ{A7g>rk o,g#|hŽ!g~[ v=Ϊܼ>R*+A!,Fm[#t:әnTÀ Qe+k@ݾv[D=\1)DŽKTt~h^DJn2HCS VO}:'Tr۟zȯIk -s;ZMΜJO= IRJ撌$e'3у:t+ЮAulR Ka >d>;u7u1X6IةQ O#s/4.<ɩK 貋<sLMO@.q"׳A/u3ֱyM!~ʛ~Koߺo'_'O՝o?8-_O>s`szZ$*140K6]2[:KvIM%(VVZnҧgW^!¯ϺgӖ̤\ ƶWP|7NS)풕YelDF$j*7q:slv̯O> {L@ YBR0[Yʃa[^L =/d?(tg `v@޶+3G! 6$moL}.Fiu}C&9)brwCUHx mi& GةQc ,K\9ܣEt&Y'꫎. \~y:U41Q'c2J6r[.=eGm/jR(P|S~k}ꉧ_9S<~MD֎M8X{?8}͋u'LIb+.Kw%yNF:S ͳnps|a1,; 9gh,!p yOWDAHSz{NĘ*Ë (EBؤBX] ϳ]_RlB'go_A*D!"_'g(g9f=KkCZ¯{ni\f:C qPI#CG-؝ɯ25l%_ɲ,5{jS#ݞ:fѻb ?Ά5$ʈDެa< GdiD S< ?;,v)nho6aKTZy5d\zKj]k.{!o;ZL\>=wϽrwzV䷿x\ޅZ"tJNۿo _yYH=.6S?5_ղsǰ 03y6y ÅQ'.X\YE_)pڋ9dEc7a< x^^o<lSߓǞLK1-vLА2RuP)h—sJ׻;A߲ooe5I6m9 oۀK&8lVs h` 2-x/팠N+LyHM)L%_N P!g[dGʶ$ta0 Ju d:Nb0]Z UNY G%9ZDrp1('}/S[pW7>\.3} ggM}O^Z_9^Y_=Y=}y}۷]\ҧ7u;{^݇o_?'>앿['GHY΀6}AǿmOt`nqgCnrcqn;wi_7!Zɞō%hhZ2K}?ʐ8l~gw6E #kR9JEtU!U-=TnW RRQG9571UQlnJ|k 4L}1Y¿ _cRMvocO]|׶W׿7oͳwժ2z u** .])JqidPx@Eqy6 ;MT@z[ #}K6P<>V>L._9~qڃ"Z!lBU g3$8|_|pzJ*Opm{~ojOɻjQXE#0d(A#^V-"R ,,Tf)T-#\Z L&(}j╓_xF{T֥g: 4ͽ/v箝:[ِbm>_ܻڝ_sK?(XOVTj`*\s>8iR2;~R\ P ?>O܈#q |RKv9jCS)<3rNT{8`-'ߥna)ih B)5gǕ5&/cG8{FNqV59ٌڢcEH䊬p_dQVXDa/IjT š0շIM?ubXaf/go_K_z/}v X VwϯO_yM;p{W]|PØw?Q"?衲SppxzEW_bQC/5ar.~k? N-yxy|{OFw%%tcvu, [XOY{?]ڟl1}6|}6>Vl& `n;N x$7͎dW>T`ކ~?~r4f Ag>saǁJcyw'>je1W/7/n_= (EG)$ j1v ˒sAȟTs1'OLj0U6wz65>f:nwNKS{EcAMƘTc|wZL~Ah#aI(Q>t }8&>҉Sv72TsL)$PX>S5L{\MU9]kłUʩwjTWy뫢Z؏lx}+o<o}oOO?嗯~=uybqwPF}ůl?ܓV[Dy Y.ẓ o~K/S7>oܽ8>`$EFBדUgD O\ZmO+"`O]ɠ-7,b9YC #͎D9Z/jnx/H%mqzZEv ZiM7k6?8qH!+]r6)ORitZh(o#a?篟~+/mpVQߞĞi0.}Օvސ/!8L<"5t !C)À_땷?{DaVO_/u.Up8dgdM¾KGnn(7.~z_>[_?Z >҃,azH8!n+3^;]O=g^wwo;Bۯ]Vui.U(g.KCrgJkOYrǸ*-1o~ʈR@ulyiy>tÉJZ$rټzs!Je;3u4G0Yd! [Zj99PءD*\!͸Y#i\ۤt9m/M̫2Aa4p#gND;H@:$8iuagRbBB}EעxLi <Vc ˮb0% \z?pg>䧟~ⷾO]~-//篝>ᛗ^w ׷?յֽO+2sl24a2xO6\|+rb6+NM]!Fa DZ E%vYj?׫Uz2\-tC <0}k>@ƯG/!dp1R_>nʧ[Jt-wr.R&d_8"xLiH$ iÇ&ޕKbXE/Ƈ oeu}Ӂ^Z{oO݉7we@,&:f&A-,܅[)j_kdu`;RmA* r &"I SLu>kF;Mu sdt6}Z[7u*, ٷg: QjI/m`g<XeіTh C%lz P!Y:銚J-rɎ|eR>܄O?v#ٿ79Hc'VZF6!hF)GPʥ=}ѳ>*47m$3hTIfzu͜ , Đ`/F)pVx}]?DiL=`Nb[X;*Ʉ=Cs2TRp8$uPm9f2STh9ԅ&E41l_I}.T h/A4ۋFUDr0 4 aQ b?v24 SzџR%Dbm[[Zgyh‘z!4JU%Q,JJzYOF܍eLc?[P*=eO"^_W(`'A!$ 2pF҇4,aD M E {\ϧA_a@; zyKtRn]:7~也_Wrt}?N?om?78#=#RK&fJin2z:H&`T;'D\xkP>S7(9X6o CEv :v )VX)CJ5_d8uMINh P$CcG]<*B@qΪ\"I dbO9Z\lWG3LG?4("7ykM'ȝotpMvVUT#i*K'ejw郱.=yy4%kJBɶuJ3*.9s+=9$r&wPI[6/|湫_;}$bDSԍ#;M౿^$eT83B&~`j tRY= 7۷'!' C1}xҿF4uId6'Zҍ1i= N H7iWG:hxU +a=}9{bV#n:lh ιta(&y>t3ha*u!kǚiFGx"J׹*QYR SʪV;)O51־`j#v:Ri,Ȍ9,qIlGIݾφs׫@#䬖rv Q&,U5sgJ>z챽d>>W(em"'z/8z"9Tsc󡁽3VKr"O\l"fHr3:m|k#iG Zqd,=yZ!#նati B"%;5۰"*CW=ZJ$?``g Ay@>NlӀ }kM_%{5DdDz\r4X+ )R2P.4h FNU{;)woSSIWgX ylb6JTi(AӂWT3Y%AVt0™ׇ DDF,: +qٚ=*e*q8zi@?uDi]PX1ё"O JzUA/ s#SauJ>>iԥO %@9!Er Xx gjR>JzƣM!#$vgcxP _zTRNɴc37Ɯ}6I V435M CZ[R3[XK ^Z,OfXhatqgz#뉁~58] E+3m&޳Vf\_SSvfCJȋj`a z)9XdM9q2FYȑOr{(S;. /bq2eiCud5jGd&Ƶy40$2"$izǵ''M 4]}8e~J/:/'m jIGΌr(IXw1<ͣHWj$zOS0v}hvż˞Ywfx*lʢ'jzfx3Y#X+*WnPz2JNt{yX l(%!ϼZ9!jڛE'yLfS LYMS}ذҀ=-bZK0UK-vW,d9&7w#J'xZl _/Ԅm}єOW, 8v2yHX쾵F6aqXLڮ-ד&re]yeM>o6KmKQlr-Etc!¡$vCD+2FKhCZ65nC7~z%ϫJ%/PWɷ(:/Jpr<R Ƣ@9B"^a[Ė2\|lFC/'P46ӥO"vp 9!E[+? U~ 'o0〕7q7+W; U_mL=;YӗB'7V'C_ݡo5B: N ԌprWKlH)=l_0BĢ x +2͹K(4O h/Ę*:<{7.={TP=k4YlVƃ +|Z6+\‪ &F!Խ++|Jɻv_I `@3в&k%؈ͨ (#ۇI$5})^LB{l܅%=, v/npJMnYC"jM!!}epV:2;dJ#~#y| U'#Z9fa)ӴK;u7NV2Q۳aʴ7xN(6:$fhGDY1XMalTֺѾ8_m]NYi[D\ 3:Q6i.WACp# 4T{ s )iU]<-~^$i<n"qiqmfUѰ$hE1u@lQ`Y{` $c"a+Q*:6pa.2%̯ u)؁HԤgω2)3*:8H_P͑Iq~/*O4b]#ן'fUҥMI qI[t룤w:,ݿe}caJi^w~w~9Ϟ8&aQRx^B<)  yL2FiVh ,=,mSb*rՕl^;בv3ުԥ%VVk$fɩj 35Y~hL*{SԜBӼU2aVyɩ0 f Ӆz4^ zpcrinM)Z8s2#: Z* *vLw*% %W.SÁ3am*N+aொq2o V"Î=%w7I>zŇ#/^ߢQ8VԵ"\*6>|]'rXK׺1>Ap@f,UMf1EZTUKo:7k(XF<&KCG%ZrC .R8,̓~B-6h΍b,02I wSA6"nh/Vǒ3 D4f%0δM !Qr`'ʹOEm Q)e 䮢F*O2MOҠ۫5hm2qI?U/`5em3ASLuYsO"Ώl\PnzI'EhiA׉pfCZE&N%»1eXQ2c //ؐ#9[>ϬOp-g2Axty ._npMH"%6od=$ tH_d1>^? hDceU4 rmZ3e7.io;\<ՙ5 ur%$Ѫ$mIw:k4lUIeN$NV*) = .AYZ'Dua+Ӄ2B|ʦ[BP)`^lcJ`/p ]GL[[ŏUVnD(v~TJ;>S=ӕ'@Ylzzg(r!:bn )c5Z]ŐZTZm돽t㩫xNGj֞DvebԷ Ud/u21a&('?^Xcj5 ++8tӂo$oW;nƳ dq ׻H{t [ h<I}5qlA^2zd݂٘NYh!oΙX5=,8HF.EٯA |@5@0e7c¸-hIEQm8 ܒjf*@>$ofNyfd,bĜ.iIC6;ƱaJ^F_t#/"\PP+ %MJ/莬M zbHFH`Id^ꅚH>DLSLFO5(.VDg+u e >Pm[fԉ\]u2G%s>Pĩ!"/ #Շ5?O^>YƁ*ec۰0֋dKXgIa(.vIɗϹAgZCm񀶋'jZFPJ܈,]hDczOܟ㕼Tqnm E 5Xƨ%ʾ qF@϶!fwӶշ)Q?dA7:JOsmXͼKJ&2{di+^A4!P+9:n?~!@ U8qY,Hrcd zp?Y @uy/:Y^3-Y$,q[X"=n2[H q>yQP9HQ;\+F<, -3Q@e`eZKGCB<Q89>--\E$5ˏ ]:N@R;*Ю,=saw M 2Vf!GDj\#agyj4 Yaw'e)¢xmj  .$r[M8 3`J2f-U`ۼUܣMȈPKBH ;X2W`dN2ܩv>L$ }M@/I*9 SzBs}2*9Kr!C,gqo[h߆5MdrbU"cMw>-VIMDvh(bQxfxeܒ$M9PBPj8G,X-,#:ku#np@ W7ꎦ~[FH qq\6z$D&Njx=~cb'}$P9uG O(8ٌKs p#_ KBr I.S/YٔY1֚v[/"bzr )6m FRVɂC SCxb&if}>1!&BPBMW=Q)I \m(w m!"73+Z 3Ƅz*#f8O0ttyN1& ; ,aPgkZ%]ynJI!n@Mf͈M_uSenoḞ?'o_?]rTeBOr%U߸}[LR]JC%&_5܍9%i&2c:4Mr zlթxa#Ccqt_#uVtEb6J.,,H{\5p]32W\*h\C-SM/{V)#Skla#nqh<ќ7PPfS64)b5t$r5jiMAjmpO:wȣ \BhA# Jy+j [7HfCO! ڦpVTYSn_J8^vtcV|Wz˃3ԱELH]^D?`U7Ј<Ӫ%)xGÖ]w(dc#ܩ5~YyFe&oخ`!/8u];|`%yQy0nuۃl/78r-oX@Al%|[}$y8f&}a4];}g= *i4V~zۼ, *nᮖt"!$mㆳ4#*.c My-KxvOψ`Z :es]ʣ9#2GK D$it5 dKx$s}t-!l@Mߐ@*X2Sf&ʀ6)i=m/Ԑ"wX:Mwt*^Ϥw 0}\ȬXه~tyAh)JTkbiQX4Ӫ-^A&wACJȁrF5_6Umlluͤ\/Vc,ONx.J}$bCֳYT5r#=^{j"BH_BBo_ɟe{ G߾ҍK5j>ecqd_P>Do3αq9{D=Kx6QʺDG&z @\<*@r95Ʋ/m@F:Bpa~d*xe{ϋ PX9|xKk<*P-Xjs/CB12XlF{>2oYf"6%Ժ׌KesZ%.¸#9BPћ\2 Ůpx?s5˭9CLlhHYW-0 b+JS?DE ݡ/n4^W0LF0 AN+PrRJ+(%6IR'[6imOI GI>(ͩ.2<AۋHd> Jds[D.&Etvm6U ipi>$Aow#Qx v:X6 j<`\KzxHs-Hq{]д8hgMXPQ7qAk5,v)9M:ۑkZw&ŜjE @:F3*ݲ@k@ ID32*nvY%TqBg>%a3Dk:1]u˚Dl#[ϭS|LJZpҍ&aܷE sD^F]CKx+)Qdko(ذyGBUM0d+ 0-&P)И)̘v{.٣5=?re;he"+pS7J<2A5p|H?)M,efW%/K ?5j#sPk9dF;[w3jޙΒvt t3· #1Z\ĊIˆ4  ǬnX\ v'Eˀ*nv!ԣI mF0P ~q^.e|_JRC_4cWSXH!LӘȰ䛶IBCv5nPjb}ZAE zw^YF3Π<}\+Rc-Y"&n|Ǣ'bn^ m{MtYk Hȵ!R(K:sȪjŒh.\*[N(_blO`[Ȁ=2tq_ڨg@-$cGA#J7;H湗"3Mܰ\2&[ XeOJ|oowEiˑ%@o;qM8 I:XxJ|nWfeh9,r4} K>Yha -Y+ȸP>Lh^Ν\i(3Tݯ]9IIɖ.],si2Ey TʬZ)]d(aܛpQ$ ,;жCmQ,\CNȴy=CG_!*T@*^%Ջ O'Rj]<Ɍ5a0_?hfh.7qj' ᢻ 5ELeqnV銮'k Rab֣j -WAMgnhl~C4^9 #MYnZ =4 5BY)a܄:|,M!zSPl3χdå>UUݞWBS6 1PsYDroTT+Ni>5y9O 8"uL]D"6]e{ O慨}P d C簷 0onZDǧ,yAP2PNbY] Gm7! =N5-,=/とiKЬ")@a*UmSQtݩ}l@}$G5'cv%;n-R3.9PFf5"#M52GD&;{7Jֳ.(Jd[ ~ Bv͊.|ΩT:tUmd54n^l_Q"/ܺ|re!vFd: nؓ}xyC66P3yH~1pa&ca0v ů+o^^w_Q͕a.oFbڈoo泌HVx1sj> `s>ꀁPC8%QT_"-@I cA&ap>?sH:zbxw!M{͸Z610N =7/:L%y{V=}S͍7߼X~DSd55\!.XK߆/}x$3>z8 s 4$-t﫱r,3T4+Իx;s'1Ɂ:\4{2평קU #4{FS!꽛:}-hN%Ɨ>JGæ>{WҘ> 5b]fonήs9IBV.>%kW2_=3Nz&8a6,= l9!^ CL&q@!|.9ݔ;$wکH7Ύj(@tL$Hlb/z Z`cm =+¤qf8@Ϭhc(yF S3ʤ^wvVJȂUn@fqgO\mכC,|dHU[$H{Ahӓ}:iœptqJEŅ4 ?RHVIsHSo =Scq.G2B5>.CIEb'B MǺXH8|9t(4kN_@ :?dۻ@I7+ϟp`iG`QTs.$6ҚYLꛨ?q!wyZ8,Y@y/CoMû Žt3vޛgv3[NYGSe&ޝ\2EOCNQ1#>*doLFWUrΩP<:bvsVЫPZTV"EvVUϧDWdU[\e`y=*lޛWsm⣥id9JdX= _%b/Gݯb9wj߳%A$iy pn!'1'gAvZ$ob~z\Q;D{C:{` HVn:Y>@ \H@>&47'v4+ƣ;|Z0wMG=scBhNdΔ˼P=wy7 8|Xr?]n}Rճ%N0O9fbchWG|5 HZtx(0O)>y+ W Ҕ=Hwd˝xeAh=[X"u¾3hCnݪ, ]|`$wCLΨL[K}A2'`8Y`V[dbRSS3 Ǝ9Ԥ5~:ld3\?4| 6&'jrg}AoWka@y19.M?&nRd0)uD:,'[.; X|f %N2is]P/lKE!]/I% 3uyѫ̖zնG1"[ڋm]c9pOdh )a|ĆsK X#%Zv'~֫t׸, eM6 Á.3YVH$[[J^Tj>vŽhdxC|:*?pILw]Rw;D_흜3$.GhYǸC}biW[OKHVIdM4Sv~qbki*Z(KwvZZ=m.ikhو=vn$vu)&}g9"`>zOt .#<O/>X<K( 0wwRzc+H& KLst;̻jY~}@-%jˏmg1à *1iHH&̅%CgwR;Z.vװ=~~fz`rIl 6_V L"XV9_yokm:yU"t:Dog&W >﯄欧]eZ '('tpk+-Mm&Pvg V^ {}7i]%7(y13مIE<\"?>+eʨFP)m&ESѧf;2V֛]L6xz]a5SjZhqhI!\|f7FS ڑ`G=Zl+ih(X9J3w\w5=RTtRӋ.M; qQ QmI$9qeM!s|F{⑂DwbEhjvz{c,I4r)v*'y(Bҭ8c}Q={L'3Su"՝p\D ۠I^SLw7ɪv.nQK߼cG4hA+*,LPӢXt[}i#ϭ4ɐۥޒ׶Hɟz41*!C@cI6=tA8fdxJdI)Nrjn'+0$M9hꉏ<{!8V y /&xX4/dzD~uB`B:9bM~^1~d-$e/&GLLcNs=i.͈X2^Ksc{k>;5բ/53iG!$B=۵.B`lΞ#f`jצ޽ 8&1F`: Emd 4 &ES܍>;sOb:vGg$ ص8ZxoE;HB% ǚ]':k 1%MR.i^lߡ  #âG&jt\sh^X:΋=y!pfspiEbrM8*(cjJ!Me}K^4|MQ#r/8Z5X'yN ` =jΗt":!BPJK2Y 8y>dK3)-*WlGƝ9`FWV/UE@;ߋɞP2E&BKؾwί9:C/ށlqF8?4#2>ɩ߯y~o^*ͅ{v={ވ Rg^ffi~|aIU8װt( z23H性if&,-& M>Lx˖hG/ztCxZ:0mQg8wP_ŻMF#2;/q iW/a`VQT<FX5 dt,Q#[ge [.zz3&KC~>{O>^d E$` $S"{8)7Qh\Lݾ'l^5YhBTSHVO :u`UtBγEu:-jdf< QGN26+%Z-tH x`(Y_HKW]_r`{`CBNgߺƐO9[Z*!яp96"4*_τJƲdFג[6YNtMfJӜԒ7AuqG`8y{㪧ۄ< }B H]=>=X)o)U(Jm>N8Jp^TZ!V3wN睨7ڇ(7旹#wl>;Q=nA㽬Âe#;0~]a @HshOOt?lr@8E% 'qdcUQ3\,e;3hmc*"A+wքIw Z=4#Bwar.!ֵ۲} hb3z+$X;=N' +{Cw0./c߳}r(.y`>9kR*R?bRnV(OmP2s6ܝ;0E+pC-y/VK "5ϗc(@|f> ;PFI{?M:v;:^t3rAsdTJl:<lCƚyBH2Ge~L6LKy*͑Ffʍ|Yq[ E'w{5pڨ)'AhFd9-Y93L:sC):c*Pȏ@0~'T8#G| ).P,=XviFۭ%y݂-Ǽ'8#CaF`>p . tV Mܚ::43KDTVw'ilI3kGQ/D[Ýr[;N$I“~i/dvw+|k%Ky]r|+*D]bT̸݊[}juNJR|h.gp]sA)ݥ3}{ӶxN4(ZyOSD> ૽w_יY%\ ٭6}R>~s|2mwmø~(:}UNeJ"۵J]-m'۸[Gkz++݆W#"YDianquV|,-+n۞۹.}"Kg?6frfs|>o-FݭoeO3&<.ʓlٝ}LC7zNj3E3vEQT23nJ˃jƹ`r/n~q9EcpݞW}׎1oMM=B'm -SGqcHķ([EhMߧG)8TZrX(Kr02R%k[žox+^*-ueN~'e97zu1 ˢ<9.sO /Y1rWN6/$6(_۳FUfb E}XAoKoO𷌃T=Nw(G mWZ1n˯6`𧾫Ѧl 6݋j{ɋSopgrCalԚ|\lEto;e٦^ Ѭlj GJ5 mʺmnOk.?-Ox[^->m9gge/{YGd|l(-]õ߭£ ͢BW|G}C_>cZ:՜q[/i: ϝ+ yPxi<h6N5Y|iZ8bm[X~vιus3z\gWS]'jz=RnEd y1za??d{S1Q ea׮A5)p,WR:1j?3,[1J qˆv| er-bYC( 5v~//deNŻ7jl긠}y^M:F걧qԏ~j|T=}eOg䵲Yj3o*0o׃[6ݽ~c<7O?TZ^ D'y0ќ}?,oQiZ=s}pqh;۹Z?&qG\ldך'']N1Yoz):A1vTge_|z?}5@ݰJߴ,q#9^"c_ 牢eW}v㓥CZZ.ͿE\׊!๤[yq'MƄb酉їv5έ]Yɑ.]lqVk%vn|;.R95%݊u{.U ?- UyOn]7?ލ9_^u_6Gέ\zm+e';/\ŔoعFV.sü)7}}r]_44h6D 9=A_ړTlؒnӛ E=; Q[e1/}JժiUz_βkJEȃ{ Dz{ mFH3LQ}rw+: YGbk\ְ:8qkn5XŭM}w-oVܢ (qVpZ &ssfh0. ]|m$YY= Kpzh.kSݭ^.,g{{=sOD@#A'N=İdpTm4߂{%s+ 9m䶵[ 5?e58.2\nj=8Yԁ"Hw:(F퐇Qv}i@R\~o$z^u<c?ǽ>˂yaSdn44c>eX?]ή;d8m;=Z[st 5Ne`zWgQÞB1QD9/)vɖH))S[9BzU(P],l-O:ݧӺ7^7S Ǿ E1y"vV:m ~8c2y;<ŰYٕ ]fBxǴ\ֵ κ\MbRg]FQֱbX/,7+6콲9zۈ}}v:a牃1B`cAdW68/[rz.Χ_k8Xo1~ݗ9ms?T [}0]tֆkm:tP=]lwGdR!Wq(I6R Vs)N&(Yc#uuom٬Sl$kt\5.O8&b_=i]t!6ʉeU,Mi&LѯTư\b)s:X<(o?ivHa(gI痫+&wxq/cW9';Z}ij7E\F.S;fgn_6Zx-3&cMxg1)_?lq+sQOuf7awp?SLbU>Xb7\ .&wbxruMve[!y:ɻ4hI;]Wc{_dANlyCc}bBttNyitHcb-5%']Ka@65q9*jU%˪yʞ^.X6ӏ>D7X+7JζI-.R! }bgO8^?HvOsŰig}ze O~W1^K~m=H||퓏RwD"q~&bR$fwԑx5.Փ{^NC#UTW{-?Lڋ^&ϸJb|9@~KG">#heK>ώeߟv%>P7SR)Z|b         }}}}}}}}}bbbbbbbbb         }}}}}}}}}bbbbbbbbb        }.         }}}}}}}}}bbbbbbbbb         }}}}}}}}}bbbbbbbbb        |uUǾt bbbbbbbbp zIENDB`youker-assistant-1.0.1/qml/img/zh_CN/using.png000644 001750 001750 00000004722 12312451003 021545 0ustar00saucysaucy000000 000000 PNG  IHDR$:tEXtSoftwareAdobe ImageReadyqe< tIDATxbg-ƀ X@; /Cf3W^2MfVK0'2Lʻ A kSpL 27`<~gb;ooٷQ w? L rKDm ]1&;s 0[WA^&v آ_/8t+\ ~x#"U3> L) ș/6v&0. 0$T-7B+`73C63a)v_c ̨@,| ,lxÈV\{. JoPab`KBi {0 ,} >$8o1@g`7T 0_Ľ ,[;hbOTPqF&X٘@XZ!R& R@Q冧YdqvNf! g*` +X dG@`װΟ~sM|*U?{:BY80P@ &v fo|[pQbhXR@ 6˷(XX._xd~s}ch|m .ӻ4f]510gA j!g,Zx_`ËDY50qB25Zn (SPJlxbld ̒` wyu7qjj]XDr ̊(r qtL0Z mLQK`,jفb`YlQ޸tCae8KN>` gϴgf˟wvnb?t\:)@XY)6Tr3j/|T㓇׸&1Z8={ R/bF~gads3,20@PHŠ?~0Z<oK@MZb7ן2In@)p`-S?`@fZ?`CVr A` !qv^7Tf;X5 7Pp݌$ exCFa@5\;8LV콋"~ٚF C@UKmb.5`/|.񱩅#T*"):i *[ӗy n @\*<' *al^ca\px y:x-ѕ# `uʄq1H*r b;0kY^e 1w$/@GP?p+&vVNppbgAAS]܁3 >(.,tr9y ̲eKgB8`mkVZ[ٟ8pw<~on} Ww^cggz%^ e $`vCN )X?ThPԘiP l %?6&!\!-y>r6`1`>!P Vcg^h ̇Y' \X/el'Ot.{t CGEaqkrCa!ۗ?5&d]amU .` e,~ôk -P+_!q_zU(}=_(C4A6Ȣp~=:;fC0> lÚogXy(5BUX ,nšlf5@RIz&Ԗ'&Ą-+BRBv#Q(q#C4]ңX1!;g[g;Ò;x%HQFNSԛU$%LX_uN`hv\+>E8 1NCR\ K Q ͭIPBq Iz E׋K!9dN>Ƚo *!sxLm"=:_07/ *$A@ ^ J%@΃Ag11cvo+qr0||vk 3-P&Á`yZ8_闶]#9 <,@X=Q٢˟._D=|.p1Ch[7 `'{5Tw[*}e: GTnW<7/P䩛״bvQSTVe|E^U7fAc7 _+z~4T%ydxTM*?T]?~ck+IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/AEXEA.jpg000644 001750 001750 00000011705 12312451003 023631 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     1 !Aq"2BQ #$aRS& !1AQq"a2BC$4DV ?M1XM}B׆#E0MGՅ50uN)GD~9&G.C 2L5LT[`4Pd](Dx15MQi4@_f95LQatE0M}?Lu0]Cӻ Q2_8I˯Œ S 1#@ >i>? MS}ZM1yP(ل)a0Mxb;$S}X]L_o3#{1D˜l݁S '_viW%ev̲rN:jUo;.0+S7vܛ\߉y,`T'o=cWu-VJ{X 73%ao[ qm/C @ÞY5}rфc9"~Y/Qrv"uh\6: nQi,'N"$ ݢ115LT[`4Pd](Dx15MQi4@֚nݯ&lMuF[7n)Ok ރR/5Z3]%MUHs7 z[J6NSO~#fqKejR T|RviWwJ[p{Q8)/ӌvܟh?FJ?u=*nPEۣ!UխF-EfsꮓJ+!m,4]%e5UU) {B>6&U'N/Bw:N=O4QP)/`vx={Co(n.2{WV5Mnetgh@E0 ּԎrTM*!n1b1W6%,-ڝX٣^W%E@G-1/;y )}JlpDZ35ē(>ZGtvlQHVs8rVDR{gg1 /)9\늳~ N#+Ư7!⍖ yB s#(d'qLsmڥS4Ͷ[.C]F b F-y/xxy{rrv=v<˦+O>ka .y{i1Hߗjb`kp{ztXđ%U+TdhR4H'%$6k;M`swB-ۙ::-c>-(s oVr:Pv8i Qێ\sI>[1n"ҳ*›" #n\_>RpKLG>a_ TgKhkͷ>ڶ={o;jOgnE^.#UD:Gq}n-Te2ȁ&5ȶjH!_"Pjֿ:FQ70ݹvÁ\ԴTC?-sፙ%MAUݝ߫+s]z6L)#Vܗ?*V\_2*1KJ*ڽjpG@LO۪޼γן -z<`B1 @`\8E[Uqrtŵ 3kN3n%!Tz#86@] nY[ζWUg懕iğ~a1yڏƼʜHrlZ,5-Kp LC1:/m?gIkdN#k"qċ mYT< R9َ{9ZV(-Zit00ûulΨUL(\پņY# 8 Tdwv]F\fKn/n2vTAoZ98Dv^Q7úeܶ?# zCgo:`keK\̽8;1__=|m*y:[e.!knU5FttH@MBGT _HhUPT tOusAāCȕ+>ŝ.ss~ܜթpqqpۭZz?"*RRgs'CaU_{ ̙ڥUDjP[xp&yQȼyfA>EQL#yy4 6Fw Ų0=A1`~Sk:d;[il3 8 xkە{n~R>̫ʡ=7Z@JGaW:#?/L#̉\kkokWmA?F8ݼV%'JQ[9V7rlD*_7Ipߕjp^a:ʁܫ1giY!)Vcwd{|xpWNNK8Ck }G.F[MaQX-.9??⯤Z5-Kk MzʚT#uԵUn:DT >er[șM/ q.ZnZVmCx@Mnu@e8NRu$tS0=II=*tdO2@3e IpWG'dn-ʺv%F7'K+IءzÝ Z9bF=<}ܵzqƕ.K2,l6 @v ŗPq+]/}؇$׈aFIrL ˠz݅4ȟo&-&rk0&1)|0$tG vtLP(/}؇$׈aFIrL ˠz݅4ȟo&-&rk0&1)j>. 透 zwaJ:&Kv!29uQa`0ܓ"$raG2'ቪoyouker-assistant-1.0.1/backends/youker-assistant-daemon/src/softwarecenter/__init__.py000644 001750 001750 00000000022 12312451003 031624 0ustar00saucysaucy000000 000000 #!/usr/bin/python youker-assistant-1.0.1/qml/img/logo/Manufacturer/MICRON.jpg000644 001750 001750 00000011350 12312451003 023771 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF] 1 !AQq"2BSTRr#$4a3CDӔ1!AQaq2B"$R#4D%5 ?8W'~&Ԩ;WIt jQ?ޫ5C$Tڔ-lLTڔb-X#?.%Qv.%0UJsW;_+@#u(R??4 Q}WˀY+V?\ Y*?07ISo7k|RQ z*$rA.1S?H>yp ҴB=3hSL6>|RBn(īH\u(G0_.0U ϣIXiZ!G*-?k h@:#2S:` #ğ4(dpZ Z]/oĻ~bk8t=bڗ u3F-y>h4ˀvA>;SewT`GL}@ә+_/ɅE.o y0. 8Y{y1Y{y1Y/x,)Ef4qQؽ6D\ qvRT5 lmiDEuSQy&9+MW% jÐ/ Z SW8dD%_♍wnu(`25wUeJHzjVTF+9Du% |tS  gԛU[ura7wp֎\ԝZQ{|{"jaԫ-W*21e%ktSy Ϋ6w<”ҚbqՋeIkWEUu¬IM$OC F,1V \nF4=JqDk`ZC[+J&_ݳ7g_]YWjhhBM$h':+PztHTsB4@vg$ⳏћjii5ә6?^#$zRψ7+Ki9)7DO>DlQXfy lp >t#7a3*jrtls9Cv3⁡:jÅ#>/ͲN֦,^kj[!aI(y, z{^]zyq D?8zV@|~S( lԍ“L֞1hĥ3[BӞ߇WKqo(eĎȻG0&ҽsrBW+w$2<`.f](YIgٖ )=)jRNto5}In[H©;Z&W5!6=$Ep vuyo]Gܿf>]p;o55޾ v8mpҶuou[~uȝSCREke RUGH9ZQ|9di@8Q]?{KvMҁ.,p{ܳ5狍r %WͲ5k>6I#|?] ,dK)ShӆN9ԥ.h4G@̝Z8 dU `:Xǧ\ϯuʘKK'S as UU/mU1 >7Ţ+MXh~'f:ަjCrNBdHpDSu~ZrϘq[GGUn ڴ0Ӌ/^]d_l53KqvĂ` \|_BpvA~UmeMz 4ItI#*;t?D:of\+u“b;6ٝX=ڻ)WIJN˘KA+b^ԏHs gD-8G_JtUc Vɺ.a;~!$zh89畜~QCƫvz;E zG˛˱5Է&^&p8ܙcem\KJ8fsVwUH+`FdJDb` }Yh.͌& p~\(Oo[ Gb^JeVd\>O<v](L):K4?{`ENɚS! _X~>w $#%8q\3HU8 {O@6Zư (}UJŔ/Bb\HՌ[B=IKԱ?eՓnXQH"E,ʌ ^n` 9tUU!=ι=5 }]8|-Iդb$ R|=uOڊ֟mlukbRe +djEu`wGQ+ HlJeg1,Wjmcӟ/FlE]/VܨiZL4l[*}ݹwŢ^%hJ*t=O[.x>j60>V 7fn_g A^ڏz[_.mTdfmXc8ʏ$0e92J;GT:V~Z ]MpO'!9m-5c,%Rf 9fkX)K3]jE3Lm)JQTsnKUſgԿ$,Dt`F%ɾes^_kwl@o{S6bMS=.H Lhuv0%ň`yC f .hlPA,(Dy~L|ZMrma c&LI`G6v)dr #o(aD ` #`wŅȞ/ىoIM!Lbɉ4Lh0"&ޮ?0]”rL_!dr (a`0,Arxޙ13M_youker-assistant-1.0.1/qml/func/common/Label.qml000644 001750 001750 00000000161 12312451003 022103 0ustar00saucysaucy000000 000000 import QtQuick 1.1 Text { id: label font.pixelSize: 11 color: pal.text SystemPalette {id:pal} } youker-assistant-1.0.1/qml/func/settings/WindowManager.qml000644 001750 001750 00000055077 12312451003 024216 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Rectangle { id: windowmanagerpage width: parent.width height: 475 property string position_mode: "" property int wheel_current_index//当前的索引 property int wheel_default_index//系统默认的索引 property int double_current_index//当前的索引 property int double_default_index//系统默认的索引 property int middle_current_index//当前的索引 property int middle_default_index//系统默认的索引 property int right_current_index//当前的索引 property int right_default_index//系统默认的索引 property string actiontitle: qsTr("Window")//窗口 property string actiontext: qsTr("Manage Window Manager settings.")//管理窗口管理器的设置 //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } ListModel { id: wheelchoices } ListModel { id: doublechoices } ListModel { id: middlechoices } ListModel { id: rightchoices } //使用云配置后,控件状态根据配置发生相应的变化 Connections { target: sessiondispatcher onTellDownloadCloudConfToQML: { if(download == "window_button") { windowmanagerpage.position_mode = sessiondispatcher.get_window_button_align_qt(); if (windowmanagerpage.position_mode == "left") { leftbox.checked = true; } else if(windowmanagerpage.position_mode == "right") { rightbox.checked = true; } } else if(download == "menus_have_icons") { if (sessiondispatcher.get_menus_have_icons_qt()) { menuswitcher.switchedOn = true; } else { menuswitcher.switchedOn = false; } } else if(download == "titlebar_wheel") { var wheellist = sessiondispatcher.get_titlebar_wheel_qt(); var current_wheel_type = sessiondispatcher.get_current_titlebar_wheel_qt(); for(var i=0; i < wheellist.length; i++) { if (wheellist[i] == current_wheel_type) { windowmanagerpage.wheel_current_index = i; break; } } wheelcombo.selectedIndex = windowmanagerpage.wheel_current_index; } else if(download == "titlebar_double") { var doublelist = sessiondispatcher.get_titlebar_double_qt(); var current_double_type = sessiondispatcher.get_current_titlebar_double_qt(); for(var k=0; k < doublelist.length; k++) { if (doublelist[k] == current_double_type) { windowmanagerpage.double_current_index = k; break; } } doublecombo.selectedIndex = windowmanagerpage.double_current_index; } else if(download == "titlebar_middle") { var middlelist = sessiondispatcher.get_titlebar_middle_qt(); var current_middle_type = sessiondispatcher.get_current_titlebar_middle_qt(); for(var n=0; n < middlelist.length; n++) { if (middlelist[n] == current_middle_type) { windowmanagerpage.middle_current_index = n; break; } } middlecombo.selectedIndex = windowmanagerpage.middle_current_index; } else if(download == "titlebar_right") { var rightlist = sessiondispatcher.get_titlebar_right_qt(); var current_right_type = sessiondispatcher.get_current_titlebar_right_qt(); for(var l=0; l < rightlist.length; l++) { if (rightlist[l] == current_right_type) { windowmanagerpage.right_current_index = l; break; } } rightcombo.selectedIndex = windowmanagerpage.right_current_index; } } } Component.onCompleted: { windowmanagerpage.position_mode = sessiondispatcher.get_window_button_align_qt(); if (sessiondispatcher.get_menus_have_icons_qt()) { menuswitcher.switchedOn = true; } else { menuswitcher.switchedOn = false; } //wheel action var wheellist = sessiondispatcher.get_titlebar_wheel_qt(); var current_wheel_type = sessiondispatcher.get_current_titlebar_wheel_qt(); var default_wheel_type = sessiondispatcher.get_default_system_sring_qt("wheel-action"); wheelchoices.clear(); if(current_wheel_type == default_wheel_type) { for(var i=0; i < wheellist.length; i++) { wheelchoices.append({"text": wheellist[i]}); if (wheellist[i] == current_wheel_type) { windowmanagerpage.wheel_current_index = i; windowmanagerpage.wheel_default_index = i; } } } else { for(var j=0; j < wheellist.length; j++) { wheelchoices.append({"text": wheellist[j]}); if (wheellist[j] == current_wheel_type) { windowmanagerpage.wheel_current_index = j; } else if (wheellist[j] == default_wheel_type) { windowmanagerpage.wheel_default_index = j; } } } wheelcombo.selectedIndex = windowmanagerpage.wheel_current_index; //double click var doublelist = sessiondispatcher.get_titlebar_double_qt(); var current_double_type = sessiondispatcher.get_current_titlebar_double_qt(); var default_double_type = sessiondispatcher.get_default_system_sring_qt("double-click"); doublechoices.clear(); if(current_double_type == default_double_type) { for(var k=0; k < doublelist.length; k++) { doublechoices.append({"text": doublelist[k]}); if (doublelist[k] == current_double_type) { windowmanagerpage.double_current_index = k; windowmanagerpage.double_default_index = k; } } } else { for(var m=0; m < doublelist.length; m++) { doublechoices.append({"text": doublelist[m]}); if (doublelist[m] == current_double_type) { windowmanagerpage.double_current_index = m; } else if (doublelist[m] == default_double_type) { windowmanagerpage.double_default_index = m; } } } doublecombo.selectedIndex = windowmanagerpage.double_current_index; //middle click var middlelist = sessiondispatcher.get_titlebar_middle_qt(); var current_middle_type = sessiondispatcher.get_current_titlebar_middle_qt(); var default_middle_type = sessiondispatcher.get_default_system_sring_qt("middle-click"); middlechoices.clear(); if(current_middle_type == default_middle_type) { for(var n=0; n < middlelist.length; n++) { middlechoices.append({"text": middlelist[n]}); if (middlelist[n] == current_middle_type) { windowmanagerpage.middle_current_index = n; windowmanagerpage.middle_default_index = n; } } } else { for(var p=0; p < middlelist.length; p++) { middlechoices.append({"text": middlelist[p]}); if (middlelist[p] == current_middle_type) { windowmanagerpage.middle_current_index = p; } else if (middlelist[p] == default_middle_type) { windowmanagerpage.middle_default_index = p; } } } middlecombo.selectedIndex = windowmanagerpage.middle_current_index; //right click var rightlist = sessiondispatcher.get_titlebar_right_qt(); var current_right_type = sessiondispatcher.get_current_titlebar_right_qt(); var default_right_type = sessiondispatcher.get_default_system_sring_qt("right-click"); rightchoices.clear(); if(current_right_type == default_right_type) { for(var l=0; l < rightlist.length; l++) { rightchoices.append({"text": rightlist[l]}); if (rightlist[l] == current_right_type) { windowmanagerpage.right_current_index = l; windowmanagerpage.right_default_index = l; } } } else { for(var q=0; q < rightlist.length; q++) { rightchoices.append({"text": rightlist[q]}); if (rightlist[q] == current_right_type) { windowmanagerpage.right_current_index = q; } else if (rightlist[q] == default_right_type) { windowmanagerpage.right_default_index = q; } } } rightcombo.selectedIndex = windowmanagerpage.right_current_index; } Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Row{ spacing: 50 Text { text: windowmanagerpage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { id: showText text: "" font.pixelSize: 14 color: "#318d11" } } Text { text: windowmanagerpage.actiontext font.pixelSize: 12 color: "#7a7a7a" } } Row { id: titlebar anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 120 } Text{ id: showtitle text: qsTr("Window settings")//窗口设置 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: windowmanagerpage.width - showtitle.width - 40 * 2 } } Column { spacing: 10 anchors{ left: parent.left leftMargin: 60 top: titlebar.bottom topMargin: 30 } z: 11 Row { spacing: 314 - 16 -20 Row { id: workmode spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { width: 160 text: qsTr("Window control btn position:")//窗口控制按钮位置: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ButtonRow { exclusive: true//控制是否联动 spacing: 134 Common.CheckBox { id: leftbox titleName: qsTr("Left Side")//左边 checked: (windowmanagerpage.position_mode == "left") ? true : false flag: "radio" onClicked: { if (leftbox.checked == true) { if(windowmanagerpage.position_mode != "left") { sessiondispatcher.set_window_button_align_left_qt(); windowmanagerpage.position_mode = "left"; } } } } Common.CheckBox { id: rightbox titleName: qsTr("Right Side")//右边 checked: (windowmanagerpage.position_mode == "right") ? true : false flag: "radio" onClicked: { if (rightbox.checked == true) { if(windowmanagerpage.position_mode != "right") { sessiondispatcher.set_window_button_align_right_qt(); windowmanagerpage.position_mode = "right"; } } } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 anchors.verticalCenter: parent.verticalCenter onClicked: { sessiondispatcher.set_default_system_qt("control-button-position"); var default_type = sessiondispatcher.get_window_button_align_qt(); if(default_type == "left") { leftbox.checked = true; } else if(default_type == "right") { rightbox.checked = true; } } } } Row { spacing: 314 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { width: 160 text: qsTr("Menu with icons: ")//菜单项旁显示图标: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: menuswitcher width: 160 onSwitched: { if (menuswitcher.switchedOn) { sessiondispatcher.set_menus_have_icons_qt(true); } else if(!menuswitcher.switchedOn) { sessiondispatcher.set_menus_have_icons_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 anchors.verticalCenter: parent.verticalCenter onClicked: { sessiondispatcher.set_default_system_qt("menu-with-icons"); if (sessiondispatcher.get_menus_have_icons_qt()) { menuswitcher.switchedOn = true; } else { menuswitcher.switchedOn = false; } } } } Row { spacing: 314 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Text { width: 160 text: qsTr("Titlebar mouse wheel action:")//标题栏鼠标滚轮动作: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ComboBox { id: wheelcombo model: wheelchoices width: 160 onSelectedTextChanged: { sessiondispatcher.set_titlebar_wheel_qt(wheelcombo.selectedText); } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_system_qt("wheel-action"); wheelcombo.selectedIndex = windowmanagerpage.wheel_default_index; } } } Row { spacing: 314 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Text { width: 160 text: qsTr("Titlebar double-click action:")//标题栏双击动作: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ComboBox { id: doublecombo model: doublechoices width: 160 onSelectedTextChanged: { sessiondispatcher.set_titlebar_double_qt(doublecombo.selectedText); } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_system_qt("double-action"); doublecombo.selectedIndex = windowmanagerpage.double_default_index; } } } Row { spacing: 314 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Text { width: 160 text: qsTr("Titlebar middle-click action:")//标题栏中键动作: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ComboBox { id: middlecombo model: middlechoices width: 160 onSelectedTextChanged: { sessiondispatcher.set_titlebar_middle_qt(middlecombo.selectedText); } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_system_qt("middle-action"); middlecombo.selectedIndex = windowmanagerpage.middle_default_index; } } } Row { spacing: 314 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Text { width: 160 text: qsTr("Titlebar right-click action:")//标题栏右键动作: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ComboBox { id: rightcombo model: rightchoices width: 160 onSelectedTextChanged: { sessiondispatcher.set_titlebar_right_qt(rightcombo.selectedText); } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_system_qt("right-action"); rightcombo.selectedIndex = windowmanagerpage.right_default_index; } } } } //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar showok: false height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } youker-assistant-1.0.1/qml/img/weather/n7.gif000644 001750 001750 00000005201 12312451003 021354 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2PЈֺӧ˺ܽπȪIJɾҹ܇Ƿ.PŘ/O5VŸлκ͵-N1R6Y3T4U%Be+Kq)Fi-Ms-Kq1Qx1Qw-Jl3Sy/Lp4Tz8Y2Pt7W~7W}9Y9Y7U{:Z7Uy:X~?_atsɢּ̭/O3U1Q2R/M3S6X4U0M1O5U8Z6V2O3Q7W3P8X4R;]9Y5S<^6T;[7U8W"Ac!?a =]#Aa!=[6R&Eg!;Y+Mr&Cb%@_.Ou*Ik/Qv(Ee0Rw1Sx2Ty3Uz6X~5W|7Z6X}7Y~(@\9[5Su6Tv8Vx)?W5LfUh}ã/M7X4S1O2P:\3Q:[4R5S6T:Y;Z>`<[=\>];Y#Df];X[5[7[}1M>Z!,00u *\x P]ŋ3jcuVuA&κ(S\ɲeJu]mRƕ͛8s3\!PѣH*]iWk%իX**5v5dMTC$۷pMMYfiDϫ7b у^I|ͬǐ#K~GOY*β!Cz3d-;rflZװc~u>rM >z!3ظkQNЙi> O8q܅j Ν;Ϋ_|b*~qVx\a& w2霁 plAsHsa #aˉ("t`C:r`3r 3("- r-܂䒼3/H2<0C H #p3s祅첋/."/D؀y@RB"У鯿K.2.,tO(x AFB.+B.l* T[BڊA-P !t!k!2ÆJX2)C*<479!O#E< E lqƠ2v`#:$)+= `k !l$h(52#1W3!HHa@%̊,rI?| A@ !E$s"xG(z><}݂#C4|B7 7G`N pt87,޶,HB`8dLpsd~zH/ {:a|rH03 @8Ȧm  / <0/L.[x0)}V =o; `s 0f B "0_``Bcȡ*DQ2^  &`x@m8$~A e xE HF1 | m ~8u91lA[qDCNP1a0!6`@Q  A`1D0B"Hfؒ%3D"B'Q\$BȠ} B<ؼ#f@QpF3`b(B0 !Ng<vE8-#}`3  GD7API,3IcJpA'! fP(!! HDCh(AKP4TRhHИ"1#\#%Єh@cP%&S$0b FSIĔ+m4Vp"b=,SXSkЪΐ k4 0+Va:'T ٨D5aJL@ֻbx] N?J l^['TOF6qrx%ajUm5p#tAh!vnp?K"G$Y:7?K`ֵ}n&;LhVxH!bp6^w G)Jhm~3!HC R"" KX"~{38v{j!cx Ű1L ^x'/G mp T61K @6Ѝ8?'m` ۠Ƌ %XL258A ` A^r,m( [Č (`^c@=d0bD Lt Ԁ; ۠=~;X PX'Mi&SAU8~,N{ӠGi4o(*Js[@u@;youker-assistant-1.0.1/backends/000755 001750 001750 00000000000 12312451003 017111 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/icons/gray-hover.png000644 001750 001750 00000006416 12312451003 022617 0ustar00saucysaucy000000 000000 PNG  IHDR_=O pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F;IDATxbܷo4L"˷o2G?ӧO &Zbܷo/_BXHq?bܵkGGGZFFFH~&@Todׯ__r%V"9kM3 DX~@K߿!n߿]FKԔ0om&b၏h < vgvT56fu?D| 1vfl'3* +[`/LԖ 0 ՐkdlR Yq8M Iwb#"H/Ic qI=KK\۪]ZL$XBWEG̛8ϟ!,ާV?3ݙʢӒ zhXHwП@#tLb3$Fi_0N:@FD7&M\3}I_0>hH]PNp_W.y7ʛ}j>#= Aѓ;RB"noࢤ&#2U:tٛbj#LH.G=sR+ErN3uƼK .ķ#Pt@9NU 4A~?y=OgyFo'Шn !?Q@V/?r^J@'i)UZD^jTIœJKo" ^}WУW$zPPz( 9UA&83ڢ- dgw?~ YPO'=$-P[LWQk{i5DI"aCQS\XcH/.uyCB+Ҟ, HVX$EJ5G?c\H$`1KY8_ {&e>sT{Y$lBe,,Nq>b4)ˊy|}~f~*O@)3-PC n<26UWa+Uig8 Xy'8B3S#7[-50c϶CTHC C"!uFFmHNl_B< dc]$9[?{Y^UKSQǿ$f9 A^L ^X(z_ w2m0m׺smpdw,{vݝ?fl|v$ uY ]^bS^"MӅnoR]-ߨhotc qy?~Hf5ԄO1 śXH)J9\! fnY7T'P̦T!fq3BNmP0CǑN%|&\fIֹc-h:yDNE2Ѳ^[NWч8q!U"rUnMzW:M ]U@'w,ꂏ簱 RYU{Ε?[r#Uxn3q,_EC10P6M\k}- dqIÝ諲OEbEK4O6C3yIXF^3iFʔnYnJ]n݂⑗Ng2VF_]݂wO/s؄.LQQO4A(}nO2.S+Y?FuhP/"G(Ʒu+෨kjff*羹b*6Ɩp~Cwhe9'XKg Jfɝl.Y$9T; +I4ݞDs~}T؝K- A 2ǛygW~AooNGVWxĦ&T6;zڎ;;RdK)|Ff\VT:hH]z |y9@͕9~ΠTߧ˘G\2*#?9Wo㝗XíeH&p9y7dOq7ms:JM鸚z_G~tFtK5TєAUPw]l&p6ڄR |أXfJMRgm5'y7J*-&x:|?Eަ‹jD_aǎ.Z(3E8N}oGJKKGM*3*"94*HTIm/<+*O^ϮDcTqh jI|YԂ%x X0o1MQӂBiy-A uA|]3lse0Ö}ܷe,bܲYdɜ:3QXP(- }ス޶ /V98Bd'r\3eֲQ'*4QeqWWc1s,{:wt_"pYĭ]c* @8aD$B~lw[2Z3,˂| iu>tDׄj <ݐ=5`PUCg.a8&%9)*_'\`EB|2s~_>IK-H m9eeɤ].!9iWݵT#ϝ.7^X}5'P`J+!_dpxC3^0.@o–XNja yz [sE K+vMKÝFn~7B3#CCKݜX߀u]7/yH426!n|=#t%9ATf; y?{z`0aB:u<#xqU]q#|&VGA;">?va5cc3gN\l#9pJu]_)=6.Y,F-M4K8@ ZA6",o5Eml,VVXaKxk ウs"3ޡW\H [yQKTH|Ҕܼ qw`Ig!ӜeK@>'مP]6!bh9p*,cHӍiNKM˺OłqG}KcL ϱ1< L lxDOf)dq\4{,.6¥vX͆`48: `TM4,8vǚg-8p8le%dᑳgӲgpV-](QY:J;Xnᄆ=ſ19# eM48"]0bul,iY&-LO}B),ɁM)9v?-?]4{ K++E~ns'>kSě i97%AgR|=uUK 吨8F\ 4ITyc`5qaE8YWo,(52S14VJ\ذ-Yn33A&~U1Qh\8_aɖ,۲ Pf: 42[NsL_:ӯ3v M% %J{vj-نag4vVΞ{ι{-P9~=`9# ?6.bR+E"N%ȒWn>QIZdo h_#.?&'&%SWNıo uUAtdJUS"FT E E+MRM "/{k˥?BԩIE'.4bҦZSX`tt^E( 2˚Ns$ޒ16#˸4҄ 8Tj(BYJ4Ӂ$! -o F2a=x6k&66ȕ׮( !!{ʱ{ sIb xhAS h[ܺߐM^즚nu˫Q\V)~ha6ձ, VTd4wሞ_u͒Gw+?/`ԃz4b%Y8ɠ-=(_)-"_z-}o`Jy4-]x T^SWƊKQ^͊c#J+-ћΎ[B4" :\&c2SƾKC#99yo yBHOUEؼ-s"'BEA.(;p)>lY8X\"hS052(sc?P1^(-'g>LF&rNԕՐzfx|~5! Nի,YҙK;.fJa\J0ham.{gfχ+5WV/AOO/9E(p~ejntĀl-w[nś(N Y_=S,he tˁ%^ǀ<]$',KJy?eTTk!$ٶ#ix@ie5?Jw@ň=}0gZadS.(,z:H%X#&\ʨڥdF]ʕ V{Ahޒ3|&Vs-m̭newcdSnJ{܂ n.V- $:uhVwEePe8g8Me]q U|x89u'.Ֆ{f=~ ۳}!MK._sOLw1<CHc^rG?9Lf]c<2i)Ǒc'd~G@>"Y.Tޗ6pxuu8L)^g3ft0:U5(g~D&FqE}~Ź#+鳰]`pWdJqe r=.l/@/*CyjJ Ȧ"\@7Yw*Jqv'x51䋆Tr֛G;zp-kb1ב 3s;}p;( 1MY7mBgG; lE bsc92X`6mlBv,u5 m1.Ds3tyP-JIb>O"gU^UC-kXllō.YGgho`:kcw :U@x,b}>Zi?`EY+yo/___ w܋:+d@㑃N_[˟ifчeM4 Ʒ=OJInNwzDNٺi.pXpuikmE~^,l ql` .~!8r\E$FÏlˮQ]r-x޵`pE2hZ[d`hmQ[Q§Z/Dt+Kq#-Ʉ",epb R3X [I{W#JѩOLOerhG_Q,:5c'&ad.bs›?؎W4G4\o V7t!ft-g.p1]U&K9N6cq%"Hi$F*3:0G\V{чے 4!KYU[|jO#PXˣeb#R2`\vFSE"S8W^1jmC.9* #4uQ@[t*%lr`xKt? dՋ pi[8,>,_P _K( < iX+myh~%>)_t#•k+-r>xnjt$+.Q \r)>-6gt,M\->usM6mQx \*\=kxH.YlJ x E#D=Lɇ+,?7gG9>J ;5'Z?69Ox4zb91sRIENDB`youker-assistant-1.0.1/qml/func/common/private/BasicButton.qml000644 001750 001750 00000003156 12312451003 024762 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "../behaviors" // ButtonBehavior Item { id: button signal clicked property alias pressed: behavior.pressed property alias containsMouse: behavior.containsMouse property alias checkable: behavior.checkable // button toggles between checked and !checked property alias checked: behavior.checked property bool activeFocusOnPress: false property Component background: null property Item backgroundItem: backgroundLoader.item property color textColor: syspal.text; property string tooltip signal toolTipTriggered // implementation property string __position: "only" implicitWidth: backgroundLoader.item.width implicitHeight: backgroundLoader.item.height function animateClick() { behavior.pressed = true behavior.clicked() animateClickTimer.start() } Timer { id: animateClickTimer interval: 250 onTriggered: behavior.pressed = false } Loader { id: backgroundLoader anchors.fill: parent sourceComponent: background property alias styledItem: button property alias position: button.__position } ButtonBehavior { id: behavior anchors.fill: parent onClicked: button.clicked() onPressedChanged: if (activeFocusOnPress) button.focus = true onMouseMoved: {tiptimer.restart()} Timer{ id: tiptimer interval:1000 running:containsMouse && tooltip.length onTriggered: button.toolTipTriggered() } } SystemPalette { id: syspal } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/KINGSTON.jpg000644 001750 001750 00000011147 12312451003 024242 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !AQq "2BR#S$4t5ar3TU1!AQa"Bq2#$R4 ?M\Qɿը*B`5D }&6&$~t5#HjE 1`7k,(]f{"}ޟ[5\ZM.G&V5 o֕&jrJ`< <<%A4T]!T3L4Ɖݬ9w=Tz~lpQi7kZ& ZTJ`ѩ)ohOʘ.jJrLOXR9wQP0&vˆjGR'5Uyo˜kEM+{[9 rD|tX9+~Ʀ7GUʁGr ̾o*rĘZH1 1rį_nICbtsh7m1ksb#s [YJ1HK8w&|GSy"kқVOmG;4bEoٙ\mFc#UB v|v ^\8 | kSFzwNMGuggma2"Efc#٦W"9@V4F+QvoS5|(D-rsZSJRRg;m@J"EPM{-zU~#CF?tPpUfZ%CR9CԈG^QmZX*׶*j\@xBEi hyRUTMܹt3;Ȩks%Ÿ^wgwjl-U0x(Js}}J1ŽQm~vq2:K S qqԒG1~J"d#.@4Cmd xkDNsZ2|1V)M +i4$YVP=ɌOn[q TS6>LNwnنw~ڒ/٤9(h@"M$]+VYEa+q\TS9=8\{ia/+Ai?b%Bs*򤼿k'AmL䄟Ӧ sVR(oVi}|5R3"+ S ljX.uΏߏtx};/wܜ?=.+?g|zQ2]dw5bQcY 5jKMJ$N华 P:Sb@?^G}ImwVDjȸ%~}3vmy'To!s̴{6r/ A"dՐRs{wFbbtl{\қHUz:TU٢όI[HP!TOAٶ]GEF0 (=Nx ]uv[.uӷ}1}sR17WW7W#ᖖy  贺aRXhH˖|t2$A*lK8 _Q lN9aLD(p3A/m@r #f] sg uPZ oQ^GwmPc"߶%3:(`fUIͷ9t6cQ%9׎_ijia44NҰkJ2)T 8ʆ. |.]Ɇp̶=p$3oӴ#mƭ_LqjܗJݙ?ފ Je fjQ8t|ƚJ1 HfZ;W7`n3UOU(}+{Nf[]7 w!3U! @>^ d٧N'?YasJɦc=kݏ1ajM,\Y}" $E*B3[doP:l=`OT?}׽7 cU fH+ʇ0"$֬%,&Mv 4hA05Ï $V!TqUdYG9r{<=jU|0:Geu=ƸYKr-[jHwpfҪ}"&2}_bjɧ.l/vb#yϸYFL5+ d5(*8Mt%z Ag-W[?Ǝ/u=p>- u[U⼜9}$arw܍˸3s˟3Ȍw?UpA_pO0!t}×v!4/qJ'iV˔htQ/k]b PKMDFL@tPć9"YX2gn`#1)t:EӽUOO⺦0aZ⥖~|Q0J]l#2ylYtzDkk-%!'p%SI(#Tt!SeD3dGZ+rcJ, 74D)a΅;K * J;DF18"1Zh$qBҮEy tN̝ϒڍׇU >;p&uv `;[6MBh,Lڮ m";:3BcNl6h/d'R{c}e-7k6, 4&sPU7kJLx59%0Mm SMINIk*G.Ԋ*ScDnXQHD?Fj(\MATjѭ*%0M7y'Lxxy5%9&K٬hCR(f NiYaDr@{5#ީ٪࣢/!^'ˊh}I>ˊTvpIKX>\RyL=G ~z|BS~SC,ς9hŧU~ou$ Q0Z4T?UO}bKP%G-"mf?R j4TGU CBړpy*~/WoTFj/youker-assistant-1.0.1/qml/img/weather/d8.gif000644 001750 001750 00000005221 12312451003 021345 0ustar00saucysaucy000000 000000 GIF89a00Ҁ׼݂ɰǸδʶ߈¿ѻ䂍ɱȶīٸѨմ9qѱ3p6q:uyB}GLL|VJscdffhkqowwvuy{Z~ゲⁱ܅lԋ'[2t3p-d4r3p4q2k7t6s6s6q8u5n2i9v8s;x:v9v9t8t:u;x;v=z{=z=xwҽ@} *;w"|rCnHj|X>Š {w#gG}{vB$B$'ҍ?hM~h"$O"HިF`#4r"xFꭷB, 7C k,_(ɇ ȇ#JRI%4j^ t $X⇓y 8$\R%TDg AH 7A 2ddNb%\bH &׀@pe\B(X 5ǙJX JhF$S>P>| A`3ppfɣ<ʨ'd y8qr-AzVhz&0B 6!zKTIdb@C| `B+A-\`y@Rk&ZD%$h{' + -'0l'.G RBpdz B .`y3(  hCvPl0(,A /h rѤp3jB1BW`76 )|=YCf*1 ºL } 6cߥRp .@ 0/;3V096Λ)2ܐ'İ%\ծÞx1JTo}*a s@mr܏n7<?ݞէ"x/'P^\: d@^+^AVL p%<2 VO)( Vȏ`+PZp)@Yȡ8Q;O ȰM@YZ"W|8'bM`( 1&hE Md8D Y gdGZ" Q,hZHAp,NaSOB+`A Ubhc+p 'b*)(\XN 8,@|" e.f\В$>AcR4y *ri/ɋ[8o1 ^ @$nqoR3/zs H.O] ?Mutg0VD}|B@:@]X4VZ0i0|A (Q'"50S]t?aJbæ@1V5 U5F,> >VaT+XAV[kVֱRU Ѕ2uSUWbh+XAعv)b! e,am [86 Ȃ0*Y:#B2B{ e~jWѪ^؇(de3 f(- +l[Hry g4`&z[i,B3[h G6 yDE<[" $/p7ԀF~A rC4xՠNR;4Am,7a Sc^bFq9mfj o8Ʊ5ËqІoLeot!x6$k# Tr.gC`=`lXCnpsl=wrs6/tEZF6"-}tN{Ӡn@>эRc gMZ˺cG>1T;youker-assistant-1.0.1/src/image/upshiftZH.png000644 001750 001750 00000005044 12312451003 021645 0ustar00saucysaucy000000 000000 PNG  IHDRt fx#tEXtSoftwareAdobe ImageReadyqe< IDATxbd``b%2 H g%c``d3E X˧p-Iӊ _?epѪDQŒ@Uϐlk&K#Я}bAQ'uˆ(aop4e_/XV.FFTqE\J _*/rϠ% fK2{X`(GPzK n hBeQ[1T*l_q  bez/@n)]PtQSo-;0񟁓;0hecb?7NsSﯟ-`u%#1JȁG>Lcbz&A{Y,ҿbsrAå`C;eyЋ!t:L/0o'"x<^&:A_AJ@`qN9  b?g`dd(?4e>闔0 c ʩ )!.UGAk -`papnP4g[VWM9dĐez- & (ypb*pg6 G@9=  ςed#poϚX./0e1rWKoQ(i1v%c !P1yI%`<&W?0Y,cXt2 b9ӟ`1k,N|Ǘ L!%`34-za0>8FׇL3g=({@*X=,@P y7Ǹ߯k_f5a7 ,@20r&cY׏X~7o23H5r=9_| :?d``vZWJ`+7s7ދc`+à-o-A@ÙK!lZ{ q - ' 33N2dXG O6m0@]7((j%ޣgx *;} ̳`3#Q; h$ i:< jZO 8Fـٝr3<b@J@Yyz/B᳏۽[3M7A]zvFSjaͣ`pS kB (hPà^ rYڝB4ܯ0> N 0$ٝpBJ]H&V@ X>%C6`_c<(q< $H/(X8g/Q׈G#74j.024<1zN=dfOFx n * ]ZKLa}A[4@5"ÁT 0&jxӋpO&D"z@Sڭ "ІNҴ_?|3uLԾδKeؽ l,X3[*Bژ1#L"kI =Jp)Cvnv( amNA*M ~*2iPxm_fތ=f!xC5Q]W;ǯ,6C>o9j<#U ]1Y d4 \To$[Ji@$ 2'cDIHr,h_+ONߤ_>Gw4k)=I [uE%-*Ϲ!+/ :D1($Yo#VݿK{ eYMƘܰX+awdΐ` HVYbhPVa2.hVBx79Ew.k?1I@B )Wiڐ}B<`Ĥ^c?44y}QS?򭟡"vŒP/*T}CcE6HH |u!Z_OӐ3x/}4;78H/8hAfF8w` M3p 4Su=Q @L.tqf(;vi+݌z~yuZePV-'䆷)4Er+ Aqhg0{ ijcAN+CL@S m$1<1f)9c邶viÓ4 c(~Z|Nm@@Ҙ"KJÙw߷9g/ޚ`,;$IENDB`youker-assistant-1.0.1/qml/func/cleaner/CookiesModel.qml000644 001750 001750 00000106610 12312451003 023570 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id:root width: parent.width height: 435 property string title: qsTr("Cleanup browser Cookies information, to protect your privacy")//清理浏览器 Cookies 信息,保护个人隐私 property string description: qsTr("Clean up user login information, support Firefox and Chromium browser")//清理用户登陆网站信息, 支持 Firefox 和 Chromium 浏览器 property bool firefoxResultFlag: false//判断扫描后的实际内容是否为空,为空时为false,有内容时为true property bool chromiumResultFlag: false//判断扫描后的实际内容是否为空,为空时为false,有内容时为true property int firefoxNum: 0//扫描后得到的apt的项目总数 property int chromiumNum: 0//扫描后得到的apt的项目总数 property bool splitFlag: true//传递给ClearDelegate.qml,为true时切割字符串,为false时不切割字符串 property bool flag: false//记录是清理后重新获取数据(true),还是点击开始扫描后获取数据(false) property int spaceValue: 20 property int firefox_arrow_show: 0//传递给CookiesDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property int chromium_arrow_show: 0//传递给CookiesDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property bool firefox_expanded: false//传递给CookiesDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool chromium_expanded: false//传递给CookiesDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool firefox_maincheck: true property bool chromium_maincheck: true property bool firefox_showNum: false//决定firefox的扫描结果数是否显示 property bool chromium_showNum: false//决定chromium的扫描结果数是否显示 ListModel { id: firefoxmainModel } ListModel { id: firefoxsubModel } ListModel { id: chromiummainModel } ListModel { id: chromiumsubModel } property string firefox_btn_text: qsTr("Start scanning")//开始扫描 property string chromium_btn_text: qsTr("Start scanning")//开始扫描 property bool firefox_reset: false//firefox重置按钮默认隐藏 property bool chromium_reset: false//chromium重置按钮默认隐藏 property string firefox_btn_flag: "cookies_scan"//扫描或者清理的标记 property string chromium_btn_flag: "cookies_scanc"//扫描或者清理的标记 property int item_height: 30 Connections { target: sessiondispatcher onAppendCookiesContentToModel: { //QString flag, QString domain, QString num if(flag == "firefox") { firefoxsubModel.append({"itemTitle": domain, "desc": "", "number": num, "index": root.firefoxNum}); root.firefoxNum += 1; } else if(flag == "chromium") { chromiumsubModel.append({"itemTitle": domain, "desc": "", "number": num, "index": root.chromiumNum}); root.chromiumNum += 1; } } onTellQMLCookiesOver: { if (cookiesFlag == "funinstall") { //友情提示 没有安装 Firefox! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Firefox is not installed!"), mainwindow.pos.x, mainwindow.pos.y); } else if (cookiesFlag == "cuninstall") { //友情提示 没有安装 Chromium! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Chromium is not installed!"), mainwindow.pos.x, mainwindow.pos.y); } else { if (cookiesFlag == "firefox") { if(root.firefoxNum != 0) { root.firefoxResultFlag = true;//扫描的实际有效内容存在 firefoxmainModel.clear(); //清理 Firefox 保存的 Cookies 清理 Firefox 浏览器自动保存的登录信息 (Cookies) firefoxmainModel.append({ "itemTitle": qsTr("Cleanup the Cookies saving in Firefox"), "picture": "../../img/toolWidget/firefox.png"}) // "detailstr": qsTr("Clean up automatically saved logon information by Firefox browser(Cookies)")}) } else { root.firefoxResultFlag = false;//扫描的实际有效内容不存在 } if(root.firefoxResultFlag == false) { root.firefox_expanded = false;//伸缩箭头不扩展 root.firefox_arrow_show = 0;//伸缩箭头不显示 root.firefox_showNum = false; if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else {//清理apt后的重新获取数据,此时不需要显示对话框 root.flag = false; } root.firefox_btn_flag = "cookies_scan";//1206 root.firefox_btn_text = qsTr("Start scanning")//开始扫描//1206 root.firefox_reset = false;//1206 if(root.chromium_expanded) { scrollItem.height = root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2 * root.item_height + root.spaceValue*4; } } else if(root.firefoxResultFlag == true) { root.firefox_expanded = true;//伸缩箭头扩展 root.firefox_arrow_show = 1;//伸缩箭头显示 root.firefox_showNum = true; if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 toolkits.alertMSG(qsTr("Scan completed!"), mainwindow.pos.x, mainwindow.pos.y);//扫描完成! } else {//清理software后的重新获取数据,此时不需要显示对话框 root.flag = false; } //当真正扫描到内容时:按钮状态改变、显示文字改变、重置按钮显示 root.firefox_btn_flag = "cookies_work";//1206 root.firefox_btn_text = qsTr("All cleanup");//全部清理//1206 root.firefox_reset = true;//1206 if(root.chromium_expanded) { scrollItem.height = (root.firefoxNum + 1) * root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = (root.firefoxNum + 1) * root.item_height + root.item_height + root.spaceValue*4; } } } else if (cookiesFlag == "chromium") { if(root.chromiumNum != 0) { root.chromiumResultFlag = true;//扫描的实际有效内容存在 chromiummainModel.clear(); //清理 Chromium 保存的 Cookies 清理 Chromium 浏览器自动保存的登录信息 (Cookies) chromiummainModel.append({ "itemTitle": qsTr("Cleanup the Cookies saving in Chromium"), "picture": "../../img/toolWidget/chromium.png"}) // "detailstr": qsTr("Clean up automatically saved logon information by Chromium browser(Cookies)")}) } else { root.chromiumResultFlag = false;//扫描的实际有效内容不存在 } if(root.chromiumResultFlag == false) { root.chromium_expanded = false;//伸缩箭头不扩展 root.chromium_arrow_show = 0;//伸缩箭头不显示 root.chromium_showNum = false; if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else {//清理apt后的重新获取数据,此时不需要显示对话框 root.flag = false; } root.chromium_btn_flag = "cookies_scanc";//1206 root.chromium_btn_text = qsTr("Start scanning")//开始扫描 root.chromium_reset = false;//1206 if(root.firefox_expanded) { scrollItem.height = root.item_height + (root.firefoxNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2 * root.item_height + root.spaceValue*4; } } else if(root.chromiumResultFlag == true) { root.chromium_expanded = true;//伸缩箭头扩展 root.chromium_arrow_show = 1;//伸缩箭头显示 root.chromium_showNum = true; if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 toolkits.alertMSG(qsTr("Scan completed!"), mainwindow.pos.x, mainwindow.pos.y);//扫描完成! } else {//清理software后的重新获取数据,此时不需要显示对话框 root.flag = false; } //当真正扫描到内容时:按钮状态改变、显示文字改变、重置按钮显示 root.chromium_btn_flag = "cookies_workc";//1206 root.chromium_btn_text = qsTr("All cleanup");//全部清理 root.chromium_reset = true;//1206 if(root.firefox_expanded) { scrollItem.height = (root.firefoxNum + 1) * root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = (root.chromiumNum + 1) * root.item_height + root.item_height + root.spaceValue*4; } } } } } } Component.onCompleted: { //清理 Firefox 保存的 Cookies 清理 Firefox 浏览器自动保存的登录信息 (Cookies) firefoxmainModel.append({ "itemTitle": qsTr("Cleanup the Cookies saving in Firefox"), "picture": "../../img/toolWidget/firefox.png"}) // "detailstr": qsTr("Clean up automatically saved logon information by Firefox browser(Cookies)")}) //清理 Chromium 保存的 Cookies 清理 Chromium 浏览器自动保存的登录信息 (Cookies) chromiummainModel.append({ "itemTitle": qsTr("Cleanup the Cookies saving in Chromium"), "picture": "../../img/toolWidget/chromium.png"}) // "detailstr": qsTr("Clean up automatically saved logon information by Chromium browser(Cookies)")}) } //信号绑定,绑定qt的信号finishCleanWork,该信号emit时触发onFinishCleanWork Connections { target: systemdispatcher onQuitCleanWork: {//用户在policykit验证时直接关闭验证或者点击取消 if (msg == "firefox") { toolkits.alertMSG(qsTr("Cleanup interrupted!"), mainwindow.pos.x, mainwindow.pos.y);//清理中断! } else if (msg == "chromium") { toolkits.alertMSG(qsTr("Cleanup interrupted!"), mainwindow.pos.x, mainwindow.pos.y);//清理中断! } } onFinishCleanWorkError: {//清理过程中出错 if (msg == "firefox") { if (root.firefox_btn_flag == "cookies_work") { toolkits.alertMSG(qsTr("Cleanup abnormal!"), mainwindow.pos.x, mainwindow.pos.y);//清理出现异常! } } else if (msg == "chromium") { if (root.chromium_btn_flag == "cookies_workc") { toolkits.alertMSG(qsTr("Cleanup abnormal!"), mainwindow.pos.x, mainwindow.pos.y);//清理出现异常! } } } onFinishCleanWork: {//清理正常完成 if (msg == "firefox") { if (root.firefox_btn_flag == "cookies_work") { // systemdispatcher.clear_cookies_args(); firefoxsubModel.clear();//内容清空 firefoxmainModel.clear(); //清理 Firefox 保存的 Cookies 清理 Firefox 浏览器自动保存的登录信息 (Cookies) firefoxmainModel.append({ "itemTitle": qsTr("Cleanup the Cookies saving in Firefox"), "picture": "../../img/toolWidget/firefox.png", "detailstr": qsTr("Clean up automatically saved logon information by Firefox browser(Cookies)")}) root.firefox_expanded = false;//伸缩箭头不扩展 root.firefox_arrow_show = 0;//伸缩箭头不显示 root.firefox_showNum = false; root.firefox_btn_flag = "cookies_scan";//1206 root.firefox_btn_text = qsTr("Start scanning")//开始扫描//1206 root.firefox_reset = false;//1206 root.firefoxNum = 0;//隐藏滑动条 if(root.chromium_expanded) { scrollItem.height = root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2 * root.item_height + root.spaceValue*4; } toolkits.alertMSG(qsTr("Cleared"), mainwindow.pos.x, mainwindow.pos.y);//清理完毕! } } else if (msg == "chromium") { if (root.chromium_btn_flag == "cookies_workc") { chromiumsubModel.clear();//内容清空 chromiummainModel.clear(); //清理 Chromium 保存的 Cookies 清理 Chromium 浏览器自动保存的登录信息 (Cookies) chromiummainModel.append({ "itemTitle": qsTr("Cleanup the Cookies saving in Chromium"), "picture": "../../img/toolWidget/chromium.png"}) // "detailstr": qsTr("Clean up automatically saved logon information by Chromium browser(Cookies)")}) root.chromium_expanded = false;//伸缩箭头不扩展 root.chromium_arrow_show = 0;//伸缩箭头不显示 root.chromium_showNum = false; root.chromium_btn_flag = "cookies_scanc";//1206 root.chromium_btn_text = qsTr("Start scanning")//开始扫描//1206 root.chromium_reset = false;//1206 root.chromiumNum = 0;//隐藏滑动条 if(root.firefox_expanded) { scrollItem.height = root.item_height + (root.firefoxNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2 * root.item_height + root.spaceValue*4; } toolkits.alertMSG(qsTr("Cleared"), mainwindow.pos.x, mainwindow.pos.y);//清理完毕! } } } } //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //titlebar Row { id: titlebar spacing: 20 width: parent.width anchors { top: parent.top; topMargin: 20; left: parent.left; leftMargin: 27 } Image { id: apt_refreshArrow source: "../../img/toolWidget/cookies-bg.png" Behavior on rotation { NumberAnimation { duration: 200 } } } Column { anchors.verticalCenter: parent.verticalCenter spacing: 10 Text { width: 500 text: root.title wrapMode: Text.WordWrap font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: 500 text: root.description wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } } //分割条 Common.Separator { id: splitbar anchors { top: titlebar.bottom topMargin: 18 left: parent.left leftMargin: 2 } width: parent.width - 4 } Common.ScrollArea { frame:false anchors.top: titlebar.bottom anchors.topMargin: 30 anchors.left:parent.left // anchors.leftMargin: 27 height: root.height -titlebar.height - 47 width: parent.width -2//parent.width - 27 -2 Item { id: scrollItem width: parent.width height: root.item_height*2 + root.spaceValue*2*2 Column { spacing: root.spaceValue*2 //垃圾清理显示内容 ListView { id: aptListView width: parent.width height: root.firefox_expanded ? (root.firefoxNum + 1) * root.item_height : root.item_height model: firefoxmainModel delegate: CookiesDelegate{ sub_num: root.firefoxNum sub_model: firefoxsubModel btn_flag: root.firefox_btn_flag flag: "firefox" actionTitle: root.firefox_btn_text resetStatus: root.firefox_reset showNum: root.firefox_showNum arrow_display: root.firefox_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.firefox_expanded//firefox_expanded为true时,箭头向下,内容展开;firefox_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag onSendBrowserType: { if(browserFlag == "firefox") { if(status == "reset") {//点击重置按钮,清空数据 firefoxsubModel.clear(); root.firefoxNum = 0; root.firefox_btn_flag = "cookies_scan";//1206 root.firefox_btn_text = qsTr("Start scanning")//开始扫描//1206 root.firefox_reset = false;//1206 if(root.firefox_expanded == true) { root.firefox_expanded = false;//1、先传递给CookiesDelegate.qml的伸缩值设为默认的false } root.firefox_arrow_show = 0;//2、然后传递给CookiesDelegate.qml去隐藏伸展按钮 root.firefox_showNum = false;//隐藏扫描的数目 if(root.chromium_expanded) { scrollItem.height = root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2 * root.item_height + root.spaceValue*4; } } else if(status == "rescan") {//点击重新扫描按钮 firefoxsubModel.clear(); root.firefoxNum = 0; root.firefox_btn_flag = "cookies_scan";//1206 root.firefox_btn_text = qsTr("Start scanning")//开始扫描//1206 root.firefox_reset = false;//1206 if(root.firefox_expanded == true) { root.firefox_expanded = false;//1、先传递给CookiesDelegate.qml的伸缩值设为默认的false } root.firefox_arrow_show = 0;//2、然后传递给CookiesDelegate.qml去隐藏伸展按钮 root.firefox_showNum = false;//隐藏扫描的数目 root.flag = false; sessiondispatcher.cookies_scan_function_qt("firefox"); // root.getDataOfFirefox(); } else if(status == "refresh") {//清理完某个子项后自动刷新列表 console.log("---*****2222------"); firefoxsubModel.clear(); root.firefoxNum = 0; root.firefox_btn_flag = "cookies_scan";//1206 root.firefox_btn_text = qsTr("Start scanning")//开始扫描//1206 root.firefox_reset = false;//1206 if(root.firefox_expanded == true) { root.firefox_expanded = false;//1、先传递给CookiesDelegate.qml的伸缩值设为默认的false } root.firefox_arrow_show = 0;//2、然后传递给CookiesDelegate.qml去隐藏伸展按钮 root.firefox_showNum = false;//隐藏扫描的数目 root.flag = true; sessiondispatcher.cookies_scan_function_qt("firefox"); // root.getDataOfFirefox(); } else { root.firefox_btn_flag = status; if (root.firefox_btn_flag == "cookies_scan") { // console.log("scan---f......"); //开始扫描时获取cookies root.firefoxNum = 0; root.flag = false; sessiondispatcher.cookies_scan_function_qt("firefox"); // root.getDataOfFirefox(); } else if (root.firefox_btn_flag == "cookies_work") { // if(root.firefox_check_flag) { console.log("clean---f......"); //开始清理cookies systemdispatcher.set_user_homedir_qt(); systemdispatcher.cookies_clean_records_function_qt("firefox"); // } // else { // sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Sorry, you have no choice to clean up the items, please confirm!"), mainwindow.pos.x, mainwindow.pos.y); // } } } } } onBrowserArrowClicked: { if(browserFlag == "firefox") { if(expand_flag == true) { root.firefox_expanded = true; if(root.chromium_expanded == true) { scrollItem.height = (root.firefoxNum + 1) * root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = (root.firefoxNum + 2) * root.item_height + root.spaceValue*4; } } else { root.firefox_expanded = false; if(root.chromium_expanded == true) { scrollItem.height = (root.chromiumNum + 2) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2* root.item_height + root.spaceValue*4; } } } } } cacheBuffer: 1000 opacity: 1 // spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } //垃圾清理显示内容 ListView { id: softListView width: parent.width height: root.chromium_expanded ? (root.chromiumNum + 1) * root.item_height : root.item_height model: chromiummainModel delegate: CookiesDelegate{ sub_num: root.chromiumNum sub_model: chromiumsubModel btn_flag: root.chromium_btn_flag showNum: root.chromium_showNum flag: "chromium" actionTitle: root.chromium_btn_text resetStatus: root.chromium_reset arrow_display: root.chromium_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.chromium_expanded//firefox_expanded为true时,箭头向下,内容展开;firefox_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag onSendBrowserType: { if(browserFlag == "chromium") { if(status == "reset") {//点击重置按钮,清空数据 chromiumsubModel.clear(); root.chromiumNum = 0; root.chromium_btn_flag = "cookies_scanc";//1206 root.chromium_btn_text = qsTr("Start scanning")//开始扫描//1206 root.chromium_reset = false;//1206 if(root.chromium_expanded == true) { root.chromium_expanded = false;//1、先传递给CookiesDelegate.qml的伸缩值设为默认的false } root.chromium_arrow_show = 0;//2、然后传递给CookiesDelegate.qml去隐藏伸展按钮 root.chromium_showNum = false;//隐藏扫描的数目 if(root.firefox_expanded) { scrollItem.height = root.item_height + (root.firefoxNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2 * root.item_height + root.spaceValue*4; } } else if(status == "rescan") { chromiumsubModel.clear(); root.chromiumNum = 0; root.chromium_btn_flag = "cookies_scanc";//1206 root.chromium_btn_text = qsTr("Start scanning")//开始扫描//1206 root.chromium_reset = false;//1206 if(root.chromium_expanded == true) { root.chromium_expanded = false;//1、先传递给CookiesDelegate.qml的伸缩值设为默认的false } root.chromium_arrow_show = 0;//2、然后传递给CookiesDelegate.qml去隐藏伸展按钮 root.chromium_showNum = false;//隐藏扫描的数目 root.flag = false; sessiondispatcher.cookies_scan_function_qt("chromium"); // root.getDataOfChromium(); } else if(status == "refresh") {//清理完某个子项后自动刷新列表 chromiumsubModel.clear(); root.chromiumNum = 0; root.chromium_btn_flag = "cookies_scanc";//1206 root.chromium_btn_text = qsTr("Start scanning")//开始扫描//1206 root.chromium_reset = false;//1206 if(root.chromium_expanded == true) { root.chromium_expanded = false;//1、先传递给CookiesDelegate.qml的伸缩值设为默认的false } root.chromium_arrow_show = 0;//2、然后传递给CookiesDelegate.qml去隐藏伸展按钮 root.chromium_showNum = false;//隐藏扫描的数目 root.flag = true; sessiondispatcher.cookies_scan_function_qt("chromium"); // root.getDataOfChromium(); } else { root.chromium_btn_flag = status; if (root.chromium_btn_flag == "cookies_scanc") { // console.log("scan---c......"); //开始扫描时获取cookies root.flag = false; root.chromiumNum = 0; sessiondispatcher.cookies_scan_function_qt("chromium"); // root.getDataOfChromium(); } else if (root.chromium_btn_flag == "cookies_workc") { // if(root.chromium_check_flag) // { console.log("clean---c......"); //开始清理cookies systemdispatcher.set_user_homedir_qt(); systemdispatcher.cookies_clean_records_function_qt("chromium"); // } // else { // sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Sorry, you have no choice to clean up the items, please confirm!"), mainwindow.pos.x, mainwindow.pos.y); // } } } } } onBrowserArrowClicked: { if(browserFlag == "chromium") {//1212 if(expand_flag == true) { root.chromium_expanded = true; if(root.firefox_expanded == true) { scrollItem.height = (root.firefoxNum + 1) * root.item_height + (root.chromiumNum + 1) * root.item_height + root.spaceValue*4; } else { scrollItem.height = (root.chromiumNum + 2) * root.item_height + root.spaceValue*4; } } else { root.chromium_expanded = false; if(root.firefox_expanded == true) { scrollItem.height = (root.firefoxNum + 2) * root.item_height + root.spaceValue*4; } else { scrollItem.height = 2* root.item_height + root.spaceValue*4; } } } } } cacheBuffer: 1000 opacity: 1 // spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } } } } } youker-assistant-1.0.1/src/image/pre-zh.png000644 001750 001750 00000002033 12312451003 021121 0ustar00saucysaucy000000 000000 PNG  IHDR^tEXtSoftwareAdobe ImageReadyqe<IDATxbb "2CdLp>v{x)"eI4MVscn'zEmn뺎m۫2L9$6R&f9 |>%Sz^rt,zљ7MBS=,KR}c_DQ}JD!e^U֎@+CƦcD&`ǽƒ2qJgLJl{8s 7 :?y|hZN (T`` - v[Bkb¸'5/yUtOJv d~TD2a0h6z["43jGJZԣEu*:m-FqOMxu=MHSCOQK;31F#$>jExMUU&&"ZP2i0ُVn3DꎞeY@h\,}&wrkJgb,KGj({wzB%I}EuEQ<'ygjuͶmDBDg賞x2˲u]_lI^3ѦIENDB`youker-assistant-1.0.1/qml/func/info/DriveInfo.qml000644 001750 001750 00000024146 12312451003 022425 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup Rectangle { id: home width: parent.width; height: 475 color: "transparent" property int rowNumber: 0//对有效行计数 property int itemNumber: 0//对项目的计数s property string hbridge: qsTr("Host bridge:")//主桥 property string vga: qsTr("VGA Model:")//VGA兼容控制器 property string usb: qsTr("USB Model:")//USB控制器 property string communication: qsTr("Communication Model:")//通信控制器 property string ethernet: qsTr("Ethernet Model:")//以太网控制器 property string audio: qsTr("Audio Model:")//音频设备 property string pci: qsTr("PCI bridge:")//PCI桥 property string isa: qsTr("ISA bridge:")//ISA桥 property string sata: qsTr("SATA Model:")//SATA控制器 property string smbus: qsTr("SMBus:")//系统管理总线 property string peripheral: qsTr("System peripheral:")//系统外围 property string usedriver: qsTr("Driver in use:")//使用的驱动 property string existdriver: qsTr("existing drivers:")//可选的驱动 property string ide : qsTr("IDE interface:")//IDE接口 property string sp : qsTr("SP controller:")//信号处理控制器 property string net : qsTr("Network controller:")//网络控制器 function transTitle(str) { //去掉前后空格 str = str.replace(/^(\s|\u00A0)+/,''); for(var i=str.length-1; i>=0; i--){ if(/\S/.test(str.charAt(i))){ str = str.substring(0, i+1); break; } } //开始国际化 var pat1 = new RegExp('Host bridge'); var pat2 = new RegExp('VGA compatible controller'); var pat3 = new RegExp('USB controller'); var pat4 = new RegExp('Communication controller'); var pat5 = new RegExp('Ethernet controller'); var pat6 = new RegExp('Audio device'); var pat7 = new RegExp('PCI bridge'); var pat8 = new RegExp('ISA bridge'); var pat9 = new RegExp('SATA controller'); var pat10 = new RegExp('SMBus'); var pat11 = new RegExp('System peripheral'); var pat12 = new RegExp('driver in use'); var pat13 = new RegExp('existing drivers'); var pat14 = new RegExp('IDE interface'); var pat15 = new RegExp('Signal processing controller'); var pat16 = new RegExp('Network controlle'); if(pat1.test(str)) { return home.hbridge.toString(); } else if(pat2.test(str)) { return home.vga.toString(); } else if(pat3.test(str)) { return home.usb.toString(); } else if(pat4.test(str)) { return home.communication.toString(); } else if(pat5.test(str)) { return home.ethernet.toString(); } else if(pat6.test(str)) { return home.audio.toString(); } else if(pat7.test(str)) { return home.pci.toString(); } else if(pat8.test(str)) { return home.isa.toString(); } else if(pat9.test(str)) { return home.sata.toString(); } else if(pat10.test(str)) { return home.smbus.toString(); } else if(pat11.test(str)) { return home.peripheral.toString(); } else if(pat12.test(str)) { return home.usedriver.toString(); } else if(pat13.test(str)) { return home.existdriver.toString(); } else if(pat14.test(str)) { return home.ide.toString(); } else if(pat15.test(str)) { return home.sp.toString(); } else if(pat16.test(str)) { return home.net.toString(); } return str; } function appendDataList() { dataModel.clear();//清空dataModel home.rowNumber = 0; home.itemNumber += 0; var list = devicemanager.getDeviceMsg(); for (var i=0 ; i < list.length ; i++) { var splitlist = list[i].split(";"); if(splitlist.length == 1) { var name = splitlist[0].split(":"); dataModel.append({"deviceName": home.transTitle(name[0]), "deviceNameText": name[1], "inUseName": "", "inUseNameText": "", "existName": "", "existNameText": ""}); //设备名字太长,让其使用两行 home.rowNumber += 1; home.itemNumber += 1; } else if(splitlist.length == 2) { var name1 = splitlist[0].split(":"); var name2 = splitlist[1].split(":"); dataModel.append({"deviceName": home.transTitle(name1[0]), "deviceNameText": name1[1], "inUseName": home.transTitle(name2[0]), "inUseNameText": name2[1], "existName": "", "existNameText": ""}); //设备名字太长,让其使用两行 home.rowNumber += 2; home.itemNumber += 1; } else if(splitlist.length == 3) { var name3 = splitlist[0].split(":"); var name4 = splitlist[1].split(":"); var name5 = splitlist[2].split(":"); dataModel.append({"deviceName": home.transTitle(name3[0]), "deviceNameText": name3[1], "inUseName": home.transTitle(name4[0]), "inUseNameText": name4[1], "existName": home.transTitle(name5[0]), "existNameText": name5[1]}); //设备名字太长,让其使用两行 home.rowNumber += 3; home.itemNumber += 1; } } } ListModel { id: dataModel Component.onCompleted: { home.appendDataList(); } } Component { id: deviceDelegate Column { // spacing: 1 Column { spacing: 20 Row { spacing: 10 Common.Label { id:device text: deviceName font.pixelSize: 14 color: "#7a7a7a" width: 140 height: 20 } Text { text: deviceNameText width: 500 font.pixelSize: 14 wrapMode: Text.WordWrap color: "#7a7a7a" height: 20 } } Row { spacing: 10 Common.Label { text: inUseName visible: (inUseName == "") ? false : true font.pixelSize: 14 color: "#7a7a7a" width: 140 height: 20 } Text { text: inUseNameText visible: (inUseNameText == "") ? false : true font.pixelSize: 14 color: "#7a7a7a" height: 20 } } Row { spacing: 10 Common.Label { text: existName visible: (existName == "") ? false : true font.pixelSize: 14 color: "#7a7a7a" width: 140 height: 20 } Text { text: existNameText visible: (existNameText == "") ? false : true font.pixelSize: 14 color: "#7a7a7a" height: 20 } } } Common.Separator { width: parent.width - 20 visible: (device.text == "") ? false : true } } } Row { id: titleRow anchors { top: parent.top topMargin: 40 left: parent.left leftMargin: 20 } Common.Label { id: titlebar text: qsTr("Device Driver Info")//设备驱动信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - titlebar.width - 30 * 2 } } Common.ScrollArea { frame:false anchors.left: parent.left anchors.leftMargin: 30 anchors.top: titleRow.bottom anchors.topMargin: 20 height: 396 width: 680 - 14 Item { id: listItem width: parent.width height: home.rowNumber*20 + (home.rowNumber - 1)*20 + (home.itemNumber - 1) * 10 + 20 ListView { id: deviceView anchors.fill: parent model: dataModel delegate: deviceDelegate spacing: 10 // snapMode: ListView.SnapOneItem //// orientation: ListView.Horizontal // boundsBehavior: Flickable.StopAtBounds // flickDeceleration: 5000 // highlightFollowsCurrentItem: true // highlightMoveDuration:240 // highlightRangeMode: ListView.StrictlyEnforceRange } } } } youker-assistant-1.0.1/src/image/next-en.png000644 001750 001750 00000002143 12312451003 021274 0ustar00saucysaucy000000 000000 PNG  IHDR^ztEXtSoftwareAdobe ImageReadyqe<IDATxb4\nC&/ڪ(g.?MteP5|&A]Y>ˏ???|B F3XeXp:I < ,Vd Ĩ;MUZy&_?0ĄW; نʢ bz ?@SXv3^}XX#)Uhf *Z oX4,$&TmQY~h yMaVmze :Gf ^G\Q}|gIZ:ɦC*ɘ6wkVK8~ٍ1Ikт%Y|X 0o0]g@(`m;fCޠ0g8RX 56 LB4ؾP8hn'!"5}*z;`pX7A؆O4Qv`ȭWXDabp0o\ipiz؆jb/K&9* WD0?-2P3(L"AnғelE T++0`$;1bO+5#[#GLv6 k?j?C:LV v z?̐v<0O_vQh$}\ JNIENDB`youker-assistant-1.0.1/qml/func/info/CpuInfo.qml000644 001750 001750 00000021765 12312451003 022107 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup Rectangle { id: home width: parent.width; height: 475 color: "transparent" Component.onCompleted: { systemdispatcher.get_cpu_info_qt();//获取详细信息 var cpuName = systemdispatcher.getHWSingleInfo("CpuVendor", "cpu"); logo.source = InfoGroup.judgeName(cpuName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + cpuName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); // var pat1 = new RegExp('Intel'); // var pat2 = new RegExp('AMD'); // var pat3 = new RegExp('Vimicro'); // if(pat1.test(msg)) { // logo.source = "../../img/logo/Manufacturer/INTEL.jpg"; // } // else if(pat2.test(msg)) { // logo.source = "../../img/logo/Manufacturer/AMD.jpg"; // } // else if(pat3.test(msg)) { // logo.source = "../../img/logo/Manufacturer/VIMICRO.jpg"; // } // if(msg.indexOf("Intel") > 0) { // logo.source = "../../img/logo/Manufacturer/INTEL.jpg"; // } // else if(msg.indexOf("AMD") > 0 || msg.indexOf("Amd") > 0) { // logo.source = "../../img/logo/Manufacturer/AMD.jpg"; // } // else if(msg.indexOf("VIMICRO") > 0 || msg.indexOf("Vimicro") > 0) { // logo.source = "../../img/logo/Manufacturer/VIMICRO.jpg"; // } cpuversionText.text = systemdispatcher.getHWSingleInfo("CpuVersion", "cpu"); cpuverdorText.text = cpuName; cpuserialText.text = systemdispatcher.getHWSingleInfo("CpuSerial", "cpu"); slotText.text = systemdispatcher.getHWSingleInfo("CpuSlot", "cpu"); maxText.text = systemdispatcher.getHWSingleInfo("CpuCapacity", "cpu");// + "MHz"; curText.text = systemdispatcher.getHWSingleInfo("CpuSize", "cpu");// + "MHz"; frontText.text = systemdispatcher.getHWSingleInfo("CpuClock", "cpu");// + "MHz"; coresText.text = systemdispatcher.getHWSingleInfo("cpu_cores", "cpu") + qsTr("cores") + "/" + systemdispatcher.getHWSingleInfo("cpu_siblings", "cpu") + qsTr("thread");//核//线程 cache1.text = systemdispatcher.getHWSingleInfo("clflush_size", "cpu") + "KB"; cache2.text = systemdispatcher.getHWSingleInfo("cache_size", "cpu") + "KB"; } Column { anchors { top: parent.top topMargin: 40 left: parent.left leftMargin: 30 } spacing: 20 Row { Common.Label { id: bartitle text: qsTr("CPU Info")//处理器信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - bartitle.width - 30 * 2 } } Column { anchors.left: parent.left anchors.leftMargin: 20 spacing: 10 Row { spacing: 10 Common.Label { text: qsTr("CPU: ")//处理器: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: cpuversionText text: ""//systemdispatcher.getHWSingleInfo("CpuVersion") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Vendor: ")//制造商: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: cpuverdorText text: ""//systemdispatcher.getHWSingleInfo("CpuVendor") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Serial Number: ")//序列号: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: cpuserialText text: ""//systemdispatcher.getHWSingleInfo("CpuSerial") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Socket/Slot: ")//插座/插槽: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: slotText text: ""//systemdispatcher.getHWSingleInfo("CpuSlot") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Maximum Frequency: ")//最大主频: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: maxText text: ""//systemdispatcher.getHWSingleInfo("CpuCapacity") + "MHz" font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Current Frequency: ")//当前主频: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: curText text: ""//systemdispatcher.getHWSingleInfo("CpuSize") + "MHz" font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("FSB: ")//前端总线: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: frontText text: ""//systemdispatcher.getHWSingleInfo("CpuClock") + "MHz" font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Core Number: ")//核心数目: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: coresText text: ""//systemdispatcher.getHWSingleInfo("cpu_cores") + qsTr("cores") + "/" + systemdispatcher.getHWSingleInfo("cpu_siblings") + qsTr("thread")//核//线程 font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("L1 Cache: ")//一级缓存: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: cache1 text: ""//systemdispatcher.getHWSingleInfo("clflush_size") + "KB" font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("L2 Cache: ")//二级缓存: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: cache2 text: ""//systemdispatcher.getHWSingleInfo("cache_size") + "KB" font.pixelSize: 14 color: "#7a7a7a" } } } } //logo Image { id: logo source: "" opacity: 0.5 anchors { top: parent.top topMargin: 80 right: parent.right rightMargin: 30 } } } youker-assistant-1.0.1/qml/func/common/defaultstyle/CheckBoxStyle.qml000644 001750 001750 00000004203 12312451003 026301 0ustar00saucysaucy000000 000000 import QtQuick 1.1 QtObject { property int minimumWidth: 13//32 property int minimumHeight: 13//32 property string styleflag: "" property Component background: Component { Item { width: minimumWidth; height: minimumHeight opacity: enabled ? 1 : 0.7 Rectangle { // Background center fill anchors.fill: parent anchors.margins: 1 radius: 5 color: backgroundColor } BorderImage { anchors.fill: parent // source: "../../../img/icons/checkbox.png" source: { if(styleflag == "radio") "../../../img/icons/radiobox.png"; else if(styleflag == "flowradio") "../../../img/icons/dot_normal.png"; else "../../../img/icons/checkbox.png"; } // source: (styleflag == "radio") ? "../../../img/icons/radiobox.png" : "../../../img/icons/checkbox.png" smooth: true border.left: 6; border.top: 3 border.right: 6; border.bottom: 3 } } } property Component checkmark: Component { Image { // source: "../../../img/icons/checkbox_seclect.png" source: { if(styleflag == "radio") "../../../img/icons/radiobox-check.png"; else if(styleflag == "flowradio") "../../../img/icons/dot_active.png"; else "../../../img/icons/checkbox_seclect.png"; } // source: (styleflag == "radio") ? "../../../img/icons/radiobox-check.png" : "../../../img/icons/checkbox_seclect.png" // anchors.verticalCenterOffset: 1 // anchors.horizontalCenterOffset: 1 anchors.centerIn: parent opacity: (!enabled && checked) || pressed == true ? 0.5 : (!checked ? 0 : 1) Behavior on opacity { NumberAnimation { duration: 150; easing.type: Easing.OutCubic } } } } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/OMEGA.jpg000644 001750 001750 00000007616 12312451003 023644 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1 !AqQ2B"s$4#C%1A!QBaq"# ?˃_t't +@5t D/@uN, -\:a,DJ%KHV.%/+E>؋Š;\1;tiXQק!}vAeH~io"| b"Pq,l"ZF2p.xA^b)F^-p2J g= eӲ .CKgaXKca1IwK O6"9;Ym%"4J7/wHL#yȤ%JS}XÃXbXQke5YoHc KH񵴧i/z4&R)37cH8EIP-2F45,hN\3Bw6^$ i-@Th)T(I1 1yUE0RqiBQ8sNz%%b!ĖV ٷ4y:&{c?d}UsqtrQJ4§_kZ2tFJP5JAKXd2N]k"!T9qԔaeCIp\>r(*Ns&j AN=J4k% KH3*quN녝txs}M?QϣNр0v"97n IUHs0M1OiXVLRFC3!NRxFB\0zCmRYgSÁ=GWjҢG 2ls5+US΀I5&2˜kˈ%sݼ roDZ|hqWZ7)RNp APHS[?1eBXa!(e4YxջW3Q-L'CmE\\tSkHA)72bK̛ UQe){WZU6_(n6U]@JU9['=:s"MebNlE|of^7e4sƛ˙#=eݘbE:(򶊔f8ym)k,k I 3eTHGJe3SnLQ\k>r.TDq\e{o,[6 a*НJov\DQBI KNjUZO0#!3'>b-4|aXWBq9տ!/k,u5[ 'Dp6/<ڮ3gf#'T : roşr흥t{vd^d(EǛ5 Ex^9QbؗΛO ѽt47( OC;dͺm~eڻo%qm%q>훍7]YYBϢHAIεXtDtyDT&jEK4۩F[[WO,YXq= guz#ܤ'166V'I}mSV*i0:5}[8 qU+S/Xǻ.q[Wqح;L>-&t+u޽uiAx禑>T:>CPeOg .=5۷d$ O0|086ˋfvkEġTi:ӎN-ECPazP[x!r_Шj(m-Cor#}lWZt|_Шj݉} N4>U6Œw%vA4wn?,S9l]IKQPR/B23.)m%/(^^,7/;/גn͖~rMYJcT&D QJѱzvr"rI;.uC- d*g-^B^3۪&x7T.U"' p?1&_92JOfrFZܜ.;zp/UzY9ҕw&:Zw+Vqit9< [= ?\fC-lm}7-ZT@T;p 6?%rOsYkGm:QFH'e wF Ϻ z{" :˧d\.w "%%c+"NlEbi. }Ѐk4Q}p(k]; $?4FvpPU(86-#Xtt 1w#b/CH8pk]ѥbD^ȅ!3]%Aıiäyӿzyouker-assistant-1.0.1/qml/img/logo/Manufacturer/T&W.jpg000644 001750 001750 00000013233 12312451003 023404 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]      1!AQaqB "2R3C$45EU6V#Sdt%u8x !1AQaqѡ"2BR$4r#t5&sTE6 ?y8b+~9`z'`t ǻxw{aK̈́rX`FPCX`0:˔00 @`G 01: 98s8aM<0N# w a _/`u(`8aBA<<akf6U^rSV2c9Jc0PK d~A~>`cYFI# FȲyjTD'pI^BH)Rc8)3 DG 8C({k1Ɖ zUWLT)M< 0ꕨ ҡLNXj VL48]=?]6s>"}a KD*RJPveKpf0iS1WƒV\* :d+%: P`, ǯ1/e>(?=VXU_7qߗɴxwѽܧ| oc۩p$VjJ`*+|a)TXS+v3PvzDs_Qyx`##ZR)Jtp7-e?T^U $}>iF&\7Et<4d4veB--=Yǡ1C^i"چlnm-X;2jvb(qZ%ir2ŧ8oJՌ)?,)*B;DA k٨T10EIhXymU[D1;IJыaQ(oCٔ*x^brҬ8U2O^[AL mvnZX1٘#la7.LU\|Rp['9*[-'vɄcQonK{q1P j2o=Mfőt Fۙ&>WEJw)RLF2T۪vXm4{J4_f ۝m&|gYrXl@Hi<2^49F1)M}!:0@F ;p}ClH#/JOYQ`b{fxaumݩw\PbkVLjJסB`?(DKqwj;#YYRq]49I\)):g jzMYΥ:49)ȮC XEc6uEgp֛6c 5V>|"⚗ڷDz^]ekuxtB '=5|+%Uh |DgNT]GA1>zG4J#Y۴g~':Mb[yX4Ժ'jksc eJkCZ1geA_(qǧ/=ioQuFYn{-gZozǯ#߸{|P;đ,@.SG.`Ö^0<*u&\ `5:QZ15OX<{岍% pyV!*{d%eR1pb6aڅiP|ͻdW /zW-F.RuvN%7:H4p_JU,%`r!'-"4"fi7s|s+W_4k/ʑˮ}:ؾD~#o,sw,^_&.Z _ii{HS e eu' hp.=2^q̡Yez=A*@ٚ`vao.t&Q理Bj_A$V ZgEn̕kdq|*=H$(-Z zqFu:ZgH qS\\o?C@i@^۪li&Eݖ“w~ Sʕy,1]+ooGS+yRbU̕RE}p nVTo+O\qS(N=mcTbxe%f\Mqju=ДgTf&T`-m"K[Яeu ޖ9?fl2r,)s1Ay;Hݥw"1q}9'H7BFi)@1.-Jk-ϹsrjDF,3dwB:>,VQ%6B@bS'oVڛ  *m)7X؝$kjLe1wWw8LY,79 @ȼbŋʭGӋj?.5aq}ŏ>]hMΫv..e2[o&U҂e.;y(y `vV- A A#Qn-ϰ!4>zRġWZ{w'$X_zy[߇/ʫb7eiJ#%V J u SEֽ^F\ISq䀌Ft}=o2ٳd?t{z[<~bHϒUt TuDz@sc@D2 qvMrvǴArΝ۸|Aى-1cS1: +{iK$R)lGI,}vH}n˔9;1S(^UJ Ӄ̫PχTp8;yA>^ءZc?hяRODC!ptLV2 r`gtWh+ ӣrW&5LNTԭu%ՠ cJ A(d 8=p$q %FLt:F*lw YBرuէF1Q+eዥYF0yx~e_yS-ؾXROp1*{Lg{=VUv U Zsr&j¦Ā"N " r|jK伝fiQAp% [in5-Βfm&eQTu(ԕQ.7Tgo^L@moYqˆr;~^HR1L(z<崋էsJ+gNZupH8&u#Pz:*R\*U Lr{Kq*aԘSYS2rSOֳPGhL![ymqc)iueK\QZbSP04K1ὗ"utͻųwS| f帎Z+/ dV"BhB:ښh*UUj%S?ԜaMP/g{6dV;4n͸jn"WzK1: 98s8aM<0N# w a _/`u(`8aBA AdobedF]    1!AQq "2BR$#4 !1AQaqB"$#42RrDdt%& ?Ǔ ,qW&>B dA1]H&<#JQ$0orL\w(0 )uF\ ˀvu(TwjزaWL}1$&b="LyuPGH.!ˢI~`P\ Qa@Rꌹ$+QLT7e¯*\) cH&;M){)tE ꠏ\CE)GD2q$TrH *(2W.ԣ֙SobPV7Z$];g{Z{tY 순"bN_۬M@D {"i&݄;r, M7TKPdMAwMEʴ1izxlBhٲI-Nή?5;XS'Fkmԟ B]Oi|׈^QH'l 1dӍމFf {?<3[gF%S6|rFܠct KZg줅eR%f}dZTc]i4S&0Whߗg)q >,婸5#rnMۚRv'p6S 9v+OגF1Cy׸4>&Y:WN3[KB&y0Mihz>{ndN N\wD5&zc en}y=PCw\yܲJԔәl\fO'}rf\D2iG ap"a #yF`s^/l&SћUNyڳjɜy6%$@Lڇosu@iRUQnH%G;U.2s$9KfЬ.O͸be*wAZNFmzHTgncd{F,lnah/ F0 o֫g<x3?Gd6?R_1+TMi&F%ȜʐƘ 3H<1KUkQ^5B]r|[ wBVn`'?0Lr'yC>N?<,gxvlCz4y=K|Uz>=v1Qc/=B!U:ڷ"N,|fĖboLt$cnR -X_W[Zl͌mfu4qXaK uO<9Vo]\eBo,es,A`w1 $o90/%Z_] ~s o [$wbEXwn) +bsRs+fۺ>Uff:zp >Lr1?yyÁW }kit9k3JSC4=eI%˾Ԍull)+Wtc*=h-!ݧ!3eB8yDNd_8En:oOfjSfxzLL:z>_;jvw,7Mҫ9U{H24LeZੲ~wYAdX[> }JR|yB IaZ+5+TRnڸywv9m,%,UlS(r V7ۙBUG-^Q/f300_^geRC΁jjzTN]4ͥ"nJc};ʠRT72hš %umؼ \2FD*H)bJT7\k]Sb I#Mqo]k?c>?wlG_w](L+bZW&>B dA1]H&<#JQ$0orL\w(0 )uF\ 9( >ObI^T 1R0LwT$R RA1Au .R%uCer)FIK2TPd\;G2ӿSTŖ rc)a 6Hc˪>Aq]K$xR RTe 0\`wRZeO-&yP*HSA1RlH&#K)ǗU}Ԃ)J:$ Iˎ&.˒@aQApʟNuMS{youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/softwareconfigfile.py000644 001750 001750 00000002563 12312451003 032337 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import commands import common class SoftwareConfigfile(): def __init__(self): pass def scan_configfile_packages(self): cache = common.get_cache_list() final_softwareconfigfile_list = [] status, output = commands.getstatusoutput('dpkg -l') result = [(line.split()[1]).split(':')[0] for line in output.split('\n') if line.startswith('rc')] for one in result: final_softwareconfigfile_list.append(cache[one]) return final_softwareconfigfile_list if __name__ == '__main__': obj = SoftwareConfigfile() a = obj.scan_configfile_packages() print a youker-assistant-1.0.1/qtsingleapplication/src/000755 001750 001750 00000000000 12312451003 022200 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/func/common/private/Slider.qml000644 001750 001750 00000023772 12312451003 023775 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ import QtQuick 1.1 import RangeModelType 0.1 Item { id: slider // COMMON API property int orientation: Qt.Horizontal property alias minimumValue: range.minimumValue property alias maximumValue: range.maximumValue property alias inverted: range.inverted property bool updateValueWhileDragging: true property alias pressed: mouseArea.pressed property alias stepSize: range.stepSize property alias hoverEnabled: mouseArea.hoverEnabled // NOTE: this property is in/out, the user can set it, create bindings to it, and // at the same time the slider wants to update. There's no way in QML to do this kind // of updates AND allow the user bind it (without a Binding object). That's the // reason this is an alias to a C++ property in range model. property alias value: range.value property bool containsMouse: mouseArea.containsMouse // CONVENIENCE TO BE USED BY STYLES property int leftMargin: 0 property int rightMargin: 0 // EXTENSIONS // Indicate that we want animations in the Slider, people customizing should // look at it to decide whether or not active animations. property bool animated: true property bool activeFocusOnPress: false // Value indicator displays the current value near the slider property bool valueIndicatorVisible: true property int valueIndicatorMargin: 10 property string valueIndicatorPosition: _isVertical ? "Left" : "Top" // Reimplement this function to control how the value is shown in the // indicator. function formatValue(v) { return Math.round(v); } // Hooks for customizing the pieces of the slider property Component groove: null property Component handle: null property Component valueIndicator: null // PRIVATE/CONVENIENCE property bool _isVertical: orientation == Qt.Vertical // This is a template slider, so every piece can be modified by passing a // different Component. The main elements in the implementation are // // - the 'range' does the calculations to map position to/from value, // it also serves as a data storage for both properties; // // - the 'fakeHandle' is what the mouse area drags on the screen, it feeds // the 'range' position and also reads it when convenient; // // - the real 'handle' it is the visual representation of the handle, that // just follows the 'fakeHandle' position. // // When the 'updateValueWhileDragging' is false and we are dragging, we stop // feeding the range with position information, delaying until the next // mouse release. // // Everything is encapsulated in a contents Item, so for the // vertical slider, we just swap the height/width, make it // horizontal, and then use rotation to make it vertical again. Item { id: contents width: _isVertical ? slider.height : slider.width height: _isVertical ? slider.width : slider.height rotation: _isVertical ? -90 : 0 anchors.centerIn: slider RangeModel { id: range minimumValue: 0.0 maximumValue: 1.0 value: 0 stepSize: 0.0 inverted: false positionAtMinimum: leftMargin positionAtMaximum: contents.width - rightMargin } Loader { id: grooveLoader anchors.fill: parent sourceComponent: groove property real handlePosition : handleLoader.x function positionForValue(value) { return range.positionForValue(value) - leftMargin; } } Loader { id: handleLoader transform: Translate { x: - handleLoader.width / 2 } anchors.verticalCenter: grooveLoader.verticalCenter sourceComponent: handle x: fakeHandle.x Behavior on x { id: behavior enabled: !mouseArea.drag.active && slider.animated PropertyAnimation { duration: behavior.enabled ? 150 : 0 easing.type: Easing.OutSine } } } Item { id: fakeHandle width: handleLoader.width height: handleLoader.height transform: Translate { x: - handleLoader.width / 2 } } MouseArea { id: mouseArea hoverEnabled: true anchors.centerIn: parent anchors.horizontalCenterOffset: (slider.leftMargin - slider.rightMargin) / 2 width: parent.width + handleLoader.width - slider.rightMargin - slider.leftMargin height: parent.height drag.target: fakeHandle drag.axis: Drag.XAxis drag.minimumX: range.positionAtMinimum drag.maximumX: range.positionAtMaximum onPressed: { if (activeFocusOnPress) slider.focus = true; // Clamp the value var newX = Math.max(mouse.x, drag.minimumX); newX = Math.min(newX, drag.maximumX); // Debounce the press: a press event inside the handler will not // change its position, the user needs to drag it. // Note this really messes up things for scrollbar // if (Math.abs(newX - fakeHandle.x) > handleLoader.width / 2) range.position = newX; } onReleased: { // If we don't update while dragging, this is the only // moment that the range is updated. if (!slider.updateValueWhileDragging) range.position = fakeHandle.x; } } Loader { id: valueIndicatorLoader transform: Translate { x: - handleLoader.width / 2 } rotation: _isVertical ? 90 : 0 visible: valueIndicatorVisible // Properties available for the delegate component. Note that the indicatorText // shows the value for the position the handle is, which is not necessarily the // available as the current slider.value, since updateValueWhileDragging can // be set to 'false'. property string indicatorText: slider.formatValue(range.valueForPosition(handleLoader.x)) property bool dragging: mouseArea.drag.active sourceComponent: valueIndicator state: { if (!_isVertical) return slider.valueIndicatorPosition; if (valueIndicatorPosition == "Right") return "Bottom"; if (valueIndicatorPosition == "Top") return "Right"; if (valueIndicatorPosition == "Bottom") return "Left"; return "Top"; } anchors.margins: valueIndicatorMargin states: [ State { name: "Top" AnchorChanges { target: valueIndicatorLoader anchors.bottom: handleLoader.top anchors.horizontalCenter: handleLoader.horizontalCenter } }, State { name: "Bottom" AnchorChanges { target: valueIndicatorLoader anchors.top: handleLoader.bottom anchors.horizontalCenter: handleLoader.horizontalCenter } }, State { name: "Right" AnchorChanges { target: valueIndicatorLoader anchors.left: handleLoader.right anchors.verticalCenter: handleLoader.verticalCenter } }, State { name: "Left" AnchorChanges { target: valueIndicatorLoader anchors.right: handleLoader.left anchors.verticalCenter: handleLoader.verticalCenter } } ] } } // Range position normally follow fakeHandle, except when // 'updateValueWhileDragging' is false. In this case it will only follow // if the user is not pressing the handle. Binding { when: updateValueWhileDragging || !mouseArea.pressed target: range property: "position" value: fakeHandle.x } // During the drag, we simply ignore position set from the range, this // means that setting a value while dragging will not "interrupt" the // dragging activity. Binding { when: !mouseArea.drag.active target: fakeHandle property: "x" value: range.position } } youker-assistant-1.0.1/src/locationdialog.h000644 001750 001750 00000004226 12312451003 021273 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef LOCATIONDIALOG_H #define LOCATIONDIALOG_H #include #include //#include #include "sessiondispatcher.h" namespace Ui { class LocationDialog; } class LocationDialog : public QDialog { Q_OBJECT public: explicit LocationDialog(QWidget *parent = 0); ~LocationDialog(); QStringList list_city_names(QString inputText); private slots: void on_searchBtn_clicked(); void on_quitBtn_clicked(); void on_okBtn_clicked(); void changeSelectCity(QString currentName); private: Ui::LocationDialog *ui; QMap cityInfo; QPoint dragPos; //判断是否根据用户输入内容点击了查找按钮 bool flag; //保存用户选中的城市名,方便没有点击确定按钮,重新输入城市名字后判断flag QString selectCity; SessionDispatcher *sedispather; // QStringList geonameidList; QMap yahooInfo; QMap latInfo; QMap lonInfo; bool yahoo; //------------------ // QMovie *loadgif; // void startLoading(const QString &loadingText); // void stopLoading(); //------------------ signals: void sendCityInfo(QString cityName, QString cityId, QString lat, QString lon); protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); bool eventFilter(QObject *obj, QEvent *event); }; #endif // LOCATIONDIALOG_H youker-assistant-1.0.1/qml/func/common/private/ScrollBar.qml000644 001750 001750 00000013274 12312451003 024432 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import StyleItemType 0.1 import RangeModelType 0.1 Item { id: scrollbar property int orientation : Qt.Horizontal property alias minimumValue: slider.minimumValue property alias maximumValue: slider.maximumValue property int pageStep: styleitem.horizontal ? width : height property int singleStep: 20 property alias value: slider.value property bool scrollToClickposition: styleitem.styleHint("scrollToClickPosition") implicitWidth: orientation == Qt.Horizontal ? 200 : internal.scrollbarExtent implicitHeight: orientation == Qt.Horizontal ? internal.scrollbarExtent : 200 onValueChanged: internal.updateHandle() MouseArea { id: internal anchors.fill: parent property bool upPressed property bool downPressed property bool pageUpPressed property bool pageDownPressed property bool autoincrement: false property int scrollbarExtent : styleitem.pixelMetric("scrollbarExtent"); property bool handlePressed // Update hover item onEntered: styleitem.activeControl = styleitem.hitTest(mouseX, mouseY) onExited: styleitem.activeControl = "none" onMouseXChanged: styleitem.activeControl = styleitem.hitTest(mouseX, mouseY) hoverEnabled: true property variant control property variant pressedX property variant pressedY property int oldPosition property int grooveSize Timer { running: internal.upPressed || internal.downPressed || internal.pageUpPressed || internal.pageDownPressed interval: 350 onTriggered: internal.autoincrement = true } Timer { running: internal.autoincrement interval: 60 repeat: true onTriggered: internal.upPressed ? internal.decrement() : internal.downPressed ? internal.increment() : internal.pageUpPressed ? internal.decrementPage() : internal.incrementPage() } onMousePositionChanged: { if (pressed && control === "handle") { //slider.positionAtMaximum = grooveSize if (!styleitem.horizontal) slider.position = oldPosition + (mouseY - pressedY) else slider.position = oldPosition + (mouseX - pressedX) } } onPressed: { control = styleitem.hitTest(mouseX,mouseY) scrollToClickposition = styleitem.styleHint("scrollToClickPosition") grooveSize = styleitem.horizontal? styleitem.subControlRect("groove").width - styleitem.subControlRect("handle").width: styleitem.subControlRect("groove").height - styleitem.subControlRect("handle").height; if (control == "handle") { pressedX = mouseX pressedY = mouseY oldPosition = slider.position } else if (control == "up") { decrement(); upPressed = true } else if (control == "down") { increment(); downPressed = true } else if (!scrollToClickposition){ if (control == "upPage") { decrementPage(); pageUpPressed = true } else if (control == "downPage") { incrementPage(); pageDownPressed = true } } else { slider.position = styleitem.horizontal ? mouseX - handleRect.width/2 : mouseY - handleRect.height/2 } } onReleased: { autoincrement = false; upPressed = false; downPressed = false; pageUpPressed = false pageDownPressed = false control = "" } function incrementPage() { value += pageStep if (value > maximumValue) value = maximumValue } function decrementPage() { value -= pageStep if (value < minimumValue) value = minimumValue } function increment() { value += singleStep if (value > maximumValue) value = maximumValue } function decrement() { value -= singleStep if (value < minimumValue) value = minimumValue } StyleItem { id: styleitem anchors.fill:parent elementType: "scrollbar" hover: activeControl != "none" activeControl: "none" sunken: internal.upPressed | internal.downPressed minimum: slider.minimumValue maximum: slider.maximumValue value: slider.value horizontal: orientation == Qt.Horizontal enabled: parent.enabled } property variant handleRect: Qt.rect(0,0,0,0) property variant grooveRect: Qt.rect(0,0,0,0) function updateHandle() { internal.handleRect = styleitem.subControlRect("handle") grooveRect = styleitem.subControlRect("groove"); } RangeModel { id: slider minimumValue: 0.0 maximumValue: 1.0 value: 0 stepSize: 0.0 inverted: false positionAtMaximum: internal.grooveSize } } } youker-assistant-1.0.1/qml/img/zh_CN/quickclean.png000644 001750 001750 00000016550 12312451003 022541 0ustar00saucysaucy000000 000000 PNG  IHDR-]tEXtSoftwareAdobe ImageReadyqe< IDATxbh~  (-_wd4 " L@ |0„@B @?p3T#pF ubaX[A',E~* G>aXATEb_ {feϰ1u ׳hBfFˁ|E8c+ ;/cpQPcia,^gPK30.k0! LHÀL/G0,RA>bd jFh`$?20prF^T6 #A*ء) b22gbtfR `6H C諸=`Hd3!F46.59rԡwy 럱8V1BR$pGcx Ma_FT`<r7(U0Lp!zFC~q3H80l䈮 gu&ǰ7Q}[ޛx1޵!HڳO` B`WGyTEFu8XZH٘Cݝ,ߝ!B7 5#,, ,%*00*3{aà ـNfwH%_/9aeDY+g` -Ȑk0&42B <\--Ip(+(b 0x_a` UDEϛ"`Bt QnڅBRwBƥpQ7BAJ@Q/ҘҦ͛y_3&o̙=ě&zˋ+m *êLlx:]7pC4i4|[$ěG?6 . _6)Kz { ANkN;[[0t]^ǫ6玧WfSewyhAq-BQasܬ=u6g/&F*%LJ0] }Zbk>/{ZDE )PR3#1ܬppn=P]Ԩ#1ʌc_pQNb9X,EmX򲔉T [kFtHhc YՏfk qVK{*~.GdW;UQ%wVz.m.ef\9,p?E4'U[MºWu~E--<n (^SVAVLi90$-eVFTӇF(ݐЃ \@O/-å[;7-kVE3`7Z bi'H@L|0F# iț &MI P*?Ԯ mugvvΝ;$ٹ3swΜ\w_K<ILPh9$+oi]?>1<*b5X~Sq6d-BulcE<ݓ-!(:fܺG8 F!t+gG)pyf&'QYCd8 |kj"\UƂF~3!܌n0E+-0f._ɋW%]Fzs,Rܡ(AV!eudz0rt΁cx. \Fav^r Qss ۛk*Rj92ævwSF=F-j"mzmCC(O$?,L`z)7OlύZJ}O⃹ܓLJQ8<vzO'cQۚR+03^X]RQǣa02qEƵ%V}×ep >s변V} 2RZ[A )Hcd?U%817~xèj"V:ߕM1c΃?:p`G3B_\=b^|V=O5](:&knzHL:05fo3aO"&/cHEhDGQW,ס{"g^`w_'h@~i5jK% 7xdw/WԹ+%oy fۓ$3ZFLI d)ή$աʝN*HMSAd^C)j]{[.>h^-t1;5!Tp3Es d$idD$sʂ'0 XDA#HsaD`'J)Z@1N2z&HI]Wv2 M1T-3CyI,C1gb'bWVGH9ZһK FQgK{=> a(XJH%H5@$DBa!BH@ H PJB{qfv;37G_L3*/q5r)A'LfI($z"s0AGyy'0K䠵+KEԬTiepAiw9ؼřAsNf~$dcdŶ2;t5$Dp٫5B_X,HܚeŔނuH&b_VѲBN8fshOdin(g\4{Q&0%21:_Xo0,%f4=S3ttp-AG3D`Bwh8α6ORHdGz[7I606]γs ~yU(Fr1\GE5fB2̉\zBov#BX2Q`C͎XWw%0ԭs,a"?}S}GNKyf1$+q+~P=Nai?fu.a-X_y?jT {?&TRT؋tTJ  ۨ)y \9~ǢutDC>g7b΄al=9WZI[?Ξ`\lxӨ{o(78/!BH.:H$@h%v@W2IQYtB/nhc}ؑ(dƛb3uKapat - -m7. ?V.<= IenlF,U$3썱DPxn\hd2#ŭ@bOcӒXn'ƗKGIR-ToØ: m)";>ݎyQl>0m_B? RW;ZN?6%F~XIz  tٰ5bbn?Q":2G.6j[S}RZX]iےZwdp1s3_w xb=sA(G`.(:d_X Ȯ7uC[.fB_\R)SnwfˆPLԕS\[cY!c?Q3=$`]k㏾ۏZK) !T YRoCH VҴ+g;[3_a̛p㍵_rxVTu1'jAdn*;WNýK%Y&h2aCSbsY%ԄB;Yꑤs7n ڰ +HVas?)s"x g٠W.aCDW{/n[?,eG,e z֙20vM"r(XZt` '$"?AY~d}=o>cPv4+rg5ⲥ'Ԕ3 r$5*L&oD5NzB+2iPDfIhL0 7{I q%F\ ͍젎mwdIfDB`'jxH$ˠLYøeQ,Rmy.UwZ^rp NJ_N%Q@6Xuk$[ߜDta4'9"f{2C|ռW!Of.8Rpm #?͂ z|0 N- ܇DwANecf;;ΜU ̵ʠ)TN.T+KAH8B|T̉cCCŊ:ph8FOO-.Rn:*ﺈY%(WC+Ǿ.Urhd,é~!Me7qv\6 G ! /=YO7S4/x ッ\m~-CBZ~EqF&uԗ?lYg\|d"kՍ(Y>c^?~ryY (;YU[-eak˱}~jEAG Ns$VDj;hQ];P_RQ^BIgLxF9FlTr ਜK4}bæg8 '+ "H`ȒFcS<Ľ1_:[_;upo^\N={(@)]8$ t$3GѶ}=ms&~rx=pNV$g2Fiu1X^ $Ԅ+(9EMj^O^F,Ă-/!4 >Ȑ0KJ4qk\7$l?=f~u\ ;9Y'z;1($ֿGWt}ыSɅD@Nz٩v3ğ;@^O]H15 A=LQjj7D[`tӑYgNVJP]gΌL+Lv|A~]oc{w>N rN'KnяᙕmR/wFkNg爐΋Dv,ߧƜ=c]1}V:ʊCns s6]GrR&g,U"pQ(R%4eK z.M X-?\ v8Rî9*֔|۰LIERQ<[Ap?Lweީ)<5DŽGQMk%$X`v*r&°Ww0<|*ƒ]M&"j):&*֜3>']ɱ2iIENDB`youker-assistant-1.0.1/qml/img/icons/dot_normal.png000644 001750 001750 00000001123 12312451003 022660 0ustar00saucysaucy000000 000000 PNG  IHDRhOGtEXtSoftwareAdobe ImageReadyqe<IDATxb`'ObҜ~s۷AԱ&brX>| $ P  @ћ7o~.^WYXLd?31@Le|Uq I-?gXpHgoMJ0Wni *3@9 0h|W~1 9#;\_fnXYc2c Ș o>] r5 _0BMb=@  gr>~0Ab 9zL[,Sbуo{~Po #H-1 z~rן ԀԂӖE+ qppbǏ ߾|0qPzWVQQټm{uRpӨžl(`9![ uQx|"|C6&^Ѱ\['Hߴ9ED\bF#]} -EpMݤ2a-ދ# 0E$#a)1b3y0ȀV0jMQtv|{a-ֳOchې$9~ a6] "X-*xJ ttE׺¿>w-Fí#눕yj¡ H}f*ݒ'w<`#p.w;< %նh\7S_ĩvTOJ-CLOqN4NQ>wǪHG'txo4^@hA/~&@DN G8q s6 6^3L, +Pu0XYYDU gS{_#l44"h0`N|YfSd.TYWPj>s:88R HN`!ٿF(LB'W!_Cy 0뿦r %h_ͷ̒RtK.&i@U+>S 3ĵw4߷O5x'IщyѶm67$`x*C!dK&E!Q:E#8UEEޗՐ<^La22}ǻb^ >%BTCG~/H\ wCMQԎGB~@st|gaGb0nҘ{DNhSVDx* 946e.Jk:Kt=ciZju`" uC =t[:5k(aIENDB`youker-assistant-1.0.1/src/alertdialog.ui000644 001750 001750 00000001204 12312451003 020751 0ustar00saucysaucy000000 000000 AlertDialog 0 0 200 75 Form 0 0 200 75 youker-assistant-1.0.1/qml/func/common/ToolButton.qml000644 001750 001750 00000003364 12312451003 023205 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import StyleItemType 0.1 import TooltipAreaType 0.1 import "private" as Private Private.Button { id:button property alias containsMouse: tooltip.containsMouse property string iconName property string styleHint property int iconSize: (backgroundItem && backgroundItem.style === "mac" && button.styleHint.indexOf("segmented") !== -1) ? 16 : 24 implicitWidth: backgroundItem.implicitWidth implicitHeight: backgroundItem.implicitHeight TooltipArea { // Note this will eat hover events id: tooltip anchors.fill: parent text: button.tooltip } background: StyleItem { id: styleitem anchors.fill: parent elementType: "toolbutton" on: pressed | checked sunken: pressed raised: containsMouse hover: containsMouse info: __position hint: button.styleHint contentWidth: Math.max(textitem.paintedWidth, 32) contentHeight: 32 Text { id: textitem text: button.text anchors.centerIn: parent visible: button.iconSource == "" } } Image { id: themeIcon anchors.centerIn: parent opacity: enabled ? 1 : 0.5 smooth: true sourceSize.width: iconSize property string iconPath: "image://desktoptheme/" + button.iconName source: backgroundItem && backgroundItem.hasThemeIcon(iconName) ? iconPath : "" fillMode: Image.PreserveAspectFit Image { // Use fallback icon anchors.centerIn: parent sourceSize: parent.sourceSize visible: (themeIcon.status != Image.Ready) source: visible ? button.iconSource : "" } } } youker-assistant-1.0.1/qml/img/en/login-hover.png000644 001750 001750 00000044010 12312451003 022244 0ustar00saucysaucy000000 000000 PNG  IHDRCtEXtSoftwareAdobe ImageReadyqe<GIDATxڴSKkQL&ѦņAva} 7ƅ >](Wn(EnD*TЦ%Ѥaܙ⅏9˴h~mF j`bЋ%JԹԥM_Z㜙`p:I2 t@*RN;A RXXvr1roҗLǶQrXwy1 .) 4 2h4MuD/= ge:آ?om2чRtr6N[՗ -U  K?K8tyqZ\*ԣ6ryj't6}GzHj(2ǐ9F dՓir|B߁Bap=L <֏it;xr{w.i4 ւ=д!*@ˀFCV $٤u\nN"3]`ǗSrZxDrlWoWnn'-F/`85q b[A?P*Z(" wo7nJЅ ApE)VW|`7xhaxu>?3Fo5yp?kq_ưDQ=隭*o]rL5x]4*i7h  sySEIm雍N8-=Sbo]|9viJy' E\22#Nq;\\n /,[H 9"0]VO,'P@-'µ@'2U:M 4c= *.ID3'*֡:w YeƋ,sɌD$A}&&/|?4He7`!d-"8YU ,y,t$ʽGu'z#+DQ蠥kCɐ[셛Å3i~S4yѲcoD etܴr[37բ EG*X6cVA|ʼjw8m1 &Eur2f X9C]HZES'z=E%tm,q#&M&Fh%oPr~Y.Q&X + 3ET9D+N/g` &1)zb% &Aي!tazo*-ܙI%O`O1a+Ɂ'xDJ(+GkE2H\xFDH1/ lHeeN 2%ڏkdk I3ڕ0,k%j(v:B#m&SLQ`1qf֑ SzlLR8rA5 7W^C@[ 4LL(2T:gχikEP äBzw@ 8pRQkʊ6[ZO"fIEYdv 5(Ko[Z;Ə*m/?֮eU&)ݘ`Cff1]΀Dp`6UtϲOj^V{hs?vTú.#U更z踄q@]րi ]u-%3͊ (Puh-5F9)"Z fYiɬٻ:djX]~BL%^ZLy=EqaeyLy naPPw"Q')Ym0ٲVD JF/&`gMZu@HjU`H?6elb\2f[j&睕9/M Նݩ]$(^L9FtЌi+je5\j~EeVBk|4-,HGOuzp>^|2J#ᴵ-Otc_pxw`/%l%`Zc7^cl $4 )R-)mVB%}JJZ*HB~U@x Ahh 6ڻ}LϽ3{T3;;s_q>g$ofӱ8]UgfKO 8!:u!Mh XǪ_!03s:'y騶V{vCQy]_ucF`{aU<7zV|ڳ<(#9hvXe%Lr*a:dKǹS tkw޹!oe>&_$l/~ 0hƘޖq a 9db{!WZAAp=KX4UZF?XfjIdL&c4;"#xSԺ4M:"nIU3 Oa"pm`\\f(6UIi&iHPs3&d+r,xd %v"2fK1y_g,;jqfWsu2e^7`$`q?1%c$iSp ))DѳAg PA3R)Efc!8k<`VZ'& ,"H HоEnL(N NJ'2.\nA7GPĉ _vUF #ق'58*YI-+({PT,.p}7H^QI'Yt' ]-EXKU T J7ڌWPhK,;(~zY%0My+ r&I[J%-tz&q]n J2V A+Kªz߂v4қYvܰ9I%S*a6a=^8||@چ~Ϯ$W?{Nt`QI>mIn"ܬ9V $h,{kU:<\;\G󀟷42$47%pW+dɨ Ō 2 E(a?.+x6bdfŭAmR(4q,̷``qv ÂI$qbBEb2]ebafaMELZ8f'12 gj#i-01n{1QÞig(['j&U+)rbo.'Vs4_hâĦ/jBU ;&X^υ=bMU.G'*KtS'Qv"tq}$%x=afυz X0v=XAE:'PØnz.N1a0w]jcoo~V|{?^][zGesp6~hFؽ ~ro><0 ?;B[VibNlĠ`7ߓ͵ぅ9HLt e*%%8҂r8̎_{0O";Ff]p4%dU%Wq^:pJmKKΕ!i,dV޼ԇ0KdEľ{YM ^V|oe!^?ێ*t` $+z0$8xϬ';Gk8b:{Όe6.re1Ə"7}~2ۜr^S?;gn96?~$wOUtȩĐ~;.ZBT/4ڰoNʸR൹07 !նMU[7?p4k.rkXPͫ;h:BcU+ 7V2< 4k;S^YUra"5>ƶFw}$]#ygs\K-íCW6Z_F8#@Is8 ŴBJ0no}oj!agrHnݴA6p/zLF l>Ɗ,\ BPtQ%}M%`pO:SلdFL[+Ye/M+!V NʬzOL&Ô'@?D'O gk!"s8_ڳ쭝gv[zm3 3C/95ֱ$z̒~ZxfQG<ղ TzP <ۿyC1r64ca$1QT*+ :=A  IFi*TٔqS&ö8vTJXǖ;"Z*YEѢ.^HI$H $@{Kw7 H+xUݝyuݘ#o`D,BͰa,nۤc bbgZ(8R,\CŴ?{uٱ;,{#SGK,Zl/z1Wy2aBu\(,.6L_PP|>Zbq[=b}ۤV qUˈ`ش#G\m?CaFڍyu)#*FLLpSl8|?,į\oX5QuYy@g?DAGίOApNޒA"zhqCrXҐ4/x/n۹5KCc`{dZ1inGsnpʎ"u( cmU|Ў7|A4U <(@T" aQA̶"̋W})u8!?2X v\1֜scdj׏dG-EW)I Zٱ_+*7 \IJyiEȯ)3fߔd:鶼!"gWGʍhPR 'sJ$b rVv;Ù(JmG}/|)X<!+!-M8NH@NڴCY{p]s14 hKCo-@K0  `FDQ5r*7*ɬGYJ>MS&f#+fTQ+H3F B:R8@'"l Jx> 9efت/থ!(EyLT8LITs:ccP_\P7hxPŠ %܋6x}*-ft>_`GjvMYCLk؄\Ps 3r&s4{ḅYsjŒeo v@%w(h8؁*‚Ay&%D%FbYZwy iqd+Ix 1:L%r DIg",%J/{H'|NZ1"tWwE# 4R&bHY5ۇ$b좖zLP֨nH'6uİ^.`p|Y5>qӃ'd*nZ?{VkV.4aSAZ z]8 v;7M.8-psmeP \a'j 0C_$/VN%4h[)ƞ&괄8[y<v&b)d')M7 y&I뚬##c2AxD[6@4#"`CSAY2S7Θ,V|*'ކ`9@$7LO XĶt $O@I\`s;m;Gcoݛ.Hݣ1xPyޝz _Qؽ~BJn{'<ޓa83ʄZyKx#pg|~peT Ƨ]؎tpo΄5PU£演N©a,5mvA'd< c1$lʚ*H斒eEiuf HJ `7t"e)>sEm.}y)TӔ>RH'@{2D;5uf^|p7rgkC\aSF eh(n<9?Z߀;yv#1jai4@S4ݰϝa MĘjBEȷT Eݹڰ+ꃮܳq!?\8VNAG@YX˃8!O~ɊXVRKDH bwh{ts.28eY]kt:͠Ksț/uBט$ `ۊZ>m+nme_ת"Ud-Χ[x[J--C$aߏ3Љ(s׺b٧?\Yǟ,jP_K᩶!ϧTwV N$zƽ61:9hku]?OOqǎ1u^;uZ_E,j{:ug쾱:":FZZ!S*T0zĢ`gmuRHD܃ e U 7>8\'_Cy59Rܼv\W(\uH, &3U2Ce`I]a+Pv[޺ JP}0/ܱ?f) p*E^xt/CB'DqR;DDRۣDGחRZ3/jK]jvs=B~F1l__n^$ >ܴkM0=3TY O?{nܲ^¦`2+emfL(i}M1 9iJ X dwny3e7$/`02--"4k+}g#@ܷ6/O.gO-CQySKjw޽'°yi=, }ׅ xr6~>]GF8`Ep)*[Oɾqu:Ec?%~XΡ&%H 3 g0kQHe1rT/*>T(S lۤaM4=k7B2r\k6FI j~n|'I~f;u$HH0Rf7%5ߎ4c׋LQ {*;[7+l|~$k&]5i.%ۡrV Kpľj4-+F6Y3LiӔ i>Ϥ209Gq(jJG(@ M"/].xNKΟ]+eLʁB a-61DATy&,%}%kB`T7AkWJJY:a)᮪uC!)VyWETss8vM(VPۭމ,mN> n? On-?-l :$gG?5q+~YHUye&T'xuDGY V nJ 7\`9K-Օ94]#OT2P#Wh+Ʉhj&+\&9w{ίy!.f2,(Yx|=62sP[-M( \`l>$snXFvw<:LVĻd!JGC6mu<KJ'˰"u( Ɋ\؏߂&vσ6+R35p$Jenp ;Lx ~6'2fئ m "c8ꩬ1eJgFx[ǦIq%#EM@ϭa*_WI )c #rf7'H!Mt7{y=$FSgsX-sBw?Y mƶn=vp(sjqyU 5濼~>2<7ki { e 2 =hs 6.bJkcew"|GtҎΗCvm/ R7Q"!ѦQLd\93d>SoA%9kcQbM޶j0^wNE a1i(PjHМ0)euWF=&>*qs 6TTjoXlln/2lsȨׁpƮX^dwS%35rs 6TlE/\W`B]Ӟ]^X>|i\V.Bx9+ T9 zA<'.&dTaxL S/tgA /A%^qz#-t|Yѐ B!/P3؏?^B! mϹyy$9zaxϖVEqdc9&AŝhrAѣla%cpAۄ3&a({!8{J2fq[7< D b`Z&_iJaM2$' #v5\SB"823y85R) ', ѹ7b龩2|W!TBJ,dy-]0x !Mhh[95I3ҸJTjMLRg Į~;F1n=sus_tI2]PO[pb̃eԒ`C1i]p6騼m5L~^;U(C:S&$ӑ<fp6wpT*HԔag!JmsӸkh3*2ӑFs>qM;Ģ \]T&1Kr)i gSEmw'”w'İK= ZdyU-BV+B)U-Q r9+B$,kqCQO d# Ղ$@4Z 2??; EBF XoLӂ.3LӉ/x,UicXG1!s\81V%D)xTLM!Sψ0ext1Mf0pUh+OFj^#  Ls҈?^{q5x0Y#kJ@n{іGWTmҡJ- ܆'DQ}"#*۬yjr( agR0>v3S0gڠR(FgU5ҳ4!_5p~|'^T-ӫs-T3]豌WkGEfexV?61eB7EdUR A^";d%4C;GuMQC&oqf& 0ִ}hZXŠAiŵ7 OVmK(%F2pɢ*q>!S"$bXZ>xe It6b b|,>D_@2FFMW#Z'phnD+޶?[ PEb2[鉡3*Nd3E"9HW]ǡ'܌!j*_Erv hƦ ;soi'@v4+;S׉?yr&dZ у0ys^EY'ÞHe4~v SiY͚вd̆Emn/w{-lq`fY* Ukpʠ{ JȓL ^ a/dAW6}EW-NEa\с!wt/ùG [#1F !acSb8" \\+ |FhKp9BgS0 a\qKJڣ{ ޺P|s׎cPT$w Km(é7=!qŢ&^$ܰK#VJO Sp +Oy 8:2#3y_1So%;ısZOK NTo-na$˗uJRc[qxV<go46mzfe 뮗܉&DI(4>TQ\oGCsp 95i(K(t5 \ 6 ᰩѓ%5, e\YsQuJi<hc Guˍ ry Ejb,rPݺnEЂ\۱{Gl%T@[PR1$-{Qd'}OkRa]Ǡo<#&t7'1?;{Fڕ-&l@}^+)YjOHnHxfFMԍk;(=?*Ń}(m lG[7 p}YYZ4 iyb,;^rwF+f{cq_blnZKˑaeN R!`XVy.KQss]3s( jQb]&|X:nʖ4)J %Sr(6,2b&a5!$iš3vM?piApiMl0 ޕl"37zJ|$\P\GUoeI@r4dH(ݿS49&3{wD4t߮fZܼ~sh;ܟCBC}e?*M 8h9 uHغ v =I+DqO)mI`''| ~'OrX\R} Z|Q(buVbTQ5cssy0-oKIbWǤX:" N `= ]x,=-BUuY(^)^wL̔Lf|dM= { ad"0y"9Lj.l@OD$ +ОhpHTx@˶07$G˖;. #Cw=ux!.T?6ڧ iF@GDN+`d½n]#Mt `}x4IzfqMIC:g JKQDՉݛz !w \UȒNܙ܌/)TKYP>ep!߽}P~nVGu5~LB`t:ϟ*0<47nSL!ǃeK„%2]Rqfuh4D#-+] T\LnB)FgZSʤQg'﷯^?^?i4_嬷[h E!^bz*0"$] irb6A-*K NA6DIs13 E淮*BJD9hF7aI2$jEƾ3{O^wU*z^:nY !ub=TIbLJJB^aA PݍGis5kW}dFs$іsƬ޹uӐ|]04#3ےpN1kWv@iNӺC$9zPNdjwb U+v@Ws\՟*:X>w,N\z8КtڅlITFv ޾eAhnGhss7rE0k݆r$V:4PM魵n|:K҆9.Pi(S(݄`Yb[ZZv}g ۣ`|hλnASUzhiVIm?ɖ3nm|wS=|ukTVUI2/<iPHxu)Oa&N׆/ޕW__vйV|!,@} ڊ"9{0e]$,9h)҆r|Q[j2B*{Nq78s{Ac}Z5BX Rtsey}p]Uk-A)BaHg3`5Gu*=jBLj#J?=cxc!IA'Sű]SO(yAHgRX Ww\^cZUi|XyK&4k>* 8 \!(5șЕH쬳A76\x` |fBI0)[ ?EEj)-Y[uYAļ1 &@@{[G+n&׸9q*5f״L G1,\H0/{77=" s4Ն( ۣ㰹;)Pj'?| G99W,mvH"Z!)K0K2'2 Gs;"f:dZ-י0vý+s';PE]clqgﱢŁ:sjTլ5YAt{\pnjO)qxPpqT)Lԁ&PF$<7hO Br5-g [o\׹}MWh;AcFrr0j| >5b^+x< Y lT.i) 5;BU<)Kw] $5pJ]0ϢyZ@8L`8SJSFQhԂTf`"_lMaQ1SY<48̏L|Am$O*7]\=c}#r*@1R,)PII޽{:)))xāa3p R&f۷o:pߏAaÇ ͛۷oOa=薺yzB#JX Hl.hbaP @̏SK0!\l8ղ 0-HD9888)kY ;;;-}ׯ0[ngh$p2PveP˼^,?bdM,r9rD폿}_C>}t _Abd(.]4 G!€@K Rv UPG ky楃 I&i=#b)(@H0`y|l%rU LX- |5R8ЀX:Um"! pڠ9 65j儖p|uPԁPlBL&`(Ѱ'<4핅hWO(d _)>w|yy|||^lllQ@ѡC:KKK̀ݻw ^^iF,xxx|W心, eeggJ @+,.(5X/̿v_:۷灞4x7ndڵ+ϟWMw܉zr DH˗/waP,.\p :ggeaaQ.\KvUr.WW7[ؠ AGe]3PTX:uj֭f`aŋjPll&s[g6 jj`W/`D`oǗtz??(DaK]\Ze(9< " gGݍ LFl$K+x0 Ba ":t⡃I=,uK,X d2y`B9\, i1|X), o>NBAFGG َtww_;;;oħ$;V]Vg@ Sp(rcێLժ,zdYlxaX*PK| .[^`t V|[ǟ|tjMImlꕭ!eq)*fHj:4¬1  sD{jM$]P@Sh%Q VE0iaUOOXY0ž&g~~D0I.z蚔4:6;;;,֏܎ |O*Y U5+!8} 5ip8}Gч<Tr2^5c,f8+7:EWX,v<k2{FOKiZw70XuN!.[ķ-Ya Eԭ% Mn)Mceh  -^]Bt,_\8i/'ҺB#SP[oL[UH(@0AN b$d}/|dL19C>pdRJmXi@BS![or^z{9>1/Ǚ`:lզ96`>6Lo2 6s19͍:'3ˆܻwobww똸I& mJUHIs*:[&pa6uSm= ;((~qxxpI d8啰 (--fgg9zk Wk:߾ܕJ=g|$bvelV(*̏(9k?}ʞ>jjfMF 1 coxxhhGKpppiaaa>JpnlWWWl92}΢ݱ= C*xcsWl*ut?Z#`dcP&n9&C%21K)T5h w3mg2%B~+W{4]2ؾ/FFJJJ,*++?H$VۋTN6NJ>݄c7B=(ܳl6z}p[KLTl^d,YV!v[EꧭgFY7t05sZ;H<(>rsZ≪~{M^1<sO/&^dbs9q}t''Fr7mVޤHtot);("?Q;:Z(N ܲwnf"E srr^ %> ~ E1\듮qvko7#mLq~(nm[v> bNl?{+;…F|β;DK,aʀlB`krrruz;㋊$/_f l322B!_W>AYro2??D&eJ])++k"!PdP fE dhdsQf)pI)VΜG9bEVm_h?g>QF{iڬRyBB‘K u}TXgX́iu4A1+a@ YD&μP'I=șN~wMy2IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/slider/000755 001750 001750 00000000000 12312451003 025750 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/INTEL.jpg000644 001750 001750 00000016465 12312451003 023671 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1 AQq"#$2B4a3% RbdcD6Ww8 !1AQaq"B$42Rbrd%5(CtEcsDTUe&6F7 ?Mؒh˓̈́Q3oc& |N8&mp]a%P@c P, & }aioG=~FHzCtSP=#q阧( Qy-,7c w>$xLXͬ#U݇aq ɰmpt祆N1EV-'D^<_#A!(p{ zѹ.uw~7u=5lZ^Lp?c(^@m kwu> KP ;Z ST;Iyޒd9SU00NjEi*sL̚^iyyh 3zs7ekT>'؊L@@RᵫKޖ~Br޹/w#UJ{EQ7託̘}X!fpV>ֹjt\VI.Y#uydYz/^m"fuKݐ!i©RWKV f]T-%z-@RU4=Ԣ끻 Ukwx?Z:vِwG]TZb00U(Î.c6jյDBjri81bAp|XI^+5ZMؒf&,l1 ս֪ f;LeQ%cg:zevRGeQ(.{.;%jNKLwKyysHm]AUѩYet1mc4+Zf 6[.J.]x^Qn2sJkBV" sۏ ]"OTPɑ0.˶0gVx^0QZ1Ar mM/)fS*W Šԕ)p=@nCٷ)^pMx|QVe˿6+ ^ۏI2VüRс 2>M-a\)8lL[b&Rj*ftcٷajtl1y_1 J~ka$΍C"vJz+ eeVy3 XG=[(ƭQJӮ>#iɳTM06eVE)fpxBŒ!Tv\IfJ]ĥ@+],rp/%Q%H%Z mF=`b0qr|8s;11sϋs>Kn^omw)<} !ۮmH6JXg-vF48?H*$Mm ij,\MM4cYm%2lK)DOWMMGdۉrޘO&aJì+cES&8z7ϗqH^O-sc t&8d&7CQ/S abHtb YVg+f*ۘn"L* f!n;DEm@&3XkMdSe1%LyC7r"!ݤ]ij f&_LJ$ "CPtNʮ+*ZH348; |bNyךdPt Ƌ *5N)KIa"Gǖ{3ZGv{GGQXc+]꭪5q]6P9.&.kKdשiiGgv[.(!fTVG/ac^DD6У^;_Wf̙E?Iy l{wk&`x<t;T֟$<$qsjt6JRqGHs&ZT}..;jW]k HnV_zŗկr5HNQTymk77Djۘ9f*;(U_p]K]]y%:&n1`K5w}$B&P8:N, Sp y]U)t%&?0'͋:ّ.ˁp{iN>z:W{m!3kxm?PMƌ!LQ0qs(C.2}lSySkmkVSHF:01z{Pd44*Xk7; tjRh >a!Ȓ"ͻUңXʥ | ]_řq_EoRx d钥!Dbݧ}'#E'ow}o=g$/?wo^t/fLüs1;9?vIPjǤRy_%BnrY # - #I\Y|R%1=_76K}"emY<'1xs ŠqttۣP,Y SFAx@;4QR=b>tLxbczrLIeʔ9<6 s5=iwhG졸sKZ;KUMJ7>57= Z;^OwHfXZ>mvEk~#)2t̨ xIdFcudhSXR95%%$g^V "P ߄hjZY 2&''EYѦM 3Y8@ Bv* W%ҺJ&%dWʙa4/Uou/VeowMyg*-1Z4tn<,I6rGA:guD2՚OÖ\ZWٲTQ(dnӦgl!B+ynF4bu"Z!Rjz47i[TZ+h,ÙMءѯ/l}B|O矂"·u\}?Xk}^P1܄"'{-F g@o }oh]8k5~VM(K\W-|9 -u`Y FA8X4b ]Grn~_6y'B/GAh-7рybvKcui4STW8'爋$SQ,B&"\qHJ ~DHcKmj ;$w1 ~7ׅi&nU1wG0' ?M:v>_>.nϓـ*y;9w\X_vOwN/?V'v]=.Tb1+:^⺑5o"o7t)YavӑEyʕ܎äk©(h̞S˼ONMC~&zKvTXoOeHB"%3&Pfe)nC'zmZiݫI;Jw`FF{/n\ѭ6l-E'2=1rgQKavMBح=l|I}ak!󄖪_UgG[5LLS83CŠkOoZU*.JΕPyKD9~ikQ;VK26mn3#_1EQw8xLZy1ݗEͻUV2ʧJM/I,1ek7Ѯ*B>o wB飄O uK֨ett$i$=&x> k{\XU..2@pF&CgȔd'}YP_@=JieW K߽jۨRaZĶvL2h;>W901tڕJU@fo6/;JW*{;/00/^_U\"TZMXfP\p\bX/] Aw6ۦJXRX3 bRd'nZZ=~+JcyxKT]S!Gޜv> 6T:j^lIt ,5$ oOY[]&n䄠yʙSqy10.\S+DL7B/c2th7Z=# ߈.y-C暢9 . ֊v 3p) >^kEbkڄy%X!/;kG <1aN2~Š \ػmoӃCGܭԹk[ "46qjR?p04MI-bz(׽% v_THWvM)mǟc81m1޵2IaM. wQ8hhBN7 YZ o17YwPCirYe ï{.6~^gj@]RLT8wG9|v=R * ݘQtH36TEmUg4j HJ5רC/98ə i^ AG8b%g~ Dx ƆJMj]jfLM8&aO!7fpMv67Xo䳂 863Ã)ZC4i9hmJƪtg0a9yjyAaMs, 7Z=YKu6MډO>p#LCh\M^Pn8zTz|;廗OgMp!:WkkQF5mxD8ME+9zuy]ŤP(f{Q4%>n2ѽ6ӺF;" 1/v,F>*W,,  } YOY^FI`QqkvtnuNtiۙ unmRCdN^ҙL0lL'x_n+BqR"\>Q1VLO8KS|ظ%;:Sp.t OS mMیDZH}%ܵ&ѧ)vb ]efYKP|@%xMY]*2̕ax |Dji$kUc5,l<2|)i>$0!wdTƚhcwm=ޢHR@q?DY_x~sMjk.wFR (V #d¬8}fU0G͉Tm>VU>P< aQOqOBx#,ǬFJ5!i-Q}$K({bދAtݟ~gHjMC (zHyn HJuߩuU)5ǢJiS@ HfMah˿>ɰur])-V]O[ؠXvS]Φ"f@Nڥn:E:6E !/)Ch$1֧u=?RSC,ytc4Դ뽬LWP Y,uUn"QX16\WMvY f;nΆZζ]I"l(ɵAw>AZOY^FIeɿ (/_>Ƨ5|a;~v\?kf[`ڟu{xay?JaOƿɟy]γo{ Oʃ ns?!|o5`wւ~ݽu?&=^}nϟ?N}K )_T|#nÇ!P2~*U?c mwEzZ.8b8`!. 7c w>$xLXͬ#youker-assistant-1.0.1/src/suspensionframe.ui000644 001750 001750 00000020463 12312451003 021713 0ustar00saucysaucy000000 000000 SuspensionFrame 0 0 265 288 Form 56 151 51 17 font: 9pt "文泉驿微米黑"; 10K/s 124 151 61 17 font: 9pt "文泉驿微米黑"; 20K/s true 200 149 61 21 文泉驿微米黑 10 50 false false 16 16 100 100 116 29 border-image: url(:/pixmap/image/accelerate.png); 25 30 31 17 font: 12pt "文泉驿微米黑"; <html><head/><body><p><span style=" font-size:14pt;">0%</span></p></body></html> 100 45 171 17 font: 10pt "文泉驿微米黑"; <html><head/><body><p><span style=" color:#008000;">Computer running slow</span></p></body></html> 100 70 171 20 font: 10pt "文泉驿微米黑"; <html><head/><body><p><span style=" color:#008000;">Using 'quick clean' ?</span></p></body></html> 44 182 121 21 文泉驿微米黑 10 50 false false font: 10pt "文泉驿微米黑"; <html><head/><body><p>CPU Utilization:</p></body></html> 150 182 51 21 font: 11pt "文泉驿微米黑"; <html><head/><body><p><span style=" font-size:11pt;">0%</span></p></body></html> 44 263 171 17 font: 10pt "文泉驿微米黑"; <html><head/><body><p>Used:</p></body></html> 157 263 171 17 font: 10pt "文泉驿微米黑"; <html><head/><body><p>Unused:</p></body></html> 135 236 171 17 font: 10pt "文泉驿微米黑"; <html><head/><body><p>Memory</p></body></html> 92 263 67 17 文泉驿微米黑 10 210 263 67 17 文泉驿微米黑 10 44 204 171 21 文泉驿微米黑 10 50 false false font: 10pt "文泉驿微米黑"; <html><head/><body><p>Memory Utilization:</p></body></html> descBtn downlabel uplabel fastBtn ratiolabel title1 title2 title1_2 ratiolabel_2 title1_3 title1_4 title1_5 memory_1 memory_2 title1_6 youker-assistant-1.0.1/qml/img/toolWidget/chromium.png000644 001750 001750 00000004432 12312451003 023361 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxdW[l\W];/qq;qMH)JB"T@ ?HH Aj%JE *U%NS%CK7寛"^r.Ëpyj O5pkH[ oPԚf$ pjJUߋ#q>XC/ d"4D%Nyw>3lVFz Z)LQ<$[?0/?};R-$"_^b&z-W:nvbu2+{y >]JnF B.{X^iXG3n|Z,`")au@I=+n1=9^K=g/iT&4*\!K@'hnɂPOD?ZʝU1rQW=`DdEѰSzvIR,}&Μu#@?MF f!N5K:BRpA1G  O:eIbN=pHAP䑄<]sc˒o1e4C:Y[# )k:xuV*|'LL WtPD%qsCB]86v2F`Ve~sxe2NEd154%Kdq_(~>mX~JGRP =zM9:ǃnES%Nvn _'&3"yE5N^̋E8,,+'-sy?.9 \?.yuLZGsFo]Zťr1Pkdצs&* ?I#ٽÆh`P|)^Zrqz(~ļ$uzƺy_0תH=IedQk@m` &Vv1;H{=NPlؤSzNT#ƭ0EV~LO@HWsl92ͽ((\GL٩Z?jDye#IVUJ H P68?s_}YHDUuX@Y!6"{-DAitAASO)8$ TNS:LiQg9 x*Jm'㘵PV*XVak`.4ћ%as5++%݈(%3Ο&ɢ7~TUYhh>+Q:  [$ (On>]Qqյ674?MXƄ+5d㛐ܢaT<\>Ɠ:`1.Zd"_ `V'.join(tmp_packages_list)) return spare_packages_list def scan_spare_packages(self): cache = common.get_cache_list() final_spare_list = [] if cache: for pkg in cache: if pkg.is_auto_removable and not pkg.name.startswith('linux'): final_spare_list.append(pkg) return final_spare_list if __name__ == '__main__': obj = OsSlim() obj.get_spare_packages() #obj.clean_spare_packages() youker-assistant-1.0.1/qml/img/en/quickclean-hover.png000644 001750 001750 00000026606 12312451003 023266 0ustar00saucysaucy000000 000000 PNG  IHDR-] pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F"IDATxڴ=Kaڐ4XDKQ`#h"dCA9E5DDA`iDQDīy @sn~oZlrVsE$#`|xg]t\ܮVJHfAM8ncfkGbRKGRkvg׺1=}qF¸]T1 22-Li=x`MMBҽ\AEðRMaa=r x}?B ԕϋRQ?W[& m1= J vYi6mb6~f2A)X/fp!fҙoe.qM4ힰ[taӈj?wi% Һ.ϝA+#!豢l?$_VFPS4Kesa?w6 L6s ÐԆ1Aw0us#tP[D.‹Y-Ԩ̈́(-ϱw{W9_ʇ5 -:k*0OuׂL="(~)-ntӂL.Oexo$ݴњ1Nۗ}$Aj+ZD Hj)%Lr284囨$Bi4O8ipp}9"UmJx$~ԗOHQ?o5)e aCf!ѥ ZXtQb fX;B`BQ` D0;ofwū}~l0xkRɹLWe2()iXL +ZBmHywXf۫_\.<k#cJ.X[Uu]dHc6S}{Z}S Px(>?azy*@jMS>iஊ\#]n=?qxLr2_+-^ղ0B@/P5?ťR loDh.I >];{/\k)S6g=PӘqFC7loJ?2$0ZI #)Kzr uy+4VZS79>K35eD֣4>2h7ݟWw}+BcJmM,¼-KBcψk0JBKg 3N~;QHcUƹ;c-! w םi.I>E-l״ޗ5=r( TZ<ьr@lMuTn\(vr Kd}L~߾*du0glPޯeD^xVk{l7qVKt`?[lUg-ݖek ڢn[BZQ|M#/j"HQ "Hx$D@( f+R,@/twvelsww#Ϳ]V h-]bWĚ?khȰ"8.X_|5(>R{7ms{Bl8&p&>_Ui,¤/ (D/Mѫq+D}(jZF;:n(LfM؈+E 0 b2р6)t#ۻU$\] Wc֔vurkWCy nQWIG~_\Fsyb*~d3dxhb}֌b&=@Mt1XG*rkv!J ziYPT4cMJ&1m~CXS>-B<< }7d͡&NsEEXWv-ĺm+5LTo}h^B& ega 43Ҷ`lwM4nɬCM4n'Zo-4|qK+a}-UPzIhʝ~2.=Ic _VQ틙} +(SñNnrq,}>fp6]qR ExV>м78e]5Θ Eщ ȩ[ zS\SU{Oh}`[]U!Ķ l"%!{dxƺJ ;oR2[:&w3V?G?\La EchVٹ>E W6:ӗsŹ&?]JRvuYo' [@TX#Y< C>tCR2"s &bza0F8`KW֍Vic,Cd YSFA {`KC3nx=}FEZS:tLHG>pߜ˄OkyExeJl^_rs[DraRj>"ʋ 1M*R]HǨEX" -)M/CѬrN1]Z}46 $ F#LDt j@ o7TpK V-rm#λ :] Q$ia~7=B7iFeoa,# ? .cR vR6Xv5(kA  8(ڀ76iL4uKDoI3qlcMڤYZ/c1X#r"`yٳOy=gyw]lDqE<}KPjMa z%XI.jpE۵=%)VPQA J++8m}gR}%YAFx?zR@z K/Vj@,,Cz/&?Muq>|uOʕ=,XHN%3{ Ħ\tou& jjt+BrV-r1:tGBBP^3'&$$0wn_v(ѷnm]@<ՍT @.g0҇_彎tO0}&V]8F>KoK ;O1Y޹t#xfȄ 228oU8 #<Ĥ}.TP( +cTe[LwT'::RwC io4$]$ ԦFr mߞ7-#<2K:ʓ//Ԇϲ1f bQ1iK:]FWRF"9 ϓ;o(Ik)XAҚl"Ǔ3#oeJ$7bv evάb2;!yJh3{X($בY6R;^qK&PWRuyoϻ|W(vbA.վڟ`}'Oz(aBYՋ-angyZVnjT 2s\b3m%%6Qq,%%ӟYhlG)vt  I׍!riFgt 0pntùhf0 Oǹy"Mdu"ub #W`D?ah& Ko@nXd_2OUr~#ȹEp*I1εZuލ"f`ȦSŃh8Q ^eCυ^g1kNg~BR[7GTm,2 L`u|V ~V[V2oº"eDzE_pzwϷnuP7߆ubg?R~G9-*kLDZ9smED*&:'Uqm3Щք`Yxf5s~b^Ww aozMȪ{njMڪyuKlBmAuyEEnwa2D&ɻ:鮮Ft#kkZhҨ~uef᳃uDAi2/"uqiU~}nje?G qKw =DLKbnUJ'㹕9IN*W~yaVP/7N1D9fڦن?iT|ЫҠδi !#d`~ee@lW:bqTɊRL3d3}.OK^J='Zwˇ#5?-Um6fDf8b/!٬Y($zlic bYU.گzWׅ &]Mmt,=QVIxXqA7ESݛu/^ssu}')lS^|/\:{{źߎydR|W=kp);n*Fa7LWL> hw) U6<&n6.Fn?Bc3)=Μ\FaƠFXϲA#@Q ɽEJ%O<3%)Dp]@eZy#XNqtx_U!q +t031 i,@5-eykub H={} 7C%{e#Vc\?ShBq2vP0 JomB}ԒZ!r(pk7΄VOE;Yo \ e-?)inV C(0֙_ >%<¨8zfA:5xlLZ{p墽ʝm8;L.h:ߠ.RvUsf+ӘA9ZZKysMiISY}lA@k?NqFI">2JG!ȌpVhP'J'Dkj sB&{G%-Emk-?̖j0dmd@5|t&&6=+jn*y<<6z^~ZNlU"whڧJ5k<_TepHcJwi` 6,8SIhuCc ~!@AvsQ> b"yOq/ج9n r>xa28ڛD2;r`g_r~E94uVDTj:k`Z&fZO_}5O̍DOk+fJJDY)߮Bpk t5ZѬ0xe4w9t\#oeqFwz9Sc5ܗn~TTnbkp'fpu\Axz6٪[6 MrK4L8ڟc-^0?D# #"j6SgkoI3,U8\~ gp:%ͰrcambI1S ulLk ("7','w[mv\b|>$Emb$/^[6r/|RJ@{&uv U;=lU&U ,Ϸ`mD5~͞Cǚ;طIoבJ5u䫪ibnȟ<-+J={کOlOήϪp0YEl?i?nȥi]WB\hİP:b£i=vϏes鄖懵nVϵ`JE$g)zDW}²N49_"N'Je3wu8kFLO;KeU/.f ͺֈl0s4~C\ʍzVG##ګl1Hi?lvҵP-aGi%n T@kgz&"@W\.:)J 7>Z{iX~ҚΓ04֬Af[vu/ SRI0%GW4ꏕouit뭢1g \_שOKe%u_z&҄f>/p GZJhqp vBhl2mgZ YoXb(PfP v,u0*BaW%互P7R݊#6M𓣵iSYF! Wݐ/kS@+tV[=C 'P?=€MBX1A%+zV4$wGEїZ+'Fb >vC /R/(HϚWϯB) u Vdo$$g@bqĉb$~NLEgRx؏d[x 3\ ?iJӵ~ 0rXy]=zqG4@@p+~@/XEIG,3-Ã3/?%1bWT;F{E`I}U߃ )d-qD:Xe 81?@׌`D((zno:$S"=aj:KJW")@H)#{O G,CK0!`z^P><[[[OT+̄BTP!B4(׳ eXy}Y&py3R![IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/MATROX.jpg000644 001750 001750 00000012133 12312451003 024014 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !Aq"2B Q$a#34 1!AQaq𑡱"BR2b3% ?M71H&ړAn>.H/A JQ$w +~҈&4e@mv@zSjfi6@HSoݩ4H&A74R yyKP2w (a@isFX$ڊ+`J>)>^fiKm^T 71H&ړAn>.H/A JQ$w +~҈&4e@mv@zSjfafRyexD1穆#EOصx-[Ԃ }ǐvS"FS}5sn2ߪ%((^vmK{OȐ'Kuv:: }=ٮ-5_$|+a$ўKxHn"7W׸L8?|jy)B4@5`YRZ)+pL wCfEy5_rH`a'ػ^}8-ڃɊuR9`h3$fܒQM$NCv=fכ:vZig ?7ͮ9i|bX;Gָg qR][׊+ZU 2:k) Ԙx'TӪL-DZfxe{"iCR g.@[Ht* !_W,@]W Kӯ2n3m5s_G]h\]r$F_CM+"/Vݣ )9<0>ʍwmWEEPb8d+C36<&PI8!U1JER8IP^c*7% v͙OC!au[~U%PgM1fq:tдI}Gf-4r:bi4TZ8uK^d÷RcqkyD`&fVQVˉ8[x{1Kľi?P8~7vGٓO)<Ŝwzw]dh9]7 *vv @Zu+ǣ[xA+=%(꽘+$;\>/^U2Xv`;֟]lR@ɪG#UgZX&bo¡FVS?oQnĵ0rʼn-š TS=ʜ?2+tgWS{/Zׇ]d/26O@ֱVPlZQWc]D* 0dpUMx};%sp8;A}Zbv\%HZ:#anPlUkOm0A5g +}gn&y}=l#fiY;Ǣ$aqcfX0meՎR徭ZWę:DݠDxy[tWVRYUqp{Xze((/ziH8ĸ|#k3inN].T#-<ƜE'2jz̸UEr:-bRgњo]5vrG|η'=Hm'b*X[X:4aћ-J2M畢@ 4^d|>'4 PWzJ'.]mYp'#7 ) ME(cq88$b ڝk1A+ܲr^B'.53ZʸTgH PP#F/T㎢ۘlj':;.A-0PR #)ʩ;oޖO:^~r1`fӯyًC5g;d2Ko*]>tS#A@RO-ԡy³zY= wk JHޤӮQ i*qfh?Վ)]LK~a$ ֊-oBX%n Ӝ.,_8lN~5!%}}Ajr<>-i)+:sSC?kH|7+r+!&IH`х DGy$C*d QS۞g69͍Wx`r/i?_Ͻ6fDJ/=n[>٩3`I& {%xђzNRp8k%]mޥbx]^f5_%I*\B$~IA7F$R 頏ڐ]ͥ(_;Z ˿xiD K2 6PA\=ZQL53MXjUɿ)BA7ԚqirE ~]6Q%Fg'Hj(Ij$B`+Nq'Fe,Mp+Ln-Or-Nq.Qs.Or2Uz-Mn0Ru.Op5Y}7[4Ux5Wz-Jg8\5Vy*E`6Wz8Z}5Vv8Y|4Sr2Nk7Us<[z0M1M2O3O4Q6R0I>]9V?^;XZ(Kl%Eb(Ih5[0Sr2Uv/Po7[}6Yz8\}9[{;Wp1K[)Ki1Y|*Lj6]~*BV0Ka;Zu5Od"јC>>~ pA "I還!= 0_ʨ1q!˟ȐC$ 0I 3Ȍ6(C ɃE(a4;+,s3 7d6Ha0J!0bÍ8@D@Ā J8` Ì5Q8)`)L:QVwCpZ h#C]P: 'HHDrq\Tv ,qҪ 1~}: 2A bP{аG܎u/C PpBEAkz~1 "x1Fb'?YDO9QX r~'? CT0r.dxo0̂*L! ~D P)BF)@ U@*Q`?=b{/Q]( ~ãQ=A@( A X+"*`!QM" PA.~ VAX`GC[sm+ {6 Y:] !n&MQ@pN `~.! ^ =p\'Z칈.` !`\a. `P_ 07 \ pA)n{ #7ļ/. *!yIOW}·+ws6B X>+og.z s\* E}P>! nF@ 28!sOl\q0q@>;? d;youker-assistant-1.0.1/src/youker-application.h000644 001750 001750 00000002417 12312451003 022122 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SYSTEMAPPLICATION_H #define SYSTEMAPPLICATION_H #include #include "tray.h" #include "alertdialog.h" #include #include #include //#include class IhuApplication : public QWidget { Q_OBJECT public: explicit IhuApplication(QWidget *parent = 0); virtual ~IhuApplication(); void setup(); void showQMLWidget(); private: //关联QML界面 QDeclarativeView *viewer; //系统托盘 Tray *tray; public slots: //主界面显示和隐藏 void showOrHideMainPage(); }; #endif // SYSTEMAPPLICATION_H youker-assistant-1.0.1/src/kfontdialog.h000644 001750 001750 00000003443 12312451003 020604 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef KFONTDIALOG_H #define KFONTDIALOG_H #include #include #include #include class QSettings; namespace Ui { class KFontDialog; } class KFontDialog : public QDialog { Q_OBJECT public: explicit KFontDialog(QSettings *mSettings = 0, QString flag = "", QWidget *parent = 0); ~KFontDialog(); void getInitFont(); void initDialog(); private: Ui::KFontDialog *ui; QSettings *pSettings; QFontDatabase fdb; QString fontFlag;//字体标记 void updateSampleFont(); QStringListModel *familymodel; QStringListModel *stylemodel; QStringListModel *sizemodel; QPoint dragPos; protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); bool eventFilter(QObject *obj, QEvent *event); protected slots: void updateAll(QModelIndex index); void updateStyleandSize(QModelIndex index); void updateSize(QModelIndex index); private slots: void on_quitBtn_clicked(); void on_okBtn_clicked(); }; #endif // KFONTDIALOG_H youker-assistant-1.0.1/src/qrangemodel_p.h000644 001750 001750 00000005656 12312451003 021130 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #ifndef QRANGEMODEL_P_H #define QRANGEMODEL_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt Components API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include "qrangemodel.h" class QRangeModelPrivate { Q_DECLARE_PUBLIC(QRangeModel) public: QRangeModelPrivate(QRangeModel *qq); virtual ~QRangeModelPrivate(); void init(); qreal posatmin, posatmax; qreal minimum, maximum, stepSize, pos, value; uint inverted : 1; QRangeModel *q_ptr; inline qreal effectivePosAtMin() const { return inverted ? posatmax : posatmin; } inline qreal effectivePosAtMax() const { return inverted ? posatmin : posatmax; } inline qreal equivalentPosition(qreal value) const { // Return absolute position from absolute value const qreal valueRange = maximum - minimum; if (valueRange == 0) return effectivePosAtMin(); const qreal scale = (effectivePosAtMax() - effectivePosAtMin()) / valueRange; return (value - minimum) * scale + effectivePosAtMin(); } inline qreal equivalentValue(qreal pos) const { // Return absolute value from absolute position const qreal posRange = effectivePosAtMax() - effectivePosAtMin(); if (posRange == 0) return minimum; const qreal scale = (maximum - minimum) / posRange; return (pos - effectivePosAtMin()) * scale + minimum; } qreal publicPosition(qreal position) const; qreal publicValue(qreal value) const; void emitValueAndPositionIfChanged(const qreal oldValue, const qreal oldPosition); }; #endif // QRANGEMODEL_P_H youker-assistant-1.0.1/qml/func/info/000755 001750 001750 00000000000 12312451003 020016 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/KINGFAST.jpg000644 001750 001750 00000007760 12312451003 024222 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1!QqA2B"$ C#4%1!AQa"Bq2Rbr#$DE ?&.8_uATf *$ TA5I? OeIO$ƒ%JטT*NiIW.#RFj-& 5TFa M uNI^R tTI/(2T]yH@TdP%rR ; 0kab|[l)vv8zRI`q$8ԛڶbl"lFn%\ƱYHM77l:-Iz+UC <|k&UX/KX5ZB=с841lf}-_룽6/oq0.kKE10𤪕U8?\ZKΊV+8/urtj+kw/7&'14VLkZѦ ^᷄j@]{SKw}t˓(Oz/&MhvAW]z׿ի% cketZ:Q(e^ͷǙ)T8ү[^p5NIû ]aV͡߃ݷHA4=> F0yd7lb.72O#9BWRV:˙Ȍ[kɒK `20+/l"GpRKR*bq=  q۹B-ַXi VEM/ u#ix2_&jͻ$kmr"1,C'SV9+&9X f[J@_P,VՉK>#,`{#VbՔpbKh#Q.̑܁S`|o2T|KUK^d6g ^pwz$Q-sm|v6 8w+fT2hAqRFQw`W7ڇ(EvtfHI1Nw%fjR?F&oS$s}~C P5P&%?U旒y;3ī1JF( 8*{|}'mZyft k HUL`| C{{^iq1~wvn^ &-p>_Pu+&=us;IL*i{HGRV+[poT[?(;~ij[2$bpLqӸohM}~mĵs]Z! 8@#clja zEPܼtQo]9~n>hҥ#qkVᓉi-q K>/3ۣ2!gV L$e,D O* h%O Wƿ~;olE[YC?Ζ][(kOGTb.1MIm?*/UMnW];+0.btJn!5UYPd ٽbfCuv9Kp a\\Hn G[\eidvpgseׯ@@+SvJ Wr dpǨ[^t6^}m9Fm'0 s~cEel:G r&)yf6ޑ\JmDr@) @] q!и=Zg+ʧr7)dq/Mo,H_37oWT_0^^@*q\3Ҷ;8;V_A[V ;#iQ9R 0i@ B#LXteUq RF .%BlBD00322}}}r@ʠ(r@,YRPĄ@1`L~ ; iv4>~ F@.'Of^vҥK~ ܸqŏP%@6>r*@1R,bZ1lI_7T_!quPClr„ @e*J`$z|af HЀX0PIJJRrFb2ui.4K_I>{b@bYT! ` L/dx7'CP oݺdߟ4ϟϰ`>goJGo?W$>}}Eo߾6`(r( ?}qġ>W| ۷`နBC@E= KWS3?H@b@DJlȹԌ2Q&_VV 8Z(a. ,6DHz>|8Zf6_xQ z!o޼A4H~֭:s Py8H=}T(a!#.`y`w fWX z{{ekjjaf*&GA1)S˿~ P ȗC'҇,O5{?3j'ᅡ=7(fU|81;#^@<4,6v (1 lMyGMzM?hJUMMc5ñza*Јh110"<9"ڷ,:#\/_LvwPPRR*61 f=_CCCIP5ژ߯w&@hFsF@޽{7d|xjeb.tĬaNNcd@baa c,~Bk`m6ݷov84ɂ0R 2&wYdzgϲH>&W {e.isrZ! ͳ\y4vRP 3._< zPSO:ڟbI&\ Hy+b`XtH:úU+@ݢd &8}NQ ϟ?kO@3goܸq?msppĞ?.\v RO L`ZH#`۷'&27dghhʺIWW7uԩ^;wl{1 (^477 껻;9FY.|* bvުGJ9} CpӔ!Ľ)#/ΧB ${鬨ȥ]&sHM& ϲM^r8@ֻ8x~NLLORo~/qp({.AHhdHF[ڹ90rCL<׼\Y5MMj_v{L5hY%M,"2 NU`P"]WNj;7RX߃k.O!?IԐY=D<4 BϹ[bDQFe>+H\%7L*]{^:SJGA퓓q\~< /NX,Ј#шJ>jNg!IKMMMתϡNȣɂ}dJ٨fk= Aos bOܮ$gXՌ,`XQyl`P)cVf.o$܄샍\vJ0###1H_N'p<~NH  }jjG]D"\_VB088fGGOhZ+*I\(dNq#t;Fi 7Lઊ6LBVmd39IXfsjH6?cUڃ?vQ"(P鯰M+d>n.o }a=M"_}gxޓH~ ymV$QSl/@P'h3A:ZeѾ[7jԣ&-jOu! ) IENDB`youker-assistant-1.0.1/qml/img/en/title/cleanup-active.png000644 001750 001750 00000010714 12312451003 024040 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<nIDATxbO,_a,dx?zI q/^2|+Ҙg)PߺV;/߽CW'ƚ>ɗax3CG])ap<|?Xs,&Ǥsδ  QJN#/fbp/gspp0|P?}afS#(@@Oa c 3y?ݯ?؏3}l1N1юa7e~r*@1ߌd\ ĔzZ[\zTw˗xt@}iK^|`g"V?sZ/۳ɱ03Q?u'1я?⒓''Ϟ=7|̂X'1?jZQkoD'zZ^zROC-׿􋉮q @d2t ,/߽ig3I WԷ'/pDhq10())0ܺ}aՍ?5yHm:tܷȲ?~#,{>1:r "" ?A8;Fejf|ͫN :3U)m`Aˏߟx~ЛF̪wTqLԬ,Kyɶzdg]Y{ 6¯@)7;5LMW@W1_oBdLrw]p?d@,뙸l)`'{ _S/0}jidn5Sĸз7z_28v=_4|d׈2ܸyfVv?F%b}w< 0ȼ[sS1Y]xCFFfYfO?V ,gnJ0+4fwВ G@DMtE>9۴ '& ߽fev;}ssîC'XK30w>fqV`u Loؿ 1h~ǗLD}QڋϿs$j)fyG !6a[_0r}!*؅/LO_?vٻN.\Sp y>3$]8s1 ++7)' Q`eÆ$ '+% fz-aA\u6ݿ}[o*;=5I>~osd<+&#пb^>>Ϳ}l\ ̌ o_,{̳YYU#Qy X_Σ؈(+ˏV)3pK9S"-dbY#t3y~P}a?2l"0գ/'㰮G z.`r0= LȳЦ0|'Mhr[j|51]jؠԊ(lo26c?ۯ}U+Z4mMs5ir{:.=s{>}#\sCɼ)J{BG+(vR}.>QVbaR)Z#;(^'[l+ԑd kyE::ciκu!L`unsZ!s}j6\OPVp2gw*m>}O%p^p"vwh=מٮH/G_ǍNp&|Gc b2}џǘ02f"BpS%.cYsٶ#˶Qt>3/GTl 4VR@*yefjւ2{2;Y H'_[3:xl]gEr Ghek2,uz|[*Ձ`J=TCAVp,g=s?kaQ”Q$$fE;ӨYdfG?h暊q^ILg/K\dTsbtR X *yIq &y763\52s ?u=l&7q3S3{;PprxMuI$)*?qL1P!b ZϷsjWr<8t{4|*9򺺱'ojypzA`#h(8N9D;)F#K }p*u@/ AkÝ]]XaJ% R3Ov͞9&3[,!>g2gH[=w 7igϨB)"Lj!fRdR*jd)r~!Qb`cb;4&NGB`c ,>svsgBʰUKJsp~{Ug&CDjw0%9bq4yC$`Vul( }ܬYЂ%jREz("RCO g8n,wCw]2 M  xD?f7𬽵 k4f{ߥaD 0`xkVڭׁNFu$6E þ/<"Q[74s0j%U' n"LI31Հ_]y_3$x&6W{BI_ HVksh$B-2:(X¬{p89J%׬ 0pMv6op$?"oᏵ;?5kcӡh":pݜ ^sv|~eRb;NQS-bNPdg!hq٫  Gu$2LcRkWهk*w$\g\C=.sAٳ ]]oCSS냆Fp?T4<<pu .@[[텭Xk}h` H;LnmS4!5<@ >ÛmcdFȔh hP{YV^ sѬ)}?|$t6W 0)M:o &uV{"SG;~x鱀p;OV~M%W[BTjl :=Y3kIpq)0sYYU Axpkw̻tj pLJP *Sӳ$#p\,&s@wU xƮrHj3ʤKuït߰&x~}té+_vA:#`G`HL-9U|Vbm}|Wv+ O]ԳnWgލ"j =^%'4u0lγ#-Kʋ.dme33Ar+=7`4qf4~4rglFW6Fk9TO.MDZGl}f1T@fJt1O\ȸIIscibREt|}- hJ'ju^.Ly"ޛB4:p%gvԠIENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/detailinfo/__init__.py000644 001750 001750 00000000022 12312451003 030707 0ustar00saucysaucy000000 000000 #!/usr/bin/python youker-assistant-1.0.1/backends/youker-assistant-daemon/src/appcollections/monitorball/__init__.py000644 001750 001750 00000000022 12312451003 034132 0ustar00saucysaucy000000 000000 #!/usr/bin/python youker-assistant-1.0.1/qml/img/logo/Manufacturer/TYAN.jpg000644 001750 001750 00000012221 12312451003 023553 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1! AQq"2$ aBx34Td%56w(8H  !1AQaq𑡱"2BR#C$4Dt%6rST57 ?|Fk< #LI(N1:bLvC')sP%>I}B8"G?"4 $0G TD|(Y(L9`y3@G?Q`1&ctęOS:J|2pD.~!0D3G-<8&C q ,G =PL{Y&c3݀d)3CG?Q`1&~&$ϧd3X$Ľ]:[ }B8'G?nHLw0~{4ے~f@HCxhioJfn,Vvc^y-]-LrʫskԭG;1MX_:%aJnR+;9)p<"XCdyx/YO$C~5llx5o]MKٚ._U>YXR ݦi_&hTz?0ͫv"}ج FJ+rPM.M5uCt 4l*,nX"8Dyt(гj2TZ>UyBo_5% 5%,41 0Vr9hƍ5zADN iX7BDbg0k7gΕӨd0~b&XGWm:dGNNT^ڒ֥IJvaϒhk'iϚIstKPvbcmZaP*4?QXVNg-L}4-r?2UOj;Vg~ϡEeV+VoWV/?9^gpZ~",f4]Un 4<V 

k=Jm%$*ekIc ᒆۖexJ)҄K0 Φ `֚,2vIdS\D chѮ\("o$8l%|mb>bAfx-j_Z$UboksrRio?m@uaRtaŰdun";pnb՛=1fAҘ*&p<#i^;:r(:/(G*b/Ʀf@Qî%ZϸGӽpɸ` %Xvxg_(F.*4Rm#Y{@h2YbU%CV}:{fIrJ^Ԕtdp=vּWgֱҌy]՞EI=óP5*ښ/: 2ȉ\nnb=Iӛ]=M6"ڑtkFVk\V6nyiNǑAi-RBTi cԥMBq@ahaں*(5ǂpst{DS0p,/zV.ZWR dORBd%mLv\I;~kRw BoP-$dTii$Z[ej!rv'D$quq4!I ~"U1 bm1Ҽ)M͘cF<Y[VA ^2k;holEKu' &Hf$v2Ba;#Gk޵:s4z=ow=FDPihZ7eʹVVBQum#gԴ)$P@Glly]W]b|=Y6O$>_Moq"!/~)?hQ|F`y3@G?Q`1&ctęOS:J|2pD.~!0D3Li0BH`.A։PEQlFr(g(!1&~:bLǺ$3 %:u@&e\B`fÂ?VX?8I)r@H/byouker-assistant-1.0.1/qml/img/en/title/feature.png000644 001750 001750 00000005735 12312451003 022602 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe< IDATxb? ] |yǏ0ٳgm` r6aƭ0|7o:rA~1d=~ HnXp+jPD@y|0qP ϟ?@m0pP #%jؔ}ر}ׯ_? bS'A <X]=|A PbaP8;:: JpD OYYYE_llS~v?$9ST ~bKX?j5Μ9svvv* ~B^#'ww6AV888 )!սhEg |V '>R\@l,8&i b#XMr„ :u~#Ǐv<,/gjv8nnG ͜9SPe^j^̸ hpeejx(g8Rj@| o  ҁ,xCBh0" XmG? ؗ/_Ā>ι%~ J1KaPcHj`d֭[uAfE5Tjҝ=ax_ Щ+7Wx+)ţZT-K \ti֎;Z`9^-T > AzAxʔ)yT(3Њ)"Y矾w* M2>HZ}3h6e4XZPT(3_g5=?dv:C/N Pq( yDѵ:t2si)CPNuHV:QG ^EnZR61`eBLm[iD]e16qCG r++ ZBȻ bzz'KUA?WgH:v`r1SSf`A ss'8l6ЅiLM zquG2EeuX.Ⱥ$S|w5M[N,T<@ j63/$GWfLgR\5^MRfm w5eX =L^,Jd &=lzFD!OlO K}`Bk@.դ@Mf~hzW+ȱx<htYzsҭo?˻bN*d7e B4}i—e$$ qf;Ah&&fh.5.4D !q7&$gf C " %U7uIi) }i;w:<ûMn_wϹ;G17c*#`w~v0LڊtKRעݪ/QjZ70`>vtt&nk&J'MbS]O-LN{j;룳g[qU6;B j6#wCQ0sM=Ji {iA~OMM%'/B) TBлPᩪ\__ierH pOӊr9%`kMՒHmER)*"cg旒(~e#}^`"&\RDIV{COtvv6226 ff y?`rr:1= $|;77<`, #AL[.6E IF]D *3C HzS+ ]`WgWyI'Ǽ^ \Bg#{h|`f8.` ?xv_2L0Ʈl o·ȺnFq:{TLʖiO)hPhᅅhN LAul~~ t,(Nb>7.П0ߧe.JYpAďvS)-LV@h^7"+%shr̙]MT+gw6Y[CSZ&ȺDFv*H6urira1==u:3wOi&5jSֱ;ㅞ/ͅ\.\ -{,p,0kSmPx*W^ݒU*p`ZX#kb-c1IENDB`youker-assistant-1.0.1/qml/img/weather/n5.gif000644 001750 001750 00000005422 12312451003 021357 0ustar00saucysaucy000000 000000 GIF89a008Z8Z権Ւ/Q3U5W!;])Cf2T0Q2S4U;]<^5S9Z7U%Bd$@a+Kq,Lr0Nt3Qw5U{)A^9Y7W}4Rv9Y9Y7U{:Z7Uy/Hg9W{Sg³ɿԺ.N1Q2R3S/L0N5U0M7Y1O5U2P6V2O9[3Q7W8X4R9Y5S:Z;[<\!>_!>] ;X&Eg+Mr)Im#>[)Gi.Ot%?]2U}0Rw-Kn%>[2Sy,Jk.Lo6X~5W|7Z6X}7Y~2Ps9[5MhQnCZs>Rir/M1P0N4S8Y2P4R5S=^6T:Y?b>_7U3N:X>][3}wxrrvoȼics~罡YaJWRp!,00)02EK4hEZȰÇjd#shܢ- CIhZtH$M͛8sٱ$!XI$MZ.c ]ʴӧM̘!M0Y K`ÊKV1,۷mՒ[JÂK,4#Li+^K4h|qKJӲL+Ccs9LӨS>ijT\+eNsQoԭ[DqiQ=g1bH`H 0ਁp1ĈOjf?| &ȟnʲ0hs1&3!h ^p 0=(ЌtPB &<~[ʷn2U4Ю/"$+?Q/&컯 HCbRR<@]S #;  3@ w P0 ,uN8~^ <-> t`#xpBOB Rx"(L : 0CP@R6fcAI?bTMP!6(vc"a7h+fTb0IZX:؁*2AH(Wf8Zż9iph-x\yPF=qa8g-P {ւ5-Puy@JP[vXh-pẓ.X]"ˈ6n B4t)Ku_B؃q!@M}ЃELaakbJUڴVQ RH!X.j" C A> XC s@kVq |-z ,V!*h2A8 UaaFD+b7@(80J Q ec`/[a(G# [6A0-㹾hn&Ax@s;<x\_AH).|K_9* (=ʑA*v"/}A W8)(`~ x 1@ Wq0A` (P?lDA(a L 6qA|3N>`ĉ59DǽD L# 0>qF -B1@L7丁1g>sϛpebF!_7Ԙ҅@!q8X ̈çQk?a@B " =NƤ]>aB ܐOڟ">BblܼDFу#lDMzY06#ղN78>m{>;youker-assistant-1.0.1/qml/img/logo/Manufacturer/SAMSUNG.jpg000644 001750 001750 00000011152 12312451003 024117 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !q2AQaB$ "3#4%5RcDd6H !1AQaq2"BR3$4%b#Sd5U ?>LWy3@F=rtę4 gO%< z܉\08mɀByr`@Hd,Qw(LrQQbLBuf<8'LI?0@&eT#r$ys"C@❷&(I 9;Q"{}Eܢ2G?DDo 3 'LI@}T1@)DzRkש%4˥RIIqB ^D7_$]'U6-n=Hfں.-ʋm4 +D}.urm@"IRGm i']}j_tjbR6Nm7i>q6uy>(|]4Bߵr&5j3ب49ĜG:629ny=MĖTCjW5QHWF+6>)ٹm.-vTrqY3߭Hԋg,IZ0|=u,a Wu ɹlܲ2RI5Za@}O 0;Rpm'U*^)2?y֝{}S[&Q9@(41 fp s EM+8d>!:\ekVkTLlTj[EZ奣9s]',Q!L9RO.VIf:fmW_m>BnK#-/\<\bb[Z|ax6SRm}0_&WTƕܫ@Jo  nD1X/"yȟڋd66Z֑ uWNT'2GݐGZ̋k^W1.4qWu3JGtVڕDiz(BGIYGuIM/&X9Mz.q銬$QwV\[* N`EjWkxӍuZa SJ&G6lYhPH8C7C8rZxӵȘIXl%ؚ""pڒSs>KQ&rG4!03zr'Az]OsjU\B8ZVBJv0"/U &TD9LSRA^4ܜ>kddY"|yeIW30vmro8X@tzS~UMV֬SAH)4e䉎W~QUMxAvfNJU|FpÚh,T  ->hJkm䇎nzڦ|3ӑq Lk nDÄ5##%j0l\ɡ*Kѻ: [`h& 7eUqt@p3ƞ7u)=B"-Y(5+1b3C9C. Zl2M ]Z]u3@@ U\ى" k;Pֵu -Omʝ8]} 1}AFhpRQ(d q'چsM>YNCá1h59ǍҬ67v+][b2ie忄|;04 '((}d73Y}HNJ=DlfZ"H".8*졳T ſPJZ:Q~[2E2z7VWXe+Dt[:]eG}?$&_] ^BI~S0_Jϊ;۹$%fdԩ}8ޫ-_f2dhAjmWSRd&?O+RjؤsmB꽊,/8$m>r;4c&s &"00oOh@@ i鑑Pƣnek:V7g"dD<Rc㺓GT:~_.IhK KmDeoŏkJV-lTtZy ⱺ2o'ƹjZ8-f[s\|qXuUN[27ːs+jʉBrd'(V"^Nݍ47ҡ4nUth.mVьi)̳}#01h9O4* 5If4ȣ?Ӝw(|&F/)*ŹJK8iEfl9Ø*>D>35"0ހ֔BS OmשJ^lJ eqSj;b;\Cj2ZVnf=Vq= Fue6Iaj#"ώ1L׫q3o<>rBypM`Y!Ȇ);nLP#ːsvDv!bEe&~gN1:bLa%Cg'Dg,Lr,Kq)Fi.Lr1Qw2Rx0Ns5U~3Sy/Lp4T{2Pv7X5U|8Y2Pt7W~7W}:Z9Y9Y7U{:Z7Ty;Y;Y}1Q2R/M3S4U0M1O5U6V2O3Q7W8X4R4Q9Y5S7U=_6S;Z!=]#Ab&Fi$Bd)Jp%Ce.Ou0Rw-Kn,Jj3Uz4V{6X~5W|7Z6X}7Y~8Z5Sv>\|EdUq/M1O2P3Q4R<]0K6T;Z?`=\ Aa:X>]"Ce#Ef$Ef$Ba+Mp*Km'Fe&Dc)Ij,Mp+Ln-Or-Nq/Qu.Or.Pr-No0Qt.Op2Tw1Ru5Y}3Ux2Sv7[4Vy8\6X{6Wz5Wx8Z}5Vv8Y|:[~:[|<]1N2O=\>]9V?^¬GI6@BDDFؼD˲BE12576:9=ݺ:ִ;ǩ9>.۱-1߶024ӫ09Ġ3ެ$(֩(+Φ/!,00ţ*\Wf2Hb&~HP>v&S$g~xƗvv鐸2ShԴR'g`Aѣhޥ3wLѣG5M8dP2B4Šٹw ;3DыVCvZ]hvG4DީKwlm4Dv"G =0cfHgЊC #DQsJ|QݷmAH2@ o G(Nz#W!Hn%HonI[BY@o 3k}v ׆-gUpD QăKREaK Xɀ#48#5lDrq-tBacII؂A6.AL88c'7trA:vEXĖn$!xAk`Љ5Xs6lx ]&ѥr`|:r,r"rb~x747DD-N||'):>$|8ވ#M2s3x4O)8C <ᄰFs,Lڌ78S-V[8z 01; B,D\ 9qt0GD?1xN: /wL6,#6l 6݌5t1o'L-8 w@|1` ;K8./ ;Q qaR-aӱ\{1H#;XH 0@!ET Rxڨ8\tX+,uPTPTd{|`Q| 7h聻|Ѐ(| 8RGzPA{|L3pAR <7Ɉp{~2,8;W @8G ,"̠ɴީ:a cQh@DpWpU#) n|x3j0`}xAnC8 # E6ȃȌAv3 >!X Ȯt\X1:S`ay)\X9<\!SȢ)?R|XE3qsP#g!?)@PsRH#@ TӲ jPoA]kcpEY}4$AisP . p$a I؀f8 FB_@?l0A ʀF3#9 V {42` rC(O9 eT 8A*nmᄌЅۦ$ v$ YXC#X0@َAW/u%pnG؀6 0AAqn `p ƀ d\Cg XAo9!u {>.t& 2 Bw l I 8hX `;]Wv1/;wȰ;youker-assistant-1.0.1/qml/img/logo/Manufacturer/SONIX.jpg000644 001750 001750 00000012275 12312451003 023711 0ustar00saucysaucy000000 000000 JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  !"$"$CF]"1!1"AQqRa#23-!1AQaq2R ?t(JR(JR(JRnuSH) DI}ٮLhp'W yyy5wWޖnuxnQ",cm(gn *"wAVIHjbR2HQi won-fpۇ_{2 KW==Nh.o<=·#VZu~gPȄXO )98Vg-.:SQ恲4OsajCgJYRe /ɳv8quzK30h'69U0ӃwttfE~#uR{cQ +GZ-m7#a27%Dei;ꖘB+ȴ猎A֖#ߓ!Q=uCnq~䚺A\0ja~UuIڬy0nlMm/+Zx tk=2/eŸS iRq$z]<}վnR{c<15#Cj[',1vy*BUwA$V5>;nugoF?>XhX$;m4p{W~ҖK=j\7˩Zqk;޵i (r' Q+q9)#FMr9@FvpSGEDXܮ7m/ua[a-{j;I{v:mʙu $WU]{lv3m + s 9S8з b-iCZQ|#KFض({u9'fʃLϋ9@ fκ]v[%]4:T1=c:ˡ-mG)6{Qb i^# %;qssfjXVEn"HS Uҵ{׹mC"_=tE iG!}qViG%u651[Dt>6"ͶCs.$:džII9\wR `-F"2MSa' !]WtmEvI IKVϽ\Qd&Zq\c?Edn!8T0`pTkqSHr-EA/nse=kvnOjma`Y.,[6DgR )WVq+aJ4MGFsѬRLG SR[FIKHpVy*,T"psAӺ~2W+Hc!26+'ʷ*+iN}וзPPrJVNHiy[VM H1[s&/kENrqv8ߊe y% xDm° sV]& HqB<%̡R %D탌dLS_ek[ekR샕2 n>]))JT)JQ)JQ)JQyouker-assistant-1.0.1/qml/img/logo/Manufacturer/AMD.jpg000644 001750 001750 00000007422 12312451003 023410 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 Q !Aq2Ba"$C%1A!QaBq"2brD ?L9&* NhA3Yt  _Yh$pqrr( T@Qmʰ">E}SZLeɟʃLV]"&cB&} ouZ /|+\ *BUj[d 21HG񀡄J~<~j.*8rg>H (Т n.aEK !.|BJ8ScZvt-1)&uDۺ{ZLg!zuA<5D淂e`j-̚&KrRRۚmmՁFHvC2N[tx#lҽo_w?ͯe\"|0gJZ2q4iP͇'*x j5OnaQ6Yci]9>RĚI+Y JϮJA9+ʡv~ ᬁwC-Rla S`SM\\ `~ps"z_fnq+mz(vEp 8&㿋?B~6c> |efi7 MWvƶWkʢ\}tJ0Э; u*RֆqŸ=`]¼_WlU9(Z=5?A;ZLgM]0~dQVknڒ_dv}JȽ/ qB(RjV "]iۧn[p5c[lvݽ];=dUrpE TTWAN[&Jq @ [Jȹ[-:_#^&uB}FHX͕nʒ".(}$gOW`t-i#o&CmlwDI39-zw-чZpHN2U bɵz _1eO%lV_ԃ*Z 0!1jTf-zC20TT(DxPS_S=G)/T-]]M=2%ǜQ2"l |iY7%ìḿ3wI vJ 4>\[-:5y"6 %V8K[# OA`s=ە1wyd.?!1,^؟f3+0/& Gcӧӷr^=<\}i')xv`gyؐܘ%:^E"4:0?cxҿNcrMGHpwzVe{rtXd:3AncENB/5Tʒ FX%֥kU?eLecӅKv,Ӫp(T;5ݽ9]B-DD51D#n*5 S/o3!yG ԋ_'JoKHCzx ̏U|ho^8ֺym}zO.ԚpJ'd)`?x]q&όRʓGcjcNDXbìSy10{}7{ ɨJO i,:3M;Cut.G$7#̙ٚO'*1XC`ooqk8ʧ,ckƟݕG;ri4s?JSؽ-&Up2A&|+.D1QD> \÷->B.\!* 5--MǸ<("~aR3->F-&U\19υe(f? 4(gۺ|" vQe±E˟%QFB* OǏҲ1i2し&* NhA3Yt  _Yh$pqrr( T@Qmʰ">E}Syouker-assistant-1.0.1/qml/img/toolWidget/searchfile.png000644 001750 001750 00000007721 12312451003 023647 0ustar00saucysaucy000000 000000 PNG  IHDR22?tEXtSoftwareAdobe ImageReadyqe<sIDATxZYdYRҵu,c c ~X" xA@ "< HI$P2r!8ؓIOW׾眪4ƞDj=ov9J7r7R71g? Wަs:.GЃZ۵osεzO+#)?EhLҔ$s|o)e4$֞}?O|D(/G~(PI,Jgsp,I,)f}d\+F4_,/MP;;N%<A"qBQ冘~b^EE4WkEzrmy[/| ~q(Ec2uXb%#]r\4K& DyJX.( fļBޘXLћ$q2dKTx{6nm.^x@Zs11#}>*)`CA*$ޢ2yg[pnG"yOnўZ,{C`m TIf7bd(=3GG}kWjsXguAEwb \R)P(ԣ x Yu2T)Qi-)E<ߝ8#+Ǿ9As,:sZ}/Y ,."-7 4=3d=#RWRtS+]񻴑=GF:!XJNeTDڇ-}i/Enc][*+U~os4s3M|&ʥ:LA[J"5'TʌXGugO;6DV˥"%Z*X':Z%Ad=[f|jq֌q>ZżzP~ H=2[[{P"=gQ8kuD+ŘmB C<;TbGT9ܕewm/y',O_2hT6K^٧bըAQ@[#zќq\ܢ`עOLnE[đ*]>wx{ {GG *~uM'Ȼv:6qx_ǐTDz,=0JuD*Rh%ʔU +e؂?kၯ<ϼY~ƿZ#u}:nդoIN>D _mDgQ:kJg/ (QΡ!N1< +)wxx3ZAؙliiL-O鹜[0a[s}|cܗc]zFJg[]iζs!OG'hL;PG*T«za\5ĵ9߁Nie#-x U`Q0cpsKDD *Vϵ"Ĉ(-2NN#۟Y176=$F}C6⊵=Mq!M GHAq1`ƎoxW5YA~ޡ7)QV kP&ʄ=㳡U*GEqCn)8LunٴnIQD:i a7(S4I}>o+|%?QF8aGч2?)CN)3^>?8[dx.sY(uO?}!?_JƒŝYU#E#^\ɏpB{|N䬹~$?K};//+qd͐` }fc¹IENDB`youker-assistant-1.0.1/qml/img/weather/d6.gif000644 001750 001750 00000005344 12312451003 021351 0ustar00saucysaucy000000 000000 GIF89a008uֲڍƳ̲􅐢˴Ǿѹ~·́ƴɻޞ稷ȗ4p7s7s6q9u8s9t;w:u;v9r=x=v=vB}ED|HKNHqdlkmohosoqsq|wvy܂䃳ぱ僲_1r([,b3q5s3p5s4q3p5r6s7u6s6q7t9v6o;x:w9v9t:w:u4i;x=z>{=z=y;t7m>yA~@}?zA~@|?{A|B}CCAz4cC|D}>rGFJ:iJIMF{MExQEuGwOL}IxWT[P^bfafj_S~jidmonmlplrponu]rvut{vyxxw|{z|{݀}߀~炶側}څ㍺lvyՖů֪5sFmlsqwuxsz|ぷ〴サ′ނ׻!,007o(\ȰÇ a3*gܜQ CIRsgq9pY͛8s✳5J8rx"]S8s&H:ⴡzt耯`Ê S+uȁcO9k GycGπ8ȱ!Bd( ˘ȓO;c!) Ob˞M{ x3do ,td`8 'QHꨣb(Kiu;!ງ 5Ԡ8~o*J%aН)+ 0 $ F!/f8 z]j? PEW Up4P8(De/@(A28)$ L \  h~ $a?( 6tNH@ 4aT~XPQt8+\-2a C0K0Y*Ұ1Xn+9 Y(G] ):YhD, IE`܅,vW &0sA'"Evq\f+N1OHG-r&4xE:rq>L-j\b@n!( HE(NA~ - PSS -p (<(D} IaE/ [@C9b [U.` aЂ8E z ]¦Nw(HȄ`^LH8 QBE1֡SZdbꂨ0Vy _bD/^b6E>|81JR!YKXb 2N!U bIXK*aXudKZecY2 V H0wBO(mG&rqBHrn!=E7эT4ʀ.,18D-8#!8RQ :h3A_h8# 6䋌"C7l  8o}aAV􍰄g<~6g~,RX0;BfTX`11 k`4a fܣ`F`Q~  E1 OC6t|*OB5ekx ^e1_(q5e,߃ָG!WoC7qnwaN7v[6yo@@;youker-assistant-1.0.1/qml/img/logo/Manufacturer/CISCO.jpg000644 001750 001750 00000016341 12312451003 023647 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1 Aq"BQ2$w av8:#346 !1AQaq"2Brs$4783t%56#Tu ?&9Cqɿ` AٌVQ ́ cQx|oь9ADlm9A2˸<`GzV3l*n@brosA7cn(=Q iǜo-!~|A;_^żn'<1ppXp5c>t1zsç#b~(NSr^l QN]>(|^ȫI \Q8;U*q]\@D(EB5D "0v` tΪԂO@qYvW $65æk!O vtWI*9;J(dgܨ[/{D)C,5wC*:Mw ˠf6K>DaPR[I: gP~Fcy:ј)|"jdhXWfJjPMI"Jb JP,3薭^f=#6H*n5wedªU,3ϷFX.y11=}!DGiYA _C]In8d~d%"3gHХ_?" \IYJ;9\8}"bCqZkh65rDKpFrխ+j   }r{ǡ+yu)\-4KS b%OVW:HPRe06E]MzUԦ P\:[Uw>}/++LkA7[E1`qaA_n jOl,F-7uYk6 s1eqJOu?CMjڢԹ_]cσ_HXus=h^[d╖m(Z.cg"ڈ\ 98p6ajgUӟʔgI+/ qI3`Ǿ?#o_a{fe}N[\qJ==sa)a/*?ݜu?<ܛ]n,1hTr(EMiKB%d=3:%9M@CψG5ӑp#VM3U>vj)X90#Q}2ԍ-R6h)!LiJYeښYY0E]n@,g=1lV[u/d1 `mVb{(ѧQb!x!@0AEN\Q4{ycEoݬ纐y9I$f8lmxhgU{hrk:Vnf#+&^!Ȓ jK1N@HS'WV+kPA9J@ϗ:%m#U:w_{276Оmӎx6WpuWm׋d~(cB! LobC!V&IHD]s,BY,闤ecϔZ*O_YT'LDaW>k}&(7JC7tewDc\IOJ>2l xvᛀԝa| s*51U4#ՏWD{hd>-o D})ePnhfjAD($Bb iwʊTfIzf֞ ٠!9;Ub吣'Ohm*'H˥a$AcˑQSVvnYf9*ORSu,fN=~ohjң6nfe rNەOn!2{ob{J-ȧ//wyq47S`~!]s;)a˳,bO j߾?'z.?;1>nwiW;.^[a 䟇~E.=7cu[kk/:iҳ\"ETZ- LsۢIQ:1AVeC`n@<(p'oV=ou7P6$5-G`y̒1">hzdwK};*MLuz՜w ȉd5iJaea*dE(}>S:|N(S-#z>U&CP$vN>fvu{rl'RD= é7֊tZթȌ1)8?zYbd 8z"jFjؔ"nŻlޚYrz\}\juAJj *eH)AIPLɐ(Ş~/۳"Z <"¢j!ga\j`QpEJ/&C{8]/o2* yI :uVvi\p7[-{ MR2oo%UiGURȭLJ J72WMT=0ō/=.+b Db*N$F!*|^H&&g#-f%,&%%G ^eK}AߏGٵR7Jj7I]?g"$qPM}Z^P^P_#y~rͺ쪒zINJEvԄ.1NTbciQ&IH̞Oi9;\ 8z&ѷHH%-g% q$HL5]MгNѥs0\V\5'#cS$%:/"Xcj* ?:^?(-fDa0NRX1ؼB˵Q}q"ˀNXE *JKy%dL95}QmMr}Wrx+ol9NR@ȸ<]R9ʜLL͕)]P9}}|u)یKJNLe3Og%D%d+^y|N{ӂr"Nݹ*lX^lY"PB!͗옡+˕+mK,&GfxU ]-,ݎi lPR1Sd=^ZY ǑI#ʨpE `:*2RQ(:Q`%dGnq+5ѹwj9E*Fxx }L$._W슴H?JNWNiJ=[[faYB;2Y+sFDָo H|xYAN*Xt["Y: 9NbկͻЕƬE&0g)8uU+;Jm\ j+2 P`6MjZz-'u@O Q8 򘉟 }8[+4᳄+L$HZ%$) VŇ?tê\6=]:䊰i+),VB!݇+eP`۔Vxa^5Jd~PwFP!C5+ @Df\㓸KbPR5R.URQyJs%+xoL& ))uosFt1[_=m=@˕S}W+kt&3HcOT+"EX9wr8X\+oU:XmI\S.H -]Zݔc>-,gFտ̵lD$ ]?5_%,8PcYRekv`Ku-"%3 xa陝qS->91n:{~ H(JUOfB`(am,tͱ!ƇiJɭi`q/.!7>FHt [ӄrWÖZMPiT' f^"k8 pp%+yO6슴:ҫEJU4ABuZz5J$F*juiT! S8)$*ɗD.i׫][LVgq"5kFmlHMt۷W7ﺭ!'쎦x%oBaqQIpٳ' NzJ<'i}ta1iSػO1G$āu1R 8J.QV~AȀ 6GU4c9d$"xypaf[+{d)X)%8 yM*?#ơ ``#JZzՑ4ҺҒY91D3qoҝQC[ >,RqQ".RN-RN!DJY7_N<ΙU X.q癌g;+QH/rF*aOx{pLzCͰ2LAjP+եZih7ޘ#AC@:&Q9*RܥI6wc|lTNȜSAE崦.҇ 6SWi PdPz^ޫ7М57^1Ar]hi&Q) T0R\8#c]Mљ idPVo_@ \!wj6|c!<^>㢫0Av>ZN)։\ڵ))#Yy%9b կ8Ɂ?3:emkLcHD tKs)@GufaQFO([Z֕ha]o=Dg2 `0_ˢLS2K>im)f8е*RLJBY5L E[ph`@Q%=_A6zp4{fTDi tq]azV5 i7a| 1979 17x;#pA7lj7`c{ 1((C2`퍧( 7c#Q9w>`OWmGyouker-assistant-1.0.1/qml/img/weather/d19.gif000644 001750 001750 00000005314 12312451003 021432 0ustar00saucysaucy000000 000000 GIF89a00ځҶʹɻݍ°վм؈Ʋȶʹ׀С͓ҬĞԅʽӴư޺6q8s7n:uyA~?z>z@{4dA|A}B};p4bC~CDC{HE~GK?nDvBr=jOJRL~V^Q]`b\Jsbhehbkimkjpmnrqpuvqus{zwvuyw{zy~}|{݀}߀~典܂߆䅵⋺4n7helkhlpqtsxz~߁ჶサ⦻̰!,00 N9|ðÇ#:3O5 SG9Iɓ$ >r8ӣ͛8sɧ&=d3tѣH*]=w3O=Pʵׯ`12>gY~ *$NkzW$~)^m@B獚z@|B͛8 "CJ ZͺkDJ:B~4o% (!CRH)J$D #7 z "CHW4yɟOwC  lA|'$D(B(I!Dyp'` $KL"P"2FH3JH,Ѓ  pЁ %0@ 9@(%T%XbYIzG%Ph"@ 0 #`qtV:& "tX=0 сBI$d,FtNd&w~+֟iF h @ ` lQɧ~ɯPIAEp) B6 bሯ&TlRPÈFd1p ){`P x "(yCxy $fBo 7p"? , Y BF d 7 p2p)@G=>ȮðC p܂7 3Ԡ"A}J) A8@LO*PӬU 3,ק! epaHF;0< 2/aBp4BAЋXF4,ah#80(z@ƁGLex(.A2  F6> QpolckXF3(Cd?(3 k ~3l2X.35l jP c`61jk6 7;^3a4n> i0Z@i#p3h3hГ;R13 dƢMMZ֥t<n|cІ<y {Nf+[5{6n{kx;youker-assistant-1.0.1/src/qcomboboxqmladapter.cpp000644 001750 001750 00000010501 12312451003 022673 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qcomboboxqmladapter.h" //http://ruedigergad.com/2011/08/06/qcombobox-for-qml/ QComboBoxQmlAdapter::QComboBoxQmlAdapter(QGraphicsItem *parent) : QGraphicsProxyWidget(parent) { m_comboBox = new CustomComboBox(0); m_comboBox->setEditable(true); QFont font = QFont(m_comboBox->font().family(), 17); m_comboBox->setFont(font); m_comboBox->setFrame(false); #ifdef MEEGO_EDITION_HARMATTAN m_comboBox->setStyleSheet("QComboBox { border: 3px solid gray; border-radius: 18px; padding: 8px 20px 6px 8px; margin-top: 2px; border-color: lightgray; border-bottom-color: white; background: white; selection-background-color: rgb(70, 140, 250) }" "QComboBox:focus { border-color: rgb(70, 140, 250) }" "QComboBox::drop-down { subcontrol-origin: padding; subcontrol-position: top right; width: 40px; border-style: none; padding-right 10px; selection-background-color: rgb(70, 140, 250) }" "QComboBox::down-arrow { image: url(/usr/share/themes/blanco/meegotouch/icons/icon-m-toolbar-down.png); }" "QListView { selection-background-color: rgb(70, 140, 250); }" ); #elif defined(Q_WS_MAEMO_5) m_comboBox->setStyleSheet("QComboBox { border: 3px solid gray; border-radius: 18px; padding: 2px 20px 2px 8px; border-color: lightgray; background: white; selection-background-color: rgb(70, 140, 250) }" "QComboBox:focus { border-color: rgb(70, 140, 250) }" "QComboBox::drop-down { subcontrol-origin: padding; subcontrol-position: top right; width: 40px; border-style: none; padding-right 10px; selection-background-color: rgb(70, 140, 250) }" "QComboBox::down-arrow { image: url(/usr/share/themes/default/images/ComboBoxButtonNormal.png); }" "QListView { selection-background-color: rgb(70, 140, 250); }" ); #else m_comboBox->setStyleSheet("QComboBox { border: 3px solid gray; border-radius: 18px; padding: 8px 20px 8px 8px; border-color: lightgray; background: white; selection-background-color: rgb(70, 140, 250) }" "QComboBox:focus { border-color: rgb(70, 140, 250) }" "QComboBox::drop-down { subcontrol-origin: padding; subcontrol-position: top right; width: 40px; border-style: none; padding-right 10px; selection-background-color: rgb(70, 140, 250) }" "QListView { selection-background-color: rgb(70, 140, 250); }" ); #endif connect(m_comboBox, SIGNAL(focusIn()), this, SIGNAL(focusIn())); connect(m_comboBox, SIGNAL(focusOut()), this, SIGNAL(focusOut())); connect(m_comboBox, SIGNAL(currentIndexChanged(QString)), this, SIGNAL(textChanged(QString))); setWidget(m_comboBox); } QComboBoxQmlAdapter::~QComboBoxQmlAdapter(){ delete m_comboBox; } void QComboBoxQmlAdapter::setItems(const QStringList &items){ QString temp = m_comboBox->currentText(); m_comboBox->clear(); m_comboBox->addItems(items); m_comboBox->setEditText(temp); } youker-assistant-1.0.1/qml/img/toolWidget/cache.png000644 001750 001750 00000012733 12312451003 022604 0ustar00saucysaucy000000 000000 PNG  IHDR22?tEXtSoftwareAdobe ImageReadyqe<}IDATxZdUꭵWWo=xۉXBJ" 1 ~ĒH #+!SH@"DD"DI~@D(Y0NpؙLR{{|W v޽{+<8w'MS CF#_)J(˰, ?^s*{1#z`7 l Ǣ]0c녂Q=WL?)1R\8Mew|7˄7 a|f|0_pw.aB.pc4cnXvF('9 Eqj~^%G4 Ǚ_~f^{zY3IJlț|׌KcNZL9s_.y*H+\Yyst)CJ ByP#s}(t #:c1x߭M7NjwO>nE<"B19zCT8( Ug\#}*lJ \|Q(ʯsj7Y "}EY_\d8BtN`MH~rlz F >ƳC=h A`$.=EGY~z Ԙnrm)Rnrk_.^(ND_0D_il0jDd{M:~.-آ".T&L6eQS~xKO5/#+&=I :lg$xRWrwgߊ^E4/Zg"q9HoudA؋ [J!"RO*5s!;\u-gߣ]) 6SMN~q~GX,If#4秱q+6B 񆷞Eޟ^B% kboހsWq9DcíuDD%/o}у1,6Z՜xSէQyz_Ʊ}y\5&9p@.[OhCon0wG{HיnyBs gȄtݤdS9ak^O1 R;YL= ҳIJYlq{ϭMw0ܸaGeB-c<\O]N6y[ݭ%:d9sɍ UVC>#EE ^^n#" gL[ξăz W^|= ^Jtً, UL#Qť"ط'|l,G914C4(H3.T&#F%!r:Ǒ'&vIbOXZ#Sm_ԇ0ӘFྛP{:d*?tf"*8>b'z&JdR^ז|6#4<%(5$Gby~I#z:ٓ #Am܅_%+FFD;H ;NY\h{qv|e2Pe~B,&CR3x{̑DuD(&"U""mRi t~(6hŢR*x@LXv0DZT%Pw0@Tszh:Lx4p{D"+_6H\sFsH֒]vR$',oHj#nV؄#u>d n~qج+,N9Y*`soܬ cn,a3R%,85V.+Uz=.Manl 27٦Ȓ;d +tźAs$g-˨|#|ě:?ݯ4il"'5d6H l0H4&X͉m'ʼnO6~uYl.Q&sm] P(hv7ؓљ툈֡^C8 [e4:Hzѝ.a rP.yti %XrُێE$ LNj؇dNmnf ͣ>0֗<)x^¬C ܨzN3) `-9=;[yf>#ɤG] D8K#0#m*vaJ^ǀ !:EQBԾ$VLNHn5*%HH87Ǘ;{עȃx IF[8qWT$j8T%q" ¢Hnfl'΁$QڄN|l#X ~<*-xm5f9c! 39X.veXdImUR GIU/vo(Lȃˢb)eb|D[!s>^~W?U~#Y0䉔>%!,s)GL;Da&#/HH$)edAZR偧>=%sl\O,(rRa}*!a(jB]&PcQ:0;^gw.gOj&wﻲVp o9\ Z1/bV?؉W2mzhϞ!"2&""]Ҥ6ơHůGq`܂dR8-ֱM-KR*.1߯#} /ǞW0 zQl]@6trT*~+ymmQyҗf!d1]}S(?1O d^_Dj"yަ{1o ɆRxʚvA{ӘZ1bSazӁ_&eu^_-}!CL 0L]MIENDB`youker-assistant-1.0.1/qml/img/icons/revoke.png000644 001750 001750 00000001130 12312451003 022013 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<IDATxb?&B&”  Tݠ޳eAR3;L ^  73~,pp)p6xz%8c pn5 10~KAQBNq#@&cqtB :R.X̞7| Pv#ȯ3p;$( |ʨ)xtǿ(n?T ՛߿d8QoJ J8D1ڏl<`Ca U"S_tՙ/ bTcaPВvػtc$+ápr2iG f ,/~|^}T2Hb7޹ $_P\k*7<ѭg y /Ăb <0[As6i`3 IENDB`youker-assistant-1.0.1/src/image/0.png000644 001750 001750 00000007533 12312451003 020065 0ustar00saucysaucy000000 000000 PNG  IHDRP<'= pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FIDATxnE.3\! $%;^v [5lH AB((@I&=3]ExzfASG,Z~rKm?&\*G`Ex#j ɱaǀYH3\8+h a dH( I2+¼\<> Y;~+ |v#uOC7{j^=.?ls, }Lt>Z2,ʺِ5:C^CnlUdžlK=ȝq[j}NHL%{޹Xᒛopj{l}~\v/QlW[}RC\r^0ϵsuf_㧝U#>O7f81`"W<.h Y &.]Bwu $0i9aT>4,_66^?|Gk{^𱿼ֶ7f'[5msFjv6xA4inUh׎f϶"Nu&Y'nBfs}!s-{*`{е0aQj즦ɦ@M=^aAQz4d`ԓIOiLzqJ ޤT:iPD8#'BDN_Ĕj)ͨ&}N.h59J,xQ&c,G3+J;? NTw[V[ʀ:l8D9h9x3DtK%. */ #ifndef SKINSWIDGET_H #define SKINSWIDGET_H #include #include #include "skingrid.h" class QSettings; class SkinsWidget : public QWidget { Q_OBJECT public: explicit SkinsWidget(QSettings *mSettings = 0, QWidget *parent = 0); protected: bool eventFilter(QObject *obj, QEvent *event); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void paintEvent(QPaintEvent *event); // void resizeEvent(QResizeEvent *event); signals: void skinSignalToQML(QString skinName); private slots: void showSkin(QString page_count); void verifyToUseSkin(QString skinName); private: void initTitleBar();//标题栏 void initSkinsCenter();//皮肤列表区域 void initBottomBar();//上一页下一页按钮区域 QSettings *pSettings; QString skinName; bool is_change; QStringList skin_list; QStringList tip_list; QHBoxLayout *titleLayout; QGridLayout *centerLayout; QHBoxLayout *bottomLayout; QPoint move_point; bool mouse_press; QLabel *title_label; QLabel *title_icon_label; QLabel *close_button; int page_count; int page_count_point; int current_page; // SkinGrid *change_skin_widget_0; // SkinGrid *change_skin_widget_1; // SkinGrid *change_skin_widget_2; // SkinGrid *change_skin_widget_3; // SkinGrid *change_skin_widget_4; // SkinGrid *change_skin_widget_5; // SkinGrid *change_skin_widget_6; // SkinGrid *change_skin_widget_7; QPushButton *first_page_button; QPushButton *previous_page_button; QPushButton *next_page_button; QPushButton *last_page_button; QList change_skin_list; // QImage wheel; }; #endif // SKINSWIDGET_H youker-assistant-1.0.1/qml/img/icons/iconbeauty.png000644 001750 001750 00000003774 12312451003 022702 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڼWϏGίzgb;#( !, 8?a 儐  p1 Q#v*{U b宪Uu@]zOZ'/(ZO)Gi\3?zTn^<^0 ~ٱnǵ7EeFrgq6O1 "BDQ( UI i^nAxȵi\SymZ^O 0f6i/:?鳲i013Wax 7눃H,Co0ED5N.n<,C3j764ZGkN{M5msCX`l1fa@Cn}7R$(ܧs8٬0;DIHYajRX]@N}9`%$ԎWϠ=߽/?(WY$M f~pKNCcnSPCZ }Y(-K.8jgZ9yqd۾~ﬣTpp(8n?ְkSԖ&U[]rтέ֝6";@}kgp뒈QEGVA*I:y8v_~S,wWV^$(^l~N K8\-ɴonU@L:N)Q^9VCN 3Np{.e8b.B(HE(Q2:R>d<{}߇`F,7rC ?lS$/!V*rRb,1"Va˭H IQVVP}$s̽  [`)7YWC_wu>\bDRL&0Tq @6 2fH$Ia@nwY6>A罿׽Rm O?rI!pj(ΠyM*UC:Nlk {8ԝ}K2`,d(HAR?ۻ(yOOpxxWU\E|2~/PU!P 7#h.\. ɻ*WR2k/K MCg|gc_}Y:~W)F_~'`[IENDB`youker-assistant-1.0.1/qml/img/icons/logo.png000644 001750 001750 00000013304 12312451003 021466 0ustar00saucysaucy000000 000000 PNG  IHDR88PtEXtSoftwareAdobe ImageReadyqe<fIDATxbZy?.T? 9c 8^mcb ysþbamPڝy 3|%k|aNy'GO%xb$7` `<>}j9 &%mgv!uOAzwb _~0?dUz6T 70t[o~/7p?8Y0*3ws~ffxዷg8zgd`> ˳->[6 #VX.kr7V5 ~ Pqap@  0_T7rO aP{So~1l~^yޠɯ6Md(|pR¬?[(׿_ bAZ5X?S_xW>M 6;)ogFvfFVYVfgm|iMߋ)\ '?~g @ lͶ[j! Z7QAPы?@,=HiЃB)!KRm ؍~Όq0ayyx=CCA:Ģq5y7uU/iʳӌ?`&Pkrީ.] Ci.,PARDjmj90'~MQ(TT5y㲇zRq]ۄ kzm/A/l-:%O c$n 8`%ٌÖUI9~zd%vKg*;ݗ}R\Z a԰4h4 'fccg@jo& CxGf]oW\ꦹڵ->ztrbf 7JG9׌W\DUZ0FEFp+R{ʁqN%4d*qÚ-CzZw *qfltuJr!EhEEQaDATԮ6E  BIA&JB̟'N093ͼw7M=9sٖT%BL*TSӆ YYNkSAIbR6ME-Wd"Q'R$IDlR"L'Lv[{p!ϸ6GJE4/xG~}:/DNr$$bL eУND(2WCn!.+D#7al+a0]`&3-eEt°sgM2A](Vt&`#7uSe6"gLQ2-,n\RD$4Xj* =a\+ݰ\7Smt!hgq@n.TŠJVں0 ][ ڈM0JK2x*2AVMuQsRMQ C$_.u T# 9Ŷa/sC!ۭΚ0hp\ꂢr(઄Φx߱_5%4P5yRBOXo?adu~8v da2}wI`Xs #W5žSKgiPgoLO<B{@,h!;U0~SXKT"Jܠ1d00cn"?aK R$|="#z;IXب(|}3;KE& ("?1bQ#HBD%#qKJ K"SbDTRP:-t:yw;3vhmsy;??Q༩?RPtѰQd*ӆ%V /%4Cl~^TT$d2`E B:lOZ(U9:nbl3?㝒t5V'^TB$fA0 M`Xʳ{I(KQx=fJ荫߄nE>cI4rR`XaD0˛mA4r+jjzm>m7r(n 2.3A5HV.'47T{<(W8^D[~FNXp8B35 ]r9b0\ `ޝAW%y( }-c)b8Ph%QQɴ(Pr޷"#! > N4A4GTӴ_ fG0@HYdA@y[zALM?-"÷<8_]\ӥ]r(@]TWne*@l;Tk]슁p@ 4HQGх>-#.Jؼ7ͮ G~ Uyj;1`<6\B68`/CsqyoKW2S+|UX2K2c@8ٕLzOX7a4 (|aU4%+ `euXʰΨ`00:}#>x q#X见xydKaIf ##,r  ˦Ӊ!L y|.?N$#N#`C>]'09c n8whЂj^|#Oe-ETjңiNeǂ},e/c8/ xjzL\+8!3u|O:KҶx?ؐvH+Zޝ4=GQEZЯŨ k@]׀a7o-SNjgp0\:a H ;"ƇI!!gGBtuWVaiq;疴V9z^5ǖJxL A<']qforbh|Qm_c'I:GgUM|Iƌڬv`dШTgGm^dǐdy)u0 0ΆJYFzq9ҡ˗*%Vo8겐T?ODW, T7Yyl~o^5> !CEih -`BK *ZJҤDV QP#ZIBBC!W8r(l{sy1DkdƳ};s[ϼt2Vl?' 8 nXHRO-3mb;ˋOs3 ScK<𴼵hp ()piw[ߴ8#{uͣyQŻ0\ȓvTP [B l@Ovј9I˅E͓.EZA ?ώy1 G\GL5E/w=$| :8maI= +,~,ٖ\Mp5 4Z@6x`2%˰;Lg*m+3c%&BiW'O97 G̸#)EO^Ao~WZezRv e!/G.t\*rџ;pazM*hK6,0L"̃S15zO**r]{`?NXRt]}z9ā OVfURD o&Ϭ\1nsi,wp0nnID+~q3^|ǯ`uRcI,ȋ" "yH. -Y۽l3}+LP74Nzv :*($nYK\ɹ:0셉^[ְεt@TUy`tت2"E=ŁpKҀsKi6ygv/U8=I'PYEɇRP~zTL3)BcKAbc`"#QLsӝ'Kb`vAܯE*t p6lbz>=FyMUX+=A7k41]N|{ں =t9ѝdڸg\uy3)G7ӎfrsC0U+kš{"|ńs;P9`4A)\$zٔ.Kȥ\'-v>Y+PBQF׳$S3dz(%IӍ wtͺZq!{@ M}_X~60j x 7 WwmL+ָ컓dɶ\= !kRäC:dCI@!O_:2bIM)ZnV gҩݿs9 F@%Ynxfi$y@HŒ/6n2_g'TƏTa'8$*ӆ>3!ӭ#ha':3G2u'iG6K/ʤ$IF,{Xf뺏~/Fw,Q7Y Bx- :;o)|X3=6RAKކ5fyAX!u]3&mȍ_?(6?IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/weather/__init__.py000644 001750 001750 00000000022 12312451003 030230 0ustar00saucysaucy000000 000000 #!/usr/bin/python youker-assistant-1.0.1/qml/img/zh_CN/disappear.png000644 001750 001750 00000035313 12312451003 022370 0ustar00saucysaucy000000 000000 PNG  IHDRxxNcDtEXtSoftwareAdobe ImageReadyqe<:mIDATxڜRkAnlwRhWЈEaـC!oY{%7Z|egOEa_1B~^E!J W/]؁y3h`2I/3b1^֥xF @bumwOݝ7 w+?ϝ ˼%qȐm̜8}&!+8?al;4 ؾ++diH~ 9~pDtf`+(^a瀇۳OP{]E?%! Kx^Ƕ Zc?G#>k4chiOW-ȗWzPzLr93ruUg/7br]_ C<$ ?۹gp.a#i7ymk.6qn*nD)geGowOx CJ B%uXF,, B"),D$] 0`Kxh]^ٻ7ݨq̛7|YUA݃H|ș͈m,0ĬI-9,Rz."ȿZD !I(>`฾*H:?crv|ty yl~䭉}j{,8vwHFkjD&=O%YU(+i쎅&wfR<\|_y޴} 9=z:׭RFa5If>s=f` Ǝ1L''95*=.P@meRePoy'xL~P~R&NOMHƟcdxE\NϨA.]:6fVJ)3+.aHcm$Y~O{)seg9|YYO0Ըi".HblIX=ք Q"1&lpP&j M8PV Hdimyow;M9p񥳳ٷ}!BUܠ"J .n1kܹ"YUԋRK7(+GFe9EmdJ8rayxg]cG sx,ޛl:tb;FB6=3N|<=3ϧ2N|S+ o}9_FE@2D"=]d*޲<4]wAw$Ju#D?xи(|jIVmbclb&BHjk`ZZiQ&}jXjUDDA/ *(F *-&ݶ`"&콞s]7N=sΜ}ߵ$J @R2z/]4ҪH*UkSֆudq]Oۮ{jJ13^>*J \_l ^Ċ=è)DkFeF߫ŵܢd5zrMN??W(=j߉hY9x>T:lPv w4;XRNa _&G1s{!c$!9~gnQIiN~%{2<<K%-拁Bt6&0V{{ɧahȿU,.þ'~iIw{k=4< m=(zoP h- ߵa]n$\+B!FHDxyUZ[˂3'"alxٱIZ!]xym Jɫ+wҀ7cbg<dYъ(R)Cɤ 1(4 d .u6D>wbhƍqܑ9c ۹N9~D,Ty]cW]SkkĄm`*kDd#i8t $y)I~9{>36-2 Am}P}5QADPL U^!IU(*C 2qQSF)/MhGyM =} X<ɑw^ҫADBg~V@K}zW_AfB_2Ɯ}y;qgBur{y'}#qǬ{˯Kku\bu^=5.N8¶l4,I,Kv5t'S1;fKBZ34~PܒD%=LRZ-笍ym)4}&mËSY&2p]S[ŝ:qT,.aC2S" +CSD= ̕4G\+ʰ'~ r;_ ,B~"ãP=:6!b*_P/[Ol "5:OAK4~6sΜ>%o̟M"s!`@ `~5mеM,Mؖ1Wv>VlBRW~ȭe3eRf=Q}[qLˋXZ3 x F$u3Reg#ҡcǏc='Vm촘A8m9}߻K sF֖+&i G杻Ǥ՚WfzVVW!+oX͍_*-bWW7FGGt !KGim!]_?BKU&Y<;o`MŲ/\7sl}RԉH$47(. (;1e L]nk a6as^U':$Ç^EuUuWxKmfO*:Xa5[[^آ=7Ճ*?0`-8>91Oz!Q$T\7<2>wx%A`KG2~3Ȉ;xt['svV/0Ij=3/Vyi8gD*;Q^f 9ٲґZanT$슪˿He^((*vհ!0C &&i,ԝY^w>bҚVı24#Tq<;LFg՛u|R}s{\gqa}؊u!CSQ%(OQQGwPÐyg\x=Awqh} \tp'TmBH(H䛦j|| ~C,AIJZ5fJZ[1'P_KUq{Bs7nJRz-jg; _AEd<h <TI&;#i]rPՕ8aY#輆"I~T;bc!a CR_)I˯*F MM KukW l£kd8΁T iڸ oE~/ 14a!s* !N:Ol$sg ~F =#CF[dڪ!Z w §1ceF-|X/(W*QQN`b|0 }+9.;B`o| ̬vεMm9EX-QbȊu1 W/8C`Gx$6[nK +a' f^^4{\e] [d1zSZu16@Xx0oVSDŽ!3C 3VntôCKS*Rv;__ژqy%QR 6m>TUlfZ=L1mĔK<9*ڪ#h,&laиi L)*FK{$dhP1ɠy6e~L xro\ʩ/KT7 F6 ,Ia9NVO0h}´ӄ9,JSz@ƕK]56T[V;$TFKA0&,yB!KyVQ5LJwwnıFytƟPg3؜Ml7lL|Oi8wDD )͉Je5# $5/o%inQF57Ԫ89g{`%uAp錽6ϗ#U/H}[qqJ0Jܼի"uLB ·pwQww/3۲rhN3m:ŸH o~a%J.DvhC锄੊RxXVW:z]~%y m]s>=)(+JKEcx"@]zs;*af%`vuǥ .yC-6|Q~>$ ?oixԁNP`3M]׋TmF mme& dShd`\D=RPlYO_=iy]R\*w._m^~T2`B%n߹m+jg&xgX4 Mb_SpGB|x%9-]#;k#hwD80[ Ȟ&="v~K=xԝ\h g0`f.C4Alx,-;^C0eJp5 8?{o&1RMBeKX 3rU`7Ժo M#C"1 $Xb:Ԍ3]|; ;:g_WҎK /~7B󬿓y{ D}<0ipHĿc#~~%Rvڻ `]c[*y):.s4u.c\ʷow4݊NOdO]43Q.]QTdJevyݟH!_G^gjǼfUU`lB76n֥طgE"k}eJ8q̥ ŞQaMUXxLf G,rN~akh[j~р{LJ\JaO^ Z ,zVٹ% "p9K;ڼq=o<I% N#eI@ A)hCV1H5k ?۽^?,\km,\.^b(-+vZ[[Wtk棦z:|ހ1fUR S3Ĵ4:KcB,L?x RBM^Twؙ8@D ;4==ơҮd1ɭ3jҊ[b5 s{E2cO1lcg?'89it'OzU3 149B*ii#&AvXwd\4-<圜cMiRyLRD3H\yXs޿ '<F+L@ʸx6cAN1;2VZѸ 'u \b.-ؐi0 SOjpZN =X#`i^*dV//wp aJv굤 0Kذ׷̈́S$<==;r]|~Bڳojp` 6s|tŝNOݟD[Q;;XXrrs4*OXatdXMbn]{tgRKk;o b5$ql?>ʇZ^$!@ʶ Utvպ2J"B&L"{kwRrss/Po%ycRhc<)ΥN80Yv8Lvo7Rz@EKpіT%2Ҋri}M|,w14gwwoǪo߹#ylO(iVhlleRNOm0/ S;-?jj@_=򒤽UB.0 WP?GW}=B];;7)cxd)Z3`- r1,*ÌƅKI^xJ祬a{:?g%0RIWW}t{k~+Hgbef{ܖˍ945& /j*+(//xa)nW+Oscߓ~e*=yTRUN=!܄#&ߵsuolbEi*Eybȓ9,E~EE>o}a6N;' '?58(`Xۻu&]l^}鰜_jkR<ɲ~3p  XZMr WEwK!s_D9ؗ=/ko#ĥ~KTW^zbb^O{CX"@s<eRͺ(U{AbSP?>SgBvyyNhTdue[\\ 2/>+s\L%4Z`!ܮmc]Gi箽O@^g*-h)MٙYpff LyG ™ wezzNӝ۷˯޳JJK~|W4>Z{QǦMvh|^n.:Qc=9Me%ET>OZlbzFs_g$םazT-|}O\K'BC{qx:Mޛ*ouiQu2Ju*)2[VViz2 ˖FAy))'[V\(R6E1L>}qZZt  ReFvm\V🸕 `ԝ037G~lmu5=̡;5pחJ/S50ee"9!D"t_cdwpA,]4n)u*xȾ@3'ŀh-fNv&'e/*:9<1glgskLqf2nK->_I ,S'tLbqV13"NIHùýn!{3RQǰO.i)ۼw%y"P!,%q_,)NE[Xn);&wCe n24+Os kT 4ɒeՌbd!bkKTX<] kW,Ť:ȪR]^,Ճ%h9)&i.a8FzZZ);yT*_K ȣB&8qS`98(!PEBD*˩Vg9HWQt@ lllh|U6!rx~YtȴXdXڪJBې[w-[tG @ywM6VQߍہWPu{._[D4RgGGaoz`&C۶l:[2mw(uԳ) VHRZE ^50grX .CThql]_K7F;J\hG:bڶm|eZJiǦσ}斍Բ]3/:BN(TWbz~IF^<ЫDŽ" Os kxB睠MUV^nb1ZkX2",^Ruj(W6OKz 'lsYŜpuzf^ }V8wsi-Ņ"tsjWfzk&َ0N]+eӈ/cTg-^+%@3?.xO g8\D35&\7~-ʡдeJҠ<P>s$ 1P:Zk$'".JGf!i :[Q%zN:M|q/0B< OIemhp4bpY?68cs~pÕq7de*ickEElH%g,ி).tAKY[cãte`V)wSAQQȻ*}A)7a sj0#wzWh2ݼP[4xwh{6|q)n>`u'[цD Ve2w 'Ͽ 3w7IANr["aQ# MufeQc3ƽ,H,w"G F›u/,ɂo!܉ 5A8|aq<շ9 N_!ɪ~OR 0ՈeS99h1yHQ8-nVERaN (!<pY09LP੷Psq7c[:x{8# L]96tV Ԉ.rPJ“ΛJcT]SMiN[k8g^ïPMM ]NL\fU9qvDݿ85{כGiq]I yu|mkͲct/kUm#j͝1xʰRo3Byw*cϹN`he #!/Ð!Hu":gX4LYmo~Kwȿ@aUB:PD/0|l?@'y<%?~X.=oθ#%F<~ ?4l@=DErkȂhFKw>[ |trv)` +hx0v=!T 7ᇻB0<=@0<= ~S{orPg|r\U@pV9L Ny;+G!Fvmnr⬐eLCD%\@0!YWp[i(h\Ek!4q~b@i9 9ѩ:Si1NGGbH*^Zx 4  (S4x$n15~D=##b}dy\]8Upz;Bar6??CCWr4#DOY^څ!0pqÔQH&B:Lj5Cc1 HdS"JPʤ(ֽA"%S6KY YjpEY/TѶ]OdÍ]&60G#>?1"B8L̳BIvз%T] *dtbPeN;H ]S %8f @RY1~3|h! YG$xFMLWZB8c|@W}oAwo߲4bTn!Y_Hr \w: ǫf0(`^'5NM~r`ĀULH{\Wپ{YrF*T7x&3T[GBjYɽ75=Bp WRu ĩK7FG2*,̕S,`R\ʑ#j+ĶTTaA&6woQ~AHrmh@haa>CgQXT uaOYkcgsrrRR|gg="kQbK?I<:]PDN@9^Kgt|̷?򴳘ʌki5!-caWkBqzuk2"KqSO?&dޙz(Y6 szE8]`6HgtzYD>74='Xl["|ͺmpgb9aη21Wtxii1MN-%&őL8to鶌Y{ڶ%̞L\a"㰂FK&ݱ)aYΈ5E0Rm&2X$1i'MoUF\pơyn 4SfM۪`y800rזQG{^6GPLZ2Ϭ:m'(\m+9|l],?92}$r8juLY#YFdeyx_ +o&(F 1a,nn+rܘ5:0j4yH3xyJ^BKq?n'޳Hu_rq6b>7:wq5融vEn0ogM Q 4`]ojo>E'+ PGEY)4UB{,M!XIENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/start_systemdbus.py000755 001750 001750 00000002764 12312451003 030473 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import signal import dbus import dbus.mainloop.glib from gi.repository import GObject #import gobject if __name__ == '__main__': os.environ["TERM"] = "xterm" os.environ["PATH"] = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin" os.environ["DEBIAN_FRONTEND"] = "noninteractive" if os.path.exists("/var/lib/apt/lists/lock"): os.remove("/var/lib/apt/lists/lock") from systemdbus.daemon import Daemon dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) GObject.threads_init() mainloop = GObject.MainLoop() #gobject.threads_init() #mainloop = gobject.MainLoop() signal.signal(signal.SIGINT, lambda : mainloop.quit()) Daemon(dbus.SystemBus(), mainloop) mainloop.run() youker-assistant-1.0.1/qml/func/cleaner/CacheDelegate.qml000644 001750 001750 00000020052 12312451003 023644 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "../common" as Common Item { id: listViewDelegate property int itemHeight: 30 property string arrow: '../../img/icons/arrow.png' property bool expanded: true property int heightMark:sub_num //需要传值: property string btn_flag property ListModel sub_model property int sub_num //接收清理界面扫描出子项的个数 property int arrow_display: 0 //控制清理界面下拉图标显示还是透明的变量 property bool delegate_flag: false //子项字体 property string subItemFontName: "Helvetica" property int subItemFontSize: 10 property color subItemFontColor: "black" signal checkchanged(bool checkchange); signal tellModelToOpenFolder(string category, string path); property int check_num:sub_num //记录子项个数,在确定总checkbox状态时需要的变量 property bool maincheck: false property int arrow_num: 0 width: parent.width property bool showNum: false//决定扫描结果数是否显示 property string arrowFlag property bool emptyTip//是否显示扫描内容为空的提示图 signal arrowClicked(string cacheFlag, bool expand_flag); Item { id: delegate property alias expandedItemCount: subItemRepeater.count x: 2; y: 2 width: parent.width height: headerItemRect.height + subItemsRect.height //母项 //checkbox, picture and words Row { id: headerItemRect x: 20; y: 2 width: parent.width height: listViewDelegate.itemHeight spacing: 15 Image { id: arrow fillMode: "PreserveAspectFit" height: 28 width: 26 anchors.verticalCenter: parent.verticalCenter source: listViewDelegate.arrow opacity: arrow_display //当鼠标点击后,箭头图片旋转90度 rotation: listViewDelegate.expanded ? 0 : -90 smooth: true MouseArea { id: mouseRegion anchors.fill: parent onPressed: { expanded = !expanded;//扫描出的子项是否下拉显示的控制变量 if(heightMark==listViewDelegate.sub_num){ //通过对heightMark的赋值来实现子项的下拉显示与收缩不显示 heightMark=0; } else if(heightMark==0){ heightMark=listViewDelegate.sub_num; } listViewDelegate.arrowClicked(listViewDelegate.arrowFlag, listViewDelegate.expanded);//1210 } } } Common.MainCheckBox{ id:check checked: mstatus//listViewDelegate.main_check_value//"true" anchors.verticalCenter: parent.verticalCenter // checkedbool: listViewDelegate.controlMain onClicked: { if(check.checkedbool) { listViewDelegate.checkchanged(true); } else { listViewDelegate.checkchanged(false); } } onSendMstatus: { check.checkedbool = status; } } Image { id: clearImage fillMode: "PreserveAspectFit" height: parent.height*0.9 source: picture smooth: true } Column { id: status_update_content spacing: 5 anchors.verticalCenter: parent.verticalCenter Row { spacing: 10 Text { text: itemTitle font.pointSize: 11 color: "black" anchors.verticalCenter: parent.verticalCenter } Common.Label { id: numLabel visible: listViewDelegate.showNum text: "[ " + listViewDelegate.sub_num + qsTr(" Items ]")// 个项目 ] font.pointSize: 11 color: "black" anchors.verticalCenter: parent.verticalCenter } Common.StatusImage { id: statusImage anchors.verticalCenter: parent.verticalCenter visible: listViewDelegate.emptyTip ? true : false iconName: "red.png" text: qsTr("No content")//无内容 } } // Text { // text: detailstr // width: 700 // wrapMode: Text.WordWrap // font.family: "URW Bookman L" // font.pointSize: 9 // color: "gray" // } } } //子项 Item { id: subItemsRect property int itemHeight: listViewDelegate.itemHeight y: headerItemRect.height + 20 width: 850 - 2 clip: true //当高度需要扩展时,根据expandedItemCount数目和itemHeight高度去扩展 height: delegate.expandedItemCount * itemHeight opacity: listViewDelegate.expanded ? 1 : 0 ListView{ id: subItemRepeater width: listViewDelegate.width model: sub_model delegate: ldelegate anchors.fill: parent } Component{ id:ldelegate CacheItem { id: subListItem split_status: listViewDelegate.delegate_flag width: subItemsRect.width height: subItemsRect.itemHeight text: itemTitle descript: desc size_num: number item_index: index //根据主checkbox的状态来更改所有子checkbox的状态:true、false checkbox_status: check.checkedbool//listViewDelegate.controlMain fontName: listViewDelegate.subItemFontName fontSize: listViewDelegate.subItemFontSize fontColor: listViewDelegate.subItemFontColor btn_flag: listViewDelegate.btn_flag onChange_num: { if(check_status==true) //已经勾上的子项数量统计,check_num记录 check_num=check_num+1; else check_num=check_num-1; if(sub_num != 0){ //在扫描出子项并下拉显示了子项的前提下,根据已经勾上的子项个数确定总checkbox处于三种状态中的哪种 if(check_num ==0) { check.checked="false"; } else if(check_num ==sub_num) { check.checked="true"; } else { check.checked="mid"; } } if(check.checked == "true" || listViewDelegate.check_num > 0) {//根据是否有勾选项给清理页面传值判断是否能进行清理工作 listViewDelegate.checkchanged(true); } else { listViewDelegate.checkchanged(false); } } onClicked: { listViewDelegate.tellModelToOpenFolder(arrowFlag, path); } } } }//子项Item } } youker-assistant-1.0.1/qml/func/common/TipLabel.qml000644 001750 001750 00000003100 12312451003 022554 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: btn property string showImage property string kflag width: 19 height: 13 Image { id: buttonImage source: btn.showImage width: btn.width; height: btn.height } ToolTip { id: toolTip visible: false//mouseArea.pressed } MouseArea { id: mouseArea anchors.fill: parent//buttonImage hoverEnabled: true onEntered: { if (kflag == "yes") { toolTip.showText = qsTr("Support cloud conf"); toolTip.visible = true; } else if (kflag == "no") { toolTip.showText = qsTr("No support cloud conf"); toolTip.visible = true; } } onReleased: { toolTip.visible = false; } onExited: { toolTip.visible = false; } } } youker-assistant-1.0.1/src/image/div.png000755 001750 001750 00000015165 12312451003 020513 0ustar00saucysaucy000000 000000 PNG  IHDRX=c pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3gAMA|Q cHRMz%u0`:o_FIDATx?\sJFc3712R Dm;p0 vC.ޛBce-bGr9afѬ@gU|nXG᱊>2GDb{j{ pw@p;w@; pwp;w@; @ l6p;w@M vE) q֬=ܝ; @ Y]y't~aqEwUwUwmi= = gGX;fq*,ʄ{k@p;8Nw( kq;$w'wp;w@; @ wp;w@p; @ 7n   ppn]D{k @;pEwUwUwmi ww(A@nwZ@:ww(@p@Nq';з",; ;P -P nqw8SDp;w@;  wp;w@; @ elwpw@p; @nfo."vNýfu*%wUwUwmi ww(A@nwB@nwp{@Jq';`qBw;w s",; ;P -P nqw8SDp;w@;  wp;w@; շl6p;w@p; @ [;! 'v"bWZ@^Z=#,Pp,Pp, b?$_?nqw;w s",; ;P -P nqw8SDp;w@;  wp;wglwpw@p; @; w(B@nwB@nwB@nKk-vE= gGD5;$' 7? Uw ,8N  pW1w;w@[@ýaq~xP nqw;w@p=q"b8ܝ; @ wpw@hlwpw@p; @; w(B@nwB@nwB@nKkM@p@ r@rp;w 8p;w@M vE) q֬=ܝ; @ wpw@+S@p  ;P -P Z@p?< w(@p@p ; @8Nw HN6  wp;w@p;EwUwUwmi ww(A@nwB@nwpdqPpwp;wv"b8[kVwN wp;w@p; ) (w(@poEX w;w@[@~l-w(qS@JXĄ;䶴ք;d;  7;T! 7;w@p؏8 w(@p;w@;  wp;w@; @ މ~xyVx pwpavkiMy;s/K ,|-ݕtW~%[<zk{O~3z{.ywIZ7xc8>~}V^_=Vխ[հ^ja}tԯV0 C]? }? hv]-D<Ԧ)Z<4. */ #include "accountcache.h" AccountCache::AccountCache() { dir = QDesktopServices::storageLocation(QDesktopServices::HomeLocation)+"/.config/ubuntukylin/youker-assistant/"; } QStringList AccountCache::getUserName() { QStringList list; QDomElement element = accountsDocument.documentElement().firstChildElement("account"); while(!element.isNull()) { list << element.firstChildElement("username").text(); element = element.nextSiblingElement("account"); } return list; } QString AccountCache::getPassword(const QString &username) { QDomElement element = accountsDocument.documentElement().firstChildElement("account"); while(!element.isNull()) { if(element.firstChildElement("username").text() == username) { QByteArray passwdEncryptedBa = QByteArray::fromBase64( element.firstChildElement("password").text().toUtf8()); QString passwd = calculateXor(passwdEncryptedBa, username.toUtf8()); return passwd; } element = element.nextSiblingElement("account"); } return ""; } void AccountCache::addAccount(const QString &username, const QString &passwd) { if(accountsDocument.documentElement().isNull()) { accountsDocument.appendChild(accountsDocument.createElement("accounts")); } QDomElement element = accountsDocument.documentElement().firstChildElement("account"); while(!element.isNull()) { if(element.firstChildElement("username").text() == username) { accountsDocument.documentElement().removeChild(element); break; } element = element.nextSiblingElement("account"); } QDomElement newElement = accountsDocument.createElement("account"); QDomElement newElementAccount = accountsDocument.createElement("username"); newElementAccount.appendChild(accountsDocument.createTextNode(username)); newElement.appendChild(newElementAccount); QDomElement newElementPasswd = accountsDocument.createElement("password"); newElementPasswd.appendChild(accountsDocument.createTextNode( calculateXor(passwd.toUtf8(), username.toUtf8()).toBase64())); newElement.appendChild(newElementPasswd); accountsDocument.documentElement().appendChild(newElement); saveToFile(); } void AccountCache::loadFromFile() { QDir cacheDir(dir); if(cacheDir.exists()) { QFile file(dir+ "accountCache"); if(file.open(QIODevice::ReadOnly)) { accountsDocument.setContent(&file, true); } } } void AccountCache::saveToFile() { QDir cacheDir; if(!cacheDir.exists(dir)) cacheDir.mkpath(dir); QString fileAccounts =dir + "accountCache"; QFile file(fileAccounts); if(file.open(QIODevice::ReadWrite)) { QTextStream textStream(&file); accountsDocument.save(textStream, 2); file.close(); } } QByteArray AccountCache::calculateXor(const QByteArray& data, const QByteArray& key) { if(key.isEmpty()) return data; QByteArray result; for(int i = 0 , j = 0; i < data.length(); ++i , ++j) { if(j == key.length()) j = 0; result.append(data.at(i) ^ key.at(j)); } return result; } youker-assistant-1.0.1/src/kfontdialog.cpp000644 001750 001750 00000030021 12312451003 021127 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "kfontdialog.h" #include "ui_kfontdialog.h" #include #include #include #include #include #include extern QString selectedFont; extern QString selectedFcitxFont; KFontDialog::KFontDialog(QSettings *mSettings, QString flag, QWidget *parent) : QDialog(parent), ui(new Ui::KFontDialog) { ui->setupUi(this); this->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏 this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); ui->btn_close->installEventFilter(this); ui->okBtn->installEventFilter(this); ui->quitBtn->installEventFilter(this); ui->btn_close->setStyleSheet("border-image:url(:/pixmap/image/closeBtn.png)"); ui->okBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); ui->quitBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/quit.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/quit-hover.png);}"); ui->curFontText->setStyleSheet("color: green"); ui->familyEdit->setReadOnly(true); ui->familyEdit->setFocusProxy(ui->familyList); ui->fontLabel->setBuddy(ui->familyList); ui->styleEdit->setReadOnly(true); ui->styleEdit->setFocusProxy(ui->styleList); ui->styleLabel->setBuddy(ui->styleList); ui->sizeEdit->setReadOnly(true); ui->sizeEdit->setFocusProxy(ui->sizeList); ui->sizeLabel->setBuddy(ui->sizeList); ui->sampleEdit->setSizePolicy(QSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored)); ui->sampleEdit->setAlignment(Qt::AlignCenter); pSettings = mSettings; fontFlag = flag; getInitFont();//得到初始字体 familymodel = new QStringListModel; stylemodel = new QStringListModel; sizemodel = new QStringListModel; initDialog();//初始化字体对话框 connect(ui->familyList, SIGNAL(clicked(QModelIndex)), this, SLOT(updateAll(QModelIndex))); connect(ui->styleList, SIGNAL(clicked(QModelIndex)), this, SLOT(updateStyleandSize(QModelIndex))); connect(ui->sizeList, SIGNAL(clicked(QModelIndex)), this, SLOT(updateSize(QModelIndex))); } KFontDialog::~KFontDialog() { delete ui; } void KFontDialog::getInitFont() { pSettings->beginGroup("font"); QString fontStr; if(fontFlag == "font") { //font fontStr = pSettings->value("currentfont").toString(); } else if(fontFlag == "desktopfont") { //desktopfont fontStr = pSettings->value("desktopfont").toString(); } else if(fontFlag == "monospacefont") { //monospacefont fontStr = pSettings->value("monospacefont").toString(); } else if(fontFlag == "documentfont") { //documentfont fontStr = pSettings->value("documentfont").toString(); } else if(fontFlag == "titlebarfont") { //titlebarfont fontStr = pSettings->value("titlebarfont").toString(); } else if(fontFlag == "fcitxfont") { fontStr = pSettings->value("fcitxfont").toString(); } pSettings->endGroup(); pSettings->sync(); ui->curFontText->setText(fontStr); } void KFontDialog::initDialog() { //列出所有字体的名字 QStringList familyNames = fdb.families(); familymodel->setStringList(familyNames); ui->familyList->setModel(familymodel); QModelIndex index; index = familymodel->index(0); ui->familyList->setCurrentIndex(index); //列出系统对应的所有风格 QStringList familystyles = fdb.styles(ui->familyList->currentIndex().data().toString()); stylemodel->setStringList(familystyles); ui->styleList->setModel(stylemodel); index = stylemodel->index(0); ui->styleList->setCurrentIndex(index); //列出所有字体及其风格对应的所有大小 QList sizes = fdb.pointSizes(ui->familyList->currentIndex().data().toString(), ui->styleList->currentIndex().data().toString()); QStringList str_sizes; for(QList::const_iterator it = sizes.constBegin(); it != sizes.constEnd(); ++it) { str_sizes.append(QString::number(*it)); } sizemodel->setStringList(str_sizes); ui->sizeList->setModel(sizemodel); //默认的字体大小显示为11 bool flag = false; int row = -1; for(QStringList::Iterator m = str_sizes.begin(); m != str_sizes.end(); ++m) { row++; QString size = *m; if("11" == size) {//默认字体大小存在列表中 index = sizemodel->index(row); ui->sizeList->setCurrentIndex(index); flag = true; break; } } if(flag == false) {//11不存在列表中,此时让光标定位在第一个大小上面 index = sizemodel->index(0); ui->sizeList->setCurrentIndex(index); } } void KFontDialog::updateSampleFont() { QFont font(fdb.font(ui->familyEdit->text(), ui->styleEdit->text(), ui->sizeEdit->text().toInt())); if (font != ui->sampleEdit->font()) { ui->sampleEdit->setFont(font); } } void KFontDialog::updateAll(QModelIndex index) { ui->familyEdit->setText(index.data().toString()); QModelIndex styleindex = stylemodel->index(0); //更新stylemodel QStringList familystyles = fdb.styles(ui->familyEdit->text()); stylemodel->setStringList(familystyles); ui->styleList->setModel(stylemodel); //设置光标默认值 ui->styleList->setCurrentIndex(styleindex); ui->styleEdit->setText(ui->styleList->currentIndex().data().toString()); //列出所有字体及其风格对应的所有大小 //更新sizemodel bool sizeFlag = false; int num = 0; QList sizes = fdb.pointSizes(ui->familyEdit->text(), ui->styleEdit->text()); QStringList str_sizes; int row = -1; for(QList::const_iterator it = sizes.constBegin(); it != sizes.constEnd(); ++it) { row++; str_sizes.append(QString::number(*it)); if(*it == 11) { sizeFlag = true; num = row; } } sizemodel->setStringList(str_sizes); ui->sizeList->setModel(sizemodel); QModelIndex sizeindex; //更新时如果大小列表中存在11,则大小的默认值设为11 if(sizeFlag == false) { sizeindex = sizemodel->index(0); ui->sizeList->setCurrentIndex(sizeindex); ui->sizeEdit->setText(ui->sizeList->currentIndex().data().toString()); } else { sizeFlag = false; sizeindex = sizemodel->index(num); ui->sizeList->setCurrentIndex(sizeindex); ui->sizeEdit->setText(ui->sizeList->currentIndex().data().toString()); } QString curStr = ui->familyEdit->text().append(" ").append(ui->styleEdit->text().append(" ").append(ui->sizeEdit->text())); ui->curFontText->setText(curStr); ui->sampleEdit->setText("Ubuntu Kylin:做最有中国味的操作系统!"); updateSampleFont(); } void KFontDialog::updateStyleandSize(QModelIndex index) { ui->styleEdit->setText(index.data().toString()); //列出所有字体及其风格对应的所有大小 //更新sizemodel bool sizeFlag = false; int num = 0; QList sizes = fdb.pointSizes(ui->familyEdit->text(), ui->styleEdit->text()); QStringList str_sizes; int row = -1; for(QList::const_iterator it = sizes.constBegin(); it != sizes.constEnd(); ++it) { row++; str_sizes.append(QString::number(*it)); if(*it == 11) { sizeFlag = true; num = row; } } sizemodel->setStringList(str_sizes); ui->sizeList->setModel(sizemodel); //更新时如果大小列表中存在11,则大小的默认值设为11 QModelIndex sizeindex; if(sizeFlag == false) { sizeindex = sizemodel->index(0); ui->sizeList->setCurrentIndex(sizeindex); ui->sizeEdit->setText(ui->sizeList->currentIndex().data().toString()); } else { sizeFlag = false; sizeindex = sizemodel->index(num); ui->sizeList->setCurrentIndex(sizeindex); ui->sizeEdit->setText(ui->sizeList->currentIndex().data().toString()); } QString curfont = ui->familyEdit->text(); if(!curfont.isEmpty()) { QString curStr = ui->familyEdit->text().append(" ").append(ui->styleEdit->text().append(" ").append(ui->sizeEdit->text())); ui->curFontText->setText(curStr); updateSampleFont(); } } void KFontDialog::updateSize(QModelIndex index) { ui->sizeEdit->setText(index.data().toString()); QString curfont = ui->familyEdit->text(); if(!curfont.isEmpty()) { QString curStr = ui->familyEdit->text().append(" ").append(ui->styleEdit->text().append(" ").append(ui->sizeEdit->text())); ui->curFontText->setText(curStr); updateSampleFont(); } } void KFontDialog::on_quitBtn_clicked() { this->close(); } void KFontDialog::on_okBtn_clicked() { if(ui->familyEdit->text().isEmpty()) { //提示 您还没有更换字体,请选择字体进行更换! QMessageBox::warning(NULL, tr("Tips"), tr("You haven't change the font, please choose the font!"), QMessageBox::Ok); } else { selectedFont = ui->familyEdit->text().append(" ").append(ui->styleEdit->text().append(" ").append(ui->sizeEdit->text())); selectedFcitxFont = ui->familyEdit->text(); qDebug()<accept(); } } bool KFontDialog::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->btn_close) { if(event->type() == QEvent::Enter){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->close(); }else{ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->okBtn ||obj == ui->quitBtn) { if(event->type() == QEvent::MouseButtonPress) { QMouseEvent *me = (QMouseEvent *)event; dragPos = me->globalPos() - frameGeometry().topLeft(); }else if(event->type() == QEvent::MouseButtonRelease) { setWindowOpacity(1); } } return QObject::eventFilter(obj, event); } void KFontDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void KFontDialog::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(1);//0.5 } event->accept(); } void KFontDialog::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } youker-assistant-1.0.1/qml/img/logo/Manufacturer/MUSILAND .jpg000644 001750 001750 00000011247 12312451003 024263 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !qAQ"2B#a43C$5  !1AQaq"2B4$Rb3%&#d5EG ?&XYNLB IE FR /v? As^)GܙN\\b\QAr@uaGze'削oV,^T 01$=ؓ\A3.>^~R %V!2 (0 0-"9rŽO &X93a cxH&{&f=\H&|)9{0KCre9sQra@aqF[,ErՅ锟&)%53>]i?LxStIOsEHC6kzZD?8xzU")Q %CQiZfLu Cgzz:dKIyŴ[x—TJK!QRtb,V r Fk`G柢;uV_20J=dm|&ϚDVHѿZvW.Apꔰ퍊%BCU@('&ʎT$rAӌ^.MN Lfڅ0'<*][q0nҕػepѫޭ `nX`> ۻUfr1KaLޣ{Y%wT "@16}zWYmeL" -n&R- ExLS hetquY|"mΦiƐ: 9~WGTS/xQ{TmL^qhd/|D#,˃04ݱkVn E- u*f'7RX@! tv.e{01 Eɩe՟-d{κ:n:%|}xb׆k{LBt^"Ͳ4¿DAs-)ݑ쉻izq[V%!ц wvnJݹrmKn0cФwJCY鯻.Zj5rtZF#bPZ_+'wQ|. _7ݦ#=jq -11K^(Uy$T-yrںQo-1("@>jSmI~Z osű}7c5e[Ƭ1&Xv~njcr=7_cxڍ52Dޠ^Dw @f&6҂ce DZ2@oM"1"+nJ 0qsדe<*$ehy>$kD-RF @MO?~; hkCOLŐt{VVMiCٚMu_ݧ6;/ھONzW=wywvsMUF̷ۧ[ěnWϯ=85 [4Q S@^PJ.$14 *  -3E)qjA8}TKntvrvUѤ LI'YR{9+}h(b Kwʽvݫ{b`12+(bZ] ]S7Rں$gz5]||@ vZ|(..&'əJfSfϤ ԊڔЪ7d `."8LhƚƵs-?+MޓgrQ.VԌ.oӼ~$op/]JH[FS+UDTJu) ;ӯh3J jp]L,736<[чU?֕ϋRm\!1ͤ{[Ď. 5Q2Ǘs?H pH!=4WAkmN)ϴl~T"Uluh=T\ga'Z]ߧUDL9!VRdpbPaÃ1.w-$kV"bO`R+k[k[*'[Eײ k)VFj c(?QMG9ߑw8UE`,#g=l:WK(tC++Zܼ| T@mDmLEތA!Kr鯦R*^ސD6:Jϋ[ilTa|5]F8md  ~M!.onLQ e}hLřZ1ٛ_RFD}j|޶vam3bz6su#[L>/ܾ׋Ymz8E5`B߭=^{ i00+##Mtj;ڮhEYnjVQ=I]p/C'OCI#YJqhڤ]7̔Ɏ n`0o|N3~l]OL#~ h9Wy{6nbfV?𿰺`$۽AH!o`E띨0M(o;t(ST'bfA(|*Tȥgra4 L2ch .2I4lEyh4{+kٙuN"ǒUcK:rZYp$\j=^jYs<4`F6Y}b f osM>!\۶ UaP)pZ¡Kž"V좡U,6vt)kVX3e޳?agVD0uͼ:g\N֚[{[>3ۖ]f&곂h(QiP )UNn٦}>!mVW#.Hr{l/ Q 5o]:TTK^>}gG ©?|VrǭH=<ڤ5e/JJMx-3LuGT ЧGD{e0l'~qIݭ9IZD3,7YqNZN ] |]3@jru%9CTH}+)ӣNERBS@Ȕ B)Cf>f.ToCj]gZ+V@]F\,Z." /yj/ ,P~XA8yօs.˺;D>Vq}R2>730/1VMWe)k@.0՚&w@.ڳԼwf٥c,[W9"WuTN+,H.;gͮgm*v0fqUjRH,  .U4-=m^M>N_D)KrX: V `bew(?m.ORZ{qP-U"kRVYe-Ӳ9K)FGduXmxۣ"̇xWryOb\q ʹ55vyUɜ('GIyGP {ǰF^)m&sFwPu4`~nI;8U#[8*:2/| D!B"D!B"D!B"D!B"D!B"Dطa Ü1|I~:GaBOC$m\+Z(K5oD)' *{RKpkoHٲ~gM0PBOC[p˿fT^a=Y7,9{r/I֤ZF3Vq5$ז-+3wɔ[=ΑFeNs`ExەW#J*_p)Z>e,X[ɓRw/矿nr/D';˹rOj6"D!B"D!B"D!B"D!B"D!BsMoϠ( ~c)EH|q5Md-nEoz뙰o Tठ<–IL[ra"iqS0 XX*"2Gyɉ5+~{Z1k|'Bq*ӬL-$3s\+'Hi//a濶U=MYc]dVnqJ9-Րf8MyU my瓭zOe&ŧy/wpr#f.T.=>%Uߊm0J=k?Y*;+{6nd+C㘝Uv>|,}lqx {1u^0ȏB@! B@! B@! B@! B@! B@! B@! B@! B@! B@! B@! B@! B.{4 DQ_cY-,fɆ#[/'3Ԝdâjx5zCf K.T??#?1l]zuf6i=v#̦06-IfS:6eTc[-.G"2Zna5f0Q zq-^5TP9}ϏQN3ӓ~W=|5>' LXū%9kՁYR=lnSe8ءVwFBz#׌,TMI]:~( t6[l8Jϛ7Wp͕gbƥvaU8s[,~q(++:*Ew޻&"3Z ߊX.F0Dz~Si1턤d!ݚ -۟&&z4N帚FihԍY~mN#*T{)ɒxnPe#nv8컄|0AiEk:FEQ&[{i! Ga@7bXWLb$l;;!g-|݂G+rޭ3iR۵?`Yi,F)^,ʷ(4'O1TI!m2NhdeS- ̪y2֠ԍj,79'ђojzua7INq^TGO,~q ;FZbգyyeT>֓mۿ]XFde}Dg}3=Ka+lO'ݺU|DkΛB5OQ{؁oLo'Zn^|vΚS,k7(usfժ0b<-y,7^b̨( )؈,=^pOc+ŮfnT;/7}[|M^JIz.K]S@u䞗}Uo<Cru/Qsncy8'Z~̾h#+~[68QmץEEc$ b}SХ"o6n,P(GT7_bLL9f +}iuᢝGپ<ǭ͕}[j0O0b-GT;F^mEMh-ݑWh^K=וO+rYW 'jht4<{'jk3ҾV[f }<~7n[ed-ꩳCT9]i."C0ͲvP#o&B;p_D6~ꋧ;L>#vގx^1bC5]S~VlΎߎˌíգbצ{Ƭ|4S1f9{CT_ct1i6n}QGxZs}ZL % .yG[hፎg7j5X'>zg+χ~1+X-$jZ,hA>F {\}S̫DF췼dfCNr!}8Jv(oh텊ܬ89Fi,-Ř"[g:'{n|ytԷX_*~Hߣ൮+-75]4- n0ɶIEVC;zp961XHSVm+;J!68cS{x8pfmM鶖X\-6yF9sV\ޝZ2]%u'l>*NQ[o2 ̯\hY?߈SK=VSYQ;><}u##krڸ(gffzmg'c=Q_c,֊hkG2YE|<ƻy^fq{1y'<FaއS,*CG'+dA6d2KF }ơmDoQYh Ҹ0 bИ:z ./_m<޾gZɕk G>+gYݳ]Ayc9ű$Qݫk|lik AlXa[+]q2b"ε|&Cop4"f+cq~$0UجohRm~wsP߆|J{00T̵^1P.&) Vn}HE,6*et7_(6o-k[f{2{V9x k04.՗n7Ѻ}TS^)zUM,=U9X^8aܸᖯwn[+][׉y罌bpdT_Aw`dfNsքOpwmڵ֦9ZjM}w(“}TnD# xI[.]z|U\1+͇]}kes@ѽ$nӦ,qۖLiIe;v\!YŭyCkKڷ{Nz:jв3{RSݎgӣB#5$K{Rb[JsO:bL^I޺YAGeVf~x9_wⲕv+p|]~-XxJ^*߂CM u1.LQo/JA23.t'n^.=Ws-LxĢT fGW5I{(<kvxu1Xb/嵌a׫nmqi%֡St[\1n_mgQ=$o.Ee<Ċ v]XWݫY_[Z6Kgtbi_y1cZ+6Feqaxr EZQ\,YA7T-F<(-_ꊥ1ND4-dïii'.̦u,y`-ynK36yvy<,D[o/6IWhgX7s#  kv25QNk˘vYZUABu).Ç"ol䞴>qk.;f>SssWD1\] U\9|/kBxBA&9G`8 B!^zXzB0' G=! Wz>'BB愀BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@AA!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BB@A!!BBBEBB!! BB!! BB!! BB!! BB!! BB!! BB!! -_eq("=IO=pRR*7*%A*};> plVA9Xبm nBU/C?'F׿W2c{iE}}o81{{N@rJˉ=~?yrS™{%<ݚVW;Yfٙshs#o[7[ȑp]每]nWw-Wi'Ma3ck*>r\)P 6S w&Ƚ[`.%K}:A#o8Zr{ BXWYǶ}]CwdטPtjn9Ugn:m14|ة9y2櫅"?#a^| Yܽ:;erݷL Jş^lΉY"g^@kq,E4E }AwrT~qr5y󨎑ͯR`i0m=YloYw6jkXgt)nd}L+cѓUlǨ9ލUkퟑQ} 3c?{!h ѝt\9ww ޯ%u8:7{oe'ϓc'V:Wgl99j-O]PڛϾvѓ'"}oxǁ]|g6c)9ٳ?o ӸJ]mհ(`:jdܺ1dbn=ºfl1(XEq1 KUJ#6-?.W(-N_u{LٖWuxq;L7O"eSmXfJ;ٵôګ),dVQ*1IT5rkcQ3q urNձFnFeRCAԁ!D\^\*K,U5&T.WZ N_Q/\*RQ<ܶ=wif7'÷:ߞY?5%Zo_+ Kll?>,ثU9{UqLw⩫*AYX̦q̚?w{{$?g=0-X^aޖC\pc$$[Yh] s>J(!f 䦕ŦwjUǦќg: #In:Ge4g=*yQjNٕ͚$ZOn/R wUv#_=ڇu`]1m_ Ǵ72.@Kk.Mf).,Zc,h;})xںpεV:^6jdKi{=8WlmE.HC1~DON$;'cth/bow.[:׫yMq*ԘS>r&Ʃ5ZOgtrr쬜ͱxܾ=Vwˣ%ќ4q}~ߝw ͺ޽Qjcu|ch׌syKcf|T+tŶٍ#8r~n6I">.ӳ+c$W2xw\3~ǞTuCX wW?`3Z(;9VF:GbQ{]x|Tޘ*N#gE`5/PbXΜ'>r[,xd0҉#yڮe'jUvcUlg.fd*f/63KK7$%|L}^LΈY5c۔pC6v~jᆼ*ŋqW'lڢE \ş':OIPnwQ*q\}c~#5FBSq<ά}G~DsTyTL$Ƚ޳Y_J={bevm0=cgz>ouΎFsˣ|[ V[7ꚬEX:L;m?MXm4QN*>-1MݵΣ+lG[#=;7AYfTv|']۳vc;qo̚npM(0zb{X|e^>VgȪN\23Sfva:{ ܪpa!-7#ϾLϘ3z;=; ݱ=lWI{T׮ֲ~0;/ڔQ6\swZY#ݿ{?+};OߨRTWBOsnT^9$҄vU k3݇ZJvl_ *Us| n:ui@9ZXr'XhnIylkc*G혙&[bW}uY[[U4jI?Oα^Nd)Y*U1҇fXԻo7ԟ!OޕR 3Cۊ?3ʉ2mh)Q~&!6O h AdobedF]  1!AQq2B a$"#4%1!AaQ"B$D24q ?Ǔ(.qW&$>]D DA3 ? NȒ%˟T7HӶW.AQ#TArIo-LQH&| 14gӺ*As%=K( +>!(n;m((\]D DA3 ? NȒ%˟T7H'm(D?MuO u:lFӛm6r*DQQNUj3 !I2a"c?^_^ȱ7ȼ7+#ыѺDh₤¬[j*}XیٹUmn_L]@崳dD8Mqsrq#pl#cg19vdk^ -E]tf>;&LwBOH.aӲ$I~r"E ש0zL=`Y0x!'mSD V%S̕ϗI@@N',+_VĸB (!BR5\ijf%A3Q˗3L4HyK<~E.:W#''G39|:N=x7or-޽sOӥ/jujUɢTgK\$ @C7sRDpuw{;.Al`ܝ7zۘc8Ӵx87ٴxT{ZtcE{lBiޫw^whUn^K[꫖0?5QM@OkqG,>SwQ]]Waygu1/>Մ;Ab% @}{mS{ܺ}emcTԷ;-wZ :2*YiQ1x伪6/!-بb`.@ :XBusܷ)+',%t6G' Y\;0Wٿ+5==oV۲{iCUAhʙEI}`JaM lNfk10#̔"I(n3oay.Lۤu.4 S$vnfuMogh]>*Hܭ6„U@`e:jzqؾ=s*\#F P-%s:>r,,Aw ,҂8Qݜrg"9G" y]MY&z6oȇ u?Mѱ ;M5EŢӝoJ* JM1+-ʔ6kֺ'=L,s~X֖6tf#R*RZM՟[iyu sԃ YbٕJM*KEyTRDcZ?ᝎk#1n5B%B.$ӡ Br7.18~Z^[H'Pb۾۰qsprV^ͭ tKgilK|vs9ี݅^ZAIp~Hv8~k|U[ #9T5X.5J]f/K(ѽ*ڮ>ܚ+G+"{[嬺}.°-^_t-p*mŵh1Ҕ]2j(YO 4Xo}۵a\|v719r_kE·vͷwN}٦R,gU:ymR܊f]5mƋ}܈MCs܄SD^^ ~O!0&8F-ML=bZ]h%Gߎ)nk?=PaG{w3 4G.IIyk;}y<. 9 <2cD܂*tʘJ-JY$#N$P(0%@ Ke츃Y+v^\'Sʖr!LB HwQdI$|fs4i.8:Շ dܳlyUJ, S:\Z2IJՀ !fr̗vi2i Bp8 cU$T'/G+Ayz0F4ó !M˾tM.,iT3*:)g>ZDôCw]wP=QeP%W3A9kՆ8F=D 넘HO"AG"LxD{5_l W-&Q 3DF &L'd NI:vDI/|4T\H@DH @rO {ZLyhrg*BA3M Nɤ>ГR t)_8@h\ECt;h@Er?UJo,F*Ug A3H&};'0S$PqRs"v 2<$~>?(7U_youker-assistant-1.0.1/qml/img/logo/Manufacturer/ONKYO.jpg000644 001750 001750 00000011427 12312451003 023706 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   !1 $TAQqb2B4Dԇa#SdFHcst%5Eu6G !1AQaq"23$%B4t56rD& ?4lɟ#xLI &88&?w1.pDJx&eAܤ.~)[  DGIPbU5ዲK5xqeYm\X>\TLUIsv9Cs"ʧtnrB{+\rk͸z. yeX,N.2s`[(s٧EB9 ^$%=rx?az}Ҹra0`˙i\a0)M n % ԶeE,2'+D6n _[״jڶI2m  ₩9Q7|vԏ+«r/Ky=M\SKy=!M/@4ODSKy=!M/@4O')fM# N߇4]l}-l~I\<^\M5wqsm,UMZ7c<9^$*EHɜSN44Rc҉$|zI71`GmG(e'6rlX 54u7Xq>5BL!RuAF3kmMqo%A>loe, ?vD 2GgMQ؛zs_&7wUj/%x29 , 4.NP'Tޖ01^ɴ_V<5Q;TyLx"/+,TLjc`Z#daRoerY!&)TSI3N ?Setrb8#R0>Q[#MNWԇLT℗4[oԭdV FjQ-QXN2gPJLpˀ@sI[f=w cͣU+1bӥԃJJvPiI*'4(floi =uXy9C( FAiViH= G{7{41mzlXwklZcF0n.T bᴲn"lvFBdWr©pS-"S+Iș?;q!|/Dt1XS9|.v K3va0kĄ)gZjI򭹛T˵zaQ4\˱Y m:ZiMi*xњ'6FVjj:ɨioV@͑QHM0TjAA/[WhN2i1.n5ArvQƊ"9[I.Z;J=gNQޙ49aX"muf OovkoUo7SUqM AƩDPuiHzWS8<90Z֊M.B,)?c={GS_).` !b A00Φ:rSd Dt"|^Q[Z1/_3AA2&UtAjƲdC#}NNS Bo Y,ٌLdt#ī/f kJOoߪ>88Uv/, Cires eyA,?.SVK^ă`>u?G7@Oϻcv/f?E漼$޳<)խO0Lۚ>*h,6/ێEC͠YB2 qB`(e-@VRSh_33.I#8c6fStZ`_e4b,kM7\JS牳EV X{e>x`-IvSUDaXQ 曬![zYrI'gM+w[+]Uu[𧅧j C>+EtʖKTº@}A$e}n: WK87Z3oT%rIBa=EE-ɉnQt:<Ȯy%qQYq*: 0#*tY2. .7إ_ZSg.^twŽ+ãn|Uq"+~* e}-al>|S%JkQk:$}S#1b7FHHU,iǏ4`ʭhߴBqI>d-cG}T$GG}IZ4Tk#WoSq5a&9]r+S}h~45gVDXSK=w<jrd݁O[Ft_Xמ :k2O0-M-ٵM1ZXOq,}:nVx\_*,*( 0&4[i^֬mW̋Q+{cd# 5w晈؟ )nm?~&Aw&M,!(SI}M#ci 9 Z։ΧNfR(+&Od~̈́ߟakqVIoېy«,  AiW9Ԛmpڈ fg l^fKYl=e-8bn}5yTv)%*G< $) $phڳӖF]1D9 {?m*UWba֎?˺wYʋ,O[8pm?'qSSIXkǣ*?ixYTamX $*2UQ9m:%fl0U۰dsC|v{'7[:^-:+?÷9VQXTZϵinQIMbk )B;>^Jt9PP׹Lfq[oXwzeŽZٲ]D6J\7:X,]Id#/+K)ɜX8' MaRXlLN 8l>) *i\[Qi%zW:G豪3Gs/?.n,>9i;cuFs5셄qrQ]2@y(c3Xx,"Z@CG>}M{%2ڏ%>Խ$rMl'<\TߟeYz徖UNY:mhu\jœBK×Oy0Qevj#ڂ\b_7GE[[v=0ݛ0=0ݛEvoovOΏ5;\`Ƿ'G~|kl>xb\vvOޏ | {ۛ۫QrL2xkFc''Y'VSuݤ#[%5nٻQZкð7nm{&xx%(g"Hg5ɦ$>( $LK; ~Pp7)#˟""!`"8fys<RD?z[&hy3o 3AgGgBO%O̿(8|r0Sr`3@r<h"| T youker-assistant-1.0.1/qml/img/en/title/toolkits.png000644 001750 001750 00000006223 12312451003 023010 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe< 5IDATxb?`ddD P&t?=sf H?@fY aUt,ý @yMߏ㵯_<$'1;0q|  0 IݸqhXr.Zvv?~ǏwV <}4[@ @DžD.@OH_XX/߿ ϟC|ס? A;jl~-++߿7lPŋtXtҤIKj6Kb0Y?Tݻ'S K7)z & k׮f^#G-i&se4$ؠqye5z39#o -p -U )KKKcǎM L0!yB^SV b۷>o<~폿-tR(9s&Ϟ=Y ,޻woҎ;ZT9_T;88H<~x3 \+C@MLA, /pT՚R3ۓ~uۆ(o7_Q/3! h/<'O P**M+m8G8<*Cߠ2ĀGo>G*`hb.PxfŋjhpFH֭[uArV2 z`PGYћ^_/pn4=MW?]6PsAzA>|pѸ.\0Qܝ+WuW@z@4;ГAb@GEPbMضV  `,t|ĖUj YPI=+l^(+CKQۣ<t? J r%% GS2TJ)ռ6DXJ Ԫ+A/BӃh zC_T =ċDDZRd%^Z)6b4M4M ~Hc:2 c~ t BɚzŶR^i\h4z\.B}}H$r ,Y֫Xlq N5/S1WR!1 K>-ۂͷ "%tʲy$IPO&Yj]}} kv}d5(Nܷ2 OghyۍđfJB, @V[KgtYU``w^Auӡoâh} v}ڸj+Dq[O,rJ1dƺmbh5'wJe;Xy0K3%!,V`  txR%+tї={MgC٥LQKu3 n_4۽x'oeNFSk\X,̦5,B=hB*U?Qɫ{,,fMLj,.J>xX|=Kֲ,G Rl,:H3{.,m]w}IXmv)v ?thosYW} rA[21q3+Nc0PxT/& ? `l{)ۊc到B.qr]!ܻb'504tҺdmkA  |o YO7^3d(߾ оŴUgJ,,ѨsCMĈsaQ9ya|tjĪa|J aB`h7ZڕBmKwK- dKNz{Ͻw?}a}$\ZH)y5;;{K!x-wwvT* Ap/ME<< y˟Pۦ)*>}f:~T<ˌ9OFG6fny7Fh@ pͮhFAxAivqq0aY'r@ %%.Ø9ct:DxD\6R9&r3 ycLᯡ-;B>'^`zMV=6 ݿinn=识mճ8ym_ ?u]:y[5~,M'Gg*D|,Y1Jm²@~a쟰颻  LH$#؇e`e>i:}q|uZ3eR?h'@|ln"'s%/"QGzj, `tvv~H1 jbCOk{Bmpp;ɴ?Ldo( 3Qkyͤńk5j"T5'Z<$T`^I,#203Q5Xo: XL?^sropr9vw%ɨp|^|FBdV UUU~#3aUlIKƺ`0mjjj)++X /Ge[}}XTTtTE̜&2r߆G;V:Zپo: fkihs@;׍b\X>F+N:bB=Y`IdZ $5fuf⑑|&j0Va;ԇCӎρOcԜ;MEiif^IONn|uc:r菐}lb1_ ^Ѭ=k 36xC1au{Ͷ4H0@``% S$sKKKt/6+ ,.F?}$JajL Ukkk?5Aa3FNNet]vۜNvͣGOPSJTI++$4VнG7aRDYz,BTh_uSbM6&MDI֕IENDB`youker-assistant-1.0.1/qml/img/weather/n53.gif000644 001750 001750 00000003377 12312451003 021451 0ustar00saucysaucy000000 000000 GIF89a00߰'8Z2Sy3Q5U{7Z1Ru8Z}6X}7Y~<\:Z)Gi2R3U =[0M!>^1M0N2N/Ps&Df8X9Y5R6T7U(Fh!?a,Jl+Lo"@b.Or1N6W|2P9Y =]@[v#BaHcw0GZ9[7W$Cb6X~1Qw/M8Y|~P,Hf,Mp3(IlroI4Ux54R2Sv5UK`i7W}9ͦ.0NJ.M7[0Qt-Nq6V;["?_2P3Tv42OΧ.4W{=_#Be"A`3Ql?`]65Vw|P30Mfo]52Pv0K8YV`Rcl\{yN8Tn4OiCAU`5[{D{F%Fg|xM$EfuwVbk[qtV!,00oRU*\ȰC1)ƓC&hȱǏ 5^d5" ˗0cd LE"r> 5ϟ@ JgN `MPJJ*"(TD7ŠKٳa)5(1D2myK,8Ȱ L_xhq-Hˑ'Yf>hAhϥS.z֥Тlr޽7ݾs@ƓG8KyկK.}ËOw% WˏQ'<Ͽ *'D F(a0!RxDKlAcdA(v#EH B#@5xc)0E@Yd $9(.D9(v6+%QNa81-c FNJD$iZ'.#"gY8Şi&2pɈ&(4Iâ6٣800gr0馜2HPi'#)!9Q x ˈx뮺f$&jȈb|b26[mE{ňA 5ıB찃B(D܆nD+ADVo!AJw)Qo ;lp/XqGp\ \3C,-*0<Ϝ CD F$L7IpM4Pgm4:@@b`hlEl`(Н6 QB gnjx. t8k8px%/!  xꬷޅg].0 /Qzk&Xxשׂ/P@s$P ԯg= B`o諠*&a  ;@?LQVXa4 G Z|,DFZ|/{ G8pa";youker-assistant-1.0.1/qml/img/logo/Manufacturer/EAGET.jpg000644 001750 001750 00000042221 12312451003 023630 0ustar00saucysaucy000000 000000 JFIFHH ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:06:15 09:59:12]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?4I%)$IJI$RI$I%)$IO4v\:ח~7\cclcSpˇqpqǏo+w[oO7V0s)gu[xլx`s`p."arOj&obISWfS{]\cls}T@.>b@hj'Dآ37!vYY_Yz6% hkH7moF?21-/e?9-DxjGA# zR22-,uKM‘el.{\ݿIO0򭾦,?{P篤^4C]PҎ۽G>}-hiN8'{0'| s(Y?r[]bſ3ٹXok r5bv~FJ'1ِ DtnmĹėjN:VkmbeѺU.n 9#|dK|"Y%{^yû;u uvH!|<5-N,0g֛w~gU(˫ҽ$25B`>4ܑ̘a8VN!#ri.8Ly81ϋ>s&"^#!!Uk,9{ ]^QM}skQA LmSUѺuVRqi:y& Dd?*|3hrr1[ab4 1ΐr>ǑUM槵ihU1ᆱ`s2IYV7&7 cW@-'wO4WݺHiJywe?ZQ?8Hk_$I2I%t$JS$WI2I)I$J_5_5_5_5_5_5 Photoshop 3.08BIM8BIM%F &Vڰw8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMGF] authentec]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM 8BIM ]FLJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?4I%)$IJI$RI$I%)$IO4v\:ח~7\cclcSpˇqpqǏo+w[oO7V0s)gu[xլx`s`p."arOj&obISWfS{]\cls}T@.>b@hj'Dآ37!vYY_Yz6% hkH7moF?21-/e?9-DxjGA# zR22-,uKM‘el.{\ݿIO0򭾦,?{P篤^4C]PҎ۽G>}-hiN8'{0'| s(Y?r[]bſ3ٹXok r5bv~FJ'1ِ DtnmĹėjN:VkmbeѺU.n 9#|dK|"Y%{^yû;u uvH!|<5-N,0g֛w~gU(˫ҽ$25B`>4ܑ̘a8VN!#ri.8Ly81ϋ>s&"^#!!Uk,9{ ]^QM}skQA LmSUѺuVRqi:y& Dd?*|3hrr1[ab4 1ΐr>ǑUM槵ihU1ᆱ`s2IYV7&7 cW@-'wO4WݺHiJywe?ZQ?8Hk_$I2I%t$JS$WI2I)I$J_5_5_5_5_5_58BIM!SAdobe PhotoshopAdobe Photoshop CS8BIM2http://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-06-15T09:59:12+08:00 2012-06-15T09:59:12+08:00 2012-06-15T09:59:12+08:00 Adobe Photoshop CS Windows uuid:14e7de79-374b-11e1-96b9-84cebc0057bb adobe:docid:photoshop:14e7de78-374b-11e1-96b9-84cebc0057bb adobe:docid:photoshop:84691d4d-b68c-11e1-b9fb-e49a17428440 image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?.*UثWb]v*UثW.*UثWb]v*UثW.*UثWb]v*UثW.,h3oz7/5Q~=*BN \,8z~&*-w&&(1I M<@3~ikf$@n_;yf=r= 0[f^,V-8NG밌?\t'HKYcF<3S .\XebôG5h\rigD|EO0h˷d }E8x8poy;&#o2egM2HO/ɚeѴ \VdX~!`1vvyvܽ.Ktt v ,6 %Zz^*ϥɈ1tY06#-U^-kV ou欼~S25Q^BWr<>3:6s}k Mj[B0᯵pN$OF-n9`<(Eh~)йz@`UAgWvĿO<6'ʡ&Kx)~O' [?=e.{kReK`T}=Έ pAuL5ecGD-%Ԁa=ɭY|tϞ0&!^''i=lidq'_OE^yrMLqSI~A&lb3ˊ?@}.> ia?%'S MBH[7Fp@)nFqv??nlg.iLf%_uB̂[{iFw.YU(͞-1L\FRጧ08tі,1L |X. e$F(Lj)EG5Z`$u11>/%Z wxfe+ę~?ܵ{E1cI߳=N%mo[K"Ti$B#%[nX 7!5yeOfU#=JpiȐ2Kדsk͡HOYAS:jmUIΎX o' @/N?ҏ~󢊏DXWy!m)8O<*Y擟NX5F?-?ߦ.O;˷-49wvy*YIYj@yG:\7UУC S}acyF {K1<[<"<#28n_W0쬵;O^D&~ T1\Q<%i m PeIf (9#ӗa*3>fGFO+/l-7cRy]2qB\Fxz4˱<}=m|k"eDnR2B,q125/a1!q<\jm"I `r[ ִS8BPsu[z0 󦴴9Lg)TVd*E:$}.٬KtSRd:]4Uh.rYHӢH~Q Q#u˦dLBJnSf·]=0ԓFV8|{Cй,'W9HnccX`|zť |\Ϛq7oK(Vp$L*Ј&wD _Scpo_vMp1%pa,|=!f` Wlz'AL.h}xtDc{6Wxf;'3R0#S٦k4BT)!$ڈ2!)e@beI\܀Sӟ5;|/7HKeܮMu;X:VbAG'N8+GZ(w1 VNQ]ơDAB-Bvh7ۡ]qP]DPAњHP 1w.]*7ݻ|~P^NanF^xג8HJ4}{av8ﳤu?!'5z8/YXԂR?PUYȈ ttz\I' "KB\uO1bj傭Sa1sCx F̥8'A2T`B/,جFOss{+_zk"t(+yn aGZ?2E}d+ [#0+t dDN;cVڦŚ&zwl> fCz'pq'r?ح} bpZ ֌@(AKS}sZ=J꽼5WM=OS%5֖5rxPImxu>K_V)̤NEx^uv$}ҫ99U<$sa]+uE~-)ERʭ\,T`B/D[%>7F'*b4FQFQ.r+H)-v l{ٙ}Ϝndә32GȚ&õހp$ N;[^)9Ozn6KĦdDJ3pr✤ ^6wsBRUqiuT>Ryǰ!R umZ-ؾn1*Y(&iTV@M`M,,|?65jº[W|53`i&Dtl[CW1kaA!$Йbƙ;SPscs\ :(:vRɁ\xR'aj$hPTf%cfETgu= |ةww{Qv5-nAd+&ZKS &#X,L"G,MP`xRCݡ#p"I5[묖X#v=3޴ tfF );I&fS(,uT}Esʢz)[o*z2.dN\xXU)bϦc)y~{>%]rKh/UufwllID I $q:R-:R_VP[Vj2-tZN_ U! H@Ԅț#>s{mݽs9^﷟}ڏOH]X݆U<˗^5]픝=ֶGn^OzqeN3@V ƞpW.!VbŜ#:nTuoĐ\K7iWV@a} s˂§7?ki:N=9'!4J֓#澓;`g\|a~. 971!g^*@y4-[m f&e g"iѡ^x0̡5 sӵbK2"I.ӿ}h&L@l-.b;>MY;C!4cplqXYj2L%T`pfq6i\+ x{P ol~]UtO($ϥSs$Q2X 'DR%Si%5=J10A9͢4H3[y"i@ $\U͆Zȧ~]md + `QfZ32bN"uҒ tuBx"b*]@A5U(%!geۻnp\/=]}s}|SGP{hd>?\AP!&^8'f2+akKvGkO^gvʹK]4 (v`b2>RCg#(gZ{$I4`*@*Ʈg1ObߩaV`E)G঳0O8ύǞ}xkM=01i{CDžHMWRr&Dp8;h,ۅ$Br"lYN^j;꒡R:rc HHsHQCMJRdKB1]9yٸax!>ehI&E /WP<|!|oב@9±$I ܴp606Fvy:G"X]_m:A;9d@&k$lOt ۽enf/8?V8\1{P3{?kns'R_jaL8xk5<ڍwmNcSS ģ+k}}#!4Z Rv.^J5]?uY]i2YxWus%PsPȒ(.ʛFF\[*[K1Uwu43>YLP1BN鉽мKh `QpI 2buyaef_GtEBsYO_mq?}I 3( rĘ~~˥Q27mtK&qs=!aZ')'P\z.If?fC2NlrhqR$gP-PlN`<8,KyӚӦ>xJ}}%߯!)zՍӁk>kӤ:[E ,٣>n-dv$ Q%I R0HV* YAbS,aqK,L0aFxf(d d貍d/6s)XuG,FɜScdW7n.,]¼bIW F.!rB d6م>{->ZzcmUA\qy\W /w ݿV]F`I~50{ON㠓F9BTj ޕQ^_wHIlllc`XXc\*%K, KJHR$$E&&0v85>b|ȷd0l:F3f}{ˁjK3w}{2\$ÆgWv+tAMsr {S#FZ5F$<s?ČQgI((.ŝoװHxw.=_b9.Ƿ5ykFu0קy+g?eGa1a4eEo'㉀}_Ɨoz1뒻-+ȴ,QΛXyCyzW8ΰ/g0:Ʒo%P[u~\PrY2ƚ=\|ۥs{^*t?'qf^iG?cq!8pᰜ%1ڀaSC4E3  Dv1'`dO]4&$i(K#(w{TY!תpld9b0d:"8zh'CY+Ϫ~5agGeL ("d@8b2@QNP2A3 "?Xf[qk]1,F44w L74nB(*#ai&zY"kh A\|$m̰Ծ -̴3r5}By]!6.ę jT$,Q~Ѳ"8^J 4 .C~O !7KC1tf~Q7M܊oS&mL))]z$W |3KYҞB)*T)A)-|D25S5BFJ:5dBNSȣ5)L "0ס PYk{}xvwsR:Ġ0|dj!$kڒ1SؓєX . ͇I" *sx˂,%eO H3JP ^͗9jJR m5_ˆ[g&ڑ^z%:BUck̾ s'2Ra =ö.7=Qj!`fLX. 阐͜+Ɖ`Q|Jz]]`^;4rg;hurUhCS-9kH-+asR0G/kVgg% "f $wa϶M8*C$3;lBi\{fJ!z~}\|i hyaN ԅv{ŦcX0{Y ag[ o=хgdžb5G|ҍG;6@kOGGL瘲nc95D썍kNǮz:g39h3Gq7rY9 a chPz]"AI`Z ¹vK [ -+OaQ:#u=Wү@jZcϠߑa;[ŵXIDź}nG6yd|~g'oxjȂXLl8G؋h=;ԕgxv!\>1/l;wZQl8EX)esXB;"2+faˡV?ՅO@3M/繕Pj"fHk89N ͍") w0,I.>WBF ÀZGmsAo(꺈FȰCՏBv0+H7AsبdF~=W+Ʌ \>_;cjID=h+ (.{`(A].(Kg(nF{㢓AY}9q.}Mrͻ| sץܭVw4౽_ǠW8Z*:߮^"Q ǯ^HqzT%FZ9}5(A.e0J ~VĒ CŶ%41 '#~fͨݘ?@LLxw&G+cf(CzϹ{ Al>)|镢K,A8>Ŝʃܑ4~J2{ZWY<$/[ '_y }_ۉ2lC3Yky~ڢf;.vHW#/dbiv5Wˢ T"\2F23WVGK Bly|"j?F|}Ѽ?'E&?ύֻ=ּzR/A35d= px@z[ׅcLknofAYb1bڜi=;b>>t|of.C·FbN̨~Kf),ۿ"zf&J7mexpQ1uM^{(GmAr\؝f`y jgbRA[Y(4/YL/k#5_hRʇJ@OEYB#$}SJsP]KO N!At;Ul sޏgB/V!kLi_TS.9 ЖC}{&cK"L`VصDzz_ab]{+  _U5}Ci^b=5gܶۛYJZݍڋޅWĽRKm&xp-GMi-MX2Rd\=+湅?2l8!i_R#a6 ބ jqIM)^шA,WEϫѥq V̯OឫgÝd4t\ \VR Eb(1ssCM?cKJ#X8 N s r4K pY̨."ً2:0?ԇ^)8 AW-(VjFݴ6 1FN$SN;dhҌ}cS+kD;)7^(%N^qk ɱxi͕>b7ڝ]^[~a?&cV41dǑᄉ4orѿ ͮ%mC-ⳕHI0ܥb-Ł&㠎ߧ-1j~jH"e /21D_ ֮|.!x`U ;xr&"mc;SDϿG 0Ld:M'Pzb 19RO5Bڬ-P ?մt$]sd,;]&d!Bnrqx *JndDF2pjE| " 8koEBfk1콳7Ǻ҄ݱ6ŸY3aj&wz-aZ:.(At67dcpA}P yaIam2d Lj)9rd/u)!M4J#uQ^ѱ"vK^q2B %\e{ Ei#jJG-3JVՐծ:?1ht3ׇa\4Nҿb|>őɖ&d=S$y/~ ߅jk*b߽W|6dW`r@w 9}w%qe7F#itY- !Y!,ڪݪPTE{njl XRMb!$YB[ߺ%KF3y^C9jPj׳w[zrwu؟HHaj+Q X-'.H?%e\^ '=vtcU;Wki4FFߨ &sɟ /=/MaS5)/A.YpY-כ H՗;6zs_jckuq;L覮t mS݃eDC ¦\^FiTk[1go[_c͖xbAbR2#[ D+G!)!\^/ S/ѻ|}8o:¥p/%BP brh`d@&Q DP @P LO?tj@@%_[.%(v'?W[ޅE픂ڇ c!Q(1u dg@I S*+ܘ]GGXD+{.?/zC;>*n&Ye xq {=͝qiH[9^!0Hd0+ʴ llS.. ),"g^i \(DK4X%v=HШ -΅ lVapN`&Qh j/lwy h\Y,0c0DL؄Re"Jn-@/QV3C\E6c6AG9q  %r dQ[m /754qK(|&Ϋ%KlO3=@5M}ߨGҫ <טrĩՉ AA Uk2rEM"&V S/AxKQ 9o# ܑT%#}hB49QUQ%YwB涏<<{Jس3{kLC%kNJji%"cpPSnIՁV@t_?/4G =X503awVڬsR_vwHσ؃ʛRM$883>ղ,Sv*glIs g*Tg҅WDA5bQ\ҡ&~#uY桉a*s9ض@s`c?8]/`x0tH& ,9A}e( ,7 FFЌ煛4$5'&_v1Oj`kWZ$ c{Iû_dtoA)9&/b=:/Z>\4 0 gXH!{y0 TL@SMY%d5&&XfNiX':'SszRMfGF`6{:&ntW5مf'uӐ8K!g "o{cƘL,@<MR5d{C$کo2cA%aN9fCMjj"3eE:Y`xjDJ&aîg~r@lC)?~yf %hLDm ij! zMU<+"cVvRZWZp6Gvb}Psv8jЖ#F)\8W0\ci4f2Bb-͌0sjF a4n\#RZᦀ 1!8ҬG35DPV*6Y{SiAk-To^:ǿöA$5B 0d?aLdxLen{GwrY*?eMg3*AC.0>u5hZ#l=n x&SwMq@sr02#c\h9g-*Df%o1pMiu1ϛP(5d8CHKF"T^X*ŵrgЪ36S5ˊiX7u6H#9A@r6D][FId|n8 3>p6^k''GFŵP}mB3dw|~8{(3Sƒ/z7 bA "A41Op1Yذ2m^zc#{s9} ]|A-  LT}X|%X7/ T7QX)hJ%Āc&{8_械qh] fa+/)2?K w?!CAD b7'A$#Ax RX8}lm Ι%s[3lZd Sڽ>sI7itd ՀHNr1ug NlD, 8f~.ՙp\s| u([:W 2a?rLf*[{hhQו@ʕu@ScL?Sf}WF#k ;4ak##] iFk+&@).sYH Gܳ};hbb/#W>vd<F=Tc5'f 1Sb} b8k4?P:!YxgÍ+и@ig+ ˱Yx LV$5 gz7jG>uڔf8$qar$G4#֡>I fHGb˜\+%x;6'#^r )sq)pd9nb*Prʪ~ؘjpi0}a `. O@SPfv*:r#sWE"eMs37hG)$ţеzVl$!B=)c%82]Uc߭Zѣa4=.&1w9׊b 254N |`)xE;W8WjI<q;ާ‰:O}k ~ᄧ>n醓spuUho^(Uws?8p4$Z}HrcCnL|?X'`|y=8g_f>g}4dn~U 0>3gYY-jtbJNLގ4ޒ݀ L2`L;wĄ)EZL))$]knO<[(s(堼-ĵim 5cgљc wUFhdt .@zܑ5Bi.A.(8{㌌ ̦؀*)c/ hA~c/ ypV"+*+FBU-/A8Cޡ(1NX3Nre{_G `(ēIH&c4*ƚHk!Kİ.~_7$Y}#`DUhTr"ڀ*thG'\aQ6 _sϺoM1Zv5 ժ%b}rą{y6b1]bR!1- /0 xzq5)idʸ?kc8@1g\fR`Me{#'Aօ7]HqTcyٹR[ֻcJxVMf#,^8r2A_=L`n {{d'ϣgد8@/h,1H(GV[ jFr">i*|QtW*q FO:鄌谟߁hbh/е@7U6#<> N_b ϕ8lWBl뀊*IȢ^=?vM+l36:1M v  H h9H<$[3VH7EtmQQ1DmSQL:O(+cqpW"f]7K@RȎ\tЄ !9Q f3W >X -% 4g !s A9`m]iP4 Rʊ;T/q(-a^Ub/bHWX.`irHQ "֮DqL뚒zCLZȩNnV;Ahyq8fKg/r 4' ÂrOCƹء Ai6u;WB|y钿(b쨰Q!ˀpFYXƣS X"353Kg :˽ 5ϣLK ǭ 0dnvLsNal"]7@ĵZz gd )LC;Zak**Rj0oLsyMX"'4}4\D-:64Q!.TK\Kc&(#Ѥ-V P]VOOgoLAiNHf4D޻U `P=7u}}TxSKI'9OCH>,*MDJU,WGuUox_ցOJ9ae2u,b\?|QIh'Ԥ5#6NE\j(J2̀/\螧;jh=3/ ШxaGx/p֮[V6-ɰf+!po%0k,=P?G_]`M讛0=Dga r2[ 7b 9ltu{QHp*#(؟9DL|3< laQP.saٺktD h8-õ!VuYƦ_.w v1+.ܵ-jK! jdG)eo Z{!IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/ZTE.jpg000644 001750 001750 00000012150 12312451003 023443 0ustar00saucysaucy000000 000000 JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  !"$"$CF]" :!12AQa"q3BV8Ebu(!12A"qQa ?p !BB !H@&45Z7aƳ)϶DSMb -:6'ra KxqG$pA=,|vLY=g&Qm|7UM&K2XBmJI9NHUG9ˡX9G? 70_VmH?rz31:jkY^feႊ!G;7{nXҹYo> )y+a%_~KnzFZrFSd +ߝDv2Smj@OH|Fڨ'<`kt˧;rqLxyM{ncux"0$6o܅#8g |vx>;=k,֫笓6KyhIR֣:OVV%3HTJ)WB I#8#*+O6ӷrL. o~OccH,V|MAS=ۖЍ>L>HZWfje&%K%VP%;qg"&_UM 5[Yju:R\R[hAINˉH1ŸkMtO76w K$#Ǥq[qSiI8#A+/VKʥ54eUŭuKh_WZS) }"@\fnMMY̼dii:}}ZTDMMJKґR>"ٷ vvsہ9yYr}GCsepSyjo?^+ߗlU*AnFY-_uO+FK\EuNSSUToË!\ג68tۧuA9 vھ?&5S~۹`ƮUgIv/M9}Bzzmx~mvó!$6#Q\J:Aii?Y'N7:fٜryJJ^\TmB6W?_ZkɯRO|yX_:Kum9nIn y`*Ooq}--Y or~Mb9PR$u!S~Or? *i7-˵YDXjm6U> #@,V~园5/T\%0hm@(+>ɝ55lZʹ]թ¬deBuҒ(dzf9*OXveFBeX-+n(()eJOVtM:e^e5S,8SN0?.u8 I]/EYrDhHh/ ǪsӬ??ڗ-hִ3M2 h8+QgbpQz]n׍"eE,ݵ /J:&AЃk%J*UoNI4r "Qx#(F]- D5Mc%gd1^ݷʫЩlԔ)Shm/1+vNNz#>{#Шجѩ y~.Y|nӭR8>آ4Im$mh‚r:#u+&[\&ff]yyPPn$)+I Ђ=#෨vMrvH[ų#*QJ".ʻ2Ӳ̸. {4!anVUۖeRNv gLf !BB !Byouker-assistant-1.0.1/qml/qml.pro000644 001750 001750 00000001112 12312451003 017436 0ustar00saucysaucy000000 000000 isEmpty(PREFIX) { PREFIX = /usr/local } TEMPLATE = aux QMAKE_RESOURCE_FLAGS += -root . # Install #install_resources.path = $$PREFIX/share/youker-assistant/ install_resources.path = /usr/share/youker-assistant/ install_resources.files = . INSTALLS = install_resources RESOURCES += lupdate_only{ SOURCES = *.qml \ func/*.qml \ func/bars/*.qml \ func/cleaner/*.qml \ func/common/*.qml \ func/info/*.qml \ func/others/*.qml \ func/page/*.qml \ func/settings/*.qml } youker-assistant-1.0.1/qml/img/toolWidget/ubuntukylin.png000644 001750 001750 00000050764 12312451003 024140 0ustar00saucysaucy000000 000000 PNG  IHDRjj#&tEXtSoftwareAdobe ImageReadyqe<QIDATxڄ=hQ"CA"I$\bD,!`k'–hPF "$`a!"D4N4;ٿf3Iܭa{s=w i6 *-z0)CB WtMFLxV!` Y`]Opn &"{GQr43/ǡVz폱 ^OP06L*v<^|<^b+e3up m14!>]4E6OZ)D'+gھV)nD_Mnx :]47q 8EK*:4Zug76pyH?}0_j,΃M 2ǐzL68"l]Ӄåy]K`b~p 52O03l`_]CE&S>g8  /OAt!ذ_Ȇ@[Jjуju QnJ;&1JHZX;`.J 8t FB s򳂝mL, kՊݾN~3׋u"l(N6_pB$cȲR{P4qp4$lA2xD:-_#:0 U/'j4}0^k.ՓҌ32$V\C*X3k6+URszzڮlb#6ےUV[H'"%$ĕ\ w$D.\h EȘ5XW9mO9;mp6y}}x_E22*ˈU$"?И +ѓqJ1zqJ[;K>DHO:aj'eHTD1Vd2X._`RG~0J"1 8{)f7}eɞ&dF#Xȳ5j:LWQ 1P%V(QˢDpnV;4IBH+-8(ܑ8;ڝr6gE0+zy DENdc?ȮC{27S*a>Ed<5{KE.)9F>.Xd2bө'Zwˡꂺ2cD»XqF-W鹬F)>d󖀩|& >.mXFF'vM6 C@uSUB>&'LwayE{VF @ODm(I\~1ǎiYC[Lѡԃ&h[ C:K[\8-:`Y*:ID,L̦Xe^<6)P#_fDT48@ GC M5R#[.RފC"mRH~t#S2$E_v=#>F-ue`H T{&!;#Xp od`bJVdH KHp59NjgAY V8Foa~a]06_flV-,R߉GAr#")z|Sa݄dz7K#K⍁hq_Ws<2e݆  z !jDs,{.?nu>fW1WX}ZHï ذc`QӝͭFlVPMog(enbqr 6$ 3&Fjm>Ҳa9pUtJz 0gQTRfkV@IOQs~Τsr(Irc= @^mv{Za֣(S|pʱP螁c;i>$ Eޓi 7oPj "G2*n}9PVUPǨeSi$˭HޑD9nHaPqLg$wH@ &>OϕPR?0kARg鞣wa֥ k WT@45RE I #Z D]DET ­ r.;gOfTuML~<_W qWmY]@9DA[|TB Lrr[3f ..4nNJ3:صLiT8ܽ7;z8kphgXNBE*u> E( Qx*ԀS'(3~#xrL ĵW|4bjx5UȐ<5jȃc'GL?NrIni79*D]V0os',o|kتrq.oc.8xrbwL=6->?fm]+YvFQ32X76 Rw3e8ir0u GY`y򫚅%%cS![11> rיrX:E\Ux_]'6{*[wV!\Kc:}#qkWL.(_&*TUZ80IXU{5ğ#& {R qՖ5ؕ |1,`]F2Jqa|4 ykY/3&:u=`֞HQkŃňۺk[b[.q l>0V^nŠc 붏˱Ef1'X%sȃb5˖Sʹ@Oon زSix-= +ḞDC$0e2= l;K"ϱfй/ϧBMx}6|V*]m/¨c37bծyE6wN CJR0xMҚM@Uny)WBi]uOb}LLb%֞3aH0Eh %02P5! ,%NGDL=r83fMΘ-geA1-7doOU*ԻxJ}*uխ:6p@ZdxAs7<cDBGjӫ{ m@w=z:3P Z[;Mɞi1¤2]YdTPzw Zj&G9@+MB_m`'w406s`$U}WIοFPЩgfG,3a.V|w΃ExpCt-lrMfOY7덋~)GMeeo}zP(Dda*A$5L,RFpE/dLFsBpP-O4!ߊqyx)ꛛW5Q|g<"o{8y;/׭| fD1?e?[bxYȍmG{\,_h7ROcnd ޓZeKw@8&JƢX T>Wm_ /#¢(w*1?Y,R5rṡܢ_楗a)R mkID4+2!Krܳ: o,n ϷNL'5 I"I' +K7mI&,e)r߇`Џ$i0Ӌzg :zvhTV9Wo6HHev(ٿ2)~/.F&=\V  &t9cf[*$6a ' ax. F$;^NgYr#k!@b) 7<< u04PDgcUh BMe;Ғ X8u%8ui 8{NVm4 [ PADp5MSP`TUO7a=G-(+JNjy {H #ı_ ՠU|ηmgx l١djV#g~w#Aը @e0c]\D*2L\΋rv-GOdS`ͨP!EiʘDaf\Q_giHtC`"JAKal,qT)BcTi @h"AXT|(TLZU_ r5K0#RM-46tv.qW}4{rZti6|ϟ9Z!#vY4UM{"DYfOGD=TL@"g:R 06@'D׈805*y_~ /ehG8Q6( tMa dQ4]|3CR(W}dMc*t8V%7ص,ILc`ä(aA./*쪑IpMQQQdgհ4FFcMPၜ r 3ttwUWuU~U]3Ӄ?2VDɍq*ەǖY ժ%9K%9]QP8=cƺpd$MXH5}>Q8 ϝtfrubNnD(Ȍ^5`A@7jF,{:yGY7A/}Q;/^8x߈1FA\[łFGHx6۫p5Z2tѺ01g Nq?a9 Wd@(YrĘtrRUј,bKn,<>(Ou, 1 VtJwqn烰8^mJC{%|ā wȉl/C)_FZ鑿a1'2".9}xr!ʙrUXɭ+qOܮ\7n/?wt܄Tg86 Xa*4ryOD鴇1ϵ~CzgF^/;Ƕ`s^VHCbz|ocV{,l*ŤM',]i}Q\=BTN࿺ F98/hހn}VvK &7=/usb[{^NâߧKMhr;Pu+ҶCw$x1˭m1XÇ;"r~:dLכeL֡>IJ GgE q\ͮ;l:uUϵ޺(>GѸocI=u0(z.VzCᶌh)EٹH\x+M67=f(s0jV˴m)],.'#j; T)XUZd7 W q#2sܑ%*׏P9l/08zO_anYQvP`ٮ&Q§s[>0.UU3EκR15S4ΎˑlT LVXCNcIXvb)x30zJ%s?v!rjesi\d W"1 ;149n0#U3&ƼiXq^t1ctc(9Of7ހ[b/ M3qadHKX;tGpt .G\ ď,LmrbSZ+yݰA?֞D4FA2]\+~nl%Ibj%꽶s$-'gS1sÈ8OG1ş֜C"*1h2h1@:1"k~b8}hwX;N6j6QN.ꚍl[K*b؋="y=HC-0q>"/Bx$䑮3o9Ք7}p}$(X|tQ|cS^h6jr#s(b+a\F__ B3wR`zd /Ȳ^ *"،vdhm^u Ƿ.s&2TMrZ}T:̼%~Cn}&;q'}~΄M"u5γ~ u3Ęo#ObhbxW:'!~6 }ꮮth-|V%̞b ='d2haЙ䐦 }9ZT°$@}_ G3f/ &W(\ }jrybXl֬˥T=v>՘#hj5ʮQůvl˗ ]h<9 zwC@Q1۬\ڼv2!v6H7A$xMȩV OFc"w)39kl_-yCd*){,u}Sk[qt{ЏcI x j @ߗ˥o^C hڮ^up(aLnFkY<{z\cWT?нeNTٻ .09v?"G̪bxYNqu$tLgYtܦ4"x|,UnnGz|$m=DD8%<nc# @F:wwd*xg$`d _.Efyj^ǹYW4iǰmˉXi^Oogkk"Q,'5'A0J4.FdQ4X3bC؊ ,aɭ |$K;e=h63G*ִ=; w uYgD; /j;.HˬAn ȴsg.fXďgB($!99b~b!m. YN4\.7!(6Tb]i.f رI%~l,آp΁1" 4Xs9Ek;|8Yb^2.Xbkds#0gh\9H6f6 &#"G]( el s/QMrƕ~r]XȈ(W31 o M}0 !xN*HbB_?gOfAoí4x׌SQ G餴Q"Z"8@)F\^6'% IJmo uYlBg8C+ AI5fD=-#wDcz=7o@ɏHϣf-K=ׅ4NDӷ^sN st̳")>)hw;^01cŶ`uc3Ytr>JP Xħ$Nbґl;M1;4&?- XuF]T& 5O?riSF% +I#[p%|&R$;?2A|Mq1H!@&:HwND6(tayiP4$zL7Lė42Z5G#V˭JMk R(1ً_bWVYaVIY`Zϟz޶al?\yIvQOhz0즧. 7RiGd׆lW; :\kn2Ef|T邫:ܽr.&Sv4F"r}Kk?,.0)leoZRarU޿ԭtـ@ a K2CPE& YEucUEDOQE!@"dBN/Wݺ~U;My ]Uu{s<qxhNc4x+4U9A<0_TZ]2߫am拫v~5⫽=8~#[:LosomK/NUż]GxED I~Wύ h$ڟ:_^ڼTԓmhAt|ogwr'3NWRg!zꕚה:L6~Au>^RG"gͲkƘ4ʧyS=uK QV9՟RҠv2ܰhQג'_v׸bk^Qhxq_xcG1//&jhʋ+L"KVVL\-[[ּ!nr0i)8u)?'P47kE T~4@SSAŎ/ZS Vҙ~łtmk[fcS lw( AL!"*yԲZh}fΩ|=N]cNڝ=mB|ao5v^tޖt ˢ%ӹGn36$aWDAk$⵿sg(jjiְ#ӈò'b[A,\uR[Xk4{+W¤}F6{ȩ;ziʂ"Ғ4QITep7SKiKTWn8662d [R0pY<2q궪;u^3sJc':/;sЙ?38&YdVU>8ji|qNt/", U^wx < MRP|ezQ)'},5"dnڰը3TcƨN}AZaĆ-).q}[sPE(N5R `q>۩T$)ǖ=xS~eһMw5WTVTlOXeb雗`BghL#(C$JuV~!)`o )G%2:}VG }ե>Ͳk]ےTTx/;%J~R9T|OY-^ڸ\ nE{KhKBo?)E7Cc$|t̟b&^}fc+AᔠU&ѫ}xْ0?5 ,= ?n/o#ׅwvۇ_m* + v{P ]4=E@n}W=Ll#kK'TkǠ1epiPay=}3a<< M2Yy}ympGpm$tu_fFr<,}1 o?6/QnsL-ߺCU%5ڙtRPlOW`2LЩNDK1Yg#TWEytG2ކ@B1\5*h|7uރSBCDSφCMcXҪ I t85aٕڬmM! <*?[%\3>oA6_ i R6Ry=?~_NJT||YK-r 6p8$ pH~Dݸxð|LD" Hu9?TwݑG0 bnܐ>l1ǡiX@c,fI=huaarTSx!=NYt Ag(5U);>sZ פ}w%8M;5pqЯOH%pW8:!q$52e1/z|^p.pvL/ØN$2ݢY#ejA䂍YL<<ݻBhNФubL  i^ ʾF{#Azg/R@OT_P*VfvY^kzq;vSGG{h5H!÷| 1 ~U:C2>g~9 4m-"udm,7r5YE-v?9M sUgf6d ( |Q8/Dۼ{sda 'æ>tHE][;9k>e/ rFU{69bE_yZѨz^iHǨNO֞ ^mCӱhq8±V5m+ r"]ʸ2qryY³(s6GBمY2 9 GL (*PaZ8Zӿ KNIBEǩ~Qa! ov ;eox5JL,~r95=%ũkE2.ŶtnXSf#Eɯe)zd:y`0&N#@C`pk(NOp',Y7ɜ#{O#GpOqxbR% "o fߛÿدm΄SsՙZ LT5+i#!0g ސ,:a:LꟄoZE, ԭ0jL{p!5LW6Ҍ5LĎ?O\cs02O_C2r٩zfdzAW8Ÿy024TPlk]Z,啓;C^\Oƹ;OP`Bz_'K%6>puP]1V!K,=Dwn?wBLh[ۉV]C"+ ϙ0QX"7/ԻV wڶ>\6{5J@*G6BS/A10Mtn{R8~<}OFLY GZߗCx0Y!-IZ&7svqx9n.^+o…x<E-H_vG^3#;+A4OǾ TiU3Iy PmS¯X{Qܶol\_ )e4Y(R'ݦќ܌iiJ((yx/7 ŦͿIkDJZ-2)k<|xԖr X$ RT&Sܓ<]pH=˟E݋3K1>ډ{?&.Co|, Zn¤.#9 x{`OET30!ʰ-kQpxmd6SoFx˘ Ӵu8Gh9HFI{ ,ҥIbtf3iS(w$?̯טQjU(ZY)LsE;HyRŶbыc#4sa^Io9Hq[Ø0Jm dnSeFgr" =8 w#oBc R7.֞zR9ʸU+vjʪ,=5 (\klT$]CpFQ\N\7D{v+QjdӠxYNإw/n>p3Hb<_2"C3Z>`;osA=A g&93:"A]L)}25#;鼠ۈIfdIǞo^+&ܖ thkLxt0@Ϧ7E[kď\ wC9͝9rAuZpw6 ܖ*51Rx7=w*`CۡbHBhl(mZ߾ם 7e<=h͙C  <2ۜ58Å!ZQu(!4ij4~;{`Ay,>П@F Ey3iWkPC锹X+^/E9}X-SEfMNcI;v)XJavP$_W0?5!1;DI\I=WEP {Rd"L# "bCPv YR〡1Xj#(='ApǸMVӫ$#UJbn̎}"L^ ?4h=OտYLeƓ x<w[$w~HҏҎu!F=^-`^;ުj0[ 7IC_Ĝ71)Qd0ˊMH @٤]d2m[qtϟP1 &|lL!S"%h T54jbfq#9:OWLWH6=+i!!kv'tF<O<Ǝ~2߳vCA@M(.MQ' GcA٤/XLA3tBx-) ^wЎm߀a /=br*ϸG( =Q 9t)jEe g$0"Hd֞e}1+JF|@ E: g%q>LJ "h"BI#LpZBk SŬ*rdn$xj4 =$EwZIx/5~D)'ϭs4=t-h /ÌDPJf'4?SZ8Q'P F U xE~`_iO./FGa lN2m n6@0AV4 -6huĝŇpl3fl?$΍N]p.6 %m̲?9 !RH2yͬAFLOf㎖H&@Mf1+sq6F̽1O$<8q-sex#I_ùbvt?VByKMw|Y687q?&>wcnb ug"B,+[pzEId;A!ye)xNRx*}iVQ]yIKb&Lvcu!,A&EYw |JBd &B/=gE)bR% bx3 yn!5D2 MHIB Qvq~Z60^i%n\ +#9u-hG DRt*/8)Eizx ה)DrI.؈SH:3%%ila qEK0g0 k%RpvÁx>NY5+`hI99|jL"Ќ3}>[#tDf H1a`DDBt|T;of6`LC@b&gb4p;ˉM˂RD!謠c^UAFkh+= ɼߠ;n#'҃]yTY~Iɜs"X:ofFsP7#%aYE߱It&FacNRWSZ< !vnO!mşNK-Si*P{*2jb+wjO 0MYgBl2)E7F(f㍜IeHcSIFXa=LorRTJ>ԝޙd57k;.I}E|^EB9^k/I& sl#xlN<;5ۥx'AڞeDavc҅LT{1Nh-JHFPɅ]hDv[Fl۰㱺8z\lhS!'ԥI p)LiAv?OzHrav.9vѽs 9zX1'X&F'W>|.G?;_V[yܓ!G:n E^laXbrQN3GL|w䧼{L@YYϴpgEmq,ʠ*,[ӐS#6 [I0]A,_%?y 2pzQ̹)$4QλC,.Lfh'lsiezxp. 7ǂEIBh M|<3QEw9\gOlxJF;R;[~617fA.L!̊Ep}ܖ#Ī!iai,a-z40@jڗ3J_d k8?ӧ6xi-S;.>n6# B43㽘K`;I3-* % xժSt`fGԕU!Y94lB=0XE7 *T:,:P[)>Ò]wNpeԶ6t}Kpn5 %{劔z$v )0#5S'$7NgGe5n9V3{xK h=  cQ} -%OXETht΋ƞ?ӤA #VXO qF P?C8M.~?tJȎ IENDB`youker-assistant-1.0.1/src/sessiondispatcher.cpp000644 001750 001750 00000162770 12312451003 022401 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "sessiondispatcher.h" #include #include #include #include #include #include #include "messagedialog.h" #include "warningdialog.h" #include #include #include #include #include "kthread.h" #include "wizarddialog.h" #include "changecitydialog.h" #include "util.h" #include "kfontdialog.h" #include "logindialog.h" #include "math.h" QString selectedFont; QString selectedFcitxFont; SessionDispatcher::SessionDispatcher(QObject *parent) : QObject(parent) { sessioniface = new QDBusInterface("com.ubuntukylin.session", "/", "com.ubuntukylin.session", QDBusConnection::sessionBus()); page_num = 0; this->mainwindow_width = 850; this->mainwindow_height = 600; this->alert_width_bg = 329; this->alert_width = 329; this->alert_height = 195; httpauth = new HttpAuth(); mSettings = new QSettings(YOUKER_COMPANY_SETTING, YOUKER_SETTING_FILE_NAME_SETTING); mSettings->setIniCodec("UTF-8"); //初始化QSetting配置文件 initConfigFile(); //超时计时器 timer=new QTimer(this); // skin_widget = new SkinsWidget(mSettings); // skinCenter = new SkinCenter(); // connect(skin_widget, SIGNAL(skinSignalToQML(QString)), this, SLOT(handler_change_skin(QString))); //handler_change_titlebar_position QObject::connect(sessioniface, SIGNAL(change_titlebar_position(QString)), this, SLOT(handler_change_titlebar_position(QString))); QObject::connect(sessioniface, SIGNAL(display_scan_process(QString)), this, SLOT(handler_scan_process(QString))); QObject::connect(sessioniface, SIGNAL(scan_complete(QString)), this, SLOT(handler_scan_complete(QString))); QObject::connect(sessioniface, SIGNAL(access_weather(QString, QString)), this, SLOT(accord_flag_access_weather(QString, QString))); QObject::connect(sessioniface, SIGNAL(total_data_transmit(QString, QString)), this, SLOT(handler_total_data_transmit(QString,QString))); //Apt and Soft center cache QObject::connect(sessioniface, SIGNAL(data_transmit_by_cache(QString, QString, QString, QString)), this, SLOT(handler_append_cache_data_to_model(QString,QString,QString,QString))); QObject::connect(sessioniface, SIGNAL(cache_transmit_complete(QString)), this, SLOT(handler_cache_scan_over(QString))); // QObject::connect(sessioniface, SIGNAL(path_transmit_by_cache(QString, QString)), this, SLOT(handler_cache_path(QString, QString))); //Uninstall unneed package and old kernel package QObject::connect(sessioniface, SIGNAL(data_transmit_by_package(QString, QString, QString, QString)), this, SLOT(handler_append_package_data_to_model(QString,QString,QString,QString))); QObject::connect(sessioniface, SIGNAL(package_transmit_complete()), this, SLOT(handler_package_scan_over())); //Largest file // QObject::connect(sessioniface, SIGNAL(data_transmit_by_large(QString, QString)), this, SLOT(handler_append_largest_file_to_model(QString,QString))); // QObject::connect(sessioniface, SIGNAL(large_transmit_complete()), this, SLOT(handler_largest_scan_over())); //cookies QObject::connect(sessioniface, SIGNAL(data_transmit_by_cookies(QString, QString, QString)), this, SLOT(handler_append_cookies_to_model(QString,QString,QString))); QObject::connect(sessioniface, SIGNAL(cookies_transmit_complete(QString)), this, SLOT(handler_cookies_scan_over(QString))); //cloud conf QObject::connect(sessioniface, SIGNAL(upload_cloud_conf_signal(QString)), this, SLOT(handler_upload_cloud_conf(QString))); QObject::connect(sessioniface, SIGNAL(download_cloud_conf_signal(QString)), this, SLOT(handler_download_cloud_conf(QString))); //login QObject::connect(httpauth, SIGNAL(response(/*QString,*/QString,QString,QString)), this, SLOT(handle_data_after_login_success(/*QString,*/QString,QString,QString))); QObject::connect(httpauth, SIGNAL(refresh(/*QString,*/QString)), this, SLOT(handle_data_after_search_success(/*QString,*/QString))); QObject::connect(httpauth, SIGNAL(error(int)), this, SLOT(handle_data_when_login_failed(int))); QObject::connect(httpauth, SIGNAL(failedCommunicate()), this, SLOT(resetTimerStatus())); QObject::connect(httpauth, SIGNAL(successCommunicate()), this, SLOT(searchCurrentInfo())); } SessionDispatcher::~SessionDispatcher() { mSettings->sync(); if (mSettings != NULL) { delete mSettings; } // if(timer->isActive()) { // timer->stop(); // } this->exit_qt(); } //dbus服务退出 void SessionDispatcher::exit_qt() { sessioniface->call("exit"); } void SessionDispatcher::open_folder_qt(QString path) { sessioniface->call("open_folder", path); } void SessionDispatcher::download_kysoft_cloud_conf_qt() { sessioniface->call("download_kysoft_cloud_conf"); } void SessionDispatcher::upload_kysoft_cloud_conf_qt() { sessioniface->call("upload_kysoft_cloud_conf"); } //接收下载和使用云端配置的信号 void SessionDispatcher::handler_download_cloud_conf(QString download) { emit this->tellDownloadCloudConfToQML(download); } //接收上传配置到云端时的信号 void SessionDispatcher::handler_upload_cloud_conf(QString upload) { emit this->tellUploadCloudConfToQML(upload); } //准发发送信号告诉优客助手自己去改变自身的标题栏控制按钮位置 void SessionDispatcher::handler_change_titlebar_position(QString position) { emit this->startChangeControlBtnPosition(position); } //每30minutes连接服务器beat一次 void SessionDispatcher::connectHttpServer(){ qDebug()<<"start to connect every 30 minutes..."; mSettings->beginGroup("user"); int id = mSettings->value("id").toInt(); mSettings->endGroup(); mSettings->sync(); //心跳 QString requestData = QString("http://www.ubuntukylin.com/boxbeta/find_get.php?pp[type]=beat&pp[table]=yk_member&pp[id]=%1").arg(id); QUrl url(requestData); httpauth->sendGetRequest(url); } //beat失败处理,beat不成功,界面的用户信息消失,改为登录界面,提示网络出错 void SessionDispatcher::resetTimerStatus() { //主动查询 QString requestData = QString("http://www.ubuntukylin.com/boxbeta/find_get.php?pp[type]=network"); QUrl url(requestData); httpauth->sendGetRequest(url); } //查询当前的积分、等级.... void SessionDispatcher::searchCurrentInfo() { waitTime = 0; mSettings->beginGroup("user"); int id = mSettings->value("id").toInt(); mSettings->endGroup(); mSettings->sync(); QString requestData = QString("http://www.ubuntukylin.com/boxbeta/find_get.php?pp[type]=getall&pp[table]=yk_member&pp[id]=%1").arg(id); QUrl url(requestData); httpauth->sendGetRequest(url); } //显示SliderShow void SessionDispatcher::show_slider_qt() { sessioniface->call("display_slide_show"); } //程序正常关闭之前,关闭定时器,获取id后发送退出信号给服务端 void SessionDispatcher::ready_exit_normally() { //关闭定时器 waitTime = 0; disconnect(timer,SIGNAL(timeout()),this,SLOT(connectHttpServer())); if(timer->isActive()) { timer->stop(); } //退出 mSettings->beginGroup("user"); int id = mSettings->value("id").toInt(); mSettings->endGroup(); mSettings->sync(); QString requestData = QString("http://www.ubuntukylin.com/boxbeta/find_get.php?pp[type]=logout&pp[table]=yk_member&pp[id]=%1").arg(id); QUrl url(requestData); httpauth->sendGetRequest(url); } void SessionDispatcher::handler_write_user_info_when_exit() {//更新数据库数据和本地配置文件 this->ready_exit_normally(); emit this->ready_to_exit();//通知菜单可以退出程序了 } //点击登录框的确定按钮后,开始发送数据给服务端进行登录验证 void SessionDispatcher::verify_user_and_password(QString user, QString pwd) { //显示登录动态图 emit showLoginAnimatedImage(); // qDebug() << user; // qDebug() << pwd; //发送数据给服务端进行登录验证 QString requestData = QString("http://www.ubuntukylin.com/boxbeta/find_get.php?pp[type]=login&pp[table]=yk_member&name=%1&password=%2").arg(user).arg(pwd); QUrl url(requestData); httpauth->sendGetRequest(url); } //弹出登录框 void SessionDispatcher::popup_login_dialog(int window_x, int window_y) { LoginDialog *logindialog = new LoginDialog(); QObject::connect(logindialog, SIGNAL(translate_user_password(QString,QString)),this, SLOT(verify_user_and_password(QString,QString))); this->alert_x = window_x + (mainwindow_width / 2) - (alert_width_bg / 2); this->alert_y = window_y + mainwindow_height - 400; logindialog->move(this->alert_x, this->alert_y); logindialog->exec(); } //退出登录 void SessionDispatcher::logout_ubuntukylin_account() { this->ready_exit_normally(); } //用户登录成功后处理数据:显示界面、id写入本地配置、开启定时器 void SessionDispatcher::handle_data_after_login_success(QString id,/* QString level, */QString name, QString score) { //登录成功后将用户信息显示在界面上 bool ok; QString level = score_count_level(score.toInt(&ok, 10)); emit updateLoginStatus(name, level, score); //将当前用户id写入本地配置文件中 mSettings->beginGroup("user"); mSettings->setValue("id", id); mSettings->endGroup(); mSettings->sync(); //绑定和初始化定时器,每隔30minutes连接服务器一次 waitTime = 0; connect(timer,SIGNAL(timeout()),this,SLOT(connectHttpServer())); timer->start(60000*30);//5000 } //用户查询成功后处理数据:界面刷新数据 void SessionDispatcher::handle_data_after_search_success(/*QString level, */QString score) { //查询成功后将用户信息更新在界面上 bool ok; QString level = score_count_level(score.toInt(&ok, 10)); emit refreshUserInfo(level, score); waitTime = 0; } //登录失败时或者测试网络失败,通知QML界面 void SessionDispatcher::handle_data_when_login_failed(int status) { if(status == 99) { waitTime++; if(waitTime >= 4){ waitTime = 0; disconnect(timer, SIGNAL(timeout()), this, SLOT(connectHttpServer())); if(timer->isActive()) { timer->stop(); } emit loginFailedStatus(99); //超时次数到,向主界面发送网络出现错误的信号 qDebug()<<"connect fail..."; }else{ qDebug() << "continue connect..."; QString requestData = QString("http://www.ubuntukylin.com/boxbeta/find_get.php?pp[type]=network"); QUrl url(requestData); httpauth->sendGetRequest(url); } } else { emit loginFailedStatus(status); } } //根据积分计算用户等级 QString SessionDispatcher::score_count_level(int score) { return QString::number(qFloor(sqrt((score - 5) / 30 ))); } QStringList SessionDispatcher::search_city_names_qt(QString search_name) { QDBusReply reply = sessioniface->call("search_city_names", search_name); return reply.value(); } QStringList SessionDispatcher::get_geonameid_list_qt() { QDBusReply reply = sessioniface->call("get_geonameid_list"); return reply.value(); } QStringList SessionDispatcher::get_longitude_list_qt() { QDBusReply reply = sessioniface->call("get_longitude_list"); return reply.value(); } QStringList SessionDispatcher::get_latitude_list_qt() { QDBusReply reply = sessioniface->call("get_latitude_list"); return reply.value(); } QString SessionDispatcher::get_yahoo_city_id_qt(QString geonameid) { QDBusReply reply = sessioniface->call("get_yahoo_city_id", geonameid); return reply.value(); } //更加相应的标记去获取需要的天气数据 void SessionDispatcher::accord_flag_access_weather(QString key, QString value) { if(key == "forecast" && value == "kobe") { get_forecast_dict_qt(); emit startUpdateForecastWeahter("forecast"); } else if(key == "weather" && value == "kobe") { get_current_weather_dict_qt(); emit startUpdateForecastWeahter("weather"); } else if(key == "pm25" && value == "kobe") { get_pm25_str_qt(); emit startUpdateForecastWeahter("pm25"); } else if(key == "yahoo" && value == "kobe") { get_current_yahoo_weather_dict_qt(); emit startUpdateForecastWeahter("yahoo"); } } void SessionDispatcher::handler_append_cache_data_to_model(QString flag, QString path, QString fileFlag, QString sizeValue) { emit appendContentToCacheModel(flag, path, fileFlag, sizeValue); } void SessionDispatcher::handler_cache_scan_over(QString flag) { emit tellQMLCaheOver(flag); } //void SessionDispatcher::handler_cache_path(QString flag, QString path) { // emit tellAbsPathToCacheModel(flag, path); //} void SessionDispatcher::handler_append_package_data_to_model(QString flag, QString pkgName, QString description, QString sizeValue) { emit appendPackageContentToCacheModel(flag, pkgName, description, sizeValue); } void SessionDispatcher::handler_package_scan_over() { emit tellQMLPackageOver(); } void SessionDispatcher::handler_append_largest_file_to_model(QString sizeValue, QString path) { emit appendLargestContentToModel(sizeValue, path); } void SessionDispatcher::handler_largest_scan_over() { emit tellQMLLargestOver(); } void SessionDispatcher::handler_append_cookies_to_model(QString flag, QString domain, QString num) { emit appendCookiesContentToModel(flag, domain, num); } void SessionDispatcher::handler_cookies_scan_over(QString cookiesFlag) { emit tellQMLCookiesOver(cookiesFlag); } void SessionDispatcher::handler_scan_complete(QString msg) { emit finishScanWork(msg); } void SessionDispatcher::handler_scan_process(QString msg) { emit isScanning(msg); } void SessionDispatcher::handler_total_data_transmit(QString flag, QString msg) { emit tellScanResultToQML(flag, msg); } QString SessionDispatcher::get_locale_version() { QString locale = QLocale::system().name(); return locale; } void SessionDispatcher::onekey_scan_function_qt(QStringList selectedList) { sessioniface->call("onekey_scan_function", selectedList); } int SessionDispatcher::scan_history_records_qt(QString flag) { QDBusReply reply = sessioniface->call("scan_history_records", flag); return reply.value(); } int SessionDispatcher::scan_system_history_qt() { QDBusReply reply = sessioniface->call("scan_system_history"); return reply.value(); } //int SessionDispatcher::scan_dash_history_qt() { // QDBusReply reply = sessioniface->call("scan_dash_history"); // return reply.value(); //} //QStringList SessionDispatcher::scan_of_same_qt(QString abspath) { // QDBusReply reply = sessioniface->call("scan_of_same", abspath); // return reply.value(); //} QStringList SessionDispatcher::scan_of_large_qt(int size, QString abspath) { QDBusReply reply = sessioniface->call("scan_of_large", size, abspath); return reply.value(); } QStringList SessionDispatcher::scan_cookies_records_qt() { QDBusReply reply = sessioniface->call("scan_cookies_records"); return reply.value(); } void SessionDispatcher::cookies_scan_function_qt(QString flag) { sessioniface->call("cookies_scan_function", flag); } QStringList SessionDispatcher::get_cache_arglist(int i) { QStringList tmp; if(i == 0) { tmp << "apt" << "software-center" << "thumbnails"; } else if(i == 4) { tmp << "apt" << "software-center"; } else if(i == 5) { tmp << "apt" << "thumbnails"; } else if(i == 6) { tmp << "software-center" << "thumbnails"; } return tmp; } QStringList SessionDispatcher::get_browser_cache_arglist() { QStringList tmp; tmp << "firefox" << "chromium"; return tmp; } QStringList SessionDispatcher::get_package_arglist(int i) { QStringList tmp; if(i == 0) { tmp << "unneed" << "oldkernel" << "configfile"; } else if(i == 4) { tmp << "unneed" << "oldkernel"; } else if(i == 5) { tmp << "unneed" << "configfile"; } else if(i == 6) { tmp << "oldkernel" << "configfile"; } return tmp; } void SessionDispatcher::cache_scan_function_qt(QStringList argList, QString flag) { sessioniface->call("cache_scan_function", argList, flag); } void SessionDispatcher::package_scan_function_qt(QStringList argList) { sessioniface->call("package_scan_function", argList); } QString SessionDispatcher::getHomePath() { QString homepath = QDir::homePath(); return homepath; } void SessionDispatcher::set_page_num(int num) { page_num = num; } int SessionDispatcher::get_page_num() { return page_num; } QString SessionDispatcher::get_session_daemon_qt() { QDBusReply reply = sessioniface->call("get_session_daemon"); return reply.value(); } void SessionDispatcher::get_system_message_qt() { QDBusReply > reply = sessioniface->call("get_system_message"); if (reply.isValid()) { QMap value = reply.value(); systemInfo = value; //把当前登录的用户名存放到QSetting配置文件中,方便任务管理器使用 mSettings->beginGroup("user"); mSettings->setValue("currentName", systemInfo["currrent_user"].toString()); mSettings->endGroup(); mSettings->sync(); } else { qDebug() << "get pc_message failed!"; } } //把优客助手运行时,系统的默认配置写到配置文件 void SessionDispatcher::write_default_configure_to_qsetting_file(QString key, QString name, QString value) { mSettings->beginGroup(key); mSettings->setValue(name, value); mSettings->endGroup(); mSettings->sync(); } //从Qsetting配置文件中读取系统启动时的默认配置 QString SessionDispatcher::read_default_configure_from_qsetting_file(QString key, QString name) { QString result; mSettings->beginGroup(key); result = mSettings->value(name).toString(); mSettings->endGroup(); mSettings->sync(); return result; } //----------------message dialog-------------------- void SessionDispatcher::showFeatureDialog(int window_x, int window_y) { MessageDialog *dialog = new MessageDialog(); this->alert_x = window_x + (mainwindow_width / 2) - (alert_width / 2); this->alert_y = window_y + mainwindow_height - 400; dialog->move(this->alert_x, this->alert_y); // dialog->move ((QApplication::desktop()->width() - dialog->width())/2,(QApplication::desktop()->height() - dialog->height())/2); dialog->show(); } //----------------checkscreen dialog-------------------- void SessionDispatcher::showCheckscreenDialog(int window_x, int window_y) { ModalDialog *dialog = new ModalDialog; this->alert_x = window_x + (mainwindow_width / 2) - (alert_width / 2); this->alert_y = window_y + mainwindow_height - 400; dialog->move(this->alert_x, this->alert_y); dialog->setModal(true); dialog->show(); } void SessionDispatcher::showWarningDialog(QString title, QString content, int window_x, int window_y) { WarningDialog *dialog = new WarningDialog(title, content); this->alert_x = window_x + (mainwindow_width / 2) - (alert_width / 2); this->alert_y = window_y + mainwindow_height - 400; dialog->move(this->alert_x, this->alert_y); dialog->exec(); } bool SessionDispatcher::showConfirmDialog(QString title, QString content, int window_x, int window_y) { WarningDialog *dialog = new WarningDialog(title, content); this->alert_x = window_x + (mainwindow_width / 2) - (alert_width / 2); this->alert_y = window_y + mainwindow_height - 400; dialog->move(this->alert_x, this->alert_y); dialog-> QWidget::setAttribute(Qt::WA_DeleteOnClose); if(dialog->exec()==QDialog::Rejected) { return false; } else { return true; } } //void SessionDispatcher::handler_confirm_cloud_action() { // emit this->tellQMLCloudConfirm(); //} QString SessionDispatcher::getSingleInfo(QString key) { QVariant info = systemInfo.value(key); return info.toString(); } /*-----------------------------desktop of beauty-----------------------------*/ bool SessionDispatcher::set_show_desktop_icons_qt(bool flag) { QDBusReply reply = sessioniface->call("set_show_desktop_icons", flag); return reply.value(); } bool SessionDispatcher::get_show_desktop_icons_qt() { QDBusReply reply = sessioniface->call("get_show_desktop_icons"); return reply.value(); } bool SessionDispatcher::set_show_homefolder_qt(bool flag) { QDBusReply reply = sessioniface->call("set_show_homefolder", flag); return reply.value(); } bool SessionDispatcher::get_show_homefolder_qt() { QDBusReply reply = sessioniface->call("get_show_homefolder"); return reply.value(); } bool SessionDispatcher::set_show_network_qt(bool flag) { QDBusReply reply = sessioniface->call("set_show_network", flag); return reply.value(); } bool SessionDispatcher::get_show_network_qt() { QDBusReply reply = sessioniface->call("get_show_network"); return reply.value(); } bool SessionDispatcher::set_show_trash_qt(bool flag) { QDBusReply reply = sessioniface->call("set_show_trash", flag); return reply.value(); } bool SessionDispatcher::get_show_trash_qt() { QDBusReply reply = sessioniface->call("get_show_trash"); return reply.value(); } bool SessionDispatcher::set_show_devices_qt(bool flag) { QDBusReply reply = sessioniface->call("set_show_devices", flag); return reply.value(); } bool SessionDispatcher::get_show_devices_qt() { QDBusReply reply = sessioniface->call("get_show_devices"); return reply.value(); } /*-----------------------------unity of beauty-----------------------------*/ int SessionDispatcher::get_default_unity_qt(QString name, QString key) { QDBusReply reply = sessioniface->call("get_default_unity", name, key); return reply.value(); } void SessionDispatcher::set_default_unity_qt(QString flag, int value) { if(flag == "launchersize") {//launcher图标大小 sessioniface->call("set_default_unity", "icon-size", "int", value); } else if(flag == "launcherhide") {//launcher自动隐藏 sessioniface->call("set_default_unity", "launcher-hide-mode", "int", value); } } void SessionDispatcher::set_default_launcher_have_showdesktopicon_qt() { sessioniface->call("set_default_launcher_have_showdesktopicon"); } bool SessionDispatcher::set_launcher_autohide_qt(bool flag) { QDBusReply reply = sessioniface->call("set_launcher_autohide", flag); return reply.value(); } bool SessionDispatcher::get_launcher_autohide_qt() { QDBusReply reply = sessioniface->call("get_launcher_autohide"); return reply.value(); } bool SessionDispatcher::set_launcher_icon_size_qt(int num) { QDBusReply reply = sessioniface->call("set_launcher_icon_size", num); return reply.value(); } int SessionDispatcher::get_launcher_icon_size_qt() { QDBusReply reply = sessioniface->call("get_launcher_icon_size"); return reply.value(); } bool SessionDispatcher::set_launcher_have_showdesktopicon_qt(bool flag) { QDBusReply reply = sessioniface->call("set_launcher_have_showdesktopicon", flag); return reply.value(); } bool SessionDispatcher::get_launcher_have_showdesktopicon_qt() { QDBusReply reply = sessioniface->call("get_launcher_have_showdesktopicon"); return reply.value(); } /*-----------------------------theme of beauty-----------------------------*/ QStringList SessionDispatcher::get_themes_qt() { QDBusReply reply = sessioniface->call("get_themes"); return reply.value(); } QString SessionDispatcher::get_theme_qt() { QDBusReply reply = sessioniface->call("get_theme"); return reply.value(); } void SessionDispatcher::set_theme_qt(QString theme) { sessioniface->call("set_theme", theme); } QStringList SessionDispatcher::get_icon_themes_qt() { QDBusReply reply = sessioniface->call("get_icon_themes"); return reply.value(); } QString SessionDispatcher::get_icon_theme_qt() { QDBusReply reply = sessioniface->call("get_icon_theme"); return reply.value(); } void SessionDispatcher::set_icon_theme_qt(QString theme) { sessioniface->call("set_icon_theme", theme); } QStringList SessionDispatcher::get_cursor_themes_qt() { QDBusReply reply = sessioniface->call("get_cursor_themes"); return reply.value(); } QString SessionDispatcher::get_cursor_theme_qt() { QDBusReply reply = sessioniface->call("get_cursor_theme"); return reply.value(); } void SessionDispatcher::set_cursor_theme_qt(QString theme) { sessioniface->call("set_cursor_theme", theme); } int SessionDispatcher::get_cursor_size_qt() { QDBusReply reply = sessioniface->call("get_cursor_size"); return reply.value(); } void SessionDispatcher::set_cursor_size_qt(int size) { sessioniface->call("set_cursor_size", size); } //window theme QStringList SessionDispatcher::get_window_themes_qt() { QDBusReply reply = sessioniface->call("get_window_themes"); return reply.value(); } QString SessionDispatcher::get_current_window_theme_qt() { QDBusReply reply = sessioniface->call("get_current_window_theme"); return reply.value(); } void SessionDispatcher::set_window_theme_qt(QString theme) { sessioniface->call("set_window_theme", theme); } /*-----------------------------font of beauty-----------------------------*/ QString SessionDispatcher::get_default_theme_sring_qt(QString flag/*QString schema, QString key*/) { if(flag == "icontheme") { QDBusReply reply = sessioniface->call("get_default_font_sring", "org.gnome.desktop.interface", "icon-theme"); return reply.value(); } else if(flag == "windowtheme") { QDBusReply reply = sessioniface->call("get_default_font_sring", "org.gnome.desktop.wm.preferences", "theme"); return reply.value(); } else if(flag == "mousetheme") { QDBusReply reply = sessioniface->call("get_default_font_sring", "org.gnome.desktop.interface", "cursor-theme"); return reply.value(); } else if(flag == "smoothstyle") { QDBusReply reply = sessioniface->call("get_default_font_sring", "org.gnome.settings-daemon.plugins.xsettings", "hinting"); return reply.value(); } else if(flag == "antialiasingstyle") { QDBusReply reply = sessioniface->call("get_default_font_sring", "org.gnome.settings-daemon.plugins.xsettings", "antialiasing"); return reply.value(); } return flag; } double SessionDispatcher::get_default_theme_double_qt(QString schema, QString key) { QDBusReply reply = sessioniface->call("get_default_font_double", schema, key); return reply.value(); } void SessionDispatcher::set_default_theme_qt(QString flag/*QString schema, QString key, QString type*/) { //-------------------字体------------------- if(flag == "defaultfont") { sessioniface->call("set_default_font", "org.gnome.desktop.interface", "font-name", "string"); } else if(flag == "desktopfont") { sessioniface->call("set_default_font", "org.gnome.nautilus.desktop", "font", "string"); } else if(flag == "monospacefont") { sessioniface->call("set_default_font", "org.gnome.desktop.interface", "monospace-font-name", "string"); } else if(flag == "globalfontscaling") { sessioniface->call("set_default_font", "org.gnome.desktop.interface", "text-scaling-factor", "double"); } else if(flag == "documentfont") { sessioniface->call("set_default_font", "org.gnome.desktop.interface", "document-font-name", "string"); } else if(flag == "titlebarfont") { sessioniface->call("set_default_font", "org.gnome.desktop.wm.preferences", "titlebar-font", "string"); } else if(flag == "smoothstyle") { sessioniface->call("set_default_font", "org.gnome.settings-daemon.plugins.xsettings", "hinting", "string"); } else if(flag == "antialiasingstyle") { sessioniface->call("set_default_font", "org.gnome.settings-daemon.plugins.xsettings", "antialiasing", "string"); } else if(flag == "icontheme") {//图标主题 sessioniface->call("set_default_font", "org.gnome.desktop.interface", "icon-theme", "string"); } else if(flag == "windowtheme") {//窗口主题 sessioniface->call("set_default_font", "org.gnome.desktop.wm.preferences", "theme", "string"); } else if(flag == "mousetheme") {//鼠标指针主题 sessioniface->call("set_default_font", "org.gnome.desktop.interface", "cursor-theme", "string"); } else if(flag == "cursorsize") {//光标大小 sessioniface->call("set_default_font", "org.gnome.desktop.interface", "cursor-size", "int"); } } bool SessionDispatcher::get_default_desktop_bool_qt(QString schema, QString key) { QDBusReply reply = sessioniface->call("get_default_desktop_bool", schema, key); return reply.value(); } void SessionDispatcher::set_default_desktop_qt(QString flag) { if(flag == "showdesktopicons") {//显示桌面图标 sessioniface->call("set_default_desktop", "org.gnome.desktop.background", "show-desktop-icons", "boolean"); } else if(flag == "homeiconvisible") {//显示主文件夹 sessioniface->call("set_default_desktop", "org.gnome.nautilus.desktop", "home-icon-visible", "boolean"); } else if(flag == "networkiconvisible") {//显示网络 sessioniface->call("set_default_desktop", "org.gnome.nautilus.desktop", "network-icon-visible", "boolean"); } else if(flag == "trashiconvisible") {//显示回收站 sessioniface->call("set_default_desktop", "org.gnome.nautilus.desktop", "trash-icon-visible", "boolean"); } else if(flag == "volumesvisible") {//显示挂载卷标 sessioniface->call("set_default_desktop", "org.gnome.nautilus.desktop", "volumes-visible", "boolean"); } } QString SessionDispatcher::get_default_sound_string_qt(QString flag/*QString schema, QString key*/) { if(flag == "soundtheme") { QDBusReply reply = sessioniface->call("get_default_sound_string", "org.gnome.desktop.sound", "theme-name"); return reply.value(); } return flag; } void SessionDispatcher::set_default_sound_qt(QString flag) { if(flag == "soundtheme") {//声音主题 sessioniface->call("set_default_sound", "org.gnome.desktop.sound", "theme-name", "string"); } } QString SessionDispatcher::get_font_qt() { QDBusReply reply = sessioniface->call("get_font"); return reply.value(); } bool SessionDispatcher::set_font_qt_default(QString font) { QDBusReply reply = sessioniface->call("set_font", font); return reply.value(); } bool SessionDispatcher::set_font_qt(QString font) { QDBusReply reply = sessioniface->call("set_font", font); return reply.value(); } QString SessionDispatcher::get_desktop_font_qt() { QDBusReply reply = sessioniface->call("get_desktop_font"); return reply.value(); } bool SessionDispatcher::set_desktop_font_qt(QString font) { QDBusReply reply = sessioniface->call("set_desktop_font", font); return reply.value(); } bool SessionDispatcher::set_desktop_font_qt_default() { QDBusReply reply = sessioniface->call("set_desktop_font", "Ubuntu 11"); return reply.value(); } QString SessionDispatcher::get_document_font_qt() { QDBusReply reply = sessioniface->call("get_document_font"); return reply.value(); } bool SessionDispatcher::set_document_font_qt_default(QString font) { QDBusReply reply = sessioniface->call("set_document_font", font); return reply.value(); } bool SessionDispatcher::set_document_font_qt(QString font) { QDBusReply reply = sessioniface->call("set_document_font", font); return reply.value(); } QString SessionDispatcher::get_monospace_font_qt() { QDBusReply reply = sessioniface->call("get_monospace_font"); return reply.value(); } bool SessionDispatcher::set_monospace_font_qt_default(QString font) { QDBusReply reply = sessioniface->call("set_monospace_font", font); return reply.value(); } bool SessionDispatcher::set_monospace_font_qt(QString font) { QDBusReply reply = sessioniface->call("set_monospace_font", font); return reply.value(); } QString SessionDispatcher::get_window_title_font_qt() { QDBusReply reply = sessioniface->call("get_window_title_font"); return reply.value(); } bool SessionDispatcher::set_window_title_font_qt_default(QString font) { QDBusReply reply = sessioniface->call("set_window_title_font", font); return reply.value(); } bool SessionDispatcher::set_window_title_font_qt(QString font) { QDBusReply reply = sessioniface->call("set_window_title_font", font); return reply.value(); } double SessionDispatcher::get_font_zoom_qt() { QDBusReply reply = sessioniface->call("get_font_zoom"); return reply.value(); } bool SessionDispatcher::set_font_zoom_qt(double zoom) { QDBusReply reply = sessioniface->call("set_font_zoom", zoom); return reply.value(); } QStringList SessionDispatcher::get_smooth_style_list_qt() { QDBusReply reply = sessioniface->call("get_smooth_style_list"); return reply.value(); } QString SessionDispatcher::get_smooth_style_qt() { QDBusReply reply = sessioniface->call("get_smooth_style"); return reply.value(); } bool SessionDispatcher::set_smooth_style_qt(QString style) { QDBusReply reply = sessioniface->call("set_smooth_style", style); return reply.value(); } QStringList SessionDispatcher::get_antialiasing_style_list_qt() { QDBusReply reply = sessioniface->call("get_antialiasing_style_list"); return reply.value(); } QString SessionDispatcher::get_antialiasing_style_qt() { QDBusReply reply = sessioniface->call("get_antialiasing_style"); return reply.value(); } bool SessionDispatcher::set_antialiasing_style_qt(QString style) { QDBusReply reply = sessioniface->call("set_antialiasing_style", style); return reply.value(); } void SessionDispatcher::restore_default_font_signal(QString flag) { emit notifyFontStyleToQML(flag); //font_style } QString SessionDispatcher::getSelectedFcitxFont() { return selectedFcitxFont;// } void SessionDispatcher::show_font_dialog(QString flag) { KFontDialog *fontDialog = new KFontDialog(mSettings, flag, 0); fontDialog->exec(); if(!selectedFont.isEmpty()) { if(flag == "font") { set_font_qt(selectedFont);//set font } else if(flag == "desktopfont") { set_desktop_font_qt(selectedFont);//set desktopfont } else if(flag == "monospacefont") { set_monospace_font_qt(selectedFont);//set monospacefont } else if(flag == "documentfont") { set_document_font_qt(selectedFont);//set documentfont } else if(flag == "titlebarfont") { set_window_title_font_qt(selectedFont);//set titlebarfont } else if(flag == "fcitxfont") { } selectedFont.clear(); emit notifyFontStyleToQML(flag); //font_style } } QString SessionDispatcher::show_folder_dialog() { //选择文件夹 QString dir = QFileDialog::getExistingDirectory(0, tr("Select folder"), QDir::homePath(), QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks); return dir; } /*-----------------------------scrollbars of beauty-----------------------------*/ bool SessionDispatcher::set_scrollbars_mode_overlay_qt() { QDBusReply reply = sessioniface->call("set_scrollbars_mode_overlay"); return reply.value(); } bool SessionDispatcher::set_scrollbars_mode_legacy_qt() { QDBusReply reply = sessioniface->call("set_scrollbars_mode_legacy"); return reply.value(); } QString SessionDispatcher::get_scrollbars_mode_qt() { QDBusReply reply = sessioniface->call("get_scrollbars_mode"); return reply.value(); } /*-----------------------------touchpad of beauty-----------------------------*/ QString SessionDispatcher::get_default_system_sring_qt(QString flag) { if(flag == "wheel-action") {//菜单项旁显示图标 QDBusReply reply = sessioniface->call("get_default_system_sring", "org.compiz.gwd", "mouse-wheel-action"); return reply.value(); } else if(flag == "double-click") {//标题栏双击动作 QDBusReply reply = sessioniface->call("get_default_system_sring", "org.gnome.desktop.wm.preferences", "action-double-click-titlebar"); return reply.value(); } else if(flag == "middle-click") {//标题栏中键动作 QDBusReply reply = sessioniface->call("get_default_system_sring", "org.gnome.desktop.wm.preferences", "action-middle-click-titlebar"); return reply.value(); } else if(flag == "right-click") {//标题栏右键动作 QDBusReply reply = sessioniface->call("get_default_system_sring", "org.gnome.desktop.wm.preferences", "action-right-click-titlebar"); return reply.value(); } return flag; } bool SessionDispatcher::get_default_system_bool_qt(QString schema, QString key) { QDBusReply reply = sessioniface->call("get_default_system_bool", schema, key); return reply.value(); } void SessionDispatcher::set_default_system_qt(QString flag) { if(flag == "touchpad-enabled") {//启用禁用触摸板 sessioniface->call("set_default_system", "org.gnome.settings-daemon.peripherals.touchpad", "touchpad-enabled", "boolean"); } else if(flag == "scrollbar-mode") {//滚动条类型 sessioniface->call("set_default_system", "com.canonical.desktop.interface", "scrollbar-mode", "string"); } else if(flag == "scroll-method") {//触摸板滚动条触发方式 sessioniface->call("set_default_system", "org.gnome.settings-daemon.peripherals.touchpad", "scroll-method", "string"); } else if(flag == "horiz-scroll-enabled") {//触摸板横向滚动 sessioniface->call("set_default_system", "org.gnome.settings-daemon.peripherals.touchpad", "horiz-scroll-enabled", "boolean"); } else if(flag == "control-button-position") {//窗口控制按钮位置 sessioniface->call("set_default_system", "org.gnome.desktop.wm.preferences", "button-layout", "string"); } else if(flag == "menu-with-icons") {//菜单项旁显示图标 sessioniface->call("set_default_system", "org.gnome.desktop.interface", "menus-have-icons", "boolean"); } else if(flag == "wheel-action") {//标题栏鼠标滚轮动作 sessioniface->call("set_default_system", "org.compiz.gwd", "mouse-wheel-action", "string"); } else if(flag == "double-click") {//标题栏双击动作 sessioniface->call("set_default_system", "org.gnome.desktop.wm.preferences", "action-double-click-titlebar", "string"); } else if(flag == "middle-click") {//标题栏中键动作 sessioniface->call("set_default_system", "org.gnome.desktop.wm.preferences", "action-middle-click-titlebar", "string"); } else if(flag == "right-click") {//标题栏右键动作 sessioniface->call("set_default_system", "org.gnome.desktop.wm.preferences", "action-right-click-titlebar", "string"); } } bool SessionDispatcher::set_touchpad_enable_qt(bool flag) { QDBusReply reply = sessioniface->call("set_touchpad_enable", flag); return reply.value(); } bool SessionDispatcher::get_touchpad_enable_qt() { QDBusReply reply = sessioniface->call("get_touchpad_enable"); return reply.value(); } bool SessionDispatcher::set_touchscrolling_mode_edge_qt() { QDBusReply reply = sessioniface->call("set_touchscrolling_mode_edge"); return reply.value(); } bool SessionDispatcher::set_touchscrolling_mode_twofinger_qt() { QDBusReply reply = sessioniface->call("set_touchscrolling_mode_twofinger"); return reply.value(); } QString SessionDispatcher::get_touchscrolling_mode_qt() { QDBusReply reply = sessioniface->call("get_touchscrolling_mode"); return reply.value(); } bool SessionDispatcher::set_touchscrolling_use_horizontal_qt(bool flag) { QDBusReply reply = sessioniface->call("set_touchscrolling_use_horizontal", flag); return reply.value(); } bool SessionDispatcher::get_touchscrolling_use_horizontal_qt() { QDBusReply reply = sessioniface->call("get_touchscrolling_use_horizontal"); return reply.value(); } /*-----------------------------window of beauty-----------------------------*/ void SessionDispatcher::set_window_button_align_left_qt() { sessioniface->call("set_window_button_align_left"); } void SessionDispatcher::set_window_button_align_right_qt() { sessioniface->call("set_window_button_align_right"); } QString SessionDispatcher::get_window_button_align_qt() { QDBusReply reply = sessioniface->call("get_window_button_align"); return reply.value(); } bool SessionDispatcher::set_menus_have_icons_qt(bool flag) { QDBusReply reply = sessioniface->call("set_menus_have_icons", flag); return reply.value(); } bool SessionDispatcher::get_menus_have_icons_qt() { QDBusReply reply = sessioniface->call("get_menus_have_icons"); return reply.value(); } QStringList SessionDispatcher::get_titlebar_wheel_qt() { QDBusReply reply = sessioniface->call("get_titlebar_wheel"); return reply.value(); } QString SessionDispatcher::get_current_titlebar_wheel_qt() { QDBusReply reply = sessioniface->call("get_current_titlebar_wheel"); return reply.value(); } void SessionDispatcher::set_titlebar_wheel_qt(QString value) { sessioniface->call("set_titlebar_wheel", value); } QStringList SessionDispatcher::get_titlebar_double_qt() { QDBusReply reply = sessioniface->call("get_titlebar_double"); return reply.value(); } QString SessionDispatcher::get_current_titlebar_double_qt() { QDBusReply reply = sessioniface->call("get_current_titlebar_double"); return reply.value(); } void SessionDispatcher::set_titlebar_double_qt(QString value) { sessioniface->call("set_titlebar_double", value); } QStringList SessionDispatcher::get_titlebar_middle_qt() { QDBusReply reply = sessioniface->call("get_titlebar_middle"); return reply.value(); } QString SessionDispatcher::get_current_titlebar_middle_qt() { QDBusReply reply = sessioniface->call("get_current_titlebar_middle"); return reply.value(); } void SessionDispatcher::set_titlebar_middle_qt(QString value) { sessioniface->call("set_titlebar_middle", value); } QStringList SessionDispatcher::get_titlebar_right_qt() { QDBusReply reply = sessioniface->call("get_titlebar_right"); return reply.value(); } QString SessionDispatcher::get_current_titlebar_right_qt() { QDBusReply reply = sessioniface->call("get_current_titlebar_right"); return reply.value(); } void SessionDispatcher::set_titlebar_right_qt(QString value) { sessioniface->call("set_titlebar_right", value); } /*-----------------------------sound of beauty-----------------------------*/ void SessionDispatcher::set_login_music_enable_qt(bool flag) { sessioniface->call("set_login_music_enable", flag); } bool SessionDispatcher::get_login_music_enable_qt() { QDBusReply reply = sessioniface->call("get_login_music_enable"); return reply.value(); } QString SessionDispatcher::get_sound_theme_qt() { QDBusReply reply = sessioniface->call("get_sound_theme"); return reply.value(); } void SessionDispatcher::set_sound_theme_qt(QString theme) { sessioniface->call("set_sound_theme", theme); } /*-------------------filemanager of beauty-------------------*/ //bool SessionDispatcher::get_default_filemanager_bool_qt(QString flag) { //} //int SessionDispatcher::get_default_filemanager_int_qt(QString flag) { //} void SessionDispatcher::set_default_filemanager_qt(QString flag) { if(flag == "pathbar") {//路径输入框取代路径栏 sessioniface->call("set_default_filemanager", "org.gnome.nautilus.preferences", "always-use-location-entry", "boolean"); } else if(flag == "media") {//自动挂载媒体 sessioniface->call("set_default_filemanager", "org.gnome.desktop.media-handling", "automount", "boolean"); } else if(flag == "folder") {//自动打开文件夹 sessioniface->call("set_default_filemanager", "org.gnome.desktop.media-handling", "automount-open", "boolean"); } else if(flag == "programs") {//提示自动运行的程序 sessioniface->call("set_default_filemanager", "org.gnome.desktop.media-handling", "autorun-never", "boolean"); } else if(flag == "iconsize") {//缩略图图标尺寸(像素) sessioniface->call("set_default_filemanager", "org.gnome.nautilus.icon-view", "thumbnail-size", "int"); } else if(flag == "cachetime") {//缩略图缓存时间(天数) sessioniface->call("set_default_filemanager", "org.gnome.desktop.thumbnail-cache", "maximum-age", "int"); } else if(flag == "maxsize") {//最大缩略图缓存尺寸(MB) sessioniface->call("set_default_filemanager", "org.gnome.desktop.thumbnail-cache", "maximum-size", "int"); } } void SessionDispatcher::set_location_replace_pathbar_qt(bool flag) { sessioniface->call("set_location_replace_pathbar", flag); } bool SessionDispatcher::get_location_replace_pathbar_qt() { QDBusReply reply = sessioniface->call("get_location_replace_pathbar"); return reply.value(); } void SessionDispatcher::set_auto_mount_media_qt(bool flag) { sessioniface->call("set_auto_mount_media", flag); } bool SessionDispatcher::get_auto_mount_media_qt() { QDBusReply reply = sessioniface->call("get_auto_mount_media"); return reply.value(); } void SessionDispatcher::set_auto_open_folder_qt(bool flag) { sessioniface->call("set_auto_open_folder", flag); } bool SessionDispatcher::get_auto_open_folder_qt() { QDBusReply reply = sessioniface->call("get_auto_open_folder"); return reply.value(); } void SessionDispatcher::set_prompt_autorun_programs_qt(bool flag) { sessioniface->call("set_prompt_autorun_programs", flag); } bool SessionDispatcher::get_prompt_autorun_programs_qt() { QDBusReply reply = sessioniface->call("get_prompt_autorun_programs"); return reply.value(); } void SessionDispatcher::set_thumbnail_icon_size_qt(int size) { sessioniface->call("set_thumbnail_icon_size", size); } int SessionDispatcher::get_thumbnail_icon_size_qt() { QDBusReply reply = sessioniface->call("get_thumbnail_icon_size"); return reply.value(); } void SessionDispatcher::set_thumbnail_cache_time_qt(int value) { sessioniface->call("set_thumbnail_cache_time", value); } int SessionDispatcher::get_thumbnail_cache_time_qt() { QDBusReply reply = sessioniface->call("get_thumbnail_cache_time"); return reply.value(); } void SessionDispatcher::set_thumbnail_cache_size_qt(int size) { sessioniface->call("set_thumbnail_cache_size", size); } int SessionDispatcher::get_thumbnail_cache_size_qt() { QDBusReply reply = sessioniface->call("get_thumbnail_cache_size"); return reply.value(); } //-----------------------monitorball------------------------ double SessionDispatcher::get_cpu_percent_qt() { QDBusReply reply = sessioniface->call("get_cpu_percent"); return reply.value(); } QString SessionDispatcher::get_total_memory_qt() { QDBusReply reply = sessioniface->call("get_total_memory"); return reply.value(); } QString SessionDispatcher::get_used_memory_qt() { QDBusReply reply = sessioniface->call("get_used_memory"); return reply.value(); } QString SessionDispatcher::get_free_memory_qt() { QDBusReply reply = sessioniface->call("get_free_memory"); return reply.value(); } QStringList SessionDispatcher::get_network_flow_total_qt() { QDBusReply reply = sessioniface->call("get_network_flow_total"); return reply.value(); } //-----------------------change skin------------------------ void SessionDispatcher::handler_change_skin(QString skinName) { //将得到的更换皮肤名字写入配置文件中 mSettings->setValue("skin/background", skinName); mSettings->sync(); // //发送开始更换QML界面皮肤的信号 emit startChangeQMLSkin(skinName); } QString SessionDispatcher::setSkin() { QString skinName; mSettings->beginGroup("skin"); skinName = mSettings->value("background").toString(); if(skinName.isEmpty()) { skinName = QString("0_bg"); mSettings->setValue("background", skinName); } mSettings->endGroup(); mSettings->sync(); return skinName; } void SessionDispatcher::showSkinWidget() { // skin_widget->show(); } //void SessionDispatcher::showSkinCenter() { // skinCenter->show(); //} void SessionDispatcher::get_forecast_weahter_qt() { getCityIdInfo(); bool flag = Util::id_exists_in_location_file(initCityId); if(flag) {//获取中国气象局数据 QStringList tmplist; tmplist << "Kobe" << "Lee"; KThread *thread = new KThread(tmplist, sessioniface, "get_forecast_weahter", initCityId); thread->start(); } else { get_yahoo_forecast_dict_qt(); emit startUpdateForecastWeahter("yahooforecast"); } } void SessionDispatcher::get_forecast_dict_qt() { QDBusReply > reply = sessioniface->call("get_forecast_dict"); forecastInfo = reply.value(); } void SessionDispatcher::get_yahoo_forecast_dict_qt() { QDBusReply > reply = sessioniface->call("get_yahoo_forecast_dict"); yahooforecastInfo = reply.value(); } void SessionDispatcher::get_current_weather_qt() { getCityIdInfo(); QStringList tmplist; tmplist << "Kobe" << "Lee"; bool flag = Util::id_exists_in_location_file(initCityId); if(flag) {//获取中国气象局数据 KThread *thread = new KThread(tmplist, sessioniface, "get_current_weather", initCityId); thread->start(); } else {//获取雅虎气象数据 QStringList latlon = this->getLatandLon(initCityId); KThread *thread = new KThread(latlon, sessioniface, "get_current_yahoo_weather", initCityId); thread->start(); } } void SessionDispatcher::get_current_weather_dict_qt() { QDBusReply > reply = sessioniface->call("get_current_weather_dict"); currentInfo = reply.value(); } void SessionDispatcher::get_current_yahoo_weather_dict_qt() { QDBusReply > reply = sessioniface->call("get_current_yahoo_weather_dict"); yahoocurrentInfo = reply.value(); } void SessionDispatcher::get_current_pm25_qt() { getCityIdInfo(); QStringList tmplist; tmplist << "Kobe" << "Lee"; KThread *thread = new KThread(tmplist, sessioniface, "get_current_pm25", initCityId); thread->start(); } void SessionDispatcher::get_pm25_str_qt() { QDBusReply reply = sessioniface->call("get_pm25_str"); pm25Info = reply.value(); } QString SessionDispatcher::access_pm25_str_qt() { return pm25Info; } int SessionDispatcher::get_current_rate() { mSettings->beginGroup("weather"); int rate = 60; rate = mSettings->value("rate").toInt(); mSettings->endGroup(); mSettings->sync(); return rate; } bool SessionDispatcher::update_weather_data_qt() { getCityIdInfo(); bool flag = Util::id_exists_in_location_file(initCityId); if(flag) {//获取中国气象局数据 QDBusReply reply = sessioniface->call("update_weather_data", initCityId); return reply.value(); } else { QStringList latlon = this->getLatandLon(initCityId); KThread *thread = new KThread(latlon, sessioniface, "get_current_yahoo_weather", initCityId); thread->start(); return false; } } QString SessionDispatcher::getSingleWeatherInfo(QString key, QString flag) { QVariant info = ""; if(flag == "forecast") { info = forecastInfo.value(key); } else if(flag == "current") { info = currentInfo.value(key); } else if(flag == "weathericon") { info = "../../img/weather/" + key; } else if(flag == "yahoo") { info = yahoocurrentInfo.value(key); } else if(flag == "yahooforecast") { info = yahooforecastInfo.value(key); } return info.toString(); } bool SessionDispatcher::showWizardController() { WizardDialog *wizardDialog = new WizardDialog(mSettings, 0); connect(wizardDialog, SIGNAL(readyToUpdateRateTime(int)), this, SLOT(handler_change_rate(int))); connect(wizardDialog, SIGNAL(readyToUpdateWeatherForWizard()), this, SLOT(handler_change_city())); wizardDialog-> QWidget::setAttribute(Qt::WA_DeleteOnClose); if(wizardDialog->exec()==QDialog::Rejected) { return false; } else { return true; } } void SessionDispatcher::handler_change_rate(int rate) { emit startUpdateRateTime(rate); } bool SessionDispatcher::showChangeCityDialog() { ChangeCityDialog *cityDialog = new ChangeCityDialog(mSettings); cityDialog-> QWidget::setAttribute(Qt::WA_DeleteOnClose); connect(cityDialog, SIGNAL(readyToUpdateWeather()), this, SLOT(handler_change_city())); if(cityDialog->exec()==QDialog::Rejected) { return false; } else { return true; } } void SessionDispatcher::handler_change_city() { emit startChangeQMLCity(); } int SessionDispatcher::getLengthOfCityList() { mSettings->beginGroup("weather"); QStringList cityList = mSettings->value("places").toStringList(); mSettings->endGroup(); mSettings->sync(); return cityList.size(); } void SessionDispatcher::initConfigFile() { mSettings->beginGroup("user"); QString id = mSettings->value("id").toString(); if(id.isEmpty()) { mSettings->setValue("id", "0"); } mSettings->endGroup(); mSettings->beginGroup("weather"); QString cityId = mSettings->value("cityId").toString(); //cityId为空时,赋默认值为:101250101 if(cityId.isEmpty()) { cityId = QString("101250101"); mSettings->setValue("cityId", cityId); } QStringList idList = mSettings->value("idList").toStringList(); if(idList.isEmpty()) { idList.append("101250101"); idList.append("101010100"); idList.append("101020100"); mSettings->setValue("idList", idList); } QStringList places = mSettings->value("places").toStringList(); //places为空时,赋默认值为:湖南,长沙,长沙 if(places.isEmpty()) { // places = QStringList("湖南,长沙,长沙"); places.append("湖南,长沙,长沙"); places.append("北京,北京,北京"); places.append("上海,上海,上海"); mSettings->setValue("places", places); } //纬度 QStringList latitude = mSettings->value("latitude").toStringList(); if(latitude.isEmpty()) { latitude.append("NA"); latitude.append("NA"); latitude.append("NA"); mSettings->setValue("latitude", latitude); } //经度 QStringList longitude = mSettings->value("longitude").toStringList(); if(longitude.isEmpty()) { longitude.append("NA"); longitude.append("NA"); longitude.append("NA"); mSettings->setValue("longitude", longitude); } QString rate = mSettings->value("rate").toString(); //rate为空时,赋默认值为:60 if(rate.isEmpty()) { rate = QString("60"); mSettings->setValue("rate", rate); } mSettings->endGroup(); mSettings->beginGroup("skin"); QString backGround = mSettings->value("background").toString(); //backGround为空时,赋默认值为:0_bg if(backGround.isEmpty() || backGround != "0_bg") { backGround = QString("0_bg"); mSettings->setValue("background", backGround); } mSettings->endGroup(); mSettings->sync(); } void SessionDispatcher::getCityIdInfo() { mSettings->beginGroup("weather"); initCityId = mSettings->value("cityId").toString(); mSettings->endGroup(); mSettings->sync(); } QStringList SessionDispatcher::getLatandLon(QString id) { QStringList tmp; bool flag = false; mSettings->beginGroup("weather"); QStringList idList = mSettings->value("idList").toStringList(); QStringList latitude = mSettings->value("latitude").toStringList(); QStringList longitude = mSettings->value("longitude").toStringList(); mSettings->endGroup(); mSettings->sync(); int j = 0; for (int i=0; i< idList.length(); i++) { if(id == idList[i]) { flag = true; break; } j += 1; } if(flag) { flag = false; tmp << latitude[j]; tmp << longitude[j]; } return tmp; } void SessionDispatcher::change_maincheckbox_status(QString status) { emit startChangeMaincheckboxStatus(status); } youker-assistant-1.0.1/src/modaldialog.h000644 001750 001750 00000002502 12312451003 020552 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef MODALDIALOG_H #define MODALDIALOG_H #include #include "quibo.h" namespace Ui { class ModalDialog; } class ModalDialog : public QDialog { Q_OBJECT public: explicit ModalDialog(QWidget *parent = 0); ~ModalDialog(); void monitor_check(); private: Ui::ModalDialog *ui; QPoint dragPos; QUIBO *qtui; private slots: void on_closeButton_clicked(); void on_okButton_clicked(); protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); bool eventFilter(QObject *obj, QEvent *event); }; #endif // MODALDIALOG_H youker-assistant-1.0.1/qml/func/others/LeftPage.qml000644 001750 001750 00000074756 12312451003 022614 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Rectangle { id: leftbar width: 600; height: 435 property int num: 3//子checkbox的个数 property int check_num: num property string flag: "onekeyscan" //onekeyscan:scan onekey:clean property string garbage property string trace property string cookies property string path: "../../img/en/" property bool garbageFlag: true property bool traceFlag: true property bool cookiesFlag: true Component.onCompleted: { if(sessiondispatcher.get_locale_version() == "zh_CN") { leftbar.path = "../../img/zh_CN/"; } else { leftbar.path = "../../img/en/"; } firstonekey.showImage = leftbar.path + "quickscan.png"; } Connections { target: sessiondispatcher onIsScanning: {//扫描过程中收到的信号 showLabel.visible = true; showText.text = msg; } onFinishScanWork: { if(msg == "onekey") {//扫描完成 staticImage.visible = true; dynamicImage.visible = false; leftbar.flag = "onekey"; firstonekey.showImage = leftbar.path + "quickclean.png"; // firstonekey.text = qsTr("Quick cleanup");//一键清理 //扫描完成后根据子checkbox的勾选情况置状态 if(garbageCheck.checked) { cachestatus.visible = true; cachestatus.state = "GarbageNO"; } else { cachestatus.visible = false; } if(historyCheck.checked) { historystatus.visible = true; historystatus.state = "HistoryNo"; } else { historystatus.visible = false; } if(cookiesCheck.checked) { cookiestatus.visible = true; cookiestatus.state = "CookiesNO"; } else { cookiestatus.visible = false; } showLabel.visible = false; showText.text = ""; } } onTellScanResultToQML: { if(flag == "h") { leftbar.trace = msg; } else if(flag == "k") { leftbar.cookies = msg; } else if(flag == "c") { leftbar.garbage = msg; } } } Connections { target: systemdispatcher onFinishCleanWorkMain: {//收到清理后的状态 if (msg == "yes") {//在弹出输入密码验证时,点击了取消按钮 //do nothing } if (msg == "no") {//在弹出输入密码验证时,输入密码,验证通过,此时让动态图片开始显示 //show dynamic image staticImage.visible = false; dynamicImage.visible = true; showLabel.visible = false; showText.text = ""; } else if (msg == "c") { cachestatus.state = "GarbageOK"; firstonekey.showImage = leftbar.path + "cleaningup.png"; // firstonekey.text = qsTr("Cleaning up...");//正在清理... } else if (msg == "h") { historystatus.state = "HistoryOK"; firstonekey.showImage = leftbar.path + "cleaningup.png"; // firstonekey.text = qsTr("Cleaning up...");//正在清理... } else if (msg == "k") { cookiestatus.state = "CookiesOK"; firstonekey.showImage = leftbar.path + "cleaningup.png"; // firstonekey.text = qsTr("Cleaning up...");//正在清理... } else if (msg == "o") { //清理完毕后显示清理总数 if(leftbar.cookiesFlag) { cookiedes.visible = true; cookiedes.text = qsTr("(totally cleared") + leftbar.cookies + qsTr("Cookies)");//(共清理掉 条Cookies) } if(leftbar.garbageFlag) { cachedes.visible = true; cachedes.text = qsTr("(totally cleared") + leftbar.garbage + qsTr("garbage)");//(共清理掉 垃圾) } if(leftbar.traceFlag) { historydes.visible = true; historydes.text = qsTr("(totally cleared") + leftbar.trace + qsTr("historical records)");//(共清理掉 条历史记录) } //显示清理总数后把与之相关的一些标记和变量恢复默认值 // leftbar.cookiesFlag = false; // leftbar.garbageFlag = false; // leftbar.traceFlag = false; leftbar.cookies = ""; leftbar.garbage = ""; leftbar.trace = ""; showText.text = ""; toolkits.alertMSG(qsTr("Cleared!"), mainwindow.pos.x, mainwindow.pos.y);//一键清理完毕! leftbar.flag = "onekeyscan"; firstonekey.showImage = leftbar.path + "quickscan.png"; // firstonekey.text = qsTr("Quick scan");//一键扫描 } staticImage.visible = true; dynamicImage.visible = false; } onFinishCleanWorkMainError: { if (msg == "ce") { cachestatus.state = "GarbageException"; if (cachedes.visible == true) { cachedes.visible = false; } } else if (msg == "he") { historystatus.state = "HistoryException"; if (historydes.visible == true) { historydes.visible = false; } } else if (msg == "ke") { cookiestatus.state = "CookiesException"; if (cookiedes.visible == true) { cookiedes.visible = false; } } } onQuickCleanProcess: { if(type == "firefoxhistory") { if(status == "start") { showText.text = qsTr("Cleaning up history trace of Firefox...");//正在清理Firefox的历史痕迹... } else if(status == "end") { showText.text = qsTr("Firefox history trace had been cleared!");//Firefox的历史痕迹已清理完毕! } } else if(type == "chromiumhistory") { if(status == "start") { showText.text = qsTr("Cleaning up history trace of Chromium...");//正在清理Chromium的历史痕迹... } else if(status == "end") { showText.text = qsTr("Chromium history trace had been cleared!");//Chromium的历史痕迹已清理完毕! } } else if(type == "firefoxcookies") { if(status == "start") { showText.text = qsTr("Cleaning up Cookies of Firefox...");//正在清理Firefox的Cookies... } else if(status == "end") { showText.text = qsTr("Firefox Cookies had been cleared!");//Firefox的Cookies已清理完毕! } } else if(type == "chromiumcookies") { if(status == "start") { showText.text = qsTr("Cleaning up Cookies of Chromium...");//正在清理Chromium的Cookies... } else if(status == "end") { showText.text = qsTr("Chromium Cookies had been cleared!");//Chromium的Cookies已清理完毕! } } else if(type == "apt") { if(status == "end") { showText.text = qsTr("Apt cache had been cleared!");//Apt缓存已清理完毕! } else { showText.text = qsTr("Cleaning up Apt cache: ") + status;//正在清理Apt缓存: } } else if(type == "software_center") { if(status == "end") { showText.text = qsTr("Software Center cache had been cleared!");//软件中心缓存已清理完毕! } else { showText.text = qsTr("Cleaning up Software Center cache: ") + status;//正在清理软件中心缓存: } } } } //子checkbox勾选的个数变化时 onCheck_numChanged: { if(check_num == 0) {//子checkbox勾选的个数为0,主checkbox状态置为"false" mainCheck.checked = "false"; } else if(check_num == leftbar.num) {//子checkbox全部被勾选时,主checkbox状态置为"true" mainCheck.checked = "true"; } else {//存在子checkbox被勾选,但没有全部被勾选时,主checkbox状态置为"mid" mainCheck.checked = "mid"; } } //背景 Image { source: "../../img/skin/bg-left.png" anchors.fill: parent } Row { id: myrow spacing: 10 anchors { top: parent.top; topMargin: 45; left: parent.left; leftMargin: 30 } Image {//静态图片 id: staticImage//staticImage visible: true source: "../../img/toolWidget/clear-logo.gif" width: 120 height: 118 Behavior on rotation { NumberAnimation { duration: 200 } } } AnimatedImage {//动态图片 id: dynamicImage//dynamicImage visible: false width: 120 height: 118 source: "../../img/toolWidget/clear-logo.gif" } Column { spacing: 17 id: mycolumn Text { id: text0 width: leftbar.width-180 text: qsTr("Quick clean up system junks, saving disk space and improving the system efficiency !")//一键清理系统垃圾,帮您节省磁盘空间,让系统运行更加有效率! font.bold: true wrapMode: Text.WordWrap font.pixelSize: 14 color: "#383838" } Text { id: text1 width: leftbar.width-180 text: qsTr("To help you quick clean up the Cookies, garbage, traces and plug-ins in your system")//一键帮您清理系统中的 Cookies、垃圾、痕迹和插件! wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } Common.KButton { id: firstonekey kflag: "quickscan" showImage: "" //"../../img/zh_CN/quickscan.png" anchors { left: parent.left; leftMargin: 100 } width: 185 height: 45 onClicked: { if(!(garbageCheck.checked || historyCheck.checked || cookiesCheck.checked)) {//没有有一个子项勾选了 sessiondispatcher.showWarningDialog("友情提示:","对不起,您没有选中清理项,请确认!", mainwindow.pos.x, mainwindow.pos.y); } else { if (leftbar.flag == "onekeyscan") {//一键扫描 if (cachestatus.visible == true) cachestatus.visible = false; if (historystatus.visible == true) historystatus.visible = false; if (cookiestatus.visible == true) cookiestatus.visible = false; if (cachedes.visible == true) cachedes.visible = false; if (historydes.visible == true) historydes.visible = false; if (cookiedes.visible == true) cookiedes.visible = false; staticImage.visible = false; dynamicImage.visible = true; showLabel.visible = false; showText.text = ""; if(garbageCheck.checked) { leftbar.garbageFlag = true; } else { leftbar.garbageFlag = false; } if(historyCheck.checked) { leftbar.traceFlag = true; } else { leftbar.traceFlag = false; } if(cookiesCheck.checked) { leftbar.cookiesFlag = true; } else { leftbar.cookiesFlag = false; } sessiondispatcher.onekey_scan_function_qt(systemdispatcher.get_onekey_args()); } else if (leftbar.flag == "onekey") {//一键清理 if(garbageCheck.checked) { if(!leftbar.garbageFlag) { leftbar.garbageFlag = false; } } else { leftbar.garbageFlag = false; } if(historyCheck.checked) { if(!leftbar.traceFlag) { leftbar.traceFlag = false; } } else { leftbar.traceFlag = false; } if(cookiesCheck.checked) { if(!leftbar.cookiesFlag) { leftbar.cookiesFlag = false; } } else { leftbar.cookiesFlag = false; } systemdispatcher.set_user_homedir_qt(); systemdispatcher.clean_by_main_one_key_qt(leftbar.garbageFlag, leftbar.traceFlag, leftbar.cookiesFlag/*systemdispatcher.get_onekey_args()*/); } } } }//Button } }//Row // Column { // id: scanColumn // anchors { top: parent.top; topMargin: 150; left: parent.left; leftMargin: 30 } // spacing: 20 // Row { // spacing: 10 // Text { // id: showLabel // width: 50 //// visible: false // visible: true // font.pixelSize: 12 // text: qsTr("Scan to: ")//扫描到: // } // Text { // id: showText // width: leftbar.width - 50 - 20 * 2 - 20 // height: 30 // text: "" // wrapMode: Text.WrapAnywhere//Text.WordWrap // color: "green" // } // } Row{ spacing: 14 anchors { top: parent.top; topMargin: 195; left: parent.left; leftMargin: 30 } Common.Label { id: itemtip text: qsTr("Quick Cleanup")//一键清理项目 font.bold: true font.pixelSize: 14 color: "#008000" } Common.MainCheckBox { id:mainCheck checked:"true"//默认情况将所有选项都勾选上 //主checkbox的值改变时,当改变为true,即子checkbox全部勾选上;当改变为false,即子checkbox全部不被勾选 onCheckedboolChanged: { garbageCheck.checked = mainCheck.checkedbool; historyCheck.checked = mainCheck.checkedbool; cookiesCheck.checked = mainCheck.checkedbool; } } Text { id: showLabel width: 50 visible: false // visible: true font.pixelSize: 12 color: "#7a7a7a" text: qsTr("(Scan to: ")//扫描到: } Text { id: showText width: leftbar.width - 50 - 20 * 2 - 165 text:"" font.pixelSize: 12 clip: true // wrapMode: Text.WrapAnywhere//Text.WordWrap color: "#7a7a7a" Text{ anchors.left: parent.right anchors.top: parent.top text: ")" visible: showLabel.visible font.pixelSize: 12 color: "#7a7a7a" } } } // } //列表 Column { anchors.top: parent.top anchors.topMargin: 255 anchors.left: parent.left anchors.leftMargin: 55 spacing:30 //-------------garbage-------------- Item { width: parent.width height:45 //65 Item { Behavior on scale { NumberAnimation { easing.type: Easing.InOutQuad} } //checkbox, picture and words Row { spacing: 15 anchors.verticalCenter: parent.verticalCenter Common.CheckBox { id: garbageCheck checked:true anchors.verticalCenter: parent.verticalCenter onCheckedChanged: { if(garbageCheck.checked) { leftbar.check_num = leftbar.check_num + 1; } else { leftbar.check_num = leftbar.check_num - 1; } if (garbageCheck.checked) { var rubbishlist = systemdispatcher.get_onekey_args(); var word_flag = "false"; for (var i=0; i. ### END LICENSE import psutil import time import subprocess class MonitorBall: # clean up memory def cleanup_memory(self): '''force changed to disk, update the super block''' pone = subprocess.Popen(["sync"], shell=True) pone.wait() '''drop pagecache, dentries and inodes to free the memory''' ptwo = subprocess.Popen(["echo 3 > /proc/sys/vm/drop_caches"], shell=True) ptwo.wait() # get cpu percent def get_cpu_percent(self, percpu = False): return psutil.cpu_percent(0.1, percpu) # get total memory + cache def get_total_cmemory(self, symbol = "m"): mem = psutil.phymem_usage() value = mem.total return self.bytes2human(value, symbol) # get used memory + cache def get_used_cmemory(self, symbol = "m"): mem = psutil.phymem_usage() value = mem.used return self.bytes2human(value, symbol) # get free memory + cache def get_free_cmemory(self, symbol = "m"): mem = psutil.phymem_usage() value = mem.free return self.bytes2human(value, symbol) # get total memory def get_total_memory(self, symbol = "m"): baseData = psutil.virtual_memory() value = baseData.total return self.bytes2human(value, symbol) # get used memory def get_used_memory(self, symbol = "m"): baseData = psutil.virtual_memory() value = baseData.total - baseData.available return self.bytes2human(value, symbol) # get free memory def get_free_memory(self, symbol = "m"): baseData = psutil.virtual_memory() value = baseData.available return self.bytes2human(value, symbol) # get memory used percent def get_memory_percent(self): baseData = psutil.virtual_memory() return baseData.percent # get network total flow, return (up, down) def get_network_flow_total(self, symbol = "k"): network = psutil.network_io_counters() sent = network.bytes_sent recv = network.bytes_recv if(symbol == "b"): return (sent, recv) elif(symbol == "k"): k_up = float(sent) / 1024 ups = str(k_up) ups = ups[0:ups.find(".") + 2] k_down = float(recv) / 1024 downs = str(k_down) downs = downs[0:downs.find(".") + 2] return (ups, downs) else: return None # byte to human by symbol def bytes2human(self, value, symbol): if symbol == "k": value = value / 1024 elif symbol == "m": value = value / 1024 / 1024 elif symbol == "g": valuef = float(value) / 1024 / 1024 / 1024 values = str(valuef) value = values[0:values.find(".") + 2] else: pass return str(value) if __name__ == "__main__": mmm = MonitorBall() # print mmm.get_network_flow_total() # print mmm.get_network_flow_total("b") # mmm.cleanup_memory() # print mmm.get_cpu_percent() # print mmm.get_cpu_percent(True) # print mmm.get_cpu_percent() # print mmm.get_free_memory("m") # print mmm.get_used_memory("g") # print mmm.get_total_memory("g") # mmm.ttestt() print mmm.get_memory_percent() print mmm.get_total_memory() print mmm.get_used_memory() print mmm.get_free_memory() youker-assistant-1.0.1/qml/img/logo/Manufacturer/KINGSPEC.jpg000644 001750 001750 00000012750 12312451003 024212 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!AQq a"2B$%U&V#DT5  !1AQaq"2BR#3$4brT%&' ?M1%M~l9`aM<0MGс&^l4?݆ yv`L>~wPPr  PPr`GF^I3ɯ̀0G1 ^) 0:C͆u. /V ]{2\ ]`w J 3JPFF˫+5@y7)xq]YEq]1ڃzb.M5iTS}bQsT嗴Hjyz ģv#6X,kּx^6Po^Kkj+Zܽ`;!XU9NdQ#TI'1J2mEPqN)0"E ?zxz")'cc-p\{ B=l#\qaP=(z#M.ߗ .$ξ{de8W ۋ$F? gt֍5̩UĊ)P>!G;h(8tڴ**x092Z~O< 7|M&bi3 ;s1.Q\da}4^U U#7A"|Uz ' |9n-w$8d$J1S:ocq9LZFj%*hSPdTP v=cMg7D ek9^.eʋwƂ@])Ǭr{rVƷG(sU*RPk"KlMaٍMe\}kfN'Sb#9QwyoN4e(uQ U"B Z;x )bj&Rnd>^^kkP:=ɪ@sP޼g*- LN}](mb sҧ~'X-mm>ZDpV̙ysH$xuϷ""fr>a#Qõ>/ 4ϡ&bcF 'VWG)iEUGf!ϊ[t}&'3S ^AL:;c>Ux\|SkɄ4L*t~߬"ŵB'EBe7/$ȹW.=/b=!Jt֊A'궭YynGe\5uؼbe(u;nLUR%! 1{suB/+VY[ 0'yVcPBԏ7*@LI=#" HvnUbQׇzXjꕶ= } H`}Az'gGrO7M. de+dPbQJ⥧( KQ4PW\e e LLQvդbJۼLd|?fUNEN6Yn-s4lalc+ 13H ~~ЏAZܦ 4BeN ^z{cZUlvC21]N"C$ZS{׎ x +opV s'Eyl_2~+)n-RS.Yt ۳;zrqxzNg>nvl! Wpt eb V]T <~^*S\W]G76GrH2:9v۾̓v֤$ڕ͕x "<ck˻}*+>qjrNaѪthAyƺn{6oՕ mojE@ 9aQZ@z%W@C[V)[i-Q<2f⟼''bKi֯ItGNPebxù.חGa X-j-^(o9Obi`eDW]כ Y7JZ;;d1X]K+}M#YI3¹ "Be@&R=Wcd?eZdyS/HWTɯr5Ԛ*JqHC0 JVEuQxE4"RÈkxrtY捾LB{u@,s11!8ֽ $am[S> ?PKR^0817Mm?)%;%J`p*J/N9͜вZG;=Z Lŏp`fkql2T:Q,K,/+\%?ǏЬ{zϊZtA$T.:!xYj =AE[T"W},g~* )өx?fĢ=;+jdzjĩpO(^%-UXx:)ծ~OE`.T~uw#,i>w6% Jk=FH "#N}J^+qZiiS-O)N\h\eN|w[|SWf<%4e1 ҭa3) Cčv7/}mw# 8br۷hw0kXǢFlmMid[/zt=9>~~s1^c~qÉ?WO uW) JbŅ;TFyI:ϥ݀`VUi[ZΤPN#*Qw +3I,JW E塰o#%Ii Idq k$s|Y(|RHl04UBl詰߆r JĬ9m]$>;1:X"89ͽ9n=_M&za$Vg"%j\qiV5L; $bq@䀠Jn`jMݖn^-+pP$*V2! [Ls^1v.zA\ 6yt:0"x`(v+ܥ#¹eZԘCpG%m㊉7-7=a*K$ߴZ Ϳf1Oi Yi|>%{od}gSh3=E-Hs5Q/mLF@Zh\08->CǕfSmK‚jgYPTH q*Wݼqq;R!Gd)!Ta2-=ܽZ9b7#8MܭY+ֺ+ d*Lu[ A7N!VnvmRݸ"\0e0vJB\enS =IxN  qXKi$4eɓUTmJC"޳y ]z'4Q:xSDžH:TZl&3FvBG/Uٽr}N.ʚhY.ОtM$VC<뉹9Z9bghydk٣OqpE[sTnpGiTry"`vkT~1Zj+fT"RU.xQ֫KLUN3 s Cӊ?׃"G+Fؠ0i%$/~ْ~[T8τ4ںQwxnJѕbB TvVĹBS}8>r.G'̨aDL첔R},0`\dW:y1u:$7+TB)Ö}PgR_gٌb<>}+i)0D v [ѺA%  cD:S{Rtk?J*"`p&c]W-3D]"&0rk` C׻ lj> akC`f >w&PPu - `u(`4„2V<̼C |t 芴c>0 s5›(x`<0M|h P}!a׼0#(!0a 0 = {-`VLgF_`b&Se Q`t a]2_#e5х?youker-assistant-1.0.1/qml/img/logo/Manufacturer/NEC.jpg000644 001750 001750 00000010325 12312451003 023410 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !AqB Q"2aRwb#4%&89 !1AQaBq"2r4RbD3%5eu67 ?L$\ cxH&|":R BA3쀏u .R %dCrer!EɆ) - 2\PvBʞ?XE@?t!Lo τG\A3\H&|0 Q$PqnL\(0 !qE$Q+ Q֙S݋(rg) H&c )ϗ=Ԃ!J8$=X\ܮ^'2 XPD*?|Sv-;è-&o}ѤzZްa+kZ~\ɗ99%þ+Q`RTBa=kۭh %܍#CFifu- VRB$A[,rPt)z>pAn$gn_Wvc{Sۿpk'ňnX;:vmܕȝSZҌyor!e>|j~״4`0EaKLiL.sot5 ;٨5Xc''@F)BZ)É,;CBk.j6Y׫S;؅Ę_D. jtJnxouYZE>:.'KOZ6! ~w*U {\ӆ ي78ʀ,lD=*5*J`04޿=F:쳩ワ_m UIt?5J͖00,s 1+8o!kj@':yLɪ6Fm9?Upj<!ެ#L4~m^#=inZlqu4+Z:[+Jk]1n dJ 1if﵋2N3.9ɒa@ aE"i\%tZ9317!v+~İ•"W"?:`*\N>=ItEdY96b@&IcdV&^9ULWW.A+{!ąJ;0Q;Zȩ9?QڮviS,دxU]]v]pJUw5f ֝!0 G gGuc|)p3vD6 {|<~v-/17] 󅊙Ҽ=hhkp.EFO%,(UB\G k@p.&/mK*T KT̋m#hnm lv^@NW-4[mG}cT{=Qojhd:U4 %VJ4{je}|%D)ScE,y:^lH#Iy]+V/;UЁ+3փa_(}G#38੒/7vkČ=b3<ݗAwI. !jF{lIֳ LZ1h8kyl9GO2@y!c~E˟^xu:Vu PvCU<<~1MشUT-GsmS[\ZKSg)RaLP]8d8+Ggs+9GHZL#.al AhEOR4Z:[wjʦC::($j|G08wDCx%[0i@8!wbI2R:F倷> MDM3Jj"d+/z|wr Lu@^R r(_8@tabeb͏Tpxc9a !ے(_r0udqxQtbU|<~ˊnŋI^T 3BLDuȤ1gAs]KȆψB R[r@eArri<<~1Mرi2ʁW&~B f=P"L{ #H.aˢI~ܙ\Qra@BnH (.W.A2&)youker-assistant-1.0.1/qml/img/logo/Manufacturer/CANON.jpg000644 001750 001750 00000046654 12312451003 023657 0ustar00saucysaucy000000 000000 JFIFHH ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2011:12:02 10:27:22]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOT$RJ㳿uvX qvDN1̓˜7.R'֔%׺~>3qm;{G=;S`>1lnG} TO/ID(8Ŵr&.evـcgzFeU0LnG5v)^.n|U..tY`UۙSr-!Ż^9yؘmkm;XKv۹V;qd7 z̈́WR/nKm}MvYE@`5lN0+uk.!Sn\Q(ˊ1'E%O_~ϧ.2Low7-bX(kEq_g?lȳ}cK<{?Ř9OH/ErOMf t[nY!#(:tyk0f岓zrqp]Υqzɲ0Ǹ}V>YN0)ʴ @ß[/GꢱVU"u͗9TbZ C@uBA~LHwۊG>OsDچC?W㾲?`Uik&dUsu k[}Zݸs%u?uJknue\%jng/u06pjZ֒2:! ӔXDx WZ袎kmac9L#u0jN5ƞv45ڱt][N?Sͣ1OXkZ>}Qms6k jcOډ?Q$3qm;{G=;S`>1lnG} TO/ID(8Ŵr&.evـcgzFeU0LnG5v)^.n|U..tY`UۙSr-!Ż^9yؘmkm;XKv۹V;qd7 z̈́WR/nKm}MvYE@`5lN0+uk.!Sn\Q(ˊ1'E%O_~ϧ.2Low7-bX(kEq_g?lȳ}cK<{?Ř9OH/ErOMf t[nY!#(:tyk0f岓zrqp]Υqzɲ0Ǹ}V>YN0)ʴ @ß[/GꢱVU"u͗9TbZ C@uBA~LHwۊG>OsDچC?W㾲?`Uik&dUsu k[}Zݸs%u?uJknue\%jng/u06pjZ֒2:! ӔXDx WZ袎kmac9L#u0jN5ƞv45ڱt][N?Sͣ1OXkZ>}Qms6k jcOډ?Q$ 1 93 70 1 72/1 72/1 2 2011-12-02T10:27:22+08:00 2011-12-02T10:27:22+08:00 2011-12-02T10:27:22+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:08e90667-1c8d-11e1-ae7e-db667b27342f image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ƪx)i) TigFX@` Ycg*K14I$v?~|v+{h7Vs)W;9M#NU3:>>z+>w|m/5[F tkط<9z ciTmS13]Bgyfۦn[(Se}j>ZƗoE 8/{qg;\{!Mo6{ZȷӼh^Eh|v~잒"dxzwx`aXTT/JrfL^CUUA1Wx]OE5bSε8 "c1{[ܱ{+ݷ:\d6B*cԫP{cInQpC%EZm\~6oo iiy$LU]c$jYQe7zvy[%S +I= y׷ܦ~vtECj ) H n#@>{7{D޻C+d3V!=GɵJ~'tj~nr7rv[bm7MbHFEXBҔ|(̯; ckەMf2Y",ƙzr >O})S]XI#2t..%h !^Ng%NGtm]O2n{oz)*%ߌn h*hY($,hc769e\Q°*GBq}kh۟pyo?m5@`#y݊VBM@zOU0/ي'UP<-'᫷5Ng^8ώHFǏm75I h5sXv 2܉wZcICDɧ,D ̱ѯ`:ϴ>||7G~}αVț7&*e%VGA)$y4.A_%lHZ ~i= b֙ 0IjӦǽC]ϑ(73F#GxYD@Y!sQѼP_ܗa;r|_Z#;D8(S.Is4+W_㪆8I^@ 0Üܱc_6Jq>ej>}Nv[\>_il֦BЧ'z*Lcb @:7GϜ&𖆛u^-TJK6G [-c+ڰŨSٯ5i6ʒ>mA%JBc!wRp>]nS7VMFn/{nHX MDnLVK5>9ZGueB6 Zú+IeDv /q/x9E m`cYVњ QUB>3-ן˿ޔK;N ^Y0[[em*T/U CNuDy-a I՞U `YcnyeOk)dagIg/",2/|H?#;#zcP&u=avrn 28:hֶɬI(q9GlӶo0[]R9)V2c`UHks/|_Yݢ_GM$1VYUW$"?U 2n.3:;1r Pr8x-W%ZVX5ym[pn-bEI U`A4hx̟x>cڷUfxPyיvHѭ 4~|z>{q70O#JF+$:@F.P>݁Sn_cW3'՝1xɚ!nꊪy$I!anشkibA"@bbI Neln`9r6y$7<11tGl,I>lm-7U|}W~1[ok𝏶j_CͦbzGWFarfa>){P?BȇY~@:'xؽ^mț>e3?yilV9Ic:H!:b{?eUwƺz1f oTd!CMO:ؽ@1g$M[[eF-[pP( j\L>7\w\Wrol+RY+pPwwFml&'mG}O`q>.fR3caϺZ$0FEQ@?M׹rw57&ۙ%I$"]ܖc@XSsG'ٔ2 E"#ߺ =Pɏ˶{Eà~OE=nՇv,X|}~I^^iN>:rtBhzg;y-uCԣ rt|G#o' NZÕ>{U6a@.P%|hw;P]dӎhݟ&xRC MQ+S.<HV$ /ݹk)B4z4 gN?)^F׶w]f %I/ ,QfZb@#t_~[(>;<2-  p-lު(NImwv,o FE RqRwەyחl7).vIݖkXI ŌNF$P[#m7g||=ݛ{  i}~WI_%17h?%jxNM]f*)B<0STx}7_f齾d۹>ͪ9n4%Ƶcy-܆K/b**F$?n1/lc(j~1,^;nxba-uK1Uw(U"gV0nlm]z5JK}osf$\ռRCHʥ]YIVR*>V$޼W}MY[K# v pnZLeMeluiҢf߽߷+ ]X@AA$Ϣh~"#X{}aymn7o,#ɡUTXM yӡg(`Mg::-IG_.[ E;VcZ鱕G:U/vB/AWtR2)P#@O+/ܿgaorԍ#\3 W^[yT:HY$%CwtE_}[w=CY4[i(䫒}[\~?ީUVLiȐ*$}{Em""rbRh. */ #include "QDesktopWidget" #include "aboutdialog.h" #include "ui_aboutdialog.h" #include AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent), ui(new Ui::AboutDialog) { ui->setupUi(this); this->setWindowFlags(Qt::WindowStaysOnTopHint); QDesktopWidget* desktop = QApplication::desktop(); move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2); ui->tabWidget->setCurrentIndex(0); connect(ui->homeBtn, SIGNAL(linkActivated(QString)), this, SLOT(openUrl(QString))); } AboutDialog::~AboutDialog() { delete ui; } void AboutDialog::on_closeBtn_clicked() { // QDialog::accept(); this->hide(); } void AboutDialog::openUrl(QString url) { QDesktopServices::openUrl(QUrl(url)); } youker-assistant-1.0.1/qml/img/icons/return.png000644 001750 001750 00000001521 12312451003 022043 0ustar00saucysaucy000000 000000 PNG  IHDRS tEXtSoftwareAdobe ImageReadyqe<IDATxb,9`{ؙ js Dؘ94LrAS@P3 H ^>F( `z@v:1v()HR*o 5GAb?a:3`MĈ nbU fdB`@64z%Aj:#{ȒYaD@^ @π/doC  * YaBita6^bh2D4Tz"b{Kq"d?A=hev;T|6lHA $at?6P hKUf 60edP,0!1Nj#~烙4~i. pJ\, D5  d2MJؒHa-.PF7C @EB@|!`T-LYx- oYR`5k>. A.!Ti BJ@ rb)DY>Z* Wa-{ @͠'ࡘ )KI,TOi0BPp_xi`6(lbP0ׇDP t"kbO^3̸ 〾6 T 3a /$Fi4F@&#5!ߡe#/P3+$|qUhf& вs,IENDB`youker-assistant-1.0.1/qml/img/weather/n3.gif000644 001750 001750 00000005514 12312451003 021357 0ustar00saucysaucy000000 000000 GIF89a008Zիij̴ΧܠƩ±ȼнЅѸ4X͸εɴ;`8[!;]ʎòʤֻ2T/P0Q1R7Z3T9[4U;]7X5U!>`%Bd)Fj2Rx6W)Ba4Tz5U{9Z7W~7W}9Y9Y7U{5Sw6Tx:X~;Z9Vz;Y}@`ŭ0P2R/M0N0M4T1O5U2P6V2O3Q7W8X4R9Y5S:Z6T=_;[#Ac ;Y'Ef*Ik/Pt-Lo,Jl6['B_4V{6X~5W|7Z6X}7Y~8Z2Op=VqG]uUibvsŨ/M0N2Q7W4S2P:[4R;\5S6T:Y7U9W Ab=\!Bc>];Y ?^"A`$Ee#Ba8S&Fh'Hj">[)Jl&Dc+Lo-Nq2Uz*Hg1Sv,Kj0Qr5Y}3Ux3Tw7[5X{4Vy5Wz7Y|8Z}:[~)@XHi5Me=Tl4S0L1M4Q3O6S4P6R0σ &mBhǎC(O 3>1D:h>"ǖl)r2O? :X;j Qʓ@^igbzfc(ٌ:?$:0qH!1y G@~! h- jpN,QYԢ( C~v\< W?Dt H@j]$) ,ޠ(\x/H 41 d0X".` ^^ ͸  ѝxw.dEL# 9.5 ^,3M (AHpA "G6A &1 1@NV4KyJD@6@ lħ>@ @\AP@@H(#$HF'?<4~@r$䂨 !8UA<yiʲ X>Q@_1QzԢH$-1 `@&?# 8Ђ#qY5E/nq $,Sp1x8#1 P E(,q%,Ske{ATC)GlvmPxjQZbm/ $bы`  Y2K0Oַ}& >8/1+Pa(\aGx?a `0 @| X@0| %&D!aĈ.0P̋ClZGq %Fq F ŏ" '<I.hQ' U#,H61"ּf' B8\Sp0Y,""0(b.-FY4 E P17y A C#d7K:Ү~/'hU0u"^##r!D~8-Mٲf7mD{$\LAX1@]ЎtRܼt" !0qbM`7o F^bz0^Btu{6vmm )N"bp\p / AdobedF]    1 !Aq"BQ2#$4%a!1AQaq"B3$2R5r4DE&6 ?<5mqc@X0N=ZUI4:6Yq5f ==Zљ/#&&9xIjV2f!&9x;4#͉4b4ZN| }fs _a^b}ӌTXwdqM @/s{6pӝ)QJnetu$kDk"{Kݠw|iQ[kЮXsr9Vw2iBu(w W2zsQ~.,K=9 rCǮKkhzeey#6 AU٧-ݔ+rqCխImpui16Osŋc ߢw)1Q)Bq@WN&Wknw7W wCsclnz{σU9`g0 ؤytlFP Z8&D&oB4#f/:DCip߽zW{dDZ+S#+CoVg75:xUtjStk@=VO!%S3?6Eְyщ4b4ZN| }fbP\j#UHQ=!6Y{w[y$_Z9~ĶOlmVfy<ֹ@r"wfu'VX  }H\,- \A!2&q% ![L-a`ԯ3oD [|2 DcQLZNqHZ+D b8ejOoke(2@L :wGK՗K#)hnCwu=Ym5aeM[q2О3]2E:uH}ۘtQxw*c+?*7Us>~KpOOMQ'q6uJ9E c6r>wPmdi%de~G,%_MJۂ J=}bi.}8J<pc(AoXtߵO/]1 E`dk&sPͫ$DPwU ?*f(o Ydb a52+d?ے݀pkj$/fy1>^IOc@X0N=ZUIBfp'ˡ$J$ w9iYY:ֱ,9qǤ5rCv2۟#HZ5U8L{çi݄)֚GR*N [ ߻s#/mЄZ 8NdHX:lv*!^zE6X#GhJ'\o=Gf/vkJԮYK:mi#-rk-z{0ڧSV3>GɣW1 c oRzkeDvԶTph@^֑$PԁB#Cc3{4$9@[C41cbk+sÝue sW/Rz1h})pi1ӎ6qSTxi3ķ9v7莚:>p!PfMNt[\rF.p#7h([d~TGA[1 Tm Z Eglt 7xՒw_?uQ~?\YulmQ %pS+5(,u:*}CWk›j~>[|-o,Hm 4i<s6I^bb}= -X3'h nY$*94 ᒗkdekpƵ% e5I."(7xǻJZnMj*Un-Y4 *p[Rv%,0[J_mIYҾJ \;ԁ7a3eu<6 WtJ Z^<-H?E-WUtM6r{Ȃk+XYմi2R7xGck6Xm21(ʩZt˄7* &YqJkb53J<\DCǹO/wUW_A斗ңE\VxFo~{\yFb}= -X3(nG}y"qc/&(%l7/yeͷt fݩVEqH7"e ~RV2k͗2 yh( =ɢ#qh~jϱ񞊪H7UzG4;{vv zĉc m [yrN#F"XEփ5^T آ#ۦIZ  o@&Dz@-BsжzRtqDzeQ>.qt7.Ny|Ι.}-`f_.[ y  *l3 8|D{sbjA[͔V"di~,V \ q1I^O؍n P.rGQDIk[.|Z4>!O41"RzGPN-]IaԌKG KP_Dww`wP>duu,ǭ޺t/Jk>T-t6)'max;5u'Ջi8i0,rqh oN x`erI]FifBhkB /K_H|*?$ݭK$J1q{q6l\J; ԤL?}g 5'OZ6`Cա-2bcXhDF p幻+p2ѭ~1ҥJWƶ*R;kQIoZ=NiҒkCNq_4&k} %c{B<ؘO_KV/sEݠ,Fa'*f },8~g l̗_fzB$5fCf3IzZ{youker-assistant-1.0.1/qml/img/logo/Manufacturer/ENNYAH.jpg000644 001750 001750 00000011003 12312451003 023757 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!qAQ2B a#"Rr3s$1!AQaq"BR2$DdS4T% ?Ǔj-qW&!Lf JIn=Թ"M=R zzJ9$I˿PL3H \ѦIE˰w|S*}=~3Mرi6ʁW&!Lf JIn=Թ"M=R zzJ9$I˿PL3H \ѦIE˰w|S*}=~3Mرi6ʁW&!Lf JIn=Թ"M=R zzJ9$I˿PL3W U]QI!2JubOnŁ3( 6mDtF9~l5šFf}-CZ "O޼drG^8p7-;uޝ0#zet ∆ku&Z[DcQ1GrF|ܮmKKQMP *>վss!3[9 VPshGi7&-.%_o6+rA梂1agÂ;roFZu*10.n?$޷E?nִ:\*~ -.TaFT;W8K,*}gK~9v_)(isX:Z#ui5: e/%_{C_0c5k|^'c:>ާ„ジ6[HG9U1nvR'SiNQ=Mix~?xx\cJ:*dhPY>Md}F]/ŒF nT&wJSaANfKzPצ0<}(j;mQAHa >奜|?Gŏ1MC?&:-W?< hx)@5^\UӺu\#I9+r 7ղ~ߞR[='& #cF(4Fz FFV~|+kET bvJz}T%ÄVlz*kyؼBfY?FLzA}̝k V\$L/,w6}%n73-W+:L1Nixd28O\[i&ScxKa27F{ x¨zt[mJ7k}BU( Q;w7t}p}*1.Fq>Uꊬ[ kWCҥm{Y3#7/䤑d>*Љ[^9H KklDUoP\r&tP#m7.,pK psY?WOrc11ͮDaTzּ7*g2\׵>v?G`~ 5WbŤگ*k <@y Sqb%P*Ux4MӞ0^LMnnӇ=޼ξNyk{b30.h;LsZ#EaQ5&@D.WRX 7 AJwo<!l3Qpee|0qqG"Z;^ܭ;Y- |?!>ִvI Fbl. ELi]ѯE2D:^07M$D|KVa#rO U= }/:-|a{{&C\ia&NYY-LkSE3.s $:v;mq(`gq4J6V=륾qU' c̮@PD"!XgH̆`>'!1J5.UMF$9ퟠƣAH5F' pOXJ2q [0,?mntGMvEU:cs{˄}#Agavũ& 0z{GE09cX󋑞2Z57)t#.=]R]}QzV+._g^ߠPNcĞ+&v'-LA*$Y`HMnEc5sUVKx{vk c ⍮hۛSENLj'Yzmz*kuرi6ʁW&!Lf JIn=Թ"M=R zzJ9$I˿PL3H \ѦIE˰w|S*}=~3Mرi6ʁW&!Lf JIn=Թ"M=R zzJ9$I˿PL3H \ѦIE˰w|S*}=~3Mرi6ʁW&!Lf JIn=Թ"M=R zzJ9$I˿PL3H \ѦIE˰w|S*}=~3Mؿyouker-assistant-1.0.1/qml/img/logo/Manufacturer/KINGSTEK.jpg000644 001750 001750 00000012022 12312451003 024216 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 q!A$Q"2BS4Rr#DT% dE67  1!AQa2RqB4T"r$dU#3Cc ?>?a>lHbǓ P!30C^)PfCp`zs )81V -`e!8=XR ylJtxP0z3A3ĉ(y0?/41Na˜5i7>p“a . X9Յ.pgĬ7@ҝ@7pl]VJfG,r?l֓JQ2:]>YN)le-Mn8XҲ(̚4#2q4kqpzVrem :f-7[.9Hn=xxprNSf3O]q5rXźRc6J*ǾixWH԰9My%mp?D2r0T815w:;\Ig"5QRT4h 1,oqN7k&7 'xtawBʊnJ^lWGJ\lp iq!i1ۚy9]E,dTma q_i13˖khnM/gn]?XG!7z~|[x1NY]dg>nhT0mjo*_P*&i#=C Jƥl7M p_?Vp[lJ8eYc판dMd T.D-&m*Ӵth,&wIe+aU JY/kzי!d>~HqGhP#UDNo"*weHL ,qV[Fd Pv'HTv`X(r6 +L`~'DRYUTΧ %4lōwvW|hvhM $11Muw6s=ea;6kYSCh3#ye=Z#9~2O ߷-9Y1<^-~'ۅʠ"@,$SNt7' uroV &ߵ}Zj`6WIrL0[JCuE66[9=<X)|g%5 B3f5gȟ5PXŹe2)yYI!Γ2Wmհ "VKp@vPM8au[r7&vJYU~ M5e64Yɤ;|-V0ˬ&v${> N%KM%8^t}< tN=4!@ç)Aqw}sh.i#<jshnXTPN߷_dXrcȋW1333"LCѿ&'pyZ﹊{ie;za;KѲi8(C4g@6Vvp<`hN!ABp8qO*8z/ [ē k $8Al[R@[Il*k-13^ {DjGGa"1)Xily=eWPZY%RޑXZEw7-nYa- (ljrlz3[? )"ux`8o`%|qUNd;~MT2UƐf1ơ5%QWMM$ YeT,A$"bDi2_n+leZT{1?6z,CUqYu2˭MUMF"2 䕝ɤx_yd8btN$-܋3hV2kJ lO~R؍ړLs'" m+kd8$o%2ຌVcow{πL>=u/4{a=wؽ;Wnnճx|q53·55ssC+<7aOktFX0z3A3ĉ(y0?/41Na˜5i7>p“a . X9Յ.pgĬ7@h?a>lHbǓ P!30C^)PfCp`zs )81V -`e!8=XR ylJtxP0z3A3ĉ(y0?/41Na˜5i7>p“a . X9Յ.pgĬ7@youker-assistant-1.0.1/qml/img/weather/d4.gif000644 001750 001750 00000005320 12312451003 021341 0ustar00saucysaucy000000 000000 GIF89a008uۺ选܅ڴߗإƝӪO⡰8t9t7p:uz=z=x8n>y?zBA~3bA|A{B}DC~CDEG?sIGCxIK;iMOMKTQJx[VUGs^RZ\cadXjfjhfkfnmkprmspoolusrqyvusxvq{zzu}|y}߀〳~儷]耭tp瀛>|:tC~gltux{{v}݃ဳ߂◱۠4}wzsm{侢`\WJj$߀QӗzĿ!,00Msԥ*\Kicp ŋ3jxQ 1d"ɓ(S\$1`!̛8s3'1`ʼ(Ӧ̀H*]ʴR5e`133GIF3X 0x4nи1ݺteEb7lfYf]k}.rᬑ kh`^ʈBڋ83hp9Nf8'yS۵ܩC6ڣ! δY ( 4@l ^! \2!^ `R&q@p"> 8l T`Ifzy$B ֜1` "(d= @ &h4v zà*b!(^A&D@ XPp"=P)0 Z2,#+r%x`m饷"H3wrJB ,P4l#0X^ >@s=s-d0/0  ^#D+M:P:"sO< X`A,! P ͐*> A.̹A 0$=!|.dpgl5$^Pc,`)` 2$C64MA*X7 8N {.mܠfr&D% zšN{N='x-pB -ThR2xgϿNP~ *P %b (Xv*'} }= 䟀p2%\>Dr)  +<0=ޛJp< H$pO'6ѾJ )8X& j'Ї=֡ 2AhH p&t0CT( AAu 'HR`B8vA% WD'Gxa+T%PGx@u(`NvA!>1}6DGEQB!4ƨ(ҏd(BP`c E'ILd&OD&F p%*HAU8)VGp/1l%<v*MR* UȢDJ1,XTBЇ3* *ֶp7t! mHb-f }C?F6$sXFd'[4EЅ.;B [\vTG;! ͊pf1m4aM0.la #H.;\_ AH"a UF>O8prLa0PC1;Cx.KOE01L0paN$JQhp4Q s$M`O(a)$C 戶Mj[ӆ+DRMrVF4;youker-assistant-1.0.1/qml/func/common/ButtonBehavior.qml000644 001750 001750 00000001570 12312451003 024024 0ustar00saucysaucy000000 000000 import QtQuick 1.1 Item { id: behavior signal clicked property bool pressed: false property alias containsMouse: mouseArea.containsMouse property bool checkable: true property bool checked: true property bool triState: false onCheckableChanged: { if(!checkable) checked = false } MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: true onPressed: behavior.pressed = true onEntered: if(pressed && enabled) behavior.pressed = true onExited: behavior.pressed = false onCanceled: behavior.pressed = false onReleased: { if(behavior.pressed && behavior.enabled) { behavior.pressed = false if(behavior.checkable) behavior.checked = !behavior.checked; behavior.clicked() } } } } youker-assistant-1.0.1/qml/img/weather/d17.gif000644 001750 001750 00000005552 12312451003 021434 0ustar00saucysaucy000000 000000 GIF89a00݄෿̽лɧ“䅑ƫòܜׂၯ∴4p7s6q8s;v;u=x;r?zA|@zB}E~HHt_Fnnqsqyty{ރ恱ჳㄴ䆶唿邡¯ضҽ0q1r'Z*_3q5s3p0i5s4q5r4p/f6s5r7t6s8u9v8u8s;x9v7p5m:w:u;x?}=zyA~?z>zA~3bA|A}B}B~>v7iCE=qE}CzILOI}PCsRGxFvLFuVYQIxUL{\PHsaZcaR~fd_hkgdikdhkpmZnrpsrrql^wUzvvx{zyہ|{~}߁䀳yׂ䁴\惶g߅ㄴ⃳lfttyՄʢҢܮ6tAtDwooq߁⃶サ⁴Ĭն!,00iS$ .atYȰÇ^#ƒ”1#L0`Iɓ$`R eȔy&̛8s 2JP.gb r3d̔;CU\fP:ׯ`~Qn 5k@TkcAsf٧s5ġ-Y6iHrihh̹3 6pjА%K()#'Z/4jHN8ii3 S 7Zy@܃s)iGNuggsËccϛ>Br&LHAJ/lΟ( 89^|p LYdžv!vh푓 RH0A*@1~C9c!y1P@&a-ATD [!PH<@!nxqLƒ@)e 0 d`IH! f!6H8l#+P".F0{fxàPH"H^p2s=^y \(p*5͵d>9檫 X L3c 긊"$,d'^` ,l*H#,2Ƥćbb`)ޫ"6,2p"/"bB|S5*Og/njpBWv7o]嘻IB%XK6v3J}:g8 b $ #hR.`3=|p|zΎC^3@ P b{W. _޸o5|?81 X (?&3.Ql``:P >1qc!Ntb_' G` d<E1.AP?xЃ':"5HbmYЂ!p#,%Bp+h XУ UG>0GqE&FHBA 3V3HQ"(E)2{3ylbHE&aL"(E*HXF7as`2(*TъTx5 8E+HLsDa8#&qLUȄ#@sNF^1M"d+-j!VZ+C #⯴@G' kPa%ktDajV҂E(&HDA$ ^P$sL-$1 mS\_ E< 0'Pqp.VA 1D+|P? ]08B0tLtBjE滊\\E.\ *0 Qq _7G06 "GS| b.faD.яD!@10aǴ y\@/a 1Oa~/9().uGH cc34R(HCыuŀ ܂A+-Bq*Dx%\u\(2ց \f/B h ȵswD/.K^i@c .P1Qp2%,e@߱d|@F3 &Lc-VhtP.;V.nm&0a Q p#pF;wHXF;i8GwGrw8'x4! g8 g4HB4h8F/ҕބ3MoɛhCN?;youker-assistant-1.0.1/src/messagedialog.ui000644 001750 001750 00000010475 12312451003 021300 0ustar00saucysaucy000000 000000 MessageDialog 0 0 329 195 Dialog 120 157 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; OK 10 6 26 20 33 6 26 20 20 50 24 24 border-image: url(:/pixmap/image/feature1.png); 20 80 24 24 border-image: url(:/pixmap/image/feature2.png); 20 110 24 24 border-image: url(:/pixmap/image/feature3.png); 50 51 261 21 <html><head/><body><p>Add kuaipan cloud conf</p></body></html> 50 81 271 21 <html><head/><body><p>Add file and window manager</p></body></html> 50 111 261 21 <html><head/><body><p>Remember user account info</p></body></html> 0 0 329 195 border-image: url(:/pixmap/image/dialog-feature.png); QFrame::StyledPanel QFrame::Raised frame okButton btn_close btn_min label label_2 label_3 label_4 label_5 label_6 okButton youker-assistant-1.0.1/qml/func/info/InfoGroup.js000644 001750 001750 00000004500 12312451003 022263 0ustar00saucysaucy000000 000000 var logoNames = ["3COM", "ABIT", "ACER", "A-DATA", "ADATA", "AEXEA", "ALI", "AMD", "AMI", "AOC", "AOPEN", "APACER", "APPLE", "ASINT", "ASROCK", "ASUS", "ASZ", "ATHEROS", "ATI", "AUO", "AUTHENTEC", "AVAGO", "AVEO", "B&DATA", "BENQ", "BIOSTAR", "B-LINK", "BROADCOM", "CANON", "CHAINTECH", "CHICONY", "CISCO", "COLORFUL", "COMEON", "CORSAIR", "CREATIVE", "DELL", "DFI", "D-LINK", "DTK", "EAGET", "EAST", "ECS", "ELEPHANT", "ELIXIR", "ELSA", "EMPIA", "E-MU", "ENLON", "ENNYAH", "ETRON", "EXCELSTOR", "FIC", "FOUNDER", "FUJITSU", "GAINWARO", "GALAXY", "GAMEN", "GEIL", "GIGABYTE", "GREAT WALL", "G.SKILL", "HASEE", "HITACHI", "HOMKEY", "HP","HYNIX", "HYUNDAI", "IBM", "INNOVISION", "INTEL", "IOMEGA", "JETWAY", "J&W", "KINGBOX", "KINGFAST", "KINGMAX", "KINGSPEC", "KINGSTEK", "KINGSTON", "KINGTIGER", "LEADTEK", "LENOVO", "LG", "LINKSYS", "LITEON", "LITTLE TIGER","LOGITECH", "MACY", "MAGIC-PRO", "MARVELL", "MATROX", "M_AUDIO", "MAXSUN", "MAXTOR", "MAYA", "MEGASTAR", "MICRON", "MICROSOFT", "MMC", "M-ONE", "MOTOROLA", "MSI", "MUSILAND", "NEC", "NETGEAR", "NOKIA", "NVIDIA", "OCZ", "OMEGA", "OMNIVISION", "OMRON", "ONDA", "ONKYO", "PANASONIC", "PHILIPS", "PHOENIX", "PINE", "PIONEER", "PIXART", "PLDS", "POWERCOLOR", "PRIMAX", "QDI", "QIMONDA", "QUANTUM", "RALINK", "RAPOO", "RAZER", "REALTEK", "SAMSUNG", "SANYO", "SAPPHIRE", "SEAGATE", "SHARK", "SIEMENS", "SIS", "SMP", "SONIX", "SONY", "SOYO", "SPARK", "SUNPLUS", "SUPERGRAPHIC", "SUPOX", "SYMBOL", "SYNTEK", "TAIYANFA", "TDK", "TEKRAM", "TERRATEC", "TEXAS", "TONGFANG", "TOSHIBA", "TOYOTA", "TP-LINK", "TRANSMETA", "TRUST", "TSSTCORP", "T&W", "TYAN", "UMC", "UNIKA", "VIA", "VIMICRO", "VIRTUALBOX", "WDC", "WINBOND", "XFX", "YESTON", "ZOTAC", "ZTE"]; function judgeName(name) { for (var i = 0; i < logoNames.length; i++) { if(logoNames[i] == name) { return true; } } return false; } youker-assistant-1.0.1/qml/img/toolWidget/hover-enter.png000644 001750 001750 00000006544 12312451003 024002 0ustar00saucysaucy000000 000000 PNG  IHDRs( D pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FIDATxbO,_a,dx?y6{?if`$K/bp/Ynfyg4ʉbyϿX>}']˗G_K'-aaA 0C,*{cUNO~'4Rآi])?gOC:_ZoBlEŋܕA0 Fi/\P I`Z޺4]w?KSvwmFFAj7>5vҺ?5>h&N%:gvboԇ#! G[ P~n#9ȯLiN;\BCΐ$rxk dؓ#%g| jG^ I ]0 CZ0u'c&DlkIׯ p%LWL7^0]םˌ5]`J&Q`vr#Ln^;su f(;֖׳+v IENDB`youker-assistant-1.0.1/src/accountcache.h000644 001750 001750 00000002414 12312451003 020720 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef ACCOUNTCACHE_H #define ACCOUNTCACHE_H #include #include #include #include #include #include #include class AccountCache { public: AccountCache(); QString getPassword(const QString& bareJid); void addAccount(const QString& bareJid, const QString& passwd); void loadFromFile(); QStringList getUserName(); private: void saveToFile(); QDomDocument accountsDocument; QString dir ; QByteArray calculateXor(const QByteArray &data, const QByteArray &key); }; #endif // ACCOUNTCACHE_H youker-assistant-1.0.1/backends/youker-assistant-daemon/src/policykit/dbusproxy.py000644 001750 001750 00000005373 12312451003 031116 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2007-2011 Tualatrix Chou # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import dbus import dbus.service import logging #import gtk log = logging.getLogger("DbusProxy") INTERFACE = 'com.ubuntukylin.youker' UKPATH = '/' SHOWED = False #def youker_error_dialog(title, message): # dialog = gtk.MessageDialog(None, # gtk.DIALOG_MODAL, # type=gtk.MESSAGE_ERROR, # buttons=gtk.BUTTONS_OK) # dialog.set_markup("%s" % title) # dialog.format_secondary_markup(message) # dialog.run() # dialog.destroy() def show_message(*args): from dialogs import ErrorDialog title = 'Daemon start failed' message = ('Youker Assisant systemdaemon didn\'t start correctly.\n' 'If you want to help developers debugging, try to run "sudo /usr/lib/python2.7/dist-packages/youker-assistant-daemon/src/youkersystem-daemon" in a terminal.') #youker_error_dialog(title, message) ErrorDialog(title=title, message=message).launch() def nothing(*args): return None class DbusProxy: try: __system_bus = dbus.SystemBus() __object = __system_bus.get_object(INTERFACE, UKPATH) except Exception, e: #log.error(e) __object = None def __getattr__(self, name): global SHOWED try: return self.__object.get_dbus_method(name, dbus_interface=self.INTERFACE) except Exception, e: #log.error(e) if not SHOWED: SHOWED = True return show_message else: return nothing def get_object(self): return self.__object class AccessDeniedException(dbus.DBusException): '''This exception is raised when some operation is not permitted.''' _dbus_error_name = 'com.ubuntukylin.youker.AccessDeniedException' def init_dbus(dbus_iface=INTERFACE, dbus_path=UKPATH): '''init dbus''' proxy = DbusProxy() return proxy if __name__ == '__main__': print init_dbus() youker-assistant-1.0.1/qml/img/en/quickscan.png000644 001750 001750 00000020231 12312451003 021773 0ustar00saucysaucy000000 000000 PNG  IHDR-]tEXtSoftwareAdobe ImageReadyqe< ;IDATxڴ;KAϝB >#'Z&m? !Db'Qf;3٭}4e sڹ(Xmjw嬢fX8-"h !$ o|; R.Ajc$v ,{m2D(2"n/],P?Fa[XMxM`ʰFF$I(!P[kLݿfN ]Wn71Ira Tk="2P _1"9XFc9A&EˬS "뜿 !>}0ow_B0MRp2mdgѠ   \P LE,4r@-`fԚb>^` N= d8XY8h83d`dϠ)o|% m'04Nd Tgt 0YG,(R]A9I0(*AL8X.?T2  8@#I-+@?8ձPW Ea<}SVEHSCP-Z!d4:-i QTBKfX;v]+7qx9W>\4L* KᎪs6^s$PQS" u 5I,eFLn=kAUmi[LV$+jDMT/ IHBABxD^bgG#\<uR^ !;T.Gm"7ǪGT CpK+%ILnus?e*T?֪CH'6'bX; ,-"l#'?6- ŀc-soD0oR؟*+GRxvƈ Jet[hr`,]WuƗM&Z6W/$A&7+c!ڇ?I)P_.Ma>3V%lQ .]7JRnFAjK%C1?{MIp3ܐ3&91o٣/79g@)H= u R&5" μ-pU & hTԊKsN:lWJMRHrIh> _xUv,lO3ڋط8^:)lJoDfs$Um? )4dx1/zKZ(Q #Jta(_'Gfv<|B{S;Ρ\ѧΌU,%ƭ4wfD˝!yn,Vgt B:Z$ey:djrWNT֙lېΦpNtf@J/O<Fv Ac4^o)gBguhTLg]Ϛu{8s@hǃӓ-ȪCiTE9w=z6!S#kiN9=3zٙg!gq9(7 :(ZCǭ{FZ*!Dl̬8>֕-4WE!CB*RDQ""[N%t{t\i lBgrstR#1)Z{0kuqQw_ִڦ5`}hU/`E}ZOA1Bb_ RK#ژ4M7&kݛMrw;vc3wf7gΜܐφ^Hr­I{c:O뎵ɈYAknCӗFq3S^HbuoG/:Nu {DL^Ą)Ī u[lVɚ([ԨęЅ&z$bFPm2-_O,ςyi2B[X-5p{+Ly.)PP,c[AH,n _0'& O5oaQb6QKhԕ!&ԀL:)Y'A[.JN:ᵵ: ׮ svo~z|py&1>l l{) >}OqchnD}c0=Ҍ#tou;y򳦮~cֱ}Olƭ7yѦuKC.5=rp䗙, J(xBVu^*)YYdeIIQ`p~zY|uGobz}߼~}fsxӘfp LNM{sS9A;[{Drj_Wqroyyn q0ve<'}9_<ŋaDZv:=Tqb,\v0lr_ʥ;/\:5/Ё8xf=vuKɎ7qe"{YI2vvDВ Q!wũÒsvν.ߟ(jq._ZmgY4 2Q˄oKc5ZQXV9XazocÞyAs|y4\L64~huZqKdE!&JHw5ʉtlf[*XM XĉXϟA-Vfmg5ѵj @JQdЙ<ձtbEAl&$FzI48$V)&B]o}l֫X4AoIi%1xϓ* A;_D?51's-v+z<4Ysc :CcAe+ v@5~P&w >_ |$mw7U 3:!A5z@ӻׯe"Prlw=Uk%֌&oQTavB b )F" ?HhD+?jT0 Cy#.h1-}sζH@6;;;{73yvj*;Ls2*AB*yY'\Tf&]|,e4j@_ !-ш-/EY%?$ЉDc\\T 4i.[ = 2ǓB0CkѢ^/HOp2ryiÈ>x<ݡDrׄO;;r.2 u+\WDF$VN+eQg>qt&*KȞ zwl7W.7#,Xp %YC6Q>N)ď dS!sFDZgeVJ)R\~?ZF G￐NtqBZpQp9M "ln>Zd:{4Q@eă/s`OWd*n\Ƽc0ˏ'p4 ?~JsBG)#A7M \`/֝ 7M<7edN\1R('A͙zy^0Q҈W݌pXن_NWM}];w&l^O6G,H6bSߏt:KlsC Be[{P'շDž T)M_ΙӿX:Ne803>z^Bٷ}2|Qjyfz {OmǠk }㩩6hD,;N|lPʷd>k 5l=~h {36pc5&c嬏TZkbbMX鮷TNL-Va98 жW@,U}jt W}JNoݺEİSD́S;2 ^+Gz9Lǘq&5{LZ?Ǿz\exaǃ(pH/6LGIY#ְb:h{edD/^o|΋C r)ZΑsMI.F>?bH&;n>.P\+?N}OCCQ?';ؘ6FTh Q TL8pf;b`Z m5o}Nŋ`-6[CƈrS7$FQM[gƾLQ-I;("Rʍ MNMf: P-hY@j2s) Fy'1y46U\5DU5dƵvWIq]tN ƺ,VԥVƹlz ܱ%:nkCs3xRS\8/6+Zj brj sې AyIԊ1(v?6?UiTR KCSX7S#7GAwmT("0?cBD-9CLtc,+0S'z-\XcEy ˏO36MT5N9ȊPSt*`mX_EL̒dySLrIku~zWd-z%""~U .*`EB)XF,}Y!x0+<ȳ'F AHф { ~͢C:1$ּqIʋ (ǃ^ه{܅3+#=1>tƔbہpɔv&T-o `fR~ by^ڋ,8,N14wP=u4< */ıhhD}G8&onfjL( Xh1-؃n,vAIla̯U|Ol7bv>¸ ɉyP-݊)$Z˝chِMJ uGҹ&:@B/2q2# Ye$urN9Ԃイȫb9E\}ζJ?N 7]Oae8s'W­hy?쪥oO\|xZo"z{MxmRo?fV.IJ=(&}^?,*&6ۿycm~?ĒqͅwbQr~3;D+m4z-U(S:+ ay]JQzc[ӗpςo݋޼(f!NnoVyi t|:SBy/i\ȏ5)e>q<ܲ 3fGdm|NԜgAYPTYR6Ms׌dml5.>P'=rE3l{j,.oxBMyh$_?tn{l%CDY}v='\0YJBS wJ\=b< ;% iegح/\ --LV:]K\ GHf.id:yT:fDp\ۜ0Dk80;oDH7qq4nd+ҽ$eqQ&͙[X9J,pk8Gq\'$D^Q^bnqoD T-ErJP4GC^jX@" t7; 'pN͝Wy+v;#dMf(qXI]h}ũ9čLSY8_$N4ɛܚ;zb)^bx7ny9=?2G ꪅ'DҪLA>4o"4oBݺa.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:Y dD,H`UAPSl0P8md@&:8l {͖, 4J@P>403 (F,1 Ed AtuYg-b`2b܀`,`P@b-h0D dL~Jk Ա։8´FhnmJ8Ӎ:\>q^8ۇ+L9~~-^:>;F TOD dx7,Ai6(X~?; L&qD~u5[.' DYyn~>9P`G+Y0hupTaAe10 U5 Y #2@lhB"HZ2R`bۛPvlу@;&0S|( h0YJ_E,VJ& k o7CV1 #F\81G&+㻤",+I0n ֺɒul"&l4H$Sb-ILsa+ӸcUbD,7~-٥Gu>2#8O[= &˒Xu\$9dmqFX%!I% 3,F JgЅvd#35Z[( 0 44kM ڣR̗@ɑ|D!?L )Gvtb2F JXZ3᜘ 1d%y,2Z3bӈ .R=.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj 5l +ky5,8`ūXB+ַJ*4 0@vI A;'{+*@SPpB!L+@ [oPd6q( %@+2 \,@bt``3>CiЌ-9#,KgA6m8n9@] P$d"̪,`]#ͭRJuFB~m;sj@$,۪4u/ @X]2G@\5(pV`ylJc;{ 0;; 1@'^M < kdX{,%|7<131~3\7* `< F۞I  nD4H;uZ˙ǥxLc]^(>Ű_"xƬ?ˇ9!j1{3iZP JC2) `cW-bȶ BX+ X34YX 0- x\T/U.>D@7F!'IcWka`dD@fYpnxEđ}#osdKN풘ܥg)o.d18Ifb `Zx8}hEa%R4H$SP6k[0>4=@i@A5)`"l@3B!`𰖁$FЎgG13A&4Xp&fScFFhCa-@ub),!,ml$DPɀ# "R=6S 1uTX4EЬ ``JDe?OTH|=1mJ{ќl@~,ϐ4 k౶1l@FάYfȫj󰔅eGّ,gՆVM%Ķ_. @20= RSA:Ϟ8ΜM׶pؤ}t 3Ů<'cW, cn/X MZ.֧cT1j?5l*2HٶjO n їyzK{+>)9}_Os=pr=޳! ,xv HA|`Ç#JlhBI3jȱ#G &9qČS\RC0cp͛67ؐɓd@nlҳȋB*M`)JQFXjjDRòL؈ĪYiٰh5X]y ߨ-Ċ28)j'WzsXorCQfMQU188͛'{;|M0μCr]8Գ& @E )%ݗYqSQH4CidD `Dj eBф &Ѕeцm`Cf""CC&bb,~(RRэ+@Xb3:ģA@$$I#>.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨI3iLNjj:4䪫zP}Z+Dб뱽 CZPp,{e@̪x@`.\\(b!ʀ `ծXBIkJ@/P Rp[4A-(9 .d{K`NL A@#t3(Ϫ2+4[ۜ193&X/f5`5KKvF|k u ,0_s;7FO@SJqZ* }qm= SMt,${ƛ; @ @ }m  ^@݊ ,l. ``s/ ^rE^[_F e ǒ@w, `ms: d@y+4H5J FU,AZ8 _˗r>s/{ibW+E, wuEs](@`0r:bOkܕE* E]N,-("'Qw< , zlGEShS* l_䘫+ $Ljc1__/e2r d.@4ܣAe|/z*((=i. ٮ/rDTFB]pzE1 F\NdG?s]䙑c50ӗǂ|5H*%]\Wi8VжML HIR2D3w/Wo vKk_H릹v͂#"k4R "+]Q43XUT?ec5vU]'l@ڑ,$ΐWl(?FDSczع ەhePe㬹,E;VWmhL{H|Sm[ +[XNR"Uh+vfY-zT_D078@ ZuܕTX*sW] TW2g\WW썫5k]^!K4FѳRFhN e8VѦwe:}ovݷ]꣤tK3*x+\@HN<-JazEU5~!Dcrӹs]yv 2Qˊ{g"Vþ%Z Η$`1G2׾-KJ{[OZ/:Tu1vcc]j b^|YeX6 fғl]lpxMXI̩ K6&;1D kKl=ٵbio[ UJ8X[2u@ ʂ.m&? g(浒®=rďS Ѐ(6P@mΉAƬELY+?^pp SR XϺַ{}YAl+:c~ #eilO L8V4pf@$;.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv) se@r3믴e돓Z)qPa†d+&vó:`@*ְb AZ*Ѐ"a*Zk2KR扯/kzP*&04 eopR*'A SA of'\R/ Ё@=7`@j)m6\v vаw\yъ6,/3 0.kC:Y.8/77\xw$|W|*=SQ(0,?4/:2κۿV=#7>ԯ] !+ic &#`_u^ׯְ[4( kYe `%U _)gdAk:y *j3ă;,,/gAUZ ^ÈQY0=`c#'.( d:%-'ZF_Qi##@'1LVj~U.e@ҏ5,RGCme0>7 ̤;|Q+r鬠8+Ќ gJDa6pٰV @[|$k'dxĀ]P ^EGg-e3v; dѳc>N8Ld(9x˯Yo%1Mڅz^9QOu$ŨU" \ih K\dAUUTj?EU=|@Kl {U9ˏNNΠ_bl ؆Z5ê&:N2^ W1sr`1;< YA;(-% #p14M欠ڳ Py}[W{<8jʁ` a[K,T\]FW] CtV<+b]'[^W-l+7o 0)aK_w#b-YО ,\bldZdvEK vb xFQY&3y r] աf>us6~ <7 [ 2,[lQN,#vs8_stdFI>U!K<1#cj0V|p߹@i<sU=Kp$5:g`60< 磃ncP0X 'vXHA/Pe%T}}Z<1@TПa>E nqMT?|Iav,an@!.<X^;9h n9@KKhE11g{oԘ]vUǎΈX/u2#5 {`ؿvDg0 rNR.F+V5e =jsZ ?`lln/?r;Y4\?~䅒3)r 0À?z/L'+p^*SϽos聿b1>>! ,xv HA|`Ç#JlhBI3jȱ#G &9qČS\RC0cp͛67ؐɓd@nlҳȋB*M`)JQFXjjDRòL؈ĪYiٰh5X]y ߨ-Ċ28)j'WzsXorCQfMQU188͛'{;|M0μCr]8Գ& @E )%ݗYqSQH4CidD `Dj eBф &Ѕeцm`Cf""CC&bb,~(RRэ+@Xb3:ģA@$$I#>.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ A뮵A(yл拓'{+07K*;DA @ `(lrꯊKP @,2rdA\)@ñ@+Ȍ9. -ĈKA+g|!tF|kdcl,ku] s,b@@7`@j@0`\;6x,ۣ5FB~qmX,AKDZ ]*)l`2 |tKNnJ P: lA6>o D@kHo׳  f2'@ꑫcHP.GۻA؎\o&fYob4V,MX+$ƨMXlǪIeSɲ%X4oSAC. 3ϬIYMqĢ"816 NftԼ.\J93 іvcAbl. ̉UFG툵( z@6\},ӛʾ S&u|t 0x Y2YRԨ39yW<Ь0ϩ4CD K1#cXX" df)1V+hDLڀ $Ktl^{}j^]XcID4Q"u ]g++YC;&J" d~>:.a]y$NR4` U|`-VXv/bt*S[r]h0PkoEEVS"rp ZV4ڌ (\@2!!9-%1[>\ 4+["UV>Wc @)<cn' @X8h/:9 ps)4p1F _v2hg72„.|tnx&= `+\!AUf "@@5f wbڮ d P;:.'];*1 .hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&C)1]=#܀`,`E00GZ }qm,A:@y\Xo7>swݐ @XA P p= KW#c" @[kclv3PzI@cKA&]mָ  .P2A6[A*ͨ;?*\NG}K  ̎\~sY6kqObK^ akfB.%! Y[q!$K hF1KV`3rELe R, h8|aF@>vQd HF&Bd9k@2Pl} ZC@&* ~&Â^4"71"KjMTfHѬ:li㈵X("8G.Mmځ< HֻcM!UY`v\BĒx!>OnETX0@,:dY(JFB.@X [".1Pazhhp 6%fBڽљ#9hbLmcj lN3>K$ 5ʉ9qk-}Z99Xt*@?HLe3CRw6`CHm@ Qs">Q4B@] Jd9"& @A%T@UGZօ: Tc@^+@κ[h03$ Wr脦_#CFQjvpĄ.6"^G8XlݡH(asv)uʜS)7ѴF,#V$foX'&iP `2*@1bbm2 *|f7U}tod9;N>*֦F'GT豌 e6184bըnĭ"b[+P|-YCN o!PgLOB51=xB Ž 2(%\!y$C)͎^uI&kd0Š@8Z+GLM1c%.3UTCjLe_?I@/XG2j"Xb KvAkrz_XK fњY&t;rс{If1q+`(c]| ƶΊCQD(5!ص*B0a[{u61z?7g}#hék"1rLo%`4|s|8pN#3X0|ؖO+?^_1E` -Mjp11x _4NG[-*,`r!&2CxU7& cڨ _V?UB|T^rѫ3\PO. ~wK/{L*! ,xv HA|`Ç#JlhBI3jȱ#G &9qČS\RC0cp͛67ؐɓd@nlҳȋB*M`)JQFXjjDRòL؈ĪYiٰh5X]y ߨ-Ċ28)j'WzsXorCQfMQU188͛'{;|M0μCr]8Գ& @E )%ݗYqSQH4CidD `Dj eBф &Ѕeцm`Cf""CC&bb,~(RRэ+@Xb3:ģA@$$I#>.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ <%kImb 4,@ Hb, L{gCadȵRQS_⇬ 8^]txB *r L!`l`@ w,0 e`EÉYykȀJr("m!#F2hPh-C@jX3 , p8~G` $vD2=LV"P@E#[iEZ %8MD:3.eAĉq& ]'Mdc!E!hHYYgn!5 É_~zmEϠ:5Jډ3P~`eÂ#^+Skd@Ձ m%[8S]+ Π [e@;n$'eS~(-)0p&ɚjT`Vb[#fho'DPF#j-\{IdMLVP37 zvЃF& 2.aq&U /p5ܖd3\`{L~3) V " IqTfvf_1)n M?l(0DP`@(NS<**U7S!+ljV$Lx+dmpsdYW 7uR@w#F_{XWx|@ԅ7 )8oT# *1S5qdߦl5ˀ,WXlJr$+m\XbP$}NYL#Fer=&#f YPi^yb{%ۣ"Ci1Kޱ\, !z@!@@90KLЃƈ S.xf CvkZ|R%4X 6m65'o!g DxkSp%FKkQh)Y3/oqb~FfП dH17k(#V` ~`- @Mm'xw@y6rSZR.bh%i:/OI,-<<+ugy^vnTE\7WVwܫ4ZH+eik*q>(ƌ|xk<1y{<! ,xv HA|`Ç#JlhBI3jȱ#G &9qČS\RC0cp͛67ؐɓd@nlҳȋB*M`)JQFXjjDRòL؈ĪYiٰh5X]y ߨ-Ċ28)j'WzsXorCQfMQU188͛'{;|M0μCr]8Գ& @E )%ݗYqSQH4CidD `Dj eBф &Ѕeцm`Cf""CC&bb,~(RRэ+@Xb3:ģA@$$I#>.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`V j (=uqdO<&IdqUZT F24-О!: rHQZ p2 %$kC@!ii+Y*CGZ48dI zXxZ$#"V@ X"1Z0e  =if"2#j kPgv" F9e<ܡ[&AkAԎZY:1R6 LrԖXČA"@rlh ݱ3@)kt3oYF'@U@M HSH΂4ŲV ^$=_S%HzA4Yf`3X:& ]y)1Jj`'+Ͳ٫ZI@rD&);XlІʁH[l13>;(Fpd LVP!$ ;%n$,K0k-xk)#w41LEH&ԛ Р]< 4ej 0$Fp2Xl%Jج&L Sx +lH CV:..&Y@"61d .hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`V j (=uqdO<&IdqUZT F24-О!: rHQZ p2 %$kC@!ii+Y*CGZ48dI zXxZ$#"V@ X"1䠇2ȉГl&"3b&Nfx)u`q(<ҠB(4kaJ2s.s-c-h,I cg6`T$9;*@y,hH"BAr$@v2:12L-CjK,џ0.&cajCܵXcEu:eGz1e M1&+|_'V Vlj(" 8!KԲRSlUߪYhO{%hZvZGA/gmCUܦ.' LVȀ,Y+KU,mZcM2ׁ:LaH&ԛ5˃'PcSCY߶D˷f6HpB"c[YJ G,)@(#)<Ya{W>uoOu:[@HarN83) zlĈ*di4E Wé9Yq*I;J]X*rJ\ޱy2֘d/6 k&?0֚3W#665Yth壃J$0W 3PP pH`-wTzLZ4 $5րb"?8FПdʎk$]/&!@ #L 'd_+}I.C<1Z{@HMѤhS它u$92.%8MgL9[)k`槞\'xgN8y6`rm] @d\~~٬5:KAcK}rm|mfz`7ǎS7< B ڨ xO;־U@|R8x+^*O~-KQ ! ,xv HA|`Ç#JlhBI3jȱ#G &9qČS\RC0cp͛67ؐɓd@nlҳȋB*M`)JQFXjjDRòL؈ĪYiٰh5X]y ߨ-Ċ28)j'WzsXorCQfMQU188͛'{;|M0μCr]8Գ& @E )%ݗYqSQH4CidD `Dj eBф &Ѕeцm`Cf""CC&bb,~(RRэ+@Xb3:ģA@$$I#>.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`V j (=uqdO<&IdqUZT F24-О!: rHQZ p2 %$kC@!ii+Y*CGZ48dI zXxZ$#"V@ X"1䠇2ȉГl&"3b&Nfx)u`q(ҠB(4kaJ2s.s-c-h,I cg6`T$9;*@y,h^B(A.d9NYF'@T@>Ճ`PEuD%Qb0ϘSf:K#=۰zF& Sg1L8((%RV 6LEXubg_yZUǢO{+EӢ cȤ 4sTe ŶY9ՆDžJP 5k_ ܍rb ydu ˝bF&?5uIZҦr=;1bXv=P_X͎ o+ & 3o%(tUֲtI:Z ([uj5ӥDp.`L[0«*6RĪA[Eo/R;FfE)Zыe#'FT)sŕ7hύSicE&NuF/݃mXޔf>_Nc{'Z[pĈM&3|,.DZ]}t^Y s&g)ѥ~ɉ(/1@vTCAIi鷅!صmR PH>Hs,_@ʎP Q6-0A7}5fl Gy`4 [ l 3X2 t̓Wb ָRY5Mjp<8Ϲw< H=v)l 8K^6=)d m:NUG,Qw x_Bj}Rԩf3 nL=^;۶~Qhy/|) m]|x+䘯奒m~.Ap^/?! ,xv HA|`Ç#JlhBI3jȱ#G &9qČS\RC0cp͛67ؐɓd@nlҳȋB*M`)JQFXjjDRòL؈ĪYiٰh5X]y ߨ-Ċ28)j'WzsXorCQfMQU188͛'{;|M0μCr]8Գ& @E )%ݗYqSQH4CidD `Dj eBф &Ѕeцm`Cf""CC&bb,~(RRэ+@Xb3:ģA@$$I#>.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`V j (=uqdO<&IdqUZT F24-О!: rHQZ p2 %$kC@!ii+Y*CGZ48dI zXxZ$#"V@ X"1䠇2ȉГl&"3b&Nfx)u`q(ҠB(4kaJ2s.s-c-h,I cg6`T$9;*@y,hr^B(A.d9NYF'@T@>Ճ`PEuD%Qb0ϘSf:K#=۰zF& SSCUL8((%RV 6Lm=Vc׉UFiU>I@rDMmdl˙Zub[mh`H3u2Ԭ}jo7ˉ)4Dm2톱=GXF S.IMVYTZqk:XmĮQNJRovh8ʖiw+D'k6HСB)X LZMgt+(\01!8 =$ka!wVsdS86Y5.X)bAbH CKM9]1ZTw@$&̏ܠĒLNޱ).k.! <X0ik=*_FX_}t^Y s& bwDMk|?$F!d!4âU]kaƈ S1L{h Cvf0sT&?7m*,ݚ7 pnG=0A7}55bбv >0[@HMѤh ǚٮ7GfПd罖1"X/XKY&d fwGjpMKik*F {X84jY=^.~/y?0! ,xv HA|`Ç#JlhBI3jȱ#G &9qČS\RC0cp͛67ؐɓd@nlҳȋB*M`)JQFXjjDRòL؈ĪYiٰh5X]y ߨ-Ċ28)j'WzsXorCQfMQU188͛'{;|M0μCr]8Գ& @E )%ݗYqSQH4CidD `Dj eBф &Ѕeцm`Cf""CC&bb,~(RRэ+@Xb3:ģA@$$I#>.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`V j (=uqdO<&IdqUZT F24-О!: rHQZ p2 %$kC@!ii+Y*CGZ48dI zXxZ$#"V@ X"1䠇2ȉГl&"3b&Nfx)u`q(ҠB(4kaJ2s.s-c-h,I cg6`T$9;*@y,hr^B(A.d9NYF'@T@>Ճ`PEuD%Qb0ϘSf:K#=۰zF& SSCUL8((%RV 6Lm=Vc׉UFiU>I@rDMmdl˙Zub[mh@' iNRFp91h-@F&?5tIjZҦr=[2MX돤j#f]W ^, am49M1ZsTwuIG4lud'7Zd9y>8XĞMi0Ǻ)'e`9<X0ik5VI{{%fm'IV?, Ë4KN?$1t&%MqLWQAj filQjHsLnKKV7|F/FO޾VVFM t^-\?Sh~d`'̠? b,0O8z^jRb ތ|La/Sy3R @ЇN}Y !WXh*#+΀.^Pۑ鮺JƵqXy>h'Nud\ :nabxnyݢtOu`GP| = \Y̵E%&26yK|rou>*;Oy+gZEd^rFx]Н{,*! ,xv HA|`Ç#JlhBI3jȱ#G &9qČS\RC0cp͛67ؐɓd@nlҳȋB*M`)JQFXjjDRòL؈ĪYiٰh5X]y ߨ-Ċ28)j'WzsXorCQfMQU188͛'{;|M0μCr]8Գ& @E )%ݗYqSQH4CidD `Dj eBф &Ѕeцm`Cf""CC&bb,~(RRэ+@Xb3:ģA@$$I#>.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`V j (=uqdO<&IdqUZT F24-О!: rHQZ p2 %$kC@!ii+Y*CGZ48dI zXxZ$#"V@ X"1䠇2ȉГl&"3b&Nfx)u`q(ҠB(4kaJ2s.s-c-h,I cg6`T$9;*@y,hr^B(A.d9NYF'@T@>Ճ`PEuD%Qb0ϘSf:K#=۰zF& SSCUL8((%RV 6Lm=Vc׉UFiU>I@rDMmdl˙Zub[mho@' iNRFp91h-`3!y[=GXF S.IMVYTO5:?tG+]*ubkKɷJ,e#a8T4bݭdZ= þ=R 72uj5ЍDp.`L[0[, cd$y |,~s|ddi1b aAbȉ5 #,ϑpe%Q{ds.Gi)"pd'7z9y>8U8T9A~e9X>-ck}Xf[3Ғ g)iŏ+1 dnqz `ޱn_M !Q3o9LK;QAj0fe90ͮE|5FП"H.+|^6@OZ8 9t{`8r(\&0o`9ٽ̠?2,и_ R;+?^q #b,bY\ЇNDBmE.1@d Ƿň%j`Mf].hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`V j (=uqdO<&IdqUZT F24-О!: rHQZ p2 %$kC@!ii+Y*CGZ48dI zXxZ$#"V@ X"1䠇2ȉГl&"3b&Nfx)u`q(ҠB(4kaJ2s.s-c-h,I cg6`T$9;*@y,hr^B(A.d9NYF'@T@>Ճ`PEuD%Qb0ϘSf:K#=۰zF& SSCUL8((%RV 6Lm=Vc׉UFiU>I@rDdl˙Zub[z, !PU.' 0d%i*O-:tG]*ubkKNO( ǡ#n%(tUֲdDsS<HS|.t% 0~ ؂bqA=X$/ISNBE d-ձ:D/aWy WVq*I;, Ǻi} T +#;QpHnkU-%# D`f-bVh*YF@yid$'o=Zߞ U l7 !6:<%3ik5VӴ_ Dl#kVuB)Yrpb$d^0A7E@c1* #򬵎>JzG-w۬#'בgv5pM'B/kkX>#8;PӳP0׬RMqH%ˮY&X3qz6y,};h6k]I֍dCg`q Om+.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`V j (=uqdO<&IdqUZT F24-О!: rHQZ p2 %$kC@!ii+Y*CGZ48dI zXxZ$#"V@ X"1䠇2ȉГl&"3b&Nfx)u`q(ҠB(4kaJ2s.s-c-h,I cg6`T$9;*@y,hr^B(A.d9NYF'@T@>Ճ`PEuD%Qb3L3fRiHO#6A#_155T՘ȄÏ_"%`PJqɺvcE}YeXVUӞDR :%[I4Te ŶՑjo@' iNRFp912&mX#aZقLu$U-,4h.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`V j (=uqdO<&IdqUZT F24-О!: rHQZ p2 %$kC@!ii+Y*CGZ48dI zXxZ$#"V@ X"1䠇2ȉГl&"3b&Nf;"Y;CD @X (Tkt3oIDkDdqMl;҈,\&A|PlӃ l) ( r %NDщPE:p;԰h>iTbS@mE9 uĸhR-b=1˧Hu;]G H- (]#_qRPk`2Œl=dyɦ Rm:[iڏXtG N.,5.V{A @X4ې0GՆ={L1!x\4ȯJ,]?I8Jvܕ8Ҹ=HdX@baH`-;{TYif3ų@TПD|[A9Y$'[hT?`ɆY e.^(!Yan#>lрi#)SOm֑ 3 6Ԉ{ `{r-O˒\gN4l-n2MONзVd\?u2~٬6ѷ)hQw x_V o'רI:u݀f.\4deWvsmTkN_ H[vW{I1ⳅ,>`yL3/uG% ! ,xv HA|`Ç#JlhBI3jȱ#G &9qČS\RC0cp͛67ؐɓd@nlҳȋB*M`)JQFXjjDRòL؈ĪYiٰh5X]y ߨ-Ċ28)j'WzsXorCQfMQU188͛'{;|M0μCr]8Գ& @E )%ݗYqSQH4CidD `Dj eBф &Ѕeцm`Cf""CC&bb,~(RRэ+@Xb3:ģA@$$I#>.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru4(8nrWO~K9=x%'=H-aOzqtC @*E[Lrd<򱇎} : }nOx";l,oސXsgq!$(&?wd` I|첖$~ Ns_4b-MHHEqlC@ RPa֊b7DfCV,Jɪ8vENb!DԺ!`l`@ w,LZ,PB`Y@ @.bEo볁j$}HZ|)@i;3x rlAJ / տI~@I\!YL1}ԝZkd/ I zb4b ql9gWS\T3-'V T +g$Ay4nbދ͈1 _mGfkf;FVy`GD$2I>d\ o$K2ZW0');5b6gZ3[den#UW3 0@ -w'͑gvA,K\RƈX/Xz"N̸)N{ G,06&3q#<1omz6ucqfXŚ.hCX[jxer$The`(ex&iff%В5ғZɥ^dygGF| htjʦv'AzzԨIFv)ѫ.٬?Njj>A[ ky驹`Bm7$kʮūXBi8㊵-κ AT 'r&޺.>/P:.dD,H`UAxj`$, Tp/N3ٯǕ&l(M-7[jKA6m2RϜ̨`&CK3겈#܀`,`EJLtFB~qm,A:@y,A­\ @XA P p]2[Ru(J \=.1n~xsۻD`; 9=1w9>Kn|L*E[Lrt|%˰'@3K܀ٗv}q*KV a-E f7 d`ow,ypK{G2Kl].> 62QD~,Evӈha<k9h3@M{gS2WA!0; 9lOu$1Imb@LG10fjc@Ѽ 6m1YT!l#Ȫ@"dגC`XXG.]`{Z@D:0 L |85 ]<䱤5:ɥGdvD<ʰo48tId)bГDŃ(#©Đk~4"'CdDD>XcDkO|dFvZgĆELr:d䛐L#!zP%yPL: bth@8NFA'iPdWHt=SLg ț );c8'W!Uѫes'$GLmoapOc3d'V T 6Gr8"Mav'KV:BC(4Zq58  গLWAx+ dv/ɔIxMZo0GJHp{Gw $36Y]Z'iύT?(`Ɍ}ռ=N۔M2RS L Pqg2Wc\? hb'54@ `t'B s<|*#V` ~`qY`Xtǻǒ\gN4ςgy. */ #ifndef WIZARDDIALOG_H #define WIZARDDIALOG_H #include #include class QSettings; namespace Ui { class WizardDialog; } class WizardDialog : public QDialog { Q_OBJECT public: explicit WizardDialog(QSettings *mSettings = 0, QWidget *parent = 0); ~WizardDialog(); void loadConf(); protected: bool eventFilter(QObject *obj, QEvent *event); void mouseMoveEvent(QMouseEvent *event); void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); protected slots: void addLocation(); void delLocation(); void setSpinValue(int value); void writeWeatherConf(); void setLocation(QString cityName, QString cityId, QString lat, QString lon); signals: void transConfValue(QString key, QString value); void readyToUpdateRateTime(int rate);//更新天气自动更新的周期信号 void readyToUpdateWeatherForWizard(); private: Ui::WizardDialog *ui; QPoint dragPos; int spinValue; QStringList cityList; QString newCityName; QString newCityId; QSettings *pSettings; }; #endif // WIZARDDIALOG_H youker-assistant-1.0.1/src/image/clothes.png000644 001750 001750 00000001447 12312451003 021365 0ustar00saucysaucy000000 000000 PNG  IHDRutEXtSoftwareAdobe ImageReadyqe<IDATxbԜ00}z bʈiNn= {geV0>%$=3X8uKL,F?0|,{bԘrl /G' ׳Y~u;{i[.uDt#XFF?b 0G|v18O d/zjB/oFg37&F$cԙ+ 3kj%ƐQvXKT?KpPR?X şYx&VF&O-/ﷸp|&`LeddZ&O&_ِ3+ۏ33g nefgfDr':ϯߙY98Y8PQ[One3+s`ڛ?.yh#;73ϯ\ܭeWn:P8Ed\_?%n@4(%6(@"P=+@)ߏo(@! CPֿ?PLlXw6/j WEy p}^W4C&w)&PDdO%IENDB`youker-assistant-1.0.1/src/util.h000644 001750 001750 00000002105 12312451003 017252 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef UTIL_H #define UTIL_H #include #include const QString YOUKER_COMPANY_SETTING = "ubuntukylin/youker-assistant"; const QString YOUKER_SETTING_FILE_NAME_SETTING = "youker-assistant"; const QString LSB_RELEASE = "/etc/lsb-release"; class Util { public: static QString get_id_from_cityname(QString cityName); static bool id_exists_in_location_file(QString id); }; #endif // UTIL_H youker-assistant-1.0.1/backends/youker-assistant-daemon/src/weather/weatherinfo.py000644 001750 001750 00000020736 12312451003 031022 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os, sys import threading import urllib2, urllib import json from base import PROJECT_ROOT_DIRECTORY, PROJECT_ROOT_DIRECTORY, WEATHER_URL, WEATHER_URL1, WEATHER_URL2, PM25_URL, TOKEN CHN_CITY_LIST_FILE = '/usr/lib/python2.7/dist-packages/youker-assistant-daemon/src/weather/location.txt' class Getpmdata: def get_url(self, cityplace): url = PM25_URL + cityplace + TOKEN return url def get_data(self, url): request = urllib2.Request(url, headers={'User-Agent ' : 'Magic Browser'}) f = urllib2.urlopen(request) json_data = f.read() f.close() python_data = json.loads(json_data) if isinstance(python_data,dict): python_need_data = python_data else: python_need_data = python_data[-1] return python_need_data class WeatherInfo(threading.Thread): def __init__(self, sessionDaemon): threading.Thread.__init__(self) self.sessionDaemon = sessionDaemon self.weatherData={} self.forecastData={} self.pmData = '' #self.location_id = '101250101' # Get weahter forecast def getWeatherForecast(self, cityId): cityIdStr = str(cityId) self.location_id = cityIdStr threading.Thread(target=self.get_weather_from_nmc, args=(1,), name='Forecast').start() # Get current weather def getCurrentWeather(self, cityId): cityIdStr = str(cityId) self.location_id = cityIdStr threading.Thread(target=self.get_weather_from_nmc, args=(0,), name='CurrrentWeather').start() # Get PM2.5 information from website def getPM25Info(self, cityId): cityIdStr = str(cityId) cityName = self.get_location_from_cityid(cityIdStr) cityName = cityName.split(',')[2] threading.Thread(target=self.get_pm, args=(cityName,), name='PM25').start() # Update weather and forecast def updateCurrentWeather(self, cityId): self.getCurrentWeather(cityId) return True def getCityId(self, cityName): cityNameStr = str(cityName) return self.get_id_from_cityname(cityNameStr) def read_from_url(self, url): # returns weather info by json_string #fp1 = open("/tmp/read.txt", "w") #print >> fp1, "--------------" try: request = urllib2.Request(url, headers={'User-Agent' : 'Magic Browser'}) #print >> fp1, request f = urllib2.urlopen(request) #print >> fp1, "111" json_string = f.read() #print >> fp1, "222" #print >> fp1, json_string f.close() return json_string except Exception as e: # print >> fp1, "hhahha" #print >> fp1, e return {} #fp1.close() def get_pm(self, cityplace): try: #fp = open("/tmp/pm25.txt", "w") #print >> fp, "--------------" ob = Getpmdata() url = ob.get_url(cityplace) pmdata = ob.get_data(url) #print >> fp, pmdata #return pmdata if pmdata.has_key('aqi') and pmdata.has_key('quality'): self.pmData = pmdata['quality'] + ' ' + str(pmdata['aqi']) #print >> fp, self.pmData else: #print >> fp, "11111" self.pmData = "N/A" self.sessionDaemon.access_weather('pm25', 'kobe') except Exception as e: #print >> fp, "2222" #print >> fp, e self.pmData = "N/A" #fp.close() #according to get_pm get pm25 data when it run over. def get_pm25_str(self): return self.pmData def get_weather_from_nmc(self, method = 0): """ Fetches weather report from NMC Parameters: location_id: City ID for request weather method: 'simple' 0 or 'complex' 1 Returns: weather_data: a dictionary of weather data that exists in Json feed. """ if method == 0: #fp = open("/tmp/weather.txt", "w") #print >> fp, "--------------" url1 = WEATHER_URL1 % (self.location_id) url2 = WEATHER_URL2 % (self.location_id) json_string1 = self.read_from_url(url1) #if(json_string1 == {}): #print >> fp, "111error" #else: #print >> fp, "111" #print >> fp, json_string1 json_string2 = self.read_from_url(url2) #if(json_string2 == {}): # print >> fp, "222error" #else: # print >> fp, "222" # print >> fp, json_string2 parsed_json1 = json.loads(json_string1) #print >> fp, "333" #print >> fp, parsed_json1 parsed_json2 = json.loads(json_string2) #print >> fp, "444" #print >> fp, parsed_json2 for key in ('city', 'temp', 'SD', 'WD', 'WS', 'time'): self.weatherData[key] = parsed_json1['weatherinfo'][key] for key in ('weather', 'temp1', 'temp2', 'img1', 'img2', 'ptime'): self.weatherData[key] = parsed_json2['weatherinfo'][key] self.sessionDaemon.access_weather('weather', 'kobe') #fp.close() elif method == 1: #fp1 = open("/tmp/forecast.txt", "w") #print >> fp1, "--------------" # http://m.weather.com.cn/data/101250101.html url = WEATHER_URL % (self.location_id) json_string = self.read_from_url(url) parsed_json = json.loads(json_string) tp_forecast = ('city', 'date_y', 'week', 'fchh', 'temp1', 'temp2', 'temp3', 'temp4', 'temp5', 'temp6', \ 'weather1', 'weather2', 'weather3', 'weather4', 'weather5', 'weather6', \ 'wind1', 'wind2', 'wind3', 'wind4', 'wind5', 'wind6', \ 'img1', 'img2', 'img3', 'img4', 'img5', 'img6', 'img7', 'img8', 'img9', 'img10', 'img11', 'img12', 'img_single', \ 'img_title1', 'img_title2', 'img_title3', 'img_title4', 'img_title5', 'img_title6', \ 'img_title7', 'img_title8', 'img_title9', 'img_title10', 'img_title11', 'img_title12', 'img_title_single', \ 'wind1', 'wind2', 'wind3', 'wind4', 'wind5', 'wind6', \ 'fx1', 'fx2', 'fl1', 'fl2', 'fl3', 'fl4', 'fl5', 'fl6', \ 'index', 'index_d', 'index48', 'index48_d', 'index_uv', 'index_xc', 'index_tr', 'index_co', 'index_cl', 'index_ls', 'index_ag') for key in tp_forecast: self.forecastData[key] = parsed_json['weatherinfo'][key] self.sessionDaemon.access_weather('forecast', 'kobe') #fp1.close() else: print "Error,choose method for 0 or 1" exit(1) #according to get_weather_from_nmc get forecast data when it run over. def get_current_weather_dict(self): return self.weatherData #according to get_weather_from_nmc get forecast data when it run over. def get_forecast_dict(self): return self.forecastData def get_location_from_cityid(self, cityid): """ returns city location by search cityid, added by kobe """ location = '' f = open(CHN_CITY_LIST_FILE, 'r') for line in f.readlines(): if cityid in line: location = line.split(':')[0] break return location def get_id_from_cityname(self, cityName): cityId = '' f = open(CHN_CITY_LIST_FILE, 'r') for line in f.readlines(): location = line.split(':')[0] location = location.split(',')[2] if (cityName == location): cityId = line.split(':')[1] break f.close() return cityId if __name__ == "__main__": pass youker-assistant-1.0.1/qml/img/logo/component/drive.png000644 001750 001750 00000001511 12312451003 023463 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<IDATxb`L>@POtEXtSoftwareAdobe ImageReadyqe<IDATx= @MRx\kރ3xA"E~u+Xj1#}@,owi."R `Ηeʲd0׶mD`&(<OCXE}>XKn. */ import QtQuick 1.1 import "../common" as Common Rectangle { id: home width: parent.width; height: 475 color: "transparent" Component.onCompleted: { sessiondispatcher.get_system_message_qt(); } function openFile(file) { var component = Qt.createComponent(file) if (component.status == Component.Ready) pageStack.push(component); else console.log("Error loading component: ", component.errorString()); } Column { anchors { top: parent.top topMargin: 40 left: parent.left leftMargin: 30 } spacing: 20 Row { Common.Label { id: desktoptitle text: qsTr("Desktop Info")//桌面信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - desktoptitle.width - 30 * 2 } } Column { anchors.left: parent.left anchors.leftMargin: 20 spacing: 10 Row { spacing: 10 Common.Label { text: qsTr("Desktop Environment: ")//桌面环境: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { text: sessiondispatcher.getSingleInfo("desktopenvironment") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Distribution: ")//发行版: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { text: sessiondispatcher.getSingleInfo("distribution") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Language: ")//语言: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { text: sessiondispatcher.getSingleInfo("language") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("User: ")//当前用户: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { text: sessiondispatcher.getSingleInfo("currrent_user") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Home Folder: ")//用户主目录: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { text: sessiondispatcher.getSingleInfo("home_path") font.pixelSize: 14 color: "#7a7a7a" } } } } //desktop logo Image { id: logo source: "../../img/toolWidget/ubuntukylin.png" opacity: 0.5 anchors { top: parent.top topMargin: 80 right: parent.right rightMargin: 30 } } } youker-assistant-1.0.1/src/qtkeytransdata.h000644 001750 001750 00000142677 12312451003 021357 0ustar00saucysaucy000000 000000 /*************************************************************************** * Copyright (C) 2012~2012 by CSSlayer * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ int unicodeHasKey[] = { 300, 301, 372, 373, 374, 375, 399, 415, 416, 417, 431, 432, 437, 438, 465, 466, 486, 487, 601, 629, 1170, 1171, 1174, 1175, 1178, 1179, 1180, 1181, 1186, 1187, 1198, 1199, 1200, 1201, 1202, 1203, 1206, 1207, 1208, 1209, 1210, 1211, 1240, 1241, 1250, 1251, 1256, 1257, 1262, 1263, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356, 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366, 1370, 1371, 1371, 1372, 1372, 1373, 1373, 1374, 1374, 1377, 1378, 1379, 1380, 1381, 1382, 1383, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1417, 1417, 1418, 1418, 1619, 1620, 1621, 1632, 1633, 1634, 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1648, 1657, 1662, 1670, 1672, 1681, 1688, 1700, 1705, 1711, 1722, 1726, 1729, 1740, 1740, 1746, 1748, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 3458, 3459, 3461, 3462, 3463, 3464, 3465, 3466, 3467, 3468, 3469, 3470, 3471, 3472, 3473, 3474, 3475, 3476, 3477, 3478, 3482, 3483, 3484, 3485, 3486, 3487, 3488, 3489, 3490, 3491, 3492, 3493, 3494, 3495, 3496, 3497, 3498, 3499, 3500, 3501, 3502, 3503, 3504, 3505, 3507, 3508, 3509, 3510, 3511, 3512, 3513, 3514, 3515, 3517, 3520, 3521, 3522, 3523, 3524, 3525, 3526, 3530, 3535, 3536, 3537, 3538, 3539, 3540, 3542, 3544, 3545, 3546, 3547, 3548, 3549, 3550, 3551, 3570, 3571, 3572, 4304, 4305, 4306, 4307, 4308, 4309, 4310, 4311, 4312, 4313, 4314, 4315, 4316, 4317, 4318, 4319, 4320, 4321, 4322, 4323, 4324, 4325, 4326, 4327, 4328, 4329, 4330, 4331, 4332, 4333, 4334, 4335, 4336, 4337, 4338, 4339, 4340, 4341, 4342, 7682, 7683, 7690, 7691, 7710, 7711, 7734, 7735, 7744, 7745, 7766, 7767, 7776, 7777, 7786, 7787, 7808, 7809, 7810, 7811, 7812, 7813, 7818, 7819, 7840, 7841, 7842, 7843, 7844, 7845, 7846, 7847, 7848, 7849, 7850, 7851, 7852, 7853, 7854, 7855, 7856, 7857, 7858, 7859, 7860, 7861, 7862, 7863, 7864, 7865, 7866, 7867, 7868, 7869, 7870, 7871, 7872, 7873, 7874, 7875, 7876, 7877, 7878, 7879, 7880, 7881, 7882, 7883, 7884, 7885, 7886, 7887, 7888, 7889, 7890, 7891, 7892, 7893, 7894, 7895, 7896, 7897, 7898, 7899, 7900, 7901, 7902, 7903, 7904, 7905, 7906, 7907, 7908, 7909, 7910, 7911, 7912, 7913, 7914, 7915, 7916, 7917, 7918, 7919, 7920, 7921, 7922, 7923, 7924, 7925, 7926, 7927, 7928, 7929, 8304, 8308, 8309, 8310, 8311, 8312, 8313, 8320, 8321, 8322, 8323, 8324, 8325, 8326, 8327, 8328, 8329, 8352, 8353, 8354, 8355, 8356, 8357, 8358, 8359, 8360, 8361, 8362, 8363, 8706, 8709, 8712, 8713, 8715, 8730, 8731, 8732, 8748, 8749, 8757, 8775, 8776, 8802, 8803, 10240, 10241, 10242, 10243, 10244, 10245, 10246, 10247, 10248, 10249, 10250, 10251, 10252, 10253, 10254, 10255, 10256, 10257, 10258, 10259, 10260, 10261, 10262, 10263, 10264, 10265, 10266, 10267, 10268, 10269, 10270, 10271, 10272, 10273, 10274, 10275, 10276, 10277, 10278, 10279, 10280, 10281, 10282, 10283, 10284, 10285, 10286, 10287, 10288, 10289, 10290, 10291, 10292, 10293, 10294, 10295, 10296, 10297, 10298, 10299, 10300, 10301, 10302, 10303, 10304, 10305, 10306, 10307, 10308, 10309, 10310, 10311, 10312, 10313, 10314, 10315, 10316, 10317, 10318, 10319, 10320, 10321, 10322, 10323, 10324, 10325, 10326, 10327, 10328, 10329, 10330, 10331, 10332, 10333, 10334, 10335, 10336, 10337, 10338, 10339, 10340, 10341, 10342, 10343, 10344, 10345, 10346, 10347, 10348, 10349, 10350, 10351, 10352, 10353, 10354, 10355, 10356, 10357, 10358, 10359, 10360, 10361, 10362, 10363, 10364, 10365, 10366, 10367, 10368, 10369, 10370, 10371, 10372, 10373, 10374, 10375, 10376, 10377, 10378, 10379, 10380, 10381, 10382, 10383, 10384, 10385, 10386, 10387, 10388, 10389, 10390, 10391, 10392, 10393, 10394, 10395, 10396, 10397, 10398, 10399, 10400, 10401, 10402, 10403, 10404, 10405, 10406, 10407, 10408, 10409, 10410, 10411, 10412, 10413, 10414, 10415, 10416, 10417, 10418, 10419, 10420, 10421, 10422, 10423, 10424, 10425, 10426, 10427, 10428, 10429, 10430, 10431, 10432, 10433, 10434, 10435, 10436, 10437, 10438, 10439, 10440, 10441, 10442, 10443, 10444, 10445, 10446, 10447, 10448, 10449, 10450, 10451, 10452, 10453, 10454, 10455, 10456, 10457, 10458, 10459, 10460, 10461, 10462, 10463, 10464, 10465, 10466, 10467, 10468, 10469, 10470, 10471, 10472, 10473, 10474, 10475, 10476, 10477, 10478, 10479, 10480, 10481, 10482, 10483, 10484, 10485, 10486, 10487, 10488, 10489, 10490, 10491, 10492, 10493, 10494, 10495 }; struct Unicode2Key { int unicode; int key; bool operator < (const int& u) const { return unicode < u; } }; bool operator < (const int& u, const Unicode2Key& key) { return u < key.unicode; } Unicode2Key unicodeKeyMap[] = { {32, 32}, {33, 33}, {34, 34}, {35, 35}, {36, 36}, {37, 37}, {38, 38}, {39, 39}, {39, 39}, {40, 40}, {41, 41}, {42, 42}, {43, 43}, {44, 44}, {45, 45}, {46, 46}, {47, 47}, {48, 48}, {49, 49}, {50, 50}, {51, 51}, {52, 52}, {53, 53}, {54, 54}, {55, 55}, {56, 56}, {57, 57}, {58, 58}, {59, 59}, {60, 60}, {61, 61}, {62, 62}, {63, 63}, {64, 64}, {65, 65}, {66, 66}, {67, 67}, {68, 68}, {69, 69}, {70, 70}, {71, 71}, {72, 72}, {73, 73}, {74, 74}, {75, 75}, {76, 76}, {77, 77}, {78, 78}, {79, 79}, {80, 80}, {81, 81}, {82, 82}, {83, 83}, {84, 84}, {85, 85}, {86, 86}, {87, 87}, {88, 88}, {89, 89}, {90, 90}, {91, 91}, {92, 92}, {93, 93}, {94, 94}, {95, 95}, {96, 96}, {96, 96}, {97, 97}, {98, 98}, {99, 99}, {100, 100}, {101, 101}, {102, 102}, {103, 103}, {104, 104}, {105, 105}, {106, 106}, {107, 107}, {108, 108}, {109, 109}, {110, 110}, {111, 111}, {112, 112}, {113, 113}, {114, 114}, {115, 115}, {116, 116}, {117, 117}, {118, 118}, {119, 119}, {120, 120}, {121, 121}, {122, 122}, {123, 123}, {124, 124}, {125, 125}, {126, 126}, {160, 160}, {161, 161}, {162, 162}, {163, 163}, {164, 164}, {165, 165}, {166, 166}, {167, 167}, {168, 168}, {169, 169}, {170, 170}, {171, 171}, {172, 172}, {173, 173}, {174, 174}, {175, 175}, {176, 176}, {177, 177}, {178, 178}, {179, 179}, {180, 180}, {181, 181}, {182, 182}, {183, 183}, {184, 184}, {185, 185}, {186, 186}, {187, 187}, {188, 188}, {189, 189}, {190, 190}, {191, 191}, {192, 192}, {193, 193}, {194, 194}, {195, 195}, {196, 196}, {197, 197}, {198, 198}, {199, 199}, {200, 200}, {201, 201}, {202, 202}, {203, 203}, {204, 204}, {205, 205}, {206, 206}, {207, 207}, {208, 208}, {208, 208}, {209, 209}, {210, 210}, {211, 211}, {212, 212}, {213, 213}, {214, 214}, {215, 215}, {216, 216}, {216, 216}, {217, 217}, {218, 218}, {219, 219}, {220, 220}, {221, 221}, {222, 222}, {222, 222}, {223, 223}, {224, 224}, {225, 225}, {226, 226}, {227, 227}, {228, 228}, {229, 229}, {230, 230}, {231, 231}, {232, 232}, {233, 233}, {234, 234}, {235, 235}, {236, 236}, {237, 237}, {238, 238}, {239, 239}, {240, 240}, {241, 241}, {242, 242}, {243, 243}, {244, 244}, {245, 245}, {246, 246}, {247, 247}, {248, 248}, {248, 248}, {249, 249}, {250, 250}, {251, 251}, {252, 252}, {253, 253}, {254, 254}, {255, 255}, /* {0, 1709}, {0, 1725}, {0, 2225}, {0, 2226}, {0, 2227}, {0, 2228}, {0, 2229}, {0, 2230}, {0, 2231}, {0, 2527}, {0, 2732}, {0, 2749}, {0, 2751}, {0, 2763}, {0, 2778}, {0, 2815}, */ {256, 960}, {257, 992}, {258, 451}, {259, 483}, {260, 417}, {261, 433}, {262, 454}, {263, 486}, {264, 710}, {265, 742}, {266, 709}, {267, 741}, {268, 456}, {269, 488}, {270, 463}, {271, 495}, {272, 464}, {273, 496}, {274, 938}, {275, 954}, {278, 972}, {279, 1004}, {280, 458}, {281, 490}, {282, 460}, {283, 492}, {284, 728}, {285, 760}, {286, 683}, {287, 699}, {288, 725}, {289, 757}, {290, 939}, {291, 955}, {292, 678}, {293, 694}, {294, 673}, {295, 689}, {296, 933}, {297, 949}, {298, 975}, {299, 1007}, {302, 967}, {303, 999}, {304, 681}, {305, 697}, {308, 684}, {309, 700}, {310, 979}, {311, 1011}, {312, 930}, {312, 930}, {313, 453}, {314, 485}, {315, 934}, {316, 950}, {317, 421}, {318, 437}, {321, 419}, {322, 435}, {323, 465}, {324, 497}, {325, 977}, {326, 1009}, {327, 466}, {328, 498}, {330, 957}, {331, 959}, {332, 978}, {333, 1010}, {336, 469}, {337, 501}, {340, 448}, {341, 480}, {342, 931}, {343, 947}, {344, 472}, {345, 504}, {346, 422}, {347, 438}, {348, 734}, {349, 766}, {350, 426}, {351, 442}, {352, 425}, {353, 441}, {354, 478}, {355, 510}, {356, 427}, {357, 443}, {358, 940}, {359, 956}, {360, 989}, {361, 1021}, {362, 990}, {363, 1022}, {364, 733}, {365, 765}, {366, 473}, {367, 505}, {368, 475}, {369, 507}, {370, 985}, {371, 1017}, {377, 428}, {378, 444}, {379, 431}, {380, 447}, {381, 430}, {382, 446}, {402, 2294}, {711, 439}, {728, 418}, {729, 511}, {731, 434}, {733, 445}, {901, 1966}, {902, 1953}, {904, 1954}, {905, 1955}, {906, 1956}, {908, 1959}, {910, 1960}, {911, 1963}, {912, 1974}, {913, 1985}, {914, 1986}, {915, 1987}, {916, 1988}, {917, 1989}, {918, 1990}, {919, 1991}, {920, 1992}, {921, 1993}, {922, 1994}, {923, 1995}, {923, 1995}, {924, 1996}, {925, 1997}, {926, 1998}, {927, 1999}, {928, 2000}, {929, 2001}, {931, 2002}, {932, 2004}, {933, 2005}, {934, 2006}, {935, 2007}, {936, 2008}, {937, 2009}, {938, 1957}, {938, 1957}, {939, 1961}, {940, 1969}, {941, 1970}, {942, 1971}, {943, 1972}, {944, 1978}, {945, 2017}, {946, 2018}, {947, 2019}, {948, 2020}, {949, 2021}, {950, 2022}, {951, 2023}, {952, 2024}, {953, 2025}, {954, 2026}, {955, 2027}, {955, 2027}, {956, 2028}, {957, 2029}, {958, 2030}, {959, 2031}, {960, 2032}, {961, 2033}, {962, 2035}, {963, 2034}, {964, 2036}, {965, 2037}, {966, 2038}, {967, 2039}, {968, 2040}, {969, 2041}, {970, 1973}, {971, 1977}, {972, 1975}, {973, 1976}, {974, 1979}, {1025, 1715}, {1026, 1713}, {1027, 1714}, {1028, 1716}, {1028, 1716}, {1029, 1717}, {1030, 1718}, {1030, 1718}, {1031, 1719}, {1031, 1719}, {1032, 1720}, {1032, 1720}, {1033, 1721}, {1033, 1721}, {1034, 1722}, {1034, 1722}, {1035, 1723}, {1036, 1724}, {1038, 1726}, {1039, 1727}, {1039, 1727}, {1040, 1761}, {1041, 1762}, {1042, 1783}, {1043, 1767}, {1044, 1764}, {1045, 1765}, {1046, 1782}, {1047, 1786}, {1048, 1769}, {1049, 1770}, {1050, 1771}, {1051, 1772}, {1052, 1773}, {1053, 1774}, {1054, 1775}, {1055, 1776}, {1056, 1778}, {1057, 1779}, {1058, 1780}, {1059, 1781}, {1060, 1766}, {1061, 1768}, {1062, 1763}, {1063, 1790}, {1064, 1787}, {1065, 1789}, {1066, 1791}, {1067, 1785}, {1068, 1784}, {1069, 1788}, {1070, 1760}, {1071, 1777}, {1072, 1729}, {1073, 1730}, {1074, 1751}, {1075, 1735}, {1076, 1732}, {1077, 1733}, {1078, 1750}, {1079, 1754}, {1080, 1737}, {1081, 1738}, {1082, 1739}, {1083, 1740}, {1084, 1741}, {1085, 1742}, {1086, 1743}, {1087, 1744}, {1088, 1746}, {1089, 1747}, {1090, 1748}, {1091, 1749}, {1092, 1734}, {1093, 1736}, {1094, 1731}, {1095, 1758}, {1096, 1755}, {1097, 1757}, {1098, 1759}, {1099, 1753}, {1100, 1752}, {1101, 1756}, {1102, 1728}, {1103, 1745}, {1105, 1699}, {1106, 1697}, {1107, 1698}, {1108, 1700}, {1108, 1700}, {1109, 1701}, {1110, 1702}, {1110, 1702}, {1111, 1703}, {1111, 1703}, {1112, 1704}, {1112, 1704}, {1113, 1705}, {1113, 1705}, {1114, 1706}, {1114, 1706}, {1115, 1707}, {1116, 1708}, {1118, 1710}, {1119, 1711}, {1119, 1711}, {1488, 3296}, {1489, 3297}, {1489, 3297}, {1490, 3298}, {1490, 3298}, {1491, 3299}, {1491, 3299}, {1492, 3300}, {1493, 3301}, {1494, 3302}, {1494, 3302}, {1495, 3303}, {1495, 3303}, {1496, 3304}, {1496, 3304}, {1497, 3305}, {1498, 3306}, {1499, 3307}, {1500, 3308}, {1501, 3309}, {1502, 3310}, {1503, 3311}, {1504, 3312}, {1505, 3313}, {1505, 3313}, {1506, 3314}, {1507, 3315}, {1508, 3316}, {1509, 3317}, {1509, 3317}, {1510, 3318}, {1510, 3318}, {1511, 3319}, {1511, 3319}, {1512, 3320}, {1513, 3321}, {1514, 3322}, {1514, 3322}, {1548, 1452}, {1563, 1467}, {1567, 1471}, {1569, 1473}, {1570, 1474}, {1571, 1475}, {1572, 1476}, {1573, 1477}, {1574, 1478}, {1575, 1479}, {1576, 1480}, {1577, 1481}, {1578, 1482}, {1579, 1483}, {1580, 1484}, {1581, 1485}, {1582, 1486}, {1583, 1487}, {1584, 1488}, {1585, 1489}, {1586, 1490}, {1587, 1491}, {1588, 1492}, {1589, 1493}, {1590, 1494}, {1591, 1495}, {1592, 1496}, {1593, 1497}, {1594, 1498}, {1600, 1504}, {1601, 1505}, {1602, 1506}, {1603, 1507}, {1604, 1508}, {1605, 1509}, {1606, 1510}, {1607, 1511}, {1607, 1511}, {1608, 1512}, {1609, 1513}, {1610, 1514}, {1611, 1515}, {1612, 1516}, {1613, 1517}, {1614, 1518}, {1615, 1519}, {1616, 1520}, {1617, 1521}, {1618, 1522}, {3585, 3489}, {3586, 3490}, {3587, 3491}, {3588, 3492}, {3589, 3493}, {3590, 3494}, {3591, 3495}, {3592, 3496}, {3593, 3497}, {3594, 3498}, {3595, 3499}, {3596, 3500}, {3597, 3501}, {3598, 3502}, {3599, 3503}, {3600, 3504}, {3601, 3505}, {3602, 3506}, {3603, 3507}, {3604, 3508}, {3605, 3509}, {3606, 3510}, {3607, 3511}, {3608, 3512}, {3609, 3513}, {3610, 3514}, {3611, 3515}, {3612, 3516}, {3613, 3517}, {3614, 3518}, {3615, 3519}, {3616, 3520}, {3617, 3521}, {3618, 3522}, {3619, 3523}, {3620, 3524}, {3621, 3525}, {3622, 3526}, {3623, 3527}, {3624, 3528}, {3625, 3529}, {3626, 3530}, {3627, 3531}, {3628, 3532}, {3629, 3533}, {3630, 3534}, {3631, 3535}, {3632, 3536}, {3633, 3537}, {3634, 3538}, {3635, 3539}, {3636, 3540}, {3637, 3541}, {3638, 3542}, {3639, 3543}, {3640, 3544}, {3641, 3545}, {3642, 3546}, {3647, 3551}, {3648, 3552}, {3649, 3553}, {3650, 3554}, {3651, 3555}, {3652, 3556}, {3653, 3557}, {3654, 3558}, {3655, 3559}, {3656, 3560}, {3657, 3561}, {3658, 3562}, {3659, 3563}, {3660, 3564}, {3661, 3565}, {3664, 3568}, {3665, 3569}, {3666, 3570}, {3667, 3571}, {3668, 3572}, {3669, 3573}, {3670, 3574}, {3671, 3575}, {3672, 3576}, {3673, 3577}, {4520, 3796}, {4521, 3797}, {4522, 3798}, {4523, 3799}, {4524, 3800}, {4525, 3801}, {4526, 3802}, {4527, 3803}, {4528, 3804}, {4529, 3805}, {4530, 3806}, {4531, 3807}, {4532, 3808}, {4533, 3809}, {4534, 3810}, {4535, 3811}, {4536, 3812}, {4537, 3813}, {4538, 3814}, {4539, 3815}, {4540, 3816}, {4541, 3817}, {4542, 3818}, {4543, 3819}, {4544, 3820}, {4545, 3821}, {4546, 3822}, {4587, 3832}, {4592, 3833}, {4601, 3834}, {8194, 2722}, {8195, 2721}, {8196, 2723}, {8197, 2724}, {8199, 2725}, {8200, 2726}, {8201, 2727}, {8202, 2728}, {8210, 2747}, {8211, 2730}, {8212, 2729}, {8213, 1967}, {8215, 3295}, {8216, 2768}, {8217, 2769}, {8218, 2813}, {8220, 2770}, {8221, 2771}, {8222, 2814}, {8224, 2801}, {8225, 2802}, {8226, 2790}, {8229, 2735}, {8230, 2734}, {8242, 2774}, {8243, 2775}, {8248, 2812}, {8254, 1150}, {8361, 3839}, {8364, 8364}, {8453, 2744}, {8470, 1712}, {8471, 2811}, {8478, 2772}, {8482, 2761}, {8531, 2736}, {8532, 2737}, {8533, 2738}, {8534, 2739}, {8535, 2740}, {8536, 2741}, {8537, 2742}, {8538, 2743}, {8539, 2755}, {8540, 2756}, {8541, 2757}, {8542, 2758}, {8592, 2299}, {8593, 2300}, {8594, 2301}, {8595, 2302}, {8658, 2254}, {8660, 2253}, {8706, 2287}, {8711, 2245}, {8728, 3018}, {8730, 2262}, {8733, 2241}, {8734, 2242}, {8743, 2270}, {8744, 2271}, {8745, 2268}, {8746, 2269}, {8747, 2239}, {8756, 2240}, {8764, 2248}, {8771, 2249}, {8800, 2237}, {8801, 2255}, {8804, 2236}, {8805, 2238}, {8834, 2266}, {8835, 2267}, {8866, 3036}, {8867, 3068}, {8868, 3022}, {8869, 3010}, {8968, 3027}, {8970, 3012}, {8981, 2810}, {8992, 2212}, {8993, 2213}, {9001, 2748}, {9002, 2750}, {9109, 3020}, {9115, 2219}, {9117, 2220}, {9118, 2221}, {9120, 2222}, {9121, 2215}, {9123, 2216}, {9124, 2217}, {9126, 2218}, {9128, 2223}, {9132, 2224}, {9143, 2209}, {9146, 2543}, {9147, 2544}, {9148, 2546}, {9149, 2547}, {9225, 2530}, {9226, 2533}, {9227, 2537}, {9228, 2531}, {9229, 2532}, {9252, 2536}, {9472, 2211}, {9474, 2214}, {9484, 2210}, {9488, 2539}, {9492, 2541}, {9496, 2538}, {9500, 2548}, {9508, 2549}, {9516, 2551}, {9524, 2550}, {9532, 2542}, {9618, 2529}, {9642, 2791}, {9643, 2785}, {9644, 2779}, {9645, 2786}, {9646, 2783}, {9647, 2767}, {9650, 2792}, {9651, 2787}, {9654, 2781}, {9655, 2765}, {9660, 2793}, {9661, 2788}, {9664, 2780}, {9665, 2764}, {9670, 2528}, {9675, 2766}, {9679, 2782}, {9702, 2784}, {9734, 2789}, {9742, 2809}, {9747, 2762}, {9756, 2794}, {9758, 2795}, {9792, 2808}, {9794, 2807}, {9827, 2796}, {9829, 2798}, {9830, 2797}, {9837, 2806}, {9839, 2805}, {10003, 2803}, {10007, 2804}, {10013, 2777}, {10016, 2800}, {12289, 1188}, {12290, 1185}, {12300, 1186}, {12301, 1187}, {12443, 1246}, {12444, 1247}, {12449, 1191}, {12450, 1201}, {12451, 1192}, {12452, 1202}, {12453, 1193}, {12454, 1203}, {12455, 1194}, {12456, 1204}, {12457, 1195}, {12458, 1205}, {12459, 1206}, {12461, 1207}, {12463, 1208}, {12465, 1209}, {12467, 1210}, {12469, 1211}, {12471, 1212}, {12473, 1213}, {12475, 1214}, {12477, 1215}, {12479, 1216}, {12481, 1217}, {12481, 1217}, {12483, 1199}, {12483, 1199}, {12484, 1218}, {12484, 1218}, {12486, 1219}, {12488, 1220}, {12490, 1221}, {12491, 1222}, {12492, 1223}, {12493, 1224}, {12494, 1225}, {12495, 1226}, {12498, 1227}, {12501, 1228}, {12501, 1228}, {12504, 1229}, {12507, 1230}, {12510, 1231}, {12511, 1232}, {12512, 1233}, {12513, 1234}, {12514, 1235}, {12515, 1196}, {12516, 1236}, {12517, 1197}, {12518, 1237}, {12519, 1198}, {12520, 1238}, {12521, 1239}, {12522, 1240}, {12523, 1241}, {12524, 1242}, {12525, 1243}, {12527, 1244}, {12530, 1190}, {12531, 1245}, {12539, 1189}, {12539, 1189}, {12540, 1200}, {12593, 3745}, {12594, 3746}, {12595, 3747}, {12596, 3748}, {12597, 3749}, {12598, 3750}, {12599, 3751}, {12600, 3752}, {12601, 3753}, {12602, 3754}, {12603, 3755}, {12604, 3756}, {12605, 3757}, {12606, 3758}, {12607, 3759}, {12608, 3760}, {12609, 3761}, {12610, 3762}, {12611, 3763}, {12612, 3764}, {12613, 3765}, {12614, 3766}, {12615, 3767}, {12616, 3768}, {12617, 3769}, {12618, 3770}, {12619, 3771}, {12620, 3772}, {12621, 3773}, {12622, 3774}, {12623, 3775}, {12624, 3776}, {12625, 3777}, {12626, 3778}, {12627, 3779}, {12628, 3780}, {12629, 3781}, {12630, 3782}, {12631, 3783}, {12632, 3784}, {12633, 3785}, {12634, 3786}, {12635, 3787}, {12636, 3788}, {12637, 3789}, {12638, 3790}, {12639, 3791}, {12640, 3792}, {12641, 3793}, {12642, 3794}, {12643, 3795}, {12653, 3823}, {12657, 3824}, {12664, 3825}, {12671, 3826}, {12673, 3827}, {12676, 3828}, {12678, 3829}, {12685, 3830}, {12686, 3831}, {65533, 3550}, }; struct QtCode2Key { int qtcode; int key; bool operator < (const int& u) const { return qtcode < u; } }; bool operator < (const int& u, const QtCode2Key& key) { return u < key.qtcode; } QtCode2Key keyPadQtCodeToKey[] = { {32, 65408}, {42, 65450}, {43, 65451}, {44, 65452}, {45, 65453}, {46, 65454}, {47, 65455}, {48, 65456}, {49, 65457}, {50, 65458}, {51, 65459}, {52, 65460}, {53, 65461}, {54, 65462}, {55, 65463}, {56, 65464}, {57, 65465}, {61, 65469}, {16777217, 65417}, {16777221, 65421}, {16777222, 65438}, {16777223, 65439}, {16777227, 65437}, {16777232, 65429}, {16777233, 65436}, {16777234, 65430}, {16777235, 65431}, {16777236, 65432}, {16777237, 65433}, {16777238, 65434}, {16777239, 65435}, }; QtCode2Key qtCodeToKeyBackup[] = { {32, 32}, {33, 33}, {34, 34}, {35, 35}, {36, 36}, {37, 37}, {38, 38}, {39, 39}, {40, 40}, {41, 41}, {42, 42}, {43, 43}, {44, 44}, {45, 45}, {46, 46}, {47, 47}, {48, 48}, {49, 49}, {50, 50}, {51, 51}, {52, 52}, {53, 53}, {54, 54}, {55, 55}, {56, 56}, {57, 57}, {58, 58}, {59, 59}, {60, 60}, {61, 61}, {62, 62}, {63, 63}, {64, 64}, {65, 65}, {66, 66}, {67, 67}, {68, 68}, {69, 69}, {70, 70}, {71, 71}, {72, 72}, {73, 73}, {74, 74}, {75, 75}, {76, 76}, {77, 77}, {78, 78}, {79, 79}, {80, 80}, {81, 81}, {82, 82}, {83, 83}, {84, 84}, {85, 85}, {86, 86}, {87, 87}, {88, 88}, {89, 89}, {90, 90}, {91, 91}, {92, 92}, {93, 93}, {94, 94}, {95, 95}, {96, 96}, {123, 123}, {124, 124}, {125, 125}, {126, 126}, {256, 960}, {258, 451}, {260, 417}, {262, 454}, {264, 710}, {266, 709}, {268, 456}, {270, 463}, {272, 464}, {274, 938}, {278, 972}, {280, 458}, {282, 460}, {284, 728}, {286, 683}, {288, 725}, {290, 939}, {292, 678}, {294, 673}, {296, 933}, {298, 975}, {300, 16777516}, {302, 967}, {304, 681}, {308, 684}, {310, 979}, {312, 930}, {313, 453}, {315, 934}, {317, 421}, {321, 419}, {323, 465}, {325, 977}, {327, 466}, {330, 957}, {332, 978}, {336, 469}, {340, 448}, {342, 931}, {344, 472}, {346, 422}, {348, 734}, {350, 426}, {352, 425}, {354, 478}, {356, 427}, {358, 940}, {360, 989}, {362, 990}, {364, 733}, {366, 473}, {368, 475}, {370, 985}, {372, 16777588}, {374, 16777590}, {377, 428}, {379, 431}, {381, 430}, {399, 16777615}, {401, 2294}, {415, 16777631}, {416, 16777632}, {431, 16777647}, {437, 16777653}, {465, 16777681}, {486, 16777702}, {711, 439}, {728, 418}, {729, 511}, {731, 434}, {733, 445}, {901, 1966}, {902, 1953}, {904, 1954}, {905, 1955}, {906, 1956}, {908, 1959}, {910, 1960}, {911, 1963}, {912, 1974}, {913, 1985}, {914, 1986}, {915, 1987}, {916, 1988}, {917, 1989}, {918, 1990}, {919, 1991}, {920, 1992}, {921, 1993}, {922, 1994}, {923, 1995}, {924, 1996}, {925, 1997}, {926, 1998}, {927, 1999}, {928, 2000}, {929, 2001}, {931, 2002}, {932, 2004}, {933, 2005}, {934, 2006}, {935, 2007}, {936, 2008}, {937, 2009}, {938, 1957}, {939, 1961}, {944, 1978}, {1025, 1699}, {1026, 1697}, {1027, 1698}, {1028, 1700}, {1029, 1701}, {1030, 1702}, {1031, 1703}, {1032, 1704}, {1033, 1705}, {1034, 1706}, {1035, 1707}, {1036, 1708}, {1038, 1710}, {1039, 1711}, {1040, 1729}, {1041, 1730}, {1042, 1751}, {1043, 1735}, {1044, 1732}, {1045, 1733}, {1046, 1750}, {1047, 1754}, {1048, 1737}, {1049, 1738}, {1050, 1739}, {1051, 1740}, {1052, 1741}, {1053, 1742}, {1054, 1743}, {1055, 1744}, {1056, 1746}, {1057, 1747}, {1058, 1748}, {1059, 1749}, {1060, 1734}, {1061, 1736}, {1062, 1731}, {1063, 1758}, {1064, 1755}, {1065, 1757}, {1066, 1759}, {1067, 1753}, {1068, 1752}, {1069, 1756}, {1070, 1728}, {1071, 1745}, {1170, 16778386}, {1174, 16778390}, {1178, 16778394}, {1180, 16778396}, {1186, 16778402}, {1198, 16778414}, {1200, 16778416}, {1202, 16778418}, {1206, 16778422}, {1208, 16778424}, {1210, 16778426}, {1240, 16778456}, {1250, 16778466}, {1256, 16778472}, {1262, 16778478}, {1329, 16778545}, {1330, 16778546}, {1331, 16778547}, {1332, 16778548}, {1333, 16778549}, {1334, 16778550}, {1335, 16778551}, {1336, 16778552}, {1337, 16778553}, {1338, 16778554}, {1339, 16778555}, {1340, 16778556}, {1341, 16778557}, {1342, 16778558}, {1343, 16778559}, {1344, 16778560}, {1345, 16778561}, {1346, 16778562}, {1347, 16778563}, {1348, 16778564}, {1349, 16778565}, {1350, 16778566}, {1351, 16778567}, {1352, 16778568}, {1353, 16778569}, {1354, 16778570}, {1355, 16778571}, {1356, 16778572}, {1357, 16778573}, {1358, 16778574}, {1359, 16778575}, {1360, 16778576}, {1361, 16778577}, {1362, 16778578}, {1363, 16778579}, {1364, 16778580}, {1365, 16778581}, {1366, 16778582}, {1370, 16778586}, {1371, 16778587}, {1372, 16778588}, {1373, 16778589}, {1374, 16778590}, {1415, 16778631}, {1417, 16778633}, {1418, 16778634}, {1488, 3296}, {1489, 3297}, {1490, 3298}, {1491, 3299}, {1492, 3300}, {1493, 3301}, {1494, 3302}, {1495, 3303}, {1496, 3304}, {1497, 3305}, {1498, 3306}, {1499, 3307}, {1500, 3308}, {1501, 3309}, {1502, 3310}, {1503, 3311}, {1504, 3312}, {1505, 3313}, {1506, 3314}, {1507, 3315}, {1508, 3316}, {1509, 3317}, {1510, 3318}, {1511, 3319}, {1512, 3320}, {1513, 3321}, {1514, 3322}, {1548, 1452}, {1563, 1467}, {1567, 1471}, {1569, 1473}, {1570, 1474}, {1571, 1475}, {1572, 1476}, {1573, 1477}, {1574, 1478}, {1575, 1479}, {1576, 1480}, {1577, 1481}, {1578, 1482}, {1579, 1483}, {1580, 1484}, {1581, 1485}, {1582, 1486}, {1583, 1487}, {1584, 1488}, {1585, 1489}, {1586, 1490}, {1587, 1491}, {1588, 1492}, {1589, 1493}, {1590, 1494}, {1591, 1495}, {1592, 1496}, {1593, 1497}, {1594, 1498}, {1600, 1504}, {1601, 1505}, {1602, 1506}, {1603, 1507}, {1604, 1508}, {1605, 1509}, {1606, 1510}, {1607, 1511}, {1608, 1512}, {1609, 1513}, {1610, 1514}, {1611, 1515}, {1612, 1516}, {1613, 1517}, {1614, 1518}, {1615, 1519}, {1616, 1520}, {1617, 1521}, {1618, 1522}, {1619, 16778835}, {1620, 16778836}, {1621, 16778837}, {1632, 16778848}, {1633, 16778849}, {1634, 16778850}, {1635, 16778851}, {1636, 16778852}, {1637, 16778853}, {1638, 16778854}, {1639, 16778855}, {1640, 16778856}, {1641, 16778857}, {1642, 16778858}, {1648, 16778864}, {1657, 16778873}, {1662, 16778878}, {1670, 16778886}, {1672, 16778888}, {1681, 16778897}, {1688, 16778904}, {1700, 16778916}, {1705, 16778921}, {1711, 16778927}, {1722, 16778938}, {1726, 16778942}, {1729, 16778945}, {1740, 16778956}, {1746, 16778962}, {1748, 16778964}, {1776, 16778992}, {1777, 16778993}, {1778, 16778994}, {1779, 16778995}, {1780, 16778996}, {1781, 16778997}, {1782, 16778998}, {1783, 16778999}, {1784, 16779000}, {1785, 16779001}, {3458, 16780674}, {3459, 16780675}, {3461, 16780677}, {3462, 16780678}, {3463, 16780679}, {3464, 16780680}, {3465, 16780681}, {3466, 16780682}, {3467, 16780683}, {3468, 16780684}, {3469, 16780685}, {3470, 16780686}, {3471, 16780687}, {3472, 16780688}, {3473, 16780689}, {3474, 16780690}, {3475, 16780691}, {3476, 16780692}, {3477, 16780693}, {3478, 16780694}, {3482, 16780698}, {3483, 16780699}, {3484, 16780700}, {3485, 16780701}, {3486, 16780702}, {3487, 16780703}, {3488, 16780704}, {3489, 16780705}, {3490, 16780706}, {3491, 16780707}, {3492, 16780708}, {3493, 16780709}, {3494, 16780710}, {3495, 16780711}, {3496, 16780712}, {3497, 16780713}, {3498, 16780714}, {3499, 16780715}, {3500, 16780716}, {3501, 16780717}, {3502, 16780718}, {3503, 16780719}, {3504, 16780720}, {3505, 16780721}, {3507, 16780723}, {3508, 16780724}, {3509, 16780725}, {3510, 16780726}, {3511, 16780727}, {3512, 16780728}, {3513, 16780729}, {3514, 16780730}, {3515, 16780731}, {3517, 16780733}, {3520, 16780736}, {3521, 16780737}, {3522, 16780738}, {3523, 16780739}, {3524, 16780740}, {3525, 16780741}, {3526, 16780742}, {3530, 16780746}, {3535, 16780751}, {3536, 16780752}, {3537, 16780753}, {3538, 16780754}, {3539, 16780755}, {3540, 16780756}, {3542, 16780758}, {3544, 16780760}, {3545, 16780761}, {3546, 16780762}, {3547, 16780763}, {3548, 16780764}, {3549, 16780765}, {3550, 16780766}, {3551, 16780767}, {3570, 16780786}, {3571, 16780787}, {3572, 16780788}, {3585, 3489}, {3586, 3490}, {3587, 3491}, {3588, 3492}, {3589, 3493}, {3590, 3494}, {3591, 3495}, {3592, 3496}, {3593, 3497}, {3594, 3498}, {3595, 3499}, {3596, 3500}, {3597, 3501}, {3598, 3502}, {3599, 3503}, {3600, 3504}, {3601, 3505}, {3602, 3506}, {3603, 3507}, {3604, 3508}, {3605, 3509}, {3606, 3510}, {3607, 3511}, {3608, 3512}, {3609, 3513}, {3610, 3514}, {3611, 3515}, {3612, 3516}, {3613, 3517}, {3614, 3518}, {3615, 3519}, {3616, 3520}, {3617, 3521}, {3618, 3522}, {3619, 3523}, {3620, 3524}, {3621, 3525}, {3622, 3526}, {3623, 3527}, {3624, 3528}, {3625, 3529}, {3626, 3530}, {3627, 3531}, {3628, 3532}, {3629, 3533}, {3630, 3534}, {3631, 3535}, {3632, 3536}, {3633, 3537}, {3634, 3538}, {3635, 3539}, {3636, 3540}, {3637, 3541}, {3638, 3542}, {3639, 3543}, {3640, 3544}, {3641, 3545}, {3642, 3546}, {3647, 3551}, {3648, 3552}, {3649, 3553}, {3650, 3554}, {3651, 3555}, {3652, 3556}, {3653, 3557}, {3654, 3558}, {3655, 3559}, {3656, 3560}, {3657, 3561}, {3658, 3562}, {3659, 3563}, {3660, 3564}, {3661, 3565}, {3664, 3568}, {3665, 3569}, {3666, 3570}, {3667, 3571}, {3668, 3572}, {3669, 3573}, {3670, 3574}, {3671, 3575}, {3672, 3576}, {3673, 3577}, {4304, 16781520}, {4305, 16781521}, {4306, 16781522}, {4307, 16781523}, {4308, 16781524}, {4309, 16781525}, {4310, 16781526}, {4311, 16781527}, {4312, 16781528}, {4313, 16781529}, {4314, 16781530}, {4315, 16781531}, {4316, 16781532}, {4317, 16781533}, {4318, 16781534}, {4319, 16781535}, {4320, 16781536}, {4321, 16781537}, {4322, 16781538}, {4323, 16781539}, {4324, 16781540}, {4325, 16781541}, {4326, 16781542}, {4327, 16781543}, {4328, 16781544}, {4329, 16781545}, {4330, 16781546}, {4331, 16781547}, {4332, 16781548}, {4333, 16781549}, {4334, 16781550}, {4335, 16781551}, {4336, 16781552}, {4337, 16781553}, {4338, 16781554}, {4339, 16781555}, {4340, 16781556}, {4341, 16781557}, {4342, 16781558}, {4520, 3796}, {4521, 3797}, {4522, 3798}, {4523, 3799}, {4524, 3800}, {4525, 3801}, {4526, 3802}, {4527, 3803}, {4528, 3804}, {4529, 3805}, {4530, 3806}, {4531, 3807}, {4532, 3808}, {4533, 3809}, {4534, 3810}, {4535, 3811}, {4536, 3812}, {4537, 3813}, {4538, 3814}, {4539, 3815}, {4540, 3816}, {4541, 3817}, {4542, 3818}, {4543, 3819}, {4544, 3820}, {4545, 3821}, {4546, 3822}, {4587, 3832}, {4592, 3833}, {4601, 3834}, {7682, 16784898}, {7690, 16784906}, {7710, 16784926}, {7734, 16784950}, {7744, 16784960}, {7766, 16784982}, {7776, 16784992}, {7786, 16785002}, {7808, 16785024}, {7810, 16785026}, {7812, 16785028}, {7818, 16785034}, {7840, 16785056}, {7842, 16785058}, {7844, 16785060}, {7846, 16785062}, {7848, 16785064}, {7850, 16785066}, {7852, 16785068}, {7854, 16785070}, {7856, 16785072}, {7858, 16785074}, {7860, 16785076}, {7862, 16785078}, {7864, 16785080}, {7866, 16785082}, {7868, 16785084}, {7870, 16785086}, {7872, 16785088}, {7874, 16785090}, {7876, 16785092}, {7878, 16785094}, {7880, 16785096}, {7882, 16785098}, {7884, 16785100}, {7886, 16785102}, {7888, 16785104}, {7890, 16785106}, {7892, 16785108}, {7894, 16785110}, {7896, 16785112}, {7898, 16785114}, {7900, 16785116}, {7902, 16785118}, {7904, 16785120}, {7906, 16785122}, {7908, 16785124}, {7910, 16785126}, {7912, 16785128}, {7914, 16785130}, {7916, 16785132}, {7918, 16785134}, {7920, 16785136}, {7922, 16785138}, {7924, 16785140}, {7926, 16785142}, {7928, 16785144}, {8194, 2722}, {8195, 2721}, {8196, 2723}, {8197, 2724}, {8199, 2725}, {8200, 2726}, {8201, 2727}, {8202, 2728}, {8210, 2747}, {8211, 2730}, {8212, 2729}, {8213, 1967}, {8215, 3295}, {8216, 2768}, {8217, 2769}, {8218, 2813}, {8220, 2770}, {8221, 2771}, {8222, 2814}, {8224, 2801}, {8225, 2802}, {8226, 2790}, {8229, 2735}, {8230, 2734}, {8242, 2774}, {8243, 2775}, {8248, 2812}, {8254, 1150}, {8304, 16785520}, {8308, 16785524}, {8309, 16785525}, {8310, 16785526}, {8311, 16785527}, {8312, 16785528}, {8313, 16785529}, {8320, 16785536}, {8321, 16785537}, {8322, 16785538}, {8323, 16785539}, {8324, 16785540}, {8325, 16785541}, {8326, 16785542}, {8327, 16785543}, {8328, 16785544}, {8329, 16785545}, {8352, 16785568}, {8353, 16785569}, {8354, 16785570}, {8355, 16785571}, {8356, 16785572}, {8357, 16785573}, {8358, 16785574}, {8359, 16785575}, {8360, 16785576}, {8361, 16785577}, {8362, 16785578}, {8363, 16785579}, {8364, 8364}, {8453, 2744}, {8470, 1712}, {8471, 2811}, {8478, 2772}, {8482, 2761}, {8531, 2736}, {8532, 2737}, {8533, 2738}, {8534, 2739}, {8535, 2740}, {8536, 2741}, {8537, 2742}, {8538, 2743}, {8539, 2755}, {8540, 2756}, {8541, 2757}, {8542, 2758}, {8592, 2299}, {8593, 2300}, {8594, 2301}, {8595, 2302}, {8658, 2254}, {8660, 2253}, {8706, 16785922}, {8709, 16785925}, {8711, 2245}, {8712, 16785928}, {8713, 16785929}, {8715, 16785931}, {8728, 3018}, {8730, 16785946}, {8731, 16785947}, {8732, 16785948}, {8733, 2241}, {8734, 2242}, {8743, 2270}, {8744, 2271}, {8745, 2268}, {8746, 2269}, {8747, 2239}, {8748, 16785964}, {8749, 16785965}, {8756, 2240}, {8757, 16785973}, {8764, 2248}, {8771, 2249}, {8775, 16785991}, {8776, 16785992}, {8800, 2237}, {8801, 2255}, {8802, 16786018}, {8803, 16786019}, {8804, 2236}, {8805, 2238}, {8834, 2266}, {8835, 2267}, {8866, 3036}, {8867, 3068}, {8868, 3022}, {8968, 3027}, {8970, 3012}, {8981, 2810}, {8992, 2212}, {8993, 2213}, {9001, 2748}, {9002, 2750}, {9109, 3020}, {9115, 2219}, {9117, 2220}, {9118, 2221}, {9120, 2222}, {9121, 2215}, {9123, 2216}, {9124, 2217}, {9126, 2218}, {9128, 2223}, {9132, 2224}, {9143, 2209}, {9146, 2543}, {9147, 2544}, {9148, 2546}, {9149, 2547}, {9225, 2530}, {9226, 2533}, {9227, 2537}, {9228, 2531}, {9229, 2532}, {9252, 2536}, {9472, 2211}, {9474, 2214}, {9484, 2210}, {9488, 2539}, {9492, 2541}, {9496, 2538}, {9500, 2548}, {9508, 2549}, {9516, 2551}, {9524, 2550}, {9532, 2542}, {9618, 2529}, {9642, 2791}, {9643, 2785}, {9644, 2779}, {9645, 2786}, {9646, 2783}, {9647, 2767}, {9650, 2792}, {9651, 2787}, {9654, 2781}, {9655, 2765}, {9660, 2793}, {9661, 2788}, {9664, 2780}, {9665, 2764}, {9670, 2528}, {9675, 2766}, {9679, 2782}, {9702, 2784}, {9734, 2789}, {9742, 2809}, {9747, 2762}, {9756, 2794}, {9758, 2795}, {9792, 2808}, {9794, 2807}, {9827, 2796}, {9829, 2798}, {9830, 2797}, {9837, 2806}, {9839, 2805}, {10003, 2803}, {10007, 2804}, {10013, 2777}, {10016, 2800}, {10240, 16787456}, {10241, 16787457}, {10242, 16787458}, {10243, 16787459}, {10244, 16787460}, {10245, 16787461}, {10246, 16787462}, {10247, 16787463}, {10248, 16787464}, {10249, 16787465}, {10250, 16787466}, {10251, 16787467}, {10252, 16787468}, {10253, 16787469}, {10254, 16787470}, {10255, 16787471}, {10256, 16787472}, {10257, 16787473}, {10258, 16787474}, {10259, 16787475}, {10260, 16787476}, {10261, 16787477}, {10262, 16787478}, {10263, 16787479}, {10264, 16787480}, {10265, 16787481}, {10266, 16787482}, {10267, 16787483}, {10268, 16787484}, {10269, 16787485}, {10270, 16787486}, {10271, 16787487}, {10272, 16787488}, {10273, 16787489}, {10274, 16787490}, {10275, 16787491}, {10276, 16787492}, {10277, 16787493}, {10278, 16787494}, {10279, 16787495}, {10280, 16787496}, {10281, 16787497}, {10282, 16787498}, {10283, 16787499}, {10284, 16787500}, {10285, 16787501}, {10286, 16787502}, {10287, 16787503}, {10288, 16787504}, {10289, 16787505}, {10290, 16787506}, {10291, 16787507}, {10292, 16787508}, {10293, 16787509}, {10294, 16787510}, {10295, 16787511}, {10296, 16787512}, {10297, 16787513}, {10298, 16787514}, {10299, 16787515}, {10300, 16787516}, {10301, 16787517}, {10302, 16787518}, {10303, 16787519}, {10304, 16787520}, {10305, 16787521}, {10306, 16787522}, {10307, 16787523}, {10308, 16787524}, {10309, 16787525}, {10310, 16787526}, {10311, 16787527}, {10312, 16787528}, {10313, 16787529}, {10314, 16787530}, {10315, 16787531}, {10316, 16787532}, {10317, 16787533}, {10318, 16787534}, {10319, 16787535}, {10320, 16787536}, {10321, 16787537}, {10322, 16787538}, {10323, 16787539}, {10324, 16787540}, {10325, 16787541}, {10326, 16787542}, {10327, 16787543}, {10328, 16787544}, {10329, 16787545}, {10330, 16787546}, {10331, 16787547}, {10332, 16787548}, {10333, 16787549}, {10334, 16787550}, {10335, 16787551}, {10336, 16787552}, {10337, 16787553}, {10338, 16787554}, {10339, 16787555}, {10340, 16787556}, {10341, 16787557}, {10342, 16787558}, {10343, 16787559}, {10344, 16787560}, {10345, 16787561}, {10346, 16787562}, {10347, 16787563}, {10348, 16787564}, {10349, 16787565}, {10350, 16787566}, {10351, 16787567}, {10352, 16787568}, {10353, 16787569}, {10354, 16787570}, {10355, 16787571}, {10356, 16787572}, {10357, 16787573}, {10358, 16787574}, {10359, 16787575}, {10360, 16787576}, {10361, 16787577}, {10362, 16787578}, {10363, 16787579}, {10364, 16787580}, {10365, 16787581}, {10366, 16787582}, {10367, 16787583}, {10368, 16787584}, {10369, 16787585}, {10370, 16787586}, {10371, 16787587}, {10372, 16787588}, {10373, 16787589}, {10374, 16787590}, {10375, 16787591}, {10376, 16787592}, {10377, 16787593}, {10378, 16787594}, {10379, 16787595}, {10380, 16787596}, {10381, 16787597}, {10382, 16787598}, {10383, 16787599}, {10384, 16787600}, {10385, 16787601}, {10386, 16787602}, {10387, 16787603}, {10388, 16787604}, {10389, 16787605}, {10390, 16787606}, {10391, 16787607}, {10392, 16787608}, {10393, 16787609}, {10394, 16787610}, {10395, 16787611}, {10396, 16787612}, {10397, 16787613}, {10398, 16787614}, {10399, 16787615}, {10400, 16787616}, {10401, 16787617}, {10402, 16787618}, {10403, 16787619}, {10404, 16787620}, {10405, 16787621}, {10406, 16787622}, {10407, 16787623}, {10408, 16787624}, {10409, 16787625}, {10410, 16787626}, {10411, 16787627}, {10412, 16787628}, {10413, 16787629}, {10414, 16787630}, {10415, 16787631}, {10416, 16787632}, {10417, 16787633}, {10418, 16787634}, {10419, 16787635}, {10420, 16787636}, {10421, 16787637}, {10422, 16787638}, {10423, 16787639}, {10424, 16787640}, {10425, 16787641}, {10426, 16787642}, {10427, 16787643}, {10428, 16787644}, {10429, 16787645}, {10430, 16787646}, {10431, 16787647}, {10432, 16787648}, {10433, 16787649}, {10434, 16787650}, {10435, 16787651}, {10436, 16787652}, {10437, 16787653}, {10438, 16787654}, {10439, 16787655}, {10440, 16787656}, {10441, 16787657}, {10442, 16787658}, {10443, 16787659}, {10444, 16787660}, {10445, 16787661}, {10446, 16787662}, {10447, 16787663}, {10448, 16787664}, {10449, 16787665}, {10450, 16787666}, {10451, 16787667}, {10452, 16787668}, {10453, 16787669}, {10454, 16787670}, {10455, 16787671}, {10456, 16787672}, {10457, 16787673}, {10458, 16787674}, {10459, 16787675}, {10460, 16787676}, {10461, 16787677}, {10462, 16787678}, {10463, 16787679}, {10464, 16787680}, {10465, 16787681}, {10466, 16787682}, {10467, 16787683}, {10468, 16787684}, {10469, 16787685}, {10470, 16787686}, {10471, 16787687}, {10472, 16787688}, {10473, 16787689}, {10474, 16787690}, {10475, 16787691}, {10476, 16787692}, {10477, 16787693}, {10478, 16787694}, {10479, 16787695}, {10480, 16787696}, {10481, 16787697}, {10482, 16787698}, {10483, 16787699}, {10484, 16787700}, {10485, 16787701}, {10486, 16787702}, {10487, 16787703}, {10488, 16787704}, {10489, 16787705}, {10490, 16787706}, {10491, 16787707}, {10492, 16787708}, {10493, 16787709}, {10494, 16787710}, {10495, 16787711}, {12289, 1188}, {12290, 1185}, {12300, 1186}, {12301, 1187}, {12443, 1246}, {12444, 1247}, {12449, 1191}, {12450, 1201}, {12451, 1192}, {12452, 1202}, {12453, 1193}, {12454, 1203}, {12455, 1194}, {12456, 1204}, {12457, 1195}, {12458, 1205}, {12459, 1206}, {12461, 1207}, {12463, 1208}, {12465, 1209}, {12467, 1210}, {12469, 1211}, {12471, 1212}, {12473, 1213}, {12475, 1214}, {12477, 1215}, {12479, 1216}, {12481, 1217}, {12483, 1199}, {12484, 1218}, {12486, 1219}, {12488, 1220}, {12490, 1221}, {12491, 1222}, {12492, 1223}, {12493, 1224}, {12494, 1225}, {12495, 1226}, {12498, 1227}, {12501, 1228}, {12504, 1229}, {12507, 1230}, {12510, 1231}, {12511, 1232}, {12512, 1233}, {12513, 1234}, {12514, 1235}, {12515, 1196}, {12516, 1236}, {12517, 1197}, {12518, 1237}, {12519, 1198}, {12520, 1238}, {12521, 1239}, {12522, 1240}, {12523, 1241}, {12524, 1242}, {12525, 1243}, {12527, 1244}, {12530, 1190}, {12531, 1245}, {12539, 1189}, {12540, 1200}, {12593, 3745}, {12594, 3746}, {12595, 3747}, {12596, 3748}, {12597, 3749}, {12598, 3750}, {12599, 3751}, {12600, 3752}, {12601, 3753}, {12602, 3754}, {12603, 3755}, {12604, 3756}, {12605, 3757}, {12606, 3758}, {12607, 3759}, {12608, 3760}, {12609, 3761}, {12610, 3762}, {12611, 3763}, {12612, 3764}, {12613, 3765}, {12614, 3766}, {12615, 3767}, {12616, 3768}, {12617, 3769}, {12618, 3770}, {12619, 3771}, {12620, 3772}, {12621, 3773}, {12622, 3774}, {12623, 3775}, {12624, 3776}, {12625, 3777}, {12626, 3778}, {12627, 3779}, {12628, 3780}, {12629, 3781}, {12630, 3782}, {12631, 3783}, {12632, 3784}, {12633, 3785}, {12634, 3786}, {12635, 3787}, {12636, 3788}, {12637, 3789}, {12638, 3790}, {12639, 3791}, {12640, 3792}, {12641, 3793}, {12642, 3794}, {12643, 3795}, {12653, 3823}, {12657, 3824}, {12664, 3825}, {12671, 3826}, {12673, 3827}, {12676, 3828}, {12678, 3829}, {12685, 3830}, {12686, 3831}, {65533, 3550}, }; QtCode2Key qtCodeToKey[] = { {16777216, 65307}, {16777217, 65289}, {16777218, 65056}, {16777219, 65288}, {16777220, 65293}, {16777222, 65379}, {16777223, 65535}, {16777224, 65299}, {16777225, 65377}, {16777232, 65360}, {16777233, 65367}, {16777234, 65361}, {16777235, 65362}, {16777236, 65363}, {16777237, 65364}, {16777238, 65365}, {16777239, 65366}, {16777248, 65505}, {16777249, 65507}, {16777250, 65511}, {16777251, 65513}, {16777252, 65509}, {16777253, 65407}, {16777254, 65300}, {16777264, 65470}, {16777265, 65471}, {16777266, 65472}, {16777267, 65473}, {16777268, 65474}, {16777269, 65475}, {16777270, 65476}, {16777271, 65477}, {16777272, 65478}, {16777273, 65479}, {16777274, 65480}, {16777274, 65480}, {16777275, 65481}, {16777275, 65481}, {16777276, 65482}, {16777276, 65482}, {16777277, 65483}, {16777277, 65483}, {16777278, 65484}, {16777278, 65484}, {16777279, 65485}, {16777279, 65485}, {16777280, 65486}, {16777280, 65486}, {16777281, 65487}, {16777281, 65487}, {16777282, 65488}, {16777282, 65488}, {16777283, 65489}, {16777283, 65489}, {16777284, 65490}, {16777284, 65490}, {16777285, 65491}, {16777285, 65491}, {16777286, 65492}, {16777286, 65492}, {16777287, 65493}, {16777287, 65493}, {16777288, 65494}, {16777288, 65494}, {16777289, 65495}, {16777289, 65495}, {16777290, 65496}, {16777290, 65496}, {16777291, 65497}, {16777291, 65497}, {16777292, 65498}, {16777292, 65498}, {16777293, 65499}, {16777293, 65499}, {16777294, 65500}, {16777294, 65500}, {16777295, 65501}, {16777295, 65501}, {16777296, 65502}, {16777296, 65502}, {16777297, 65503}, {16777297, 65503}, {16777298, 65504}, {16777298, 65504}, {16777299, 65515}, {16777300, 65516}, {16777301, 65383}, {16777302, 65517}, {16777303, 65518}, {16777304, 65386}, {16781571, 65027}, {16781600, 65312}, {16781601, 65313}, {16781602, 65314}, {16781603, 65315}, {16781603, 65315}, {16781604, 65316}, {16781605, 65317}, {16781606, 65318}, {16781607, 65319}, {16781608, 65320}, {16781609, 65321}, {16781610, 65322}, {16781611, 65323}, {16781612, 65324}, {16781613, 65325}, {16781614, 65326}, {16781615, 65327}, {16781616, 65328}, {16781617, 65329}, {16781618, 65330}, {16781619, 65331}, {16781620, 65332}, {16781621, 65333}, {16781622, 65334}, {16781623, 65335}, {16781623, 65335}, {16781623, 65335}, {16781624, 65336}, {16781625, 65337}, {16781626, 65338}, {16781627, 65339}, {16781628, 65340}, {16781628, 65340}, {16781629, 65341}, {16781629, 65341}, {16781629, 65341}, {16781630, 65342}, {16781630, 65342}, {16781630, 65342}, {16781631, 65343}, {16781694, 65406}, {16781694, 65406}, {16781694, 65406}, {16781694, 65406}, {16781694, 65406}, {16781694, 65406}, {16781694, 65406}, {16781694, 65406}, {16781904, 65104}, {16781905, 65105}, {16781906, 65106}, {16781907, 65107}, {16781907, 65107}, {16781908, 65108}, {16781909, 65109}, {16781910, 65110}, {16781911, 65111}, {16781912, 65112}, {16781913, 65113}, {16781914, 65114}, {16781915, 65115}, {16781916, 65116}, {16781917, 65117}, {16781918, 65118}, {16781919, 65119}, {16781920, 65120}, {16781921, 65121}, {16781922, 65122}, }; youker-assistant-1.0.1/qml/img/weather/d28.gif000644 001750 001750 00000005552 12312451003 021436 0ustar00saucysaucy000000 000000 GIF89a00݄෿̽лɧ“䅑ƫòܜׂၯ∴4p7s6q8s;v;u=x;r?zA|@zB}E~HHt_Fnnqsqyty{ރ恱ჳㄴ䆶唿邡¯ضҽ0q1r'Z*_3q5s3p0i5s4q5r4p/f6s5r7t6s8u9v8u8s;x9v7p5m:w:u;x?}=zyA~?z>zA~3bA|A}B}B~>v7iCE=qE}CzILOI}PCsRGxFvLFuVYQIxUL{\PHsaZcaR~fd_hkgdikdhkpmZnrpsrrql^wUzvvx{zyہ|{~}߁䀳yׂ䁴\惶g߅ㄴ⃳lfttyՄʢҢܮ6tAtDwooq߁⃶サ⁴Ĭն!,00iS$ .atYȰÇ^#ƒ”1#L0`Iɓ$`R eȔy&̛8s 2JP.gb r3d̔;CU\fP:ׯ`~Qn 5k@TkcAsf٧s5ġ-Y6iHrihh̹3 6pjА%K()#'Z/4jHN8ii3 S 7Zy@܃s)iGNuggsËccϛ>Br&LHAJ/lΟ( 89^|p LYdžv!vh푓 RH0A*@1~C9c!y1P@&a-ATD [!PH<@!nxqLƒ@)e 0 d`IH! f!6H8l#+P".F0{fxàPH"H^p2s=^y \(p*5͵d>9檫 X L3c 긊"$,d'^` ,l*H#,2Ƥćbb`)ޫ"6,2p"/"bB|S5*Og/njpBWv7o]嘻IB%XK6v3J}:g8 b $ #hR.`3=|p|zΎC^3@ P b{W. _޸o5|?81 X (?&3.Ql``:P >1qc!Ntb_' G` d<E1.AP?xЃ':"5HbmYЂ!p#,%Bp+h XУ UG>0GqE&FHBA 3V3HQ"(E)2{3ylbHE&aL"(E*HXF7as`2(*TъTx5 8E+HLsDa8#&qLUȄ#@sNF^1M"d+-j!VZ+C #⯴@G' kPa%ktDajV҂E(&HDA$ ^P$sL-$1 mS\_ E< 0'Pqp.VA 1D+|P? ]08B0tLtBjE滊\\E.\ *0 Qq _7G06 "GS| b.faD.яD!@10aǴ y\@/a 1Oa~/9().uGH cc34R(HCыuŀ ܂A+-Bq*Dx%\u\(2ց \f/B h ȵswD/.K^i@c .P1Qp2%,e@߱d|@F3 &Lc-VhtP.;V.nm&0a Q p#pF;wHXF;i8GwGrw8'x4! g8 g4HB4h8F/ҕބ3MoɛhCN?;youker-assistant-1.0.1/src/qstyleitem.cpp000644 001750 001750 00000132303 12312451003 021034 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the examples of the Qt Toolkit. ** ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ** the names of its contributors may be used to endorse or promote ** products derived from this software without specific prior written ** permission. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTgall ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qstyleitem.h" #include #include #include #include #include #include #include #include #include #ifdef Q_WS_MAC #include extern CGContextRef qt_mac_cg_context(const QPaintDevice *); //qpaintdevice_mac.cpp static inline HIRect qt_hirectForQRect(const QRect &convertRect, const QRect &rect = QRect()) { return CGRectMake(convertRect.x() + rect.x(), convertRect.y() + rect.y(), convertRect.width() - rect.width(), convertRect.height() - rect.height()); } #endif QStyleItem::QStyleItem(QDeclarativeItem *parent) : QDeclarativeItem(parent), m_dummywidget(0), m_styleoption(0), m_type(Undefined), m_sunken(false), m_raised(false), m_active(true), m_selected(false), m_focus(false), m_on(false), m_horizontal(true), m_sharedWidget(false), m_minimum(0), m_maximum(100), m_value(0), m_paintMargins(0), m_implicitWidth(0), m_implicitHeight(0), m_contentWidth(0), m_contentHeight(0) { setFlag(QGraphicsItem::ItemHasNoContents, false); setCacheMode(QGraphicsItem::DeviceCoordinateCache); setSmooth(true); connect(this, SIGNAL(infoChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(onChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(selectedChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(activeChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(textChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(activeChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(raisedChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(sunkenChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(hoverChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(maximumChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(minimumChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(valueChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(horizontalChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(activeControlChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(hasFocusChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(activeControlChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(elementTypeChanged()), this, SLOT(updateItem())); connect(this, SIGNAL(textChanged()), this, SLOT(updateSizeHint())); connect(this, SIGNAL(contentWidthChanged(int)), this, SLOT(updateSizeHint())); connect(this, SIGNAL(contentHeightChanged(int)), this, SLOT(updateSizeHint())); } QStyleItem::~QStyleItem() { delete m_styleoption; m_styleoption = 0; if (!m_sharedWidget) { delete m_dummywidget; m_dummywidget = 0; } } void QStyleItem::initStyleOption() { QString type = elementType(); if (m_styleoption) m_styleoption->state = 0; switch (m_itemType) { case Button: { if (!m_styleoption) m_styleoption = new QStyleOptionButton(); QStyleOptionButton *opt = qstyleoption_cast(m_styleoption); opt->text = text(); opt->features = (activeControl() == "default") ? QStyleOptionButton::DefaultButton : QStyleOptionButton::None; } break; case ItemRow: { if (!m_styleoption) m_styleoption = new QStyleOptionViewItemV4(); QStyleOptionViewItemV4 *opt = qstyleoption_cast(m_styleoption); opt->features = 0; if (activeControl() == "alternate") opt->features |= QStyleOptionViewItemV2::Alternate; } break; case Splitter: { if (!m_styleoption) { m_styleoption = new QStyleOption; } } break; case Item: { if (!m_styleoption) { m_styleoption = new QStyleOptionViewItemV4(); } QStyleOptionViewItemV4 *opt = qstyleoption_cast(m_styleoption); opt->features = QStyleOptionViewItemV4::HasDisplay; opt->text = text(); opt->textElideMode = Qt::ElideRight; QPalette pal = m_styleoption->palette; pal.setBrush(QPalette::Base, Qt::NoBrush); m_styleoption->palette = pal; } break; case Header: { if (!m_styleoption) m_styleoption = new QStyleOptionHeader(); QStyleOptionHeader *opt = qstyleoption_cast(m_styleoption); opt->text = text(); opt->sortIndicator = activeControl() == "down" ? QStyleOptionHeader::SortDown : activeControl() == "up" ? QStyleOptionHeader::SortUp : QStyleOptionHeader::None; if (info() == QLatin1String("beginning")) opt->position = QStyleOptionHeader::Beginning; else if (info() == QLatin1String("end")) opt->position = QStyleOptionHeader::End; else if (info() == QLatin1String("only")) opt->position = QStyleOptionHeader::OnlyOneSection; else opt->position = QStyleOptionHeader::Middle; } break; case ToolButton: { if (!m_styleoption) m_styleoption = new QStyleOptionToolButton(); QStyleOptionToolButton *opt = qstyleoption_cast(m_styleoption); opt->subControls = QStyle::SC_ToolButton; opt->state |= QStyle::State_AutoRaise; opt->activeSubControls = QStyle::SC_ToolButton; } break; case ToolBar: { if (!m_styleoption) m_styleoption = new QStyleOptionToolBar(); } break; case Tab: { if (!m_styleoption) m_styleoption = new QStyleOptionTabV3(); QStyleOptionTabV3 *opt = qstyleoption_cast(m_styleoption); opt->text = text(); opt->shape = info() == "South" ? QTabBar::RoundedSouth : QTabBar::RoundedNorth; if (activeControl() == QLatin1String("beginning")) opt->position = QStyleOptionTabV3::Beginning; else if (activeControl() == QLatin1String("end")) opt->position = QStyleOptionTabV3::End; else if (activeControl() == QLatin1String("only")) opt->position = QStyleOptionTabV3::OnlyOneTab; else opt->position = QStyleOptionTabV3::Middle; } break; case Menu: { if (!m_styleoption) m_styleoption = new QStyleOptionMenuItem(); } break; case Frame: { if (!m_styleoption) m_styleoption = new QStyleOptionFrameV3(); QStyleOptionFrameV3 *opt = qstyleoption_cast(m_styleoption); opt->frameShape = QFrame::StyledPanel; opt->lineWidth = 1; opt->midLineWidth = 1; } break; case TabFrame: { if (!m_styleoption) m_styleoption = new QStyleOptionTabWidgetFrameV2(); QStyleOptionTabWidgetFrameV2 *opt = qstyleoption_cast(m_styleoption); opt->shape = (info() == "South") ? QTabBar::RoundedSouth : QTabBar::RoundedNorth; if (minimum()) opt->selectedTabRect = QRect(value(), 0, minimum(), height()); opt->tabBarSize = QSize(minimum() , height()); // oxygen style needs this hack opt->leftCornerWidgetSize = QSize(value(), 0); } break; case MenuItem: case ComboBoxItem: { if (!m_styleoption) m_styleoption = new QStyleOptionMenuItem(); QStyleOptionMenuItem *opt = qstyleoption_cast(m_styleoption); opt->checked = false; opt->text = text(); opt->palette = widget()->palette(); } break; case CheckBox: case RadioButton: { if (!m_styleoption) m_styleoption = new QStyleOptionButton(); QStyleOptionButton *opt = qstyleoption_cast(m_styleoption); if (!on()) opt->state |= QStyle::State_Off; opt->text = text(); } break; case Edit: { if (!m_styleoption) m_styleoption = new QStyleOptionFrameV3(); QStyleOptionFrameV3 *opt = qstyleoption_cast(m_styleoption); opt->lineWidth = 1; // this must be non-zero } break; case ComboBox :{ if (!m_styleoption) m_styleoption = new QStyleOptionComboBox(); QStyleOptionComboBox *opt = qstyleoption_cast(m_styleoption); opt->currentText = text(); } break; case SpinBox: { if (!m_styleoption) m_styleoption = new QStyleOptionSpinBox(); QStyleOptionSpinBox *opt = qstyleoption_cast(m_styleoption); opt->frame = true; if (value() & 0x1) opt->activeSubControls = QStyle::SC_SpinBoxUp; else if (value() & (1<<1)) opt->activeSubControls = QStyle::SC_SpinBoxDown; opt->subControls = QStyle::SC_All; opt->stepEnabled = 0; if (value() & (1<<2)) opt->stepEnabled |= QAbstractSpinBox::StepUpEnabled; if (value() & (1<<3)) opt->stepEnabled |= QAbstractSpinBox::StepDownEnabled; } break; case Slider: case Dial: { if (!m_styleoption) m_styleoption = new QStyleOptionSlider(); QStyleOptionSlider *opt = qstyleoption_cast(m_styleoption); opt->minimum = minimum(); opt->maximum = maximum(); // ### fixme - workaround for KDE inverted dial opt->sliderPosition = value(); opt->singleStep = step(); if (opt->singleStep) { qreal numOfSteps = (opt->maximum - opt->minimum) / opt->singleStep; // at least 5 pixels between tick marks if (numOfSteps && (width() / numOfSteps < 5)) opt->tickInterval = qRound((5*numOfSteps / width()) + 0.5)*step(); else opt->tickInterval = opt->singleStep; } else // default Qt-components implementation opt->tickInterval = opt->maximum != opt->minimum ? 1200 / (opt->maximum - opt->minimum) : 0; if (style() == QLatin1String("oxygen") && type == QLatin1String("dial")) opt->sliderValue = maximum() - value(); else opt->sliderValue = value(); opt->subControls = QStyle::SC_SliderGroove | QStyle::SC_SliderHandle; opt->tickPosition = (activeControl() == "tick" ? QSlider::TicksBelow : QSlider::NoTicks); if (opt->tickPosition != QSlider::NoTicks) opt->subControls |= QStyle::SC_SliderTickmarks; opt->activeSubControls = QStyle::SC_None; } break; case ProgressBar: { if (QProgressBar *bar= qobject_cast(widget())){ bar->setMaximum(maximum()); bar->setMinimum(minimum()); if (maximum() != minimum()) bar->setValue(1); } if (!m_styleoption) m_styleoption = new QStyleOptionProgressBarV2(); QStyleOptionProgressBarV2 *opt = qstyleoption_cast(m_styleoption); opt->orientation = horizontal() ? Qt::Horizontal : Qt::Vertical; opt->minimum = minimum(); opt->maximum = maximum(); opt->progress = value(); } break; case GroupBox: { if (!m_styleoption) m_styleoption = new QStyleOptionGroupBox(); QStyleOptionGroupBox *opt = qstyleoption_cast(m_styleoption); opt->text = text(); opt->lineWidth = 1; opt->subControls = QStyle::SC_GroupBoxLabel; opt->features = 0; if (sunken()) { // Qt draws an ugly line here so I ignore it opt->subControls |= QStyle::SC_GroupBoxFrame; } else { opt->features |= QStyleOptionFrameV2::Flat; } if (activeControl() == "checkbox") opt->subControls |= QStyle::SC_GroupBoxCheckBox; if (QGroupBox *group= qobject_cast(widget())) { group->setTitle(text()); group->setCheckable(opt->subControls & QStyle::SC_GroupBoxCheckBox); } } break; case ScrollBar: { if (!m_styleoption) m_styleoption = new QStyleOptionSlider(); QStyleOptionSlider *opt = qstyleoption_cast(m_styleoption); opt->minimum = minimum(); opt->maximum = maximum(); opt->pageStep = horizontal() ? width() : height(); opt->orientation = horizontal() ? Qt::Horizontal : Qt::Vertical; opt->sliderPosition = value(); opt->sliderValue = value(); opt->activeSubControls = (activeControl() == QLatin1String("up")) ? QStyle::SC_ScrollBarSubLine : (activeControl() == QLatin1String("down")) ? QStyle::SC_ScrollBarAddLine: QStyle::SC_ScrollBarSlider; opt->sliderValue = value(); opt->subControls = QStyle::SC_All; QScrollBar *bar = qobject_cast(widget()); bar->setMaximum(maximum()); bar->setMinimum(minimum()); bar->setValue(value()); } break; default: break; } if (!m_styleoption) m_styleoption = new QStyleOption(); m_styleoption->rect = QRect(m_paintMargins, m_paintMargins, width() - 2* m_paintMargins, height() - 2 * m_paintMargins); if (isEnabled()) m_styleoption->state |= QStyle::State_Enabled; if (m_active) m_styleoption->state |= QStyle::State_Active; if (m_sunken) m_styleoption->state |= QStyle::State_Sunken; if (m_raised) m_styleoption->state |= QStyle::State_Raised; if (m_selected) m_styleoption->state |= QStyle::State_Selected; if (m_focus) m_styleoption->state |= QStyle::State_HasFocus; if (m_on) m_styleoption->state |= QStyle::State_On; if (m_hover) m_styleoption->state |= QStyle::State_MouseOver; if (m_horizontal) m_styleoption->state |= QStyle::State_Horizontal; if (widget()) { widget()->ensurePolished(); if (type == QLatin1String("tab") && style() != QLatin1String("mac")) { // Some styles actually check the beginning and end position // using widget geometry, so we have to trick it widget()->setGeometry(0, 0, width(), height()); if (activeControl() != "beginning") m_styleoption->rect.translate(1, 0); // Don't position at start of widget if (activeControl() != "end") widget()->resize(200, height()); } #ifdef Q_WS_WIN else widget()->resize(width(), height()); #endif widget()->setEnabled(isEnabled()); m_styleoption->fontMetrics = widget()->fontMetrics(); if (!m_styleoption->palette.resolve()) m_styleoption->palette = widget()->palette(); if (m_hint.contains("mini")) { widget()->setAttribute(Qt::WA_MacMiniSize); } else if (m_hint.contains("small")) { widget()->setAttribute(Qt::WA_MacSmallSize); } } #ifdef Q_WS_MAC if (m_itemType == Button && style() == "mac") { // Macstyle hardcodes extra spacing inside the button paintrect m_styleoption->rect.adjust(-5, 0, 6, 0); } #endif } /* * Property style * * Returns a simplified style name. * * QMacStyle = "mac" * QWindowsXPStyle = "windowsxp" * QPlastiqueStyle = "plastique" */ QString QStyleItem::style() const { QString style = qApp->style()->metaObject()->className(); style = style.toLower(); if (style.contains(QLatin1String("oxygen"))) return QLatin1String("oxygen"); if (style.startsWith(QLatin1Char('q'))) style = style.right(style.length() - 1); if (style.endsWith("style")) style = style.left(style.length() - 5); return style.toLower(); } QString QStyleItem::hitTest(int px, int py) { QStyle::SubControl subcontrol = QStyle::SC_All; initStyleOption(); switch (m_itemType) { case SpinBox :{ subcontrol = qApp->style()->hitTestComplexControl(QStyle::CC_SpinBox, qstyleoption_cast(m_styleoption), QPoint(px,py), 0); if (subcontrol == QStyle::SC_SpinBoxUp) return "up"; else if (subcontrol == QStyle::SC_SpinBoxDown) return "down"; } break; case Slider: { subcontrol = qApp->style()->hitTestComplexControl(QStyle::CC_Slider, qstyleoption_cast(m_styleoption), QPoint(px,py), 0); if (subcontrol == QStyle::SC_SliderHandle) return "handle"; } break; case ScrollBar: { subcontrol = qApp->style()->hitTestComplexControl(QStyle::CC_ScrollBar, qstyleoption_cast(m_styleoption), QPoint(px,py), 0); if (subcontrol == QStyle::SC_ScrollBarSlider) return "handle"; if (subcontrol == QStyle::SC_ScrollBarSubLine) return "up"; else if (subcontrol == QStyle::SC_ScrollBarSubPage) return "upPage"; if (subcontrol == QStyle::SC_ScrollBarAddLine) return "down"; else if (subcontrol == QStyle::SC_ScrollBarAddPage) return "downPage"; } break; default: break; } return "none"; } QSize QStyleItem::sizeFromContents(int width, int height) { initStyleOption(); QSize size; switch (m_itemType) { case RadioButton: size = qApp->style()->sizeFromContents(QStyle::CT_RadioButton, m_styleoption, QSize(width,height), widget()); break; case CheckBox: size = qApp->style()->sizeFromContents(QStyle::CT_CheckBox, m_styleoption, QSize(width,height), widget()); break; case ToolBar: size = QSize(200, 40); break; case ToolButton: size = qApp->style()->sizeFromContents(QStyle::CT_ToolButton, m_styleoption, QSize(width,height), widget()); break; case Button:{ QStyleOptionButton *btn = qstyleoption_cast(m_styleoption); int textWidth = btn->fontMetrics.width(btn->text); size = qApp->style()->sizeFromContents(QStyle::CT_PushButton, m_styleoption, QSize(textWidth,height), widget()); #ifdef Q_WS_MAC // Macstyle adds some weird constants to buttons return QSize(textWidth + 18, size.height() + 2); #endif } break; case Tab: size = qApp->style()->sizeFromContents(QStyle::CT_TabBarTab, m_styleoption, QSize(width,height), widget()); break; case ComboBox: size = qApp->style()->sizeFromContents(QStyle::CT_ComboBox, m_styleoption, QSize(width,height), widget()); break; case SpinBox: size = qApp->style()->sizeFromContents(QStyle::CT_SpinBox, m_styleoption, QSize(width,height), widget()); break; case Slider: size = qApp->style()->sizeFromContents(QStyle::CT_Slider, m_styleoption, QSize(width,height), widget()); break; case ProgressBar: size = qApp->style()->sizeFromContents(QStyle::CT_ProgressBar, m_styleoption, QSize(width,height), widget()); break; case Edit: size = qApp->style()->sizeFromContents(QStyle::CT_LineEdit, m_styleoption, QSize(width,height), widget()); break; case GroupBox: size = qApp->style()->sizeFromContents(QStyle::CT_GroupBox, m_styleoption, QSize(width,height), widget()); break; case Header: size = qApp->style()->sizeFromContents(QStyle::CT_HeaderSection, m_styleoption, QSize(width,height), widget()); #ifdef Q_WS_MAC if (style() =="mac") size.setHeight(15); #endif break; case ItemRow: case Item: //fall through size = qApp->style()->sizeFromContents(QStyle::CT_ItemViewItem, m_styleoption, QSize(width,height), widget()); break; default: break; } #ifdef Q_WS_MAC // ### hack - With even heights, the text baseline is off on mac // if (size.height() %2 == 0) // size.setHeight(size.height() + 1); #endif return size; } void QStyleItem::updateSizeHint() { QSize implicitSize = sizeFromContents(m_contentWidth, m_contentHeight); m_implicitWidth = implicitSize.width(); m_implicitHeight = implicitSize.height(); } int QStyleItem::pixelMetric(const QString &metric) { if (metric == "scrollbarExtent") return qApp->style()->pixelMetric(QStyle::PM_ScrollBarExtent, 0, widget()); else if (metric == "defaultframewidth") return qApp->style()->pixelMetric(QStyle::PM_DefaultFrameWidth, 0, widget()); else if (metric == "taboverlap") return qApp->style()->pixelMetric(QStyle::PM_TabBarTabOverlap, 0 , widget()); else if (metric == "tabbaseoverlap") #ifdef Q_WS_WIN // On windows the tabbar paintmargin extends the overlap by one pixels return 1 + qApp->style()->pixelMetric(QStyle::PM_TabBarBaseOverlap, 0 , widget()); #else return qApp->style()->pixelMetric(QStyle::PM_TabBarBaseOverlap, 0 , widget()); #endif else if (metric == "tabhspace") return qApp->style()->pixelMetric(QStyle::PM_TabBarTabHSpace, 0 , widget()); else if (metric == "indicatorwidth") return qApp->style()->pixelMetric(QStyle::PM_ExclusiveIndicatorWidth, 0 , widget()); else if (metric == "tabvspace") return qApp->style()->pixelMetric(QStyle::PM_TabBarTabVSpace, 0 , widget()); else if (metric == "tabbaseheight") return qApp->style()->pixelMetric(QStyle::PM_TabBarBaseHeight, 0 , widget()); else if (metric == "tabvshift") return qApp->style()->pixelMetric(QStyle::PM_TabBarTabShiftVertical, 0 , widget()); else if (metric == "menuhmargin") return qApp->style()->pixelMetric(QStyle::PM_MenuHMargin, 0 , widget()); else if (metric == "menuvmargin") return qApp->style()->pixelMetric(QStyle::PM_MenuVMargin, 0 , widget()); else if (metric == "menupanelwidth") return qApp->style()->pixelMetric(QStyle::PM_MenuPanelWidth, 0 , widget()); else if (metric == "splitterwidth") return qApp->style()->pixelMetric(QStyle::PM_SplitterWidth, 0 , widget()); // This metric is incorrectly negative on oxygen else if (metric == "scrollbarspacing") return abs(qApp->style()->pixelMetric(QStyle::PM_ScrollView_ScrollBarSpacing, 0 , widget())); return 0; } QVariant QStyleItem::styleHint(const QString &metric) { initStyleOption(); if (metric == "comboboxpopup") { return qApp->style()->styleHint(QStyle::SH_ComboBox_Popup, m_styleoption); } else if (metric == "highlightedTextColor") { if (widget()) return widget()->palette().highlightedText().color().name(); return qApp->palette().highlightedText().color().name(); } else if (metric == "textColor") { if (widget()) return widget()->palette().text().color().name(); return qApp->palette().text().color().name(); } else if (metric == "focuswidget") { return qApp->style()->styleHint(QStyle::SH_FocusFrame_AboveWidget); } else if (metric == "tabbaralignment") { int result = qApp->style()->styleHint(QStyle::SH_TabBar_Alignment); if (result == Qt::AlignCenter) return "center"; return "left"; } else if (metric == "framearoundcontents") { return qApp->style()->styleHint(QStyle::SH_ScrollView_FrameOnlyAroundContents); } else if (metric == "scrollToClickPosition") return qApp->style()->styleHint(QStyle::SH_ScrollBar_LeftClickAbsolutePosition); return 0; } void QStyleItem::setElementType(const QString &str) { if (m_type == str) return; m_type = str; emit elementTypeChanged(); if (m_dummywidget && !m_sharedWidget) { delete m_dummywidget; m_dummywidget = 0; } if (m_styleoption) { delete m_styleoption; m_styleoption = 0; } // Only enable visible if the widget can animate bool visible = false; if (str == "menu" || str == "menuitem") { // Since these are used by the delegate, it makes no // sense to re-create them per item static QWidget *menu = new QMenu(); m_sharedWidget = true; m_dummywidget = menu; m_itemType = (str == "menu") ? Menu : MenuItem; } else if (str == "item" || str == "itemrow" || str == "header") { // Since these are used by the delegate, it makes no // sense to re-create them per item static QTreeView *menu = new QTreeView(); menu->setAttribute(Qt::WA_MacMiniSize); m_sharedWidget = true; if (str == "header") { m_dummywidget = menu->header(); if (style() == "mac") { // The default qt font seems to big QFont font = m_dummywidget->font(); font.setPointSize(11); m_dummywidget->setFont(font); } m_itemType = Header; } else { m_dummywidget = menu; m_itemType = (str == "item") ? Item : ItemRow; } } else if (str == "groupbox") { // Since these are used by the delegate, it makes no // sense to re-create them per item static QGroupBox *group = new QGroupBox(); m_sharedWidget = true; m_dummywidget = group; m_itemType = GroupBox; } else if (str == "tabframe" || str == "tab") { static QTabWidget *tabframe = new QTabWidget(); m_sharedWidget = true; if (str == "tab") { m_dummywidget = tabframe->findChild(); m_itemType = Tab; } else { m_dummywidget = tabframe; m_itemType = TabFrame; } } else if (str == "comboboxitem") { // Gtk uses qobject cast, hence we need to separate this from menuitem // On mac, we temporarily use the menu item because it has more accurate // palette. #ifdef Q_WS_MAC static QMenu *combo = new QMenu(); #else static QComboBox *combo = new QComboBox(); #endif m_sharedWidget = true; m_dummywidget = combo; m_itemType = ComboBoxItem; } else if (str == "toolbar") { static QToolBar *tb = 0; if (!tb) { QMainWindow *mw = new QMainWindow(); tb = new QToolBar(mw); } m_dummywidget = tb; m_sharedWidget = true; m_itemType = ToolBar; } else if (str == "toolbutton") { static QToolButton *tb = 0; static QToolBar *bar = 0; // KDE animations are too broken with these widgets if (style() != QLatin1String("oxygen")) { if (!tb) { bar = new QToolBar(0); tb = new QToolButton(bar); } } m_sharedWidget = true; m_dummywidget = tb; m_itemType = ToolButton; } else if (str == "slider") { static QSlider *slider = new QSlider(); m_sharedWidget = true; m_dummywidget = slider; m_itemType = Slider; } else if (str == "frame") { static QFrame *frame = new QFrame(); m_sharedWidget = true; m_dummywidget = frame; m_itemType = Frame; } else if (str == "combobox") { m_dummywidget = new QComboBox(); visible = true; m_itemType = ComboBox; } else if (str == "splitter") { visible = true; m_itemType = Splitter; } else if (str == "progressbar") { m_dummywidget = new QProgressBar(); visible = true; m_itemType = ProgressBar; } else if (str == "button") { m_dummywidget = new QPushButton(); visible = true; m_itemType = Button; } else if (str == "checkbox") { m_dummywidget = new QCheckBox(); visible = true; m_itemType = CheckBox; } else if (str == "radiobutton") { m_dummywidget = new QRadioButton(); visible = true; m_itemType = RadioButton; } else if (str == "edit") { m_dummywidget = new QLineEdit(); visible = true; m_itemType = Edit; } else if (str == "spinbox") { #ifndef Q_WS_WIN // Vista spinbox is currently not working due to grabwidget m_dummywidget = new QSpinBox(); visible = true; #endif m_itemType = SpinBox; } else if (str == "scrollbar") { m_dummywidget = new QScrollBar(); visible = true; m_itemType = ScrollBar; } else if (str == "widget") { m_itemType = Widget; } else if (str == "focusframe") { m_itemType = FocusFrame; } else if (str == "dial") { m_itemType = Dial; } else if (str == "statusbar") { m_itemType = StatusBar; } else if (str == "machelpbutton") { m_itemType = MacHelpButton; } else if (str == "scrollareacorner") { m_itemType = ScrollAreaCorner; } if (m_dummywidget) { m_dummywidget->installEventFilter(this); m_dummywidget->setAttribute(Qt::WA_QuitOnClose, false); // dont keep app open m_dummywidget->setAttribute(Qt::WA_LayoutUsesWidgetRect); m_dummywidget->winId(); #ifdef Q_WS_MAC m_dummywidget->setGeometry(-1000, 0, 10,10); m_dummywidget->setVisible(visible); // Mac require us to set the visibility before this #endif m_dummywidget->setAttribute(Qt::WA_DontShowOnScreen); m_dummywidget->setVisible(visible); } updateSizeHint(); } bool QStyleItem::eventFilter(QObject *o, QEvent *e) { if (e->type() == QEvent::Paint) { updateItem(); return true; } return QObject::eventFilter(o, e); } QRect QStyleItem::subControlRect(const QString &subcontrolString) { QStyle::SubControl subcontrol = QStyle::SC_None; initStyleOption(); switch (m_itemType) { case SpinBox: { QStyle::ComplexControl control = QStyle::CC_SpinBox; if (subcontrolString == QLatin1String("down")) subcontrol = QStyle::SC_SpinBoxDown; else if (subcontrolString == QLatin1String("up")) subcontrol = QStyle::SC_SpinBoxUp; else if (subcontrolString == QLatin1String("edit")){ subcontrol = QStyle::SC_SpinBoxEditField; } return qApp->style()->subControlRect(control, qstyleoption_cast(m_styleoption), subcontrol, widget()); } break; case Slider: { QStyle::ComplexControl control = QStyle::CC_Slider; if (subcontrolString == QLatin1String("handle")) subcontrol = QStyle::SC_SliderHandle; else if (subcontrolString == QLatin1String("groove")) subcontrol = QStyle::SC_SliderGroove; return qApp->style()->subControlRect(control, qstyleoption_cast(m_styleoption), subcontrol, widget()); } break; case ScrollBar: { QStyle::ComplexControl control = QStyle::CC_ScrollBar; if (subcontrolString == QLatin1String("slider")) subcontrol = QStyle::SC_ScrollBarSlider; if (subcontrolString == QLatin1String("groove")) subcontrol = QStyle::SC_ScrollBarGroove; else if (subcontrolString == QLatin1String("handle")) subcontrol = QStyle::SC_ScrollBarSlider; else if (subcontrolString == QLatin1String("add")) subcontrol = QStyle::SC_ScrollBarAddPage; else if (subcontrolString == QLatin1String("sub")) subcontrol = QStyle::SC_ScrollBarSubPage; return qApp->style()->subControlRect(control, qstyleoption_cast(m_styleoption), subcontrol, widget()); } break; default: break; } return QRect(); } void QStyleItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *) { if (width() < 1 || height() <1) return; initStyleOption(); if (widget()) { painter->save(); painter->setFont(widget()->font()); // Some styles such as Oxygen, try to modify the widget rect if (m_itemType == Tab || m_itemType == TabFrame) painter->translate(-m_styleoption->rect.left() + m_paintMargins, 0); } switch (m_itemType) { case Button: qApp->style()->drawControl(QStyle::CE_PushButton, m_styleoption, painter, widget()); break; case ItemRow :{ QPixmap pixmap; // Only draw through style once const QString pmKey = QLatin1Literal("itemrow") % QString::number(m_styleoption->state,16) % activeControl(); if (!QPixmapCache::find(pmKey, pixmap) || pixmap.width() < width() || height() != pixmap.height()) { int newSize = width(); pixmap = QPixmap(newSize, height()); pixmap.fill(Qt::transparent); QPainter pixpainter(&pixmap); qApp->style()->drawPrimitive(QStyle::PE_PanelItemViewRow, m_styleoption, &pixpainter, widget()); if (!qApp->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected) && selected()) pixpainter.fillRect(m_styleoption->rect, m_styleoption->palette.highlight()); QPixmapCache::insert(pmKey, pixmap); } painter->drawPixmap(0, 0, pixmap); } break; case Item: qApp->style()->drawControl(QStyle::CE_ItemViewItem, m_styleoption, painter, widget()); break; case Header: widget()->resize(m_styleoption->rect.size()); // macstyle explicitly uses the widget height qApp->style()->drawControl(QStyle::CE_Header, m_styleoption, painter, widget()); break; case ToolButton: #ifdef Q_WS_MAC if (style() == "mac" && hint().contains("segmented")) { const QPaintDevice *target = painter->device(); HIThemeSegmentDrawInfo sgi; sgi.version = 0; sgi.state = isEnabled() ? kThemeStateActive : kThemeStateDisabled; if (sunken()) sgi.state |= kThemeStatePressed; sgi.size = kHIThemeSegmentSizeNormal; sgi.kind = kHIThemeSegmentKindTextured; sgi.value = on() && !sunken() ? kThemeButtonOn : kThemeButtonOff; sgi.adornment |= kHIThemeSegmentAdornmentLeadingSeparator; if (sunken()) { sgi.adornment |= kHIThemeSegmentAdornmentTrailingSeparator; } SInt32 button_height; GetThemeMetric(kThemeMetricButtonRoundedHeight, &button_height); sgi.position = info() == "leftmost" ? kHIThemeSegmentPositionFirst: info() == "rightmost" ? kHIThemeSegmentPositionLast : info() == "h_middle" ? kHIThemeSegmentPositionMiddle : kHIThemeSegmentPositionOnly; QRect centered = m_styleoption->rect; centered.setHeight(button_height); centered.moveCenter(m_styleoption->rect.center()); HIRect hirect = qt_hirectForQRect(centered.translated(0, -1), QRect(0, 0, 0, 0)); HIThemeDrawSegment(&hirect, &sgi, qt_mac_cg_context(target), kHIThemeOrientationNormal); } else #endif qApp->style()->drawComplexControl(QStyle::CC_ToolButton, qstyleoption_cast(m_styleoption), painter, widget()); break; case Tab: qApp->style()->drawControl(QStyle::CE_TabBarTab, m_styleoption, painter, widget()); break; case Frame: qApp->style()->drawControl(QStyle::CE_ShapedFrame, m_styleoption, painter, widget()); break; case FocusFrame: #ifdef Q_WS_MAC if (style() == "mac" && hint().contains("search")) { break; // embedded in the line itself } else #endif qApp->style()->drawControl(QStyle::CE_FocusFrame, m_styleoption, painter, widget()); break; case TabFrame: qApp->style()->drawPrimitive(QStyle::PE_FrameTabWidget, m_styleoption, painter, widget()); break; case MenuItem: case ComboBoxItem: // fall through qApp->style()->drawControl(QStyle::CE_MenuItem, m_styleoption, painter, widget()); break; case CheckBox: qApp->style()->drawControl(QStyle::CE_CheckBox, m_styleoption, painter, widget()); break; case RadioButton: qApp->style()->drawControl(QStyle::CE_RadioButton, m_styleoption, painter, widget()); break; case Edit: { #ifdef Q_WS_MAC if (style() == "mac" && hint().contains("rounded")) { const QPaintDevice *target = painter->device(); HIThemeFrameDrawInfo fdi; fdi.version = 0; fdi.state = kThemeStateActive; SInt32 frame_size; GetThemeMetric(kThemeMetricEditTextFrameOutset, &frame_size); fdi.kind = kHIThemeFrameTextFieldRound; if ((m_styleoption->state & QStyle::State_ReadOnly) || !(m_styleoption->state & QStyle::State_Enabled)) fdi.state = kThemeStateInactive; fdi.isFocused = hasFocus(); HIRect hirect = qt_hirectForQRect(m_styleoption->rect, QRect(frame_size, frame_size, frame_size * 2, frame_size * 2)); HIThemeDrawFrame(&hirect, &fdi, qt_mac_cg_context(target), kHIThemeOrientationNormal); } else #endif qApp->style()->drawPrimitive(QStyle::PE_PanelLineEdit, m_styleoption, painter, widget()); } break; case MacHelpButton: #ifdef Q_WS_MAC { const QPaintDevice *target = painter->device(); HIThemeButtonDrawInfo fdi; fdi.kind = kThemeRoundButtonHelp; fdi.version = 0; fdi.adornment = 0; fdi.state = sunken() ? kThemeStatePressed : kThemeStateActive; HIRect hirect = qt_hirectForQRect(m_styleoption->rect,QRect(0, 0, 0, 0)); HIThemeDrawButton(&hirect, &fdi, qt_mac_cg_context(target), kHIThemeOrientationNormal, NULL); } #endif break; case Widget: qApp->style()->drawPrimitive(QStyle::PE_Widget, m_styleoption, painter, widget()); break; case ScrollAreaCorner: qApp->style()->drawPrimitive(QStyle::PE_PanelScrollAreaCorner, m_styleoption, painter, widget()); break; case Splitter: if (m_styleoption->rect.width() == 1) painter->fillRect(0, 0, width(), height(), m_styleoption->palette.dark().color()); else qApp->style()->drawControl(QStyle::CE_Splitter, m_styleoption, painter, widget()); break; case ComboBox: { qApp->style()->drawComplexControl(QStyle::CC_ComboBox, qstyleoption_cast(m_styleoption), painter, widget()); // This is needed on mac as it will use the painter color and ignore the palette QPen pen = painter->pen(); painter->setPen(m_styleoption->palette.text().color()); qApp->style()->drawControl(QStyle::CE_ComboBoxLabel, m_styleoption, painter, widget()); painter->setPen(pen); } break; case SpinBox: qApp->style()->drawComplexControl(QStyle::CC_SpinBox, qstyleoption_cast(m_styleoption), painter, widget()); break; case Slider: qApp->style()->drawComplexControl(QStyle::CC_Slider, qstyleoption_cast(m_styleoption), painter, widget()); break; case Dial: qApp->style()->drawComplexControl(QStyle::CC_Dial, qstyleoption_cast(m_styleoption), painter, widget()); break; case ProgressBar: qApp->style()->drawControl(QStyle::CE_ProgressBar, m_styleoption, painter, widget()); break; case ToolBar: qApp->style()->drawControl(QStyle::CE_ToolBar, m_styleoption, painter, widget()); break; case StatusBar: if (style() == "mac") { m_styleoption->rect.adjust(0, 1, 0, 0); qApp->style()->drawControl(QStyle::CE_ToolBar, m_styleoption, painter, widget()); m_styleoption->rect.adjust(0, -1, 0, 0); painter->setPen(m_styleoption->palette.dark().color().darker(120)); painter->drawLine(m_styleoption->rect.topLeft(), m_styleoption->rect.topRight()); } else { qApp->style()->drawPrimitive(QStyle::PE_PanelToolBar, m_styleoption, painter, widget()); } break; case GroupBox: qApp->style()->drawComplexControl(QStyle::CC_GroupBox, qstyleoption_cast(m_styleoption), painter, widget()); break; case ScrollBar: qApp->style()->drawComplexControl(QStyle::CC_ScrollBar, qstyleoption_cast(m_styleoption), painter, widget()); break; case Menu: { if (QMenu *menu = qobject_cast(widget())) { m_styleoption->palette = menu->palette(); } QStyleHintReturnMask val; qApp->style()->styleHint(QStyle::SH_Menu_Mask, m_styleoption, widget(), &val); painter->save(); painter->setClipRegion(val.region); painter->fillRect(m_styleoption->rect, m_styleoption->palette.window()); painter->restore(); qApp->style()->drawPrimitive(QStyle::PE_PanelMenu, m_styleoption, painter, widget()); QStyleOptionFrame frame; frame.lineWidth = qApp->style()->pixelMetric(QStyle::PM_MenuPanelWidth); frame.midLineWidth = 0; frame.rect = m_styleoption->rect; qApp->style()->drawPrimitive(QStyle::PE_FrameMenu, &frame, painter, widget()); } break; default: break; } if (widget()) painter->restore(); } int QStyleItem::textWidth(const QString &text) { if (widget()) return widget()->fontMetrics().boundingRect(text).width(); return qApp->fontMetrics().boundingRect(text).width(); } QString QStyleItem::elidedText(const QString &text, int elideMode, int width) { return qApp->fontMetrics().elidedText(text, Qt::TextElideMode(elideMode), width); } int QStyleItem::fontHeight() { if (widget()) return widget()->fontMetrics().height(); return qApp->fontMetrics().height(); } QString QStyleItem::fontFamily() { if (widget()) return widget()->font().family(); return qApp->font().family(); } double QStyleItem::fontPointSize() { #ifdef Q_WS_MAC if (elementType() == "item") return 11; #endif if (widget()) return widget()->font().pointSizeF(); return qApp->font().pointSizeF(); } int QStyleItem::implicitHeight() { return m_implicitHeight; } int QStyleItem::implicitWidth() { return m_implicitWidth; } bool QStyleItem::hasThemeIcon(const QString &icon) const { return QIcon::hasThemeIcon(icon); } youker-assistant-1.0.1/qml/func/common/TabBar.qml000644 001750 001750 00000007141 12312451003 022224 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import StyleItemType 0.1 Item { id: tabbar property int tabHeight: tabrow.height property int tabWidth: tabrow.width Keys.onRightPressed: { if (tabFrame && tabFrame.current < tabFrame.count - 1) tabFrame.current = tabFrame.current + 1 } Keys.onLeftPressed: { if (tabFrame && tabFrame.current > 0) tabFrame.current = tabFrame.current - 1 } height: tabHeight property Item tabFrame onTabFrameChanged:parent = tabFrame visible: tabFrame ? tabFrame.tabsVisible : true property int __overlap : styleitem.pixelMetric("tabvshift"); property string position: tabFrame ? tabFrame.position : "North" property string tabBarAlignment: styleitem.styleHint("tabbaralignment"); property int tabOverlap: styleitem.pixelMetric("taboverlap"); property int tabBaseOverlap: styleitem.pixelMetric("tabbaseoverlap"); property int tabHSpace: styleitem.pixelMetric("tabhspace"); property int tabVSpace: styleitem.pixelMetric("tabvspace"); function tab(index) { for (var i = 0; i < tabrow.children.length; ++i) { if (tabrow.children[i].tabindex == index) { return tabrow.children[i] } } return null; } StyleItem { visible:false id:styleitem elementType: "tab" text: "generic" } Row { id: tabrow property int paintMargins: 1 states: State { when: tabBarAlignment == "center" name: "centered" AnchorChanges { target:tabrow anchors.horizontalCenter: tabbar.horizontalCenter } } Repeater { id:repeater focus:true model: tabFrame ? tabFrame.tabs.length : null delegate: Item { id:tab focus:true property int tabindex: index property bool selected : tabFrame.current == index z: selected ? 1 : -1 width: Math.min(implicitWidth, tabbar.width/tabs.length) implicitWidth: Math.max(textitem.paintedWidth, style.implicitWidth) implicitHeight: Math.max(textitem.paintedHeight, style.implicitHeight) StyleItem { id: style elementType: "tab" selected: tab.selected info: tabbar.position text: tabFrame.tabs[index].title hover: mousearea.containsMouse hasFocus: tabbar.focus && selected property bool first: index === 0 paintMargins: tabrow.paintMargins activeControl: tabFrame.count === 1 ? "only" : index === 0 ? "beginning" : index === tabFrame.count-1 ? "end" : "middle" anchors.fill: parent anchors.margins: -paintMargins contentWidth: textitem.width + tabHSpace + 2 contentHeight: Math.max(style.fontHeight + tabVSpace + 6, 0) Text { id: textitem // Used for size hint visible: false text: tabFrame.tabs[index].title } } MouseArea { id: mousearea anchors.fill: parent hoverEnabled: true onPressed: tabFrame.current = index } } } } } youker-assistant-1.0.1/qml/img/logo/component/cpu.png000644 001750 001750 00000000741 12312451003 023145 0ustar00saucysaucy000000 000000 PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxڤn@ b}EgA;wҾI@$HQ]wn$9]p/)V?%"Ȳ I1 "ueYBQp8avlv0uI!9LSz3L7XD^нV&e+1+):KJ%u4CЅ"n"iN[kB}FM >9ނW~=~/vBA,!~k=YD+|* F&l" {J.RQ<; jM$H& W<4[OJq S uҞD+F!`eT v_1R}Yk_w&c._IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/APACER.jpg000644 001750 001750 00000011032 12312451003 023732 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1q!AQ2B "3% !1AQ"Baq2$Rr3c ?ɵl!Ls ߥIE e.Ou|)==K^$ߨR RTe 6\`wReOʦ-&yP*HSA7RlH&K)A AwOe)GDA׺2w$TrH (2W.ԣSoI^T 7R0;qsg?cyYtRq,ǯWܷpb[-kl)))7J~{ݼMQ霓3Kq Fe`zto I~P\ Qa@Rꌹ$+`QLT7eگ*t DW(+G%ΤYюY,]:8;9>) x չsɳêagl^&P5ʌMW0D{n ̎ pso59'jO {yj Kѭ2dnG1 m e˨kd던Jeg.eϐ447({H/y/a^HrcWĚ-(&I)SL cfrl(|bf2+[t0>+\}ⶮ)\.BXmm,}(`DL]̼pna\RK]`ZyZ=?<3=*"jRM}xaQõx_B:n*Ԟv$kA甝cBq׷&82 z?pO~4 ;Su[WHg)QZ?(2MQnnhDcR|+3VfF1"pqH2g Ο|ؿ(>Cq-LGvbw &v—ɂO&DH/i[y2ďq"z-w=Y__^ f:DG9DNb`@ɾrX0V?5/ӆW'`U"9Xw95nyIb(RgZv ]Of)Rkyq JILG38Zfi dF.Jƶ7;5nj :B7YT]$ZPPDڈAFs(ÏH}5/*j#f$ˑk[.Ո|SoI^T 7R0MT$WY8iǶ<пl6\i3SlZ'4e~z`Ƶ}_Uϔ򠏴}>8:Uc7MQtI扏{?1vb9wukna1d@.(!L?Ŀܤk^J|Ep7?.FhGAߜeyzŢ3\G8!lJD:WS827 cS@>޽o洂jl%R%uCer)FIK2TPd];G2STEjro)a 6Hqo I~P\ Qa@Rꌹ$+`QLT7youker-assistant-1.0.1/backends/youker-assistant-daemon/data/beautify/plymouth/defaults/000755 001750 001750 00000000000 12312451003 032110 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/en/quickclean.png000644 001750 001750 00000021165 12312451003 022140 0ustar00saucysaucy000000 000000 PNG  IHDR-]tEXtSoftwareAdobe ImageReadyqe<"IDATxڴQJQ=1Dl,$ B AM"JKQ |[#I ! $Z&$("wP;{3sXMw[ χ3C@ L=:Jw`{MEӓبY1od;O!0FH(,.p6Q%!GD"/ht[E8|tӑL[_{؜/@(.#Ϻ-ƀ!l=0k؋2hR@ Q- ؃$k7t^`yI-o' ː`BnEV@`S)!YfsI·b Yz&)Xe5<&X BK=hr)rW.Iف d Aɲ X6J1;_ONDµ?C!'w_x fN} v#7B-1zVƿQA5 .pHꑒ#d--9DTa8=3 Wgba@}Մ67mVJO-^oi\Dk=x&ZAD`NB`x)HP+J5M13~;?lI0͛o{M}?Ml%H*?NݲLpX4i7xp9NF,Y5 l]j m)Y":s{kdVV2K_˧₃{{qJ=-NaAzz C Os ɑ.ӡCϩZpjFWp3[&}(=FdoLⵧ6zꋲ΍ڋި uc2If֞"1V!5)υYXC~d[`󤢹.ffnB-+p9-5qt_p)cHWiSm4Nr# ܱΩ6=3r9RW *$ʦ ~^y9g%R\犀Fn(kJC3[(NAiP9&"9jD Xr7'jžs&T [I<|onGGkmKK#(4NJ7^\B"bJѹ6;" y{? UMHDQb3ւ!4b'l܍_p8ַʼn(A Af !E&20<jT6$=>Fptkg˯ben6,kz֞\ j=Zb >_xl #3T"rmc7q!pD`7>W?s pf(V,,7Ko&`֑WLO sHTz%ɡ!rJ|/!3l6x_VA/ :5&M\GO{ Xa}|Ԇ[kv/{m8ȎE.t~2>l>O:xSGK9xY mL0R*8}/bPQ8B]x4Zצp1t4.6ϳh,RH1oI0r]\?}ox-ͮ2ϙ=;qbd/T]@|ßxҗ$Ҳ-oH!cp~J{{ 7˒0?wH~ǤWcIb$,9@ 6V^u0 'xi,'9ѤE4²Z jP4HO@**rfk䰱bsjm Ԇp#.Oq*4owʆh\#q8Nd*ên˜i΢u9]8;mR(6\U_0કG8d^uf"'CO=5 Q2Qk'eNS}8,K#> |Pp1m!Q u6ɏD?%&Mi 폦)JUER(& J>_3ca;v:7wJݝ۝}wyf8 ]jlϐ)z .q~s.yhz"]\TG7},T`Hx˨iF֩pAϙ ^(<./06 c& Q<cXtKJK1= Ie#њ\Z((;Vd@ vr-Sz.)vD Sx±Vo,*ҢPNGpI !@Qxm b,-Cz8jmVu6a6{up\K%B{b`Bw8QαV)nn4Aϼ'RoS5Gյ/{'QU_;w`,1T sFe\k8caIOˠH;~$6-c۶C~ uy0i 6_9P 4mldE:iB,ΛdH*VRıV?OxTJ}3|_#|5zV7ApBR> 3fc[U7@c=xF|0s>y`0~ƥ* "r> bZ1F`.Ljlz3ʆzpߴ:܉P\;%e7,fYa,eD3qkd9__>5=bNY^2qlM\ǥOZ\G;NfmnG`zo¢_ AQ[xok jj<آZ7B'ԯVXx+RmY=Y 깨?;P]*rRw؍єS1 ;5 U6QM,*Z0PB^<֠И%z+:q+`\׭a,}W30t1 س?``nڍ2K4>~/U|/taj0osމ8 bY9.>rCz ]z{XFY͇sR 3\E ܹD O͛_vw]9wQ I1Cjf< ̤6G';v gQuѯ.#<1[LD Kq+sOn~(n5ƿU\1Ca]Iz@b0:Т~7&B'1{ usNe?~阆 cACmh }_Q3=RRf5wK<6mG.˦m~ ܉a}%Aо$2lS[< 9ub$fcɱV+J$mw '1ՐwCnPŒҔKIKˆ 0J6{J J7CY\eT#km5(KU0<he='q.\׆9ճcu/| *v&4!mk^e>sF2fqp+%պTRH[ADܒ؈fd\]&3d:D2r/'`~lJw1С8=E)*- !VXܺһͳt2M':Z'DCg$3; 2ހ4icUfCW)wۼHVPz>vyne98±oj򎨭`)]X>0o\VH܉S$t` [cJ44_^uJnl M}(*?BW݀y\)̿u\qȺ&A7:Q$KT&T4׈,αV.-ɲETqw%P͔XO5@,υa锢x)$Bͅ)׊9Ռeon&Qn1@M!Yl؄䬽_z44;B,G]݀bfשuB1EĊJ/a>T lI\G1ʑ - ۜ%OZTs&8Su4)?R%å8RX?ŽD/uc+] pT]6$&$i6MEy`AN;c-`k}Juک8EU6 EwH̛BvCk9gwݻYwsw3x;&f>&Y#[`-Gd" &462|r&\t^3QVӉ}O)ƶyY9(Q[a[2L3_U+DzI#ف/a[ulJ¨lb>`'@ p2%)JbeQ[ֳ-, 5Ƿ_MLiI5A.)-p aY'~5:9 Ps4G1>ǵPu[heX%2UT'Y1(OH8b'34F7jgęqYHq8;ǵ?0=qEZ@UzP@5 .%8i3f;=}ڸe?_g5S Wx ۺDjѻ~^(!yZ^B~oV#>o-nDµe>Fȓ')n+KpkqDrO-gm֎/XOa l ,Nt՝?o-'䦖rw 4%}sA"o2ǽ !u~+ pֻ/ Y}0/mg?SW9vԶ5~lްTФaAU7nN\krpY۹Ңt<ԃ! Г/NwQqxdq_*p!^]ь@N58z#= Г;Owy'8 ]eK ]-o܈xGqC>ZM P>͝Gz˕4T-!QRynnSWaɃ(h^zY++qv!n&Jp/í|;wd 3]eqLBd"A7*WS{h)hL1nߣ&ufʧ=C<-!2]^49ywj>5(~b<;>Ds>PB&:.5Ln]X[*2۱i" ΎW6+?~bt=[?E~_˘< }6?Ε~i7eq/p⎭ɩX8(H[J"I"-L3e)F8SgE"Gou4G{bOx1tYO5#pڟNŖ*_,\l{$hj"YwitWZBK ]- ]Xsw\vnI*vԺ6V>KߊE8\H Z 54EJM9V'`_ V2Aڰ"Q|8-`.,{THyfg@;Z.}X-?UI4B% C(L [j$gcynڽu읔)Bɕ~q50vt2OX}<$TeEGDps v)[-E/gAðT!mby(Q_%jX(F-z) 8vxblf`* (hBm)3`7rWޗ;!=rTVh:G"Aܑ`xݓ Yy*r;=9''2¢o8pLpP)74Atz[^S΢ DږK*!(g0+Z`jY1YTlT%OT?revo,11j {IY[%/D &:!m8ĊIa4剳o̠9qWwQOMX()k[("BD3[iVV&FZ.S\}â֚(i݇!Yz.o~uIENDB`youker-assistant-1.0.1/src/warningdialog.h000644 001750 001750 00000002354 12312451003 021130 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef WARNINGDIALOG_H #define WARNINGDIALOG_H #include namespace Ui { class WarningDialog; } class WarningDialog : public QDialog { Q_OBJECT public: explicit WarningDialog(QString title = "", QString content = "", QWidget *parent = 0); ~WarningDialog(); private: Ui::WarningDialog *ui; QPoint dragPos; protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); bool eventFilter(QObject *obj, QEvent *event); }; #endif // WARNINGDIALOG_H youker-assistant-1.0.1/qml/img/sysButton/title_bar_menu.png000644 001750 001750 00000004641 12312451003 024422 0ustar00saucysaucy000000 000000 PNG  IHDRhHtEXtSoftwareAdobe ImageReadyqe< CIDATxb# {++X83zPbMbddIE̫ŽS@R^m+l E>_w?_Z ŵ~: piẌ́ ѝə rX'#߿ rH @gxeT|z>9 hCԴA7,A঱wc }n(2!=H@01P@9G$6Ӏ,t!>Bz"t,L tϦ|{gyLjrs?PffPCnHH(x=!=mmm@=~ 0= 5wo2jCݽ{-(h޾} j !=/^?x?L4|ZuNǪ3@Eܹsٳg۷)YbŅ7o_,L B11E: @S?E^~tNd0~Lϵ-I I2pNiP C:E R,0B*zxƠ  \POs9)|g?,| #Zv \u$1?x hAhG9А@r4@0r( }QQQ|ėAxx7x/3b?r|y:08CW,j/,߿ldgGj)ϟ?젤+~Ɏ`@Qhn@!{$*ɵC4V(AC ;P ~ -~!mR0AC dקfOS@om UÌJFF ğbX .Gi&{_GE XV-bP|Q̌˄@k?H΂@ U|P !rV /<Aӊ^P&m~m> v n|sS]"dܹs/_*C9bccyTUUY̝;Ǎ7~5[+++Yddd~ tmı?_ y1x$/a}QZ Լ̬$: I`5c)aO84@3+塿r"t~~WrtP66@ {XѲ BT0:?pTB)\ؠm3A(F4C J)%~.~-i޳ Q y'Mdf MbA $ PXKLQ}Nm;R b$ąbč]Q " ;a%6.@?`\DJjMԶ0ixIj$̼y=J51tXMV_SU:f[2U͉xXV2 IQ͘gFJ CzlnVMQXiUf=MGjAU=Θ#;+Q0D75歖Y^ǻHGolKf/1#hfpKd&I*I/ts3dDQM-/mh4;V2ľ^x"T!-,BҸ&7PYn}61u;nllҢDžS\WWǶE`A>MՈ`'FxS|F:i1N/ML%L9 $~, E4r*W!X*uF\. {|*{~7֧ z,NjD$1 0m*ţvR",2":?9V{@ .P-JmTZ҄=7wa%(Ύ\(DyaQpD}>fR'-//9pBh$*++Tʮ\L|Њ )\Y^یR(O՚ }CZ5Eox4 !=(/UL gEcd˴Bz~64$TIENDB`youker-assistant-1.0.1/qml/func/common/FontButton.qml000644 001750 001750 00000004252 12312451003 023173 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: btn signal clicked signal exited signal entered property string text : "" property string hoverimage: "green.png" property string fontcolor: "white" property int fontsize: 12 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } // BorderImage { // id: buttonImage // source: "../../img/icons/" + btn.hoverimage // width: btn.width; height: btn.height // } // BorderImage { // id: pressed // opacity: 0 // source: "../../img/icons/unselect.png" // width: btn.width; height: btn.height // } Image { id: btnImg anchors.fill: parent source: "" } MouseArea { id: mouseRegion anchors.fill: parent//buttonImage hoverEnabled: true onEntered: { btn.entered(); btnImg.source = "../../img/toolWidget/highlight.png" } onPressed: { btnImg.source = "../../img/toolWidget/highlight.png" } //要判断松开是鼠标位置 onReleased: { } onExited: { btn.exited(); btnImg.source = "" } onClicked: { btn.clicked(); } } Text { id: displaytext color: btn.fontcolor anchors.centerIn: parent//buttonImage font.family: "Helvetica" font.pixelSize: fontsize text: btn.text style: Text.Sunken styleColor: "#AAAAAA" } } youker-assistant-1.0.1/qml/func/common/StatusImage.qml000644 001750 001750 00000002321 12312451003 023312 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Rectangle { id: statusImage width: 70 height: 20 property string iconName: "yellow.png" property string text: qsTr("Unfinished")//未完成 Image { id: statusImg anchors.fill: parent source: "../../img/toolWidget/" + iconName } Text { id: displaytext color: "white" anchors.centerIn: statusImg font.family: "Helvetica" font.pixelSize: 12 text: statusImage.text style: Text.Sunken styleColor: "#AAAAAA" } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/BIOSTAR.jpg000644 001750 001750 00000010147 12312451003 024110 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1! AQq2B"$aRr341!AQaq"B2$#& ?NI_OfJAuOV$I~`h\ H@bsN4H 0 Q\>ީS`WŤ@_UkA5v'$ ? S$0q`4T]x$QP 19$(] HTfbiUɯ*BA5TM iلҐ]CՉ)_80*W.C(fӍLW.$wTx3U㫻\}zFfd \"dMRŪUӢ2zF9a)@Gstg2Z:vv3ՔcR,+m^gF<\IU4"qFjDȬ ;s&]MR*!D@8.;FpDn`d ݖ'/mz<ӥHZ 9ьDDtK"WDl(IhGjVJsR6G {#T!r涭ץJ7:z`F^ g؈0(ww͟E.˜Z ' T?0` R`^XNC!G>LUYJԒ.UU"cfHĒ)lz_%GY~>) U2!wsD r%zL0H1T4\EiS) S{C1.0 +VW7L:AjuGnˎL)kQL*PN3gRP({ WⓛmS'5j?:jiKPL8@ب}w4w> 񮛫^?鿟q'/nXOu7LCV׃3Ac/eӺ[:kb %՛>(XN(FFR$.}kGRoim(*aNыn[_GocpwZ;V׶qi]71sZuW ~,>M[Mdnd)[niZWHKu,gݑ29%d1BX@L[ǤqA|ݧ?,Z 6 Uf^ {-wdwE-cYHP0(;$J>LW `.j 37o=k.O19c<4z`d^6F^8-΀Ʀ'G}5M_Qb\EJH!.VX}nެ͎H0=/1!8uciJ:r:Ehf†ω|F]6e)KY:KDcPJ|^}ێ| a|{OU5ί1ߺN큫tlVVhmL2ܺN*#,[lKDJw59wAKAAh.6X[R+{{r^uμ̛k+.qnteqq.$h,]_2/*?-E;lSjIP+ycËӲVbmE*ـ{{3ϔ0D ^n=o;BZē% zZySD lhw<յm҇I# 2_V'>`pYLGRݱJM73k-{ jK:ZfnVJ۳>dM]GtP \rep`V,n\Ԛ. * 4E:5i׍a TN0Mn >Lkq⋂]:mdշIJ](1! ]})c+*;sV3 Q A<a1 Lw]CIp/ KnwZӲk@gkX$iIfǴ++RbLlLI0] hyjݷڦ{"#Y MX]^)Q{R%p(PřV/)#62~OxOne_8lLr *F *&MG݉4kOH.ĔI/~ +^!T3H NiƉ +@;*}<lXcyhrkb PMx`H&A5a'PbJy$? ˯Ċ*'4Dˠ{>? x,ZM1 51QH&0JQbrM {0R zz%o=A'wYe \˅Ǩ?w$N)w }r˩(5zkHzu^[W亿v?1YElsdTNiJx -\~ϭ7:)g7,Z}e8c-}_E=ٶ~=xJ%~unN9eUKfmw~]Zmv_]Mw_]?ٻoʫKժ3gS4POv;mߣU4Qm[,sDv}a;"9vZ>eO>Kꮦ8\@voorr<L/#|qnR+E76,s*C\Y;=C t_V1.5,w-sqT( (N][Z4155goYGqa GǧNQ}O?3}oc {l!ͮ67~ޗ1a5dz_ѭt 'ϧwլ3Ov~O}[@~ߴs(u41v. luMDo=A'wYe \˅Ǩ?w$N)w }r˩(5zkHzu^[W亿v?1YElsdTNiJx -\~ϭ7:)g7,Z}e8c-}_E=ٶ~=xJ%~unN9eUKfmw~]Zmv_]Mw_]?ٻoʫKժ3gS4POv;mߣU4Qm[,sDv}a;"9vZ>eO>Kꮦ8\@voorr<L/#|qnR+E76,s*C\Y;=C t_V1.5,w-sqT( (N][Z4155goYGqa GǧNQ}O?3}oc {l!ͮ67~ޗ1a5dz_ѭt 'ϧwլ3Ov~O}[@~ߴs(u41v. luMD 1 93 70 1 72/1 72/1 2 2012-04-16T09:35:02+08:00 2012-04-16T09:35:02+08:00 2012-04-16T09:35:02+08:00 Adobe Photoshop CS Windows uuid:d94422aa-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:d94422a9-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:65807ff1-8763-11e1-93bc-952fd8ae208c image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثW'NC&I?ӏZw'N em;tmmk'b1=@!,[w 0𭰻_̳]IgvԹ)q:_%8K/O8ih-,+)g[K9-[pZ~ q/?&Z/7,H.? GF+%NJoӉyG˾fP~!ŋI[rK%\%wz<6V7W*8"DNNiN*@ew$A˩F"PUs4bk$zfCs!d}Rz'厓zm_ZO\Ge~S]WlQomoΐk-m4inc.Z[CrÜNoַcaK-ﴉX$v1Ky+3Gaߒ-uI'o%Y4.B|gmH.Xc8'yeaYo4rq܅^#r>xD;LOV("qF#v (/yc"Mev(v*UثWoZ qWSqW5d8l<AXx-?o5cny?m?2O -tXam#dV>[wwH|'Տ˿ú??|0ysH?)$YwsGFI5` Ú7?xGs]qWq8U}*>ws]qWN*UثWb]v*UثWyouker-assistant-1.0.1/qml/img/icons/previewzone.png000644 001750 001750 00000105004 12312451003 023102 0ustar00saucysaucy000000 000000 PNG  IHDRr/tEXtSoftwareAdobe ImageReadyqe<IDATxڴVKoE{;~IXJr@ƄG@\r'#$!`L!Dؖ8Nlz;W3zm`Az_U׌.i?dOʺkMR/z%ȹM3ZM5ʵiHi;*s >DVyxR 4 *-)hP&]'SЛSc ر۠O/"_ t H(p:&!*KȏEx9r1pxcmJN<6 W*BLfF/ ]Ɖ3e\bd %M\2X#Fg d90Yx eB%8T(nWGT"63dgoct|/=.(O$ڗ+˒e4{ہzxQ\:S2RC1+GO:<&ǜt6}%G*^E{0dwf?;lSZfv&3<>1@W>x/z<: _խ}:R74"A}2#")Xҧʷ4Eݛ=E E-xZ(lڭ/,bò%8mq|HGtȡ0zI ĕ#|O EX˛}'M`QW4B' )x; uXb`L==m"}`'*M".aVbK 9>.hQ]QG?T Ce(Bǀr9ZaGxE*5zaAR5lW&f Lia *i1 >ţ.e,!bD \&660AY˷0J6N]!%@Ȍq ]fkCh {b v򙍋_\n |p.(i1[&LqM8d%#р|iV!^D3ef77Na+/d[kqs[X8/ >2զHg\ߔ2% I b(ZNZ0ڃ~ qy /'ky,4oND˷Mu>ZceI]FXʬ˒fGݒDla2xߋ 8=6eO.9R%'=-=~;XlR^9XY yڡNkz+t eZ[U.0+ߛvdYqGrCi8i/Sa4ڰ/DŸ|,|0>V 35B"G#:+u:{=P@b3q\2p-i%Dhmitp#C.!0e#K NaPӷK"tZOe!_z锻{u}."r+=ĵt3nN.2ۃppF\J*Vd8UwV&V09zv{j܂}]SEf2OPEus.&]YvpkĘ%Vͭt&WvXYaj}4iT,3w!Wl,2L W_NݜDq(֚㼺Ýn ˟aŋxyWJ/,EN.X~-㷠hԲzBhĹqwFdB ̻U GzSF=:ga.ǰcEȾ4ĽqK#fX8*7ؗ޸1Q;B?q?섓#`_^h xd6F_q'e24=!pV &=5$l Xk!͐EzEνpxhJeu'tǦ\v.SSGsissrdž?G|02zG}ηϗG?| u˵^m{c( b=k+UnZt+Ye̓6bh1!~7L[}wzcrt(׭.joG_yfD$*7\=6q'1M 1HJ YX! HaĂ +ɆI MNnW]9vUutPRwWuw=w۪ ?MdF#aa`a2߼K!ivyatĩgVjN5K_ۭϚ?`z zۨ z8K=a'hf7_K@iI+s,lcan7zKBbBqɏ@ uꘫZͱճl,^-<,L`Pn9r $@\nON no /;2^j39k6(&ll!2m/QS76ȩEPث HZ lrFoAHӀ̏\PԠ# `J6V!X&+00X6LlA֣U86n FUoq,A4 0 .$-)Xţ  I%\KNT i8i_c#.a- CE#t\XBtfu:ȴdعK{qncG8G~>:C^S ] Or:Ԧ^\dk#bO΍:j:K3=ǡ=q"d< t3/b챉ֳ}4bNʀ!xўITӆft5:Z!f-hclc('iA}e21f-fXU# 恑APd@8:ٰtih!ópQ{e.,f D"O c33T cg=7NGP1`#̏3kJV }s"sUȴ kdn>A' rv>)63s0Y2¡s%X(C :ۈ&2ajp脱cUk͡ (ַw7neaDc-Irj,@.͓_$h"6AIW i:*?B GPسG(u}8|4 P( r.Gì<6;C(:&$Ée\)8"WoMIc935 #cE[_PԔ ŕGQ'n-U?kn_Nq #!bGsL:T\[v*a8zMΛQQ#AJVvnGny+7siZq~!Gm@+E1YSoGؒL[2O'ۉXG3 @[h#Ybm0ɗJ}`-- 2{ma#$A;p%q2?B\.I8R+9$D/qxGB&**ْf(&VWVaA|wma?P1N+Fbr,/GZ x]c&L(vlm~Ą_Ǐ-D 7BiB6}E~ ?" K(LObZcyDo1xbnpLKLZ<2 TQÓ"3RHIѐKA/C%~ Sт#?\J2M칍>i .'Bţr.VVC9J]TorXt}j&pI ?a ҧh',ܦH:c˸0Z*)zIBil*cvBҢ,LKIm Y!L:?MtiÇb&na}u$lُH`[P dSgs\qCi -X3 &ܫ,e|Kh4S.T߱fJ<POaVv.2ݽ>&ﺯ[_3dZlk>&å`|2zerںr`zf7{#>´!wxÌp_+c~]\Ma8q:tݺO^#ؙ̫ _-i+vI[}_b"_w>wR7G_o; -sݜqNpgNvz\o=qq}] Ӟ'k=)[~Gvz|L9ޟ{+PaeMa۠G]`!Dʧkkc +cKlŶDx1 "!?7dQP@ H/HD  !p"}0AްqlٙSntg73o{|5|]!giOuuڦZ .9u7ךoĥBz'Ϟ~ϝ}Z%S~un&Ixx-2ŧTL1V>4;3x4tnޛ̮| ckAQxO{=t.^Xe;T2Hjt*l2\\ߕ`( 8S3A,&UpnPW>18q謙燮CAT[߈E8ܫ*t96FI况,n(kxn-?1YBRuG =JyXtBF>o3܂n 8s>]ЧeTT^zámgL)xxwL V=DN-jP ~Ae +V`^e=<*tGو= qAv"90A ˠ!_؃^"Hf]rEiu<+N=1`doף| |%\͐MYLarTn=+[юdm50BnfG#h\~FhrUW }s@{`׳F&S2MhV%8ۣĢE6>,re,bylo_b>3#Z0ΏupCFʱ] R"!-*+B2ȕbpeCآ7A4[Tdho)츜6;bj^.C, }X;e`%i3ՙ3::*@_ E'(ODYM:>o6|뎲F!+i&z?8x2p3_qQs!D0 'b|J$x;'!˄{T|d Y^ .UA lX0(-yŤ`BZ3F9O4@Bb GE _ $F[MŚ%0xK=39bJx}|g3WL:rafd29i'IuZE3O7o3`v S(A`^%y$HrjjHtCLYHtd }ׯe 9'M}&RtwR*j^plNrXm[h$)& ;Myཐ6e>0%^{{\l׵hR+٣23J4V66eX( mZŖS >B q04RFC=@ϓMhy%-J'R}1B֟ cA  B䲨1;uwޔRK̭صQ<3͔G&+k͛ k,(- KY[ȷo&=|K'l^ur QȎ`82uQ3j\qɠKJנ knuFw󧮝5E2P-t-y SFb־ILZ.)+!OsZr " @.P/a9^ ?"Z=MnنuV$hcj{,7j r;a-Ҫ% %Qr5U([:Lyx^pu#%u"]h"5m6L9UaRh U@ZzBT&a.')o4B]Ak\ o6 Az8!S&&YTfҘBC?ČGk݀;Oc69+wҮ"7~ a.DXJ&hKu+=s'L: MJvC=y ;* ꄝbFs FefJ{|Ѷ̟'L=I#6ߡ|D^G*+J@?1TQ|mHЁ<$D NGFV9Qsf0,Ǽ.=OPÈRMPs.}e3~Mdc\z֡QF^aQ3mڔ6#MjY WI}/alwGק)#ui^rHmY;P*tg YOMЦG H<)ZÔEB2@+(ڬm0blj-1vyzL;}W`D-AQL;@{چQʹK\IGN~(oesUc%]WnnI4̀E zKEl\Gn1[8IA ?h2SK!_L#$\-_r;[ੇm+pdղ5t %8Cw@_3{l7&`&_fW la`rF WH},I'M\‘ R *c&Zm_ 5^MZeƯ``"dxWO^ 9}Xo2Dl<8SKnAP`2/kX+X J)fDC,(df*UgTх dx"_ CjLlڲ3jbH"]̾ۜ7atD]>ms/U(W{ՒuÖ c*x=eٴOr"> aP=TPCC#-s CY|QIb Y`zh쯌GyG-_KERTPf\ *Q ,0D]f T2F>Y(ph K{x&rj`s#tϏzƚ}> KXR>S$3Bzh+_}pU_N2L{ pLc0:]Wcr3y_<  K(a pҎa*Z[)+#?seE~0Cѥ CX27yTJ{uj7܉[̂/yGnk&֔M73|p=(_И|Oe7)*D'GrPEDJkw1eUy}ι[ #3cT03DPFC"?1#4&*( af}svg;U] ]LvU}^}jnb=QfE_2_G^Y:N po y6O④?E#xW{(1{ﯽ>OW, 6 M'՞K\ )o>_|;֏ >{|V'Zprw%>۔7cw`;-L%~o3&?΀SȱcvSm%peߒS>/Z)'[}q`t~=;p Sтo}.Ko<̡=-9Y s:~v'LL-u쉹X~J[~z&?=|E7/ҶH҇ 9蠭<T1*Q5Tv?ʩ}5%0!Pz"~t4Z9.5֡H]>~smgΞ7w"mt#- Ht\_l=0z ?/q6Q4S*'L,=M+0:*l,,JH1׆jQ Uڏ~ƒ܀B!׌}`Sl#ywpJ4#SeQh_&` Lm7hmX4ă$Đ'#о.KE}CW1}mMa#R\9UykԓjΨө0 \W=!U+bU=j~B:E=s4e{UpKAŔjD{*MT988E+ ٬L! rw;d=n (NF"abv`)OWU哣#AQl0 7?z%z9:v r:ߜcr/*w w!#(b`$|?A K[Y$ ])4B@ $RyS kF\맮޷PoDG~Z6 ?rz>~hFi:[gw(hPϭ`%t8Ֆx\agD?LYA,Mi3ª!sD fYɧz~(T;re}*4 . $,q*!_2H2 %63£:jm MxU@b)B ^p[-E,CcrW0rlI aeD} 6&G# G"R~ H(k8aj2F#ؖ+`I)e@OUj" WG(wZ 8%hgݎƩbXɣ >r#to3<="-#΢02I),- J8oR:j='GAs|$(~{8wp6v0/P/(Fq N#u,B0/WHt dlSiIT†X3]H=#jO,"B^@O|*0H)r2@}I(D e@ʩ#e,b\VC753)ԉQ^ɛJz=w ;iJsdwCʂ1,8 ޥC5c"5n X1e&bKR]%`YU%ZNG5u(`,^?f (]wj6.yhؒs:e퀟=;m 6n?A-]e'VK45 \񔥸kERa#;w; O.^"K?9'|!r:DF0( zĤ V>fնU*N]+tS!1(wY3jhg% AٲqxJeӀ* .ČSmLMC5 _CK(vIiBBZ +- ؂J~Bo1ڥ͕v FWs!tQC j҂vѭau;UCy۽{^r+!sA:*w>nY3 uT#}YJ ;fc%* bfĐ ]:RNvk)(L+vUԙ !5GPJgy_-]d0pRy<=~tVVڣ*9=(Ю֜KEփ V`K@">!T & ,uk^X%]=`*+&HMm Ȫҁ09(]ts'Ѿ&33݀LhR<b,uZdJ^ŧu ls KVoҫ" U=δ h) T8X#B.>BԁI[+I%RGNAw}:/µKqN&-eW4y؀/vB t'Pr6 :J K=+G.WC{]$֥NQ縍#lB)I#!xҺ [^nxJq$IGQ3WQQhJ|X0LTSy0T"5"}!A!` ^N=`tóC8C1͒E/%~HфzAe9u3yw9s<<@~']Ӭd= 2]S&)\e|T9q K/@iy# "|-E`ܪsY )AbУ=w- [/3 >PJ gut)xQe/Ya){AgoQ#Ңj4ޮx(ʐJTzA9z9xf l(6 U*֘!'=+@DwEL>{Y_\]F68zYH G:8vJbOLOB*,Jbp)3wvp=VFg"%wpgngh\,' ]B0Nx: l< G!IDXA6Ʃel0l%edܼEVXxzxpGV'a T<o;t4S^>GPz'm6P.5\_k/߼ÒK濴,SPho[KJE F mE+‚H*HCLUF: 5BՔk@N<}G{EI>8T6m$>%WAvL]n)t5X;,=Jh=;+TG+wq6Hi8QQF|𧵃r'ue|Kj#x/+!Կ/f#lK88;jUvZz,s\ w[E} 3S)p,~…Qz8N> 'w~bSxuǖ c'pX@fNZtUqC'bi+dNKvBX72Q7 kȮRTqV3W2Qu+xZTڱ*~z_{8)O9Rx7Y L$IFrth<^DsdL^Hvݪ,[I׀  -H)-0\u'ފ*I\a+ ~/\}޺:/QÐJaLNݭٺ˾.`ez$y{˦r /L IMJ*k0ZOf9MzтR&qQ߳d1Qo՘y>Æ*/>>Epyo"1Y0qO4DզUjXi; #z5PԌHV}ݔƕ s 6 '8hix  r 'sH\h[mer 5]i80SgwW@W9Gv HyjOi-$s R%Eި^QZtТKxZ@کt(ϟNKWF^`9&> QCTISܑ*3v@%Gp|!Sf{sW3DHA6i>0p+s:2X71hԣT^Q'Wc/^fG\kN]fmrB*jh FVzn(ߊnѽ(f2T3Ș0QfM2E3X͎dܐy8siЗܞ:kҺ h6:a~-tk}1A)G&cʙ [t0gCűw9 N{^~U`,v}F(:Oo]i(9>wPe?R)@_PlXX{6R-j(zL^Ju)C-ݢ}qLP (ԀdMq/ˍ #Q7N[Mw݆O?}3 "!RNa:_v< <jKlt]=SZTD l /vD[FJ fn+؂/ӕI3P[-u̍NP }tDR*96/|!VS~?!Wbf|3\aԹiŧQY3XG3-ui՜7)1vִp Ex8kwncÁyl3N᎟/@̱L86Sf0>TW\|"N]w<`!iza֑65cOTS;1n"nHDt+Z(0AE=>K>QA43bdC\^/#/Q<6FPe۵/*]N7FRY?KS3UG SeEDrm֓~'єp0*㈢y19”4%$ԖCs3\ODymg8/8 w.6w-Ak}QE(3(P%Y5KatuF 46kThNPs>fGp9Zys4\{e+͡vXL2"1.q+Ξ;>(n(nP܈Oh-QQk݂='f@~6ZMV'g~: ]/YGP(ԩ.}x> Xxÿb 8g-X$\~A~t#LrU;@Sְn ]PCpN3opba7bVv r:Vщ9B  ez|C+2} *>әm?@A~`'{ ֩MǫЉ uv*RtY.p*L@z:au9L@g~Vcj `YI*04i\:z#OJԭC)%r^W[sp9 *zK4!k]A\sirZ4-rIKvg_.CVVdG/Mûwjc.%p6pW ,yMFK 뢌HLq*]R'o`UhDI Vz!,`\#9OtݒᅭusIeDdA.Y<ZL-Cڦz+e~j>趁 \]:, % 9HI )g^.ژmwOӟG˟<z< X?BkJ%$C8}'~Rc] eBXTCjQo3͙jdc{(CY84߂SxPjIUunU-}8K>wWr~of:٬Dv9KӚeRt"yq~qo%m7jH*"hÀ.U=`i>Aqq^U?b#kjX<2O]7;n!X_JN> /t^౼j#{\s- s'ʢZ(^Rt {6$j=)P#o*HPS7l004gD͹TK/A{d_9_}|XN_%*V =؜Gy :Hs7c*W2'UT%~M56ȯѮ}ؿnGqH=uՑ:MO~b&Wy%[,V %V^Qm!.=wTW Nh`'ʔ JzQش@xߊ~\yHşp|xF7lb7 3z}r(OuXRuN6y+1_i>BlӍH&.b}ܝ36 bDnFIcvx_WDïҠSʇ<äS2Cjg51(qo Uq#!;E n,@C҉ٳPJdHdGm&P!g~ äUGv87#?d*+8:&`PwI5v:۱?v2*޼FN@?-emQX_ٹ},S\pc'n{?^ů띿B,z7敿p'u tCwql_t_|\x-GxA}?> b ɟ^ЫDדR`? ?qvMjeJKox޲.`G~M_߃p/+'O?8ȋ}'ӧ@_/?|~SmH/x-B$b>.?on Jߢ(jz{qnےiFƙSyKgdN^3JCҗ&ؚ")<y nTs h'$j]W>G_dϗv(7rcwjGs-^M2׹t//V]n))``Xqcn븩Ѱnjt@xaߥۉ)|c(^y <7UJ޷&`s?|oc XxkDlNp ?L^3ls>0&!}#L`%xe91Sxgi:Dջ]LX9Ԭ?|hש{=xn~fW72`&ʨXh^4&ÍVG|:VʬB>x!5"Gm]Ǯ|p ϿN4HI^v'*w'QiN5ܼ8ƌ R4Ӥp>wITc~_VrGrY +aCHF%FA[}yfU9om{fla]& lD$H"!H JɁ,@8DC"$Yl@ Șx왞^o{sk+=W}[;s>u\k=^`t.J[FT?~;_ַϞ'N{Tt&<°!|^#}z;sڽׯc?S3J6sb\wd~O<~BxO8njyx;Yem?O}ÿb͠f[('~婷?ZKo^$Zk|[嫛?_}۷:ҋgrŕ8ow5r5ϋ f?yo.U%e3?sO\ynp 0Z(O4.Z8s'|iQ6:cf'_gu~ۡﶾ\n<|FtsO&ƏgPcǵ|xPntnWp=wEx˼ tAGrf9G +xvgytLItউ'vnѡm d?&swolfF#jR5G~gɈ&K u+Bf'RD,*3sK>.G븁ZjRwPpQO:nΠ ʙX1:ʖۜVFi6j(},x.U&A38y~^GM`q3< zt ?›LZy/=E$rtNT%8Ok e&.5 |i/djsof&da1O # 92v'`^My^aKPPO*X6|,=bI\兹"vϷz |7)\ߙ5@W[S7g`Fglg_0ʴ=?628M?;Mxڀ-9{08Ə#(/4ZA Z6QAy˘eM]I =gLM\B=Bz [\54&e8{q8.:aUL.e)nS$Z Y1gLx =)\^{ck,AoS_\Q,u`%^< (L+B T:I;QYPmS4 ѳ/(/RI#xps%,{J9k?i{G0d)E2FLzYgg:abuX*- &# āhhJBK'` fF١Haް̀Q@"Д3 RčK=&3:H\]%`2 spR]e돤'IFZt !ȴX߳W",Qg =?W Iv{QrF ;T9}BɶyI&O)ٶTk`RaҌ۠V΍CW!aJqUmȥ%/h'"ҀRj֎vp٣]q? #cGD"PO3)%SUh8V+Ptc n>HpI)4ef<]3ܕ EHV] Q)RT3JK;$M` _+m*%hAƍ Nôacnɇ9AtpL0vaHHKaE*sL3HM܌ S̄ 䆋^ء8P/"j. df|u+Mb@QSC&!3y,.U12S[7XHu3cT(Lc2ѣ'c 9x>Lқq1TbAk_sLIDDE=m!0sF3Bچ] fz!;py]jd *v$C11*&q9$?Rd(hM6v$Uj-c;՝5dEƒ$ FEa&5Kj5<;3J;In@O֧~ aΉRY:[#GXGn;KIfrC&A) a#Ê҈H)]EIf^Axf% l~mv")Q"PÈd r"L+@ )GRW3`( eT dz~R +Bo0@::V|Ɖה5ShL^Us /}5vSM^1f"+`I{a8z:7z8ܛLaGIB"mbi5GTg#ei}2EP'# }DڴBD9?rJ')_2):{$M'ͩk11`-9"-cT4` 8D#1,i <1dt(ugRƈ\Ip"Jd%)Mv!x1ɬbq c5PHamf̨ ·C9Z ,B{*< TM>%0@ZIvsK(g2%C1Q ET#E鎙0Q,r$3&0Jw 5?jo3UUYh LY/%S~7XϏXrYĠ1tꏹ$]c⍁ ^WYT(t R[6Z@DtK4`NL~8 nq 㖦=#*| ` Q Qibj\!ɹ9x܆<;5gfL.B[ RժJCD_IUPFFWVhFFuYH$@a N6 'J@yRhCICHU F@RęI4a1FaXKi-c~b&SM3 gvlip]uf1 ,-ʬ&'0W[^D:Zȣxғ `a*^BE|iB2L>InR:Hrr): E?k0`ET^_AQMPȀԩcY~eEEEZ1*g6(oy^|T~E3‚kȦT>GybB3kܹ!(W9칛ܾ^g_/KW35x@c顏=tahLYdb&Lw ƕY+pN"DdDY.3X#*aJ !yR"O!U1XcHuoAgbvRqDQ>A: dmC!),Vʼ6^ax3 Ič% aZULtdW'p1ʥ+a5lOa43EXc2ӄ]8Dd'!VD ~BB(SNQrU)u!%I_b٨l22h:,,^p,:7XdUF0^mA>GXyl (V>/E3+tX0p4kx3#^-[iM8;; "cb9h4= -. 3Ǝ!7u `N3'h#™>o \[5 {G0Z"۠m5*;@\0eC}rAD,o cSLeav B,>E0C#\B.q5Vh0yf%Ϻ-VM80 i (JqN) Q(}sJHa I+Mf&NAEP) ¼1n9}$ڹ~\|F0#尲`qG^j\8k.*Vݚ"ZhvH`DN'ld|8c3Iě36Ipy.K]-k GQu3(~YrXm 1!ƾ IHpc9#6>IFu&)M`g2):Ivc~ungSHھauyEN>v~Bp*/F(h,@WZ&4 t7j‘۳bBmY& #?Rx5pg\\nIԢI{+Sy M:E~7oqn%iD%4|^)G0܋O>r!ٔm#d3Op': gw .S_a:Mu?,ؚxi7spebζXk!PI5ama]N@=ߊWP=4$|&k52ji 'f6EjEeyͶwifhda3EX3.$U+FɼBfZyMI"(ReLZH" ^Pr) Zd`faa& u@ڤ~8ѺG;0PX}yb'=75}x4V{\33C0Rf /f ,2&e;p!Nrr@!KOepVLåO Zvcb2`V yoLfr6th1 ߐ4S8)$}~pz׶`q9̲wk6kkpyp^vNc< O;dUI 2&%,آEs* ._u*xg+0eYx6FzA y &JLmdX&+)=#(}Q훺&Ws& O\t"[hV}CV2~]Z/W))@]Ft %'=r'Gh{>C[x΢OCGmprf{{~aj&~剙QY Ww\wmM}[^;&3 xcF jo11]g#nPv o]߃ 3[ݵ=Ix0C4}i#e3Ф^P7*KE,JWUnݺ M:(Ew': ߽"*Z\G RRjֹ؁4V=sTJjuhA@nIjF mfN= sgsNf xϷ7+ `4ka |_v눔}99<8&8qOC} C8qj#D5 p s8 VTJ'jգl*Ap4ç12OڈX2& w2F xp4SF~ M u lڗVq]3mE%v9>π} p=hnreisoZiGa2暓W/SýHsFi Fk#mƒ"g}dl~sbBU5#p % L-AU\si*VB* dGj.JR2Ƚ>*յ:%HE'%D+m'v%ZjeDؓbz08*#Xgy}56ݸ: :F}*&-GJ38G fc >pؔC%P4L­/.1zx130 :pR(F<H0%;bΨULƮF=J%㼔.*nITZJ.hgHZ-3V9c*o$|hffʯC*2F| f 膞cYUëz4YHj|c %opi{ _|?u&an<)" o( S"S''i!Qޫ8u78xpu' V˘ɘi?\0 * CN\|0$kEg<Mln+wJ'&e oi ,.mR~iwۼf&X8 i'U^ QOK8L <+[.|_3pvGG8qgz0>SC}rf TPsw':Ӈa(V9\كP1G|+FgV- ]4,&RbLL̬Ah&j.5.0yFL4i#Gþ{Zz6A3ZhTC@v^\AkHlAѴޯ#ٗqsKf9g9/Lo䛎bE¶TB t}~7qmUL(Ľ=g5+IO3XSUWME~˦%,)o=v?+g1ap?c0|țCPkθ}a󸧒bB2r>L P P&]K3ko}nɍ6%W0C>[gYoT@E^1/'BKF6fcKfS*^rc )" 4TBLjSu_zO1.25 X#B䛧 '2(E~1B.HNxs?@ ۅ |#؜o4}m9Y}LADMG['iV" _l31Gd-m0Oq#mx۬p>G~,)RIE;p& h9 j"q"1qa #Bt( و2҃TJ9\G3Gg"_DhMY1F\T+!i3}8CdN;^ݿ6z 85j}'ڃW7lf:utrbawZt ox3Dk;Ȱj\~+x;8)Hi[eWXUVƮSͫfqB © _0ܟ={o~*<:egg#3//>ډ>f d6#ua 6_4{ߌyUunn~(YCs2vނ!7yQޮcLKS`*MoÄLHA {gK&MLj=S5ajE!ߡs]x@,fpA0N `_yL4!^rsRŊvFI*C2X;Q#K6u an=gaA_rw aZwв{ @ܔFǜ͗zG|ag{g_P)z-#sW]p&kH@G xuULhY֭$ F(M n3XPU pFN(쓶B{q{`S"{nG+)0[X Cᐅ4 cƾ>h)A6zO8;d3tAh :[ta xKxi.CߦD1r G'ƩPza̲iavExg8m+!'FzC3,ϱSu/XSͧA+JC\fk!fi rP CȷS8Wv6vsI#ZP6ZHˆYK8}2)F/ރ#1#OHGDg2`4;B2}rY40u:,`:م+.î#); 0E;]݃mwxBlGƾkԇGrqh\9[p)("Ql[Z2_V@7 v 2)p+xSBk[gpdQèN ?{wg9m`wwI)\\ N(='z~S0A6+}Ю!kKvRSt.EՔ3rgQ 8@i ipu@Q;vI+ {NNAeB<; ׷q$h?_X*N.!uz"td PwyˀZىcBKhGbo(aEF2Z/ADwF70pF:VB$MfؒIM727ǣM)քAԔt@"a('$o8x]:6Άz3c?+_ըn ZP8&,G'C${{1:(1GͣϱT_;[&閾et~=fp2}vZi>-P o> vrLCahY$7t[\P$ 9Axp-u\( HM'>[#f{]f=_7(2ճۇJdLrԥ!9w\} L ' `&٭HB@y99w]2q{N$؇'#Rӟ-MM2c78pLsЁ"OK_,no%3޸/{~_olw7V-Gսە˗G^O|ʹW? h֫s&6`mwwv.76\/O?ˋndzݿצjmoo PX|!מ;7~+^Ye{֕+Ͼ7~{aw_bvg'}gWn3Oo{Oٔ5 \}7'>z~cN_LL}yճZ[X^S??mrT'Z/OGʃ^9*kȩ[{:2YndZ2j׌f@ۇ7?@B-!?mk;M O[ ihd~w>~+"X&GGǞvd0Nuy[PÜY#5AZokY3̚a^ a߮Züf0s|LN慩X$?Nrs 뺦5M:a$*+ʣGu?? ,i;&*wG2z=_qo|[/1pcs 3mT{^Xvxu5ԙob>"]DxQ&ϟ|߯}wd.Omr4vw~oϊڂ1k췾Dg3;ڵBݫ+ {oOv"8+5hLX r]?}kkE4~Ͻŷ}嗿 'aCGʐx+_Of<^t?T'ᄃ⫾oqkWKoW%Gڹo(|G~}ku{~ϝHg}N*RvIcc=1r+ƫ&k @y1&~*K̾ߐϬ ecC+>+zy'$'AL\>u:> @%뵣?bwEX=\l 0nygIO:cmF;k基%zJ~;gMfwͶ0sW9׬-$潟svgť}Oōj@t躗oCN< fQa'x6_WoPiYx.7eX\K^ۍ`7v /= 5 K+e$pvgԵlEXg+X3~j:fvM.~3Xcuhfo^]oΚ׈?fC αzhy8VsjkymkWU[k`0x \dHr|<>󞹾cY?ԯzGNkj~\9nLcm/k]a@}_[|?k݄5<pg;9R\ΐ]ZA@twVՌޣ^LkX{u˝{ױs؝/K𨾢kx;wJC׾;#2+$;]>pY}mx{Oq=zn#SUM[4e"xwF] Ld::Hey8FÐ^yϩ=Sϫ*1DH[i>.$ms!_'?>1~ˁ^uëzǭA)JDDRI$I$$I)Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ Photoshop 3.08BIM%8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM?F]g*h-7]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FLJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOU:i8.~KLYcc2\~M\讣w?\CU]2^kmWKoW%Gڹo(|G~}ku{~ϝHg}N*RvIcc=1r+ƫ&k @y1&~*K̾ߐϬ ecC+>+zy'$'AL\>u:> @%뵣?bwEX=\l 0nygIO:cmF;k基%zJ~;gMfwͶ0sW9׬-$潟svgť}Oōj@t躗oCN< fQa'x6_WoPiYx.7eX\K^ۍ`7v /= 5 K+e$pvgԵlEXg+X3~j:fvM.~3Xcuhfo^]oΚ׈?fC αzhy8VsjkymkWU[k`0x \dHr|<>󞹾cY?ԯzGNkj~\9nLcm/k]a@}_[|?k݄5<pg;9R\ΐ]ZA@twVՌޣ^LkX{u˝{ױs؝/K𨾢kx;wJC׾;#2+$;]>pY}mx{Oq=zn#SUM[4e"xwF] Ld::Hey8FÐ^yϩ=Sϫ*1DH[i>.$ms!_'?>1~ˁ^uëzǭA)JDDRI$I$$I)Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2011-12-02T10:19:25+08:00 2011-12-02T10:19:25+08:00 2011-12-02T10:19:25+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:aedbd568-1c8b-11e1-ae7e-db667b27342f image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺU߿5wE|y/u2c7WWmH"ࠪwo,e5BYL*+k1D4_PuH@ZubG$PQQY؛diͽhDw~Y1?ʸ)k25.UGh8q4}F:9ڛ=ג-Z-۪H& MT:k5^`<?T|T Q3Z玞0y6W&ExSLhXǚܠaɷnE.#*|9tdCPʶ펱ӯ{^׺uVRUt(**"RGRu#ІVVVVR{^뗿uve:f:M {Q*ߙJm̘KׂlC r%Oԡ&>{-e/qr+]+e*RQO`1}EzXK dE{ecpq(|C"Cܣ-Z2q>_YZK{5{mj @0-uJ$2,B# h3N}/c1j)!2HܡgdyWo;KXcx(:GYxq~2%@5n]ew ͯR6]Ёs~tTYܽ7!8U18`zb;?%\v/rI4c>ʪZVۦjۆIopʬ,񇍔_:s׷{OoܛۇIѽ5E"'J:Q鎾c]6m+kU۳ CƗ+/u{qdL Sq`޷}i{es,Ɣߛ{ߛdÎoɈj)%xhq:jXY*upsMQ%QQ4[M=EDOrdNF#@jg2:ѷXO v2!;[m*h2;';MouKF}rZx`=`tg_t[wd;%x:vɛx|dbn j\=÷ E,5PG x^"oqkZ׽Z: d_ 3m=7^&N]e!7;3lc:(C\y]j3#utsy'1]˷/R%<0z9(y*9;rU#hhTmʈ.}t!1_ǵq SblR$MuLk5Mz ?v|ZZH)i"ryiI;i^VX۟v~oǹ{lS~o]-պ{rTn:Ng(<$lf˦Jd5M"6=6KV@^=Js͋jMoZIVBl*[c{Sv_Y}-鍿״kwf{w5.KwoM*谸RJLP2,|Eu :9{{WGl̻IkoEm ĞS)EQjH'[+vOPਦ?QHE]U r+i0#61- .(f5E>=o# Ro o1x:lun= 0A6^}T=j >'x|gH W?nي]ۏ'ZrI_z=mzWw~( E'ۙ fW(,y)J$I +>®!T$=׿xuPbeDzHW/Av1*1uU)GWu3h(SGVHuXفoo_Ͽv>x}7m~_W{O__%_~O7 ZMDZ:CO7v"~&[D7W]Hs߶^rN溯VVEnjm^ڍ?+2lȼ5*ASs^{m r o\QӼtF IsFlCoYU|{CW%5vݙi)7j<Ϙ`z頎GZjhc7d%f XO<21DDp*M] :7<׺u{{^׺uߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~youker-assistant-1.0.1/qml/img/skin/bg-middle.png000644 001750 001750 00000041202 12312451003 022201 0ustar00saucysaucy000000 000000 PNG  IHDRR$f7W:{V9Ϯw33'SC n!Ük#B̎0s/0. ^ =|?-N!$2c7w}~=2#qPRbBF [8|DeN$Ra=8IIZ[:'?k1jlY3`N*ػY 9"&/~kdN4͜›6'ɂ.':栊LJTX$7Y5*k6c>Ë.徱O[_ 1I~KP';gv{$+ɓQ eiJi C8t6ª6$-";$$ov=]>:nՈn ߐ<~&*C< DPEPe"("(2AALEPEP&"("(AADPEPe"("(2AA} 6`5'qh;M*_B(vRnBֿn nyuPk^SٗBYסtk5ҸU݂~V0zԒ< +<rpfڤHV2nV*B$hRWi2e-ViN.(Z-P LTCˮMehݓdVZEAѻ{kr%]鶬ijgҟJYD4[[Gb 7W`͎y=l=&YlJPoF;|3UF-}ִmުgk(ew]pxZOUH(_n5 Vò5Ԃ".Ǘ'&\]"nْjqʎur|Ŗ*uvcze]Z!TMr<<|#>>||>|>G||#>>o9ܶa ֵticʒ Po>S!0${$,Dq:]%!2>lbX"ɧ1>\m;$_>E^-5ĶPz,RZ#MlzZa]ZMz IP6E蓭/n?V., G0mZeyŚ|mHևpYs.ݎ6e50jQެm-IhUS,v:=4 ?}Y˴5 vܬa3%D.hݙ[:k1(79kTjfwɕad1.n_\c>f/ 4"͛~[:|qh/VKmtM&K{f9aO8 mg{j{o@Y4SO+jN:[7=K3 #Hvj/)koÖlm/ѻ-ivZ5> Qp_U_pMy?:jG^Y* ̑;W]]fɛ«Q>WTҩQ{W;_m7o^}]GW%AEMPy(gkC}lwOaqx }R P}zhV'{g EQ^vh>6|K^*M7G $r|‘9 WE~\˳YOW=Hc߭Ӌ<},?IW^~vrGGwѯ._t]/M|N Y_}$wo9z֮n>eZBЗK懫 C^t/Eص,5~_vYmrUCtd LM0mo߫9u;ͮ+uQ68 |y׼J#d:OPd}|q`2SA:*<.I,vͧK 9k|y~y3}Ǧ=DQvہ {l̻awx*OF>V_ gPz .DבJtfpT c<][YQ8lfn|[xWK.72`a>tyk;okjLpy\R4Zɛz^*p˜",'wP.~2mk*)HZ#zQUjL;#aTV[Q58se8>./)xOv:{ݻzvgt*]!Ut1E?ÕX`, |dmmbӇ!3*mݽ;1_)hſinǡ|kDANGP{F-kҕ|n֠-o4i؇"瓡bWCJC] MʝA:NWu8^$罕]"tu7O"vZko ,^]-{k¸ḂX䴣lg]iI8YKF lUZi_b1M]˖>y SԙM gGSf;Ua#~cŖS:>.Pdu_J+ <޸XN{ĕ_5_5So\yK?$=7vOQm侲ޞ(P"͝>񴉻'ȶ&QJIԟu|꘎"8sAq NZGV&Ci˕[Mzvu5X"Ot_؜wo^q ӫZ^^dxϦD͚^+ ~GQw=<KUCX> ?uQYB'ێOYx,.ɴii](ׅIbo`L(O]rT"A, (W5S l|h4(믿dHg3Ig>7i,6mg?+uמۭY^?mhXW5uiC@Gퟎ;,} q ԖhP#mb Ѭmo᭧㢇߼Iѭ^t+1n|%jQ*|ח'?MJߵc6X}$-0[N4P)ì?VUO}մ6S0,WRX\-w/ќ|'.~j`ۃI_;kwBE KEgBnƏGA_q,LaTEO&Qrf򹜮ASrߙŲ0({z}g'+Qm;-2`PMf'Y4dE&5: (mږ)esfy[#TFAjp*pQD]QuHB!#y4Q VnWu[uXIeR0*-:Eyl7/۽$QYE7.S'BV~Ch,ΰm m]N7nof?< 5S%tra9gTN$G|Gc2 !UUC h{SEȵgq%"EY^51fZ|z6sYf'Q#u/t^QFed-4Y>:byoIyo9 "ثQ ;ZZ_EJfʎd=%;7 U!鰉8-^ 0K>KzVܧǸi򲣊:1MSr+UtlOm 9aH ~vxjv:] kT֗mqlC.'ku|wލlQqMG1$^CkxmFC:^Ϝ x6,ZˡWł"mT9P1U횋OcqcF՟Vj1NTblY-?36EC&B<2TaӒJ#(w;)^VZۇ-oٞj泟K\j{rͨl$2mxUguߨY)K~VES5mjO}5 Sj_m،Ջ4oaK|.G̏7Nö\MV)g+/pr螆"I(oE(q敭bBܺxͨₖa|V#SZZ SD,r3vvA=6voXI.+SQnX*lJ)CqwiOoԦsp#:F]|E,Ub?}sʊӌL3E,*ߋ0~ [ B{TKd粃a?~$lTLۏfNci,p둅ovNe{~:n]T]qkR V/e鶗 U{E24K`Qnu5^|*̇ ?L_8\;^8LњI#YW'a3YV^^L~E|[^¤Ej_z.*;Ҽ͕[T .l Q?4y_ͿI}z* sPY{S \M1^[f;|߼7НWIOϚ0ǯM41g wӫU LGٴ{Ҹ@T/yYxRPw_5Kڧ s>p}>p}>}>p}>p}p}>p}>p}p}>p}>p>p}>p}>>p}`N܆(z=^iSlI?꾭*(θѶݭ5`7eর7_RDuj#K20aQjRYWfC#nU%+G'o=9dϟɞvyVJ)觻[El׵1jY̩k.w{F^dfÅkɑ|of'JR%ˣG_JxKYª =sx:)n~N5Ϯy흫Ty5C:8lᵏ$a&eX3WnV„_w}H~)OMYۣG eaOlm$5sfbіNޏ@*>ۤ5[{6] 0ž4qZ-NӇhϊ7:RSB5=uXf7GNwTtV>*p)ΰrJ>Ѿ9_XoƠVMXg u#;̐Ǒ\^År3[cI>^w19=<|p)Eѥ˝O%pMlL݇O1u?/<"f2զ%;?Wdp@;յU5զxNSt4^Z8yt5g%R [rK?Mi|[p/,2ˏdMNsfШvpkjnU[pa+]:gnVG8 ؘV={ڃLhfis_X+'(G |sWl52{K?omNSEopAs|a:Pa\P5Pd6{z5c{0<ƒ&n_?o)ޯ> jmllBq [[KLHUol>UaԹChU BVܕ27rqx[_8*ͫeJ]FPRacm^~0-o,=kyljEp{>w2xИޒ|>%'m܆zeN>/@%tyhBu!up&SDd  *تz2.Tz ?Hu3\MQPU*yMi/#n0I/M\s`WWl[j|Io? t˛wqda,e')xϬpbWYGF01]ͽxۀ/x92u4VI*ΝO0̪gU>|ak3鿴\BFSU k<=¢~u2F3>ɛиx~5DCgV'5Z/Qg)(f_'/jN'ж,.b[Ԏd]gvNGXN4QOw߅w dMg r0iaW›E?sU'\gɯW^gח3/ t.~i/NLjnvS)TQ2 -#]zoվd~ߛBܓRK6}' ju4PV47UYJ7X~k{Lk*N1:f9 7;>mj4uQ> >i˿n?v]lV5VglKld),Dm?xƦXd_z"}Ql~c" ew o7H}9xp!m>nm!Y܏Ť7] ]2>^eӛNrUR}ESՑm=j7:QkMv&ׯ[{c# > > > @d}@d}@d}@d}@d> > > > >d}@d}@d}@d}@d}@ > > > > @d}@d}@d}@d}@c > > > > @d}@d}@d}@d}@> > > > >d}@d}@d}@d}@d}> ɒz2_U.~+::զ3qǥ4{z1jpsBAܩCFVm}Į~*xd6ۖ#Gh?4#cFДuG.co8a1֍IYi\H䫋9WzN@m{"FC=e4ǘm3UyBl`^Q>:Ĵ­ O>!_h}jonH?-05ʅl]ޮ~R{71w.Q;ϑôS˰?S?r6FlkgP{iSΎFs.A֕{Կ*:}Y]S}(JUHKKt읽y"+(Oz=9<8c{msa_s>WƁNGfsXcjɜ\{N#VƲ>z˪po.b{pMd[Gь_Jw=l$?4-\ssCfӿ(w-m=u CϪ(ģ~`n\޹4; Y0hm^GQVM/5_=EO mu/6G IY^9c{IETN9|</=q3785n9d5[bʹƏc9~o5/[Om3|t+bZ烎H䉹cjǍթw ~]^~㏢ܠ2ܰit~l# aQyk:ˆMԎ3<=5ݜsYAOVkN'/f45"vmwn_ͻn8$zhď(trX^]u闄ͫ>s/Z~1-[ĨupPh״mڲzNK1fS~;,]G[ˣH$Kx-e:R²t7S+5S(W.խm.=Uksx#aɝPo]^7 frS4<4x8ګ;*֎bm@lv_vGıYY=r9ˁ?%irm+Y: )t`@ܪahzX`#Z>)_[Nj] vt4(bD- T%%˶ZDq\?tbgӺ>bGka4Ejڮ싏v8>XdҚ/*&PE]PF1rcJܿ=T[|EbH͡9sš#yK=W6jtÓ-s3?e807zd|shn򑹮wٞ- S6=go/j,:YdνۺlZGwxĹU?n?.[err`2M1|{SoZMަ^ݢ0S;ԢbҲj:6/e=fO]!ѾǦdd'LV3UCsby&sҊY1q9T\Ij7\bSjE{vyT-LQUލ\6q5>/Nm9h n]yUYo|.3>qajxa7c1agGALٽut 1{V!rǜ 1&72O]mۦ|y)Ug@nhL4/NT{jϗռv 8^~AoijŎ؞}޹uiNhf0UUnr{LSHXA>"3[^>(cYթƝ4m3}_0/ o:|8Ugƹi/ۭs~ 7y"~U Wί7jѹ='w^U;n6voRn5h>Q-XY|MVŏə/3(R\u\Ԣ{[dsLS&9ՓּQ.py_TO1z'?EK{"]n'h_V j\`l&9 vs}EVaNJbK7 ^幷 U8^}O~]NϜS73bZ,fFU ,V!:~?[[ mxJ$#ꆬ-D&meKN<{쭒Χi ZwQjvj8 ̈mn[-Z?5I(zƀN漈z-,#;o-fQ˗Su5qz`cbr']֭'cUr"Mr ]ӮDIq7Xu-9cslNe5οk2sWEbůYmS ?>q;XFD5~.suz^]R?OYmk_{,8(1jj}JhZY&rjJXİmk{rmp|3r;v9f3c7ߞ^\qY](xE/w屆q=.4;f1OuVo?'o~iMuX_Rk"xruO;/?s)ˎk|b-rbrnJ~ʻ禮(_O 1L~7-#-(hgMڪ?x"}:<۱O_~~^A1,ّn b*]ivzǥӉKsslٙ1ͨ?u‹Ut9$w믉[T8wߺ!cPcgڂKncw㐗ډ">r`bE:{yx|ŞLsH]&Ri|ƘMRMg])+H }9_e Y3Ǔӵ޷1%So$~*vN̢ƓQ,mo;^?/9>*|^ѾVg ߮`}6W;ze5RM~;ŗT*ϙM*r8sqikdG`fʜX urr:'^Y؍%}:Ot\ͫ=˹`e΁ АNjNcKtVR.>u1l÷?-}>~`,^z@ƲQ2kZ!0 mSv{gL8u6e_rDm£_'_Dgھ/^?`U-py gg FN|EtEZ`y-/R~h1dy cw.82wPo }}}}}}}}bbbbbbbbb         }}}}}}}}}bbbbbbbbb         }}}}}}}}}bbbbbbbbg}}}}}}}}bbbbbbbbb         }}}}}}}}}bbbbbbbbb         }}}}}}}}}bbbbbbbb         }}}}}}}}HKc'yyIENDB`youker-assistant-1.0.1/qml/func/common/ColorButton.qml000644 001750 001750 00000003205 12312451003 023340 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Rectangle { id: styleBtn width: 58 height: 29 property int fontSize: 10 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } color: "transparent" property string textColor: "#318d11" property string wordname: "" signal clicked(); Text { id:textname // anchors.centerIn: parent anchors { verticalCenter: parent.verticalCenter left: parent.left leftMargin: 2 } text: wordname font.pointSize: styleBtn.fontSize color: styleBtn.textColor// } MouseArea { hoverEnabled: true anchors.fill: parent onEntered: styleBtn.textColor = "black" onPressed: styleBtn.textColor = "#318d11" //要判断松开是鼠标位置 onReleased: styleBtn.textColor = "white" onExited: styleBtn.textColor = "white" onClicked: { styleBtn.clicked(); } } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/MAXTOR.jpg000644 001750 001750 00000010160 12312451003 024012 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF] !1A Qq2$"BS4aDTERbr#3Cst%5&1!AQaqс2B ?<sM&! 1oF'aw&%aAPr JKq:`7`bWA>?̓r ÓɈe

    ih/̵#Qhi3)cu$v$vZ;1D{6ژy=A!Htwc%R@P 5$Y2kPShm07JnKC1"s6A#whu5K6,~V {UDt5ժ:dr~ ?lZdr=;Zpݲo?+"# Ա|)4g5-}' r7kU'i<,w+׈Y>|:qo9p)_{;<O鹮T@gpguk EoM u@F &[2 f=vnecW%zA]WUɵpy:d-oR64n.PZ+S30.ߤ>mVTo]_ZE%y8[a ҪBҪNAλru]RdQ52T9@D9Uk\p5k,h˴QYL[:ѦlheTM8dmjj4(Bg \11^<}BϏWoջN-C\:&΅ n(A"ЕJ2!EcxǘS.QZ ՘o$tm6tTT$r@m9;y($TJUI"?,F#m|Ju/x/0r CåSH* KA'EM Ӷ܆uA+s 6iC̠ZhD-[m՞5id=R-nU ~TֻH^-.}hP6oevY5ϳ=@"[Vqh3J Ҏ,{e189reJgf4"uXf #$6NΫ_-[6rqZM`pK2r2)~OX@?.…R&|؇d_󴟰q2t]J cp(`#PdppFR2U* @2×خ iT鵂TI(Mf -i05pjQž%P9#i q$q1+vKjxXETl9;<"^J~2Yb;sʧa+;<޶@ŧI];a6΍bŃo %_uS/xON]`eK/@}:>%Ҽ" Tɳ= uOtaܱ$J;'4Mc}V2a?^bcQkV5t-[R+z^G\.іfa1K!>XbCoJJ007Ej?c Zt=en"T5>?Bt(~„ >`bV V\%rK6*/?YDMr?̓ryouker-assistant-1.0.1/qml/img/logo/Manufacturer/HITACHI.jpg000644 001750 001750 00000013657 12312451003 024067 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1  AQ"BqVGa2WiRr#$46h)I!1AђQaqT"2Ee&Vg)4DGBRbr3F#f ?N=%ruGSN'"'  #*Az|)G_qɑLaR‹fRApu2'l)%i:@Ufm?13pgi\@5Fr&ghQ*!G&Rsq ̜4'F{`qhjM5ǫM)UΞ--q̋ ωYTY0b#amXiQªvitH2O+fpb+Űcm@wUr:_cq>Ea?.,)q|t.>k [ް.42k{ bVn46X8BU!S=9Lx DKs:1Fc"yBWM8ߓ0K3d`r#5@`k$Qh Xixj,AG N% 3Hډ6uj 9%&S'j[fWb)lh:]4δ+e;@S=pajp#s2nA>T/aQ2C6 h3#FZ8yx@0S+kZc,(]ڿY rVy[bucX %0l~a>>D>_IZN.Px|XE㊭݃AnmªSct.iϊ:m]hh>T\aS{*94k#qǑƾ>L/`5A8J eh:R. \c{SxO,n~fG yƊX*%8' `9$b)DD~qJ<i]eJ=ԃu[RAVbp`D_]C}.3I-!zy0({=1iO ńEUǏ_pĕ\ѹ9V}̈3U5}TӓD̝ L"ϑXfKv$y7 J\˒6R#ϑ2.ZǒK:1aI DCh0f^>3 FuddɚS6gS."n0O (sǹX6/ZХ… by3#2%T+.ϒ1ybCkNR)LP"H}>ހ #:I(m7^dJƃM!R!izȑa)dU"=Kp :ΐ톽ǣ3ӬۼeUĆi3-rmzLܝPB$k,쒑k7՗64aS]=tٴouٕEQ82LUWCkS#d,0ivĎ:d+wݯ9Ƥ҄Wa !M]1m"9JHf(x\4 q+efN" IcFML* N;\iW[3J[g;cVk49γVl]dM)y(sENlvkfݲx:oMf) d$p LWa+ĕ\>9Y7$C]t%K%mSXo4HF0Ʌy!I=(\*^sLDD|͚i l}[߲ZA880gG Quޒxjضu4g]4Z׷ml *RXm/zV9Ajl牔G$!R>`6i#KekctQ]a͞^eȁLЇs0dKdzv(REDVxq[S0-Hӻ#K]~ %m^!ad-*$UmjqrNNS n!vF?nig*^(o}3kY6n3M R5aXfȦzܹ"(s?g샘s`me&Q73skLֺXug\Uӽm]+z>5HL+}a{k0WvψQ| M60sG$'W( 9!pYgS(Πؚeϐ>lN "acg&%:AzXZA@Z)LEAɱ^gx̑u ˭mY*ٖL%DEEFv&|v,mj sAɻ=CuUXdC[`olma;䶓mN@;OMTD%,dD[0B$RSV}jY. ### END LICENSE import os.path import sqlite3 from common import get_mozilla_path class CookiesClean(): def __init__(self, homedir): self.filename = 'cookies.sqlite' self.path = get_mozilla_path(homedir) def scan_the_records(self): save = [] if os.path.exists(self.path): scan_browser_conn = sqlite3.connect(self.path + self.filename) scan_browser_cur = scan_browser_conn.cursor() sql_select = 'SELECT baseDomain, count(*) FROM moz_cookies GROUP BY baseDomain' scan_browser_cur.execute(sql_select) for eachvisit in scan_browser_cur.fetchall(): tmp = list(eachvisit) tmp[-1] = str(tmp[-1]) tmp_str = '<2_2>'.join(tmp) save.append(tmp_str) scan_browser_cur.close() scan_browser_conn.close() return save def scan_cookies_records(self, filepath, tablename, keyname): result = [] if os.path.exists(filepath): scan_browser_conn = sqlite3.connect(filepath) scan_browser_cur = scan_browser_conn.cursor() sql_select = 'SELECT %s, count(*) FROM %s GROUP BY %s' % (keyname, tablename, keyname) scan_browser_cur.execute(sql_select) result = scan_browser_cur.fetchall() scan_browser_cur.close() scan_browser_conn.close() #result = ["%s<2_2>%s" % (eachone[0], str(eachone[-1])) for eachone in allvisit] return result def clean_cookies_record(self, filepath, tablename, keyname, domain): if os.path.exists(filepath): clean_browser_conn = sqlite3.connect(filepath) clean_browser_cur = clean_browser_conn.cursor() #sql_exist = "SELECT * FROM %s WHERE %s='%s'" % (tablename, keyname, domain) #clean_browser_cur.execute(sql_exist) #if clean_browser_cur.fetchone(): sql_delete = "DELETE FROM %s WHERE %s='%s'" % (tablename, keyname, domain) clean_browser_cur.execute(sql_delete) clean_browser_conn.commit() clean_browser_cur.close() clean_browser_conn.close() def clean_all_records(self, filename, tablename, keyname): if os.path.exists(filename): clean_browser_conn = sqlite3.connect(filename) clean_browser_cur = clean_browser_conn.cursor() sql_delete = "DELETE FROM %s" % tablename clean_browser_cur.execute(sql_delete) clean_browser_conn.commit() clean_browser_cur.close() clean_browser_conn.close() def clean_the_records(self, domain): if os.path.exists(self.path): clean_browser_conn = sqlite3.connect(self.path + self.filename) clean_browser_cur = clean_browser_conn.cursor() sql_exist = "SELECT * FROM moz_cookies WHERE baseDomain='%s'" % domain clean_browser_cur.execute(sql_exist) if clean_browser_cur.fetchone(): sql_delete = "DELETE FROM moz_cookies WHERE baseDomain='%s'" % domain clean_browser_cur.execute(sql_delete) clean_browser_conn.commit() clean_browser_cur.close() clean_browser_conn.close() return True else: return False if __name__ == "__main__": objc = CookiesClean() objc.scan_the_records() #objc.clean_the_records(['1188.com']) del objc youker-assistant-1.0.1/src/image/youker-assistant.png000644 001750 001750 00000022523 12312451003 023247 0ustar00saucysaucy000000 000000 PNG  IHDR@@nAHtEXtSoftwareAdobe ImageReadyqe<$IDATxb?b 0:u򿴚8/ ##ç^e-CVFyg`e8uhĄ ~WTûv]!gsk_>1D_a[&VFۯ~z+CX LR2,_#31)))o_3ԼHd?8E60| Sd0FѓlK 8R:"*tqqsp'3B[ fb؊|c]ksPS)nu]J2%ɴ}fy/fnŚD TN5 [aݯu9Uk\y| 5QaKrrm˃W4pLl)gy,9oNde.vfUy"=Sg Q*#d6'_ҴbSC(a?'Q<OdNcvi Bz Phi-`&>Ǘ|o{ft>7M4 /BO!Mi0 %aqn|RB@K 1o%GA׏oNCuAW+D:A|lXsy8nϻhu]>"5"1& dpуX*㘨>N<`Be#?,p%(gfDGuOќ=iq^Ωs8 =35:CS_3I_~bu^^UCM8^ hD7{Ij 7[PhZxWgE\ dI2G.F!c ze]? VՅDF33;;fT B%DDhDE`QAC=eSPCPC`kDZ?33o&$>vf{UD΂v3!u1{i DD"!0-Eh>N G|@ 2yL&33r*|ϾȬ} N'>#:q`h)jjj-544p($¡0w6ƎfZ dΆDj9rH)+!SA$R1 4f6)UC,CWO$id!+:7-8v fuaJffaY%@zWH&|NgACM K%LL%spK&Wxn|>k2^BpA+& !]aZ\%8Mڪg `JF|t/~_Y*⡲Ƣ@tѫUȐDzd. /$H):LielML]X irrB*^toۈgs7SԻ%oT*dY30­y?˄? L~.*.Df! !:゛u0??/ǃQ8"S^'t F4.?L"6R Ds9&*ylDϯ+j:-o:}{5ܸ/םpۖ Do1jC66;я D߂'?T f^YΚ?EG$^VW*nq/ƽW[2d-s/UϑD.DgIH]>|:D;B*Fz~T4#rQZf8\{[$.0WF)X(-8" Cp@P ;۽HdR뛲B.pavgݾn$SO7k*c XΟ:!Bȩ!L2idlD~Mr U l6v״r|&Wմ%X qo.{__%v\;i8I#4P%U4! B"T*<JQ*/i J  v;xY;t9RďsU38!N^ͧ |/ofo3[?]Z!ox~&H9tg|&BqO=o.@C-jϕJe.?[bovn\auCYFVAXk\6'&L %DDA"لk?A]C-.!Wު-xHS B588xqSUoݺLie qx+ {0ն,`lчGEZUt]ǿ7IEiE}j)qdh>^TqG),Rα,ж݆w984azT\2+DA!X}^\ӁzǮ J,@!A/ JuC *Pi0 nr_D  Qg[T&~Q˶Pe,015\Lgo+V-;NpM:"xIPU3ɓIHWX[k&jH%Aq/V0€b!WB xo8A ˏkf_^6m@j>@o[ט)p &/;5zr-۽ci =i67|L>K$`!&¬\w%H=7LSS-l˸徔6<`Ër}Mdp&桕?jD"$3;1556]dK:"@sy MF0 YѨg6uP)sfF`C&=}ۉ.[-qmY7K+I# =p)X&Ճ6fi*zwa蠮;Xq*..rk 5zz};~4(wӣ*:Xs}Adf\2ǩ ^'˱GƃmehbQe4A_սU~u0ܙg@jayLB,(ǚ-tE`1iz*7EzXnb@ɔ -г| `5x kN . `X6vuEwU+^;֏*PBM'C7߁ѹEk xR;MI2I)P| rjpڡhw" D>_<㪈ys(MiY^ms \yt̷ Ѽ)$ξI 诇ΌJ-lߣ[!,1ͽl≡$>P3)c5kO0MӓHuju྾>e01tލ):EhN@-z}H"عߎEvZ +)9*<0]Y\6_>&vj.f;nԸŹ:.u baCZǦV=$В 5Y.qs\ >3 vΞ΄?w}L'IhԳPZ%Iv֍NGZ&gR̠Y:*+pUc6`͠_2CGWGhA*SR?ЂB^U ?`L#iO "m Y*7astu| o-6JE[˲:)2&NPxJ,cw/kDzk, WXuU2?G>J-=o& Ux:nB"yK'kH,Jh\Q?O>Q--)c K/+m1sSNǏ[n M5ȿ 'hc/hfp-,So!\obhn&Il3>vk{~ZR\0i6xTyd2]^䭛v*V 7c X{l@yGGu4rݵ N,ٶ22]<\Wy WFR5[[["o2P$|jkb35*O•2w ňuA_7 >7QmuϥUl&=w#_c,0 t3kZ?_ sѮNLL >ovzw\ZC`_3\^V]Ԯ_ϔ7Laj/_?_ovDÈ?X !!8xDX ɤ#Om؟?|rΏӢe-Bh~C7 |ڣ3ssuۥ125@/ďw>2s]Nli%uI?xv%1R X+~ڬy0 g蜇E.b3ej#%5?=>gYPԻDSa"dbWw u2f)4\`ǭpPdmsP5-$ t+[e!2h:olлW/ǕKe!*A }`64 ^L+t͑P9SPD, 242MD5Y%Jtg-E <-bzչĮ;Wh2= Rhq(khe{4H2 aw!>9Ox~ʋ~ 6֊iIo}Z:u$)N݁[KVY  GH) ]yȟos>0jT 6GcIniN:FvAx{%)x^CyzgHM1}k<.܉Yv6S 4/?PǍ~8&OWW{\wG5( l;C5duRr8YT@v2'7=D]/=?ϓU's:FOy(9`bL#|duS's_Du>x>u5TWE h`j9”ABu?)0.ZB>wQ[:7W).ƗB(5v_?L].\V / z=+0u =-{ =K! EMm(}c0ݚ6L&Zsg&dwcu@oHXe t۪K]].xصzufgvlU"`JGS:P,ܨIYtN J|>M\l,%eb"pAIO:5+< \t%|iᮄt!Gzg hpS92_w6 FkTkEB`Z+p|%/ޓ矚GV$XrԵ+D36*8SX[o:&XaRߗ]Jn9趕j:fM;A|,ͯuR`|+*@ eٔ)j4=?/|MqK)Orkp >xZ{*o =٘Ĺc`t?)ЮB&@;b8q +,]D`x?Dg 7#ChDs 屄x++"k">oMmA 98JJmZrFѤE'ϝYmNdǎ%KـHϮPy )6d!N$9"@gNݲr<-9i.fE''WK+cSjnvL2vnë YxmH2(:re}f\`c4\<ԋϜ觀ɀܔ(B3ЩS蹧1<vW8PvuGe;*_V- C*XAu(%qmD㗗Tg+WH${kpV8u44o-[h \'cqq+d3whWVq+77&Wc'ڝ ndvEFqGf^]NnV Wd߆+aѥȪT|?砥>BuHDBjlN8GHVsqx<tNK?&߻LFI-TLՆZU]#DLIJ>ts&G:pk_#u5j gLw "FJġw p4+gQ+IO7pt(1 'o?}i{E:Z~JL3E\#yzy3hL6('P w5G50~W_vyf")vtܾc<]=Lypb^9}d'=o|uKP9,\!nDK+&X6{1韚D0" a;L"'/~Ri+,a, ~E҇_C+lo%R"JWRxOM|_RH- dKf+ZqEj%v=61113OFdA 2Ԫ \m/b8P?%}zoヹIlGw}D@ I՗a$|N_=O.8A[9M!^A/΢Q3K8f"Mq M* C perA.cHX{wU*J}tEOA/>Z\?$uirȾT*ŷ z"Ç ܢn%i.O󙮑g yruppK{PKgC3,Fm?VD|o^np=ikôA@$IQ.~ffH$ܯogg\3<=ףE~ Sݧ|IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/appcollections/__init__.py000644 001750 001750 00000000022 12312451003 031610 0ustar00saucysaucy000000 000000 #!/usr/bin/python youker-assistant-1.0.1/qml/img/logo/Manufacturer/CREATIVE.jpg000644 001750 001750 00000007402 12312451003 024207 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1Qq !A$X 2B4Dtv(8HSd%5&6FV"cG1A!QRa2qB$4 ?&QsL j(>(3X23Q&{(0ډc_|; \%XR"o[ (X<rD~b2<"NQ&|Pfef<7 LoBQ.aqL8 v]JӸxl\I=6-;ґ^H6r~n&ѫ-;ґ+^{p6ZRkO"uk^0p-)tZ WU͇ۚef_=AkۖEQ!׋  +)Z Nyf+`@rǝ{}} wa4nڳWi& Tp;L_Z Jȷ*I@8yl*Cpw[EWO.ž:_FyaV"~2ē}880Lk0@qb䫻42;n72RO%*(M@zul 䥋mÞ? /EmZW[qu_Q&tMMSUGMvGj#N4_.Ph1Cw׋+(&ch*{* K6ܕA=?bhTb"xY%Ͱ* &,]|ߨTYI|1q=Dl +|?An 'ThJ2թPͣv0_nDs'HNg/q h#q7M ~dgX8| [/ˈzHy%]٧y+ݣd&?ZWtުEMuk4I<ͳɳa|ȉ2~3_~4Ͽv@a\hAk=n|AAr',#{4{s{_q]TkwckN*MVZoJQ5wɐ'!6:N5Nr:\t&8J3HTTk+o4-֝M5iyLW}I`jm~6Eg$D2TjTMUGxJ@`vCjOsUM]ת*&K9.vvR!m]ޮJjvC[pɤ[*z~8OxL9cv|;ΓyU Զ]%8^V8qUj Ȥu8 E2J<6P0zȩO6 a*+Cu2M=FW5VCA;jᯭ9Fp]fR&}JPS1e$l-kmEQt{lgQ{c& VFNTѶ^cg89JB"=\av:Cڥ欠PZ⾪8kWۙԥ]c\n&lӮ]ͦEuR&]NU`uLEuJÈj#34ݫV-* 무ռ}|=G3LQB.3wބ<஑X_OA=5Vyi뉄(]O6 T'g.J:P)&aP[_H}}=Ci@J ;ڎV'f)qZ5Vmb=bϷdΩfehS:p- d:T: v4cmPoJz}f҉򞍆``7/ɀ =>;lD[9'QSSt%M(n:"Y9If 4vle7#tiŞPv(`Lup/}ZQZzN#iL|ЧhBU+Í Ж$rF 1Li|54{:#:hOA>SXKbK=_)/1I}3ɓbilZ=m_{(97by2lX-?sVx2ذ2lX%f#Bl=Yc2lX%Y=^iwbJylFDZR-.lزrX"l>qz9a͋^\uc2H|OS՛5.^\a5cjԃ4رR˂,.} -?֐xN͋*!¬cvAt'D3b•/c^3uSs5fŕ͈eLy3D2L`$x"nDބ?\wj%~q@(ysaJ򀉼yl( `Wd7g܈e;QDAID23ݽDK2 P*•xP@ 8%x' #youker-assistant-1.0.1/qml/func/settings/FcitxConfigtool.qml000644 001750 001750 00000044257 12312451003 024553 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "../../func" as Func Rectangle { id:fcitxconfigtool width: parent.width height: 475 property string actiontitle: qsTr("Input Method Configuration")//输入法配置 property string actiontext: qsTr("'<<' '>>' button to add/remove input method, Up Arrow and Down Arrow keys to adjust the input method priority, click 'Next' to continue Settings, click 'Cancel' to exit the setup wizard.")//'<<'和'>>'按钮添加/删除输入法,'▲'和'▼'按钮调整输入法优先级,点击"下一步"继续设置,点击"取消"退出设置向导。 property string selectedimage: "" property int leftFcitxModelindex: 0 property int rightFcitxModelindex: 0 property int leftNum: 0 property int rightNum:0 property string m_separator: "<5|13)" property int hotkyScrollBetweenIndex: 0 //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //温馨提示 Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Text { text: fcitxconfigtool.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: fcitxconfigtool.width - 80 - 20 text: fcitxconfigtool.actiontext wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } function returnUnneed_data() { var returnUnneed_list = new Array leftFcitxModelindex = 0; rightFcitxModelindex = 0; for(var i=0;i1)) downBtn.enabled = true; } } Common.Button{ id:cutBtn width:49 height:27 text: ">>" fontcolor: "#6a97b4" hoverimage: "blue.png" onClicked: { rightFcitxModel.append({"itemTitle":leftFcitxModel.get(leftFcitxModelindex).itemTitle, "uniqueName" :leftFcitxModel.get(leftFcitxModelindex).uniqueName, "langClde" :leftFcitxModel.get(leftFcitxModelindex).langClde}) leftFcitxModel.remove(leftFcitxModelindex); leftNum--; rightNum++; if((leftFcitxModelindex==leftNum)&&(leftFcitxModelindex!=0)) { leftFcitxModelindex--; } if(leftFcitxModelindex==0) { leftFcitxModelindex =0; } if(leftNum==0) { cutBtn.enabled = false; upBtn.enabled = false; downBtn.enabled = false; } } } Common.Button{ id:upBtn width:49 height:27 enabled: false text:"▲" fontcolor: "#6a97b4" hoverimage: "blue.png" onClicked: { if(leftFcitxModelindex==0) { upBtn.enabled = false } if(leftFcitxModelindex>0) { downBtn.enabled = true leftFcitxModel.move(leftFcitxModelindex,leftFcitxModelindex-1,1) leftFcitxModelindex=leftFcitxModelindex-1; if((leftFcitxModelindex==0)||(leftNum == 0)) { upBtn.enabled = false } } } } Common.Button{ id:downBtn width:49 height:27 text: "▼" fontcolor: "#6a97b4" hoverimage: "blue.png" onClicked: { if((leftFcitxModelindex==leftNum-1)||(leftNum==0)) { downBtn.enabled = false; } if(leftFcitxModelindex. */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Item { id: screen; width: parent.width; height: 475 Rectangle { id: setting_widget anchors.fill: parent //背景 Image { source: "../../img/skin/bg-bottom-tab.png"// anchors.fill: parent } Item { id: views width: parent.width height: parent.height Image { id: titleimage anchors { left: parent.left leftMargin: 2 } width: parent.width - 4 source: "../../img/skin/note-bg.png" } Text { anchors { left: parent.left leftMargin: 50 top: parent.top topMargin: titleimage.height/2 - 7 } text: qsTr("You can perform a full range of customized systems based on personal preferences!")//您可以根据个人喜好对系统进行全方位的定制! font.pixelSize: 12 color: "#383838" } Column { anchors { top: titleimage.bottom topMargin: 40 left: parent.left leftMargin: 25 } spacing: 25 Row { spacing: 10 Image { id: personal source: "../../img/icons/themeset.png" // anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter } Column { spacing: 3 Row { anchors.left: parent.left anchors.leftMargin: 5 Text { id: personaltext text: qsTr(" Personalize")// 个性化 font.bold: true font.pixelSize: 14 color: "#383838" } Text { id: b1 text: qsTr("ThemeSetting")//主题设置 visible: false } Text { id: b2 text: qsTr("IconSetting")//图标配置 visible: false } Text { id: b3 text: qsTr("MousePointer")//鼠标指针 visible: false } Text { id: b4 text: qsTr("SoundEffect")//声音效果 visible: false } Text { id: b5 text: qsTr("BootAnimation")//开机动画 visible: false } } Row { spacing: 18 Common.StyleButton { wordname: qsTr("ThemeSetting"); width: b1.width//主题设置 // flag: "WidgetTheme" onClicked: { pageStack.push(widgetthemepage); } }//更改窗口主题 //左右分割条 Rectangle {height: 18; width: 1; color: "#b9c5cc"; anchors.verticalCenter: parent.verticalCenter} Common.StyleButton { wordname: qsTr("IconSetting"); width: b2.width//图标配置 // flag: "Desktopicon" onClicked: { pageStack.push(desktopiconsetpage); } }//更改图标配置 //左右分割条 Rectangle {height: 18; width: 1; color: "#b9c5cc"; anchors.verticalCenter: parent.verticalCenter } Common.StyleButton { wordname: qsTr("MousePointer"); width: b3.width//鼠标指针 // flag: "MousePointer" onClicked: { pageStack.push(mousepointerpage); } }//更改鼠标指针 //左右分割条 Rectangle {height: 18; width: 1; color: "#b9c5cc"; anchors.verticalCenter: parent.verticalCenter } Common.StyleButton { wordname: qsTr("SoundEffect"); width: b4.width//声音效果 // flag: "SoundEffects" onClicked: { pageStack.push(soundeffectspage); } }//更改声音效果 //左右分割条 Rectangle {height: 18; width: 1; color: "#b9c5cc"; anchors.verticalCenter: parent.verticalCenter } Common.StyleButton { wordname: qsTr("BootAnimation"); width: b5.width//开机动画 // flag: "BootAnimation" onClicked: { pageStack.push(bootanimationpage); } }//更改开机动画 } } } Row { spacing: 10 Image { id: unity source: "../../img/icons/unity.png" // anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter } Column { spacing: 3 Row { anchors.left: parent.left anchors.leftMargin: 5 Text { id: unitytext text: qsTr(" Desktop")// 桌面 font.bold: true font.pixelSize: 14 color: "#383838" } Text { id: b6 text: qsTr("Custom Launcher")//自定义启动器 visible: false } Text { id: b7 text: qsTr("Window")//窗口 visible: false } } Row { spacing: 18 Common.StyleButton { wordname: qsTr("Custom Launcher"); width: b6.width//自定义启动器 onClicked: { pageStack.push(launcherthemepage); } } Rectangle {height: 18; width: 1; color: "#b9c5cc"; anchors.verticalCenter: parent.verticalCenter } Common.StyleButton { wordname: qsTr("Window"); width: b7.width//窗口 onClicked: { pageStack.push(windowmanagerpage); } } } } } Row { spacing: 10 Image { id: fontimage source: "../../img/icons/font.png" // anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter } Column { spacing: 3 Row { anchors.left: parent.left anchors.leftMargin: 5 Text { id: fonttext text: qsTr(" Fonts")// 字体 font.bold: true font.pixelSize: 14 color: "#383838" } Text { id: b8 text: qsTr("DefaultFont")//字体设置 visible: false } } Row { spacing: 18 Common.StyleButton { wordname: qsTr("DefaultFont"); width: b8.width//默认字体设置 // flag: "DefaultFont" onClicked: { pageStack.push(defaultfontpage); } } } } } Row { spacing: 10 Image { id: sysimage source: "../../img/icons/systemset.png" // anchors.verticalCenter: parent.verticalCenter anchors.verticalCenter: parent.verticalCenter } Column { spacing: 3 Row { anchors.left: parent.left anchors.leftMargin: 5 Text { id: systext text: qsTr(" System options")// 系统选项 font.bold: true font.pixelSize: 14 color: "#383838" } Text { id: b10 text: qsTr("Touchpad")//触摸板设置 visible: false } Text { id: b11 text: qsTr("Dead pixel test")//坏点检测 visible: false } } Row { spacing: 18 Common.StyleButton { wordname: qsTr("Touchpad"); width: b10.width//触摸板设置 // flag: "TouchpadSet" onClicked: { pageStack.push(touchpadsetpage); } }//更改触摸板设置 Rectangle {height: 18; width: 1; color: "#b9c5cc"; anchors.verticalCenter: parent.verticalCenter } Common.StyleButton { wordname: qsTr("Dead pixel test"); width: b11.width//坏点检测 // flag: "CheckScreen" onClicked: { sessiondispatcher.showCheckscreenDialog(mainwindow.pos.x, mainwindow.pos.y); } } } } } Row { spacing: 10 Image { id: otherimage source: "../../img/icons/others.png" anchors.verticalCenter: parent.verticalCenter } Column { spacing: 3 Row { anchors.left: parent.left anchors.leftMargin: 5 Text { id: othertext text: qsTr(" Others")// 杂项 font.bold: true font.pixelSize: 14 color: "#383838" } Text { id: b12 text: qsTr("File manager")//文件管理器 visible: false } } Row { spacing: 18 Common.StyleButton { wordname: qsTr("File manager"); width: b12.width//文件管理器 onClicked: { pageStack.push(filemanagerpage); } } } } } } Item { id: foreground; anchors.fill: parent } } } } youker-assistant-1.0.1/qml/func/common/SpinBox.qml000644 001750 001750 00000005124 12312451003 022452 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "private" as Private import StyleItemType 0.1 Private.SpinBox { id:spinbox property variant __upRect; property variant __downRect; property int __margin: (height -16)/2 property string styleHint // Align height with button topMargin: __margin bottomMargin: __margin leftMargin:6 rightMargin:6 StyleItem { id:edititem elementType: "edit" visible: false contentWidth: 70 contentHeight: 20 } implicitWidth: edititem.implicitWidth implicitHeight: edititem.implicitHeight clip:false background: Item { anchors.fill: parent property variant __editRect Rectangle { id: editBackground x: __editRect.x - 1 y: __editRect.y width: __editRect.width + 1 height: __editRect.height } Item { id: focusFrame anchors.fill: editBackground visible: frameitem.styleHint("focuswidget") StyleItem { id: frameitem anchors.margins: -6 anchors.leftMargin: -5 anchors.rightMargin: -6 anchors.fill: parent visible: spinbox.activeFocus elementType: "focusframe" } } function updateRect() { __upRect = styleitem.subControlRect("up"); __downRect = styleitem.subControlRect("down"); __editRect = styleitem.subControlRect("edit"); spinbox.leftMargin = __editRect.x + 2 spinbox.rightMargin = spinbox.width -__editRect.width - __editRect.x } Component.onCompleted: updateRect() onWidthChanged: updateRect() onHeightChanged: updateRect() StyleItem { id: styleitem anchors.fill: parent elementType: "spinbox" sunken: (downEnabled && downPressed) | (upEnabled && upPressed) hover: containsMouse hasFocus: spinbox.focus enabled: spinbox.enabled value: (upPressed ? 1 : 0) | (downPressed == 1 ? 1<<1 : 0) | (upEnabled ? (1<<2) : 0) | (downEnabled == 1 ? (1<<3) : 0) hint: spinbox.styleHint } } up: Item { x: __upRect.x y: __upRect.y width: __upRect.width height: __upRect.height } down: Item { x: __downRect.x y: __downRect.y width: __downRect.width height: __downRect.height } } youker-assistant-1.0.1/qml/img/weather/n1.gif000644 001750 001750 00000003035 12312451003 021351 0ustar00saucysaucy000000 000000 GIF89a00mxq4Uyה6Uv >]sy"@a&DfǓ6X|1QuF^v:Z6K\zue|)Hj[jkYv۞Kd#Bb/M8W7Y~<['Fh?`4T◷+Hg𷲍~2P1O3R2Q0N8Z!,00UgU~~TT{z}|S}<;, q|T2wdkk;S TyTh Hp 4Yh ) JHqbLhD8C\Aɒ| 0pD Ms͛7edžd IH $HuFիJhu8!dt]v-p M̞BAܿBa4`6ˠC+ KLp˘1s"] ӗͨ^Z9mH40@c*X[ӡeڶ; μsKi0ËPT9,?]i E~&}84`RpFTha^TAq\v(b2 ButtonRow { Button { text: "Left" } Button { text: "Right" } } */ Row { id: root /* * Property: exclusive * [bool=false] Specifies the grouping behavior. If enabled, the checked property on buttons contained * in the group will be exclusive. * * Note that a button in an exclusive group will allways be checkable */ property bool exclusive: false /* * Property: styleHint * [string] Used to indicate special OS specific button types */ property string styleHint /* * Property: checkedButton * [string] Contains the last checked Button. */ property Item checkedButton; Component.onCompleted: { Behavior.create(root, {direction: Qt.Horizontal}); } Component.onDestruction: { Behavior.destroy(); } } youker-assistant-1.0.1/qml/img/icons/play.png000644 001750 001750 00000001016 12312451003 021470 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<IDATxb?0W#\ĭb @``RFڻwn1X;0`G1?Ig7_ \Wl@͈tXgɈa&|!ےa]M6޾ax ~>pSV&Nai:/J0\㯟?1MD1MAlPS,\D3g1E29#넅@aCSs@V 瘡 @ѽ|Al49 L6N mHnpɡt߿1|BR \k|UًW ve.L. |s31 1EF2" OcdNHbLg C3!lxJIENDB`youker-assistant-1.0.1/qml/img/weather/d2.gif000644 001750 001750 00000005164 12312451003 021345 0ustar00saucysaucy000000 000000 GIF89a00ՄŸـ̱߁Ȭ~ҝƴչͽߖɥ잪O`y֧ˢƼѺϪֿں4p6r9u:v:u:s:s=u{=z;tA~>y?|?z=vwB}B~C~DE;n5bG@tKJIHGKDxPKTOXU\`dcikinptrsrwyvu}yxw|{zzy|}߀~ヵނ߅ዺg{xՋ5t8w@yrtvux{}{}yՁჶサⅸ債ାͧǾ!,00g=*\Ȱ>zSF3QO CIdHq[#?0cʜIM"(P> JQyd( !+JJիSa)Ĉi:CŠKٳc 2"GʝKݻstqQ#M" LÈ ;jD Ɨ"KL˓!usK:Q3N']TIΝTwBiRϸ;O%K>0yITOykiQd:'ND=t@'Q_£=RJ) 8h"b4"\8|PB¡ bʈ#R+' (970p L@B8|2+&(RʒF*x@p3lAbp+J"bʙh +k>LL+L0CMs"栫a(|< *# P$E9r$G%j**K(~1N6+\9C  C K𡎡J`",O 'pi 0ld R *"ɴR2(`y.:BH1Bp -ۛ1v ĄJH |g&,`*萁29BM8 bK-a<@A@(n5`AN /L#D PA60qCBg - *0@&saJbF2F)DJ8%q4c#a4 td\A*p R,nQ U F0X Z(" kO`A p03Ao,d`Uǰc1E, 2 pO1z(2 3D 5m4Nkh,CPaFP;x[԰hИ-jq[h(41_gW. */ import QtQuick 1.1 Rectangle { id: titlebar height: 20 width: parent.width color: "transparent" property int closeleftspace: 1 property int minleftspace: 22 Component.onCompleted: { var btn_position = sessiondispatcher.get_window_button_align_qt(); if(btn_position == "right") { titlebar.closeleftspace = 828; titlebar.minleftspace = 807; } } Connections { target: sessiondispatcher onStartChangeControlBtnPosition: { if(position == "left") { titlebar.closeleftspace = 1; titlebar.minleftspace = 22; } if(position == "right") { titlebar.closeleftspace = 828; titlebar.minleftspace = 807; } } onTellDownloadCloudConfToQML: {//使用云配置后,控件状态根据配置发生相应的变化 if(download == "window_button") { var position_mode = sessiondispatcher.get_window_button_align_qt(); if(position_mode == "left") { titlebar.closeleftspace = 1; titlebar.minleftspace = 22; } if(position_mode == "right") { titlebar.closeleftspace = 828; titlebar.minleftspace = 807; } } } } MouseArea { id: mouseRegion anchors.fill: parent; property variant clickPos: "1,1" onPressed: { clickPos = Qt.point(mouse.x,mouse.y) } onPositionChanged: { var delta = Qt.point(mouse.x-clickPos.x, mouse.y-clickPos.y) mainwindow.pos = Qt.point(mainwindow.pos.x+delta.x, mainwindow.pos.y+delta.y) } } SysBtn { iconName: "sys_button_close.png" anchors { left: parent.left leftMargin: titlebar.closeleftspace } MouseArea { anchors.fill: parent onClicked: { mainwindow.hide(); } } } SysBtn { iconName: "sys_button_min.png" anchors { left: parent.left leftMargin: titlebar.minleftspace } MouseArea { anchors.fill: parent onClicked: { mainwindow.showMinimized(); } } } // Row { // id:row // anchors { // left: parent.left // leftMargin: titlebar.leftspace // } // SysBtn { // iconName: "sys_button_close.png" // MouseArea { // anchors.fill: parent // onClicked: { // mainwindow.hide(); //// systemdispatcher.exit_qt(); //// sessiondispatcher.exit_qt(); //// sudodispatcher.exit_qt(); //// Qt.quit(); // } // } // } // SysBtn { // iconName: "sys_button_min.png" // MouseArea { // anchors.fill: parent // onClicked: { // mainwindow.showMinimized(); // } // } // } //// SysBtn { //// iconName: "title_bar_menu.png" //// MouseArea { //// anchors.fill: parent //// acceptedButtons : Qt.LeftButton //// onClicked: { //// sessiondispatcher.showSkinWidget(/*mainwindow.pos.x, mainwindow.pos.y*/); //// } //// } //// } // } } youker-assistant-1.0.1/qml/img/weather/d15.gif000644 001750 001750 00000005466 12312451003 021436 0ustar00saucysaucy000000 000000 GIF89a00:;=>ABCDEEFFKDPOU^jrؗ}ʞͨޔ؜:9;;:<>=>?>@@?B@BBABEDFFFJIKA>LKGLL;~ONNOPRQ g;HcÓs'ҡX ʵ+;zUREӧNW7ܻwӇ:ɥ'!CПLe"!!E ?##t" vh#N2{ɢH2EZ#I̶ [P焞KBDHQ42r[@]Hc>"DO~|B8Į ` ̐,5*$VHND& A $B `"ZX!0#>H%7>$M<čCA  pO&T#0HWJ" &ZriX$pH$94C H '@p," ]RBI\"ht|sp&`B h薄^%NxpD'EI'Kb@ *rv -`Bd"ZNx'&<.P0`CF@)~AK3-ZL(x- ޑ + `+^BK[`A+0B skpB܀ )y(04D/B GcrO 7p p;@!)P)Р}%rOKA $hB4H0;bFḰ% ˎ%(Tb|(pт{7׻] <0 ̣ R/ [ RtXœ6 ~@Z@` ] S Ȃ0`_(@b nR8 fE'^ $"p VYȂ>atP*z!]Ti0v_cxGrJwdaNNq`H7]E юq 9^_ #Pa `,㦹(™4@1e,]0j˜k1bG d]0^&̈ts eT/|ZD| X8` *PVB=z73A SЀ3 +Wp4jcP,AB#h1c8q5n|ci\ҠƎ xuý?PjdC4 WB6 -c ؂-pAcFcaюX.y ]63aoxc؂?ڨej k4-FNk_B71l x0OW§=jm| ȵu n|MbƯml`w!7pb8n{8{;67!ez@~@:M3C98!sP8>omGC(3sL\A;youker-assistant-1.0.1/qml/img/logo/Manufacturer/LEADTEK.jpg000644 001750 001750 00000007211 12312451003 024054 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !Q$՗Aq4%F 2BDVE&63TdtU'Gw1Aa!QB ?FhtFbZ3C+)3LQ"LS]̮iBlf,jbQWha/hOCVKSx1F~Hee1Fy#:)3qD_s˻?:\HMŚLJ3c,=93 y~Hj׳Էͮ, Xx>}ü-{uWKcӖv ꮘOet徍,&*b'6TCҖk~a˖ō)9op%Y}5-2[g2! (q :&3D ̀d`.Oʾ$7i:A#aaQA*r>d0R fpO`o@Q׍]״'j[2X8 \ ^LeV^7AF5mƯ-*D ٱX5̟f0qM=HM| R]\f0+F5P\Y 5JX=RVYe\e)ŭ?)1_¢ںn&I\"]-6mɽVܰP~j܍ Ø#מVi]p#$UMM017V4LsUdT9sYJCM[|Q[6eAO讦`=a] }qwMU@tE24IX2e'R"HE] KwգO)YicVKGթ@ߡԧƮȅ"̦jA<_0x׮nZ^ĻX{Bӣwr,~gQOyT9ۻsyn6XL,`\(N3`2eKSAEn7M\u#.N&W]NpNo`;mpwܾS5Rtt-q^:՛c%ygXiK㡤rxe!S┸)Spֺo?U1 Q8#h@aTyV{Pa"{g<{r*Tֲ8 5KM䆇?u%V cGr\'A>>MC ~B!3M z/ <ހm۹ ZsO* Fku&&0`Ί=6/T?b;ؖO^j}K^O概3oT|b ڌ`aOۂldRgi8'8NTH{C4>T1`QhAlCaAy,`~a)wEҌA^PlZ],Bפ%b=NLF00{snbaSmBȤ*fRM`^PoL kq֯jH-.|ibtP 853j*~ w^[ G!)tFjQI80dØ'~mB/zl֨彶gPMz$dSkAJ\(9dg0ؾQn&ɢQB&>'m- Sp`4ͽ6ZqR3 3+tGSai~vjndyrOߟhNvn3Î?v[ OٻrsɵS֚+Oӌw^lJv.8ҽW-bݳ9OYduʕ蔾cuj%׎&TAeԜmuNSݥ?kMV3ev]k!;#Xd_MݡAE#)_ VS 9r$c )*Fܙv:o1Z-ǡ 3GKSx1F~Hee1Fy#:)3qD_s˻?:\HMŚLJ3c,=93 y~Hj׳њ;=Qjo( (?gE1F~(1Nyww2K CӟQQFu\lbYE4Fcա>/ Zyouker-assistant-1.0.1/qml/img/logo/Manufacturer/WINBOND.jpg000644 001750 001750 00000007377 12312451003 024120 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1AQq2!B$# 3%1A!QaBq2"#$4DRr5' ?$d\R8OtG` 9+H$tE+R 0$`g շE utIS^喒Q 'q ZA&=PrVIWa˚ WI|!%rxA$3H9n (  #ڒӿ4-$9`rOH =Lz H,×4$tCJ0HfsVQ+AG%O&i{ZIFr*d*+zukרZThRZSS(C~)Q`wT=h>lL9D4Wt#ս YAEt)*Yu0- 0Ե n6@BiX/z=p;Crҳ;4.X 9I#\4W."V'ˢ37W;95mzii5r|Qm0E.i߭(4jqX yiTRƫ^Bsm՚h459q]V>nשtm}C@olߗ4_0orrxA$3H9n ( n ?z'qkԸOOۉ?n5Yv'dmǖ^'r[4vWqwet=k|XO+Bh(4=ᦝR4[ޠr(֞4R_t].e߫ HEpPYUVQ; a݄K6U2 mm>ZZrR] Wvܖ[41ø4FvpMڀXѨb4ƌ \\h*8-2̹e=og,\G pd‡*\ ,3dު)mhiه+;DK;&j3WO5wqT\øon­ƳdlSopX;ix+<Wo7;65a[bGv @MRZ5FxsՖ Bg7qA^ն5"k[pǼm?QE3axv"{n۳OY\kkŸ_ ܞGy;[lS'{EwKPb RZ9%ƅ#UuN~N͍/X+0r3ŊkʬN>㦤iworKO0ll ׫仆ۄ)85?Wo/3~ho7Ӭ[ %<;bFv,f布ƹslu5NG=Nq.vCEh/'>Qp|U=nM|8j1^]J9sA*I/7D8$Y#i5m %AdA{RTwfeg,I@)BA'#VIT|")rU_0opI\F jۂ@J"r:D/rI(X\R8OtG` 9+H$tE+R 0$`g շE utIS^喒Q 'q ZA&=PrVIWa˚ WI|!%rxA$3H9n (  #ڒӿ4youker-assistant-1.0.1/qtsingleapplication/common.pri000644 001750 001750 00000000564 12312451003 023422 0ustar00saucysaucy000000 000000 exists(config.pri):infile(config.pri, SOLUTIONS_LIBRARY, yes): CONFIG += qtsingleapplication-uselib TEMPLATE += fakelib QTSINGLEAPPLICATION_LIBNAME = $$qtLibraryTarget(QtSolutions_SingleApplication-head) TEMPLATE -= fakelib QTSINGLEAPPLICATION_LIBDIR = $$PWD/lib unix:qtsingleapplication-uselib:!qtsingleapplication-buildlib:QMAKE_RPATHDIR += $$QTSINGLEAPPLICATION_LIBDIR youker-assistant-1.0.1/qml/func/info/BoardInfo.qml000644 001750 001750 00000015114 12312451003 022376 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup Rectangle { id: home; width: parent.width; height: 475 color: "transparent" Component.onCompleted: { systemdispatcher.get_board_info_qt();//获取详细信息 var basicName = systemdispatcher.getHWSingleInfo("BoaVendor", "board").toUpperCase(); var biosName = systemdispatcher.getHWSingleInfo("BioVendor", "board").toUpperCase(); basiclogo.source = InfoGroup.judgeName(basicName) ? ("../../img/logo/Manufacturer/" + basicName + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); bioslogo.source = InfoGroup.judgeName(biosName) ? ("../../img/logo/Manufacturer/" + biosName + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); productText.text = systemdispatcher.getHWSingleInfo("BoaProduct", "board"); vendorText.text = basicName; serialText.text = systemdispatcher.getHWSingleInfo("BoaSerial", "board"); biosvendorText.text = biosName; biosversionText.text = systemdispatcher.getHWSingleInfo("BioVersion", "board"); biosreleaseText.text = systemdispatcher.getHWSingleInfo("BioRelease", "board"); } Column { anchors { top: parent.top topMargin: 40 left: parent.left leftMargin: 30 } spacing: 20 Row { Common.Label { id: basictitle text: qsTr("Motherboard Basics Info")//主板基本信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - basictitle.width - 30 * 2 } } Column { anchors.left: parent.left anchors.leftMargin: 20 spacing: 10 Row { spacing: 10 Common.Label { text: qsTr("Motherboard Model: ")//主板型号: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: productText text: ""//systemdispatcher.getHWSingleInfo("BoaProduct") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Motherboard Vendor: ")//主板产商: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: vendorText text: ""//systemdispatcher.getHWSingleInfo("BoaVendor") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Serial Number: ")//序列号: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: serialText text: ""//systemdispatcher.getHWSingleInfo("BoaSerial") font.pixelSize: 14 color: "#7a7a7a" } } } Row { Common.Label { id: biostitle text: qsTr("BIOS Info")//BIOS信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - biostitle.width - 30 * 2 } } Column { anchors.left: parent.left anchors.leftMargin: 20 spacing: 10 Row { spacing: 10 Common.Label { text: qsTr("BIOS Vendor: ")//BIOS产商: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: biosvendorText text: ""//systemdispatcher.getHWSingleInfo("BioVendor") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("BIOS Version: ")//BIOS版本: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: biosversionText text: ""//systemdispatcher.getHWSingleInfo("BioVersion") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Release Date: ")//发布日期: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: biosreleaseText text: ""//systemdispatcher.getHWSingleInfo("BioRelease") font.pixelSize: 14 color: "#7a7a7a" } } } } //logo Image { id: basiclogo source: "" opacity: 0.5 anchors { top: parent.top topMargin: 80 right: parent.right rightMargin: 30 } } //logo Image { id: bioslogo source: "" opacity: 0.5 anchors { top: parent.top topMargin: 220 right: parent.right rightMargin: 30 } } } youker-assistant-1.0.1/qml/img/zh_CN/quickscan-hover.png000644 001750 001750 00000017621 12312451003 023524 0ustar00saucysaucy000000 000000 PNG  IHDR-]tEXtSoftwareAdobe ImageReadyqe<3IDATxڴQ=KAh0QB*T" XZT}zSا+S1"ADK!ݾE4X9eYqP!P\FAIJ8B `!B $up|kOy WBCcxMhm/obr3߰Yk, VC-ޛB$?#B&%R4 o◅KW`0 dZbVWhN=o oo :n~y!n]#/CNѱc.DQA"Rm!͛CUիĹ"|XߖgxWEX %&.Y8~6>pJHxUUQ_',gv2pY{GP1 = 6+/垉tg 8=lgyinwLB#0tSoa)I9X:<{fy F?8 m/7.bFC(^Fzn8b09IGŽ_ #¬~pⷰqS$5fxɌ/0~6( f SuO8~CeS].[ŃK $gi +ߵ2Uܻ+@{ QlTS9k@I x#'k"sNl+dxTQM- ("Kj7"~mqk)JШ5dcb0Ə (&-Y^iLT+j|%!1 ˇ][JMZVq?23gdsܥ>]w|}41JP}}G㐑.(:JR]ˬ48ג5Ʈx]ۼav&Tao.2ɰJAH1ٻV6&lnA4/Yi%TW,W;bTC]h|.t?7$w'O7-\涩< 6z[4q3(~ ù3Aw09[! )}!NDF[ ._wݼ;7a8*{Oסz)OFb_x>m:~_bזѢc8>ZT6+[MFE3 D s,K8$n3Ax16@z6 6<[jSskTw%\vvR6X/ O pdJKd84- C; hH%ՒUң]&_u*|;XqʎUU>UtgMOJwS(fK aVNߑaY >YG&fr(nXyVDGS66"lF Z"@+JB /A1& IQHLԘ)"zpkƝgfwIowfwϑKfdF쁻ḿAv W(Z( p>e(r'M1/44v@XD'Xx?8sQxb*GpK"A0Zh'+]}5#aPy\ڻ9'P"9>2cS{iٝ]ѭ^TΈ|f)N}&W]&*S)z"ʝ!:1E PFZLqz~wPD|A%Ph&Sk_cQ3G DlQJA9 -k] NK [puAV'P=0px}ܩ }fnUsH$A#Z Ns +OhTDprTarUxu!lKL.௟c;죧 #9n$/,|uXMp^(Ê`* ' :/'+w" RI 2 3cz![^:7kFZ:ϙm]-0|ry7H_<~ yJy3/p. i,،6xgj4w6U⤕)I/1f~B>f/a"K60tSP6́@w^^ODe8l[L5%e[le#mb1+Dz ͇êi7y)?)y:p\*srnE8/^a2t#Wq 9BE弸GVCV^*fJxf?E-M#_b&(9ڜb5Uaэ ;39gEC=뒙kno]x5tz(7&Xhg߉dݐpm}k uAXl;%ŐNduɶ6g"\K#\DqW٥Oa7Sjeۈ +|̐L|ڟŅi\nEiYyՊF23Tg 6"dU$Q<`ޟb}c-S -F` 据F @;k̀k5Qi>"2XV/ |Y#2)Q@Rm:Q"ϑ+%j{v}_4ϝ5ַA*qkG/ҼiI Ev)b~q 1O7=Rj,:)}l%f*93pn$Qt'EBow@?Q#8C4'zӏl jzYvVqF4MS\Fk"'Z#3gjއ=R ϔkoLDCKua`w#JT!|bŭfH+M%4% i|W%UT裪Mv?q831&÷?0zGj(@t E@VTĈf,;Q.Щw5 0qhpʓ*@jop'r5kREmKŧB?ӝVpDt T_N|8ɇրmTƺxVo,pqA\__"尓i9 rs@j #=1Z,m(1z'@>@O:v-7+tb 2w }Dy;BTCSA }d}jU-QhùI w~ns]IiR̹cZCmZo6E%q4b 7ڇ٘QQnƫ݋B)1{Ϭ:nw'.7SE+qr@!A NM֞ꔥ}~7zt?rr{&Օ}=ͫm/b//zu?&6}}{_ӂztxan DŬr6jPl*-OsgK~c婯!77s3+`jRR1@)-!5`u2VݤuA 7zjAwF0A \+d:{z,o! F WGc OW._î׸cp|Ca٫GQZe\=9?S *DbۘVQ} \dyQXZ 'םQgNrj9J4xme2`^vlӏK}>{olGڴ  6X`P@m"'/iY;J( ㎐ɣ AEtb$19wKb܍||O+@}>;n~bIa]jZ'ÜY!MOZn:3+MM rŬ8;2ܳ#<wp:sFFf:>^x`+FrPPlTnsJT:eK-CȮbg[A<9C(+9rvK$ # Ǻz/UI42"~ Q0fT]s-.y_|`*SzY|fL>%-N&6|v;ۋ>~g?ig|YRV3 E& f}>;0L. a.~!;}^;-wű` C% f 'q TUUgZR֚%~X 10h EZBsŊ ñЭK/<Uķ}E$de7v?Ggؖ8KL5yJ\vV)5xr C`p ͸)2Q~r"ʔ! (u~].pT OJEQF^%{ pXY"jmRpZ&!<;# i-1S( ;޹E}Kx e9ڹs=vB]{8Ӥ3# d⥨o3To-*}rJ'~T Xbz*Ja1:[1 [N~BDCr72"!ʝ6@öyqp)Ʀbaz}9 9s=hFMB2̟W}mAdh,Q(Bc)kx[j)0RbY(%e(ǡ9%++ L׳,"y04䓼 7-ǔ]|}`1bnjǥSe*~龝v"ylږvUZ0u3Se'd'D1^YJ,ޭhO@_$UvUcWHVXqpN!y%+"#VvDCǓRIx_tA)wcRmǍtH#*E|S2ӲmP b0āן3%s~5.E߲Ll^A9@]b+ua;(S16>F{$ɏ d(UgEl3pt86/ Ʋzfzq&,xɠ6Zxp7Qb2b n#7÷-M"ᗰ'Ca~ls}IJO>:8 lѸ-bUDv4Fd3 184%o˃~m5 F t*?!5wf?@(Zj=]"ry:grwoZQOQ<DS|uɑFS]6c C'$IS}=c-vaAQPȏ#:!Iq.`>,?cOhƈjGїcPSujpaP*r7 H=ݓޡvlNJ&T'HIENDB`youker-assistant-1.0.1/qml/func/common/Dial.qml000644 001750 001750 00000010533 12312451003 021741 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ import QtQuick 1.1 import StyleItemType 0.1 import WheelAreaType 0.1 // jens: ContainsMouse breaks drag functionality Item { id: dial width: 100 height: 100 property alias maximumValue: range.maximumValue property alias minimumValue: range.minimumValue property alias containsMouse: mouseArea.containsMouse property alias value: range.value property alias stepSize: range.stepSize property bool wrapping: false property bool tickmarksEnabled: false property bool activeFocusOnPress: false RangeModel { id: range minimumValue: 0.0 maximumValue: 1.0 stepSize: 0.0 value: 0 } MouseArea { id: mouseArea anchors.fill:parent property bool inDrag hoverEnabled:true onPositionChanged: { if (pressed) { value = valueFromPoint(mouseX, mouseY) inDrag = true } } onPressed: { value = valueFromPoint(mouseX, mouseY) if (activeFocusOnPress) dial.focus = true } onReleased:inDrag = false; function bound(val) { return Math.max(minimumValue, Math.min(maximumValue, val)); } function valueFromPoint(x, y) { var yy = height/2.0 - y; var xx = x - width/2.0; var a = (xx || yy) ? Math.atan2(yy, xx) : 0; if (a < Math.PI/ -2) a = a + Math.PI * 2; var dist = 0; var minv = minimumValue*100, maxv = maximumValue*100; if (minimumValue < 0) { dist = -minimumValue; minv = 0; maxv = maximumValue + dist; } var r = maxv - minv; var v; if (wrapping) v = (0.5 + minv + r * (Math.PI * 3 / 2 - a) / (2 * Math.PI)); else v = (0.5 + minv + r* (Math.PI * 4 / 3 - a) / (Math.PI * 10 / 6)); if (dist > 0) v -= dist; return maximumValue - bound(v/100) } } StyleItem { anchors.fill: parent elementType: "dial" hasFocus: dial.focus sunken: mouseArea.pressed maximum: range.maximumValue * 100 minimum: range.minimumValue * 100 value: visualPos * 100 enabled: dial.enabled step: range.stepSize * 100 activeControl: tickmarksEnabled ? "tick" : "" property double visualPos : range.value Behavior on visualPos { enabled: !mouseArea.inDrag NumberAnimation { duration: 300 easing.type: Easing.OutSine } } } WheelArea { id: wheelarea anchors.fill: parent horizontalMinimumValue: dial.minimumValue horizontalMaximumValue: dial.maximumValue verticalMinimumValue: dial.minimumValue verticalMaximumValue: dial.maximumValue property double step: (dial.maximumValue - dial.minimumValue)/100 onVerticalWheelMoved: { value += verticalDelta/4*step } onHorizontalWheelMoved: { value += horizontalDelta/4*step } } } youker-assistant-1.0.1/qml/func/common/CheckBox.qml000644 001750 001750 00000004267 12312451003 022565 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "./defaultstyle" as DefaultStyle Item { id: checkbox property int minimumWidth: defaultStyle.minimumWidth property int minimumHeight: defaultStyle.minimumHeight property string titleName: "" width: Math.max(minimumWidth, backgroundComponent.item.width) height: Math.max(minimumHeight, backgroundComponent.item.height) property alias containsMouse: behavior.containsMouse property Component background: defaultStyle.background property Component checkmark: defaultStyle.checkmark // property Component checksomeone: defaultStyle.checksomeone property color backgroundColor: "#fff"; property string flag: "" // Common API signal clicked property alias pressed: behavior.pressed property alias checked: behavior.checked // property string checked_mid: Loader { id: backgroundComponent anchors.centerIn: parent sourceComponent: background } Loader { id: checkComponent anchors.centerIn: parent sourceComponent: checkmark } Text { text: checkbox.titleName font.pixelSize: 12 color: "#383838" anchors.left: parent.left anchors.leftMargin: 15 anchors.verticalCenter: parent.verticalCenter // color: "black" } ButtonBehavior { id: behavior anchors.fill: parent checkable: true onClicked:checkbox.clicked() } DefaultStyle.CheckBoxStyle { id: defaultStyle; styleflag: checkbox.flag } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/SPARK.jpg000644 001750 001750 00000012331 12312451003 023662 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1 AQq"$2B%aSR#s4TdtEeH   !1AQaqB$"4DT%&2dRb35EU6 ?FY*F57:b1F?xxtXJ|4 Y#ӿ,"CXqO-ɀdEyQ"}^]J-u(kDo 7YMrta:b+2U1N谔&iA7"GXXEȆ)[!r=;D%(YHCiy%1GLܽ)lFly+誫5?s3!y`*riɘ6`p* < CmCH`ݛ/i6tyAU+)*śi>#. AHoX|R5H!A[=ݭ4jԊ~a A4WhKfót-^8F1C nzR{\_ZbX 0s6 e\fL p~ϵ.̡s3,}2xy^}vBMw ݛ2P WA;\u[ѻMxY-I"MAJHQ M;3ᦉZ{`"E !`!wWJ,fMi<ό.2 nǭmh(t5wLn?ź]cYO T}ɤM*,h\p j ie-Ϥ-5:PLYI_=fJ\<&D6=*kKSjadlWtᢪwIj>G>_.O1&zEfлӧ 񧉬ԢىCu^p'far剤]A%Q?FBƘ@!iFXiQã$P~9FC-ܞ-?Y . h7Km6rR1fJHazV6VMk30&??x<\yjO&bU du27N,@|HKpM]z%m'0u7WvmnZ]j-Fu³s^$*W/Gr& gGh/ ]=0$H8LܠBϡ4&-m'2L|W|і*|vV\[Ú~ZJO4xI^EړdfM5ȉ׉54:mWt+:.jQug7_?'>aG:-1kVZīV|p>!(:6) z-BkK*ͦ3'Z)޾>IgP|l_[9 m#2u",ѹ\Ym{~X&0(JEf;3Ԛl+4@n: 3u-Te@ !ͰǟU:/`G,D{^y!Ϗ[UZKX8rQSC:=`[fǠuvQ"wzpMr'cQvqE fq˼5It#DuP..CteB;v0Xn[TroV OK>8+H(~j>xn??t_.}x}4#}1jW>bVB]uBQT"(U<'eND` #vծu |Qݖ_}>^pO>PuX17mDz$\9h&7B|h_&=4"Uۭ!wi0FrT -^~W I<ԯJ&0$Gl,JjXKSNqqMI">R/UɕP8CǍ*e 4;.ݵ wWTqYGԟzL~\L"7+]F=ts֜ jQP Lu6)\(t"U*k\=Z=Exjr7W.Վ] =2O:u6̻t&M-ǽ5*"&B69v%JdζDEZ9.HOJl 7=R1Խ?8Tv9 TG@[\w+v)ŨE=ud3*l{n fέt}ٶ=Gκ8íve5y[" Z ~/ V.V S 1Tw4zr7.UUYό\y3܎4zP[dCUiVTz+ʅ;}_1go[릸隩ZobM#"4&W&-,<ݛYycao<013"x˔8u)%44GW䅘4'8M O5֊spB_S{ u֥iɢ(/#mo\﷾Zon<"m=E< UJgM+4bQFpnZO9p|Hc>%?wgp\մ >8]7ZF(lfDD _簜/5m+G-/".e RPL|r=8ua~ wy6l-orõzA8`W,.ct 4 ?} W29Al¿ߩݻyM㯒?x8dٽ\;+b\ TbyϿ'0!*>OU1^8_ Cоǩ,7+0Ni۽V_o5y񑕝폲0>~THQRYd'xnaX??Q-,;3ï߿A,߹U#;+:n z5E?׸ET0D8 sEq?z՗X=zFd>SR?0cr!r#<}Z?Rxv1Г,?~g .1MbxvGן? 1{ 돷b^ӯn\Il,l= qs(_·;:~'j"%`ZJR맟`pS'.2 CDe~#7232,LUnfpÑ-VZf|"p\Q}pF:мn Z COW;-vRt?9>z FB3,C.<h+QJUz{\px/tJ!uf`PP}xVc#'T꽗>I2 Ii#h: \ j լa~"Ф\]%PR WcrNy*>)=HZB1.+/֛x< *.nQxNtanX˲Qk7Ҧ-|w?;%-ӌ D/.́قO'?C5[^,BqxY}h[U?yy}y随%ktkkku3Anc*-"X t ȴ*eH:Gm7EJҖ֭I%k>{I&QG%^8ps{ιOچsC[yy{VX?x2{&Q$ҼmFB+̓A.L*ye]1YPFc d";h,-v9!#xMtN^6+C1\شʉk Js؛ X VbdښSͰ)z[Vxk4ع=TUpar+~XM7''gFHG50>y WIM}1'Fe&ȵ`p_F˩h̬S(Q;èT$y XxM6 ‰*6j*;.&`EvimAHSC d!DK'p{g\ "HL]S2eya鐑T xn.WKbE=^+EÂ' Y~Ór?z 0k0,A-Si#rhM-Jo=00EUqq~) bGv-]IE!`bey֠-GC?8Jdn$ǎ7_(kr{'3m'05Bċ04$}a4PP+[ku΢o_&N5=u./&(HΓX?c5Wf{ s![{RY} O\\$IvqnVٯ$Ͱ@2L8&N$Lǘ0:=9nP(U .O.9y?ɩMq%I\N˲Xog׳Myjj\ڐ'H[o8tLZ>@A m~5!mI2%F3s7BxMnX OoUy=||`R=H9=?hZ`ڎ_qB7Y(0TnPhU0ETiE*Tu냾miU( m%P(Pƣ64!!+ qb;~]_>|ι&Hˆ*!tso~_Gw_7gcB:*p)Leb4Ƹ`{r1&La7@-e"R/dWV _J0JI,rzJ3&^c,   ުZ Gns.TF8`_aw!maYRYU":4'O`b,Y \0\*x"X3MsK?ϗ]}ZFE`蓵p0BM9RNhF &SzJ0-ya68YK@Ȓ@Re˜/$2SeKrN/:UW:fR~F'ҁtHMVU`4Zw3$B0\YKyZ4_*_>5LǑXR(WǤAR*N*:I._JUo-[ӻ{a6GՑJf T\dE |: ˫W({J -Y /AHMeeә,Sq=@G/NEX,a{ή9'et5-mN\P"- ~ wn;gPUє"tҞF-(_rVY.-%jr?'ˌ bf4 V #+Ywz{ BYf8Vӕ./;q<32I3<=e7.M"9[81Vmoo8z ]|K6 Gn= w Záƺ)z#C$8!v:إ<.rx‹B3܄jY$f׼IƖqͭZ_ Y^u|seUaYH+/ZrW>RR^+$Y}&֕ܞ@BdΥ(qЃ)/Ev/ +Z-t!W=;^= O=v9?^~&e7K'ϬK7?tS ңLv|w?kSYee,uuAk}yG3otD(kl\$SQ(g2R4y\nq @S1AB=vfU\Sh1FV-'ܷQ--pq!uX)иS|Buòٝ=dߟ .08㖣[;H]C(3sEz/vӡTBoOlLKB=Nv;vEP-b È+ NѶk՛<\Ѣ)f8 8z TVǮ}n;Wsh>xPvp9 D:r~m+~t_)…yдqL.{4q[ EѢD1LR[j]7|58r)Y)$pcei@͘!r\oor &՜.=T ^lj9։.3kϘq$*<)Bٜ?yR~s" Ug)9ar#s+*h8]C0E;B֔+ݝu]uFnKd%,uܗZ~3 >abx 0jQ&(.KIRzb8ƶѿ]T77IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/ATHEROS.jpg000644 001750 001750 00000011521 12312451003 024107 0ustar00saucysaucy000000 000000 JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  !"$"$CF]"1!1AS"2QaBR,!1AQa2q"BR ?.!A!A!A*mnOx22I㯍b;Ud\u&^G$Ƈd;!p۔[,N6%[=;vAKg\=Q1s>/ׂ3׷lG6ٌxm&ȃ:egp簺hFvX!)$Yr5>-tG0FQ*.fN#FÀ+.nTTvH#XZ"xO74!",(ha.qtruG_Su5֓#*ZZVÊ8HZ u'$#MX~lj~2VE \_Xw.%J4Rp 1jRCDu'^Z)u9..3IP.ݵnSPXLM_mƂ |q|#vZMԺ«uT*+KL[ͩaH8 eEtYm6 aIBV|0.it'"af;?ͅ{28;7BnQ]gPRx@F;f3gWr\6Kl9'gV:!a^ս[>J6:|=:|=Jk/OOP(>O>O%B?@{t?@{"abT /Of%c<$!"B$!"B$!"B/youker-assistant-1.0.1/src/logindialog.cpp000644 001750 001750 00000016535 12312451003 021134 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "logindialog.h" #include "ui_logindialog.h" #include #include #include #include #include #include LoginDialog::LoginDialog(QWidget *parent) : QDialog(parent), ui(new Ui::LoginDialog) { ui->setupUi(this); this->setAttribute(Qt::WA_DeleteOnClose); this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); ui->btn_close->installEventFilter(this); ui->btn_min->installEventFilter(this); ui->okButton->installEventFilter(this); ui->closeButton->installEventFilter(this); ui->btn_register->installEventFilter(this); ui->btn_close->setStyleSheet("border-image:url(:/pixmap/image/closeBtn.png)"); ui->btn_min->setStyleSheet("border-image:url(:/pixmap/image/minBtn.png)"); ui->okButton->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); ui->closeButton->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/quit.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/quit-hover.png);}"); ui->warnLabel->setStyleSheet("color: #a53205;" "background-color: #fcdba7"); ui->warnLabel->setVisible(false); ui->pwdlineEdit->setEchoMode(QLineEdit::Password); ui->username->setFocus(); loadAccountCache(); connect(ui->username,SIGNAL(editTextChanged(QString)),this,SLOT(setPassWordForAccountCache(QString))); } LoginDialog::~LoginDialog() { delete ui; } void LoginDialog::loadAccountCache() { accountCache.loadFromFile(); QStringList accountlist = accountCache.getUserName(); QCompleter *completer = new QCompleter(accountlist, this); completer->setCompletionMode(QCompleter::UnfilteredPopupCompletion); completer->setCaseSensitivity(Qt::CaseInsensitive); ui->username->setCompleter(completer); ui->username->addItems(accountlist); if(!accountlist.isEmpty()) { ui->username->setEditText(accountlist.last()); QString passwd = accountCache.getPassword(accountlist.last()); ui->pwdlineEdit->setText(passwd); if(!passwd.isEmpty()) { ui->passwdremember->setChecked(true); } } } void LoginDialog::on_closeButton_clicked() { this->close(); } void LoginDialog::on_okButton_clicked() { QString user = ui->username->currentText(); QString pwd = ui->pwdlineEdit->text(); if(user.isEmpty()) { if(!ui->warnLabel->isVisible()) { ui->warnLabel->setVisible(true); } ui->warnLabel->setText(tr("Please input your username!")); } else { if(pwd.isEmpty()) { if(!ui->warnLabel->isVisible()) { ui->warnLabel->setVisible(true); } ui->warnLabel->setText(tr("Please input your password!")); } else { if(ui->warnLabel->isVisible()) { ui->warnLabel->setVisible(false); } ui->warnLabel->setText(""); emit translate_user_password(user.replace(" ", ""), pwd); if(!ui->passwdremember->isChecked()) { pwd = ""; } accountCache.addAccount(user, pwd); this->accept(); } } } void LoginDialog::action_register() { QDesktopServices::openUrl(QUrl(QLatin1String("http://www.ubuntukylin.com/ukylin/portal.php"))); } void LoginDialog::setPassWordForAccountCache(const QString& userName) { QString passwd = accountCache.getPassword(userName); ui->pwdlineEdit->setText(passwd); if(!passwd.isEmpty()) { ui->passwdremember->setChecked(true); } } bool LoginDialog::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->btn_close){ if(event->type() == QEvent::Enter){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->close(); this->destroy(); }else{ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->btn_min){ if(event->type() == QEvent::Enter){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->showMinimized(); }else{ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj==ui->btn_register){ if(event->type() == QEvent::MouseButtonRelease){ action_register(); } } if(obj == ui->okButton ||obj == ui->closeButton || ui->username || ui->pwdlineEdit || ui->passwdremember) { if(event->type() == QEvent::MouseButtonPress) { QMouseEvent *me = (QMouseEvent *)event; dragPos = me->globalPos() - frameGeometry().topLeft(); }else if(event->type() == QEvent::MouseButtonRelease) { setWindowOpacity(1); } } return QObject::eventFilter(obj, event); } void LoginDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void LoginDialog::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(1);//0.5 } event->accept(); } void LoginDialog::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } youker-assistant-1.0.1/qml/img/weather/d26.gif000644 001750 001750 00000005466 12312451003 021440 0ustar00saucysaucy000000 000000 GIF89a00:;=>ABCDEEFFKDPOU^jrؗ}ʞͨޔ؜:9;;:<>=>?>@@?B@BBABEDFFFJIKA>LKGLL;~ONNOPRQ g;HcÓs'ҡX ʵ+;zUREӧNW7ܻwӇ:ɥ'!CПLe"!!E ?##t" vh#N2{ɢH2EZ#I̶ [P焞KBDHQ42r[@]Hc>"DO~|B8Į ` ̐,5*$VHND& A $B `"ZX!0#>H%7>$M<čCA  pO&T#0HWJ" &ZriX$pH$94C H '@p," ]RBI\"ht|sp&`B h薄^%NxpD'EI'Kb@ *rv -`Bd"ZNx'&<.P0`CF@)~AK3-ZL(x- ޑ + `+^BK[`A+0B skpB܀ )y(04D/B GcrO 7p p;@!)P)Р}%rOKA $hB4H0;bFḰ% ˎ%(Tb|(pт{7׻] <0 ̣ R/ [ RtXœ6 ~@Z@` ] S Ȃ0`_(@b nR8 fE'^ $"p VYȂ>atP*z!]Ti0v_cxGrJwdaNNq`H7]E юq 9^_ #Pa `,㦹(™4@1e,]0j˜k1bG d]0^&̈ts eT/|ZD| X8` *PVB=z73A SЀ3 +Wp4jcP,AB#h1c8q5n|ci\ҠƎ xuý?PjdC4 WB6 -c ؂-pAcFcaюX.y ]63aoxc؂?ڨej k4-FNk_B71l x0OW§=jm| ȵu n|MbƯml`w!7pb8n{8{;67!ez@~@:M3C98!sP8>omGC(3sL\A;youker-assistant-1.0.1/qml/img/logo/Manufacturer/WDC.jpg000644 001750 001750 00000011070 12312451003 023416 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF] 1 !qAQ2B"$% #58x1!AQa"Bq24uT67 ? *و*B@3݂h& ى4gՄ 9ӧS$?7`0T fLNie ʝďJ.v y,Z 3b  ` :brM a'HtĔIM +=Ĉ*Sr"`@re;#R˿݃5^K,g, $=&iνH}=XIR:z1%H&=2EfS0o#t.>6֚rWp xj9&}'b-3ܲK]d ֠(NL4`4:{PBDe?AK-k俵G}CwW3?8|88OCeصcѦbdlG7֭|).k$[eaMv;qdTd2]RdYrIrdV[;Ml: .ˬ+GhiLv:ůs[&n5";|=LܮHuM+2CDY.\DV[Z9\HD·GeoF-gN)g7L'iXuX^3@l"!C?ԕ:ϥSSM]Z+.vGsSI.v]NZ+eQ)奔 \ŗ;AMxWT:I ;8K6*T $YI dvtP6ּ8.֝]ij+xڸKS<j@RL돁lwxlփs\4$zb]=<@ޘiKe&[Cp~\r.}&<:UtSˍ-& LSXJ+.#\<[Qzo~Viֳ)qa0w"S1-:~@UYG~}Gsi }Xv鄲K I'hAP72Qnmr)@z!Z=cNʤC 5ԽZjSN͘\wETx^wr\ngJm2\,Ǎ[4:|^J3 L-(&mFRAFse~J( IS 4b[؁B\$xR&k5<9`׹+e-WxDt7U !t&5(d4 sziFG&'lL擫7[8S?{K7 FМքEI+)AMJ.EGHCF-6 OR+B]kv$˺yCo~yM0c^)Fs-U4IJ`fCZZ!PT d|i{˦k-rQhR0yO߯'BI7Q`ˋLUJDTX]X`: eŵW=?ⷁ$g/ kNϭ~//9ul-pmZ&kfmJ-g[ZjDR)h4 t*~m6{_E5MHkyno帒1cٴ/ ΐm5O& J'p-3쿜qÎniT3 欃8edTtg2_UiqrT*nL6uIKuxK7`p3")k-%q* 1J^rhRdV?OՎK޲[ҦS8#q\uK5O!6PqS-2zZ22M#$/*W"HI$CLX5I{W蟑>RYo;EQo۱NnZΞfܯ[uE?}}t̼RQuSoүګ*'|^aw.˟g0hbg [N ^&&}J8ZqmD"'QL|4i]i}YYk\ ^l?\;xߎ?*u/+=L&@x?C HūD[pѩe5 LA=eG$eI;St(K9(kųϹ3c|;'Zn:!ȾMO+S}+k;2\ZqiYb"dW#0A"ʾSQJpd *]Dzy0]C?œe2[م};t݉o}4ǘQF D6Fɱ@:KTCJ^HL Ӣ*#NEk{='u{~^[.r&䣀~Vmhl$F<0xB0n@9SءS%A3W~ATbA4g^NI>$Ν=I!p羘C4bsNX$S,WTv$xTwfbeUUgM ׳iϧ ?j@sOF$H~*o`\9$AP"Ӗ Õ;)݉*>]Xc9`pgF! 4Hu@3Oڐщ)*W{T3H'4E2pNwbGOjyouker-assistant-1.0.1/qml/img/logo/Manufacturer/HP.jpg000644 001750 001750 00000020264 12312451003 023315 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   ! 1ABQq"u8x9 a2S$Rb3CD%VG(X  !1AQaq"2su67R#5UBbr3$4T%ႃdE ?}ոm6ܫR+c\'\p'FSm9io MBB)U D]4Zt[P]U 'ڈdL>>vbt-D%RTdR":L!S%:b#L}tFwʥQOd" >׎ޕ[ų0r(=L׏Ty<:$֓海mwsa;!}Q4;ۧg% ۛ[-+{ʝdH*,=N=R.}6Ŷ;#FћnԴ5C|p:0=IGnFcї))"R}"Ր=6j6XDmb`04njMyg[xS-|PG$0NY+j~)=QISr2#a<˗FQ '+{s&NN/_fE~3DZWQ2e /JhM!if!!NԬS29$2"Xٵگq5~w~ɧ!P ' 1/l B,Aԩq|V+s($L TsdMSE$߆lzcP3bVL2&g9'~>㶔"ǥ3 `:%kXՇN__t9kWi>j~4ֿlzF;8&O+5չsQ-bpiӺ&CwT {9h䞞bOg|G[i}K;.N@%%o2v(X8J8IX$H#IM2dUThD(n DOVtWUHK>"0øDL4MC}#0x/6a}V ,GśVH[CϣԊugqSddN3,/hB]w i)ֲGR(EWZ\ɾXukPjeRup#yF=NjJAAZDÔJY l[d : r@j3$`%( u].RBҢFUN)?u7@dz]W]`^'RzRd?)R=OiGNW/dg%'K׋e3_aP-bpRt=}wJڎ:[T7z*d; ĕz-,!.RzI$ڂT?sC('s!pQcE<~JgpZioS+hwו@΄)z$D=tj<;XSf7vIji.I'ؓYgǖ@FٖZYaINJAZDϬ9K3nLWsY N2Ǭ{n<h[ek0oɦ;(3M_UK-ƄfU)}ý"YTܶl}hR%R6 :2[t%١Y@M UH2*Ln~ S'㚘u22Dt݋ 0(0JR;qVbфAm.3WolFnj*ַXvweeZ(ۆKgvd*PJfsSKڐrwu\Sk Y[ 71#|eB9`vXZK%@6uGeGeǏ2:+X D rPqY,􅜭$J8<~T0 Σ{n^8-qpL2|ɞ`W{&^וdDY fnM󐬷:LhMcYQ=546.f`BcMǸ+%흟l=vC9\9L̞\[]4s4u:N ߻qrR v]ۛ<xK\{pd.\֦@UGH{5Bo iME6ʜsH3}vTxË"FDLL)͎yt qPŨOBaoJQ"6;;NҌ"%+bq}5Z +I2II2`j#ؚitbr KVjbIfV282qomG- c |&c4sFq} 교^e8П~,jE8w}V;=,is#G'zgF&6eg'OBdELKͳDҴ/G@blLW2e$K˛G !ymᵅ称IpҮop\Dvԣ>Ρ铪5&՛T8<NCI7SfP;$Dpl:Ynޓ ~}SYR"gM Ȧ vἕske`AnNHd{d61h}{~?o gq3csyOnk?$b$9upI69 l92ImPݷe2Hܒ@<ۦۆ1Q|u.< jKd!:RFkoZ:v=:N+ΈĒ6Iyd*WIKɒCLլ^[-i0RP)kP soP)!=UH4aIfV282qomG- c |&c4sFq} 교^e8П~,jE8w}V;K?AeQd=19 ũ.fr@}껐 AA )Z/\YO6T1;ysktMKy5HۮȁX'OܝZ7֨vUN_}GU R \A*%&da _\f6صdVBfI=3ӈffeQ0V.4%s`kqR9f FQ϶3&mPJ!# J@ILCcZ[=s"pTԐ0$s6!i-DuǙb$+~ zʙj6V>jxù /㏓ HHaSܖU7eCK\l͍ h|{t94_7eOMTLJka9 jwv?]S%P~+B7T{*gS$קO_˭]_m<pl̉1T3 j`1R'~iF/Q *~0Au@4jO0Gx"M ZojwgT$+Nd85>ov{/ߘ3Xkv9TƝ;.I][tXמuMjqgo6͐pTu*LrgD;fwBZ<)I')# wCU|g~(3ì{ûZ©BXZaLrđ lD dP @_R6϶V҃b8ԁ9fb?Q~73 mSL(/Y$ (K(u;0Ҥ- Uƿìޅ$qŻ O9.&h\?ME\#4iNYs 2q=w>ZqR̗/!u{,[<6c`4 .e`@Vv+3qJRul+t&̲yU2#'2D;׻{yޜBR'|O+ zItCiʮmO躼1co((\ˋuꐧwhqLTZ,>*qTVꞸuZ[rHy A~?J)XI##3/|~M7\aBZNwGEx2~tKJw~Wgw5 jUԨY\1"":!k{K7H ;$8wk!ӻ[4iČn;%>jOϛQ#ӈ+nge>gAƶ|ڏ7Qk h#F AS:) rvTMT[ J4l>ΑMD޸[EdIlYV`͕ laQ!8,u3j &iXֹ`m*(1դ1tNr)TSIxO ';F|B7vL JbM"F]|ҙL)qazr֊(sqI"TKؚT;,0sFc)'BZ %Jt&X;+{bQ²^ ;f:vza #jnDSέ$1OLk Kkm[s+ԤVzG'%˅ʙ>AEtf= |ܙݙW'su1ȒXPQQSb !,M"BBS@^z@l,w+/PUOIWЦ@br? %U/&E/Jgwpf/H/ *6d刼3<ܸ]3̰&%j%C(jcնZTn9jV.zrkbҦ *dHLp=vQ`]Wh gG.yBqTB_=ʒCdH$=6攪V&o]Y钡L& %_: @0p3[jLL[msP6Hݢo5<:IJnlL2ƇPjS zZZ]z #FGUՕx\I#ǻ 襺~&5r{sݙSi[vS~0& SiW=:Q'['| 0 SEjSi@䤌d (˳2;)zsC߂1 i:5f{aO1'oe"q/pjmܫ9)Hv"P'X薲zkRPL\qVtZF1`ܐUM6I)*LJsI v1]TMEJmA[9H2U39l70om;(sF^qqBЁKvvW脒 Ƨ('3:[flͷȶ\/J瓷{QٹCqQT5'%RuqpiԐRA܊*aڢXqDS 6'X"S3dGG/NԄ?_5ɫ4\0 @G1.YJdvZvZb`()D-vFp{ƺ @2$LAj)kvtR޶rty 1ʳ&AQZĽ儊]RUwa%uMOfe!ol;ѶwVX>28i_p,;KUcw-m.FB"+rU!Z{[d5ޘ=ژ7Ӣ'"+35S:n+hHJIA-R2 ӟ3 4mT%<5B\h25\vk1s`I/gjV4'qu,cʵ@Tꦨ-Q9)D+ݛu,ty%S*)LxA泣jq]ҽV] i@ZR&%A'd;qv[b.Eb*y|7{u]= +Wjkdb]1 bөkj7 %C)'TBg <%Mҳ!ڪn \9W/4LcHðNZUg5bd]+KFԡSݙ=r;;&fVFMbD:jqwNSd̥4rG9L %BZ*\kwV b qc=42=2oɬQyouker-assistant-1.0.1/qml/img/logo/Manufacturer/RAPOO.jpg000644 001750 001750 00000040041 12312451003 023661 0ustar00saucysaucy000000 000000 JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:04:13 11:27:05]F&(.ZHHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOD/]oS:+ Xև=5Zc|>RU>K̿nY:6K5sm5V}[f]n3Y~uvC}%=4/OEo(h`͋}{f]zkks :}{U>u}kWc}_}!Y&kC:PXmMk'褚}Y%_Qݝ ykfk欻~}yղj('mUhv5[wؒ)4zmXp綧Om˶CdoDz3wzꤧO)xzVT/1^5ny {[{W5>~SכڙI eF~/?Wrt2%fa~ߠ$%.ԇIf@>Pe[oOC1^C݌g;_\gkѾ}_G1\n㫶γ0hap53]_椗s hjN_<k %K,jtzƿ›2n lN̆dR&ٰ&>ͭ y>UYAtًU[4">++/]8G,͛?:k+Yҩ)-+jێmn9ib"\)VmvXX 7ܺoKl9yni۱i{/=eK-de6:3xk750m08:-oB_j`7Yg}{Ⱦ.ot?6^O?wMߤIOTI%)$IN_}dwAݷpg6I$$I)I$JRI$Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ HPhotoshop 3.08BIM%8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMGF] AtherosQSa]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM v]FLZJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOD/]oS:+ Xև=5Zc|>RU>K̿nY:6K5sm5V}[f]n3Y~uvC}%=4/OEo(h`͋}{f]zkks :}{U>u}kWc}_}!Y&kC:PXmMk'褚}Y%_Qݝ ykfk欻~}yղj('mUhv5[wؒ)4zmXp綧Om˶CdoDz3wzꤧO)xzVT/1^5ny {[{W5>~SכڙI eF~/?Wrt2%fa~ߠ$%.ԇIf@>Pe[oOC1^C݌g;_\gkѾ}_G1\n㫶γ0hap53]_椗s hjN_<k %K,jtzƿ›2n lN̆dR&ٰ&>ͭ y>UYAtًU[4">++/]8G,͛?:k+Yҩ)-+jێmn9ib"\)VmvXX 7ܺoKl9yni۱i{/=eK-de6:3xk750m08:-oB_j`7Yg}{Ⱦ.ot?6^O?wMߤIOTI%)$IN_}dwAݷpg6I$$I)I$JRI$Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-04-13T11:27:05+08:00 2012-04-13T11:27:05+08:00 2012-04-13T11:27:05+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:2dcf6774-8517-11e1-a998-f15f6a1faa8a image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثWI#*V[*V[]*Wb_ҐAryF}!hyI8Tx퀲'屸fpZCh?[r͚Ga'mMDr9q<"s+ON}û󯐒mN_[ӥk]BBg?j9Pq ^G|LDEFo|95o6.RH3B9XikA[<TU}Y"ʡN'x-´ír.G*X#qaQ8]o7Li`f臏<*SdH0\n@8%CMYKu ] 6P+;:ʮHEj~vG['fX>KH$%YPRz ~QԿ*k VG1 ߉*b+,_z|kuq9)JY+ǖ!:Ɣ?*n~ BK5**qP=77^_G>x/慗SXKX^Ս7MO~/ޭ-Šɥ[454Fc**%?B;~O"]MUÁ(ʀ -&Wq_8w\OG}/)5y"0E/!(؂K=>l!o:%Xj`t-k\74Y#B- :C~N/#cIʽ?O/q_ύ1N*UثV&|2wh?zЯ5?`=‡b]v*UN*UثWb]v*UثWN*UثWb]v*UثWyouker-assistant-1.0.1/qml/func/common/ComboBox.qml000644 001750 001750 00000006341 12312451003 022602 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import StyleItemType 0.1 /* * * ComboBox (inherits BasicButton) * * The ComboBox component is a combined button and popup list. The popup menu itself is platform * native, and cannot by styled from QML code. * Add menu items to the comboBox by either adding MenuItem children inside the popup, or * assign it a ListModel (or both). * * The ComboBox contains the following API (in addition to the BasicButton API): * * ListModel model - this model will be used, in addition to MenuItem children, to * create items inside the popup menu * bool popupOpen - setting this property to 'true' will open the popup. * int selectedIndex - the index of the selected item in the popup menu. * int hoveredIndex - the index of the highlighted item in the popup menu. * string selectedText - the text of the selected menu item. * string hoveredText - the text of the highlighted menu item. * * Example 1: * * ListModel { * id: menuItems * ListElement { text: "Banana"; color: "Yellow" } * ListElement { text: "Apple"; color: "Green" } * ListElement { text: "Coconut"; color: "Brown" } * } * ComboBox { * model: menuItems * width: 200 * onSelectedIndexChanged: console.debug(selectedText + ", " + menuItems.get(selectedIndex).color) * } * * Example 2: * * ComboBox { * width: 200 * MenuItem { * text: "Pineapple" * onTriggered: console.debug(text) * * } * MenuItem { * text: "Grape" * onTriggered: console.debug(text) * } * } * */ BasicButton { id: comboBox default property alias menuItems: popup.menuItems property alias model: popup.model property alias popupOpen: popup.visible property alias selectedIndex: popup.selectedIndex property alias hoveredIndex: popup.hoveredIndex property alias selectedText: popup.selectedText property alias hoveredText: popup.hoveredText property string styleHint background: StyleItem { anchors.fill: parent elementType: "combobox" sunken: comboBox.pressed raised: !sunken hover: comboBox.containsMouse enabled: comboBox.enabled text: comboBox.selectedText hasFocus: comboBox.focus contentHeight: 18 } // ToDo: adjust margins so that selected popup label // centers directly above button label when // popup.centerOnSelectedText === true width: implicitWidth height: implicitHeight implicitWidth: Math.max(80, backgroundItem.implicitWidth) implicitHeight: backgroundItem.implicitHeight onWidthChanged: popup.setMinimumWidth(width) checkable: false onPressedChanged: if (pressed) popup.visible = true ContextMenu { id: popup property bool center: backgroundItem.styleHint("comboboxpopup") centerSelectedText: center y: center ? 0 : comboBox.height } // The key bindings below will only be in use when popup is // not visible. Otherwise, native popup key handling will take place: Keys.onSpacePressed: { comboBox.popupOpen = !comboBox.popupOpen } Keys.onUpPressed: { if (selectedIndex < model.count - 1) selectedIndex++ } Keys.onDownPressed: { if (selectedIndex > 0) selectedIndex-- } } youker-assistant-1.0.1/backends/youker-assistant-daemon/src/softwarecenter/000755 001750 001750 00000000000 12312451003 027521 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/backends/youker-assistant-daemon/src/weather/location.txt000644 001750 001750 00000310547 12312451003 030510 0ustar00saucysaucy000000 000000 北京,北京,北京:101010100:beijing 北京,北京,海淀:101010200:haidian 北京,北京,朝阳:101010300:chaoyang 北京,北京,顺义:101010400:shunyi 北京,北京,怀柔:101010500:huairou 北京,北京,通州:101010600:tongzhou 北京,北京,昌平:101010700:changping 北京,北京,延庆:101010800:yanqing 北京,北京,丰台:101010900:fengtai 北京,北京,石景山:101011000:shijingshan 北京,北京,大兴:101011100:daxing 北京,北京,房山:101011200:fangshan 北京,北京,密云:101011300:miyun 北京,北京,门头沟:101011400:mentougou 北京,北京,平谷:101011500:pinggu 上海,上海,上海:101020100:shanghai 上海,上海,闵行:101020200:minhang 上海,上海,宝山:101020300:baoshan 上海,上海,嘉定:101020500:jiading 上海,上海,浦东南汇:101020600:nanhui 上海,上海,金山:101020700:jinshan 上海,上海,青浦:101020800:qingpu 上海,上海,松江:101020900:songjiang 上海,上海,奉贤:101021000:fengxian 上海,上海,崇明:101021100:chongming 上海,上海,徐家汇:101021200:xujiahui 上海,上海,浦东:101021300:pudong 天津,天津,天津:101030100:tianjin 天津,天津,武清:101030200:wuqing 天津,天津,宝坻:101030300:baodi 天津,天津,东丽:101030400:dongli 天津,天津,西青:101030500:xiqing 天津,天津,北辰:101030600:beichen 天津,天津,宁河:101030700:ninghe 天津,天津,汉沽:101030800:hangu:han'gu 天津,天津,静海:101030900:jinghai 天津,天津,津南:101031000:jinnan 天津,天津,塘沽:101031100:tanggu 天津,天津,大港:101031200:dagang 天津,天津,蓟县:101031400:jixian 重庆,重庆,重庆:101040100:chongqing 重庆,重庆,永川:101040200:yongchuan 重庆,重庆,合川:101040300:hechuan 重庆,重庆,南川:101040400:nanchuan 重庆,重庆,江津:101040500:jiangjin 重庆,重庆,万盛:101040600:wansheng 重庆,重庆,渝北:101040700:yubei 重庆,重庆,北碚:101040800:beibei 重庆,重庆,巴南:101040900:banan:ba'nan 重庆,重庆,长寿:101041000:changshou 重庆,重庆,黔江:101041100:qianjiang 重庆,重庆,万州:101041300:wanzhou 重庆,重庆,涪陵:101041400:fuling 重庆,重庆,开县:101041500:kaixian 重庆,重庆,城口:101041600:chengkou 重庆,重庆,云阳:101041700:yunyang 重庆,重庆,巫溪:101041800:wuxi 重庆,重庆,奉节:101041900:fengjie 重庆,重庆,巫山:101042000:wushan 重庆,重庆,潼南:101042100:tongnan 重庆,重庆,垫江:101042200:dianjiang 重庆,重庆,梁平:101042300:liangping 重庆,重庆,忠县:101042400:zhongxian 重庆,重庆,石柱:101042500:shizhu 重庆,重庆,大足:101042600:dazu 重庆,重庆,荣昌:101042700:rongchang 重庆,重庆,铜梁:101042800:tongliang 重庆,重庆,璧山:101042900:bishan 重庆,重庆,丰都:101043000:fengdu 重庆,重庆,武隆:101043100:wulong 重庆,重庆,彭水:101043200:pengshui 重庆,重庆,綦江:101043300:qijiang 重庆,重庆,酉阳:101043400:youyang 重庆,重庆,秀山:101043600:xiushan 黑龙江,哈尔滨,哈尔滨:101050101:haerbin:ha'erbin 黑龙江,哈尔滨,双城:101050102:shuangcheng 黑龙江,哈尔滨,呼兰:101050103:hulan 黑龙江,哈尔滨,阿城:101050104:acheng 黑龙江,哈尔滨,宾县:101050105:binxian 黑龙江,哈尔滨,依兰:101050106:yilan 黑龙江,哈尔滨,巴彦:101050107:bayan 黑龙江,哈尔滨,通河:101050108:tonghe 黑龙江,哈尔滨,方正:101050109:fangzheng 黑龙江,哈尔滨,延寿:101050110:yanshou 黑龙江,哈尔滨,尚志:101050111:shangzhi 黑龙江,哈尔滨,五常:101050112:wuchang 黑龙江,哈尔滨,木兰:101050113:mulan 黑龙江,齐齐哈尔,齐齐哈尔:101050201:qiqihaer 黑龙江,齐齐哈尔,讷河:101050202:nehe 黑龙江,齐齐哈尔,龙江:101050203:longjiang 黑龙江,齐齐哈尔,甘南:101050204:gannan 黑龙江,齐齐哈尔,富裕:101050205:fuyu 黑龙江,齐齐哈尔,依安:101050206:yian 黑龙江,齐齐哈尔,拜泉:101050207:baiquan 黑龙江,齐齐哈尔,克山:101050208:keshan 黑龙江,齐齐哈尔,克东:101050209:kedong 黑龙江,齐齐哈尔,泰来:101050210:tailai 黑龙江,牡丹江,牡丹江:101050301:mudanjiang 黑龙江,牡丹江,海林:101050302:hailin 黑龙江,牡丹江,穆棱:101050303:muling 黑龙江,牡丹江,林口:101050304:linkou 黑龙江,牡丹江,绥芬河:101050305:suifenhe 黑龙江,牡丹江,宁安:101050306:ningan 黑龙江,牡丹江,东宁:101050307:dongning 黑龙江,佳木斯,佳木斯:101050401:jiamusi 黑龙江,佳木斯,汤原:101050402:tangyuan 黑龙江,佳木斯,抚远:101050403:fuyuan 黑龙江,佳木斯,桦川:101050404:huachuan 黑龙江,佳木斯,桦南:101050405:huanan 黑龙江,佳木斯,同江:101050406:tongjiang 黑龙江,佳木斯,富锦:101050407:fujin 黑龙江,绥化,绥化:101050501:suihua 黑龙江,绥化,肇东:101050502:zhaodong 黑龙江,绥化,安达:101050503:anda 黑龙江,绥化,海伦:101050504:hailun 黑龙江,绥化,明水:101050505:mingshui 黑龙江,绥化,望奎:101050506:wangkui 黑龙江,绥化,兰西:101050507:lanxi 黑龙江,绥化,青冈:101050508:qinggang 黑龙江,绥化,庆安:101050509:qingan 黑龙江,绥化,绥棱:101050510:suiling 黑龙江,黑河,黑河:101050601:heihe 黑龙江,黑河,嫩江:101050602:nenjiang 黑龙江,黑河,孙吴:101050603:sunwu 黑龙江,黑河,逊克:101050604:xunke 黑龙江,黑河,五大连池:101050605:wudalianchi 黑龙江,黑河,北安:101050606:beian 黑龙江,大兴安岭,大兴安岭:101050701:daxinganling 黑龙江,大兴安岭,塔河:101050702:tahe 黑龙江,大兴安岭,漠河:101050703:mohe 黑龙江,大兴安岭,呼玛:101050704:huma 黑龙江,大兴安岭,呼中:101050705:huzhong 黑龙江,大兴安岭,新林:101050706:xinlin 黑龙江,大兴安岭,加格达奇:101050708:jiagedaqi 黑龙江,伊春,伊春:101050801:yichun 黑龙江,伊春,乌伊岭:101050802:wuyiling 黑龙江,伊春,五营:101050803:wuying 黑龙江,伊春,铁力:101050804:tieli 黑龙江,伊春,嘉荫:101050805:jiayin 黑龙江,大庆,大庆:101050901:daqing 黑龙江,大庆,林甸:101050902:lindian 黑龙江,大庆,肇州:101050903:zhaozhou 黑龙江,大庆,肇源:101050904:zhaoyuan 黑龙江,大庆,杜尔伯特:101050905:duerbote:du'erbote 黑龙江,七台河,七台河:101051002:qitaihe 黑龙江,七台河,勃利:101051003:boli 黑龙江,鸡西,鸡西:101051101:jixi 黑龙江,鸡西,虎林:101051102:hulin 黑龙江,鸡西,密山:101051103:mishan 黑龙江,鸡西,鸡东:101051104:jidong 黑龙江,鹤岗,鹤岗:101051201:hegang 黑龙江,鹤岗,绥滨:101051202:suibin 黑龙江,鹤岗,萝北:101051203:luobei 黑龙江,双鸭山,双鸭山:101051301:shuangyashan 黑龙江,双鸭山,集贤:101051302:jixian 黑龙江,双鸭山,宝清:101051303:baoqing 黑龙江,双鸭山,饶河:101051304:raohe 黑龙江,双鸭山,友谊:101051305:youyi 吉林,长春,长春:101060101:changchun 吉林,长春,农安:101060102:nongan 吉林,长春,德惠:101060103:dehui 吉林,长春,九台:101060104:jiutai 吉林,长春,榆树:101060105:yushu 吉林,长春,双阳:101060106:shuangyang 吉林,吉林,吉林:101060201:jilin 吉林,吉林,舒兰:101060202:shulan 吉林,吉林,永吉:101060203:yongji 吉林,吉林,蛟河:101060204:jiaohe 吉林,吉林,磐石:101060205:panshi 吉林,吉林,桦甸:101060206:huadian 吉林,延边,延吉:101060301:yanji 吉林,延边,敦化:101060302:dunhua 吉林,延边,安图:101060303:antu 吉林,延边,汪清:101060304:wangqing 吉林,延边,和龙:101060305:helong 吉林,延边,龙井:101060307:longjing 吉林,延边,珲春:101060308:hunchun 吉林,延边,图们:101060309:tumen 吉林,四平,四平:101060401:siping 吉林,四平,双辽:101060402:shuangliao 吉林,四平,梨树:101060403:lishu 吉林,四平,公主岭:101060404:gongzhuling 吉林,四平,伊通:101060405:yitong 吉林,通化,通化:101060501:tonghua 吉林,通化,梅河口:101060502:meihekou 吉林,通化,柳河:101060503:liuhe 吉林,通化,辉南:101060504:huinan 吉林,通化,集安:101060505:jian 吉林,通化,通化县:101060506:tonghuaxian 吉林,白城,白城:101060601:baicheng 吉林,白城,洮南:101060602:taonan 吉林,白城,大安:101060603:daan 吉林,白城,镇赉:101060604:zhenlai 吉林,白城,通榆:101060605:tongyu 吉林,辽源,辽源:101060701:liaoyuan 吉林,辽源,东丰:101060702:dongfeng 吉林,辽源,东辽:101060703:dongliao 吉林,松原,松原:101060801:songyuan 吉林,松原,乾安:101060802:qianan 吉林,松原,前郭:101060803:qianguo 吉林,松原,长岭:101060804:changling 吉林,松原,扶余:101060805:fuyu 吉林,白山,白山:101060901:baishan 吉林,白山,靖宇:101060902:jingyu 吉林,白山,临江:101060903:linjiang 吉林,白山,东岗:101060904:donggang 吉林,白山,长白:101060905:changbai 吉林,白山,抚松:101060906:fusong 吉林,白山,江源:101060907:jiangyuan 辽宁,沈阳,沈阳:101070101:shenyang 辽宁,沈阳,辽中:101070103:liaozhong 辽宁,沈阳,康平:101070104:kangping 辽宁,沈阳,法库:101070105:faku 辽宁,沈阳,新民:101070106:xinming 辽宁,大连,大连:101070201:dalian 辽宁,大连,瓦房店:101070202:wafangdian 辽宁,大连,金州:101070203:jinzhou 辽宁,大连,普兰店:101070204:pulandian 辽宁,大连,旅顺:101070205:lvshun 辽宁,大连,长海:101070206:changhai 辽宁,大连,庄河:101070207:zhuanghe 辽宁,鞍山,鞍山:101070301:anshan 辽宁,鞍山,台安:101070302:taian 辽宁,鞍山,岫岩:101070303:xiuyan 辽宁,鞍山,海城:101070304:haicheng 辽宁,抚顺,抚顺:101070401:fushun 辽宁,抚顺,新宾:101070402:xinbin 辽宁,抚顺,清原:101070403:qingyuan 辽宁,抚顺,章党:101070404:zhangdang 辽宁,本溪,本溪:101070501:benxi 辽宁,本溪,本溪县:101070502:benxixian 辽宁,本溪,桓仁:101070504:huanren 辽宁,丹东,丹东:101070601:dandong 辽宁,丹东,凤城:101070602:fengcheng 辽宁,丹东,宽甸:101070603:kuandian 辽宁,丹东,东港:101070604:donggang 辽宁,锦州,锦州:101070701:jinzhou 辽宁,锦州,凌海:101070702:linghai 辽宁,锦州,义县:101070704:yixian 辽宁,锦州,黑山:101070705:heishan 辽宁,锦州,北镇:101070706:beizhen 辽宁,营口,营口:101070801:yingkou 辽宁,营口,大石桥:101070802:dashiqiao 辽宁,营口,盖州:101070803:gaizhou 辽宁,阜新,阜新:101070901:fuxin 辽宁,阜新,彰武:101070902:zhangwu 辽宁,辽阳,辽阳:101071001:liaoyang 辽宁,辽阳,辽阳县:101071002:liaoyangxian 辽宁,辽阳,灯塔:101071003:dengta 辽宁,辽阳,弓长岭:101071004:gongchangling 辽宁,铁岭,铁岭:101071101:tieling 辽宁,铁岭,开原:101071102:kaiyuan 辽宁,铁岭,昌图:101071103:changtu 辽宁,铁岭,西丰:101071104:xifeng 辽宁,铁岭,调兵山:101071105:tiefa 辽宁,朝阳,朝阳:101071201:chaoyang 辽宁,朝阳,凌源:101071203:lingyuan 辽宁,朝阳,喀左:101071204:kazuo 辽宁,朝阳,北票:101071205:beipiao 辽宁,朝阳,建平县:101071207:jianpingxian 辽宁,盘锦,盘锦:101071301:panjin 辽宁,盘锦,大洼:101071302:dawa 辽宁,盘锦,盘山:101071303:panshan 辽宁,葫芦岛,葫芦岛:101071401:huludao 辽宁,葫芦岛,建昌:101071402:jianchang 辽宁,葫芦岛,绥中:101071403:suizhong 辽宁,葫芦岛,兴城:101071404:xingcheng 内蒙古,呼和浩特,呼和浩特:101080101:huhehaote 内蒙古,呼和浩特,土左旗:101080102:tuzuoqi 内蒙古,呼和浩特,托县:101080103:tuoxian 内蒙古,呼和浩特,和林:101080104:helin 内蒙古,呼和浩特,清水河:101080105:qingshuihe 内蒙古,呼和浩特,呼市郊区:101080106:hushijiaoqu 内蒙古,呼和浩特,武川:101080107:wuchuan 内蒙古,包头,包头:101080201:baotou 内蒙古,包头,白云鄂博:101080202:baiyunebo 内蒙古,包头,满都拉:101080203:mandula 内蒙古,包头,土右旗:101080204:tuyouqi 内蒙古,包头,固阳:101080205:guyang 内蒙古,包头,达茂旗:101080206:damaoqi 内蒙古,包头,希拉穆仁:101080207:xilamuren 内蒙古,乌海,乌海:101080301:wuhai 内蒙古,乌兰察布,集宁:101080401:jining 内蒙古,乌兰察布,卓资:101080402:zhuozi 内蒙古,乌兰察布,化德:101080403:huade 内蒙古,乌兰察布,商都:101080404:shangdu 内蒙古,乌兰察布,兴和:101080406:xinghe 内蒙古,乌兰察布,凉城:101080407:liangcheng 内蒙古,乌兰察布,察右前旗:101080408:chayouqianqi 内蒙古,乌兰察布,察右中旗:101080409:chayouzhongqi 内蒙古,乌兰察布,察右后旗:101080410:chayouhouqi 内蒙古,乌兰察布,四子王旗:101080411:siziwangqi 内蒙古,乌兰察布,丰镇:101080412:fengzhen 内蒙古,通辽,通辽:101080501:tongliao 内蒙古,通辽,舍伯吐:101080502:shebotu 内蒙古,通辽,科左中旗:101080503:kezuozhongqi 内蒙古,通辽,科左后旗:101080504:kezuohouqi 内蒙古,通辽,青龙山:101080505:qinglongshan 内蒙古,通辽,开鲁:101080506:kailu 内蒙古,通辽,库伦:101080507:kulun 内蒙古,通辽,奈曼:101080508:naiman 内蒙古,通辽,扎鲁特:101080509:zhalute 内蒙古,通辽,巴雅尔吐胡硕:101080511:bayaertuhushuo 内蒙古,通辽,霍林郭勒:101081108:huolinguole 内蒙古,赤峰,赤峰:101080601:chifeng 内蒙古,赤峰,阿鲁旗:101080603:aluqi 内蒙古,赤峰,浩尔吐:101080604:haoertu 内蒙古,赤峰,巴林左旗:101080605:balinzuoqi 内蒙古,赤峰,巴林右旗:101080606:balinyouqi 内蒙古,赤峰,林西:101080607:linxi 内蒙古,赤峰,克什克腾:101080608:keshiketeng 内蒙古,赤峰,翁牛特:101080609:wengniute 内蒙古,赤峰,岗子:101080610:gangzi 内蒙古,赤峰,喀喇沁:101080611:kalaqin 内蒙古,赤峰,八里罕:101080612:balihan 内蒙古,赤峰,宁城:101080613:ningcheng 内蒙古,赤峰,敖汉:101080614:aohan 内蒙古,赤峰,宝国吐:101080615:baoguotu 内蒙古,鄂尔多斯,鄂尔多斯:101080701:eerduosi 内蒙古,鄂尔多斯,达拉特:101080703:dalate 内蒙古,鄂尔多斯,准格尔:101080704:zhungeer 内蒙古,鄂尔多斯,鄂前旗:101080705:eqianqi 内蒙古,鄂尔多斯,河南:101080706:henan 内蒙古,鄂尔多斯,伊克乌素:101080707:yikewusu 内蒙古,鄂尔多斯,鄂托克:101080708:etuoke 内蒙古,鄂尔多斯,杭锦旗:101080709:hangjinqi 内蒙古,鄂尔多斯,乌审旗:101080710:wushenqi 内蒙古,鄂尔多斯,伊金霍洛:101080711:yijinhuoluo 内蒙古,鄂尔多斯,乌审召:101080712:wushenzhao 内蒙古,鄂尔多斯,东胜:101080713:dongsheng 内蒙古,巴彦淖尔,临河:101080801:linhe 内蒙古,巴彦淖尔,五原:101080802:wuyuan 内蒙古,巴彦淖尔,磴口:101080803:dengkou 内蒙古,巴彦淖尔,乌前旗:101080804:wuqianqi 内蒙古,巴彦淖尔,大佘太:101080805:dashetai 内蒙古,巴彦淖尔,乌中旗:101080806:wuzhongqi 内蒙古,巴彦淖尔,乌后旗:101080807:wuhouqi 内蒙古,巴彦淖尔,海力素:101080808:hailisu 内蒙古,巴彦淖尔,那仁宝力格:101080809:narenbaolige 内蒙古,巴彦淖尔,杭锦后旗:101080810:hangjinhouqi 内蒙古,锡林郭勒,锡林浩特:101080901:xilinhaote 内蒙古,锡林郭勒,二连浩特:101080903:erlianhaote 内蒙古,锡林郭勒,阿巴嘎:101080904:abaga 内蒙古,锡林郭勒,苏左旗:101080906:suzuoqi 内蒙古,锡林郭勒,苏右旗:101080907:suyouqi 内蒙古,锡林郭勒,朱日和:101080908:zhurihe 内蒙古,锡林郭勒,东乌旗:101080909:dongwuqi 内蒙古,锡林郭勒,西乌旗:101080910:xiwuqi 内蒙古,锡林郭勒,太仆寺:101080911:taibusiqi 内蒙古,锡林郭勒,镶黄旗:101080912:xianghuang 内蒙古,锡林郭勒,正镶白旗:101080913:zhengxiangbaiqi 内蒙古,锡林郭勒,正蓝旗:101080914:zhenglanqi 内蒙古,锡林郭勒,多伦:101080915:duolun 内蒙古,锡林郭勒,博克图:101080916:boketu 内蒙古,锡林郭勒,乌拉盖:101080917:wulagai 内蒙古,呼伦贝尔,海拉尔:101081001:hailaer 内蒙古,呼伦贝尔,小二沟:101081002:xiaoergou 内蒙古,呼伦贝尔,阿荣旗:101081003:arongqi 内蒙古,呼伦贝尔,莫力达瓦:101081004:molidawa 内蒙古,呼伦贝尔,鄂伦春旗:101081005:elunchunqi 内蒙古,呼伦贝尔,鄂温克旗:101081006:ewenkeqi 内蒙古,呼伦贝尔,陈旗:101081007:chenqi 内蒙古,呼伦贝尔,新左旗:101081008:xinzuoqi 内蒙古,呼伦贝尔,新右旗:101081009:xinyouqi 内蒙古,呼伦贝尔,满洲里:101081010:manzhouli 内蒙古,呼伦贝尔,牙克石:101081011:yakeshi 内蒙古,呼伦贝尔,扎兰屯:101081012:zhalantun 内蒙古,呼伦贝尔,额尔古纳:101081014:eerguna 内蒙古,呼伦贝尔,根河:101081015:genhe 内蒙古,呼伦贝尔,图里河:101081016:tulihe 内蒙古,兴安盟,高力板:101080510:gaoliban 内蒙古,兴安盟,乌兰浩特:101081101:wulanhaote 内蒙古,兴安盟,阿尔山:101081102:aershan 内蒙古,兴安盟,科右中旗:101081103:keyouzhongqi 内蒙古,兴安盟,胡尔勒:101081104:huerle 内蒙古,兴安盟,扎赉特:101081105:zhanlaite 内蒙古,兴安盟,索伦:101081106:suolun 内蒙古,兴安盟,突泉:101081107:tuquan 内蒙古,兴安盟,科右前旗:101081109:keyouqianqi 内蒙古,阿拉善盟,阿左旗:101081201:azuoqi 内蒙古,阿拉善盟,阿右旗:101081202:ayouqi 内蒙古,阿拉善盟,额济纳:101081203:ejina 内蒙古,阿拉善盟,拐子湖:101081204:guanzihu 内蒙古,阿拉善盟,吉兰太:101081205:jilantai 内蒙古,阿拉善盟,锡林高勒:101081206:xilingaole 内蒙古,阿拉善盟,头道湖:101081207:toudaohu 内蒙古,阿拉善盟,中泉子:101081208:zhongquanzi 内蒙古,阿拉善盟,诺尔公:101081209:nuoergong 内蒙古,阿拉善盟,雅布赖:101081210:yabulai 内蒙古,阿拉善盟,乌斯泰:101081211:wusitai 内蒙古,阿拉善盟,孪井滩:101081212:luanjingtan 河北,石家庄,石家庄:101090101:shijiazhuang 河北,石家庄,井陉:101090102:jingxing 河北,石家庄,正定:101090103:zhengding 河北,石家庄,栾城:101090104:luancheng 河北,石家庄,行唐:101090105:xingtang 河北,石家庄,灵寿:101090106:lingshou 河北,石家庄,高邑:101090107:gaoyi 河北,石家庄,深泽:101090108:shenze 河北,石家庄,赞皇:101090109:zanhuang 河北,石家庄,无极:101090110:wuji 河北,石家庄,平山:101090111:pingshan 河北,石家庄,元氏:101090112:yuanshi 河北,石家庄,赵县:101090113:zhaoxian 河北,石家庄,辛集:101090114:xinji 河北,石家庄,藁城:101090115:gaocheng 河北,石家庄,晋州:101090116:jinzhou 河北,石家庄,新乐:101090117:xinle 河北,石家庄,鹿泉:101090118:luquan 河北,保定,保定:101090201:baoding 河北,保定,满城:101090202:mancheng 河北,保定,阜平:101090203:fuping 河北,保定,徐水:101090204:xushui 河北,保定,唐县:101090205:tangxian 河北,保定,高阳:101090206:gaoyang 河北,保定,容城:101090207:rongcheng 河北,保定,涞源:101090209:laiyuan 河北,保定,望都:101090210:wangdu 河北,保定,安新:101090211:anxin 河北,保定,易县:101090212:yixian 河北,保定,曲阳:101090214:quyang 河北,保定,蠡县:101090215:lixian 河北,保定,顺平:101090216:shunping 河北,保定,雄县:101090217:xiongxian 河北,保定,涿州:101090218:zhuozhou 河北,保定,定州:101090219:dingzhou 河北,保定,安国:101090220:anguo 河北,保定,高碑店:101090221:gaobeidian 河北,保定,涞水:101090222:laishui 河北,保定,定兴:101090223:dingxing 河北,保定,清苑:101090224:qingyuan 河北,保定,博野:101090225:boye 河北,张家口,张家口:101090301:zhangjiakou 河北,张家口,宣化:101090302:xuanhua 河北,张家口,张北:101090303:zhangbei 河北,张家口,康保:101090304:kangbao 河北,张家口,沽源:101090305:guyuan 河北,张家口,尚义:101090306:shangyi 河北,张家口,蔚县:101090307:yuxian 河北,张家口,阳原:101090308:yangyuan 河北,张家口,怀安:101090309:huaian 河北,张家口,万全:101090310:wanquan 河北,张家口,怀来:101090311:huailai 河北,张家口,涿鹿:101090312:zhuolu 河北,张家口,赤城:101090313:chicheng 河北,张家口,崇礼:101090314:chongli 河北,承德,承德:101090402:chengde 河北,承德,承德县:101090403:chengdexian 河北,承德,兴隆:101090404:xinglong 河北,承德,平泉:101090405:pingquan 河北,承德,滦平:101090406:luanping 河北,承德,隆化:101090407:longhua 河北,承德,丰宁:101090408:fengning 河北,承德,宽城:101090409:kuancheng 河北,承德,围场:101090410:weichang 河北,唐山,唐山:101090501:tangshan 河北,唐山,丰南:101090502:fengnan 河北,唐山,丰润:101090503:fengrun 河北,唐山,滦县:101090504:luanxian 河北,唐山,滦南:101090505:luannan 河北,唐山,乐亭:101090506:leting 河北,唐山,迁西:101090507:qianxi 河北,唐山,玉田:101090508:yutian 河北,唐山,唐海:101090509:tanghai 河北,唐山,遵化:101090510:zunhua 河北,唐山,迁安:101090511:qianan 河北,唐山,曹妃甸:101090512:caofeidian 河北,廊坊,廊坊:101090601:langfang 河北,廊坊,固安:101090602:guan 河北,廊坊,永清:101090603:yongqing 河北,廊坊,香河:101090604:xianghe 河北,廊坊,大城:101090605:dacheng 河北,廊坊,文安:101090606:wenan 河北,廊坊,大厂:101090607:dachang 河北,廊坊,霸州:101090608:bazhou 河北,廊坊,三河:101090609:sanhe 河北,沧州,沧州:101090701:cangzhou 河北,沧州,青县:101090702:qingxian 河北,沧州,东光:101090703:dongguang 河北,沧州,海兴:101090704:haixing 河北,沧州,盐山:101090705:yanshan 河北,沧州,肃宁:101090706:suning 河北,沧州,南皮:101090707:nanpi 河北,沧州,吴桥:101090708:wuqiao 河北,沧州,献县:101090709:xianxian 河北,沧州,孟村:101090710:mengcun 河北,沧州,泊头:101090711:botou 河北,沧州,任丘:101090712:renqiu 河北,沧州,黄骅:101090713:huanghua 河北,沧州,河间:101090714:hejian 河北,沧州,沧县:101090716:cangxian 河北,衡水,衡水:101090801:hengshui 河北,衡水,枣强:101090802:zaoqiang 河北,衡水,武邑:101090803:wuyi 河北,衡水,武强:101090804:wuqiang 河北,衡水,饶阳:101090805:raoyang 河北,衡水,安平:101090806:anping 河北,衡水,故城:101090807:gucheng 河北,衡水,景县:101090808:jingxian 河北,衡水,阜城:101090809:fucheng 河北,衡水,冀州:101090810:jizhou 河北,衡水,深州:101090811:shenzhou 河北,邢台,邢台:101090901:xingtai 河北,邢台,临城:101090902:lincheng 河北,邢台,内丘:101090904:neiqiu 河北,邢台,柏乡:101090905:baixiang 河北,邢台,隆尧:101090906:longyao 河北,邢台,南和:101090907:nanhe 河北,邢台,宁晋:101090908:ningjin 河北,邢台,巨鹿:101090909:julu 河北,邢台,新河:101090910:xinhe 河北,邢台,广宗:101090911:guangzong 河北,邢台,平乡:101090912:pingxiang 河北,邢台,威县:101090913:weixian 河北,邢台,清河:101090914:qinghe 河北,邢台,临西:101090915:linxi 河北,邢台,南宫:101090916:nangong 河北,邢台,沙河:101090917:shahe 河北,邢台,任县:101090918:renxian 河北,邯郸,邯郸:101091001:handan 河北,邯郸,峰峰:101091002:fengfeng 河北,邯郸,临漳:101091003:linzhang 河北,邯郸,成安:101091004:chengan 河北,邯郸,大名:101091005:daming 河北,邯郸,涉县:101091006:shexian 河北,邯郸,磁县:101091007:cixian 河北,邯郸,肥乡:101091008:feixiang 河北,邯郸,永年:101091009:yongnian 河北,邯郸,邱县:101091010:qiuxian 河北,邯郸,鸡泽:101091011:jize 河北,邯郸,广平:101091012:guangping 河北,邯郸,馆陶:101091013:guantao 河北,邯郸,魏县:101091014:weixian 河北,邯郸,曲周:101091015:quzhou 河北,邯郸,武安:101091016:wuan 河北,秦皇岛,秦皇岛:101091101:qinhuangdao 河北,秦皇岛,青龙:101091102:qinglong 河北,秦皇岛,昌黎:101091103:changli 河北,秦皇岛,抚宁:101091104:funing 河北,秦皇岛,卢龙:101091105:lulong 河北,秦皇岛,北戴河:101091106:beidaihe 山西,太原,太原:101100101:taiyuan 山西,太原,清徐:101100102:qingxu 山西,太原,阳曲:101100103:yangqu 山西,太原,娄烦:101100104:loufan 山西,太原,古交:101100105:gujiao 山西,太原,尖草坪区:101100106:jiancaopingqu 山西,太原,小店区:101100107:xiaodianqu 山西,大同,大同:101100201:datong 山西,大同,阳高:101100202:yanggao 山西,大同,大同县:101100203:datongxian 山西,大同,天镇:101100204:tianzhen 山西,大同,广灵:101100205:guangling 山西,大同,灵丘:101100206:lingqiu 山西,大同,浑源:101100207:hunyuan 山西,大同,左云:101100208:zuoyun 山西,阳泉,阳泉:101100301:yangquan 山西,阳泉,盂县:101100302:yuxian 山西,阳泉,平定:101100303:pingding 山西,晋中,晋中:101100401:jinzhong 山西,晋中,榆次:101100402:yuci 山西,晋中,榆社:101100403:yushe 山西,晋中,左权:101100404:zuoquan 山西,晋中,和顺:101100405:heshun 山西,晋中,昔阳:101100406:xiyang 山西,晋中,寿阳:101100407:shouyang 山西,晋中,太谷:101100408:taigu 山西,晋中,祁县:101100409:qixian 山西,晋中,平遥:101100410:pingyao 山西,晋中,灵石:101100411:lingshi 山西,晋中,介休:101100412:jiexiu 山西,长治,长治:101100501:changzhi 山西,长治,黎城:101100502:licheng 山西,长治,屯留:101100503:tunliu 山西,长治,潞城:101100504:lucheng 山西,长治,襄垣:101100505:xiangyuan 山西,长治,平顺:101100506:pingshun 山西,长治,武乡:101100507:wuxiang 山西,长治,沁县:101100508:qinxian 山西,长治,长子:101100509:zhangzi 山西,长治,沁源:101100510:qinyuan 山西,长治,壶关:101100511:huguan 山西,晋城,晋城:101100601:jincheng 山西,晋城,沁水:101100602:qinshui 山西,晋城,阳城:101100603:yangcheng 山西,晋城,陵川:101100604:lingchuan 山西,晋城,高平:101100605:gaoping 山西,晋城,泽州:101100606:zezhou 山西,临汾,临汾:101100701:linfen 山西,临汾,曲沃:101100702:quwo 山西,临汾,永和:101100703:yonghe 山西,临汾,隰县:101100704:xixian 山西,临汾,大宁:101100705:daning 山西,临汾,吉县:101100706:jixian 山西,临汾,襄汾:101100707:xiangfen 山西,临汾,蒲县:101100708:puxian 山西,临汾,汾西:101100709:fenxi 山西,临汾,洪洞:101100710:hongtong 山西,临汾,霍州:101100711:huozhou 山西,临汾,乡宁:101100712:xiangning 山西,临汾,翼城:101100713:yicheng 山西,临汾,侯马:101100714:houma 山西,临汾,浮山:101100715:fushan 山西,临汾,安泽:101100716:anze 山西,临汾,古县:101100717:guxian 山西,运城,运城:101100801:yuncheng 山西,运城,临猗:101100802:linyi 山西,运城,稷山:101100803:jishan 山西,运城,万荣:101100804:wanrong 山西,运城,河津:101100805:hejin 山西,运城,新绛:101100806:xinjiang 山西,运城,绛县:101100807:jiangxian 山西,运城,闻喜:101100808:wenxi 山西,运城,垣曲:101100809:yuanqu 山西,运城,永济:101100810:yongji 山西,运城,芮城:101100811:ruicheng 山西,运城,夏县:101100812:xiaxian 山西,运城,平陆:101100813:pinglu 山西,朔州,朔州:101100901:shuozhou 山西,朔州,平鲁:101100902:pinglu 山西,朔州,山阴:101100903:shanyin 山西,朔州,右玉:101100904:youyu 山西,朔州,应县:101100905:yingxian 山西,朔州,怀仁:101100906:huairen 山西,忻州,忻州:101101001:xinzhou 山西,忻州,定襄:101101002:dingxiang 山西,忻州,五台县:101101003:wutaixian 山西,忻州,河曲:101101004:hequ 山西,忻州,偏关:101101005:pianguan 山西,忻州,神池:101101006:shenchi 山西,忻州,宁武:101101007:ningwu 山西,忻州,代县:101101008:daixian 山西,忻州,繁峙:101101009:fanshi 山西,忻州,五台山:101101010:wutaishan 山西,忻州,保德:101101011:bode 山西,忻州,静乐:101101012:jingle 山西,忻州,岢岚:101101013:kelan 山西,忻州,五寨:101101014:wuzhai 山西,忻州,原平:101101015:yuanping 山西,吕梁,吕梁:101101100:lvliang 山西,吕梁,离石:101101101:lishi 山西,吕梁,临县:101101102:linxian 山西,吕梁,兴县:101101103:xingxian 山西,吕梁,岚县:101101104:lanxian 山西,吕梁,柳林:101101105:liulin 山西,吕梁,石楼:101101106:shilou 山西,吕梁,方山:101101107:fangshan 山西,吕梁,交口:101101108:jiaokou 山西,吕梁,中阳:101101109:zhongyang 山西,吕梁,孝义:101101110:xiaoyi 山西,吕梁,汾阳:101101111:fenyang 山西,吕梁,文水:101101112:wenshui 山西,吕梁,交城:101101113:jiaocheng 陕西,西安,西安:101110101:xian:xi'an 陕西,西安,长安:101110102:changan 陕西,西安,临潼:101110103:lintong 陕西,西安,蓝田:101110104:lantian 陕西,西安,周至:101110105:zhouzhi 陕西,西安,户县:101110106:huxian 陕西,西安,高陵:101110107:gaoling 陕西,咸阳,咸阳:101110200:xianyang 陕西,咸阳,三原:101110201:sanyuan 陕西,咸阳,礼泉:101110202:liquan 陕西,咸阳,永寿:101110203:yongshou 陕西,咸阳,淳化:101110204:chunhua 陕西,咸阳,泾阳:101110205:jingyang 陕西,咸阳,武功:101110206:wugong 陕西,咸阳,乾县:101110207:qianxian 陕西,咸阳,彬县:101110208:binxian 陕西,咸阳,长武:101110209:changwu 陕西,咸阳,旬邑:101110210:xunyi 陕西,咸阳,兴平:101110211:xingping 陕西,延安,延安:101110300:yanan 陕西,延安,延长:101110301:yanchang 陕西,延安,延川:101110302:yanchuan 陕西,延安,子长:101110303:zichang 陕西,延安,宜川:101110304:yichuan 陕西,延安,富县:101110305:fuxian 陕西,延安,志丹:101110306:zhidan 陕西,延安,安塞:101110307:ansai 陕西,延安,甘泉:101110308:ganquan 陕西,延安,洛川:101110309:luochuan 陕西,延安,黄陵:101110310:huangling 陕西,延安,黄龙:101110311:huanglong 陕西,延安,吴起:101110312:wuqi 陕西,榆林,榆林:101110401:yulin 陕西,榆林,府谷:101110402:fugu 陕西,榆林,神木:101110403:shenmu 陕西,榆林,佳县:101110404:jiaxian 陕西,榆林,定边:101110405:dingbian 陕西,榆林,靖边:101110406:jingbian 陕西,榆林,横山:101110407:hengshan 陕西,榆林,米脂:101110408:mizhi 陕西,榆林,子洲:101110409:zizhou 陕西,榆林,绥德:101110410:suide 陕西,榆林,吴堡:101110411:wubu 陕西,榆林,清涧:101110412:jingjian 陕西,榆林,榆阳:101110413:yuyang 陕西,渭南,渭南:101110501:weinan 陕西,渭南,华县:101110502:huaxian 陕西,渭南,潼关:101110503:tongguan 陕西,渭南,大荔:101110504:dali 陕西,渭南,白水:101110505:baishui 陕西,渭南,富平:101110506:fuping 陕西,渭南,蒲城:101110507:pucheng 陕西,渭南,澄城:101110508:chengcheng 陕西,渭南,合阳:101110509:heyang 陕西,渭南,韩城:101110510:hancheng 陕西,渭南,华阴:101110511:huayin 陕西,商洛,商洛:101110601:shangluo 陕西,商洛,洛南:101110602:luonan 陕西,商洛,柞水:101110603:zhashui 陕西,商洛,商州:101110604:shangxian 陕西,商洛,镇安:101110605:zhenan 陕西,商洛,丹凤:101110606:danfeng 陕西,商洛,商南:101110607:shangnan 陕西,商洛,山阳:101110608:shanyang 陕西,安康,安康:101110701:ankang 陕西,安康,紫阳:101110702:ziyang 陕西,安康,石泉:101110703:shiquan 陕西,安康,汉阴:101110704:hanyin 陕西,安康,旬阳:101110705:xunyang 陕西,安康,岚皋:101110706:langao 陕西,安康,平利:101110707:pingli 陕西,安康,白河:101110708:baihe 陕西,安康,镇坪:101110709:zhenping 陕西,安康,宁陕:101110710:ningshan 陕西,汉中,汉中:101110801:hanzhong 陕西,汉中,略阳:101110802:lueyang 陕西,汉中,勉县:101110803:mianxian 陕西,汉中,留坝:101110804:liuba 陕西,汉中,洋县:101110805:yangxian 陕西,汉中,城固:101110806:chenggu 陕西,汉中,西乡:101110807:xixiang 陕西,汉中,佛坪:101110808:fuoping 陕西,汉中,宁强:101110809:ningqiang 陕西,汉中,南郑:101110810:nanzheng 陕西,汉中,镇巴:101110811:zhenba 陕西,宝鸡,宝鸡:101110901:baoji 陕西,宝鸡,千阳:101110903:qianyang 陕西,宝鸡,麟游:101110904:linyou 陕西,宝鸡,岐山:101110905:qishan 陕西,宝鸡,凤翔:101110906:fengxiang 陕西,宝鸡,扶风:101110907:fufeng 陕西,宝鸡,眉县:101110908:meixian 陕西,宝鸡,太白:101110909:taibai 陕西,宝鸡,凤县:101110910:fengxian 陕西,宝鸡,陇县:101110911:longxian 陕西,宝鸡,陈仓:101110912:chencang 陕西,铜川,铜川:101111001:tongchuan 陕西,铜川,耀县:101111002:yaoxian 陕西,铜川,宜君:101111003:yijun 陕西,铜川,耀州:101111004:yaozhou 陕西,杨凌,杨凌:101111101:yangling 山东,济南,济南:101120101:jinan 山东,济南,长清:101120102:changqing 山东,济南,商河:101120103:shanghe 山东,济南,章丘:101120104:zhangqiu 山东,济南,平阴:101120105:pingyin 山东,济南,济阳:101120106:jiyang 山东,青岛,青岛:101120201:qingdao 山东,青岛,崂山:101120202:laoshan 山东,青岛,即墨:101120204:jimo 山东,青岛,胶州:101120205:jiaozhou 山东,青岛,胶南:101120206:jiaonan 山东,青岛,莱西:101120207:laixi 山东,青岛,平度:101120208:pingdu 山东,淄博,淄博:101120301:zibo 山东,淄博,淄川:101120302:zichuan 山东,淄博,博山:101120303:boshan 山东,淄博,高青:101120304:gaoqing 山东,淄博,周村:101120305:zhoucun 山东,淄博,沂源:101120306:yiyuan 山东,淄博,桓台:101120307:huantai 山东,淄博,临淄:101120308:linzi 山东,德州,德州:101120401:dezhou 山东,德州,武城:101120402:wucheng 山东,德州,临邑:101120403:linyi 山东,德州,陵县:101120404:lingxian 山东,德州,齐河:101120405:qihe 山东,德州,乐陵:101120406:leling 山东,德州,庆云:101120407:qingyun 山东,德州,平原:101120408:pingyuan 山东,德州,宁津:101120409:ningjin 山东,德州,夏津:101120410:xiajin 山东,德州,禹城:101120411:yucheng 山东,烟台,烟台:101120501:yantai 山东,烟台,莱州:101120502:laizhou 山东,烟台,长岛:101120503:changdao 山东,烟台,蓬莱:101120504:penglai 山东,烟台,龙口:101120505:longkou 山东,烟台,招远:101120506:zhaoyuan 山东,烟台,栖霞:101120507:qixia 山东,烟台,福山:101120508:fushan 山东,烟台,牟平:101120509:moup 山东,烟台,莱阳:101120510:laiyang 山东,烟台,海阳:101120511:haiyang 山东,潍坊,潍坊:101120601:weifang 山东,潍坊,青州:101120602:qingzhou 山东,潍坊,寿光:101120603:shouguang 山东,潍坊,临朐:101120604:linqu 山东,潍坊,昌乐:101120605:changle 山东,潍坊,昌邑:101120606:changyi 山东,潍坊,安丘:101120607:anqiu 山东,潍坊,高密:101120608:gaomi 山东,潍坊,诸城:101120609:zhucheng 山东,济宁,济宁:101120701:jining 山东,济宁,嘉祥:101120702:jiaxiang 山东,济宁,微山:101120703:weishan 山东,济宁,鱼台:101120704:yutai 山东,济宁,兖州:101120705:yanzhou 山东,济宁,金乡:101120706:jinxiang 山东,济宁,汶上:101120707:wenshang 山东,济宁,泗水:101120708:sishui 山东,济宁,梁山:101120709:liangshan 山东,济宁,曲阜:101120710:qufu 山东,济宁,邹城:101120711:zoucheng 山东,泰安,泰安:101120801:taian 山东,泰安,新泰:101120802:xintai 山东,泰安,肥城:101120804:feicheng 山东,泰安,东平:101120805:dongping 山东,泰安,宁阳:101120806:ningyang 山东,临沂,临沂:101120901:linyi 山东,临沂,莒南:101120902:junan 山东,临沂,沂南:101120903:yinan 山东,临沂,苍山:101120904:cangshan 山东,临沂,临沭:101120905:linshu 山东,临沂,郯城:101120906:tancheng 山东,临沂,蒙阴:101120907:mengyin 山东,临沂,平邑:101120908:pingyi 山东,临沂,费县:101120909:feixian 山东,临沂,沂水:101120910:yishui 山东,菏泽,菏泽:101121001:heze 山东,菏泽,鄄城:101121002:juancheng 山东,菏泽,郓城:101121003:yuncheng 山东,菏泽,东明:101121004:dongming 山东,菏泽,定陶:101121005:dingtao 山东,菏泽,巨野:101121006:juye 山东,菏泽,曹县:101121007:caoxian 山东,菏泽,成武:101121008:chengwu 山东,菏泽,单县:101121009:shanxian 山东,滨州,滨州:101121101:binzhou 山东,滨州,博兴:101121102:boxing 山东,滨州,无棣:101121103:wudi 山东,滨州,阳信:101121104:yangxin 山东,滨州,惠民:101121105:huimin 山东,滨州,沾化:101121106:zhanhua 山东,滨州,邹平:101121107:zouping 山东,东营,东营:101121201:dongying 山东,东营,河口:101121202:hekou 山东,东营,垦利:101121203:kenli 山东,东营,利津:101121204:lijin 山东,东营,广饶:101121205:guangrao 山东,威海,威海:101121301:weihai 山东,威海,文登:101121302:wendeng 山东,威海,荣成:101121303:rongcheng 山东,威海,乳山:101121304:rushan 山东,威海,成山头:101121305:chengshantou 山东,威海,石岛:101121306:shidao 山东,枣庄,枣庄:101121401:zaozhuang 山东,枣庄,薛城:101121402:xuecheng 山东,枣庄,峄城:101121403:yicheng 山东,枣庄,台儿庄:101121404:taierzhuang 山东,枣庄,滕州:101121405:tengzhou 山东,日照,日照:101121501:rizhao 山东,日照,五莲:101121502:wulian 山东,日照,莒县:101121503:juxian 山东,莱芜,莱芜:101121601:laiwu 山东,聊城,聊城:101121701:liaocheng 山东,聊城,冠县:101121702:guanxian 山东,聊城,阳谷:101121703:yanggu 山东,聊城,高唐:101121704:gaotang 山东,聊城,茌平:101121705:chiping 山东,聊城,东阿:101121706:donge 山东,聊城,临清:101121707:linqing 山东,聊城,莘县:101121709:shenxian 新疆,乌鲁木齐,乌鲁木齐:101130101:wulumuqi 新疆,乌鲁木齐,小渠子:101130103:xiaoquzi 新疆,乌鲁木齐,达坂城:101130105:dabancheng 新疆,乌鲁木齐,乌鲁木齐牧试站:101130108:wulumuqimushizhan 新疆,乌鲁木齐,天池:101130109:tianchi 新疆,乌鲁木齐,白杨沟:101130110:baiyanggou 新疆,克拉玛依,克拉玛依:101130201:kelamayi 新疆,克拉玛依,乌尔禾:101130202:wuerhe 新疆,克拉玛依,白碱滩:101130203:baijiantan 新疆,石河子,石河子:101130301:shihezi 新疆,石河子,炮台:101130302:paotai 新疆,石河子,莫索湾:101130303:mosuowan 新疆,昌吉,昌吉:101130401:changji 新疆,昌吉,呼图壁:101130402:hutubi 新疆,昌吉,米泉:101130403:miquan 新疆,昌吉,阜康:101130404:fukang 新疆,昌吉,吉木萨尔:101130405:jimusaer 新疆,昌吉,奇台:101130406:qitai 新疆,昌吉,玛纳斯:101130407:manasi 新疆,昌吉,木垒:101130408:mulei 新疆,昌吉,蔡家湖:101130409:caijiahu 新疆,吐鲁番,吐鲁番:101130501:tulufan 新疆,吐鲁番,托克逊:101130502:tuokexun 新疆,吐鲁番,鄯善:101130504:shanshan 新疆,巴音郭楞,库尔勒:101130601:kuerle 新疆,巴音郭楞,轮台:101130602:luntai 新疆,巴音郭楞,尉犁:101130603:weili 新疆,巴音郭楞,若羌:101130604:ruoqiang 新疆,巴音郭楞,且末:101130605:qiemo 新疆,巴音郭楞,和静:101130606:hejing 新疆,巴音郭楞,焉耆:101130607:yanqi 新疆,巴音郭楞,和硕:101130608:shuo 新疆,巴音郭楞,巴音布鲁克:101130610:bayinbuluke 新疆,巴音郭楞,铁干里克:101130611:tieganlike 新疆,巴音郭楞,博湖:101130612:bohu 新疆,巴音郭楞,塔中:101130613:tazhong 新疆,巴音郭楞,巴仑台:101130614:baluntai 新疆,阿拉尔,阿拉尔:101130701:alaer 新疆,阿克苏,阿克苏:101130801:akesu 新疆,阿克苏,乌什:101130802:wushi 新疆,阿克苏,温宿:101130803:wensu 新疆,阿克苏,拜城:101130804:baicheng 新疆,阿克苏,新和:101130805:xinhe 新疆,阿克苏,沙雅:101130806:shaya 新疆,阿克苏,库车:101130807:kuche 新疆,阿克苏,柯坪:101130808:keping 新疆,阿克苏,阿瓦提:101130809:awati 新疆,喀什,喀什:101130901:kashi 新疆,喀什,英吉沙:101130902:yingjisha 新疆,喀什,塔什库尔干:101130903:tashikuergan 新疆,喀什,麦盖提:101130904:maigaiti 新疆,喀什,莎车:101130905:shache 新疆,喀什,叶城:101130906:yecheng 新疆,喀什,泽普:101130907:zepu 新疆,喀什,巴楚:101130908:bachu 新疆,喀什,岳普湖:101130909:yuepuhu 新疆,喀什,伽师:101130910:jiashi 新疆,喀什,疏附:101130911:shufu 新疆,喀什,疏勒:101130912:shule 新疆,伊犁,伊宁:101131001:yining 新疆,伊犁,察布查尔:101131002:chabuchaer 新疆,伊犁,尼勒克:101131003:nileke 新疆,伊犁,伊宁县:101131004:yiningxian 新疆,伊犁,巩留:101131005:gongliu 新疆,伊犁,新源:101131006:xinyuan 新疆,伊犁,昭苏:101131007:zhaosu 新疆,伊犁,特克斯:101131008:tekesi 新疆,伊犁,霍城:101131009:huocheng 新疆,伊犁,霍尔果斯:101131010:huoerguosi 新疆,伊犁,奎屯:101131011:kuitunshi 新疆,塔城,塔城:101131101:tacheng 新疆,塔城,裕民:101131102:yumin 新疆,塔城,额敏:101131103:emin 新疆,塔城,和布克赛尔:101131104:hebukesaier 新疆,塔城,托里:101131105:tuoli 新疆,塔城,乌苏:101131106:wusu 新疆,塔城,沙湾:101131107:shawan 新疆,哈密,哈密:101131201:hami 新疆,哈密,巴里坤:101131203:balikun 新疆,哈密,伊吾:101131204:yiwu 新疆,和田,和田:101131301:hetian 新疆,和田,皮山:101131302:pishan 新疆,和田,策勒:101131303:cele 新疆,和田,墨玉:101131304:moyu 新疆,和田,洛浦:101131305:luopu 新疆,和田,民丰:101131306:minfeng 新疆,和田,于田:101131307:yutian 新疆,阿勒泰,阿勒泰:101131401:aletai 新疆,阿勒泰,哈巴河:101131402:habahe 新疆,阿勒泰,吉木乃:101131405:jimunai 新疆,阿勒泰,布尔津:101131406:buerjin 新疆,阿勒泰,福海:101131407:fuhai 新疆,阿勒泰,富蕴:101131408:fuyun 新疆,阿勒泰,青河:101131409:qinghe 新疆,克州,阿图什:101131501:atushi 新疆,克州,乌恰:101131502:wuqia 新疆,克州,阿克陶:101131503:aketao 新疆,克州,阿合奇:101131504:aheqi 新疆,博尔塔拉,博乐:101131601:bole 新疆,博尔塔拉,温泉:101131602:wenquan 新疆,博尔塔拉,精河:101131603:jinghe 新疆,博尔塔拉,阿拉山口:101131606:alashankou 西藏,拉萨,拉萨:101140101:lasa 西藏,拉萨,当雄:101140102:dangxiong 西藏,拉萨,尼木:101140103:nimu 西藏,拉萨,林周:101140104:linzhou 西藏,拉萨,堆龙德庆:101140105:duilongdeqing 西藏,拉萨,曲水:101140106:qushui 西藏,拉萨,达孜:101140107:dazi 西藏,拉萨,墨竹工卡:101140108:mozhugongka 西藏,日喀则,日喀则:101140201:rikaze 西藏,日喀则,拉孜:101140202:lazi 西藏,日喀则,南木林:101140203:nanmulin 西藏,日喀则,聂拉木:101140204:nielamu 西藏,日喀则,定日:101140205:anri 西藏,日喀则,江孜:101140206:jiangzi 西藏,日喀则,帕里:101140207:pali 西藏,日喀则,仲巴:101140208:zhongba 西藏,日喀则,萨嘎:101140209:saga 西藏,日喀则,吉隆:101140210:jilong 西藏,日喀则,昂仁:101140211:angren 西藏,日喀则,定结:101140212:dingjie 西藏,日喀则,萨迦:101140213:sajia 西藏,日喀则,谢通门:101140214:xietongmen 西藏,日喀则,岗巴:101140216:gangba 西藏,日喀则,白朗:101140217:bailang 西藏,日喀则,亚东:101140218:yadong 西藏,日喀则,康马:101140219:kangma 西藏,日喀则,仁布:101140220:renbu 西藏,山南,山南:101140301:shannan 西藏,山南,贡嘎:101140302:gongga 西藏,山南,扎囊:101140303:zhanan 西藏,山南,加查:101140304:jiacha 西藏,山南,浪卡子:101140305:langkazi 西藏,山南,错那:101140306:cuona 西藏,山南,隆子:101140307:longzi 西藏,山南,泽当:101140308:zedang 西藏,山南,乃东:101140309:naidong 西藏,山南,桑日:101140310:sangri 西藏,山南,洛扎:101140311:luozha 西藏,山南,措美:101140312:cuomei 西藏,山南,琼结:101140313:qiongjie 西藏,山南,曲松:101140314:qusong 西藏,林芝,林芝:101140401:linzhi 西藏,林芝,波密:101140402:bomi 西藏,林芝,米林:101140403:milin 西藏,林芝,察隅:101140404:chayu 西藏,林芝,工布江达:101140405:gongbujiangda 西藏,林芝,朗县:101140406:langxian 西藏,林芝,墨脱:101140407:motuo 西藏,昌都,昌都:101140501:changdu 西藏,昌都,丁青:101140502:dingqing 西藏,昌都,边坝:101140503:bianba 西藏,昌都,洛隆:101140504:luolong 西藏,昌都,左贡:101140505:zuogong 西藏,昌都,芒康:101140506:mangkang 西藏,昌都,类乌齐:101140507:leiwuqi 西藏,昌都,八宿:101140508:basu 西藏,昌都,江达:101140509:jiangda 西藏,昌都,察雅:101140510:chaya 西藏,昌都,贡觉:101140511:gongjue 西藏,那曲,那曲:101140601:naqu 西藏,那曲,尼玛:101140602:nima 西藏,那曲,嘉黎:101140603:jiali 西藏,那曲,班戈:101140604:bange 西藏,那曲,安多:101140605:anduo 西藏,那曲,索县:101140606:suoxian 西藏,那曲,聂荣:101140607:nierong 西藏,那曲,巴青:101140608:baqing 西藏,那曲,比如:101140609:biru 西藏,那曲,双湖:101140610:shuanghu 西藏,阿里,阿里:101140701:ali 西藏,阿里,改则:101140702:gaize 西藏,阿里,申扎:101140703:shenzha 西藏,阿里,狮泉河:101140704:shiquanhe 西藏,阿里,普兰:101140705:pulan 西藏,阿里,札达:101140706:zhada 西藏,阿里,噶尔:101140707:gaer 西藏,阿里,日土:101140708:ritu 西藏,阿里,革吉:101140709:geji 西藏,阿里,措勤:101140710:cuoqin 青海,西宁,西宁:101150101:xining 青海,西宁,大通:101150102:datong 青海,西宁,湟源:101150103:huangyuan 青海,西宁,湟中:101150104:huangzhong 青海,海东,海东:101150201:haidong 青海,海东,乐都:101150202:ledu 青海,海东,民和:101150203:minhe 青海,海东,互助:101150204:huzhu 青海,海东,化隆:101150205:hualong 青海,海东,循化:101150206:xunhua 青海,海东,冷湖:101150207:lenghu 青海,海东,平安:101150208:pingan 青海,黄南,黄南:101150301:huangnan 青海,黄南,尖扎:101150302:jianzha 青海,黄南,泽库:101150303:zeku 青海,黄南,河南:101150304:henan 青海,黄南,同仁:101150305:tongren 青海,海南,海南:101150401:hainan 青海,海南,贵德:101150404:guide 青海,海南,兴海:101150406:xinghai 青海,海南,贵南:101150407:guinan 青海,海南,同德:101150408:tongde 青海,海南,共和:101150409:gonghe 青海,果洛,果洛:101150501:guoluo 青海,果洛,班玛:101150502:banma 青海,果洛,甘德:101150503:gande 青海,果洛,达日:101150504:dari 青海,果洛,久治:101150505:jiuzhi 青海,果洛,玛多:101150506:madu 青海,果洛,多县:101150507:duoxian 青海,果洛,玛沁:101150508:maqin 青海,玉树,玉树:101150601:yushu 青海,玉树,称多:101150602:chenduo 青海,玉树,治多:101150603:zhiduo 青海,玉树,杂多:101150604:zaduo 青海,玉树,囊谦:101150605:nangqian 青海,玉树,曲麻莱:101150606:qumacai 青海,海西,海西:101150701:haixi 青海,海西,天峻:101150708:tianjun 青海,海西,乌兰:101150709:wulan 青海,海西,茫崖:101150712:mangai 青海,海西,大柴旦:101150713:dachaidan 青海,海西,德令哈:101150716:delingha 青海,海北,海北:101150801:haibei 青海,海北,门源:101150802:menyuan 青海,海北,祁连:101150803:qilian 青海,海北,海晏:101150804:haiman 青海,海北,刚察:101150806:gangcha 青海,格尔木,格尔木:101150901:geermu 青海,格尔木,都兰:101150902:dulan 甘肃,兰州,兰州:101160101:lanzhou 甘肃,兰州,皋兰:101160102:gaolan 甘肃,兰州,永登:101160103:yongdeng 甘肃,兰州,榆中:101160104:yuzhong 甘肃,定西,定西:101160201:dingxi 甘肃,定西,通渭:101160202:tongwei 甘肃,定西,陇西:101160203:longxi 甘肃,定西,渭源:101160204:weiyuan 甘肃,定西,临洮:101160205:lintao 甘肃,定西,漳县:101160206:zhangxian 甘肃,定西,岷县:101160207:minxian 甘肃,定西,安定:101160208:anding 甘肃,平凉,平凉:101160301:pingliang 甘肃,平凉,泾川:101160302:jingchuan 甘肃,平凉,灵台:101160303:lingtai 甘肃,平凉,崇信:101160304:chongxin 甘肃,平凉,华亭:101160305:huating 甘肃,平凉,庄浪:101160306:zhuanglang 甘肃,平凉,静宁:101160307:jingning 甘肃,平凉,崆峒:101160308:kongtong 甘肃,庆阳,西峰:101160401:qingyang 甘肃,庆阳,环县:101160403:huanxian 甘肃,庆阳,华池:101160404:huachi 甘肃,庆阳,合水:101160405:heshui 甘肃,庆阳,正宁:101160406:zhengning 甘肃,庆阳,宁县:101160407:ningxian 甘肃,庆阳,镇原:101160408:zhenyuan 甘肃,庆阳,庆城:101160409:qingcheng 甘肃,武威,武威:101160501:wuwei 甘肃,武威,民勤:101160502:minqin 甘肃,武威,古浪:101160503:gulang 甘肃,武威,天祝:101160505:tianzhu 甘肃,金昌,金昌:101160601:jinchang 甘肃,金昌,永昌:101160602:yongchang 甘肃,张掖,张掖:101160701:zhangye 甘肃,张掖,肃南:101160702:sunan 甘肃,张掖,民乐:101160703:minle 甘肃,张掖,临泽:101160704:linze 甘肃,张掖,高台:101160705:gaotai 甘肃,张掖,山丹:101160706:shandan 甘肃,酒泉,酒泉:101160801:jiuquan 甘肃,酒泉,金塔:101160803:jinta 甘肃,酒泉,阿克塞:101160804:akesai 甘肃,酒泉,瓜州:101160805:guazhou 甘肃,酒泉,肃北:101160806:subei 甘肃,酒泉,玉门:101160807:yumen 甘肃,酒泉,敦煌:101160808:dunhuang 甘肃,天水,天水:101160901:tianshui 甘肃,天水,清水:101160903:qingshui 甘肃,天水,秦安:101160904:qinan 甘肃,天水,甘谷:101160905:gangu 甘肃,天水,武山:101160906:wushan 甘肃,天水,张家川:101160907:zhangjiachuan 甘肃,天水,麦积:101160908:maiji 甘肃,陇南,武都:101161001:wudu 甘肃,陇南,成县:101161002:chengxian 甘肃,陇南,文县:101161003:wenxian 甘肃,陇南,宕昌:101161004:dangchang 甘肃,陇南,康县:101161005:kangxian 甘肃,陇南,西和:101161006:xihe 甘肃,陇南,礼县:101161007:lixian 甘肃,陇南,徽县:101161008:huixian 甘肃,陇南,两当:101161009:liangdang 甘肃,临夏,临夏:101161101:linxia 甘肃,临夏,康乐:101161102:kangle 甘肃,临夏,永靖:101161103:yongjing 甘肃,临夏,广河:101161104:guanghe 甘肃,临夏,和政:101161105:hezheng 甘肃,临夏,东乡:101161106:dongxiang 甘肃,临夏,积石山:101161107:jishishan 甘肃,甘南,合作:101161201:hezuo 甘肃,甘南,临潭:101161202:lintan 甘肃,甘南,卓尼:101161203:zhuoni 甘肃,甘南,舟曲:101161204:zhouqu 甘肃,甘南,迭部:101161205:diebu 甘肃,甘南,玛曲:101161206:maqu 甘肃,甘南,碌曲:101161207:luqu 甘肃,甘南,夏河:101161208:xiahe 甘肃,白银,白银:101161301:baiyin 甘肃,白银,靖远:101161302:jingyuan 甘肃,白银,会宁:101161303:huining 甘肃,白银,平川:101161304:pingchuan 甘肃,白银,景泰:101161305:jingtai 甘肃,嘉峪关,嘉峪关:101161401:jiayuguan 宁夏,银川,银川:101170101:yinchuan 宁夏,银川,永宁:101170102:yongning 宁夏,银川,灵武:101170103:lingwu 宁夏,银川,贺兰:101170104:helan 宁夏,石嘴山,石嘴山:101170201:shizuishan 宁夏,石嘴山,惠农:101170202:huinong 宁夏,石嘴山,平罗:101170203:pingluo 宁夏,石嘴山,陶乐:101170204:taole 宁夏,吴忠,吴忠:101170301:wuzhong 宁夏,吴忠,同心:101170302:tongxin 宁夏,吴忠,盐池:101170303:yanchi 宁夏,吴忠,青铜峡:101170306:qingtongxia 宁夏,固原,固原:101170401:guyuan 宁夏,固原,西吉:101170402:xiji 宁夏,固原,隆德:101170403:longde 宁夏,固原,泾源:101170404:jinyuan 宁夏,固原,彭阳:101170406:pengyang 宁夏,中卫,中卫:101170501:zhongwei 宁夏,中卫,中宁:101170502:zhongning 宁夏,中卫,海原:101170504:haiyuan 河南,郑州,郑州:101180101:zhengzhou 河南,郑州,巩义:101180102:gongyi 河南,郑州,荥阳:101180103:xingyang 河南,郑州,登封:101180104:dengfeng 河南,郑州,新密:101180105:xinmi 河南,郑州,新郑:101180106:xinzheng 河南,郑州,中牟:101180107:zhongmou 河南,郑州,上街:101180108:shangjie 河南,安阳,安阳:101180201:anyang 河南,安阳,汤阴:101180202:tangyin 河南,安阳,滑县:101180203:huaxian 河南,安阳,内黄:101180204:neihuang 河南,安阳,林州:101180205:linzhou 河南,新乡,新乡:101180301:xinxiang 河南,新乡,获嘉:101180302:huojia 河南,新乡,原阳:101180303:yuanyang 河南,新乡,辉县:101180304:huixian 河南,新乡,卫辉:101180305:weihui 河南,新乡,延津:101180306:yanjin 河南,新乡,封丘:101180307:fengqiu 河南,新乡,长垣:101180308:changyuan 河南,许昌,许昌:101180401:xuchang 河南,许昌,鄢陵:101180402:yanling 河南,许昌,襄城:101180403:xiangcheng 河南,许昌,长葛:101180404:changge 河南,许昌,禹州:101180405:yuzhou 河南,平顶山,平顶山:101180501:pingdingshan 河南,平顶山,郏县:101180502:jiaxian 河南,平顶山,宝丰:101180503:baofeng 河南,平顶山,汝州:101180504:ruzhou 河南,平顶山,叶县:101180505:yexian 河南,平顶山,舞钢:101180506:wugang 河南,平顶山,鲁山:101180507:lushan 河南,平顶山,石龙:101180508:shilong 河南,信阳,信阳:101180601:xinyang 河南,信阳,息县:101180602:xixian 河南,信阳,罗山:101180603:luoshan 河南,信阳,光山:101180604:guangshan 河南,信阳,新县:101180605:xinxian 河南,信阳,淮滨:101180606:huaibin 河南,信阳,潢川:101180607:huangchuan 河南,信阳,固始:101180608:gushi 河南,信阳,商城:101180609:shangcheng 河南,南阳,南阳:101180701:nanyang 河南,南阳,南召:101180702:nanzhao 河南,南阳,方城:101180703:fangcheng 河南,南阳,社旗:101180704:sheqi 河南,南阳,西峡:101180705:xixia 河南,南阳,内乡:101180706:neixiang 河南,南阳,镇平:101180707:zhenping 河南,南阳,淅川:101180708:xichuan 河南,南阳,新野:101180709:xinye 河南,南阳,唐河:101180710:tanghe 河南,南阳,邓州:101180711:dengzhou 河南,南阳,桐柏:101180712:tongbai 河南,开封,开封:101180801:kaifeng 河南,开封,杞县:101180802:qixian 河南,开封,尉氏:101180803:weishi 河南,开封,通许:101180804:tongxu 河南,开封,兰考:101180805:lankao 河南,洛阳,洛阳:101180901:luoyang 河南,洛阳,新安:101180902:xinan 河南,洛阳,孟津:101180903:mengjin 河南,洛阳,宜阳:101180904:yiyang 河南,洛阳,洛宁:101180905:luoning 河南,洛阳,伊川:101180906:yichuan 河南,洛阳,嵩县:101180907:songxian 河南,洛阳,偃师:101180908:yanshi 河南,洛阳,栾川:101180909:luanchuan 河南,洛阳,汝阳:101180910:ruyang 河南,洛阳,吉利:101180911:jili 河南,商丘,商丘:101181001:shangqiu 河南,商丘,睢县:101181003:suixian 河南,商丘,民权:101181004:minquan 河南,商丘,虞城:101181005:yucheng 河南,商丘,柘城:101181006:zhecheng 河南,商丘,宁陵:101181007:ningling 河南,商丘,夏邑:101181008:xiayi 河南,商丘,永城:101181009:yongcheng 河南,焦作,焦作:101181101:jiaozuo 河南,焦作,修武:101181102:xiuwu 河南,焦作,武陟:101181103:wuzhi 河南,焦作,沁阳:101181104:qinyang 河南,焦作,博爱:101181106:boai 河南,焦作,温县:101181107:wenxian 河南,焦作,孟州:101181108:mengzhou 河南,鹤壁,鹤壁:101181201:hebi 河南,鹤壁,浚县:101181202:xunxian 河南,鹤壁,淇县:101181203:qixian 河南,濮阳,濮阳:101181301:puyang 河南,濮阳,台前:101181302:taiqian 河南,濮阳,南乐:101181303:nanle 河南,濮阳,清丰:101181304:qingfeng 河南,濮阳,范县:101181305:fanxian 河南,周口,周口:101181401:zhoukou 河南,周口,扶沟:101181402:fugou 河南,周口,太康:101181403:taikang 河南,周口,淮阳:101181404:huaiyang 河南,周口,西华:101181405:xihua 河南,周口,商水:101181406:shangshui 河南,周口,项城:101181407:xiangcheng 河南,周口,郸城:101181408:dancheng 河南,周口,鹿邑:101181409:luyi 河南,周口,沈丘:101181410:shenqiu 河南,漯河,漯河:101181501:luohe 河南,漯河,临颍:101181502:linying 河南,漯河,舞阳:101181503:wuyang 河南,驻马店,驻马店:101181601:zhumadian 河南,驻马店,西平:101181602:xiping 河南,驻马店,遂平:101181603:suiping 河南,驻马店,上蔡:101181604:shangcai 河南,驻马店,汝南:101181605:runan 河南,驻马店,泌阳:101181606:biyang 河南,驻马店,平舆:101181607:pingyu 河南,驻马店,新蔡:101181608:xincai 河南,驻马店,确山:101181609:queshan 河南,驻马店,正阳:101181610:zhengyang 河南,三门峡,三门峡:101181701:sanmenxia 河南,三门峡,灵宝:101181702:lingbao 河南,三门峡,渑池:101181703:mianchi 河南,三门峡,卢氏:101181704:lushi 河南,三门峡,义马:101181705:yima 河南,三门峡,陕县:101181706:shanxian 河南,济源,济源:101181801:jiyuan 江苏,南京,南京:101190101:nanjing 江苏,南京,溧水:101190102:lishui 江苏,南京,高淳:101190103:gaochun 江苏,南京,江宁:101190104:jiangning 江苏,南京,六合:101190105:luhe 江苏,南京,江浦:101190106:jiangpu 江苏,南京,浦口:101190107:pukou 江苏,无锡,无锡:101190201:wuxi 江苏,无锡,江阴:101190202:jiangyin 江苏,无锡,宜兴:101190203:yixing 江苏,无锡,锡山:101190204:xishan 江苏,镇江,镇江:101190301:zhenjiang 江苏,镇江,丹阳:101190302:danyang 江苏,镇江,扬中:101190303:yangzhong 江苏,镇江,句容:101190304:jurong 江苏,镇江,丹徒:101190305:dantu 江苏,苏州,苏州:101190401:suzhou 江苏,苏州,常熟:101190402:changshu 江苏,苏州,张家港:101190403:zhangjiagang 江苏,苏州,昆山:101190404:kunshan 江苏,苏州,吴中:101190405:wuzhong 江苏,苏州,吴江:101190407:wujiang 江苏,苏州,太仓:101190408:taicang 江苏,南通,南通:101190501:nantong 江苏,南通,海安:101190502:haian 江苏,南通,如皋:101190503:rugao 江苏,南通,如东:101190504:rudong 江苏,南通,启东:101190507:qidong 江苏,南通,海门:101190508:haimen 江苏,南通,通州:101190509:tongzhou 江苏,扬州,扬州:101190601:yangzhou 江苏,扬州,宝应:101190602:baoying 江苏,扬州,仪征:101190603:yizheng 江苏,扬州,高邮:101190604:gaoyou 江苏,扬州,江都:101190605:jiangdu 江苏,扬州,邗江:101190606:hanjiang 江苏,盐城,盐城:101190701:yancheng 江苏,盐城,响水:101190702:xiangshui 江苏,盐城,滨海:101190703:binhai 江苏,盐城,阜宁:101190704:funing 江苏,盐城,射阳:101190705:sheyang 江苏,盐城,建湖:101190706:jianhu 江苏,盐城,东台:101190707:dongtai 江苏,盐城,大丰:101190708:dafeng 江苏,盐城,盐都:101190709:yandu 江苏,徐州,徐州:101190801:xuzhou 江苏,徐州,铜山:101190802:tongshan 江苏,徐州,丰县:101190803:fengxian 江苏,徐州,沛县:101190804:peixian 江苏,徐州,邳州:101190805:pizhou 江苏,徐州,睢宁:101190806:suining 江苏,徐州,新沂:101190807:xinyi 江苏,淮安,淮安:101190901:huaian 江苏,淮安,金湖:101190902:jinhu 江苏,淮安,盱眙:101190903:xuyi 江苏,淮安,洪泽:101190904:hongze 江苏,淮安,涟水:101190905:lianshui 江苏,淮安,淮阴区:101190906:huaiyinqu 江苏,淮安,淮安区:101190908:huaianqu 江苏,连云港,连云港:101191001:lianyungang 江苏,连云港,东海:101191002:donghai 江苏,连云港,赣榆:101191003:ganyu 江苏,连云港,灌云:101191004:guanyun 江苏,连云港,灌南:101191005:guannan 江苏,常州,常州:101191101:changzhou 江苏,常州,溧阳:101191102:liyang 江苏,常州,金坛:101191103:jintan 江苏,常州,武进:101191104:wujin 江苏,泰州,泰州:101191201:taizhou 江苏,泰州,兴化:101191202:xinghua 江苏,泰州,泰兴:101191203:taixing 江苏,泰州,姜堰:101191204:jiangyan 江苏,泰州,靖江:101191205:jingjiang 江苏,宿迁,宿迁:101191301:suqian 江苏,宿迁,沭阳:101191302:shuyang 江苏,宿迁,泗阳:101191303:siyang 江苏,宿迁,泗洪:101191304:sihong 江苏,宿迁,宿豫:101191305:suyu 湖北,武汉,武汉:101200101:wuhan 湖北,武汉,蔡甸:101200102:caidian 湖北,武汉,黄陂:101200103:huangpi 湖北,武汉,新洲:101200104:xinzhou 湖北,武汉,江夏:101200105:jiangxia 湖北,武汉,东西湖:101200106:dongxihu 湖北,襄阳,襄阳:101200201:xiangyang 湖北,襄阳,襄州:101200202:xiangzhou 湖北,襄阳,保康:101200203:baokang 湖北,襄阳,南漳:101200204:nanzhang 湖北,襄阳,宜城:101200205:yicheng 湖北,襄阳,老河口:101200206:laohekou 湖北,襄阳,谷城:101200207:gucheng 湖北,襄阳,枣阳:101200208:zaoyang 湖北,鄂州,鄂州:101200301:ezhou 湖北,鄂州,梁子湖:101200302:liangzihu 湖北,孝感,孝感:101200401:xiaogan 湖北,孝感,安陆:101200402:anlu 湖北,孝感,云梦:101200403:yunmeng 湖北,孝感,大悟:101200404:dawu 湖北,孝感,应城:101200405:yingcheng 湖北,孝感,汉川:101200406:hanchuan 湖北,孝感,孝昌:101200407:xiaochang 湖北,黄冈,黄冈:101200501:huanggang 湖北,黄冈,红安:101200502:hongan 湖北,黄冈,麻城:101200503:macheng 湖北,黄冈,罗田:101200504:luotian 湖北,黄冈,英山:101200505:yingshan 湖北,黄冈,浠水:101200506:xishui 湖北,黄冈,蕲春:101200507:qichun 湖北,黄冈,黄梅:101200508:huangmei 湖北,黄冈,武穴:101200509:wuxue 湖北,黄冈,团风:101200510:tuanfeng 湖北,黄石,黄石:101200601:huangshi 湖北,黄石,大冶:101200602:daye 湖北,黄石,阳新:101200603:yangxin 湖北,黄石,铁山:101200604:tieshan 湖北,黄石,下陆:101200605:xialu 湖北,黄石,西塞山:101200606:xisaishan 湖北,咸宁,咸宁:101200701:xianning 湖北,咸宁,赤壁:101200702:chibi 湖北,咸宁,嘉鱼:101200703:jiayu 湖北,咸宁,崇阳:101200704:chongyang 湖北,咸宁,通城:101200705:tongcheng 湖北,咸宁,通山:101200706:tongshan 湖北,荆州,荆州:101200801:jingzhou 湖北,荆州,江陵:101200802:jiangling 湖北,荆州,公安:101200803:gongan 湖北,荆州,石首:101200804:shishou 湖北,荆州,监利:101200805:jianli 湖北,荆州,洪湖:101200806:honghu 湖北,荆州,松滋:101200807:songzi 湖北,荆州,沙市:101201406:shashi 湖北,宜昌,宜昌:101200901:yichang 湖北,宜昌,远安:101200902:yuanan 湖北,宜昌,秭归:101200903:zigui 湖北,宜昌,兴山:101200904:xingshan 湖北,宜昌,五峰:101200906:wufeng 湖北,宜昌,当阳:101200907:dangyang 湖北,宜昌,长阳:101200908:changyang 湖北,宜昌,宜都:101200909:yidu 湖北,宜昌,枝江:101200910:zhijiang 湖北,宜昌,三峡:101200911:sanxia 湖北,宜昌,夷陵:101200912:yiling 湖北,恩施,恩施:101201001:enshi 湖北,恩施,利川:101201002:lichuan 湖北,恩施,建始:101201003:jianshi 湖北,恩施,咸丰:101201004:xianfeng 湖北,恩施,宣恩:101201005:xuanen 湖北,恩施,鹤峰:101201006:hefeng 湖北,恩施,来凤:101201007:laifeng 湖北,恩施,巴东:101201008:badong 湖北,十堰,十堰:101201101:shiyan 湖北,十堰,竹溪:101201102:zhuxi 湖北,十堰,郧西:101201103:yunxi 湖北,十堰,郧县:101201104:yunxian 湖北,十堰,竹山:101201105:zhushan 湖北,十堰,房县:101201106:fangxian 湖北,十堰,丹江口:101201107:danjiangkou 湖北,十堰,茅箭:101201108:maojian 湖北,十堰,张湾:101201109:zhangwan 湖北,神农架,神农架:101201201:shennongjia 湖北,随州,随州:101201301:suizhou 湖北,随州,广水:101201302:guangshui 湖北,荆门,荆门:101201401:jingmen 湖北,荆门,钟祥:101201402:zhongxiang 湖北,荆门,京山:101201403:jingshan 湖北,荆门,掇刀:101201404:duodao 湖北,荆门,沙洋:101201405:shayang 湖北,天门,天门:101201501:tianmen 湖北,仙桃,仙桃:101201601:xiantao 湖北,潜江,潜江:101201701:qianjiang 浙江,杭州,杭州:101210101:hangzhou 浙江,杭州,萧山:101210102:xiaoshan 浙江,杭州,桐庐:101210103:tonglu 浙江,杭州,淳安:101210104:chunan 浙江,杭州,建德:101210105:jiande 浙江,杭州,余杭:101210106:yuhang 浙江,杭州,临安:101210107:linan 浙江,杭州,富阳:101210108:fuyang 浙江,湖州,湖州:101210201:huzhou 浙江,湖州,长兴:101210202:changxing 浙江,湖州,安吉:101210203:anji 浙江,湖州,德清:101210204:deqing 浙江,嘉兴,嘉兴:101210301:jiaxing 浙江,嘉兴,嘉善:101210302:jiashan 浙江,嘉兴,海宁:101210303:haining 浙江,嘉兴,桐乡:101210304:tongxiang 浙江,嘉兴,平湖:101210305:pinghu 浙江,嘉兴,海盐:101210306:haiyan 浙江,宁波,宁波:101210401:ningbo 浙江,宁波,慈溪:101210403:cixi 浙江,宁波,余姚:101210404:yuyao 浙江,宁波,奉化:101210405:fenghua 浙江,宁波,象山:101210406:xiangshan 浙江,宁波,宁海:101210408:ninghai 浙江,宁波,北仑:101210410:beilun 浙江,宁波,鄞州:101210411:yinzhou 浙江,宁波,镇海:101210412:zhenhai 浙江,绍兴,绍兴:101210501:shaoxing 浙江,绍兴,诸暨:101210502:zhuji 浙江,绍兴,上虞:101210503:shangyu 浙江,绍兴,新昌:101210504:xinchang 浙江,绍兴,嵊州:101210505:shengzhou 浙江,台州,台州:101210601:taizhou 浙江,台州,玉环:101210603:yuhuan 浙江,台州,三门:101210604:sanmen 浙江,台州,天台:101210605:tiantai 浙江,台州,仙居:101210606:xianju 浙江,台州,温岭:101210607:wenling 浙江,台州,洪家:101210609:hongjia 浙江,台州,临海:101210610:linhai 浙江,台州,椒江:101210611:jiaojiang 浙江,台州,黄岩:101210612:huangyan 浙江,台州,路桥:101210613:luqiao 浙江,温州,温州:101210701:wenzhou 浙江,温州,泰顺:101210702:taishun 浙江,温州,文成:101210703:wencheng 浙江,温州,平阳:101210704:pingyang 浙江,温州,瑞安:101210705:ruian 浙江,温州,洞头:101210706:dongtou 浙江,温州,乐清:101210707:yueqing 浙江,温州,永嘉:101210708:yongjia 浙江,温州,苍南:101210709:cangnan 浙江,丽水,丽水:101210801:lishui 浙江,丽水,遂昌:101210802:suichang 浙江,丽水,龙泉:101210803:longquan 浙江,丽水,缙云:101210804:jinyun 浙江,丽水,青田:101210805:qingtian 浙江,丽水,云和:101210806:yunhe 浙江,丽水,庆元:101210807:qingyuan 浙江,丽水,松阳:101210808:songyang 浙江,丽水,景宁:101210809:jingning 浙江,金华,金华:101210901:jinhua 浙江,金华,浦江:101210902:pujiang 浙江,金华,兰溪:101210903:lanxi 浙江,金华,义乌:101210904:yiwu 浙江,金华,东阳:101210905:dongyang 浙江,金华,武义:101210906:wuyi 浙江,金华,永康:101210907:yongkang 浙江,金华,磐安:101210908:panan 浙江,衢州,衢州:101211001:quzhou 浙江,衢州,常山:101211002:changshan 浙江,衢州,开化:101211003:kaihua 浙江,衢州,龙游:101211004:longyou 浙江,衢州,江山:101211005:jiangshan 浙江,衢州,衢江:101211006:qujiang 浙江,舟山,舟山:101211101:zhoushan 浙江,舟山,嵊泗:101211102:shengsi 浙江,舟山,岱山:101211104:daishan 浙江,舟山,普陀:101211105:putuo 浙江,舟山,定海:101211106:dinghai 安徽,合肥,合肥:101220101:hefei 安徽,合肥,长丰:101220102:changfeng 安徽,合肥,肥东:101220103:feidong 安徽,合肥,肥西:101220104:feixi 安徽,蚌埠,蚌埠:101220201:bengbu 安徽,蚌埠,怀远:101220202:huaiyuan 安徽,蚌埠,固镇:101220203:guzhen 安徽,蚌埠,五河:101220204:wuhe 安徽,芜湖,芜湖:101220301:wuhu 安徽,芜湖,繁昌:101220302:fanyang 安徽,芜湖,芜湖县:101220303:wuhuxian 安徽,芜湖,南陵:101220304:nanling 安徽,淮南,淮南:101220401:huainan 安徽,淮南,凤台:101220402:fengtai 安徽,淮南,潘集:101220403:panji 安徽,马鞍山,马鞍山:101220501:maanshan 安徽,马鞍山,当涂:101220502:dangtu 安徽,安庆,安庆:101220601:anqing 安徽,安庆,枞阳:101220602:zongyang 安徽,安庆,太湖:101220603:taihu 安徽,安庆,潜山:101220604:qianshan 安徽,安庆,怀宁:101220605:huaining 安徽,安庆,宿松:101220606:susong 安徽,安庆,望江:101220607:wangjiang 安徽,安庆,岳西:101220608:yuexi 安徽,安庆,桐城:101220609:tongcheng 安徽,宿州,宿州:101220701:suzhou 安徽,宿州,砀山:101220702:dangshan 安徽,宿州,灵璧:101220703:lingbi 安徽,宿州,泗县:101220704:sixian 安徽,宿州,萧县:101220705:xiaoxian 安徽,阜阳,阜阳:101220801:fuyang 安徽,阜阳,阜南:101220802:funan 安徽,阜阳,颍上:101220803:yingshang 安徽,阜阳,临泉:101220804:linquan 安徽,阜阳,界首:101220805:jieshou 安徽,阜阳,太和:101220806:taihe 安徽,亳州,亳州:101220901:bozhou 安徽,亳州,涡阳:101220902:guoyang 安徽,亳州,利辛:101220903:lixin 安徽,亳州,蒙城:101220904:mengcheng 安徽,黄山,黄山市:101221001:huangshan 安徽,黄山,黄山区:101221002:huangshanqu 安徽,黄山,屯溪:101221003:tunxi 安徽,黄山,祁门:101221004:qimen 安徽,黄山,黟县:101221005:yixian 安徽,黄山,歙县:101221006:shexian 安徽,黄山,休宁:101221007:xiuning 安徽,黄山,黄山风景区:101221008:huangshanfengjingqu 安徽,滁州,滁州:101221101:chuzhou 安徽,滁州,凤阳:101221102:fengyang 安徽,滁州,明光:101221103:mingguang 安徽,滁州,定远:101221104:dingyuan 安徽,滁州,全椒:101221105:quanjiao 安徽,滁州,来安:101221106:laian 安徽,滁州,天长:101221107:tianchang 安徽,淮北,淮北:101221201:huaibei 安徽,淮北,濉溪:101221202:suixi 安徽,铜陵,铜陵:101221301:tongling 安徽,宣城,宣城:101221401:xuancheng 安徽,宣城,泾县:101221402:jingxian 安徽,宣城,旌德:101221403:jingde 安徽,宣城,宁国:101221404:ningguo 安徽,宣城,绩溪:101221405:jixi 安徽,宣城,广德:101221406:guangde 安徽,宣城,郎溪:101221407:langxi 安徽,六安,六安:101221501:luan 安徽,六安,霍邱:101221502:huoqiu 安徽,六安,寿县:101221503:shouxian 安徽,六安,金寨:101221505:jinzhai 安徽,六安,霍山:101221506:huoshan 安徽,六安,舒城:101221507:shucheng 安徽,巢湖,巢湖:101221601:chaohu 安徽,巢湖,庐江:101221602:lujiang 安徽,巢湖,无为:101221603:wuwei 安徽,巢湖,含山:101221604:hanshan 安徽,巢湖,和县:101221605:hexian 安徽,池州,池州:101221701:chizhou 安徽,池州,东至:101221702:dongzhi 安徽,池州,青阳:101221703:qingyang 安徽,池州,九华山:101221704:jiuhuashan 安徽,池州,石台:101221705:shitai 福建,福州,福州:101230101:fuzhou 福建,福州,闽清:101230102:minqing 福建,福州,闽侯:101230103:minhou 福建,福州,罗源:101230104:luoyuan 福建,福州,连江:101230105:lianjiang 福建,福州,永泰:101230107:yongtai 福建,福州,平潭:101230108:pingtan 福建,福州,长乐:101230110:changle 福建,福州,福清:101230111:fuqing 福建,厦门,厦门:101230201:xiamen 福建,厦门,同安:101230202:tongan 福建,宁德,宁德:101230301:ningde 福建,宁德,古田:101230302:gutian 福建,宁德,霞浦:101230303:xiapu 福建,宁德,寿宁:101230304:shouning 福建,宁德,周宁:101230305:zhouning 福建,宁德,福安:101230306:fuan 福建,宁德,柘荣:101230307:zherong 福建,宁德,福鼎:101230308:fuding 福建,宁德,屏南:101230309:pingnan 福建,莆田,莆田:101230401:putian 福建,莆田,仙游:101230402:xianyou 福建,莆田,秀屿港:101230403:xiuyugang 福建,莆田,涵江:101230404:hanjiang 福建,莆田,秀屿:101230405:xiuyu 福建,莆田,荔城:101230406:licheng 福建,莆田,城厢:101230407:chengxiang 福建,泉州,泉州:101230501:quanzhou 福建,泉州,安溪:101230502:anxi 福建,泉州,永春:101230504:yongchun 福建,泉州,德化:101230505:dehua 福建,泉州,南安:101230506:nanan 福建,泉州,崇武:101230507:chongwu 福建,泉州,惠安:101230508:huian 福建,泉州,晋江:101230509:jinjiang 福建,泉州,石狮:101230510:shishi 福建,漳州,漳州:101230601:zhangzhou 福建,漳州,长泰:101230602:changtai 福建,漳州,南靖:101230603:nanjing 福建,漳州,平和:101230604:pinghe 福建,漳州,龙海:101230605:longhai 福建,漳州,漳浦:101230606:zhangpu 福建,漳州,诏安:101230607:zhaoan 福建,漳州,东山:101230608:dongshan 福建,漳州,云霄:101230609:yunxiao 福建,漳州,华安:101230610:huaan 福建,龙岩,龙岩:101230701:longyan 福建,龙岩,长汀:101230702:changting 福建,龙岩,连城:101230703:liancheng 福建,龙岩,武平:101230704:wuping 福建,龙岩,上杭:101230705:shanghang 福建,龙岩,永定:101230706:yongding 福建,龙岩,漳平:101230707:zhangping 福建,三明,三明:101230801:sanming 福建,三明,宁化:101230802:ninghua 福建,三明,清流:101230803:qingliu 福建,三明,泰宁:101230804:taining 福建,三明,将乐:101230805:jiangle 福建,三明,建宁:101230806:jianning 福建,三明,明溪:101230807:mingxi 福建,三明,沙县:101230808:shaxian 福建,三明,尤溪:101230809:youxi 福建,三明,永安:101230810:yongan 福建,三明,大田:101230811:datian 福建,南平,南平:101230901:nanping 福建,南平,顺昌:101230902:shunchang 福建,南平,光泽:101230903:guangze 福建,南平,邵武:101230904:shaowu 福建,南平,武夷山:101230905:wuyishan 福建,南平,浦城:101230906:pucheng 福建,南平,建阳:101230907:jianyang 福建,南平,松溪:101230908:songxi 福建,南平,政和:101230909:zhenghe 福建,南平,建瓯:101230910:jianou 江西,南昌,南昌:101240101:nanchang 江西,南昌,新建:101240102:xinjian 江西,南昌,南昌县:101240103:nanchangxian 江西,南昌,安义:101240104:anyi 江西,南昌,进贤:101240105:jinxian 江西,九江,九江:101240201:jiujiang 江西,九江,瑞昌:101240202:ruichang 江西,九江,庐山:101240203:lushan 江西,九江,武宁:101240204:wuning 江西,九江,德安:101240205:dean 江西,九江,永修:101240206:yongxiu 江西,九江,湖口:101240207:hukou 江西,九江,彭泽:101240208:pengze 江西,九江,星子:101240209:xingzi 江西,九江,都昌:101240210:duchang 江西,九江,修水:101240212:xiushui 江西,上饶,上饶:101240301:shangrao 江西,上饶,鄱阳:101240302:poyang 江西,上饶,婺源:101240303:wuyuan 江西,上饶,余干:101240305:yugan 江西,上饶,万年:101240306:wannian 江西,上饶,德兴:101240307:dexing 江西,上饶,上饶县:101240308:shangraoxian 江西,上饶,弋阳:101240309:yiyang 江西,上饶,横峰:101240310:hengfeng 江西,上饶,铅山:101240311:yanshan 江西,上饶,玉山:101240312:yushan 江西,上饶,广丰:101240313:guangfeng 江西,抚州,抚州:101240401:fuzhou 江西,抚州,广昌:101240402:guangchang 江西,抚州,乐安:101240403:anle 江西,抚州,崇仁:101240404:chongren 江西,抚州,金溪:101240405:jinxi 江西,抚州,资溪:101240406:zixi 江西,抚州,宜黄:101240407:yihuang 江西,抚州,南城:101240408:nancheng 江西,抚州,南丰:101240409:nanfeng 江西,抚州,黎川:101240410:lichuan 江西,抚州,东乡:101240411:dongxiang 江西,宜春,宜春:101240501:yichun 江西,宜春,铜鼓:101240502:tonggu 江西,宜春,宜丰:101240503:yifeng 江西,宜春,万载:101240504:wanzai 江西,宜春,上高:101240505:shanggao 江西,宜春,靖安:101240506:jingan 江西,宜春,奉新:101240507:fengxin 江西,宜春,高安:101240508:gaoan 江西,宜春,樟树:101240509:zhangshu 江西,宜春,丰城:101240510:fengcheng 江西,吉安,吉安:101240601:jian 江西,吉安,吉安县:101240602:jianxian 江西,吉安,吉水:101240603:jishui 江西,吉安,新干:101240604:xingan 江西,吉安,峡江:101240605:xiajiang 江西,吉安,永丰:101240606:yongfeng 江西,吉安,永新:101240607:yongxin 江西,吉安,井冈山:101240608:jinggangshan 江西,吉安,万安:101240609:wanan 江西,吉安,遂川:101240610:suichuan 江西,吉安,泰和:101240611:taihe 江西,吉安,安福:101240612:anfu 江西,吉安,宁冈:101240613:ninggang 江西,赣州,赣州:101240701:ganzhou 江西,赣州,崇义:101240702:chongyi 江西,赣州,上犹:101240703:shangyou 江西,赣州,南康:101240704:nankang 江西,赣州,大余:101240705:dayu 江西,赣州,信丰:101240706:xinfeng 江西,赣州,宁都:101240707:ningdu 江西,赣州,石城:101240708:shicheng 江西,赣州,瑞金:101240709:ruijin 江西,赣州,于都:101240710:yudu 江西,赣州,会昌:101240711:huichang 江西,赣州,安远:101240712:anyuan 江西,赣州,全南:101240713:quannan 江西,赣州,龙南:101240714:longnan 江西,赣州,定南:101240715:dingnan 江西,赣州,寻乌:101240716:xunwu 江西,赣州,兴国:101240717:xingguo 江西,赣州,赣县:101240718:ganxian 江西,景德镇,景德镇:101240801:jingdezhen 江西,景德镇,乐平:101240802:leping 江西,景德镇,浮梁:101240803:fuliang 江西,萍乡,萍乡:101240901:pingxiang 江西,萍乡,莲花:101240902:lianhua 江西,萍乡,上栗:101240903:shangli 江西,萍乡,安源:101240904:anyuan 江西,萍乡,芦溪:101240905:luxi 江西,萍乡,湘东:101240906:xiangdong 江西,新余,新余:101241001:xinyu 江西,新余,分宜:101241002:fenyi 江西,鹰潭,鹰潭:101241101:yingtan 江西,鹰潭,余江:101241102:yujiang 江西,鹰潭,贵溪:101241103:guixi 湖南,长沙,长沙:101250101:changsha 湖南,长沙,宁乡:101250102:ningxiang 湖南,长沙,浏阳:101250103:liuyang 湖南,长沙,马坡岭:101250104:mapoling 湖南,长沙,望城:101250105:wangcheng 湖南,湘潭,湘潭:101250201:xiangtan 湖南,湘潭,韶山:101250202:shaoshan 湖南,湘潭,湘乡:101250203:xiangxiang 湖南,株洲,株洲:101250301:zhuzhou 湖南,株洲,攸县:101250302:youxian 湖南,株洲,醴陵:101250303:liling 湖南,株洲,茶陵:101250305:chaling 湖南,株洲,炎陵:101250306:yanling 湖南,衡阳,衡阳:101250401:hengyang 湖南,衡阳,衡山:101250402:hengshan 湖南,衡阳,衡东:101250403:hengdong 湖南,衡阳,祁东:101250404:qidong 湖南,衡阳,衡阳县:101250405:hengyangxian 湖南,衡阳,常宁:101250406:changning 湖南,衡阳,衡南:101250407:hengnan 湖南,衡阳,耒阳:101250408:leiyang 湖南,衡阳,南岳:101250409:nanyue 湖南,郴州,郴州:101250501:chenzhou 湖南,郴州,桂阳:101250502:guiyang 湖南,郴州,嘉禾:101250503:jiahe 湖南,郴州,宜章:101250504:yizhang 湖南,郴州,临武:101250505:linwu 湖南,郴州,资兴:101250507:zixing 湖南,郴州,汝城:101250508:rucheng 湖南,郴州,安仁:101250509:anren 湖南,郴州,永兴:101250510:yongxing 湖南,郴州,桂东:101250511:guidong 湖南,郴州,苏仙:101250512:suxian 湖南,常德,常德:101250601:changde 湖南,常德,安乡:101250602:anxiang 湖南,常德,桃源:101250603:taoyuan 湖南,常德,汉寿:101250604:hanshou 湖南,常德,澧县:101250605:lixian 湖南,常德,临澧:101250606:linli 湖南,常德,石门:101250607:shimen 湖南,常德,津市:101250608:jinshi 湖南,益阳,益阳:101250700:yiyang 湖南,益阳,赫山区:101250701:heshanqu 湖南,益阳,南县:101250702:nanxian 湖南,益阳,桃江:101250703:taojiang 湖南,益阳,安化:101250704:anhua 湖南,益阳,沅江:101250705:yuanjiang 湖南,娄底,娄底:101250801:loudi 湖南,娄底,双峰:101250802:shuangfeng 湖南,娄底,冷水江:101250803:lengshuijiang 湖南,娄底,新化:101250805:xinhua 湖南,娄底,涟源:101250806:lianyuan 湖南,邵阳,邵阳:101250901:shaoyang 湖南,邵阳,隆回:101250902:longhui 湖南,邵阳,洞口:101250903:dongkou 湖南,邵阳,新邵:101250904:xinshao 湖南,邵阳,邵东:101250905:shaodong 湖南,邵阳,绥宁:101250906:suining 湖南,邵阳,新宁:101250907:xinning 湖南,邵阳,武冈:101250908:wugang 湖南,邵阳,城步:101250909:chengbu 湖南,邵阳,邵阳县:101250910:shaoyangxian 湖南,岳阳,岳阳:101251001:yueyang 湖南,岳阳,华容:101251002:huarong 湖南,岳阳,湘阴:101251003:xiangyin 湖南,岳阳,汨罗:101251004:miluo 湖南,岳阳,平江:101251005:pingjiang 湖南,岳阳,临湘:101251006:linxiang 湖南,张家界,张家界:101251101:zhangjiajie 湖南,张家界,桑植:101251102:sangzhi 湖南,张家界,慈利:101251103:cili 湖南,张家界,武陵源:101251104:wulingyuan 湖南,怀化,怀化:101251201:huaihua 湖南,怀化,沅陵:101251203:yuanling 湖南,怀化,辰溪:101251204:chenxi 湖南,怀化,靖州:101251205:jingzhou 湖南,怀化,会同:101251206:huitong 湖南,怀化,通道:101251207:tongdao 湖南,怀化,麻阳:101251208:mayang 湖南,怀化,新晃:101251209:xinhuang 湖南,怀化,芷江:101251210:zhijiang 湖南,怀化,溆浦:101251211:xupu 湖南,怀化,中方:101251212:zhongfang 湖南,怀化,洪江:101251213:hongjiang 湖南,永州,永州:101251401:yongzhou 湖南,永州,祁阳:101251402:qiyang 湖南,永州,东安:101251403:dongan 湖南,永州,双牌:101251404:shuangpai 湖南,永州,道县:101251405:daoxian 湖南,永州,宁远:101251406:ningyuan 湖南,永州,江永:101251407:jiangyong 湖南,永州,蓝山:101251408:lanshan 湖南,永州,新田:101251409:xintian 湖南,永州,江华:101251410:jianghua 湖南,永州,冷水滩:101251411:lengshuitan 湖南,湘西,吉首:101251501:jishou 湖南,湘西,保靖:101251502:baojing 湖南,湘西,永顺:101251503:yongshun 湖南,湘西,古丈:101251504:guzhang 湖南,湘西,凤凰:101251505:fenghuang 湖南,湘西,泸溪:101251506:luxi 湖南,湘西,龙山:101251507:longshan 湖南,湘西,花垣:101251508:huayuan 贵州,贵阳,贵阳:101260101:guiyang 贵州,贵阳,白云:101260102:baiyun 贵州,贵阳,花溪:101260103:huaxi 贵州,贵阳,乌当:101260104:wudang 贵州,贵阳,息烽:101260105:xifeng 贵州,贵阳,开阳:101260106:kaiyang 贵州,贵阳,修文:101260107:xiuwen 贵州,贵阳,清镇:101260108:qingzhen 贵州,贵阳,小河:101260109:xiaohe 贵州,贵阳,云岩:101260110:yunyan 贵州,贵阳,南明:101260111:nanming 贵州,遵义,遵义:101260201:zunyi 贵州,遵义,遵义县:101260202:zunyixian 贵州,遵义,仁怀:101260203:renhuai 贵州,遵义,绥阳:101260204:suiyang 贵州,遵义,湄潭:101260205:meitan 贵州,遵义,凤冈:101260206:fenggang 贵州,遵义,桐梓:101260207:tongzi 贵州,遵义,赤水:101260208:chishui 贵州,遵义,习水:101260209:xishui 贵州,遵义,道真:101260210:daozhen 贵州,遵义,正安:101260211:zhengan 贵州,遵义,务川:101260212:wuchuan 贵州,遵义,余庆:101260213:yuqing 贵州,遵义,汇川:101260214:huichuan 贵州,遵义,红花岗:101260215:honghuagang 贵州,安顺,安顺:101260301:anshun 贵州,安顺,普定:101260302:puding 贵州,安顺,镇宁:101260303:zhenning 贵州,安顺,平坝:101260304:pingba 贵州,安顺,紫云:101260305:ziyun 贵州,安顺,关岭:101260306:guanling 贵州,黔南,都匀:101260401:duyun 贵州,黔南,贵定:101260402:guiding 贵州,黔南,瓮安:101260403:wengan 贵州,黔南,长顺:101260404:changshun 贵州,黔南,福泉:101260405:fuquan 贵州,黔南,惠水:101260406:huishui 贵州,黔南,龙里:101260407:longli 贵州,黔南,罗甸:101260408:luodian 贵州,黔南,平塘:101260409:pingtang 贵州,黔南,独山:101260410:dushan 贵州,黔南,三都:101260411:sandu 贵州,黔南,荔波:101260412:libo 贵州,黔东南,凯里:101260501:kaili 贵州,黔东南,岑巩:101260502:cengong 贵州,黔东南,施秉:101260503:shibing 贵州,黔东南,镇远:101260504:zhenyuan 贵州,黔东南,黄平:101260505:huangping 贵州,黔东南,麻江:101260507:majiang 贵州,黔东南,丹寨:101260508:danzhai 贵州,黔东南,三穗:101260509:sansui 贵州,黔东南,台江:101260510:taijiang 贵州,黔东南,剑河:101260511:jianhe 贵州,黔东南,雷山:101260512:leishan 贵州,黔东南,黎平:101260513:liping 贵州,黔东南,天柱:101260514:tianzhu 贵州,黔东南,锦屏:101260515:jinping 贵州,黔东南,榕江:101260516:rongjiang 贵州,黔东南,从江:101260517:congjiang 贵州,铜仁,铜仁:101260601:tongren 贵州,铜仁,江口:101260602:jiangkou 贵州,铜仁,玉屏:101260603:yuping 贵州,铜仁,万山:101260604:wanshan 贵州,铜仁,思南:101260605:sinan 贵州,铜仁,印江:101260607:yinjiang 贵州,铜仁,石阡:101260608:shiqian 贵州,铜仁,沿河:101260609:yanhe 贵州,铜仁,德江:101260610:dejiang 贵州,铜仁,松桃:101260611:songtao 贵州,毕节,毕节:101260701:bijie 贵州,毕节,赫章:101260702:hezhang 贵州,毕节,金沙:101260703:jinsha 贵州,毕节,威宁:101260704:weining 贵州,毕节,大方:101260705:dafang 贵州,毕节,纳雍:101260706:nayong 贵州,毕节,织金:101260707:zhijin 贵州,毕节,黔西:101260708:qianxi 贵州,六盘水,水城:101260801:shuicheng 贵州,六盘水,六枝:101260802:liuzhi 贵州,六盘水,盘县:101260804:panxian 贵州,黔西南,兴义:101260901:xingyi 贵州,黔西南,晴隆:101260902:qinglong 贵州,黔西南,兴仁:101260903:xingren 贵州,黔西南,贞丰:101260904:zhenfeng 贵州,黔西南,望谟:101260905:wangmo 贵州,黔西南,安龙:101260907:anlong 贵州,黔西南,册亨:101260908:ceheng 贵州,黔西南,普安:101260909:puan 四川,成都,成都:101270101:chengdu 四川,成都,龙泉驿:101270102:longquanyi 四川,成都,新都:101270103:xindu 四川,成都,温江:101270104:wenjiang 四川,成都,金堂:101270105:jintang 四川,成都,双流:101270106:shuangliu 四川,成都,郫县:101270107:pixian 四川,成都,大邑:101270108:dayi 四川,成都,蒲江:101270109:pujiang 四川,成都,新津:101270110:xinjin 四川,成都,都江堰:101270111:dujiangyan 四川,成都,彭州:101270112:pengzhou 四川,成都,邛崃:101270113:qionglai 四川,成都,崇州:101270114:chongzhou 四川,攀枝花,攀枝花:101270201:panzhihua 四川,攀枝花,仁和:101270202:renhe 四川,攀枝花,米易:101270203:miyi 四川,攀枝花,盐边:101270204:yanbian 四川,自贡,自贡:101270301:zigong 四川,自贡,富顺:101270302:fushun 四川,自贡,荣县:101270303:rongxian 四川,绵阳,绵阳:101270401:mianyang 四川,绵阳,三台:101270402:santai 四川,绵阳,盐亭:101270403:yanting 四川,绵阳,安县:101270404:anxian 四川,绵阳,梓潼:101270405:zitong 四川,绵阳,北川:101270406:beichuan 四川,绵阳,平武:101270407:pingwu 四川,绵阳,江油:101270408:jiangyou 四川,南充,南充:101270501:nanchong 四川,南充,南部:101270502:nanbu 四川,南充,营山:101270503:yingshan 四川,南充,蓬安:101270504:pengan 四川,南充,仪陇:101270505:yilong 四川,南充,西充:101270506:xichong 四川,南充,阆中:101270507:langzhong 四川,达州,达州:101270601:dazhou 四川,达州,宣汉:101270602:xuanhan 四川,达州,开江:101270603:kaijiang 四川,达州,大竹:101270604:dazhu 四川,达州,渠县:101270605:quxian 四川,达州,万源:101270606:wanyuan 四川,达州,通川:101270607:tongchuan 四川,达州,达县:101270608:daxian 四川,遂宁,遂宁:101270701:suining 四川,遂宁,蓬溪:101270702:pengxi 四川,遂宁,射洪:101270703:shehong 四川,广安,广安:101270801:guangan 四川,广安,岳池:101270802:yuechi 四川,广安,武胜:101270803:wusheng 四川,广安,邻水:101270804:linshui 四川,广安,华蓥:101270805:huaying 四川,巴中,巴中:101270901:bazhong 四川,巴中,通江:101270902:tongjiang 四川,巴中,南江:101270903:nanjiang 四川,巴中,平昌:101270904:pingchang 四川,泸州,泸州:101271001:luzhou 四川,泸州,泸县:101271003:luxian 四川,泸州,合江:101271004:hejiang 四川,泸州,叙永:101271005:xuyong 四川,泸州,古蔺:101271006:gulin 四川,泸州,纳溪:101271007:naxi 四川,宜宾,宜宾:101271101:yibin 四川,宜宾,宜宾县:101271103:yibinxian 四川,宜宾,南溪:101271104:nanxi 四川,宜宾,江安:101271105:jiangan 四川,宜宾,长宁:101271106:changning 四川,宜宾,高县:101271107:gaoxian 四川,宜宾,珙县:101271108:gongxian 四川,宜宾,筠连:101271109:junlian 四川,宜宾,兴文:101271110:xingwen 四川,宜宾,屏山:101271111:pingshan 四川,内江,内江:101271201:neijiang 四川,内江,东兴:101271202:dongxing 四川,内江,威远:101271203:weiyuan 四川,内江,资中:101271204:zizhong 四川,内江,隆昌:101271205:longchang 四川,资阳,资阳:101271301:ziyang 四川,资阳,安岳:101271302:anyue 四川,资阳,乐至:101271303:lezhi 四川,资阳,简阳:101271304:jianyang 四川,乐山,乐山:101271401:leshan 四川,乐山,犍为:101271402:qianwei 四川,乐山,井研:101271403:jingyan 四川,乐山,夹江:101271404:jiajiang 四川,乐山,沐川:101271405:muchuan 四川,乐山,峨边:101271406:ebian 四川,乐山,马边:101271407:mabian 四川,乐山,峨眉:101271408:emei 四川,乐山,峨眉山:101271409:emeishan 四川,眉山,眉山:101271501:meishan 四川,眉山,仁寿:101271502:renshou 四川,眉山,彭山:101271503:pengshan 四川,眉山,洪雅:101271504:hongya 四川,眉山,丹棱:101271505:danleng 四川,眉山,青神:101271506:qingshen 四川,凉山,凉山:101271601:liangshan 四川,凉山,木里:101271603:muli 四川,凉山,盐源:101271604:yanyuan 四川,凉山,德昌:101271605:dechang 四川,凉山,会理:101271606:huili 四川,凉山,会东:101271607:huidong 四川,凉山,宁南:101271608:ningnan 四川,凉山,普格:101271609:puge 四川,凉山,西昌:101271610:xichang 四川,凉山,金阳:101271611:jinyang 四川,凉山,昭觉:101271612:zhaojue 四川,凉山,喜德:101271613:xide 四川,凉山,冕宁:101271614:mianning 四川,凉山,越西:101271615:yuexi 四川,凉山,甘洛:101271616:ganluo 四川,凉山,雷波:101271617:leibo 四川,凉山,美姑:101271618:meigu 四川,凉山,布拖:101271619:butuo 四川,雅安,雅安:101271701:yaan:ya'an 四川,雅安,名山:101271702:mingshan 四川,雅安,荥经:101271703:yingjing 四川,雅安,汉源:101271704:hanyuan 四川,雅安,石棉:101271705:shimian 四川,雅安,天全:101271706:tianquan 四川,雅安,芦山:101271707:lushan 四川,雅安,宝兴:101271708:baoxing 四川,甘孜,甘孜:101271801:ganzi 四川,甘孜,康定:101271802:kangding 四川,甘孜,泸定:101271803:luding 四川,甘孜,丹巴:101271804:danba 四川,甘孜,九龙:101271805:jiulong 四川,甘孜,雅江:101271806:yajiang 四川,甘孜,道孚:101271807:daofu 四川,甘孜,炉霍:101271808:luhuo 四川,甘孜,新龙:101271809:xinlong 四川,甘孜,德格:101271810:dege 四川,甘孜,白玉:101271811:baiyu 四川,甘孜,石渠:101271812:shiqu 四川,甘孜,色达:101271813:seda 四川,甘孜,理塘:101271814:litang 四川,甘孜,巴塘:101271815:batang 四川,甘孜,乡城:101271816:xiangcheng 四川,甘孜,稻城:101271817:daocheng 四川,甘孜,得荣:101271818:derong 四川,阿坝,阿坝:101271901:aba 四川,阿坝,汶川:101271902:wenchuan 四川,阿坝,理县:101271903:lixian 四川,阿坝,茂县:101271904:maoxian 四川,阿坝,松潘:101271905:songfan 四川,阿坝,九寨沟:101271906:jiuzhaigou 四川,阿坝,金川:101271907:jinchuan 四川,阿坝,小金:101271908:xiaojin 四川,阿坝,黑水:101271909:heishui 四川,阿坝,马尔康:101271910:maerkang 四川,阿坝,壤塘:101271911:rangtang 四川,阿坝,若尔盖:101271912:nuoergai 四川,阿坝,红原:101271913:hongyuan 四川,德阳,德阳:101272001:deyang 四川,德阳,中江:101272002:zhongjiang 四川,德阳,广汉:101272003:guanghan 四川,德阳,什邡:101272004:shifang 四川,德阳,绵竹:101272005:mianzhu 四川,德阳,罗江:101272006:luojiang 四川,广元,广元:101272101:guangyuan 四川,广元,旺苍:101272102:wangcang 四川,广元,青川:101272103:qingchuan 四川,广元,剑阁:101272104:jiange 四川,广元,苍溪:101272105:cangxi 广东,广州,广州:101280101:guangzhou 广东,广州,番禺:101280102:panyu 广东,广州,从化:101280103:conghua 广东,广州,增城:101280104:zengcheng 广东,广州,花都:101280105:huadu 广东,韶关,韶关:101280201:shaoguan 广东,韶关,乳源:101280202:ruyuan 广东,韶关,始兴:101280203:shixing 广东,韶关,翁源:101280204:wengyuan 广东,韶关,乐昌:101280205:lechang 广东,韶关,仁化:101280206:renhua 广东,韶关,南雄:101280207:nanxiong 广东,韶关,新丰:101280208:xinfeng 广东,韶关,曲江:101280209:qujiang 广东,韶关,浈江:101280210:zhenjiang 广东,韶关,武江:101280211:wujiang 广东,惠州,惠州:101280301:huizhou 广东,惠州,博罗:101280302:boluo 广东,惠州,惠阳:101280303:huiyang 广东,惠州,惠东:101280304:huidong 广东,惠州,龙门:101280305:longmen 广东,梅州,梅州:101280401:meizhou 广东,梅州,兴宁:101280402:xingning 广东,梅州,蕉岭:101280403:jiaoling 广东,梅州,大埔:101280404:dabu 广东,梅州,丰顺:101280406:fengshun 广东,梅州,平远:101280407:pingyuan 广东,梅州,五华:101280408:wuhua 广东,梅州,梅县:101280409:meixian 广东,汕头,汕头:101280501:shantou 广东,汕头,潮阳:101280502:chaoyang 广东,汕头,澄海:101280503:chenghai 广东,汕头,南澳:101280504:nanao 广东,深圳,深圳:101280601:shenzhen 广东,珠海,珠海:101280701:zhuhai 广东,珠海,斗门:101280702:doumen 广东,珠海,金湾:101280703:jinwan 广东,佛山,佛山:101280800:foshan 广东,佛山,顺德:101280801:shunde 广东,佛山,三水:101280802:sanshui 广东,佛山,南海:101280803:nanhai 广东,佛山,高明:101280804:gaoming 广东,肇庆,肇庆:101280901:zhaoqing 广东,肇庆,广宁:101280902:guangning 广东,肇庆,四会:101280903:sihui 广东,肇庆,德庆:101280905:deqing 广东,肇庆,怀集:101280906:huaiji 广东,肇庆,封开:101280907:fengkai 广东,肇庆,高要:101280908:gaoyao 广东,湛江,湛江:101281001:zhanjiang 广东,湛江,吴川:101281002:wuchuan 广东,湛江,雷州:101281003:leizhou 广东,湛江,徐闻:101281004:xuwen 广东,湛江,廉江:101281005:lianjiang 广东,湛江,赤坎:101281006:chikan 广东,湛江,遂溪:101281007:suixi 广东,湛江,坡头:101281008:potou 广东,湛江,霞山:101281009:xiashan 广东,湛江,麻章:101281010:mazhang 广东,江门,江门:101281101:jiangmen 广东,江门,开平:101281103:kaiping 广东,江门,新会:101281104:xinhui 广东,江门,恩平:101281105:enping 广东,江门,台山:101281106:taishan 广东,江门,蓬江:101281107:pengjiang 广东,江门,鹤山:101281108:heshan 广东,江门,江海:101281109:jianghai 广东,河源,河源:101281201:heyuan 广东,河源,紫金:101281202:zijin 广东,河源,连平:101281203:lianping 广东,河源,和平:101281204:heping 广东,河源,龙川:101281205:longchuan 广东,河源,东源:101281206:dongyuan 广东,清远,清远:101281301:qingyuan 广东,清远,连南:101281302:liannan 广东,清远,连州:101281303:lianzhou 广东,清远,连山:101281304:lianshan 广东,清远,阳山:101281305:yangshan 广东,清远,佛冈:101281306:fogang 广东,清远,英德:101281307:yingde 广东,清远,清新:101281308:qingxin 广东,云浮,云浮:101281401:yunfu 广东,云浮,罗定:101281402:luoding 广东,云浮,新兴:101281403:xinxing 广东,云浮,郁南:101281404:yunan 广东,云浮,云安:101281406:yunan 广东,潮州,潮州:101281501:chaozhou 广东,潮州,饶平:101281502:raoping 广东,潮州,潮安:101281503:chaoan 广东,东莞,东莞:101281601:dongguan 广东,中山,中山:101281701:zhongshan 广东,阳江,阳江:101281801:yangjiang 广东,阳江,阳春:101281802:yangchun 广东,阳江,阳东:101281803:yangdong 广东,阳江,阳西:101281804:yangxi 广东,揭阳,揭阳:101281901:jieyang 广东,揭阳,揭西:101281902:jiexi 广东,揭阳,普宁:101281903:puning 广东,揭阳,惠来:101281904:huilai 广东,揭阳,揭东:101281905:jiedong 广东,茂名,茂名:101282001:maoming 广东,茂名,高州:101282002:gaozhou 广东,茂名,化州:101282003:huazhou 广东,茂名,电白:101282004:dianbai 广东,茂名,信宜:101282005:xinyi 广东,茂名,茂港:101282006:maogang 广东,汕尾,汕尾:101282101:shanwei 广东,汕尾,海丰:101282102:haifeng 广东,汕尾,陆丰:101282103:lufeng 广东,汕尾,陆河:101282104:luhe 云南,昆明,昆明:101290101:kunming 云南,昆明,东川:101290103:dongchuan 云南,昆明,寻甸:101290104:xundian 云南,昆明,晋宁:101290105:jinning 云南,昆明,宜良:101290106:yiliang 云南,昆明,石林:101290107:shilin 云南,昆明,呈贡:101290108:chenggong 云南,昆明,富民:101290109:fumin 云南,昆明,嵩明:101290110:songming 云南,昆明,禄劝:101290111:luquan 云南,昆明,安宁:101290112:anning 云南,昆明,太华山:101290113:taihuashan 云南,大理,大理:101290201:dali 云南,大理,云龙:101290202:yunlong 云南,大理,漾濞:101290203:yangbi 云南,大理,永平:101290204:yongping 云南,大理,宾川:101290205:binchuan 云南,大理,弥渡:101290206:midu 云南,大理,祥云:101290207:xiangyun 云南,大理,巍山:101290208:weishan 云南,大理,剑川:101290209:jianchuan 云南,大理,洱源:101290210:eryuan 云南,大理,鹤庆:101290211:heqing 云南,大理,南涧:101290212:nanjian 云南,红河,红河:101290301:honghe 云南,红河,石屏:101290302:shiping 云南,红河,建水:101290303:jianshui 云南,红河,弥勒:101290304:mile 云南,红河,元阳:101290305:yuanyang 云南,红河,绿春:101290306:lvchun 云南,红河,开远:101290307:kaiyuan 云南,红河,个旧:101290308:gejiu 云南,红河,蒙自:101290309:mengzi 云南,红河,屏边:101290310:pingbian 云南,红河,泸西:101290311:luxi 云南,红河,金平:101290312:jinping 云南,红河,河口:101290313:hekou 云南,曲靖,曲靖:101290401:qujing 云南,曲靖,沾益:101290402:zhanyi 云南,曲靖,陆良:101290403:luliang 云南,曲靖,富源:101290404:fuyuan 云南,曲靖,马龙:101290405:malong 云南,曲靖,师宗:101290406:shizong 云南,曲靖,罗平:101290407:luoping 云南,曲靖,会泽:101290408:huize 云南,曲靖,宣威:101290409:xuanwei 云南,保山,保山:101290501:baoshan 云南,保山,龙陵:101290503:longling 云南,保山,施甸:101290504:sidian 云南,保山,昌宁:101290505:changning 云南,保山,腾冲:101290506:tengchong 云南,文山,文山:101290601:wenshan 云南,文山,西畴:101290602:xichou 云南,文山,马关:101290603:maguan 云南,文山,麻栗坡:101290604:malipo 云南,文山,砚山:101290605:yanshan 云南,文山,丘北:101290606:qiubei 云南,文山,广南:101290607:guangnan 云南,文山,富宁:101290608:funing 云南,玉溪,玉溪:101290701:yuxi 云南,玉溪,澄江:101290702:chengjiang 云南,玉溪,江川:101290703:jiangchuan 云南,玉溪,通海:101290704:tonghai 云南,玉溪,华宁:101290705:huaning 云南,玉溪,新平:101290706:xinping 云南,玉溪,易门:101290707:yimen 云南,玉溪,峨山:101290708:eshan 云南,玉溪,元江:101290709:yuanjiang 云南,楚雄,楚雄:101290801:chuxiong 云南,楚雄,大姚:101290802:dayao 云南,楚雄,元谋:101290803:yuanmou 云南,楚雄,姚安:101290804:yaoan 云南,楚雄,牟定:101290805:mouding 云南,楚雄,南华:101290806:nanhua 云南,楚雄,武定:101290807:wuding 云南,楚雄,禄丰:101290808:lufeng 云南,楚雄,双柏:101290809:shuangbai 云南,楚雄,永仁:101290810:yongren 云南,普洱,普洱:101290901:puer 云南,普洱,景谷:101290902:jinggu 云南,普洱,景东:101290903:jingdong 云南,普洱,澜沧:101290904:lancang 云南,普洱,墨江:101290906:mojiang 云南,普洱,江城:101290907:jiangcheng 云南,普洱,孟连:101290908:menglian 云南,普洱,西盟:101290909:ximeng 云南,普洱,镇沅:101290911:zhenyuan 云南,普洱,宁洱:101290912:ninger 云南,昭通,昭通:101291001:zhaotong 云南,昭通,鲁甸:101291002:ludian 云南,昭通,彝良:101291003:yiliang 云南,昭通,镇雄:101291004:zhenxiong 云南,昭通,威信:101291005:weixin 云南,昭通,巧家:101291006:qiaojia 云南,昭通,绥江:101291007:suijiang 云南,昭通,永善:101291008:yongshan 云南,昭通,盐津:101291009:yanjin 云南,昭通,大关:101291010:daguan 云南,昭通,水富:101291011:shuifu 云南,临沧,临沧:101291101:lincang 云南,临沧,沧源:101291102:cangyuan 云南,临沧,耿马:101291103:gengma 云南,临沧,双江:101291104:shuangjiang 云南,临沧,凤庆:101291105:fengqing 云南,临沧,永德:101291106:yongde 云南,临沧,云县:101291107:yunxian 云南,临沧,镇康:101291108:zhenkang 云南,怒江,怒江:101291201:nujiang 云南,怒江,福贡:101291203:fugong 云南,怒江,兰坪:101291204:lanping 云南,怒江,泸水:101291205:lushui 云南,怒江,六库:101291206:liuku 云南,怒江,贡山:101291207:gongshan 云南,迪庆,香格里拉:101291301:xianggelila 云南,迪庆,德钦:101291302:deqin 云南,迪庆,维西:101291303:weixi 云南,迪庆,中甸:101291304:zhongdian 云南,丽江,丽江:101291401:lijiang 云南,丽江,永胜:101291402:yongsheng 云南,丽江,华坪:101291403:huaping 云南,丽江,宁蒗:101291404:ninglang 云南,德宏,德宏:101291501:dehong 云南,德宏,陇川:101291503:longchuan 云南,德宏,盈江:101291504:yingjiang 云南,德宏,瑞丽:101291506:ruili 云南,德宏,梁河:101291507:lianghe 云南,德宏,潞西:101291508:luxi 云南,西双版纳,景洪:101291601:jinghong 云南,西双版纳,勐海:101291603:menghai 云南,西双版纳,勐腊:101291605:mengla 广西,南宁,南宁:101300101:nanning 广西,南宁,邕宁:101300103:yongning 广西,南宁,横县:101300104:hengxian 广西,南宁,隆安:101300105:longan 广西,南宁,马山:101300106:mashan 广西,南宁,上林:101300107:shanglin 广西,南宁,武鸣:101300108:wuming 广西,南宁,宾阳:101300109:binyang 广西,崇左,崇左:101300201:chongzuo 广西,崇左,天等:101300202:tiandeng 广西,崇左,龙州:101300203:longzhou 广西,崇左,凭祥:101300204:pingxiang 广西,崇左,大新:101300205:daxin 广西,崇左,扶绥:101300206:fusui 广西,崇左,宁明:101300207:ningming 广西,柳州,柳州:101300301:liuzhou 广西,柳州,柳城:101300302:liucheng 广西,柳州,鹿寨:101300304:luzhai 广西,柳州,柳江:101300305:liujiang 广西,柳州,融安:101300306:rongan 广西,柳州,融水:101300307:rongshui 广西,柳州,三江:101300308:sanjiang 广西,来宾,来宾:101300401:laibin 广西,来宾,忻城:101300402:xicheng 广西,来宾,金秀:101300403:jinxiu 广西,来宾,象州:101300404:xiangzhou 广西,来宾,武宣:101300405:wuxuan 广西,来宾,合山:101300406:heshan 广西,桂林,桂林:101300501:guilin 广西,桂林,龙胜:101300503:longsheng 广西,桂林,永福:101300504:yongfu 广西,桂林,临桂:101300505:lingui 广西,桂林,兴安:101300506:xingan 广西,桂林,灵川:101300507:lingchuan 广西,桂林,全州:101300508:quanzhou 广西,桂林,灌阳:101300509:guanyang 广西,桂林,阳朔:101300510:yangshuo 广西,桂林,恭城:101300511:gongcheng 广西,桂林,平乐:101300512:pingle 广西,桂林,荔浦:101300513:lipu 广西,桂林,资源:101300514:ziyuan 广西,梧州,梧州:101300601:wuzhou 广西,梧州,藤县:101300602:tengxian 广西,梧州,苍梧:101300604:cangwu 广西,梧州,蒙山:101300605:mengshan 广西,梧州,岑溪:101300606:cenxi 广西,贺州,贺州:101300701:hezhou 广西,贺州,昭平:101300702:zhaoping 广西,贺州,富川:101300703:fuchuan 广西,贺州,钟山:101300704:zhongshan 广西,贵港,贵港:101300801:guigang 广西,贵港,桂平:101300802:guiping 广西,贵港,平南:101300803:pingnan 广西,玉林,玉林:101300901:yulin 广西,玉林,博白:101300902:bobai 广西,玉林,北流:101300903:beiliu 广西,玉林,容县:101300904:rongxian 广西,玉林,陆川:101300905:luchuan 广西,玉林,兴业:101300906:xingye 广西,百色,百色:101301001:baise 广西,百色,那坡:101301002:napo 广西,百色,田阳:101301003:tianyang 广西,百色,德保:101301004:debao 广西,百色,靖西:101301005:jingxi 广西,百色,田东:101301006:tiandong 广西,百色,平果:101301007:pingguo 广西,百色,隆林:101301008:longlin 广西,百色,西林:101301009:xilin 广西,百色,乐业:101301010:leye 广西,百色,凌云:101301011:lingyun 广西,百色,田林:101301012:tianlin 广西,钦州,钦州:101301101:qinzhou 广西,钦州,浦北:101301102:pubei 广西,钦州,灵山:101301103:lingshan 广西,河池,河池:101301201:hechi 广西,河池,天峨:101301202:tiane 广西,河池,东兰:101301203:donglan 广西,河池,巴马:101301204:bama 广西,河池,环江:101301205:huanjiang 广西,河池,罗城:101301206:luocheng 广西,河池,宜州:101301207:yizhou 广西,河池,凤山:101301208:fengshan 广西,河池,南丹:101301209:nandan 广西,河池,都安:101301210:andu 广西,河池,大化:101301211:dahua 广西,北海,北海:101301301:beihai 广西,北海,合浦:101301302:hepu 广西,北海,涠洲岛:101301303:weizhoudao 广西,防城港,防城港:101301401:fangchenggang 广西,防城港,上思:101301402:shangsi 广西,防城港,东兴:101301403:dongxing 广西,防城港,防城:101301405:fangcheng 海南,海口,海口:101310101:haikou 海南,三亚,三亚:101310201:sanya 海南,东方,东方:101310202:dongfang 海南,临高,临高:101310203:lingao 海南,澄迈,澄迈:101310204:chengmai 海南,儋州,儋州:101310205:danzhou 海南,昌江,昌江:101310206:changjiang 海南,白沙,白沙:101310207:baisha 海南,琼中,琼中:101310208:qiongzhong 海南,定安,定安:101310209:dingan 海南,屯昌,屯昌:101310210:tunchang 海南,琼海,琼海:101310211:qionghai 海南,文昌,文昌:101310212:wenchang 海南,保亭,保亭:101310214:baoting 海南,万宁,万宁:101310215:wanning 海南,陵水,陵水:101310216:lingshui 海南,西沙,西沙:101310217:xisha 海南,南沙,南沙:101310220:nansha 海南,乐东,乐东:101310221:ledong 海南,五指山,五指山:101310222:wuzhishan 香港,香港,香港:101320101:hongkong:xianggang 香港,香港,九龙:101320102:jiulong 香港,香港,新界:101320103:xinjie 澳门,澳门,澳门:101330101:macao:aomen 澳门,澳门,氹仔岛:101330102:dangzidao 澳门,澳门,路环岛:101330103:luhuandao 台湾,台北,台北:101340101:taibeixian 台湾,台北,桃园:101340102:taoyuan 台湾,台北,新竹:101340103:xinzhu 台湾,台北,宜兰:101340104:yilan 台湾,高雄,高雄:101340201:gaoxiong 台湾,高雄,嘉义:101340202:jiayi 台湾,高雄,台南:101340203:tainan 台湾,高雄,台东:101340204:taidong 台湾,高雄,屏东:101340205:pingdong 台湾,台中,台中:101340401:taizhong 台湾,台中,苗栗:101340402:miaoli 台湾,台中,彰化:101340403:zhanghua 台湾,台中,南投:101340404:nantou 台湾,台中,花莲:101340405:hualian 台湾,台中,云林:101340406:yunlin youker-assistant-1.0.1/qml/img/en/install.png000644 001750 001750 00000017101 12312451003 021462 0ustar00saucysaucy000000 000000 PNG  IHDRZZOqtEXtSoftwareAdobe ImageReadyqe<IDATxڄнN0K$@([i`'ab !K0,̈ !c>I}6kf{,\g7d`6t;w%ԲJPӑp5H@);^M*_= Qj$ i@e#쇄2U3T+hE$^{X+@|${aYE@ QaQӮ@(N@uJaH$"R$J5!-Jk7#iɃltJCP@ N/`O}gw-R.rj5H~ HRj~}]:Őj~)"߿`P`|f._`OI'4ii7o (+ OvS *Գ= էɷE)xAzTDT6uVRnXM7U K~0I˫4{S8i]X$/Qu)6VusL-m#˯l<ӵ|vR : bB/3*PpY`a0b 0\mꐜHEI # ƝA;:OW&}D`wj& F{>5k 7+c@ YKX7eh{4-t=7j8ƳW$?Z}yn i iyъ@6n9" <=\Y4=JחkQƿLRLcBUMWVY(Ѕ{w-qޅ E!Ю\UI0*AXyx}Lhc0=9߽%z16I֏Zgm=iQW9GPk5=e]a?JduF8RGmKKmgVyT&T~ w4Sxus f( Ox(ɢ'kh .m`G o/Fs} #pڻXr,rȲN|DzꤹI皨-U}+nK7^`\_Vdݤ \JQ,X·Sv+a`ezuVauZ":XzE5r wRn•=j ES j^mfz% OW r/"x59m1|},U+1ZU=;LsmlZwV0D)0Xd!HHB j.AE 1ҭ{g6?y߻sq6}=ystp锦uINH NcG%, bEs`n#17[s1 N..Vr. ^2p)G}mw RW Z$K/vEު.O0U\D{Ak[ Km$|Jŏ #375ڞV`KǏ^ǧ|˧>7l BITeE$ǁּvv62ͪM&b%Ο5}=ĉ_acv5qڷz ] A+ ɤ`Rxu)lZ5Wy_ğׯhHx43!GrV:tLMmMd>O\/mKpTJ DktF9ʫӝs2$Z w;sc4{9RGESdv|Nd-ƦoTy"/JWr54W6oݎ/g;:=)Z5})j4|=1\|w Y7Kqf>u ]0P/Qγ &De4W +reS[ע,>#GRiA^+߉/F"):E8ݡ[S%0sH{D<'M;{ }#cܞ(N[zn8.=:;"L 56p#8᫮k8U*l?61515p͵&R"w==[O~fxbG7[uE?8q'U AE1hI}xMG141ۄԂxr/qX!#fMF'omv. QO:9[Ep hi(]{6"KIur33ZIѴ*mEF''C*sN~e߲D(X:[ ]EJ]X.O1|<܅կ QEs٦v]5}}ߣ1q-NbW<{cj d i K_mt V;X:IOUDI pIiPp뢄tg戽}gcϞp3W |@CSpZ%1Z&wt<]33j֙괣}ȴu|TN}Tʣo v(ֱjQ'FmEɓ첏s{slNv^v+Mx0ӢL# v@fBSubvcuQ&Zi1)Y#usB:'5DF sr(MdŌo[P** L;dU};JKۤidp+DqTq?S8[ nӈ-_f/mQ~ζD=źP%J`6'ߌ/O kGk ʟr<" AQ:>x" sPX3+}.,G]b+K .gp+Qͪ!TP"R4 Zgȗy/Lhj|^}dpfSQ;d{]vWnnDv:Fd9TqοeM3ѤV Ukp磋 Rp-6@E/t/%3i6sGDhVGnɈf .F-29VSB;so`Ft`V\5E(5$_L|trIHK%f!Q?隒i/× Ө| M'Oo[Q;a.NݏE4?Ak-Q0 WuֈvפB+R& rp}[ShcJ#^,FpV=u)OI.+Ƃ[/G~]~9nN2"*Q7g|ZJYc7WTہg7r˟''ҀXظA,[)|V5#$O&؀vn`{ovlEj?bbJʂ9k-*#&;g.AIW _Z~?]/j&d~byW(jrϱpeO g芾 Wsj~ΏmcC  pi[ӕsP7K}՘]!7%uLlnR܀)p{YPUxGϯ-yN3SշqGmcgJ1$EEɬI,!ЫO^-"x"@8rۊu5&䪫0}…VjҶQVBS.yj0.HN^ǟD8=x*EǾ/r:XN 4Mcϡ(|:hb/ۍi8!urʒgǣ3s/\lŚd?'RxiQY[cZhmKzďV%wA7g2p]O_@=[6emkpzWg-Aky}{Һl%0o+gM.i|W@ v+>HN~(lƛklk-%]N&!:kR?bìd+fm#3 ~٣} z<rJJ8QT emsvy!GFg ۀ,\E YD{s lL_#w04f4 j^k9E.f]I_ j!BZ1JQ:,ܜ-|$WQcgI =ڻQ4̏]ɑ,.\ 侔܀g/\UG,W&='%b,9jj*ș&( -gklk(p-{1z5 <,]10-}LkDX +`2@>#m+x7Sc#t43۴pÎF xPctnugǕ|uDp)MdԠ?,<(cOB`3{IV߲֟*zk)%KǧsKJ?=F rD_IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/J&W.jpg000644 001750 001750 00000012173 12312451003 023374 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1 !AQq2B"#$d%5& !1AQaq"B$2#R34Dd ?M9741& VW"&`{4S==ZR 7&G.a&K0ܘ #`J>)>S%-&ڼroi cxL~HE0Mݥ7h# zz%nL]J.L1La0j(.G.|S"}=)JZMyP(&Z\`K)oGLpiJ8&K_Pܙ\b .(r`6P\] (DzmLS|jV3lڃ`?NM8g/"5>;kj=BB:~ДFh@7&+C ؐk:2!-(uՎ_rpAdܶBr{<~Y1 X]n4ȋZxq?SԧKH& 1}*OQtԵeib/႔I_8 `=OAKEJTSV&϶`) 贞5/ mҐX9maBQJT%`g Ep卸Oe62RWC6gG68#KSnZQ%8 siBQe<)7 .! %djkY$]{:|7}xW>KX!I:,Ȯ:J&־QѲ[K8$?R)y%1YcP"Uc}Rsr4NQSۙbKE=g^'aUWb(_`Rk[zØVEhѭ}s0rņܝ/$`I"ۈJf̥K?96 * :THz4zm og%.XlĉM52&,arKPٜ'53w?UU7ڷ*! wo2-,}dۈy㠶+bu=@U2]G"$̭C;Ak\>F}^#Ym3J9g>OQ➓&EVxiuYQIn\VU>EFod:> @:Nt_~V٩_^Wc6mY59kha pӵci;k>.wl^7v7]bd/<9ID~i6Uɢ$vCCҡ1S8=A=BP~y1dQ&ˎ.(D%,V8!No([r\:beoU^U83KsҹE:I98(C5j gW ̃{ WN ̉L1%P&.\S]]*EUƮ ι>ؼlQbnj$QL*@*ŢWzvv33ӯj<.Y6.M6 O0[[2DLj|='V҆!)h4m<ЈHJcHǀhSuV M//DO_:Wmb-r1(W dm+v[yDMi]E&DR2Gk/"rj^hON1o,cZΨXk#.QtVLN5INfLf6LZ{oϧJM {o囖[[ug٬ i+[m*v2!{ QRdGvԳ~9i均{8ڭ is EOrj0#V_"γ.S[6Z,Xu q%#$9;(JWqHS'fj ٣z7UE2S)nU<>]9!q]3\FZ˲wT#%GaTքzU.bKn:z7~̶ȧŞ[ȞNx{<[xG=]Nbcqqq]Oكmnǰ\16յXHS`jEr)n>. A0]ե(/ CrdrQra`4 ɀQAr9vp|41MRmʁG&77ԊS}\LOf?J`JQ2_:߬4iqFriG2'jb䥤WMM!Lo oթȦ "&~wOVd0u5 ɑ˿XiEɆ)7&mE=ҏdO7youker-assistant-1.0.1/qml/img/skin/v_dark.png000644 001750 001750 00000040203 12312451003 021623 0ustar00saucysaucy000000 000000 PNG  IHDRu?hNhtEXtSoftwareAdobe ImageReadyqe<@%IDATxS=kA}wFB@-"B,A %b$LiH +!"RX616O/$3 Ej)q s1ijl~h4H( L&T*X,Dt:DyX DݎSpH8l6gFe2t:t:FAB@4EEZEVvŞLp8d2y {^չ]? Q\)v"8* F#8MnX>V+,Ks @^)e |>RZ FNwijgYHϏ7r_!_;7r9QXF5zRV+gyvWq\e1H$P(D61~?}sa6 GwzI ?AGB&8I9M%Ní:n B[[PK7 e~uMh޽wO&PSf€psX4tQ`0\.GAn%ɐ` rjU xT"~u]'M$7h4DG, @j8CL& BI] A+]6ַN#A^{.Wٕk?8mOgܴV5ш 1k*:à1l6}np(+=NI$SKbfW&;ydpl6rpXj5!omۖl6Cbsa4M65gk/jɇOHalHB2Rb$KIa7$0vtvx*1A 7=`v5F, RKJhQi).$hc.(Zh!DqcEbuf%\;w9;Svd,]]Q BοBeu(2E?Hx7M尀PQeP6qM %IҪXZZZDbL]]\vL;G2DvϕTxWHccZ[[eddD zI)"fgfqVsb1sG恬Y%)̌CYaVs``@;(Ȟ@eVb`e6U`0(sss.@" 2wd08O[Q`yyz)aCh>P\7+ qfq,kZK]5"Sٽ0nq(H{k$m\*xZKYdkVdQ(qJ 5iĥ!4$k^Jp͆I랲iH?Kq{&LX=tcT?~!tڊ"qiiYuTOWWW^ qp2q mP4ńH9/z`1&p `3678 8ߖdj욻=qCUr+%+kOȁc{?%GjBHn^sp`x $j =(,jcA vޮIgLLLPwp~{4Ul,TiR1A MOO)vLO{>R~½Rul;ے_I***"/ [Y5$k`0,i ŢT`1 c~s+2wbBRRJ>bmcy:[f*M?(}r*|oÃ9҂|A^xȒg=tgE|֌QP ?@-7R`(QHWWbDjJBe>XzH6ϻ@1d,sc⚚tLMMVaEQV/U@j/쨧$$oWk:x{O>y!&/QUN| ^c\ ŠS8xAQ>HC~g2vrr2\JQCĩUl:wd{[VU=͘6fv!' ])eb ](2RˇD1E!VT=AC%EjfDZU3-o;ksQoA}>k__;B1V>hfLMdC9].zP{ PjV7Dx njdٺuaP bjl֯_!yΡY|y:%F^K:1 59?w3峚DGa5ۣ(C߃|Dt 7/U4u;Fp|ŋ%KiӦJ @~7iҤ>P9zzz_| J, "A(/d֊RzCs&!P~?6LCΰ<*" $OyD(iXKpU~  4yR?>a ][phѢ(fTիq3p82̗w5 \tx>:r+2cr)CEFsҳw/X72X-!Nd`Q!Cːܔʮ; EE* ܡt1ꐬ\AEl-՚WFݝ"<,<ă@  V`.]o)e DL"͈%Ɛ3fF9kEm0îx{+`gϞU8)xrpMj94ƃ[eyCkj9!lL9GJmT5 |ؙ$bk>w+:q]G?~F=\uj;wlO}q[S{-W!9&( QCfUwFQQ̖&߰aC._V9+H#*(i "Al_w6,#Zi`q[c DC*hzܹ#]wՍ۝\~CJr]NG?3uMoKHm)'ڥWvlޙSCҩnM~4}qouq/y`WQ =/O0/AA:^JqPA|0s,`ph\ _Oc(#G^6CO8N:ԇu~@͟??)1VWƳ,2 A7hط`b{FbA+qH R~qmoRIWRϴwT/wTu~'k纻6ѝ?:'kΙP:9uH3y!]5oe޴ӚwM`{S{}wW}PALY2{cr׍}< a)cUVXuÛ $R;wnm#0P ;תWe@;MPG/! b71$T2_Nȶ;8Nݍ1N(n(,o4Uw 7[ŒrY^A-Nk=K'p2Η[/^;~L8ʈ3LȐ%Û~wvtӧ<θVAsMДtҹ7A:'nK2/CH L WvIHd%s~lDWR]ap.T!G<)OUmC?q0eů|`5XU\=/i"rqI?ާ ɠzF');uȧWUedJoAŅKXGB2)P»Ҽ+ǫ8;켊N|ny5ftWM/?rjw-˟Lݸ,W_olY>t!ǥW~uw縉iezӕ7I=8%]94[6mx|'Uܝ:bRiu5vR@^<&t<;i¹M#$樾TQX8* y(, Tp׽ WmǠHA2R̀#5&䁮{3|0!6 iD3x `"E^XMcLܣ|Y(xp7&͞Ē0 SM( ށU߲'ކucROg HoJEa\$xAUQ+ȏ8UϹɊH) .:b; H ψ]>:IsCK6 T$z$B_vL*ʬH "C!(k !L)FHR> &2aG 1( Sn#aPiiy0ʾ9Z' C~?!5 `&`4p`@a/n3(̈! 6A7Lu ,þ)%],MFù`bt~{`o4?؜Kmؠݏ AmZԸ=O s&7ohTh8Ig0N._MgҼwR3u}-Ip8!SvB.S y:ȧI?{d%D>maG0dF$gpaj?x`2[+@~qDdqWJL[_WO]xdmMI{ a4=ziҋ |JztmiǦǜZ?؊tQ-3}Vq~EZlzz+&UqnKjQqe4 p8uS} ܀!Z7=;GSӈG2܏YyL '1%f0$POa`3H;=N d-̂X@r .,<<#eF!ReLܛdWDԜVF!=>Ѭ<*aG& '㯟bmwtoB">+V uoOZ喳ٴV*@'6„9//\8ܓiL91:PC̪}ۂuɝlPب-{@1߽̈́%i:`3A+L|B7SVdp I1 3 N5<ȶd@KsܿcfFho&]DJ QTXT}3Jy8m/l-k}3/C=ˍ[[-:94tٝg)^pwڼau =uEέ05uOZ~ny5ab^CSlGP$E'9Szc}4+q~ g*;fRx&flrN]8`PվS9e8Y6Cy`- r:Ey>蠽G>&V |{6<ިaͽ(N^>eZni m;H ~ޚvn{IKӎ8<ͻ어kseuzW 88?d8f?'yuIjץ|Y5jQxцp P&S#,( 6Pt:U< -.!b`gqM Hr .vc01!< 9XC-:sXCY8վ3X DCZޝӈG ^C{/{:'Ӎ2pObwN1BsQe O:tƢ%h,ٜ~S& +Yf:%çNξt4yO*4qO7>VVoߺ>Ϳ!e:m iJO2E;܌=/gwώ~"sj8=DDL4 [J&ZV! VG $`k2!bCB@">l-hPx6ص3Ȥ C).۽./0;l]bbv ,q|s5 O r6|:uP ,H4{RE T&6_h޶}5qRE[xȣ?+M9|>}ɜ35;S}nUϼ&݅]҉u@a̙)g,[F3:4:֫ڧ:Mg"!Fq($z;@2U[J ;ڜç-0|XiU2ai}8ų.;E O6Tff8(Cתrmvᖑ0&mp>s!#9E4kQFB_=kA}suY` 'npU@o N׹F O+=9k]pm"=>ݶUSzY#MiYk ˠq!f%b<-Ak% "8/܇C*$4RH#p!VK{.w%rٖwB|w0[V0.{gғ20W]uŪc"*O$2t򫭄Y4u&%uMz@(.3xrݨw'7|v\#W$:Q|:je%tb.,kJ%Z/E>uP;spחP;x(Y=4P#s[t Ɛ6OjB mǯcXc!hh E{%>*qV;1%ukҔ[La'E.m;<@sJXA'H\,3)ʅT+ Z%l%8Nc BPie3@%?Eʮ>Rr Lzz| 7OV.zu%l ɭLA5)MeT;pӖ$:O4j@ }\ C-_~dwH}y=K/԰\x9/2`XH]K[V?d8}u3ZC-F}p'jx/@ȣ!1[zGy AnuPZݦlhvu%}1+#OYǧw##iyH%@{9aY9`(¹p"cgKRG{vbܔ4e䖞J ߰dɒX]-\W:䫧9\+MY끳4d2P) tƞ XÅCo{ͱ)<KpYRCeSx.hG }A8P7v-v }%Å#9]>1> 1D2o‘y lMiJS"lcM)A-GXB0靿IYMiRhЉ{!5 hh"}ФhnJS=uũ|8oY;jtoa̖|e!۶ fM θ;'l eAոg$,nM`%"EƯ;$G53<ݞ&N|xG:to iߙ3}QJ3N -7;=?~}9[L&Lj }_V;-Ѩ4Oz:~տ>;%I'<>}sңܘFMiS_j´fCt:]piua~Ü(3|#D8rн(y EPV9CST7)#W, 6\_[yLqÛ/;E;(@e\à kP_sq\]=Q&~JpEDq]p <.(*`n ,-8>QU:svF=3`A߻ e8qTT0¼t ٳg9tҎO}ؔt` wƄ3ڹXg6:Sq"9}tuR(E< u v1V;n4Y<=4n|_^4~GH;ۺ'P5z'^];z@#Ɋ`g=i' -}GҔioM+Ok4ͿNDqtI/Z{y_#==]f?.:kf:‡MWJO<| Eo# -XLy pAkcRbtVguӎj / suP&kŝkDƞ{Pk֯"%#,vB`;}!t9doݳ:+/f1" ^V1?a HԟHá14C .N) a\t< </F-q\E%4eԢk+%E@kT픏Іh -:  +ޏg@?7hcfzrk5/>A}B#՚Ie | cAI2i1&Gg?hUg* zm֨ǎyjzפ'`_7ήrʟݕyҘq yGӤCJSܲ9駥89˜eӚAhݷ~*7N;) qGڴau kAJ')1IL p%p t@!:\L@ID,P+͢'xCqQpN9gI0iygK. ;oN#Th@߁.@ެu4>RpH7@b7OZq7T"!ڷr ^;/׹w̳H }w+CލIZPU +WUżۓ><-ҦOdI5G~&ؕs@_n)_N@V;p/:=Z}@AȭcχOݳVAvMQhv$ hBEPКg ՅG{\ 8]i׌Ӏ"2ݑg4hZ::Hh<h7 AhU'P! ,ҷU\<ꫯDSB-\S)BM d0\.jJnj= =?L7^>'ҷOyUgUiOo\_秧V?zFwl?{*T''gfuq4 &,_PpCޓkԤᏮ=qڷWi~NIǿt䌳*M'OF(J|,}s2> , >.hGh_4YRT-`0 iMNH<;bWMxy~7PCcdg4N2J)$cMEy?;CM̂ބo- 2cƌ1&\rIs*Cі.B;ˇo$Ұ;c?,0h|UW"Pp %u+&)$T\5B<MÎdvK٫ f>ڳݤ]AImVO%QIBؙN,~7 2 u1rNp}fCcuS"2@Kn4'klau4#_4}7<5mdr0ʤM/}3Y'2wǥޘc Q;n~㯤=&LBǼ7tȫ{7 >xn^[<$lްegiӺ__9z:M6$,,T11PnXN%&Ht 8sM了4 #+ia`ԯa/ 2,)sAVjGlنD!3=ְ-8 @6{n7/R+iȴ_ U{c1(JV zy@b'彑º>Z&_"'N=6YK- ͘$@ǏZ^c4}ne3"KmVg+5:v-_눼.|Uk[R]tѧ9CWTמʩk$'M#  [-Y mHS-_N+ޙn4f\ 8(3_Ӻڲٺ9U'3gZ]7K?H?p}i~v~ Xֿ*M|Y:sǞV3qgǴ{l7U{_v{z/VBcKv܉/,ڒT/mii鏯MOo\S1 ޔ2`CiQG/@i5PV,ckBeA{ԟFױ'X75(>qSn2 qԸ3p++P^}{{BC[@gQGH+;_IצwShI}gGƵk{|@7K MLBV,'=Lt?!߮k.8Nq:bz+\ C /BͿƛ݀L`g`,ޙAJw6c=ymݲ>{z'1knRNN]ʳjomX%`껧}):Nh^!]{PҝJ@3PHc^Yn_jŘibO{(_I;9jD@ԳS`Ϟmozt[wi>:\us_N湨kh>!QȒ;FvSV}\l9zo AdobedF]   1! qBA2Qa$Rb#3D%v8!1AQ"aq24$DB3st%5 ?NQơH'^GQ G٥73Ƿ;WfOl/ȶuUn&=#ē]yNw *}Cp^`c."fpH"zg7Eڣm-UI`5"2)\EЯBD Ģq0D;)'Ut٣Fi.Oq= Jݤ4[2Úh㌑nq3ȝ'g+ LR&=YԷ^\=F3HX{Wp殕w=>No-h."8!7%1NR) Sh D@@,WP(:j((^vwD{Jt@)BNڎ+:9|NO$g^FGd-\"R,7'؜p9[.MvEYʕ6`;3΋UzӬ\<&pA>j.s1 S~u-f쨓ITLx`ڏ$c( Ɨ:i/;Ni} "o-t\|R0&2 L=KQzѵv |r/ F,c0k0"\u #-X}jz]۟n!Elr/Ԛ.. 2`3LjhRpZYꍍIf'/ c:\FN6l !X- -zS;్.h6rנ5*ŎQx˝3aW%Nׅ9Yqnbayp=o׷swW݊:~-vsGc,ۋpLj#] "7 55G/@J;"| LSx%i:jQơH'^GQVz!ޭ%o)W" \a,4 B>,G `Conn[y P~;:ﹾpFu}aAYH-EXMB,Omx%3ZxDP}nL;xOjpscnXn{lzH1[?kg G.dcnEmdC#L>^ ErJ$ 63 GB„:I$Q~.zpWsEvaZ.GǤ6TqNGfRli+,"܈T>7~錵cXT n(A4SO+L8+ahPr'$p*A^YV9׫V(˱{f"9~Ŝ!Y^V :q2GDͨ:-̔m . 2dw.p%@J(^vwD{Jt@)BNڎ+W>)\Lԋx=(DQ!ld"[ݼ:A|ַ&ӯa OWW(W1+ºD9㔮=f`aj([<,Ƚv:F>B&8S>xܻgj^82KʉL֡M7+#>H|nlT%Y)ʧSh_Mz5`tۦ g @`0DjzҥJi2YdlFmJҡ-8ATJ pK݊ͺwV ekVXWs^:Q*Z5Vں["մ<$qF2 _\g#,q&'"wi%KStM=T.qW+Xt%b! Qf1o_$t@Q(L51MʁG'_HS {DV_pyY^r""Oѹ/T |"ZYրd hY3gQC%f1~rrxXk :Q/$d䘘Iq\zU .fԱ:]kI|6=D Jb8R9o^}-6~೽cK}#jI/ĢDJҰdd9X>oPpcZG@Q>\V7jo_i{HV] }q֋FYpyZ_p+}GoP_OYPUQNqiqqAyCLDZ䁏Q"e0 [RJO1el!ZNޅmvJխZ/~#n crH\J"&vH1BlM=Ҏȟ/S ZNZN5Qs<~ESV9 6U8Q̤ر\fR =XCfhUs`6(b`@@ Bb"(RI}"O(4J%rdRLD[H#/ PFT#.oH\mkoqL<خ̓aDD;'pnslfc}h"u$Z^)5yP)=Z{ Kϩ lS͆`n#fLЊۑcy9~͇8VF&eby9FcD=rBmvnpIfDSNDL`m(U_rVkDgQ2K֑ Wv5\$e[qun~8I*Vy$̪4@jM^G[n]5~[;E@nJ+ zDTx`+Vt)?ns<;tJ f$HҦwuێ \ wԘr7ѧÇA!%}ᣊ> ZNru1R ׻QEH'QipE_yy{x>&*az4 )%A4L^L1RK-5G/@J;"| LSx/youker-assistant-1.0.1/qml/func/settings/WidgetTheme.qml000644 001750 001750 00000033253 12312451003 023652 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Rectangle { id: widgetthemepage width: parent.width height: 475 property string actiontitle: qsTr("Theme settings")//GTK主题设置 property string actiontext: qsTr("Choose the theme what you want.")//选择您想设置的主题。 property int themeIndex: 0//序号 property string init_theme: "" property string path: "../../img/en/title/" property int gredview_num: 0 //记录listmodel中的子项数 property int current_index//当前主题的索引 property int default_index//系统默认主题的索引 ListModel { id: themeModel } ListModel { id: choices } //使用云配置后,控件状态根据配置发生相应的变化 Connections { target: sessiondispatcher onTellDownloadCloudConfToQML: { // if(download == "gtk_theme") { // var syslist = sessiondispatcher.get_themes_qt(); // widgetthemepage.init_theme = sessiondispatcher.get_theme_qt(); // for(var i=0; i < syslist.length; i++) { // if(syslist[i] == widgetthemepage.init_theme){ // widgetthemepage.themeIndex = i; // break; // } // } // } if(download == "window_theme") { var windowlist = sessiondispatcher.get_window_themes_qt(); var current_window_theme = sessiondispatcher.get_current_window_theme_qt(); for(var i=0; i < windowlist.length; i++) { if (windowlist[i] == current_window_theme) { widgetthemepage.current_index = i; break; } } windowcombo.selectedIndex = widgetthemepage.current_index; } } } Component.onCompleted: { //window theme var windowlist = sessiondispatcher.get_window_themes_qt(); var current_window_theme = sessiondispatcher.get_current_window_theme_qt(); var default_window_theme = sessiondispatcher.get_default_theme_sring_qt("windowtheme"); //系统默认值为Adwaita,但是目前均无法设置该值 choices.clear(); if(current_window_theme == default_window_theme) { for(var i=0; i < windowlist.length; i++) { choices.append({"text": windowlist[i]}); if (windowlist[i] == current_window_theme) { widgetthemepage.current_index = i; widgetthemepage.default_index = i; } } } else { for(var j=0; j < windowlist.length; j++) { choices.append({"text": windowlist[j]}); if (windowlist[j] == current_window_theme) { widgetthemepage.current_index = j; } else if (windowlist[j] == default_window_theme) { widgetthemepage.default_index = j; } } } windowcombo.selectedIndex = widgetthemepage.current_index; //gtk theme if(sessiondispatcher.get_locale_version() == "zh_CN") { widgetthemepage.path = "../../img/zh_CN/"; } else { widgetthemepage.path = "../../img/en/"; } var syslist = sessiondispatcher.get_themes_qt(); widgetthemepage.init_theme = sessiondispatcher.get_theme_qt(); syslist.unshift(widgetthemepage.init_theme); themeModel.clear(); for(var i=0; i < syslist.length; i++) { if(syslist[i] == "Ambiance" || syslist[i] == "HighContrast" || syslist[i] == "Radiance" || syslist[i] == "ubuntukylin-theme"){ themeModel.append({"icon": "../../img/skin/" + syslist[i] + ".png", "name": syslist[i]}); } //非系统默认的4个gtk主题时使用定义的通用图片 else{ themeModel.append({"icon": widgetthemepage.path + "disappear.png", "name": syslist[i]}); } widgetthemepage.gredview_num += 1; if (i!=0 && syslist[i] == widgetthemepage.init_theme){ widgetthemepage.gredview_num -= 1; themeModel.remove(i); } } } //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Text { text: widgetthemepage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { text: widgetthemepage.actiontext font.pixelSize: 12 color: "#7a7a7a" } } Row { id: settitle anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 105 } Text{ id: themetitle text: qsTr("Window theme settings")//窗口主题设置 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: widgetthemepage.width - themetitle.width - 40 * 2 } } Row { id: themeline anchors{ left: parent.left leftMargin: 60 top: settitle.bottom topMargin: 10 } z: 11 spacing: 285 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Text { id: iconthemelabel width: 130 text: qsTr("Window theme:")//窗口主题: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ComboBox { id: windowcombo model: choices width: 220 onSelectedTextChanged: { sessiondispatcher.set_window_theme_qt(windowcombo.selectedText); } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { var mylist = sessiondispatcher.get_window_themes_qt(); var mytheme = sessiondispatcher.get_default_theme_sring_qt("windowtheme"); //系统默认值为Adwaita,但是目前均无法设置该值 var flag = false; for(var k=0; k < mylist.length; k++) { if(mylist[k] == mytheme) { flag = true; break; } } if(flag) {//系统默认值存在于列表中 sessiondispatcher.set_default_theme_qt("windowtheme"); windowcombo.selectedIndex = widgetthemepage.default_index; } else {//系统默认值不存在于列表中 flag = false; var q; for(q=0; q < mylist.length; q++) { if(mylist[q] == "ubuntukylin-theme") { flag = true; break; } } if(flag) {//ubuntukylin-theme存在于列表中 sessiondispatcher.set_window_theme_qt("ubuntukylin-theme"); windowcombo.selectedIndex = q; } else {//ubuntukylin-theme不存在于列表中 sessiondispatcher.set_window_theme_qt(mylist[0]); windowcombo.selectedIndex = 0; } } } } } Row { id: icontitle anchors{ left: parent.left leftMargin: 40 top: themeline.bottom topMargin: 15 } Text{ id: showtitle text: qsTr("Gtk theme settings")//Gtk主题设置 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: widgetthemepage.width - showtitle.width - 40 * 2 } } Component { id: themegridDelegate Item { id: griditem width: 125; height: 125 Column { anchors.fill: parent spacing: 10 Image { id: seticon source: icon width: 125 height: 125 anchors.horizontalCenter: parent.horizontalCenter } Text { id: btnText height: 20 anchors.horizontalCenter: parent.horizontalCenter text: name font.bold: true font.pixelSize: 12 color: "#383838" } } Image { // id: themeindex anchors{ top: parent.top left: parent.left leftMargin: 15 } source: widgetthemepage.path + "using.png" opacity: griditem.GridView.isCurrentItem? 1:0 rotation: -90 } Image { id: btnImg anchors.fill: parent source: "" } MouseArea { id: signaltest hoverEnabled: true anchors.fill: parent onEntered: btnImg.source = "../../img/toolWidget/menu_hover.png" onPressed: btnImg.source = "../../img/toolWidget/menu_press.png" //要判断松开是鼠标位置 onReleased: btnImg.source = "../../img/toolWidget/menu_hover.png" onExited: btnImg.source = "" onClicked: { griditem.GridView.view.currentIndex = index; widgetthemepage.themeIndex = index; sessiondispatcher.set_theme_qt(name); } } } } Item { //gredview外框架 id:item width: parent.width - 60*2 height: 200 anchors { top: icontitle.bottom topMargin: 10 left: parent.left leftMargin: 85 } Common.ScrollArea { //gredview滚动条 frame:false anchors{ top:parent.top topMargin: 1 left:parent.left leftMargin: 1 } height: parent.height-1 width: parent.width-1 Item { //gredview列表大小 width: item.width - 15 //列表宽度 height: (widgetthemepage.gredview_num/4 + (widgetthemepage.gredview_num % 4 ? 1: 0)) * 150 //自动计算列表行数 GridView { id: themegrid anchors.fill: parent cellWidth: 175; cellHeight: 156 model: themeModel delegate: themegridDelegate focus: true cacheBuffer: 1000 // highlight: Rectangle { color: "lightsteelblue"; radius: 5 }//kobe:设置选中项深色块 } } } } //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar showok: false showrestore: false height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } youker-assistant-1.0.1/qml/img/zh_CN/title/toolkits.png000644 001750 001750 00000007700 12312451003 023410 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<bIDATxb? ]IѣG@A_8{́1pNA|ѪAkz l@0=p@ uI0@1`LB, ̙-ߗ} (߿?3qզ;/=pnnn3f~yΝ;WPB Y b$5 ]/((sQtK? A;T. l`΃@N:}?~TSx#ϟ?@00&b^?֭[ubR3<} 6T9_T888H<~x3-,@Z n@"fV)p_=/ a̰"juPD7]l @&H "$Pi`PDa m߳Ylу0g77팴uiUѷI@ݸy}pRyӊZא:rO!RFHO`a}p3/ F[5a+p:cMz"[aQ_ _Hf۔MX,}X^^=H V(m *BX,˵v85JL0uXlO6~ Pǻb#*!.*1 a2LbRv(+:(Kq#B! sFK;x6FA%=Tģd2gFjdAoMF G)|n圆EWm} Ն4\6~$e,2g,Ȅ6G?)RZYZCAZmkc͏>vN]&^ݝfuse  I&A; Ch2̛00,Dp?X"q_bp84¼Z[H4($d$ MUa |)/tP0qh###8`!8aL,V$Y/Uuu41(FŠea+ZINݒI91428,Yxokmm=+nqsr5[m ٲ|NEi)Yo2#Y{^?TQQq.ƿ<%rGl&r+K\/ ~?JD4s蓚O?b|,W>"%3+ji/@swb!0 rΓ ZwjUj+:PfZTJMMM֜MP&.BG_\!z+++ck*!_cK*}A<,z<7}'NɄAlwZ:% S=H$gtGT-=hq=Gb!/#N8qY낂vQ|{J;({555Fe ÍC1&b`̵%B v  ?M0_PT*U\.}8 )SSS жΎTL#y7,zѹ\ !hiJY@W199YR0v^HQv6n\L&CߪƹƋE}…gqrV1d2"szzFSb!FetQ J?,RI} RQ4Z3ӡy@NXrD7:- *Ǭ^y٠MlcokkkA8 c(B7(ݵb_C!#a^ݘDR|\-uc0 bbccWedd1L@/lm&}|&,o׬2#_5e:q41DƟ=|>ALȜ_giiicY*.}+){j3"jR=!wA:s#hpGXDd&3`2(HHE`N_60z6Psf2 rL:~)8k!-Z&iӦ: R+&&F׀b[BBBTttt>Xb-33$dB P k .F+ߖ mzq!(AF)0`OxxxΝԙ=#u1[}kG7)S? + W$ ۱j C̀vM֬].e>tf[t$@j `sQ\lz(%D3gD%'F}]2H&<Գ,Bq,^˨&c;WYʞwR}\&'s }@a^6 =-u\^9EcXtỤ1^9!l)a3w]qqqW5"w\F ؓ,ͭ1QDhh "/,,TTTAT8o3!J[a𾾾UTT@k ۭ3J-ӛmj0SGCC[aj+rTǣ1y$@m0/(bE{AN'X,ܼwS AdobedF]     1 !Aq"2$QBa#4%6 RCvJ !1A"Qaq2 B$4UWr#T%57RtEGI ?4? xx&d2_X9F(9u m7C!t<ႂ} li4`#x 6 0;!ka 0]CŁ0!7AA˯8`ECl0 0 < [`I'D&VSW}W+n!Nmr\y$ 8ՍCjv̊T֡O=(o27U+P*v,u 2J5:0$$ل o$[l8J360)aBq8F\˘Vea#&RfgrUשMT31.nY:Cws33 \.эC/l#t]6 ]lA>?م ވbt@1D7CoWl޺C|E #;gܼeROUSATSUvć@NP)80.tz^͓mԪa{N)TɝSPFU@Hf9۳hwcMTmB%h@Ab{1͋7qttJя"abuEZ0*RFQlMw[Ǔ'm%) {W;Q(JSuN/&-Y/8P VG|9R+ϣ/Qezw9eq oIo /oW4w8誇;sݳ7XqKv'a/c1W<\8i<`pY)Js* 9b.֊{C9@!S=Ͼc:$j:c,P 21Fg$axKn%[l{Jù448#qe6)A@YS;1C0BP0+h4Md yȶL-#)ϰ#43E&{F-TZe-T-Mrv,)S$OݔoXLBe!|eܮ_C6'v\ƌʲ*"`D&jJ-3B]44 jPdj7IgUf"RzltOV#sJP5EA.[v{!#ΕLsODyz45"Nםj+#O {VY R#sPf5Jr-NHVHoI=UCEyU}G %+<9 ]&' +}d7mnIntI"B-ӷvW[m*ovMJ䛜DIJr(.M9tyYYUtLZtԐ%4)4 sFDӎ3'ࡊ[wۢ<$IۊIwqΕU$5[*H N^Tr-f _cP,lɇ ]3ʕkYoHV9FfJrntf VpN Ϋw1v%ܪ:);J/ c&@2˔ ;/GDct+jkOˎ[O'0$InDM7" 2"m~aqBPe ^"1d6rC&F4 RZӕ5R5 wM+!rV/6$O mzI"HBgU$FDʖTIHa #j%O]LlSi]CXoG7SӼ%# :$miR?tr>mÊ+X"Aj|B M)3:{Wj ruu{Дϛc=stx"PjNEM m?+$$I"zޑ_ɱ4LǎF<qa~HRr`87 -kvIY 5W1Fx5-~*N`-EINbQH!C&-E=`JdtɶUi/ ip$V1ҢVm L*' re̕Bi[n,HJ/ѳc E NMnS ˨s޵Z1"R Lޕ-*"O۱wFL~e{mN)tݙ-\Y)吐91Uk,14C \S;q+ te. kT\|h6_Y}}Қ /*0QQfJn2Q?@)ǣb'%X)moJ:MJJFQLFFFHRRa*U*+~;=fVjQtI?apG"[3j+&=<NNsbٸ ٳ=+7]帷Յ[) ۰B SHx4)UVSE،Z DP2c LjۃZ3Nx|6fW[v[+vۛPokD>24 "FC>JJ4H֊\ּJ6DDy$2xq@+֬;NTРJ˛U\@dWu(1X[N2:{ε_XN=B<@lyb:[k4ٽgZlPBˏ`75/l43yW( lÏx kmV+6]~!|a/Ưwi ߳~_Jכe}b8q~X0Wl44yW(ʸBl7 768/l44yW(?Nc/F-fLα%82% mȜv#gh/c>K~>Zaq ;EZʹ0ex;cF/tayi政t_%/Z.y=(eA_3'O<.chsǙ!~-+oGt|>MƱoͰ߿`z+޷rxELn(c&V0Myt<0MGɁ _ a, 6 ]y.aMi].6x`wDZM1: 95!k̈́j>Lx`}h P`L>dsPrt l:nL(B9t y#f/z?youker-assistant-1.0.1/qml/img/zh_CN/title/cleanup-active.png000644 001750 001750 00000012617 12312451003 024443 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<1IDATxbO,_a,dx?zY)?1,ovں]޾NJ\*ݻo /_~fXt ?3<ڢ,?ǯ_NtKI\P $Œ+}k'ܖ 8 7,~z (η"\UPr֋҂b\2i37z077c~Zū_~u{8|ž?پhƱ [MkSא @;7#Y$|&?1%y^ԷL&b###u-oPտyPֈ|Ƈ'r>}*3q~5 >% ~G_.z( HY>v鉛\16z #:NG^{>xl *o-HYW'wVEM;\/&)@(?՗3Գ| WqϜV(?;|FԷ'򌗗!AzXXlrԝK5_YH1*ja_Yg}H摫O^qކ[ Q-3 Á888=nbbvVf6!O? A$%|n=Wwj.yᆪ 3H>Wԙ{xy~ܻ+䛕++<2&n*/¥ϿG/zеWm9p( ŧ|d?NlLxp}eTVھE~:訠wc3S/w6_)g`@`ΎK\/L;e7!>_ PoF 6 R/0}j_3U>Z j " g羳溣yݬ$3 L(z"J+()#"衂.PaOTDЕnEQ؃EM2𲻘emWwgvvfvvD3L!DR!y!óÆd$S`turF; NݍJ"Z>k*IPX!??1 H7)1)/R=:D4pޥÎxPJg)#TfGx9<Ԛ D8|ah㠄:Cj֔fec:!dSGXS'<ɑGoq4K:*o[-~r}I]`Ո.Ccj- v9#v $n{zrjn1~Sz,pf0dR4pO+iK~[&owJ*uz>ԕ|եyŸݴΪ+04gbgmFSbm5[(>8S( 4_jAC`oK,cqe͋WW^D(D&>TP}zlz_@D\"t؝x*ñ㛲+\x{rcnxsNĐI~U7LW;Ϡ<4h T["*l09Y4ŀf2%nEgLts`ft>bDA'6QD->hsv̅K=w}pr@? pzVXk?fj4pu%+ q Ck+</뺩'KB li뷷Kg3~}8}43C,eKHvN%ȳ(. 9+Bcxx+!Ĭi*֟Vbb0(*Uap82N9H;z'M!G@*5uL 3ko9w䳥3E=a(^vXtx1"vWÚY/=WAYƂ_n_TjE*f(D]9;, 'O-T*7o78Xmr{T*lG̃0Ex]#eE\VW[=0t_mRNlE+߬>vL:%li:|9 _DyZ_E8&0OA*D_ggu?J$QyT ?:s-V: jYfyG LTP3 jR&;p b x4| Q0!gNLgY:8TVXNH<o*R]' z@㤸.3v9fal FA(!z;[aTQ)'%r"u"Ζhx,FcxNvbվ`$idt pZvWˀFs%GH˾څG就zHOYR/koگ/{i .823>Ȏ!nGm6 Oaη[ꄪᬹ D{hR&G|=sEsuyLwO8ܸB&n\&4.[H(K (-u&[Ҙ)IpTWsIbBOiZȼbZ0+)Sg+dr\?ȹt=1j|tݖ~kLDk{n/>ʊ||Q uulq8E_R*~*׷nuOV6g"b69.LׅVm/^sj߰2c+@/l{, 2s/ju78ecU ,ynHІ'[ *JcƮ>Fr_|j3?y҉U <ųN_(GU[ӭ+Yy"d>?ҡK=۪ 8#f,V\!<,VJhCbVJ_^VjQt>z(~)n'Ʈ;(B#NޏM'` N^r4; 3hx<@:U}8mKS8+8t`3f;UMG}bg6jykq_Oܨi./Ғ^i{n3 rߍ^5n}eſ2sl`ADM# 1d hx(|78zB a.G8z%$O8zBkJ2KRR4]jO-fIt>=?>( (冠dptǫ֌xÁz* ?}U]{/.Rf"WMַZ]WZ-ɒ)?u b̅V߈Ļ{H ӵtВ4NH_]QH$^|MGIx lfX_Xl+T~!7zc}SRv!+o,S m@iL2` p&ʘHǨ+6Tk3Z7]!(8x-on.{6Y2;{tNWIstr^RǠƱ{Cf t$MXT'{ΙEvNF d@V32ҩcWd"~cӭ|~sd"I^c@!Nj``jJ#b n$A0_ 4% m8?8{mkiY>^ɯ⢈a`ll̻~xp g !2;t榛]̆m5eZmpXZf9f+pvkher9,|H z]M6w$mp((2/9;tiP*SD+xҝ"CDXӆ)= G[F;ze<Ɣn5;~U#fSC'fYL L`bxt, (G92T,.uCS劯E wsƿKSiƮz59@3nN+.@(?iolN/hg߷NOxR(ܫ@,߫J͍uSLg>lrdqSuUyQ\&AGL*Hp=tM |>+c~7=HhrJ|GPJoک:k~Jxy ;;FFIO&+ɗIJ8Y LJgR"ENxTDg]I'49{[*KtڛxpZ#IENDB`youker-assistant-1.0.1/qml/img/logo/component/unity.png000644 001750 001750 00000001336 12312451003 023527 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<IDATxb?hk:?@1DX>~wb0400w1x ,_~a#Ç ?|ͫ W1f`x rIHHxfeeeAWGOP0 #Alo߾1z ;a`3hg`3jiim@@, LMkkD$?G|a?.} Oc`["Ȁ ~! ^>I>PVVoW03%F0F0"XhNc3X4N 0Ƽ\Ç7×/_@_ڄ"󿉉1XPN^w 0Lc2. */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Item { id:home width: parent.width height: 435 Rectangle { id: masklayer2 width: parent.width height: parent.height x: (parent.width * 1.5) //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } Connections { target: systemdispatcher //得到数据,显示在进度条上 onSendProgressToQML: { if(type == "apt_start") { progress.value = 0; home.state = "MaskLayerState"; } else if(type == "apt_pulse"){ progressTitle.text = qsTr("The ongoing: ") + info;//正在进行: progress.value = ratio_sus; } else if(type == "apt_stop") { // progress.value = 0; } } } Column { anchors.centerIn: parent spacing: 5 AnimatedImage { // anchors.centerIn: parent width: 16 height: 16 source: "../../img/icons/move.gif" anchors.horizontalCenter: parent.horizontalCenter } Text { id: progressTitle text: qsTr("Software operation schedule")//软件操作进度 color: "#318d11" wrapMode: Text.WordWrap font.pixelSize: 12 anchors.horizontalCenter: parent.horizontalCenter } Bars.Progress { id: progress value: 0 // background: "../../img/skin/progress-bg.png" color: "lightsteelblue"////"#086794" secondColor: "steelblue"//"#318d11" anchors.horizontalCenter: parent.horizontalCenter } } Common.SetBtn { id: resetBtn2 width: 12 height: 15 iconName: "revoke.png" anchors { left: parent.left leftMargin: 10 top: parent.top topMargin: 10 } onClicked: { home.state = "NormalState"; } } } Rectangle { id:root width: parent.width height: parent.height property string title: qsTr("Uninstall unnecessary procedures, old kernel packages and configfile")//卸载不必要的程序、旧内核包和清除软件配置文件 property string description: qsTr("Cleaning up the software that installed by other software bundled, old kernel packages and configfile, to improve system performance")//清理软件安装过程中捆绑安装的依赖程序、旧内核包和软件配置文件,提高系统性能 property string btnFlag: "package_scan"//扫描或者清理的标记:package_scan/package_work property bool packageresultFlag: false//判断依赖包扫描后的实际内容是否为空,为空时为false,有内容时为true property bool kernelresultFlag: false//判断旧内核包扫描后的实际内容是否为空,为空时为false,有内容时为true property bool configresultFlag: false//判断软件配置扫描后的实际内容是否为空,为空时为false,有内容时为true property int packageNum//扫描后得到的依赖包的项目总数 property int kernelNum//扫描后得到的旧内核包的项目总数 property int configNum//扫描后得到的软件配置的项目总数 property bool packageEmpty: false//决定是否显示扫描内容为空的状态图 property bool kernelEmpty: false//决定是否显示扫描内容为空的状态图 property bool configEmpty: false//决定是否显示扫描内容为空的状态图 property int mode: 0//扫描模式:0表示两者都扫描,1表示只选中了package,2表示只选中了kernel,3表示只选中了config, 4表示只选中了package和kernel,5表示只选中了package和config, 6表示只选中了kernel和config property bool splitFlag: true//传递给CacheDelegate.qml,为true时切割字符串,为false时不切割字符串 property bool flag: false//记录是清理后重新获取数据(true),还是点击开始扫描后获取数据(false) property int spaceValue: 20 property int package_arrow_show: 0//传递给CacheDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property int kernel_arrow_show: 0//传递给CacheDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property int config_arrow_show: 0//传递给CacheDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property bool package_expanded: false//传递给CacheDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool kernel_expanded: false//传递给CacheDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool config_expanded: false//传递给CacheDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool package_maincheck: true property bool kernel_maincheck: true property bool config_maincheck: true property bool package_showNum: false//决定依赖包的扫描结果数是否显示 property bool kernel_showNum: false//决定旧内核包的扫描结果数是否显示 property bool config_showNum: false//决定旧内核包的扫描结果数是否显示 ListModel { id: packagemainModel } ListModel { id: packagesubModel } ListModel { id: kernelmainModel } ListModel { id: kernelsubModel } ListModel { id: configmainModel } ListModel { id: configsubModel } property int item_height: 30 Component.onCompleted: { //卸载不必要的程序 可以根据扫描结果选择性地清理安装程序,让系统更瘦。 packagemainModel.append({"mstatus": root.package_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall unnecessary procedures"), "picture": "../../img/toolWidget/deb-min.png"}) //卸载旧内核包 可以根据扫描结果选择性地清理旧内核包,让系统更瘦。 kernelmainModel.append({"mstatus": root.kernel_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall old kernel packages"), "picture": "../../img/toolWidget/kernel.png"}) //清除软件配置文件 configmainModel.append({"mstatus": root.config_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup software configfile"), "picture": "../../img/toolWidget/configfile.png"}) } Connections { target: sessiondispatcher onAppendPackageContentToCacheModel: { //QString flag, QString pkgName, QString description, QString sizeValue if(flag == "unneed") { packagesubModel.append({"itemTitle": pkgName, "desc": description, "number": sizeValue, "index": root.packageNum}); root.packageNum += 1; systemdispatcher.set_package_args(pkgName); } else if(flag == "oldkernel") { kernelsubModel.append({"itemTitle": pkgName, "desc": description, "number": sizeValue, "index": root.kernelNum}); root.kernelNum += 1; systemdispatcher.set_package_args(pkgName); } else if(flag == "configfile") { configsubModel.append({"itemTitle": pkgName, "desc": description, "number": sizeValue, "index": root.configNum}); root.configNum += 1; systemdispatcher.set_package_args(pkgName); } } onTellQMLPackageOver: { doingImage.visible = false; packagemainModel.clear(); kernelmainModel.clear(); configmainModel.clear(); //卸载不必要的程序 可以根据扫描结果选择性地清理安装程序,让系统更瘦。 packagemainModel.append({"mstatus": root.package_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall unnecessary procedures"), "picture": "../../img/toolWidget/deb-min.png"}) //卸载旧内核包 可以根据扫描结果选择性地清理旧内核包,让系统更瘦。 kernelmainModel.append({"mstatus": root.kernel_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall old kernel packages"), "picture": "../../img/toolWidget/kernel.png"}) //清除软件配置文件 configmainModel.append({"mstatus": root.config_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup software configfile"), "picture": "../../img/toolWidget/configfile.png"}) if(root.packageNum != 0) { root.packageresultFlag = true;//扫描的实际有效内容存在 } else { if(root.mode == 0 || root.mode == 1 || root.mode == 4 || root.mode == 5) { root.packageEmpty = true; } root.packageresultFlag = false;//扫描的实际有效内容不存在 } if(root.kernelNum != 0) { root.kernelresultFlag = true;//扫描的实际有效内容存在 } else { if(root.mode == 0 || root.mode == 2 || root.mode == 4 || root.mode == 6) { root.kernelEmpty = true; } root.kernelresultFlag = false;//扫描的实际有效内容不存在 } if(root.configNum != 0) { root.configresultFlag = true;//扫描的实际有效内容存在 } else { if(root.mode == 0 || root.mode == 3 || root.mode == 5 || root.mode == 6) { root.configEmpty = true; } root.configresultFlag = false;//扫描的实际有效内容不存在 } if(root.packageresultFlag == false) { root.package_showNum = false; root.package_expanded = false;//伸缩箭头不扩展 root.package_arrow_show = 0;//伸缩箭头不显示 } else if(root.packageresultFlag == true) { root.package_showNum = true; root.package_expanded = true;//伸缩箭头扩展 root.package_arrow_show = 1;//伸缩箭头显示 } if(root.kernelresultFlag == false) { root.kernel_showNum = false; root.kernel_expanded = false;//伸缩箭头不扩展 root.kernel_arrow_show = 0;//伸缩箭头不显示 } else if(root.kernelresultFlag == true) { root.kernel_showNum = true; root.kernel_expanded = true;//伸缩箭头扩展 root.kernel_arrow_show = 1;//伸缩箭头显示 } if(root.configresultFlag == false) { root.config_showNum = false; root.config_expanded = false;//伸缩箭头不扩展 root.config_arrow_show = 0;//伸缩箭头不显示 } else if(root.configresultFlag == true) { root.config_showNum = true; root.config_expanded = true;//伸缩箭头扩展 root.config_arrow_show = 1;//伸缩箭头显示 } if(root.packageresultFlag == false && root.kernelresultFlag == false && root.configresultFlag == false) { root.state = "PackageWorkEmpty"; if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else {//清理apt后的重新获取数据,此时不需要显示对话框 root.flag = false; } } else { if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 toolkits.alertMSG(qsTr("Scan completed!"), mainwindow.pos.x, mainwindow.pos.y);//扫描完成! } else {//清理software后的重新获取数据,此时不需要显示对话框 root.flag = false; } root.state = "PackageWork"; actionBtn.text = qsTr("Begin cleanup");//开始清理 root.btnFlag = "package_work"; backBtn.visible = true; // rescanBtn.visible = true; } scrollItem.height = (root.packageNum + 1) * root.item_height + (root.kernelNum + 1) * root.item_height + (root.configNum + 1) * root.item_height + root.spaceValue*6; //扫描完成后恢复按钮的使能 actionBtn.enabled = true; } } Connections { target: systemdispatcher onFinishCleanDebError: {//清理出错时收到的信号 if (root.btnFlag == "package_work") { if (msg == "package") { home.state = "NormalState"; //清理过程中发生错误,解禁按钮 actionBtn.enabled = true; titleBar.state = "PackageWorkError"; toolkits.alertMSG(qsTr("Cleanup abnormal!"), mainwindow.pos.x, mainwindow.pos.y);//清理出现异常! } } } onFinishCleanDeb: {//清理成功时收到的信号 if (root.btnFlag == "package_work") { if (msg == "") { //清理取消,解禁按钮 actionBtn.enabled = true; home.state = "NormalState"; toolkits.alertMSG(qsTr("Cleanup interrupted!"), mainwindow.pos.x, mainwindow.pos.y);//清理中断! } else if (msg == "package") { root.state = "PackageWorkFinish"; toolkits.alertMSG(qsTr("Cleared"), mainwindow.pos.x, mainwindow.pos.y);//清理完毕 //清理完毕后重新获取数据 root.flag = true; // root.getData(); if(root.package_maincheck && root.kernel_maincheck && root.config_maincheck) { packagemainModel.clear(); kernelmainModel.clear(); configmainModel.clear(); //卸载不必要的程序 可以根据扫描结果选择性地清理安装程序,让系统更瘦。 packagemainModel.append({"mstatus": root.package_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall unnecessary procedures"), "picture": "../../img/toolWidget/deb-min.png"}) //卸载旧内核包 可以根据扫描结果选择性地清理旧内核包,让系统更瘦。 kernelmainModel.append({"mstatus": root.kernel_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall old kernel packages"), "picture": "../../img/toolWidget/kernel.png"}) //清除软件配置文件 configmainModel.append({"mstatus": root.config_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup software configfile"), "picture": "../../img/toolWidget/configfile.png"}) systemdispatcher.clear_package_args(); packagesubModel.clear();//内容清空 kernelsubModel.clear();//内容清空 configsubModel.clear();//内容清空 root.packageNum = 0;//隐藏滑动条 root.kernelNum = 0;//隐藏滑动条 root.configNum = 0;//隐藏滑动条 root.mode = 0; sessiondispatcher.package_scan_function_qt(sessiondispatcher.get_package_arglist(0)); } else { if(root.package_maincheck && !root.kernel_maincheck && !root.config_maincheck) { packagemainModel.clear(); //卸载不必要的程序 可以根据扫描结果选择性地清理安装程序,让系统更瘦。 packagemainModel.append({"mstatus": root.package_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall unnecessary procedures"), "picture": "../../img/toolWidget/deb-min.png"}) systemdispatcher.clear_package_args(); packagesubModel.clear();//内容清空 kernelsubModel.clear();//内容清空 configsubModel.clear();//内容清空 root.packageNum = 0;//隐藏滑动条 root.kernelNum = 0;//隐藏滑动条 root.configNum = 0;//隐藏滑动条 root.mode = 1; sessiondispatcher.package_scan_function_qt("unneed"); } else if(!root.package_maincheck && root.kernel_maincheck && !root.config_maincheck) { kernelmainModel.clear(); //卸载旧内核包 可以根据扫描结果选择性地清理旧内核包,让系统更瘦。 kernelmainModel.append({"mstatus": root.kernel_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall old kernel packages"), "picture": "../../img/toolWidget/kernel.png"}) systemdispatcher.clear_package_args(); packagesubModel.clear();//内容清空 kernelsubModel.clear();//内容清空 configsubModel.clear();//内容清空 root.packageNum = 0;//隐藏滑动条 root.kernelNum = 0;//隐藏滑动条 root.configNum = 0;//隐藏滑动条 root.mode = 2; sessiondispatcher.package_scan_function_qt("oldkernel"); } else if(!root.package_maincheck && !root.kernel_maincheck && root.config_maincheck) { configmainModel.clear(); //清除软件配置文件 configmainModel.append({"mstatus": root.config_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup software configfile"), "picture": "../../img/toolWidget/configfile.png"}) systemdispatcher.clear_package_args(); packagesubModel.clear();//内容清空 kernelsubModel.clear();//内容清空 configsubModel.clear();//内容清空 root.packageNum = 0;//隐藏滑动条 root.kernelNum = 0;//隐藏滑动条 root.configNum = 0;//隐藏滑动条 root.mode = 3; sessiondispatcher.package_scan_function_qt("configfile"); } else if(root.package_maincheck && root.kernel_maincheck && !root.config_maincheck) { packagemainModel.clear(); //卸载不必要的程序 可以根据扫描结果选择性地清理安装程序,让系统更瘦。 packagemainModel.append({"mstatus": root.package_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall unnecessary procedures"), "picture": "../../img/toolWidget/deb-min.png"}) kernelmainModel.clear(); //卸载旧内核包 可以根据扫描结果选择性地清理旧内核包,让系统更瘦。 kernelmainModel.append({"mstatus": root.kernel_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall old kernel packages"), "picture": "../../img/toolWidget/kernel.png"}) systemdispatcher.clear_package_args(); packagesubModel.clear();//内容清空 kernelsubModel.clear();//内容清空 configsubModel.clear();//内容清空 root.packageNum = 0;//隐藏滑动条 root.kernelNum = 0;//隐藏滑动条 root.configNum = 0;//隐藏滑动条 root.mode = 4; sessiondispatcher.package_scan_function_qt(sessiondispatcher.get_package_arglist(4)); } else if(root.package_maincheck && !root.kernel_maincheck && root.config_maincheck) { packagemainModel.clear(); //卸载不必要的程序 可以根据扫描结果选择性地清理安装程序,让系统更瘦。 packagemainModel.append({"mstatus": root.package_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall unnecessary procedures"), "picture": "../../img/toolWidget/deb-min.png"}) configmainModel.clear(); //清除软件配置文件 configmainModel.append({"mstatus": root.config_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup software configfile"), "picture": "../../img/toolWidget/configfile.png"}) systemdispatcher.clear_package_args(); packagesubModel.clear();//内容清空 kernelsubModel.clear();//内容清空 configsubModel.clear();//内容清空 root.packageNum = 0;//隐藏滑动条 root.kernelNum = 0;//隐藏滑动条 root.configNum = 0;//隐藏滑动条 root.mode = 5; sessiondispatcher.package_scan_function_qt(sessiondispatcher.get_package_arglist(5)); } else if(!root.package_maincheck && root.kernel_maincheck && root.config_maincheck) { kernelmainModel.clear(); //卸载旧内核包 可以根据扫描结果选择性地清理旧内核包,让系统更瘦。 kernelmainModel.append({"mstatus": root.kernel_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall old kernel packages"), "picture": "../../img/toolWidget/kernel.png"}) configmainModel.clear(); //清除软件配置文件 configmainModel.append({"mstatus": root.config_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup software configfile"), "picture": "../../img/toolWidget/configfile.png"}) systemdispatcher.clear_package_args(); packagesubModel.clear();//内容清空 kernelsubModel.clear();//内容清空 configsubModel.clear();//内容清空 root.packageNum = 0;//隐藏滑动条 root.kernelNum = 0;//隐藏滑动条 root.configNum = 0;//隐藏滑动条 root.mode = 6; sessiondispatcher.package_scan_function_qt(sessiondispatcher.get_package_arglist(6)); } } home.state = "NormalState"; //清理成功完成,解禁按钮 actionBtn.enabled = true; } } } } //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //titlebar Row { id: titlebar spacing: 20 width: parent.width anchors { top: parent.top; topMargin: 20; left: parent.left; leftMargin: 27 } Image { id: apt_refreshArrow source: "../../img/toolWidget/program.png" Behavior on rotation { NumberAnimation { duration: 200 } } } Column { anchors.verticalCenter: parent.verticalCenter spacing: 10 Text { width: 500 text: root.title wrapMode: Text.WordWrap font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: 500 text: root.description wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } } Row{ anchors { top: parent.top; topMargin: 30;right: parent.right ; rightMargin: 20 } spacing: 20 Row { spacing: 20 anchors.verticalCenter: parent.verticalCenter Common.StyleButton { id: backBtn visible: false anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Back")//返回 width: 40 height: 20 onClicked: { root.packageEmpty = false; root.kernelEmpty = false; root.configEmpty = false; if(root.package_maincheck == false) { root.package_maincheck = true; } if(root.kernel_maincheck == false) { root.kernel_maincheck = true; } if(root.config_maincheck == false) { root.config_maincheck = true; } systemdispatcher.clear_package_args(); root.package_showNum = false; root.kernel_showNum = false; root.config_showNum = false; packagemainModel.clear(); kernelmainModel.clear(); configmainModel.clear(); //卸载不必要的程序 可以根据扫描结果选择性地清理安装程序,让系统更瘦。 packagemainModel.append({"mstatus": root.package_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall unnecessary procedures"), "picture": "../../img/toolWidget/deb-min.png"}) //卸载旧内核包 可以根据扫描结果选择性地清理旧内核包,让系统更瘦。 kernelmainModel.append({"mstatus": root.kernel_maincheck ? "true": "false", "itemTitle": qsTr("Uninstall old kernel packages"), "picture": "../../img/toolWidget/kernel.png"}) //清除软件配置文件 configmainModel.append({"mstatus": root.config_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup software configfile"), "picture": "../../img/toolWidget/configfile.png"}) packagesubModel.clear();//内容清空 root.packageNum = 0;//隐藏滑动条 root.package_arrow_show = 0;//伸缩图标隐藏 kernelsubModel.clear();//内容清空 root.kernelNum = 0;//隐藏滑动条 root.kernel_arrow_show = 0;//伸缩图标隐藏 configsubModel.clear();//内容清空 root.configNum = 0;//隐藏滑动条 root.config_arrow_show = 0;//伸缩图标隐藏 scrollItem.height = 3 * root.item_height + root.spaceValue*6; root.state = "PackageWorkAGAIN";//按钮的状态恢复初始值 } } } Common.Button { id: actionBtn width: 94 height: 29 hoverimage: "green.png" text: qsTr("Start scanning")//开始扫描 fontsize: 13 anchors.verticalCenter: parent.verticalCenter onClicked: { root.packageEmpty = false; root.kernelEmpty = false; root.configEmpty = false; if (root.btnFlag == "package_scan") {//扫描 //扫描过程中禁用按钮 actionBtn.enabled = false; root.flag = false; // root.getData(); if(root.package_maincheck && root.kernel_maincheck && root.config_maincheck) { root.mode = 0; root.packageNum = 0; root.kernelNum = 0; root.configNum = 0; doingImage.visible = true; sessiondispatcher.package_scan_function_qt(sessiondispatcher.get_package_arglist(0)); } else { if(root.package_maincheck && !root.kernel_maincheck && !root.config_maincheck) { root.mode = 1; root.packageNum = 0; doingImage.visible = true; sessiondispatcher.package_scan_function_qt("unneed"); } else if(!root.package_maincheck && root.kernel_maincheck && !root.config_maincheck) { root.mode = 2; root.kernelNum = 0; doingImage.visible = true; sessiondispatcher.package_scan_function_qt("oldkernel"); } else if(!root.package_maincheck && !root.kernel_maincheck && root.config_maincheck) { root.mode = 3; root.configNum = 0; doingImage.visible = true; sessiondispatcher.package_scan_function_qt("configfile"); } else if(root.package_maincheck && root.kernel_maincheck && !root.config_maincheck) { root.mode = 4; root.packageNum = 0; root.kernelNum = 0; doingImage.visible = true; sessiondispatcher.package_scan_function_qt(sessiondispatcher.get_package_arglist(4)); } else if(root.package_maincheck && !root.kernel_maincheck && root.config_maincheck) { root.mode = 5; root.packageNum = 0; root.configNum = 0; doingImage.visible = true; sessiondispatcher.package_scan_function_qt(sessiondispatcher.get_package_arglist(5)); } else if(!root.package_maincheck && root.kernel_maincheck && root.config_maincheck) { root.mode = 6; root.kernelNum = 0; root.configNum = 0; doingImage.visible = true; sessiondispatcher.package_scan_function_qt(sessiondispatcher.get_package_arglist(6)); } else{ doingImage.visible = false; actionBtn.enabled = true; //友情提示: 对不起,您没有选择需要扫描的内容,请确认! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Sorry, You did not choose the content to be scanned, please confirm!"), mainwindow.pos.x, mainwindow.pos.y); } } } else if (root.btnFlag == "package_work") {//清理 if(root.packageresultFlag || root.kernelresultFlag || root.configresultFlag) {//扫描得到的实际内容存在时 if(!root.package_maincheck && !root.kernel_maincheck && !root.config_maincheck) { //友情提示: 对不起,您没有选择需要清理的内容,请确认! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Sorry, You did not choose the content to be cleaned up, please confirm!"), mainwindow.pos.x, mainwindow.pos.y); } else { // home.state = "MaskLayerState"; //开始清理时,禁用按钮,等到清理完成后解禁 actionBtn.enabled = false; console.log(systemdispatcher.get_package_args()); systemdispatcher.clean_package_cruft_qt(systemdispatcher.get_package_args(), "package"); } } } } } AnimatedImage { id: doingImage anchors.verticalCenter: parent.verticalCenter width: 16 height: 16 visible: false source: "../../img/icons/move.gif" } } //分割条 Common.Separator { id: splitbar anchors { top: titlebar.bottom topMargin: 18 left: parent.left leftMargin: 2 } width: parent.width - 4 } Common.ScrollArea { frame:false anchors.top: titlebar.bottom anchors.topMargin: 30 anchors.left:parent.left // anchors.leftMargin: 27 height: root.height - titlebar.height - 47 width: parent.width -2//parent.width - 27 -2 Item { id: scrollItem width: parent.width height: root.item_height*3 + root.spaceValue*3*2 Column { spacing: root.spaceValue*2 //垃圾清理显示内容 ListView { id: aptListView width: parent.width height: root.package_expanded ? (root.packageNum + 1) * root.item_height : root.item_height model: packagemainModel delegate: CacheDelegate{ sub_num: root.packageNum//root.aptsubNum//1212 sub_model: packagesubModel btn_flag: root.btnFlag arrowFlag: "package" showNum: root.package_showNum arrow_display: root.package_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.package_expanded//package_expanded为true时,箭头向下,内容展开;package_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag emptyTip: root.packageEmpty //Cleardelegate中返回是否有项目勾选上,有为true,没有为false onCheckchanged: { // root.packageresultFlag = checkchange; root.package_maincheck = checkchange; } onArrowClicked: { if(cacheFlag == "package") {//1212 if(expand_flag == true) { root.package_expanded = true; if((root.kernel_expanded == true) && (root.config_expanded == true)) { scrollItem.height = (root.packageNum + 1) * root.item_height + (root.kernelNum + 1) * root.item_height + (root.configNum + 1) * root.item_height + root.spaceValue*6; } else if((root.kernel_expanded == true) && (root.config_expanded == false)){ scrollItem.height = (root.packageNum + 1) * root.item_height + (root.kernelNum + 2) * root.item_height + root.spaceValue*6; } else if((root.kernel_expanded == false) && (root.config_expanded == true)){ scrollItem.height = (root.packageNum + 1) * root.item_height + (root.configNum + 2) * root.item_height + root.spaceValue*6; } else { scrollItem.height = (root.packageNum + 3) * root.item_height + root.spaceValue*6; } } else { root.package_expanded = false; if((root.kernel_expanded == true) && (root.config_expanded == true)) { scrollItem.height = (root.kernelNum + 1) * root.item_height + (root.configNum + 2) * root.item_height + root.spaceValue*6; } else if((root.kernel_expanded == true) && (root.config_expanded == false)){ scrollItem.height = (root.kernelNum + 3) * root.item_height + root.spaceValue*6; } else if((root.kernel_expanded == false) && (root.config_expanded == true)){ scrollItem.height = (root.configNum + 3) * root.item_height + root.spaceValue*6; } else { scrollItem.height = 3 * root.item_height + root.spaceValue*6; } } } } } cacheBuffer: 1000 opacity: 1 // spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } //垃圾清理显示内容 ListView { id: softListView width: parent.width height: root.kernel_expanded ? (root.kernelNum + 1) * root.item_height : root.item_height model: kernelmainModel delegate: CacheDelegate{ sub_num: root.kernelNum sub_model: kernelsubModel btn_flag: root.btnFlag showNum: root.kernel_showNum arrowFlag: "kernel" arrow_display: root.kernel_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.kernel_expanded//kernel_expanded为true时,箭头向下,内容展开;kernel_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag emptyTip: root.kernelEmpty //Cleardelegate中返回是否有项目勾选上,有为true,没有为false onCheckchanged: { // root.kernelresultFlag = checkchange; root.kernel_maincheck = checkchange; } onArrowClicked: { if(cacheFlag == "kernel") {//1212 if(expand_flag == true) { root.kernel_expanded = true; if((root.package_expanded == true) && (root.config_expanded == true)) { scrollItem.height = (root.packageNum + 1) * root.item_height + (root.kernelNum + 1) * root.item_height + (root.configNum + 1) * root.item_height + root.spaceValue*6; } else if((root.package_expanded == true) && (root.config_expanded == false)){ scrollItem.height = (root.packageNum + 1) * root.item_height + (root.kernelNum + 2) * root.item_height + root.spaceValue*6; } else if((root.package_expanded == false) && (root.config_expanded == true)){ scrollItem.height = (root.configNum + 1) * root.item_height + (root.kernelNum + 2) * root.item_height + root.spaceValue*6; } else { scrollItem.height = (root.kernelNum + 3) * root.item_height + root.spaceValue*6; } } else { root.kernel_expanded = false; if((root.package_expanded == true) && (root.config_expanded == true)) { scrollItem.height = (root.packageNum + 1) * root.item_height + (root.configNum + 2) * root.item_height + root.spaceValue*6; } else if((root.package_expanded == true) && (root.config_expanded == false)){ scrollItem.height = (root.packageNum + 3) * root.item_height + root.spaceValue*6; } else if((root.package_expanded == false) && (root.config_expanded == true)){ scrollItem.height = (root.configNum + 3) * root.item_height + root.spaceValue*6; } else { scrollItem.height = 3 * root.item_height + root.spaceValue*6; } } } } } cacheBuffer: 1000 opacity: 1 spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } //垃圾清理显示内容 ListView { id: configListView width: parent.width height: root.config_expanded ? (root.configNum + 1) * root.item_height : root.item_height model: configmainModel delegate: CacheDelegate{ sub_num: root.configNum sub_model: configsubModel btn_flag: root.btnFlag showNum: root.config_showNum arrowFlag: "configfile" arrow_display: root.config_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.config_expanded//kernel_expanded为true时,箭头向下,内容展开;kernel_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag emptyTip: root.configEmpty //Cleardelegate中返回是否有项目勾选上,有为true,没有为false onCheckchanged: { // root.kernelresultFlag = checkchange; root.config_maincheck = checkchange; } onArrowClicked: { if(cacheFlag == "configfile") {//1212 if(expand_flag == true) { root.config_expanded = true; if((root.package_expanded == true) && (root.kernel_expanded == true)) { scrollItem.height = (root.packageNum + 1) * root.item_height + (root.kernelNum + 1) * root.item_height + (root.configNum + 1) * root.item_height + root.spaceValue*6; } else if((root.package_expanded == true) && (root.kernel_expanded == false)){ scrollItem.height = (root.packageNum + 1) * root.item_height + (root.configNum + 2) * root.item_height + root.spaceValue*6; } else if((root.package_expanded == false) && (root.kernel_expanded == true)){ scrollItem.height = (root.kernelNum + 1) * root.item_height + (root.configNum + 2) * root.item_height + root.spaceValue*6; } else { scrollItem.height = (root.configNum + 3) * root.item_height + root.spaceValue*6; } } else { root.config_expanded = false; if((root.package_expanded == true) && (root.kernel_expanded == true)) { scrollItem.height = (root.packageNum + 1) * root.item_height + (root.kernelNum + 2) * root.item_height + root.spaceValue*6; } else if((root.package_expanded == true) && (root.kernel_expanded == false)){ scrollItem.height = (root.packageNum + 3) * root.item_height + root.spaceValue*6; } else if((root.package_expanded == false) && (root.kernel_expanded == true)){ scrollItem.height = (root.kernelNum + 3) * root.item_height + root.spaceValue*6; } else { scrollItem.height = 3 * root.item_height + root.spaceValue*6; } } } } } cacheBuffer: 1000 opacity: 1 // spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } } } } states: [ State { name: "PackageWork" PropertyChanges { target: actionBtn; text:qsTr("Begin cleanup")}//开始清理 PropertyChanges { target: root; btnFlag: "package_work" } PropertyChanges { target: backBtn; visible: true} }, State { name: "PackageWorkAGAIN" PropertyChanges { target: actionBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btnFlag: "package_scan" } PropertyChanges { target: backBtn; visible: false} }, State { name: "PackageWorkError" PropertyChanges { target: actionBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btnFlag: "package_scan" } PropertyChanges { target: backBtn; visible: false} }, State { name: "PackageWorkFinish" PropertyChanges { target: actionBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btnFlag: "package_scan" } PropertyChanges { target: backBtn; visible: false} }, State { name: "PackageWorkEmpty" PropertyChanges { target: actionBtn; text:qsTr("Start scanning")}//开始扫描 PropertyChanges { target: root; btnFlag: "package_scan" } PropertyChanges { target: backBtn; visible: false} } ] } states: [ State { name: "NormalState" PropertyChanges { target: root; x: 0 } PropertyChanges { target: masklayer2; x: (parent.width * 1.5) } }, State { name: "MaskLayerState" PropertyChanges { target: masklayer2; x: 0 } PropertyChanges { target: progressTitle; text: qsTr("Software operation schedule") }//软件操作进度 PropertyChanges { target: progress; value: 0 } PropertyChanges { target: root; x: (parent.width * 1.5) } } ] } youker-assistant-1.0.1/qml/func/cleaner/CookiesItem.qml000644 001750 001750 00000013510 12312451003 023422 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id: container property string fontName: "Helvetica" property int fontSize: 12 property color fontColor: "black" property bool fontBold: false property string text: "" property string descript: "" property string size_num: "" property int item_index property string bgImage: "../../img/icons/green.png" property string bgImage2: "../../img/icons/blue.png" property string bgImageSelected: '../../img/icons/list_item_selected.png' property string bgImagePressed: '../../img/icons/list_item_pressed.png' property bool selected: false property bool selectable: false property bool split_status: false property string browserFlag//浏览器标记 signal refreshed width: 850 height: 30 clip: true onSelectedChanged: selected ? state = 'selected' : state = '' Connections { target: systemdispatcher onFinishCleanSingleWorkError: { if (msg == "cookies") { toolkits.alertMSG(qsTr("Cleanup failed!"), mainwindow.pos.x, mainwindow.pos.y);//清理失败! } } onFinishCleanSingleWork: { if (msg == "") { toolkits.alertMSG(qsTr("Cleanup interrupted!"), mainwindow.pos.x, mainwindow.pos.y);//清理中断! } else if (msg == "cookies") { toolkits.alertMSG(qsTr("Cleanup successfully!"), mainwindow.pos.x, mainwindow.pos.y);//清理成功! container.refreshed();//清理完单个数据后,通过clicked信号告诉BrowserCookies.qml去进行数据再次扫描刷新的操作 } } } function get_last_name(str) { var need_str = str; need_str = need_str.substr(need_str.lastIndexOf("/") + 1, need_str.length - need_str.lastIndexOf("/")); return need_str; } // BorderImage { // id: background // anchors { // left: parent.left // leftMargin: 20 // } //// border { top: 9; bottom: 36; left: 35; right: 35; } //// source: bgImage // border {left: 35; right: 35; } // source: (container.item_index%2 == 0) ? bgImage : bgImage2 //// source: (container.item_index%2 == 0) ? "../../img/icons/green.png": "../../img/icons/blue.png" // anchors.fill: parent // } Rectangle { id: background anchors.fill: parent color: (container.item_index%2 == 0) ? "#d7ecfb" : "transparent" // color: (container.item_index%2 == 0) ? "#d0eafb" : "#d7eefd" // border.color: "black" // border.width: 5 // radius: 10 } Text { id: itemText anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left anchors.leftMargin: 30 font.pixelSize: container.fontSize font.family: container.fontName color: container.fontColor elide: Text.ElideRight text: container.split_status ? get_last_name(container.text) : container.text verticalAlignment: Text.AlignVCenter } Text { text: container.size_num + qsTr(" Records")//条记录 anchors { right: delBtn.left top: parent.top rightMargin: 40 verticalCenter: container.verticalCenter } font.pixelSize: container.fontSize font.family: container.fontName color: container.fontColor elide: Text.ElideRight verticalAlignment: Text.AlignVCenter } Common.StyleButton { id: delBtn anchors { right: parent.right rightMargin: 100 verticalCenter: parent.verticalCenter } wordname: qsTr("Delete")//删除 width: 40 height: 20 onClicked: { systemdispatcher.set_user_homedir_qt(); systemdispatcher.cookies_clean_record_function_qt(container.browserFlag, itemText.text); } } MouseArea { id: mouseArea hoverEnabled: true anchors.fill: itemText onExited: container.state = '' onReleased: container.state = ''//selectable && !selected ? selected = true : selected = false onHoveredChanged: { !selected ? selected = true : selected = false } } states: [ State { name: 'pressed'; when: mouseArea.pressed PropertyChanges { target: background; color: "#cae7fa" } }, State { name: 'selected' PropertyChanges { target: background; color: "#cae7fa" } } ] // states: [ // State { // name: 'pressed'; when: mouseArea.pressed // PropertyChanges { target: background; source: bgImagePressed; border { left: 35; top: 35; right: 35; bottom: 10 } } // }, // State { // name: 'selected' // PropertyChanges { target: background; source: bgImageSelected; border { left: 35; top: 35; right: 35; bottom: 10 } } // } // ] } youker-assistant-1.0.1/qml/img/logo/Manufacturer/XFX.jpg000644 001750 001750 00000012426 12312451003 023454 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !AQ"B aq2R#$3C4Tdx9 !1AQaq"2BRbrCDT% ?y8k^qK'I\ G ~ޭj CҔpDnL/ҋ Q܈ ~ZQL{Ui8krTU=I愉J@ u?-O;g2zia8`/涸@RNC9-XI[%Cok&MTّlopQ=Cq0(}^mtvY'#X*6-l:_R(ގp0kV卣WsIW" ,?UB+j *ZCk o׫, {,(CW013:1/]ܮKxiEɆ(Ҕcr\8jERq2sfq-D>ZKd1HaU;oLPPrS2)9?(kMuHDIġ_2j!UנDx=>r7?< 1 ⩞_]O5/]ܬQ (UL"Ry،]J JT\bGb!Y!z2`N%J)y}TnVEg~LOw{B{7hF[ab{"w6tک$X79L9o2LկӁ9!5tEE'"qxB4Q#=jt7uYhg hrRؤ^LR3\ #pvFxrQ=#Bt/bI[7ݷ7rЭ:za߂21!-@wf۴u4`=s؞d;9hyJq\WEɿݾ=@SL+1M6< ֡LGW'iFH'~V^Dy)VziSG8QULQ+Q/a8|G)z\3npMP?i6%ȤBT(UNi)lKPp^G僖{cAC?KW\ {{4 0m!qQ;os@Գ21XCm$ZHK25ݹ"i[$QØC],kfz6utwOnͥ8k8٭n:ج;,GEL^J_Eeo\e[%V1s͇WT$:Bx;6Cu9\SOakb1|QD8︀+wȾl Oz4ةp倥 "?p5I!N=ڲW(uTR Zbצ`'=A)q6괦 豸hDK B%IЕG("tR2&( 9*L  Qo՝ʨ=eldCAV3s:k[ڥ *n*SѨ_PkGW @Cի+emHCi A譥Rjްm~PXq۴b}>1 ̩0BCq"Cw w㯗6m v-Ҝ0v_!؆IHxx uqVtD;"":C˥טJ$f! ?ۂF:uRז}bX^=+xX}R0066FK* >Y.T;+t$AP'jQm)U /KɫS\߉D TBGeT2Es?ŃZ4{m:9V:ix`)l͉ы.iϨ?X^ n;W9K|-L]cbjeXĽ87":戃+*rcZʰPSӱ]In[ny۵r8}t:&AM:`]E}df%ti̖,oo|nGi]U5 kVE$;9UD9GYV#rMz\8|J{,lZq̣kWuĶjҦd/mJ7(J.5*(Q!9Oyas[8Wq`v[Y]7Z!dfTb2%=8e5Q$!y2B6@EI ȼn,.j]yCM1Ll) $Q>$-ʑ| akc-CrM_O`Aػc3sU[I+e+}N-57}3$< b8 l諿b,B9 ao\B G\P|͋jjdV#,-/ǵ`w ]L׏雽y>y_6+m"pYsu8cPc]]1d"y?́e /FCVx& )oj'bI[;1If)youker-assistant-1.0.1/qml/img/icons/checkbox_mid.png000644 001750 001750 00000000323 12312451003 023142 0ustar00saucysaucy000000 000000 PNG  IHDR tEXtSoftwareAdobe ImageReadyqe<uIDATxb?0R.;$Al IpVea2`1n  LxBfNLԳ ``s9/:&>(7ȚIENDB`youker-assistant-1.0.1/src/image/feature2.png000644 001750 001750 00000002437 12312451003 021441 0ustar00saucysaucy000000 000000 PNG  IHDRp ntEXtSoftwareAdobe ImageReadyqe<IDATx'x xŇ  l٤@o~a;?HA5 Aʎ^ 0@8Q{: ֱ<f5d~ 3|9;ʣ#+ud,`d:w_3xƐa4Ğp2??Xy1m `F ,L ,󱺪i #@]kfXₛtzIcnbQdXɗp҂*'J|w!@Y+f]b`bbD-7~1 zn>0L ïN|nٷsL?t? tOPUAni?HUK; 6@hW7ĉ],Gndp oY@K&V,y ~GWz5'ÂlT/B⃃ݭ1,C`dcWc@drP{j^QNq^yoo30q!o=?_h Fjjɻ~3c`?ahSgxÁg 8X2ÿex?$b~1 k%2Xeշ!)8ł5+###$2~]uHަ|3g`dЁ+H1<Ĕ #TEzPN P SŻ{ a H *R4.bϪo??@P2-sBJ` ~rK7T+; Dax۸2w%h;` 8>Ï_/dC08fj0ʳzvi>(ch M& i[-A[ڊYů(e2"Ʈa:CZ9ÞK.Ȉ[ 3;R`ebT)egfqs'/ ;383p"; ;-*=<܎M7d j 0#yJp*ona _x\, :\ %QqZA|C7F2SpZ5'<؝s`Tب ^3'￾+<هGW"H\K>?})+-2e=`IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/MACY.jpg000644 001750 001750 00000011667 12312451003 023546 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!Aq QB$"24aR#c&!1AQaq"B$4D%2TR#d ?&QZ⧓?t!Ls g$"&c )g"\çd)GDpmrL= 2L5H]Q$"%<pxBOo&(XO&~B$dIE"LǺDR$ϧ? DNR2O.{Bdj.IEJyr).߄MS{[&Q LЅ1$IȓdDt.IOd~se!2\(0 !uF\(  ]*L9`CF?M/ɌrͳUGQ cNhѠiye4>a̿u:|mC+}8xDaoB<88Uݨ^iI(70˸LT.L#k CtN(PBD$zcIkKu/.FR#lތpb(؜5OiV>ѭy9=\DPїf fP,LTNa$GMǪ{Ţ.fZ{Q=k[SiΥ/(*tާ+xxm!]zזqIĪpI$+.܈#qQ?45+ugeUL <$9:]oytgn=Jቕ$w1O+]Zں5q8-;d1Θv yAhBPiJ(( @B=i`Yy%>-*v#F$F7J|-j$P_7[)+ߕ?yp~.};6&?vfr1ᶌcB1چa,;,y!t.ked)a⁵sZTT-J:Ka;Myx̻3h>^6w`!Xv{ B-`2>=Sy_Եzϧ#W6>S{acAr"6#!0r76I'&ܱg'cә-pt#e_f7h7P-CEzPۼ;""(DTS]QryPlԘe. #$^[/ O i@Kth[Ɛƞyhfv@}d&%[>a.9& B< +q %iD*( \jwuY<v8`N t/B a4^}Y0Z}侚UvH5ϴaUgp΋?t[oG\^G\`+C:f\W4:A {yf}nO3l[Ո_y #y\Pꂫ6^Tg)a"LD$R${tEO&}=2V7*Ds*uxl 嵲MT֖,H v@rO[ f//;gKdg&=a֪lHuDb?v8gDanv،A6&AT?搰ؤj1ĞLG ť2M1-Ԁw늰hF1Vj5F\(a|>s&\<#(>]:*L9`< cH=&3]H>);!&DpmrEO.{Bdj.IEJyr).߄MS{[&Q LЅ1$IȓdDt.IOd~se!2\(0 !uF\(  ]/youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/filemanager.py000644 001750 001750 00000015044 12312451003 031126 0ustar00saucysaucy000000 000000 #! /usr/bin/env python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # # Author: Kobe Lee # Maintainer: Ubuntu Kylin # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import gsettings class FileManager: # -----------------默认值----------------- # Get Default Value def get_default_schema_value(self, schema, key): return gsettings.get_schema_value(schema, key) # Set Default Value def set_default_schema_value(self, schema, key, type): default_value = self.get_default_schema_value(schema, key) if default_value is not None: return gsettings.set(schema, None, key, type, default_value) else: raise NotImplemented # -----------------使用路径输入框取代路径栏----------------- # Get: Use the location entry instead of the pathbar def get_location_replace_pathbar(self): return gsettings.get('org.gnome.nautilus.preferences', None, 'always-use-location-entry', 'boolean') # Set: Use the location entry instead of the pathbar def set_location_replace_pathbar(self, flag): #gstheme = gsettings.get_schema('org.gnome.desktop.sound') #gstheme.set_string('theme-name',theme) return gsettings.set('org.gnome.nautilus.preferences', None, 'always-use-location-entry', 'boolean', flag) # -----------------自动挂载媒体----------------- # Get: Automatically mount media def get_auto_mount_media(self): return gsettings.get('org.gnome.desktop.media-handling', None, 'automount', 'boolean') # Set: Automatically mount media def set_auto_mount_media(self, flag): return gsettings.set('org.gnome.desktop.media-handling', None, 'automount', 'boolean', flag) # -----------------自动打开文件夹----------------- # Get: Automatically open a folder def get_auto_open_folder(self): return gsettings.get('org.gnome.desktop.media-handling', None, 'automount-open', 'boolean') # Set: Automatically open a folder def set_auto_open_folder(self, flag): return gsettings.set('org.gnome.desktop.media-handling', None, 'automount-open', 'boolean', flag) # -----------------提示自动运行的程序----------------- # Get: Prompt or autorun/autostart programs def get_prompt_autorun_programs(self): return gsettings.get('org.gnome.desktop.media-handling', None, 'autorun-never', 'boolean') # Set: Prompt or autorun/autostart programs def set_prompt_autorun_programs(self, flag): return gsettings.set('org.gnome.desktop.media-handling', None, 'autorun-never', 'boolean', flag) # -----------------缩略图图标尺寸(像素) min=16, max=512, step=16, default=64----------------- # Get: Thumbnail icon size (pixels) def get_thumbnail_icon_size(self): return gsettings.get('org.gnome.nautilus.icon-view', None, 'thumbnail-size', 'int') # Set: Thumbnail icon size (pixels) def set_thumbnail_icon_size(self, size): return gsettings.set('org.gnome.nautilus.icon-view', None, 'thumbnail-size', 'int', size) # -----------------缩略图缓存时间(天数) min=-1, max=180, step=1, default=180----------------- # Get: Thumbnail cache time (days) def get_thumbnail_cache_time(self): return gsettings.get('org.gnome.desktop.thumbnail-cache', None, 'maximum-age', 'int') # Set: Thumbnail cache time (days) def set_thumbnail_cache_time(self, value): return gsettings.set('org.gnome.desktop.thumbnail-cache', None, 'maximum-age', 'int', value) # -----------------最大缩略图缓存尺寸(MB) min=-1, max=512, step=1, default=512----------------- # Get: Maximum thumbnail cache size (MB) def get_thumbnail_cache_size(self): return gsettings.get('org.gnome.desktop.thumbnail-cache', None, 'maximum-size', 'int') # Set: Maximum thumbnail cache size (MB) def set_thumbnail_cache_size(self, size): return gsettings.set('org.gnome.desktop.thumbnail-cache', None, 'maximum-size', 'int', size) if __name__ == '__main__': fm = FileManager() #value = fm.get_location_replace_pathbar() #if(value): # print "yes" # fm.set_location_replace_pathbar(False) #else: # print "False" # fm.set_location_replace_pathbar(True) #value = fm.get_auto_mount_media() #if(value): # fm.set_auto_mount_media(False) #else: # fm.set_auto_mount_media(True) #value = fm.get_auto_open_folder() #if(value): # fm.set_auto_open_folder(False) #else: # fm.set_auto_open_folder(True) #value = fm.get_prompt_autorun_programs() #if(value): # fm.set_prompt_autorun_programs(False) #else: # fm.set_prompt_autorun_programs(True) #value = fm.get_thumbnail_icon_size() #if(value == 64): # fm.set_thumbnail_icon_size(48) #else: # fm.set_thumbnail_icon_size(64) #value = fm.get_thumbnail_cache_time() #if(value == 180): # fm.set_thumbnail_cache_time(120) #else: # fm.set_thumbnail_cache_time(180) #value = fm.get_thumbnail_cache_size() #aa = fm.test() #print aa #if(value == 512): # fm.set_thumbnail_cache_size(500) #else: # fm.set_thumbnail_cache_size(512) aa = fm.get_default_schema_value('org.gnome.desktop.media-handling', 'automount') print aa #aa = fm.get_default_schema_value('org.gnome.desktop.media-handling', 'automount') #print aa #fm.set_default_schema_value('org.gnome.desktop.media-handling', 'automount', 'boolean') bb = fm.get_default_schema_value('org.gnome.nautilus.desktop', 'font') print bb youker-assistant-1.0.1/qml/000755 001750 001750 00000000000 12312451003 016130 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/GAINWARO.jpg000644 001750 001750 00000006753 12312451003 024224 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1AQ !$qB4a2D%"TX#St5&FHA1!QaBq2RbT$4d%5"U ?Cމ/x4Ĩ[" nDr)Dꄼ~ TC.)PJmb%m[w /1*" ለ4=D0JQ0iu1z/_vK T!*[X[FCsLJ5xb" a`0 A-iRL|L^Kb@D:1킕iJ"V'~7 ABk:[G~JN^i\MF@pߝ [v]gdd.r<7.kEhH߭%jdc<KDܘφ[Xچ?5ddr$<'IQ56`8#j`M^J<ѫϛs]K[_6[eL<ѫsovwiD-_35v.m g-ZN^{^nNl([9i2t?7_- g-1Z:}WaofB,ZNh2}^_>gՄ=!sۇᝌ9f!YcM4-(;alnGT)I9̒Ԙ5Q B ?J4PaBÆ;^*私L) t"-Ri0S26OMK~Bl(> RxKF Я"҅p7^2Q߀F"fS6SuRu\Hzp0ΠԒPTUm/8vppxhhxqo.{hLY걘`K2O.ȩچsD#Q4mU&P+46=z”C #s)f}qz߷dXMxOPp|S98>? n=d ??'vvt r0m" O(}0'Wpe'K0]^npG:єg|-޼4 :T6\JB^B@MD*a x1PzbD; n0F=G;6뼔scNL$/6Y )iArj( isi#Ƴ8kG@T 'qӥ  A/fqg;+n;{,SnDZTYRJ(X A ?f|Q.v9ek ئab8M\ԑ# F Q'7Nw$sffi}Yoاy]Ю|SdU +;wGkDf#ba6_g6rt+T=stkչ|2FK1 aU޹<Ԫ.npsb+T?n8;st^-RS/!0tŧG~3v(nq19az~%M~m%INT^ p% Paƒ&36LR$zTP8Q>!"~Ǽ;>0na][t;-myK/1*" ለ4=D0JQ0iu1z/_vK T!*[X[FCsLJ5xb" a`0 A-iRL|L^Kb@D:1킕iJ"Vѫ!쵷qo" l^CX A{ikT7SuP+LGd`BR+嵈youker-assistant-1.0.1/qml/img/logo/Manufacturer/SIS.jpg000644 001750 001750 00000017336 12312451003 023452 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   !1 AQ"Baq2$#4t8xr3sD6V'HX   !1AQaq"2r$4Bb#T%UuRD57te&Vv ?-3"YK.!Һ^T TZT6rl̼jկ.kMWK&ؽ3G6K[{CٓǏ>!1CFiZBf \vE(P!7SZr#x# $W7!anvlYc=^3SrIzKQ'?hm`( zM"Q5 Uo_j4-&<$l*Lm Ye7 tVdU!J ַkݎF 8byu]6}$(l5kOjp˜A' =22~˜l$Sht<Y+FApBف(NLn@|tPXyb{TS:NEj g5攱*x57l(wp"%P;x埽f.hu.]M_}=`H}p@jhx41dy .S1DJc R:!H3VL'>H:8ȐbWTrt4G0>|c>U=uOtw}]_k~g׎9?_(鎰D!GqW{LAՔQֵ.қoǧ5[\3:fHG{Lr.N5;<]D|rr9ObXF1a`3iƨNA;pVߊcB*nș' 휁TT&_*Bo $9i-0dCfUG7z}6 L.Y4؍-@h?Eov)DjXSK]_^5wG µ$q@d+3zuJs7ݿeJXIs;[I2KR3?og ([neX'5+/ J!:gepVnW`=ZplqL0 =elwb?,f9Z5> dDpNC1tƖ'#%G|mlYU:}j$fJ b-1_QVV#d=gzJ?ch}ԩUIE*Fc1Zb Ωh-xNA:X2uag:A" ghUqgꚾh=G^D~ވ, 9\3<>M+T{pqrX35du#Tr2两Jb(DRqB {{Q Fy C>Ѫ I{쓪sZ&v0].Þ7sA lqI٢ -VЩѓ ⳵! ׸xXyJO7N.vՒZxuK9 Nvsd㾒V2:`˜0 Jð9[&sF( 4sy)ΥS{%RFH%Vb%lo>^~^:$bXyͨd3|_O0ƕzr~'@3rm ڬWpJ:˚IP*ɋnt|9"Fp|vkJj,J[l;[mG匣J]]<|f+h0"VxZegL""2ZLZ?TW]H&JL+ 23 CJ1XRĭMP)E8Ǫo1K[d \R_wZ@uā0wbHE>rtAyA$d1ys9㩟=b't/:Kw٬zԮ&pkpl ʭ:ګWz*()XrK-g ~z֨bɘm W(r'z8nڒ3W2nʒ6"pJ7*#4;I3`j*v\ b1"d^)|ku",m6j˓IB{a7;8xiE)}g<$_S.EPSHR );l/y|2K!'˶$8[cMQsԶ:ʀJ(;[9MlICCp S3RA#p9y=yAɨY*H:f%S3ʜZ>(_+1[}b]9%2SFߏߠyDND~^Ӹ}ܬ%CW&+b,Yp &0YU@=H`N)0zƲq%ÚjT jdiE4u3c@|ΜJ}|CW98UtVjeZbk&TOiD㗚lYByqxrߦ0&VvY%dnxR zK2andZNQon5f :rԬU.j@J ۅ(q 'f1an!Ʀ-6`g(ߒBȒFЭ{r\>p+gm;DP5]`P+ Q2eW F#FY,|ȩVJZ#'DM,!:+wfO(=L'r"I)E{#CU۽?.|9ۆLG~DN R,AFy0mS2[@2`쀏V[ui>I*Wt8]VvϮڑ HBd%)=>O)GU EmRykij)-ܺrJ.0^q"*[7GWBLxXul1L9%9U]QdC<I݁l&b\?TIn|Hz_n֩4zɨ5x^\Ѽ~SSgU.}PwkWɭ,ؾ6jL$eI.o"rD}|5"p$.`=Sy(9[]ؠ݀JmٔT6yɚ7ym'0L]C31r\GD'MhI4'_wOYƚp k.Kr¼,]ݫ:X6wIR(f6TA,&o`"C4OA( @mtMvYx6+ay&}բis(e-.N P z. e)Dy=| hbԔQosH PR#B* \XChi4\w24I[@8szcGkf|+gwm>ljB,jR]+#WC~V1w ~S:+H)}˲. e<&:ˠjbv6͍,4HmN-)rQe"xG' ]`DDV%?^|CDZ &#SXfh''P#/#珂?Yzg-!5Κ{C; ן'[A$]q 4_0 ،L ȺC(E`_ Or %L3nVWշqDϟ\OY =ah{0O`}4'Hew' 0qvU7^ΐ^?|fȭaw]RH ]9>p SË?l n2r2LJa pg'2prټ\ & 6jjrאtQ}Y';aTNr4 jAHEkʠY;+8ݛ+O0~)k`u) 'm?/dTN  @8{0?ԙ ̿ U+n0ԭ_k}.vfY^u!p иmNqcNO@pVB?n=@i&FʒOXzEs m"4 DIă((E* &>@A-4䠩նJj@iMD6ل+#5Ȉ_ 8apNhD#oص8(#o2 r216 pnEK۔tjVi!khNf)' mrp!p/~(ew=<}o; ivxRGb0j$&tAK h y'!%YO^);$0%?4`+U{"M6#7ϛ ٰ6>x[  C'w RF1a%-ś+߃gxUbh?}#xo{ybM2~UG6};˦?m'a)n 49$xGY{ Ui6{cd(V5_SUcY~N)Y4@(F/V|Am_Y }5ش SxCȫha0]Վ朴6h`Oم?ׄM "WZ!^l |LJJgq3QZ^ OfDx.GR\,r.u N+Oޱ:mW]B(|1g#VFPovᑸIexejD"¨#KWgSs9egz'z 0:do>dND ^Bァr=ctC V >_xQТ Ux05f :.FXM;q⼺iޡVTuc'l08Άco2}(}$Gx?sQ4;ծׄcX@Nv&Og(x2R(tWQT[ . dNܓ$(7619yM'?cLc1 ]wS1Pr2q(ݘWeYPO]Egt8.85"@6 kd* ֆ lԴ2nH gi7urعਪ3o6 `< 3vZqZˌHLmP)Xr@h(@ncݐK6> ?q{&Ǯ!HL4具w]D!efwECҘIg,d.ACz7H=p0.P/iv,pVQA ;G]:J=1apT]@ ;L 7Drf|88r,̻gnLRAu C+vo/yC؍vv3WIUC/nvկzG܎-%pk=$?0b^hvG#vG+Qu9$I&@b2 KY,9I˴Ј}3=|ErABXFspqz9M±(E7r? f ŭ\]g~FgR] 'sS :V׵q\ Ab⦃leu0HT)hN!Z< yo䱡`HmRz/0 _c J+" 8ӢSJqjw­QK 9PQ9CMMѡLioA64?Pg+A91.N]X* ] { ٹ@|jN Hh+;6s_@"]1HsXqj;/(ۣu]ZA40T|{d»-qY^ʿ (,.$o}ܖQB:#,5V^(M_*2NZ1zr $fWL-,c+7L$i wC}c1F"dʣ(4!jɌ Q>i4nNsi$Љ7BCy]=!YR`VV\`ACd/>2 ˎ{GReÝ? 0!^$m .kݝ3[Yܘ֠RvdƏICک!s 7Uf V'hdY\k0` b&Xč|DRD=+f>W6tu:*wN&&c^z \ 9_Q0m:(y5jlm._VK1nw̕y?d4,>~ϽcoXM" P{@~K8ETsgip#-^ǶYԫ+FQ-[d=[ٶmu[:M U{pxdqe~As28xљ:ɜ),̽YP0=E pJzE+R/ 8Q⋴c!+:]r^ =ܜcspc!;2=#c Z7;uxxKE5RDQo0 |$v{WKaG>"#Ryjt`D ͝DY6"[ܶaAMDnSD'ωr"G+'R"}-H[/r=9Oצ/Wo'kw[rTA#-lYE&ʗm,/v/.7 \)oV8oģZ@ =!sJ%\]̻"j_ 9P_k9aQ`)rcN3n:>&1?SNAVV6gfp8qd , ˟_ػ說+ IH4&2" Z@dX,ڢR5,IVA@QA:Q @B!ǼXK;k=~7w=ܻ>>muU:477hΟZU:PrOnnn" 6لP=t_ /Eh]CK_U.y"tdtSctbN.y['f g\aMI>*1 DHHEdI6AԷOi۲Kj9Kv 4AƗLNVkr ?rG&>-"l8>VO Rlb.z^@#nKb*RIZ^lMfZ׶z4$߼׏0 #_M-uUYw3wT0ԻUۖ}Ffj\S~y#=}sɩh^o##LO{`nV 4P3-HnҨP?Vb㽩 !\+ل,^m0욁ŏ>u?vU-M lk۰d[MN w^Ɨ y/Dnϕ0m8tΗքʠc![0vG߳^E+ _X{/\f,J,{9 CSY~",f-NXYx'ǭnVDm)U.>j )G~wNP b ࣒3ہeľ1_o Lf3/ cꥊ]?,BC®|cped<{?br|}Pqi82[ 1>2!Z,Q HqAYy٣ "L(..T%"&g@.pjoyzM~L7 2DAP\Pj cľCzPḂ}hhlY"񽣹N*-f22+4C?!N,@ʌb۳,|]PQʉT71>]DFN jTo2㫂LSK)q#ĺ(*oX??((q9ž݌N3٭"fЩӈp!ÊӸJw{IX-qG g屓H_X,+=pޥ4ȉ%.ILCjr=WF#wbgH]C#!<,!]P{FA%9)w3C ݄V8wgpO:r:V~6D'R7 W۠ ZRy<,\5\mN ^TQePE sjՓ=,e-vxρ˅"9Q1̽d,򷙰, S?#woNM-vTt)aze#*}ε8X߶=ES4MwyhE/`vy++-l *%@WF=_B"I>?q^^֕I6BE_$u';6̽BAҿaC{ ϡiQ׿}(9 Li]z4 y[/h'β)w̝N.,S.'pQQwC;؆;E#,Q*-#h4$8UՄ/N Q}dKX:9[me6ySPGiH {Bܜvߧ/u޲0Mﻲ#ˑ#k):[nϐ7~X|YƬ %X捱<-W03H5Ydv)I^;Xùm(CAVN돁6%a?gc\=_ip="C[Z /dٲ({/nXM|"PYu˂&m ݰ]A;v 7Ob0B;ǵ :Ӫr*9I9ݵ5db}V܎,Y&ܺ]t9*LXkBߏJyFr"ߒ 3VyfzKZs!B _\=#S{HI@ -R.}Y~-&]s932_٣zecD x IX5t$o~Y%eZ"jRardToe8{b' 0i`()ҳ~<2Q8P7CzTQ Okj"W K@rN>z LMEN5 Bݩ3-XNRDԎe%$Թ׿Wąퟺkc%GaHve+)hBT:7NƇQSR< RՓP=zJ.P "^]#bXȺa55 'vPrOX6RPG4vŌjK&e78$AÑљ^ga]L8lM#]QE:J (YNon%s'wࡐºߛB06[XN2ғnςEw8oB`CBNl <5C!+>!=[хUΫ9WFJu-%\pY3RpϘxX%ݞvykf|eq\(C$ DL=cz1r\d 0g}{$H< 5rފ]ۖSXϙ?dFxW[*cFL@K'%2% 73B|[~eDAq9a u^Us2o̷j0N'.п[UZoW\[GBf{3qpm㕶JTv{T=>Ny?29G~Jf-:a% g+DX0qQɊ ,>'w$wyr(/O-w'oa-HH"C$u".H{vAU7e'f5pSE.PKBXXƋ wYgpWjt2W[}/ߝW*/.wa˃mBt06+K,SB'NjФt C" [aݷ]OZhu>ȓ UڹD#9%p䊈s;բ$៳r:}Ѷt**ܧ{!ϒ]DV\4J?~giᎫL f׍C\=cS#qkq "ޞcN}Rwɚ*0_MќdˎwpU\yREc?lluz7 |yJ#3e!b Z5M <͐_[m}M,, $t,GX$l WkI8xӊS\!lnq3)^:Yjd*$n>ceJv[F/9H#Eǥs|"ܝn·]b E':<= #QC0$%>-"ݕ KZ`צc i˿"o(^׋gM z=rhxޗi3S@d~OnmS !@Åu#ҁ@'kdǤ̍HZlw>#mu{t|Aj5YWK Ru]xw̠ʧ?uzv|Tng3U6gIk8Vz*YJ&>W2mz/ =pkJJʤddd MmrK@5OnJ?IͿl%ZW{KMbR UT"SqqqT%ૢJgb6%gϞQUBF@xG뀏nM/IBR"@@P`EXCSDxDAE4|JH ;l ؈lvf)ڵk+{eL%rСC?:\ 7ox;5pxOYY)դ:t*Hi܍ &7#ސ_-=NZqAYӡ5`׮]0@ȒUvOxȮf{^BJ@6ܰޭh_aqL,ۧ?fZpv:3?ZsX·5u͟z2J?b!or7u/ ưd;?F0D LiwBdgӟƶC%eDI3G,9vY\y B\>(K)گZ.<0yN3OZveӖvTSIV©8="WxI`L8HGr;DbIZ#"8 d(Ops(=N>P^pX>f>H] Ķe7ȁ_1@_o=KEfСա+J)lxSjaq4gzg~g7 c)RCFOj1\`JA.~Wc+-FQ{UUmBH[0-XbLg4,Ǚt!9vAb2(Ktdu7pVn~8۰ ;0J:PӀ49{-l;q_=V ^ۚ10LBWF Z_Q W 5p r{A0-HV7QDV XFFPIu8U>!/WxDʜc %[B Yc<l5ٵl -\^%w&ԃBK*$XzwF:^|rޘ==*"#Ð_P3wDrHSNm/RIߡwɭVM"gԺm)$ 弿k1h䊅=%\*^9<ޓ Af?7ј. LwIBF_71[99@Iz83ۢoG-tüZ/v? ?3Ferf4WࡣԷK)Сu]y vsWv}I)/aNXU(gɪ12Cw^iRP3CVuY'8oK$52vowj!9Kh<RX`| k&w+wAk++fv/z3 vK1Kd[Ldr-c+)-Ko}Rό[Y=oI CGS p 5tj _s%gkBKPpNyc Û7pUݭ*GV,s32crPV(Ć=E9Q M9KQJr*>g%lj};FRaONU='7* NdZBIuo.c/Jt ʆe|78%U~[XS0s4O6kEWھlk];bu2\e6>25+"1ʍ<2m VوG}#GF͐:t2P8}o-OORUUti# kewuNco-Ch@_؜AFQft&#n\ IV͛7#&ٌ]UI{M0zR}]YSM:tpR thxGMС(z :tСu{ wAOסC?4_1c8P^ u:(Jr$jfǤiudɨ],s3zAfjڗ[!KYGIM!H2IڛၭzG1x14c ?wYPFJG»;K9iZ ˠ\t nǕWK.㓯0ve{d k `~a9uF4geQe{aEsaz{ #P,b'vؗ΃bm#; mMuc&B|FR9=9eP/2(ZvTRJr9e׿ŌA L:)q_1^^cvrT\Ă Iİn5{u<..X ۙ:K:U˷cX;Eal%8VT$ڻ?eu9..œG$oֈX€%:]T|u*#8I *bX)M؈o}۴=`]-^:gY5t b@(n H7~ ;!ljBh ]uT_l} md`)&[>qM\^^Q;:wYHj:L)ySpR14˕D(s34BY ~S8Kw= Cz oJ7 nF& E@xtXZؼK?J78pz4GD55= 0\u IATV7azs1=`QqO$B6uB)FA19DM%aOŗf[5&ǛWPZ+ZOEVlxaDտ %5rFFֆ 1'l`?d;9©Hi bC0;ŽEUEěq97vcˀvX\Dj6qrF$%k>zYMY*/r\aTLd>r  ŏyRh^'Nn8'K,fWbaHw<@a ޟ@^%BkhktivҎbȜ)#xkq=KUdsIkL=TI P$MsU%B9tŃ:"BNR LXSp\! vԷr Ivl.nY2a0HdIWUr#h"7t-uv?@ \=A9s'sr[$C_rU0=B򘁬R٘Uϼ9? K`Q! odL/́wsns1[0 >$%<@X1Q0$Hۜ۰nV7?Kl\uܩM=1Itgrt;VЮ&yե.1a9PIB(.?+$텘9 ) 9ٴAReڬY V ,py~ Sv :WF^6*g ?GdYcv9uN V$zP`}W^ Е jg&lhDח I8ʖ F^3WzY%BP'[%sKe:.83ْ(3 W n2`hZ)?i0L2H4nF (^zUzloU^14y:aͧQ0} JJ:f<5.׹wP A F8>%=r!зmhT!CÅI'$A!l^.&L2mlwNZ^,<qaŪ.*ŃГb_Jl֖Ērp|: -4rNa< ,- ZNh$9$ 3xD5яA&.E E/5.T߹ v'3I2ÿ;?#MʚQ0MĐ=,5Ђgx-%B~(F fP c21ڬ*Cw`Mw ׭eXᔄh8C(*Z*ǢqL#$oWBv;6UrI/Zv}A<'"rtJ#{PYmw=W'FM,f`( Cdb߸zq?*&`ߣs\U'Iš*6ɼP".{Lt/lY)O4UHNGꔫO~j=oZJZ04+Vz! AZd<\wU㬖 +6۟%C-l/΀@rg=9* _{A! ù ~X_2(`fZ2\t7c8'Êѻ A(IuM'pSS1(j"QN_g>{|)II'N3o,ƴ1\BVvʏ<3r*j:\h!V(ɺ#2ʢFſICeK1mpL¦\XG *(# z(û[lIXaF(}/-yJy-{:2c5vVkQ *o s,Z ' q9=V'6&ɐ!k\8G/F. 2H(9V.ߞ4NOvfJpsps4[zgSZwp izAiwR_s!^}D3[C} yoyKq!" (齠$uSʈ F:{ ʈh0[*0zʏY'B-ޜ'R<޻Ww "- to_BU pŠv>Ο`A.Ӌ鸞j*Q`ܘ%^zJqPP2`4M/ MNܵBHP;Q#Gr!J iW($?E2juqwN>l AL8(1sp(?ȉ,QSB罿l-/tq {GwPRjhZQ(<;M3;{wĮ#eRNOH8 ._Iɰf&eI5Jq) &g)YO^2ʾMwcd{>n( 㮃ἉPsiq5@v!w?]*ZZ^Kex b(&Zyọ0NA~pڥPm ?IUnY8+bm"8Ȁ%B9Н%Zu{CR<0s#@>⨜_&:r &_',+g)މf+,Y-|&3ϊ vlg'uA{K}♖}g* 3q\+\(8n (zaG X5P3^OF n^#IwƴYsۨd<1g'I!0,<>1INIn`K(-^Si/˼#_8M$StڇBp? NHwI)nNt\UUTľ(sA/oCtP-ד›ZP'E })up+WV33λg,G|ZJD(^ RSNnz߈Op W*RB¡Aޭ8Ēޝ0?vx(ma|].τ$vJ6@X8 &spPkj`{6s{?Ooû1D(?uP\kڵseוѻE7׽ s1]էN_X@aڑ/_ZUat8i},>IsorvpA,̸[7hVs+fk>n|s_% 돉^G80īt!jhmҊds å'1[Hed*CdnLtǗ^SόwYyD[˲q\ qhQTE):\sPr+yNbw8z,BѳZܳLW0ċ}yLxy]5~Z9E1xUVwRUU|;tz BVkcg(=26MI)Jèyr*H 5q->V|JكfԛP(R>-aAH i9s|b#d2yU>\iTKs*My<]'DI[!J˶GǸ3'XbSl,Oo.{kĩ:jBi%[L[A깸H3v9Ћgˣ~zXj6c}.PYIp :t`ݺuB1"8XS go]C:j}!00P7n ]:tQS8aRdW"8Z0u0:t3f7?]KD>3IENDB`youker-assistant-1.0.1/qml/func/common/Page.qml000644 001750 001750 00000012222 12312451003 021741 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ** the names of its contributors may be used to endorse or promote ** products derived from this software without specific prior written ** permission. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** $QT_END_LICENSE$ ** ****************************************************************************/ // The Page item is intended for use as a root item in QML items that make // up pages to use with the PageStack. // NOTE: this page is used as a fallback if platform dependent implementation is // not available import QtQuick 1.1 import "UIConstants.js" as UI import "PageStatus.js" as PageStatus import "PageOrientation.js" as PageOrientation Item { id: root visible: false // Note we do not use anchor fill here because it will force us to relayout // hidden children when rotating the screen as well width: visible && parent ? parent.width - anchors.leftMargin - anchors.rightMargin : __prevWidth height: visible && parent ? parent.height - anchors.topMargin - anchors.bottomMargin : __prevHeight x: parent ? anchors.leftMargin : 0 y: parent ? anchors.topMargin : 0 onWidthChanged: __prevWidth = visible ? width : __prevWidth onHeightChanged: __prevHeight = visible ? height : __prevHeight property int __prevWidth: 0 property int __prevHeight: 0 property bool __isPage: true anchors.margins: 0 // Page margins should generally be 16 pixels as defined by UI.MARGIN_XLARGE // The status of the page. One of the following: // PageStatus.Inactive - the page is not visible // PageStatus.Activating - the page is transitioning into becoming the active page // PageStatus.Active - the page is the current active page // PageStatus.Deactivating - the page is transitioning into becoming inactive property int status: PageStatus.Inactive // Defines the tools for the page; null for none. //property Item tools: null // The page stack that the page is in. //property PageStack pageStack // Defines if page is locked in landscape. property bool lockInLandscape: false // Deprecated onLockInLandscapeChanged: console.log("warning: Page.lockInLandscape is deprecated, use Page.orientationLock") // Defines if page is locked in portrait. property bool lockInPortrait: false // Deprecated onLockInPortraitChanged: console.log("warning: Page.lockInPortrait is deprecated, use Page.orientationLock") // Defines orientation lock for a page property int orientationLock: PageOrientation.Automatic onStatusChanged: { if (status == PageStatus.Activating) { __updateOrientationLock() } } onOrientationLockChanged: { __updateOrientationLock() } function __updateOrientationLock() { /* switch (orientationLock) { case PageOrientation.Automatic: screen.setAllowedOrientations(Screen.Portrait | Screen.Landscape); break case PageOrientation.LockPortrait: screen.setAllowedOrientations(Screen.Portrait); break case PageOrientation.LockLandscape: screen.setAllowedOrientations(Screen.Landscape); break case PageOrientation.LockPrevious: // Allowed orientation should be changed to current // if previously it was locked, it will remain locked // if previously it was not locked, it will be locked to current screen.setAllowedOrientations(screen.currentOrientation); break } */ } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/LITTLE TIGER.jpg000644 001750 001750 00000007444 12312451003 024643 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1!Qq$ A4%a2BrDE3cdt5&6V"RSTU71a!AQq$B4T5"bt6 ?LyN1&4&9{9ʂ gNDbBLWE>Qք>F%Ew':CE ya0}vyjW _{lИ% wZxf Xd-FYw{~T^o\Vo>x6jeSӾkZ覣zs:c?UFvGYGJIŎQ*hm'?"LeMLGu58.,MTa:&T֪W2wl]攺9:XK5}A sO`rVTiʤ9%Z58 pG+SU4NȘ4L~]<0@nÚfLQ+Ia V&= 80]Ke_0]l`aûw>=\ WcjyE2vQ@5;5q7i>p+e 櫤#ozgW35TSOʺkm֞kN^'W<P '#wqpu8p^5[XD˹=qmgRyd@ % K]DT+Q7xam&_fuyfWWRVUekUM-NiuygydnVe*Μs+eUF% W`FTKT5D{%l }-:((W!/s*#v`BѨs~K׊]%%--#r[jb:UGGCWd֪ʳ|n9o,/}jdWClU*eT #&iTY5/dt$~C\E}%;ś!^*<ۊ($7ƺ$T 'ti*`/ +Y.mkfEܭR^ faa oPS;O(\GֵFp"jŷR'-vkmYz ]&; =qA&P&G֍: q˹.# ou~ACnO R^oC+fm+l&^<Ea@QaOUPcKzun^Z[绒BBD䗕Z=pB~zc 3-{md˶Wv ӳ*΋q@z5`Gk'GꢋrVX2:e֙7Wvcy[2,.ZS'/7T ,3(mcEuCuh|e.ey\)է;ig~zfk fJ5XOFZrSҖvr62$ft0H> (Va'71M~L&ծj;W]O45m(v?OjXu&aKZuc,}Nj'0Ax!K&J] VP=*Tj?γQ[QV3ZͅYʆc]2yd5r(aYb  |$+4!7.icߧSò0@~z[2+nW*tUef]lCN1y'MqǿM6 -ud+(=V޴cXyRj 64I@<`?KPP %K]ݗ{~n`dbK)7ț+P׎'FGn;a44tV,1>3mЫ/8R- ml 2 "Q#!D4€ eszF\n4Ԡin-Qhv# ѣ偍XDt쬱V>% MIo3WiG`C91Q76N0}`ZHodXd hO:v[/s&5:B1ďd6&hS I$X11(KnD/aAǔ"U-r0@ A^}^_ |L#8aǚ!Cc bLG'`$w!#,{eAPyqaKhD <x"WWi_youker-assistant-1.0.1/backends/youker-assistant-daemon/data/processmanager/000755 001750 001750 00000000000 12312451003 027621 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/toolWidget/cookies-bg.png000644 001750 001750 00000011055 12312451003 023557 0ustar00saucysaucy000000 000000 PNG  IHDR22?tEXtSoftwareAdobe ImageReadyqe<IDATxZyՕ-hnh`nvl`@]7@߀`bD'.q3!{2l @"M,~o[wνU ?}[Ul{[|oU䧷EC+j>6ɮ +8Zڭwc+[CL9_RNxO2(zOn/{}[(+ׅ:Q6qX8P E?Gڹ0_|F,\ fٵވ-;VA &bR^ +[Lcߒqx뤙Y,5?^jEر{]1@j Q@"R=I s G5ex< {n%fYq&kފaN}e>A1Ful jB?EyUtȴU5E3c3D*՚qݣqZ'T?P`g" "EgU( {~XLAvo@iR OR7{f[7Y h.ŲmJG 2UyOS$Q10U3e7f )ळĒ)+/ᣕӫ4CuRu;g,*³+/ĉ ;O#ϡ)"g*2 rq29# 1?LFI;?G7 ~81(BQ 3iJ2d (ׇ=!1U2|Ӗ%%i|?fFv)})$-OA lP=z"Br\63z+}4!rBzkD;14spZɻX3t!~zы(1j3w@(_\@}cX0 ]δT?% b}!̜ x .qL}ꚷJ*VKP z!.ގi$2q0ll9& EMTZ2 S#LgQH bQambf^#sA:k/ywnQO㥿4@#L#t-Dªp|v>|XveKظ$<`48][HKڃ"ʕSpze7{#2$pnXGnvㄙ Կ%m?oGZ2AK˧'1uZ^'34c6#ѳQ)s$?ܫ( yس';E#d{bnc9a`,L8k&Q཯+5 ]:)(SK$rL˽uSXy*8b&x3-RZ`J +by$L,#cm˦XMwJR2ִdÆ/oG7!:ZIDte-@L}tEqd^%VO[LF% j x-=\D_e`-Yȝsl/>c`<=8cv;# `"z5EN MHtNߧ?7;"_^ƂA%bxr@H\mE?kBa\zV#2ՒU9i<1HYIK>)npzA$*$& D+^Kqş'mz~4ZJΦgcro_'sv5nb!#8c?%0KS"jqĚ}m(SSʡwcc)75QWMsX-fK?`$ v˾D r 7b]M;U"a\l{\g: R_埏[~5e͂}4QpF[7POmy_!ЛB]8| I4RFETagxcR4 R%Szd/RMuAuㇶMq1 N7.v_z̝B\!ʈڣ̠00Ax̓fd-(2GUU[G%(욢|"JZ/XG|Q|:\S1b|_6/C.]\T}ۋ|aeRLZ;DO< mvQr"d^HkB5X ZS:}7wHծ'wLL(/Wu%xt1wY/QH^QQm#5lbnXnPГ(+t5Z`.~v^GuCI&"! :f5ޠ4zo|`$̽p[S[ ENZSe)RahEcn Vw#;w&){+GAP'v3;ߍw:ލ}TU '!{c[%T]> FDdz.~bڅ]`]Rps!d*si(D~W (dib-!'^}wB.O&amP?t5s$p 4#f\ I!'QMosYn9Um[Y(3ju|MshǭwWQu,_ 6Lok^J O{rg 06n>IENDB`youker-assistant-1.0.1/qml/img/weather/d0.gif000644 001750 001750 00000005463 12312451003 021345 0ustar00saucysaucy000000 000000 GIF89a00}99<>=<>?A@ACCBDFEGHJMPRVWX_]dgrx}69::9;;<===?@@@BBBCEDFEGIJMOPSRUVYZ_^bdilpsuyy{~FJQYesasѫދРւƿȥԳą؞pʺ^ܑjINRQTW߿P[^\!%*.045859;?>@DDFHJEMNQSRUitzރ $&)(*..-117:=KJOTߎ!,00ң@:*\ȰÅ0# Hc {0ǎ z4CCT@&ONÈ@aGCPcЧPzG @j  B,k"@,ʖ%J$ PRDȑx"`5۠oÈV!1JK,&Z7B%$ L*L@dIְaO` ԡZc ^ &@pbysR(@ab!V:VN0aNPB'_“6T )$NAAULa*"a7"*,X THT$EU4X*,"UpxA*/h /l/J.p[XAP&J6#0øNhK7)Z`qjWhY4H[)M7O?̷Ì=.p3**klXdrAn)>jζpL3<#4"Q"%:jc2P-sc SFґ4a~cH1 P+ s012kdQÅ-jQh,;:эfcӀ+Ta3@ `06 gTHi g9xg! `F̱~cؠ3A6q@0ؑsWGG };fh<2FO(aGs\$pNzғ0tCH1H F1_ $ .5 L0u _d0G: aЌ&4`c| G>D'n&HI9*t0`3ivfs/Nrk@K9‘r8(DPsCG7^A5AL0R%PC)ҕq# uLe qC)HS64m8APz7m(6p0ͦKp|9{pT6B7lb=Eࠪ8TiXjֳ(X@Ӑ7 tu}+d YQ 8栂96) z*Y+⠬Uo#z)`&X`(pC T@\;ȡuBWDyYj;q-];VQH(7rb8RHȑlW,`/ V1TVp<܁/84 ;^A)Z_ɖ(E^8,?!-xA U\B2~Db0A*X1np Zb<Ìayp π4bRH~$g?,ϋ  IHB7iJ%MA~ش!fBAgmU|D fi> 'd T4HlıQf';} lJ؀(D QKbN=P"5ٍUb6(DO ' A'a Bt"?!&NCԀ"n b )nMy9 C|"w;youker-assistant-1.0.1/src/modaldialog.cpp000644 001750 001750 00000012647 12312451003 021120 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "modaldialog.h" #include "ui_modaldialog.h" #include ModalDialog::ModalDialog(QWidget *parent) : QDialog(parent), ui(new Ui::ModalDialog) { ui->setupUi(this); this->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏 this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); ui->btn_close->installEventFilter(this); ui->btn_min->installEventFilter(this); ui->okButton->installEventFilter(this); ui->closeButton->installEventFilter(this); ui->btn_close->setStyleSheet("border-image:url(:/pixmap/image/closeBtn.png)"); ui->btn_min->setStyleSheet("border-image:url(:/pixmap/image/minBtn.png)"); ui->okButton->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); ui->closeButton->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/quit.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/quit-hover.png);}"); //QLabel自动换行 ui->displaylabel->setWordWrap(true); ui->displaylabel->setText(tr("Left-click to change the color, right-click to exit from this detection."));//点击鼠标左键进行更换颜色检测操作,点击鼠标右键退出检测。 QObject::connect(ui->okButton,SIGNAL(clicked()),this,SLOT(accept())); QObject::connect(ui->closeButton,SIGNAL(clicked()),this,SLOT(reject())); this->qtui = NULL; } ModalDialog::~ModalDialog() { delete ui; } void ModalDialog::on_closeButton_clicked() { close(); QDialog::destroy(true); } void ModalDialog::on_okButton_clicked() { //开始屏幕检测 monitor_check(); } void ModalDialog::monitor_check() { if (this->qtui) { delete this->qtui; } this->qtui = new QUIBO(); } bool ModalDialog::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->btn_min){ if(event->type() == QEvent::Enter){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->showMinimized(); }else{ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->btn_close){ if(event->type() == QEvent::Enter){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->close(); }else{ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->okButton || obj == ui->closeButton) { if(event->type() == QEvent::MouseButtonPress) { QMouseEvent *me = (QMouseEvent *)event; dragPos = me->globalPos() - frameGeometry().topLeft(); }else if(event->type() == QEvent::MouseButtonRelease) { setWindowOpacity(1); } } return QObject::eventFilter(obj, event); } void ModalDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void ModalDialog::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(1);//0.5 } event->accept(); } void ModalDialog::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } youker-assistant-1.0.1/qml/img/icons/checkscreen.png000644 001750 001750 00000003606 12312451003 023007 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<(IDATxڼW;lU=Y| " H4THP %-QRC U$ D@BJl5&^zg=νofKX3sϽ̡CyhcesNgjv?eݻwcnnN iǤ =l\.$M.]|p~~7>>yT*WbvEe5\ aˋtbT#na5 )^|0·5*+z%2/9,1V 2 =e s/{>V|;v{]=ek2,a{p8R*6عixy`^nfέa>zO%(wi EF&e&\'7ʓyoƙlWv& DN~;=^} ~$/^ct5)Z[aPTAU66G@u_iöST* 瀝ȅ/o ]@GHhMI F@}nGQC{ּ߽ Pb z%T-(!!Pv^Iz$$7;`KHAQ9澐`_4DY¥~_fDбm*:2~-eu D)Ǵ{}3$qJBHr ؀_Be3*:PJ|!N&d :3F2@A/6ei UdWbJ_܈,K݁\ZOlF"9)(jlL3wPdU50dԖ)W ck*+cQ ^䟜UɃf FS ln4bZ`/#NP}ײ2vL،8,}+z/$(("_f7i|ƚ<uz3E =grr KطfsѺTQXZ倘RއlD<bObOwC(V ѸG9@޷HͯollLcHΊ-+WU I".56K; o7!6v̇Z6+/'vgΧzr=<{y%އzm;Z7eRY]qΦGG_~ ]Q!ږ92={p}ر`_/'IENDB`youker-assistant-1.0.1/qml/img/weather/d13.gif000644 001750 001750 00000005627 12312451003 021433 0ustar00saucysaucy000000 000000 GIF89a00::;=>@@AACCBFFGJLOWYXi}ܢ߱799:;<==?>@?BBAACDFFKJLONQRRTFWUMZY]]]V_UbPf\eWinrjttcqcy|mԀؗߧHavߎxelĶɝt֙ǻjйTމ>ID\fv$&'*4!,00c$`͚*\P@svgnNw! O;j!B|'w@ r='H9{GyٓDĕ7o8hGA>=;ɓ)9vЇZ9u(`MHQ3ēIч|Dž^9燅 =c"<`; ߰O7~H J993>܃>@>9ܣ K|)H Kb&29"==3O>8yO*=dr &:H!.qN=;dON3O.(BȩJ# TZ㎬9T }XαR$""#3x8bؠ3pN;!VL ,+\)" (HAmF9q2! Gnu`WW07h+\BR )6QBxE6 QD %/|Ӎ|]T4H"i E2Ʊ )x*0MAwwa)²0,4, ZB7`e EA B HvPxcȰwL [T =Em QKX49?v$谐[x_B4NqްHq ^\![/ S(c:83pZϸ/p@o ؆?PxɈ. J3vn GMj+d8 Ю2NiT: ,K 1໳ũMl+X@6~ _`4id ɶ.Y>ͅ_ `Xcј)nkF.Nd0BB0AotF7.[Ṙ7w2q`tNr\$̵m(,10aF1a  8:ҁ1 l8IԻ _cUG5񅣛f5Q#d1K1^#;youker-assistant-1.0.1/qml/func/cleaner/FileItem.qml000644 001750 001750 00000025742 12312451003 022717 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id: container property string fontName: "Helvetica" property int fontSize: 10 property color fontColor: "black" property bool fontBold: false property string text: "" property string descript: "" property string size_num: "" property int item_index property string bgImage: "../../img/icons/green.png" property string bgImage2: "../../img/icons/blue.png" property string bgImageSelected: '../../img/icons/list_item_selected.png' property string bgImagePressed: '../../img/icons/list_item_pressed.png' property bool selected: false property bool selectable: false // property int textIndent: 0 property bool checkbox_status: true property bool split_status: false property string btn_flag: "one_key_scan" property string itemFlag//1210 apt/soft标记 //1212 cache property string browserFlag//浏览器标记 signal change_num(bool check_status, string browser_flag) //作为子项checkbox,当状态改变时需要通过信号传给父项以进行个数统计 signal clicked width: 850 - 2 height: 30 clip: true onSelectedChanged: selected ? state = 'selected' : state = '' onCheckbox_statusChanged: {checkbox.checked=checkbox_status} //当父项传进来的check值改变时,强制改变全部子项的check值以进行统一控制 function get_last_name(str) { var need_str = str; need_str = need_str.substr(need_str.lastIndexOf("/") + 1, need_str.length - need_str.lastIndexOf("/")); return need_str; } // BorderImage { // id: background // anchors { // left: parent.left // leftMargin: 20 // } //// border { top: 9; bottom: 36; left: 35; right: 35; } //// source: bgImage // border {left: 35; right: 35; } // source: (container.item_index%2 == 0) ? bgImage : bgImage2 // anchors.fill: parent // } Rectangle { id: background anchors.fill: parent color: (container.item_index%2 == 0) ? "#d7ecfb" : "transparent" // color: (container.item_index%2 == 0) ? "#d0eafb" : "#d7eefd" // border.color: "black" // border.width: 5 // radius: 10 } Common.CheckBox { id: checkbox // width: 30 checked: true anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left anchors.leftMargin: 30 onCheckedChanged: { //单个checkbox状态改变时,先将状态通过信号change_num()传递给BrowserCookies.qml container.change_num(checkbox.checked, container.browserFlag); //for apt or soft if (checkbox.checked) { if (btn_flag == "apt_work") { var aptlist = systemdispatcher.get_apt_args(); var word_flag = "false"; for (var i=0; i. ### END LICENSE import sys import os import signal import glob import fcntl import shutil import logging import tempfile import subprocess import re import dbus import dbus.service import dbus.mainloop.glib from gi.repository import GObject import apt import aptsources.sourceslist import apt_pkg from server import PolicyKitService from policykit import UK_ACTION_YOUKER import time import cleaner from detailinfo.cpuinfo import DetailInfo from beautify.sound import Sound from beautify.others import Others from appcollections.monitorball.monitor_ball import MonitorBall from softwarecenter.apt_daemon import AptDaemon from beautify.theme import Theme log = logging.getLogger('Daemon') INTERFACE = 'com.ubuntukylin.youker' UKPATH = '/' class Daemon(PolicyKitService): def __init__ (self, bus, mainloop): self.infoconf = DetailInfo() self.otherconf = Others() self.soundconf = Sound() self.ballconf = MonitorBall() self.themeconf = Theme() self.daemonsame = cleaner.SearchTheSame() self.daemonlarge = cleaner.ManageTheLarge() self.daemonunneed = cleaner.CleanTheUnneed() self.daemonclean = cleaner.FunctionOfClean() self.daemononekey = cleaner.OneKeyClean() self.daemoncache = cleaner.CleanTheCache() self.daemonApt = AptDaemon() #self.daemonApt = AptDaemon(self) bus_name = dbus.service.BusName(INTERFACE, bus=bus) PolicyKitService.__init__(self, bus_name, UKPATH) self.mainloop = mainloop @dbus.service.method(INTERFACE, in_signature='', out_signature='') def exit(self): self.mainloop.quit() @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_homedir(self, homedir): self.soundconf.set_homedir(homedir) # set cursor theme @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def set_cursor_theme_with_root(self, theme): return self.themeconf.set_cursor_theme_with_root(theme) @dbus.service.method(INTERFACE, in_signature='s', out_signature='b', sender_keyword='sender') def kill_root_process(self, pid, sender=None): status = self._check_permission(sender, UK_ACTION_YOUKER) if not status: return False cmd = 'kill -9 %s' % pid subprocess.Popen(cmd, shell=True, close_fds=True)#加上close_fds=True,避免子进程一直存在 return True @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_user_homedir(self, homedir): cleaner.get_user_homedir(homedir) @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_system_daemon(self): return "SystemDaemon" @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_computer_info(self): return self.infoconf.get_computer() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_cpu_info(self): return self.infoconf.get_cpu() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_board_info(self): return self.infoconf.get_board() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_memory_info(self): return self.infoconf.get_memory() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_harddisk_info(self): return self.infoconf.get_disk() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_networkcard_info(self): return self.infoconf.get_network() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_monitor_info(self): return self.infoconf.get_monitor() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_cdrom_info(self): return self.infoconf.get_dvd() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_audiocard_info(self): return self.infoconf.get_multimedia() @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_time_value(self): return self.infoconf.uptimeinfo() # -------------------------sound------------------------- # get sound themes @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_sound_themes(self): return self.soundconf.get_sound_themes() # get sound files in current sound theme @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_sounds(self): return self.soundconf.get_sounds() # replace a sound file @dbus.service.method(INTERFACE, in_signature='ss', out_signature='') def replace_sound_file(self, newSoundFile, targetSoundFile): self.soundconf.replace_sound_file(newSoundFile, targetSoundFile) # restore a sound file @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def restore_sound_file(self, targetSoundFile): self.soundconf.restore_sound_file(targetSoundFile) # restore all sound file in current sound theme @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def restore_all_sound_file(self, soundTheme): self.soundconf.restore_all_sound_file(soundTheme) # -------------------------others------------------------- # custom plymouth bg by plymouthName @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def custom_plymouth_bg(self, plymouthName): self.otherconf.custom_plymouth_bg(plymouthName) # add new custom plymouth @dbus.service.method(INTERFACE, in_signature='ss', out_signature='') def add_new_plymouth(self, customBG, plymouthName): self.otherconf.add_new_plymouth(customBG, plymouthName) # get existing plymouth list @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_existing_plymouth_list(self): return self.otherconf.get_existing_plymouth_list() # check and save current plymouth when init @dbus.service.method(INTERFACE, in_signature='', out_signature='') def plymouth_init_check(self): self.otherconf.plymouth_init_check() # get image path @dbus.service.method(INTERFACE, in_signature='s', out_signature='s') def get_image_path(self,name): return self.otherconf.get_image_path(name) # Delete the boot animation from the list @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def delete_plymouth(self,plymouthName): return self.otherconf.delete_plymouth(plymouthName) # -------------------------monitorball------------------------- # clean up memory @dbus.service.method(INTERFACE, in_signature='', out_signature='') def cleanup_memory(self): self.ballconf.cleanup_memory() # -------------------------monitorball end------------------------- @dbus.service.signal(INTERFACE, signature='s') def clean_complete_onekey(self, msg): pass @dbus.service.signal(INTERFACE, signature='s') def clean_error_onekey(self, msg): pass @dbus.service.signal(INTERFACE, signature='ss') def status_for_quick_clean(self, flag, status): pass # a dbus method which means clean complete @dbus.service.signal(INTERFACE, signature='s') def clean_complete(self, msg): pass # a dbus method which means quit clean by clicking the policykit's quit button @dbus.service.signal(INTERFACE, signature='s') def quit_clean(self, msg): pass # a dbus method which means clean single complete @dbus.service.signal(INTERFACE, signature='s') def clean_single_complete(self, msg): pass # a dbus method which means an error occurred @dbus.service.signal(INTERFACE, signature='s') def clean_error(self, msg): pass # a dbus method which means an single error occurred @dbus.service.signal(INTERFACE, signature='s') def clean_single_error(self, msg): pass @dbus.service.method(INTERFACE, in_signature='as', out_signature='', sender_keyword='sender') def onekey_clean_crufts_function(self, mode_list, sender=None): status = self._check_permission(sender, UK_ACTION_YOUKER) if not status: self.revoke_clean_onekey('yes') return else: self.revoke_clean_onekey('no') daemononekey = cleaner.OneKeyClean() try: daemononekey.clean_all_onekey_crufts(self, mode_list) except Exception, e: self.clean_error_msg('onekey') else: self.clean_complete_msg('onekey') @dbus.service.method(INTERFACE, in_signature='s', out_signature='', sender_keyword='sender') def history_clean_records_function(self, flag, sender=None): status = self._check_permission(sender, UK_ACTION_YOUKER) if not status: self.clean_complete_msg('') return daemonhistory = cleaner.CleanTheHistory() try: running = daemonhistory.clean_all_history_crufts(flag) except Exception, e: self.clean_error_msg(flag) else: self.clean_complete_msg(flag) @dbus.service.method(INTERFACE, in_signature='', out_signature='', sender_keyword='sender') def clean_system_history(self, sender=None): status = self._check_permission(sender, UK_ACTION_YOUKER) if not status: self.clean_complete_msg('') return daemonsystem = cleaner.CleanSystemHistory() try: daemonsystem.clean_the_cruftlist() except Exception, e: self.clean_error_msg('system') else: self.clean_complete_msg('system') #@dbus.service.method(INTERFACE, in_signature='', out_signature='', sender_keyword='sender') #def clean_dash_history(self, sender=None): # status = self._check_permission(sender, UK_ACTION_YOUKER) # if not status: # self.clean_complete_msg('') # return # daemondash = cleaner.CleanDashHistory() # try: # daemondash.clean_the_cruftlist() # except Exception, e: # self.clean_error_msg('dash') # else: # self.clean_complete_msg('dash') @dbus.service.method(INTERFACE, in_signature = 'as', out_signature = '', sender_keyword = 'sender') def cookies_clean_record_function(self, flag, sender=None): status = self._check_permission(sender, UK_ACTION_YOUKER) if not status: self.clean_single_complete_msg('') return daemoncookies = cleaner.CleanTheCookies(None) try: daemoncookies.clean_one_cookies_cruft(flag[0], flag[1]) except Exception, e: self.clean_single_error_msg('cookies') else: self.clean_single_complete_msg('cookies') @dbus.service.method(INTERFACE, in_signature = 's', out_signature = '', sender_keyword = 'sender') def cookies_clean_records_function(self, flag, sender = None): status = self._check_permission(sender, UK_ACTION_YOUKER) if not status: self.quit_clean_work(flag) return daemoncookies = cleaner.CleanTheCookies(None) try: daemoncookies.clean_all_cookies_crufts(flag) except Exception, e: self.clean_error_msg(flag) else: self.clean_complete_msg(flag) # the function of clean files ### input-['filepath', 'file...] output-'' @dbus.service.method(INTERFACE, in_signature='ass', out_signature='', sender_keyword='sender') def clean_file_cruft(self, cruft_list, flagstr, sender=None): status = self._check_permission(sender, UK_ACTION_YOUKER) if not status: self.clean_complete_msg('') return try: for cruft in cruft_list: self.daemonclean.clean_the_file(cruft) except Exception, e: self.clean_error_msg(flagstr) else: self.clean_complete_msg(flagstr) #def dbusstring_to_string(self, string): # tmp_string = str(string) # patt = "u'[\S]+'" # tmp_list = re.findall(patt, tmp_string) # return [ok.split("'")[1] for ok in tmp_list] def clean_complete_msg(self, para): self.clean_complete(para) def quit_clean_work(self, para): self.quit_clean(para) def clean_single_complete_msg(self, para): self.clean_single_complete(para) def clean_error_msg(self, para): self.clean_error(para) def clean_single_error_msg(self, para): self.clean_single_error(para) def revoke_clean_onekey(self, para): self.clean_complete_onekey(para) # a dbus method which means clean complete @dbus.service.signal(INTERFACE, signature='s') def finish_clean(self, msg): pass @dbus.service.signal(INTERFACE, signature='ss') def status_remove_packages(self, type, msg): pass # a dbus method which means an error occurred @dbus.service.signal(INTERFACE, signature='s') def sudo_clean_error(self, msg): pass # the function of clean packages ### input-['packagename', 'pack...] output-'' @dbus.service.method(INTERFACE, in_signature='ass', out_signature='', sender_keyword='sender') def clean_package_cruft(self, cruftlist, flag, sender=None): status = self._check_permission(sender, UK_ACTION_YOUKER) if not status: self.finish_clean_msg('') return try: self.daemonclean.clean_the_package(cruftlist, self) except Exception, e: self.sudo_clean_error_msg(flag) else: self.finish_clean_msg(flag) def finish_clean_msg(self, para): self.finish_clean(para) def sudo_clean_error_msg(self, para): self.sudo_clean_error(para) if __name__ == '__main__': os.environ["TERM"] = "xterm" os.environ["PATH"] = "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin" os.environ["DEBIAN_FRONTEND"] = "noninteractive" if os.path.exists("/var/lib/apt/lists/lock"): os.remove("/var/lib/apt/lists/lock") dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) #gobject.threads_init() #mainloop = gobject.MainLoop() GObject.threads_init() mainloop = GObject.MainLoop() signal.signal(signal.SIGINT, lambda : mainloop.quit()) Daemon(dbus.SystemBus(), mainloop) mainloop.run() youker-assistant-1.0.1/qml/img/toolWidget/000755 001750 001750 00000000000 12312451003 021025 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/backends/youker-assistant-daemon/000755 001750 001750 00000000000 12312451003 023677 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/icons/tab-active.png000644 001750 001750 00000000207 12312451003 022543 0ustar00saucysaucy000000 000000 PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<)IDATxbJ9ɧ?L @LHlBa#acBCpIENDB`youker-assistant-1.0.1/qml/img/logo/component/board.png000644 001750 001750 00000001070 12312451003 023441 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<IDATxb?Mc@pyM 45@V7 ~ Z10222\ j%10ZL3p0 @ 1,00\Y<+Ã.0\לp6F_ 0 (*^^Z ??100޼2&E?t#9 L¢ . p~#0@j1 >dE0/(NH10cޠz /1|!\ܛYB^[eeH1eo{.^B׳.C CtT._ɓ&X`Q~>2YY DCP`,=/,g\.cd?^섁x%@qeX /5rϞoGh456G0j$7{GQSSDdv[?Ķ? CXX}]dII5! ǎWT2֮<ӧOq=L>3IH|Z~,,0ϟgϞ ~uix%؇#GJa nx" /Dttthbc1N`z7 ?&MٳUTlMg6MQǏq ;S$G{ Xo*9dm}9Q'*`,b%`tuuNWXJ@t޽f!qlB@ #s֨}a0;:%Yf!..ƍS׮]CII:23$D#)) sQXқIpA647DZˍ_5#F'Oē'OpB$$$`ذahUTTXd`beU5"## F `o>E02 {[6o`ԩ@ee%rss%t:1vX@ii!j=eƪU IߖӧvAאЅ &hyyyI+Wꕐә/WvܩN 'Ҵj"p=!GB:g5441fN~3TW(v[lFM444Tq>c}ȑ#2p)ub& M\B?B,ae`lu X(;~zs#^8p??/ЗGΦ{  (33S4̾pPDž |!h=p:W9>q ͈$"護WڢN[[=^Yo<,Abˮ3Jr~=nF))>EEE6mɶz璞NrQvAo:կ뽢 ?*dtzXwƆ T;UYkMېr:tK.ڲIǎCn˽Q ;0gj04lOv9 wAGErr =BtK?%#/r3FqJT<R hyPgLomX+E/sɆR6#4D.<)))SH~]k5 Fߖܜa]ʕr+y $urlټDkB9[%-"W[67h$16fixvvfJxGU 0Y>2oIENDB`youker-assistant-1.0.1/qml/func/info/MemoryInfo.qml000644 001750 001750 00000035253 12312451003 022625 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup /*------------------最多支持四个内存条的显示------------------*/ Rectangle { id: home; width: parent.width; height: 475 color: "transparent" property bool firstFlag: false property bool secondFlag: false property bool thirdFlag: false property bool fourthFlag: false property int itemNum: 7//每个模块的子项个数 ListModel {id: firstModel} ListModel {id: secondModel} ListModel {id: thirdModel} ListModel {id: fourthModel} function show_several_memory(num) { var slot = systemdispatcher.getHWSingleInfo("MemSlot", "memory").split("<1_1>"); var product = systemdispatcher.getHWSingleInfo("MemProduct", "memory").split("<1_1>"); var vendor = systemdispatcher.getHWSingleInfo("MemVendor", "memory").split("<1_1>"); var serial = systemdispatcher.getHWSingleInfo("MemSerial", "memory").split("<1_1>"); var sizeValue = systemdispatcher.getHWSingleInfo("MemSize", "memory").split("<1_1>"); var widthValue = systemdispatcher.getHWSingleInfo("MemWidth", "memory").split("<1_1>"); var info = systemdispatcher.getHWSingleInfo("MemInfo", "memory").split("<1_1>"); //--------------first-------------- home.firstFlag = true; firstView.visible = true; firstModel.clear(); firstModel.append({"title": qsTr("Slot Number: "), "result": slot[0]});//插槽号: firstModel.append({"title": qsTr("Memory Model: "), "result": product[0]});//内存型号: firstModel.append({"title": qsTr("Vendor: "), "result": vendor[0]});//制造商: firstModel.append({"title": qsTr("Serial Number: "), "result": serial[0]});//序列号: firstModel.append({"title": qsTr("Memory Size: "), "result": sizeValue[0]});//内存大小: firstModel.append({"title": qsTr("Data Width: "), "result": widthValue[0]});//数据宽度: firstModel.append({"title": qsTr("Memory Info: "), "result": info[0]});//内存条信息: splitbar1.visible = true; logo1.visible = true; logo1.source = InfoGroup.judgeName(vendor[0].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendor[0].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //--------------second-------------- home.secondFlag = true; secondView.visible = true; secondModel.clear(); secondModel.append({"title": qsTr("Slot Number: "), "result": slot[1]}); secondModel.append({"title": qsTr("Memory Model: "), "result": product[1]}); secondModel.append({"title": qsTr("Vendor: "), "result": vendor[1]}); secondModel.append({"title": qsTr("Serial Number: "), "result": serial[1]}); secondModel.append({"title": qsTr("Size: "), "result": sizeValue[1]}); secondModel.append({"title": qsTr("Data Width: "), "result": widthValue[1]}); secondModel.append({"title": qsTr("Memory Info: "), "result": info[1]}); splitbar2.visible = true; logo2.visible = true; logo2.source = InfoGroup.judgeName(vendor[1].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendor[1].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); if(num == 2) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *2; } else if(num >= 3) { //--------------third-------------- home.thirdFlag = true; thirdView.visible = true; thirdModel.clear(); thirdModel.append({"title": qsTr("Slot Number: "), "result": slot[2]}); thirdModel.append({"title": qsTr("Memory Model: "), "result": product[2]}); thirdModel.append({"title": qsTr("Vendor: "), "result": vendor[2]}); thirdModel.append({"title": qsTr("Serial Number: "), "result": serial[2]}); thirdModel.append({"title": qsTr("Memory Size: "), "result": sizeValue[2]}); thirdModel.append({"title": qsTr("Data Width: "), "result": widthValue[2]}); thirdModel.append({"title": qsTr("Memory Info: "), "result": info[2]}); splitbar3.visible = true; logo3.visible = true; logo3.source = InfoGroup.judgeName(vendor[2].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendor[2].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); if(num == 3) { //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *3; } else if(num == 4) { home.fourthFlag = true; fourthView.visible = true; fourthModel.clear(); fourthModel.append({"title": qsTr("Slot Number: "), "result": slot[3]}); fourthModel.append({"title": qsTr("Memory Model: "), "result": product[3]}); fourthModel.append({"title": qsTr("Vendor: "), "result": vendor[3]}); fourthModel.append({"title": qsTr("Serial Number: "), "result": serial[3]}); fourthModel.append({"title": qsTr("Size: "), "result": sizeValue[3]}); fourthModel.append({"title": qsTr("Data Width: "), "result": widthValue[3]}); fourthModel.append({"title": qsTr("Memory Info: "), "result": info[3]}); splitbar4.visible = true; logo4.visible = true; logo4.source = InfoGroup.judgeName(vendor[3].toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendor[3].toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = (home.itemNum*20 + (home.itemNum - 1)*10 + 10*2) *4; } } } Component.onCompleted: { home.firstFlag = false; home.secondFlag = false; home.thirdFlag = false; home.fourthFlag = false; systemdispatcher.get_memory_info_qt();//获取详细信息 var num = systemdispatcher.getHWSingleInfo("Memnum", "memory"); if(num == 1) { home.firstFlag = true; firstView.visible = true; var vendorName = systemdispatcher.getHWSingleInfo("MemVendor", "memory"); firstModel.clear(); firstModel.append({"title": qsTr("Slot Number: "), "result": systemdispatcher.getHWSingleInfo("MemSlot", "memory")});//插槽号: firstModel.append({"title": qsTr("Memory Model: "), "result": systemdispatcher.getHWSingleInfo("MemProduct", "memory")});//内存型号: firstModel.append({"title": qsTr("Vendor: "), "result": vendorName});//制造商: firstModel.append({"title": qsTr("Serial Number: "), "result": systemdispatcher.getHWSingleInfo("MemSerial", "memory")});//序列号: firstModel.append({"title": qsTr("Memory Size: "), "result": systemdispatcher.getHWSingleInfo("MemSize", "memory")});//内存大小: firstModel.append({"title": qsTr("Data Width: "), "result": systemdispatcher.getHWSingleInfo("MemWidth", "memory")});//数据宽度: firstModel.append({"title": qsTr("Memory Info: "), "result": systemdispatcher.getHWSingleInfo("MemInfo", "memory")});//内存条信息: splitbar1.visible = true; logo1.visible = true; logo1.source = InfoGroup.judgeName(vendorName.toUpperCase()) ? ("../../img/logo/Manufacturer/" + vendorName.toUpperCase() + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); //(每个ListView子项的个数×子项高度 + (子项个数-1)×子项与子项的间隔 + 分隔条的上下间隔) × 内存条个数 listItem.height = home.itemNum*20 + (home.itemNum - 1)*10 + 10*2; } else if(num >= 2){ home.show_several_memory(num); } } Component { id: memoryDelegate Row { spacing: 10 Common.Label { text: title font.pixelSize: 14 color: "#7a7a7a" width: 150 // height: 20 } Text { id: slotText text: result width: 450 wrapMode: Text.WordWrap font.pixelSize: 14 color: "#7a7a7a" // height: 20 } } } Row { id: titleRow anchors { top: parent.top topMargin: 40 left: parent.left leftMargin: 30 } Common.Label { id: titlebar text: qsTr("Memory Info")//内存信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - titlebar.width - 30 * 2 } } Common.ScrollArea { frame:false anchors.left: parent.left anchors.leftMargin: 20 anchors.top: titleRow.bottom anchors.topMargin: 20 height: 398 width: 680 - 4 Item { id: listItem width: parent.width height: 0 Column { spacing: 10 anchors { left: parent.left leftMargin: 30 } Item { width: parent.width height: home.firstFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: firstView anchors.fill: parent // width: parent.width // height: home.firstFlag ? (7*20 + 6*10) : 0 model: firstModel delegate: memoryDelegate visible: false spacing: 10 } Image { id: logo1 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar1 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.secondFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: secondView anchors.fill: parent // width: parent.width // height: home.secondFlag ? (7*20 + 6*10) : 0 model: secondModel delegate: memoryDelegate visible: false spacing: 10 } Image { id: logo2 visible: false opacity: 0.5 source: "" anchors { right: parent.right // rightMargin: 30 } } } Common.Separator { id: splitbar2 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.thirdFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: thirdView anchors.fill: parent // width: parent.width // height: home.thirdFlag ? (7*20 + 6*10) : 0 model: thirdModel delegate: memoryDelegate visible: false spacing: 10 } Image { id: logo3 visible: false opacity: 0.5 source: "" anchors { right: parent.right rightMargin: 30 } } } Common.Separator { id: splitbar3 width: 680 - 4 - 30*2 visible: false } Item { width: parent.width height: home.fourthFlag ? (home.itemNum*20 + (home.itemNum - 1)*10) : 0 ListView { id: fourthView anchors.fill: parent // width: parent.width // height: home.fourthFlag ? (7*20 + 6*10) : 0 model: fourthModel delegate: memoryDelegate visible: false spacing: 10 } Image { id: logo4 visible: false opacity: 0.5 source: "" anchors { right: parent.right rightMargin: 30 } } } Common.Separator { id: splitbar4 width: 680 - 4 - 30*2 visible: false } } }//Item }//ScrollArea } youker-assistant-1.0.1/youker-assistant.desktop000755 001750 001750 00000000442 12312451003 022262 0ustar00saucysaucy000000 000000 [Desktop Entry] Name=youker-assistant Name[zh_CN]=优客助手 Comment=youker-assistant Keywords=Settings;Cleaning;Customization Exec=/usr/bin/youker-assistant Icon=youker-assistant.png StartupNotify=true Terminal=false Type=Application Categories=GNOME;GTK;Graphics;RasterGraphics;Viewer; youker-assistant-1.0.1/src/image/minBtn-hover.png000644 001750 001750 00000001111 12312451003 022260 0ustar00saucysaucy000000 000000 PNG  IHDRG(tEXtSoftwareAdobe ImageReadyqe<IDATxb?2`{" G^n^m^{DY #HX _?V Ft""@S'NPn/I `(Ԛd_fiaq&2rH = B2@ ,H<ƶu89] d`?j@/ %:!Fh 1AAC ~?oAn`g*zqY3|m4 9O1.|#?9Ӌr PJ@ #+E-nE* rbEI$ńD3?$dE17./49RG ~O "f%KAOLlN>>6 1Hj Nc1nep }[ !4 :lTOh~BӹyIOIENDB`youker-assistant-1.0.1/qml/img/zh_CN/wizard/2.png000644 001750 001750 00000570267 12312451003 022075 0ustar00saucysaucy000000 000000 PNG  IHDRWtEXtSoftwareAdobe ImageReadyqe<YIDATx; ]Ug]۵qmGvIMH|i ABh)@ "R)*JՠiJTb׉ډIǎzwpf朙ykŠ9;w3sΜ9wgV=OԱei@ٖQ+J:fhԱtUgʍ)DzNcJp_\U;;bnĨؕ ]~׵W:?nZ ?AM",ԦTD*Ifc 6 `j@+E5حϽj!j9_TP>RKbJ`t*QCQ]d3Vz4NHb C/:Ȱc#s$Fu\90t"8rPG{&GzV:P(ˀϾ9< O#i]^~@p xLWR]tGu񡭯)">f` j^_!BD̹Ucp1FABhc(L Uh6]HEiDmL۾ue |xJʙLF q )$:B4?3hO~淹חߩSGL[9ȲG[~P.`l끫z :~=t.-;hv0X1m :+%i?5tL@+"0{o~u9rYr򨂷]o'pc;߅>ZB ~amg)\ _ֶ>68ߊ=[3i3z瞏_Y~[`9L蜦u:r` !wDGNDd=nivcK4Dzɲ3Y*>!`} oa#ePJwSB#p`ɯo̱biXrh 3>T%9+N6}Ⱦ$Jl( >Hss$m܆lV>Q8Ꜧ#!$\uwgHugd.ns >km(&_)wmQۚc| Yui8&G߹)Rm_Ln`4@WVCƩ$Mn_޼CS6tHQcb0tL1.h |R ʌM {Vi;f>ֱUy6 נ]fqܦM% M\:j//>Ĕ?m7 =얠4$eY52>T%.{BW0w$9|K l{V NflheIbV'r%z8 6#@~Hh0ny,A@*~"B"B$+G!QX56*$ BaW >a@&1qu25޲!SDB YF& a$ vo1 >$\N1fkJ]dedx-6^C'1Gl1:0,gc = " O|19ȹ~%:M̩.FfRR ٷ)+ґQN.` xH UQmR!$#Uam0bEb'TLv am&"~p#ؖxvj! 6<|N/47\R`D *`¾WKޞWIIBP:h D@4<%rSJI`kaVU+{ow^}<;?aKn}`\=^s!?xH-BQSNY[eǷ=6p$" =9k0i;lx5V(vF`,˗mx@]\tZs(˰ʚ̏5p`"gm70ҧւ   ]Wo,÷Orspsm̸YL:c5DX_cPqYogK4cCFVqQ]{MX5䠂|RO#,C^( \q"[ v'XЊ,WC.@;6hx츁װ봁lÖ~ / ,6u7!m@m>#xz !\Vj(X%t/P}b)OTRY==! HE JBhx+.SʲD;\%A"\ [?a=؁,IQ|rRy& QHq tq#FsT?ƨ:&, _@`@MLd#4L)y`#J7Ip$UdH1ɡ(597PwshmݖR~4K6AA!TDL BFHJb P` QB4+F"vBѺm)ݖn{7Ι9g.b\ݽߙ~N?\p0`UBe|4Yw?׭ .MhBQ )'(S!-Eqj@GfN%)d(,J*ָ"eF8d9)9H D 'O*1K^My Z}N4kbV DB˽D1}0oSJD#x0ᦦ)p vSKO.1 w(vƿ;9ah1Aîʢҁ^K ``piHWtv}s냟#)_q~i͹ׇ<[.~;4.Ґ@F4u ;X.8Br&j" Ok :&xܰIGi$fA$< Tr2ěoZXE>mGc`K%m IPW` `O@akV2NIx䷗B01Kwu߬MΓ(/i"޽R X3ݭ}h)}_ 3 (䞑נb`Q_]}P庙 [V8a'dr\qtO0.r&WYhOը:E-,Waڻ[ftKb'7R~@ rbh^%Em/尹tsn@^^Wޞyˠ/51 \NopwT-8<1`)T^uî{*P(u򑄸LLq9ɀ7A)IUsh־z̽mBhXitO©vCJ57CDsIloN==[AOu}B[S$}AS48Y~I!?J!G"8XkV(J`ay:p{F@(Nq[iZrN'V,Y ŭ30wYhBLh`dF9u1QzKj5keD~r~ ; .̆ Z)1J Xޫ'!}=:Oa킗⺮l- #R]$s#}S݁UO"=Β$$I}sZuý=~8m̞?\z&u'&$Tk@hU+ 2s ]n',SuLwʤDR .ru][n=^V&1. &\#q`,m3l_M۽ f.4qFDnR{\g]\R=)aaRyJ`6EXZV'H1:䓠[:4ݼ2u&SS/ .}5{q9G{MT#VQVhOf&eSB mmK]dآC R xY-l%s >r>eűgG;pZ#Cבt=t~10$W ށ$@]:L]XB7vÊc*A;e!49$( M.WTD@8&YVUbaт{X=18t9}+꽌:  uG9s%kᬨ^ɳ$O y DG[)s\y+KG{ډ2SmCġCk/MTI]r$dUy48FW3i.͎Kb_܉6q#&8Qp_FF`0A9#aAұ<K?5+-0 W31phwDյ \H)bt).)[. lj5 %d\L I CLZ zNpꆮ@*()&#zeu7g(;ʳ.Q#iН=: Z ȇsY(6E0 4WiƁ: Ii;߁fc4fz 1ډ%GpCWV7O?bAD#p..u1vxA`5T~"~zy!" UmϦ`u&=eb[ UNZLX$BVEI_9yGF;s{qT҅a}Dt;:1G=I7h9Tⷺ i3H$h%H+R.!)fm 9r/tZ/b'v‹;xƠ_9]K]ZOZoI(a-SP &VHF!/ bN*ʆ5Z=7 P>{ ZSND{7[vq]VnA! ]y" #9m @0[buvcVY­ZШ}_"t㰵'a Z ɳ tl^H-Lgx4h"Qf NF 1$J/v# q[[e]I\ꑨ+LM<b` l4uUS%ȩoy2yS %GBS95u;K90bٽs1)S0%SXLjq"@)xT8t٦Ѯ2Gal+ |yȼgjoꂅ' al#iFE c TvBo'ձ|UaR驊iC&\GuK7U`ހGN#cj5RJz ]5/qzkf*csiN9/ &n= pHV%}`_H}fr@( PIL2~,tZ#Z:9= ?w$䢥p]~K+K13 O.]u< Ԙ$ŏpJdNc+TfGEVU^wpo1=Zҵw$ ֮Q_7CB|hnWH 7j%[4l0bDuKw!SQ4$r<=.qV)CNUzm$$ -VQX0DgZGGw <8Ikg{vٚ ;E0|yS*84R^sV_?/&tw^ݛal^=Y&F2]j"`:b3!NoEuN,gW9^zJۏof> ,.FI4.1sxM>@(L33z,#\^$eQ>,$'`HO^O`Bw%sݽ23 Z'Kr7R&|yNS[eO=F)|}mϸa^֕񦼀~_[cen%Nͼi7! Q޵9Uc |}n2=#q,I/S[Ho-)-$"pc͍۷ĭ5#sInġGɲ"ܶ9~'ex+_R̙^lFf8ZIVJЕV]3~: IgLj jPk|VwhJ )ioDhRPSP]} >_x{SPv]Ϥvа};9\륊W$?y*v`@ɠ:-@>eJI[r:,"R"~!0J?+@@a_K?y*]]RDoo.' :Y󡉬ew֮v bUoRICt%vQë9 G-,CBgܵ*IxrnV2~.p ŃpdDk2N5gɋ$kDGOt2Yn/;&En2a0 |wyƮ,9@e=E,-~\_xRB/ç[HK V& '?N~Oyzᎃ7*s^>4 k᥍]VM)ТcOMHV#I eV!񶐶-2 h {R*?+i(߶=/{CeIɀ?:+ Bأ@2ܒЧMdh'Fs;mVQ? vK0YtvJXT17`R(2پ]a tNE$g3|yWS؏؛%i7\k CC0q(ᢃDΟnf懓Y4E}#P=㨅>$]Zx#^1moSʗɦ CiZT][.m{XV.Ѿ F5sno C )ɶo@BAB̟v{nə9uldaB6< z;'Gi>wAZy[A[]\ kD3gn܍\놔S: >.Fͱ}ڐ(D#(p$b45\IrU_+r;}O[E=[1Xcg'9DZ0|C*" a!̿m);|pVL֟;0TХ;w͐&vgm܏`l9m͕PRĹ,xCc+̯vÏ"lzc&$  L?c@a+Z8|Wp7<32œQm'"i ྡT{-pcMms ^uN ŲU@!C+9laBC7W)H_M 8qa3$mǖT_֓6ddJ` 8q.9Y%x7eq_Xal~VQZi <"v- QWud5ffN'k\5kaڵPV"9<_FA;wBW@h(xa|1xF"=7!" )3/V{͹ HNΫ{wLֲX4z#"|@&,Lb,@&Vɖ3ʥAn /z=pY 0)+} *`PXuhY@|O( a;shIrmEp9gTJbW*D0'2ZLK+dNwګ˩:G$*Tӥ2} dH"Nd>0VN:q "gOLv_vj4 ҐUH6yk!chN Iv Wc%Ԟ8A(^4OfN7NƠWꄅ).<A.)N 0j)!s ۂ*<џ>HU?w3@{ #G3"`;RBzy !FIj s('w7tV9ZGE#OE60RNt5trc梅U;&N31T-EuԍV^uGQ?մPՋ[{ۼf}q`\qoi(͌trۃpR 䔐(,B3ՂLD fJ!XOh4lX4l1B1)"MBz݂*=E@%+"345zIx,|1kqOEECOCcV _&|P96 'A {%(`7  ;wwtxBFe )ބ5>,$̭B#iXO #c|ҊB@'0_NM,EAG,@spM{!M,6a9JiI_HM X l> c!}hfEna^o .8lH>'[obسtD[C+y%|Y7nݳ `"w6OZ: PjN,dEZdHnGbYĭU__r*  cr=V<݈k9•,H1- Đwi{wA#U [*++vonW5wk/6tL5'8=s ݆ ߿n3Uٱڲ ^::^̥EBXI{nY[$AK?Q`Pƭdҙډ!zn[~mQ^ g@Bꬺq8ф !x'=#ٚ>>>=rp6RG7wseyZ"tNkbk !ZekJ`Vjeџ!ݐv4XGfZ' A۾p#-E)BAE0*cJ Z3{T;p# ^gqK;,# ͫuB+[dH># V%!Mۧ )!sI3?gh0̣l3%i_ߋjJsBHxzFkz0!i9:)xJ5RB8MSL!='6uRn8Zj/T.^"gzr[ $aE̛|wZpjڵLzlSP]KoðX<p1 q:+P I-5Mx0)(&o}e'Z)LHrq(6bBΙy|ϼ>2Ȃk ]01qHHxzʃk׌iy8 ӹS4e4z\. <n\ WNiZ [fHq;B1L> דaC1KZЙyA2\`v{}8:VјbIS:h~rq|!.VߤJGK 771Kg)#2C+!J M _Fw\Sǟ.HlʤvU{T%zuz~G8Px-8LޓFG70xp `Bmmh|Bf˒:2"G wEAs.#^HJ_%#02$8EwJR #eV:CВ,NJV@uy5e5'rhOkMH{$itĵ~%<+j?/RULb>eVªeΩM8~N e}|of.F+Բn׬O`9[/Mn]Wf\nSximh!mwF6N)[%"\N8@MP[>4նIoM;h`ɝr`J:N<NW ^Y4MLG{6kJGڄϢ2'?,p S%D(0/- =4q +H/-`-$2H/}o\kg{ݝ;/B&! 0 ((!88|8)*jx9 *0$$G՝t'vWݪ:{~9;꯺Vsꜳ^qO8܇|*ixFy 0~&2q QZAWH+Nud'd D_dg..%:Bp`| W09-  SBa+Ezң1x|Sn'Ռ ~  W4g-St~p9fk\x-~x -G+0@م A1<0gW0+" DST\"'i-X+ F޺>>&I$jz2G,31x Fnt1360o¹&|q J}`L  8I22hsLBMnKEnz5XׂPF`ƌѫ`m!h*֐5ϓJ':)@՟ <f+(@\KP QYWHeJ4OD,G*;K*/xE NM$'`U L Ӂ _sNξ\Dդ.U0!lD #/\a 1][Z߂ѿs"`'&1Us^e~= $qLKe!jP3 p$H4fDFf6ϵ#ޏc& $~0bp `  l&d1Yz[誏BK\k' VnO+)AJ\ S;EGADY 28WNK[]Lu#ȍ|̪>oQFaBK >!kjFIvU_"7S@k@d=_S|SG3J/Lx~߰k~j[EY~}($ Zw+kXXlmX<^ts]CAjOm=#à w<#JaG0#Dd`602` -(|nbD ȍdFBT= Xjhys@XM snK*M.t'1pbV !ddEa2E2)4m #nns0d!Yy D_OS7N)ML=}ɽȼ)5x;#E83k|ˊ@L3un5)#*"c?} tqv\iBRӀI}bF U[FFC,,UHQT ø4k"wfe~vŒH{r7Lu3ͧϋC- L Ebq`*ꯊb.ƉMmU z1#5'y}7HyDž/\91i]"Ѝ'K5Zʊ(6B"X9SX _RwlP)XY-7ZFT-ef|AIc\la{ӆA #I 7g M#Tz)pϣzx2ŃfS]'Z6O2!j(! Y#}bB9OgǚQ "<+a C5BmT4t"a'Ia H#1 QyeOSL`;dPMxΗ9E01-`7V/+Td5Lix-.^+ug`EcFC_9 ? rj^(-_ .ba-ƴy?_3kSŎː9le Et5]5cA:!7 Պ74p &X2`H"G|0fE֡]"|bMĘ Zc %Uf!\\E&ݫn`|bZ~!pJ'z m7"=W$ ҰYҪeu0M^ؾ%%K}`HMjVte ~QZlЍ 2yw6\OĎHؔ i1dAː3tM-QǯI`U]J)ee~;a]~Xqusg۾p̊әal1vդ'!Gق(ڋ?{i:-52XWTp(#&_֞:nUF#o5uZ𙺐{rrGvS>#G.2:7o4cc0\=.6]C=t?|A-u]O] túu (zpVY1QH>h b-06 enRyW+G۱!Jf7 Jꔶ12UՋ 1leG.p|O'\oG[M#pĀN[HZLT7ZMƚ&j8Bm'=7OC7 &Vذ <9dʉ?: ?cZmu.x ە8SP,7wPL1i`OǛ%6R_9 O~h0<؁CK=|+=*`KsC8w{F7-`2[+99,apKQ=ipx _>KA8 Y1ր]SsbN;01@WO7{oN`n= }"ֈ}4D !e7ALTY4βb}3{˜:w ! E'pZ!ߨuiXj2,Üp;5KFC uSK샋ĹOV-ouwGNumX0쪤؎ЁNgնC9n ܇z5 141#ͤYZ{W߻ [~ru M7P3YGQ6ad3ܔu $F|g2wڥ`Q ƒCX膉% B7U/˞G[;ˍ)Tf̪Rm3О7^u,:xh&{zZ?1I;uM'h)s#q+ְE.:045o^x)5B`9yp?JXp"+Dƴ5sd21`NQZBzj7d;a9dUT~CJwnq$jL lٺM_a|b°$I1Ԗ_?5GV|SHu.@g7-n)_ۦGO߀!%p<~3Me]7 8z(?v6LϘ0xu5Ν,>hA9cj"u`fӦeAva4Ẽ.ʦAt}A{8gҥs꾺sH@+sF Г6[zIfua o+|meD+Y2vŃ2N=dUX_c,K[٫?\Tƙǰy&$|<hF3t(ւxw1ڻT 4 i粥f7:5ފQ#FxL @S@+ul*#Ao`W)Cec>i;AS3[Vk :{iS.^OuQ$,a܍]kppƅ;w^ٸɤ8{$'f!%qd'$+D$0bne F?Yk?xp?aY5!iuu4saJ ݑ(Io"gonyYw* p1żhi>v]p㛙2T~Ϋ^M "A.&.b(qTQi&EK_K ~rLُjTLac:2cVHfe"::X=n,e Vt2&aߦ`4CHkk#.^] 0HCMU e*/z]'oݼ`EX=93= C#ðp4 raey R'#ffU=z7HV7k߭'ߦjA擡>cKĂb-h5jͱ^EVM3aAz:.O;g\uRntVR+8i iZ_$BW5{Ě!z{Bc .Ecc0,`2pp>$1d9@ej92V?Ht{i޶RB2C?}Q_{}[y#/=V!T,K|W"JN-\|U@r7u>} Hx`B1,f ''ܞcON 5^^^Xֲу%9LJotLF^VTXc;W Ks{ПM ;4s=<GXeg#\jehK8l&Z|s6.eڭ\ 0%|?)jV!8G ;$_)oBI2'RK?㠟iE黙g j@! A]5yVV Vձ6i1W/.L\=٧'NDGe7JӱO8rxʘYGdsF3P'YHyxiTep>g{|ʶ)8\4"Du֫\*6פ査ؠlR>j+pw~5Gs-p'w _bveHZ2pE/%5k\4XW״8׏6b|Ҧ 8|V:F jYkBW3 2mUEpZӖZ:/Gީ&] 2 7ÅO?kpӃ4ja݇+ AdvNDR[~Q~8+C=5ܯmIQzFA3:;u +hj;ݘCfG;};%>@E {Z;\r U#a :(J.Gz&6^FvkpwErogF=e86eUݣԷ% @kpuJ%^??`8 3Sf{OW>W00byY,_9 x\Y|; AO jo5@EN1EQ;:3S}3Oo~kx}$%9n@#%FޗT4v^N&{2z#׺ @k)Y&M4̼Ʊ л0~׿+{tF z26h͓Hm?5|k9 1W7k YuO]aft}mԫ^1=]ܥpDnެE~H&es,~]h \:d fxNFXlýIXU-O&SFEN۝SŁ0?f}!23"TQhpW?oۡ07j)рbuCl4ԈŪh7_Io |gUƸ{&gƦbgiyJy'<طnlr/vSnBG2t^wXTGb'eo0fΆH Ao׆nKk")iQʢ幕ҺܠkbΫ_ٕ&)|NY*)ǔ h07j<6YQ9!a`>4. 3[n^8$ U,|2ps?}Od|`$*j -{[7c +k{TvW_[ސk\1henjr_j)3KgI)|JR۶)yNd9gd8ᆑgBO4lk)W}GEtf 9ro?H p2K6apNH sQMF)ێC{үShtx4|v:j]{ayp0|"UI}]niNRڠS71܀bvI[[`6R{=xj:zKZF#@If@ϼ~l}%54NM2*P&W0AVxNQ@#|h|D]=b\Hh+B 0δoH <0J5ޗ2܋j M_Q-БFl ٷcL~JrE| p6\rEczMpK8%c@IO֐‚9OpF?* Ʀ6Ɯ9ѸsVy%$b  ]#;/dD4%F{vqRFz^8~`tWiLc҉Yx/aWٵ0~ ?:N"2NM)[]\Ը 钰Hɜ@xf Du%g (D[(Ѽ[1 (}L,,`;$qY%aqX8q:+PvJX`IXFF K i(e.7"#w`BJI76ldB:/Z$7b2gcRf cڋ((*x^ꔌl涑uҧf$ 2 ByXXZTBcT4TpQe%^OMgLp _a:1HbXsQϑS;:r05+ w$AȺPu"oKt=\t* 2d|z,1hsx'VJ)s$)8A 2sF @ۉF"Fl3uė/) 䱆lr7º=.`m*<j~滬 J<` ).龙Lvwla骍._LK0N'K ) =m 4d >Cju^W*KD+ĠDY$OBSd~b2\dX!BRǛRګ@&5Sf $QW: ~@, `Z8owܾ 0sHo7Ѵ%쳋d^f"pMF#Y,c$Bf+a4iEN9Pw_d)˨r~ !=YQ2t *ѹD}Y!0 Edj1f$q;.5x )JgC'o2 ݦA}'*}՗ósSmo_doy.9TOn' ]L}@t"pR].:7$)'R ɹ{~D/1_y,f˝cC63N7xҫsj/Fީ^j_uM5?}8tz05{q^[n̉\WR@ClXO# 4ƛӄQ%  Rb=jIRE jrI PXUj j^$'!ƣH 'H瀻}xVh߯6`._r3a)xsvËI3Fe7m~G-ԝ N\#ݵKo7ZDPK@FC$tb@?{*%F2a(h4»{y-~HL0QX4P9hF OT@M?²%CXO]׼ ^{Vs:MW?q- #u +ӹ1|PVkkNfT<2ODb'~DJs4aF,-z 2ﰚ3j2lR7J̒-(Oh"#҃$(:0)r ݒ6"_A<=3<OȜ [ԉ;O_xZw3vϘA<J2 ? d@xE3 ݣ[0/&] ~TGl-CӹcC`:$d'=u:uk<Ĥ%믡-҉Fֶ̚^-(j|"<15>"C 41_/;5&vRJ._e1 DU ZPFR}QzHK`ElVOp,Keq~ɱ L<ڸFqDU'p3 ==}l G X3yGti!v6rIi`y r' ߂>.O>9YN.4LL)51  B^S6{=F Nfu: L#S,*V Cu_X2(ETXJE h2Y,^0}0F2eF ͎TOF|.l騕>9xVK!T[:`vis 펥d5W`kuwzVk~~W:WӋF8Cd Ws{u6/ݼdΡ/(k Q:aUAq%&9޵aP4nx\P8/ y _d<Ԅgł!AkdGnSi7Zf%|_BChZZ\"8٨,g1$-*JLlPK+.9ԇp1 o$\-W^ KŌI\O/۾7 4/tj]7*"bCDBi"v8Te eE&rx6qƒx渉  y} s#U R`퇬^ZY/Un;!(us>@ipw\/x@zswӸ0s_0nuMtPKI65?nzKu<̃^;6nw+\sTD8OKvq{Vdi qw뽠t B;NIx:sj2Kf"O n`t^BT;,x2ro#Բ*Y=:qQ f$.TlFسkQAM"mj*~RV_5[g}֩sNU:z6 x׃+aXz5XwQjpvo /f1o64~k=hAMj^d^qN[,^FM^6sW) jUtu2w} }G1ʀ$oS[ Xe4(& ., py`ކl1=K!DQ0`^ 9V[cH9:VJ,he!9*25?f5I*UgQF7(rfVC=w4碏WӐ E+$ %ޠVoSW n7 Mms8J{_Wzޭ3ްLS$N5) +.fSBŀ4\Ad@0 )`Y;0ZjWp?ae)T'#F@72j2h{w:{gH.l])k ,dM"_OXEzkC"~(uDC)4TfPp<] tg Պ~NjO7мE2]bDP@ȁ-L)/u*YR{CJ۞+.)sJ 3A%/]#nE˺#SF.A u!  5@;!x 6)MD ' մ`_[XѶu}p xa 7=}xq Ljuauait΂ Qo%%:ǔu[k˧$|Xi<mнjKbO-,)i CYOd,G*O˰FpYΥ?#KA`\1~-b4s@acy"J*J:9?J|ŬKb&FP\eiJ?S/_^%kS^{WN UF~CYӺ}gc+hDŽ*ػ6e )cpWz7lF"8U)4"rLPlg>.ȷ MBNy:L!֔Wp{j-u60^6o9lQɫإ=Jܢ\Bm{ـ4.#R *ݕ25"pn^c0!N ,)Fi4aܣ&*0HD\PdgD,껎L\MԚ؊Ƌjuɻ}68T$ x޲edIK5QI531"S9?W y?+*ڰjwÚ0=9٤9 <74,@,YPS!lpd\μd}qWF,=C;!KY9–5;%WʰE֏C%Ka6m{Tg JӿI1{d >%zAHY/rLPd"\W!sȗ}IȦ(:]MaNVdX$xg -zC1RI*%dX ^C -aAGZWT0/痬3WgQX3 ޴XfqVǔd1 V 'Դeюmh +̸FRR]B@<PBP%zG 'j]?I 49e1hp(5=j¼9n IJ* ?qDŽ10?܂6R/DP'̵ N 糧[X Qlf1-ؾ !dI@Tv&4Ӑ)ĬR_R`MʕUc^iL6M6IXDQh&D1h GnL"PKB]$bNם+ $J!Հjuw=A}^UZysnoiH& 2X>8qt7*XqÊ$6QHHHԐrSケgo~{rpsy>m?NZ1EAy2eZe4nNrlS8偗ykTC"RYԍ#`kX,L %B1^`R7!ŅA2t}C0qo{D ֩>NA#`BC_!e}*hbK)BuNiΝ,k$4Qu9gAD5&_Gsޟ\2Fʽ?}dnqdD1cu ~ɭŻ}2hނ>ƞ{vE&|6 ǘX$:|HۮXbN3:]LX8Z eV.E憟 mi[=ӻMӦȅN݁'{lzspn8BךJ *#kbAA@6&yOmaꤐUُہ#S[ :oAUv25<(Rϕs'p7j4[e|/pሕYpG5#*܆Bb,EsGAYر8އp{ޔ|E%Ĝf+b0"%wN(3pEɋRv|wkg\[+4Xj1~q%h vrPNZW30t)f-lErAC 5CWb]f2GJ3.UW9Ÿ g^vkh`IbMNC֤K $*> (l$бּX/>dce1* ٌy-[(X1umcbrF_p6ƝgҡQr$qwOzH(uP[pygIF2b "" Ӽ6һXiM/ 5N'D`G"˷}KKY(2ǜP\7 !Vq%GZUxRVle^q#S12LX`SewJ-:`,ډZQ5iQ*1BjU  BUV1/bg[yQB 9gko(e0gYL!6ET"vc"`LTva  ԥa9; _AVl<} ֗AO#p="ƸiHU0f;e TGyQ62|;j1>$ OHR|ޓl2RVx=g-cҧµ?|L$Ma| w@8aɝt) Y/УsJv_"i .ɰY, ʁ!mf@dʜ))vIHzu<'SBhnd1fĂI,1 ?,+3HXw$i;8U&Vǜ_TEG ?aOn ۪B ^nw ;N !Iy+tI#BT;my>ArC;G@x|'S5Ł"'Tpo^H`Ϗ1ig<p@706ޅn'Q#8Е^Id'z# :fH\lDP@ٽ_cgD`0)!,@3KX7m[oC_Sf~xnƧ\]Yo䄟9yG_x1# |YȌ^VY2,f7*3:N۸kCTXH|tSG n6iNnx[1C.~%F6RbtkDQ;wO-d!nvI60zTgg/RNB97Qns*He8#(%G4DbMmDot< iI\&7//݁Oe7d V,s[u(E;+ (!lPn0x'ֹ7!B&{`7"6R*i x4"a22'u+t@h"E $(6ucɿZLuqɈ"4DZ)S5|$tFNvos01#ЙndAվ>zhu ج yLԳڼx(1 Ys ї H'%!4 SNrRMꓯWg?'$CDzDVwGH FPbkkF j79Gb :&s{0WIh%0>+"l+ȗ1B\yD:407Wb,,Jj;+{+ "[ pF"(&8#2>Cd7i%SE#[߀O-Hzjӊ#j4TvFrc4{]%Va(ev:6Ffd<`zD(d}$mdMze9b_@]79a$H Iw\9 Am7`F%kȚ K%yytdN6MN('UEK e*4F-QEPY{^[#ؿ 5Z7Uff7u]OmC>{ܛ쓺O/< O>g Pҕ(;S\f=Ap'MAwXnFQ)CPӡ ǧSyʔiuN {:s{LP#P1mW,ͣLj0*yԡ(*P ;IiDTNkCę[CV֐j)l c V\X=*+</ʋ%q`y8>ܙ(e16#MFDA~hl)Y &MHKzyC|QH1Ճr[HrfOZҕ^~5l?Wχ2v񵰳z5رu r;m!w)w;3Csgt7ہ;{f ܤIǶVZ '[v6cRe>(o(;N#1s0Y@9Ϝ0EQKK>3t%t>)TBtJ;0lqhV'hʴ0]^9e-%h dT#2MՂtsj0|Iˈ"@Jex"xw>|iZ6|2TO n:-9+sY%6N&\TYgSi*thÈ*%=_'Au[x/ b,&A$Y9 >XvUl Λi1S\0? 7Oge)噵!Ya ?݆ZLw|])C8҇N[wfm^?ڇquz- #GYх-cVq g1}8#+1ne>^+&gqsKs>8=RJ 3 ,NܮP{pb_f)'![Ae(*MG|eڤw4%'ԽWmCsWgŒF(OM!L@2>9Q*y#]&!TEs-CAY<.Juɴ.T&=ҲL1>U攺v*^#jZejCHRѲlYe EXsy׿*ZcөTᓋ015n򚹽 `]jSKYWhЏF~H+VEYemʰ%^[>0gpEpԅЩ¢ˢWx%TZ9xWjx~QFBn\EɓŞvfDY/meOW᭄A%D"ɩ=nvh~@oA]o\:80_]kȓ| Jyy)FCB*JDvJn8]6^>`E* j$MDq  j|D/AGs &s;/#|vE*"Hd<<9ORFMѩux=L6#q1)33ےI0=;> [_M6 ;`Emk}mnҍ3spIؼezO}*T w {5ۙ_XM09GuzrsVSfcvʪl j{=33V+Jж.e`rP !Oe 4z(Β뙮'c+ V2}oԔɋjr ccȺVazj( Ccc1*k۰w>cVy3\~œwj%ujB3ʠS{z³jʱӟҦ#YR#',$Ip}P %O %eA<+3V5kb䠟 SCe(iK/ vGGI싦 }a]'m;#'PK P*@  jx**)aA4nPˑkXR_\G6ն94epVɶ!]{{<@F ufD\AP`W,2 90$R]$塀L1ᾶ-€5@sK1%0@M&r+,JN fcɱ)+83 G"SfM 1Wk !.]R? KTtףaǹ $0IѬ뵌i Ɲ0wUU`iL%a[,;XQÚE~(O4(PIVKYyM:y\Zqsn|𒊜RF\ȧ{y لT<\C/Qb 2@#bJD$A˂z{|>}' = .4q[oAwڭvXز ̌DswG3Ojz''\g&sVNBȔTur.A6M>iE$6Tr,[ tptǘ"}FN={o4gd4:~Zm] S;=cKǗuYCgO6ƃM"ާDnEoq:(Z"=!=CWZa7ڔ`W;y I\ ==Jb[H>qfEPZ4F&%bbה?(v+ {kp 곗]rN?`h7;5M4X8A`Aym,/vZVWM(k6vdS>MlOmSf{zĤq%ǖpi~Z߼=6"zs|tL ͸!7&)?#ĤF ^r<8$x/`:Y0cсa4Er,۵u.ܒ`[/=gѥ~@!?5)䂺YuhMϨv6ٹͦ-Yvk }@6:cML5>@}β؋ƮjV7n ` 1`]S@v%FE q2_])1tx +6W!7Iȍ瓏H|b=0>,eC _TM\9{Q2Itkn,sZC@q?$6\u8>OTG+Lw*:ن#CVs=$Lfǁ|.#HLlX%(AJlIzFc,$t@wa6c}wP[& oU@c)G%Ž H$;lB.?rs_OEabCSp\@Z&2n 5%FLg`Tj֍ =!֐W`891G<  ֮ ^Gn; Ϊbu m5 =@ֺ~c)A+砅9E#G+yHu 0"oA{}BUw+۝4FRoh  jk/^SWAsk8 My[&H+_۽ځmppJ޻1vDt\xW=xUwN1:sh>`īS cɭ\1aG6gXwJFs6\1! s!z&8jU-XEA鱎)iDЎLOv%s)Vwx ᜯxP:Ns/D2ޥ?Uϝ{x>0GȌvu#qS2t՘;>LY< l!o(0Vw_cF={J/硏Gp 5r=X0Dq^P]8C1+g2#}zu6EO\bL̙F6-|<73Jӡ]o~%E1R$2 Bv- V<+ύdܐK??S/\-LÅE c'#mdmIu}}wA{ru\߻ﬢ` e'}iH |؅m8A'!;َBܻAo~qs  \l@/=knu&;'dş&4mXkjzrL4!i5-khYfY9WLI x Ϻ`E[MUsOnk^yA|~跧ף&8 .ȗ a׍{|:jfea|!G dް t}nz\Y< (|5/RQ<+:gtڋ Hm/%J ߪچ,Bz 'N }?rF3] L@zh9]]DX$4`('0&a^Mc&&+;.…:Miߵd(M1.S1ɕem' Ƒh טzhc"/ؒJyHUʘT!փ>VjX^'Ow .ݤBm~ gaU4PÉj+̋[ ?O<޽pSECXJk(>-;HCM>aDdڃ27\T$2o(!o+Δ ` Ңp@ɇgy407[Iټ?ǒ H vay`Ar& HOkC/l_8pCCjS>зBZtCbң [GT߆#oYJSۗ#꺵arx0vޱ@7 lPKGN w+~R(K4ѽias[*,LK~{NeUs2hT|ja5^wʭ&W3cI$5xp#';iK ه=y<)`H`Dufˏ5|;,7N&T:׿Җ!%X0 *;roהk oM0G0S1>Se/<|#L:czug22a\zܝv7E:'5>U"w)W`vx"JTr4*ω>Gf.v_/\% oxa)nJ$gj~ ;-e{M1*%jW 8kÍ7>؍1dwLe"7.Tѯ|·o8tN`Lkg\ҁ ,:3Ex~/m]78]KhiS WzgF5@]O#-)!UD#6q/#)USppf\j|Kr~`~tQhOLT9hpMTеAsDMZ1."ta{EW5'sA "K_ a$s+Xj21F g@]S1B6 ^}7?1eꉰT@0)sP$P$|(8:5kP W)AitJ-v9ϙ9eHFW"AhȈe0D#=wykkl(?`a. A_%XMBW|n):h <ήi=w4a ϼZ%j+̌<{cg+PF7 G=ɒD{).ޜd*48ч#az@ *Z.&9VÑvX."6!a`hilc@O+Iȁr+&E ,3ԘL<#IYp9?ItXى0w %d AӁw'Cy8:^{ \Bry>} ~_tMѧC* o@ &x˟tVFۉUM ^!8WY6KQXMôȦGOjSpnk ag4A-{hXkQXM%a#߮@ cdSAL*;t %Qx+̹y;_]?b<IMgeXp:,@A~LR,G1}'"R\c*%߱~/'}َxo ,(ѣ}$&"&t=M"-kbx"44 _W[6,F{!෎(K-md^YNjmY}f&01&M:QP}[}bblmAqLZl!فVʖ !=I1DYuvvSq&Vc(B FGD z~͈Hͼ e!k:,:Z6SAZxK#8*Ut0odxW? l޵3 f*C]~RD4YGt0տ6*FZU^LШ%zM4D:FRLɒL< 0[!?'7Ḑc[78r օstf-GPA靚#H}W,$'%0lJ#p/|6W$q9#(d`CQ UQ ,z-a}iN<?}ca+<Nv]`rzH :z?02%#JJ6ۜB,haۈMG( /xɦȘą08vy`Z93z/ 4 ̶p's\O&b@7?l )*5(!rsB|C)h( D7dɊOK^?^N:ĝ_ S7 a^)%{>z@Dq 58}:t+m=Yk}qc߶fnnwm_EFߪs s0hqU>Uѫ[e?tF\5ba9bO]Ȅ N;ޅ.+,[⥩%s" LmGf27,cIU r<Ύ\20^j BM /z㻁05v>1PMzr ]em3_]l!2r>̵)tu 1Ω1؀ 0dS`~H'** R0^8 \&B%ll۾)BuVϜ'Up9 ?'7k siN/:h6֭[̠Љ)#聎YEz+{[;("VȠ.ʀ/,L PG83X穰=t݇FbrNAw`YP6$qLR[EH ͐xu"w@,O8(ʁ E]2cr`&ewj`8'~P!O Ha-* 8"Y@#AKn)EX[YeX_^zuxv…snhu!093~4ӆ [/zGP8',pcp.BCNFG루OʆN(9jåCerkL8e&VJn\l$@pc4ĚrU6R>Rb6xY/R1x'J{:YL!;O;@H (iF69H2^Pҕ3qZ;=3[6Ck=0ԃcutӒ+Z&h£~Ζ0!bs\G\3Gm!ֶȄĺPyd;†XRLrG@ܵ37ND. "P^F'G˖ R KnH"́Z DV D`dB`=h~ (̮m#<ǎ SWa<2[CE@[ L<@̻K 8ƥS9cs~X[kE%%;Q7["aʂYg ^]1Nn;F/l!g$U[OWEbD|5a6NkByMgM<+ a"BEƃW&Wɏ|ere7~%ܹQDyǩ]*S(O7kD&OO孝C<|ŀSyA$UѢ&Sׅf^\9,=ӈm!?.(FAC4#ߟԊ(\nL#_  c[Vp{$D ([%*C:ВVlq[lxPPW2mj)8x׮l _BɭD>U*!}ogN{iS$!8g!C!pغ'(]lڑa'E~s_z L˔!7xR2"oAx= _Ǐ"!>!#=I#vKv~S61Q} 7qPϧ%gVvjO`,[\<;fb_"dYG)Ro~^n_a|EU U4NWUʨo\΅I#}HW O2,MW91$ J@b1xڭL" iTϥ!I#hT)L#`Z]%#rC`ܸ,V9E")DL !)ͥJabms)@ԷKGKFo(2e꥞/T|WDŤ`BȅD@R{N4;2[C%eRBңl#A( VNJZ=Wǻp-'qEܢ߯u:ZjI!1=+lvhlrM\(h"s8WEO; [Nԥ#z"*D`/U E-ITy  H+ .zϲ @,+8]mdƫp VEJCQ;?!.1'9fɺk&8&'S6slxEv5!":Fb3aq=wiA2ꐧb'QOf3?a]]V2pEp?pE6vt Nx?p9U֦3|0}9,V[3ۏ/+Mrd ~orcz'+05k[;V)o)&tzϊ3(\ksHHgh) SR @mt{?J`Z V~$dFeWj/S,DfeXOVݧf$A?XXjauj$/rdY;#BڕsicEͺ8$Gnh Ue Ubεϗs]CL58_ChjETϯٟg>mۿ eE^Ku3\_6 |C㰤>Zё|np"ƸM8Sa_/4JǪ h-~P꾭pp):xIa=W|{^9={CҽfDo1{" {W$b>< JC bBMrUX 5Sj#:+gJ֥οx; .DfYA騦$F>CĘi@86"ʘvi,/ɳʬ?2 5d0JZ+Mz(`EXPsz]ÁhGo{pgkm9k {,yWYW([+.{+/7+{RQțøx|;Wx>6?~y珮*<b[MFOR&uGS/k=#f 2dxBv} L3 ǔcX^+/^R'(СXՈX*9W?/JdUof`ڐBeyU1 fi70z4N;nWDBU/ cF3%]"TfPCLim>=#R}L㫵=TssLIY6M9)(D>l|V[N GQ>-xHΧb1]cv/PnJy10dˆl^_{}@`ߎ6 69}mi[ԲWro(CMs\޸z5(دs7@x֏6aPΫY90q(Ulࢶ̢ǚ. bӞl[ HhEyu48G4cBsGHKg>W :ìq5zuEڏ0ta}DHQ]O 1eE]JRF`c'z/K hEd<3 s}6IaCgbXd@#9]` f+2L}: )RaG M 2%[xL;bKeF%ϫ9vZp{U$UUן:3Úc9xoWZ|ڗ%}LjkjŸx ?5Sǽ_}ET<jX=꼼pҚ{&pBpROJxZVOc]=@+Pi^›-cBy\/ f;NR h>]Qu/8>uN6k4wRVcԺ[dd-ʜhLMphҭAJ[)c֬4HWBwOӚxnxOm|%@绚~4Do91ҕ#X\wf)9c͍5)C5pLm!MkִO۫n1uuSt-x5<[5RX~Z6 yCݤ~?N"4gEPkz20?-s1aʵZJ t{WO2p Rʲ+whWeƉǏ}z'T_) >z]>r=wolC wcOoaڏ/}Yy}iȄj t[UjZJ]ӱs~,}E%})ТגuU(+ GhzXĆ$_Őu=5桂d4W ة$ܣV_ 9aT ևJj.im (*üUSF3UHP&R)#ڤ/(zP92f*|2ԿQN|D \;i?Oib Ηԅ?>PCNQO}ahRÛ}a _ ~kC|GJdf=sprΨkw&R8J¦oj^sLZTUqF9!x7w^[W))AfP/dÀSmnO~!ZyަUWyޏ\3+ P|rת/ G/)jޤ"յzJƻhMډE$p/~iSґ[ 3 ^2 YqCsY&-^&#=&iLKL)|# ֙SсO"BI!+L~&V=] :na D ݆S/aρp}eQfaEMF70z1+ ;V`=e T7#0.<>ߴ~߱},U3.%M~=oQ8y3ӊ-[B~mWJĨMTUVx?wT$R) ^9Fˣn+'.E=02/k_ -we@ "=+CԤ ",TFj: 6_0ivuuɊd^&-+]=/{KhLpU$h=擒܄Xi1OF2ur`Ȥ"'"kiV4X(ԂSsQݡ.#THWpU<YMXx `R1aL|XJ8J؄9ZiYw{F+*Z_TFR9FPam'K*4oKoﺺQ;Fk@Ej_fFL#]W`uOYhq",Wjm*,=k 0xB"/QW߳l]8߅tuJ7ThnWN5>Uc->eff%})ʫ !:%)( Ff J SSgsUl{"/%i).ˌzjzj'Xdč3F" 󆀎y:A|{r=cC3W9 T~[-"e$˜2$|\֎MșlP%(Q׏JO:},#qyם_0st7 DSoye+~H?zqmHe߻]{hA7jweT9.ݭ?1GZFҼFb\;Grt)e-5ШwQrJwI2\rP>% |"e]칿zՖ' xk$"טV vH'a%~/pC$J)L(Q9rD^ae6dy݉4\9C2yHʩX Wʹw>?SR}0!HsSg&L w6^*tٝ BڴlE"SIJ Uv)IL[*jUn<ڌNHBsjv@Yס(uBR/}E &=|HjҞ5YMј, BhvVh!YtDC<=@0"4f&\T@_W5ƃ|+]z2% S~WC#QZmtJ_`2);y%*iXEhx!~1LIp9Y~c_axHG(ݧtb& yBT* hgmn-={ RȫDdd:||M/x5oԿ᱀*&TܧfKdo>7TR 1]w˟ғ)(n\0]<',xQ5ل\ m?I4l;hYGl`!k0)iP[bƴ(*14f2Lqt"#V\^Ȱ>f*AmCpI.vRDs,c^y/WIWoL9"%ҌEdDFzw0EƎdh.8fL6l2Yɣ jk,,ol|LcdzduPxn$2jV߫@!slM"T~ !Vr>TԨ!l~`'98}J p'+ť_D@#dÒ;"?XQ$IR eG&@*ҳPݧ ҧ0>k?gѶE*"!J@HY| VвLn>[Ă . JE6p(Q剨F.G V(І[PYۢ8(]3e2_Y RF0\=SHYPd]L#sAp0MKx^œ nYV>7j4C@c 'n B&0HQl"6Hl@+!1L4 ]=T|약zUu8ַ_9v\gs01ivc d8?Rn9n,s{L>ǧ/r+*oFuzVchhJ;nmsm^6b+[[V~iU4%M1[`,nhTΘ?+&qwh׵ؾD qE@ +h!F5Ћ.&=xLeZ~a0ۿERFƒ*@`D'hwV}OH8 LVLB*%!" ᦹ'+9X3F &5 !f -.Bs|mL2ޱH8k# M!yט[,Ԣ yx̯502i9.,T[Y"㑤(0E%-MS B;87eCtĶXZ!1FC{A6:a I$ 4\X[g/؍a&EjW SO(}5kWTƝx<͖s%=Tgʆ`xP+dy]pD&=Ҕ|QHbsD`zĔ@ZBOcFŜĮ xdyy4p`$I,y06 ?]mO~AԌwE H8qG`u5a9>{QU\Y,HQAױ+#w| `Q&"!D U~{Vf9`œݽH4;2\W6+1"!iHp1 $FVE2!Jzp/}\rRnXxl7 |m`hx9ɜ j1_Ӑ2a\4+-dP!O- ?ڄqm"@8IwLc~'&oMU8bhw%<0wGr gol4H@]H_pWRlw.=^6r/$ą**v ;i8eI~m͒N 13!E2Y!617f+&sBKGFD?ns '.h )`taG0cxJz7 'DRQxXh jZ G(Tl >r_qe\ 9֘qfs2.[N:D?'#HEP4xgMdR,r0<8W)Ba]0-``y1Z<Lhq%&mh^k0iA.0n,cLGa;ckKLg{|p,4isAcwb"gwf n$D Ғ xƍdWc0xw.6.iN=%sS9ZLf<~ck4eza#`Rc >hG@C!')M\e) 7ؐ0'R{B`@ޢ 6Pxs :"Oަ5EkE7F 8H V71ڟ(Bz LBai `0NS@gasCU#>,`.Öl a8N#gmdE6%1U i j -x a-0:"4=f",@4CbJ2h# <ӳ ae?GdK(smHd 4= Kޓk/7=I&lpj\wO8p=i>{f@Z* dENҦ"AbѦƱ#Y20o PT8I&F!iJlM]QlKL64M", 6J{[eVU OM%+]DM>.xi5fiI$r^@q9t͸s0M DCR |*Dȃ$V)xdtaR>4k &-p3B }Icsy|LA(1 ]#x%>/;R5䌙:s HI!Qqw& Nyǭ%TN{GEs#Ipe !T)+ 鎝 V$%K31M,>bK##Sl” =8Hݏ&ļ ,G.";iiZU^fUp3Cwc"2 >n1J~4\zꯛLMr7QtS][,&b4;&Fs zyY@2tR5-k`PN)^,3ᵖi5j$Dt؏DY mM档uɥ27Oz7IV/ BM@UI[HQbӌg` 1zꭩ( yzU>?Ru:Pg{jѸtNQ느&),qQIY tER8A82 <$:IAeڝķ B"F:̤0t8. inLOMR `$DR7Y42 wrKi` -n1(b>A"x,;6Ps PL.F$[E\Cc. 0%7RjBf %SJ"@B;@/X$fŭ"*< ! p*d4 cWJj Q*!mn26 Si6@z eScÔH&9p=۵"8JyF!+kӋ#Rdvx"cԝ]λTRH!> ^{S5uU2{f@cZ1^N'$L/~؈AuٰUŇSB,wAQCZl)!]G!=,i$7?M%6z`c  @קf?$qŌtH IQhDK8!+K)2hSRiw&'}w&5>fGJrp^@r!&`l7 L+Xy܃"!Dv3B~=/ 9eSVD$i&(KQbPDžWvx 8"0dN.npR4[ähpzTdJIEzùIdx Ґ[pqIF09:-?꧑Va%)AR$c-"A5j$9 䕑^P`\K[a& 7B D22 |RJFIkI"P3.$&Fg%Y|xL \k?2 iPhܥ~*\_b.H).F}?EcӣM&UX`RR@,+ԖjkHxF Ϩ}#T5Iq P}@q| p< aud%Oɛc^ev@ϫk$~mi[LUqE 4I1p X>;Zp&W(ˀ)s{S*81 D^L\(Q5'D ^r7.R9ad6Ӟѹbu`9kwjLޜ,̢fCO0ߏԊ`KQPG!3n[DZ [$Q20kSd]bXoJܕzK48*ќa,ΐ FA`Mfu"3f)֞P0$iA&j"xʘ^Prf>=xjҒmv4cxJhE6/h.Ψ%0WUf!EbEI`s3p bd*r@~1A}HƠJ)2,HIZ ,H#7y)DjGAjqڨ$ 1~KUڼf˒ܘ'f- '&孅D'{Yγ~$\8V|ha=I(r!Iaea4AXSq9 t&Ku̒ ^)PLTc{d-A]d)"K"4%p{K]%-v"/DV' 6}5\LU,"uf$M3RȀdƃWC𱤖*ΰ]NV;$ng98\9#c7[SwEf 45ݼ7'oRh04z/XͅO+%E<$Y{JJҋuXk;&"dk' +;eSHK ~̌q]^$ DcTR8`8f6| L0#|ac`N =%s#(a22!+[ Y_Ҹ@GWHEґiɱ?'Ȍ?-[ּW$1v]+@{mŽX 8b|R=9ߵK`43䨌iFj/`qS ekn]MQ` C8oOa{Vq=|1pJ&4Cyins^6bN\?* -M:s{MuEno:I$9SA qC~S\1x,vNcJ8q>htcBjt/(fKW$7bk+f~QS)>vj14clRacjS7t%(`* %DMGFP VƖ[b^amYw4E-.}c@RNy{;ܢ 1Ǜ\;bڜ@_TN,r9Ղ)Fe'vba<39O xrƫ|LiMQQs3G$Օ5:RbӇrg 7UxH#HŒE# #0B!T\Ȭ?"4B)0MM"V>q>dsIC3@d 2FJ0" ?O N!!Bѐp6kK +FFהv> ]ZBAHHfKoUWelCZ(4qZRt9T_F~vl!eY f?2 <&`)'%Ɗ$Em#\cp0W4ִpޣL p Vnd.􀈣"NB.HhfԺFX5Q< \#MĄzұQrgVp"NmDWSao@Aʬ?)Vv1PbQh8oЎŤ0Z$3uq{b|D-1,|SiF~' C\r^Sj'o|s(G0[ъg$hKU@ßc*˦'LUa@O})?lY? 8$ 'K-!9(-N0):؇C6ܰ$YF)~F^^JG3TN)~FU=qM Ye1 ?0ēA l?LF;ۢ~HGIZ~Ed^lk=f2&rOT%Xs$I 68K%g` TF&tȍ=('q._Roy+blr@L%5pӎΙ5OtY Du]9mű?~' 3GWɵ=Xgs\zǖ` =Edcb8C"n zcW[. S ؝˛w9ԵgaZЩǖ{0uP/5ҫSt n3i{Si}]kpmwfm*[JwK/[|e%M`Dε< CB.KK)s3ёi4̤R7.фcoV >pUS;7`ii 7 <lJTHPZ L3vJ%xʏ`oR^ *բTJC*A‹[S3o:ll o_w@IͧHϯ`Iis w$\܇/o! δb֑ByKl!CqQ:?+0T$ć9Jd2Qv}pnJRl^N`iiO[0֬S'/oY*%ٛJ 9nM vprq[vL 9XWBx;Ch,s/&T7Q3"%%?P66y-~qRZxSŮOh)opͦ5aVUo?$Np0[W6':W3׶KY+0_o>anUBWnBfRYiM`IJ}R^)]}_3,M[my0Ac؇s ^ xR|qi>% %u^iXP}5o҄H[D֣C"iAbq<q lnkUKDCs%~;O\Dׅ%DK}zR hfөF^?(~ QvVlH<3WՏ_p,6_> /tx/`O0Ed`J!xygj509?3֫R­TEߩUt/U>8b|i[[|T@M/4< y4e82填]Z]jW _WKk|+^%<59\I ;irasaHmՓ01 wZKg?ؙ"}x>K.E +=O.w`FO_߫9 2i/5w;R^rv> .چZ`2T*vC)ʞ<[Um`35V:3<<^91&;JiL'hR03V㻸>T^v7TtY#نԄRAF~[{p{TVWA 8/a2Ƃ]ޝ!&>bgVJxTňT<ǖ*r#pieba);(`GB ]ۛ,ub;{+:)WǗ0UWyhac43#u.'L7YjPmmzB!\Q;"xtek-a\Y*w:%uw]8KJ=i3!x4;-^Q׀:},k׿\6ԽyWWv 2_)"EjbW 髻sc 7z j!n[>O K}%'ܝV!0b` =$ư=jPTvi0+*76+ֻ5VZU<҃73؜];-ԃ:\'T쮔ezM+ c^3c`,)eoQ¯:{{Ca&i)Ɩdl* aBν%ё o4IX*b^ZqJ͍0,Pi&˨הI?N;WPV[ՊfgRZ 1pL0DFWi4=VX HPPVZ˾ bxK3g@LHVLsZOf3MȑNwWh׀Ne&0P?{>7Vx{_o`2R#B~,N#JYקxY(e>nX 'ShPYI@ M1 Yߡ!lT.n13<H9SP;7kBұR{ 2@ Y07wfO+:F9p3qPZhw~A[@@xc^Qnxe0 /{I9j,A`<{:J6QZ!^՘D_S5n\ޫ Tk11@Ewܭ%W2QyxL?ߩ f<2d28!S)g+BK0O'MP"B7b\&`dj@&5%[5k*j~߸X_ܑ.\?Юh>wfS׿5YDqQ3??5IoMuhg*@:)ƖLJCzX]/ W9"ЬNIM]1>UW]S^Xߵ10}d^߯=pܔ湪oB27`y&b4uԬdsMZgr`k4beA4CrG:o=r&A,Tכv3?Kj;rwτWҊO ǩP#cҁw02-9J?^Qo̻.7QRexl8(Tgv| 6l(?p;fDzs+O.1P_%Cc>M^2^%G[O!A28>Nj8LT fC@6(\A(\ AVKZGʵ6|)1ة:& VEa, = kxre5&t 13:2!߱?_,@1Wa&A։W6^h#a󠂗7&&,}{{ [)X΃}SUgPeYWȩ:'aiiI}ׯh42ģz4iH2&{8J厗E`.4 ձ,--k$Z^YQ1{k~{g8@Lu>|g D'мVd>k}m=t\U[:Gf`V'^ xC 2*Ag)߸~6ɓW{pahZlܺiF}y^z n\J) zZkygΞ;<:J >BJܹs.=Q; 2׺dgZ1̨0nDti]qSݘhЂ7&ezJcs,)` uL=:8&>ޭ(ta0坱.4=lME&%Q@M,_=.,kEvCG={2ýN 6Sָ>%MQfPOJDZ[P٧c~ؔ3bة*_dDd `i,J_% p/C|:yo @DVw:t.!+21~3PG1)0j-<ڸBsoL]*kJ%:Vۻ~{Zfq6KEL9qF`0C>1=ߓ iq Yc>''4m$2 W.{ |]>. 2e( :b[~Q*}SQ@OE݇8Uܞ^?+q$ ~4/ŁVR6vja+.2M+k+ g@v1z !pBvl^i.QGitmaKyu)֨,jz,So! ^Ӛ!xl/RWrfsT_ b&+Ȁ9$/Qd]ë  $ ߤ%nفW_"_-[܅GL7_`Μ7npGayeX o[fFԿ\0;G͂p8^YV`6/mC1eTւ/Ж6z>S2N\z:{]_vJxaqi1|3vI꣓f-ctvg6fѓ`ٱwo 8V:,Ȁ9JЂCA^ _@ ##M n='O%Zݗ K eгf3?.<G+_R\/>Q[(ooKLJ: T+`ۨԹ"-/@_XV~|. ái5|7ٽӤK+NwyPC X 88Gg!@Hķ/DpG%)c\1oxSӃ.qam$qŎ-z jX-7M޳d5‚A# W 423ĠЃ +$ -yѨTw!ړ9 {:}-)"J7 Y(0?eA AB'ق! J}/OLk3 Ya7l UX=Fܥ%odFli@o # n\e=}ԟcv|58WfLLf->o~wu€P&l5'O]ıA6ZZه*s3eFIKn1nm GዅQsW 0T w6 _̣e{%at־R=X]?aj4_d<2EO6ww`åe:TR 0Ң˫t|ȿYeH* IE+2o8:5bB_ ȭjHvL~2 GerR+>>`Ѝ-*0νݱm K]a_?m+3FrTce5ʠ0}+]+ /״`:m&1LgWxK{&1M`59Fޑ޵ vˀ{*=rnr=R3$> 43 QE@#oH )d:eG? (݀K\ybY_i7=8s/L\GisᡯٯO ]=-: kf#uD>V,uA7KjL=k<؄ p\C wlA ȃϮzae8@Է2C?+)/6_ibD(>Υ;0/-d}Jau qڭ/ъ^ Vzw=qj6f; ch\S؉ڝs[^?ߑ( #,h8$@z#I}8pӁ)B {NyD !.g X y]) Ц:\5x~v/ߟoŦGJxD)⁻mݖ(,Ƹ}~-aB/(|dMAFH=:e9'V09-H2lԖԔn*N ?ovk]_o1v0 ġ@ac6p{xbj<1ܕ~p\14[!/ZAd/z(r[yzRKpu{ s`]&zU!CAxo\()jNQ_d0}ȌL30 M#_ky!GUh\@ߩN ڗ><&V+)Iu{W>xJ)xу~io[lJㅊVA69jID@]mNyyN=`kD@q1%dj!NXrnP 1c۲z=T ^|k ;]9 x)o\q"dĠ c!|""z3").@n1xDk@K>fN*#,?n-~ck}lWv'}OI_}&k;fǸ{]'2iW+2dJ<5)= ɬ>IGJ:Zi7Ym:zdr;S6wVZ9\kp=2\(/>quGy;e2lgPk\C_O 0600ǣ\?u=%FX(I˯dL yEDM̽/)|B$yǪYoztEW̹СV)`W -:8.}w9Qe? w >S'MDg>OX+]ڵ`7 ]A'*DU<40ڋ|mBz'R /jvTl,xm,\9-Lo=KցS諻5ʠ[8N*U$M7ՙ1'ϠX l[cPTn[J<2 071[WD '.ꨦb5.e0lXe3|+ҊAk)*.]P@*Oc F9i]dT@I~1/PY|/nv zwsy0/ZG= Zț=f&Q#O^8{x+I@nYjy_mw'Iw~XRDe̽=G<Nx]+M37,AW$3>{5ywH_qoLY %ҹxY~>JOD1vRI3xdMK|7ÿߍnwntOBM/Vvu5jH=נV1<7&.XAЈetW긼Gw0afl'3Y_!N5;9['˥hʈ,.v<IY]shJr-Se0OSBtӫ]<VCPý5h>C9}*MLZ93?1Ǘ ۮ}m2I˟4-YγI@o$BO:y/@B?mI5 E MorTM*Kw™ .mߦ8L,@oz' }@}PUO_|< ;saD1v|4~tj\90bL.L0YO-y4M*N[DV~_z 7Nآi8taP5U#/t[i.]t/>fyp+?w^uI=֧7&_[/ `*;L8D7 ||U0Ayrrz˥,㎘t9G1 1:׭OžΞ}ÀRS ˯]sjrЅT%&:-,, O54{=XX\2BVP?{?nuc~.ԇOçL*7,|˿|c1ϬU5Zx ]{ zE~{)Zr&Aٻ2hf%8rF?G5ҋ_܋W.>pp(`n5>r_WS堼9!~wx ә`ӴzGf0*,-`x7x^^QEWҎn<8Pߗ`(l"TTH.˄4: 5{a׻>'(|°.ʺ[L?r;$#qcy?i-@Pf aJ6C qU) 9t ?꧱~.#^ >M㚊v9avMtEN ^f&表C^J NV\t5/aح8*JrՁᮜaFbA=0Ryr3]FkGzz]# {N3LIx `A2 PBʪ-̅=ϽvޛV0w< jjpRҀTgCh>_|B fXYɘa4ڮ":P<SgeXnCA3%蜁˃g3pK=CTsVZdp0Z[9| FO,N&ݜg+Hss&⡥s\O })\Pw#8p[ P$o\duߍt;oO{w(kxizmx~wlgq^=gKþX4tc:1XYRʽ "28''M*DҀFHDDywm'hW>9&('|mNFG}etIhǺu/6fMnm-7ivikۗ\߀?XvKF&Rt(AE#k ox.8ĄD0-dԥ4 ޳ 'COK8#XAOsK0q8/G_fO~+~nN舯5@.x(+na v &0S7e_w TX(X ? t>>Eج+ 3\X_Uf)Z x-" t|''B۠'b (nHP,=t㎶,{is1Qn>y~.X_QsD^dKEpnOTۑSw~ծ~M҃Mx7Dt5ЫFDN_or1x{xRO~ dJYSiL)]}(G2~j` ͱJxu b:izbK `5ˌw`NlnF{" .wV+y@ W=AnWjEF؅O ^<Uxjv٤0Awr 7sÍճ4X8X*[D 9b?{ژwm?DlW؝Όw,J^%9;O`_9x⊁k,/'tz?Qc|/P}c?Q<B Vf;7UpG_> [.X]sdngw bvWT =S_w XӃv`3n  `[ð#zX,P/6jL!@32DpE%xC.GO|43Ag%N3;S %|$%wcv4 % .>W!{z몫qڀSp< ig>,|yvot WWp&W~ה\A]1f0TeQC]Vwa8Ht8( @2S|];skMvY7B z˽*Q9k|[`.k.=BPCIGy!9<L`Zs _fN&Щlqmݤ3{2,u.L&Fk@>Z˘niCi>UR[idY3@B! ;}){Q>|_lz Ž-qwu {G>?4 +?Qkf~tF rt:BU,@(ajW `,0N~v"l+0.aB#{ PS{R)OSĂbӘZDȌ 3 h ]+QHEƀSǙ!O@S֢S¿uB)m{Qi?/g>W5ڏ{7/>ty@-w*GhCC>gg~aiǿ/s3Ƨ\9g ??+t pC>J,f_ʪꝅ/ B҇ \7"Tb/<. =Ǡ=b 9ɳv`m@*G9!4s睐"nY}]PYܽdW ?k tX*,^t`R,D^IWIX#XmQWk?ěpX*aQ `] @<3lYNg ϼ iȽ&h얜>%F+wF0%.HZG3e@@cc^?u [@?0tof_VyBk{fm+ک3,bzxnw\[:6)="mR;@-.G/%r h @{{QCnOQ/^[5f]Z眩zWyq"hײ,GW"&JTg:lkpY,<„qw50.8D UaFp 4~_ϐe{wvs?)3YI&FFgYG0 Oe']SX=Ţ[uq 04`uoB(1J l GvQ<%U,o$PEѾ %~{ή/JOlw¦Io69;Ek(:V8X!5 dtxr/}s0Ui8 J>m]'TnR\Pӆڅ.T*k=c1tхQgn2t4Qת04cp2rɄTpZ&n,$p}ZQ!A;292d' ZƁ B* @6)ɩ%}ZJt`0߼ufe9?^ӗ.2"30 M^[@CPڅy*ץg1mSٿ1l\~ `pP n8J BUFy;sʠn6sƾJ"[ZZ }:r{* RTX0@Z+/dpzYDEٌ{1ae"j#re=}k3bGNKn, ރ塉u>`.?Az .p͹ VpkzPuda$=46¦\AWe!g&ǶʥRSqaSj7(~xiQ(elEM- 2Zi\p`MK$u,ʹK04Hf8rR"ϘTvb5+.Cg WuPS[+GDll+BKMkv8k.Dqurc_:Yo5 ύW%Ɲ*YΆ{L abҎՃ2&"X]8d'0gSorJS4Pf. /70⯅5Ƨ©v"|Ճwi9Z'r*/;""nKHAa1닄0wmW ~!T_è=7~1T''|9`.Y+BKT2#[{p*(|ߵR1P*ԂZ ̥?.Q$Y^$ 7Jt3^Sb3Gœ]&A!n3ޚ7?5xcBKL ing^+ ms65{ļseQ!O~2 kpeXwKH} rqRDƝU$+y-ݲPυ,Db\JA|YJI#_P(fN+ArOCuz 0m_Ǿdѱ ,x[hѷ">A$Ssn:*Z< pu2Tx`pj@ !YWA8baib\T J>`C`q!&r-Fުn 3,'~E \q'W"֏Ϲ 6v{  Vܹ3ȹЇnQg;.#1J D{YvUwks:wjʑ 0- 6&`2D`1ca<0L-&Hc0Y!hVXUksJ}=s^{_@V kYx%L#TIn|bs&V~MȜˎe;gR^ͦEnxc:o i(D@eԎ ,ԮVZKG`>޽pdُ٨ /Wmx,cx(RjJB6o[l Gou9^NiBl8#B[J'4^"`,,T DgYqh9[}5AgAC#FZ&릠o,}LT: hJ/γLqzb.ڙ?&dTFP"0$ԒFX~2O+7_3 fu <:0(Վoi.)S.{CmM2KFf(Fz3A_lt-*p@@U%%)?ѝr*ݝOi>V@fOLX[/8D$ aS;pkW']h$zvԛ8@7X F(nrs.&Pu2V9q+sh́`z@v'33`nJy, E ArFF0ʅbmKh=XG[j74k102*ۆ4tЗC/632$1_%7+%I3gv0d`jFX- Xx аȌMț\-9b :p˃T8ki7ŐPP"R BD^$⻎窙(3j:LKx%{}PR=lr\:נ:^ؼ'ٙH۝]w}8"AAuI7)/1SgR ŊSQv.;0cE D6%j]`% a@nDAxOPɡ 3BkfK/2jaEP)S,_3-@o32#`,pHP9Hg |լaA9$x5}1M*'Fe(nb;`(FOIY@6o\;;LF47j)فlWY)V(otՊJC)v@dP 5HC3Kg} BNPJZUPQQkyqH'zK2먅~u G4J˥ QЂ6NEy%zŘXdk`咊n"Ec_#QHw˦^4R els'Gh m?8&An˭ruÌƚ_ jiCn>/$R\I6>#We WCy}Q6HA4L)X>O}T^펎gTm SՐH|d)Bt5H> JdD@^{?`"nf; ygЇ!Y^I]jLP.g Pcʅ:Je|\D*D]<׺&H$[ۋF%]{56 &;&iN w)2g_3uhz>F><5I2{"$wW%G I4`N۝,ރBJPԏ iG|RD;P.WXw(F?Dh^MaG?.NӕPFklA-+n~l?қ,v Z%5DE.Q~bϦ|9Ҹ( `x 'x:jfѴqqIP%KehD]{]GɧAbtɡNq%w$ai$=ϮtcGҦ8 K'w*;%}kZ 1SC6̎h*C ѡDuxc}i0x"A bg LA O \? h06УL٤" ꪑܠ௨;adKb1Pdfdܚ+1%|DRfe:"ذ2&ÈxU9+AӺ E`1V1[H*G.t?$6 Ar挠(tњQDjvZdk+J~=oc;֛iv{E;4 , '1>9ԑ\,D4F"+e)ި1R- /=5!۱*2ˉd?Ǧ0Ukk }#q–Iaj}p"j{uz=\e77!B B KⰋXv1OCco#[o};"네8[o K@GfN\u6yяHטx<-CiI`D)ռCDMP3đ EM5R,CJMF'1Dx ^ASZ"ᶒ8ݗ0GND _]+iE 2S`%?h^qf w̧Yɏ4{a{0i<=m\AeLz-4=K|awNKKpm>cK? ơzƋ*U*%ךo F Tc㰔ϰPgab[$G\42DSZt8 (tr`fm^. `(XHP^Xvyl r5Ld: Ԙ/(Dx&aPV醤Ge B⹜4c%^*2,-pom&.؃ͻha8pd ߺs=Ͼ|84U|cx_᧷Kxf)9?Ws /|ɩLdD2^}K3y_7>p5l]8 k|zWU3ɏYisro.c(V$ BHXK;514)M+IG?7>Nd5ak:#h0fѠ#Qˆo0`hX1ACCD=CQݜqn 8y,PĜbNAPa~?Ck߯z__/ԝ {%k)gå\>}ps\ɋ,vw̞ we/l %:ff(=egbLq ͂"oKj Xʘ x(چlC=J]EZ,t6PDbN@ iCL_mrM*U(:p@Jb4XH82A)+JNHw-eӅ: [x=)(}!52[֨+g 6s;5+&1/BpĘ A+Xaz~4Te0!H" do rJZ@Ei:@/aTB qճ)h8lTu3•e eڦF aoDP4 }$ePH~$Hv@A.w_fX]x mpٍ;5/~@»g 8qeZBsYLzO;ksĠ?{ǝ~4]J`@p70c6;D%qT"їъ<ʹ3%TaFZ2 #hKBӗ<ʆ,d%~(.(ԝO4pĦJ, +_'0^#AS *+crNm:i[Nٲ9r \cØފ;=jk?p~gs Op N}$L)\qnX;륟QYL=ӷiQ|ϼC01x\:;(8 ʆg Υ4Rs)XJc>U~Vx+e/ҘS~nIdBow Gfk`j閶&kGWzm4-iP$roLӹa ZI[$l…uƑ<'t>1Z8'Bo dRlylXto5<0@e`'4/9N6h8@㫨`9xleG>:x?&aǡ:'߳ʋbtnxcO^q <˅o/}8)Kp2H[0Tzo ȾM˕ VA#pk^RڏpPempcª[<ǰ IUW*4-A[zڦ6Do~AFxv_D)*5H6((g]քU߻zgsGn7?]wo|Bh=#/?;ھ'P=|]Iya4G1}ϾX}p/:7|{ǟ ÞGXexUw폙B8-x,$x3QɑG&w TG#Htc (hSt#yJa+Jj_ 9ѻWJ(]Bz>>0^̣޸(J{g7 6;h}VpJϵI R/& AR~:Th$2dr((auQL[D}Wc)-&׍\P[\X8|Nټvq6jnH"*/,u`W|yuˑYܴ.C' `թjV%$Վr&uKXM#:6h9f F/76Crݩ:$S|npת X9MMtn8t-tIc6LEj\xleRq"zЁPf!9+MEwAsڨC=-bsE$۷$]K/۔~߾f]G|i^_m7\ĵ?_:k3|G]' grZ2.}xuyi:. Epτ 7/r  * ǯ>+⓹t6A)\9t٘W`=J tY]UNFA}DʊUOfsF#q_4=7|/?= KϿ蔍\$o66pf\/$AB6R뵏=^kRyǭ[8]޶>mPy fOвYк@2v>P=/(??d;y;JZe0 Į"i b2,"4OO߽BIa2)Cj3vRx*(43N7K$ klVoAS-残teX.g/ 8GaaivO?6.2 .~Dkᳯ8,}ӺUp9;dv!X|sPWpQp+(<ǝ|T:}bCzCC2|wqqF nY;L ;xىyM5. g&Q%ѥ==l"ZYXH4P*,[Pm(*#lf( =@}6]~0>Ix%o, ?#+ 7:Ld"g!+bo8VE84pNS Lu](y$_ JD 6U8h(r9h> y#XA.i_q]}ٛ%> uM^B08 L~ݰKV`(BPT |.hHex.,|sb{D> v}RpxoagХ Gr n5MSK']EHe TQ{em*D]t/io4^^M7ψ ð׈8-ӆލ%LAk'p%/Q6I"DA12^`]#d!L%ݺ8&+dV![bAaqNt*friJE^AA$Pbswav:6諸/jO;"K0*n['%֠1juD:  pW)לDE17(E D2Mr@q2K{%Pzx!cNRqIMӒdiiUުcj+hb-fj@$,PN/`'<3](E/5Z/(^RNIJn쓄G՝DlNBcL׋DT}|-kL8 9⛣LO股fɗ5H6~ٵwTzT5]fC JGDZQNڢ`D3R4LOoWax؍m:fYp>7% F;2DcݼrAm8P,eFJTjj~o$3EMs>sn,T2 T_5}@K?xqÐ%bCw? )EP%e@42K/YEl%8v`lFIJ0 ]/v~k7gTuE~5(60 )P [~5Mx"^[jm};zxFvpX|#=ʅ3grsξw`A?ï=w"8HuP\yxV|=)ۡ#Id {,nzs3|y{C#t>>O9;p7__> n~B}fRz_1"7G}}o<>nxs:`:tI^Z? W= .>)/?6op..~pM7E\d-Y'lo$(oV[N`2pvGt8 u MiY'Ww RW}\gQE_ Q4 QE EwQKhiJDb[],xaz/䥌?gC {)6ܮ7Դ>y4^@p_wϚ,K; ɋ;<|ggZלg0h|,Ëo J ,~%䦁M6"E&A2fdm>,^Q NqpPyE9ь*pBn'R;w<.z//YM֥K7y {ʹ \LG\? (Z^׿n2ig煾r6:z~]1xǏ{)g8Wܓ>oC>~[os?.4CfChA|ο~CsTh8P3@N#t%ZM458r="ZF͹\]Q,Y3¡i\AFZC3ԺYFBv)\bIl(ݒ s"̪;eY\}Z͙rY/Q>x0O>!)g rp =|u)vµ[ಝ\J"u`s6om Gq1u>r'` ޹)Y% i+wWy.g_WsF?3 obaO)t=la$6yxJ"Og?CH5$>O~ /^rIPhq|$ 90G^Tq4| ^t.R=v)1r^|J%8{F[7?d ԫ-Qw)j* :P=Z~OU߿Y\n}~gY/f.C2'-P?xgegHD~wQyA,@^y JDOUX#^:w53b,[}Su/D"Pr4d6wB*3} zi \L;I>(ePK m\q. {X]\Ñ`,>ctH[@H=|wmqp^XVM%D eFCي ŞszAP}lM ]铜ɵ3/KzEK;B3eI~x W㿯Kǘ)l(pSN[\꼇w}y1๜j_́ŧO]!k)O-;~|b9{ A,4&pwwO[1W_J.A(qFrMH\>YϭBo?D, )pS .>ӵ!`G}>R20PyGeS4܀cFpiV* QuZ=(&N1D d(ơXQ( S.]̆6xMf Fviv?y 8˻fHI_%' |6w,P[a:M ^qyC{&2HvoOW(%Ǫ~k[x8s]zF{oama9iL.7^򯋱Yv^8lgx3F`}.]A|L}gQwϫɯf _x*gOpkt_F:cFNiGy=_gK?a^ίu1S㿐^3dg񵻅_2kVq*ߍE|wnQ7:S839@O  ,7Z3U0= y`ԡIO # Y%VK_IV3R# ))p^}x^gO ]~?~"U(sH eՇɼ[_8Oڐz99uckW#.N_,0xGs΋oΰNY^xC+y/1wLڥF~^:6g ]xwo7녦Z>zZㅿbz s.(qyfoN]xu48]Y'8 _CqNs\ؾåL?R890>~&j S 6b/y?8T5~) z{r$0du8&C[By2ݘhA>1i(5QPg "B]ha/zNzjxh !S0IU(Ў%M8В hHe&cp @9%`vʐcc\;i&[N3)s 1 X\ymF]Æㅒ)}tv]4Xuu|Ct ^t%6>Zd|z.fe_wj.@/p̥)tsLQ֥߃ n= [ZJ%;C4m@v&d'2$>p)j[bxw]b(;<Zb 7K`!8F3>EJqGTba{7T=rtܹ%̢|L]myPc+{U g/y!=8kGxR&R9>pRAjm |ag;CzK(Db*!઒0Qԣ@%` Q >!g3\H NWFT 71@5P(rCr e:MsY ?\+GxnZNVŠΤlߕKCCSM!NZ37.~ayRP_Q2!|X/s#I#*$fvWd嬗^0ЄV|·sV6ʬ*;^ Mg>P2q#aw'F䲯ve<@xVBܛqH.Fݬ֧$%Em@l V*-JE90HDPN+(F^+La [I3[rVW Dy(mE<&DcW Zw6IRt9G"<8Op/$0v;>+1@qw$ضm;=lzu;v'<o|=b΃Byn[v&sf #>G!+ ܵ{'4/x8 gnL#alaqG78N>_J5) Λ *c},4n=AʍY2_N䆚l&{R;pdގ@&ߏOy^P{yTپ^Hd" TlxNh^`Uc"5pEQ%dF: D;@} I@ǣ tD9LJuȋk'-!֠}:pVg7?I[\$rTpo'|w>_=W=MgM8Pj^BxU\p 9jcao8't(}^;~N?"%f Kw½.֠_"~nh4%9ؼ"^pkQ~f9;8w~]8)䣄}Tq ;N4r9b1gxFFܢ,(T $3`b"'q@Lqgs6v(#KswvVN͈41IHg21\ȯ4ϾS A8BT9ivYʊ݆M"o/Fܔs,$ ut3ۂ9}%#7q`fWnz'pع.8@VǏo=EG@wP5n}_Ix{TwNu. fӶt3ͷ8s9q}>g[8p=k\DAwnžk|*G曋y n[AdvlJo6lto#FJ 9ߙI[i0zTU**ւB<Z;RPH`[Qsݚ; ʦ&/T!6Z hv Y8ac:Q "TkМP,T-L,P0i6vkQׇ9-ptQ)w/@ :|UZS`. d]{KQ%5)|^zZA B ;F3fqcW@~z~kFRPx_!0⿿Ëwy.wyC;0OjEC\\z"|q7pRQQpbK"$9hU^۰Z߁B#y쇏yV`ۏe@Z_8هw,,eۓf ZZ @> ۭ-ҡ2&1zd?a:? Ԕ` u >=5*qyo^:lE/᱋}&8\Sҝ=KjaG ڀ;w7qj}ڧz}ݕ`xvp?(-C|$b&k) j#LϟsR"g^3v/;}t:M/N][8:x{pqSs3X黥BbB&mFCFo֙q':N8*`i ^kLIc, m Dk0#j {RAQG4c 4<45!!(r%4~$'utPx6]z`>g4D@CQ> T-3(_C8JJ.b(}+M ;v;;@IgIkعCYr_-\4ï՞~ȋ/vxSXo;xڽ1{K 7;~~ 81xrm J@ \?۵XlG=n?d>A(d'O7 z 9yK9G.| =l\߽Ҡ%#Hzc[o@G&]rvƻ+x]o\>C|Áyi !#{d=GщyqIj? axwٌ8wƑ%>K^_Ȑ;Sx7]7OsyH@ݼw)~zG~kOS{pg)l,k9-fLi $p.r AXOrVZ jC PǾϝtne]BkE]H@Lo"eZ5QFT,J~4dϢtK+)(Pɉ(wy# E50)FqD= Q{yx gU&c\W.h=grQ?q\:C>v+O0gxW.R0N7x ^λY}^)E{{XϯQ`}@7_~9hSpSAWs^Ɓ&~ \|nǮO0Z ̕lU=MTQCpDGjq8le"׃'4PsoTwdѢN׽A< ZtF4E{Qc9a<E -|l#n~7B/VA|u .d7Azơl&kv$g'֗zM@Ob\XdU@s$髩ORԌ4'5᪔!m )΋:9Ǥ"9ߗ 1^PKmL"*.B#`(79! u&Xl֑cR{i 304ΦAka4e"ǰ0= exYNk$x0SjBsD}Jm#}ȐCz/8?G`ZA9MPPz3M<%!]TBCl9iYm#juNMeub^m/Xq\D,f,yTѲlZ>ׄmoN*)PNH!pj6xj[1$io8H@obݡ41 YgdcШ~]4oC0nBڃ;Ă3q-5p0$ "ę,bP4"e>nO1"߸>X~/7%g̐ ݠ;Pvd$Zމ*P bMkhQ8 澃T"h`,CF0]Rx , $D┲tajKzIVȒj;7Ƅ8/=o(&%cو"YDxJW4H>7BI_w$, uCuC(C҈;9P{ Z iC[,1&Ig/F^.Tjyݣv&[ЦS6O]d TM(%1ިAغT3 ^UNeI6bnR&PDůVj&EQ~zSz3rFɌyAQI,l5xq0@v4>Ը8I؍i pX ىCdc" HfFA &ȠKŇ8ee?f6T;7Ġiw hBEg'ףNf D]SkjPYT T'9 X ơ؝K3ɵz je*" I11W/v+Dş:!0 qL658 s3_y;[w84 q3SG&ՑQnJڰ`ztk6$8vF${= h4`:0kqPfIjK>!$>ôF>ڑfC[QD*I=4b2/Ys@(̻'#.P.0͍?F\q:-4`ZtAf JIod2sV/ЌC +MHTڊ/b-(I$g%x()G6PFTm: hqe\Pyl!\raW^їpӐ!0btITdbIyF"p|.3HF2rʋhveQl@-zdJsQMhl5vJ#,1F3{tKh%ԍOi`%'V^ޔ˂iG"ZɱaY`B:U|Lh0JP-`)3њY!y5A8I (l8j/yJMu"!eӶ74t€`1B-ڙ+d@dw'j#}# y(#P\0T/p;pX禼C#Ԕ*uUyՙ'$"+jΥ#D i` 04H;jǗ= M{ϐc&Rxv>މlRA&X&71W'4Tܝlr:0 I$2bc]Tȼ+Ag22=@H礌({95"n2 22.DAcwyoF&v J4E=(hN>[ E8l=ݏoYIk8zF 5PwѥF+f>oo  v(yՆ&ѩ̽3]Oi*i $nm񤒏#C1l38W(s ov7O\&'x0qKkj8s HJ[c6;- Ґ O`L8A[9^z<;/ 53T)+`0jPXPc/^}NKdGMF065yӠ/>NPPI7JFBgBˈo8wihBFF{&t0tB4Z ;s!GݿeσD_&Fy}Y B3u#;ffeFd荮(n6/^2M<b.ӼCݝő4`yT5A}Ew&sJ~u`Պ) 5L0;SԱԷ#X6de)~DX' VFN) TPԾf+f/k^q8ս&v!KÏ)V|M` Ap&yd_f_?`͖dIr,1@=ZUU]23??g>"tMu-]=6T@]oFBԑll\h糬7{ K7J I=G2 ij\t9ZzB"=\; U(Aa2Zאvd5QI**uqj~Mh6_M:f #9Snwk_rԉڒnxE%N37z#2(q &u{}s!~?oL]byyE"z?'ZQQeyߐ 'lbFkVFQD(,Ñ~$r5yٸ<\" C;7;X3Ĥjr>T v3Qw5b˜';q ~?Z7ZVz3gU6E-C6E>#/*MjGY V9CQS ksKTL[ 21,.m<~lٌAMBTrnqʩQu:m-qN2bJ4P^Ԓ x{pȶ l~)F!)9-_Q4wB[1{ԃDsx:02\<;f0󆶉mѠ"AHE |*a e'GܵFHڃ荩I?9 p&&!=T*`@5 #*87'᾽"jlY/ МŽK"g[Aqͽb">۩ !L4E$PN2FoPNOPg+brEcmi_UgA^ X6쌉\r9am*BL BX%J($d ` .X<(5'#)ּ}#OH5L5NW;' :@m3Csuބw!:JID(/9L@ 䇙\`6HڛyͧU[RqH&`x>Sǡs\@^JyP`5Y f4D7|2<48VQ@ϹQ7#VPʫZbC=4Gl8fI:t3@A(r;E]ex) fLPf˄uAs"؁$]Zܷ>P';GN5O K?uWV o2GE ~nT^:#.(:|ȢJ KƟNq&,&ե614 A^ci,H/ffHnB R{EMIs@I·}}_9"ݡZM 8G> 4ʧp.,0gD/esVĈ{UZjd m6YJ@5Z9K@vN+r^!HT,f17]ܩ4˼ С![@fWQ8DjV2a\;>SbBJ]ά<1]a Ԃ"> 9}]Bw:5Yo#|Mp.ƉmT Z]M2J4ĬΐuMu۹lP)GEThU8 T(K,TsIQG6H']MQ( zM D$y-|/Txl-L WJeI$N:y:p>/(L^Xf*K%lT=ڳvu/(!|9dF5M*膵 1Yt쌺lI"{5 ;Bf:8 Wk-AWzrN:KyN1n~" S2]* ΄ޞ5BPx0gpIΕ;q$/0U)߾:e~sZZ4=73(&T<=<8n* 3;E;@4 !R;ѵTd=' K:J}D۶$) \,P(t j}0 (5ȯd { |?v$87U?3?r sMdtuC)X/ . hv!T<4`H_ {F0rT_rh۔DNrF/D2mYsc M+pѐp\2e;?Y-蔕=6v?-J?DMZuD SС(*I%DmQ( N FEB^L8ؿUk,RBO &*v`Hatptry-`IM/\Ugb"IHY?'m#T)kb8ZB^(P$l 3Ӿ94h0,:HONoPIcpIA5p~T)h1t_jB~,ovSߢqMtlEm{f=]@ܤx}剑u{3PK NN>;/!5rnYhv$K;4P|g]%QdToj$u`C2]gVY*S^)P=Qrǔj'FOyrtY IsUI1*Z6#sVFD1Pm* ƧAl@éSv:;I2;$5"'{rHdi,g0m8J^:DWV)UJQ*z'8őUCYdkIn:F6?ߊ*E9PsU0Kk*I(GMUIwDCa9UкVi ԫhZEK8bsVsĘgu*Mm 6ؚ֧OzZuj'1 QWA5 5e0Awm(N$C% !.S{sx0S{L7 Nb;B؁<.S@% Xi~ I63 ϊ!(,K徐ͨ`Fr좹>܁yɩ:*VmpG?,{WP`+ܶ|AP#u$[/# OByͦm|7'3"+,:ŸrP |6fj11t }nZBwȈ𴰃uCY)Ɠ膠:2TQ+$_MN/LR"6ʉ{6#.K,KXmk*AɖWC+:T w 뻁q +H.3{hHTusԶBg:%0ވ#J4)iUʆwn84 I$[<)/:P(E/6=p#N@'4FL?fNMlP'"aGژ:?pZ$RVH[5=xheAxmj'SB]^]( H t5>Ś2|~hu6H#i+BZ Kֺ(PpCIFSʈԉ^z"q=(8KRF]P 2rmJM)͸N[2P#ٗI DrY('xu@kT# >IAg$ajG2Ѽ>ϰ|NNHv]ʧ45-JZ>xA D95 j#DL"T9 ӤzH@XD>i0pu}A'O6x*}C8C\qLilҧ'FE9nznsзH7E9QRoN!|/lvO n;iԐ]tJi8/,Zc>@**+: >2ĉr)v~u.')"<0ab̍p溺|c̠Jd'’7^$Q"iI0ýZٍ8H*PNHQ5]2g!)n}_Nv.MXTu  # #P1fhT>R&ɋR$D}d.:S ,&\AspƟTqC1ߜPݒN)rx T/ꆪRp*Akv*@ kQRO@ v I$EKuDD s; Sjڍ%5L5,C:1CI\.<66p.XqۉvT$䪱Wv#An`/j6)E5Nj|1escI!"57Xa"cBKO(*ӿ.wbp&,4vl\Vw^6DB-$Pjm%a7cZo(md*:Uz)њplLN+ *@ai1ك&ދQ$YtUb2FW"!W.3% Bq* YQ >ѷB=oYqY&2[G;*֧:3JMQ4Rږ)6B.$ 99ujAjG;AluW㙖uP[=8WVx0SӋʝLEItWfҒl7&^*MBֱ;Z6TQ\&t",oOL- qp'} vY`?j"pЊ8].{>A#a^1F^ )K$@d D;Gs HvmI5+$j$)RGtu!߈(\>HUwLCdI\@=R#E$c|fjzqC3 eI_%$,LcLI@h`g[V Vi] btDaHfHM"Mas'd]b-HI' f<ZR@QH a2;Oi26T#tj-jL2Rsڡ(>e{΀?&We D J0u)␘1_9VaV(B|)q9z(0)Nv7N8&t%6{Cࢾѝ :u:fń.H`+) _*%PMjTnO? r@ saBo'D2&jMg$Yѭ;Eפbf32Q!ClrCTΉ|4TBCpZ6yR749/C7,H@A* qX;%6!iF/ # 9bެ')&9m|3VXNmYƓ\JWۛ-Ffi6w]Elݭ|(@LtOVZI m( FE9*69'Ώkߧ(~w2r7KsC撩zV2=2L+ O%Ժ$ A\]_H[Ë(} "ɚu*}$HC"5y)983[ˡj04IvEgZ*ba[TA(G"U 4Cz.3Q )"8#]5c#ɮ# Ѱg1q~CfA |r6N#S$vN&%"+ DX| %Y杁&7rTz*G<;< DbSL٢= B;mt-g@'NԩM$U&A€YՖ*x[K3NBW]FVe5fכH) 2$iEZC2]ۚɲ""$ϚlL䄓#,d\o\ VFt}!$2iBM\ΩJ! p3jIP웋rP;uu6Ǜ?cd1u3]zszT[҅BeA'(Mu CtEʲ8Pdz<  vZ㗞=~cwau4JzX-Ӵm ֙l@<2˟ow3'!HO:eCvuBPҍvkLr=6+ lR]8N )͜0rnv&'.ʠU%9cX27QD=;VEsL.w}еCv1vXPC1Jt:}D]#"ܧ6E A p~nDDPңj+%y\Lgt >$9M&U zC˳ISf`+cW^P8rj|WC\:,ʧKky&A5GSd E(RA52$dzG"@kq[HKbMjH(RoT!ȞNJZ%Ӡ"y=c%EuboLq@u5:S@Crڅ>;y!Vl4y8#yq`1vy6 _`FfAa)T5~ƋG;);Ys?ø+\pEoTJRW[K; ~J+4'|( 0Φ!AIoP4sv'$k3gArԌ2HR[rqEQlkllEMtdTy-'x-.ݥ Xƕݓr٨A%2mQQ"5@o"V>7}{!A,9R6{:M%3}$~ݔFLt8(Uʋfn0# rx[9!=CI dȯ1D6_r3iř$*{ԥEd V#czTꆝ[v9M[Mʶ`p 6#{i*,o|uƛ5n.d'&-$H` jQ3?Oܣ R,`B7GZ"SaZ|CҶX8 sjߴrP*oBbN lX Yk|`qyWT[IK{eetgA 3(\PUmPK}Bv+T޷d27*lJTlI.EJT'V {hOABcr/| {ErW)?vvi:hJ5{GS1B3Áh:p@~~0VL뉤ʲ zTU.6y̞UAEvܳ* 9&6V~G09ؓ@OsxH] hCd<)CM]G7h#'C54/.x zYRoԇk~*McvQE1䨣HT CgIYJ)ct\'GesG>A< ZSA2]Ғ 'biͩQ$PL4xX:]@*f]Y}d4y]3 _IC( :)I"$O /8Q:H7:j?BF#7Y$> A'StVը9Ѷe`̖BZg aC <)AD-vx(̝b$]#]I$s*$"UsQm`I iLIcWoOTPА˔w3UNde^ ׌ mdFeOFz;g/!loz1 WanHE^u"5ɍ rFM/|Y,JDDEE(ӝĴ^>P&rkժOȱb@[wB~$qbik&%+ketd[ *&孫pnѻDwC)$ =&ӊdyeB2pJw yE Dɹt@ʖLmة\C懒?³4E'L0υlDl{?ӹ@tE ncrZNi9-/= $^$2WM3Jͩp*Jo4!K=7%-R>w~-tO>t\(*x&3e=09a0ู gVȌW#Ĉ,pG…}+ޅ}cpgஞ}38崜"rZ`˪ɒ"`O'l0 tjKV/O)qr{Ym(c\vٹh).o@#jzMY:XL,zƿw(6.cdOY`L5}iJ\~kpa Eϲi9-?䤜l´{D]Jw$7 L \ρCc 01 _IJ]Ov!cleOm4";d!8pnD;k?.F_ ^xTJCYLl1D[RqXW0^=e~? KػE4 s^{8=-)szpu a :!d`uKkȱcRG^;=>L 6|HG;s.ErT t;='I01U#tt W5? F#Tha?Lj-넓ކuvJm2<L:>_>~ ?^=\,0Vxl;x_\_= 뻫,C4V9qn"4~nGG[*G)rWaA5OUa#sxAjMq_=u\={m0[X.=D:.q a X!|q //jo`_>Z¿~Oevo{xz6c{ N߿»-Q5YE|ֻVw;{xeX,ೋp>[g؞E^m"p|z (ܮ%|Q/?z-|+_bH.w9\ \l*\ѿmaz#㳰^w#x﫠ٽGw%S~y> g4~<1X {]]p |Γe~ mt*^nܬlwl7InX%[^孕s]9%S` !AiRe}ddҬq[A+d<%) 0&CA5w7<-/7c7=\.翃V,ϰ),<5|0~ Zɤ*V@ ë`º5Fer\;|9#X.8z[FHd.8C%{DOo~_}Kx=? &([xj  {375ZlQp\,2Jvkk  G?C1w˃D>)C~G;MAkґ4.fz<tr2| 2t: ,рm7avzM4V/bW\g \ g1`!?_ ^.l$bx[x^mp$&t,X1~j Ɠ&4u>//B$O ) M~F?f&>8,ܱ&8|^ ˲r'D=`vbGmjۖtfJv_rP*5`CkqZO桦hqW&]9WtNi6.%v~q gMp|0Ioq~ۻUnsIV6;7{WwV_hl3S%s6`wBA{ F;|au0;ɸ >\ZqO&d:j= p#2Eȩm[~kʵ$p ;cٳ gG!T!_MnP QmhDA^DYsV:ՃPg8R>e=wxRՍiSRrPT%w2Q&YMD5?(ߙ0Iܵ/#ju [{|o[oC o`)|W!X^7W[~'g x/]m2g@&Ԑza[X\6킣1gd d!ҳqA8fga{vF >l^.~);xY~߽g]~Ɩl- Ra ͛ĹDٮ" fCƲGsju(qz{>oȌQy)4S{D9y FR;NwaI!xQWG#>)=C85 OvoWg!<X[eP簽۷?#|ݳ0~nlLapafh~ oI?c؄Lgp?Q}`v &DnbJO_\or::b\mPXBE7DŽ!sљi 0v|!v$xή{à~Eץ4+cJ}S(D!!t+h% VtHq|Ёe:Ҋw{ M޲ c;`6-SuAz5e)Gmxxy13I6_yû=`Z$Ab(su[0d{3y'5\wZSM .7-m< ʉigyFʒ4Iqš y36\{!e坹XtRHΟ~}O/7{xU8ʎ&|ĕ%c]OI)?(}ДW ##¬~Va\s.y+c>6~OτrҵP]:gI%?C(.9Ό}<,iV'3ͣ-}qI.?zcgo6v"(%CjCt*O]9lT q]x!i <49=ˆTT$uA~cG{]I< oD>?9an'TѺXo. ؄IBg>\O,i/o/$?RWZ_" yK3_bMpד1ٷap6> `wnGF|ϯ>=sah^n/70($Gz[6S0bo5?L ta||\2<\E" ;AY^k9tx#%3,sƑIOن Vh7ha@e9lpg񞼹eչu=\m/8:lt1$/Y1p-o7qR\3:ܓ?/qlzI+C{w"l|<<k&<39bxXkfw~y'F 6*pn02 $\v#a][߄g^;4?$1M8i.9yzF x;}.HW^v^N;7ŘY K{Xo0äta cz0.al`zœ3Q)HX GT́*d{H!2@IWؔ[ @RTF9"4*6|LInW}RqbC'Gqy.|h<<[-Btc̲'fGqQ#CpiG$C,]t|N V6dѾ f'h@# y?Nxv L;zŎeM;.Y,a~G*iErJ#ϑ ijs\iacϵ̫qbb_ߥ?NГ^qHFM1&| Ǝ+ Go6۽}.nK9n0f4,NjAËN N/3HAtF6g,&܄s~?=  L25Nɍvqp]wɫR/ٱ sx~&ǀzF>v\Z%g(-0}11Lwp;G#L09Gaҩ#s~>˚>Δc}onq۔yP}lYzq"8:YvHUD~_^x\ÎI,jMiFPk;ȤB~WIiX.K]o``g%;ftH_o5hb1SlVd+ v %8੼76Gx#U@߶: É<U($!B8 2Q[s46~~9+&L_oc.; x&՛`D~fS9){; W\z*ّL9/<߳F/d4r5_.ߔ7O//x{p>ކ;NMࣳ]h|Y7| 픗gl$p[r)'#;(W>_ۮsnrz='FR&D! O u0(wS*}c"sV>N c%9T>n7qH X/45'4Ea8D|a2aO7hAxTݬ1N5_f-S8U؉w&h/ϑ _Dzxh[< hppnm; ?(:[b-u!+~׆e8?\ĴO?;o6po%MzI%uJ jn/{B;EM57k ,L ?&Iys:d pj}~|2ۻZs&y*tV %3dhh Ȥ 4<(pΘo zr9F™HpVP&KE2KALy TA%_C`z?ㆢJ8Oӫ9H f03`N˥%YBR=G9l|%8gU:JwI?:tN3<#6|d9Jȳc mOCQчi6љ m*∙(T^ĽS= $e/DGiK9^e;h%s T҅ %N;A*G`ʅG\6@rZNi) ʘ1w{U\8'J@ywѶq iLH#; JXfd0ux|X^frr/=\"OBɣI+.IRL";Yɍn.: 62ܳ'kt說QQ":S4ٳ%Uv>tn8ާ2po"!b<{xWec>&3wmmʕsOi9-?o' pb!TE/01RD.L3SY7EM&%{5'EfFT!(N->{S>ltciMH<3q3ueuOɔ%OA96!sK=jLj œ~l.X˗/7x. X.Wؠl wZȒvwaxK8;;nnn:2z p:[%GGc\.}g& >xx<6^z_}}6\D; Xs_ahVa;{J#wus]o⹟<\pn$Gc:ۻx|nO= ѣ$SpZN \,EZ%xɤ@+R 70[\A zD޻jQF#hQf_X˙:d u[RTk㫱 (TCEyMCS/A5وEܰ6lHh΃{-~8WWs sqq? 6F`/¿/d&8K5$ǂ{ U0| >u<˗/=oa;>679\Od|7_'Ogq}>ܜm*bep΃˫`в1}Fљ`:ع`8 I\4k1.osb(TG|orZNi9j֖͂^nT%%MY9ZpH F9?FR8ZPq lSH2@$;-$'D4଻?,!~ӡbVa dD ʺ.aX08'3tZNi9-?!'`MCdTg%/\k]j}K7 z ٬ڞFxg@ԋd e,p˝"@ uA^ F6̢IDp&aQ́#/w''ജrZ~J qIymM#m;6(&wݳK*=7lp'<&TZ4:֥@N8 Y8ֱ3b E?)0ʇPrCKɔispi1M'i9-Q4O@I.AV~6>Y@ 0wn?I(2W%뒶w%ԩT ;Q9@E ~Yad37C<;7yUI1G gY;៖)?-崜M|1@NYWӯj=av}|98{HH?#tؖ+ahk!G/E[*z|-ۓ~r/z$Kz[gX u՝˿ ]2a'GജrZ~ }H(Khב=Պ. +32Ÿ{,fϷ)VZ4<{0>eB }z> Xh |R.|V ʼn+(bWyDAʏRbP\rZNi9-?Y'@(U\ƂDZ:MT!K4>+.@A~N_d`>rV[NN33NBA+D`Րgp&'0哐0.gz> `\eIfw![~ZNi9-.=ipެ+I+VnO'QuVdBl1 ?204gBl0v*CaP[4؟ {24Evs3L7V/x>[me?3|/ojk>\NkcW>n𸜅;={.//co*81ᗿ{O>0IOTpZNiDY.{"<+rf>1}"A*$s:RON^r l{3MvzEA.83 Fpeq٢@Q2B~CsO[<A *o $" q^h ^Ͽ]8@|qD b1Ʀ<$p=*؅/$(+X݁Lj&D _N|mZf>âNnf6V-K !V$WˆG@% bV.K}`UƴE%zLrn {?_= F ~?'d꾗pj+z~y;etwel/i9-kȀPzVfoaS /),D',o"74Prᤜ1,;hYi8tX1UdBv]B Kj1NT 7NmE[.2D.㸈i9-崜(FQAj6T{Ȝt m6J U8nN%B @DW0ڳf )Ԇ ‹bAk0̅R:@#shu]b N+J ?X %P.dpSU=:WĝÈa7yA< {ISM&X(dOtTLTЊZUt@ v\2-뛛>.QL̀ɗ&Tˠ[ BX݌2j=<- wSZ4ԏs٠NɅlGB?{ YXlM'`'gL. Y2="|8`$j`ŶǏy,3%2G|n2tN4 l<(~H 6nn&??,_8rjWmpf wɐS#r*Cvn%ŠF`0/bg<~O<6uDJIR*.Aw|,^ǧ1">e林 __ +>pFc\"eqYSIgx^Cj,ax<>&p3'`|n Hx") .ej<0 ά(KFgd@3PmUKv4ETimHQKrebktXDEi$ddQ/uT@myzA Q0 aHd6Kcbzv!ӫ۱l(/e$w h02$'jFNat| v@\,>> x}޼5G{5@4jc0lp,ގ($\㼍F/l\a;L누 NV؎1-ry&k.0Ғk{s]"Nv!#8?7q=>_vXɗ qGvއԣ4l}Fz&a⋸Pv 9yu w2~N=9hTQgvEH.fRV>pFc @i\vS("ݛiicACC߉Php k`2f0箂@>9 '4 \?3Qߣ_j<oE$Sǟ~NԾ zpskyl;x{}73QpKi&"?)]yF`=5W'?!it_ vnr[ %/rZ~@ H'DYЌ ABR ̰@Nu6%) aQ>33}#ٯiaG[#**:>fҞMOU*؃fYBUP0}U% PnPމ,Q0l|Z\M vFyp V.ްc ^n28B(cyʾjӮ\38 Q?;-`TùQTq-4i9-?:P_sjrƠpÒ4z]ta᝜ P&]r, O;;okCS@ ".%&2K uN\N+&$Äh$7py1>T7n=?;,z=QF  ϟ3nu9c>{@lwn3~G'ⴜƿR椑1a([dR%۽r-HƹW٫9Bv?{o[v?M- 1 1L$\!(1a('.U.;P XC\& 1Bj%Vo>{Xk}o{TWgko}YPa̐}k_1P֤c-0Hو\H*ep U:}%|iW'4bL ֦>!0pfc6m𱳃*I8vIEh;ڎFo$G, 1zzXf%Oln#ht1 %>إI("m-tBF9Fj:FX/7рMP;SPAZK vZJES a>x` <$%!;ݏ|Oցv7l-680ǵY_|2xO].82c;l;:3smGvH++Y: `8qX@d>2gY2݉90B p@W1bi;x' GL[pBz#Y&+ oQ>3⢇!Swj:wm?o>zpL|tl^0Wߺ~ZzYxnȑ6591p?7cbfmGv`OZ-C]ƀwa2+ː ۟s;&.y@,J/x< 8@L@hM-`엒l`U qFG rd 'Aʊ5 "5~<*G8e:mӊ+FK{}N햵) >zvm!_͕DdFqC>c~?I_KEpGrEA;"S3{[mRP 9q kh(1:f:/(ݧ*O{f(_[ñeR\0|ڃ_3w!C`9C7AX,] ARD\q{/{wmGKpCBunjObj=y(|*LzÉF;@@i} wC+vF9OWyDt2WdR{# HhF&YT50a$`DZ`Pʼ`C,C?ZUl#D c20|:x Өe31 ]߹m/nKFl1GysL Z,@ "zc7Ĩa ~ hߠ:ӈ߲Џv"O*юH4 1'1&JLRu 2tJP $3Ӭϟ2̕>bh09뎭OO}. ; lrNP-!5H2W}yzk7ߖ@HIzpm/b*35Q07h( \~"UB*c$ QhW Ԛ"rAd=FcLJXX2ë,* eI䤌 c0({^yR'XO^]p<:᷽4<|n ~.0w,eC{ K9|Px A9TRGvĉ@P-Lbˆ61Xl%1L*) zHֳ AOm Q'33B>Aowbadt9%Cy$b*C &{M(T We aeډԕ]vؓϬ ϲ:Ev9 G*A1~B N-@P0VZ^AhDƫ~&WR (R P~)?)TyT) sGA"t lOߋiz)𭯿 ȳg'vaɱE_LÌqSG0zoYx+{K7nŇ`bQ&sJQ=60`0 ܦ$ Ag\ƘoاS%>-^zࡎ* _y4#֟rbG{ӎ'D mmXReo9^'<"\O 클{O {zv3ecle$)Ðt)ADE4\OOpJ|)oO%/i ݈#oʘ %/ @?ߏ-w1ԨQ='P\EP,>.Fd8!! P+XiǙ[j7WXѻh  8kP.1 zFRcJ2A.~m~<$j9 e C:yX}{{.ج(7~t"+NǞ'`&ӲX`#`7s3\چ}VBP*˰qd=$mJll.+8?{λ$<׌oh{)A161}!t|._ |Kz0N`z`U]4Miwhsp GHYħИRG3ѐĈW"[r؂ '"Co 3ܯѣMJb _rEx\c>&?o~>Y_7z+cHBp,GHlplF toatxCc"5;&_p ˍ3+9O}Go3ۿ?z~ 8weN=Bv> F#(f9/|·$ml(PxnUM0"/^K "x9+Ax<*$@Űe'Bm&-VrzPf7?wrX1Y+~>m k c}ؖ~X1;pӫ'.|6 pA&"}?a4o:|%LXZE|"L{9f+>=];R>ϺEt #\@]_[n\/_o}+5nw7<9 㺅NgO F cM q–7+QC2t@)$@_ )73F:j%x#8PFioPy oM@/VE}?3V[=~ݔ23&DbD\L 02 GbL䴍 O|@L=uךw\,DoWwq깩*V]2Ч>^$)yx6?>so8&HF}bxǎ~;\N%xb_"abezo$:mP`j)?Po(f Nv=6pz%P`7'11fSd4=E7 !  h@~ծPc4b+󀸳-0Dl)/fSPrgGw~LTυ~Z}71H97+"eXn=2LLt'%i|X M!zH?RJ+L)"0D{pw8n0Z2}Jg7 GG'N]?.| к÷1T غ@e a8~=6,4anbEDE%@R4\84 ; bk=!շ~15_yl<?ӒoY_ @E0#>"x]^@+qMRM4ch#& @%:o^:}kaC-vF|N.`^{gGiEXq sE|-T.p2par <3~1{瓆}mLvw~x +C\6JUfcsb"f^5TF'O#X6ٿQ$#ࠞlLoC Fv콋0q$()=d2 ,OrHkcD>|c|Btp8R*D.M1tUMV/wiegV^Oos+IGgݺ|ql^_CN ʉW -m'"5%ghuA%Zw@ ƿ0k~A GF^C@3W%1p^ 'L<{y$ y C0m G7XBwP1.hk5QPW)_~d6ϓS@@(iV7X-\r˷7\ jp X-G<i/M@)x>\20e?w\|^. '_On@AC @teʲ7xT"C4j_Iq<&E`m@GkC؟P^@t!ؑ,a]|4`J]dJ$6$,M*k>> Pz`1;s}lwcE ҏ7;`mo/up~?W. 1fN@{L5]<.m}x~ 6]?K.z\ ux݂E ]? v|%`kܾ> < .)x\6#t4Tin9$Pu~.P>5QdPTBuo4q_?P^\dzT`la|pPCx!c`3։q* >=J^RI?a4H #fcR\*7Z~~ [=I|ijҤ_Ѐo}M{^=p %}Bn ToD&4,$IA5GwJG /nWi;U:߃9\pΜm\ vep~v+,q6h .[> k{3{˳`|pav=~#0[\§W_0W/= ?  K9=P)tO!,U7qHÞ'x8Qڈ.UϜ<έ yb4%jʁ!oش-9"w#x`6'绷HAYfԑHcմ3Ez F*ǐZ_i`b^;2\s(*/1$3Zh5WlyIOgadpPf2xh.{>/z`oYtkMYs6lw+vsxNZѧ$= vrc6`נ~<'I2˩Il(#EQjû+>PuRŷԶ!hd?nf0B}XCU@q?ш1v*Y,PwZ3 Jue^zgő` 2*I DDDt6*Z_OvǮO}"݀JtMu )n=ܱ|u){,.vѵ/W5؁;v>@盧[u?x@{W`%&§7ؽ p?? 1w=OKӓ`k50f:1iJbU'MVyA8b3BcC/[yiJPqx_"f2V,aD!';0Vj裪TĄBRype6WesLȏ߰ݨݬDeJ#$Α@}ʟ,OЪf@ǪURTFI$ڑl 0ÏNwy5A-`,\ÍޘMz0>b>EFQ^uܺ %؀AvǻK:*[#o9׃= W‰:/|{۞$f%ka_h]AV"ϸ a1Pɵcѧ<>6j~p2v-EH <+++Sqf`by֢8sM7ܛ!9ux䙋1O"liߨ[=sk,o/DӐYl2"`cpQT@YKH|D慁R`NCTH׊ "UCEvZEI]0[S6YGW_ .O6^MW]~^9Z,VNOk]+\`` .΂v!~JH:,hRfLhGL)IT!Z}Lyu1" H#јl}5Q8ҲbE-s{MMPVr:3; 0-v(/ZA.P܂؏݆/{ua}¬OgDL+JMcO^ CRVxT?m߱B sX[IQ\5V`;g>SMLJ"#k 2 hwB;~䫄[*u./}WeBN,_PItrPsݻV8%Nx@Nkp1q;]^MWq_vUx/{ N-VRS `uB+.*C¦M}2o~ NNus0sR"s`~Gfr6/aQ;P7U"C"ry_{%& TaoFd@?Szv6}n4ocGRw(Ÿ*&ȅXE\(D뒣B!biܺ1( ?&=?UoBA4RTL+GU?ĂԂ{7bx$]fW\U粫N/ӳ3p fp?D+?\+ fZdXZWD'gztkp8>w+3p=9Y YΆ `axC 2UQ72?j:_:5o@rbM4+-'mR%j'h:@H/CiShqB fSxgxO%y t}%zy>gj AK5珬gAO3"O ML2${sKOF#%Җ<ɫI|k תq<պSݭZQ.z]$ȴ4JVStZibp蛹,wJw {`]9`޳[ L죰/{n?[ []mَO>q؝`Ǭ O ډ t `$<5λ$w ޞt̳pAj:8 foI ׅ`< &#q L!Hjt`kt`!H>};/C$ LV[{L}7C2C% `.~k0]v&?0[\_ޯntctX?}Er`rj$,ĭӉwsy]0u-Wd>aĒ>{F05ppΜ+f}H 0A0h| dy?o]SO7<p1xbz<9vR1]b⑂0T<ԗaK&ecsdCS?x{BKrb"5c V ΰ#;BncWoDPԎ.GHlr*l9|$}a=PA5Y [r<|)%^[ڲp8kF>咀㰲' }Q1: >6" F$V゘u<%VRW@91jXjC|^ؼ>^;{[^aO?0嚬=Ix@*Ց8b 8frzJ{1^^K=\ڳalpx.po){,bwhQn`.x4T{8 :h0;gN…Xx.9X_wl-g&@K?k2uܲFpr}Epx@(XCƓw϶01T(4D?hVLV`!A-Y Q$ C;`"$:xDchUߖ$B}Ijjy(Yf9V=7> -C?٭.%/͟7|' 6QjNoǑI7Z'7`GT*?[/? - =qG2<Rõ)V8D)Pm\=6ٞt+pwW`@+/ 0w3m>!0t\{X>g\p # fx-ƈ~-`#];1T5A<5a}wC2 O2Zf@P34vr*1T׼zsQ8!*@ [.["X b ;&0[]:=|6 /ۜڭ#˶M[x0?v K:t Br7-yĪ,> Y=:kݨq?yp jXfP ӝ5ѯ:j[}l~j/y~?:Mv8'tNEN&G5饎_SP>'#[ thv ]Oms몃mr6 v+8 e犘-ΣOVagݽv;Y-of%ץwH;!]ؘ0gemP)sBjRчX,#%`bB.h1f-_K u7m08&A1fAPz`YԂ끉3T{BŽ c6:˂i%u]^(c2[q{{zǯyCS޲G/W|0YYs | |mii$.N5JO2(޻iiPI WdNnH$j`)@F-sǩ{9P+i=$b5ъގ{M`kbHJ<{,Ҳڙ!N2TLH'֎M3 X~\8׋,v3S%8P1`1U0 CBH&ĩ:}U$ :qZdB x(:a$Klg>pw~^=3| ~`v}C[瀡J:5iE*RJ2Fw^VY.J"v}F"At4dK^2G_֏{].ww">4TR/$' 0Ij VL])pn#^ {xgS-\; $äk$ay򀤸m# A!TȐJ)h垥xoj[Àf*`e(i :|R Ihp$ԶAM[g6{W&7܇= ۿug|"pž&>d gTs!xc[q$LV]qbC"1E(}In{#0r"T}$"|_ y mJ1 ?&'Mdhu$Uqa~Wp~~93^Ds:883<26GUtQV*p9QVhbc:Ǥ!dy-hEةP,!HJﻳ4$IXtjZx55, 6"6>#|Y-vL<U3߃1+1ac0%R+Ob`ʁ jNuY֜ƍH Hi n*N{f1VȬ1/Ĝw'%ҷ7 F&g|]$b$5dEൺ,pe^~%%̜j{uXFEj$11B~Q 5ATKkm)`m V%㉟L-~>1HBED*C {jBަ|2߷e_K]cc Ha-6z"NS<$8!D*/8VHȂ P'6`^$xrg=iQ$͎;}ԍ>ZjUt(h4=f_sg7f @B(Bh` t rtp毼~ '6S}YRh<_~Y\TafܾO$? uX=q V\0u 0,T+j˄(/6ЃJv3s{jxw$D  ֲ>5Lh2X/͎7XgヒH2 P`L}"*`hf8|HB?䋊f mdBZ@fS5/Ey\fH^+WdJ.NyY9&lPQZu\ ҶJy,$ZȜ,xe>GCM*jXoc%o `Ī#UkMHؐ8wI,+-иG@\Y 0+tK:xMwO}ר WɜmW(9&|Mg*W r9[P A7P 5zo߂ {XR܌Mi#ɺ篳|/*6%I{3m0L g#fyx?v0=6f,ډo&A,I6eTGݷI۝9 XR5J]gΦ"K2L`[S 13DnnU;,] Gjꂍ#4L?t~#Ï}JimJpn&: 5'~2$_i[KNM6vG%vnLG>Jf1O#~Ya3U ֳ,E3sbfp;7(2T1ڟms9WOgGzhq&4pDZ ;P)`9dQ՞J+g@գ81D_rO FjQt,knEoP>\X%r`2d$T]%G8#p8BlGXa$ճhHI 2?!~10CkǪ~/,# j_!G]%*c(  6D# rG>0ΣEU `I*#l]YO3)02 1\mZv`eؾp%wo|8>Rۭʽ$w}2tk7"IJX<0yb>n2G6}в`ǥ :&=S1G\d̞~|sLWZ >|̍.KB+6&+3[Kh^,aUgI0GG byPbVJ[xn"}0{Tg!> ^\yZuD#}R-ARHq´d-sm7UFU+G,S e[S|dΤF{26*&qp28GF=ήUramA.qʴ09!QCN %Q$,KA1( Fʼn 4t'^gp f^fxug׽^}ϙ<|`%%׽  ѷ&i1C`zup4`1V QH%Se+iga_yUk*6 P5 ;;\V&,$p:fXJE䲨^S3iJ|W GA~eu"I,%ʈ{p5 TF)L-$3 LX,Lg2!Q3v_9κ}S;XT+LI5'7~$)&!!#i@&GIΆaYx߻QH5fq:B6?J0  $$=IwdzqD(P?]bcH[* sbVV6.Zd4lJۢ$ >ȁ@DWWcFɘpKTŖcTbyRloa'0 nȤH_ Wy{{;~+wb] (K}Fi/`Nº|i8cu@`%fV\~7+n?V& V]74 gD3}b5}wj^gRc`ΦzeuU==Ds & 9X^hu XϚK%X!|uaNj+jWʽcYzp5Q,<dnid =&7T"9pU)AcQIKc%r2G ̙x2QjHa+ou[W@RO6"=G{ m"HkǸ"QT>;$WP((uF1D/A(?ǟ{7f8ul#[׆7m}5 ZQa=Fz͙ ޞp~ =5ظ 7ևKBtlj*>ϴX~4⍨ q C(^q>=PRX$2ڑ$CmjZHM졖E3J1A4aZ~TʫyGUN$ĩo9㧪@zdj(]!!ߺRTa0cӃoixx8y“+ympA 3'{|u*}vx?U8vl|7&#Y8󮃵}Mc uyqCQai)bԃ#ŬjL9!0][V$F E=3 r0*qzo"#C 4%8 ~!ii6dtd; M6@Dd"<z90""a򯲠( jRPD1ej*(>AVWT'*})CqFl0ȷvЊs$hJ v>$ɕ7e`rNM_XOY F@$(jNb*$Dӷ$lKuP^$vzxlT -hh<t<9S`C,࿝cNiV&(AQ5xհ(nH"b邿Oao 츟6,wupGjb'Ng^Me^@Kjx02Þa ԧ{o>yn48yqB +sؘ`m> d6֥<@,ky/} πK-BPN>Ro4ocJ53á3 K9ϫ^̌:i_]+JmvF+0wUNa.F[FV@a^P2E6VYOuHb)1)Xռ:"֔zڭhYҮ??"S-5`ݱW? =l>#}2eR@L9 Z2I^s>qpI T^8c;]Z sF`뼋j &`JvbUpWfbꭵn`h /hbYaߌ`=qU+`'`ww'${[ǿqvI5gr,:;b?S?g#|򓟄{yO'N=}=}< f27m=/; Ǐm o3rIA fOgbu 7P3HijMmӅ PÑ FE7XT=e+Q[ϡQEU&އ@H"uV*8[Q֧T^/v `U`32Gtɲ~od/)Y H$P"Z atXs:ڹ1.kaSH. mTHܥўd@2ˢ F&y41\(F3"GjP@ `S \&+d8vTGE Yӈ*GhT4]Ap1c!Q#"@ߕ>43a%` J401}+MQxjUި7 #M KX,val{چwav7~ x V\5;mOToI]B"%o[@d||' vvxC5ɓs }V`ŋdO0biء&YՒa j:S\(%tʘĂR_U*pʱ>`m L5kj1@5І娞 &;d0\&i.o$)p 1T6@!,C"qCշ~@.l"\PY` E j,,‹BA&Үɫy1__IRQ$$-qdV=grHT ҭ/QrH*iE }`bBf cE:NmWV@q!8Q@(#;P qrL^u!KaMPLi3%i(M1q"djsʳ_W%WȨPCo-#] >!X.ze0y庅7V$; <z,}gLWV\|'>A?O073{H|Q.BP*~(%q`2aYoY/$\h$]Ԉ$j tk]spoɽIzi@{eQxD (&~劒yY{TĂe+O|6֘ -X'RƑJRre,""fD 0=i=jM-פiUҘAuu.ŐE6A q&igU[F+lzj`6 RB; ?_>Ǿaaሳ#4 /^c*A !ζ%$ 9ŅY.]v}q]ϻ:ub[n=W`sm?*@K0ŭًmx|AvNf'Oo2`? J9ݤ) 7i\BTEcY +7`'6d=>dB$.'/z倁Y[eS~*İr 6BmAuVF#_Ne%&IM1i-þos6 |)r>OI $1[=b_ -)H=0A\&I8߉Ph]#U/S+pքZIbptlB&bN wwHglQ F~%Tǂ@0lJl1=~O˿]`I+G.z1X敷j"%DTHI!}ne0fxG;e/̪@)@X#JUZ꬞M!!Bq09RvO+n@^"4ÿi Ĕ4H,\dIYSGU߼̳gi8%|gm O"0"oP*k[k *i"!8?J&QTc0dnt7("al2ʼeW'1_%zRx[Ntk, zNbPX?Xy>cǜx%nl&jU7'"J &ErT$J?*e4Z1AWL~,/h 5(@Qi %<8ظX @Ii 4AD=OH^Qhp2(*::&i\K[ 43K 맓(:ͭC8D$.t|Y=ԉ1?>,pnȐV_peZ₱d?Ք$l0lk y|*|FJ+db&9FħH2׈ŪNcӵ4hFƲj`Ր".&0;ɋ@ /,l-,i<Ӹg| Iw^l$ t%am6RJLdAEE493u)FLAˊ{vmR|ac (15&rf5bWD5*DgBDAagRe\HiAKK(zhUUDž vĐh.SsqڡrC|&4c2˞O_k|h5(5եZ=X<_lv磋pmR`1Qq_rƫ%fQ2Ýs ԙ%y_YQE+4RCubÄm&#+[1 ' .`j|OWDA:{y-sz%.JlWRce NXH[jĀUS9'f-Q  Ti PuÎuFJ TqElZLڭV:Ex3 IYEJ Ò nso)veg^뒋j]yWBS$r|2L$_2$HZZ<9B TT"MҎ,$/`6 k7HPC6_$"vgi߇Lp\XQ|ڸ\UI"s@s VO{dR&HԢ@ÓxkRQ hY^>(>%@Gh6CR6 vwQ9!]hȏq|HK4vׂIҺAS[ jJ$庍-t,h#1(ߨV6Vk,Q=H!oĥE٣ZdHPajI#%%,z#޻+ hʍ%%Uύf5µhR<5 SUvp 0%i[INO:Oۨ-l8 * bÔ$[$T$ -ZHMDd56\2lbilSThCoGxFK9'[A$vEiIo?Bl MA+##S̪.Ȯfq!&='iPC,l$;¡tdU6 dV73(G$J[m R빋*DZV-d-3JTU r "(ӳ+ՠꋵ-  7!(EjnWg3! \r͂\e6£4%QIG'<b( Jel8_T'zPAL`k[W a,YVmA-X-_G{l#4XaTIf^`Y)*PN-[Q9VeC&d"Bu_bd@ "%ާcz=T8^T"hhgvd*2-i=n@$(YR`n 3A֧؜pN`=1R !^o-f`G6!P@8 ϯR-!bc@fhTg nbB;*VhJYL/rPra߁8f)DF$0-izTF ։JɈ)&5%D,i[\23{3;DTRw?NNqC )vRKMҩTk-5w/'@[ToG$/Pz& oL( v"#}P8pMTu>1heDtd[HAvS,  ;x&CQHlh`WdlRaIsP×-~ܮ6AX\[T bh:ɇA&8 2 V\C0 WɉGpRYnzNU9eA,f;-A>BR)(lLjnz=y/؀u%&Qu)bb7(I+v P  ɹPDKcK3!&s_7,qPZL[EALWEo^0q1W^jod.UҸZ6j=$odV< 9 VY, g6> կ]K \8p Q2ȀR09;G!ʰt .vjt&4C ghƂHڲr$:t@ukFBQEيo4j[Ȩ.k,5QqBr`A)@` FUaM 026x4d87:0$d0/z׳v^/OHlv8V!πZV*U .=MI8ܔ'iZ:V$Y;>(׈a'Vާ܄ltd>1:!uNH$~u9EWbgJ8Zh7a .Ju$pKBFR1I-5Dd,Y5ݡTyܲj@\nք#lB=KU ciAjΛ] G6HaE͈K0LT )N|p!^HeJ"s W@Oɼ*\lGHyL ܘL3um͕ǒ-)Cgx5]yS5Jɪ>%d LZeڳ`mbnM+b1,l6R^z4lȕ (79]/ݟH.-K :gY9C >.R>V&O^Pj7S$ϝa<!¤+!: %d°˪|z7xV%IcA$%rA$YjMY8'$|lzLMoE IIm>& pD+|bn#fa#d(CN)H1ItjF 'jKLja\ʷ%JQL^͋-F 2I B8BWRPפw*)@.-f:PA w^{\I=d*G!UJ8T1H΢2b1uEl"HJ"k<:VZ2o#z )Y:؊\Gr1BZiҳVd=C|!C+TRJ jǸ_vI*<'O%1ՊjU,-/,չA& -p[b[bE%Y+[6H$,kq]ƴDhPAƆ ymP_鏫1^2K ҼV[x,{D K* *b fKFϞWc7:)^A6e#5 h2rҽ|jv-k(aT_&SnhT&6) ~?J !ֹ0)B *#Q1s2,9P"\[bCɪf0WU%FrWT wuHkqAk$e e#'2<9X)y?LrR'px:iAMD)}DX8ǯt'waD _D,\' -GU L܊FNKkOYD2^&"`‚;C|}kugT˯=[k|gî>>?vĬL荞UAT\ 'Od@*+( _!/x.HfԻ ~ٷBb$;y…c`n*,DzgiS.& xY5M~&.Ҙ&6PU$YV'5TvL"a@7l!gE'-@5 *UE@ AU'IOdSP˗s4/aoJwICR5ivyK ަƱAbC"+<P @BȚWE7bElM"@YR%T`L@JTV:i*WLj#D#Oiq;:!M'f/4p' w ,m|P$b O,2>m7%#>0$33hܵ3])`0M;.w۱C@Ho lay^ 3dsgHS?78Zc#cL㭷1)$=..F~LN'9a*V ]I%P F98F鴉t2%K(oZ~ ,XӤ\7Ox(@Zs{о8vi4Zc͘`m-@:˵lD#"s֠q 7h&Om["r0XXՆ@In1jBRcg$,t9 9jt,&tT jTdqdU|QG0ij5Bڑg(+7āJ)+>+Qf nzUELaGBYA%ٌ+%H8Rׄ-?i ?  lMJuz]AʀWn;uoS.2s_o|i867VŐ]xҞoM9w[w<~t-pi ?w;> 'Ғb=ϴ7?nY="(33 O>wy=Cɯ5<^.سXssm\,&e HIloSH}|`Z"VkXsT r1Œ®jm~rGdT܊-|&Uj@m&L %' ")˂Wj(`gp PS$ 6$ 6fo[('+pKqŽ^ eWQ.^9oϝtNHgS9̠(F dTODdPF$ȌDf @ҙnUUkU{ o>{UW_}Ƭ=DElYP(("CTK΁Z)D2@i1am O;BJ;<_uO/%9C~P.%!xPUhZc GigT,3!Xy!ML¬bg֤Rn9GMt"UWMHy]1v(*TubkH܏tAEG|x1}+njs1opǴqDv ?si>|#­\L4L_ _GO8kCRYRĜLp \㲝}+ݛ}/-aӺy8b7|[KsG &:탎9{-BP?onֽpu=OpqͻkJ 9 k= LJ@1 zG0[%dArdn~%NK ,`kCYE3 jBnSS-h Ol Έ rT(}]̦⨇SIxhH *^pQ>@e_}U)oW%C9Q*#Jsr&%GC6- :`M\Z=gr\)Z+=-O-'U\| TpQjye둥gy@ N4;f$&z`!GTlV-5\dv[}p2K{!F~Rriugn9vjWu pw!p2 3̾v~8.{3 'WK?wY/_T+S߱.hʯ=h)c RD" T6ΖqLhF/ץN my8NE.v/d S&$TC+i4&(IpAwT j]m,T~r:t:&9LM .4JVJ"yȌGKS%(K`D34Z V%C=v4≮wr']d$s] s.Hzf3ʭŗ>*v-V̻ O8q+خ=nYuGhW|~s߾ξ?}6ߋ OEtu]}o+KWޞnٛ~Gl~n>ck.$ODe-+MĉU׺; ؆qҕ3pCVl7*>! aU>?,0'AsJ0}@m΀~DH16#U:Z$s*VIB=^à ɀTOJڄ{7MG;0T+bT+5o aݣOD>ʾh31QL;- 8eGhD*HE&2fhWwKCMɳJte_RVT B˖{lQH̘ײI;oW߶wuaH^, _6 X'"jB*fwG<ոof FA*jnD% ,RܔI5B26~WFN *ΈhV\jnC]LxPx[{(ξ(EqWsR}@SQU ifQ#02¨(aju;CvӢ}'mXvHfVQ k݇nޝmV[Mmr[p|Ry:k?'mÜ'4$i,8oý"2t˺r#z_\Yw >}I'w;%~/NH\$XQp8jnITS:FmV3OJpA=F"à/)m(}RPM '!W;IǨbJO/!,^4W.Efh~{4C}OJ s/b%RVdDdU]Tk|)`*dzQ2`_5N^/g>s/^u  `Lpe ߼+3'ToxH>3ќpU8)~i xr_KBD'*rx%&bV!)R)uȡBN&q3Z+p`$ $geV49t%XU2Mq_R4.RDc{c/ (jR3k4觘ȂBIIb.P!:n;*VlqLU Ftu; Mb0i@?ܐ6jj ̫5&L;s(@I+ b-tJR , /s"UJEOe0_twx&PI! U [4T.hUP% U_w/^sW;sܺw {RWPOp0$Rޏw?pfC7+kWVo . ~.IGmg-,ρs =)8c;%76ܸحKAx()!2bZ>_B?8püOp0sZqA .&Z1RVJ-#z]LFZ(& F!6HʪB]"I-pƗUh4jk3T?3{tԉUauP0%* z?\)؏DS/}%iM3{6B,KĖ*z܊1i`(S@:6ƺ#3:P4E|Wh04:Ӕ^&6ؚP*8g5=LGUkR%EYy bQ˗}&~#U5G´OAˉJĄ@I AW5͐cR э-|5EB?J&T^"7Έ}:WVݍ߿>{Niǖ{¾|cxoٳTM%yKO'nܟ|,2ޟkz6m|_L?8Y}j W\}>ǟ'8w/ 鞿ʙ+L*tXȡ\P$l#6;+{9+L:fzAl@f2 u[ʶp2 #zvh IW ^9s!gj'y>q%3 &;s~m~_ʓ] h{䱰ngt/vxՙ}_RA5W ы2Ͻ~ƨ|Km SDӤE}~=xQU_;n3d?5GRL99cdܿ~IC]B;8o^G vV x=p݋wޙzo w,mF>yINi$.$z'J #|e1AAjy0#ň {$$H{ zYv7JCOF~/g$/˞%V]( `SP:{gPgi y5".y*C6+ZIu7}߂3θp̞Lr#6ZEδJ F FUb{b;Hb9ƢSQMH?F+FmRJOjX$6V.[J,-S4e+N9cy}EHr/:ɃM1T AOE/(NXeԁ8QPb96;$i­~>]j܅Lj٦ ?1Wpt9`&x93Xl{@o|>P2q7ׅρE[Vz޲fOA .{%sc|i~mX~-ѓ|p LJe31u@Ȣدl6YzpƙIȞ#W] ږu_]2 #[hiq+>HT׉ jGJ%r-BZ@u(sj%)*R7mdAJhSO?7/=y?antBP )a u($00MQ3m rkn 1!>)瘒3L: fX*fQ*=eOِ"Piϴe 5m fjS*XAV*%(LCb-'3EjC{SUA/it$^+k_lh2PJ=-111)Z;P\xc%Lg }so /5W"vf\&1I'oWݯ_us8??W L^O&a7^+{6|0!iP 7쪐N彾?@-$G,IK3P*u$("eKr&a&L.Q1T%VzlMkDVn[h'{vZtpfV[vxI%2 ,RgAfϐQA/fI1mRr.٬dTTÜJbQZKMj  ?k1n@gL֡~hT{h&6r|֍$ gh| ?(nV&DZm53WFqxܗ/+wݮMHoklZ?w/LOe`x;{} F\sҐ(Yu4XDwZXv-1A\SLlXug+n[֍Gczzr12V.qwb" Y5nLdiޏ7s¨˺\x.8x Xz'*XE.aw.\4 E>T?"n;Gh<ڑHJ'<f3$-pӸALb [ y*}bՌ$zas➮6SE>vd%cE~uo#\8xMK]u=n _eg!@3D|" )qL4ȏ hD Fو@]Jd(=lW^lh O;$:E6N2ڐ-,<vN)@ ᭗D5E`Z| T/5ԬHQH4t7%y> Q*b! ?-Ԥ=R&A2HViAJђfى -#^bO:̱/:-tYukH$0`~'d՘H/Eurr)=Ԥ,'rXvm;@egG-#:Ie㝩Lb5o03  ;Kf#iR O,uLy$ϯYrK j4N:eROLhI6BR7O|P/P gO8'EҶA5z0Ճu`!LCrP|OđY'6 EP©n3kbjNT隔P:Xv@ew(] ahkɛ$bi10Ϫb_kWZY$FVO VHbm`* nDK@1km` b\0lwc´S~` ,XX& m=$FT @Li"DK$ 2raʬsB"j@AJ|Am5oQLĬPA &vF1i;А,9yL5@Xz!! ɬi0 J5YKDgȰ ӓX,s%պz'.;&Fx3K qbRD=G$jh}#9=*ؾ&Hj+IkJ-=x4=XT}R)n}Zk V30si[I~5B(yxy+F^LZwRF6T $!Y9_I#6ޗXצϢ JV@$GXyI}XD&m$&db7L-UĈ&+P Iw b͔Tݪ5[մLAu??5d˷=:,' 9v"pUAYu&U} *H@gg8fra=,3HԳX?2ސJDXpI K·uq͉YzwŨ4}DeMd抩:"XnR}åae " rqPAUM*mL٥(&.@> V? 2Vt P;6(aT'8KN dTH hC%iXЄQoPAni+ &yzeN,I"%Uֵ4˲Uɰ')Һ#WV RnXJD9T>B̥ȪO 3q a$HvNXJY悦&ފX0[S0:k;oV3խjj prlf 4#!;Ks6+ބ}vFJ%Skz5ia8=`ao 9K 4d"ܜ4f'<>,O|쑋L7`g>g^Q\SC9Cxɤؚry7Be6 뾂G)Lnkg;K;!l^p k((!qA Ȋ݈ b"'|i`'??|MѦʝ;&cjV=E߷!//fI|Х)Z^3&hJ[ Y(»KX ?-6q%k;lt`xµIy*^TgSDA*=j[5B&#:b,C %D ɒjPd$J5VB3U ,zQ!A+WG9RNSgI ZvX2f9 "s^&!GH$ʿԷK3-H )˦vJӑbA( G0z VBbvXQ5R öNDϖb۠#J5^e,*i.,ZRW,Mu7zތmL"ne4A2 . p璅nFxh]I\• 7o4&ܟ?qE0b\sxZM Ge7?n}ۯa<%99y n}=̻f͊NM {-[ظHpYGxESXS3 q2wp{|NsG暽}y==\x)\nw9W\Æ0} v]}9=OWozU@d2}7$}ޱ c2E-.xA1twMd»-7_Irr2.x!+o>iZ'Vo͇~ww;z[.?<)ßxWBB1.}イ`x#8 W Ks[BSG?z813l$'V8YQ,K T37@XWA e#1jj?rP#f[u0A(+,{3r$\g_ "g]S+k ZTFRSse%_%Xf a,+g;DvPh ዹD@aA%sRX쪱8Nd0ͨʓQ1e%] J%hrX#Tr.X!A#{6=.m[p֎1}+G v.U,n[| {&m_=w0uwcz`z^S6|mi}ԙvRc Ǿ>uqt_Jo!ήk.a ;摫'\EF΢;oDx1? ty|Ν.JNVM, w+pp@u'i9xzq]> w5{I@Iq.7:>[fc{ovk]p \ ?'E%0ƽ;7NT}9f,BN`ġ(D*y`["$x0Ț"./jHflz,6MtL*&q1 ыS(&H$@ QtMJ"`1r M# hU!/媝 ,pU#v(;\~ΐp;浮MIOun_h^=Ա__05!`(T r˺{Sx B^\e}h 6\y?~78U_ǯky9A?z.pΕ/m W ;(S1nBU/u'ߟx8sE3t+sVG|z'.&J{&Vr]uWZpK.Нz)咾O\o=Q' ]LVf=t }Z&]oNQ.L.tK&ӀvvYi%5> ;]CO>t?{Q#w7o~`zT@w}nq _]:kuk;Nv]0{_<Խᨵ%?~> 1O/]_X8v︬CO*E2ʩ2qXɂ*diR &7 D YBR4F)PNZ?{T5z`X(g^CݴEЌ1l$"Xy'k!W>;W] txX"I>سW9{;u8JH{εc+YiS4U*\9nGP^TLLTz ).cbZ]"W : iAͅl`! Ӣ]nPiC^0owqs/sUǮ3;LxDǮu~+F[&pn ~ȣL0=Ke{CZ9;C$2ͤx{WA܍ce?]j-s[pss}qN`KV>Ms\ sӏ =Ug-0DUQ9 :b)x`pҘdB4 b5G"(g I<V9 <ˆ}8er$y#׉D*C+Bo{Uf/Tv'}Oõ{‡^fda@< 9XօqPo@5ae+|S8~ɌqgovA/.`j}ϕzaOX8!a(-0x tA|ê~so|;bu&o`-s؍[Q/[w54 pp.6*LV& GaqSЗm;}cRݒ'P}'pTNUO?%n#t;7\rg!Gj|]|O&3A[._>;}Bw _o%./f؟nqKƺ]ǻW5?j-z4xr Hf#=٣ldx `UjT/^#Ai>}QW*dB(3Q]}7g☩PQʢz tVAȐjG)bȂFL3(]:֮|Ih0';̫>g}v͙ H 5mjs`b'D:(Mňǝ?k0'ڽ͸XWY2hppp/>q/>\vMֻBa#[7x /;iQ_< 1y?:._1nӾ}Esb]㗻]JGwlorkݚps|Ύ|֝\ ?}:x o]a?.^3g*#>.w?}%gp7n=9qɢo ϧo3p/>yG}sn_>cGd.Ye=_o2woqM\p(rئ{emSԾ'qD6ҋM#f0!o"`(3Kq$UWˑAѩm@H2B9ZɓA=*k9Ha)X,5 "y({WbP|+*1 a'Tq,({1n"i?Or()g? b7! $, ))%u͓j! 򤕦Pt+GCv傲lg\{ >>=olsv4 ׍gmW x7d&5^o|Ă{S8N{r1'!_?]=+'),wf?_઺D8uVE"0 ύ⇹EuwO}UU#WX9sy=GE {ذabw`loʩ'H5߀K|l|ơ7v>Ws7 vpU:9} 31p 8пG'c@uI.p^ l\;pObprs{6W]?ǝ:Y2>w钶ȧn%<>r.?toʚLۑqF+ɢE5~񴚰h^y<*#=M(+XjT:֕p՞PC! qBeMœN$̰ZǠW4\'Fe}LTlbcHB$.DkDZHXJ!p#KJ<9Y7T TNu_qfFP5ChwFTUңu{+ryP2z(d@hf(\cFc+"faSI-6 tfhvf'()Yc(ޕrEv\AviFOOwj^<=fM89EVQAgws>Q,YΧϿ;וY>- f O-NO5L@yvhRQ`'Rbܤf:W~C?ι5FD&{|.V\$ڳ4𷅌pbh FA.^cl|[ ?$ۄ291XQu{]p>s~=hbOML4N)Q6R~G=#~g^cQGꢽŭ*tc J⑴>W|9 S,:c}n;#(A?Ex?g#>ƿMumH0ZT-jCq$~tI%SecZv"H2g! (P@M +zW#A4Mt8QbTbRRаB'"yb3ɣX, SdaBl6^aju퇩 xb맱Y' DYYΟ/-l{uԕWz 4HBI֙"`Ĩd2y"}|X1Q%X 4Ռ SI/ͦe'څ>GZD'A P=Ԟ`MU2* }^$כx%$Ɵ&ml{I.y}m.w%ܾÓoN:}.PLZٽj+ݣ6z* sƦC P@2QvQ 5fa:(MO]Ot*If#rͻJE[P'ADP)T)&2՘nai05بI[ٶ-/#H lVp"NԉĔb&z^e a75 1ZxXV+Х -v|φ*\ۢY+}uPRQdeE@ ki"jCYwa"samiPYL*ON1+)qF@ pS`Vh0D ENBRCiEkF.%I*cl]bU%BHx)1MbUb~.*dVwbjSmUZvI*o?UI kbGGejGJF_D%ͲTRGȵ2p:PwIU_/ azB((z#z#[ i5'j3jIqzM,4+j9}Ffsgыz)N&&Ep' R*VPpUȣͨU1I 6rŌ*YM2IƢ .!"8ܓ@̡ǡ%}C-)S;EܮG I/*UJK ]]tsH<|a PMidE:Jk<"'L1?+r-?I6kJшN1+i0I,,L AØh$IʝNd`f)\*콛<P<xE2&p\2y#3b3"CdP@<.Mp<'9*\tCb L ,@e,$b6S"99(~^'S\!K&o6NrPQU|L2瑢peVǤĆ$L&~NcBx :~'67(NWv=XvM{zjt.VgOzO{zR8H }EJz' SV1tA[zzݏކn(#&RuW"q^eԤmՠy^S%y'?#qB0l?feJ'GŀՈ*;ѭTjߤ7j6ހ}S, -m/zT?#]H$51&|M߸->q<|'ps|1 _ztmWaֽw&:y-$7&'u{|Yzv1wl`{ -yx.yɍ^cdj˪؀^׭>g.{WPObd/|6 ܽvꌿGф%WFE++$A-#a};Y }?i PXa- <]$z0Yfj]F=mbjaƔU*µ?n[ !@  zf_!&0֦zEsjҐxJ)2X`g;D:Ѩ/u-H|r]) )A]}ŀ7|B Z'LORck`k Zj\̚{L u= c`tSY .;Wc"jB &$G=QqŲD${:TX,@=WȈL0T n\aq父%w?_0yƩ-aX̆%|DIGO_n3Xg^*z:~=pK>|=@ƕ2'2w.cc8:K67@zRtO۵0̟sa枏sׅrVkQeNVW? ΅Mk)4#xNGR:c^$07O)d. +ΝK)kDOgxhVf AP ciGD&6c7'x}^R$uo˙UJ~ڱV`ڂez75eg|^F'U]K[lՎ|+GVX(UzLi3dah*.-.I61#k ;WE6gV{'4:6`f&bTʇ:AorToob~>-'elLRk0^) S=Uc27k21Py y{mpzy 3e*/xN ]6+_-tP*|4P]5{Vp},x J&\OB!:AܱfT8ޟ~0=x>9@[:x^t("sXq|v6Z4dý ='~Ƅ6O T KFzwbh*qB, ,m<)U W0N>y*LDGR&ڄhy[ɈrImvg1h% qCê:'#%IQYnJNˤ/|]}94$le62Ȉ62JIkX(B-cp9s@b&<F:,cgsjw wܓ6f+U+L8G[#a)ɐ+{^`E[?pCxK]Pݼ!.vB\e%'vb׳+_`|w5|gۗ"U W^4i0v_8?}+Ode[?d ^{jLz\bs#Ȯ"f]ro1%IoEN-\ V4PE܍'g$}ދy8+qN{! 02 ­A pտ%x mon;YB9Eo_A^h 1KeQnU͖r0Mޜ(۷#Uad! TZVEbcA" `F;jQt]}9(f=i26 udHϨ}J}͑D=`/օm .i6JP)/nIvE4E:1U,$6iPfQ{`AА|E \+ԳM⟚RBHYv fKX {zp;H@R^u(RiLDVx8@LiFHx؊[/?*dAPށYOս8U={ӱЙ7R[s%%Tdbb7wR녤rUz8n.]U:9FhJ0 Pw"qEꞲQA𢻂Aٳw]y'\a쭌1`{2m ҷI%^tBV_'^?}w'Uw1\`;)ޟepU8I[ qW >|vfݧZ=^3V2Q:Ux-t]*}.;X36EӦ^;.!b ݛ/! |&QYAwdD$7سù~%;}Juコ\Rvzl^mr>ޫ;ᑂ2QQE8ӝ+ h6@5H&+j PXv$ZmYV-ٺdQBRߠxdz)D{;PHW@ZU.HI$y3- KTMd++]A8I{:jՋMPn)uC$`zPFb0 N\cTYT.DYn,$nFXu"c|V$c l4zucfvPJPۃpBӏ4%A,:eMO]Tz+ajXo@ArYe?m̑0NL`dpDyV-WNrw'qUw(΍?t89Y/fcPS| d43abfs6ȉ}|\ma+WO<"/&=z^WL=v3 ߺd<_*|g']pڰRd#]1ljtz;ۃR?+CG~EDMƿsX9QIzR$ppKNB.i.~)g/t?r}Hdxr9"l[mI>;kpp>;x7Oû3Fnkw}zz1cA@BLTI5S J'DU#v->(a$l]8 DQL8T=>լ9ڡ+o" &ƨ̶9a-aQK3rF?J<An*#}SPQqr/2uTSFY9 D)YF{RV`!~{]%TT17cQ Q2+؇f>܍H+"2zh׊;?f#r'dTA]S5ChHf÷TKȇ;e&=\{E=4e=^|Rzy 9婀*`wyOtA>spϟrȏ1|U=k߫];8uU.t@1֫[>H:d Sz}Ce}KrK{N>?WaԐA&1υȏppJ_`O28qǶe;G =ju8vso>w}ܲ1(muz$=|q$ :{_sd8RjT'(S!_F͌h =턌tbKpbUFSYanDGm σbSiPpxJ|%=I߀`74t `R[D(FJ67ؒtQNc`8 V!M9e 3-:+i 9~|a|8 y@)JeqFj% po5$(b-[3X=?LB_,|1RQ4!HsT%TnMar'0+M;[RDU|2YKBc⬷u>팾L]&͕23͛9>tbcD3Ou#f@;sAOGy?3,nc fί O^%sy/O=xFukS(EIyhdϣ/6z X[q<^ch('[5`''yƌ½< p/چ?~=wQrFxLT]O| Iױ!;psˣkB{*ժf@-1'$XZ\hUpt vj arUce\ O#}J[@BlO@b˴3k$F?$dwP ,hU`UƜ$c6`TfHgdfA%YOa'jcj6EQAYAf-2?/> no/!kylp$kC)MGW'@9ΰ% LI=Q›Vf#3"QsQhC)cN]}O=5+03Zb:J?(YGRù]j @$bׄrV2KY-&PݠIGώyPm؜Nf,4XRi1M˸:-^F"zfiBx 3 jP="0dJ&YRImL@TIZpop{;Cnx,ID% IʳMCWAKe IDOLHzPWfDqc4lԪPBn770+ d[b3@jȈ{ۨ3#{ט"&Nqm ʒ@9}G)|M#[p~ܶ5MyC|2C_M =]M 엋e%*ת>PAKX=h$9"kD΂xfY5r㥡,@ u:ƶA"*QF 1U+ 2҄J'9bTzW=dwLW- EVlP3a (H!86fcdWv"5Z ы,pM bub6RjwBDXR! ړX:(!P&zV!c[Б *D"Z2I@d.Jٳ@dEBjF0q7 >K|ʼnW% Q#I*N>Z+-T0s{jF4$:n΂ kg[R콫g*KA#/0Mq菠ʑ1RJ(E!)ų^UJVt,DTb s߬颙;ozyQpTrH|)NOQKC"@V='BZ(ͳT;@:٬ވ%H4bHzsZY$8r$qjʒ6XU먪wʃ$Pn hB6GWb0h15¶GTP0 6۠qq'0bR$H+fxsijR"mPU*0M" f :K" XmFji+}BJFҺ|)[*z0e քE&yF .`jHnxV'zLZ SJ=*]3D{_.dw1 Y6 TP1^ wLVJCE=a[fo jT} j1Q\?5zT Q[` 2de)p*#TPXk|θ /JIR7ԲVdFo0b8K9KJ5 O_GM8SUn'){\MֲhHJ}G Y<7 6w G,k'KC XFʙD DhRuGbY DTF'$ TgoE!SVNԷ ]h2PoHҋ˓"lIѧKg}L~#KdxKYwL[$<|@O푫3SjH:h `@(o/-|Պ!וÿszfEz3? ['51D 6Uݚ*\ eI)' =>I.`(#oJ*&56,4^<J=f|nncR!60-1 )`s0tBP 85@1)JH{(8ZM^2@h.}#cjP*Hpr?șYt `nCN"=T340e+SC1PR#W#+p/2z5kl]]Oq ~r*X\-5wB ~ Plg2~G/WF'h69E>ͫmoNŸomnNBA]I$1Ց^-W*EZj8WV+(O-U2N"Wʪ>Uz5bU]>s4^ӻ g†܋7?6T!ψoe{j\c/ vɗ}˷AB'3.ދJ@+'Q\weSClXn{@ zwt7=KbPDt# >ێ1}`lQ!{a_X`:8c/"}fд6+ǹ:4tZSo4G(|4S|YG#|gpV-`~NIa B gUZ] pu, nNņ!b<_|7dh{@o^7x?u4 YNǢ j[Mb*?rWޠkLҋJdA+%&a,wTpb^# ŗ]\,QWB女AFEoi`"Msǃ>l mL,YCv H}E_3:? :*S/o׽Gh})!#fМ4Ïhm5߿ط??@?XIENDB`youker-assistant-1.0.1/src/qwheelarea.h000644 001750 001750 00000007164 12312451003 020425 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #ifndef QWHEELAREA_H #define QWHEELAREA_H #include #include #include class QWheelArea : public QDeclarativeItem { Q_OBJECT Q_PROPERTY(qreal verticalDelta READ verticalDelta WRITE setVerticalDelta NOTIFY verticalWheelMoved) Q_PROPERTY(qreal horizontalDelta READ horizontalDelta WRITE setHorizontalDelta NOTIFY horizontalWheelMoved) Q_PROPERTY(qreal horizontalMinimumValue READ horizontalMinimumValue WRITE setHorizontalMinimumValue) Q_PROPERTY(qreal horizontalMaximumValue READ horizontalMaximumValue WRITE setHorizontalMaximumValue) Q_PROPERTY(qreal verticalMinimumValue READ verticalMinimumValue WRITE setVerticalMinimumValue) Q_PROPERTY(qreal verticalMaximumValue READ verticalMaximumValue WRITE setVerticalMaximumValue) Q_PROPERTY(qreal horizontalValue READ horizontalValue WRITE setHorizontalValue) Q_PROPERTY(qreal verticalValue READ verticalValue WRITE setVerticalValue) Q_PROPERTY(qreal scrollSpeed READ scrollSpeed WRITE setScrollSpeed NOTIFY scrollSpeedChanged) public: QWheelArea(QDeclarativeItem *parent = 0); virtual ~QWheelArea(); void setHorizontalMinimumValue(qreal value); qreal horizontalMinimumValue() const; void setHorizontalMaximumValue(qreal value); qreal horizontalMaximumValue() const; void setVerticalMinimumValue(qreal value); qreal verticalMinimumValue() const; void setVerticalMaximumValue(qreal value); qreal verticalMaximumValue() const; void setHorizontalValue(qreal value); qreal horizontalValue() const; void setVerticalValue(qreal value); qreal verticalValue() const; void setVerticalDelta(qreal value); qreal verticalDelta() const; void setHorizontalDelta(qreal value); qreal horizontalDelta() const; void setScrollSpeed(qreal value); qreal scrollSpeed() const; virtual bool event(QEvent *e); Q_SIGNALS: void verticalValueChanged(); void horizontalValueChanged(); void verticalWheelMoved(); void horizontalWheelMoved(); void scrollSpeedChanged(); private: qreal m_horizontalMinimumValue; qreal m_horizontalMaximumValue; qreal m_verticalMinimumValue; qreal m_verticalMaximumValue; qreal m_horizontalValue; qreal m_verticalValue; qreal m_verticalDelta; qreal m_horizontalDelta; qreal m_scrollSpeed; Q_DISABLE_COPY(QWheelArea) }; QML_DECLARE_TYPE(QWheelArea) #endif // QWHEELAREA_H youker-assistant-1.0.1/qml/img/logo/Manufacturer/ATI.jpg000644 001750 001750 00000015735 12312451003 023432 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]       !1  AQq8a2$XxJ"b#3Dd%5&7(HhBCs4fvw)9i* !1Aa Q"2qBb#5Uu6v7(3c$4T8H)EWRSstV'ghI ?|ŷw^՜.;ZrhJUKٱ*4AmѬ&8E9f!.l 4مx )cƔ+dT GzwDXƼ ,f1ʻ}N:NJVnM a3u5g!%4,10;M#o6y%G8|] _$C&14I|X>-Iﷰ`7@C$Ciz :DK~o`pGlyN})}SxwW~<D/s0r3xw;&0ΰcK<|\}>xM"αr>.{}S?b;M#_6yr (Ae>;S?/<9hAe?JM&s/<9hc >~2wq 1;A_u'Pro廣zRWg'an~=`wL\_ YTf{l2F{mMߗ\jW^{DE Y}L :#׌F;tu1iRl7N(0Zc&ўzwajW^{DE MG+̂g!s:ЛM(()ʖ*TauHiCK=> %-'xw;a5qNt;cCh%JEJ 2l^ml6 kI5љwBpJpK*eLTLgj5'&uMTTՆ22Ж3M̥)S:c;L rfi:&]+{ߘod3eO&4| ?ʼ<5/TV,1X\FXʗdCmK7zW-rmF+璭l*nk|nk?~D,TE$^r$Tu&khQ ݡn|thݛPM[izLpUҟ BYNZlX(m֏Yg*rh* Uo5}ighmۻo Օ`~y8xe< n܅HtǦPԛ9=է4Wtdҕu^4hMZ 郭<٦[3MHz '{iٟm9np~R)(SvѹPIQHfhJ;6T3Kӟ\L}]i$ܺJy'c+*[983nL~LP5<iWN)ioWNns"DRG 3f9ZY C=RFȑ=%.Njmg[FYPtDm'q_/%Lؕb]2S V-7V=͕1i՚戾rݤ;nL,B^Kei$֡*`ʹ@'@ .Ў0OVeܹ^Ia8d\]bʓUu/(Ԅ]ּy9fтWZkLmRkee1V Oh9BLḛ;.@'[9Kz[ S̿s=q{5|Uŧ9p\ ̬SUfZf8.pvUƶR9tF 5LyĒI]:Dfc&'bJҪUk_`s.vrK#0Fϙ|/ᨺLԥunoW̥f`G斠POppAoN9#Av [Nj U` Y$rHQϑO(2^#,eQfM3uGFʂ7T T(i\SI ,}ҵdZ9C +@YUڂu$+fg)>gy;O>ljn[Sj/ mTksJML锲J@$hP14ӈqf ,e|Ս8Mk2'ad%Kvbm|K^4"+nTCu/Pp^,L2@e 9@a⊩e'ժʬU-gD{r8 Sw8youker-assistant-1.0.1/backends/youker-assistant-daemon/src/weather/base.py000644 001750 001750 00000002763 12312451003 027421 0ustar00saucysaucy000000 000000 #!/usr/bin/env python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os, sys def get_parent_path(folderpath, level=1): parent_path = os.path.realpath(folderpath) while(level > 0): parent_path = os.path.dirname(parent_path) level -= 1 return parent_path WEATHER_URL = 'http://m.weather.com.cn/data/%s.html' WEATHER_URL1 = 'http://www.weather.com.cn/data/sk/%s.html' WEATHER_URL2 = 'http://www.weather.com.cn/data/cityinfo/%s.html' PM25_URL = 'http://pm25.in/api/querys/pm2_5.json?city=' #TOKEN = '&token=X1K1gyCibzqxfvJQnpsi' TOKEN = '&token=FHVqQSGmZSmuC2GxqkLF' PROJECT_ROOT_DIRECTORY = os.path.abspath( os.path.dirname(os.path.dirname(os.path.realpath(sys.argv[0])))) DATA_PATH = os.path.join(PROJECT_ROOT_DIRECTORY, "data") ICON_PATH = os.path.join(PROJECT_ROOT_DIRECTORY, "icons") youker-assistant-1.0.1/qml/img/weather/d24.gif000644 001750 001750 00000005433 12312451003 021430 0ustar00saucysaucy000000 000000 GIF89a008uȁܽǴ܀źعʲ㌖ȗâշ}ѱǭY㍡6q8t9t:uy?zA~@|A|;pB}B~5eDGF6dF}IBw:hKMEz>n@pI~CtLQ?kUPK}NCnT]\SVHrb`eaeb\ZeMugakjcimkrpotpW~rutxv{zyxwy}xր}|ۂ側ㄷ]`₲߆n3t4s7x6tGxtsぶ⁴ჶサ⃶Ⴔߗꦹ!,00 5s(\ȰÇ tӆTaJl3 CI2=)͛x޴I͛8meJҝs 9H*]ʴ?oAz.N;`!ׯ`Ê?*_9{GϏAuجٻM<#G>}Rb:kPÎ1 Ũ ^:O׫ćO!@lƑa ] ֬)_sB -'OJ-j́hPࠃC3Oľ={#!Jd"@khN! lB ,_{4.D agwhAN0">Ȋ,"<򈄎P /t`P jB&С4n" ȞjA (< (I&J(AƖfbP*ہ 'x T[Ƈ!) 2\02 q(T='D@C +# 1{ ,0=tXmu4ҍ<& } d۲ܴmzFuН*'!y#B c %XKv,:x"㐫zБ0B r24 2뮧J*' %LP [ l p#Nܲ(/J,\BI#0"08Ck"@D#6A }{g1Itw54lh82 3AX Bs p+7'̂ L!qxCT0+DŽYk1nb/& l XEp&p \1N). T,\ф&8ᏼcq^8+0 D" Xd#q\ hE#H(, ًUB /~]@'@KZRP`.P q\e/`bń.z ]DaXE1H좙f(oF!/i q䃛$(z(((( G(O%H(AoPgO$`x45`(I9}2={t" Ɛi> Sc0:a@ @FPjT)(a @'v02AEP["jWTc J'! Vc 8F-:Q FcȘB.> $ȅ:(\6H l.:0zcPc0z1d`=Fe bv-4gPȅ2@+@Cȭ,o QVg( 3 r !XHF4u8ɨK7 XE7dѐ/}FXaH4 h F#6%[Z TƁ Sm3q ^ܳ3a#͘g5@Nf`#? h̘4<ϔ^ɗ(NjkkpH(Sʌk| Ca/טF1 ݠ45\؂4 gZ\L-C+ra k,E! 2W$h!vt %ha ilimla/Pw"ռ71kkC]хy|Cx4awh –QwT¬qp\KڨюjTcrN՝ /hA!eG6~!yF=Qpx&N[7mx G@;youker-assistant-1.0.1/qml/func/common/TableView.qml000644 001750 001750 00000053516 12312451003 022762 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "private" as Private import StyleItemType 0.1 import CursorAreaType 0.1 /* * * TableView * * This component provides an item-view with resizable * header sections. * * You can style the drawn delegate by overriding the itemDelegate * property. The following properties are supported for custom * delegates: * * Note: Currently only row selection is available for this component * * itemheight - default platform size of item * itemwidth - default platform width of item * itemselected - if the row is currently selected * itemvalue - The text for this item * itemforeground - The default text color for an item * * For example: * itemDelegate: Item { * Text { * anchors.verticalCenter: parent.verticalCenter * color: itemForeground * elide: Text.ElideRight * text: itemValue * } * } * * Data for each row is provided through a model: * * ListModel { * ListElement{ column1: "value 1"; column2: "value 2"} * ListElement{ column1: "value 3"; column2: "value 4"} * } * * You provide title and size properties on TableColumns * by setting the default header property : * * TableView { * TableColumn{ role: "column1" ; title: "Column 1" ; width:100} * TableColumn{ role: "column2" ; title: "Column 2" ; width:200} * model: datamodel * } * * The header sections are attached to values in the datamodel by defining * the listmodel property they attach to. Each property in the model, will * then be shown in each column section. * * The view itself does not provide sorting. This has to * be done on the model itself. However you can provide sorting * on the model and enable sort indicators on headers. * * sortColumn - The index of the currently selected sort header * sortIndicatorVisible - If sort indicators should be enabled * sortIndicatorDirection - "up" or "down" depending on state * */ FocusScope{ id: root property variant model // Framewidth seems to be 1 regardless of style property int frameWidth: frame ? frameitem.frameWidth : 0; width: 200 height: 200 // Cosmetic properties property bool frame: true property bool frameAroundContents: styleitem.styleHint("framearoundcontents") property bool highlightOnFocus: false property bool alternateRowColor: true property bool headerVisible: true // Styling properties property Component itemDelegate: standardDelegate property Component rowDelegate: rowDelegate property Component headerDelegate: headerDelegate property color backgroundColor: "white" // Sort properties property int sortColumn // Index of currently selected sort column property bool sortIndicatorVisible: false // enables or disables sort indicator property string sortIndicatorDirection: "down" // "up" or "down" depending on current state // Item properties default property alias header: tree.header property alias horizontalScrollBar: scroller.horizontalScrollBar property alias verticalScrollBar: scroller.verticalScrollBar // Viewport properties property alias contentX: tree.contentX property alias contentY: tree.contentY property alias contentHeight : tree.contentHeight property alias contentWidth: tree.contentWidth property alias viewportWidth: scroller.availableWidth property alias viewportHeight: scroller.availableHeight property alias count: tree.count property alias cacheBuffer: tree.cacheBuffer property alias currentIndex: tree.currentIndex // Should this be currentRowIndex? // Signals signal activated signal clicked Rectangle { id: colorRect color: backgroundColor anchors.fill: frameitem anchors.margins: frameWidth } Component { id: standardDelegate Item { height: Math.max(16, styleitem.implicitHeight) property int implicitWidth: sizehint.paintedWidth + 4 Text { id: label width: parent.width anchors.margins: 6 font.pointSize: itemstyle.fontPointSize anchors.left: parent.left anchors.right: parent.right horizontalAlignment: itemTextAlignment anchors.verticalCenter: parent.verticalCenter elide: itemElideMode text: itemValue ? itemValue : "" color: itemForeground } Text { id: sizehint font: label.font text: itemValue ? itemValue : "" visible: false } } } StyleItem { id: itemstyle elementType: "item" visible:false } Component { id: nativeDelegate // This gives more native styling, but might be less performant StyleItem { elementType: "item" text: itemValue selected: itemSelected } } Component { id: headerDelegate StyleItem { elementType: "header" activeControl: itemSort raised: true sunken: itemPressed text: itemValue hover: itemContainsMouse info: itemPosition } } Component { id: rowDelegate StyleItem { id: rowstyle elementType: "itemrow" activeControl: itemAlternateBackground ? "alternate" : "" selected: itemSelected ? "true" : "false" } } StyleItem { id: frameitem elementType: "frame" Component.onCompleted: frameWidth = styleitem.pixelMetric("defaultframewidth"); sunken: true visible: frame anchors.fill: parent anchors.rightMargin: frame ? (frameAroundContents ? (verticalScrollBar.visible ? verticalScrollBar.width + 2 * frameMargins : 0) : 0) : 0 anchors.bottomMargin: frame ? (frameAroundContents ? (horizontalScrollBar.visible ? horizontalScrollBar.height + 2 * frameMargins : 0) : 0) : 0 anchors.topMargin: frame ? frameAroundContents : 0 anchors.leftMargin: frame ? frameAroundContents : 0 property int frameWidth property int scrollbarspacing: styleitem.pixelMetric("scrollbarspacing"); property int frameMargins : frame ? scrollbarspacing : 0 } MouseArea { id: mousearea anchors.fill: tree property bool autoincrement: false property bool autodecrement: false onReleased: { autoincrement = false autodecrement = false } // Handle vertical scrolling whem dragging mouse outside boundraries Timer { running: mousearea.autoincrement && verticalScrollBar.visible; repeat: true; interval: 20 ; onTriggered: incrementCurrentIndex()} Timer { running: mousearea.autodecrement && verticalScrollBar.visible; repeat: true; interval: 20 ; onTriggered: decrementCurrentIndex()} onMousePositionChanged: { if (mouseY > tree.height && pressed) { if (autoincrement) return; autodecrement = false; autoincrement = true; } else if (mouseY < 0 && pressed) { if (autodecrement) return; autoincrement = false; autodecrement = true; } else { autoincrement = false; autodecrement = false; } var y = Math.min(contentY + tree.height - 5, Math.max(mouseY + contentY, contentY)); var newIndex = tree.indexAt(0, y); if (newIndex >= 0) tree.currentIndex = tree.indexAt(0, y); } onPressed: { tree.forceActiveFocus() var x = Math.min(contentWidth - 5, Math.max(mouseX + contentX, 0)) var y = Math.min(contentHeight - 5, Math.max(mouseY + contentY, 0)) tree.currentIndex = tree.indexAt(x, y) } onDoubleClicked: { parent.activated() } onClicked: {//added by kobe root.clicked(); } } function decrementCurrentIndex() { scroller.blockUpdates = true; tree.decrementCurrentIndex(); scroller.verticalValue = contentY; scroller.blockUpdates = false; } function incrementCurrentIndex() { scroller.blockUpdates = true; tree.incrementCurrentIndex(); scroller.verticalValue = contentY; scroller.blockUpdates = false; } ListView { id: tree property list header highlightFollowsCurrentItem: true model: root.model interactive: false anchors.top: tableColumn.bottom anchors.left: frameitem.left anchors.right: frameitem.right anchors.bottom: frameitem.bottom anchors.margins: frameWidth anchors.topMargin: -frameWidth anchors.rightMargin: (!frameAroundContents && verticalScrollBar.visible ? verticalScrollBar.width: 0) + frameWidth anchors.bottomMargin: (!frameAroundContents && horizontalScrollBar.visible ? horizontalScrollBar.height : 0) + frameWidth focus: true clip: true // Fills extra rows with alternate color Column { id: rowfiller property variant rowHeight: Math.max(1, contentHeight / count) property int rowCount: height/rowHeight y: contentHeight width: parent.width visible: contentHeight > 0 && alternateRowColor && !verticalScrollBar.visible height: parent.height - contentHeight Repeater { model: visible ? rowfiller.rowCount : 0 StyleItem { id: rowfill elementType: "itemrow" width: rowfiller.width height: rowfiller.rowHeight activeControl: (index + count) % 2 === 1 ? "alternate" : "" } } } Keys.onUpPressed: root.decrementCurrentIndex() Keys.onDownPressed: root.incrementCurrentIndex() Keys.onPressed: { if (event.key == Qt.Key_PageUp) { verticalScrollBar.value = verticalScrollBar.value - tree.height } else if (event.key == Qt.Key_PageDown) verticalScrollBar.value = verticalScrollBar.value + tree.height } onContentYChanged: { scroller.blockUpdates = true scroller.verticalValue = tree.contentY verticalScrollBar.value = tree.contentY scroller.blockUpdates = false } onContentXChanged: { scroller.blockUpdates = true scroller.horizontalValue = tree.contentX horizontalScrollBar.value = tree.contentX scroller.blockUpdates = false } delegate: Item { id: rowitem width: row.width height: row.height anchors.margins: frameWidth property int rowIndex: model.index property bool itemAlternateBackground: alternateRowColor && rowIndex % 2 == 1 property variant itemModelData: hasOwnProperty("modelData") ? modelData : null Loader { id: rowstyle // row delegate sourceComponent: itemAlternateBackground || itemSelected ? root.rowDelegate : null // Row fills the tree width regardless of item size // But scrollbar should not adjust to it width: frameitem.width height: row.height x: contentX property bool itemAlternateBackground: rowitem.itemAlternateBackground property bool itemSelected: rowitem.ListView.isCurrentItem } Row { id: row anchors.left: parent.left Repeater { id: repeater model: root.header.length Loader { id: itemDelegateLoader visible: header[index].visible sourceComponent: header[index].delegate ? header[index].delegate : itemDelegate property variant model: tree.model property variant role: header[index].role property variant modelData: itemModelData width: header[index].width height: item !== undefined ? item.height : Math.max(16, styleitem.implicitHeight) function getValue() { if (header[index].role.length && hasOwnProperty(header[index].role)) return this[header[index].role] else if (modelData && modelData.hasOwnProperty(header[index].role)) return modelData[header[index].role] else if (modelData) return modelData return "" } property variant itemValue: getValue() property bool itemSelected: rowitem.ListView.isCurrentItem property color itemForeground: itemSelected ? rowstyleitem.highlightedTextColor : rowstyleitem.textColor property int rowIndex: rowitem.rowIndex property int columnIndex: index property int itemElideMode: header[index].elideMode property int itemTextAlignment: header[index].textAlignment } } onWidthChanged: tree.contentWidth = width } } } Text{ id:text } Item { id: tableColumn anchors.top: frameitem.top anchors.left: frameitem.left anchors.right: frameitem.right anchors.margins: frameWidth clip: true visible: headerVisible height: headerVisible ? styleitem.implicitHeight : frameWidth Behavior on height { NumberAnimation{ duration: 80 } } Row { id: headerrow anchors.top: parent.top height:parent.height x: -tree.contentX Repeater { id: repeater property int targetIndex: -1 property int dragIndex: -1 model: header.length delegate: Item { z:-index width: header[index].width visible: header[index].visible height: headerrow.height Loader { sourceComponent: root.headerDelegate anchors.fill: parent property string itemValue: header[index].title property string itemSort: (sortIndicatorVisible && index == sortColumn) ? (sortIndicatorDirection == "up" ? "up" : "down") : ""; property bool itemPressed: headerClickArea.pressed property bool itemContainsMouse: headerClickArea.containsMouse property string itemPosition: header.length === 1 ? "only" : index===header.length-1 ? "end" : index===0 ? "beginning" : "" } Rectangle{ id: targetmark width: parent.width height:parent.height opacity: (index == repeater.targetIndex && repeater.targetIndex != repeater.dragIndex) ? 0.5 : 0 Behavior on opacity { NumberAnimation{duration:160}} color: palette.highlight SystemPalette{id:palette} } MouseArea{ id: headerClickArea drag.axis: Qt.YAxis hoverEnabled: true anchors.fill: parent onClicked: { if (sortColumn == index) sortIndicatorDirection = sortIndicatorDirection === "up" ? "down" : "up" sortColumn = index } // Here we handle moving header sections onMousePositionChanged: { if (pressed) { // only do this while dragging for (var h = 0 ; h < header.length ; ++h) { if (drag.target.x > headerrow.children[h].x - 10) { repeater.targetIndex = header.length - h - 1 break } } } } onPressed: { repeater.dragIndex = index draghandle.x = parent.x } onReleased: { if (repeater.targetIndex >= 0 && repeater.targetIndex != index ) { // Rearrange the header sections var items = new Array for (var i = 0 ; i< header.length ; ++i) items.push(header[i]) items.splice(index, 1); items.splice(repeater.targetIndex, 0, header[index]); header = items if (sortColumn == index) sortColumn = repeater.targetIndex } repeater.targetIndex = -1 } drag.maximumX: 1000 drag.minimumX: -1000 drag.target: draghandle } Loader { id: draghandle property string itemValue: header[index].title property string itemSort: (sortIndicatorVisible && index == sortColumn) ? (sortIndicatorDirection == "up" ? "up" : "down") : ""; property bool itemPressed: headerClickArea.pressed property bool itemContainsMouse: headerClickArea.containsMouse property string itemPosition parent: tableColumn width: header[index].width height: parent.height sourceComponent: root.headerDelegate visible: headerClickArea.pressed opacity: 0.5 } MouseArea { id: headerResizeHandle property int offset: 0 property int minimumSize: 20 anchors.rightMargin: -width/2 width: 16 ; height: parent.height anchors.right: parent.right onPositionChanged: { var newHeaderWidth = header[index].width + (mouseX - offset) header[index].width = Math.max(minimumSize, newHeaderWidth) } property bool found:false onDoubleClicked: { var row var minWidth = 0 var listdata = tree.children[0] for (row = 0 ; row < listdata.children.length ; ++row){ var item = listdata.children[row+1] if (item && item.children[1] && item.children[1].children[index] && item.children[1].children[index].children[0].hasOwnProperty("implicitWidth")) minWidth = Math.max(minWidth, item.children[1].children[index].children[0].implicitWidth) } if (minWidth) header[index].width = minWidth } onPressedChanged: if(pressed)offset=mouseX CursorArea { anchors.fill: parent cursor: CursorArea.SplitHCursor } } } } } Loader { id: loader property string itemValue property string itemSort property bool itemPressed property bool itemContainsMouse property string itemPosition anchors.top: parent.top anchors.right: parent.right anchors.bottom: headerrow.bottom anchors.rightMargin: -2 sourceComponent: root.headerDelegate width: root.width - headerrow.width + 2 visible: root.header.length z:-1 } } Private.ScrollAreaHelper { id: scroller anchors.fill: parent anchors.topMargin: styleitem.style == "mac" ? tableColumn.height + frameWidth: 0 scrollSpeed: 2 } StyleItem { z: 2 anchors.fill: parent anchors.margins: -4 visible: highlightOnFocus && parent.activeFocus && styleitem.styleHint("focuswidget") elementType: "focusframe" } StyleItem { id: styleitem elementType: "header" visible:false contentWidth: 16 contentHeight: fontHeight } StyleItem { id: rowstyleitem property color textColor: styleHint("textColor") property color highlightedTextColor: styleHint("highlightedTextColor") elementType: "item" visible: false } } youker-assistant-1.0.1/backends/youker-assistant-daemon/data/beautify/sound-theme/000755 001750 001750 00000000000 12312451003 030650 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/skin/h_default.png000644 001750 001750 00000043747 12312451003 022330 0ustar00saucysaucy000000 000000 PNG  IHDR!xtEXtSoftwareAdobe ImageReadyqe<GIDATxbܽ{...NFN ⢵U>|b`1~ǰk ~p;9 ^eh pί#l?p&ز);39,в6ë? g3ps0k2Q V0C2f0?#G|OL1}(KqB ! *&( TT6,swSg1}8oTK`MIC*4$ ri@Sg@>Lūҽ.M+ )Nrp0s0X 2HS-131 eh3Ը$l\wON>'}EQ.w>-dd:D3Dj[ g_ϼ`t.k凟'=z>}@@GJG䤟F;+M,z'0ْЄ CgWuCRiY;Czi;$|̐[ð-RO`߿ŋ<"W_}0}5`?/XJê)3?;aMQw=oNtmARFA鋷)#d*E0(멛 UhS2#Oo? x mLOybeK}W/Xp?FIT\?%ۿ{?›Y߿1c (>`adCOO 75WÅyaޱӗftUWl_8{ׁ(!XLz2STfSf[ b&S L b Sce>X[-?U05')bvןztẀdȗOHA; "va& ߾@['xO *X6,JtV 6_y m? QauOb``Aq`U(ˆ5ĥZL%L38w ^@~̅:$˂LxŹE9n> 2\z6e3ìec8t,ķ\ D p1Ѕ`z6O6t^{Y:K?6GL\*[myW9TĹ?dPt $9#ì4= 9+u_*UQtfAk@>d?+Yrm0f*=Zp$;3Cz+C; .fs,(sPUpo1mUQ} 1eS1.)h̘d-:&~dp̹-4lcc\P>J)JЖ=Gdzε4ýws-4_"3|xxD~, g08J$a F+FϘ/ EEg =:$%W Og2IAMl{F2Ӹ*j]J 1rMr gٌ CquԴ Űy|5WՐ$7e:gsvK-+ ?npp z&Zj9k??7 vok"i 4Lc}̀PNؔu)sٙ3+ k]4-S#lsЭG(L ]h,V 㐰& 88ѻBR/!@yo; Q Jz7zn-&a":!ꩻ_XϛjT~qL.0xvеxepc p? :KBt~o^bfXhJ,&lu 3t%̏-qњ8%q~KK{:t 9 X{/q'`XS5ZƦA"B[IFv Pwj,^/w+xp{TIw(s NӞt{ yu06M+=` {{ |BBZ pfIGc !YrQ/= 1Ac\AEasxk:iNJ%5pXJ>+<G/M!pAk)SuA܍amX/ D3*T OŠl|0JBW!D8:XKJ G{O/o&.eXD} 3UeОwe%C X#컷@{xՁzȇK~:?anx{w@9a6Wx?D'@dgVe੦&Xë(Pn}|Bp*k5gi5;J/‚Ih`$(F7lb\Ј}N}vi*/=dZV̍jNY|+1BJ? ޻'TaW_(ub1ֲ6MkO/MRP0p'ThS)EhnkoT>QȠnF2ai+d>(..o"J)d BMuö[QO1P~8,tB nXXߠn\$OnowVuo^P,dA#x5-I .ՂC6yf+eY(3 7/=SwbsfDWz=w"7qW י% Gh}fIؕ;Pt&8ṋxU Mc H/ܲKI@4B}?DT|w)e~x um<}o"DVAphߖɓJk1`0#JˌN]xUUoK#B *JȈ (ˇAAd@| 2 P!!r^rnI ~\qs9&{^5TkUUU՚KVikψ&11JOh׮*^dFNc y,u"y)H+Cau]ןש`>.T2cQ\?:j LCii|sxpA.Z4$ ;-֧^MfǠ媡[ F'1_C188i%ޣ.euJ Q۽AU)C@,gݮq<1kaaC|{Q-л{Uh ҁ]b6c7- GE[7 $%ڟ|?,ք,b }RO,ۑ"ANI;+ȱ:r%) H/F65'"%r~8-קKk"[r6ߠ6r[_ʳUK^"- Vy{KIE-^rʥwt !m?vt ;!T@ƶTK&.T. * V^ޜx}tzt z=,[`̜򋜹H-Et59M}kւxm3 WfN^]g5Eiq$MMIx"$*i)FXMh$SXsoulq}(T/ h5*%sÏ]ION/$Sa|(P&gOŤgn)p|}4kEiwcE,{os`9W ݝũk&{1#J}~6D~ahܡ*Yd/(X{xss,_l8I/;bt y/c> 703 I$WC.֪ߙd@;t$ c\ 4 YTIeX V}dți!gwCImd+sFvMϚO3ozφvdH{?I^MLW=aw tsW@7Xf!aЎ,rFR*a줁!MITgswȟ<) ]Fӥ7LZA;}])?ZI'`_-) Ҏ冀@5htW] ñѬ\9LЭTӖX?={JC~P_DLBe )ԡk a%ΕSw_ ^^B4X`o ݹ%=Ifh8|Α r38]q'N&Y#Kt?0=7Ωg5S$I5н tsAx=4Gd[``ٹ=8UPs$ZQ_<:g8"\L;hu3x{;;DzA1U<!rtKk: ]A:sTΕ0rtgZQn'(Țq-Dv`JeZ'"4y( nK0&9|^xK^6.cXQDf@37/dxメ"wfM+mMqy*X{ݿVf YnnӫnoAHRsw7"SBMhlljb~ɞpW5\EJ,ʪTOʀ<Ւ+!Lj_ y)ۑ#su[5!aLc[&]k=]jUpܻ;e'pk]rTJN\-o|uĪυ8O(,>뼘>o '#r;3$^ntNj7ݑ9y{1icP-NH#4W[1NiTCJ)GU I653:3Hzggӊ.m`o4'⧴R 2ӦQΐVm6ki.we[uzn-+p&AIֿtxoe&[#1Q` e&H"ȥ/Rٴit$E$u=9-l[4m\O m\dT-4kH7HE*Q|&JZ˹* I i bL 9@9w`m95@w+d+v;e . 7J4mlg>&iJ ­ 4-~C$0&Fm Q[;bױ" "uc;5o<O>FuzA>H-Wj;WtE,m?1vgpfU[7b#XiSVg)H8Ofkb!W?-SDJcI16um gϿƊycQ"‹bZV?[}R:a!Yzːy#]$ T tטۭ =VBpF>lLj7ݩ}NrPgj^>&ѠaCjo7ټAn>8jh}cL?NRа=mӲƤ[\CJ8GF:(pݴXL-.zWBMSJǂz1HAl >ӊh13ee/%WI꠫-=#0G8+ ̶H6<N;*(J}+lmIk"C|l. iDxCuw4m)5<$<`ܭQ8(#,aÌcT!{S"K>1-~v ''X6ur9Jf :FSnG3]yV/#2YmBpᅄDEUgɶ)$snu~ )Q? 5FMBwK,ve%hx[2FF,5Uʒm}Z ͭ?MLŅ?rŹI<=$K.AZRXU]>ϬƱ:53w-gj($KgD%ixqX& h#&_hmc+arbh;ٲ xMLu OCe0$csm}Q蘄 vqDy"Ϥv.k_hWPBh4yz͒=S@^ϨFtA^}CycP-}[ҐHv\] |b*J18W?55N wo@! /,j#%3b1b7:qⳟ@wS0z=q}TD zi0rN$V&S֏ڱG2bTl8̂:ͮƣ7$1 *yzԴZ{$GdaxŤ_jCp,ulVµ4&}|L8%;lڶ|5 %:FKᐨ#{f ^^U%V^z>P}Cr={yjj [)%=؍D(րMd<,ЛCCDZKwFF=>gyoγxxatS@\YXoRR(faLu2jy7N[ m?TR[ſ_,Kd!/gS (9sf^1#Czz񺚺FP?z&Ka Іv9Cv^1 s#;V#:յ(;W~a!KV>@.ؑW!Z(iH EghHҥG"oAJ[V0x_N5Ӳʚ8!V-r ׳8YqK,:_M;;)+{gag<LEn #Bza C8Wa3Ku3GC#<4(^*G)#zJ ߂5ApPpaæ jF& ̩"^܌}EŔI!?M[`k2|HFcAx{5Qx줠XJL3-od;;wlČK湳9 ⊸$ 6 ܶ;< 8NhgD ZPB"c!O5B"(Z7Q/¨*I/B,` $rLy;T oD ؑGTktruu>k|P~DsSZaU-_,.(ND!\xX{chQFuٿز ܆޽#zPȘskx1)C'_Cpp**kȽm'%1&%u/20uĕ+rt|'2J85ˆtZ}Qg^3Uxz J>LS[" quTNIR=2;DG9_ oc QgqaKkQ+AXh#(9 :p.}(I8vfxcr Rnj[1<"_zgkjy}\9 I]B."9Y]yABT@!$Pϝ8VTyK-!ѢzC$sG8ģN"S55mM6rkGqe_]ԫ_q.|K1C1/',ZmZUW߀/Ԋ|O+^<˛-5:)6(:'!B3i1 D$D mGp~xa&:g\pEoB9 rZ6b~'xzTm3T^t.e\H i,us<O!~E#f'PRbD橕<ˋQu@./H@gnh6diDkj8ޫO?{3kL9oy{ s#uEe`0ܩ?_W믘/ENEdDTdka qK0/]93@I!sw8bDU>|x/*P5̵zQc)&T ]->?mGrSOmM?/dĉ /? xls,u߽1D҇d-n ]ܨf!V.vE 8@?a>.b;nΝ.aҦ-/hc_$tL: _3x>>eR ̾~0̓Gb`n2/}^Po,bUƎ[;_qV?fՎi"S3h}PEP- 2_=bH(}AsFX~gx;>E(zoo9/%0.TU",[ ~,ǾanR\C@{,^&>^n?YK- >4\ j_Pl0E?fe| %0~g?7p&vTdP-{0;q@Q ""3@I}40\4> 0$HViPz?OjZioA"< `i|T]VItx|m6O%3:8R%ىWNvakFd.E/kGlMX@iLiP^ (/!VIE5°b_}ϴ$fM@XdH:U ݴ}GV(wo9])|kQ:Gx|>#Q+7 層Ϩ0\kiw`ET 3ô `.8/oS#Ay^X ի~'B!saeǚO VAo( `E0ZeoB9w1L^Rrz?HkY/aSXugre^Pرqذaf'''gbX/wDL@X`˝(wyӄUuJ U'!XY) s33+ˠ.5ӆY:I $oaXG-6Y^"wS9h_^g~re^p(IҪޫ$JHGNc߅&R%$+uFZk2Haks9&]IaHEϫeQ!Rڷw=\%c1}֣sNJv)_Yxl^"+JHvhh.]H dͮH YI4]Ym3jcXiSV< *xz}v}zrUJKTL# AžpmA ^ :y$R X'GZ$c5Z-Dل= a$.Lg؄K*ݣȳ|Hd pz z[GrShu*6X߷bFs{0^ْːtW]s+*] )ڌ> ѕ|Y1дZ8## *BAb0{;CiEIؑU3JX'>2@n{-M㦴( ߴďSljRTV,fױ #x.CuRx6#)6DyPЊ><+b~ygIfl"N:n?"ŪKh ?r(7OY&9mhhz 1\ޛr)R|:'+@7 Y~ rKZ8RTU[D`4i7A~j `gPTc C;Kem9,83%ٚVZmuG"q9]ywvQر1)iUUHMM퓷p+t+Ե+ iWvGNN Z)>& NH4a}ybDw~[sR$$\ CAl 짹 x $\]Ulxac./vb !ҟ7V=IW%cM~ >-<y>5S,LmT>>?X@)L bY07j#-)_C:V*EzR($$z~{`l|x>0o,n2O8 > "mbltAY kvƛ9=Q)B5xOLM}9"#6aX\wdYBN h9u$YHH!u^lMb}QtNλZZE s Ӎz(m^FTl DdbyhF0iH(按WʙWx Y"n 7/ѫņ.c*c,0+`Z_EM0T{|~@TJ:`,EXsF,9 ^h9{ k2< wH1(<޽W$oiQ4T :$Dj:bk劰oy(N(|Xڮm6!kxt_oOZ#6" -n \f7vJ Tka\9e ;?򅑞ncܠ zsG)*5 '!]+`r5"Z# F+;lߑ|5\T:R%mW\4~p(Z8]݌4 9Sp0l?Q€kcx$q>f7C$Z;v IHt ,,99:INV%$zNr\KGmjjEۯ>I8Sӂ{ϠN5xGIX2˻|.ш^*'9מ,դG&9wJ[Wd-KW];β9:ۈ&G&EfAR[BڪGjuߑ2} "y)xZ,30̗UbIB#9.ZǤg?Z?XxK 9`~a!KlX6+eJ4BxT&kf ф,O2J1*6C@D5T5vold%z=G⍫x󳹵{wu\c4II!?wHП=#1mψur|ѮReXПTU5jHf|*)t"ס]g zq/I?N l]`H _g&Oaiԁ8\Pvf`fMTHYcOkm}P-D c>l^GB5v?>iЉN(OeJݧDE{:m|KeC Aޘ7iSeWQS_7|Y S"Gab2޽+8>ʔ1iuɥ1|"oÂQEM{Kbp~*|(3AcBtjP>6!/òw~+X$lk~&Sԝ][%rE>P>sEZsV@e>KlrƎWE2\3.F$<] qwC~^L/+!sodؐ:(:}d8"i3@vs|L8mt> `Rܺ]>yJGG/ok tf%$#uVa4W\ZГBPܜ;o*kzf#o&B!>3$\F@4'9MZAޘ;?{$O@}C?_LF;F 7)ϧ?";\XދUHPdk KLJGvsL"k N}5x}S]QkCG7{']9()M1 F)uoV ݼZ-H/xI2Vʷ^$aLuS?'>BBw;d!>Lh|IroI›=:/3Qyl ~$'&3Hlq:|b:2fhbA?Z׎(FNcְs917(c"1)㹱$3 .w+& H>Ga&TuCTzV%*4$Df5ڥG"5'D$!۟oDvwqG3a3`G)D.F?W~ 4MMM<4WwV???$EHBl0 /"!VIVFBBrssa4$!!aͅT*dtei**YyP,!q3icIENDB`youker-assistant-1.0.1/qml/img/zh_CN/000755 001750 001750 00000000000 12312451003 017705 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/en/logo.png000644 001750 001750 00000044607 12312451003 020767 0ustar00saucysaucy000000 000000 PNG  IHDR6RxtEXtSoftwareAdobe ImageReadyqe<diTXtXML:com.adobe.xmp 96EIDATxڤJ@'P=X"{WO>C<C,w Qzh%I&MJo.v3d4Mg QQ0 xxj.æaeuc<<'!V.Z)V[H!^&Pi["̆OӆJpʭi[Ԋ(B~a d~y}s(IR:\=+c eNsΈ#x?!Du==:uܸaIGߑe)5/h5hn$P?@Ë-% BBvfi .Y6i`j3 !X,v"c,N{$@,1BLwƸqK|8qKVʦ%( gtHN gSlѢeЪ/j?(ZE+jA},tVP1?q;sƅ:0~0<炦i@PE4 PCtd2A-Q%kFduS$PW>5Gv3{7ӳ[Hys:߄UM=9.jAV.rLgFņ58L-Q24PӋeMWo%g`0[UXS7@aNCAXݭ흗fKEm4!ͧAzًsZia].W;Fq|Y"Oy?OmΡ=Ǚa K*G-X%grB~Z%JdD⍱8)D>?L|uc~a1d4sA0S2 G'k|a\3^׈'$:%r'H!|$ DBkivR/%93z Rҿ>{yu^d(07M bv(1TqD.rh5}~Jjk.y﬩} 'X|ڼq^S EZMFSǏ]E$3ruaRY^}[%1-2lB<w$`7@ VXڬ(Ut CxʺTFvQ6Gf,pxy/m Nk\LP^;^U\0y&f|VKb+]039Oژ6(|Z-_7ĀᏆuq*fƏ,#cKt8OHDtft̀kсaVil*m}r=ְ2~@bs+U0H5\D^@uCNNdddTT(`1bI^W%0]jY6%tG0x/9$= 5וƍ_;Ԏ(p9a@Uz"R q$qvu3R2 ;0Ke3O+'āC qKrEHH$l BsNKKEDP#% 7p:p+]nfjؿqE+٩j訩o[f ,UAlӀϋl|AdsĐB0f|f@},c%1zf!ٵHm=a]:y{7=0u@B%36Y5NuKF5 9 ¬y4ijѳ;b4 VX[gWT Pţo3ճ/38K uO]\~~%x $C5$id[sH^١v0)':15=bp"}NĉP^"1]V7zd3q,wSn/f< Gb>, k o##xxMO5VkU: .>fh8%*%|'@V‘uNM':?eK\2[%H+KuNWDw }[F3,r`1<˫|6\ΨW=k/Gu δ7@g1۸0ϼxr=]2r։@߁, cO',6\~wBbWJ$rgդ+Hxr(rP)UX$º|9|=33+1%{`ٰrӂ2D ô&exe2Q,_bM,+v0̄Ԕ8kVq:y] =Ç(λ|bnJV4{~g2'Ȝ syv#g3#nlŇ5y_KJXeE}6{yq#}iv{}lϞ=;$ё?UKiDIi!QSK cVP۽~fVVlwW幝db)*ڦ2|z.O? @^߽[nZ x[~^TH+E S`x?D@]#˴ %{J-X/)N[ ~u>4+]tJBiTWW g <7b}1qtk?57-wz_ȭ~n¹{gv/^Y\\xeK77sR.}(3Q,Ǿ|6̏'"w|h/8B0#ɗA^,@5'[2x!JC.3g}Ax9,#C"dQOid#{Ҩv(ʍcks;͇AXpm$HQ fxu}zK뗞G6WD4UwdN*}`G"4yŌRDT&Fi\9Pw|HCtmd@G<D︫Bué(%!3Ri??բ6m H/؍nֈ|Eo`Fk7qoΩAguzi} Yřهl9SKKKӾMC!#~ j7 zN{zX:l8a. Mb?004 ,v[Ȩ<ϔËJS0I7q"*ȉ.hSe(w0P<Fu:|* x uzF lC9|t./;AoEJ-577C"zû'N\xniYg\ZM3߁E?"v̤Z-coظ[dCLIO#|/-qAHїҙᠿ!僰\Or`M cm!LR@N1 &@ Eϳ^Vءv{n~ĉz5f7O>O-n:39v_@[!{BZLghMhOhwfX_hRpJq/J.4CT+ +[cXgmG>&,$QYDKP$ EFG Q'RQC#!:梎و~(n:+vw Y "jdѸSJQaAEq7U\XqoġFDTEQ" Kuҝo;￙&CWj{۷9Y9 )V c#Ӧr&[ڽ{7z@ '0.UE7"{qxQ9-ק^oLO֎h4ʠg/ WOqUBϐٜNM>.PZ =Nw"ox%OO'SjyN xA%\9jԨTÇ/ᴖtIIIc*h5QNJF7QƬN~7WU pb KjuA$l6Bedߨ5 ` >tsx;W&y< $JX lӏZD'9vNNVZRc ^}wbj:?!g`s.w0qGs7Lԙ/k:5nsD#JYii-O9&x6V .$GK&KOߵHb8+_hG܋F 9 *]r92 ҟ !Z_gzxV +,Vh&6qsY zh9I0k ?seB*'N|~]i2rD4Ռ=rӪ^pwCk*T@s22q;0h$$ `KHXfWaJŚ䄲6U9&Fdח1V=gxgѺ]0wM. jY̑T0lZΛ۶mzp2eDŋߕ5>l˥QeV~ǟ9;?nR0~_r ~s`7g]y>p" f`U!&bP!),ip,,C{$DB,զQANBezΘWGzM41FU{]>C-L8ʧt̟MbԱ;O@4:lXbܻYgYli!:pWĈ ?={m !q (x$ь#>7͟piC#B',\,jgGGH7E{ ZSpډ\MmRNe. Jq PW&d=.ȮJGk4☷wjuf [.\&RK1Ci&wC/{[~Aqhg;P}s,V?rywJH2МlXgRbKʶN^k8R.v4EAmdQPQR X*PMd' )̫et3*f#YP7Lk-ԭcdI<^Wr¡cC $<̕S!-ZWͯ r!1z m͝ Y~_*!,aJAtvBk- M̆  +ڋ,\./KeFd<42q%Y% H:)/ : єAd(o3. [5Y>HUϹʂW3 8 4oN jzz#ӫ+o0'PR ϫDS`"79z3ɭ`+w1hHtT.|iQٶ 8F5K9/,‹3B+A0J̩x0xcZ<8 X =?+($Ɂ|FqL&HRo8+󥂠%Od`Lx1~)b*,zݙٷwKl0  l,0OFm@9*}s{" -v;-⳾@31E"_ O`Rh.E%I+z"2 .af̂= UU0"Ũjg1uTsN/*A2t4%6vĢ7@/(J7JP`+haĘ"HdKCFqhNt;ꃧ!0۰LP 1'Db2Dh?B(_R(ƐߞhY+Ja;TZ9t GGSxPǞE29c }M2ڔjUnݺI61eFP}_؊5` w:܁!vۯf-z2w?t`/> Db1ǡu,۟Yd؉w,T쓍'LJKŗh,Y)W_˪ +Q rXea%,| 'PjŢCxrxs,d&}no&`d{UM_79&hUK &.xQ3g=$cҵ~NWqx]a(W8~XD3撚T!2Xr6rxJwQd_k:1W_KWVNu6~uU(xœrƮ`[8bHM<4 9| x`US S#kK#Q6n2 ;& ~eYFK~7ons+%AQy'^Z,4~a2adUŽX֓PGV̿5bZ SSQOV&PiQiVؿ %a$.4WX'K ߢ ݓ|g}L+]]h&g($X 7^{Sy Cc,hCi5ާ#Dz<#̒}艡9`4Cl !WCf& ݨ4IL9`2i0i&dmۺǚ nS@z}oĥ1r#aʓZO55DBQ-Zt￟+k.!%'D}w5yQ'rK|; xUv3gԻnb1*@ZK"j51F)b(HV -X0V\?`y*>d8gߛuPMŌSS_cgFy\|ZvSuvo0)k{OwOϾ2,#h!! ЇJ5$(.F`$fy1FqATDuaf}_z9oP1#_UܳιI2j^yOuN(K{`> : 's-Ql42tz]V,sF#H47tw766|~Ӎ} 솨z <@8FzԞ(RSi/J^/u;p?6"N9ƌ\h&L,ʱ3D#,}۞Z^fC,E,U $h`pM([ &$Ŝ=ۙبx-4'fQQ vY j]A c(J]R7 2?;Lv%D `qgLb"!G*yS2a_>']}HH/jO@pvFcǎd9xeeeM6W +Vx㍥ .Ͻga:K$b6?vbI?∢[~}74Ow옚9f㷈`]St(b=INdGK Z^~ ǘjje+1z6+ȜKLD>Z+mm n/LD3,S#Gބv Sرcx?V~*AHU(@ęaGF!ki'VmE0gNs;q ~e/wvFf\ws!/%^g7جV9/$;T>7.d'i=m yn}qFlWK?$}/h_Z~^PIQ}j.u{U- 3iH)סJCjV:E.v\i XcSl ԧ+$qEyp@ɜ/YgNTMqPB__K3Dpۭ˴-p嗿]v>C$&;!1/2e ,;3P}yb]{FXGg<7SCvzڒ-jf˯g6L>BKFf5 ;iSvH+_#C_~Kڴ*QP[[{9jrVzQWqڃEB5|Jη?ܒg 8Mǎկ.qeH1׽dV8^~=b-B;.#@DAbPTUA_91%<8yT=deHg˿5|mB`A\Lh 0`ρϣpv {Ch'B`~~P2?Գ>{;;o>>Y&L8'$úuYxq9wDSW=q('̳t,;'g!ͰjOحm1cR;{XhjFA{ Rسt;l@`5gΜ]NNyck']8z;\~mמ.Rz-v}|gMkkf7[ 5av`>dB~h7\+T׀UqɩN 86bz28y 5S8ew&IK u(B.,RDA/U2\ˣe_ֺY@ \?'oGV87<6J|$/aj}4ֈdjHwG}\oXJjN6k'ӷT]~#MvHu+강dAOcߙ4%&BFQ?|_TFuZ8ش/߰t 7'@]m=ՁxlƆ$.gv/wܼj8 B{e>{ }!ܿ-/[gÆ^gxCp_Lg_pfR5`R#@[ZTzw:"x=D"SI}aHF2 U F-K+R # e^.xQJv5gf4pn4߻qSrݴU/8~d}ii.9I%Μ9l0aA)uEG Vh$Sy\ >ڴy ԺxR|a5!4F<~I4~ t6ͻiqz֕rՕGip?x\5g3G 7B-M[y?Ε;R+>N_AAj -k;  0pR*@`E p1\bO_#~{FBO3H,Á}3|w$ dd)lo2^X8>sr }w EUN篎C)Ju*'ґYadd;4=}ύ`1`Afy?1,-I٭4N*oK￙'=-{`e[DK$^"B*Le闊}U~`Z<`WVBx-:\8DM?> wJeٲC,_{(&@}Z4&Bsqr9; xi@:%]T/E  /J9HQp@wcFd)UunLUֵU_Xid=[=3˜dSg?>|, A%bK)wQTcw3dy SfY K)N/G\6l ? D* 5=pR$k _m|IԳ1oy^og[LADlAu>ySrVQG$*aoa/PYuR!1ܒu4,xx~8;ej~,WR)`©y`3zl`$&s`rzp.A{!xl/D݌C|^OV6y*lBggg_HQT!~_,#Dy w릕ܴ:0J eYDh7hsh)^ӑSOv8uGoPf-\׊ߣszQpEb!^l; W.ʙW1 KK~Db@z1yvɊgAކF+VwJ pex. h٣2tvxIdDuDŽ0#,ci%"oFM0*4 O?Z^>Qs(quSSS׫WAA!A,:2o| /D%IxI!&*D6I?MiE eJ%P&OfM6\/8#0Y`HmZ>xާsM֖fy%Y}ӽ,hԺQK\u1QxIZ[.T.VӪT^-ʩ l-7"_M3^dHNI10Lw'[JLS19 (怜J ߟ$.11(VWW">5S' .n 0yO=yta6iBApoE"vLoKSFi.{ߞݷΟ5]>-]m A+Cݝx\q"a}Xc\cX`p-ɲt| ~Ƀ@lf4k¡vr/^cD==ad *}wZ,լk Z5'ǖ.:a;5sژwELѐO#K+!F૕muLUTx71x? ƋAOgP}7Ƣ ۮ_ZTU:(ۀpRRRL6l؋vrڴiWspT!8f׃f ueggOHHO$hkoLOkx<" Z@0QS]E%MQ>hM/R䞔y׹7vzHH fΊڦ(W<.p$BWgG~WWnnjӠu'Vʞ?]YYYʂ6lCmmluu[N?JE"j=ޛkHriWe|&6y^C6bXnG{}Ngw1K"O׽fݷ-u:txcVjJjY6QOrzjG{~xf%ܯxi="Ig!62ݡ.IQPs?3yF7Aɮ$F,9%h=8C6٨th.}VYY䏤^I'Uܾ}3gn\GNd1CO[cǏ3{6ьiQyvcC#i啵7ybnWc 2ǎn_-H }gp\\\?waFοz1CsCI~oNɂnllZl777ӽs=C_|;:7G<pޱy-;?{q\e`]u2g{Vl#w\Q͜NxrɄW"T|O;6xԞStQw4Ai0aE4 ia_õ1gah{`Ѥ+q(}(Ÿ> zU |L= (I/q*0hjB )BgYTI 8svz3& h<|yЙL>OeKv`"-YkIk(/=^Yu#}hK}`ϟGݤ[v?<={XH$jqMyEO>$$g0#>ƽ4ƢK 8-廷roul{ 7bIHI+8Py#5uys>V`MIښZcxw6neG-;~qjpVjewp`˫kwhFh  l^w1)4;oH׼[K7cFCG Jpۢ7؟ W:a 6K14NHS)AW+E@rh\4<];a] rPiՠ*DKIi&~r@.*E:Dt7lؐ}5TDAӗv ` E&?~V{c_\=gtoA,UIm3s22.R۶^GWRրc_=tӋ\t@(g"otϺuoᆭ\ uvzNy@=;3;+'3+{m[>yW+GDx};e b.:T(j-~eW]}mTHʰ@P|Ur翚+Q4}w;kCz 3n=ԉqbZV3XOgAj_`," bI1 >sqޜA>܏bբ0č (;}`'?=`d-TE_Oȱ^}::Zueee(iGּʥ7ݴՕhzWLJOj난T冤xQw~}x!TPXX|jkG`1[;v"Fi"#IK/DPD5Mz٧xU+CX`Zƌ}} >P{Ȱli1CՇ\HS&}[^U('/F`+Ou'kw#h ̤kj&{dž߬532 PӠkj$\+7O!VZHt(; 7v[S1_Mhdo+}ƒo-ZJF[qDڒ!*DCjQ,qz< ZA\{l׶Xi$?3Pg䬧CGZ3O缛TҭSZztjZnx-?vÏNλC {iyov7{f<|mƍQP ݻaƥ{{4wӋ{p9ɷl6{~`{y?!\W#:[ 2RbЂV/*Ӏ #M tzih!`B(J9IA+@w%-8I_STW_l0H%sKC/p sxwS  973&tΩ1\2<\UtX ~*W8N;9x\Erk92A]n@ Y\k`ꈊޡ:y{}hW82 Wɣz,f߯B s .y2Ng"Zh4@JԸi/qd:m5ooހS{%7ZP8庲ņqV6^kVR%.ףNp7jul`WJ~`OQ ky91*gXEU>{)6<G7Z_׶Mg T=誨Jcs Vݿ2`N'T SU?*5OjaZ^T{ݐ C6.:WT8^^ 75x^φz/Į iIENDB`youker-assistant-1.0.1/qml/img/weather/n18.gif000644 001750 001750 00000003502 12312451003 021440 0ustar00saucysaucy000000 000000 GIF89a008Z0N.P1U1S-M3V2R%Af&Bg)Ej3Px8U}9V~2T.O4V0Q/N/M7Y2S0O8Z1P4U5V;] >b<^7X =_$Bf#@b'Ek$Ac%Bd#=^(Fj&Ce+Kq+Im/Ov'Ab/Ou-Ko0Pv/Ms1Qw2Rx/Mq3Sz3Sy0Nr.Km3Qw8Y5U{4Rx7W~8X7W}4Rv9Y7Uy9W{Ig/O0P1Q2R/M3S0M7Y1O3Q6V2O3Q7W;]9Y5R;[ >`!?a8U =]9V"?_ ;Y)Kp&Df+Mr'Eg%Bb&Cc-Ot)Gi*Hj(Ee3V}1Sx2Ty-Km+Hh 6N3U{6Y7Z4V{/Mo-Jj5W|0Np7Z6X}7Y~/Ll2Pr9[6Tv6LdTq0O/M2Q0N4S5T2P6U4R;\5S6T2M:Y1L>_9X7U3N;Z?`@a<[9W=\!Bc>]#Dg;Y"Cd ?^$Eh#De!@_;m4l83O1u˞GSDxZB {A;ʛ;!|DFd!MiŮ<|sL# HD4 H  40 "-HBpz@N04" ZJPGG5A5A`?,IBA ;youker-assistant-1.0.1/qml/img/zh_CN/title/sysinfo-active.png000644 001750 001750 00000013000 12312451003 024471 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<IDATxbO,_aLdxC{փ^3𰌇C{$qs0([~OV]3,os3\a<@I 2 $><W OI(IKM=t$A^}uۏl ??+CcP`NG^{,kop<`7-)Ư_Dq?bkٹ8]}?C=_pE;/O}*փxYkO"?b`dffғf`` r?b,dӧ\BPAT$7ŕU O?߬O[ ~fE=V]VVgء \/7l~#ĸsc["#Q>n~@h)@.0 g;;nZk53U*3(D / "( *D(*VR˟iwg?tN?1+>x^}E~f748GZp<Ь?)]@iPs$~LwLE1UvnvT#偠swTf4:wIPȇoӓ1 p^܅O(2S 6D%jF&r#)j qZd7xEhfUIR0b(m.A'J4EMC48U[mTf;\gm|9,*ͱPےUO{*C!)]>|m(6cf[2R֮Xhpך\hT9]Ec4A+ /5k\|%J3<$B);+C/B@o ߽dX,+y"8i/E2ȸ#N[CA 4?FG"6yyu, j},IE@oJj*wxFtZȨO"<1!h0 9Yr׎xY}Sؤ]0Eսsn˅6߃=%KMxN>QYdv,?s=q,>qqp7ٛy殼H.E#~7^&H:U=2l{]uk n1( sL!**FBHF@Q"NL`8@Pa0P ҍ޶?/iwso$~O2  / ;zNhq]$^ 'e)d0>I w7mooNm]hEq^ DXNZKr"+tN*4V(Vu o3pJ,dպo=orN:{AR⿒k]%i1; 4m ES!D Ll9dK\^vt0F(Xvlwd~ EOnd\ol&J*..yyl^d&:\uKh9J¾7ek_N !W"4% 3:Vտ7{t"xp]8 %Q}u!ᑫ_QH٪9~?mW //uͅ㆙ [іS m5%yIG>0Wmd\zx ͞VÄ~s^H4 EQymp]$)""QprW@9Ye}AAC)աsտ4ܴ/_{b;m"xcBƏH7'j/9F5ff⫓E@/Rz6g֩gaS>-yLL?9uW4$i~@9@$AnlH$cp*|HUԄ,I?\yۻaTo=kҴkZV8t^-ٙQzd9^ $tt"'g1eh2ΒWfZ9: AbTj!߷ gMAQ$(ri$ѕ#! x^NJb1x'HVgY/Mpq\ם5̩ѹJCB&-s.֣R }MƏ$H+waI)AYƧ>ݒ7R*$ty?^H̓|޴G}`(" Q7yܵ+VVzoХ|$i$}mwg]#qb;NL IHBdLb@X ڮՆ4Mԕ !hmk))4@ ?H8qر_}w۽RH(#O:E|~}!{ٯPrv0٘l:0MKN,S"uz84 tcAF^po8s[Eɦ7*/WU_q-lZ4~kGOjEI潵 O]9p0<$< *RdF c`0\aD0+=b cL8& <:AYuk@uO@Ǣy pdRk.8F=@MA@|o|"]'/ֹ<㏄|tyw|fIil_i1'>׸m]J73S)#_ UmR_ xRj}x+2F3+CTxeEƅhP~nb̩jc;dei*ˡݵ}u;N*֦n./(߸!\Iksik"E@B ,KgbB0(pσNy_wt&߷c?55Da!w,mp[bSNӥU =?mͲXq˘gtxiJ橮cٔeI?-;MoԩIq#ږ~עl %(Ϣkg5dom8#.|?iHܶ^^]]e{}0#GunVy3SIRFf>rb{6y~KdEE;Cɽ)N`G9F\ _@_w *-PG٩S5\D7n}{:F~z9zh(Qx4ʹdyh ,DAݞk{3E>&fu >c>C'Wz%,w[UM._/(tڠD,`vze/M 檊o(ɳSp:f-˚BMlA%Q-|dt\0>CџB"^O.%嬰&$k[u3'f녔= @(sw@f#q`T{̼S~_ p|$@Bmʚ;cSJ܋AT)HG]\'&'rJb0~'j&C['*H+) My`JO )Je`ʌM.9$7$ ['nM(IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/diskanalyse.py000644 001750 001750 00000004520 12312451003 030761 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import os.path import common class DiskAnalyse(): def __init__(self): pass def hundred_large_files(self, size, path): mypath = path final_list = [] if os.path.exists(mypath): for rootpath, dirnames, filenames in os.walk(mypath): for filename in filenames: flag = True filepath = os.path.join(rootpath, filename) if os.path.islink(filepath): continue filelist = [os.path.getsize(filepath), filepath] if not final_list and filelist[0] >= size: final_list.append(filelist) flag = False else: for index, values in enumerate(final_list): if filelist > values: final_list.insert(index, filelist) flag = False break if flag and filelist[0] >= size : final_list.append(filelist) else: pass return final_list def adjust_the_list(self, size, path): final_str = [] tmp_list = self.hundred_large_files(size, path) if tmp_list: for tmp in tmp_list: tmp[0] = common.confirm_filesize_unit(tmp[0]) final_str.append('<2_2>'.join(tmp)) return final_str if __name__ == '__main__': obj = DiskAnalyse() obj.hundred_large_files() obj.type_of_file() youker-assistant-1.0.1/qml/img/logo/Manufacturer/PIXART.jpg000644 001750 001750 00000056473 12312451003 024030 0ustar00saucysaucy000000 000000 JFIFHH ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:03:13 13:25:46]F&(. }HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?}ѿ~7_My"Jů}ѿ~7_My"I}?U}ѿ~7_My"I}?U}ѿ~7_My"I}?U}ѿ~7_My"I}?U}ѿ~7_My"I}?UFǡ^vV@6dv@/ǀh7o?Мt*1}>[?ދoumkYEGX[?)v^߳vQΦWТtۏiUkmf(nõV]8url542}>7aM+ToΛ1E@,kCֻwl#@Ia xeb,ͮ.I*-?u4o@ԍS%u]u|OsyrX=Ċ,gfob1.ƾk'赩OܼӍHvS֏-`S-*Tj#CKòddexSr>׌:afVuaerCӣ#;ҺvUYp ΁w_Xz[?Ls TfHQ&4.?sY1dc! ч3. 79k\{9\.(c?֞i~gˇ$ rF#uOKQ1ϳ\G?zDȹZ% ^"5zL>ҝ]0]sdocK {Ҷںkec7m.cK]>[/[_͟blZuMږ{WNpĿ7VyM f_:l'$k to]Ӻ'7ن)}h?YnmX\wnC (lȩ;bw??+/?p敜ӌv241{|ڌ8L=.GlYsmq;\oVο}$x(8'gE/؝kd6Wh:/9I˗&Crx÷ 4QkmbǪMncK].;~^p2?)~_'ٳ"n^dzH f_:l'GV_Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$`Photoshop 3.08BIM%8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM9F]N-Qt]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FL }JFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?}ѿ~7_My"Jů}ѿ~7_My"I}?U}ѿ~7_My"I}?U}ѿ~7_My"I}?U}ѿ~7_My"I}?U}ѿ~7_My"I}?UFǡ^vV@6dv@/ǀh7o?Мt*1}>[?ދoumkYEGX[?)v^߳vQΦWТtۏiUkmf(nõV]8url542}>7aM+ToΛ1E@,kCֻwl#@Ia xeb,ͮ.I*-?u4o@ԍS%u]u|OsyrX=Ċ,gfob1.ƾk'赩OܼӍHvS֏-`S-*Tj#CKòddexSr>׌:afVuaerCӣ#;ҺvUYp ΁w_Xz[?Ls TfHQ&4.?sY1dc! ч3. 79k\{9\.(c?֞i~gˇ$ rF#uOKQ1ϳ\G?zDȹZ% ^"5zL>ҝ]0]sdocK {Ҷںkec7m.cK]>[/[_͟blZuMږ{WNpĿ7VyM f_:l'$k to]Ӻ'7ن)}h?YnmX\wnC (lȩ;bw??+/?p敜ӌv241{|ڌ8L=.GlYsmq;\oVο}$x(8'gE/؝kd6Wh:/9I˗&Crx÷ 4QkmbǪMncK].;~^p2?)~_'ٳ"n^dzH f_:l'GV_Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-03-13T13:25:46+08:00 2012-03-13T13:25:46+08:00 2012-03-13T13:25:46+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:b3a0bc81-6ccc-11e1-818a-a659f6cdec7a image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?s}u_e~ԾqOsY_z]{}u_e~Kd?%߿/=Zh.?>~2{@u?4^gc?]W_R=g:V? ߿|Ld{GO׿gyoGUWԾqOsYbէ|3+_8',^sGAuv>[c/~ؿi9; -1?K?׿_z]{}u_e~Kd?%߿/=Zh.?>~2{@u?4^gc?]W_R=g:V? #]&~{}uݽu׿uG=uǿq׺RC+xg^oΞ}{Ekӯq{޺_#Kބ޼tZꜽtx6"+0cqMeK;Bt1V|hzbzYinhOq=\_W|*=6~|ij:,Y*|cH<{ ϸ󒳼|?ӏ=kFDlZJ.ֿr FjM(\'jsuBO| s#Ro|_SwmeMuE Jݕw,o1E2.]UDXe$0 ob]wܭRHU֒s>Tou\j*m)]rWK+b"{!ݹAedq7CXs\+\L+e,'?L> uɎs SunގjTTPo޺X}Z Њw#\ͬNkvƼI<gY63FW`w?IGR#qn({"L6ގ-ZSp{oɾr3\nh!5)ZLk.״K*}2 ~,dvtw7 >cfo R,Yj.g 5~x۹ꡔWφQW5fʛͻ[_^70GV{5q0׊GUbNR)1S}EeV6)d*Aos PtIZ,b 4)Ǥ.7p|X]O8lWgisoU!cOJZ1Y?qXklT8+u5)㪘64Բ% T$T۫7j1ފ˹lIoUBk¤+)e2n\, .'vXF0?ըݷ^޿dg{_nbOmzJRW$_$U0tom{ok-psh_L1#, j+eh0/q*@&JyҔvO *wG 3.micl;V\vA QV! ;o[wÔ%[k:K|L_ c'u̜7&r.۳-Tg @Z#($@?g..߽;ۖ6M.Cxm?Oez3+B*̌551Ԓz=\o\'?6$k/n`֏XNQ)gϞ{W7ɋa̐[p־*ʅ,Hу  p|L4?7+Kj=nzw\Jד{jmʼgr9ZHE<f{ $^{y-ٵquy<*^B*WֽMݷ }c3191pF3Dn_'_r6+?.Rl~q`ZFZ(ފ |sѤkji&J Y^eΗFbWR" d* i%$itfo tm;O 6L=^wn枦H1RCΝc[~9;mX eH,%3#Du]5 |~B]^=ɺfߔMǿ^ž+"jڋKID%gl~{;^%R4报jjkP8O\"w՞WrQ42xE+F*~X|o=5 lnjrXܘe>#E,㪫JQYԧ\ g7/+{]]81-jޣ*pX wؔhAP( =QiPGӤQpcyR[)ZeĿ{OnOtQoZk^%l]Fc#G-UDP($>S4 m#(KOGT]kktnpS7Eb,I2?+.?Qhryu6xb(P3)a{o*Yr_z>9y{qʎ}eٝGK^ثlnFlU*,!X5TUr${}}oi%$,bh0-:9nx6{yf[u ė4Z/-ovO%[K ]Gɦogu^fT(+MBrF+5 ȉB7|ļWvn/d^vcTiZI{fw7ncAwwyb4$ +/%ٴK6%F?iu.xq +7_W(A$8V$Fo|}vBm eQSR|_+{eϴۨ$I(eIAUgBT+_勴{Ǎp{-3no-2CE*b9ћx1LBQ9R$b.H9fٹzۑjmv/(TW̓\r}zͽq{|[ZutVƀE(ƴA:O|Q[ىWp;urM-'UoTSeRdN2I2YFѯ'wc^eߣzw qw+[h H49?.ϻOw>qGj9w<[f [˵["LU.CcӳĔ[yTW=\C&'U]c3JUTY7&y] ݯ6;[Uy$U_ԨBxeutn`VﻀivU6KGFwF.^dJ PPuv>M3=]YpĂuW\OtURji*gWe1D5sۚn;;2$-lÀ"UQ@=s}/ܝJV[_"p$KokgUI(&I^=>g~>sw6l dcyӚSA-LkV"dIur=/fܛk-,xʲ R$UW%}~kj'ݬfkigx DQx'M;Xv=˨ZTBs6;]C"4{|T] F DqiR$&=J;rܹqF.#AE@j|"٭O´cNr_S7~䟟A?˯|Wyc&6u_Va2;z+4MG;֕m0RB I"(yλن6nw.#FIg4Oʧsv$yt4 3|W>&o ɻM{>?1YJ|WNm^%)r,<.:9֒+#5Erߓ}=4689M|ztgg<ǙZ<?@1>}<ɞΚ"isuT[Q4x f>5>Z\ wQIuy?2kq/Mf+Uz*&i)sP@?q߸O6|UʀөCMs_3W3n_Fx|P^]xČdd [klQ$fq1"IEJ^WMV[Nvt{mIu7/6 1ny"g)|CAzT}RT ~?c3xNu_U,;۶4C#vֆ2p}iܲ @'$`pM2}y֯d[O GO7ַ<2u hi-HkJf`k~JuϐU ڍM՘L-M XK[ }߃]ڟn[ }37k%C&;uU L[z?j9uϼqmšHN>=6l[ {;SRڕv㯍/N\D2 3嶁$b{{u۹?d,Uuemѵx0m?ZQ¨ԑ}Rmvӳn^&(+5D Q5Ҝ=8tY+#Qjk~XL|5[[nOYeGE2͕T韜=NUYvKIXBDXc4wOwm9p'B.e?JS]SݽfuzިX1w 81#~܅lr,r[iuZ~Qt0/d{;a^߇mu_km:}~FwDrTɎTU\Mk)Ovo9Oewъtуm sA҄)VI~=Wߤy{T==Ne/MKl T|#'d)d#̔{2>[v9GĴIy˛c6$WSAhbϣ/;,8v輼}]nmѴq5jvl: v4ΊU w~ܡm.fIЉ&)pJur}ʮ9Vk6(U5L1m,P5DQF ANK[qo]y ,Xw iǞj<ImcMm$ԗ\ x%+\t'=mpmv3G"b8 OˣÿW[ݫ{#v.I smi4YbTM+V:y/-O27g3r(tt&,rW(XW$H&?0=QWtߝ/SP:S+!@8Ɛ{,F5ѱXqƁ5P@0:M|/^᝙$k 'bvNo~?#Y&3rTÖѳfHWpfȥ-5-i *~bu${/1u}C܀Ȣ$iyj8V{+(78i.T5|t||Ãjudufɟ=-2[wFf/vUVMA7NȂa āDv?36qodWut *蠪m#Xmq9mRTՎZgtK̲n  @6}H{]U_?(A]?޶\/?*eſ ~漧ѓ.?.?GklT>L9l?>v-ٯ? X'xsD/j)NMl?gUіp@Q5MGABo&mUl߸72?o?>6|cUGoa@vngIemh8ifOlCwEFխk~v>ُ==LVmHJ_5kU? ĒtGk1v/9rb/5|L6ſ+)?3At:G*tk6*_w2?_5@m\.mu?>~5/'ω(_={T߇9r`潳ʠwfR=adgGا]9;ͳʠ OO3#^S߿MfeP}{F['ߺ^׽u~{ߺ^׽u~{ߺ^׽u~youker-assistant-1.0.1/qml/img/en/title/feature-active.png000644 001750 001750 00000010521 12312451003 024040 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<IDATxbO,_a,dx?믿[[v<gWyah~O7g _Г_oSUQ rC438g󛑙?1 w'˿"/} P{6Y O:,/_~3+.Xz[*HzmEa_`{Y>,qƱ 0S..g{H?, OTԋ3߿| (.k f6T_ £v~3AQTE#VwNitEGY> 5ǯ'H9G_F^[c4/CrZ+'/j/D8 sEq?z՗?~0ED`Yg~F#,ji_@{k@ԁʷ7~n,}^S=-}4qm[w;g:uNM]_'j`$eB0/跠"A !*/bNLK[-4fmswO~q$x{RL L)tu *JJŲLtL=LUdpj) Aw.,[SiKHBDLEu|P տg$X1ZǛzGVl]3sْו.%M@ 5(iD,1'뺷3Wo<6 %/6M(S *ckD6>u%mA }K0a( [k ؊»e _$Ĵ^B`H@tk:( #@ktFvx V}!wq^i x"Bj=WQU7rq+F{jb>lvy<a*bKAgXDD2A󣀠d)1m_l=iCGmwt6hH+Po6+ XMpXK¼f-$Q6[y`~־ZrYIcZ"( $nWOХʟ<'wbBrt{ jrx4|a}9gQ08( I-{Y[ld8$u'iivM/[vU'm+զMަ xioE xFBˠ:1X'ۚn^47;v߁jM2B9ґ>O+\sC]v=VX 'wnS @ݴ]Zݿ\w_t4pWJ|z75RJd*5EQõ!-%I*$zϷ\poI>a ݑ434y=q dha^<IK39v*jl.ye@vfߝevDr N:Hn9Mi1_l{]ŞUhaN5;dATl 71@ TaP eJ l6﷟U4wf{'aф} Wgg'1~,PRL,Q96 F$pLQo,snf􃙐jwzRRmz 5:*piusܯؗbWu.7(-5<ҁC+N(uV=cj=g{,a E&] ɖ~w+#;̄7 rr13utZOd"Y\xK{rƩ}-胄U[E3R*Nɴf+k!#mv[ruvy^=Q:Ӳ:O-f`-~}^XR0`~!OfJ)!xo`dtnMc-\,<HEڽG[mGCޕxFԸP?"n yoQUQe{03Ӗ)@)j**B\EaLeL0*MEL%eQK0& Qv Tf(h{;ә7{{N1&o{|{~PDY;IV2Ҙ`*0p71%<#)&LD yػ`DfV$UꡘyE5la"`hZ ­Ǐ.?cߊ$ <'0W^Pܘ̵&y[#J ͢Γk_XErv\ KemMÈ@sj5TZXYjvo07L!MN?ü8abF[{.ɋx_Cn;^d #pEE8>xP~6{>] RRwSƄK//NRퟠ(f&jfSr5aYx BWdIŠQC5G)uM~.i:lV:2k|3d k]m Ѓp4+"!Hm9oayJOb Aȝ˽ϞH L:o6?WOTݮH"L(~tb"sY٫p \Ҫ|\ǒb2Ǭs]ZƛnZ3 SͱmƺCЯƚ{r=ջ!*XR}AS.hx<pB> [Wܶv-+5,CARJD^2>=7ٍ;54v:tMYnRY})[9hQ^bO<]zO\)JL1 vWܪZZeX/ J9/., CHhoM_2[~5>i`\Dzq&K3k}zaƌ`We@'Ai@nRT(F}MAԹo^a3+@ Ij9@WGQ4 w{bc- kACw?h /,WP&GL,'cfeDvsG\os|8 ]-.ԎdYU'&$ GMB9e0uajE#]xc?*!9H8qE$ԫ8QAPCMuXa ^6K]^h<۳B. 5mxjwk@$[WsBk$u}l+fTEֆ W{ܨe\aZh#Q>Rؤ2ޞ-O[uu1"Sckrsu{sN'>=6x 9q>Lwa;mvK,DؽJ( '&F6h~aVh6ɘ7ASNtC[D}FCo_l*^0m^/H<;1Ao{{Y-# S0WgSSf.XY#œvi.%9m}(uTfrÅLXK}BHVj(s"ӝ\ O&Nx@+-d0U'BOKaoЛ 6[,t(MqL톢Bl}?lIENDB`youker-assistant-1.0.1/qml/func/common/SplitterColumn.qml000644 001750 001750 00000014327 12312451003 024061 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "private" as Private import StyleItemType 0.1 import CursorAreaType 0.1 /* * * SplitterColumn * * SplitterColumn is a component that provides a way to layout items horisontally with * a draggable splitter added in-between each item. * * Add items to the SplitterColumn by inserting them as child items. The splitter handle * is outsourced as a delegate (handleBackground). To enable the user to drag the handle, * it will need to contain a mouse area that communicates with the SplitterColumn by binding * 'drag.target: handle'. The 'handle' property points to the handle item that embedds * SplitterColumn will perform a layout update to fill up available space. * the delegate. To change handle positions, either change 'y; (or 'height') of 'handle', or * change the height of the child items inside the SplitterColumn. If you set the visibility * of a child item to false, the corresponding handle will also be hidden, and the * * There will always be one (and only one) item in the SplitterColumn that is 'expanding'. * The expanding item is the child that will get all the remaining space in the SplitterColumn * (down to its own mimimumHeight/Height) when all other items have been layed out. * This means that that 'height', 'percentageHeight' and 'maximumHeight' will be ignored for this item. * By default, the last visible child item of the SplitterColumn will be 'expanding'. * * A handle can belong to the item on the left side, or the right side, of the handle. Which one depends * on the expaning item. If the expanding item is to the right of the handle, the * handle will belong to the item on the left. If it is to the left, it will belong to the item on the * right. This will again control which item that gets resized when the user drags a handle, and which * handle that gets hidden when an item is told to hide. * * NB: Since SplitterColumn might modify geometry properties like 'height' and 'y; of child items * to e.g. ensure they stay within minimumHeight/maximumHeight, explicit expression bindings * to such properties can easily be broken up by the SplitterColumn, and is not recommended. * * The SplitterColumn contains the following API: * * Component handleBackground - delegate that will be instanciated between each * child item. Inside the delegate, the following properties are available: * int handleIndex - specifies the index of the splitter handle. The handle * between the first and the second item will get index 0, the next handle index 1 etc. * Item handle - convenience property that points to the item where the handle background is * instanciated as a child. Identical to splitterColumn.handles[handleIndex]. The handle * background iteself can be accessed through handle.item. * Modify 'handle[d.offset]' to move the handle (or change 'height' of SplitterColumn child items). * Item splitterItem - convenience property that points to the child item that the handle controls. * Also refer to information about the expanding item above. * Item splitterColumn - points to the SplitterColumn that the handle is in. * List items - contains the list of child items in the SplitterColumn. Currently read-only. * List handles - contains the list of splitter handles in the SplitterColumn. Note that this list will * be populated after all child items has completed, so accessing it from Component.onCompleted * inside a SplitterColumn child item will not work. To get to the handle background, access the * 'background' property of the handle, e.g. handles[0].background. Read-only. * real preferredHeight/Height - contains the accumulated with of all child items and handles, except * the expanding item. If the expanding item has a minimum height, the minimum height will * be included. * * The following attached properties can be used for each child item of SplitterColumn: * * real Splitter.minimumSize - ensures that the item cannot be resized below the * given pixelvalue. A value of -1 will disable it. * real Splitter.maximumSize - ensures that the item cannot be resized above the * given pixelvalue. A value of -1 will disable it. * real percentageHeight - This value specifies a percentage (0 - 100) of the height of the * SplitterColumn height. If the height of the SplitterColumn change, the height of the item will * change as well. 'percentageHeight' have precedence over 'height', which means that * SplitterColumn will ignore any assignments to 'height'. A value of -1 disables it. * bool Splitter.expanding - See explanation of 'expanding' above. If set to true, the current item * will be the expanding item in the SplitterColumn. If set to false, the SplitterColumn will * autmatically choose the last visible child of the SplitterColumn as expanding instead. * int Splitter.itemIndex - will be assigned a read-only value with the item index. Can be used to e.g. look-up * the handles sourrounding the item (parent.handles[itemIndex]) * * Example: * * To create a SplitterColumn with three items, and let * the center item be the one that should be expanding, one * could do the following: * * SplitterColumn { * anchors.fill: parent * * Rectangle { * Splitter.maximumSize: 400 * color: "gray" * height: 200 * } * Rectangle { * Splitter.minimumSize: 50 * Splitter.expanding: true * color: "darkgray" * } * Rectangle { * color: "gray" * height: 200 * } * } */ Private.Splitter { orientation: Qt.Vertical handleBackground: StyleItem { id: styleitem elementType: "splitter" height: handleWidth !== -1 ? handleWidth : pixelMetric("splitterwidth") horizontal: false property alias pressed: mouseArea.pressed property bool dragged: mouseArea.drag.active MouseArea { id: mouseArea anchors.fill: parent anchors.topMargin: (parent.height <= 1) ? -2 : 0 anchors.bottomMargin: (parent.height <= 1) ? -2 : 0 drag.axis: Drag.XandYAxis // Why doesn't X-axis work? drag.target: handle CursorArea { anchors.fill: parent cursor: CursorArea.SplitVCursor } } } } youker-assistant-1.0.1/qml/func/others/000755 001750 001750 00000000000 12312451003 020367 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/src/image/progress-bg.png000644 001750 001750 00000003324 12312451003 022152 0ustar00saucysaucy000000 000000 PNG  IHDR#<ZAtEXtSoftwareAdobe ImageReadyqe<TiTXtXML:com.adobe.xmp uIDATxb[s3a) , 5:+Lbb`P: } BG}w9ïQXN xEPrˠ+]y4ʢVlMќ?H4bѐ H s4t]A]hFk&h h 0lLm%_FC` o4ҏ@Nv3hص (nN\AcZ5/%!$BBH/I% i.%a! g!!ّpJHT-A0JPH0=A@>\׃sAm??ԗsAiRwIZD"!"D@D!"ش/:YxKoDF"("N-끏ђh=Q={B$"=GD3zb!YKrFODzAǞ(n6Ώt>N)O7 0ZAPU&=A5;` mJP"Yv6!p5ߗ}̲;۞ >?&W#v8 ׻>uG?Ku1kMr$ 1@1#@#1@1~{u|cJt/ VF+=Q](cz^0Ũ_( Ti@{{\3i6@6xQ# :FZx;y6 kF_w0 nj@(RIENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/sessiondbus/000755 001750 001750 00000000000 12312451003 027027 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/func/others/RightPage.qml000644 001750 001750 00000024676 12312451003 022773 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common //右边栏 Rectangle { id: rightbar //推荐软件的三张图片 property string image1: "../../img/skin/qq0.png" property string image2: "../../img/skin/qt0.png" property string image3: "../../img/skin/wps0.png" property string mage_source: image1 //更新登录状态 Connections { target: sessiondispatcher onShowLoginAnimatedImage: {//正在登录过程中显示动态图片 rightbar.state = "Logining"; } onLoginFailedStatus: {//登录失败 if(status == 99) { toolkits.alertMSG(qsTr("Network Error!"), mainwindow.pos.x, mainwindow.pos.y);//网络错误! } else if(status == -1) { toolkits.alertMSG(qsTr("No User!"), mainwindow.pos.x, mainwindow.pos.y);//没有该用户! } else if(status == -2) { toolkits.alertMSG(qsTr("Password Wrong!"), mainwindow.pos.x, mainwindow.pos.y);//密码错误! } else { toolkits.alertMSG(qsTr("Login Failed!"), mainwindow.pos.x, mainwindow.pos.y);//登录失败! } rightbar.state = "OffLine"; } onUpdateLoginStatus: {//登录成功 logo.source = "../../img/icons/logo.png" userText.text = username; levelText.text = "Lv" + level; scoreText.text = score; rightbar.state = "OnLine"; } onRefreshUserInfo: {//刷新成功 levelText.text = "Lv" + level; scoreText.text = score; } } //更新列表 function updateList() { clearModel.clear();//清空 clearModel.append({"icon": "../../img/icons/checkscreen.png", "name": qsTr("DeadpixelTest"), "flag": "CheckScreen"});//坏点检测 clearModel.append({"icon": "../../img/icons/iconbeauty.png", "name": qsTr("DesktopIcon"), "flag": "Desktopicon"});//桌面图标 clearModel.append({"icon": "../../img/icons/bootanimation.png", "name": qsTr("BootAnimation"), "flag": "BootAnimation"});//开机动画 clearModel.append({"icon": "../../img/icons/systemsound.png", "name": qsTr("SysSounds"), "flag": "SoundEffects"});//系统声音 clearModel.append({"icon": "../../img/icons/mouse.png", "name": qsTr("MousePointer"), "flag": "MousePointer"});//鼠标指针 clearModel.append({"icon": "../../img/icons/touchpad.png", "name": qsTr("Touchpad"), "flag": "TouchpadSet"});//触摸板 } ListModel { id: clearModel Component.onCompleted: { rightbar.updateList(); } } //背景 Image { source: "../../img/skin/bg-right.png" anchors.fill: parent } Rectangle { id: offline width: parent.width property string path: "../../img/en/" Component.onCompleted: { if(sessiondispatcher.get_locale_version() == "zh_CN") { offline.path = "../../img/zh_CN/"; } else { offline.path = "../../img/en/"; } login.showImage = offline.path + "login.png"; } Common.KButton { id: login kflag: "login" showImage: "" anchors { top: parent.top; topMargin: 25 horizontalCenter: parent.horizontalCenter } width: 216 height: 67 onClicked: { sessiondispatcher.popup_login_dialog(mainwindow.pos.x, mainwindow.pos.y); } } } Rectangle { id: logining width: parent.width x: (parent.width * 1.5) Column { spacing: 5 anchors { top: parent.top; topMargin: 40 horizontalCenter: parent.horizontalCenter } AnimatedImage { width: 16 height: 16 anchors.horizontalCenter: parent.horizontalCenter source: "../../img/icons/move.gif" } Text { anchors.horizontalCenter: parent.horizontalCenter font.pixelSize: 14 color: "#383838" text: qsTr("Logging...") //正在登录... } } } //------------------login Rectangle { id: online width: parent.width x: (parent.width * 1.5) Column { id: logcolumn spacing: 5 anchors{ left: parent.left leftMargin: 15 top:parent.top topMargin: 10 } Image { id: logo width: 56; height: 56 source: "" } Common.Button { id: logout hoverimage: "skyblue.png" text: qsTr("Logout")//注销 fontcolor: "#086794" width: 56 height: 22 fontsize: 13 onClicked: { sessiondispatcher.logout_ubuntukylin_account(); userText.text = ""; levelText.text = ""; scoreText.text = ""; logo.source = ""; rightbar.state = "OffLine"; } } } Column { spacing: 10 anchors{ // left: logo.right left: logcolumn.right leftMargin: 10 top:parent.top topMargin: 10 } Text { id: userText text: "" font.bold: true font.pixelSize: 20 color: "#383838" width: 160 } Row { spacing: 10 Text { text: qsTr("Level:")//当前等级: width: 60 } Text { id: levelText text: "" // width: 160 } } Row { spacing: 10 Text { text: qsTr("Score:")//当前积分: width: 60 } Text { id: scoreText text: "" // width: 160 } } } // } Common.Separator { anchors { left: parent.left leftMargin: 2 top: parent.top topMargin: 100 } width: parent.width - 4 } } WeatherZone { id: weatherZone width: 208;height: 147 anchors { top: parent.top topMargin: 115 horizontalCenter: parent.horizontalCenter } } //上下分割条 // Rectangle {id: splitbar1; x: 2; y: 270; width: parent.width - 4; height: 1; color: "#b9c5cc" } // Rectangle {id: splitbar; x: 2; y: 272; width: parent.width - 4; height: 1; color: "#fafcfe" } Common.Separator { id: splitbar x: 2; y: 270; width: parent.width - 4 } Column { width: parent.width height: 200 anchors { top: splitbar.bottom topMargin: 5 left: parent.left leftMargin: 5 } Item { id: views width: parent.width GridView { id: gridView anchors.fill: parent model: clearModel delegate: ToolsDelegate {} cellWidth: (parent.width-20)/3; cellHeight: cellWidth cacheBuffer: 1000 focus: true } } } Row { id: versionrow spacing: 25 anchors { bottom: parent.bottom bottomMargin: 10 left: parent.left leftMargin: 20 } Common.StyleButton { id: helplabel wordname: qsTr("Forum Help")//论坛求助 width: 50 height: 25 // flag: "BBS" onClicked: { Qt.openUrlExternally("http://www.ubuntukylin.com/ukylin/forum.php"); } } Common.StyleButton { id: versionlabel wordname: qsTr("Features")//新版本特性 width: 60 height: 25 // flag: "VersionFeature" onClicked: { // sessiondispatcher.show_slider_qt(); sessiondispatcher.showFeatureDialog(mainwindow.pos.x, mainwindow.pos.y); } } Common.StyleButton { id: buglabel wordname: qsTr("Feedback")//问题反馈 width: 40 height: 25 // flag: "BUG" onClicked: { Qt.openUrlExternally("https://bugs.launchpad.net/youker-assistant"); } } } states: [ State { name: "OnLine" PropertyChanges { target: online; x: 0 } PropertyChanges { target: offline; x: (parent.width * 1.5) } PropertyChanges { target: logining; x: (parent.width * 1.5) } }, State { name: "Logining" PropertyChanges { target: logining; x: 0 } PropertyChanges { target: online; x: (parent.width * 1.5) } PropertyChanges { target: offline; x: (parent.width * 1.5) } }, State { name: "OffLine" PropertyChanges { target: offline; x: 0 } PropertyChanges { target: online; x: (parent.width * 1.5) } PropertyChanges { target: logining; x: (parent.width * 1.5) } } ] } youker-assistant-1.0.1/qml/func/bars/TopBar.qml000644 001750 001750 00000001755 12312451003 021724 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id: topbar property string arrow: "../../img/icons/return.png" signal buttonClicked Common.SetBtn { id: backBtn width: 28 height: 26 iconName: "return.png" onClicked: topbar.buttonClicked() } } youker-assistant-1.0.1/src/qtkeytrans.h000644 001750 001750 00000003146 12312451003 020510 0ustar00saucysaucy000000 000000 /*************************************************************************** * Copyright (C) 2012~2012 by CSSlayer * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #ifndef QTKEYTRANS_H #define QTKEYTRANS_H #include bool keyQtToSym(int qtcode, Qt::KeyboardModifiers mod, int& sym, unsigned int& state); bool symToKeyQt(int sym, unsigned int state, int& qtcode, Qt::KeyboardModifiers& mod); #endif youker-assistant-1.0.1/qml/img/toolWidget/configfile.png000644 001750 001750 00000005313 12312451003 023642 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe< mIDATxtWIl}pR$EJ,ɒKqAQ =Pȥ=kKh{%6pҦn4;q6k6r(r$@2Ҁ?o~]{(}8>:=v :,+X,s AѨ@ M׾rl6+29|ftϣ' 4apC0u@^5:7B0yh4tԃpy.u\q?.f$b!Oi(;e1lV1:4"z*G?1rCʨ]Xիo`ƑtόF]- |KTHQq$;4ʥ2HFS*><<=Fm膊ŭvK\~ۦxo`kqyyId2="éA`mu ;|DZ WW4lpy?ݓ`. #HR}I_c}gx3KR970񮇵U&{{#DGqD4h|ߨױW:H1k]]]K$ٔ NLN6 :,Mak],iJ $E[[( xIg7Їa*Y<ӯ{XS`s}5/a~vȡ_eoh@H= Do׮]c{Ykյ0j D)83(?@އ۶Hcw=&VE_E @KjM9tP(6TmWz."< 33Lk=#N(% Y1 ȮA ~*ZTPQG抲cҦmdE7uԛuqeyNK[ݑ[{-$h);Lv'p %F: v.vnBAiLLV5襎 QGj.q~ z=eէnmtwylL?c& cG166L_u7%bH"\[9 \QE\S^#H >Qo<+=}c7n2zQH$h6[Jp435|=BlYZ`q#+@<+vS-6RD[TJ*+= fYaoc܂:L1K+‘cJFQm\DY+o+ 8UKF\_0yJ(>,hwTaZ}tBBDu##׫JMa mAЮ`a}Ex~h*Gt38HwwRx_ae)OtfҬhǫR'X D q@S0`s%T`vBS5H茂l@@K'Ҫմ!c*ԤnHPR*[dܢ^ EU\ۘQ`|g12zDaA#Z2Ո=tq<h?FBF6vDePfC3(nA6"vS_ZiE,4ȯ/#nλosZRCj&k3ZYo/¹aģC7d &S$M6|>q\ ڔHG=j⪚9$bI=87e4:†Z|:baU4n2jm]dz#1eSBd~PdZ"2)9i1 3l T65Rea9Z%Ch%Bf(Hn"<]%Bd(Fj&Ce,Ls+Kq#<[+Im/Ou1Qw.Lp-Jm2Rx2Pv1Os2Pt8X~;Y:X|0P1Q2R/M3S0N0M4T1O5U2P6V2O3Q7W8X4R4Q9Y5S:Z6T;["Be =]#Ac"?_)Jp$Bb'Eg(Fh-Ot6O*Hj(Ee0Rw6Z-Jk7Y6X}6W|5Vz9[Sr.L0O0N2P3Q:[4R1L=^6T:Y>_?`<[ Ab=\!Bc>]#Dg;Y9V ?^!@_["Cb'Km!?\&Gf'Hg)Ll$B_(Ih)Ji,Oo*Kj!;R/Rr0Ss.Po5Y{&@W1Pm4Qm1K2L6O9U=Z?[A]!Db$Fd)Mk(Jf'C[9T-H];Yp0DS:R`8KTN`bTcaN[QZh[gqadkYtuMLH=D7ϲ=546687799ط;ʭ>ݲ'ܱ'8<߰$ޯ%'߰'(߱()߯)*!,001u *\PL#ǩ ?~Sh|Ir ɱ9Р)EexҤϑ͠ ٩@E!) 9H:ǩ4RHʵ+!DI@0$**T. jPi! !xݫ7M z`8[d"CҴUC j98O60+}(K}nLFQ @*+wtAӼe:Ap(P,|L rG{tp  BQ"-ըӎ;ꈣ Ҍ !Gq0|͇!,BP9pC-14Yӑ -S  Hv- t6RTEHRE &PEU<77nl?x#n,Ca-xZͬf/y=bX1hBЇֺkՄv|C pK׳=݆A ݇lKC=``rAMoy'ˏ|ܣ|@ͯ~yv}kP/;&j@@(.{ C/bc8W `  ?atA(nC {_Íp/03cXGRC)wx%scxqCA  ;youker-assistant-1.0.1/qml/func/common/defaultstyle/000755 001750 001750 00000000000 12312451003 023060 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/src/devicemanager.cpp000644 001750 001750 00000003640 12312451003 021427 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "devicemanager.h" DeviceManager::DeviceManager(QObject *parent) : QObject(parent) { } QStringList DeviceManager::getDeviceMsg(){ QString cmd = "lspci -k"; QProcess *p = new QProcess(); p->start(cmd); p->waitForFinished(); QStringList tmpList; while(p->canReadLine()){ QString str = p->readLine(); str = str.left(str.length() - 1); tmpList.append(str); } QString tmps; QStringList deviceMsgList; for (int i = 0;i < tmpList.size();i ++) { QString str = tmpList.at(i); if(str.startsWith("\t") == false){ if(tmps != ""){ deviceMsgList.append(tmps); } tmps = str.mid(str.indexOf(" ")); }else{ QStringList tmparr = str.split(":"); if(tmparr.at(0).indexOf("Kernel driver in use") != -1){ tmps += ";"; tmps += "driver in use:"; //"使用中的驱动:" tmps += tmparr.at(1); } if(tmparr.at(0).indexOf("Kernel modules") != -1){ tmps += ";"; tmps += "existing drivers:"; //"可选择的驱动:" tmps += tmparr.at(1); } } } return deviceMsgList; } youker-assistant-1.0.1/src/suspensionframe.h000644 001750 001750 00000003241 12312451003 021520 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SUSPENSIONFRAME_H #define SUSPENSIONFRAME_H #include #include namespace Ui { class SuspensionFrame; } class SuspensionFrame : public QWidget { Q_OBJECT public: explicit SuspensionFrame(QWidget *parent = 0); virtual QSize sizeHint()const; QString get_locale_version(); ~SuspensionFrame(); private: Ui::SuspensionFrame *ui; QPoint dragPos; QSize initSize; QImage wheel; QPixmap blister; int ratio_sus; QString locale_Lan; signals: void accelerate_memory(); protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void paintEvent(QPaintEvent *); void resizeEvent(QResizeEvent *event); private slots: void on_descBtn_clicked(); void get_sysc_data(QString upspeed, QString downspeed, QString ratio, int used_memory, QString free_memory, QString cpu_ratio); void on_fastBtn_clicked(); }; #endif // SUSPENSIONFRAME_H youker-assistant-1.0.1/qml/func/bars/FcitxBar.qml000644 001750 001750 00000004412 12312451003 022230 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id: toolbar property bool showok: true signal cancelBtnClicked signal gobackBtnClicked signal continueBtnClicked BorderImage { // source: "../../img/icons/tab.png" width: parent.width; height: parent.height + 14; y: -7 } Rectangle{id: splitbar; x:2; width:parent.width - 4 ; height:1; color:"#b9c5cc"} Row { spacing: 30 height: 32 anchors { right: parent.right rightMargin: 5 top: splitbar.bottom topMargin: 10 } Common.Button { id: cancelBtn visible: toolbar.showok hoverimage: "gray.png"//../../img/icons/ text: qsTr("Cancel")//取消 fontcolor:"#929292" fontsize: 13 width: 94; height: 29 onClicked: { toolbar.cancelBtnClicked() } } Common.Button { id: gobackBtn visible: toolbar.showok hoverimage: "gray.png" text: qsTr("Previous")//上一步 fontcolor:"#929292" fontsize: 13 width: 94; height: 29 onClicked: toolbar.gobackBtnClicked() } Common.Button { id: continueBtn hoverimage: "gray.png" text: qsTr("Next")//下一步 fontcolor:"#929292" fontsize: 13 width: 94; height: 29 onClicked: toolbar.continueBtnClicked() } } } youker-assistant-1.0.1/qml/img/zh_CN/login.png000644 001750 001750 00000043554 12312451003 021536 0ustar00saucysaucy000000 000000 PNG  IHDRCtEXtSoftwareAdobe ImageReadyqe<GIDATxڴRKkAz&ٸf]o1h "&xS! 7 MF"6\A]5®c&;~U3kEW]SW-(B3g)v%^4*0s/=䅽1@kP46rs0NJ=T[5՟$tګ20QJْ>UU`bc !ˤ-,y *PC!]e5h~j0ҝУL qw Ǫz~&\A".vۏ n 3U.iÍn oMcbG .^*ʵ5nhoLLoKl̗I>˘*.]['x8]_= pdl{oDH'\<>qu2;ۧ$H:k,AYq#$U!%hOE?Ud#x,R1y׸ٗŽ_=, f?}/ϑQjRtANiؖ}~-$_h)&(gii?8LJ/B՘PL7L&^y F8Ћ A~ UK4R[wv|oI&ov23oߏWj&\ xlfFtׇzQad&gɱt=vo{' Ejnn'Vi]}H77~إHƯ!ET_d7u_l0 Bl!vkٺBZ Bf uDNF}o yAiv w.*A ^M ]sx *H'C#-v*efe&R]mbvhjaD_}~w냽f3XFQ"{na,yY_O1A3@C}XXKTRTB%:X(ZR:9 NJVX ,3|ʛԻ\HJO厞w{2o+ \qW/Udϭm,RR(4 , ̋"» 3"* (2Rr`CZm4ssڶs޳^x`8wy>ϳ5o+HJhB[j&R$ p.~L zyP>ςg Ό!́%D.c&/SQVEyF_8P"FȞB~Y8_ fD>C:]euȠxX<_p3I/{I[ܭ#u&Y=|1r#fQoĝA.eS4 S(2rӧD'7Ÿ JA}*{ Z @P+0 Ĉ:%v7FI>Z̲~'<{^6ϖF7A|u8#W->Dg>ufs槦Fs8 >ԗdR'@ P5-6zϛeL#w"$rspS]WtrU`|v-?Usy^a&QGb*%JNNɽF*{6K}s/SFf-XV *0Y'`pR)f%DlI3jna5d3er٧5naѱx;@I.H^at>}ILA1h]JB^,8H~ij|'K{dp>Y/BKzTV`b\C{XxxUqr *Y18KqѪ}v@ܖaWW:nK/ɢ<JALE0[#&us'+$GrejVߝōNysýnf~º9m]¸T\1啐S:$tK~O>AJΠEv4Af5&87B@7o.#e*YsZ*U`N6Ej,]0WAƘ jO *-_%{W5H4j O녃UN+4pgLB\Vա1e*ˣq㫲.y%_`Z9щ4aG_;D +OVtԆeWC])wKX9gLHt?ztQUpy#4ȥ `t20E<[{C ,"" ~:5k;ᄶsXC~y]ef826WknOmaܖz$nqu5<]v'D]-G왑j#P$"D7g.Ŗmbfcrsq'*"\ k@$:?|6vU¹9b<E=!w=G& c8.6ctTcE-]c<o?.B3nPJĪvs5ssEA˞\%AuX0Hv}1# LEMKLVD8O%G]+SiȻFy*|x8Ӑrp%7]b}WUc|K]"WںWB)| Gfp 2sb|$= g`8~+ɦTo?b/l[Ipkm=ހh[p#BWv$({sd@h ̆L\~=@t¹m}jѠ(&]xO0>P\Zk۾w,[%io%TQCӱnŎzJR1:L,v99F f$ȭ.lkP, PvUC DZ(E 3K V[݊_ R?ġ"腓r="yˁVDžɠ XXWy7槊 ?O6JۢJߜ,~=|pkp;4F)bh%c)spۭ\K$)i4}km*߽c;q8M$MIXUlc@aڐc"mc*ڮh(4![ d[%N;l{ϹǩWxhz+9u}~/.q:֫>6ݪ;Gչ!|gQ"bu"ZkuktY$lɜƢ9 d-rfhɕ<0n[p-3w|1 k`*a L-~D tD,HwFB6C5 E$j@_7#͐DF>-*BmBMG12~(\8f&◉W p]46u "kپK? Uu*|ehz0r 322ω<+˭dy=-ݡ3pM{]a8rh{2 Up'h1L8vɩl 9 S0Iy ҘYvL!q=ΒEI*}5mI83fgcD$"dI)O Vk^,b1 o8 <@X,hF$`j! 304KZGmoMiu hrKD{1NSC/t=Ӹ߿ԡWWԷB b:3N'Ϟh?~qChe#DqxN^ | O.@_c(7/Θ}v+V>Dq !rdSf4i)Q:Y? iRhjTfFIht~f1֕!tgӰ1d|N5B --mPD}(s%M~<=`KT<(IJ~\כezZEaVdOoH.3mG~QDe:aw!UE9Uiv+e7oX^wM)aYGproؐY~Hmq.3TVTt5T@.j2sEKHan?2Oș3 " 5aC<"U.*#wcUoKú|,aq ;z/2 Y> uٍ'\ r63o!뎐XUJ \魇J/dps}c7=1cCt)x|g0# Ty5/ͧ"A/]SgiS!1L2_U,E쟕kE8U)3r 2Tni{ |;A)iHLdd`,]iP87h>:ĒU->8>tx 8kH=څ^ع>ʂC)Y}lb'<1O|.WC ܊eRDrϖ. ׄLzׇr4rh JkZrb:O 5E7 4Ȩ?8xa3y7/h4L$ڰAO(@#R] !BRF(%(!5=uSJt=h[]^S;(5Q)U lx"#ai2^]@ѳ)*2"0m/o +)#f֭;n4-V PCԤw GQ0!XRoT(BOPO3PG4y#WJ S0]m*I(v(@*Sct>8IelWt;I Lޟ*r@x_4.ӽk#(NKL:q.'t݌;rpǹHg2hRXmV}}݂"MێLjdSZ$[Hȥ?n_!oP/C6tqk5͋ 7̦^96y Fsi44T5*JesJ"oYA;Y:Ƽla;FF2dϮ@U!W\ZI;'<*YפL Vf&)<&aaX,J#U-שd_jL֖CjF KB"}p6T:عsWuZ}Gr*+k~̝^|zkAAF(A{ϯk1T5&x[_G{C"w1ح!ZBև3Y0U\h8{Ul9it]ӽgjQkL>୵̬?7~oηj߯k\YZM6 ΂P!&w"B|Q BX6Ae[!/Ҵs9p_:]fBBd7T@9 x: - >E|ՙh{Qf:5T;R! 'ctj'i J拄K{vYya^vU2]2~(eA k :~$ZxM Grs~44U6C%L(qmzEd ZR3D0en!:WK!Z*E =znVb&% Qh"M!cs-{꣛LJ U6t͗_+cӑ/hWƤF'Q^Qf0HfI+ n-j֌2W0R$轖$Ues_XxGւ+QAmstE3'Yt%ʕ0}>etOt4uIl$>J'ExoPwʅ@vYP6 :Կ=i Yl ȅQ1ɹzR :Z*^j$JLcR%2'`LrW]n6F%2Ax?׃wk=xFz",V| ^dWOxD:kX Bke2[_8/;Yqt_4y'Ms@1w`UOv{M[2𱧧]MC|cɺ9,T~NԇMɰ}&0CAhvCY7c~M. V=ffVݮ7a]LPR"A ߽5ۮ2]k$)T`"5BNu]yyzf޾JH`Pc'˕|U*IL簉ĎTp1 l0HV:>޾}Ǿc:t̛q*Ƶ O߷4aKFge僮#`b n ni3'@ݖDR{;727ا}ol]=vH˪P]J1IO8?U-T! NU]R2[jo7  h}[Wy[or]s4phꆟŶ1ĸb^Mj>w 1˛[;-^@C`emہP樱/?x]g|ٯJҳo%S^kPS[D b{",`<+E0O$l涽OY+X"$Dyۅ$caݕ&?7u0Ľ,B˳ nhʍ eCy=%\' (ӓcNXPgA_d-f5G>ve{0y ͷ&>`1a(1ZT$ؐ?,Vv̗vy8[hcDTOIÍM-Ꮅ5C~$c˻`!9bҧKr {q\WER7K՘8oVN,r (@~TfyG>O_~>^~oRnPPVAՆDaex* 5nh<5.rx0+й2HrL A4k HR~0 s $ЦUƃĉ$ivSܽ9_o*f2ݓl,JHSaF$< k*R˼oy_kf nYxfX.N VOg7ӫMSc;x2ʸSOAYޅ`z6N9T:[DʓᯢQZ ^^K4nhd-="6xT3YX(JqxNJ}bIL]҃yh)DISS' ,SL*8gWjI󢯩 gx[*T)Ϥ2H텂*" >%PK"QGųC(ͥaS[/hn\}Hvb1QKY`aLJ_i[#e"VLmBx?f"l mP@L8$1YymܬaDc}9d/ig#>?9R'|Do\EUB&GRj X/sU$ e̔LCSE~:@2C{*V1RRÈmbn1E'5|$L @KZp%mhw} i-/YM [L)0uuprv.Da\1ԚBOKҥ1 Lwvq׮jwl\(oGDK5Q[ ǡL,{ߺx.]p_ߝTphz:AwKm^yI\g;6sdC RNqy:S AXrLlFc*[R3c01:4a6m솉6cK*e:8<s654ohƧa_>>Xr)GX`ֽ}֮Li:͕rOhƋ2CX);,D}W/]b^{c{޾^^At.oKp z GȕeaxAc7{O;w6tZ mlsGi{[68>ˡfv}muИTd[F`+8\%I+VbDdp߷c-@+^'ەXj_,W!cY 6~u5%۬0/-kJD"hUWmd ̞S*K?-wK/p8eteGǖN SH 0@I&ln]39Y ZNxOsP57XExlf$$ 5&q>B@,$4ǣ/XKL$#j}Ɔ8F;{6"Q3/c 'oc QG-9Q#!pמccs9' \/'< =QBD >ȱBgҶ&ssyyG䂂JMWdMa #Z$cL4= bB>}k=c2dr.VJLm7axqs {d^ 8*ơl~ "6[0]6d0c2JQ%/6s[{}T)^6ϊ)0c{ɑ̅`8Iꆫœ(^+ B Oq2-0M08k^I⑄- UJ䊏 /J%lf8qȼE(MqA QX|k߿3+|b@&ߣVxcB~?qd?Tm++^xF.]pH5s1uˁ*x) 2̥Kkg MLln4,^R'fHWg0`xvSAk0G3 x$j%CڸU`US>{g2`fެSk;_

    oYgD!NxаLrQ!%{ҽ&@2wʿb#qbx Vu5Ub† gԐl?^ gʰI- BgF]kO<{N&"[3_4Q y1I[SJY<\tos8ңLU 뚂h׋C3 XpTyCTL'Dt$@g2OSYeMT;Z| u|QNp Uu8ep YF\-+[g'&lUǭ4A۱_lyNE["AB;εj:\$lfs{߳޵P{"ڶZ~s/WSQgy/VtR!D]x$m 6,) J<CT87pϫ]EQ2 }a&sɇ&fJD[>9^_WS 04Sq] w_aU7dH{:k*ܶB1ZsyOqL_LDV\ţ1> av3m]b1-* t{rC?KEk擊"%J3~3`-] Ɇ̅?tH &Q_(QªTT=+ Y9KlLM9x?$jc*Cx3* $m=ZESM -GFv*^H{o1V]<떷p:86<ͥbI b7.?Q/ 3zBko> zcY` F'l{iMيT eA LX? Ȟx4 ]ݰm#WdoxDVֆ{ٱe =`ޘ%J;d#&$>V^tiK'N:2!MXtU Hx_t(Ä$4$RdT1,C$+(1%P4s֖̕72ʬJ%-yAXr>Hd~Y y6 m-5^2@/(:CMbJNn_c{YQ e *"&P2`g{Kdt\@=p,QDJwo䠨J:z㠍{2<[䴈k4YU8SHUr,LAiM ZG+O䱴ek\[c-d/s*urCƧqo-ePWLo0Ļ]G`[{Spx<}hl[׶Kp?)XT[o߸ {w]:໯ BXwt])~%=}`zLr%0<[xLeN`׿rjM浝prl&YmqwيrLH:04vmZp''`v>QAA$p6}b,A 5,b{ 9;Vkjar% lZ ֆu謏U(%`Ծa@8h"S3V/|ケbEN)-~42-ا0*3E)X+TNȔy_mDRW\Paq‘ j{ #/0u\V njj<['BXS©l\KJCܹx"ǨB[RtQNabV10STe% #5; :: ?d] oH}y~'8b'ljxW^C(4ȋXvi1t5LdR݄Mf7: p4enl?*7 &| wp "j2Vg|̳W,ɕ*Aˏ7.B@ ʰ'&D~IS!Bp]a DO4S7s{&NR i)$32b$ %63睂J`˨=P-wi[`Lj#]16Ac7Q]0 Tl;҄Wf$j3KU$Lw  d Q Z No b= !fy"+Ĥ 0 ׭a\_~39;?E"ثPQTUj^zi jܚ Mċ4dFs%Q>ړz#~\2:C'*1DsGE}G,6 v 7:+bzE/pGWza~8V缳cH<[,ul*fؠ2 +9SɃhK#!"QLK37M 3w$Pq-tZuՏOP5Ds?kVTc0Bٟzkgx Q]Rys,da-rm(yZ-T\-WHJĎԅ $gF_x@J=y݊  N,kʿ]7+DM1WTNeShhU"I/X+ӪkB,hyųhʳ +8.LZ|7l¸*Q~UWwvHzv(e#B.QTD4Ҟx|_g;jDЮҦ&R.r\THe%Ka.B~NY<6oLadaQ<>N_q8V,gcW9&* p2(]!b;HߌjZZlaQ*S.92LAJ4trH`X&Fғ X4B|@GR:Gڹu%C/NR[j@$Z{(_Эx<3S/-#pQ6璎A#ڑ09fbCTsNK1C 1xiQv( &~g-v]jؑQ0oP)H] U9,Ʈ=״ĢDldzGM|g=+fTpj_GuF(G9D KoLn%Xy2}N;ٟ0í++ xR-A @?VҭDJTɌJ|ibtth.v>bc !,a/ .WL!Ø2 \f[ &Kj0IENDB`youker-assistant-1.0.1/qml/func/common/behaviors/ModalPopupBehavior.qml000644 001750 001750 00000004600 12312451003 026610 0ustar00saucysaucy000000 000000 import QtQuick 1.1 // KNOWN ISSUES // none Item { id: popupBehavior property bool showing: false property bool whenAlso: true // modifier to the "showing" property property bool consumeCancelClick: true property int delay: 0 // delay before popout becomes visible property int deallocationDelay: 3000 // 3 seconds property Component popupComponent property alias popup: popupLoader.item // read-only property alias window: popupBehavior.root // read-only signal prepareToShow signal prepareToHide signal cancelledByClick // implementation anchors.fill: parent onShowingChanged: notifyChange() onWhenAlsoChanged: notifyChange() function notifyChange() { if(showing && whenAlso) { if(popupLoader.sourceComponent == undefined) { popupLoader.sourceComponent = popupComponent; } } else { mouseArea.enabled = false; // disable before opacity is changed in case it has fading behavior if(Qt.isQtObject(popupLoader.item)) { popupBehavior.prepareToHide(); popupLoader.item.opacity = 0; } } } property Item root: findRoot() function findRoot() { var p = parent; while(p.parent != undefined) p = p.parent; return p; } MouseArea { id: mouseArea anchors.fill: parent enabled: false // enabled only when popout is showing onPressed: { popupBehavior.showing = false; mouse.accepted = consumeCancelClick; cancelledByClick(); } } Loader { id: popupLoader } Timer { // visibility timer running: Qt.isQtObject(popupLoader.item) && showing && whenAlso interval: delay onTriggered: { popupBehavior.prepareToShow(); mouseArea.enabled = true; popup.opacity = 1; } } Timer { // deallocation timer running: Qt.isQtObject(popupLoader.item) && popupLoader.item.opacity == 0 interval: deallocationDelay onTriggered: popupLoader.sourceComponent = undefined } states: State { name: "active" when: Qt.isQtObject(popupLoader.item) && popupLoader.item.opacity > 0 ParentChange { target: popupBehavior; parent: root } } } youker-assistant-1.0.1/qml/func/settings/MousePointer.qml000644 001750 001750 00000023157 12312451003 024077 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Rectangle { id: mousepointerpage width: parent.width height: 475 property int cursor_size: 24 property int current_index//当前主题的索引 property int default_index//系统默认主题的索引 property string actiontitle: qsTr("Mouse Settings")//鼠标设置 property string actiontext: qsTr("Replace the theme and size of the mouse pointer, then click the 'OK' button to confirm. Also, theme change need to restart system.")//更换鼠标指针主题和大小,更改设置后点击"确定"按钮进行确认。主题更改需要重新系统才能生效。 ListModel { id: choices } //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } Component.onCompleted: { mousepointerpage.cursor_size = sessiondispatcher.get_cursor_size_qt(); var cursorlist = sessiondispatcher.get_cursor_themes_qt(); var current_cursor_theme = sessiondispatcher.get_cursor_theme_qt(); var default_theme = "DMZ-White";//sessiondispatcher.get_default_theme_sring_qt("mousetheme"); choices.clear(); if(current_cursor_theme == default_theme) { for(var i=0; i < cursorlist.length; i++) { choices.append({"text": cursorlist[i]}); if (cursorlist[i] == current_cursor_theme) { mousepointerpage.current_index = i; mousepointerpage.default_index = i; } } } else { for(var j=0; j < cursorlist.length; j++) { choices.append({"text": cursorlist[j]}); if (cursorlist[j] == current_cursor_theme) { mousepointerpage.current_index = j; } else if (cursorlist[j] == default_theme) { mousepointerpage.default_index = j; } } } cursorcombo.selectedIndex = mousepointerpage.current_index; } Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Text { text: mousepointerpage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { text: mousepointerpage.actiontext font.pixelSize: 12 color: "#7a7a7a" } } Row { id: settitle anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 120 } Text{ id: mousetitle text: qsTr("Mouse settings")//鼠标设置 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: mousepointerpage.width - mousetitle.width - 40 * 2 } } Column { anchors{ left: parent.left leftMargin: 60 top: settitle.bottom topMargin: 10 } spacing: 20 z: 11 Row { spacing: 314 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "no" showImage: "../../img/icons/cloud-gray.png" } Text { id: cursorthemelabel width: 160 text: qsTr("Mouse Pointer Theme:")//鼠标指针主题: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ComboBox { id: cursorcombo model: choices width: cursorthemelabel.width onSelectedTextChanged: { sessiondispatcher.set_cursor_theme_qt(cursorcombo.selectedText); systemdispatcher.set_cursor_theme_with_root_qt(cursorcombo.selectedText); } anchors.verticalCenter: parent.verticalCenter } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { //Attention:配置文件的系统默认值为:DMZ-White,而通过gsetting方法得到的默认值为:Adwaita //这里我们使用配置自带的系统默认值DMZ-White sessiondispatcher.set_cursor_theme_qt("DMZ-White"); systemdispatcher.set_cursor_theme_with_root_qt("DMZ-White"); cursorcombo.selectedIndex = mousepointerpage.default_index; } } } Row { spacing: 314 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "no" showImage: "../../img/icons/cloud-gray.png" } Text { id: trashlabel width: 160 text: qsTr("Cursor Pointer Size:")//光标指针大小: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ButtonRow { exclusive: true//控制是否联动 spacing: 134 Common.CheckBox { id: smallstyle checked: (mousepointerpage.cursor_size == 24) ? true : false titleName: qsTr("Small Size")//24 小号 flag: "radio" onClicked: { if(smallstyle.checked == true) { if(mousepointerpage.cursor_size != 24) { sessiondispatcher.set_cursor_size_qt(24); mousepointerpage.cursor_size = 24; } } } } Common.CheckBox { id: bigstyle checked: (mousepointerpage.cursor_size == 48) ? true : false titleName: qsTr("Big Size")//48 大号 flag: "radio" onClicked: { if(bigstyle.checked == true) { if(mousepointerpage.cursor_size != 48) { sessiondispatcher.set_cursor_size_qt(48); mousepointerpage.cursor_size = 48; } } } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("cursorsize"); var default_value = sessiondispatcher.get_cursor_size_qt(); if(default_value == 24) { smallstyle.checked = true; } else if(default_type == 48) { bigstyle.checked = true; } } } } } //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar showok: false height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } youker-assistant-1.0.1/src/image/upshiftZH-press.png000644 001750 001750 00000006017 12312451003 023000 0ustar00saucysaucy000000 000000 PNG  IHDRt fx# pHYs   cHRMz%u0`:o_F IDATxba``d``Pb 000(M2r1cbQb~O<\`ba``0vA F &&T~bA.y'l*2y `̰L? -EK\ l ?\bcQ Br  M;2p3/RðnbAMd9!=KBQڱ7 lfEPC :4Eh tkJE(z^ żGi,HQo:?/x`ԿR*tү>FZ^wR~aR>CFu#iFf1$v#`<cx{JG!첣\ gjל$lDݤȜ9zX'y8vI1=Bw NY P{wAd/(G. i1LNo/gj8A4A؈k PJXvv>)lSW7R4;ܖkA?mK]{%th .c<޵^,F@CPABufvvn#,$"w`0;o{ W޿& 1^30+<M]tT ig2\9|OMJ'F!?5us=n,"I YJ$O;L0cݪnS]oGS#-,ōiDxB8, =0iV&bG6}m ݑZTԈ%h3wb9 "й@b#N"?s{:ۦskޗ@6 QP:ֳK?3^5(J +%8`m(dQ=@&K:VO}\25T!,KIu %`"&PXkh$r$_==ځ>59h6o}T+mDw'ZSl*^D6UGVPmG=rՍn'5{]kӲ[:ݬ$@T,UANR"l?itH9$!! Hg'+pyT&f S?QTȖjҬٴหܚc;\s4trzIgwv A\s($:rߒ?օ['XxClv^SzgJ8+}Gd >k5 q'Dnj ?D+a莅 U!%zo'Z2KLiW{05̿UhangRzR:)r=v:&Ede$@ti=O|etbG*5?M8B/] "k˜s9BlvjE ek_*B^ql/ts9B.dְIn| [/Ⱥ)LJ_.uC2^Za><9A ֆ毽]V= sgeUJ\IY?߶POm}(~IH&?~2ϽUHKL. 6CXpxY5}Cw,K ![ aH%3ǏxkdfssGvy /IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/dbus/com.ubuntukylin.youker.service000644 001750 001750 00000000140 12312451003 032674 0ustar00saucysaucy000000 000000 [D-BUS Service] Name=com.ubuntukylin.youker Exec=/usr/bin/youker-assistant-backend.py User=root youker-assistant-1.0.1/qml/img/weather/d11.gif000644 001750 001750 00000005433 12312451003 021424 0ustar00saucysaucy000000 000000 GIF89a008uȁܽǴ܀źعʲ㌖ȗâշ}ѱǭY㍡6q8t9t:uy?zA~@|A|;pB}B~5eDGF6dF}IBw:hKMEz>n@pI~CtLQ?kUPK}NCnT]\SVHrb`eaeb\ZeMugakjcimkrpotpW~rutxv{zyxwy}xր}|ۂ側ㄷ]`₲߆n3t4s7x6tGxtsぶ⁴ჶサ⃶Ⴔߗꦹ!,00 5s(\ȰÇ tӆTaJl3 CI2=)͛x޴I͛8meJҝs 9H*]ʴ?oAz.N;`!ׯ`Ê?*_9{GϏAuجٻM<#G>}Rb:kPÎ1 Ũ ^:O׫ćO!@lƑa ] ֬)_sB -'OJ-j́hPࠃC3Oľ={#!Jd"@khN! lB ,_{4.D agwhAN0">Ȋ,"<򈄎P /t`P jB&С4n" ȞjA (< (I&J(AƖfbP*ہ 'x T[Ƈ!) 2\02 q(T='D@C +# 1{ ,0=tXmu4ҍ<& } d۲ܴmzFuН*'!y#B c %XKv,:x"㐫zБ0B r24 2뮧J*' %LP [ l p#Nܲ(/J,\BI#0"08Ck"@D#6A }{g1Itw54lh82 3AX Bs p+7'̂ L!qxCT0+DŽYk1nb/& l XEp&p \1N). T,\ф&8ᏼcq^8+0 D" Xd#q\ hE#H(, ًUB /~]@'@KZRP`.P q\e/`bń.z ]DaXE1H좙f(oF!/i q䃛$(z(((( G(O%H(AoPgO$`x45`(I9}2={t" Ɛi> Sc0:a@ @FPjT)(a @'v02AEP["jWTc J'! Vc 8F-:Q FcȘB.> $ȅ:(\6H l.:0zcPc0z1d`=Fe bv-4gPȅ2@+@Cȭ,o QVg( 3 r !XHF4u8ɨK7 XE7dѐ/}FXaH4 h F#6%[Z TƁ Sm3q ^ܳ3a#͘g5@Nf`#? h̘4<ϔ^ɗ(NjkkpH(Sʌk| Ca/טF1 ݠ45\؂4 gZ\L-C+ra k,E! 2W$h!vt %ha ilimla/Pw"ռ71kkC]хy|Cx4awh –QwT¬qp\KڨюjTcrN՝ /hA!eG6~!yF=Qpx&N[7mx G@;youker-assistant-1.0.1/qml/img/skin/0_bg.png000644 001750 001750 00000250024 12312451003 021170 0ustar00saucysaucy000000 000000 PNG  IHDRRXptEXtSoftwareAdobe ImageReadyqe<OIDATxY͏\Gz`!H9 8"8q.s87pA(A {y]E}u~NHc{篪~U 7 Xx˥vZ Cj1jȍucldAJ n"i!~N|+{ +5Y Yx+?BBtws}Wي ܢ d;O-ё&E"9dqI-ȸ)b(rf>"[Y28QSXDHG}o[=)Ū;截o2gՁg6YmhU";@T~Wo9<`tVF\V<<:F U^~xhq;c+˟ +Dp4\PCLfhQ֚f9:Os.L*.UDy%}.T]@eTrKwWqG<zl*r1dLeόEaq[s& {`G8w?󬷼m{:G{b`awH}&m R"%)KnML?DLMy)+H9Py~t}L#~3'?;?{ox4`O~gACc.OnUD^ |pC;;Hd c?M (`PW|M1sp?c90pkwhh=A6Fa/oxo j81ݾ}}˿{jfۤQ>wumMF#mڭ맛ʺ=Hxo{VڭSBfLЌA~Dw.Zѽly-r#w4*E%b)ШtTsE3o}%m׳4lo};AummB@bd{* xG1۝H:\)\YuxP.VLΗrP4{s#f =e34{1WZTډm, )B\!MԮ+2߽柮 U`4`]$ dtˉ!R =-y|ɐFb0 L1S1SȪ &Cv&?31F.[/8Y "앉W]Ti7r7H*K9qhD&t-^jBip뛔5F%IgbHS4A,Dq+f4܂p!@)+,3uTGf+m'V &` j.Xx!P?@=n4'm2L(J9&k4 SF,>+cάX?" uU "t9DʏpJt;fL-`ŸMLUiH45 z(]+,zӰ8B3P~~c!0Seo;G#8J^Çcr3R}Dz-q[9)M]b)JcMN(r('QR'`)R/dT=e;*G *|܍2_S S7qOTiDMq`kTGTCV G0.J?PuɥRJ=gς> DOor/;')12=+g/={zM;8PP$o6+7 ,1'@iO4>XKAHP<> k ƹ~؟t_?#2GCbw>0r;؝ &==waw{˨s3r48?Hd lrCpa Z,&opy<ȥ47u\.t -2Fg6Z1mN[LŬw1!vLRyNOੳ I3r!kWZ;[Yt(v 2ajcl&8@"go6u*RSX 3ӰU・hVh-ُ9K#x"zw@dC8MpɆ}k z%ڌO*+Z3KWp(j4i\&YfT3 j~77e9;yOd~Ɋn1Fw4/\ܝuDIC^Pb_R[2"Pt`8q*m|K%d'(,Lն@ S| SG$+g]iؐ$@Y0-Fa@V[Grn̸%)|3q @E3@a=ҹh}gؽ(&LD^ O9yL5@=ȩi?P}#Nޘ&=YĞYr xz K(v:E|Vv+ uBf&(d?/ ˶ hS_zߜML2O屟y!3p,t&d9[wGɕ-YB*!MtjQd x6732uWƒM¿D:[_B$c `%s}]~ 8:GuH#Ⱦ 1*b&^鋟Fx e9r3T#=}BZagrX媪],Ը>Q7N]ω{uV6(oI.9I{?g'wƊOJ X|:Ȱs*;S&v6;H~V (kk%$V^}(Րyꁝ£֬bC:cW,P'K>ݡTXyɹ@ m?諾-&L^pFL H{ÛzP!T[U4zqm嬷}*dt͇/m%u,␋6JΒ6tO`Y币>pb)vamIƋiG;`#37#[XO v1w铴_d&cP=w6ŧ]Z72vlP5Ǡyۉ0;Ui1{&UEFXѭ'&=淪A7~^cbf4o O Mn\GL=\ Ϧl^&<1GUߴ] 灦;311m_# m|"}Z} `DV ',׺r Zfh4|M&_;|M&_M&_׎&_kGk5k5|h5|Mv4|M&_;|M&_׎&_kǽޢ=kiµj{nt6L1J :HDb3dpAđDЉ?@:s"@(T NI{v-Ukժ܇vۮvzUcgP(O[^xLְJލ.|t=T%AԙXs63AmJ,@4l1 4^klPpȠ>UoJUN e ?܌j2*ӃR+]|3]橜{?Տܼv8z};_;NqW0AyX~γeЙO( NPߥ!+Q^_y uzBJi`'B5GB7SP:/e7!wԘi0ScJj[LCduKǬg2!Z4!GUP }E' X@}ހue"./qd!zTD\ }:݅G:;@%A~7׿RNvdz;S8M $ _^ n&|t0nw[' mBpM ȉ .>bzaD )s)2O5fحk;伫~CW7b/^ |3pw$ F![f(}M?n`A3(VhB.QDJ PF+c-t⅑ޫJV3! G<^ĭ c_f7~Wo+p3}~7Eg#"fjj8DKE#o󿼾 ܌F$s{Y.2]L'd!r<"Q cٔC-zF c$1'YY$\48Pf S(* $aBNX*Tmˆ6/Vou`[a%͊AZ&n)IJ[r RaV݊h?;HyG(Y-đQX T!u6WR! YivxsÈBk>;;Ĺθ3g?ՃXrUd&Wh#E1´ge1-LD't6۱.>Ѣ/ir=X!)r{VEmBFDrIKE| =LHے;,ZV*Affrf)b[Ѹ AEXvHa_W纗5ȕ.s<z}0{!һmin~M\[ Rv 9 )bn>ϩ(HsY&X( G^D[ u&Z&Q",'f(rEG{Q2j dF귊J=Q:RAC(:V(9#:"H)*rI$/:p?h27TI2q2ΤI|'}wSe*3;xs|mU-}r321c-B;|e ]Kqپk󺵚xEs@H>>4ݚu<Ǯ¢y{Bw.C=:9wa["i_D6Yu`'C+CcfY:׺u!F Nzτ5]]}"V]"IY <.>"i@lƠ_>u]Z7Ufb6):ֶ(Pl\gh Iŕk+M>A[u(3 ~ N;X<߅~] ;gjN;.Tf{l+,VRC)m^P" DZrb,=;{8[B7A] Ξ7Aq`L" qqlA 뀭[ڞKCmU+Ԏ髊x(G;E˩_˨څ]Qt1.W3|&%pF,0۾roY"\4{{!T;FvJ¹|(SKP\&֢Zan$^2ſAtQ9:x"y0V5ڠ!0:Uw&<me&|mڛļHE|Mɰ?xEf{ʜe gyX6.D=ZQ*׽";}o m+cTʹMH(a^2xih|E1y ..!r 3^ڙ }60Z`;ms]L7yV1/ڠ ߃[-)#a%BV53CnmѴ>[`QtPj^I|y`TaS}V.&Պ-O`AIWg]kwm@byZې%P{ {|U8g)QL#0 ؕAo)0"j0Ύ߽?[2u^y<ua˚c8eoaG KNM^n?77ǟsss9n?77ǟsss9n?77ǟsss9n?7ǟss9nn?7ǟss9nn?cG+? nnnY]͏eUS3 &1 b)ABY !!Ea"6M"@ $Jl:TSli_w߽u~u>~T]xD/#;h03'WO듉D@?3[.Or!$(g<>;tQg}QϗqOMۨOEl]z= f= 8Q*0i/_z`}:}^+QC!ׇaLXHa+3W/{̓Wid.| 6Mvz6C:ʩQM ^ .|?$#lZNByB:rzTyo&Rf*H2n Xz$"`WS3n^D7× .m1tn!v뿝kIޚ5MAR I}HkwAt$B$,iBюhֶA)CZ>h2Fuvm1FY95 K? Ǡ#i 7Ϋ3N$W6"dE3/=z[w΢ۇt:m8Փpj)! 2"y!Yi36Ց1giT=fNmʻ|X"$h|GI4/URz]?M>vdL^^}b?f32[ Cj+9nUgP-)~Kf*-mJYb8Ɉ)wy?*2ɋ# yW{p BIlM^fԸ0 gibL%ӗ牏ݴ7SYU"c0ZDq:׎7+Oyf[U2Иäzj|$ !3G%ue22L1q)lnt7clL7駟SZe*6(. emS׽>pѥ٫m~lIm6(^?TX Ɏnkx6y'b Y1I\oV#P<R n@NEDH=-0 B3|;i3f#}Ǯk[oa,7T"2i3f̿;Ω`id FP7`*L{&Ei(.@0-gA%[Lyj?DaĀ.j#ǯe>&#w}ݛlBhFQ 'oll>Wodud5(.0,: H?욌xŁπ9-\q6uB'v܌t ?޻Qʀ;)lu֗~))y7f<* 2bT_YY <We'8/k, c0a.(a %p7V hK?P~?G>x Ͽ:ȃ#L?\6*yt{1j;NJ%D14%EUUu ̵۪/>}v3~~тׂԬ¦XTNU_|B0yJNI FX}?|s1ƮStxܦ|E ~ _4_iUDzƅ7Ӌ!U%~FSOwh|Bܖ A SK7>,SVE 0 Lo(T0+е.*(-O`i˪ȑc`4Vvȝ%Y\K}2g<յ_k/o/Зcztyo_|/+; V(l$^CtP0+h5W ÈKR]Zg|xlVc:'fš5GT~k-u_jxL; Y}qƟfD T%,\O{4){Qrtʌٮ-w*ZblMBŨ-eb!j2iuH.*U$1i ry䷾f_Qp-Ͼ?+hrh!:kИ3\s kp d7_\~d_X pa뢘b*ۂ't^'?T&Kl{ {_QiXbFRdWFS84 '=埡kB w$G#or"lȷMQ E=2M8J M{/>jP;ʀ;q[e *Hͯk^*ls?fe{*QȘ;!EJ2L?c`>4ȅ̑:hGP@dUSFmD hZӰ"1n9}C3b,Ę71s&1ز^IJ+ g* fѬ8`fFʽ'v!:Č!G" ؘF!3{J2d¦*nᤄ4Ī&"y0PnҪ)]wmI@VXLAo$7J҉]g#KDKf-Z\3ErΔcM:"-f2j* J6M2olC kL_>K@ 柇.0jxȥx 9V}MWb ¶>0ٲPz Qf*L .`pͯ}LA6T"?LF|ܔ$4RO(eN8 `!YNo8/BרI{456#p'".ʦp+Zxhbbv￰J:kS H|kS[s` ]Q5q@76@ 4r,0z*ebs^ˡ%KszKހDR'T%Ts@E2MQAhb 9[x˳<:M@Z(PP}$^&RX_WfuP=pJȋ[P\a gf I .<}R sR.ip!S])W2<0e;Xʥk $X^1+r"`KҚX@SW2TWMT" l*fGF8sb& ʬfJmkiZqnՐgd$ R1bQDv|P`{%-h:+'gOa [8/)|Wg.8sg}>Ϣֹ*Ƕǥ?xסԻ)"RP ==FJYayl&$YT5HnclE,ۚ^'L*MԳ^ Lop/B{OAGL3i@RGRFT.F$EhBZNs{ZPn-Qgc1h"IF0B>a˽ w=mq;b[+4D#e5P@v̢ X*~)ۂZ}WIB-/]uYޡt5]"f gA\ Lز徧t`Y@){,*&!,dNDh Dg(c7J /@I_TL lRyOfFh>lO%=SZa6e,bc PșRj`6u5Pa)Y 2@ # l !j:|m&W &oΖQLSF{pzhBumF@3WAtsԗKZѓdH7N]lA}3IoBKlq %b]*&mKAZFJWU $Zp %(5izh7JJ,,vU*Y`Fcvk, tJ;͇-+/S"GAƍed-$NSD F3s/q3b]ʹ'Sـ͘԰Jot[CTWWMa =ZPCZ4Z.+JT"|rz4%[k}= Q! 6+/LO4BpEFz啾h2nfҹ oI~-Y %fpW1y Xj1&sl4 v.CTg&ihN,"3Ptjݮ,&nX`'e{5 7`盲}'/RK[Lх0SK4wa[45SA门4$*dwR|$O 0HH̜ e=wH`zs4-0 pQ'Al@ñ-'j W МQwpQj(ų L$VapzBP!Å] VzkwpLCZnc7Ȉn&i;VQn[۬Əv!T~DhxML{Y|l1naWŢK,epî~ގC mRBcҊi_V y-d ,V4-G }sVþ/XϮ[|%7m|},۴Ngw&vQ#4\яmoHh@`q_;;xl+(JE(7zSf%JgvmK=s[X.\&.Ѧ`6aWUilm k@*+h=BÜI*(sW :8,ٜpKzgLk:BbҢCSIy]eanvI.o0ǛS"fπvķ*p [ֺpS$, jI< mXeFR] ~wÚ^!o\[69Vxo5'ؼegiBqkXR&KШol]4jָsںj(RT`c=t3<7y2LOKZݖ'N-2I^@"R)R^>`YtTw u]ȭz9.ie1Sͷq=pRICl!JG?XA]RW}|Xא@1_:[w9ɢK6ovgX:=>˘uSiWf܂}bkC1}; |uFsqq8\\|.>sq8\|..>sq8\|..>sq8\\|.>sqq8\\|.>sq8\|..>sq8\|..>sq8\\|.>sqq8\\|.>sq8\|..>rkdk>s`b.Kj>gsɌǃ5Ml[bnJ@DBED@!!%% +兛r@nŘ@,3/c{ƞkjUjgwOygڵֵॿ+CZx\W%8xOoG~4ByA: _!L_^rtj@NLtJP?eO3mt j !}%C, A'.}-ҸoCLoA}/PrOޣ?,K7v7c!2@8g<փ2y`uL_4i\|ٳ<<24!~!`p1qtF.'1б7 49:]ʫ߸n_ !b[{?=ίn>,"BaTȧ~\?=|ˀ?n3#'4)KmFL[ 2/ȳV~0P~fha#qbJzdF'!<2s'|;'tGE"@ QyzғޓR/~D^y tdQ44g+_qUN).mi z3OT yM +Sk,`!GOEr8qx!#b381M's⩹;o~]7[`, |~ $+y%ЫZq#Y APW#GN-S*azR+1?KŬ+=,;@I~S<ѵI%s5wqʏzSZ1i8pG2.<$}X~T e:LRz%rdP,ڰqj<5C>UEiWLKefE)& K3G||@y>ߋqÏ~_o}w{o7O&DDP UTX("M,+XPVblD}dmlޗVgQPMYU JT'iXL{C-!IN6g~^}c`le|>7E AOY6:y~4P4?bpJ"¦#^l僓Hc.,V|ܼhaZFMYԮmUyDVXC5cy>~7o߾(竷_z CL>j3w{ ?׭#ܹ{~G~׮v Q9cy2{afD掼`8<Ȕne>ymx}|!3D_k'~"oޙ[1S}~'~GI/ho1}{2[9|BQfe;Ɏ_K 7X.]M:%aW>0TԐyòB6@ CA aS<-*}VV+?8(bJQBkŠp $d0Ku\#-jn`3> t> epq>~s_?ӣ?~ͳW;I?GhHRJE>|<`ԀUx^.֝_/_ߧGC~}"밿>O~& &%~Ɇ,"%F< yy#G׏oUDdq{O0[o$hMd  ); {tv>科L'tcja[HFm1?}w>qyPKJ3f/%SDidMLp*N&huxi }E}xyjztV1&;<= oBcZ."wӋ1б#Lݤi=o{`woSv]/qp؞ x#urCbf燖`;ۗͼ!C"SjP*BQ`˟ h i0K.lDkXڀ}1#<^h}UKC@-Rӎa'uVcOzzx1!"cNNwG2WR8%^!~bdI=rgɑg~K;H ws.޺߸3>y⍓<^h'n!Znk2B'8H7"i1|/&9>[ -Zyu;}f n -ռf\YR7j韞^=:VoKKǓ:YE+uzvt\: Q$)_Qr\͗E}JA[^FNiO1@('UBXR%j3ʬRuk~J_MjP gF}c$R HgY.ߡR?[v|N0r`2㏞C.GɁ7=~ȬCNq|A\Di 0|C#1!Ihsw-5Ym3Ճ~8K@TfoSS<$ |ɢF%!O88q8鞋\)sËT UP@~蹐\g>"EX@Zܓ R7AtIYU]X\H2dfUqK'1'(Z>$yGO OJ,НfʐCU(I9 6"hEř7rZ!sXf }WK+mF"B_b?DC\%< KU,f}%W7,JI. w'ZwiJ3*,6O|OBiUVJD5Q9%] j$ŗW52T⠓^)?S \QQJ6R;W_cPp;%SR~d"zA֝Df.PA=lN?=n⻘C3 Y U0ڲf5u N Pbo=R,Gȷat%A:ۍh1L<)5 lyq$J@D:챐]M ,vgԨգث*o%s9A%GaSFJ)piA'8i4뮩ij&'`iG,6aA|Hv7Α!]SXօy`[ժ2y֫PڵJyHAu0QnUĚT"wOS]7@1Kqjɣr6cĈ'B:$V;l)(4bqT*;}~LkG?'bQr2l<<+HWG80k2.Ong}NA(&@չ#(R5q(e -n)enܽ-qT\{8gtz21;iQT`k6%A)!(fNH'͝ɫPEl2No.{v80 *m"7TsFXəp5%sI@)P>1 8s.7M6%jo*YtX]za]$yh$8ayh^=(A ɵz!Ȯ1L?Hfe {@u.Doh!H_}YAS)a%>9,r.SOHot ˭p}ryīif@w*g>_&& 8{qSqܘ uP}Zb,yV傁BtyN̶\w8]ue.aa# &<'2VwPv*%"M<8mة aE*)Jnebݪ: ݦJ9A]ٛGYccӅF$XaY)~U dUWf T&SǽoIʈ@D՘󃄄@Z z;T\>NTRm~z)G! A9/}MwJi1QN?9"_n~r"'D1GR'T9n@Dj-RHvHKw:zGIy I-ِ9QiP2 黠tX*(syb1 |O6tlγm^U>]<|8ѷp}?-n7F U|\ hײu+mCC,~@Ň{މC.6I:6YNf@u/ vCӦW) СYs愌 yvh KT9dbKܗ\r)۬@;: -$)Ntve_mY ,w`J˺ {^ l˚mpuZ&Jyos~2+n{Kv5|),v.:X67G7xwUBEG*J/ z{5g˫rXKU.wN;Ps])`{إw6 \p/t1: w{A\]w5 RwEK <NƎE6 [Xv~PѬmTPzj,+$z(eB;U{iDgaޞ鞭PazA}mR pv%/=rŻҫ}9v9}0q;eXKp PWcQlP+iwuӟC R6e6WJv-@BF8(n18i&A a ]pRJ7U F|.oϺ:2Ya|ݼ MŃ%3Lo3Ӑ4N 8uN.T0Xʼn]s^ub[6u@'1Ŏ]gFoUC[|{Fsti ̒Km>jW}Z B@Fڧu nTMgh\!'nȽ RT oIzAZ* uwp}o^="[]OCU;ltoùokjwa@ ,x+,ZkT `VN- \qȡǻrC &V1NP[2e^UxB"Eo';38_a2l!m+RufCVâK WMKX^)Q,ZX\ , ˨EK]f/)VVEǰǖ8O]]1~R/_~e!R5Z0+ޏH%w>{g6$٭>A¡=p'NllI\JG.l=]U0vI%;.X 1vQUI֮Kw:ڪpvkHXnHqkD:xg0<>.PƆ-=%@*\M4T#NYhJJloǼ@++G;W_P=d=(dr>Բ4_L43|)܃ t\бC6%nY4m}+;lZju,6ΧW.A(o:h:x \ĸ`x0_eהUj Xb cYyy%7$'K^jDalĞ^{Ñ+}T/қUyl \k~`. Ky‘K֠t z VIzW׶wۼ[B~/NoȆhrofS S6vR<]>oYgK3Lfho^|gg0<)=9\;!= *RCv|*J4_S,l]?KgE>_~ B >`03 >`03 >`03 >`03 >`03 >`03 >`03 >`03 >`03 }`g0 }`g0 }`g0 }`g0 }`g0 }`g0 }`g0 }`g0 }`g0 `0 `0 `0 `0 `0 `0 `0 `0 `0 q`0 q`0 q`0 q`0 q`0 q`0 q`0 q`0 q`0 >`03 >`03 >`03 >`03 >`03 >`03 >`03 c'ů( :6 l^`03 >`03 >`w,ΓEQ%1J a! Q a;ĉ@O $?l ȆF,' ؎C)k! g+zsNթ{gZH6[u<Z /n槹a8}V7j"?_%9 WQ[۷W `Eں{7_́~ll+'di<n/G0| ?-m;ue9o{{by<_ zgI{e*CзM9^sYzZ |p+Tv&psCD(ǩ2|9_#[o~Ixp>'#!bm{>brN lݚ$"ٌv{Je{rO[eVn)n]A{H;racFHή|;n%Ae5&%{Ԩs*@}?HT^,4)ʃ.^}2 }2?//̟oKnR?P_ݴe6JߗѧF;q |_(OR[@>7Nx=?Dz xӧm]PwR '1>z޽vٍ́.‘:~ /+r{* l\jXT/"#{7CPVMU(5v5{T% [,h&9F'R_`+*Ԃn=A0g9loBCcG Pe栗BLC!YR[(N:)Wjdkf!TRׂH֤>/ϋ3N%wXiBҼ.nf^=Ԙw(iyC$c=%ջ]מGi C+^XtՔI"ewk:0.`l|?u釮\;D9X|?7~o<]DKu0q&߃T_ycδl6e<r#7]j7b!lH Mb(݅ڝcި(gSybji Z1v:eh"c5/O$^:>1-%' jr 4{jY3AJ…fǫ,lŬheb2K}hˮ moF9۲~Dl@W9xbgh5QX^0`wo¥?BZ Xor.I$D7$s &fT<.g?=xHKi>!j36W\A9{Wl(dQKj٢FẙOD7F&ϝIsRcbQo:V<Rٹu>ZKD"}$tn`3X34uZMxqf?v JUAV_*Q=;P).yMwJ݅ W;!U+0oѫ?-wRfW6Ì*w(GKߞ?|q2;rE+}zH ѲIm) pǑ@S> Yٓ9,P.,~ &{=.:vT:f8Cg*:k.0{O+$v0&zcآ)ք5`6j f2yNwwy>_'/]=nRdyalbgSS<3\=.92j~%IBEs5벷رmAUW آc[4pqꊟØHσ7ǾGm*#M@q<;vAuҾ p2wӍg@TR3"tq>eP5*^8&5TKuG bl)&j%5j8YMN L%JQsQȇ^8ڒ`,@ pAM>pPnHlCv !٥N[g/} _3?Ӎ`Ra )( &mE5Tm!fv%0=̩/y#1`;`˘P;>|v74f(J#^d'GTWa`臞6!jR2`pgx8y1\@j >^BPyQ81mKT)ҞCI}Z#x$[}Mb'@rWh'lܥUEe}X&&JR 7aIG9/[XR6kXh_RF$NJ;w+N$Ƴ+~gwUo҈JKG&uNg ZtIjMLr[UdQf`mP_Ll×HK2eS0󡧯o˜RRhU 2!]b?O EP9/]4 *lZS.ᴮj: b5PM!>2vu͛ *e<$R+"hIɤE!AK:`7y/uOPZ#mof8"B"S_a}0 -$p`- Tƣ-FB%ωvO_g^?}lv'ʇ_Skf䴈HCɰR.5ڽ܊ Ns52 U Sy)(wt$y;+Q35iaSqAi+ * ?`䥬4޸ ,_g%x~RnCir_XZ%oJ$[UeGxQ`.2~L(fmP68Sw"BCW|[%,uN'FVrUEX%w rȮZ sf(cm3ڜ^ &buy}O}CT MFH>/~K׶ *$%$>h*#jZTl8`3>6l6-R82UMA\,<}=ymkKޗW17j<9au|TRva:*ʅ4}tLB59]\tXfŚj#uD isk2Rv>GYETYnD>r2R?&i$$M6bŘYX\ҔV[ۄc%F6lS5L`b<}__;+yJ|4Lc7'=~[iz//]Oo:ėtnF>罺ufөpE!#leL\,ԭhXUγ*B8Tn-G\?Si5+}=KYVV|;Ade|A>طk)4"nyﵐe1*-4-ybJȸGd "ZL7 t {Ɩ)|1+ą$/[SdR6SAaxB3RبP0gN>`$DD΢5̘6ZL"VVSA>~_?'nyɵM|ɏ/vYW/7>91E~?m"HU֢q\Po~~ۻW'M*'y MF[eF{4\/UisN-G6PB bȕ&d0T# .}ng)mBQ廞6,0j!'9!IsύR lzcbךX +$t挙q*=Jv|V ąQT t~p?+T %L{>,K5j"l&7Ja[7b0UŽ:)LǘQ@gc?mWogy7+K|;/v62EWX#6g{KҕFj<2Dpl/s_ՃaK~OolG«MtLw TXb,t@ 4-6KF l+);'cw$\mʋ?}W]ݒٸqeまq'};KA?1}̮m$Uj-U҇D&hu>0[#eU,F EIj+k!r}IR AUqX'^틨ѵ:Mv@"*- …U_j2NdbO%rR Quu4#ğlʝ +}_|m8l&"jZƳQzxF_DĐ w >lJ ;I qTcB#1ֹ:ܜozVKIҲȮU+nt9)++SkbT°׿ &eDI_?Ǿ cX/RK ~ 4&elB}Zy"#q Yvea`U%`_HtOFY0@ d(йvp#`0H  c+崶s5rt Ɖ0###s4ݠJ;&tZCK'HEHU 50Gs_xx|}O~1 Lzc;ҵϧR[S&G~KӲ<;??uDC-@i)D"*fXI.}SyW7^n#t\\Ls I7w_NǸ슩Elv\)R|Jn·?y[z >6VDL}酇B6k-^ۍ2yhib%ݦX ~釃MpQn>:D`| ]P%3 4ʲn5gHlʃ$ U -& kMK~ c3tj+tn&4d%h3D>%$e8O€O\|S?G_1GCHyq8o'Y;.!X{l dė2I~ 4NŮD*OHsv*P$Zъk Е{Yӈt3 mMՈ3Ps5P ue[:i Gs}߈ ̃W]ZSI<Ҏ}y.^1w#YLR 5ҿ)8-U⃷;۔ғ(`흧jN%5KKSfwIZXH4 _??gk̬C܇i5{cEmt sʛ3v)ܶH6i?Giy_~YF2nXYȔd#ur&uJ JmPISDբSY%)޶{n6gg^>~[zyxR;nϗ^ O_ɯ޺}ǮnB4w=y3/Y 06`7 ͯ8ѫWz6XqZ[@URv3d2l7X,I~g:}v03M83ETuG|_=O8yM ,s7N a o}##+;Jh|݄} {uy*篨-JBfT~e]uf7\都b䥾~rn~CSE j4 V|A߸j9:Cl܆5 A4-:cl>򕓨iݲF!c81xE!\CO׶Dqj7 (%.ҝx޽9}i 'pId MAd*qmY>g rW2ݒ&{V=A8Vq #H/+ՈpQ5n SN& 9R ahEM%Ò= @V!H8δ^]Nekt U Ӥxs*r~J=&.G(;ִɩyE~)l2zͤ}S᜜n;7ѫo-|7!bmeJc4_4.yVI`J၈^YBhE׃CU;&aңJ*5BQt5y~#[wŢ&a?~RÒZ.Q1)flXДv%.'tt֕V jfUku=6l)^[PdzBVeUX PhNcpdaGN:Bҗ.)m7?_߾ɯ,M,I?kR̬QmX8ّ r).deBM%bI"2qv`>݌DF6gumM(1 QrRqgj|WČ2h[ "!Qde$.)nEN" %tpoFk8fuT&ffէv6|S_zӯ$\Ж͘D >o1Ve' SPҤ5K9Gi0`KKhmsl/_2mWZHڎg0lvs-)턽Ȣj'j sz$e#$>Z#:c5yػ?3'1IG |/jLQSl]-HI>ٕ>҈e} nS˺ag%Hmc6 xuH62̶%Iųޚב3tՎSZKI#ٺQvA1DRGz}ǘM~Q/M]yyn~֝[g<{;kǔe)9RN׶̱ox JpM)ɉZM~!Ur½Zd?5j9ieSht]V­:G^ʢnu]5djdO1!O7m!u-z١614&)%ҵ>ֹ5 x/I!8ӵ]B9a'''syn?~ks~䇞z'1)e,6w!|7tKb:=@5mZuh4.U_D:$Wi!l 4W.pF9qdL/԰O;T"J;1)v/ H!]ZQ5ٌ*@=^͖ -V ou_2 fDd(G[dRZϠrFszW !`f&5MQg$t_*jԼ`]Ue %: '&}~dۺ bϚym%!= v#>DYlрJE3l7elgxSfa X#OerGds9#r9,W4|Gg?eh 8SYn)LVjXǬB,{ջR4 S8+osbjCR⚞뻼 DaNGtF#8>!WLߠ|&:ó6< OTmIM#OfSYi .AzPBpD OD0ь󭈓ܟ?HRt[]Y|(U 6SNEn3朗ʨU 4KӨR$.:Nz\뤧:@J?P+۱8!0oL4L&­*>ZTHmP`k>Pk(u6 Sq0o`mM1pc5'|r#YVЋjJ LMB%8 {`gSf>bS'4Sۚ%7J-&IzjBu%}-*ߌ6ś ;ԉ3TW|$;ڤڏH3ߐ04gXOz\_guqnJfؤ]ӨFt]ǢyR]ei9M}\$Z~LCnJf 2LLo(ʻm”>`Yb0D3x&I{qm+^I+KUY oV[` `u"52Lٍt큖6 f\rk4`b@ڕpUBnZFl}gmv8^vgtr}etkAJdI0M&5s:D8/W~fkA-^F65¦$JYK&],vxZuq\ivjd9P$Ix bQ ɮM tlN]l\(nb2iɝh il&R dclKD:{?NNcMP %2M>%5Xr:s񆹽K/:O1JeCvo۪F'7 v#!WcϘ*2&sq1%n!UnjN^D3q6 sF?zz!]rָ$%ArUgʩd̃cFM/5N& v@RڅXOFQ] U,"A3x 3TRߐK!&f(.@DGXl4ؤքV2MIiC,%7aQ'~j)E)kOb(RRe 8KXr9Hyej{9hmATʈvJ-_#qYcEu UhvkoPE3V |ўN 3u Ii}r8jt_ӲguĶ mw$׽+ި2ay]Q',d20U~*dHՎpRƝ6n!EiֽCS4 w'jOI /mvπTFSf0'6ak̼ Pc.JUV".zG8Z?ĒoSnd6l֒N@M<*R9Z/74wVcz:9>PUn}]mSTH9!4"\$-`J"f%f>:x흩:\j@ZkkvkXMeljۡ=m,vx|jD䀒Mfd`ZXH͏' ੼Igկ}T" 3χ¤zHP! H&n%=͉sLdVEEϩVHjmΔ,a<'dct­_h >KKWgv[Z(=J2vܛsc[6+{ͦsVTIrEX)Rb(UJVa8]kSjeÇI?/jt"Oi{3lwXƊHYHS~.FF:ʓz pLKԍ%qĦz<%CEL?LsLFGEg*=BW3fT_vm{tcDP5R}I,oii*= `ߚZS1H.RSq";QS,I%B=/vӜ2t~;$YBT%APnT[%!VWj0 2}.Mux[̐k0rM\H;Vbdw_xs7ȍUܜ_7 M"7WLĥOVlU$DLͯX*x쐘lkkR88JojѴ?4HLjd}#u L͔#aݖmE*YaA]X%͋c`E~zHi@mXJ?Q*Cۼ"-V'JR>Xgn;Fg lsct I2D̀RCzR/HdaQ#>݆6a7)J!J:T.H-w('sӮ}~Uc)]ǶX(/#(B扇UBqsYkĜj)֩x;Rdjhh/eFi[v/d2dFa22I2i\BbZ' 2Iـ8*"Jxƌ`z"0I1Kbc: wk&"ŭ+ei3<ƍ}~.IؖHY+OHShkϡ#4\b{MAm786$F[ IZH-[LFdxDX`piKYY[T4go??^,mc.tyR #^T;TVq9,Itҕ*ZXN^XjDI˲&n.Qo`-м¹*6?`PsBm$disk0Jr=R@thqr^S lT%l`vQ)r!QPs1Nl&id#DM4A6yхTݧnUKŐ {o3(T\[Wj t<`r$eK4*6Loyr'An mPm$۝]'f$4l^cin)n* ȅM!7%54"{6<2\ËnLZxg5+roUF`B+2:KfZ4=I"I(5rJֺ̀tfȄ%1Yn )eZUx<d{کz\h] ZyTzb$]UQRdnT%o X 6Qk௻yT 6~@ ?N[F@*yǗbrpj`9&}gnB]T)J?;r Nʍ /&?f9Ot2.M JT!>WMO!($H_:~sra  Nvj7tY-;\G+Fvt"~v!Lg6:*>]!~u-7 CU%s8> In0u+Uk%)_B M}$_57m@tUi`z8K wV:JmdiOl8 з3*'uH]o1ǴCH  ǰZIU|Po*J]xIc|¤SH-$(>/򦕖%[+6hb0Vykrz˖x/F3Im/xUzr9$! MMkP¾E3Ĭo-֛Ԧڜ@mg넯ү M Q ((=Ld:ıh"Τq]7;sNDrͅܘ5{X*UX$Ȧ>a2@T)0Y ߂[$EB$U`RFdM=,4EQuyD]T 5AjdDU+Q+(".h)bHVpv+a 5LJRe,V~8Z&GUˬLV1@#I ;^ѥCjPefG\7%#10ѥGCF!F6ljٵH͝9y;JOHH|3NJtuOSF92ԂeGk6 A⏧l)s#j#hwm|R.Ԋ3IqI$VzY}sSTO>*totFgق*|t4[IZyLkeQc͉HadpES"Am9HQEe0ٮ*hZ;iùuE/S YGj.ZW7i!wY#HmY럞v`8LF֤.zb|Tt"mLVjIJRW1X*E!TgɮZƯ-t%:Wi}ۓY$Twb3T!C՜)ປ}f4HU㲪pzc;;`BVY딳q6{ 8?VWКwNQwƜONzرs [нXV+a[izȴ9Ӓ 8rcelFRJd,=Qf)]T;MCJ [YGE_NWAxO| 5:Tqga9crf4e $-j\ ![qYٹE8Udk Yėe_y=J%ۘF٥$̺`k~1Hm$_ZP%-w%z5İލȥ6gF{IJ'LCif@Fn2p'c@ú82r`f߹TApu ebmL榇GV%JQfI7&P H=NHt9I5 y8F;Pfk*6TOꡖDW֤"TĈ3WiH{&;ߪU6j*%Ok4ī[lcttFŀ8I%ڄj"%ڪ/eIz0#E5~7rnj723^(|{Rc/R+Ya\& @Eb~薋߮6V+&"eo`]î򒛺g@y GM^A/{ nTR1Nd#$"S"|Q͘ZCЦAUF] )Q{|G &8@H_3*%HfQBuKTHbݣK Jԧ$]oYiJK$kb5\\',őԖp6H$QXQ=ۃβW+$X<|kB_=.U@IhAq;IF.="B`G{Zmu ݭsB9$Ҫ1̎Q9^ƛMؙ5+SV|v L6Ϟ촏UiVAԱv&.W Dƌx!ƚaw ܯ65M.aafmG[mֻaҋJ`g/6U, .X0whPi*Zv60'?a (X?`gHZ$13@Y?z]ꩶOA*i;Ƕ)̧ liTdK2Xn޼˶qR{XǕ*:i. k}ThAaA$\%rIyHb tF!J) m٘6 E81~HeN3[+ӭ3ӎ}1X渵Aq>J7,Y=4~[pq~iRR\8{JĪHOIMN,0)[z"VT6*Ѿ%ÁZ[̙ټDSG vV+nTCsaf{btSE7w>t}l8,\_iy 2Lg:\uVCRІ7ߦş´[sr>HtE{h~aph]+_XJL2t nQ&֌otS0zRq,^ PaWMBTQE<5n­ |8­=f1oő[%l?cn=xu8kŎcOlFwTq 6'jp!^|bl:[b"8v{a= yE|Z; i+hxU_4{{/.6K;$`?xO Ӂ8tb2֚fјY1'Ty9/hm:Єd]~Lֳs "Md拌$ĩC?@T|҉#ޫE 35%w &2 9si.*ILJ~lj,#Qy'By׌y Y9#S<2cCEC8Lol;ɟ5hyNc9ޓeSuEԥjuK.+7{nR taOzV{2m|X3-GT,뺨s*(X,n`8vf4y` [yƪa7N-ۖEQ:%n8n&d¥i-u=px/-2=_mt"q3d:mhoʥǤWٷΘ̴Za-n 0%\ɭkM|7og6ϩv fQ;G2"<ӥ-zT~9yJZ~,мF2g}}`pU3lTbCȌPb˗'j`L&+$!$w67?Q<8z]>l2I1{3Xc}L$? f\lý]ͳ8;XW$,}}h~TR/WƾGg[qtY%Z } 1XBdžPG ϶0iN : ؍9MۦoTz9p(J- Hnvlpd2$,h^eևwctߞKsXg K2ݰwlLW=Z2$ac3}e$b 9^:d10WQ[&ئH/v[l_q#waœF[!Xif\JvM s$-\ۭJmk,IGڍ h.vcOpeHYY2*~k x&~8h3#_| sôK0m/R}4P@O[G><(eF䲐jEHs3V֕H7vNUUx-F6X7bn`%ri.B&ά>07`-VƩ@U(WoT OludFA3ƥ@3~ҽ4_x;}}9Ǔ)mYϛƇ9W?QHb=zf"RgkSWf[cA` p.@;9b>v^lu~(}zZE>+6|&ԴoiM;4eq :͏78lB Foܼz;9o;gQZ.JͦHZ.wC1p`g_T<46uuݮ5SÚiAi⌬Wvh⣉9poZ\h8AYY|+ݭDX_[k5ڄ *sWgJ$ENg]@fR'VGb6`@;9o3,"\7:mxlncTd f%2kͨ`!KR5tĜP(ifa{%:Z,YOݹ_Lt `Hcaޒ߽+odV}h~\VGa =YM9[89o+ogׂ͓! 4L n%f֝L>ZR~n$gz&.LNܹo %m48sGʛ ^.ڤ渲B$"3[ SZG+.!h&UaJa4mƇZZqɆsWti{6ޖ]a9lb}kr[mM&ժ zJ 6mV dIJ4'M_{M>2KSM4]?vufަjfSz]]Q{3 0FҲPfE 1Z0Sdts8_n ӟ-*2Û-Vh.0ۧL4Ⴥ|uu,ޠsq})l<(,.\ԚUѡNht/s۞f*yn 3L%}LojL?"<#_t%o@O.}Ҝb0|N92q*1i0r:-?F#3EA89o+͐ ,Q aaJS9m%1\0%X~GbvMmh&]c:930;}rABg*&$UfpGt?mGxw1Vd5}\I+iw1vWnŹp]z GҺts8Cwr6KA}A_;9nL}cgnp8pps8}p8}p8}p8}p8}p8}p8}p8}p8}p8ùp8ùp8ùp8ùp8ùp8ùp8ùp8ùp8ùp89sp89sp89sp89sp89sp89sp89sp89sp89sp89>ps8>ps8>ps8>ps8>ps8>ps8>ps8>ps8>ps8}p8}p8}p8}p8}p8}p8}p8}p8}p8}ùp8ùp8ùp8ùp8ùp8ùp8ùp8ùp8ùp8sp89sp89sp89sp89sp89sp89sp89sp89sp89sps8>ps8>ps8>ps8>ps8>ps8>ps8>ps8>ps8>p8}p8}p8}p8}p8}p8}p8}p8}p8}ùp8ùp8ùp8ùp8ùp8ùp8^aYp8pkw,8yùp8ùp8ùp8ùp8ùp87-ˮ\{_E.;;ݻʢ,T%@XB D QHA  TB⃟ %Ȍ/^sYki^ ;nfDw9f5c9+o۾y> :bu?_qO(G;s핶R_Ѿ+[i<=oG|_H ׹|O{mӏ "W}܉[ L/ B^{ `M]ν|Mކά=N4|İ evHSoS8?>WӃ?v-䷸f#3?<cZ0  qMM:z37f˗zzl&c>YeMWGuDPfؙ;÷Nrb1PVG^u+-C^ Û ~d}!G:6{=;b_`}{IٍU5ۃG:vG~}OؾOqsH\ Xq·z 8ð{*|f<|{ lggS@# D6D^Րm2͜#!emH.T=OH^O\L! q&K%5~S5!Sw%$ߪ󜤸I(tfׄ·+ 6h$TÊ3ѝ:+M~:EsZlH>ѽe4fR ,齔/@U VCyp&X lQc}PŜGYe|ï bS lS*yl['y,<;a$7) n3,S) eaD>jHP^||YyvkgVg!ݤG aqbв48ak؞T?uiohe{ u 2EBh0L"tH‚GCzˤ蓱$mn 9 k@ :CG.?hjQ*nU S@QhSo#I6NCúe1Y 谁lT-Gm3&֣9CRwa`mɆ6b||ҳG6蔌 A]YA( &lf B>jfaܣlD'HP5:ϛaʿ.cySՁuk0BJSo$9v^˘pM؃F6'/8ql5T1* W9,O!9B< W b{g\;]P>>ڎ?w]r=`_tX߁( a Zb鱁µ< r#&a*7iAۈUS$RLqgCkz(R:Ԃpr">h57K*Y6;]Chaa'#IHdiC \zPI'@ `d"4MtLBBn?NO 45[hށ 4/PX,]Au`IB{ݠiEA#}>T2<S@w-,q7,rhREAA]NΣ&[=:50MP3NMGSop42wu 5o<4S+'lgI߷WjpXk"u@m'?aO;]㈨]zہvC ֤٤Hd#PWhU bFV@abY,uԞ[H+$N{yF[?҃}B'K$7!blւD tfG;F( $r=SC|\"mll*PMLF3s3/43fd0@jLZ1ȼ?Kj *讉YE2щ199x5D%y!I2E`rTPbµRi'rQR yhdnWTD=b V s r^,zl/ԚBqozi#OnpL+H뎔a᥸V/_+OVV~z˘bVNlߣ܁Z7H/>GދũgڅF "y=[cl!*9S?jHOwVS^RR6U@r\e_u^hZJD0)+s]s%$)cUL#!9jen"CC)<{ir&ODBjYN 煹,-QYOE&Ϛs\!/n2= З @\lŘzx <|;MJ*(&TpZϊ:L 0 O'ד'!٫sKJ#ӖNkv`er]J®<Y#yIˋ`7QAˇc@Gӗ }Pe1*[\( ܐb0 ?n|X/]hl,玒=@z𵢺k_H>Js,X4Ffw)ט7&ɭ%dT6)Կin@Dr,P*&doA&JQpOj1iv HrL3I0a7Mʝ'Hh\jd 6h'fG-kg@YJ;2\,A[ Y[Tg/u-8M a#b3Oy=G0wn_9[vϯʓq]S%uXU]ÚTa=[#hnQJ @%HjJV*DUeV~AQU5Jzboh]-ɬVZ@ -+ڈv#bV)aR}>ed\9MaD*tVQF`T_@=~ڟSoڨǃG}X00e< b|KilyǡD:B(H"r\'1y:lOZg?r#}IKdAzv$XΩGL̖БoA05ŎEqksHzS'4zfٴS%[:k;v@dzA+n]f*9zY4EY_m6a+}߭{u{~շ/ܹ{A7g>rk o,g#|hŽ!g~[ v=Ϊܼ>R*+A!,Fm[#t:әnTÀ Qe+k@ݾv[D=\1)DŽKTt~h^DJn2HCS VO}:'Tr۟zȯIk -s;ZMΜJO= IRJ撌$e'3у:t+ЮAulR Ka >d>;u7u1X6IةQ O#s/4.<ɩK 貋<sLMO@.q"׳A/u3ֱyM!~ʛ~Koߺo'_'O՝o?8-_O>s`szZ$*140K6]2[:KvIM%(VVZnҧgW^!¯ϺgӖ̤\ ƶWP|7NS)풕YelDF$j*7q:slv̯O> {L@ YBR0[Yʃa[^L =/d?(tg `v@޶+3G! 6$moL}.Fiu}C&9)brwCUHx mi& GةQc ,K\9ܣEt&Y'꫎. \~y:U41Q'c2J6r[.=eGm/jR(P|S~k}ꉧ_9S<~MD֎M8X{?8}͋u'LIb+.Kw%yNF:S ͳnps|a1,; 9gh,!p yOWDAHSz{NĘ*Ë (EBؤBX] ϳ]_RlB'go_A*D!"_'g(g9f=KkCZ¯{ni\f:C qPI#CG-؝ɯ25l%_ɲ,5{jS#ݞ:fѻb ?Ά5$ʈDެa< GdiD S< ?;,v)nho6aKTZy5d\zKj]k.{!o;ZL\>=wϽrwzV䷿x\ޅZ"tJNۿo _yYH=.6S?5_ղsǰ 03y6y ÅQ'.X\YE_)pڋ9dEc7a< x^^o<lSߓǞLK1-vLА2RuP)h—sJ׻;A߲ooe5I6m9 oۀK&8lVs h` 2-x/팠N+LyHM)L%_N P!g[dGʶ$ta0 Ju d:Nb0]Z UNY G%9ZDrp1('}/S[pW7>\.3} ggM}O^Z_9^Y_=Y=}y}۷]\ҧ7u;{^݇o_?'>앿['GHY΀6}AǿmOt`nqgCnrcqn;wi_7!Zɞō%hhZ2K}?ʐ8l~gw6E #kR9JEtU!U-=TnW RRQG9571UQlnJ|k 4L}1Y¿ _cRMvocO]|׶W׿7oͳwժ2z u** .])JqidPx@Eqy6 ;MT@z[ #}K6P<>V>L._9~qڃ"Z!lBU g3$8|_|pzJ*Opm{~ojOɻjQXE#0d(A#^V-"R ,,Tf)T-#\Z L&(}j╓_xF{T֥g: 4ͽ/v箝:[ِbm>_ܻڝ_sK?(XOVTj`*\s>8iR2;~R\ P ?>O܈#q |RKv9jCS)<3rNT{8`-'ߥna)ih B)5gǕ5&/cG8{FNqV59ٌڢcEH䊬p_dQVXDa/IjT š0շIM?ubXaf/go_K_z/}v X VwϯO_yM;p{W]|PØw?Q"?衲SppxzEW_bQC/5ar.~k? N-yxy|{OFw%%tcvu, [XOY{?]ڟl1}6|}6>Vl& `n;N x$7͎dW>T`ކ~?~r4f Ag>saǁJcyw'>je1W/7/n_= (EG)$ j1v ˒sAȟTs1'OLj0U6wz65>f:nwNKS{EcAMƘTc|wZL~Ah#aI(Q>t }8&>҉Sv72TsL)$PX>S5L{\MU9]kłUʩwjTWy뫢Z؏lx}+o<o}oOO?嗯~=uybqwPF}ůl?ܓV[Dy Y.ẓ o~K/S7>oܽ8>`$EFBדUgD O\ZmO+"`O]ɠ-7,b9YC #͎D9Z/jnx/H%mqzZEv ZiM7k6?8qH!+]r6)ORitZh(o#a?篟~+/mpVQߞĞi0.}Օvސ/!8L<"5t !C)À_땷?{DaVO_/u.Up8dgdM¾KGnn(7.~z_>[_?Z >҃,azH8!n+3^;]O=g^wwo;Bۯ]Vui.U(g.KCrgJkOYrǸ*-1o~ʈR@ulyiy>tÉJZ$rټzs!Je;3u4G0Yd! [Zj99PءD*\!͸Y#i\ۤt9m/M̫2Aa4p#gND;H@:$8iuagRbBB}EעxLi <Vc ˮb0% \z?pg>䧟~ⷾO]~-//篝>ᛗ^w ׷?յֽO+2sl24a2xO6\|+rb6+NM]!Fa DZ E%vYj?׫Uz2\-tC <0}k>@ƯG/!dp1R_>nʧ[Jt-wr.R&d_8"xLiH$ iÇ&ޕKbXE/Ƈ oeu}Ӂ^Z{oO݉7we@,&:f&A-,܅[)j_kdu`;RmA* r &"I SLu>kF;Mu sdt6}Z[7u*, ٷg: QjI/m`g<XeіTh C%lz P!Y:銚J-rɎ|eR>܄O?v#ٿ79Hc'VZF6!hF)GPʥ=}ѳ>*47m$3hTIfzu͜ , Đ`/F)pVx}]?DiL=`Nb[X;*Ʉ=Cs2TRp8$uPm9f2STh9ԅ&E41l_I}.T h/A4ۋFUDr0 4 aQ b?v24 SzџR%Dbm[[Zgyh‘z!4JU%Q,JJzYOF܍eLc?[P*=eO"^_W(`'A!$ 2pF҇4,aD M E {\ϧA_a@; zyKtRn]:7~也_Wrt}?N?om?78#=#RK&fJin2z:H&`T;'D\xkP>S7(9X6o CEv :v )VX)CJ5_d8uMINh P$CcG]<*B@qΪ\"I dbO9Z\lWG3LG?4("7ykM'ȝotpMvVUT#i*K'ejw郱.=yy4%kJBɶuJ3*.9s+=9$r&wPI[6/|湫_;}$bDSԍ#;M౿^$eT83B&~`j tRY= 7۷'!' C1}xҿF4uId6'Zҍ1i= N H7iWG:hxU +a=}9{bV#n:lh ιta(&y>t3ha*u!kǚiFGx"J׹*QYR SʪV;)O51־`j#v:Ri,Ȍ9,qIlGIݾφs׫@#䬖rv Q&,U5sgJ>z챽d>>W(em"'z/8z"9Tsc󡁽3VKr"O\l"fHr3:m|k#iG Zqd,=yZ!#նati B"%;5۰"*CW=ZJ$?``g Ay@>NlӀ }kM_%{5DdDz\r4X+ )R2P.4h FNU{;)woSSIWgX ylb6JTi(AӂWT3Y%AVt0™ׇ DDF,: +qٚ=*e*q8zi@?uDi]PX1ё"O JzUA/ s#SauJ>>iԥO %@9!Er Xx gjR>JzƣM!#$vgcxP _zTRNɴc37Ɯ}6I V435M CZ[R3[XK ^Z,OfXhatqgz#뉁~58] E+3m&޳Vf\_SSvfCJȋj`a z)9XdM9q2FYȑOr{(S;. /bq2eiCud5jGd&Ƶy40$2"$izǵ''M 4]}8e~J/:/'m jIGΌr(IXw1<ͣHWj$zOS0v}hvż˞Ywfx*lʢ'jzfx3Y#X+*WnPz2JNt{yX l(%!ϼZ9!jڛE'yLfS LYMS}ذҀ=-bZK0UK-vW,d9&7w#J'xZl _/Ԅm}єOW, 8v2yHX쾵F6aqXLڮ-ד&re]yeM>o6KmKQlr-Etc!¡$vCD+2FKhCZ65nC7~z%ϫJ%/PWɷ(:/Jpr<R Ƣ@9B"^a[Ė2\|lFC/'P46ӥO"vp 9!E[+? U~ 'o0〕7q7+W; U_mL=;YӗB'7V'C_ݡo5B: N ԌprWKlH)=l_0BĢ x +2͹K(4O h/Ę*:<{7.={TP=k4YlVƃ +|Z6+\‪ &F!Խ++|Jɻv_I `@3в&k%؈ͨ (#ۇI$5})^LB{l܅%=, v/npJMnYC"jM!!}epV:2;dJ#~#y| U'#Z9fa)ӴK;u7NV2Q۳aʴ7xN(6:$fhGDY1XMalTֺѾ8_m]NYi[D\ 3:Q6i.WACp# 4T{ s )iU]<-~^$i<n"qiqmfUѰ$hE1u@lQ`Y{` $c"a+Q*:6pa.2%̯ u)؁HԤgω2)3*:8H_P͑Iq~/*O4b]#ן'fUҥMI qI[t룤w:,ݿe}caJi^w~w~9Ϟ8&aQRx^B<)  yL2FiVh ,=,mSb*rՕl^;בv3ުԥ%VVk$fɩj 35Y~hL*{SԜBӼU2aVyɩ0 f Ӆz4^ zpcrinM)Z8s2#: Z* *vLw*% %W.SÁ3am*N+aொq2o V"Î=%w7I>zŇ#/^ߢQ8VԵ"\*6>|]'rXK׺1>Ap@f,UMf1EZTUKo:7k(XF<&KCG%ZrC .R8,̓~B-6h΍b,02I wSA6"nh/Vǒ3 D4f%0δM !Qr`'ʹOEm Q)e 䮢F*O2MOҠ۫5hm2qI?U/`5em3ASLuYsO"Ώl\PnzI'EhiA׉pfCZE&N%»1eXQ2c //ؐ#9[>ϬOp-g2Axty ._npMH"%6od=$ tH_d1>^? hDceU4 rmZ3e7.io;\<ՙ5 ur%$Ѫ$mIw:k4lUIeN$NV*) = .AYZ'Dua+Ӄ2B|ʦ[BP)`^lcJ`/p ]GL[[ŏUVnD(v~TJ;>S=ӕ'@Ylzzg(r!:bn )c5Z]ŐZTZm돽t㩫xNGj֞DvebԷ Ud/u21a&('?^Xcj5 ++8tӂo$oW;nƳ dq ׻H{t [ h<I}5qlA^2zd݂٘NYh!oΙX5=,8HF.EٯA |@5@0e7c¸-hIEQm8 ܒjf*@>$ofNyfd,bĜ.iIC6;ƱaJ^F_t#/"\PP+ %MJ/莬M zbHFH`Id^ꅚH>DLSLFO5(.VDg+u e >Pm[fԉ\]u2G%s>Pĩ!"/ #Շ5?O^>YƁ*ec۰0֋dKXgIa(.vIɗϹAgZCm񀶋'jZFPJ܈,]hDczOܟ㕼Tqnm E 5Xƨ%ʾ qF@϶!fwӶշ)Q?dA7:JOsmXͼKJ&2{di+^A4!P+9:n?~!@ U8qY,Hrcd zp?Y @uy/:Y^3-Y$,q[X"=n2[H q>yQP9HQ;\+F<, -3Q@e`eZKGCB<Q89>--\E$5ˏ ]:N@R;*Ю,=saw M 2Vf!GDj\#agyj4 Yaw'e)¢xmj  .$r[M8 3`J2f-U`ۼUܣMȈPKBH ;X2W`dN2ܩv>L$ }M@/I*9 SzBs}2*9Kr!C,gqo[h߆5MdrbU"cMw>-VIMDvh(bQxfxeܒ$M9PBPj8G,X-,#:ku#np@ W7ꎦ~[FH qq\6z$D&Njx=~cb'}$P9uG O(8ٌKs p#_ KBr I.S/YٔY1֚v[/"bzr )6m FRVɂC SCxb&if}>1!&BPBMW=Q)I \m(w m!"73+Z 3Ƅz*#f8O0ttyN1& ; ,aPgkZ%]ynJI!n@Mf͈M_uSenoḞ?'o_?]rTeBOr%U߸}[LR]JC%&_5܍9%i&2c:4Mr zlթxa#Ccqt_#uVtEb6J.,,H{\5p]32W\*h\C-SM/{V)#Skla#nqh<ќ7PPfS64)b5t$r5jiMAjmpO:wȣ \BhA# Jy+j [7HfCO! ڦpVTYSn_J8^vtcV|Wz˃3ԱELH]^D?`U7Ј<Ӫ%)xGÖ]w(dc#ܩ5~YyFe&oخ`!/8u];|`%yQy0nuۃl/78r-oX@Al%|[}$y8f&}a4];}g= *i4V~zۼ, *nᮖt"!$mㆳ4#*.c My-KxvOψ`Z :es]ʣ9#2GK D$it5 dKx$s}t-!l@Mߐ@*X2Sf&ʀ6)i=m/Ԑ"wX:Mwt*^Ϥw 0}\ȬXه~tyAh)JTkbiQX4Ӫ-^A&wACJȁrF5_6Umlluͤ\/Vc,ONx.J}$bCֳYT5r#=^{j"BH_BBo_ɟe{ G߾ҍK5j>ecqd_P>Do3αq9{D=Kx6QʺDG&z @\<*@r95Ʋ/m@F:Bpa~d*xe{ϋ PX9|xKk<*P-Xjs/CB12XlF{>2oYf"6%Ժ׌KesZ%.¸#9BPћ\2 Ůpx?s5˭9CLlhHYW-0 b+JS?DE ݡ/n4^W0LF0 AN+PrRJ+(%6IR'[6imOI GI>(ͩ.2<AۋHd> Jds[D.&Etvm6U ipi>$Aow#Qx v:X6 j<`\KzxHs-Hq{]д8hgMXPQ7qAk5,v)9M:ۑkZw&ŜjE @:F3*ݲ@k@ ID32*nvY%TqBg>%a3Dk:1]u˚Dl#[ϭS|LJZpҍ&aܷE sD^F]CKx+)Qdko(ذyGBUM0d+ 0-&P)И)̘v{.٣5=?re;he"+pS7J<2A5p|H?)M,efW%/K ?5j#sPk9dF;[w3jޙΒvt t3· #1Z\ĊIˆ4  ǬnX\ v'Eˀ*nv!ԣI mF0P ~q^.e|_JRC_4cWSXH!LӘȰ䛶IBCv5nPjb}ZAE zw^YF3Π<}\+Rc-Y"&n|Ǣ'bn^ m{MtYk Hȵ!R(K:sȪjŒh.\*[N(_blO`[Ȁ=2tq_ڨg@-$cGA#J7;H湗"3Mܰ\2&[ XeOJ|oowEiˑ%@o;qM8 I:XxJ|nWfeh9,r4} K>Yha -Y+ȸP>Lh^Ν\i(3Tݯ]9IIɖ.],si2Ey TʬZ)]d(aܛpQ$ ,;жCmQ,\CNȴy=CG_!*T@*^%Ջ O'Rj]<Ɍ5a0_?hfh.7qj' ᢻ 5ELeqnV銮'k Rab֣j -WAMgnhl~C4^9 #MYnZ =4 5BY)a܄:|,M!zSPl3χdå>UUݞWBS6 1PsYDroTT+Ni>5y9O 8"uL]D"6]e{ O慨}P d C簷 0onZDǧ,yAP2PNbY] Gm7! =N5-,=/とiKЬ")@a*UmSQtݩ}l@}$G5'cv%;n-R3.9PFf5"#M52GD&;{7Jֳ.(Jd[ ~ Bv͊.|ΩT:tUmd54n^l_Q"/ܺ|re!vFd: nؓ}xyC66P3yH~1pa&ca0v ů+o^^w_Q͕a.oFbڈoo泌HVx1sj> `s>ꀁPC8%QT_"-@I cA&ap>?sH:zbxw!M{͸Z610N =7/:L%y{V=}S͍7߼X~DSd55\!.XK߆/}x$3>z8 s 4$-t﫱r,3T4+Իx;s'1Ɂ:\4{2평קU #4{FS!꽛:}-hN%Ɨ>JGæ>{WҘ> 5b]fonήs9IBV.>%kW2_=3Nz&8a6,= l9!^ CL&q@!|.9ݔ;$wکH7Ύj(@tL$Hlb/z Z`cm =+¤qf8@Ϭhc(yF S3ʤ^wvVJȂUn@fqgO\mכC,|dHU[$H{Ahӓ}:iœptqJEŅ4 ?RHVIsHSo =Scq.G2B5>.CIEb'B MǺXH8|9t(4kN_@ :?dۻ@I7+ϟp`iG`QTs.$6ҚYLꛨ?q!wyZ8,Y@y/CoMû Žt3vޛgv3[NYGSe&ޝ\2EOCNQ1#>*doLFWUrΩP<:bvsVЫPZTV"EvVUϧDWdU[\e`y=*lޛWsm⣥id9JdX= _%b/Gݯb9wj߳%A$iy pn!'1'gAvZ$ob~z\Q;D{C:{` HVn:Y>@ \H@>&47'v4+ƣ;|Z0wMG=scBhNdΔ˼P=wy7 8|Xr?]n}Rճ%N0O9fbchWG|5 HZtx(0O)>y+ W Ҕ=Hwd˝xeAh=[X"u¾3hCnݪ, ]|`$wCLΨL[K}A2'`8Y`V[dbRSS3 Ǝ9Ԥ5~:ld3\?4| 6&'jrg}AoWka@y19.M?&nRd0)uD:,'[.; X|f %N2is]P/lKE!]/I% 3uyѫ̖zնG1"[ڋm]c9pOdh )a|ĆsK X#%Zv'~֫t׸, eM6 Á.3YVH$[[J^Tj>vŽhdxC|:*?pILw]Rw;D_흜3$.GhYǸC}biW[OKHVIdM4Sv~qbki*Z(KwvZZ=m.ikhو=vn$vu)&}g9"`>zOt .#<O/>X<K( 0wwRzc+H& KLst;̻jY~}@-%jˏmg1à *1iHH&̅%CgwR;Z.vװ=~~fz`rIl 6_V L"XV9_yokm:yU"t:Dog&W >﯄欧]eZ '('tpk+-Mm&Pvg V^ {}7i]%7(y13مIE<\"?>+eʨFP)m&ESѧf;2V֛]L6xz]a5SjZhqhI!\|f7FS ڑ`G=Zl+ih(X9J3w\w5=RTtRӋ.M; qQ QmI$9qeM!s|F{⑂DwbEhjvz{c,I4r)v*'y(Bҭ8c}Q={L'3Su"՝p\D ۠I^SLw7ɪv.nQK߼cG4hA+*,LPӢXt[}i#ϭ4ɐۥޒ׶Hɟz41*!C@cI6=tA8fdxJdI)Nrjn'+0$M9hꉏ<{!8V y /&xX4/dzD~uB`B:9bM~^1~d-$e/&GLLcNs=i.͈X2^Ksc{k>;5բ/53iG!$B=۵.B`lΞ#f`jצ޽ 8&1F`: Emd 4 &ES܍>;sOb:vGg$ ص8ZxoE;HB% ǚ]':k 1%MR.i^lߡ  #âG&jt\sh^X:΋=y!pfspiEbrM8*(cjJ!Me}K^4|MQ#r/8Z5X'yN ` =jΗt":!BPJK2Y 8y>dK3)-*WlGƝ9`FWV/UE@;ߋɞP2E&BKؾwί9:C/ށlqF8?4#2>ɩ߯y~o^*ͅ{v={ވ Rg^ffi~|aIU8װt( z23H性if&,-& M>Lx˖hG/ztCxZ:0mQg8wP_ŻMF#2;/q iW/a`VQT<FX5 dt,Q#[ge [.zz3&KC~>{O>^d E$` $S"{8)7Qh\Lݾ'l^5YhBTSHVO :u`UtBγEu:-jdf< QGN26+%Z-tH x`(Y_HKW]_r`{`CBNgߺƐO9[Z*!яp96"4*_τJƲdFג[6YNtMfJӜԒ7AuqG`8y{㪧ۄ< }B H]=>=X)o)U(Jm>N8Jp^TZ!V3wN睨7ڇ(7旹#wl>;Q=nA㽬Âe#;0~]a @HshOOt?lr@8E% 'qdcUQ3\,e;3hmc*"A+wքIw Z=4#Bwar.!ֵ۲} hb3z+$X;=N' +{Cw0./c߳}r(.y`>9kR*R?bRnV(OmP2s6ܝ;0E+pC-y/VK "5ϗc(@|f> ;PFI{?M:v;:^t3rAsdTJl:<lCƚyBH2Ge~L6LKy*͑Ffʍ|Yq[ E'w{5pڨ)'AhFd9-Y93L:sC):c*Pȏ@0~'T8#G| ).P,=XviFۭ%y݂-Ǽ'8#CaF`>p . tV Mܚ::43KDTVw'ilI3kGQ/D[Ýr[;N$I“~i/dvw+|k%Ky]r|+*D]bT̸݊[}juNJR|h.gp]sA)ݥ3}{ӶxN4(ZyOSD> ૽w_יY%\ ٭6}R>~s|2mwmø~(:}UNeJ"۵J]-m'۸[Gkz++݆W#"YDianquV|,-+n۞۹.}"Kg?6frfs|>o-FݭoeO3&<.ʓlٝ}LC7zNj3E3vEQT23nJ˃jƹ`r/n~q9EcpݞW}׎1oMM=B'm -SGqcHķ([EhMߧG)8TZrX(Kr02R%k[žox+^*-ueN~'e97zu1 ˢ<9.sO /Y1rWN6/$6(_۳FUfb E}XAoKoO𷌃T=Nw(G mWZ1n˯6`𧾫Ѧl 6݋j{ɋSopgrCalԚ|\lEto;e٦^ Ѭlj GJ5 mʺmnOk.?-Ox[^->m9gge/{YGd|l(-]õ߭£ ͢BW|G}C_>cZ:՜q[/i: ϝ+ yPxi<h6N5Y|iZ8bm[X~vιus3z\gWS]'jz=RnEd y1za??d{S1Q ea׮A5)p,WR:1j?3,[1J qˆv| er-bYC( 5v~//deNŻ7jl긠}y^M:F걧qԏ~j|T=}eOg䵲Yj3o*0o׃[6ݽ~c<7O?TZ^ D'y0ќ}?,oQiZ=s}pqh;۹Z?&qG\ldך'']N1Yoz):A1vTge_|z?}5@ݰJߴ,q#9^"c_ 牢eW}v㓥CZZ.ͿE\׊!๤[yq'MƄb酉їv5έ]Yɑ.]lqVk%vn|;.R95%݊u{.U ?- UyOn]7?ލ9_^u_6Gέ\zm+e';/\ŔoعFV.sü)7}}r]_44h6D 9=A_ړTlؒnӛ E=; Q[e1/}JժiUz_βkJEȃ{ Dz{ mFH3LQ}rw+: YGbk\ְ:8qkn5XŭM}w-oVܢ (qVpZ &ssfh0. ]|m$YY= Kpzh.kSݭ^.,g{{=sOD@#A'N=İdpTm4߂{%s+ 9m䶵[ 5?e58.2\nj=8Yԁ"Hw:(F퐇Qv}i@R\~o$z^u<c?ǽ>˂yaSdn44c>eX?]ή;d8m;=Z[st 5Ne`zWgQÞB1QD9/)vɖH))S[9BzU(P],l-O:ݧӺ7^7S Ǿ E1y"vV:m ~8c2y;<ŰYٕ ]fBxǴ\ֵ κ\MbRg]FQֱbX/,7+6콲9zۈ}}v:a牃1B`cAdW68/[rz.Χ_k8Xo1~ݗ9ms?T [}0]tֆkm:tP=]lwGdR!Wq(I6R Vs)N&(Yc#uuom٬Sl$kt\5.O8&b_=i]t!6ʉeU,Mi&LѯTư\b)s:X<(o?ivHa(gI痫+&wxq/cW9';Z}ij7E\F.S;fgn_6Zx-3&cMxg1)_?lq+sQOuf7awp?SLbU>Xb7\ .&wbxruMve[!y:ɻ4hI;]Wc{_dANlyCc}bBttNyitHcb-5%']Ka@65q9*jU%˪yʞ^.X6ӏ>D7X+7JζI-.R! }bgO8^?HvOsŰig}ze O~W1^K~m=H||퓏RwD"q~&bR$fwԑx5.Փ{^NC#UTW{-?Lڋ^&ϸJb|9@~KG">#heK>ώeߟv%>P7SR)Z|b         }}}}}}}}}bbbbbbbbb         }}}}}}}}}bbbbbbbbb        }.         }}}}}}}}}bbbbbbbbb         }}}}}}}}}bbbbbbbbb        |uUǾt bbbbbbbbp zIENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/data/beautify/plymouth/existing/README000644 001750 001750 00000000121 12312451003 033005 0ustar00saucysaucy000000 000000 This directory is used to store the current system can be used in boot animation youker-assistant-1.0.1/qml/img/logo/Manufacturer/IOMEGA.jpg000644 001750 001750 00000013027 12312451003 023746 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!q BAQ"w826vx9#  !1AQaq"2B345uRs$t7#8% ?y8J1N}s9VP9x`>4?ъte,=Zi\d n ͅP"W+JrMht7kot93N6567vU`\@NhBXYf'nEc& 24+iI1 EHwo3~cz zMM)̽mu\Т V^{CL2004 :ա('ꈴjt@0rs# f hxC./.X[!S?HtS=+H+d[ v(lѸ\urj*e|Onf6)5;9p4̸:LSR]zo\ܒKY i+BTĞA|hOxzuk=*röDϘY.ۻn㵓MQce:j1#Q>/ՎLQkDqmlkXTr #!xY 6@02T|oƓG0{J\ڠ1'2N|cIYBI]2TЭL@ѪP=:0rS@C[P:X) (X d PPrAЏLiqDZN5: 99h CIYCz(oŏT:ӷm1◊td~N(՗!wxj{DZ>lZŏG{ ~ Wf'>(ή6oTf PPrAЏLiqDZN5: 99h CIYCz:dȇbU?MS,N hNJ^*=8V^~r᪙ǸW%k=m$'J52-]_T :浾QbӔ0iBAuB=0POw٥ i8cP/^^&3悜0eQXA@~Nj¦ڡY * c/']uU_g]fz.)e2^mZt 9Ri`RdBbr~FR$mŴfOfiƔUHܣ+D\Mj/kH#^s)#;|mxz--ґ.kԀ۠K]GjSI uOx w"IЬek>F4$;_Dٖixx}+UmVӚ뼡jyӘ u@L9d0, jUqP 0@]c U(/TRbqZ5릝QWZJg1S숕ڽu-J_uSb:Q @KbsD$۝溰gtќ0PЮK$UPTi˄Dype϶, `V{`(jZǦ|yľ91/Xm'm1/|QF8KUM8Q,2a2GS]W3D&CC"٫n6 Ct+W^\ڔT|ߜu;Ic!yxdNd=!a9ԑYiOl鹻6M-z`NdyD#G~/i9(HL3QI&aFvKaKgSt*`5TҮ2: ´{Le.MF;%X71T7ҝK> Q wI/g!e\nywҎ-TL̗scܛVs^(]'7תwLꘒ $icΘ̨0jn[ny"zN:Iu.^6e`,('X0F\Jo\c_DZN5: fjb齙{-|y\珲͎ RRP"r9 6RLvKH;kd;'Y& ut1XZ,emGgج<ΜsB4UHշ)$HS7~@R"q2=2Q[D^(7%= j(v) 2t-SG .m~# Udw!/Qadz UgMy 5L kl;N89gO^X1lGwߚY ei *X$)@RJED74ޜ纐`ӹjr=镁^7]e91.6g~X{kf.Jf1d1b fy[ Fm 5n);cc]M騵W-]Z5=IU'9f-V +(YlOt./ԜVd2xYq&5@%S>`)C$c<< 9r-Yvv*x֫vYZ:W-Y$FEE'\LkMscg|RټI'7攔2ClCL _Upy@7kՆjZ?ϔYTm_`׍īɺXjޫ򋦎D$3$)9FXsk2*!VԷk]hβޥF@D2! Ro*WYj@t`eoͭӬwS-=9})r#:խzcOw٥ i8`Ѡ0G1 %e  C`И~;}ZG((|R?)d"7 x)mv@HSScš4)eu#70qBt5SKbQ:|(8L:=n7FI49OMzD%zhJj2"FlVd\N=] 4>(&Xԯ؎0D)XQƋA[ H,EV D8|$'D8&Gf__z=NeFׯ{nY\\Dm_tAA ۷W~Z9t,0I !(g (P%ϢD^|BufqE\޿*~T\C"n34)V3T 5ħ++TI}t+`7j,+dVl=B0Ζz!C?Fdȼ?wuƮ3wvǜF@I4T!# FmPrD| -Ct| N0!7pvJ5s]FZPEeUbkU!o|/h5""uE{{L[, l3 FĘp874U \o8uX}Q k š93;4KPKJ"KQDI$9-.9WWa4D2ZZ[f"ܸݩd}rgQ9 b'׏+XbzR>Tꊔ-T < ﳽQ [!g} 8δƫ!Y8s2P|qPr`~]h$ٖ1VvtШxΜmJi( HS?W{ pHdTMQAm(9ShHIJ qp/ llԇA|$?N##$e9xǩo 7c[ s`M[Y%-< }]seZ nT Lu?IꍒjW3;˔XiD"AߩQuC}04x4PK"Æň5yQY}(wbqCo:d .٘$e*1[xiSI\P}@ąv}DnD[O|jzeGcp sc0Crd vPw(̴!U7ǸvJNZyQ黈 j`&F0bґݏ@#{$ya&7ђ@c#G}LDybfdDV>u2dNDQ/.7-z/F73ih4$侽-iZ馘ytL)"z݆r*G& J߿MiFUc1ӰXRD]rY8Z.GXߖ$< 2|t=y}-pJ{Q_VNVj $K5PBwVC| 7_ 'Eh2H8ʽo 8`7+>`f5W=0߽{^7cSWAR##rN%zy j2bdŸwZ E?j<'7Sm9NoUs[/¸L-L݈]fwƇK῟8ɳ~zo h0} uP/.up֍ǎ9!oqn(^6IKIENDB`youker-assistant-1.0.1/src/image/login-en.png000644 001750 001750 00000002430 12312451003 021425 0ustar00saucysaucy000000 000000 PNG  IHDR^T:tEXtSoftwareAdobe ImageReadyqe<IDATxb4\nC&oZ DkïOlp0<,dpWA(z򿉂(6#H,JrlD+Vad`}D733P/&y, )f#fgc Fk0ȁg8XCLrA;>?X^itq5O7 #Q* HNG$95%?5&bFFF†XY!b`ln0?~3nxU~5X[Y ^(>K.f  0Ԁ/(fs?Ÿ_ ~3Wimiv}_`&c'?"+!2 " ߀iXY@ǟ EHE<<0+"9r9E~cNcEQڥMhAFA  ߴ`TϰL bb bama'+@6A, Ew=+rM厛L&;+5|py!_OB0=QUxGb= SM&ؤ  7NAef($)'AbXvDR[ 8} 1d'3hͤZc4k@=)PcߟQ:[T"wlfн9{e5V6A<y,z ˁ||r ;_PXxP/߁H艣+2\}$B^@|zAVu瞃+c)+y }?̐UPAMq.gఆ@CoĐXsh!39BV  s!,TWOdIENDB`youker-assistant-1.0.1/qml/func/settings/TouchpadSet.qml000644 001750 001750 00000042267 12312451003 023674 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Rectangle { id: touchpadsetpage width: parent.width height: 475 property string scrollbars_mode: "" property string touchscrolling_mode: "" property string actiontitle: qsTr("Touchpad settings")//触摸板设置 property string actiontext: qsTr("By setting the relevant properties of your touchpad, make the operation more convenient.")//通过调整您触摸板的相关设置,使操作更加便捷。 //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //使用云配置后,控件状态根据配置发生相应的变化 Connections { target: sessiondispatcher onTellDownloadCloudConfToQML: { if(download == "touchpad_enable") { if (sessiondispatcher.get_touchpad_enable_qt()) { touchpadswitcher.switchedOn = true; } else { touchpadswitcher.switchedOn = false; } } else if(download == "touch_horizontal_scrolling") { if (sessiondispatcher.get_touchscrolling_use_horizontal_qt()) { horizontalswitcher.switchedOn = true; } else { horizontalswitcher.switchedOn = false; } } else if(download == "type_scroll_bar") { touchpadsetpage.scrollbars_mode = sessiondispatcher.get_scrollbars_mode_qt(); if (touchpadsetpage.scrollbars_mode == "overlay-auto") { overlay.checked = true; } else if(touchpadsetpage.scrollbars_mode == "normal") { legacy.checked = true; } } else if(download == "touchpad_scrolling_mode") { touchpadsetpage.touchscrolling_mode = sessiondispatcher.get_touchscrolling_mode_qt(); if (touchpadsetpage.touchscrolling_mode == "edge-scrolling") { edge.checked = true; } else if(touchpadsetpage.touchscrolling_mode == "two-finger-scrolling") { twofinger.checked = true; } } } } Component.onCompleted: { touchpadsetpage.scrollbars_mode = sessiondispatcher.get_scrollbars_mode_qt(); touchpadsetpage.touchscrolling_mode = sessiondispatcher.get_touchscrolling_mode_qt();//edge-scrolling if (sessiondispatcher.get_touchpad_enable_qt()) { touchpadswitcher.switchedOn = true; } else { touchpadswitcher.switchedOn = false; } if (sessiondispatcher.get_touchscrolling_use_horizontal_qt()) { horizontalswitcher.switchedOn = true; } else { horizontalswitcher.switchedOn = false; } } Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Text { text: touchpadsetpage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: touchpadsetpage.width - 80 - 20 text: touchpadsetpage.actiontext wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } Row { id: settitle anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 120 } spacing: 5 Text{ id: switchtitle text: qsTr("Switch settings")//开关设置 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: touchpadsetpage.width - switchtitle.width - 40 * 2 } } Row { id: setcontext spacing: 314 - 16 - 20 anchors{ left: parent.left leftMargin: 60 top: settitle.bottom topMargin: 20 } z: 11 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { width: 160 anchors.verticalCenter: parent.verticalCenter text: qsTr("Enable/Disable touchpad: ")//启用/禁用触摸板: font.pixelSize: 12 color: "#7a7a7a" } Common.Switch { id: touchpadswitcher anchors.verticalCenter: parent.verticalCenter width: 160 onSwitched: { if (touchpadswitcher.switchedOn) { sessiondispatcher.set_touchpad_enable_qt(true); } else if(!touchpadswitcher.switchedOn) { sessiondispatcher.set_touchpad_enable_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 anchors.verticalCenter: parent.verticalCenter onClicked: { sessiondispatcher.set_default_system_qt("touchpad-enabled");//启用禁用触摸板 if (sessiondispatcher.get_touchpad_enable_qt()) { touchpadswitcher.switchedOn = true; } else { touchpadswitcher.switchedOn = false; } } } } Row { id: scrollrow anchors{ left: parent.left leftMargin: 40 top: setcontext.bottom topMargin: 30 } spacing: 5 Text{ id: scrolltitle text: qsTr("Property settings")//属性设置 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Rectangle{ width: touchpadsetpage.width - scrolltitle.width - 40 * 2 height:1 color:"#b9c5cc" anchors.verticalCenter: parent.verticalCenter } } Column { spacing: 30 anchors{ left: parent.left leftMargin: 60 top: scrollrow.bottom topMargin: 30 } z: 11 Row { spacing: 314 - 16 - 20 Row { id: horizontalscroll spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { width: 160 text: qsTr("Touchpad horizontal scroll: ")//触摸板横向滚动: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: horizontalswitcher width: 160 anchors.verticalCenter: parent.verticalCenter onSwitched: { if (horizontalswitcher.switchedOn) { sessiondispatcher.set_touchscrolling_use_horizontal_qt(true); } else if(!horizontalswitcher.switchedOn) { sessiondispatcher.set_touchscrolling_use_horizontal_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 anchors.verticalCenter: parent.verticalCenter onClicked: { sessiondispatcher.set_default_system_qt("horiz-scroll-enabled");//触摸板横向滚动 if (sessiondispatcher.get_touchscrolling_use_horizontal_qt()) { horizontalswitcher.switchedOn = true; } else { horizontalswitcher.switchedOn = false; } } } } Row { spacing: 314 - 16 - 20 Row { id: workmode spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { width: 160 text: qsTr("Scrollbar type: ")//滚动条类型: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } // GroupBox { // anchors.verticalCenter: parent.verticalCenter // title: qsTr("触摸板滚动条触发方式:") // adjustToContentSize: true Common.ButtonRow { exclusive: true//控制是否联动 spacing: 134 Common.CheckBox { id:overlay titleName: qsTr("Features Type") //特色类型 checked: (touchpadsetpage.scrollbars_mode == "overlay-auto") ? true : false flag: "radio" onClicked: { if (overlay.checked == true) { if(touchpadsetpage.scrollbars_mode != "overlay-auto") { sessiondispatcher.set_scrollbars_mode_overlay_qt(); touchpadsetpage.scrollbars_mode = "overlay-auto"; } } } } Common.CheckBox { id: legacy titleName: qsTr("Standard Type") //标准类型 checked: (touchpadsetpage.scrollbars_mode == "normal") ? true : false flag: "radio" onClicked: { if (legacy.checked == true) { if(touchpadsetpage.scrollbars_mode != "normal") { sessiondispatcher.set_scrollbars_mode_legacy_qt(); touchpadsetpage.scrollbars_mode = "normal"; } } } } // } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 anchors.verticalCenter: parent.verticalCenter onClicked: { sessiondispatcher.set_default_system_qt("scrollbar-mode");//滚动条类型 var default_type = sessiondispatcher.get_scrollbars_mode_qt(); if(default_type == "overlay-auto") { overlay.checked = true; } else if(default_type == "normal") { legacy.checked = true; } } } } Row { spacing: 314 - 16 - 20 Row { id: scrollstyle spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { width: 160 text: qsTr("Touchpad scroll trigger mode: ")//触摸板滚动触发方式: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } // GroupBox { // anchors.verticalCenter: parent.verticalCenter // title: qsTr("触摸板滚动模式:") // adjustToContentSize: true Common.ButtonRow { exclusive: true//控制是否联动 spacing: 134 Common.CheckBox { id:edge titleName: qsTr("Edgemotion")//边缘触发 checked: (touchpadsetpage.touchscrolling_mode == "edge-scrolling") ? true : false flag: "radio" onClicked: { if (edge.checked == true) { if(touchpadsetpage.touchscrolling_mode != "edge-scrolling") { sessiondispatcher.set_touchscrolling_mode_edge_qt(); touchpadsetpage.touchscrolling_mode = "edge-scrolling"; } } } } Common.CheckBox { id: twofinger titleName: qsTr("Twofinger Scroll")//双指触发 checked: (touchpadsetpage.touchscrolling_mode == "two-finger-scrolling") ? true : false flag: "radio" onClicked: { if (twofinger.checked == true) { if(touchpadsetpage.touchscrolling_mode != "two-finger-scrolling") { sessiondispatcher.set_touchscrolling_mode_twofinger_qt(); touchpadsetpage.touchscrolling_mode = "two-finger-scrolling"; } } } } // } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 anchors.verticalCenter: parent.verticalCenter onClicked: { sessiondispatcher.set_default_system_qt("scroll-method");//触摸板滚动条触发方式 var default_mode = sessiondispatcher.get_touchscrolling_mode_qt(); if(default_mode == "edge-scrolling") { edge.checked = true; } else if(default_mode == "two-finger-scrolling") { twofinger.checked = true; } } } } } //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar showok: false height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } youker-assistant-1.0.1/src/qtmenu.h000644 001750 001750 00000007136 12312451003 017617 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #ifndef QTMLMENU_H #define QTMLMENU_H #include #include #include #include #include #include "qtmenuitem.h" class QtMenu : public QtMenuBase { Q_OBJECT Q_PROPERTY(QString text READ text WRITE setText) Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged) Q_PROPERTY(int selectedIndex READ selectedIndex WRITE setSelectedIndex NOTIFY selectedIndexChanged) Q_PROPERTY(int hoveredIndex READ hoveredIndex WRITE setHoveredIndex NOTIFY hoveredIndexChanged) Q_PROPERTY(QDeclarativeListProperty menuItems READ menuItems) Q_CLASSINFO("DefaultProperty", "menuItems") public: QtMenu(QObject *parent = 0); virtual ~QtMenu(); void setText(const QString &text); QString text() const; int selectedIndex() const { return m_selectedIndex; } void setSelectedIndex(int index); int hoveredIndex() const { return m_highlightedIndex; } void setHoveredIndex(int index); QDeclarativeListProperty menuItems(); QMenu* qmenu() { return m_qmenu; } QAction* action(); Q_INVOKABLE int minimumWidth() const { return m_qmenu->minimumWidth(); } Q_INVOKABLE void setMinimumWidth(int w) { m_qmenu->setMinimumWidth(w); } Q_INVOKABLE void showPopup(qreal x, qreal y, int atActionIndex = -1); Q_INVOKABLE void hidePopup(); Q_INVOKABLE void clearMenuItems(); Q_INVOKABLE void addMenuItem(const QString &text); Q_INVOKABLE QString itemTextAt(int index) const; Q_INVOKABLE QString modelTextAt(int index) const; Q_INVOKABLE int modelCount() const; QVariant model() const { return m_model; } Q_INVOKABLE bool hasNativeModel() const { return m_hasNativeModel; } public slots: void setModel(const QVariant &newModel); public: Q_SIGNALS: void menuClosed(); void selectedIndexChanged(); void hoveredIndexChanged(); void modelChanged(const QVariant &newModel); void rebuldMenu(); private Q_SLOTS: void emitSelected(); void emitHovered(); private: static void append_qmenuItem(QDeclarativeListProperty *list, QtMenuBase *menuItem); private: QWidget *dummy; QMenu *m_qmenu; QList m_qmenuItems; int m_selectedIndex; int m_highlightedIndex; bool m_hasNativeModel; QVariant m_model; }; QML_DECLARE_TYPE(QtMenu) #endif // QTMLMENU_H youker-assistant-1.0.1/qml/func/common/ScrollArea.qml000644 001750 001750 00000005732 12312451003 023124 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "private" as Private import StyleItemType 0.1 FocusScope { id: root width: 100 height: 100 // Cosmetic propeties property bool frame: true property bool frameAroundContents: styleitem.styleHint("framearoundcontents") property bool highlightOnFocus: false property alias color: colorRect.color // background color property int frameWidth: frame ? styleitem.frameWidth : 0 // Item properties property alias horizontalScrollBar: scroller.horizontalScrollBar property alias verticalScrollBar: scroller.verticalScrollBar // Viewport properties property int contentX property int contentY property int contentHeight : content.childrenRect.height property int contentWidth: content.childrenRect.width property int viewportHeight: height - ( horizontalScrollBar.visible ? horizontalScrollBar.height : 0 ) - 2 * frameWidth property int viewportWidth: width - ( verticalScrollBar.visible ? verticalScrollBar.width : 0 ) - 2 * frameWidth default property alias data: content.data Rectangle { id: colorRect color: "transparent" anchors.fill:styleitem anchors.margins: frameWidth } StyleItem { id: styleitem elementType: "frame" sunken: true visible: frame anchors.fill: parent anchors.rightMargin: frame ? (frameAroundContents ? (verticalScrollBar.visible ? verticalScrollBar.width + 2 * frameMargins : 0) : 0) : 0 anchors.bottomMargin: frame ? (frameAroundContents ? (horizontalScrollBar.visible ? horizontalScrollBar.height + 2 * frameMargins : 0) : 0) : 0 anchors.topMargin: frame ? (frameAroundContents ? 0 : 0) : 0 property int frameWidth property int scrollbarspacing: styleitem.pixelMetric("scrollbarspacing"); property int frameMargins : frame ? scrollbarspacing : 0 Component.onCompleted: frameWidth = styleitem.pixelMetric("defaultframewidth"); } onContentYChanged: { scroller.blockUpdates = true verticalScrollBar.value = contentY scroller.verticalValue = contentY scroller.blockUpdates = false } onContentXChanged: { scroller.blockUpdates = true horizontalScrollBar.value = contentX scroller.horizontalValue = contentX scroller.blockUpdates = false } Item { id: clipper anchors.fill: styleitem anchors.margins: frameWidth clip: true Item { id: content x: -root.contentX y: -root.contentY } } Private.ScrollAreaHelper { id: scroller anchors.fill: parent } StyleItem { z: 2 anchors.fill: parent anchors.topMargin: -3 anchors.leftMargin: -3 anchors.rightMargin: -5 anchors.bottomMargin: -5 visible: highlightOnFocus && parent.activeFocus && styleitem.styleHint("focuswidget") elementType: "focusframe" } } youker-assistant-1.0.1/src/aboutdialog.h000644 001750 001750 00000002045 12312451003 020572 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef ABOUTDIALOG_H #define ABOUTDIALOG_H #include namespace Ui { class AboutDialog; } class AboutDialog : public QDialog { Q_OBJECT public: explicit AboutDialog(QWidget *parent = 0); ~AboutDialog(); private slots: void on_closeBtn_clicked(); void openUrl(QString url); private: Ui::AboutDialog *ui; }; #endif // ABOUTDIALOG_H youker-assistant-1.0.1/qml/img/zh_CN/wizard/0.png000644 001750 001750 00000631207 12312451003 022063 0ustar00saucysaucy000000 000000 PNG  IHDRWtEXtSoftwareAdobe ImageReadyqe<2)IDATx[ V}} %bMG$>hҘ8&iO)MIE4TEMAMH֊<"Ad]]ݙg?ηKSO{{3am7 t6 0-ecΏ=I ݙ?aa >]׮cC̻N_@vZ@/)yc}3{r7Ʈ>NS|+@_0 d]2e@dv̱M =kO:Ѓt] ͜S{Xݹ;H8]aa c)cw0 l26o:L*gB䉖_y`f_b" od-[o}!3yJ):ac\:VO(ASZ%2`u:_p/ʉj/b00>֞hv?`3{5$NF1F} %L gJXKǔX*qGW"9I&ӍPͥk7C y>%/} #o8LRee#03@1A鍆9X]m4|Yd0rBN:X qLw"m^ښC19V%`_j٪Q_vXvfpXe/^!7 r:[5݊L脼#z5^%1t[ؚL"Q$i,PǣTJ®CCv0cI_}}uhkUďt`MQ=6;Xfoh(1Qqj;[")m| b]=C}ݝ(em˼Z\Ly4J(J7?aN3iVGׁn QL6eP{S@E@b:툽>*R@O+]kcQÍ$QEWKfwS"Y~F h"e] u}oUl#o1(7I89NGK:L0w,BJ~ ۱T;k bb^Ԯ9jǠp04%dI2}t_ ek" 4b41ҩ\S9fx(K8췘]1DgszRSeQ%T~+a٬DarbO}u`0 "2p~*/lwb+5X ?xb"*+W64 S#d?N088HpWoon >LA(jN.R {Bڿ`S q0M Iu=qiq⊣B`t!>SqƤ] p1WbOMP"MEh#@Gعm3i\𑦙Gغ ~y@(g?HOױ&9'VjpigN;ۍ|x :ZwCkk |pޅgƁ{lW{@+z֢e.9qɴW7W`yLj}%ƝЀ34Td T HTI`2Pok.j&XMup$6 7\D&w,6&"J8fR &<{e=dO=I`s 1c-lWI@BE&i0ւ?}R\H$  Xse5}ؙJA rQ )j 3ͫ]{/| yp.d"YrZ٦!X%%:Qv]葠M Lpܹl9矏Vc#=-k^z)wX3m{`}; -zEC%" +X޾yӎ,&zyL<K[l¬9}v_Cee%A"D&cKr`LPּcPIaaF,aGYUbB d@3R&NLa۾uts3 l)1!32)ʔeeS}Xq `+sjU-ry>{_[76"aETWBZI+ާ^36}JZE\%6Wxv&Y"2,oY}8Ĭiaӿ_+F6?w]hWJ.;J87n)j.* ؗ8HCbSscHݛ9ODo+$LMBڄiGAjZk.YJv2W"/84bI˥KKuw)1&w@ 2IDJPpGl"q,e"BѸhR(κ,_{۝k/վb+OTHҳ2 iͷLR)6p~ccv_~Ǯt(6A i z׵>k?CR6k_A2*gIA0;,+lTdϻgoW6%XuӘliH%ۄi'DLeb\v˦Ib&bg(g`PP%7eWs>ه.[73j*:R!0Ïk! Mc3^lW?BX^InH5XgNJQ"K}&4~ӬӾwH_.tEV2ZxpvÉy3S@?Gc}xn[/kFrE<۪nqF 6w׋o}jf7 'U[)P7~L~ֆ$"nEpWV?fp 
8">H.dsJم ETj$6LH+\I%(qb'M9G;axh^K$N^ŬNƗЄk.8Rj&M7Y"U2'fTTUWR@5)N`c'&tUyW`s^Js~%H':ńjg[8H '3f 9A@1&(\#2)V>+U"CI;-:v@ B7&tE"e[4+yTO9 BR*(P{oRnG~ïH1kNzoOZ`bX؜I$ksV(VŠ( 2Ø!5ؼnjǺ<\4Yb(Sv~LB clt7[ن>==Şϙ4o`jwt:i|,zۼMtZ|yd\hh-5@'n0UMgfsGJ"MaUͽXO_9FA.s疟m =%̝j x~\=C/I/4GLp\ MMZMxŗ(T"\y!rڪ%v %r>we s&a`$ټXxpcrD}x J]Ξvřάl#ɚ/ft:f3ag IPUjƂ_ d`2e6-ͫQokV[]4ᦳ&cLf7$}k[e>4Fc?^lF4]W7!K 0xZGȖABskڥwQAAY-CZQ2u_R8_:|Z&;PTAPx*jKI(1Q ?B1ȍJ|y+-%|iL>T'1({iG ]bgN~$ubvxu_opqS. J ?Qk@c#]l10AI8Wi+B8ҭD5aÌTs?#/:)y61r9q?V©uOd"&-97=/h>z .!j|O>1uA :Z>YZr/Q:/ qYkvmќ2͙ov8,hEyǺuYc:[ml[k>ćqgIY1)Mc8y-] 5A6h_ԞcZGnbgU/e''DxMZ=N |,F=ؑVfR'df){Oi\`,i6,  B"$/Oj.J;Ju=|>Hp5 x_€X#>/dznc3iĦxC Yo(S!Xլ!!*Jf8Eu/Ȼ ;;cfMM6B(RhmlA1vh茣 8MT3UqJ&<$/$$D($ew}e7wsL4f2~79￿>Ph /)Bv^#1y>;2@.,r)sYe̠阔ASz I$L3@2s "ATsΎtyGu/,pDƺ)h!E2rie%=%Qb2Rfy+@oK E+J*_~OJLh>wR3^RL>gM =3$3J=$E_az4Iȡ&۲VL2 K̉~loe&PӲ*n¥]wEۼs>3_P{:q!VD1d6Q(_Z\009"-az9BfH^sJqiɎ_8-Ja(f504f/~ Y'0<&NXE-{aI1x8x&ԧ&!ƱTN3y>a|R(+E֓*lG6XaM[5)F>Iι2қօ[>3eZwp4+c!`2,m ?8m9V$QɌusFM͜rphw,Qߣ$=:XHPIڼTL4Y"M<>^'MKQ7 ZCX^UEM~ͩ"vТR.& dy#:{٠a:$w|"iYh5Cpd9tN1fL+)ɓu9t4x! yoJlͿ=J-r?r,HxгXjVVΝ `ۿf>t$ngo;Z-T9Hq w:.=o*{O5xD{ݶ?=w5XT9o^e MĂs=qՅяk`4O?*PWCi!(ᦼo3!"hyk/%Qjf*j CiO2'w>zH06|nNLbȋ({{ed7 նZ]fc|OWOR$=\:ax†i`.jd78F9Ad/=~lUS摑!J _е|}0)4^u2V,0ÛΜǪڕ9mJR–Ğ`)"g"36jw / ޵WB?Xir@[ZR% "ͱe0- {|wo z`:|;hpDݥפ,&mݗgs'Sфg#cH !aa5̃8eH+u,0뾃O]߆^_`\ /18<.KqW\ Pu.quِ֢)4w>Ffޱ{w)44k5q`SX}ziQj0~M/knd;NPz(_t= l$=V%ĎxzRmmKOXAf8 k5V)|y%3CyU|Z/r]*-SzI3PJܞM̢:%MA2 8AnۍkP*RvKzPED-p|iB*F`0c"L8(ip* N zzsշ \" L 9 ^UA*a"mQO7a}rls"#tI7_68K@D0d2$Δ#e wp2`^l<Y[$pN1=A3R phIm%,(vc;wt`dAO~;C)Gfnً"CE "+u QZwp_/lh .:$j2޶[QIP1+^`Y_z;Z/$\&|r$)*㺋^ ]u|bmOs Yы'QV~F߲ >3sۖ*PQʛ.)Ey=DŽG= ԃqA]j)N(0& %^y4ejv_nID/G.iw=-2u.U%$ r<(`&I&)c 7AoQO’613ve~V]g-sX/Ǖ떆@5# 4'E]WhTRL2Pif;?sе8^+D<޳exI[o5'vSވI5|m\վzG/(wZ`ڶ?o04<0C1 LOs,@`B "Ol MBF ״m*p "s71ɑՏ"Rmʮ q g=;êӤC#*GF2O +IܭDley6cz#J5Mɻ^?keFMh;!SiԁLʒ1H3#]hOhC3L؄P^2ɣ"7-Y8yۑl s+҂z|vI5R# 2O|%"H0G_6);⑈az7"15!gѓ=3+j@ft.e zPg+0RhNXHA~:1)OǨ Mlf@

    O]F9aB__ YZ).6& FPTI]GrCqkK/a91uߩdjLm S**B0_NYgK,\\ v /^&3RW.69J>ߎ vWE(k8'dB:%H詝(ŲϒP4鍌mKVTCnrIWu<#R9IHǟ8n֣"t.^m"v ;[^C Ps(YӾ,2 y0kARmy w0"!7Kȹԟw}Cg8V2f88YT **!f>`hRn>Ҙ"uƪ3aEbd*vikܓԐd/w-A[!e; z@],w2ju1Dږ[6ӛpyg7XI/j,uc{b&9RN^#HΟ|iX+FԜ/S~gw/ŤNj0%XrDܺ`u3b9K(5d fC\ܴZL?n^taKP`R@ E&kd0e0y[b%Jj̝mc̶eֲbH|8 Mh'H~Aks%~sKwuO,q( "ůeQWw?g[tҨt\҄mXO9c 椇!wwccowpe+1~ ֮zUUոkcvvtv@%QJ_|mmhinU+q1qg$wvwk_78p1?*~p'#Ad E{ ]n1C$ԣ &Qa<;BjA9BCHE1́HkREkd29>F'KpnRL<"7) 'ɦӿo'9T_sEI#YG_v\(\2}g2Y|߾uנfT]?u%wX%qE?.8?ׯM?Sߺa&6[{-NBr=*+qŕ& g<䓸[jj:zt$;QB>BIF5>86~~݂H}BN.!| #/m{!#=RW3&סc2 **1`L?829L2־Mra't(L/au?Y 9zJ/〃`M2'N:۷kk0{G~LxL>`q7W^̛n ;*C\rurPlEevhwvn%w:s6%]¨]CF8,\8!F^tf:T:+Kkİ#MZ`A8,7)#zgg  )ij@*wb"UZHOt@I )8u궤0_]߬O %WH k1q}z tvO=A8Z;pW' %jzIN Nۂ~TsX1%"?@~n_ϷsGqR{lKd02FA5oW*j&~^ Zo(~K}Bt'Qj qq&t-Cnai}TQFT1W6< W=Jk"y!: }y|gRq茰=v"Y55R7Tz67 N`#oE!pI3%d? m/FeN!MƚM/v6(WHswptŘP[X|QWmQex՚=|!h gV>x(2> X#qgNfw,H$|(覶?]R5eAݭ$Pս"7uz9fAZ(CAQx:r3\5?_ēT]~Sq&ߎ[n\s->>QZԡqt WPF/˰e;Z'16ƕm =3,I}00 ub*S2-?nq걛l{a>|NP^=3߸V2oJ |^e2.+X*L!4ϠiܑLOwv$wu[ܹbǂ^.;mIۋK(6sJ6L8{R vw㑷OaJ]dF 'a'cal KD!7J<{nIdK΅6", ((.zgJ?zuir֨Թ ܌m}AK2sX \#l ~00X .  J 4TP'_th0 ߟ*kJGcx_%vsyyqL{85#7T,:OC,ӠսLAZO8='0`),%t`bL = t.JE0cדz}G@!- 8\9eQ[[=87MopaH޿`qrZ8Ttvtb;1rX,^2E]e;?mag~N(.kLH qg ѐF!J$n~ ҉"::f]] ʄ=>n6qЊoLlvt)jj yfp&) Bf(ݷsk`?VO>մ.gt  xS{nu0f4=WS02"#/4B ;a ?S\Qc탛ȃs,R|Ò|ƃE8% C:RF(a(%0Lh[T+uBJAW^+APkQ3(euHi==2d-a~=Ʀfvns5qzcB綛5A^{Agԣz. jKO Xsv39mb>U~LڮATPtny +_ X x: w$JaTh' _E ~.s|I^ Ԣs``ʿUbţ_Z߬W;Kr%KnVQ4$mc(<>'EaM2ZQTe8aDIX¦!RdL4 ($*8HUXFĦt6%GU>yl^W$4Eo>Q`.]u4jfU.C(I3UC2vRjqO6ut4<~FU󖬕 1> Zh{nXTrZGL%+wQ<4uM5% mvJ;QF}Ѻ2׃%y*sJ'PRC9sDs4w`Xuۤ%C9t\U|ak8<wW0ݼ'<+`ym0eaUP)J6QFT]1~Ⴥ4 H.!pEJ(}}u,,5_b>75Y#D*Ylc&8Sڮ' 0 Nuڮ9\Q B7n2q <]*-ͯ isX@@j8p^!! )YkoC0~A/l9\>,Ҍ:7# O 3/: ,ʮUF3 1{d<<vAP,VP Ȏ#.OX1632U L?{* :!n-苯4'VܸFk+:g=@KہZJuj)ޒ6=oťǓޯaCKLj2O7Q]l-?Lug @: ,XC)ά83pThBWkTFF4C[ؘ[p& 2dd V\Ψ s!I?{#_<ՈCU.OK q q,\Ta2p<$Xԟhκ/D)WAtyӱ%[:pS+^)%"a\A:Q  mIA)cLkrZcڨ씃$"USsB5<։HG},$8Mw ?A-gޜ#6"#lhh5O-ΑC{^P)ww^e..S4Grzn1ڗtjXbϙQ󎛵0::x #6܀k1,d\6*6 s:Vw+/L4Y;^Lq:`GϭaT3cZ!AUؙ9j #P;[mk)ozLNsLc#̚k!ǴI| mIAZm_78?R0\h8hb@}U:@Ybq D[]9Jadw{/\ۆ;%1rTE}*ٌI]9! "#,ΔK92^m})jζrs]IຍpNs^j6ydz]К*wb H!ڙB1B(*$aCeP-9 Cs!<) BxnIFnH` eIn}/_ڪe.ڷa](n %&~.י'tDj)8.m/`jNFyWjir,B&Q*w9~'fyݞG$jj5 =\ ܝe&a -w6wVx1,c˃xv1-,x3Qs0t*Q0M$YM VtNlBAsd,%+X+$o{w,j-V[8I7[aM@fh:B%)4]frcȃK͢SXV+ 5{!HX0;hS'5TGgvQ d]f,;O&nӦ1i_l,ĉ}~R^ŽKUh/{cf9\!j+vC>O]5T]1ZV8Ui9RWdX.U:ƷݓkJ M1A+Gr!H۷h3.?sG4#|}R}{{U g`8Y>H)XT8o)3rq/j}4!o.Ug/wR, MBRR.$DTG-e໋ |/KRq$C*O Egjw_c!FшD [Tvř$jM)4H \iʌ:(5yҝ}$'jR\3j~-m0]4 &!析r0D%PGh钡g,i|ܧYijc`)U#6!򻯒9Bf$*v(M<VmŽxgCǀdd:BݩII"$ܤ>,? %f:c̆GsWV a'!z$@6I`n gAq? )1cD Bl^ѻgk\ѤKsh;1 ޖAGIOk41_ FddVa͙;usxDhsX3|Oƈwt޿/)y[md$,ޖG(FI ʎBn d55~N:P#B3#c< BBvD*/S%^p^QYTCE uPaΐ[ebZȬN|`-&ctow]`F}M {h@.)ղ`XqpVU>a(RlW41E4FӧĘDSM)%јbI]cW (R{9>}b3w3w=mZ Kv&*++a[s q mL]]|i9Vgdpd{i,'J` Qw{:eDd^@7U|ׁBIMu}@006¼wjI*E|#SeDjJ:q%= T3܉^etfs6Endmv1*a }̌f6ό4k%a{"!pRXS:͜HHa JEI %|r 2 R@H$gЪ,s[N3 ܁ UU>E*~䤮"Rqǀ<"eZ{|C=̌Qv8J#ߓ8G&a$Qێ֎%F%%B ӤR{> ~iG5tf1%  &)?+D8 8.$0YJۦlt`01xsVeTOpi$KFQ񽃴 c4R8,}IQ(oNc|Z[<.YD$Y#ʘeض@UD¿%R @,?'jNw%Ϝ6A=%NQ(25#P#74D pW`?8segƀr4\2#RC-A/ _]ɧ>ǧI0Q]4e2* ' ҺKk? cCXřq"#琗3A N>Q\Aª/}|` !N  p>!( $P}X4"ơg&,ZŰ NzJN/ y$CEYJP,'Lb kCZRT:-ya >$1`pҍ_ZEgF[1>}<%Jf fSe1T<#p( j35:L'= V_1W7L쓆x=4 -ei`F=sfI %Rܶ nKI=4썫)pC֘]ml*'dWBƐLx+YxQ@$*]8[n|^+"nɒӽdS$#2iFBQ"D!BswAr:V5E,Т&Bva=d/tRyF*q֥@4+WU~N TW!QQzzEEF^΋kY4;U$7h kE(RAvd|䱧dc=N@6*W$;QK;%3ű#BHju11 sI@ 4"5G.H屽 -K@ErwQ8\U_ėw|ߙSG^ qv30 ]CŊ k? };sXSqNԁ{lq)` k2'eA8$I4W gMnzd>uL<ƛ5/lo +ۀބSZ7;_---,!--GoAl_C:DSX3/{_9DZ*LL޽WO.j~!ZTmUO۷7w6._HU7XJTv`*ab\Iګclr@F@3an@UA":J}0 ݖ"rZfK̶!BJ CqUE my8#+sqfنڱP]mvMuE5 .=[p)_C>|sQ>uc3c@y*M^p)d6C-i~NK[&Q{Lզ{vQcCoU 񵃚CFA</T~Θk<ȷX  ihFZߎ/8 ;t w "&a'q;8sF\43z$pvA'ag'+i5hz-*q:*Ͳ*k}:\qTLVY%no#t Q~wl=M/!x*\5O%e>+JHak$b(1@B|XtjgUBv Y!nO[@/mG6a Mᙾ5LP=ir,>v\p {,`B}9*^ 5+(m!DXq2qoV~˕{E;p ]x0l^B AG* b~NĄV)z/"i*WG;kS'̒bQ02A !|'ݤ 6<ʹ܎58}M*2XrS"9VֹUV=m;pǟoD]C0bd3~81r꥗^q N΋"7t Av۸X ?{X{T{j+F;t3`$4];V  $!EBCMrH qKe$5^[F5TyQ0ye&I9+I7 0@Z-1 {ƃ6{[:ZJeXkA0gĮ)%ה{WAZ 9V.㘑5.j;A H-Pa Kޕs%Kuu8TVwg>,'O)Cn{)ӌ4&O6m@s48leW/ǐx2D5bϼ\R-;V/+|cYeKgd|;@bHQ:}dJę?X#}{*/?.;&8y^TUW`>sՉ/ݟ~_8,1 J9"s}G,ã/|3ƞ]C]xR=`Gr:ޅO"tc!d_]P\<̧8Y hVsebď;*17Ǝ@EE%&L*։(:0\W^Q'O&m[@QP䠥`%1Ug(`bʀwbɸ[PlD](ޣ7' \ -]H75Kt,u4AU)H9mN;w055}gqGG*{l *_rcQ)}wa̙y桭 v:\r%e˕ 8s1' cB%O6O@++. qgG&6Jiϲ+8{oH>|m]pꢽp2ʜbX<1%ՖyEvz1_#XPM`T@2\"3ɅB |RG_ aW{c]?e27#l:Φ8"]gԀ yϔJGtYG\ t4pLuYZ<||˟ !vʙ lIM3G%u츗\ң1@]3!43|2 zx]Җ?'[;pT}!a|"v5 *7?QU>pdgq١k1~ݱ>113|DY jNd W~awrLUgrnz$t1dGiP.p?,}6XpBz8^0{Olǩ3TYض>}8,3|k+g¢C:] DXJ)2k7b)fcLPeL"O^kEy\Cm(۱5.}:\||M5XN3oiڶvOLiw-k`SqGs'=xɲE_Q\YϙK7b7ٳGaA2t (mk<}}}XJtwm6uXB%!< ͘-BAB=c͊ho|"ݬ*j[&b䩈WO #R_nm(qE͕tbPSGoz7mv.c Sdp[7LFE/XKArUU.0b+W8 JP>'1=mol2R>G[[DEfVc=Y*M ̰7?g|ǠG@Gq$>pŸ 65O:a^uFq26L{ci˵t6RQ,':"IĬ`x_ KG&kſZ_=͝KqÏjY"ޗb IQH ZodOrC lصee1]Ґx;N(I{ $]Y[JD#ՃKd l -u ?2nZp##,{b!ƌ+ނMk7Kׂ /ᩥQQYq&b Xjv 碲+kôY_uwfqpVU3m31h#ftp9Cj@]ZQH{'ۧFLEIr) d߽p}@9dq['|Z̪(/W m,z38mSlsރum>p&>lȻ)Tzp6=tp^z"7?0%,~篡JLFX>ŧ΍%tRKˇ#0H> t- tuπWz܂EMD6l T S -1+I&< kr܀M#_ѭ~J?0bރO?>{&JyX_eD O[&{jݯܵ]aớ}z@ipo5Nu @P@B@MEp 3ɛ(u[&V1F!J) OARq0伅c9a'E1ex0ڳ_Y߷nFY]*2q_u ^y|~) u=<,e(/ 6(˜  /β65_mSO{//+A7t%Ak"*_=CKbʩhT^Y We]J.q廬+W`%8w_c搯!E6K s _μ=?dlÁ XS/m3!{2 d+kcGQ??g;SHwc Edɻ4i<铩ߑX3kq͸g 7w4\^ݎE(CnUF񶼂uzn ?Лkg*,܀U9||~+n\gkv|,*yb G_u:p㽯9ߏ[fs=]8 _y}e?.>oʿqxS )A'pRQΗr0NSˊ,UIP%[B\h5o@(b3"Ahۓ$K3 lQr.xPS"$1 X tb^?N74٪M(1BϮlyQ:֨Rh_#PQUSߓxA<lc `{A L?!GΘ!#ȐؐSՓqνqr!rgIkOKbBJ4+ýy^VޕZB0{kT'Nt޿\0Mj~W B˾Cl`aHekjc%uqd|ndQO>T[{h)CpM;?9(ʦ\V&* 不?r!E):^j0rrNg B) wYsڍ-Wyku ˰BhAe$}rg3UQ E2{fB+xɹĝs9q#2'FC}` d"x~fk ~!6$9[V{#,T]=eAr(FSqRU!38&\"+ZҎ"Op6,,UV*>چL}?gp0 :rfQč!L%߶WO6CE;LŲvǛ'b0=hF "Yߍq0AS{eP=:b^ $DLj27#U`NOn@\&3 րf -C= &5Qb!&-`3(jYh5,0#8!J!ͨ YI @džanbrY.X؞[Dt>}%Fd=Jc~EnU=U|Tbl?@hϭ q9Lab&c M,Q1:,JR+`ЬTix2162'vXvM&6% 4WC  0 q'(f֥="D]SAsH~YVr gm絉mJ rEQD F0.`3k +3LTf9H0p\&H* \ffUrҾnN5Q|qbd}mik3rEiX!G1$\C dqrz4rm6WI2u3(CS FwX^Fhj&ZҹUH2g`сQ̒y"-9Kp3!&I!"b}υɄJ0!lVƻ L[Py@|Y52 l?uY%krqmP X5XS.^DZmvj1HTD<=JT~ŤRHԖ%"[8@8Հ5̽[';"\NE;u f&6 }0NQ}aյh($/$ ~s{5>wZ|}4䟕Ƚ܃Q..7,GP?,$?׽k65Xm.|qs1C'|).=bȋqkcwOc:|Љh+wF*V>Vg}Ii%&scce*Gɇ;&q+|(W$dF\\0g̉5Fmqc^:w'.}g&S)(?Lr\EЦփ}L]JQpY+9ڥ6qzgp$?E;]fΛSG$#1tSRE Դʖ #_p @eAGMrúގL1⠋J?'\Ϙ)^0h`s+U!$V +g<[EkZ~ҒsD:&+*Z=7;7,NDxqRėjAO=! n]݆5o씫Ĭ7%^R@FS9`%v_V$,8 ㊠@<9>B38WnrUs[~B\3H]|IʨF=L\b &)h;Ėn]Eho,ōb5*L#u!]0OnGn_EZSwG߼7\)(:$sJZJݿמvbR$nd3`ͳ4:ߦ9) 3_’Z%Gf_pbɆ(A*Σg6Tif qN|{(hc<"О"21"#~Xa\pZOml'M]"n6/\qsxrČq#0[HǨc?zb2>`o| cP)eJJ+9Oޗi80H>6詯-ȐyJ$p,q㲰xFU='ti\-er'j)V#QQ!w *'tm=x~GS?]22ݠg}x3I׎/ܷ6NNJؽqs;ql7Mp_ vb-K2 U Թq{b "hҋ!bN3Bz5+֚"Ȥ %lx&[(Wx}Ew $:K̭R G6%F3V4६暤_t礱%O%x!ĉ?_"3G Bx _ò(Ț8`\-oZf3(3R!(TMƽ'AmEO.Ӕo.r3e"Ey6CĚv<1L&pb ࣌jhgvN'j(QA]֋ H]RXЧLQˬgr]U@Ƿq{m+w#/5*c sY. @$:ITRVwq r!&a-j 11Bd7:tn4vnFsܶ%^-l_ZaFf50|Z38S3QaюQ#, ֱ8?v[(.H*Sbe^sϬ\#pq>":Daf$ñeU.Vr簁`$t+d1NI >Za|=bQ1䚮 ?;q0'h(I#Č3]mP0C#%HF9e\}`FhZ̖6A˜=_ =5WkiSŹ<ϔEo% 9.O&95G. ZZu#}z'R"QP̍mU-!']08lYVZfpcWDd֍cX=eb+r+R/{oҡQU5%4:;􊕌"'W}.-]3IYp7#|tIw V=V77Tpδ|k"\rG\/ `3Z3O8V[ kOq9qm}uPzKs;*e-$5uU(=45!Z43(2 sp߁? b bUV/X2l]rT<"fAF)MWG2 &V;ŪilA)uEI BvW8φ'm@G agY@r}JD-(JQW( ܪi3ī)VIR:DqF 1u>EHN+k^S/)hUe(t *$qD]F!J/Xd7$"aQp28^HH@#*-a{5ֽy|.v6i$Zlr7nJ8d}oCeb/ [@&TO'd cQoqTCܓb|!"}r, q2g h1U%-¦#>{xPIB8Vvp*wޖ@?Of$Du +;6"tmQ.独%j&y}DvFqA9Y,10u=$TҸ93QAxxXf+;EQ6Vt,v(Sr"gL&bb$+Qh˩ʗ Q|(qi3Jqv%ŽvK=Ƣ"+)0Z$NQ"1QpZH]̨\be"W<Ɲ\AڎqC y1♨Fi}?0fS#I@}8K WȬ)kK3e6{8!X˫&y*T ar`%V7S:cZ'ih-o,ƙarA¦xbvBP^3zN}_T3(-C 8VAԦo.EB*;c1 n^Cd]LdI7 HJ:uR0#9îH-ٌ(Qv-T:qi螲Ȓ9se)! F^z,|i4DI> p*Q#4<$MRS QOy)V4 )utk#9,~.6,iG3(u_{!vȦo(@*֬ZR_ْ%%3D 5oo~n꺸'Ϗ]QoYG2O< >%Ek.R\:49_T( 2ӫNXU#JkMCy|!(,-xL Z_ba*Q"`{)N0XO(O箟зšd7?dC+݃3 c7Tm]<.8$S8mVm/*YpQO!G>3FB@%vxK*G ^l,@D*~$}\IRpA%ʔi,ݳ #xtzq'mW•Б^_ 3t?v &M;6C$-^jl NeN#F2 (icsYrH"2ZD%9.x!NRYI9/XTfQW.:JZ&NO ɳ.oPOFQ*u1d2&'ޕ FX=߻[C/x8 [FbO*;P,uDUI9`FK1xvkR)F_HH%_3!ŵbE ;5bC.OPM,J.R6cC1[鸈E/ s0QaVRȳqcd"jpFft)l>ޜ '1W3C!q毣11?h|0w'}+'ݟҫ?w}d xP;a`\taҏ[6s7O>rq#;,<V`[ {5Dsv"րH̲pJ 'QLHP\ue6B1S^^aƙ=@L>@9qQBc^1x3nCbSHdc( W ݏo [UCs]q 8;_|}C'ol [T2Sw`# 3p31hE s${5rjcˉ,%u̒ TTe` oмTkZko?yvō߆궐 5o{wXSA񵵫8qOv?mNgz?A5 nۉѡQ\70W}Z3\յԆYGDx?]7l㵋 EtՁWL]|%4/T<hYMý8ޓX yi0N|߀T$XL`k $ɊصN]lLqqoDj|}ږ:q n`"odRYřKu}?d MOcCS˷ %( 4{G EaO.O/D:iSTçlw~v+|b{`O#%yrELOrF9q,OXW) RTšPΖ5=>v-rYdynLFAC}rFďqT8ǑrB8Ri9,;JU s{^]?R5j@؇Ë`+RE/ JScGh̐pᄰrYt~šA|!=^<8 TT XTւe"Nc"BЗxp4rjotB/>MxsaG.Cþ /@HXC!-FDDPg:8,SLȸτDT-1\^Y._de zC0*d-F8kPϜ;w -3q4eKoJ1LWVag_?wjO; c(~}WO6_ÇQYWajʇ)dѥ]|'BP&g p^aXėmj-fD] _bI8ē=n_\>'^[._1,^sl-/o;wBsce)f7g`GG'xn"!KmwއN9}λX3ؾ=XرmPl-X0c ^\׎_j|+1:2xm6:='yqՋInH%ØKG6)0X@)Ed>xTAaBqfZQ(mbej{IƵUW]>7|䊯݂ͤ)=r%>U]^-?ɩ}< 㞣CUBϢ^!MӺ׀e/&q^&GsB,koɬpS܇}QվBV_ }UDW),5ZoRP&%TS86$fK1 榅'*"dg)p29k'YHR.`^ƶ7h\Z|s/#! $N4A42N=gw|΀!3Cio@B^bc2ގݻ/ 㪢8f`5-#Xy 5Ir20>~ P%quw!Zqs[71dpMPCnyM&J]TW'12R@![pА :_}/! BƔpA , J> \ 2+{oаOڋ1%]cB GU._R(3% ؀zsd*RIܼt+~vAhNanK%.ZꜹRɯJ0N:0}]x~&|Y<}}8w9s~yOP[[i39sL$pmïs ITTdmfԷ(kV~y]xi6|-^dkϹhd8d}[niX$~ رUXOwcy;>B gc /q'{|>/~\t'啭8Sug*pwO}h2VLo&r֬وJwQea~h' $Pn;s Y(a]Z>!i .FEp;faϰVw_c{}Ex=~Ǚqͷg C}@0VEEG}ʢ2siPwn b{05+DA n[W.)š<%E\2')yٔ9.֏<Giw܎/0t*G#',`vM;;1srP )tzB8JOo{ve$$!twSi  H#*"_H!]Ĩs Jч~L0Zmv7s*TplՇAL> :8NCe&BГ }e'f5{bc#:H=d%I`D(Wwc޴qذu M%]xL_cB]W*/¬3*jX?Jg{8e!U#q"E8+8b't2#X0GqS~9EMmma9V}‡_>]I|/ Boze9_< 5T0px1~ݓ;aw7HQy(1fUV?ξebx2ǭC" pفтf4Ve&l1md;M@OVY%P,HBڐq,B w4B0%3.kh@61:ʄŝ)~ÞQGg=A$\_XAH} 'N@LMM05=_$J2\[A^X--’ ٯ2#sNk-&$ؔBp0 b\xY񨰔ˇpS,,oEkaNWң뿁_ M<Iќ?y>sppF|fd_qS&5+V,[^ܹcx6u|<B؅F k^P?*RV ]⾥p' c\>dB`"3fU1c}MPR)5pr NɎHka)n #J9C~ߏoקq닻3F"F޼P3Գfs8wbsKw+޳ j auȤ"€t*ޞ^ XRtlی^_2c`|cI|ngrpT?54bؼqZM;ޜy c&7 <;<=wb┩7q 8ДxO=t?t ]x0N컷S(R"$7= >$Pf\^]5 _yi)aKσH%dO=3Ԋs;gK)I,[wGL q2t;x4i;!< Ps>Lrb?Nyۻԙky؅1aȢHg-9PK+s-xaN 0r2IpjQמgh! = ߭?Qΐl^_]z[1UX/$}v-*9})9W/=ٷ]"m}[J4yh1*2+ۉ<+5ZMM^Ԇ C؇p@n7\ZψqFRPxe>j޵.:s?024{N};q׭Nav=loo.5n ,8h.>G,: < ~=1a>Jq2p0`4,9 p'#i{{ x\xRw7˒gd}P* ~l&c97:l%0(; PJE4ULDsz 0  Ɵ\,FU#/gA%Z*kjnu=]"I{kgk˫vD2m)y$f'_Yh7~ܱ^G ~ 䜓5kS0?gÂd( s22]*^쌤ā3P ]Ua:*VxƶpK`Zk:Z߅U=5; [-92Lo8 ?^Q3TU m[;̣ /(lk't<^ټl^Z_;Skn!+^ƞ];D"[SEv&ʆ_zZu!y0G vq äz`za|_%  o7Gih8X%Bj ]UjIEC:^z r|8UkM"^\1*S؄0|/t>, VఋLofi8O=[6=`?&M=wDǐ}7$WxA0Hގr-saTD3$߇.ɘE'<3e"BgG B&UVF-^@4 ~ 潨X|.JIǛdKQуdkzrTT-£Gkdw]C_yrIHm^^g*e1j0Tc "uďMKc#ͭ+丬 ێ#ۡsh8@j1ܨF:+لdNSU(*܋)u8zR&ywՏ [poŭ+9I|_[qw>^63boYӾ]BYȍ!t1c wY4gQCM='a G($\qNTd2[VM"!AtTh 3L">wYW-pԆP|.}*Љ ad Gn!DHAB%̵7ad8#\1yO$}nIO&)9RIEA-$D EZ|K?f*l$|.y,`#q\/6[;@۽f;ǏNGV^L3?ޕQY1ᬰ ?  ARSagmoPJ$-<-7xtX2$ JJ 8gQ NbaZ] C25]*Өa ^}&v|5׷ kW-[ Q؊j u"nࡾG*bۖƴs0w8?w/K[ZSOήA sFEkhH'OWѮmxy-[h_yF{qI;D, 4{`49 1n^VR /FOŷnA=8:e=DG`#!$$4AI7!%E|aIh =V&~;,iHwȑ,xѿpkeN'9ʚS7~̎:nj2cve`7xi~zpŷ/v.ƍoƝBΛ5+׬Km"khhłނ}7? rzz ؿ)-<"6l؀;gO^_0?'.X K )'$z$n'%`$ain"@("LB<:<a;% &df[LnDOA(t^ ¯rsGZ[*024 #zߤ̝6]"{єV/ N?(03\!+mP^y Z~p"g焧O@VdD"BrA=0"4QLC /|p3gZ^R!NL6a1Ґc7ƙe tgh(rjǠjj0$him ]vgtxQ $.e+iL@+M6 tG 2`: ]Jp"PzAVĥt=4'@bc[RC`{F̡K 8úʈjaY9E@?9zrY#./e&Ne%N2_dNh!ƶ{νl3X U=s"qcF=6X0 F=Z!ycɳEˬ`*W@f2!.=\a&c9056I(![n&L"_Gr.e |-Hœ8`R=`'.qͿvl߆/YW[\̚7q;G0ǯϨ/\z jӭN-½d3 a֤:b_T 3˳~tQx#}R]vOd8A"p:e2{l;aPd 36p8:Tqs"ؿ I9Fl) XYGQ ǧc߲L'x?y_qo>o?7לQ_U}])8PVWmOk% 9N&Q&p)e㤩'㧧jIpBqxKmUR nҏ@Ep,BОۙU-+ຕxvG8UㄛQ`bz}tݕ1=UAkGFL+ }!JЁz zKID)[8e%[ }āaAGMg/.$:TɵăGρMEןf7UB(::p7㌳/ k0<%lٸǜr&mވ9EUM^|9N_.z~Y7{x}O2!Ot^zq9j`ƭ(ظn5"vAeu_~)DLZQky,㔷 vMǎm8=܋>bވ.h1\ goǞ} F{:e6qxzc?6`(_DPu,Zῦ:~JW?م+9&2*c51M{N\~4\v|("O@ޓ@>\M 2ĩ'`:k'#:\kWz>GXu^M F~۹EZ3M0dr3PX%"ʢ eB>BZ0Bn2b}@gKcM ?WtA1!J r}AԙS_w(A?p(#nѨX ɇ#ox 4:,B*\3YI'HZنIj*dzdW7;#^)U^  _"ӅVqo?~Ƿvw3dp!\ 1= K^uAYrd`UwKN\VnG߄'r &DA!B_+U%VnY >[|N< kZ(s|g~B0U8oŭEa>;oax(Jϩ:jۛB A_}ݣ,dkhPEQlK )'9^Z$#7 :F<&)##Cw/ _"(#Qd:ƶ7I] y x=3Xf Bl6 ȏq%FՃyzLaJ!GuDl3}auRyc4C*Ld}3cnnDHMSa ))1 +3o U&6QQX #/%qc1|>ナ))| h1 /vj#}!VI&pߟnáøpg1ǹӊ_5ىo<3/ ?u%8~9\KGag ' CԺ&jNy8Yhw|-۫")}{FjǸ ݹx6X{wq:"##!UY(/>w{nɊWSI yݏƦEBC}j"^=סN\,qi[qΝ۳6 kdFe @Ɉ[5FnH t1)K<>A_STCn(N=}Q>Yj&pՊ\%x_΅2=p&ʼn% <k[n L 17j80y|CZ< C#.2P {4 /@;$nz^L9J+W7/#F Ƕ7'` 3?\eCJuC 8i%-܎iw /lsCQI;^[QwPEN*aT`ci ]pli&˻.yaN(&J$ E>8Xli1j" Gea:C1LN(‰1|zeƯyBEo~] eAǍf 8&)PaNڍyp6?8顎ZǶ׻{QQsnfH2ZG%݊^)Шr$'`tLJ:bልJ"~czP𡟾o{XxsBLxd+k̭6GR!+ {\%c ݑG N3c*7\ml{)[ `J̟P rعއ [Clcg Fe uKFčJeȘ9'#b Iv'th ]:z,+0є07<`/l_Ha?NGʦ_r=Ex} JiʚG JH7!13=\"F75`!Եa1#Ƕ{@wϻ1u(;G~Q$=r& KTLp8F<fJ9Lh?^%1 Dp&dXw5ۺhA 5jL +l/sѰDH9<cHV@E0\xX#k&ǿ5uNK%~xL&f8V tU␖]<55K;˭/bƤzlLs fQ229Ejr!qpRL}6cg&Iw[|}hɵ8>r8{;ۼ !;1#A@_ogа{=^ڑb/Z7uEsu ٞvM Vsy'nЁؔ"njwqd7=$cӫghhϼ:xunܻveǚLn!f]ۏ s"~t;ΛX6snn] c-Qل=eϥrro90 H C%T&%Ž.QH HA=3lug\s DS Iz<=!xi7]?K)982V4^a\6T—HRɉE᥅דN/ib}KH* 04Ue.>;wV ~@Nj"TUgQ+>S,zPYg$6$\d)_W 岭?LE4ȥ1*"+$Rihn&s]Lh+GqE[#1G8*V5\ėn\9,.3W0L9iM=OiFl/%]PK?R;)%{jYlol*2 O:JpLina02yʀ1_Qg*+kڒ*KC:P׺HfTYyTSh3QJ A;EsE?|S AٞAI ðA߾[`a T@3vLvHaxbOHmR FC]1j#>u(HH䏠JxN-jWGD f 0Rd 5 Zru8K2Na։Ր[y Yg1l&2%ˇ2123C(= ?}|#Ǚ + UF@zݢ ˌj?7If!qE̜ K%@\F* DBwyd#\Gbw9OY7BЊf3f(51ϥXko6>5ܔn-aDWWY@Zig?3O)A39klυY 6W7AiZ-;7,`KFpF =+"|هu@NMsCUg=R-yL1gQҤW gU,PHfJcC;#P$X8z;rV"J(y8ALsqtn ' 3ROԬcAI)ͯf)+ݯQ)F1 geDfXR^Q'[cԋGj?W| #uIy ]8XMذSbPyb :I%vkfV҉cFI.!bT(Z@9 Z5Xa#&٘伢]:^ ódˣ9NʣZclҹY֚(0)E)h<+ œ>&xtnX yo*JRM, wj:&C'ı+ăJ*[&,4vZ?εȃ zsMıZ M&Nפʱ`u<Y~K(_ }F xYN$v{"x}@֣cG/=ӊ#ݖPS a]eT%RP[WSkqQ!3q"A^*DmKU)sR3#ˆYkbD;׮UJ.XLLQ {e/DDQ0V\LreޗfПTYZ+ͨ?qϗ6-[` *p4}kxN|X|B'h#ZxOK.Ė`s\ RWbNޯ>uޟZ+/RHY e~U+.n)&ft8j=*nB}t{]aGOA{$ F"J-.Є, MM:ѻz]qr42Jȗɐ\R)fj2wjNҥ˩SQ^h#a Ev3Q+*Q.[b1ϞI+2jĔOאV#Ӆ9VvVJGg<0+ ӥ#'pm3B෌0ܸt3n_ ?l!+<)8U&Wik:|pZ%Amg4kGN,oZY䯝In9c,'ogA$a Ug6D(ppx8B*nhdl |qaiRxTG0)hᥨ?$ ivՀE&B0s}BIn!C!v5ةJǔ#+$&Gf5p]wY>[aƩ\C@Fbp^BΙ >'J=SfӀŒYG{3ogi~,VdEWcs!_">}JP&>}w /@.za0[ȼT§*qÊ f-7);H1x]!?Y'>כY?|v+F(H81[$\t`8N^Ko ,9'`Eշ\!!;mm͸;N?#AZZz?$|Ҍt6e.kv1Vv`nf5W)r?lcCؠߜh0ӹ/cEN1;%7yh0w 1wľmhCVAJj4X̂{LʃVq^rDAfc;X<慆H:UHp3>0)R Cn!Y1/J O/9xLLEz)ɜ'hM*_{:uy JpAW_KcDeUa.ciw'L I!? D\&{}ÁWZ=B42C1WŰU ,1|{ښ)%Kn;~D{ઑ:A&ˀ=ED Ճ+r֊S:p9Jt.Ӓ.UlN 廜UKX4.+#y$CFbE ,掵Rس JJf ~ABu] f,)rQ,jc0X`.k^WIԂs^Ž g/<KAx&rPf( 6lBF8ᬣ}Σ6 D7īIQRG#rVI][Yfcw ]ĹZ\?њpI<,6\.LoCO$HH=lȈBwPJ; !33h^{bh/ˆۜ\U,R&ܼi"$,F)2 slPĊnhqe=nTBHzT5|W%}rG4#u]yRn,bBWK\s_^=[V4'KiiS6*,fGK&%kc?SIV8o҉y{AgsqaMذ\Ŀ!C^h=0(ƈ^MNa5 ^bN<9"l)~QZaqɏ5Ax@X08q:ĹlwM|=Sf '?Od&;Ź#gp!P;Q1dDҲ%qI3 #X HZ+jB ¾eKٗ\u K4V=zХ@%=#נ*(Gʆ;,=kq&oҟolP@8 *H{Tt'OˆXB ϩ0 Ug$ZI"hB^ ^ Ak-K5x [+~k&V,xY'upe3YiWe^B(qG2ܽŅS{],h90G(T2 U u"dDY%^[b8Kf%uEq|f9Zp`pT {F7%^I|ɼlVtP&F4.x<="^fEȐa8:C\ wlp%qo!4'8 ?%zoWoz]M5E|n^ lsn1tF~I .ir %S{V^3I:^t2h }Կ0yB7_βݜ SlJs=ҥⰳPg {ˑYu\(b;4Z0UVf\k[Jg1]SR!J>,E2?q#&W98cb[\p\'$0VoNz OwB~a~EBO/ϛj U,Ak[q[{&9˄H.$FX,!ϿIx3q=~|헐 E_`Ι ʄ':cR} Ѐ9ľ99>l`BI}y#5o_ O^, Ⅲ/ | _$ J穂].qu^LO\x`Oogp5&-’ v!w E+uyBd3>gQ%`VX¶|nU=.^R@}LJS nqӅ(0MOq][D0(5֎ gA!hAUTĆ@T?HP5ihE 1 i4F"$F( &4Q@yA{Z3u4=sΜ={f-16/w%Z}cp1 r NΏ=9֟,$ 31^&\q 2Cr_%2~鄮"]]F]ZǛ_1UtbWcy/NXU@8@2HxݙU<&[F#3+Csߥ[vtq*qV橓1)P9PL"(mjrJVۤhT ṈI\b%Hǝv~M,%)l*/ 4Еl >y\jp}-Y s;2v8|["fvX<vS^ժ/[sQ+kz>.K =ɫxLlˮb \G@cptYijq>jO$ PAy+L.8is2\TggtxUNvBksn2p̔dCU,h05 `N-V*!yn@*y(Xk(dtukNGOu8*} ar ֠3HvJosN2X!V@|Ϲ"1`"fﬨ+q< sPw#1-q؁؇׬uEL7,FoNDzd0aR87n{Bc7nҜC"1tb}`%|.C*Da^ID!{SݗnHYk¬ȉ3Dي݋K-4MD1"q)WͱLMS&,]Br:**&Ҧ $T*Ig!JNI 戇|qY~j>1[B,~kO'n6Ӹnjں'/](y- |H\N>3/haW袉f=4{/Dw4Qe=[\vi241Ju8k _.w,7dwJsHƩ;^>K% L} ^> ^32kc'2m^ y_(O-9cڼ0TG>];pG߫U:PECCMcsCuw %Q| Rz`=$d`^ >W*jٺ3p1y8˓O #f#Bu8&/egp/R™rOmHg uբPʐ l9CN,ŐMكG #7:Z%1r#>! tr#nI ~rVK%?U Z:quo} u3ڸCbpѧZ?WH| 'N^۴0K }Hq =fG?WG$ꙅ? ں[zi/3~' ,ʳr59y9nxuJ~cJOm,fV{YhmOOԆ֟ Co槴4 D}Te&%>gt|}|WybTdKhL|>}O69t1? l4t0@!ľN'Xi3!úk}t cT].]m||t^Gt]K3Ko DF͂0x$OpdzOvE_@s9(XwwwN 0CX\1"<\t[}/h #mæ"%Z_[_W x^%CАBQ7}owOaZ S?^ wS>;b% W+ ԇQ61-R{X~GqDžst݃ :,wa;xRQKZIzNΡ~zB?zi{w=?Jdn]Ytp-IWR}Dï MВLxj2Q98C@""t}+-@_TхAժ:`Ik.J8FTX)i)1R+GQ6@̐{֗#~K{|k(N6M#SǛ"Ԟ|Fc񽽁 Md&%KMͲen,Z_>nhg;ˋ_(J _Swoow}/iaAv99ֿ;ԠhF~~ӳq<[u+[-G^Ki<|t=X7 hmQyTT} ټGw/nz繡_ievQ>9 Vb =Qǡc>Rf#hk h\w\Nrzq01zscwL72d@`%:fuL\̞UZ^k)ʹlbM}A  kKǵw"uz>:T)C7{s=L1)ky*u`XG0$V#ZBJ M3Dd IIDž8(GVV̖suW_4Xo=e. ߳"eZ^MT\jP3J㋐C T%Jn#;,RߊAlm݇PɻHJY8 ՛I&r.VZ<0&}FŞ ܷM? pU^NД :t"Ҷ=Mäed41-#eR.dàh YGB  x:k \ #Y`0FʇXtxU\B[ZNfq-yD~?{בA3qv5vº\.q'f~bhS0<>Y|Ә C,Hd('OpvP4QZm@ꎔwozqBo973*7YajqX(DbM4]0:0.;6` ېq*#.. @"6b"h,*c#o. ZggnbP. 0$yNB.åY jZ 54V!Jw{+^ gRC!xFnzCw\7@lm6 7d0V4+F?#)#.Peɇ2{I'2 Jײy כE D/w$lb׏]0qk)pIhu_w.[.*WJz8 PP*}:JUy8n2:1$J68ӈ,‘a,V7H:7ۓޣ! 7qf3͖0h8nբn\2O'[nK F`X U x$+l쎙*9ޒ;jD"Pxp Wx|2m6#~ cI,^pa)φ!P@ΞnTݶnߵg`;,{_9O΁aa9KF@.TUVwUװ(+f{BO⽷{5^zUWAE6ȕ/dCV="r/!u!Bls O mǐI@cnIwohig Odq2*6VٔW ̴+%GAcnz1E7ںThqr̭W/3"6)aZ["VD8W~2{w :n>d_V:ْ._gZt)炞'~9ٕH3gsKpP;qp]#%M ^{.² +O'N^[o0ILi̢04BJw:帩^yZIIh3J(JSZxh՟TӖы@_ЇHY;mV6BNIiMą 7ISџ)S8,s+cG( F5  !)x8VqAHScqHBՍVx$hKE!yA#kw(0t0LpU.cgRʒZ5@<@O*(CDB_z(a'LMaxPmSpc"3p^M7rMPFMA%J8ӠOmSNmke/#hB=vTCtO˿^}$ j'f rKL4h7$ "?"9#6{s94 =()ubAFRzLRzjMtcJ~ ay5qD_Vh>8LxY xcN*f\#q!%Ng+_UJ>L7uҝg'S)pt(c.,T9o?8YD"{!kiv""r:7>Khn 0hFЮRdVdz}T#" QT}\M  yo|A3,ju@Qm^HPY[.؛ ` {TE} 7EB`)((=@um@&)k.<)ZIrY[K7<`I" -v€`ϯ4eKS !DQmAz]ur Sr7գ ҵP_OЭ0"#4\{7SU *t"fr"UrniR?\|"zfZ"D դ'Rh@ o9u@+B.gZt+5 pF^$M ?KI4PcS͡Ģ+8 5WDt41֚bK R,y7rIBC%OIh]$! [F,,A$<\K8q%qb;:1>^d[(g}BW(ʞBq-sh_€0Lq1zI}(dɠ\䕈Ťj\KՉIzhOCrSH>@bF!t77^ ҆Me.u:<"[B\a*D>$:U`oPe™6QW& 'gC e@" bB$&×HD7vOo )zɒkzMM9[OI N;/(1#.uSݳF`YP3H'j Ӛ4ĵb-.ew$NFH15W%GN2@8cRrPUρ(J]! } AlrK(&D 7pĵg}# i0JNBVGnZ]Bv7 ຂvCd!Ӄzv@?$R")iD-Ҫ阔t7Ɣq+.A"1*|l >~OEҕ'QK!ا%kRk.BVI ꀫExZz j'Bm# lL@ZDUhm*Td~v?H sgIvT]۞*vOu5MIBSWLby'@ IVIP^P uAjr.2+<MI$Tl$ ?D$ !-!k`tBD.G8)  >e#ATR}H"SҥI=#emp./I 2ͣ# W{ݝpAq+tohx$0v2cˡ̐ TVbq)}eќXTˇp !|$W9,Da0%PiWpB\p@:"JvH` ̫'.؅jOGVU B&^s3FMP 'rY3-: Seތ)JEkMaXv4w_ Ht/ -!R2cH:e=(m^wLK@k!HА+%I'PK5>6# KP*P+CZvgN)W s{ Jwq9 I00A&zSK =uM捝"KՉ\tZ!ʸt;)=ī*qY`"$})jQYY 9I( 2/eH#^ *n@^}dD+4 +B k#0 L_':_[(ӦFKw@Ifj7Yn@Ѝ ^қt#G4R,BmPC)ueGc̫s2NVө ELETkwaQ BгKEB&MꈖOQHǩzzZ9 o%~x3!r@I=UD󬿗;TTraN!!WzN[6M0M@{VQo赋D iP Lju~cVٰ7DZI˹eJ^lSχ8BQ"{ Oan4Sz0c,( R Fx?2L $RƌDH@ 5Tr5;|HNl+K\lG2 qV)%p-pDKF;:d {xn׶t4a~9+jy,2,A4xV\l؋.3iFSR=b 8EרKr8(: PrBaՋ֍3 (c_D9rOg0% (S(,bDrtsGK5!17RŮTRHPOIH^BٔuPv҃PDs+ ]qE$n~Hnd ފ#rt{G7yH(% [k CRAVb_ٻBx_7p)\N_[XeALnH !JہJ$ NU?B~K’\|oa7ZC^߃%lVf!*!Q5/PXxR-Qޅy}*jq =ҽZpzI ^.6Gϼs(rqDb%\ptEěG&0G.y, XC L53}ihgDا|?`7Xѭ_+#ZN^2G!h5eRnCJfόQlݵ/7ȢI9|븻psЪcw hKrL㠺6wުM#Åi,CwO\̵ٔX*q VmUgx-n̘o \|~ ,s NCO+Tզ*ӸtW_-'#IKg~Z1{M>6TO2$G$oH8fތ+GU Oǝ}FUTJfFQG} :P8u?)Qޞ'J{=~_{Va=HJ^ 0X!o+] }e!YQNA֎=vǖDS#{_Jbܥ8{H>tBL{А S∛""MrJ T^cQ oሱv~_a JcGj`TW>f##-S}C3A?\[z[/88ON>- ႝ/ՁƢ8 -GN^/AUG[PFuYG1'b'~\1YqՏ Ӄ\M\~ٷ k>-:ED^9< '@`:'%QA0;%#̃)ܝrn?F`Z+hdwsbTޏX] ..^NDR14ՍlFhE<1?:u_ ƙ"1~*╵73EKН-e,>zB j<~7~|$y 1::@'Rsbt> 2N\ p-kb7%)-Y5T IJAwE1(Qā/b` BcmXG;'J0{$]B8(e K7NDM"F`Izr&~aǡPrB@1UiϑpF\xy\(55ïG"ͨ H( Jfi14(Pyӆ8Nx팁>0Q@H>Uf?,0 M\ ꯀ.^g){[D.f HD[n ~ZQx˯;oTeQ_Rb?1^ϛ0)/6ݍy?5  Ѿ~% {ۍ棎K!~R MGoTp?سz4H$K)C%h?~vS&Q2 ܭ$@N+Ģ1 RٯL=,L S?(q3l!L)HYX!kjpkk61'כF$WDZ#`K:B#1 j=ߪa\w* d@6Eǚ 87q"bǵqVrVۃ>y#*:qHB5 J(#A? dB  F5"2yIfs6&7/lD _Lkb{ucX?}:oW)m3]{&X OqM)j]OY0i.cf]9WS^iM6F"xl6TO 6W73[ GS$z]fcEK/bexlm+ΟZW,U[kg`RSGjąBMqLOUg,5l|f^=X\0gnnC]jN8Һe'ԟ?j ` pϣ_oE41U t.̭Ir -8+]!!$@*Uց}~$KR{,(܋?d,`n3}c7J&1ZC%Ft-;'.>m(>%Sj@1QI݀]xW|[-!E3cʢXgj-m~LNРv d= k剟هV@[mS[pφm?XĬ1UhE:sϞYayeZ i| s׎Ɣ#.. tnƝq&Lk؋y#&3#b$g?yr5:o&$ʙ~1d{~.~p%*9 }x|Dz^L+QJsgA4*bxގ'\ZTWy(@ IUԍA.;haPFr$]t QRBb|\NGփ#ف3!g6٩SEQsCWhqR=xZ/2>44\ }ֽl*LP=i2r^,a&_"s1yÏbc>GǺ;ڌ2=TwqՎwAiRϟh{fF)3Լ\[-D[އĂMV(ZgDQ6m?/Q˱[YANĸJ2ծ,K =. bݻu)s+ĩ&_„2,wa֕aI p+H2n5pϡ@¶':zћ@dvgs{Ejd W,\T(va"ɉܣYHJ *'@(NxF\܈PZ|-(Hr 3-sy-2xHr\@V!i =O`lt< g mm}|Vqk+NBܰ†xs PSswlD,ap') K]('zYG|nlMKJ(4-8 mk#?n"6 xQ&T #lyA İSdx* `J91+)Xx6>%^ >\x2 2N[N3r{jxnV( ׫Lkwm\9e[;OC=Ӏ[z 6L0~t61οc}Li GG0ra!aX~M}Bs|XpL$E>!ˤfuOs[@$42#2ߑ|IuЙr:y몍vCHmLt=vᗛ ͔7%r8W$2YÖ@ gYH jH܀2sq=fABʂ|Q$Ac@p9DΩa*("5g~\ Mq 0Hm 0'xXcq*ixj䄿.o>CY~rX@Vn `&:c Ӂ:C6F9K, LBwP½y fϙ^z[>xJiL6oiL*u,Ne&lݼ|YE N'?ðT%`Vw&Ҁ(Ů?2yҴhӂzdqg _a„f[PQQK?)fe];,/`?-^)fbi[qqGb[{?*/NB6CD]WD`$r!L@\ͤڄ41~& 5~尅8s1A*s % E/q`ҔiX|),^C;׮FXBjvLna׮XֹϤsؽgL?N9f!ȼsO=>tuv"=Џ/7ц?nX8xhkE*ǛV`H{QS&pylԂj5k;"6cR}9VۂW :cn"?6@a0$s)w$sMlWzm!`CDk0)E "=`^zeR2H0HR gv%"nen͂yjn "ɭ1B(Z.-zhOx2y<(G L"H`/O sXNQTz:GMuI {81QB2"@naX?"FOSS8".xa0KPĢ JHY+) r7!v c-MD]QJL^ɴb1%bV~2fpO4 ڇ( e0]#ix+;0ť礧+cgSp*y1 jާy6`Ph碁Lg&~CeDTTu)SX=He2%Xm:2-j:Qlc sz;{IU6?f+6P\IݧuLű4hzżԇ.rXqX 6ul5];.m3a3 OlJ헕9rPW_" FI 䧲Ӻ 5VKe$,$,QXj7MX`+c)oy؄#R=Qq̮㞨7̰LB:cz0TAuJN 9X)"dpt{d O5,uSyIav|U"?CAdEg$'1e_M:M!mt{O\&MgQ{q/R㜟$jI= --ՄKCXz4$ 8%%$Ԙ, $ ."'6gu1A>% ',ԡ8t1(^ qJfJ94U0fFwfzw2{ }m™cd{BIl1j2MkrM5"wh1PvR2@FRmRQ@i4\#NO !yԔXWǭ=JZ>v AWvCsׇ:FใM62amTNgW,24VRtFQ8(d(sUGJ+o0x!ܩaZg/QRDo%v)Xt֋IaLN X5 =Y5Tg`С?̐A2m~s??ZタACb WD"Jكw \+/yU<|}xŧӇX ~f9p6=];/n4K杭B#عm+4smi_~4L&Z:;yz+no3۶lS>_$u~cSo?AM44מ EIK^7Q6l\sV](?;.n*I6~/JH _ ޽{ڽm=[c8>c=矼o=T<'_rti8s[n3SoF| Dz^.ӎ'0JiQ= MIz1J 淲D;f}ܐiNHNUn` eD!cKo+ld[?6+=CǺ >Xe\r7pCOG+ހM:aJׯExb>|S7w=:_'2c"i׍;o%ok#\KK/aeXp؍Ͻ [7J`.dik>X<Wo Iy-݃7.=}FT1Zv@?4ע=ݝxp>^]j&̘5 kWOArq}=<֯zwk|/gEkwWl}-O?k?cLlS~jbqьzӪn~|8n|NR|&/⊫b\qmxgpǭ?~CH~~s8ޢJH [TGU 2Ӄ 0` !RMȌ>LJ2'X`*A"efr@KY>h_ D=M$ 'C:=+кvl}s/t/\ՊvEô#ǟ`v-"7iQD!G9 qA./⹗܅/^`~}_/} A[8'V6DKmaHlz=1$/ذLP} : @qݙ(Jn}5kEnܚB u"pFG'y,2UJU<ΕLU:Ĵ`cS&{oAPwǁ-88131#ol\AÀ<6_Et" ߵoD!f0c0|?z~,.;j?}q,.w;UmbվmDs ~]<䩫3&j)Z9yL/V x9+Q!B;Fb*a$b-ޱ0\}lхɸ]7ĘNvFg/|vO0Z(bavL>ggnJmϟ_}x#nhM0 Kxq/7~M]֯Z8{ۋ>;6q/Ys8sp-9 I x^$^{ܾcƣu Mسs;?Bɸco|O4O:1.c֨AS"`*喛p-۹N0A}ܢi0n46-o8a29TFiGET: )_~;cxQhLcWgƬ- "q+ ܚ}ylߴѬZmi{zU)d,OiS:/ 66`,i8[nq4+]<rqӂֺFp!=39b%8#ڪy8ÿ7+~̉زa5OcO:+6T֚f℩8YXny2 N8L~2sl4Tz[C:*4 к~ɼ*wH ᖬPP?JjED\e~$dMLGH,k̝;3dBE? 9i&{٩€Bbs K:Ni>}Y废>;y-)0aG/7u1mPhH%ڷb>Jbb]/?Z+Xc+p̤mZzRSt aOXaS <gۆo<!ݖ;\Յ]ޖB@Ysu9U[fn[DʳQ_߀eK^5k#28{bm{wy$z^|Q|K_D߀HYXÒek+yEusQ^ܵGT*SL3ZuJ Kh?S}I)H*J w:Rw^ ,똨.zةn&äP,ܽ[Y ehAC? @A~2\ Qz$dh;!}'7AҞ.n~x} Ĥ鳸cF.) M劥=4zYs{s3&Bk0й&.$ؚXV cqg?[a> Lfwkpz̎A6.mUL-#|EIVt0^\ʤ:r0OyF4-D^m+=4DM[a<2ld:d F#D^ܪcgyNQG2Zv r3T%qdXWZdV2JX5_3˧xWQYj'1mA<HujlO<C,ƱƫKsFvw$Ԡet+ BUg +yL C~9fIWI48Ǎj؝9H=[%8/ `RZEb!G,(+ X9'ێqX $h #Fu]-_bf;1{lYc1yG#F٭9cTrw?N;6Fem= %ީbN6ӂSս-q <'p:rG$Pz NHvOL"u<K ,hg ZDgn) ضW,3:n4BPB c>LpII^jEaP$09g*wEqAAMȵC$Z -g~%` װXS-êsɦoot{o r>"-0g\ ;`x] u{L| s^dopze9҈y}J-x]h0*;KN+ G16Lvڞ>\2ӊ1{;iZn7ظq[lF9ht{k7t;3-}yJ7z V 7n-;¥b-\Q +YF^6 2o2 $$C$ !`ZϿ{P|pQWH|n_<f ngۖ-!~71R+On->5qwʞ0 +d*]*ӣyIx <$+hrpy4s8u=n/e (4Y) ~fJܾhMÊ8OSg֣'<f âc1 ds)ES~Dj!((q5Ǣk2,NRr,[gH4u2K&QPTk)wgʠ_-ZzEF]]&}ògA=>&y0CGuI=gCwGaFrخ㞸?03zA_kߟUv mڂ 9q*9\>ǜ9^zϨ`:.vx}8cV ho݃.3mנ:][6!GI(/b'WD 8n4Wrl߀N<UuX+ Gm|cm(OU`׆e?q{: HqٽxeӨIL ۹ %09[]eR(Myn5!(Q%K[79;Cvde4 +\Cd7חd]W;Pɞ Xώ[T ?LA؎I\7Y&A 5b{KYK. 8N}}崂 zՕ s9{@0ҽ{v&7Ob^>qмLF!DރpDv`!dc˭xDd 9'P"fn%+~dsF,SjXbW 3-_Zl#RŢmVy $0 ͇=H0 g6h7ՀDr#y34N\/2F/R)H{KTgz$.("$+d8Fn;Cnux`1o>H*35Y7OPkwT/#8znhH8q' }&T7܀gzǟtn7}n\///.]O|C 7aǞn7[,r%_GuW5ػw/Nmg5Exe˞c(HNL2@WA4E#Ƶ}d*}9_8FBëM߯,f%QJ@ҙ+8Uks2(| SN[j'slE,ϒq uֹ҇m/?SCFS ':ڄz!>PEn7X1ɘ)=p1Ԗ^J| h҂˼QՆۯH18ل:yL\l婂D# +e\Qg(,JaA '7GO@^F$pÙ[ _9Ϟf=<_a]xwHjGo &x&'ycb|# ,H3 GEpiUXVB^Be`fmс?_T#1NT9kyIfw9 ,ٓ>1{J%&bn8 ?y0`h,)FB&*S];O)*+#"?]( f{pu3A j\TbH%/(ʹ[LzI4Zʭ(HwOgbqnzQ&2b: )~1*ŏfu["y3#wD%Y(Rş^Cq^n\ R,1|%,ZOAԱrz.k[n.*i{ܽܧJĽd)1xZB!;B_#@$ev.$.!̵L25& ~0ک1 12$[pr:.Ad7hOd`s` LbJ@f,7qW;|']M'r%,>\霘Ð5k2Yn/qpKa=잾5T"LR yHr^$Ez$(Źqg!a%z\P{ 5˕cCcwsK;>>Ss^ Fx. NS| N=C?\ɐ:O%<ŐI5BaS;_`0SSi0F2ԞW(.$fSD*X:p,bβ1qo#@R#evɪ9J!k=\N( P+>(96%+ʼnsXiZs!!ea&ݓ ёqW~IIypb Sc| b[r^ö5F> ![1aiWä`|p^o6.pD/1P mz@ETF. cbI4K,ш-1XjTzg`3f^߼}}/w<޼=u]5 f%)'"-;4o^qYm?NCCSE1=X*ƃOh@*SA@@JU[Xِ.Xއ l΀;(x0ELa@29JMPK &Ad/Er&SUf0MnOMgEy ;t%mOh-j!c FC &^CM&IF! g< 2?ʅEQu|: i\* -aW0NaAW&&?u,cHGbpdN-}o>3erD(B;qr}1>ޭ0`LE*̟ܭGV/G>oxpYg _Bs^\w%<088cas_#;:&tS [/lz?ʹiɛ`6 ZmdQ:N/Cep8.#ވU':!Y܏PA /1$'X%u s}] _5[Y' ^y* G~V+!?~-;S}Q^ X[n~7߹v;_2ts4hrIMz8h뇃&9T81d+QEQj> ~?uWs ; 7I\D\"kFx{§mR*߷fNkaih v{u0֒0ȶ3` wE_f}[ ft-{v`6yۆn}뉰u Sܿmz0s\}a0F[l`7޾Nh5aëħ} lHa  v1Zm8I)>)+n#OxZڻAK` ШwBn&`Þ]aݫ`i/:̯3QE,[^  WDvM8V-_5ĤHreF #v zHF-{΅a 2ĊB@ٵn<%?(@g} y,uGPhE`_;w@Vvxs#M8`A3nO9)pu024 z LK%^;`Ϛ7/;%ڱzz5ralњz:`sUkc]Iר&/=8A8d~ls5fxEtjwOw2}3<dDvfMBG2qC|G2}(!1|A.%ƅ==f'L'*rqp1j]pX%Jjj(!!8! )&c FZ\/\T8{(򇊜ULwv'ځg/x/!+xBdpJZM>EB D`,yn TT!&xFkM'b@8" M Ɓ1xx]J30&r5&c ?Fۧ%>| &R'Ioq-SxV4 I^ } [pAcE>=Y@?a/ KfkI!rф{v`Gᛖd+됚&'vap5Z5.&٦\~6Xh #Eµd>],c&'$+ÈpG:LU"*2U@7/dT%"i9#be,eܞ0Q ,'s'!dD(¡4 mrt 2I01$BJ6ɻ2v"yIm1<F 2MnO$O=T}cAY20T$L bB.]0:36=ڥ݂Q[uuڏ6?n)?z[̸{nd% @4& ȕB ړL` sY.aLŤܞ1Q= } tڬ?2@$յaa{ p`}?H7Ydz`7bN&'/SchWLBTsr(X{ lRPr߾}<)}"0ɡ﫱sg"FdYY Vhrܞ N@ zpv/}QwM at4t 퐀 L;zXK0@"ݿP]p%3611MB4@ |4= bNi+Yp(3K#Χh9Bf6q]dZj !~CjP@F>sIu&\@B1&'=c-xϿ\[v7G&d2Ja%+~MDE)l.+ jԷ*Xr*bYjNPE1LnO$@Y{~n2B[~Zṇ S0>nSV$ &(jWqr@}2n b20=5@uNBW+/N}0l3._o;Z}EwjcfqjG=NbnSqή*P5 1J":;`acȥO6@a@XV'-q~5uμ)eТ]6ϧ55]¶`CBHn$tiq'zB?4r6k֕3BD 'Qۓ#X\~v.~V*~K ɘ'krsֲA5bV|p^89-u K&1@0P|$B[b22: זsD/ vxO4"gu]p[WbF1?BI1LnO$^6@ٵvBf*\߿6X Ev0;R#~HK~^i.v"*!&Rv]r{R{wж_"xk y ģMѺ.&y9gcpsϙ!~fHK\ Xm4 , 92W ' `޻8QFǚ&'t"p}>>淋_ o\G?H>s܅:?jX?X~Hsh" ?^^vv  ȊRHI}?p#kG64j<<]5:&KMnf9*@djG^u晔U5j瞴Dh5P~\<vI?+eߵs}r-JOW<pV *,|{CdoރH2(]|P rMC5wzMC@@OBҍ@ „^'T[_y4Q<2 o8v: 5k5f/ v@[KoAhs:aÞQolN1]Z9#chF|p -C4_8u8s_Z{v⾂פ?m߷^;{ѴͰ}ph(ei=+N> gs az1\umk2-s~Sz:W_dtOضa%J HZD.O||n#Yp-&|h:.LoyIf{pjLnWռyp .Q#~x-{|xM[6/vG,鄇w7o vzH=m+w;0/][Vw2Y7"c0.%u~Vێ>HYRx&rZoÌ rpN @-=FnhӾD3 yz k*gxeTȊȒs{.(|$2&XMb,Ag=WRbЅ/*hǎ) d4A.07-L,nb3`UUeFaP#O;aٽ$_s8^Cf@ 3Xl8d\Me/,eΓ|y0viIRYs-ˆنdEB:&(3߸RL]޸ w2չy~>@C2hP @Ⱥ'pz '\;&} M=4%Bt {S.h1(-X18 Z Xc|=FBreU$2X*IȽB,0 MaE5I&òdq$MCUR!FJ}k2BgK/^l$Ҫog64hE .kw\zo~g*nU JV$ƧHrU>d &B7x,!+,aX[ʢյ=m[6dVkGJb9kd8B e2u= bZ0y 鬘ׄYȺZ>SӓJ V,: Y=]SM&tq-el{5ꢳЖE]L% Xc٧K"(QSE002䂔ϬRŴkϙX~,,B5j :)hAhdA%C2a~9vkgl >ulս6YThZ]JE!kguH]HARHF.c^@_g@>f u+!mvO v5a߾:Inl4az' VW'I4%R5][?҂DE%?oPl6mA)E:2RB =ޮ$휾+('pFi -Q,lÌzM@k~[ xcZژ :`PLk>VcgAoGZ'C{,lsgc:4h(@j ӣL5 qADxY#] VbeHےyӠ9ޤ )dPXG)~[s 4sJY4C v?#bU8Ç3ETyo1B- \,3uD(_QinABErjw]ǰC*(E׀ꎩ*tuWh5z*>L=iHaButBQO:( jxV(iVϛeƺmx􆲚Rju{=6N)9%yq  u;SkPK?;#P O؏6! Mj6mcg+!,Ilb;+W@NQWDQ0 nJPT>p.z|TU+KTJ4#K*uw4l2IF:OAƤANp O^XaKmV^ؿ &:"s`,2&1|,g}w`.*e`@= |6L[ƤYĈ[7Lɝ'2uVhsmZIp#}?̵,eZJq4,*WBgQ~?]fag[A}f˨g7}%.z60J'!.'&[Jy 6?weDq> ^)zw0,3,ɅU&Gapu'Hl906tuZ[CnhmOT{7u z" dLs)8pHV v=q ZE^B4Œ9TњtЃny& j2{ކ [ֿd*BPp[>,Ac-tZR(GVRJZ'\(HLDƣdiW:Np&߮`Mi,6ܐKU,;V:ŊC^$-Y"%YpIehh4,~`^42U s{lZe+?ӌ;1[8d )SV*" $&LI\5JWK>(Y 1\z%zh}L܈82 KX#"+H]fφVXcQ@)NNn+^A_,\69Jԋ* ܒkq眳-nߴ{e\-Ok)MLB|9 L2 {M,xضC}{) qSNG;eyM|P,yTSXUrO``qR0v2c}Oކ̣)`a"O]c#Gw$DPKa$D xde%^_n=/RHv\WL=ŴJ,[sYAQl*_dz-=qDC $e\f Z9ZĘkI0̛;ՇPтD bJ`P5d,'/HxK%L= 4)K+ aB3%hA&LVėn-󱊥 l"xz< I`bd@&6jtA؋6WB6pF[oY"wjEUʤQGF9#MO0Kym$!H EE*[c.l}DV5_-",R%53)HF{RօE"~*xޮ9 ( Bhb$M^2 30a3]=n&gqyr A oP\ʃPC.>W." k%J*dG(\NƝGjɞXq?)Dhk8g-dEYF20XhkI| ٹւ+/C^? ^@R5$𭔯CTD5YqeLO aJpd'v H(G aa2n#qJ^D J,m3Q!r: 9 څ ɅႹ"dpm>DS+R lK򇌞0v$ZJt\h=! L\I"Ob`1<ȸWI5G"z 12nuZ.*fL%5hK?Q&2vfμ9- K?6g-֢,4X83FL1E#[doYdKVdI OSvKfl ,[ˊ\zbkpU†2 c]u&tY]m|Ka5\ZxѦ :+g9k8; $!&P`4:ʤ^E\6y¥;.Ot-Ga7B$PP8R/$ͱ ׭"@Fc90MpG֮` LETWHILZTb`a-YXP*Xpt.I=N-WA)X{ UPY<ٌГ+@2J&[8LG1U P᪕R8 ڱ>Kuw׌lZ(n(t%-tF#jLv|3RJBԽ7TʨN뢯y 9O_jšqXjw!e6nͳD2n^VS)G!a?d*~R|U)Hki@<^6~fV12F^TO6" ZcP=(گ;^Cg6m_>7xؿ+Jq$Z=+'o~rxVPhtuC4c+a?e`m?at oˎ^zyoG ;?׿xد#W-c;+2P rxyzH?0׃&Ye'7iɀIPи3t:]QuB2I8Eω@SXǩ8ػE`*HH|7&Y܂~xhc.E֪*-KRzS3=bjjLDW} U$ LZAM9Q ]%8jH`zBX2\p v-*SVV.}gB{?w뎁+< ޽5سsIܻeקlvW Ɓq̻wq#Qmm6hY =j%_gG7+Hܾqyj04 >sZx)J@HK2Z2^4eR)d5%ysyR#dXF~M.;HK 7+ +tJLYT[7iߺ~qr#-n}se]D[)o {B0]JL速b ]Kkg럕9e+_eU߿x=[˷>F6<{vWlܣ?? Xg3dʇu3A2cbǏʠ#5ykIg!u5jğGe`\1 ]h2Jq>;6nv<5[tE ORj7*ɓy*4ba1ps&rӜ+WZv08o\iRt9tL%>k<eEE? cCž~]cgg毯=zh/rͮ(r3-FA)%[7`V*YHžfߕk5 =>f ?uݣ<7O9pVEbuC߅MaHbTև[c栂qe"8fd5 (mZIH@*W7+cQ8bRA(Gz +҃e9d HV F,}i2Z+(M] 2pw| CץzYQl2*>m[wnֿo5HUd ;3 \"mx`PiL<^2x"$#b_jW7 C:w?H>CBSe(!twQp*Z<&`K ' /=rnU[B]aU)e2WSmJYߖRz0CȊ~C;y:p""Cj]0LD#uwBʘR~ei&l +US ( O PEʊ`BY,yLP]a9!ՔE ]Mi(`ϑΗCq'-0b6җ%BT 1ԥ؈Vn4%AӼ%:Ȳ>3Ͷm#_qdz`~ w˯;yYs >ӏ-{^"`Bj )3&{s%=j{=˸z8m tB<竏O=dI[*kx p-5[2AJVo#$T'=}w%.i%0솉cncA񆞤 Bdȴ@ly%P&.6z׼@[BCG] @g8vY5'11ҋ{:ʒDR'eUw`B "遼~ʊ;k5{=]c#PutwS[(Z7 #p=Yձ.%YVk\ھF t~}: \f+z5q } vSwoj-miDX#bR0M&S{ wZrS۳/MFڨ:\Jf/8! T̯rJ1П[hs7aZh "KC2dhZr"iZ/Yv]Ê֛C kUBjTˎFvS]<)$2ikE_cQsdtbz 1Nn$`7S4p=֍p))KҔ%P <˙]c^Jm!aMqnGӮk-O%/$N& i܄.q###xA%D/,K`zO?:MA{7 ̼̔?#k} c]coJ>=U"*y+s訝f,n,Lr#:rEd +s%+_o{LFѿ+Wd+S/| fjsTV=RI(mג4yAPA8"PL@I&*m9K΂LI,xNz(Kƽg+Jw3"WZ0 HnW{ u_po{tb%p|ݸYކQ뷶AVx`w?lyϓbc}^uo<^xp0]%"_q|h`}J)~!7s?ླ`:eX!nvc (K;W"bH{#92mJ5L=΢"/,C\4=0^-zBR4g 8ҁuRo9hȏbu Ж)=&t*iVH1wZC)1PINMTUc9 F9;XU͟ifKK dZR`"z/W,<11!lC>&4RJH0QLЪ P)[W¼o9`* =ZPs'A*qA&m}fZ&Z77q46=0 ẐЏ53&K^^l' 5r2x J?-`Bpi,r3&N K)6yOـELΥF6 Yiɼ¾8U`9 aуBB+&3ݤg׷10WJfLCK x2d^J1ḏ 'j iV;! M|C@>XԵ}8:ZiaKBRPVuVp:Vb~> |_2ӈ] b{+UxL%D,' X< _e,*p 8-޴Qg|@6[<"k֞Tf>b~{!gg쌌ӟyRqq _'T9T8"[sRJ_9Q[y# -w=$Oa+ !"*g阷Wf P1i,$p䘶Ov@^ vIPQOrD}u%k6͍qYt!Y `4wAkqY[-F˹܇$~.66\qପw#D.ahrHҼNp$(`%c ld芹bb(=L9:} Lxq': =2q'Ƴ KkDRqZ\~Y=W$9LU* 2E˿5A剢@V y"b喩2PnZEUxВ*,1. ?3B2reFۺ+  xAE6 "DxG8,|o5ue #3LAH#%D waٖ͆4"< W),3[wTSSƃud/c򻾟"( 9\߉=ܙ,|Dꄞ߬8ZVՎ1f>T)W/G4߱Sv%]3#ĤW=ڡ+H1j6ri|`-&MK$ vGL۠U%a-T'$ccb3Эf $m܆ {g F\)l44Q(4GAC5~zF{c9tM-U&HOYg5XXHcyMt?Cz6liw>~ tO (;_$>Yg>?L.=7O/oCBMRϿte3@9Q5{!u㣳`C"6RN r:Ԛs IEz7su`k1^u-i]ܺQ#$Cx$Ȟ+1FV>UoEnKm/`lc@?l'aZFMkBlguŋ\Ğ/SR >_CFB T S0g0ܻU{S}ɢ X4>~XXфSՉc{zI؟5C=5[޿{r>`^5; Sѻ=%#A: (_ZЄ;ӉLNJaZ=`T/:yM_׆WOֈGus!5ID G0~$> z:JkN 8]bOף<,롼՚fCxm蘊1pAI_a]DZwH{X+(a;bZ<Ex $fX.;iR%PԤFuh6W+*׿/Aô_)R>NMJZN6%ض +%xށK8 -wO[[9fSh1M!!8J LZ؄z͛XGt&E\ݘô8L}9@'da . ;Hyt/(N8#]VU$|'3W$yռ ӽ}`gu8kpMSpņ2 ,*Lla e|,y_<։uyp/yP~R6;tm' g,W ,t I+8ѳߊ V06 v5eUn yBYo p6c`ypO$AðL2 YI2g"~iU~dA?` ffngx` n! 9ӄ rhn._I?ƒEsXeN>J BtB93[RV]7@aYinE7zG)IIJna g-GkשzH,}fsrDxT).꾇H1Py6U)֦sJx/Yt>ҽ^Be4 tVX`> 8f8J?a,0A2Է!AgmǁPMT/5BG$i gCE<#TfwL0R^,G'杸x R2ʊm$W4Bܚ6Z;(3rPGfqgoEqJ)j>n;w̸ 3n$OׅbkF0F JHMLݯx\żo_pA \U/-4U.Y0" mޱzL=d)WP貂j{> /-tr7ۿ|k0Jr)g[gTt]^݆12 A SI@UbDX.^o*ǓGuoZ֮[HqI>u)70ɿ[y#=(rM9eUůcgr믬EƘeY #9?BSkrܒ[0:Lp32 [PZ V^zة)S D)< B?vb_YD8jy)sP!gwCϖdt g|zw\HdkQ8!MJlN_J(;wBZ:إ =m}8$IJqV#1G sYX Ad1Vs%>×I9!JsIhN .RZ,ùv 6)gox'҆y_4`KT:ZkV S*9d;}X]#$@gҽ/h_y76M;qt_W{W[7clv\]{Gu&,b摑B ZSGL!)ˬ+).wUy?pa57|z>G]kxoϿL1#h3Q=1ɰ"gՕVą)Us$)ˑ5dVuȈB$92,_{ӀQzFOB]g=RH޶_?^׆ȝW-jxep:YwIx'|ɂ j!Fo\2;e>4^n:>G2T]$%NS%Ha5 g m q:ip}hR.:liNVia n~ӵ}d)YXrۺ6 EށI#AW@.%Ũ*JZa߿$?C/wD$gQ|CM|z>P?|:]^6:fnRSzb8][(ԃH(e s~-)z'g{LI>L ueSUmL1܂(#peIiw$F'9r HNirG q2lk9C"R_`I^`NQ=YR eQ)8w/{Ĵs z&ۯr -;%oIp2 H#WU)  4!L0k α{2nqwcag\*@;hBn+؈9 l@&¬0n*a]ݕm_j⮻Ja+u#2qkYS"bN 3 kD}V,*Y2‰yaD(y!!| ޻Ā |qT\R h gCZvgVW,L瞴>ֈ:dg/Z,ؗg-%#eL8!<>xd$w)Ak2*¤$ +9R@%bUw9mht{VB;OKYH;YZκDI@5GUWI΋[l4"~97z C IbK.X'L¤J !1APVY"iZ*7&tӍ SVpIZ=,ɢ`p 1alH |EC̻L׈bp`w}n"E)JHV3zF- ދdʼ0 aQ85:X"&YMh7z&"7>]8eq3Z(kS)o0e`.Բ*8^'fY{sٸ;kP &XR hNTS$"5֌ SeRPEbDʒ"X #ITDqZSEiƓ~jd!,{/Y~TU31v9bp%p; Kĸ4x1a+ S<>?neW`>TiS6>m5d`͎6gQ-1Ќ:?]0u۰]t\y Ɗ!,=Ù3:;Kltw p|M WB?vtaѧkc0B L_3 ߪ`k?νqmڟ>4Zvڿ-; ۫)< o}9H ^a>Vf1n(M(0pIz6 xPһ荍a8&,tl,) mSf h: CBʐJV5x,5nQ{Ϭa_rۤHX?۶ȡMz|vg@[dJ~_YM( .Eo$"'ȴS{{?PDosG0{iÂ.Hxa\$q_IwJa)!U-|ƓuLINjmuV_o_GS3 Ӣ2i3gqJ羝'Q8S^iO 7(ཋ3t^I|B.3bZT 83O5XFUbuBLPJE7CgG:mik$b"&:@凞ۺ5X>rnu!),Vǖ*:{~xО?ֈMRVd1$zOce@E:%aXO#NJefEKv-Rii$߫51)3US9 :xe;@8_x gVSti3{3G4#A]ttW[p6yP?|4S7y2m/ભwqش >`wRgÅ`$C,& ;Cz6 cyA_dfB࣓G~cpcmcGmUTR!a1 H% L!P^p9G@zbl1`xbmW|ڈV)uϬ@uM6#OTCλWv ^U&TO `3G ~e?xk8ʒci|Lz-`8%dq/^ۆS38ȶ~)NkS;Qy1)%PkgBaBm7ډu}CIU~o^ϑ)«ZLvsoj§o g}SpqCp!BR2ӹT|tyeC{:g%> QröoaD8` P6f:O3OZ+&}5# j+ZWqB{=}biaUbOV~ڕ sȘ9)bn4yu3 ׁuO O\ wksr$FI4Ǜ-Oۆ{Z *NA~ҋZ^ס |;~ Ru%r 3mo:?\[}ͷ>v ĊTLwt5YEE<|v?=GZEX)6I*U0\ o&DiAwD ~@"̇2?KNRs=O(_ȫ$!`IC#2#!.g0Z.Sn47faIsJe @Rɽzm/+.@ ّb'ۆMHz{M>Yް@`bֶc~̓s.U-^&&"f;ur! 0BM|Hg>{w/҃}!TH'=0oI8TbN+p 0uKϔU ChA1>e|v3d1I;>٤''*т? uL7'> yFzֽ2Q.ciq$< 6mN {Ί,*''n{6fY]-| XYk$N&l~ }ŴN׻HDg䌺 aK^yȓjq3,EEzpU9f/IaK0")8)nO6J'H_VϜ@6L3! mA4Ruv+>~uM~:y鬄d r?;V V=X@u2Jז{gv;`Sg-H6$Nm\7sθ aR83@'p ݽvBkL:niwzMQDe !?nZ@POSF#L@38uCotM‹g?s0NyNRrN/Z(珜H:W+^m^.Z\$m]F`%Z1"}ҿ!e4m $S6yBKpPV&gIyH f+y͙r6'ZUZbvݟ>x}?mo3rAV!2L9inEM HPwLŠzܲN`/l4jv2 _?;Q@_ HC|o&6W_9nne'DŤylw?C%y FDR( iM~Nb47'O=;|<~:N#/uqc>(:{YºV>}]7ߕ H \v7hVS6MiA90E2:f' 9Mmq -¯s%A֑.%Qvf0=DA?Zc;CڵPtuy,B}_MW6.mm#e nUG9@YI؀E6cT+$hey*W.FX)>ݪўlbP:=2{]ygn taa/k99w:#!nb3ʼnYHP8Fx:O;x-2ܨۢľ43)1RVճ^_DūP'@w!#^X~t#"oAVh,ɉ-`ǶSpXAJ%7V&Z*{P:҃y~i*@8CMm{ݲ0@˹'ϯ_?fn޲ BХ"tŧb' cyVx** H5$&l߻Ϝ9snP{{4lrs̙31:ԃEfLh:-1{Ym[eqa@hAx+-ߚ'L5 ZBjK!^ z"j#ju8_̭Œ3at^,L(ߠڲ)/`׼^ .B-] ]ϡNDYDB 7#F$EAx]aTapۆWI qE-S;&j[ěO]IkaGT[ƕ>zд>KL\]$&YI4R IwQcO#`Acy''i#8'swVr$@(Od0,io nLUO+GTt.VlxQYm9=Z[/#²7M 0B c#Z22̇ DH\Ƀ4d9MJ2}O*QK~%BG %PVkWE 4>_~ 7aZ #:eTWŌ1#"pME Z:55EGE%` 9t1t;M*EtkH-a-{rh<Ӭ?wIen\sm 5}A~2` f5#!&6KC0,sɀQo jĈ1 5dzCsF@t3c]DžWmf&t$99OghZaiT_IBgSij4l'DY$x'IF0V,6v2W=Ik]J/f=vȹ}%jߑY6 #4'̶IATQ112 MfMdHvI ,)<ČiK^:)Ü;z[Y%:F嶤e& 5S`È  H( aR!t[b<(+dW 3H˧ H3CLhv)Զ32 FJ1"LN,E-c {~}(DU%@y͠@̗V59PqK"#tJb92=$BeaGc.%r 'JPbk0A仙b h B~4RH2im) z}Y3ؙQ& 軸QYLJGezXLl{(v#|ul͡l:@G# mؚu6Ͱm,|L!n:5bj|a} "~C{&Rvq}DJo758ޠw"@U18)6l;u*<E7Wg1p@B)Eh>+Bhu{XW)e`0kTIM8,YNVM&k@~L`,fH!Yʺ f`CE{l68$,J1u(~2z;" HWou~#dt `wC,fs:C> $I'o5r9~]#)  ]5}8jS(T=b^87x4Xo٫ōrkcؾǴfP-%-O[58!k! `SCF?}Д 2& fJ6>ΌPdI3KY% M| 3OFnOkuYy{P90ED0- ƨfݣ$8@B3,霱V2EJ"B:Q@ dXdAV>zaa6~^-@P G4u V0{2H  DL̂[!.Ϧ b Zdi,=& ,!"cUGAqA'HWE Ѝ'`y%^얰lD|Oࡱ6 N83fiݝ.Xdcy=@FRSGRzZ۶E4$Zћaƌ҂vdxvj  N5=q|!0M(fx[(2(FB `eI&:FsAAT$"(ZZVpDXwoH)ƒz @BϢƬBPA$uš:-BztM A!hB{U3Mbƿ>`BL IN1 i*pBķ)LԈ|zGg=B`(Tфmi1.e5fL B(.F%332ѡG zn"Qo[ Z^`~X;n0qG?",L@}3$MˈEA$Yhk%;aͰ׷<χcbtxb*R^y⸪ #rgF(J$,2 ;Rsv{›G@/Pؒ:a}9qd)?cffߔ%ѳ0:l@M\JG8 Ǩ9w彿|$HrT#$Iu~z:p$`Nl G0ΣyxNmHsc,nb:,x7%m8 ,{f0P!8D#.oFFDS 0dt=FNn癞S5x&܄P(c=UpQ~@R$ ^0Pw= &,`#% 7){ѺqG^Jc4pL:QjM/H߈= ϓ adCtȢ?8yHdFȘcܘ% I"l#tr:`X ?|}~s1qP;bXd$1" =ZsS{ A[wI qRxMT'D@/oe ò"^K9MbE٬=L€&el\,:6Im94렾vmFYX[ݹ0qGt`tm;H*j) xrl"1z+;rn `/hN[VN^ J\<Ld IM1@ZRX2Vgn336VA 405P4PzD|S1<y$˝`=b_zc5_D`1jSDF(0@ SanQi=PqFI|/84iiYg/i ,WFk%F P#:2qD@VkBS,e*~nL+G 9E |T:K9e9X.%;Ɇ:-[g$rZkK` .m1kruw*aa)ex?E iˆ̅:&RCy4A5 a('ɞ@Iu2^ۺ؄uVU)60EڢfmR.PF)efS4f]VHڟթ[ `I՘@:DdXևU;an <4KM]# hZ/=ߘZF@jX?y`&+j1e~¬ѫ,{d;A8,TQu@BJď64H-` a4¬K}fE%!gD.3Ł_ $@m;μ_#8L.aKBҿpd&ȃ\֎27"F{u w4#dS0+BL~ J'MQM3K3Gqg΄\(t HK"d ^a&XKZ(D,]uܰ6 c{Xx$(0a`مQAf3 FwS<ьvx-^_M|!a((7PA S7F cslMo86*,55RPV ּ5N;d)"ԽRֶ3NV$֙Q1{y( kfHG`)PYgL{vP21c~:TU F9a$y[3@o֨!s`8#SRZRUMdsZ5fC[0)kxy<8D@1gVW'ȣZҲ)DК&p` #i>TaѠD\Ɣa ".iYMY<=2fiFhcbLrB|?t8k_JBf >(*3txn9#CQ~hO df22a^44jN ,2;Bl\6E%P:mF}@̐\&cF*y33:Q /db|@#VXG_# Vp|؝9!cO9$yE>C0 fBHPP=z9Ci5xQV( @"zvUP&a[zt_ 2 ғ4'iR/5z@+pZxpFifx:&wbƟyѾ 2p\DJczYmufW Uo} Jvo 8HИ1aذM}/Jkԇ֢`A&d!tw,no7)k- m Τ5TSA/cjY6^@l<t{ $# Ez?MNK.g&PLnۘfM Idz A3&0x XV8ԯ%ۑ̇GeZ5@oתci\J-3}gV-ZՂŘvTjETWLj %&ʿF&FUb@6guv \ xbD7mw@Y{qu6iD^c|PM¯#H)G48x/|47="߆M4I&O* A[3#( H1jta)LYL<$J + \$/:aJ:)N5c@MV8vS5Q$7"'-z;-j!lg%} t7,:Bn @Ou.b SB3ZBoy"&T3$=LlE J`R[az<םFSNE圖hvщ2H(K*ٞDgU;vMcAs"6 8Bǣƌwk 7M e kN uF8(v3yL1y$*-cx |JG`Qu0O;toM*7TQ],A-ffbF{ܜfi;dsOcTcTsD` 0`g&W1^j Ԅ.Lh_Wx ?yȒ~}nKU:NZ9Gmh{nӨ O`FF9LV}H&7cQ>|#֮Z09GI: ̩#,w#v_tMZU{onFөByHN&c<eM Is -1:|i4$i:S^ \u Kq4tk u˙"OZ0hC!P@=&53KDp7 R8U%H!TjŽ $RN lbuska"J-3܄!ĴCP&c<Fl8"<V8HVb]06 RBbs]ȧ=Xr*J}XzIhU9NUC qrcyK9 _J6*W[)O{%7mr cxZ9YߜFi3e`ԪnP(>27V%Mwc]O>*E񡂘ge45ѓEsn\>~<.;z ,T{ < igǶa?/-eRYɭ?\-}x9_@u4(" cGwkjy1#_PzTTcrdaI/mK$gboX*ʦ@G@Ʊ-Whua/Mfi=%A%P ŒM,.x8ftjzUeOD0yL!#<+8c'psCqp+py6b1ݎkȠMއVMfTd4V=wKհ# cWQ|ߌZ[[s:~(Vfс8e˰i6ݴ p0߸7=#eq)ha8M hhj5ޖ > {fICƷPhB #ކhccxTcJVuJX+G%B.HM?tZr͎~8΄.Q;׌b -8韓δ{DȦYlɍzwt6OZQPb.SH$L/ik?*;W'LPpcxxnjlAY *nȚ' 2kG*;̓ͨV*sm)sw-Œ[nW Ǭ)Hhu @ WaF>SCӇƬtA0{tLmm}JMkqXSqק/F*͑ UkػUm#(VG!$ jA &A) )ډinQ\*dX(cfׁؾGt0n<|o=prņmxnD1se3Zѵ[H 9uw!dU_^~Sh&Zy^S}KglQP6侜yI@Hob_4ЌƳ#8&PxOAenBXz-V;9p,YϢnr$y򊘈f,<75,dR RL?tn$3XRMY!̛7=N +&"7ݨOhsuTVю <A!S$׎;WE2B| (2ֺ>n}0kZpɍ'atѕhy #c8mA3\/> nj г1liKGͼ ?Bcj~.G:AUFDG(i5jĩ].!# GZ\t*|9jʣӺ]Xfb "Fqb FKͳh< L\S5gw~vtM1bXY,M'PDf\}ⲋD" =]֕6j9 @ jfB MrϾaK-ouԆQcLaFW_[&9҃rrJ5]{ :cq_P%Sh2&ʘw iH=^G3C:U@)RF`Z3e$16m?< Mf vB;XAFJdiZFʪd=CV]pBWuTT`)tcF~^'N]#O=K.iYւә ƄtX*hgy}Z㻋US{s^zfm]x."YqG q;ĴE= RmId5ㄚm2?oU?UwY(;ubq;ӄ/tgb N@ڴ!悔'ٌh:"7!X9lⁿ2LCeo+ y<'|!W!.V )@dLV-I{] osDl{ma|e{T|f(7V#pM4(cWCU-#vD5" ^cʛgUCۊ[e"%kzp Gnů=;&sƫւ4}(UO;Z Ø{Ӊc{=ePm BFϢR(?q~);Bs~4ҩa`:QK5mP4amHF9~ϥQ6J\yJSiSo#t+Q&WZi{j4/YĢ\ps)r%<=~ *t`W5?# }kƂԾf ЙYTF)v-,O'y5s?>bPaZ|zVڄ Į't0;mZSKs Z yup5pԜlQģ#8-9,ք{T;O,܄Rꁨ-a*oRcI32JYy2g}ܷv{޲l~"l*z0 ÷z;Sv3X: n3p۪mK7"7Y0etSr )ڣ.ad0_q ^f!;<3Ʒo߂= ϮlmlA*}[%ӰXÊMe'W}/>y-?^NeOǭḹm9X'فerU|A4+Btegk>#}_v >NU2=~^ԭZYjŹKfg*pQ|)WX??[39yq'6 U#۞ۇqHwiF`nY?U4ex]êF1,֔*g/koXC_ď^1 |nt4z"GPlGѣhm9|/[Z܆q-F*)5ױݸrY Y+{wY+M -0GUE2,:"M2`׳nWG\L}缨?jqARCr*P:]ܽ0oDzmx7~ji?߾Zt*>_,9 K'g`D$̈́&Itf'ʁ wfBı8I\4upY!oԲve-f8- y&ǘP=Yf!54`by ;X=jqizSF^PpJhP?k2QAZ6tPq6iJooymM?f5[n܎5c`DR*OM= 5qA\‚\~p݃bڀۀq]DF#cXsftL/Q.9 <yf-8a4ڀfAnH<d"ew1-uS0Џ)3qoFi\©:_hhmirű*NtveqL+d"ۡ[P*؇f` =j&~LN\07J]YNi 0"ktl1K90,#Dm;\"6M2Zcoapt.(`t^^4̖o޿Oo@g.Y-0R`X:ӎEY3nM:0C_;騮ϰnx0s!=+5ؿyhO_g3^t籵4v-myTv/ 9uhkRtKCM:o^Ђe-) xL>sאKg)HMܜE %#{d~#Rd}7R]g!6 M:5 2j.x?]_h܋:3r݁qO_; /o]ނ;Κ*b#R]d G,}$4XB:@t:cȱwyк 2m4Sin)1ǴO!c eu!@`hy2YN<3>H9lC'Z!0k&vyEb}n; ~~㙳pǙspq샕oOpZ xJ~x4wp`WR ߛFGS#[qKJYE rT&=Uӕ)Ul/rO‚JtZ;TBU3Ux́s܉[ãhO< w>g4מb?}|+0ɍrG6܅fyڰep _-q(-xcQW >t$w44:wҊ}. rS΢ٻT iU/Ƥ3&wq?OO5ӑCG>?([j S1^hm=۷oZn9E&,>i#MîoŃAy7ceܧ\Ճ+oI㲥S𻕽X1=Cg5Ib,1E=\ĺOtW݆Cj8K1ӏ7x6_~v cD{9Upy!?<3}xO:٘SAs EKay;_"4FrL:Ja~ K6w.u &v;jFcRO Si:E.io+HːQlEa)O<=auke''HusRƁ|[kٹ+9 )\zY,+ RH] YW]U)D1ҍEoxNSE?Uc >X容.00:KahG?z>1u*ٰ|e92mëfQQaSP,u>JCMrҁ(S۽TKcp K'C|:%q5Ere}C8w05Vqη#qRҳsP1#64텮<|\7U!./5g8*rmg|{o(QH= dM)sV5{^F~G.|D׿ipՙ\.i>%0D^ #ZT1ŧ"FSp Ӡ*rKE[nb|ބ꽰/i߹<^Z-qBSl{O, Xn1lUzE50Ƞ某,V#+R˅.̶gd%:HL T'r5}+ZƒPNut)8e)n}' Pvtq) @*Ù]1e;@H%<]"+YlTT[)VQbQcΤV܎NXYn Q XoCgl5[(M~t<_#,?B%I=s&3i4 F& 5t.CÖ02dK3Pbw̄:AmtƲa ܓ;ljKx<gv8GFfLAAFiqXҔ@4˜vrfPˊV^/WfN><|B Ok)Qٲ|ZQL& SGP3:LFP[\oA! `=UgT36lY0C#&i"2ۛ9jbN?μ@ocJ@Unc Ej䣾sjn*VL-]i|FGU*g@ $4!걪/['?y$TK)49(7 :hUU%#+R쨨T2Tk:B R:/9mL>`!ڱ{q{%LF?y&G>9b K,܍9]zu?- ـZ9/4&wX*uЙaL T)Aʫ䀆Ku[RnmS9%y \֜H]5q?ն^jxbW.rqɯA@/nߒP-.Y(Q7,3x|xn:{]\sexކ c99{/G5wll ǟ2l\f8Wc`w?w_a?>94w;Y.%X|w-m8 7%K˟ {9WpbóbXlS yhnksqٯclBWϯ =x^״i\IwMœ@k}Qhh@ϖXttaђ8`=&@^g?x)KO;p!!-m Z[ڱApQGuAL+Z=,>}71UЋ^};b>EXj23G{ )P7;I͌?ns[`d .{ȁga6b n}3~||! ˔ C lfOHwtɳṝcnĪZFKK "oo>y7oްc2z[߾#Ԙ޻f6t:XChniu䀃GiLuvtFԕtw6{vCaߛb>lI +Woiqy jC|*hF?6>[Db fճT+tk٣MzјM[P 9^&~-nGOE=?5۽6hѷs*܈}H#o|W*{l=ԓG⡌F|Ѿ29Q\8*w"ڌʟ#v}L`}㦢4Є/$?  WKM;D @cݺGZ@謼6qLBӹd4TAV/iL4#eKR,Mǐ+Qc>'#-Mugu :=CV1I+i]͓;1yL!dSUr7FTʵ=~&zN@Cپ4r( t%5/ՐȦ i̳$ZV >EyBh|7*$ZLP(v!Ljl΋)HA}NHQHh[ WPI<$'c8cOkmwb똵Xu%S%RЂ `v#p[abx>790z"m^GI' cu>&c<g^?d^a}@؊9H@X~6p Ō-'Έ aVXSt ƂA#@z"W0!{,ȓDBsNsLYĨ-Y A`9 8mYs8 I–c<3-߯,&ڽb+ZG= 09D׼ZuyY3@酢zA <9$!|L I@آRd:_X8^;NIg0tt?&WTIrZҚ 5`XW2^Oh?c=aNR0)AaOsh)08Vow_Se@oڻLSvY`UgboM9Z ۆy[ȑQg.s)|*C+wPޜRkhlJ#积TpͥmoT C'Ӟ/1e(4]1SCVf/9 vR(8(4F1 '%O@ZZ[wJ)߯<YcFRs))?#$eGqU+2\>fT_Nu\H@--iw.zFo4 _T'pեYɪAٜ1"Kt"îGC#P) T3늆F^~qH2*^coBLAA+Je6^`}6J6jvrO'ր#=rNɵߖ);z#9Kr-5u+V#Fqrl\ ccUg?jrqGaނ "`"2̸;._8S n͸W` fN=!_cJ'i/%sTF`6LD)\plLZ/=`z =lx+U,/F!֔߉M= S(7_<ռO<'-Đ4e'>=M)FF|֬]tloǍ 3gQ3aa%CiSpW`]<طG\qmwkoG>ituDs,Yؽ=e4L^?{ʳQ߅8dCˮ>fl,}p _Spß ;pܱ/<[l¶Mqɇ폾aG,n` 7_\/r8p>i]wE\ᏣÃ8W#;7_ ?p.ŒCǃ݋= -y鵯ŹqUxGpN /}=FΉr0%b|Kļpw`͘>k66mX\x{/wmtǝooO{.; 7oƇ@:3RUKz U\K۳ }u"<9S8#QĚW~{83ވ?~.C_/~[ƆѧUYgMw:PU^pe#Ƥa!ӮʼnU::{STim[:<"̀"ZtXqnJSt=#%\RUxٯvB߮^/C8)z{+sIt*L׍>-GX$1bwxR932:  yb 0\˶h7kY^[̈́@P+ = Vl'MUo?RG% QHʃeU.@ޙ0nW7}<^UxѳlN3GB 44SkeދYsGhq7Z5J[?.7&!;Սe]:qq݌{r}۱yF\p镸wbh`o|rN|_?|͸ذ|Z7?7 N=Ҹo/=]3&Ϣx/׼7#8o<qܑ8egf)s||Kx٧c/~g4<v#W\2O,/DQ)iķ˟FF\EW+}~֬YQdU |>xkY6bN=L[~s+oۂ/~?~-߷ۥ3ҞmHKp35aYH'؈l&'#9^} ,]8+d+?^v!^7cgfS>Xzȡ8!#ю3f$fւ)]Q+=tG2h[J;FDY(ln#*J yl/L T W C+ Oc֧*mY݊ըoY8{uk;J; S_s::;q5ɧ=[7%/~<8n'X`!N8_8>_k·'|yP\ 2{" #c0 &lǾ.KO9 |֯{F.?-=UuSnWpˍ?lj -?E=L{Ɲ<"7 >x{\»X9̓%(>txn{/^w]زe#js^̙7_8U5jw_x`BYc=o^{-}gc.;/\nnuufw4=O^JMI͟^{7q4ֻ2"ǜ1[FًՍk0{^x^EL.qMs38/LJ~Hblذ~O=7\OiϞG0N=%R!!u6r,G:y/xы2y,TqGkZ'fpR|*MŁ fH>ѹZki^)khW: $ QTjhLìpǚG,_1$ZMY)ktZºzwd#5t#s]UƓs[2j.#s VQyzE?y*V?}%Uw9N9&fIQ0( .. *EÂ$ s=s߫VU^O}ůzn{sw/~t:^EDVݻd'qGe =+n47bgO>1ޱ+_ i׭GGF7|:twa7L_VxKԄ܄=7yLΖiqTɃs̸qTɗ=|UoDS$[J,x b+kE-rtJ<9{ 8p FRsp ̡|owBi* 7 9 [(6I4%DHO9) dF#ᅣ/}&4aqӇ_Ä u%g؊ >9uX1]Q5K9PlNN/C HŹxd)Nr2s{륆b!0SMo玉 EUH&40ϙs#1 џ>LhK8szv}kq_B $5DV#:kaeEzSJD6z`X1=rAstᓍ9F9&_  uba oA]|l8l;[Y[Iln9= F_򴈴`_⩽_BU#v}菝saPytuv٢Tvל0ϮsӍĺ)چbv_J;6b' [#J<":>aڋ*)y=%Դ.: =9@d_;D^\_pţ2 Eg|]k~E5NS њ1 P$(]? 0Gn%cbHs3#woELibXʄGjT1Ʌie3n涷T QyeY{'8nA0I<{='?+$!W 82|>]6 1X7%2Do[r~G X+`.T阃"XԏN}S+E)LkS(Ivg,yHlU]ZOɤ6As#ߪ0 ?SI%i8j(a3f`$l<#m2XOqA& v]9CRXûj*_7Ƭ|}*Jlm64Uͧ7e{}bejۥ묯 Lo%5HO?ȥZivuTso!^ Z{eع*ԃm)?EgTOE܈6L*)V÷bٸbۘn`,߮?/ێMgƷ(6!g{AfN~>&dhsJf }3q5{[uw%qPY=83>tu3`ќaX̳u㾻~PqF4 έ0ƙMl(L>5ϢW\} 6{E{O41##)^TTq~Z3S&o.#8rp/gKV=۶cזM0u͝z\ m-(*,ªV?:z%f6k~D-ic.E=|=?/usIP[@e"iQb{\goW*xlM,mEu;v8>=+.wm#U\Rc755 \&ضwB:[i, ?@N 捶W*xJÍ-lx0Hނb6ml} 5`q(gނ0,ż "C [ ?;a"}^B%;~_dCړӍ'p`6ٺIxpiPuPf):Z1% Aow'܊6΀z8DɊf 6nKt3/ a͓+JG짿иc4ϼMydf]*=yhb? 4Kv߃yc`^|W_ E8'-^63CbD5=/&~dEvE__f͟:ٱ c `Fr)xuKUŌFqQ;r,XӗQR^.v@0u?ɀ‘aÅXp6pgc߶̃*aDh0ϯGww̓Ѐ~vM3 lle& 1rBdP%O/<~+W|FVgDrӸ .$B67RqC{vyؽijGdQ]XEJ2زQԉe90öa)8~^.bf\t[/:=Drh&р̙$ pke*01p\PVla_خuEfw ggGTUy]4;["@(Fyci5fU#qr9-O?SgTϋ8 Ks^kjW/Bn *|f̟πEǑCٳJL]A0pqcVwPS3{_yCI0t:N4&:>w|Y,.^a''pussjq hH`ׁ!bDJQRFڈqޘ:UXT"~"-aOES=#|Ij%hUGߑǚ3kNH珦T" qˇQWՋqhPm[#!7'O7ζ,Q]j@KFJ!CQ|b0UH0Dq > tY_>'rK= zvB4ǵ#dUCI@7 >Q8,؜rm#)f @#H`(e n䈂bCdCǓȏ\"8r%A|yLCEb67Re&.ol16M~+>|yA/5! rQ8'ث<~ϰ8^?2;)#/Jab*,&UN.X 1yTo 0د On 9jh:z "&bc{'i b2d`P5se(Ay"/;DvNjŵ{#Fb*Ԉ tGOzlDǮ:FHțؾHK0A2\BP@4"_¯M_lsAq /~:+Jd Bڇ0(--@_?lی W/O>/mm}h:@o;h-$1Vܙy iҤ^2(@@;<(u4t0(T{s~M`9sA kԍG\³8e9Q(.c=x4D#U4VDY7N\&gA>*i}a p+>xN<,܀}yppw|aHBſ-n@M)8V(5 y|h޸EXb<{> 38f"9/?5%CRz ffl>qN ">c1i b{SU*WoYFص8q(}:/2"Bq{ޘ4]ƩǬ򤘝r0Of^^{B{ߋs6i޸}ϤJ}!bN;X Wg3=()@"Mqhn)@{)l~@aGt}HSR][޾>lZ rFp।wHp^͙c EKg&. _/+uc N>%]Nb(QUJ0"%P* fػ :ZcNR^Fdp!"ԘGZ J;:b:  ٭ =|gzʶ\" NjrXK-bZWrƚ캈ΛjCd>ϙeA' US?}x$⪈{ -Cy<1G!GV2ْ¼7)O;T֑{ى `}DCC ږ`ܔ8y A<-0v i:&n Fzm >{3 ًcf.ju58e)G#"56rx1޽0/]2?N@iyY&h5wxZ[=$Ւ+9Yp6OZ5jۦ Kr9S tAc@SAh-pFMbHlH>E 5EYPGzA_Ky#:H)u׮lIՎ/%P~1Q ƼdF+:El0oT rAOOiaFgzL$ܶx=:b\ Qt} z'&՛2Wp0OyCU9-EռG;JDY|@oXB\$z ahcIid#ג०qU[8 <471E_ _~MĊ;À@Jfx=3 hx Ha]/C+U9QծPHguxN~+RTWgSzV d^-CnT莋@vЬоC z D`Qq-2uDf}#c 5f"TursvQF( qѹQHA5`/%_b:zp~+_"Gm8'u*BBhDTE2P%J$Ԙ)D{]pF~xtw 'E Dep4?o:b@5ظYQ[\^Y,BO{vmوlj~.•x]()+[_zU5n"Ս / "*^/f,8;i&Hiu%|;FC"9 '4#ms-k4-MPR? =˶#[yP)1DeG(jTyǽ{n24{ l=#ܲ&Xb?_Eaw0 m"C. 98"!ItWP2U/S_M(h7TTRm̙(ïv}3.dS( `?a0p4~l^ĒR =$;]I\~zڅ@TW{V,M8Ҹe8z#l4;4*JD)i,Y0pťA(.+.\7|^yQYW+.7<ܯ 僔h| ) 0M^asjSTmz}NTS|' %Q j`/+4J:3'@UjXiVƎ!xZk>hw@#bT}m6ZQW B٧$8*kR#5ĉT&xSNI+cA@~/P qw@Н x-B\RS~Tn ۴JdtMYWۢQئo5>۴eo\)(q>18R. yw)qD&4Ÿ u{c#p# !,zB/Lo^3rUrĜRCxO7חY,`pzIi5+`R9\ [ݦՆ^Q޲yFC_(t^VTsUS֗J"@HnRY62 z5ˁC؛ )*)4U:}č~ʈ*@W%<-;IH=v=/Ȏy.ȑ'u^6#:%z gA2YD ]ظ tb^g:C9 ,XU /EM4~qќį(7Dz\ 7F?X<2;LL6]R,w6HBBs.5׾C<è,Ƌ`7=WQ!B N4~Zxcf'"݂=W1-NWdhl_E5R̪8!zQWԕ}m |(HSK0 f/LFߛYRHE@jUH#-slW@ 3*"gEoV拎A20gY q-#FH1/  Q=y}IaB_[u?Y8ߍ+'V=f5R y#Uہ$=( x4Jj\3sLx8ۏڛMEJ=pلm/oblRfe_ j_X,*gNv`2H΁-i@oO7ZN]۰w&ђwV ɞ4|mB֗ /@Q N²KЛ\og)k)]-gp>[`8ӛaxX!M:~t(>l߂Ćs⁇˯O?.njh/M8 WfƑCK 1’2 q~GٱmO2ĄSdz9Cv(3 *G/l܂fϠnPl=uggƔQf=ܫ_>:u5~ <П9#0t$Z%w)=v|G6f2C -B&b>VAGC+ϝTF /ULut0, ΁Q"8bIU)G e~GjX$00l ހsaM # aݳI+.17S)/;2@&/P)AbAN`.RvNȐUtƠSyD"*8H!0Oك7-~lhB2E}M! Ky5Hdk B ~я41rdtvaե’.Dsk7 K1jDfuO#&LU0ڈsc L0_[E"̚8wre\fD6f w/BElo^ S`ত7mGȑHȋSOI8x@eUZz&Bqy94ۍA^VSx4Ҋjԍh+C< Qvt DqIe`6^XQya(o Z NCU}WcLB 0Ne2iY#BsjObgLխMάUzdJd) z؆4.Bre sƻ{[z ݱWEr=E2 #"O,$9|Uu1TwCY,}{!%⨰)M`6=* 8*B/:pOram#T4A+ZY<O얦|ci>-J ڜIv/ٿik!՟zKq3f&c\}^T $rtF/g8]YZ ِh?Ɛbh~ ^|#nb$= <;JfEvf,qДN8~R)k/HHS2eHbKfUۣcLn_k7)YT:N,/A_8"x }1 _o6 ,@/;{=?o=ظa-No܊''TWWcɊqޒy;_>҈x Ua?ݸ?Kb6cݚgQ?b"N=7XzX|!zc%b6l֯_. <"Ç @cc#9"@7| ._p;E]$=aƌ(++@aƍ"Ǐ#1+cm69߶j㡑)p!kތT2/E>fKcIp.U(EUgN yK;E$AAیPhoJSXl7%EB%ڐ15;*Ŋ=QS Tт7' G'-^fM<è ߿k@0cL*7nXv@yN6>p%hgNpeѷoý=ѣ܂}le p`N|ӟ,]~h@`Ogn꫱caWXz hTx#GɓЀf7oق/\D o1W_|b\L4 W a[#(Dv"D3A7eqnqe6ZJ,h cWTSHFƐ.ѩn=81%đ1,L:6J#oHQObt8¯9+D u`z+"ܡɰ,dl0}D#vıڥ<~GK~/CL}~:A<PfKh)*ɌRѲ 7R)UDBa1*H&2y1Lz/atx O4J%l,<%R^JeZ/cPmr\X9rÃVdB!gA0j6ysLgIŏpȓ3P3~2bYZ@nTjM'[fyf$Z)5 PSSy+2ֈFA*)'G#T+O!1$?[頁-'}GVU*(_u~Wȵ(.;04d7![>*)`:[Ӫ'+Q.xދwWn4?ȟ "GxfL0Ni;" 3)*ߎٌn{p;kL=B {=~,1Gl~{d׀Y/\ 8[*2^a"UpTas֊Z*fX9FOٽU%HGC)5Bt1jR"qo\Klwy CG`(ON9_}Kܜuw#:vDtDdU(Y"ADDMO.1ILJ@/R;K~/oΒ.\;h̙w{y*zDeO/gP;ݶSoF4l4A*IS"сͰΉGbPO/6ONLX"hT]%2pƳ*)):D`e" B*"xڏZ{1Us JhÛ3!XRmA%I Ad V_K~yKb0D" r~`FpbPk!8j`mn'1 4|3AX*Z3cj|?U8;ɖVz96nB^7"{o$"JrU[\(DcK蘎ۅ{x-òB;'k›zÛٿ1)S3>--GP_[} Ba (J\zcD|7/z{W䈈8g} r9uj<eQkٴjtO"2jȉeLmu0 jA b,Ԏ;Wa}t͖ꐪ-pu+c'& RڢpW T(Ai]jgHqѣHNV!"j1PR PgM3FƅMODk$BmaKe^a-FS_YAǀN"iB >|W!w}1WcYB<~Fw^~j4R| !H۲T 7̺SLgj 3Ϣ24s-gg*b#hk%~^wq%g.Ǟ^9C ŵS(֜L@ W$vQԘO2_X`HPJY`aV2~nF)u63%082C粎kZ}Ϭ*0zMA3 [)C,AT%'Wo n)7S Eu`cC[Z2ڽ]gWA݄s@bV?IUA"(єc)]I/q(?_ n~)Ibw ])uC9B;Gt+f)Tlb"#eY\ƥķ]x7@.%M&H.ͯC8礍w{cE^0m-,>텇KN#@93Ҋs 2ILGU\`ƽTi:=ӏ0~\>.diI`VEM03=*+ 1b5ܜ\51慰ދH/~ q\3E>dq3>M2~wY*պbi FQ;sbRʗVݛ* 4ժvr4X'1EЊaH+!6BF޳(,bbDTTeഗ!xún;хK?+PtevyL0cF D#k/-[%ZL#+b,"՞ P?G{ 'GOΌ7{F{UlmFk)vc'N3}LC0\# 5>4y/ O7 +.DSx 9E8 :[1 "QL9 j"en 4>d"?1۹=ݝ"YXTG|~/vnڈqS wbX#0gRkk9yU5uXu8o6v^EFh4VdSq +1@I`jF7~sjKqWR:P卓(Bl W<\Rd{aקMHҍ-,Mđspk&A m*._n 3Jkxᶮ9V?(N^=R^ihmǕF'ETiVMeYC22TFȻmͅd:L44𦃤s˝+`γ OtT(j7%-9(f%\'bPB,,Qfa/uij:9G{c` ϧW OV|wQy{3vxyt\ D2ɏ p!_GCØI p T֡?޾uwy'Nx͙t Rc,MGK uhN0ڂ%/C$5(*Q_7F=7/10Ț"6nF3pTa7AX|jS d=GDèQAOS,]}cXb/|y1^Q=FvǙLBh1T]r^t)8tT=v}aJ\9 ';XKݛ ;}İet? îF%{G:H^ןID {r`O"&Ɂ$ō+a"[ԁywb/{0+sQהҀ?Yu~<iGM.~%i( Y c/cM}?FWlc7!*2Zg.VT`_gY*礟drϜds"q(izb֩&9xH, xD͎ ̽ݸR32Ae TA'Ĭ"D@]\ K9(=$t_)bm?W[Թ9S`p\ v@q; V:?EdCZy#ojD[ 33 1@楦T-׵>xg@ۏLƍEƈ.S$Jq|LXx,ᣘg=GT!xIi B X'].~JQ0MdE:?a(qK*1atL2 P]/MTXS?RIVζ6L>;_YϏ2fn)up#¡ N8s34EIx$b9"RcnvF0 p#ƌG 'a׸^|I[ ̰r#%̀.ۣ5ݐA(a  pZ6 \;oc ?ȁo Bu!B*&$Ҫ #4'Mz4MܒE/*؏nǮ5gdk!];2'1&21.?;buh:jmoBL_S{iIG0@{ǶU!hl~[+c2@NI&j  zg#5M읁${|.5"dA ̷-^G#"(qkw{Bqlς۳AiAP#{p'oK~ywZv h>+9Շ=!> Nz"z\R}'f6JwtܰVj  ]:@ƜHA2%FgE;3T%:H Ǜ!WŜ-Fund;bWCHoZWT; j&P {EGk,?;~-XT_ҠHF;<=w wގ+';}}xh>upCi7zam|+JJ0ut( v{?G,^qv܆P8z{p_{Tn:_L*J~/EQ K!TE4^/ܦ$ >ӝYϞH&6xƶ$"ɫ YcRG} Ruqd]u4!kdC%CS{IC-A a{"<^ ]OatpV`ԧ+IvVZ9.=Ѕڌ^2^pOLe@.Wh*wmwW{' 0K+3C]wl<<}BaQ{zQ41Mc̸(-}w\>l >L;wlL]Dfp#G+/ .k^ڊ+7ϡ旷ֵXs1ܳg_"Gw3MsdRCj'_hJ2ڌrzq+' !.-!2xjO&R(G$s=XլrkסydA)CPN$B~:|ʩuB~m@EeXز>¿.E+$#~Ui\wq(()E]}-F?~_װfv!J&`ǖ56i~钥B#}k;f-̝3';PVV?.%f~/o5 mbO]x T}!'{0b.{g_[DL>*VGQ}.IuU˭&IaٲVnCL ޢSSm@ANR:J"sSGFAr9rȌ|gFZhACFݥ*d7DC?$'$ɽq?G I_6î?у-rb)I fDzxOkaq8WAhO!{x>=Fx:@<od2vfR|_P'.?zb8`s]sq6Ol.VTUc9K. Q  j.Ox~>/o%b= Gz^Di-Gª tfh ƹߋH4 x+){{B@g#8)`bJm_TR#RݰTު<6Y #+Wr쀻mGs{)rTHpFvb#D$Aj8N\D"|UC{)v!VM+Фʰ=E?.v盿2iX\_m>ռ`PtOe&gA @=h o. 1O_ }~"]yu9j Q/ʌ=WE oFnF,F8 Ҥ390T>S3H{4-ʭb1$2axZA,@II}WE7$l\;@'+ClѸv"f{^ 楢2Ka&vh? L*3) 1ki>ykI*}$Y~q7_Tj~ycI.i6xF4Lǭ/D:O#{Ű$, .:|oaMIsF\B3nD % '@+uDnd$ǫ ["J!fר:"QSw^Ej?u{o=k2@ɵv^;9Α֩Nd|*vbDR]iB/om &Wڗ07ԇa%a{X{ݪ@V g眽;aqi u߃e_g81inFk}r:|韮3ꗿe;U_"ܤ싞 ʡ(hF# ~1#CM>9P@p18xBWa~MX-( +<:>fi'Z_LnX |j%p&8'W7%#3yTEQ]H doG% +C<0T{7r[N*t0%(>A}w 'UT+ȿa'NudM_}V8σg˰r Yw~}g_-.uK[Զz!)K; wU|OWF^ozޅO_L8u2҇FBֈ$g"sϿ<6m^w=<'svÅO:L4|/ML'[I^ gZrR!K`znm`m&YW fT/ 7|05.L+e7m-xإγi5:> cpU/s4ضKU 5!f 9$\r90.\ ?:8>\x޻a-ہu/VNԭ u' Mw@{ӆW_?{U/\unk4dnnv |:HY͇ݺ<dŜb#ɬ>j؇ i ϮAj!J9"!?xEGyS3H^; ~l$ 8wt 1M4*d>t?ؼ!OB}4ʆZzyPsE~ZfhؘޱЀr,$Ǫm[$ >hj]mKv1Gs\FZ@I-wz.V90ݎnw2URBy̫VȨ:LzB&5Ҩhܩh͆z vanGzլ^: V4B:݂M3AKm t[-ts.2AKθk_ƨ5̻W~Yߔ(DzԄ13|,]FL5Jxyh .GV$"S uxAԤyJAhSH &1 `Pz#j2f97~67ﯭmݘ2(Td)]vw[pm=kp40篮?lu87~NEmj2Dzp^ө^ש }PXL)x6/ݱ_X+'B}7W/%u_p:^AJ-aY!,S$lϛ V?fs<ĄK[%S)dNܟ |An mp}̅4 e+` 2 C+eIc2c8c8aWeEC8uK #%K^ʅx(0 nвeOY?QL$/ Cǿg:88$A\+@R.9F::8KB՘"naRLMH7瓑_%֝ a<OH~W@ \hC30S#}p8I9r_Zʍs) @?sD9H 4@%Dw7Y8UUAfc8c8/ r M#탃Y'+=B6)#ą)A3-BK3ښ$mAiSm nUAAt|OO^z/n^P2rq#buA!s>RդA Q:c8c8c81z<ҿy7% UX^7! L yLv.A le9û+B%j ;p%_P I{/3 _"̷0/+)˓(UH$5"`ua$.H,>9R @*IԚ%;*1O] bScMB5D?d p pcz}Pl_!kZkUh V4l!`+2:PJ~@t (SV/bUH7 4hH"$8#4zk#"|MϵBS&ch%6O4W&lV2D䬽Z_F3nGG H\A5r?s?2('C`ב# 0V%RRP)9 a2`8c81@:O5~I`(0!nܕPa{r-uҕp5aĥ x)iϓRk2P n>G J:B(?te4 '"U$RA>gȓ l12K2Dr p p<2"eY7Cl7x 6F+xGI?%'%y͜z,Ȅg&<ǀ#/Bj;< yi"(@Ȼ>Y`=BazFLh41=\D4/2Aj9NNWu ' ]y/gu @RIO5 ̟| q!IIJrG"  Տ D-·n}p .UЂ8YN>cW RE/8r@R?~0/G@Ǡ1Ɋ=>|05*X%j8ȣ8&IN(i p p„7 h_0Y`'!Ǯ=06 2 wyj7 0ۘdLU{F;$aËnZVH@JSLYy鲺|W/Bi<ɍex5Qf`@P/Avjo.8/!Lg(_=G`~\~p/XU ;hr] y GT-@Q?Z:b p p<#Ñt;1)-  nR0(~!(K][Pm`At[x֟@`s MPVSfF}*Gs"DH~ҸpB$ІB25p p ǣ>i2 'MIRG  $p7 }nηB@O'T0ҧD#3 <] n0Dw, l^ 0U\gÓ:/> 8a\#]Zf<vQ9 ay'p p ؼ~t+>6N6~LC9ơcWuձ6kdWxӣO 9ी\*Xy! Wlu@H?N R_V|TUG/v 11Fx 2hNJ5݀~,1;bH}U<ðgU*;-!@ J4L/iK Wdj2UeHe7 ke"cTUPz2j֞C#PCBS`,- (Etd`8c8E+isA= D}L>$ڀK?.(z^מ9?tJȊ+зd׷!@ AqT ?#1.ϐO9h j=MsWm7:0ރ9] Y0$.>B> ~Pp w`h],ɏ^I  p2!9'@4IuĿ [&g[_O8kxم9s^gW-p;p3Q@hwL$lsSZCm˺S@\1zs>)8"qGFaDysiBQ#dg6ey_wg%UHBo^i7`Eykڿ0w*L;nU݅}!Ĵ suzjdʲT -va0%4ucm(vvFu[BCmw\}oa 3꽞ֻ0jױʝeȗ;W; [M3?sc-]R/6Վۅyo+Ͷf\Y mj|uo4 ljUnQрIuG;Vshz5M"oϷ5ҨuX:;4)#k3cjB9ԂN[jɜZLytﺁGCW[SVT%@--hW$T7!F*CYuEa z~WYfe!fԺrD}^^.CI=;~k#&mG~|%6깔zc5곛ȗ4_Wib?#jM7=G.coWkq#E_I{mT3ԍ7CsvL=lsuwsDKlצ6LE͑<fD+ey"_-倐Q'FODw7ͷoC+`y rx?.[2v$ f θk&$_\mUo|r߷\+O`NiӶè2}?rz pxSNCGWKRw»=J}~n=mcXY8Rέ;8OU|NxrAy*?$cv.?/yOM 9t;7Faay~? ` ?'^܁s!huw~}泦m.1;we>ûU4aQu̫=xwMNԢr\1p<\q}8{ڹ~_|\{aO?|0sNO}"=wk܆xJ0Sp&q8Sǯ٧!F?=ʱOxd&M}m8Ot6979 g.66X>y?|R0^}kpƜU˚x.݅[jOtCO=(>wRm*PFS^cD9m;6<(fn^{N[l*xjW[o༭Ӱ~X ӏhI9YiC@J/t8eBr\v`(ɫ.aۡ1T"aӴNj}5{O `c@L@5ciedf~IP" )<9b"c/;( .ȗ$~e2CV<0ƢE)Rv}ՁG NA1T W}#<qVU*dJSoÝ>렊ZmKwm7=<o7aA9lݾ]]_q흰"u3%瞹 źO\9u?{aDv`g4Pg, ܻ_UUyH-M+Y?%x^o ̍= go099wQ13> Il\{~XVk7.wy3{~j={t ˊNu&_;S?wc#zgЍ*a8pƼdv2 uo)L>'s 'a.0i8Kö}_~3Й S%#+}W0ݬ15e~R}n?U4GFf2ܹDМ僰 UUy+#0,̀hHe VѕM"QM QƮ>2F/A#iԘ2yh~u<+*X Sc0[TT)5Gg`_ȴkP4Uݯhlgf`(Vj*ǠGסTALLm# X?rtԤKpyZs0Ѯd ]z(곣Mwafet$P_O=K2)g"7RϺ~Xe(^kgZ*3&}M(BKcpΔ=B9Bj~tEReR4C&T p<>8zNWaT+t&g|~dfvCK:vlNB\Q tuR7Rog鍩BNXB90`Rm>hoZƕyZ^Z4iБm c޿ [t2Ə&5zJyP4ZfDݲ K<ń\tr4@km>sO7@!N?Fj^{G Iؤ21!Πq́\ˬ! 72:f "`r< J3*qa_zw ~j׹h7T1/iJ|bY74xoh=/O\P4 <`Iq=G뎇1_S`{S/L]VV矙 W^M\M_>z'qul[C{%13hW_Uɬ:\a НuͬWQֿ _O.o)'?$8os 6襌E) 2`/9uB}ѕw/zoAŇ<0qcF HW%eeU+EȒna| 4BPᙳՄqka=AʡՑdؽg<=dYd)mb9JM)HqURz>y<û3})17c gI, Pqs {N1ǓyudTh-ma+n=N/?Qr3RF{rl~mWT9-RC9iT$88+fyD)@f[%8@B#Y#@L>8%Q R P_bAC*TͻA@x8&f>ra6VL0F""X2n&`]CWX3^lP!oj "\ ěa%Tۈ`{Doc9%gM\*Kqlk !)NVkHGˑ1= _IIphwNn4O8a"7yȟ@0~-tRL GN< A_(S4 @g-#b+ * u\W'Y@u$L>`J>Sc f'&aa {Jh(O%`3"DZs:6i}jvԓj6`rfmNZmoI:6%lF=8u(_}@eMK4ϵ ]u e:jf;!z&/n0Jрu)zHLVW6^Gϓ&">\ck@u)oJ<#E٦I훒H]"umJhp(M5BG(ДzaΎxG@ͅMΌ5ռϵRIJ ZǺDk4ΔYL=c(u<6E3HezhP8%Ԭr5lu6]YP=u&"Ycg3-"EƼnVr?%eY_սh O)fŲr`X9D΀SJI8-]̨reXO$g2Cf6 wMZ PD֣yV}/8-ha(LќC{vMnٳ67)ED?ckҜÖV(t%,BXUK~MIZ `g fYoZ ]-A#/Ih; _VkW_M^d5I4vC{w3^w=q5D|G btGDlBQDk`"H@ (xIca3B?bNJ#C.0XŐD*кE0au(4EO]edNfc ^`ic"GSlfi{'F(]peԃl*2"@s*2J'[ÓGM>0v{۰ s#~+gzK#cmhHe$t YS&TzqlY_DEVYm~x|W!Ԇ&_fռz^Վ&G$,0{NVzjMh062s9M7gB6]A]amW}(PߙSQ2 BO3#uCD yB>z}+AJFaL^z\G9'GyizdMsM{Ik ̽'<"!JzI.>ARDĨ@_F7KPpe&6R& o.DsgM$6n(MC > " rFyzBNA.+|XàYuI°L}=g~t Qu,dy+1g&vV?"frH:-#2/z|[Ti(VJNF%wi8bxg&F;F/Cl6=NXB/ީ*]ʨ@G ZcURWېX@Onq 9oYwHP kgu^ Nae޽ƒ_%rnd_EjtD#js`{}!dѵ[ɤG9CVEbEaLKbypUy%&! E{ o@-53* `m#V9w1NjB~LjQ:ĘH޲[U8 GCp9ģ rPÉSځGvC*uDԬO`wn7K7zj@f}Ij]-Ң}8tPslʛiTŀq#a #z2D+Eʮz= ^%$)Oa;.& \Zi#w E'R%^%a8&pI&Ja'fFc3J z$(lL9IR"(# dNE`D QI$$=rN 99Q:`$c͉9~幤塨OW<@yDfs{h. >Ya ㇸsGWubcҦФ N ̆{f}WGv ъW{.;y5 =@j)A$\݀L9֙iZ9ALd&M#fFN[tKsbIhԢ wl[b*Cd/s!Y /i'pϓ7&1k9l9,EXS~?PC,(LOޔ̀5CYpӆUQ [}n,k,4c6ᚭv0:1a].P9A#/` }aJHVD1Ev:qYw472:rp6rviSpJ[ #'C`)„4@܁320 bBoDhb$ 7 ʢ/ q7_ EBŁ92.}Udxd@y,LE L0H'%&1ٙH)~2+ =b򠊈ي5nj1o?\bAH@o)BģbR9kI*ժ9Sc!3 뷱2)YzCڇ~p=ޥXՈ}<ЎrWİ`j nD\W"8y>ֳ *eI뗮Z6b' bB.(M@aifh>r*R (CnMZ uvwbI3qȐEttΩރ "^ _L=΄L@>J6W(1OCfL`G '" !DĨTprDS2(Ȩs Úq! ,8f&#Z)"wʔLJa3tQo;dPxG^ .?bELߟlv}%uC dR IuEq}28ޚ]`$-+09gwg4vs~C^DN}<L+ (/LX"*Hc +Y.WBx$o8sId1 ()B-0s^(1.+<)4$1ȉ(0%REKTeXJZjZu(m()K(_?*'qʬGhCQ PA |-I. *&-'3 ]L18k9wbYPrF8tO UH+kPPH@OlL[(%_@Uh0.u!JnYtvs$ZlH[`fp}XI?LN]/OI9HrYuT ΰȆ VK)'"l) @ȭG:i+ZjI6EDRRW5BXaO]$XycX0#(p*[/Q*&:h@)ym wSkPZ8\ѳˌs\ al&,5-5VioS.Ĩ+F8i *{6A*ZgEG/"g!6,=ҧxIvk=#*1gŧa}kqEzf!&!bީ+9C#}oK׌oKxW Zv<d7i `B@J)[fWb %gꋥH"bG@ ƁTwwNO0&yb.HKG(m;HQ>Hw ⥫5a,s P HH擘P޽'ӼXq2dK80Ȳ 5JqZ$}#p%qx]Ff΂ ЛڠTuCK<4qäm' w!WZFQ Oj@z[K=4DʾkĐl9eA]hۣde[;]-+TEke@c9ጼҽ!Zg̰FޟZKutLXm"aݣU(FRm_K'"\61l+H [ s39gIq"+ D:ሪ-Ds@OaiCQDAWVs+U@(9(6Q#MTk$մUZ+ A(z(oY"d"X%S{wQ{9rFY$}{FO%{R Q\Bku* {u`10̪FDu_c_S,Ϫ}3,HN2b6ۚ3׽]5#&ĻQYo~>?֫xhЫR)ĉM6{Jy*cn۷ί.?`/=w\j|tx8a!!F4xl$4ѣ xEK`o$}xN$O_4w8BI!:G^q|4gW9&GanE(["Hd5q •, H =JIEƼd>$K\{%('eXHikε]EC:dU`cʬ=DdTGuyŚ{u!"D*6(S%VKBxēqE#id4ՉzQvѽT<Xi&|'W%0_5Wa+ޥȮ{G[+ zUG[Uq(ԇ_},v"pd oScޤͶuܭOM0ܰ:KwMUc}: zWu`:X~7^Tԇv/9}OuRqx٩j>WJ}g_;6 }5;w';ޥj>~Yg@‘j,NVKǁdI^Lꌤs myl:dr\!S];,Eꚤ,Mh,W#n!1Yb(7S Ց p@Į8E#^L`FCo7?4]:n}x`0ٳկYcn@E/;7FN{N~'Ԍ/¼|Y}oyC]䇏zCm3~ȿn32 ~uD.V-urQ5vYnqvŽ6MLu\)p:V=ݳ{ܘ{SO|.X>ccc4s򍇏zBoag3D\0P1&O%omdVxKB`QG KX*/M\@%RF8$*wǐ{z'7J'_F=8 t7&/#H/wR"ҋh(.6+{wq`hPikM]C!.lzCbWBҥ"I[8&(7rVMDur+eB~ID.w9E*[W+d`0VaRPH\&y6z^/o#;1~姪y,)tYm| ]:BNMooϮv5^yp42ȚSw׌~6?|G*k rVVN%Nj{sq_Yv+B%Λ39yЧ ]\7?ƹ[az{GM{޹xu9nj36Ø!:zҪ<®&@GtӸO\[Y? ^hUT'rQ1o q<(,T@]$Dc(<5N ͐\^68acA8$DH AJȴ\".&ċ>#Y$ۂL$$..@\qSKb+$Dʨ`1`=f`ic]OSl*VZ9N8r%@"SɹF%Io- Ӌ\`Vjv)61{%e| n9,4Qc릨:2yGnd+BKwL TGp Q>uikBoA&=c (<= 3ͣmK#$)($Ԧ> ONC /hv:?Mw4 . =_mpUh5i̬qݫ'O8/#;y/:Q9g/5unH1J~r#|"Qs)+⦽6w <2nB:wfn}]e"`{J fK-_mbMXZsTYOxrde.`(1i/h3P)PT:#E(h88T2?"'iX6Q'-Ll\ ofPWKi @t3>WVT?e:=lR`X WQB-QΫ0xf_(jkk.D5"G k %GyBzjTdZɘFӫrb0az:Z.'ú(H/E`LW{IbwN1CZַ [@'b|rt4xoȝ=^wʁϝj{Vןwfx-}iw깪ľ>rʤ!VomU伟h8yYpiUdPAtO\"*@B2s&Sycᨺ?~|4͌7lW:NW=yo ӳNO5;c9'U(tgtZTc= ,\{^z0]$VDY:E6JB]? `(Fs\︒U@S L֪&|єYs ko1%P,Or" xMܩLz  rrF MH(Rp8p' 3|ȨuK$8N;jn1FsEQ]ḦbSnnQWxx8_et4Qu(nJ$elRv}r.˹ ▱%|AO(kr!=bk [c`8-a> j*,#|6j":INfd&O(OC: ^Z]i_4 q+rr~Ǟ?}aA$ܫ^;S#p*kٽk-Q[ ױ˕f^ө߲/zOokeŏ[ҭqB+1M0"{XLuRl$v*8rysCzf5%HlPE>k 47Og< nZٶ"x2t=֋C`s:ubT>Q+d (1!q'OIi!+yl!L H9*0%> %8 sw9vQwLJp w&=X(eZIۏoDBd8BP#ʼnQQ**\i:!F8$Ed5D 2 ꬎI!t)q+#v^V'ڠ^V\G/m1-74kQC>hs_A[Ͻf>E-cm8ڣtkMYpʧlzUsHWe j: ?{ gu25>_`='m6FZ >œMƻyϋkxh.hĊ84_?q3ב{:S }]5GDtZ䴭S] 2G"d_ͨ^cZ[UGCϯDFpT[/8.yfS]hLy fӑ`FJO.x5Q.ja"E))yr['͡FR="GXc h4"!f:n)l(XSqX#F1cyĞuzgx`'Gnp ȥ؀rhR%gkƤ.b< xLb;3iU)`A*Q(da>:b.p9]J_[2U r}(#Ss]ɪ [.I#!rz&T c͉]!Q88/8JuKU*lV+y׆\GN4ɜj%аa3ݛ_Os1YQގ6įS3Z?ke ;۔9 ڙt?oc5hKxA; o9ʡR)o]Rb!hGkUmG;g}*%2v"t{!zd2" ?_ xwԑ( ̤bs+?t}rJ6iGIōTGp"'1fM︶Ftin_{.J/S=1) /8CbՂ`L:q&:]Zab( )NR"<%Nz66AS@( Pm,/%ZwtCsĬn2>rI&qYkj(Va(u6:# tkSҦ(#Vt3emޣ!bUmh$~qE5ohkEfԨJǫS*h pNDR p..w!/iV3/Z\ NyƮ*zW{iVrI[\hB&V#*d }ը߆. 硯v6dڱq̍s tlS~{4Y$B(oS#)MkbHrɠ 7cc{EC¶<"I/55PbېXg'*±$gvdeԅ"qD"K1&л?f`)$ZV":#iHezcv>XOh%貼 V^BطPM.]y\H 9A9/{]Aq*+/=:V\ 1 &c !ȺLh㿣)h~/L.Q^4˧$\^r`,QCPw&ɥ(Kz-w|*q)KHзֵW؇uoV6 QOw2"g&ZѾC:3 +kV'|-àQ=>'? .ٙPk(k#hxAH9[Աk|B=KQ̙13ҢD02b36`7B ?rbBEo#+Ep JXm<W4Ԯ' CkmOW{0Zh!Fd8Av¦H$ӷY61ڥqFIޟD GIiE8q DgڙXZM #Q_1o6VyȲA}Ѕ:b@NI15i/@}L!^LyA.X0oX;Lꄂr;.1i_nEsɮR<5kFt ]XЂ4?si^J8%+ JFՑ6܈HZ#12w__Jif5Vo؀jBSGcLF|1 ic'|c?`|g.7 ɧbrZāsd_jsk9 é8rKȅ7ޑsְ0|;= hFu\[h@</?pOqIG/6R=Xѿΐz]^W zPF{<yŽ."V#oGU;[Dņ.XRs2H:@8IB[@LC8}b F<" NjARawA\ d`I͉JF2.g,-AѥL>9%"dKB>Q3L=r0ovuFYaw}þDy9ȥ~zNW40[Q Z)KZBZ܋, ٽ#}G`1[^چ:.m:?YP& A%'g #Tu˙1h4[ܓ<"f7ZW?}φ r ٿML7Ujk;ιk\m䵑q g'U瘴?`,:<_Ki&uxjAx哷|yWѫvx~[kVK> N6.njnX=L8"~u_ L3&kߨI=k'!#ˬ+-רF;Ν7i5g@V'ځ|\%p ă~΢j)>Ve#:+FD56L,!Mqb$rEDM%s4-5ahPr߽O93y̨/1$(6Cl3Gˉ@&")  =;pﰾ=MgfI@geRAj9~yM&\\g ,ZE94soE삊LYItLV.E8Ydbp_>8%w#qdr4dQ/yV㛟`9dp\PTQ<[:Rc IneBj^#h@CZFUm[DrPphxX;0VaSNEݪvYنOo jݵOƔpl:R6pk_+Cp1Qq̾,Cow3(>WU߰r}8>8Fiװcz LZ§v)ʛp(͆>AS9 4hFM;_D[0F}g~-yT3ej0Vīg J̶1q@M8$p s}=ȨÕv^=߆ZHHz[]&tuDYu pudy_hbOF\6| =3^~&X}%*ż,)Rk+ !b{iF|T)>=U=R2׊BM @%j:W_UZ>Mʼٲ-ٖU>%DcD˰j"qt;N?pɐBL[AI|ԝ"oDŽ( i줤3# JOm3.!*cidʰ&}/W(b[OS<"^,. ..X0`&9h{=HZ`v%kT>u l- Rrsz*S q]0Cq3Sֿ>ojǮȈmGʁ:#ktKWȽySB&HinZTtP=y,5XXcKHpL/߲H,qzo 3̩E)i.{S lI>m4_3}J"{ FD } ,"7޲^k^URD愐@ ! "AlZh|F5m ȔQIP; B@dNBfy $5w^Z{\{}_}_Qw=wku˥R**TʞmOO&DRpe~n(5wdRYPhY|b`ؑ)fsc[f+Uל.j5M}?spI#~ ^ /4Zwk<8lƢ(.E #/RQOX'Ddg(;]?h}y,;"sz ]: ]5&#IoF6, .w)de/Ti>HE]ע(Rܗ >hs"T4R[8V7U 1h/`Jd4-PBM)`2l9%5)5OmJ\ hҔQNcuf3}#k3 THnZiM#f5e%7F7B[-ri ,iLY-{CΪT-]y2fIb 8+>S{k"2)F;IDjTXBg8M |Aob-̣σxPa5v$gW4iAcaQ^5A ̆ MU@;%ae{)h|㢄%)@7}H-4DCTz01PRi2VehOfϋ+RgRrk"(?q#h +z4 Ed" &4 dwsDq dG!?PҠF'S)ioi=L P2 "E2Au4N3am,Mqz$-6Ur'R-C!*.zhvjh]) jC;|9) \ߴ!+x%2NFȆVi*[]nqi_"BU2-]AY:]7R{- %e-9(=IԙBj2-39XI)f#R-8uIՏTgQf HI,qYZ43ҧnP[(BZqT]]L닉rE7xM3(T]|E gaR^24kHJ#@YBw[PsFP8uqXgCBϠd\jҪ:z#Xn vvvޔKOr@|Hvm5HnP^vy&'%K]z}u%%HƱ4$űu^x1 6ɡY^+cY|s=hPǸIՍC#˰#s(2iovzO K` { ,Es9q=l[7^W-xS(Kehߜ/";5%*'LZD,4vSu3%cXaF): 0]Iڧq|"֑=yY#?,>5y2 z,DkQ*;#2MyWW|O}S'R?OV7Omv7%H P,u*:%jUmH*ܘ/cr4rD]FOQ&8u;»{1r!ݸsAO9)[|yGoDio}k$ؾ aEҖ)KTVgPTy ۧ~4r/9ayhM{#r mO݆/wGGv]`~Nނ{<\ʯ?X*6cS`bt>y|Pug'70w~}of7Q̓_^8s)\a&7OڜO assٺeO=yUMKu q~]5ޭšA>[{<+rs^?w}7rrẖ8Fɝ<|~ Z {3zpK*3k=ל6GóZ/~ |F3=Fq?ˍN֢.Z͸dy,VKfr)l5`IUvNU#%ʛO`l+Q Futi \%U웱$J %S06ű!)Z ISEĖnȔEWrڲBl Gjr vؐ2:~M8̙aqh~R;!*eI7q.ԓ6X u]/f5( TUhy& DCV*5Omeq:g=lߕɳ@}NYGxk׻G8s)G l_޲!u(!Qn{KXq_‡\60 F8>ج:O8 ka#~A?n E M{Og@V6wE>h#x0ïy$7y3G7؈^NЕ,\w?/Vp?|Dv,)8oG a  ƹ<8\\ٹ@x٩|_?vWGؼ,ٓ} 9<>Y;{ |S1| }gA}cGc0ևSfa/߿R8~|7_ ^w7!gEDyMKdNE0]t_,;%85w?aҚ+s*~z!" ;Og~w8|v5PI?|\|)) Cu8!%5MW-edC=+w MӂrO7G'<)l|| P*Gc 3Fo~.06Vl-ژiv@82c^yɘٽK"O$Q8Nbyр9_tdx>Xv p5.sD#lGT`d9ݓS)+qɈ1oEyAN?G!|l|YX8Ycn.ysv!A9~do9Uy3f=,(x'j_;;EnCuHi)\^'{Z2߾W>Y.{ߟ4>}8^^-;X|ÎX:>!PbȢ`^{i|Usm /X 5dBWQ-uEZ0uZ"܇QbkSg.`dt>R){sM2Hm*i }2 ߈P=GHCFAMߩҀ3$"beʇPrQJI_h˶8;ɰK. "jNhPPHicl /ٷ?V"X>`nC/Uq$~)^l7G*;xlx6+|@~O6Vd8{xHf!GAxshO;Gٹ}h>ϱ-<kC-Q|# OMͥ|_L?J遍3ʘ?ņMR7#iן9_j$•HC?x/U%K%xx֌^ ش=u;4|wwusC|^s{(J9yKp!_<I|6 y=>!8qw'8~12;].d2`D{2N4pon1U=[.y|LOL4/x;\?@p:;/%o|k줿>|o}H4,Y:/籟Ͽ@duȷOe&6^nuUr0Zt*ڌDfc\ h8˵f"Zv&T'%x1$&7I6>>Ev Dg3=O5/j~.$usT TSS8d 08R)!lg s0^{i8Y2p.q#9*i8me9mߙk>w^h__QS9 5 FH'WI[+\6>m)A1$yyl|0](-Gpn$ !́3\}'!}ٳ ?y@f j O.[~h}Вx rP8ID|W<,GC]` u'9}@ooP'-!<)GH9|?PbG ;Nu}PMqq^u;7zw%~Zpܺ0Oמ\yHHy kcy1yיU)OY_58ys\;Lgx/ek`Tc!KOϊ<|'}e2oC<)lr@FD"hPN)A_vخ9[w+ŏ[ )w\1o,(?}u-<kk)?5Y5# +촭l剉,1N;ț@Zc5s>nj1 jkǸa5N=+(aQwMA'b1A>Зε}h[u`l =:͠rdȔ#,v: &͌ 3lH~4 ?ͰiG)EM+ _OQy[X& KOZ.s`bF-\9*-ӹ*nQ)mNn|JR#ԀD*Щ&LnFs$k A/9|G yBԓc |m_q!:b Jt$U9MH:O(^C߶ .Dq[ҒZwri RG%,e: Ndd$N"D9>, xP8^=vՇ4"|̓k#.dPDYo~,L^7P Mmxmo|(d NS! ܀8qk`d=S|HUxcs(s#|Kع_7p'G9w?z|_{^yNΰa|_^WEYzl1 LzROtvhxHN5lK$`hI+YgT7fFqU%m%NDmύj쨢^*¤WY2NpF³@tTZ u^RG,5 SGB<ى$Ȥ%CYʬdrGm̐]0A.|>$ేV )?c"-ہ'iw}%]){Ax .v1|l݀_c~w D)3߿pP1o<hQm?6<_y;<|N5f o/cHBRR[(k>|!|kD>{Y $Hׁ<̏D#V@[#({95o.1?fOXM|?90kSѿ=?gy$c7 pQ% 2yz=a38w* "YO༓](!q'fen@D{Sة"d%/(/Gaގ\%qPd>S =Jpq6Gt8o`_5?!(w;'ȿ [߱s簃%*EgE]|/Rʈ؆oy5>"N4.HxiJ#wOA?/|LpI01V PGԉmW&RtWgpvBSt16B<СL1Xu U!sTWϔUu? K@}IZyv PD ;҅D)>vGE,S*#PѬ;*L‚PHxHb p**H؁ȆCXi8Tћ̕(H%}wz1^cVDR]tdc\K?DwIW@>ʧU oi&#> MH3eqFC|& \Q! 2'—6*G޷{=E I o/'+L Wa+&^;=r87Yϴ%q9Km*u )+)7GٟK˱ϹY@AʷiωqlX,%!'_x40Ӿ̵ vy u GcG J-7,s܀-?6|%O}:}]fDŇ `E!4)^f:SK@`]_f*aD914:{R+Xf:яK+%lL/{|W\f$+Qﳕ;FKVp !_kP%^J+'85iY'A}Bm @Mr\W?Zڞ1|U?>l5pEwXǩ7t8Hq)l ļfhu@,h"շ[o{(6AeN `vANǂimU/C}u% X/SJq*Hʞ%m0+SiXQu:?FljbM{щ`\-17`aO-3-zS@?я6N]X@ϗd mZ _,&Bjf3WmhSP2 }bE@XE`M@؅- 9ꦯ6R{w+BBpe% ]!mzZ$)3Ȗ@u@p0|9/zk[32b050*OSPSSglINuAKOt֫3Rh[OBhyH.ՔP5dF3ey 8HSA""M$*CUݥ'>XyQ)%545@'a=,+ۇGq9g@WalbJm3W8rR!!Yc?1,(-%=yl6Rr<dӌ?KdL>JCz3R"╃Pc-ug fWjɩ&ZJqTPqW .qc|J|/L&#S WXTx4Q7to=v=<,gK%t{#Կ!gó)aJde-牙*/) %]GCp+p|1io&iV=crK' }eq9WY`uc uu Ϲ) xN_s{amNnZ6[hqmzoO+L 9v޽ Trj̊x:h=џlUB1V ĀJXˋ:eԼHMh Z-5N~,@_݊tjbzA灮6 ;_دtZoThê~Q}" 3GQ| DXpepO˫OOMQ*[0*QwDT-3()Mdݪe%tm2:asxrn,ESf4KE-#u '8i#'{E¿!9l䢶FЙ%z +v>\xR$lAڧC1QA|n=v\sb(ƴV#Fb{b.Ndtk@@y' {pb+26% SRԢ%r'B׻:)EWσr)Tt#m氙Kɏ]Nb9Ds_S!B 鹕>{wE^㿽)J+7m".ՃL3fBbI<.JE *<X%{ICU:h[[#4eLT4k[N9kZM^6Z@<~|yyb9v}y&O:!x@G|o݄ybC'=`^z"U훾1A+r)?w.]ݫx/a<_ȁ?6_2iʟm# ONLdk~WwAKuak( Ml]el̩=u7`?KBA!j5pȷCf|ST7@U MAB5X"Mh\լQJ]{LQa'UBI.dCEaM9"G&`VȫO[hp[TXK +Ijx-}LޓkXx GH d4fX)MR ) d>n5$#-XHLkŊ;&.4?.<Kzp';]a{*svRSG7)bVᷟQ=sA/q5d ?\^${2g!-~ u{, p Xg#'!{-xT7 ??*ZwNoX 7%*L-?LD?i'x^uRYTu>ePфfvqi8@b 6/9vbFGXL0DGi7Ō =K u |^_d:…9*]IjW0?{OAp1nm9lL$[UytTT :m|==?LL#/-]~^|&yB<IN&c~ͷMgZzr[~U,3Zwj6SJ_uxTaCDq,nO}PW4q&#qgRXX(4M;b1E)Y^&'PgQ!=*&(Wx*W@Gw6.(OSMvTZ?͐  jI&4QtE <3j ֗b6`m;3RKkLFxPmXR|`UJwstLxZ$ m3c_ cQ_U{#Kg'VvT `TpP7 ȡ<. ̈ 8Cp#{|mTv^:}C ( P!u9ܲ*O5S9Dt47;\']|)q.Wy(?{0H+&/|wc&NC*Ky^{_z,qƴxh[I┃Ʀѐid=Y06Lyd͎m)  aJTDߥ-/Jd)c^GKũF?vhQΈd$=EZj=(Wc^l>B[1"WZ*؛(( ăH'Q9r=`ЩٛHcQ%Soe"]A}_ikv%s9CJN ϰa~QqfErOO]sDLp9# Գ2 u]g.,ih97m1P573g'"aˑ_9/ p}~B<_ŵC]OdD NωfU\FxqF=GnC3p#ܰƫ1ep"i)!@ Kinn5[/b$>mi $Ll>fg*] PJyl^xFUXx ^pjxm<{s"GC*T+dAS^~ >  `B$d}0"Kz΂ņ`1/٤?P^qP{Tbʹ*v:1d6 HI9MjW??> 2)]̖Vud S)٧RZ}L {: vƟe /v +79YX9.S0ȭ8s9lmv*Rn`ˁ#,z;UT"+bi-.EoB>9[\d/Ba˄&tkh@)mWA+\:u82ͩFKpn]r{i-yypUA{wrZ]<5"'c"#cg@96n-w=OC1[.Gjo1+wMIŃI$/Ի M9oM:ƨ1a^Xl,&7_5.*iæF ,Z U9` s YB-߿X+lJx4m5-x0Vn<s4 8 *K& 0jDfTQap?g(h"8A9I-LZ|Qą.`R(W%EٶTZP+08F:}c%9a1]V%fu ||X'N5Tmf#%Q|~9ܶl_XW>b#O_6/ޓ'Q;XsdypvJzӶ.]!V>/׿ͧ yO?Z_XaB()ޓhl۵Ex:pa=~woo( 0)j {x8a߸/ #=+ِI$gFJ[F'ufb窼FAcmO9^c~.;c+=_c5ɄW2:ϔΒϯѣx? ]q8ɑyy(1U{A8[Z텿9#VaF@4E鵧`Z&ش-%SfJj?eܽ .샗)9SF4&EV[Ђg4W: eFiP+h@_2ئ{@ M@x](] Ti~1a m4u [D N:B&Ie|( 0Ɩfؠ=Ε*i/Nm( *"fAfj3h:2:'ۡ.I+vH*bzxb%NRy>*X 9=hS'qfh""ڶb.)NKi. ;3_ ˃O?C8dQwPeL1bt**Ff͈8DC1FNc/̚\ ʃRZ/6e 1qXhx'%NKdܺd; ߝmÓM*GKg+¿e?(ɮM` 9 0m8e%X 6i"Am]&>X,m}N喕| Knt{ d5K k1lr~Q V3Qg\B 6 EH vL4a'A9.@!k~Va!9v>uYxb6t!(݊2/SPL(m[}cP-oCg)]iQmYݓl.8.:؆ 5Ph[ {VX˝&!Pu@=W$p܃m.5"*T%tt&#"S6PGJ6KtM4^}K7Uf?T{T.HZō@qy4W"yG`uQ#uέPC+WDvHIuSI'gm6P0mgڤi[]ϙәςŢGqx`JӫA+|5{3XME ;^Dklzy@;_cFXb53FX~-s֬̆ȩoGU t*'5lazBwjjꄋ1zvl=F 4GZ:20ZZ<,9qMɥJqgP~Z*nØBiDkDŐFiSgӂi-h'벱vi`*Yo@}49ݿAY#\G)0+% ͜Eu$jA4nP ),VP-W9jТ;/pam @k2"aA[^pV+ܪyi堩 hujDY2Dob_AW ^TXv. /_JSS֝X*:Pa围/^d2%kv0@gk\V{5 LD(k]hMJTFk0Jɏ c8H4yj"2[zЙ]P"nU3V┫HXZj3:kP:یl0taxl3mJh ,3OfF뙬Fk i$6kzQ!1רS ^.թJ&66uI  @5o4b}!>8Wz`?c,ұ7>;9e2"1o;H4(1As&ũ<@qz4*axP؞JHs[ZO zbSOsuZUϦ'GGg4MS'Bea u hEz}"LΣj[@8[33U眶m9ܫv@AC84P&&"6Ia3#LfU25+yr iCD[km} 퐭 {Hb0(Tj&xF@x LTeI`ŽQsXC{jHZWxH[}icȤ9V5ah3VNcGWVi7PSFYΞ`tkfr6/CifAlt?HJ̗G]y~]ؕNHbQ {9ƠqPaFuuZfZuDm (TR NDi_{J^ d2FU;o3͚.04,fbf9yQc (ze2vG&$RESbu: &(u&=\KB!:` w&i*>9zV=GR3h PE@&zԔ5@X__o!os(کNxbM>]65oJE3"dyKvOJ֖*:X2AG9]uVNN@iy6G:F֙Ƣ0BcNAJW$n'.9%MӭMMsn A{u |8յE>3)"9'e)zXܶ9l<ԶYoTzBɦh$jVn"Qo1mze[)vo6ri^ ;vnO @\X*j#$lX DX3*9wW(Ԩ~eaQz4}O9 _3dNԂO .eO[OaVɹ%֤ 4S0|:d߀:5&axMh2MˣmC1 NK7yP$2t$^&rlGM-u4K5Eu"Ō[S7-hp-0qrXh p8p*@JQ"4M*#_ð "S`0&d{kH.)=Rԣ4gM6v]g)4Z:w=^GU3O7(+Qv~ Gh{]9g/@)SP.Pe_4W|)~9mGBuϚuTp'BaIt?!ƩlSeE;Dz.tI G͙4NIc|d@G( J]a'}Tӄ"M tpDm ]5r(v*w . \@N=@%C.k+xgCmfiGʳN|0B%$V q*-P Y S`;0,*=D\9qq wNMt18)4 UZ;`q%F "\xS4<1ZGz@hNuVi Cn)ћi19k: J}'_g? oQIeV2%r ):ap۹v&R';d}24XjKUeIfז'H֖xvm{-ђMx FTW7 Xrx &Av5`R-T 7O•ׇ&minǡ/J7 qR_yҊr.=*"a4$3zrXwX(9\ސXԮyT)Yj":2V=3Ҏyn0\q/؀ϳ!j^f3@TEt֛Qie%EnMIT)431fHFwRd)@=?4i8!juU3zClGl#oMU'/vtyж-2>V-h׺TTpqA;}/CBwإ&jsCo9ha NPm^J2m9o_ ~|uIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/PLDS.jpg000644 001750 001750 00000043207 12312451003 023552 0ustar00saucysaucy000000 000000 JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:04:16 09:27:57]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IO "㶺\տCٿ/:^K:*;UWǒ4g&)<}))hּIVpԯ#Wz%ճ$]_UtG!^-wJ\+e.(\79d8dž`^}u[Soq{rNOI^1)S4ȇ7 >]3&d x !4>r6? f[ZǨ WK2C >64%%ju_}goC~9Y#˂"fc)|bՏ=d %$\Zuj {k\/?3Ҳ]~λ٭Cտxv&$R^;檿s1k8`5?uϫCC÷];DOnW\ZeU=I#Q ٰa\xI[>iaɖqeLJn"Ŀ/0c[lsOk{?ȹ/>uJ%.k \%o7taj.z6UX 7N7tވݗdkykb+k0tL+EuGw 8 x//J92KgG1?*VSuzsgsSY_[Z_Q,hgܧ ybAكb"d|e/\/ǯ!$ Eo'}:?kTξ|SlpmSBv[.sdgn`aǒdhj׿ᶯofO ė\,?V/l;G¹?ZzLbT .it-*,Nf XvYp8Y5C֝:jy[,:WgW/WH.s;4{G<.j1>iJ<_zUJGˇ_S+jUkx THƹU]կk`z<ҏ4DPcA 6I(A(r3*\x> 8? UK)\GQn g]U5ps\ ܉OGtZnXL\4gyK@c)P=#[fb` fmJ<Ќq$ (B\{Kp@w-<ҏ4|VxW @ۣTʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ Photoshop 3.08BIM8BIM%F &Vڰw8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM?F]asint]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FLJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IO "㶺\տCٿ/:^K:*;UWǒ4g&)<}))hּIVpԯ#Wz%ճ$]_UtG!^-wJ\+e.(\79d8dž`^}u[Soq{rNOI^1)S4ȇ7 >]3&d x !4>r6? f[ZǨ WK2C >64%%ju_}goC~9Y#˂"fc)|bՏ=d %$\Zuj {k\/?3Ҳ]~λ٭Cտxv&$R^;檿s1k8`5?uϫCC÷];DOnW\ZeU=I#Q ٰa\xI[>iaɖqeLJn"Ŀ/0c[lsOk{?ȹ/>uJ%.k \%o7taj.z6UX 7N7tވݗdkykb+k0tL+EuGw 8 x//J92KgG1?*VSuzsgsSY_[Z_Q,hgܧ ybAكb"d|e/\/ǯ!$ Eo'}:?kTξ|SlpmSBv[.sdgn`aǒdhj׿ᶯofO ė\,?V/l;G¹?ZzLbT .it-*,Nf XvYp8Y5C֝:jy[,:WgW/WH.s;4{G<.j1>iJ<_zUJGˇ_S+jUkx THƹU]կk`z<ҏ4DPcA 6I(A(r3*\x> 8? UK)\GQn g]U5ps\ ܉OGtZnXL\4gyK@c)P=#[fb` fmJ<Ќq$ (B\{Kp@w-<ҏ4|VxW @ۣTʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIM2http://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-04-16T09:27:57+08:00 2012-04-16T09:27:57+08:00 2012-04-16T09:27:57+08:00 Adobe Photoshop CS Windows uuid:d94422aa-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:d94422a9-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:acba8ddb-875f-11e1-93bc-952fd8ae208c image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثWZ3]1Kkd2EQRh2PG2$"dy+"dI}?ؘBUE#4\.ʲvh 1ٷi`-[U,*I[ks4}>7+O؞Ӯ#;l 'oỰ%7ʱS=TG'Qld]w~o~^ʱE+W>|,x$kF*A eai-om,x DYc9& Ŷk0E!< & WCOl`z!ßҿFjݭ_? ֿ_̝_/|O rGUk(=J);坞03/r@igv]k{IN@B+5 Ffzr/& @G\֘×/5U!X2;P|x=zopǧ¿.,uO66YLD;5(>ȧ|kAv|܁}G<;S9 gg? ֿ_̝'_/-wKwN2@즟1v O5ܔ'/4Aq_NB׊/v9<lxAQɚW#o'y%Lu2DvdN[|YeKv^|Ig1FOCbYM7co՜$y"˿iчOu//\}ﭼ=.ʶKo/ϡRq8oq@}4+1/tNJ3ԑJ^L p}|忮Y'-KK4H:A%c^J?Lާ.;TC=Y|戭c7TdC.M#F'7qVG<_? ֿ_̝_/*"?iJ♤D=Z& >_h0Hyg?ϒt{uaAʚeW4W.4JF "#( 6;1\>r4ZLc5t-O;}.h<&#9>jơs{W0ƼyNaha$D7W<ɗ{h't>wfQԦEִO_@iJ MV\DoH?4kPJFH(Se?d3Uݡ#>$5_cK͞]EΏI ڽLtgSr=ݳ.ˋ!yS<_kfFydW_EnN{3wx̏sLؼ»R%խռ`JKn8c" le!GOa_(iq^XP2 吩H (@)c.P:갈u+8nef@WY,n$ů&LT+.o%eR iJLә"x!Q!.P%Z-O# pyN1dihpb1MerVUWQMI jrQP≱iP$݋WL(O]m8uq8ٴxlO+B,!kFo2dws]qWN*UثWb]v*UثWyouker-assistant-1.0.1/src/toolkits.cpp000644 001750 001750 00000004427 12312451003 020511 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "toolkits.h" Toolkits::Toolkits(QObject *parent) : QObject(parent) { this->mainwindow_width = 850; this->mainwindow_height = 600; this->alert_width = 200; this->alert_height = 75; alertBG = new AlertDialog(); this->alertTimer = new QTimer(this); connect(alertTimer, SIGNAL(timeout()), this, SLOT(updateAlert())); this->alertDelayTimer = new QTimer(this); connect(alertDelayTimer, SIGNAL(timeout()), this, SLOT(hideAlert())); this->alertGOE = new QGraphicsOpacityEffect(); this->alertBG->setGraphicsEffect(alertGOE); this->ao = 0.0; this->alertBG->hide(); } //启动alert提示 void Toolkits::alertMSG(const QString &alertText, int parent_x, int parent_y) { this->alert_x = parent_x + (mainwindow_width / 2) - (alert_width / 2); this->alert_y = parent_y + mainwindow_height - 200; this->ay = this->alert_y; this->ao = 0.0; this->alertBG->move(this->alert_x, this->alert_y); this->alertGOE->setOpacity(this->ao); this->alertBG->setMSG(alertText); this->alertBG->show(); this->alertTimer->start(15); } //alert提示框的步处理 void Toolkits::updateAlert() { if(this->ao < 0.90){ this->ao += 0.02; this->alertGOE->setOpacity(this->ao); } if(this->ay <= (this->alert_y - 150)){ this->alertTimer->stop(); //5秒后自动关闭alert提示框 this->alertDelayTimer->start(1000); }else{ this->ay -= 3; this->alertBG->move(this->alert_x,this->ay); } } //隐藏alert提示框 void Toolkits::hideAlert() { this->alertBG->hide(); this->alertDelayTimer->stop(); } youker-assistant-1.0.1/qml/img/weather/d22.gif000644 001750 001750 00000005345 12312451003 021430 0ustar00saucysaucy000000 000000 GIF89a00˰ƺʱՂŨ܅Ūµ}ŷԼкΰԿ텑萛ܩǴ6q:u;v:s>y>xAzC{9fHJ~dIrhfejjhqxwswy{}⁳]儳cԀԙҭ&Z*`3t3q/j,c4r3p4q3o8v6s5r5q0f7t6s8u9v8s7s7q5m3i9v9t;w:u9ujQKURWCn^Z_TV^bae\e_[hmckjnmpolT|ronqpurtvutsvuyws{zy}|y}~䁳}چ䅶⋺앿p7uacpjqtux}|w~{܁ჶサ⇸!,00}Qf͙5*\Ȱ8ma&Φ/aL CIR5ϰQAqްnʵׯ`֫uQ>ؙN@=UO2dA3Ou qӧ>ǎAА' x!C]vmmA}m{m;M/3V|nj:ĕS7oA؇#=w H"=Jxc 7&Dx/C#䐢*)B!B8rdB{P@7A )0 e_6"A#8QFF8a \X &@B`ȑH8҈DI%EFRdHVR0"3HxClp#$D!8ˆNF"ɚlH{QFr졇)3H@a :j `p{Hrɚ,*%Ea x"%^!|b| ;L%8ZdG\2餙dRED ,^{;sa&@ j@ C$jm&lR&h+Gc *P""4P/d!#&t"/Ex xc$~XPA.|*/vURpe:Zb 0.T  B vI(eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FTIDATxڌ1@-) < оK"pwPUܝbٷoъXHqXHq?bٵk[[[Z&&&H}&CTowܙ@#"9kY,--hY>~HK XC[ ~M[ ~5}o>ZԔ 0 6˧k0kw|V<1A>lc\֊~PJIvބ$T5@kqQ DCA ` wOuԖ @Ab(eDHi| ('։mE2UTҙnXc|fu7/_w, RsIENDB`youker-assistant-1.0.1/youker-assistant.pro000644 001750 001750 00000000177 12312451003 021413 0ustar00saucysaucy000000 000000 TEMPLATE = subdirs SUBDIRS += src qml backends # i18n setting TRANSLATIONS += \ src/translation/youker-assistant_zh_CN.ts youker-assistant-1.0.1/src/image/upshiftZH-hover.png000644 001750 001750 00000004725 12312451003 022773 0ustar00saucysaucy000000 000000 PNG  IHDRt fx# pHYs   cHRMz%u0`:o_F [IDATxb?a]G&H0<S?0 s1vAI(޻E  ޭo O?e````r.Λjb!,FlTc````nPË{~gFl~ b?'QG.GDkc`ee~)$H!A~),H&' ~o??MUAex7_O10000XfxÝ7 9 ~R_ӌ( ϡ gk b$NDl ,>'I+/8Y%~Nl R ,&J*/c[ư \Tz8"-򢝁Aˌ޻E  ~fWcxy7ۯ?e+]pB~V)381yOe`/Q 矎4eXu1;䖽KBaDZYf ERZ6G  Nm ---- 9e.^I]?}oeD)QPp4SMw:eg̹Nr>OC>Q)Vf(Vx˸ {1|74= P!GV/~vQ+l0%j5AoJ#OPBGH!t|QRJC (גI)!:j )T llZ}hzqVQ]RU0pr@bR"z QVU a&A }"юJiO­KY:1FMii# 䘻kSq?yѦjRt.}\ .vr 88*ԭ9Ak54%${rMCH99<9sK|NhG$Z,hv/71b+KNkXer>c.Z W!$~'fb.2U}!amKaUe#r Ui2gjO$p1v/l)ճQ1EL{sZPri2 ^jS'nGPQg3G6jUp;P s:~jeD* 8A$瞰ǗRe]ED[ *sd1 sN;*X_zqx،!gc3j鶻AV F|uZau2Z2<6r:q\d 6N=o }<^#^?NvA@# @56(j{{Ս]H'MCM*qiA SV**%čS{iǒ '"q@$6nU !P\Rۉ:_Jewz:NVJ8}{v̼o{.!dX>Ei6;vV4SHm_2V˕_N?V+tiG13!ao Ank {R!2o0q3_8Zzq9hޗ $S3fQ/ӥEU:GhFYyg #T<{Ȟ[DCvbL72GFO0)j!auFLwqeωW tkǸ` ! J$Kscaw0Tl2ЉiP(=>4E>f[ןk].j&B:?yhz`lb)i 17ߐU'eY<>_׾Xq]{|X=tld.SuESlyQ!677+]%Wa4c?yQvJ;3@kqv@g=f`Ao?g.ibJq:w0K+. i-/ܒqIuGy w?\M y+V ,\=m}{jXT-ЍSD|FDn؞WqD뻰O*[]z"q= c+ .l1.},_8)&}SR$,H/_ Y+M#ua_ml)N,|nr=} ]dD^kW%Kܞpq%Eq%U*/|ydCDݡB h~iB 4ϡgR `J}EIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/YESTON.jpg000644 001750 001750 00000007460 12312451003 024032 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF] 1q !AQ2B"$a4D% !1AQaqB"2#34d ?&ZM~T1H&U$R RA5𠏕 Ou)GDϲer)D RTi@iQA%rAJ;S*~<5MܲiWM~T1H&U$R RA5𠏕 Ou)GDϲer)D RTi@iQA%rAJ;S*~<5MܲiWM~T1H&U$R RA5𠏕 Ou)GDϲer)D RTi@iQA%rAJ;S*~<5MܲiWM~T1H&U$R Rd,v3ǚ9ior.,_y:b F4`#S&Xj-޳rW vrˆq)!2D1M/*")LsLa:xR&.$ҢJ:vTy*jeү*|ztt<6I9fOIyceb뢌` w$m!RO&)Hb=[nՌqkH.Ċ%έ&t 9[ 5p4ȱ20uUa9o;SV|v35f<ЕA`UqLK18?T w|N" ,eA`7G_ d9K0_<_Y|kgٹ,!-K*Lvn;e Ӑg6^)Ubq:0"5ԎܟN Wv 8ɵw9}6V~Z2ՙ0@gZ^>Iu;jcgX p^2ҳ»o7RɥnV3wnwńwisW=܆NǍ|- eIxǿӍě KjFF^T|ai31Ʊ黬Ɛs~Nݟ.w&o"A9N0@z9e]-K*t:U"!DxJkQv1Z#iqWya+ÍH`KPD[B ApmjُI^/9C;l"` -e8F[(I  r$[ !\w ܃ˁ@{?vw̝Umo6~h#}ٻQaA˹ki̶oY4W&*B$^U*)ztE PGʐ]CI~P2uIK4 4t?JYi4ʁW&*B$^U*)ztE PGʐ]CI~P2uIK4 4t?JYi4ʁW&*B$^U*)ztE PGʐ]CI~P2uIK4 4t?J_youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/historyclean.py000644 001750 001750 00000014677 12312451003 031174 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os.path import sqlite3 from common import process_pid from common import get_mozilla_path class HistoryClean(): def __init__(self, homedir): self.filename = 'places.sqlite' self.path = get_mozilla_path(homedir) def scan_the_records(self): save = [] if os.path.exists(self.path): scan_browser_conn = sqlite3.connect(self.path + self.filename) scan_browser_cur = scan_browser_conn.cursor() sql_select = "SELECT moz_historyvisits.place_id, moz_places.url, moz_places.title, count(*) FROM moz_historyvisits, moz_places WHERE moz_historyvisits.place_id=moz_places.id GROUP BY moz_historyvisits.place_id" scan_browser_cur.execute(sql_select) for eachvisit in scan_browser_cur.fetchall(): tmp = list(eachvisit) tmp[0], tmp[-1] = str(tmp[0]), str(tmp[-1]) if not isinstance(tmp[2], unicode): tmp[2] = str(tmp[2]) tmp_str = '<2_2>'.join(tmp) save.append(tmp_str) scan_browser_cur.close() scan_browser_conn.close() return save def scan_firefox_history_records(self, filepath): result = [] if os.path.exists(filepath): scan_browser_conn = sqlite3.connect(filepath) scan_browser_cur = scan_browser_conn.cursor() sql_select = "SELECT moz_historyvisits.place_id, moz_places.url, count(*) FROM moz_historyvisits, moz_places WHERE moz_historyvisits.place_id=moz_places.id GROUP BY moz_historyvisits.place_id" scan_browser_cur.execute(sql_select) result = scan_browser_cur.fetchall() #result = ["%s<2_2>%s<2_2>%s" % (str(each[0]), each[1], str(each[2])) for each in allvisit] scan_browser_cur.close() scan_browser_conn.close() return result def scan_chromium_history_records(self, filepath): result = [] if os.path.exists(filepath): scan_chromium_conn = sqlite3.connect(filepath) scan_chromium_cur = scan_chromium_conn.cursor() sql_select = "SELECT visits.url, urls.url, count(*) FROM visits, urls WHERE visits.url=urls.id GROUP BY visits.url" scan_chromium_cur.execute(sql_select) result = scan_chromium_cur.fetchall() #result = ["%s<2_2>%s<2_2>%s" % (str(each[0]), each[1], str(each[2])) for each in allvisit] scan_chromium_cur.close() scan_chromium_conn.close() return result def clean_firefox_all_records(self, filepath): if os.path.exists(filepath): clean_browser_conn = sqlite3.connect(filepath) clean_browser_cur = clean_browser_conn.cursor() sql_deletehistory = 'DELETE FROM moz_historyvisits' clean_browser_cur.execute(sql_deletehistory) clean_browser_conn.commit() sql_selectplace = 'SELECT place_id FROM moz_annos UNION SELECT fk FROM moz_bookmarks UNION SELECT place_id FROM moz_inputhistory' clean_browser_cur.execute(sql_selectplace) delete_place_id = clean_browser_cur.fetchall() delete_place_id_str = ','.join([ str(one[0]) for one in delete_place_id if one[0]]) sql_deleteplace = 'DELETE FROM moz_places WHERE id NOT IN (%s)' % delete_place_id_str clean_browser_cur.execute(sql_deleteplace) clean_browser_conn.commit() sql_selectfavicons = 'SELECT favicon_id FROM moz_places' clean_browser_cur.execute(sql_selectfavicons) delete_favicon_id = clean_browser_cur.fetchall() delete_favicon_id_str = ','.join([ str(one[0]) for one in delete_favicon_id if one[0]]) sql_deletefavicons = 'DELETE FROM moz_favicons WHERE id NOT in (%s)' % delete_favicon_id_str clean_browser_cur.execute(sql_deletefavicons) clean_browser_conn.commit() clean_browser_cur.close() clean_browser_conn.close() def clean_chromium_all_records(self, filepath): if os.path.exists(filepath): clean_chromium_conn = sqlite3.connect(filepath) clean_chromium_cur = clean_chromium_conn.cursor() tables = ['visits', 'urls', 'keyword_search_terms', 'segment_usage', 'segments'] for tn in tables: sql_delete = 'DELETE FROM %s' % tn clean_chromium_cur.execute(sql_delete) clean_chromium_conn.commit() clean_chromium_cur.close() clean_chromium_conn.close() def clean_the_records(self, history): int_history = int(history) sql_exist = 'SELECT * FROM moz_historyvisits WHERE place_id=%s' % int_history self.browser_cur.execute(sql_exist) if self.browser_cur.fetchone(): sql_delete = 'DELETE FROM moz_historyvisits WHERE place_id=%s ' % int_history self.browser_cur.execute(sql_delete) #self.browser_cur.execute('DELETE FROM moz_places WHERE visit_count=0') self.browser_conn.commit() return True else: return False def clean_all_records(self): if os.path.exists(self.path): clean_browser_conn = sqlite3.connect(self.path + self.filename) clean_browser_cur = clean_browser_conn.cursor() sql_deleteall = 'DELETE FROM moz_historyvisits' clean_browser_cur.execute(sql_deleteall) #self.browser_cur.execute('DELETE FROM moz_places WHERE visit_count=0') clean_browser_conn.commit() clean_browser_cur.close() clean_browser_conn.close() if __name__ == "__main__": objc = HistoryClean() objc.scan_the_records() #objc.clean_the_records(['36']) del objc youker-assistant-1.0.1/qml/img/weather/n16.gif000644 001750 001750 00000005412 12312451003 021440 0ustar00saucysaucy000000 000000 GIF89a008Z7Y~6X}2Pڳ܄㔞˷̀ͭƫį܁սս〉Ȣ˰Ĵ2T6S{:W~Ѻͺ/P0Q1R8\6X3T1O9[4U3R3Q<^#@e9Z%Be+Kq)Fi-Ms.Lr&?^/Lp4Tz1Os8Z3Pt9Y9Y:Z6Tx9Vz;Y}]"De;Y"Aa!?^%Fi7R"@_ =Z'Ik&Ef%Dc*Km+Lo,Mp-Or-Nq*Ij.Ps.Or*Ih2Uz-Mn0Qt5[1Sv%?Y4X|2Tw1Ru3Ux2Sv7[2St1Rr5Wz/Ml8\5Vy6Wz6Xz5Vw9Z}:[~8Yz>Yu*@իXZcUNU9vCٳhӪ]V׫SugnݻwG =F Lꮩ+o!E1˘ӇRDJ9.C;TWCsQIgNR}n]:lG| bpGF\8>UԩSsԩsjP;t!C t|"JSU(q u 1pB 1l>t OGxl<"hb$賃r|rA #dlj"BʐH&D*|F ;D8#x ?p8󰒊+C9,+n&,d"4VA /@"眬+GH<, <!`ƍYC>`"0qʬK,R2IF-0%dpbT@.S+ă+ȭQ*ఞ 6 x@&3"~RK-HR =~ ;0'8@ `*HxA,TG.B .B!GP.g -& #)H 2!J(AȠ>s9.+/`҂mt x:ԼԌƧ%`e J | `|'ߴdK"Ā} + d,B)8 ILb.lr Ath [4?N,1 o.f: S _ S/,d="I*0 ]oJ: Z:6Ur ? E1 D*qd"@ "@ 6qC48p 0ԑy„81z _qOX 0X8b6|!Jl$2qEZ,'\P`L/foH 8+VbKx"_#%(B&D8,Qo87O@TGZ PB!Q (4$11LbD1AB=!WB8 AVZ>bz01vb&p#A%z~؅,p ]@8A&paMB0Nd (0vdg/AC3aC>40J/ g§΀jQ {`D DP!,=D":CPa&MlLO &B74vYf8J.iUG>qC!Yf$ⱎ p @8D8#Qf4;{Kƈ2gψ0*Bx~&E`~x- Y<Q1) ?@~0#.AFXDx^(<"[}D"E`CD=|V䥆0~|"ˈbFj0#-E0D֑tMȂ"`BTh"`. 0 .F6BrG-!fLdCDqipr gH9d&3H#0h& E4bx9( OT\4f!fAka5|[%4 %$AҖ.s5mB #}_ "xQi@"ЯkMЖ~qd VQo3a2:ְ§ Lƀ kٜε#1fZ~-dleF2 hh/{ГD*!ajk# m;|v;youker-assistant-1.0.1/qml/img/logo/Manufacturer/FUJITSU.jpg000644 001750 001750 00000014667 12312451003 024151 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     1! AqQ"2Bw8R4v9 a#$%&:J  !1AQaq" 2Bt$u6v789Rrs53S4DTGI ?M1q_V0Mz0<0MGс _/ a^l O.!A0`xç(`4„2@>('|QLgF_V0Mz0<0MGс _/ b:! vܕE+LXyYі 4;N6 Լ MK#;,k=+ cwB/uX0׊"ӪE?>:V@1Qyi꘢)S@Jbf10&bb9.!A0`xç(`4„2@>('|QLgF_V0Mz0<Ze9 R9: #&I!1[ߥ;ՇRW5P7e@6C<DZDLp8(.Fφ"ڏ[1O(| 'c 3:+b;k֛E\4VP:kjPTG! WT1I wme3(\,t|ET_?϶!y%ikR6&Y~Q5ܛkm՜h@aL/5M\58ru(tTڤbjtEE&8ɿOs5V-23&C;;g(Fj]/\m %H)I6[ԯ[7t2ZJ-.Էy-|vVgdP PJuhWL 0y5Jsۘ]\ri/|+u޹u.[[˰K!( LscNw˙=ҫ 2cnJ>kǕSxl/.hƓ!26e/cz e/[;Hö~W n7 ai륉F=[ktTC)hd\pLɕoVbgz3n4LL!JА]*NM(weHyg JkU<8?mvzilݮCvtM^I PJĤ)!3mJxÞ1<;u*ϴvAX;|L)~^q~ݿˏ_hS>Mz鼿)a9[EB!}xKT$rpEftb“κ daH5 L a+ww32 3VW} 2 tVdVW#FXm۝\6nng(,Z8g!^43 sŇe ]Q-' Ϸnu-_Azwkm*PZnz=A!M4fR3;Wg; eTvGlks{urAmXӛ/&<_ߺ~OW括y_#c7lo}_?sDTvFjz Rz^,3 5 Q8 D y(ǡ9{'?~=kMQݶQJf "%6[5%U%,cu݃^}W7d*6MԫUZ=xl֦t*̐Ysomo+3[URRfteԒdmo{rF kgIĤ+x-ND9#n켥7 tƉZn2F2Oͺ7̿\o..RRS!!$T Xv7̣ۤw [5Wyaoj4UaC/BbHq\i|Fw9zZ.7ZjmBےYZ9r{c覜V׫ 4jmĸU\LзNe '!2 g(J[Sۅ;K1-:2*xdCv]Nbe}%S>|g?n^|;B}b}r;cO)cy+*k!w=$yBlfL^WD((P2ԫH2M2ݬG!N(NSۑ՜9۫3I 5,&e3# 9 GH cZ˸c:T@W jW:uG<>8ke%ÖSqc]C^65WYrfjN|1"R 姰w .ZѠQ)R)kK T%A23\Օ4{SwAlʖÇ()M}BI˙#2vf }-D.oRT Ιkz:&1!8Ij!h<n`<0-/t8D5T$02$AQS!-ҟ6gv䎔h_Mmkc+m^:@~E\̓1XyMߵΠu@.V_GĻsi4t`95` Cף YC}q8|R ,Y+^--љr]jʔҥNu֫T'91۵nd%;cmx޵r:pHOT_(3Q2g('|QLgF_V0Mz0<0MGс _/ a^l O.!A0`xç(`4„2@>('|Qyouker-assistant-1.0.1/qml/img/logo/Manufacturer/ASROCK.jpg000644 001750 001750 00000007002 12312451003 023763 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1! AQq"2B b3r#c$41A!aBQ# ?m}#2obrQ-kADQ4tQoը_Ȋw] }^-  62_b)kl] [F8z7h19B(ߖ(}:(7/E;OF.>g/NE@XkAzv`vhy5.mw oZQn>Ej"çEBif~aKbGe ;;4W؊}CVѶp#!ƩG՚ (:bc5؍3/#[U(-#7s5sgoȧQaaȓ%+ٸωR5In,5*5TrƪjsV'D uke:#go#0OuqKϿ&$c?fЖ^)kI@G#MEd"jЊu)抝+;FVlhơ/&y}\jN_Jk$ I}lݲ(M%w5 GLOvu%_^cG]?Psף~aKbGecs_.zswӓI Fdf IELU(u ïAۜ Wo+.&n+Br)I~-!$SI˷x<PT=]\5~ ]5L#xc%LD̖ )lǐi(:HBz֊yCKG4dXkn|N>ug HYi'%츃EH*N]6r׎Ska1K\ʿvgCUT8o>=!AxujC2yY=\>yŨn.7+5G 聙d,FmX#Ip.S9tbLlj< k@̚T2MOdq?|`2N{DXf2v1G_V^Y&፝֍LLkv͐)Ot-CUcl䯕a${[a+(RgҨlK MX$C(AuI-e5:Բoj=AZ׳FjNYN"R^5_o0x %lw'2\V^u aeVu6VS<_ 4Qkb?"Mw%)%aVs"QPVH9,lo?մmしv"kZ "٣~BDSthM?Psp"4T l@h쵁`fO[bj6qѿAFFDQOV"):z4Yt&9k8zw* 4vZX Ӱ{E}᭱t5mkeݠ~Zւqh(ߧP=,O5; [;-`@me=٢Sغyouker-assistant-1.0.1/qml/img/zh_CN/title/feature-active.png000644 001750 001750 00000013033 12312451003 024440 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<IDATxbO,_a,dx?Cz`^b]Ƌ/Kor뫿`޽gZNz{?n;|VP0sqg8Elbp/`Fj`@g`aOWde ?7Ϸ>>с{AP0Po_Lٹ,Oϸ{ʼn+ 5%:=擐8^?cISq_?f$˟O}N y_~1<U=v0r7,o뾻u3"uGT)1?{DAV浗:O~v%E-U4ex¿毵(;oC [N}&!W!b[ܿ??/HͯߘYY q?bkٹ8]}?C=w`Ƥ' k*D~x-ΰԮDXe>#ׯ ?~exp*WoO|LKhdfsRAe$3e͍_\:/%$"Eo8a)ᅲOiLL LٿA}cHӝW_/߿|on 0,GY>Fo޿[30'/ٸ` @\2Ec0uH}GR YWNLy?(T@|￿L۷o XLQj dpl9+GNg*&Qq?o1HoL2,ep'(2zx*;fr_IXz&cD %7炀g&oҧoǚt}RroYoQ%@ EHPB_1j~`  .7_~}&/ 1z;ɿ.NZچP~,[$;73WVWR&~Uݛ?oe#'/?+# +HII0$wϟauY`ÒiBLg`VIf ,)o'>} l?~Í{w>_qP"v];PwOP8߻IJxM'vmˉ:li@,d/dd&̑(Ȏ]r8!|5?Y6v4ﵔ9"GBA`?).LL6 f55@jC1f#y-rmik96/T|̣8!d֦^ى1KwwzLkvYtJd̘yPo!Ϳ]%>6 Gs&s:ȢWNҧR 1pUuN\>kR kS#zK?Q w%VVu"7CԜwPɯʂCpYF<~UsK=[c%<(yCLeg{ag&n1 "+)t}~~1](Fk?@7jU񡒖uⓄ[K ^oÞO{Y*"鵾;+p—W-5 ϏOyJ.TtJ"&y!^ZXT=Z_m=~dsٱRmz;][oL}FZO<cV ~zF5?E= s`iKq%*93Ba=(1D=IMH8ɻ:'K |n&=$z+bzm]?!~j0B2p!;bG .4,jwP0Ȍ[yl{w<{ymw& IEJJH3JRRVj6*6BI71pwާg|KQ9b@oGٯaH@r JsqS)έ}>?f̭}oL3A>3A]_* ={[D |=R*IӐ B?~k?iE DJsD"\@JC#j;6&@{cR0-2y}}P Pݠg{yZ Gҍ#I%ӌ7Ͳ]Jɞ ג+cTM4Y2]_ ᛝ ΃QTs;lmٜSntmH'0Nu  4tRgcK4oܡ`wj Aofs-EG:<OGgzPŨ3\2.œ_I4woFi=FdzyGA)lJc"rM}`z $`8WIQ[_=5~d4 -E17 *U/glHp{"7$Qj¨ $BR<2Cz댉S*ȇDniso?٣F6=lyܬ% v5l !(K/wT㡔pyEhc1ܪGJ AƜI2ZH&ضwouzYNoxP$XZ 9}aQ1986c7ko/z}wˉRwACx#?[C-Oy ZSakl̪sMRsjUvʩQQao@xɸݸܶĤਤO}?7/?JD%9 5Dt1 Tj-OU>xo <9Ge/gE|\4ߘ[|Ҟ?/7a҉(V_Ĕ5|{Ǝі?7Z\V#9\`RT}W:4x7X r֮v95r}UQ]mϜOs{F)\QR*UZؖGKjRbyEj[c8)rUQGAO(TRVo kh(Ra}EsieDYX1-1?5jLiR,m ~4kqp&s &y2KC΋<+e濐k(>.Cv#LqM4;cRdIA AdobedF]    1!B AQq"$a24b%V7!1AQa3"BCq2 ?y;89OTN h0v0v>hA{Cq,{z.^V-u ;8h.^WPܮZN;.NÈe=PA;{-hrl띪ˠ 6 #ӁVR7bC'@zywmdWսv)!Ts B_"cI!ƤQe P#Nb|Y_lyiuoU H^}\6N\<$uF,{ƇVp̾@;mV`_kcҵf7P{gzLwWfar&r[#4fkHFiDb b"R1U/.U˗լB9_ R5JQMI\iO Q5UjڲpQ !V%̠?ߑ*B5Q_Nc:j+B<*M/ęšg:20X䱨/19;YEy{֨&14-G6goSu=35JLz N"T/hE]fݠծp)TJo3ijl1׌w8VV#UI!(zm*>$pcP9)}|Nu"-i jO񘮠aWbG *:$yBbҡڴ2%H%^7}u!,=M3Sc"7ѳR6./@K[U~ɝ%Q*\|͔=+p5b8S ݥks+Cv)puvZ r\.pD9)CoVXo[ްݟSy[jwVWnH&U2ʏ6|x#̢El[gRɱIOu6ڳ}Gk^Rk 3Q|JASb˟?Hxȹh|o1)ޕ9<&PljG c"\r}8ʷTSqrrs**EH)f~4I5Ur?u[b3dJͧ_^ύ{ 珉|3*Q^siw=+p31FFVj^֦mkl@*\.A>LR""v Xuݪa-D;!-5xc"'y2k Ss1G:|s.6+ƝyC+nÊF5&['2gl\Gg f1G"|e"0C`|c ~ۢ366 :q9 VcW9 5 :g8N2`7)LqBC+vY6}^ *[^ͪUN]5BVṺc֎lrK뙺S-yk|RlI$Ҁȉ yS^%jTkFړr0ӯbY4+[GV4P^~ڴj$1 6~!_ uVRT9Ws#sMҦގuWcjvU@i~':qZ6HE>K:]J!–8Q A~/9;s%*'r376**}R-juw|RN~X r̘D@E= =/qt)ofg~ )uh'Fa{|oOȸةg) Q N cyted "p\_19"PQ8kr+צ'CmU`ꉙ͞GUj&37WzZɀF\S!_PJ\b[V#.ԵBIwhZgLFWN l*y }uW&ŷkvhk7ӣbld|$3UB:17 \򫛡7D@ 7~}Hi5WU ı_e3TbUWE_&0Y-r9 ,zq)Eխ1xUi);>u?Lǫe_LU:k7|<HeS0=ȍS&ϓ>G&so^x}pq4\p"ttкbņ>ܧh1 U 9V׺o͌֟yQy`8*,G=gػ?` 7uYuB(J=ig䟸YbnoW:J)Rnj^lz-sdwg˵zV͔s}y~=4rM5NJ:'~&3ɀXALF5n ;k[PZIw*ZRY4YnUµdjvJQC?l"-JˡO@uKcXͰy*KjlG@X?Ɗ"vKO^X)6|Bҁsi(D[Mu@%,܍^CkBj)DQKQڱ`p],^ dɓ:%\S$WE ^49LSuGW{Q&(\ݞiZp۳I;6v!`њʑOwCҨDR$fSP8TU˵Ng;R0ΧLPhgSy)27#1#>&QQLx]w \zvp[A~'apB Oc$Сr)nN㮁 ArR=Wt?youker-assistant-1.0.1/qml/img/toolWidget/brush.png000644 001750 001750 00000005521 12312451003 022661 0ustar00saucysaucy000000 000000 PNG  IHDR&&:8tEXtSoftwareAdobe ImageReadyqe< IDATxb?/N Ā/u"h͵'YVl寯|gs&#RY a###XE;s *@27Vz?y`N}`^agIS|/A|biAyYU /-K%k˳G(>9?o KK3sY` R7\`aagbxîCae;kH v a0vj΄Mзp֧?c7P>_9XF| 3>/böu7?Vy'bҢy+tOl:a {j6PA㘢-^#g<ԙ d*oD!/k# H~ק7L_1lG=-Ph q_c?5 1X`}0\zU%M RD-$L`KDb`3ZmDb1 L$&DZuzSz%g{}<[;V4 CZ&ӣpPpժ}eh"x [q:581Vx&oqW拌%>67K039o|Zؖ90 N"#I?>YBJPK f$ G )pP㍐"dkn$IJ^hJiM{ņ6*z4kA-ZMUwu6M4S04{H4.+Έsd|*;M A건:tf7*^og2ww5k4bDP=KD=[Xh m,5ͼ;;}6,t5ass|%íyYh !@BT=2x%˷Kfs7!@FVD0]K2i*ET1#m9yhJ@d^ {)x9/APΩn޺d>0Tv?"/͝M~UV"dQCe6K_=i.n1\wvs3e;kfaN,ed84M6V]Ĭ|FF]-SY̮(XD e:T A59 o0-ގkf(Ƚіh@ IZ7K-pR 2 LX]G8 ~"E=OFx0, Д@?vޏCp)hZJR֪ d|j}6yכxXQ L2'BSEmtXŒe|-__~eɿn`^uzɑ .sܾ e0 .R60i$ٿt:K;dq{?LVMc |ByK]?TM.E"%`o!RA |}BSSPlê~| q1=ײY[56qNWƽ A-Cv'E,<>;!8<JmB %kNdI=J忊t kť2N-@:~1@SRGdѝ!*a C~\A4BičI㫶׿ȡ GV؊sk<vp*qIV(e#qKD߇"ORx,",E ݴ G?яZkSgM=yo7V.Ji&20ihQ$ bM A64G9)"=/SDޖo-JVԶC1a[`޷j x0i͡ʠo2 7ޭ!IP\+b1XH3h.;ڤv>s%GTqU|g(prIbD&A]Tz}V9?hڿe;SWnپͽkV=:Oi{ E3Yi)nvhJ%^4p(gfZfIߝJIENDB`youker-assistant-1.0.1/qml/img/logo/component/computer.png000644 001750 001750 00000000720 12312451003 024211 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<rIDATxbd``b# fhe, A 1,"q:pttFЩ2lX@g;B}y@ Alb: 8 6]SC,JAlIP1?~d O8ʔ)a4pȑ#m7*ӣ )wm g7iH@y7~­#/[)0xF _bRA 7nX2.x `L ѣGl'^dod \]p8_) |HdG"`DZ ??jĉml&( R[ J<`x CNNN7P,PJ/ kFxuIENDB`youker-assistant-1.0.1/qml/func/cleaner/FileDelegate.qml000644 001750 001750 00000017063 12312451003 023530 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "../common" as Common Item { id: listViewDelegate property int itemHeight: 30 property string arrow: '../../img/icons/arrow.png' property bool expanded: true property int heightMark:sub_num //需要传值: property string btn_flag property ListModel sub_model property int sub_num //接收清理界面扫描出子项的个数 property int arrow_display: 0 //控制清理界面下拉图标显示还是透明的变量 property bool delegate_flag: false //子项字体 property string subItemFontName: "Helvetica" property int subItemFontSize: 10 property color subItemFontColor: "black" //总控开关的初始值 property string main_check_value: "false" //传出的值,控制子列表的伸缩 signal subpressed(int hMark); signal checkchanged(bool checkchange); property int check_num:sub_num //记录子项个数,在确定总checkbox状态时需要的变量 property bool maincheck: false property int arrow_num: 0 width: parent.width //---------------------------- // property bool showNum: false//决定扫描结果数是否显示 // property string arrowFlag // property bool emptyTip//是否显示扫描内容为空的提示图 // signal arrowClicked(string cacheFlag, bool expand_flag); // //---------------------------- Item { id: delegate property alias expandedItemCount: subItemRepeater.count x: 2; y: 2 width: parent.width height: headerItemRect.height + subItemsRect.height //母项 //checkbox, picture and words Row { id: headerItemRect x: 20; y: 2 width: parent.width height: listViewDelegate.itemHeight spacing: 15 Image { id: arrow anchors.verticalCenter: parent.verticalCenter fillMode: "PreserveAspectFit" // height: parent.height*0.3 height: 28 width: 26 x:740 // y:10//15 source: listViewDelegate.arrow opacity: arrow_display //当鼠标点击后,箭头图片旋转90度 // rotation: expanded ? 90 : 0 rotation: listViewDelegate.expanded ? 0 : -90 smooth: true MouseArea { id: mouseRegion anchors.fill: parent onPressed: { expanded = !expanded //扫描出的子项是否下拉显示的控制变量 if(heightMark==listViewDelegate.sub_num){ //通过对heightMark的赋值来实现子项的下拉显示与收缩不显示 heightMark=0; } else if(heightMark==0){ heightMark=listViewDelegate.sub_num; } listViewDelegate.subpressed(heightMark); //将heightMark的值传给清理界面实现对是否下拉显示子项的控制 } } } Common.MainCheckBox{ id:check checked: mstatus//listViewDelegate.main_check_value anchors.verticalCenter: parent.verticalCenter onCheckedChanged: { } onClicked: { if(check.checkedbool) { listViewDelegate.checkchanged(true); } else { listViewDelegate.checkchanged(false); } } onSendMstatus: { check.checkedbool = status; } } Image { id: clearImage fillMode: "PreserveAspectFit" height: parent.height*0.9 source: picture smooth: true } Column { id: status_update_content spacing: 5 anchors.verticalCenter: parent.verticalCenter Text { text: itemTitle font.pointSize: 11 color: "black" } Text { text: detailstr width: 600 wrapMode: Text.WordWrap font.family: "URW Bookman L" font.pointSize: 9 color: "gray" } } } //子项 Item { id: subItemsRect property int itemHeight: listViewDelegate.itemHeight y: headerItemRect.height + 20 width: 850 - 2 clip: true //当高度需要扩展时,根据expandedItemCount数目和itemHeight高度去扩展 height: delegate.expandedItemCount * itemHeight opacity: listViewDelegate.expanded ? 1 : 0 ListView{ id: subItemRepeater width: listViewDelegate.width model: sub_model delegate: ldelegate anchors.fill: parent } Component{ id:ldelegate FileItem { id: subListItem split_status: listViewDelegate.delegate_flag width: subItemsRect.width height: subItemsRect.itemHeight // text: subItemTitle text: itemTitle descript: desc size_num: number item_index: index //根据主checkbox的状态来更改所有子checkbox的状态:true、false checkbox_status: check.checkedbool fontName: listViewDelegate.subItemFontName fontSize: listViewDelegate.subItemFontSize fontColor: listViewDelegate.subItemFontColor // textIndent: 20 btn_flag: listViewDelegate.btn_flag onClicked: {} onChange_num: { if(check_status==true) { //已经勾上的子项数量统计,check_num记录 check_num=check_num+1; } else { check_num=check_num-1; } if(sub_num!=0&&heightMark!=0){ //在扫描出子项并下拉显示了子项的前提下,根据已经勾上的子项个数确定总checkbox处于三种状态中的哪种 if(check_num ==0) { check.checked="false"; } else if(check_num ==sub_num) { check.checked="true"; } else { check.checked="mid"; } } if(check.checked == "true" || listViewDelegate.check_num > 0) { //根据是否有勾选项给清理页面传值判断是否能进行清理工作 listViewDelegate.checkchanged(true); } else { listViewDelegate.checkchanged(false); } } } } }//子项Item } }//Component youker-assistant-1.0.1/qml/img/toolWidget/cookies.png000644 001750 001750 00000006733 12312451003 023200 0ustar00saucysaucy000000 000000 PNG  IHDR&&:8tEXtSoftwareAdobe ImageReadyqe< }IDATxb?:`^f9FcWڼ{3b| 0LV]_)n Y":Ù _Uj{/0@C ,;=clv>;r/1s3dgxwwsEWg/=~x4),Vh6Ϛ'  %30ge=Cr-فq2G/fHUex/ gÏ7k&N?31Ʌ0\z(Op>8(,0z>~%?VwQ/ ,۩Ux  B }g|g)RiwCt?^ h?;[i |e({ o ?^`~sz OaeOD3\O~pXGՌ`Pa|pJ`c"Óu5p0)nWp`?ß?]^@T` B9DpMJ#}i"L"dE_BI-A[%ca1^ZfJ7ڽws=Ҡ9J&_hK—BV戮M}䮮~p!0gdERur{XtFPg'?kMŅs1X1G?o ,6PXz:+,icTRhC9 U0ԍ;=ft6-az㵬-!(~ŠkL)[%WAe Λrȿwpd –AFS6r*JNH,"oo)kj†ՃCJS=} ?!ID1"[}_wq-в,O Ta %!g^+g;یr,%JGM[HEjw QI''f#LgEAZ!Uq̘z:޺]"Iy0)VAї"څeKKPDѲԷ>A7&vr(+Ce7;mOkG=WߙsNA'\腙agyψy2n[Ww챲i)*fVn銤5/RXшV6qk5p mq0,JD$uԊ5]{>چkºzjp@fja.C.hLdLn7b(u&᷂6NW1H0l3mlʹ9},ʽab3ǖxs F2 ,9[!T@ˋZ{Bʞ1yBEnp;JNBz)&\O]c2*T4Viqx;/ wW33h1#|[}8 %B%|VM&zFXH&>S%.A˽t_CV,|E宩2`D;o XvUiJ,-zM8uSD՘lx I~QV)æ,,⍜̋ Rif{~'ط"ߕhZc73;nPh XPAQP ,GBEA5H5DTRJ)mtKKc)J( nrޛ9͹|;7ٍٮŵ{ "&$Qx;nhmmWոbGl;J _Vk|a1232(G,sQ@h0xEV YJh*VvwPq9^W.Ulzx3$#`FrlIC8-8FC~`"rƖI3ۚvfWRrlDž aheX>:MP NFICM13<-B?ݑRQM4&b\DO[bTYj>%)SQ9~r$PFv? 9T?;ֵT9Df5 Twh?ueRQl>-7e^[ufnEp]i(M? ?ׄў"BSt| YD*J=x_CYyp)A8~).? I/fuUoiOq]|6p gKgOc-}6H`WFLrQ"f{ ?O/a3LdAM jDגfhLe읋 =(ōkk\,~P96ߵ ދ I_Jc (˪ 29;¢ KS1^kHݵ?ލ7Bb܂Rdh8 ?ԇFe̠ TD,&􂣳0*P+jy ̵FU:DʇWW{I?ŏLtz6 W )*@TMP%*} Q2bѲЙT 0noB?L])yh kD`mq*xC`\nE %)FzN/ ['Ov%Dl_AG%f-Eff5_6L։8*qw? 1$@ _bUYX飷ϯe}(l>Ch:4tE+UrN華2:^~)Q2_s+ub N_^x1?IVERǠ2d*uI㧧Ϝ}cEs'_!TE KXlfd01vB_3EhnӤcƽ#;d ݒLsB\TO"?ΧGF\E(CBgȺ" ձƮ}eY#{X gÒNsrvdsD`hd% r!aIENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/sessiondbus/__init__.py000644 001750 001750 00000000022 12312451003 031132 0ustar00saucysaucy000000 000000 #!/usr/bin/python youker-assistant-1.0.1/qml/func/cleaner/CacheModel.qml000644 001750 001750 00000140077 12312451003 023204 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id:root width: parent.width height: 435 property string title: qsTr("Deep cleaning up the system cache")//深度清理系统缓存 property string description: qsTr("Deep cleaning up the system cache, to save disk space")//深度清理系统缓存,节省磁盘空间! property string btnFlag: "cache_scan"//扫描或者清理的标记:cache_scan/cache_work property bool aptresultFlag: false//判断apt扫描后的实际内容是否为空,为空时为false,有内容时为true property bool softresultFlag: false//判断soft扫描后的实际内容是否为空,为空时为false,有内容时为true property bool thumbresultFlag: false//判断thumbnails扫描后的实际内容是否为空,为空时为false,有内容时为true property int aptNum//扫描后得到的apt的项目总数 property int softNum//扫描后得到的soft的项目总数 property int thumbNum//扫描后得到的thumbnails的项目总数 property bool splitFlag: true//传递给CacheDelegate.qml,为true时切割字符串,为false时不切割字符串 property bool flag: false//记录是清理后重新获取数据(true),还是点击开始扫描后获取数据(false) property int spaceValue: 20 property int apt_arrow_show: 0//传递给CacheDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property int soft_arrow_show: 0//传递给CacheDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property int thumb_arrow_show: 0//传递给CacheDelegate.qml是否显示伸缩图标,为1时显示,为0时隐藏 property bool apt_expanded: false//传递给CacheDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool soft_expanded: false//传递给CacheDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool thumb_expanded: false//传递给CacheDelegate.qml,觉得伸缩图标是扩展还是收缩 property bool apt_maincheck: true property bool soft_maincheck: true property bool thumb_maincheck: true property bool apt_showNum: false//决定apt的扫描结果数是否显示 property bool soft_showNum: false//决定soft的扫描结果数是否显示 property bool thumb_showNum: false//决定thumbnails的扫描结果数是否显示 property bool aptEmpty: false//决定是否显示扫描内容为空的状态图 property bool softEmpty: false//决定是否显示扫描内容为空的状态图 property bool thumbEmpty: false//决定是否显示扫描内容为空的状态图 property int item_height: 30 property int mode: 0//扫描模式:0表示两者都扫描,1表示只选中了apt,2表示只选中了soft,3表示只选中了thumbnails, 4表示只选中了apt和soft,5表示只选中了apt和thumbnails, 6表示只选中了thumbnails和soft ListModel { id: aptmainModel } ListModel { id: aptsubModel } ListModel { id: softmainModel } ListModel { id: softsubModel } ListModel { id: thumbmainModel } ListModel { id: thumbsubModel } Connections { target: sessiondispatcher onAppendContentToCacheModel: { //QString flag, QString path, QString fileFlag, QString sizeValue if(flag == "apt") {//Apt缓存 aptsubModel.append({"itemTitle": path, "desc": fileFlag, "number": sizeValue, "index": root.aptNum}); root.aptNum += 1; systemdispatcher.set_cache_args(path); } else if(flag == "software-center") {//软件中心缓存 softsubModel.append({"itemTitle": path, "desc": fileFlag, "number": sizeValue, "index": root.softNum}); root.softNum += 1; systemdispatcher.set_cache_args(path); } else if(flag == "thumbnails") {//缩略图缓存 thumbsubModel.append({"itemTitle": path, "desc": fileFlag, "number": sizeValue, "index": root.thumbNum}); root.thumbNum += 1; systemdispatcher.set_cache_args(path); } } onTellQMLCaheOver: { if(flag == "cache") { aptmainModel.clear(); softmainModel.clear(); thumbmainModel.clear(); //"detailstr": qsTr("Apt Cache Path: /var/cache/apt/archives" //sessiondispatcher.getHomePath() + "/.cache/software-center" //"detailstr": qsTr("Thumbnails Cache Path: ") + sessiondispatcher.getHomePath() + "/.cache/thumbnails" doingImage.visible = false; //软件包缓存清理 Apt缓存路径:/var/cache/apt/archives aptmainModel.append({"mstatus": root.apt_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Package Cache"), "picture": "../../img/toolWidget/apt-min.png"}) //软件中心缓存清理 软件中心缓存路径: softmainModel.append({"mstatus": root.soft_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Software Center Cache"), "picture": "../../img/toolWidget/software-min.png"}) //缩略图缓存清理 缩略图缓存路径: thumbmainModel.append({"mstatus": root.thumb_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Thumbnails Cache"), "picture": "../../img/toolWidget/thumbnails.png"}) if(root.aptNum != 0) { root.aptresultFlag = true;//扫描的实际有效内容存在 } else { if(root.mode == 0 || root.mode == 1 || root.mode == 4 || root.mode == 5) { root.aptEmpty = true; } root.aptresultFlag = false;//扫描的实际有效内容不存在 } if(root.softNum != 0) { root.softresultFlag = true;//扫描的实际有效内容存在 } else { if(root.mode == 0 || root.mode == 2 || root.mode == 4 || root.mode == 6) { root.softEmpty = true; } root.softresultFlag = false;//扫描的实际有效内容不存在 } if(root.thumbNum != 0) { root.thumbresultFlag = true;//扫描的实际有效内容存在 } else { if(root.mode == 0 || root.mode == 3 || root.mode == 5 || root.mode == 6) { root.thumbEmpty = true; } root.thumbresultFlag = false;//扫描的实际有效内容不存在 } if(root.aptresultFlag == false) { root.apt_showNum = false; root.apt_expanded = false;//伸缩箭头不扩展 root.apt_arrow_show = 0;//伸缩箭头不显示 } else if(root.aptresultFlag == true) { root.apt_showNum = true; root.apt_expanded = true;//伸缩箭头扩展 root.apt_arrow_show = 1;//伸缩箭头显示 } if(root.softresultFlag == false) { root.soft_showNum = false; root.soft_expanded = false;//伸缩箭头不扩展 root.soft_arrow_show = 0;//伸缩箭头不显示 } else if(root.softresultFlag == true) { root.soft_showNum = true; root.soft_expanded = true;//伸缩箭头扩展 root.soft_arrow_show = 1;//伸缩箭头显示 } if(root.thumbresultFlag == false) { root.thumb_showNum = false; root.thumb_expanded = false;//伸缩箭头不扩展 root.thumb_arrow_show = 0;//伸缩箭头不显示 } else if(root.thumbresultFlag == true) { root.thumb_showNum = true; root.thumb_expanded = true;//伸缩箭头扩展 root.thumb_arrow_show = 1;//伸缩箭头显示 } if(root.aptresultFlag == false && root.softresultFlag == false && root.thumbresultFlag == false) { root.state = "AptWorkEmpty"; if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 //友情提示: 扫描内容为空,无需清理! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("The scan results are empty, no need to clean up !"), mainwindow.pos.x, mainwindow.pos.y); } else {//清理apt后的重新获取数据,此时不需要显示对话框 root.flag = false; } } else { if(root.flag == false) {//点击扫描时的获取数据,此时显示该对话框 toolkits.alertMSG(qsTr("Scan completed!"), mainwindow.pos.x, mainwindow.pos.y);//扫描完成! } else {//清理software后的重新获取数据,此时不需要显示对话框 root.flag = false; } root.state = "AptWork"; actionBtn.text = qsTr("Begin cleanup");//开始清理 root.btnFlag = "cache_work"; backBtn.visible = true; // rescanBtn.visible = true; } scrollItem.height = (root.aptNum + 1) * root.item_height + (root.softNum + 1) * root.item_height + (root.thumbNum + 1) * root.item_height + root.spaceValue*6; //扫描完成后恢复按钮的使能 actionBtn.enabled = true; } } } Component.onCompleted: { //软件包缓存清理 Apt缓存路径:/var/cache/apt/archives aptmainModel.append({"mstatus": root.apt_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Package Cache"), "picture": "../../img/toolWidget/apt-min.png"}) //软件中心缓存清理 软件中心缓存: softmainModel.append({"mstatus": root.soft_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Software Center Cache"), "picture": "../../img/toolWidget/software-min.png"}) //缩略图缓存清理 缩略图缓存路径: thumbmainModel.append({"mstatus": root.thumb_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Thumbnails Cache"), "picture": "../../img/toolWidget/thumbnails.png"}) } Connections { target: systemdispatcher onFinishCleanWorkError: {//清理出错时收到的信号 if (btnFlag == "cache_work") { if (msg == "cache") { doingImage.visible = false; root.state = "AptWorkError"; //清理过程中发生错误,解禁按钮 actionBtn.enabled = true; toolkits.alertMSG(qsTr("Cleanup abnormal!"), mainwindow.pos.x, mainwindow.pos.y);//清理出现异常! } } } onFinishCleanWork: {//清理成功时收到的信号 if (root.btnFlag == "cache_work") { doingImage.visible = false; if (msg == "") { //清理取消,解禁按钮 actionBtn.enabled = true; toolkits.alertMSG(qsTr("Cleanup interrupted!"), mainwindow.pos.x, mainwindow.pos.y);//清理中断! } else if (msg == "cache") { root.state = "AptWorkFinish"; toolkits.alertMSG(qsTr("Cleared!"), mainwindow.pos.x, mainwindow.pos.y);//清理完毕! //清理完毕后重新获取数据 root.flag = true; if(root.apt_maincheck && root.soft_maincheck && root.thumb_maincheck) { aptmainModel.clear(); softmainModel.clear(); thumbmainModel.clear(); //软件包缓存清理 Apt缓存路径:/var/cache/apt/archives aptmainModel.append({"mstatus": root.apt_maincheck ? "true": "false", "itemTitle": qsTr("Package cache cleanup"), "picture": "../../img/toolWidget/apt-min.png"}) //软件中心缓存清理 软件中心缓存: softmainModel.append({"mstatus": root.soft_maincheck ? "true": "false", "itemTitle": qsTr("Software Center buffer cleaning"), "picture": "../../img/toolWidget/software-min.png"}) //缩略图缓存清理 缩略图缓存路径: thumbmainModel.append({"mstatus": root.thumb_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Thumbnails Cache"), "picture": "../../img/toolWidget/thumbnails.png"}) systemdispatcher.clear_cache_args(); aptsubModel.clear();//内容清空 softsubModel.clear();//内容清空 thumbsubModel.clear();//内容清空 root.aptNum = 0;//隐藏滑动条 root.softNum = 0;//隐藏滑动条 root.thumbNum = 0;//隐藏滑动条 root.mode = 0; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_cache_arglist(0), 'cache'); } else { if(root.apt_maincheck && !root.soft_maincheck && !root.thumb_maincheck) { aptmainModel.clear(); //软件包缓存清理 Apt缓存路径:/var/cache/apt/archives aptmainModel.append({"mstatus": root.apt_maincheck ? "true": "false", "itemTitle": qsTr("Package cache cleanup"), "picture": "../../img/toolWidget/apt-min.png"}) systemdispatcher.clear_cache_args(); aptsubModel.clear();//内容清空 softsubModel.clear();//内容清空 thumbsubModel.clear();//内容清空 root.aptNum = 0;//隐藏滑动条 root.softNum = 0;//隐藏滑动条 root.thumbNum = 0;//隐藏滑动条 root.mode = 1; sessiondispatcher.cache_scan_function_qt("apt", 'cache'); } else if(!root.apt_maincheck && root.soft_maincheck && !root.thumb_maincheck) { softmainModel.clear(); //软件中心缓存清理 软件中心缓存: softmainModel.append({"mstatus": root.soft_maincheck ? "true": "false", "itemTitle": qsTr("Software Center buffer cleaning"), "picture": "../../img/toolWidget/software-min.png"}) systemdispatcher.clear_cache_args(); aptsubModel.clear();//内容清空 softsubModel.clear();//内容清空 thumbsubModel.clear();//内容清空 root.aptNum = 0;//隐藏滑动条 root.softNum = 0;//隐藏滑动条 root.thumbNum = 0;//隐藏滑动条 root.mode = 2; sessiondispatcher.cache_scan_function_qt("software-center", 'cache'); } else if(!root.apt_maincheck && !root.soft_maincheck && root.thumb_maincheck) { thumbmainModel.clear(); //缩略图缓存清理 缩略图缓存路径: thumbmainModel.append({"mstatus": root.thumb_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Thumbnails Cache"), "picture": "../../img/toolWidget/thumbnails.png"}) systemdispatcher.clear_cache_args(); aptsubModel.clear();//内容清空 softsubModel.clear();//内容清空 thumbsubModel.clear();//内容清空 root.aptNum = 0;//隐藏滑动条 root.softNum = 0;//隐藏滑动条 root.thumbNum = 0;//隐藏滑动条 root.mode = 3; sessiondispatcher.cache_scan_function_qt("thumbnails", 'cache'); } else if(root.apt_maincheck && root.soft_maincheck && !root.thumb_maincheck) { aptmainModel.clear(); //软件包缓存清理 Apt缓存路径:/var/cache/apt/archives aptmainModel.append({"mstatus": root.apt_maincheck ? "true": "false", "itemTitle": qsTr("Package cache cleanup"), "picture": "../../img/toolWidget/apt-min.png"}) softmainModel.clear(); //软件中心缓存清理 软件中心缓存: softmainModel.append({"mstatus": root.soft_maincheck ? "true": "false", "itemTitle": qsTr("Software Center buffer cleaning"), "picture": "../../img/toolWidget/software-min.png"}) systemdispatcher.clear_cache_args(); aptsubModel.clear();//内容清空 softsubModel.clear();//内容清空 thumbsubModel.clear();//内容清空 root.aptNum = 0;//隐藏滑动条 root.softNum = 0;//隐藏滑动条 root.thumbNum = 0;//隐藏滑动条 root.mode = 4; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_cache_arglist(4), 'cache'); } else if(root.apt_maincheck && !root.soft_maincheck && root.thumb_maincheck) { aptmainModel.clear(); //软件包缓存清理 Apt缓存路径:/var/cache/apt/archives aptmainModel.append({"mstatus": root.apt_maincheck ? "true": "false", "itemTitle": qsTr("Package cache cleanup"), "picture": "../../img/toolWidget/apt-min.png"}) thumbmainModel.clear(); //缩略图缓存清理 缩略图缓存路径: thumbmainModel.append({"mstatus": root.thumb_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Thumbnails Cache"), "picture": "../../img/toolWidget/thumbnails.png"}) systemdispatcher.clear_cache_args(); aptsubModel.clear();//内容清空 softsubModel.clear();//内容清空 thumbsubModel.clear();//内容清空 root.aptNum = 0;//隐藏滑动条 root.softNum = 0;//隐藏滑动条 root.thumbNum = 0;//隐藏滑动条 root.mode = 5; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_cache_arglist(5), 'cache'); } else if(!root.apt_maincheck && root.soft_maincheck && root.thumb_maincheck) { softmainModel.clear(); //软件中心缓存清理 软件中心缓存: softmainModel.append({"mstatus": root.soft_maincheck ? "true": "false", "itemTitle": qsTr("Software Center buffer cleaning"), "picture": "../../img/toolWidget/software-min.png"}) thumbmainModel.clear(); //缩略图缓存清理 缩略图缓存路径: thumbmainModel.append({"mstatus": root.thumb_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Thumbnails Cache"), "picture": "../../img/toolWidget/thumbnails.png"}) systemdispatcher.clear_cache_args(); aptsubModel.clear();//内容清空 softsubModel.clear();//内容清空 thumbsubModel.clear();//内容清空 root.aptNum = 0;//隐藏滑动条 root.softNum = 0;//隐藏滑动条 root.thumbNum = 0;//隐藏滑动条 root.mode = 6; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_cache_arglist(6), 'cache'); } } //清理成功完成,解禁按钮 actionBtn.enabled = true; } } } } //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //titlebar Row { id: titlebar spacing: 20 width: parent.width anchors { top: parent.top; topMargin: 20; left: parent.left; leftMargin: 27 } Image { id: apt_refreshArrow source: "../../img/toolWidget/cache.png" Behavior on rotation { NumberAnimation { duration: 200 } } } Column { anchors.verticalCenter: parent.verticalCenter spacing: 10 Text { width: 500 text: root.title wrapMode: Text.WordWrap font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: 500 text: root.description wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } } Row{ anchors { top: parent.top; topMargin: 30;right: parent.right ; rightMargin: 20 } spacing: 20 Row { spacing: 20 anchors.verticalCenter: parent.verticalCenter Common.StyleButton { id: backBtn visible: false anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Back")//返回 width: 40 height: 20 onClicked: { root.aptEmpty = false; root.softEmpty = false; root.thumbEmpty = false; if(root.apt_maincheck == false) { root.apt_maincheck = true; } if(root.soft_maincheck == false) { root.soft_maincheck = true; } if(root.thumb_maincheck == false) { root.thumb_maincheck = true; } systemdispatcher.clear_cache_args(); root.apt_showNum = false; root.soft_showNum = false; root.thumb_showNum = false; aptmainModel.clear(); softmainModel.clear(); thumbmainModel.clear(); //软件包缓存清理 Apt缓存路径:/var/cache/apt/archives aptmainModel.append({"mstatus": root.apt_maincheck ? "true": "false", "itemTitle": qsTr("Package cache cleanup"), "picture": "../../img/toolWidget/apt-min.png"}) //软件中心缓存清理 软件中心缓存: softmainModel.append({"mstatus": root.soft_maincheck ? "true": "false", "itemTitle": qsTr("Software Center buffer cleaning"), "picture": "../../img/toolWidget/software-min.png"}) //缩略图缓存清理 缩略图缓存路径: thumbmainModel.append({"mstatus": root.thumb_maincheck ? "true": "false", "itemTitle": qsTr("Cleanup Thumbnails Cache"), "picture": "../../img/toolWidget/thumbnails.png"}) aptsubModel.clear();//内容清空 root.aptNum = 0;//隐藏滑动条 root.apt_arrow_show = 0;//伸缩图标隐藏 softsubModel.clear();//内容清空 root.softNum = 0;//隐藏滑动条 root.soft_arrow_show = 0;//伸缩图标隐藏 thumbsubModel.clear();//内容清空 root.thumbNum = 0;//隐藏滑动条 root.thumb_arrow_show = 0;//伸缩图标隐藏 scrollItem.height = 3 * root.item_height + root.spaceValue*6; root.state = "AptWorkAGAIN";//按钮的状态恢复初始值 } } } Common.Button { id: actionBtn width: 94 height: 29 hoverimage: "green.png" text: qsTr("Start scanning")//开始扫描 fontsize: 13 anchors.verticalCenter: parent.verticalCenter onClicked: { //扫描过程中禁用按钮 actionBtn.enabled = false; root.aptEmpty = false; root.softEmpty = false; root.thumbEmpty = false; // console.log("-----------"); // console.log(root.apt_maincheck); // console.log(root.soft_maincheck); if (root.btnFlag == "cache_scan") {//扫描 root.flag = false; if(root.apt_maincheck && root.soft_maincheck && root.thumb_maincheck) { doingImage.visible = true; root.mode = 0; root.aptNum = 0; root.softNum = 0; root.thumbNum = 0; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_cache_arglist(0), 'cache'); } else { if(root.apt_maincheck && !root.soft_maincheck && !root.thumb_maincheck) { doingImage.visible = true; root.mode = 1; root.aptNum = 0; sessiondispatcher.cache_scan_function_qt("apt", 'cache'); } else if(!root.apt_maincheck && root.soft_maincheck && !root.thumb_maincheck) { doingImage.visible = true; root.mode = 2; root.softNum = 0; sessiondispatcher.cache_scan_function_qt("software-center", 'cache'); } else if(!root.apt_maincheck && !root.soft_maincheck && root.thumb_maincheck) { doingImage.visible = true; root.mode = 3; root.thumbNum = 0; sessiondispatcher.cache_scan_function_qt("thumbnails", 'cache'); } else if(root.apt_maincheck && root.soft_maincheck && !root.thumb_maincheck) { doingImage.visible = true; root.mode = 4; root.aptNum = 0; root.softNum = 0; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_cache_arglist(4), 'cache'); } else if(root.apt_maincheck && !root.soft_maincheck && root.thumb_maincheck) { doingImage.visible = true; root.mode = 5; root.aptNum = 0; root.thumbNum = 0; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_cache_arglist(5), 'cache'); } else if(!root.apt_maincheck && root.soft_maincheck && root.thumb_maincheck) { doingImage.visible = true; root.mode = 6; root.softNum = 0; root.thumbNum = 0; sessiondispatcher.cache_scan_function_qt(sessiondispatcher.get_cache_arglist(6), 'cache'); } else{ doingImage.visible = false; actionBtn.enabled = true; //友情提示: 对不起,您没有选择需要扫描的内容,请确认! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Sorry, You did not choose the content to be scanned, please confirm!"), mainwindow.pos.x, mainwindow.pos.y); } } } else if (root.btnFlag == "cache_work") {//清理 if(root.aptresultFlag || root.softresultFlag || root.thumbresultFlag) {//扫描得到的实际内容存在时 if(!root.apt_maincheck && !root.soft_maincheck && !root.thumb_maincheck) { //友情提示: 对不起,您没有选择需要清理的内容,请确认! sessiondispatcher.showWarningDialog(qsTr("Tips:"), qsTr("Sorry, You did not choose the content to be cleaned up, please confirm!"), mainwindow.pos.x, mainwindow.pos.y); } else { doingImage.visible = true; // console.log("33333333333"); // console.log(systemdispatcher.get_cache_args()); //开始清理时,禁用按钮,等到清理完成后解禁 actionBtn.enabled = false; systemdispatcher.clean_file_cruft_qt(systemdispatcher.get_cache_args(), "cache"); } } } } } AnimatedImage { id: doingImage anchors.verticalCenter: parent.verticalCenter width: 16 height: 16 visible: false source: "../../img/icons/move.gif" } } //分割条 Common.Separator { id: splitbar anchors { top: titlebar.bottom topMargin: 18 left: parent.left leftMargin: 2 } width: parent.width - 4 } Common.ScrollArea { frame:false anchors.top: titlebar.bottom anchors.topMargin: 30 anchors.left:parent.left // anchors.leftMargin: 27 height: root.height - titlebar.height - 47 width: parent.width -2//parent.width - 27 -2 Item { id: scrollItem width: parent.width height: root.item_height*3 + root.spaceValue*3*2 Column { spacing: root.spaceValue * 2 //垃圾清理显示内容 ListView { id: aptListView width: parent.width height: root.apt_expanded ? (root.aptNum + 1) * root.item_height : root.item_height model: aptmainModel delegate: CacheDelegate{ sub_num: root.aptNum//root.aptsubNum//1212 sub_model: aptsubModel btn_flag: root.btnFlag arrowFlag: "apt" showNum: root.apt_showNum arrow_display: root.apt_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.apt_expanded//apt_expanded为true时,箭头向下,内容展开;apt_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag emptyTip: root.aptEmpty //Cleardelegate中返回是否有项目勾选上,有为true,没有为false onCheckchanged: { // root.aptresultFlag = checkchange; root.apt_maincheck = checkchange; } onTellModelToOpenFolder: { if(category == "apt") { sessiondispatcher.open_folder_qt(path); } } onArrowClicked: { if(cacheFlag == "apt") {//1212 if(expand_flag == true) { root.apt_expanded = true; if((root.soft_expanded == true) && (root.thumb_expanded == true)) { scrollItem.height = (root.aptNum + 1) * root.item_height + (root.softNum + 1) * root.item_height + (root.thumbNum + 1) * root.item_height + root.spaceValue*6; } else if((root.soft_expanded == true) && (root.thumb_expanded == false)){ scrollItem.height = (root.aptNum + 1) * root.item_height + (root.softNum + 2) * root.item_height + root.spaceValue*6; } else if((root.soft_expanded == false) && (root.thumb_expanded == true)){ scrollItem.height = (root.aptNum + 1) * root.item_height + (root.thumbNum + 2) * root.item_height + root.spaceValue*6; } else { scrollItem.height = (root.aptNum + 3) * root.item_height + root.spaceValue*6; } } else { root.apt_expanded = false; if((root.soft_expanded == true) && (root.thumb_expanded == true)) { scrollItem.height = (root.softNum + 1) * root.item_height + (root.thumbNum + 2) * root.item_height + root.spaceValue*6; } else if((root.soft_expanded == true) && (root.thumb_expanded == false)){ scrollItem.height = (root.softNum + 3) * root.item_height + root.spaceValue*6; } else if((root.soft_expanded == false) && (root.thumb_expanded == true)){ scrollItem.height = (root.thumbNum + 3) * root.item_height + root.spaceValue*6; } else { scrollItem.height = 3 * root.item_height + root.spaceValue*6; } } } } } cacheBuffer: 1000 opacity: 1 // spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } //垃圾清理显示内容 ListView { id: softListView width: parent.width height: root.soft_expanded ? (root.softNum + 1) * root.item_height : root.item_height model: softmainModel delegate: CacheDelegate{ sub_num: root.softNum sub_model: softsubModel btn_flag: root.btnFlag showNum: root.soft_showNum arrowFlag: "soft" arrow_display: root.soft_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.soft_expanded//soft_expanded为true时,箭头向下,内容展开;soft_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag emptyTip: root.softEmpty //Cleardelegate中返回是否有项目勾选上,有为true,没有为false onCheckchanged: { // root.softresultFlag = checkchange; root.soft_maincheck = checkchange; } onTellModelToOpenFolder: { if(category == "soft") { sessiondispatcher.open_folder_qt(path); } } onArrowClicked: { if(cacheFlag == "soft") {//1212 if(expand_flag == true) { root.soft_expanded = true; if((root.apt_expanded == true) && (root.thumb_expanded == true)) { scrollItem.height = (root.aptNum + 1) * root.item_height + (root.softNum + 1) * root.item_height + (root.thumbNum + 1) * root.item_height + root.spaceValue*6; } else if((root.apt_expanded == true) && (root.thumb_expanded == false)){ scrollItem.height = (root.aptNum + 1) * root.item_height + (root.softNum + 2) * root.item_height + root.spaceValue*6; } else if((root.apt_expanded == false) && (root.thumb_expanded == true)){ scrollItem.height = (root.thumbNum + 1) * root.item_height + (root.softNum + 2) * root.item_height + root.spaceValue*6; } else { scrollItem.height = (root.softNum + 3) * root.item_height + root.spaceValue*6; } } else { root.soft_expanded = false; if((root.apt_expanded == true) && (root.thumb_expanded == true)) { scrollItem.height = (root.aptNum + 1) * root.item_height + (root.thumbNum + 2) * root.item_height + root.spaceValue*6; } else if((root.apt_expanded == true) && (root.thumb_expanded == false)){ scrollItem.height = (root.aptNum + 3) * root.item_height + root.spaceValue*6; } else if((root.apt_expanded == false) && (root.thumb_expanded == true)){ scrollItem.height = (root.thumbNum + 3) * root.item_height + root.spaceValue*6; } else { scrollItem.height = 3 * root.item_height + root.spaceValue*6; } } } } } cacheBuffer: 1000 opacity: 1 // spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } //垃圾清理显示内容 ListView { id: thumbListView width: parent.width height: root.thumb_expanded ? (root.thumbNum + 1) * root.item_height : root.item_height model: thumbmainModel delegate: CacheDelegate{ sub_num: root.thumbNum sub_model: thumbsubModel btn_flag: root.btnFlag showNum: root.thumb_showNum arrowFlag: "thumb" arrow_display: root.thumb_arrow_show//为0时隐藏伸缩图标,为1时显示伸缩图标 expanded: root.thumb_expanded//soft_expanded为true时,箭头向下,内容展开;soft_expanded为false时,箭头向上,内容收缩 delegate_flag: root.splitFlag emptyTip: root.thumbEmpty //Cleardelegate中返回是否有项目勾选上,有为true,没有为false onCheckchanged: { // root.softresultFlag = checkchange; root.thumb_maincheck = checkchange; } onTellModelToOpenFolder: { if(category == "thumb") { sessiondispatcher.open_folder_qt(path); } } onArrowClicked: { if(cacheFlag == "thumb") {//1212 if(expand_flag == true) { root.thumb_expanded = true; if((root.apt_expanded == true) && (root.soft_expanded == true)) { scrollItem.height = (root.aptNum + 1) * root.item_height + (root.softNum + 1) * root.item_height + (root.thumbNum + 1) * root.item_height + root.spaceValue*6; // scrollItem.height = (root.aptNum + 1) * 40 + (root.softNum + 1) * 40 + root.spaceValue*2; } else if((root.apt_expanded == true) && (root.soft_expanded == false)){ scrollItem.height = (root.aptNum + 1) * root.item_height + (root.thumbNum + 2) * root.item_height + root.spaceValue*6; } else if((root.apt_expanded == false) && (root.soft_expanded == true)){ scrollItem.height = (root.softNum + 1) * root.item_height + (root.thumbNum + 2) * root.item_height + root.spaceValue*6; } else { scrollItem.height = (root.thumbNum + 3) * root.item_height + root.spaceValue*6; } } else { root.thumb_expanded = false; if((root.apt_expanded == true) && (root.soft_expanded == true)) { scrollItem.height = (root.aptNum + 1) * root.item_height + (root.softNum + 2) * root.item_height + root.spaceValue*6; } else if((root.apt_expanded == true) && (root.soft_expanded == false)){ scrollItem.height = (root.aptNum + 3) * root.item_height + root.spaceValue*6; } else if((root.apt_expanded == false) && (root.soft_expanded == true)){ scrollItem.height = (root.softNum + 3) * root.item_height + root.spaceValue*6; } else { scrollItem.height = 3 * root.item_height + root.spaceValue*6; } } } } } cacheBuffer: 1000 opacity: 1 // spacing: 10 snapMode: ListView.NoSnap boundsBehavior: Flickable.DragOverBounds currentIndex: 0 preferredHighlightBegin: 0 preferredHighlightEnd: preferredHighlightBegin highlightRangeMode: ListView.StrictlyEnforceRange } } } } states: [ State { name: "AptWork" PropertyChanges { target: actionBtn; text:qsTr("Begin cleanup")}//开始清理 PropertyChanges { target: root; btnFlag: "cache_work" } PropertyChanges { target: backBtn; visible: true} }, State { name: "AptWorkAGAIN" PropertyChanges { target: actionBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btnFlag: "cache_scan" } PropertyChanges { target: backBtn; visible: false} }, State { name: "AptWorkError" PropertyChanges { target: actionBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btnFlag: "cache_scan" } PropertyChanges { target: backBtn; visible: false} }, State { name: "AptWorkFinish" PropertyChanges { target: actionBtn; text:qsTr("Start scanning") }//开始扫描 PropertyChanges { target: root; btnFlag: "cache_scan" } PropertyChanges { target: backBtn; visible: false} }, State { name: "AptWorkEmpty" PropertyChanges { target: actionBtn; text:qsTr("Start scanning")}//开始扫描 PropertyChanges { target: root; btnFlag: "cache_scan" } PropertyChanges { target: backBtn; visible: false} } ] } youker-assistant-1.0.1/src/systemdispatcher.cpp000644 001750 001750 00000051446 12312451003 022237 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "systemdispatcher.h" #include #include #include #include #include #include #include #include #include #include "kthread.h" extern QString music_path; SystemDispatcher::SystemDispatcher(QObject *parent) : QObject(parent) { systemiface = new QDBusInterface("com.ubuntukylin.youker", "/", "com.ubuntukylin.youker", QDBusConnection::systemBus()); history_flag = true; onekey_args << "cache" << "history" << "cookies"; tmplist << "Kobe" << "Lee"; this->mainwindow_width = 850; this->mainwindow_height = 600; this->alert_width = 292; this->alert_width_bg = 329; this->alert_height = 54; ratio_sus = 0; //绑定到底层清理完毕后发送到信号函数clear_browser QObject::connect(systemiface,SIGNAL(clean_single_complete(QString)),this,SLOT(handler_clear_single_rubbish(QString))); QObject::connect(systemiface,SIGNAL(clean_single_error(QString)),this,SLOT(handler_clear_single_rubbish_error(QString))); QObject::connect(systemiface,SIGNAL(clean_complete(QString)),this,SLOT(handler_clear_rubbish(QString))); QObject::connect(systemiface,SIGNAL(quit_clean(QString)),this,SLOT(handler_quit_clean(QString))); QObject::connect(systemiface,SIGNAL(clean_error(QString)),this,SLOT(handler_clear_rubbish_error(QString))); QObject::connect(systemiface,SIGNAL(clean_complete_onekey(QString)),this,SLOT(handler_clear_rubbish_main_onekey(QString))); QObject::connect(systemiface,SIGNAL(clean_error_onekey(QString)),this,SLOT(handler_clear_rubbish_main_error(QString))); QObject::connect(systemiface,SIGNAL(status_for_quick_clean(QString,QString)),this,SLOT(handler_status_for_quick_clean(QString,QString))); QObject::connect(systemiface,SIGNAL(finish_clean(QString)),this,SLOT(handlerClearDeb(QString))); QObject::connect(systemiface,SIGNAL(sudo_clean_error(QString)),this,SLOT(handlerClearDebError(QString))); //多余包和内核包删除过程信号绑定 QObject::connect(systemiface,SIGNAL(status_remove_packages(QString,QString)),this,SLOT(handlerRemoveProgress(QString,QString))); } SystemDispatcher::~SystemDispatcher() { this->exit_qt(); } void SystemDispatcher::kill_root_process_qt(QString pid) { systemiface->call("kill_root_process", pid); } bool SystemDispatcher::set_cursor_theme_with_root_qt(QString theme) { QDBusReply reply = systemiface->call("set_cursor_theme_with_root", theme); return reply.value(); } void SystemDispatcher::get_computer_info_qt() { QDBusReply > reply = systemiface->call("get_computer_info"); if (reply.isValid()) { QMap value = reply.value(); computerInfo = value; } else { qDebug() << "get computer info failed!"; } } void SystemDispatcher::get_cpu_info_qt() { QDBusReply > reply = systemiface->call("get_cpu_info"); if (reply.isValid()) { QMap value = reply.value(); cpuInfo = value; } else { qDebug() << "get cpu info failed!"; } } void SystemDispatcher::get_memory_info_qt() { QDBusReply > reply = systemiface->call("get_memory_info"); if (reply.isValid()) { QMap value = reply.value(); memoryInfo = value; // qDebug() << memoryInfo; } else { qDebug() << "get memory info failed!"; } } void SystemDispatcher::get_board_info_qt() { QDBusReply > reply = systemiface->call("get_board_info"); if (reply.isValid()) { QMap value = reply.value(); boardInfo = value; } else { qDebug() << "get board info failed!"; } } void SystemDispatcher::get_harddisk_info_qt() { QDBusReply > reply = systemiface->call("get_harddisk_info"); if (reply.isValid()) { QMap value = reply.value(); harddiskInfo = value; } else { qDebug() << "get harddisk info failed!"; } } void SystemDispatcher::get_networkcard_info_qt() { QDBusReply > reply = systemiface->call("get_networkcard_info"); if (reply.isValid()) { QMap value = reply.value(); networkcardInfo = value; } else { qDebug() << "get networkcard info failed!"; } } void SystemDispatcher::get_monitor_info_qt() { QDBusReply > reply = systemiface->call("get_monitor_info"); if (reply.isValid()) { QMap value = reply.value(); monitorInfo = value; } else { qDebug() << "get monitor info failed!"; } } void SystemDispatcher::get_cdrom_info_qt() { QDBusReply > reply = systemiface->call("get_cdrom_info"); if (reply.isValid()) { QMap value = reply.value(); cdromInfo = value; } else { qDebug() << "get cdrom info failed!"; } } void SystemDispatcher::get_audiocard_info_qt() { QDBusReply > reply = systemiface->call("get_audiocard_info"); if (reply.isValid()) { QMap value = reply.value(); audiocardInfo = value; } else { qDebug() << "get audiocard info failed!"; } } QString SystemDispatcher::get_time_value_qt() { QDBusReply reply = systemiface->call("get_time_value"); return reply.value(); } QString SystemDispatcher::getHWSingleInfo(QString key, QString flag) { QVariant info; if(flag == "computer") { info = computerInfo.value(key); } else if(flag == "cpu") { info = cpuInfo.value(key); } else if(flag == "memory") { info = memoryInfo.value(key); } else if(flag == "board") { info = boardInfo.value(key); } else if(flag == "harddisk") { info = harddiskInfo.value(key); } else if(flag == "networkcard") { info = networkcardInfo.value(key); } else if(flag == "monitor") { info = monitorInfo.value(key); } else if(flag == "cdrom") { info = cdromInfo.value(key); } else if(flag == "audiocard") { info = audiocardInfo.value(key); } return info.toString(); } void SystemDispatcher::handler_clear_rubbish_error(QString msg) { emit finishCleanWorkError(msg); } void SystemDispatcher::exit_qt() { systemiface->call("exit"); } QString SystemDispatcher::get_system_daemon_qt() { QDBusReply reply = systemiface->call("get_system_daemon"); return reply.value(); } void SystemDispatcher::getMusicFileAbsolutePath(QString musicpath) { music_path = musicpath; } void SystemDispatcher::set_homedir_qt() { QString homedir = QDir::homePath(); systemiface->call("set_homedir", homedir); } void SystemDispatcher::set_user_homedir_qt() { QString homedir = QDir::homePath(); systemiface->call("set_user_homedir", homedir); } void SystemDispatcher::set_history_flag(bool flag) { history_flag = flag; } bool SystemDispatcher::get_history_flag() { return history_flag; } void SystemDispatcher::handler_clear_rubbish(QString msg) { emit finishCleanWork(msg); } void SystemDispatcher::handler_quit_clean(QString msg) { emit quitCleanWork(msg); } void SystemDispatcher::handler_clear_single_rubbish(QString msg) { emit finishCleanSingleWork(msg); } void SystemDispatcher::handler_clear_single_rubbish_error(QString msg) { emit finishCleanSingleWorkError(msg); } void SystemDispatcher::handler_clear_rubbish_main_onekey(QString msg) { emit finishCleanWorkMain(msg); } void SystemDispatcher::handler_clear_rubbish_main_error(QString msg) { emit finishCleanWorkMainError(msg); } void SystemDispatcher::handler_status_for_quick_clean(QString type, QString status) { emit quickCleanProcess(type, status); } //-----------------------sound------------------------ QStringList SystemDispatcher::get_sound_themes_qt() { QDBusReply reply = systemiface->call("get_sound_themes"); return reply.value(); } QStringList SystemDispatcher::get_sounds_qt() { QDBusReply reply = systemiface->call("get_sounds"); return reply.value(); } void SystemDispatcher::replace_sound_file_qt(QString origfile, QString targetfile) { systemiface->call("replace_sound_file", origfile, targetfile); } void SystemDispatcher::restore_sound_file_qt(QString targetfile) { systemiface->call("restore_sound_file", targetfile); } void SystemDispatcher::restore_all_sound_file_qt(QString soundtheme) { systemiface->call("restore_all_sound_file", soundtheme); } //----------------------------------------------- //-----------------------monitorball------------------------ void SystemDispatcher::cleanup_memory_qt() { systemiface->call("cleanup_memory"); } //----------------------------------------------- //-----------------------others------------------------ void SystemDispatcher::custom_plymouth_bg_qt(QString plymouthName) { systemiface->call("custom_plymouth_bg", plymouthName); } void SystemDispatcher::add_new_plymouth_qt(QString customBG, QString plymouthName) { systemiface->call("add_new_plymouth", customBG, plymouthName); } void SystemDispatcher::readyAddBootImageToList() { emit finishAddBootImage(); } QStringList SystemDispatcher::get_existing_plymouth_list_qt() { QDBusReply reply = systemiface->call("get_existing_plymouth_list"); return reply.value(); } void SystemDispatcher::plymouth_init_check_qt() { systemiface->call("plymouth_init_check"); } QString SystemDispatcher::get_image_path_qt(QString name) { QDBusReply reply = systemiface->call("get_image_path", name); return reply.value(); } bool SystemDispatcher::delete_plymouth_qt(QString plymouthName) { QDBusReply reply = systemiface->call("delete_plymouth", plymouthName); return reply.value(); } //----------------------------------------------- QString SystemDispatcher::showSelectFileDialog(QString flag) { if (flag == "bootanimation") { //选择开机动画 图像文件 (*.png *.jpg *.gif) QString bootfileName = QFileDialog::getOpenFileName(0, tr("Select the boot animation"), "", tr("Image Files (*.png *.jpg *.gif)")); return bootfileName; } else if (flag == "soundeffects") { //选择音乐 音频文件 (*.ogg *.wav *.mp3 *.wma) QString musicfileName = QFileDialog::getOpenFileName(0, tr("Select music"), "", tr("Audio Files (*.ogg *.wav *.mp3 *.wma)")); return musicfileName; } else { return "/ubuntukylin"; } } void SystemDispatcher::clean_history_records_qt(QString flag) { KThread *thread = new KThread(tmplist, systemiface, "history_clean_records_function", flag); thread->start(); } void SystemDispatcher::clean_system_history_qt() { KThread *thread = new KThread(tmplist, systemiface, "clean_system_history"); thread->start(); } //void SystemDispatcher::clean_dash_history_qt() { // KThread *thread = new KThread(tmplist, systemiface, "clean_dash_history"); // thread->start(); //} void SystemDispatcher::cookies_clean_record_function_qt(QString flag, QString website) { QStringList strlist; strlist << flag << website; KThread *thread = new KThread(strlist, systemiface, "cookies_clean_record_function"); thread->start(); } void SystemDispatcher::cookies_clean_records_function_qt(QString flag) { KThread *thread = new KThread(tmplist, systemiface, "cookies_clean_records_function", flag); thread->start(); } void SystemDispatcher::clean_file_cruft_qt(QStringList strlist, QString str) { KThread *thread = new KThread(strlist, systemiface, "clean_file_cruft", str); thread->start(); } void SystemDispatcher::clean_by_main_one_key_qt(bool garbageFlag, bool traceFlag, bool cookiesFlag) { QStringList argList; if(garbageFlag) { argList << "1"; } else { argList << "0"; } if(traceFlag) { argList << "1"; } else { argList << "0"; } if(cookiesFlag) { argList << "1"; } else { argList << "0"; } KThread *thread = new KThread(argList, systemiface, "onekey_clean_crufts_function"); thread->start(); } //------------------------------------------------------ void SystemDispatcher::set_cache_args(QString str) { cache_args.append(str); } void SystemDispatcher::del_cache_args(QString str) { QStringList bake; int len = cache_args.length(); for (int i=0; i< len; i++) { if (cache_args[i] != str) { bake.append(cache_args[i]); } } cache_args.clear(); cache_args = bake; } void SystemDispatcher::clear_cache_args() { cache_args.clear(); } QStringList SystemDispatcher::get_cache_args() { return cache_args; } void SystemDispatcher::set_apt_args(QString str) { apt_args.append(str); } void SystemDispatcher::del_apt_args(QString str) { QStringList bake; int len = apt_args.length(); for (int i=0; i< len; i++) { if (apt_args[i] != str) { bake.append(apt_args[i]); } } apt_args.clear(); apt_args = bake; } void SystemDispatcher::clear_apt_args() { apt_args.clear(); } QStringList SystemDispatcher::get_apt_args() { return apt_args; } void SystemDispatcher::set_software_args(QString str) { software_args.append(str); } void SystemDispatcher::del_software_args(QString str) { QStringList bake; int len = software_args.length(); for (int i=0; i< len; i++) { if (software_args[i] != str) { bake.append(software_args[i]); } } software_args.clear(); software_args = bake; } void SystemDispatcher::clear_software_args() { software_args.clear(); } QStringList SystemDispatcher::get_software_args() { return software_args; } void SystemDispatcher::set_package_args(QString str) { package_args.append(str); } void SystemDispatcher::del_package_args(QString str) { QStringList bake; int len = package_args.length(); for (int i=0; i< len; i++) { if (package_args[i] != str) { bake.append(package_args[i]); } } package_args.clear(); package_args = bake; // package_args.replaceInStrings(QString(str), QString("")); } void SystemDispatcher::clear_package_args() { package_args.clear(); } QStringList SystemDispatcher::get_package_args() { return package_args; } void SystemDispatcher::set_browser_args(QString str) { browser_args.append(str); } void SystemDispatcher::del_browser_args(QString str) { QStringList bake; int len = browser_args.length(); for (int i=0; i< len; i++) { if (browser_args[i] != str) { bake.append(browser_args[i]); } } browser_args.clear(); browser_args = bake; // browser_args.replaceInStrings(QString(str), QString("")); } void SystemDispatcher::clear_browser_args() { browser_args.clear(); } QStringList SystemDispatcher::get_browser_args() { return browser_args; } void SystemDispatcher::set_kernel_args(QString str) { kernel_args.append(str); } void SystemDispatcher::del_kernel_args(QString str) { QStringList bake; int len = kernel_args.length(); for (int i=0; i< len; i++) { if (kernel_args[i] != str) { bake.append(kernel_args[i]); } } kernel_args.clear(); kernel_args = bake; // kernel_args.replaceInStrings(QString(str), QString("")); } void SystemDispatcher::clear_kernel_args() { kernel_args.clear(); } QStringList SystemDispatcher::get_kernel_args() { return kernel_args; } void SystemDispatcher::set_onekey_args(QString str) { onekey_args.append(str); } void SystemDispatcher::del_onekey_args(QString str) { QStringList bake; int len = onekey_args.length(); for (int i=0; i< len; i++) { if (onekey_args[i] != str) { bake.append(onekey_args[i]); } } onekey_args.clear(); onekey_args = bake; // package_args.replaceInStrings(QString(str), QString("")); } void SystemDispatcher::clear_onekey_args() { onekey_args.clear(); } QStringList SystemDispatcher::get_onekey_args() { return onekey_args; } void SystemDispatcher::set_largestfile_args(QString str) { largestfile_args.append(str); } void SystemDispatcher::del_largestfile_args(QString str) { QStringList bake; int len = largestfile_args.length(); for (int i=0; i< len; i++) { if (largestfile_args[i] != str) { bake.append(largestfile_args[i]); } } largestfile_args.clear(); largestfile_args = bake; // package_args.replaceInStrings(QString(str), QString("")); } void SystemDispatcher::clear_largestfile_args() { largestfile_args.clear(); } QStringList SystemDispatcher::get_largestfile_args() { return largestfile_args; } int SystemDispatcher::get_the_record_qt(QString mode) { QDBusReply reply = systemiface->call("get_the_record", mode); int value = reply.value(); return value; } void SystemDispatcher::clean_the_browser_qt(QString mode) { systemiface->call("clean_the_browser", mode); } QMap SystemDispatcher::search_same_files(QString path) { QDBusReply > reply = systemiface->call("search_the_same", path); return reply.value(); } QStringList SystemDispatcher::search_largest_file(QString path) { QDBusReply reply = systemiface->call("search_the_large", path); return reply.value(); } //------------------------------ void SystemDispatcher::handlerClearDeb(QString msg) { emit finishCleanDeb(msg); } void SystemDispatcher::handlerClearDebError(QString msg) { emit finishCleanDebError(msg); } //得到下载或者是操作过程中发送过来的数据,在显示在进度条上之前处理优化下 QString SystemDispatcher::dealProgressData(QString type, QString msg) { QString info = ""; if(type == "down_start") { ratio_sus = 0; } else if(type == "down_pulse"){ if(!msg.isEmpty()) { if(msg.contains("download_bytes") && msg.contains("total_bytes")) { QStringList process_value = msg.split(","); if (process_value.size() == 4) { QStringList download_bytes = process_value.at(0).split(":"); double download_bytes_value = download_bytes.at(1).toDouble(); QStringList total_bytes = process_value.at(1).split(":"); double total_bytes_value = total_bytes.at(1).toDouble(); double percent = download_bytes_value / total_bytes_value; QString cur_status = QString::number(percent, 'f', 2); double trans = cur_status.toDouble() * 100; cur_status = QString::number(trans,'f',0); ratio_sus = cur_status.toInt(); } } } } else if(type == "down_stop") { ratio_sus = 100; } else if(type == "apt_start"){ ratio_sus = 0; } else if(type == "apt_pulse"){ if(!msg.isEmpty()) { if(msg.contains(",")) { QStringList process_value = msg.split(","); if (process_value.size() == 2) { QStringList status_value = process_value.at(0).split(":"); int value = status_value.at(1).toInt(); QStringList action_value = process_value.at(1).split(":"); info = action_value.at(1); ratio_sus = value; } } } } else if(type == "apt_stop") { ratio_sus = 100; } return info; } void SystemDispatcher::handlerRemoveProgress(QString type, QString msg) {//remove package or old kernel if(!type.isEmpty()) { QString info = dealProgressData(type, msg); //操作过程中把数据给进度条 emit sendProgressToQML(type, info, ratio_sus); } } void SystemDispatcher::clean_package_cruft_qt(QStringList strlist, QString flag) { KThread *thread = new KThread(strlist, systemiface, "clean_package_cruft", flag); thread->start(); } youker-assistant-1.0.1/src/image/recyclebin.png000644 001750 001750 00000000423 12312451003 022034 0ustar00saucysaucy000000 000000 PNG  IHDR îwtEXtSoftwareAdobe ImageReadyqe<IDATxb?01@)@1Efydi) @) )L'T  !L*M@`  @dl` :X$Sb.@ 5P#@`̀  O(; µ0" jN@ |aMIENDB`youker-assistant-1.0.1/src/image/logo.png000644 001750 001750 00000033403 12312451003 020661 0ustar00saucysaucy000000 000000 PNG  IHDR`YtEXtSoftwareAdobe ImageReadyqe<6IDATxڌkQ?owk6jEJDbAol)Yw*>is'G_/UCÖ́k|AڀQOo)ػf߭L\6#݃4֠ ?rnlu\xA}o2U>7yޑZ*&h':68>|h1EǔE3#=>#Zy+OItfrs}/CQƟ*U"$47 XLE$b/H eJ >iQUZ}\Lpo9>;@DaAq}9I4~SOlB^Uƀrx>Ń݊o7k`.dNW )_a;dX~nt lqPv,fr͏HwKH`*00\T#t(`z"K|(E/Q <[8=%LMGpc8p)kDEd2ii1I R%? u΅YqFQt!JW.,EDQ (Zb> dLs?sK\yJr\@?$hJpINufE?Q'6vzRF7뜱]v9 sqjIY!lf-â69?桖ϓ`840_S'>V%hh.?+ҋ"jĊAiuub6[ɣX4Dcƴ˦$Ipnr6mlҰP?%W}b%.,/2 xwNS,EܗGEN$F}30Yݡ M%a %`< 9S͢܍k'Q5VE!ߙ'|e@Jgc~Xp ('!Á|շd,‘ u3H wKJ!U%FwesjvbmQUQtͽt:;IX ( DۯFXL >?Dc1&I|X%1$F< HViPvZ׽3qst:$'wkpݬF1;PC+q%ׯ,袃*Ai[1znf,n5" ƹ.B f~dMKIӲdRJ t[0hu!^7b{slF{c@vq!dA{ʩ:>׋NN@f?"Ǩ@.ӎ-f{~S=c{j\j΀|oOݵXD¦BHLdsRr%-k?AurMk 1_$ɢin6'hM(J*-+ ih}\.udm 6Edht ~E3+՘*Un4WO&U>O"8 šhHd<%>tgzZmYR3}М>HEiTmJO*8%J*}ȉMŤ+#;@ קJٮSn?J?<{o>RܲΞ*:mT2m!w {YjrjK513[(.a;xk05THIAcL KJO֠ސ7 2ux/p.my-5__.xmO[7WfvWB)BvB]޽H'F vץ7*0fzg^>,z$KNdY%3}#5'k]OB mÉfC\H E^1Ga=ZMQ]KQqG`rt,Ix.TfLˌ54x!3@ix/aVJZpf@1Fχp:I mm1[/wO؝:[4mCy&Ũ]|ViDi"q9 [77cr,F;.37+<6X'\G66M R/;RHBQVt)B7Z,DgVc.09W(. k}^Wr]JyfscIX~lOrb }o 5g*h禎!>DUGe_5PiT|p}J֒NP*$]ffA2-u6nPx(Fko%߾ׁ#rW@Y]NDw}S438X;J0Ӆ4]?IZ`"K R ( rwو =?ůUFX>n Pm0`U|WpJk0HBZ[wgqSSqS[ڍߎ;-vD>1t~w]G ":&-Y+e )| xgDg.r,†d<1&[ ?QȜr? D԰6M.޶x BWG{TAT E'MQ}3XZ&>G[]@ 2sQ7F[; ?~/PWIYʒMN ](:MWRhGY7Z#meسkjəUeԄ"+Zd m^[BA`FN-$÷CVnq3R:(=1QNk'4)^'<%hoVl?q"| r/Ӆ{]R(#t]2R:\}֕X.@u>Ur i6"4k>Lg Dž`cӧoK ٟ@CҤXkt/%3ˣtjn<5_Cׅ6v 9M *&DJҾ$ - A]6ho}4RUc՛ |-8#O?2߼5HuSS,hx`_6hX)Cҧ'wv(םtK" 9sEA\39.`vAp7uG^rYC>۵٣~iamy` qޢ"ppZ5C5hKoiōMYegYRIU>v +WI _ڀ8[a&} lCצ"Rnu|o"iMqZOwnMO`_k |]Y`YN0,uEJ[ 7B,Rn"`r''zgll𿦫܌+8gn}M'JJ>ڃىim^,+HWm+hCQQd%o!2b0_$܉ &,%;/1yrw!YązO5s PRV0D=U};xX` 9А[.+3DP TOuj8tu p8Z̯H`7,^ ^vS"VjGC~!v-!h %hM t5  Ճ*$ί_iԤU Dx\l\_D$۰~ƻ0]Ґ((D=*MV:p%5h=!vrP$ P3#r!^xw^|sS݆) kNOv!ht"Q;ȝ|fT<':+C;O֎!dCz߁ˑdх6X%ٚ4-k>o_ dQy*KrmΫ #X(^M'gjb2!l 5 B~L ?-'SPZuG1} 8!<Dn`)Y#_[ zHϼ2MEBq F5F ]F 7G&6SSŕ6﷡1@ u:.8׀2"iHD+{G4lݴ+_B) :.Sp?st(2Q.gwL0MpFuckV+<9 ۮ؆/?[*nhp0s=rGےjUyKGKeIIYw.p4+ex.\ÖhJDMsbj^f `$6ǡB/ʅ&FeO2E4)Se ڻS, kbqˇul&ZX-UhxHq*r%Z'K mx ;cvZPKs3gO?zDnMpx.;oFXjS.^Oi㖛 }uNNX +!te)kBHj< ?? `>y:KqI>w|赈ͻ QL&FF98*2YT7j&-ڬT'UmClq2TK%nKl0'N8w =5B]\Sa7"sh||vF);gv NSV ";^?|' rqUtiޞR-$tʿd\umsc#nyx`do `wQQLr|-?,͘J-U U X#u!EO22 o*r.ڀ䰟x^y3X;=dn|vB h1| Шܺx`m1~L uF4)B+~XZ(#mFerʎD(wHMO`>$CsbX6>Y _}_#Zߚf~>/?׵ >UٻQֱv|ԮKϓnnN Ę$nKyhg٬w-ӂY q|*ÒOXx0W2i ?d#銫sru^,Zi24zeFҷo|qa)-_p{!Y,v#}AM2(za!F@Cgz:_;<O4 ݃3p{ݑ Յ+Ո &>?h"s Bh u8"Ĵw=Zgc> 94T$V**H\.t7;O_Z ?ë+#3|#L_t6` fzP_v ?ڻ 9u=3;j/VB  J3XC%E); ! c &1`@ JZ"iٹ=ofgpWNNo; hxU+[^dDR 1qMol a= UnYL޵9zn>ƌ)ݕʜL>&өrKP%DB)ABڴ1j\*"*]&r%pR`c&4)lF0.Tf'3Yt v-8#ԟ?Cdx} YDuH1^X9ݟ_POƧL*HcK9ڎ2[t!'$:_s&\:<#ӯ@xTQ8) ^X 8cH#gqL-=׸ƒPg`]ÿ \䞍2XcKNit"Ng$L, FQф`YpU m6"Fڌ6eQLJ`Cƴǎh+mXҸ ̾Fv0t\Ql֏ h>mk&}z.F[/Sq@ Pu> M3vq [$ 0;leH6;mgnA-*_`fiѸy ҝv\3] d} a4|6}$Mq9Z⎅fPMd+䧪M4|ϋxsQy-#W7R)D^"{2eώ]Y6,R)%%.=-T5%+كফ`&7یOUYySkFT=!7E` dCD:H.;,XW7-Uu,X*Pe8IICi/934~Dzz.!~ r MLG6t<<t" Yoa軀dҩ}f9 5I@.i m*l^CwOFK|S+" Í嵀bW)܌oݷi4Y hmT&\ɬWchV{>~E ~@ ]GeU zKƘc1W9`FDʇ܉dT+UhF(TNC Z L ]XP,\!],[q6A)6?ItO;3.EL{2yY%2nvtyR ~ű@ hX8D  fE}9ۅx]32T#O40.N?e,?sA ͋?QMT =IW'RPÆW6zHF`GC- 0&8_?\?6]Yrbƨ1!jj'/TgBLt&BR\] PTe\>z\dz RVnh!!nMxQ2QT1"2kN-3a }D;*7beoԧO=k@rk񵍵MWc{?a] 8yOl , "BF|!0f`Qd-G> yьbSzYowE¡Xi,NEӽ!?MaI6 0a8<5[KB|ͷc7Hs=P…2Mxt!0Ji2l N=*.Wc-~FG\K] ȑIOq!̀7N> 7)I?k);9cx 7ws.`JJd~?)tT 5d% H{:ή"7ynC#3<"R=Rxfhva4Kd$Xd` MR7*Yl2gg`eӈKnD._-.)UXHeaSmM%{j1"")w >8B84,&lyFLMMohB ܴIep`f$]Pb,z/s@ h'>ɬS\(It^14KOel7]+^P&5&uHIj~ĖZ-084t5͜\9N9&TUE/F<ɗH9%M?0c[} 7#@( dbߋ]B g-xcrFұ{r%\jEmhrAFPBO#zX u8EY"dLUyE2DK?U7is9 _:>nV}8_oc\>oX݌:ݐ( /cI8kJwvٮ ơœz?P!+Kj"˦C,HP0?q:5xʇXkSneiM(~25~ͭmMSπŊ0VsaX+QA^az|a 20ʋpqpzY1Lhm_IɎMq=Z/\"  c7pw8C9D#y q0xx%X.'67Qe%Z5lجpGb=F%f)}Rؔ+ڇê7y"=G7DO>M VGm9|#CoE_/ˠA'["RPF@$֚kEJnԵ,i1}ɼ|Q]Ve<:jXu9AI^7DrRO@!׉xjV=8ڧe__q--S(ֈ>C*o`!qR.ʛ>[a/y. */ #ifndef HTTPAUTH_H #define HTTPAUTH_H #include #include #include #include #include class HttpAuth : public QObject { Q_OBJECT public: explicit HttpAuth(QObject *parent = 0); void sendPostRequest(const QUrl &url, const QByteArray &data); void sendGetRequest(const QUrl &url); bool isDigitStr(const QString& str/*QString str*/); signals: void error(int errCode); void response(QString id, /*QString level, */QString name, QString score); void refresh(/*QString level,*/QString score); void successCommunicate(); void failedCommunicate(); public slots: void replyFinished(QNetworkReply *reply); private: QNetworkAccessManager *mManager; QUrl mUrl; }; #endif // HTTPAUTH_H youker-assistant-1.0.1/qml/img/logo/Manufacturer/GIGABYTE.jpg000644 001750 001750 00000013175 12312451003 024204 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1! q"B$AQa2#D34%rCcud5EUF   !1AaQq2"$B4R#3Td5rҤ%Ee ?y6bIGrma(m`Mr4GɄFk{n+ݺ7QS:ʪ<⊛W shÆa Bn |=yQ,,>NrTͦRGZOL<~0N`ĝHg]oYkӏQx->9j(~yт%fEq#WIZJuSHzuHJ N@0}(0*`YbX0h ˰L 960o }E`,kN+an%jѮrggT7`ST2> VǺ)!LG&$'˽|פI@-xJ7T,o7`1@dSr1Z&uK\҄ewԕcNK'9 ϏrQL11=ueY*SAŵyi퍨C-@tzV>֖gJ5b K?ьث^KFx+P7bWs UP_P!Djk0 DGqRXIf "0ڲJX̞ =4[4W6jT-Gu{|.[umTm'UATZyd)91圶ˀL$ ^%=˔ʵTP F-Z$N)+(P%Z4u*VS\Ŧ@qcsO+0 ˰م!o}] {]8qOL>L*7HG/֤ޤ貔MYu*αxA9!P o{oX-QE"3BdorcZ>i15@4P?^WVZ=__;]jɶ)e"1Cqlx㱖Y[f#ȘC\DʮKLJ4xsoeG-]NXѨ7iss&Fu}nrZ{YBBO7Txy[0ǘ4N+ԗִS=%i9.O,< >Xk5IZt iEivnѸ'3P4st`0SO/Zl+7<@ 9R-5`o:=:ycnBe Zh60xs0Ę\v=X|>f$֓f&}AJ7|\PWׅ~73mBTLږ0׭nn5?b)^R)44n黢vfF-sXD96o{X{ZPұVߜgY,*G҉EfN g\/ްlq遑xlm0k{nMj71tUǭy Da*dҐxv^ k)|]&2CkidDBw^hUʻJ`0h<1DD[K'slMi$st#G WVO0YmtؤgP˓Z{˥-exn>C2erY 9NHu] _- !>>:OwA,3hcE*n"9TQHm^LUɇd CL z6@oZ/ zzz|>f+5هɁG&FRUg0vǻv|'ٿv :8z>93?7|15 '~RI˸c;v{2|Aœ+ڷB׿ֿxיg|Iq/ScvoХ1w]n6zm7gxu'q{q:޽b^M_>F6&|.ccX-ٽX;5T|⮬[#IWtӉA巳g6sCMٷxamB?s˝B a{sc컹_ofzx״>UuOKk'ɖ'r~{ܵ + Dl|+/`=x3n+_W}k]"De;Y"Aa!?^%Fi7R"@_ =Z'Ik&Ef%Dc*Km+Lo,Mp-Or-Nq*Ij.Ps.Or*Ih2Uz-Mn0Qt5[1Sv%?Y4X|2Tw1Ru3Ux2Sv7[2St1Rr5Wz/Ml8\5Vy6Wz6Xz5Vw9Z}:[~8Yz>Yu*@իXZcUNU9vCٳhӪ]V׫SugnݻwG =F Lꮩ+o!E1˘ӇRDJ9.C;TWCsQIgNR}n]:lG| bpGF\8>UԩSsԩsjP;t!C t|"JSU(q u 1pB 1l>t OGxl<"hb$賃r|rA #dlj"BʐH&D*|F ;D8#x ?p8󰒊+C9,+n&,d"4VA /@"眬+GH<, <!`ƍYC>`"0qʬK,R2IF-0%dpbT@.S+ă+ȭQ*ఞ 6 x@&3"~RK-HR =~ ;0'8@ `*HxA,TG.B .B!GP.g -& #)H 2!J(AȠ>s9.+/`҂mt x:ԼԌƧ%`e J | `|'ߴdK"Ā} + d,B)8 ILb.lr Ath [4?N,1 o.f: S _ S/,d="I*0 ]oJ: Z:6Ur ? E1 D*qd"@ "@ 6qC48p 0ԑy„81z _qOX 0X8b6|!Jl$2qEZ,'\P`L/foH 8+VbKx"_#%(B&D8,Qo87O@TGZ PB!Q (4$11LbD1AB=!WB8 AVZ>bz01vb&p#A%z~؅,p ]@8A&paMB0Nd (0vdg/AC3aC>40J/ g§΀jQ {`D DP!,=D":CPa&MlLO &B74vYf8J.iUG>qC!Yf$ⱎ p @8D8#Qf4;{Kƈ2gψ0*Bx~&E`~x- Y<Q1) ?@~0#.AFXDx^(<"[}D"E`CD=|V䥆0~|"ˈbFj0#-E0D֑tMȂ"`BTh"`. 0 .F6BrG-!fLdCDqipr gH9d&3H#0h& E4bx9( OT\4f!fAka5|[%4 %$AҖ.s5mB #}_ "xQi@"ЯkMЖ~qd VQo3a2:ְ§ Lƀ kٜε#1fZ~-dleF2 hh/{ГD*!ajk# m;|v;youker-assistant-1.0.1/qml/func/common/TabPage.qml000644 001750 001750 00000001437 12312451003 022376 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { property string title:"" Image { id: myimage source: "" } } youker-assistant-1.0.1/src/locationdialog.ui000644 001750 001750 00000010437 12312451003 021462 0ustar00saucysaucy000000 000000 LocationDialog 0 0 329 195 Dialog 20 86 211 31 true 10 47 321 31 <html><head/><body><p>Please enter a city name or pinyin to search</p></body></html> 0 0 329 195 border-image: url(:/pixmap/image/dialog-bg.png); QFrame::StyledPanel QFrame::Raised 216 157 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; OK 101 157 94 29 border-image: url(:/pixmap/image/quit.png); font: 11pt "文泉驿微米黑"; Cancel 8 6 26 20 240 87 81 31 border-image: url(:/pixmap/image/quit.png); font: 11pt "文泉驿微米黑"; Search 30 30 1 1 30 30 300 20 华文细黑 50 false Qt::AlignCenter 30 30 1 1 frame comboBox label okBtn quitBtn btn_close searchBtn loading loadingText loadingDiv youker-assistant-1.0.1/backends/youker-assistant-daemon/md5sums.txt000644 001750 001750 00000001755 12312451003 026045 0ustar00saucysaucy000000 000000 -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hash: SHA256 985e92d15d5eb7d82c81fbdb48c8c913cc4d2c5443a0140c2684ac0442016a82 keyrings/ubuntukylin-archive-keyring.gpg -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iQIcBAEBAgAGBQJRkdmfAAoJEIgg/wzr2l1BHswQAMVJ1zNWrs4SNqyuv/aySk23 JkdFAsa3s3CawmVR9KSX99TChk0K4saqDBi3cQahNzjmUZl9fVELwTUcikYmC4Wp xhCRA4e0vDTgcDzaB00ku2wE1p0HXDGtTUCnZ2cO/oMM5+4+zokcP3xjpkJaT04r +RLte67/KE1YqWZMplpZJkLmB61OXYopBAnjIuOfY/qu5dcwDqYs99mMCsZcVh2E m9Bl4EejaemIM/KCssnZA6kpoaH6uOOd8kJwpRHveTmuYoJ0upWOunQkt0i45SwI QGKrep7Z7MQyl+vVVKhiV1ByBazrSLTiejDucvXEljmxRbp1FP8JYZFdA2tJZrKQ 71YrIyW12wSSsC09QiWhGMWtdNDcAEuAjjfPwFQF+4dW3RjdQ4ze74enYMLJVCVe ozLO/UorD64MdsKNvYNdrzJPKHAvJ58lbSuNXt8yq/FMuDjkFG0DDlTCenHWH2sb tzTAcE/UPHqXxG7fihOWl76mNjILwsL3TzCM88Q2xhiZS/H5aS5fWkMgQXNYH0oj 1vHq6IrGjlTf5QH4Z3EDgXIPE89d1AB0uFos/0yv7VOoM0WBA9jaM2rStKiloAI0 52vc2yk5Mi6dSi4GMsK4GMkkxjpDHpVqRC/OzRFr+YdG6on3UKdzuahNy1h4N0ZO PSTcs7bjOU4Bv575Olzo =VnxX -----END PGP SIGNATURE----- youker-assistant-1.0.1/qml/img/en/title/home-active.png000644 001750 001750 00000007137 12312451003 023346 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<IDATxbO,_a,dx?g)PA}y^c6GҲ?79o2lC×O=WVyk.âs9ef>쵓k @tpnB w'˿"/}HN.b9oFfV.by3#$> 3ÿtD.<}'/VOLLL`XOᖊ<FbyϿ'0!)jS_m"_M];_ " `E @"N[޹wGLQNDh?w io|N y|ĞRӺ`9mR2n_LtS";Q/gg]}8-'wƼ oҟ-`"?Wf6. b$9X~n?>Z"&7+ï?J5ْ~$6yi.ZAh^2|EO ~`5@d!;+ ۑO KȈJY(6A>egw. zJ&4>ʪ~,gqc.j_;>4Ċ Tϧ @{}Az(e/?Ai'У%ZRy#.bԞ}p叚=Xv1|I|<9u5~^u.bHw:}՟A,I>pL616f b[>26@5ƂI˯ j:y-+osr`!b ޚ|{o=K$W9mI58I!A||&7O@_"߿ o?b 83ܽyM3{Bt]:Wc6ȋm%n2IZw֫>~?3QϵIt;p_~Kt+{gM01+ ;3+Pn%nqjG*?#(!qOEE7QQ|S S  UTR~KBg\|7IoekE*ao4 bcH| ,; ^/pz 9fDי7b)i]bep%ƃ ąh^DM\j"'傉!!qIhjDZB0=M}{K׏z"!h=@IQJj߮[{A "Sm3(@%Cj{o?g>%+=2VmB䍄dvUָM%L )蓘"/[_ ;$ͤ_x#xl@#= Lb4H *!t/zA ͟v D?wb~uzܽBqHA-׻,tRD}_yac+C`4Kk4PiUPBڗ>CҋZzAQVhmhJ溻ݹ]%i#f{`ٙ3g[hŅX`t-BԳG3j(;Ld qj+XWѰ4ۧA$v優7eLI53C`G67~n0i>͞9pXQ|!Ȳ,Y ,XećT!5w(N* &<[Nm_^dT0wK^ۻa]LqJY^bЁ}H_^@9>trd`c0֝^WXgLbf1]6Σ=J!;Fdz[ͤæt,F+ap/IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/ccm/000755 001750 001750 00000000000 12312451003 027040 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/icons/checkbox_seclect.png000644 001750 001750 00000000550 12312451003 024015 0ustar00saucysaucy000000 000000 PNG  IHDR tEXtSoftwareAdobe ImageReadyqe< IDATxb?01@@1EϺYⓖA4\  X?2ުR _~`4CBF 5g#mX{,!>D'Cp{JWs@)c~zoxp e~w,ȦN L `/CzA-FMc::|l.鴗_%%Vy?IENDB`youker-assistant-1.0.1/qml/func/common/SplitterRow.qml000644 001750 001750 00000014101 12312451003 023361 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import StyleItemType 0.1 import "private" as Private import CursorAreaType 0.1 /* * * SplitterRow * * SplitterRow is a component that provides a way to layout items horisontally with * a draggable splitter added in-between each item. * * Add items to the SplitterRow by inserting them as child items. The splitter handle * is outsourced as a delegate (handleBackground). To enable the user to drag the handle, * it will need to contain a mouse area that communicates with the SplitterRow by binding * 'drag.target: handle'. The 'handle' property points to the handle item that embedds * the delegate. To change handle positions, either change 'x' (or 'width') of 'handle', or * change the width of the child items inside the SplitterRow. If you set the visibility * of a child item to false, the corresponding handle will also be hidden, and the * SplitterRow will perform a layout update to fill up available space. * * There will always be one (and only one) item in the SplitterRow that is 'expanding'. * The expanding item is the child that will get all the remaining space in the SplitterRow * (down to its own mimimumWidth/Height) when all other items have been layed out. * This means that that 'width', 'percentageWidth' and 'maximumWidth' will be ignored for this item. * By default, the last visible child item of the SplitterRow will be 'expanding'. * * A handle can belong to the item on the left side, or the right side, of the handle. Which one depends * on the expaning item. If the expanding item is to the right of the handle, the * handle will belong to the item on the left. If it is to the left, it will belong to the item on the * right. This will again control which item that gets resized when the user drags a handle, and which * handle that gets hidden when an item is told to hide. * * NB: Since SplitterRow might modify geometry properties like 'width' and 'x' of child items * to e.g. ensure they stay within minimumWidth/maximumWidth, explicit expression bindings * to such properties can easily be broken up by the SplitterRow, and is not recommended. * * The SplitterRow contains the following API: * * Component handleBackground - delegate that will be instanciated between each * child item. Inside the delegate, the following properties are available: * int handleIndex - specifies the index of the splitter handle. The handle * between the first and the second item will get index 0, the next handle index 1 etc. * Item handle - convenience property that points to the item where the handle background is * instanciated as a child. Identical to splitterRow.handles[handleIndex]. The handle * background iteself can be accessed through handle.item. * Modify 'handle[d.offset]' to move the handle (or change 'width' of SplitterRow child items). * Item splitterItem - convenience property that points to the child item that the handle controls. * Also refer to information about the expanding item above. * Item splitterRow - points to the SplitterRow that the handle is in. * List items - contains the list of child items in the SplitterRow. Currently read-only. * List handles - contains the list of splitter handles in the SplitterRow. Note that this list will * be populated after all child items has completed, so accessing it from Component.onCompleted * inside a SplitterRow child item will not work. To get to the handle background, access the * 'background' property of the handle, e.g. handles[0].background. Read-only. * real preferredWidth/Height - contains the accumulated with of all child items and handles, except * the expanding item. If the expanding item has a minimum width, the minimum width will * be included. * * The following attached properties can optionally be used for each child item of SplitterRow: * * real Splitter.minimumSize - ensures that the item cannot be resized below the * given pixelvalue. A value of -1 will disable it. * real Splitter.maximumSixe - ensures that the item cannot be resized above the * given value. A value of -1 will disable it. * real Splitter.percentageSize - This value specifies a percentage (0 - 100) of the width of the * SplitterRow width. If the width of the SplitterRow change, the width of the item will * change as well. 'percentageWidth' have precedence over 'width', which means that * SplitterRow will ignore any assignments to 'width'. A value of -1 disables it. * bool Splitter.expanding - See explanation of 'expanding' above. If set to true, the current item * will be the expanding item in the SplitterRow. If set to false, the SplitterRow will * autmatically choose the last visible child of the SplitterRow as expanding instead. * int Splitter.itemIndex - will be assigned a read-only value with the item index. Can be used to e.g. look-up * the handles sourrounding the item (parent.handles[itemIndex]) * * Example: * * To create a SplitterRow with three items, and let * the center item be the one that should be expanding, one * could do the following: * * SplitterRow { * anchors.fill: parent * * Rectangle { * Splitter.maximumWidth: 400 * color: "gray" * width: 200 * } * Rectangle { * Splitter.minimumWidth: 50 * Splitter.expanding: true * color: "darkgray" * } * Rectangle { * color: "gray" * width: 200 * } * } */ Private.Splitter { orientation: Qt.Horizontal handleBackground: StyleItem { id: styleitem elementType: "splitter" width: handleWidth !== -1 ? handleWidth : pixelMetric("splitterwidth") property alias pressed: mouseArea.pressed property bool dragged: mouseArea.drag.active MouseArea { id: mouseArea anchors.fill: parent anchors.leftMargin: (parent.width <= 1) ? -2 : 0 anchors.rightMargin: (parent.width <= 1) ? -2 : 0 drag.axis: Qt.YAxis drag.target: handle CursorArea { anchors.fill: parent cursor: CursorArea.SplitHCursor } } } } youker-assistant-1.0.1/qml/img/zh_CN/wizard/start_press.png000644 001750 001750 00000004725 12312451003 024274 0ustar00saucysaucy000000 000000 PNG  IHDRt fx# pHYs   cHRMz%u0`:o_F [IDATxb?a]G&H0<S?0 s1vAI(޻E  ޭo O?e````r.Λjb!,FlTc````nPË{~gFl~ b?'QG.GDkc`ee~)$H!A~),H&' ~o??MUAex7_O10000XfxÝ7 9 ~R_ӌ( ϡ gk b$NDl ,>'I+/8Y%~Nl R ,&J*/c[ư \Tz8"-򢝁Aˌ޻E  ~fWcxy7ۯ?e+]pB~V)381yOe`/Q 矎4eXu1;䖽KBaDZYf ERZ6G  Nm ---- 9e.^I]?}oeD)QPp4SMw:eg̹Nr>OC>Q)Vf(Vx˸ {1|74= P!GV/~vQ+l0%j5AoJ#OPBGH!t|QRJC (גI)!:j )T llZ}hzqVQ]RU0pr@bR"z QVU a&A }"юJiO­KY:1FMii# 䘻kSq?yѦjRt.}\ .vr 88*ԭ9Ak54%${rMCH99<9sK|NhG$Z,hv/71b+KNkXer>c.Z W!$~'fb.2U}!amKaUe#r Ui2gjO$p1v/l)ճQ1EL{sZPri2 ^jS'nGPQg3G6jUp;P s:~jeD* 8A$瞰ǗRe]ED[ *sd1 sN;*X_zqx،!gc3j鶻AV F|uZau2Z2<6r:q\d 6N=o }<^#^?NvA@# @56(j{{Ս]H'MCM*qiA SV**%čS{iǒ '"q@$6nU !P\Rۉ:_Jewz:NVJ8}{v̼o{.!dX>Ei6;vV4SHm_2V˕_N?V+tiG13!ao Ank {R!2o0q3_8Zzq9hޗ $S3fQ/ӥEU:GhFYyg #T<{Ȟ[DCvbL72GFO0)j!auFLwqeωW tkǸ` ! J$Kscaw0Tl2ЉiP(=>4E>f[ןk].j&B:?yhz`lb)i 17ߐU'eY<>_׾Xq]{|X=tld.SuESlyQ!677+]%Wa4c?yQvJ;3@kqv@g=f`Ao?g.ibJq:w0K+. i-/ܒqIuGy w?\M y+V ,\=m}{jXT-ЍSD|FDn؞WqD뻰O*[]z"q= c+ .l1.},_8)&}SR$,H/_ Y+M#ua_ml)N,|nr=} ]dD^kW%Kܞpq%Eq%U*/|ydCDݡB h~iB 4ϡgR `J}EIENDB`youker-assistant-1.0.1/qml/ToolBtn.qml000644 001750 001750 00000007061 12312451003 020230 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Rectangle { id: menulogo width: 114 height: 40 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } color: "transparent" property string iconName: "homepage.png" property string text: "homepage" property string showtext property string path: "./img/en/title/" Component.onCompleted: { if(sessiondispatcher.get_locale_version() == "zh_CN") { menulogo.path = "./img/zh_CN/title/"; } else { menulogo.path = "./img/en/title/"; } } Image { id: seticon source: menulogo.path + iconName anchors.horizontalCenter: parent.horizontalCenter } Image { id: btnImg anchors.fill: parent source: "" } signal send(string a); MouseArea { id: signaltest hoverEnabled: true anchors.fill: parent //鼠标放上时 onEntered: { btnImg.source = "./img/toolWidget/hover-enter.png"; } //鼠标按下时 onPressed: { btnImg.source = "./img/toolWidget/hover-press.png" } //要判断松开是鼠标位置 //鼠标按下松开时 onReleased: { btnImg.source = "./img/toolWidget/hover-enter.png"; } //鼠标按下松开再移开时 onExited: btnImg.source = "" onClicked: { //kobe:选中项深色块移动 // menulogo.GridView.view.currentIndex = index; if (text == "homepage") { sessiondispatcher.set_page_num(0); menulogo.send("homepage"); pageStack.push(homepage); } else if (text == "systemmessage") { sessiondispatcher.set_page_num(1); menulogo.send("systemmessage"); pageStack.push(systemmessage); } else if (text == "clearrubbish") { sessiondispatcher.set_page_num(2); menulogo.send("clearrubbish"); pageStack.push(clearrubbish); } else if (text == "systemset") { sessiondispatcher.set_page_num(3); menulogo.send("systemset"); pageStack.push(systemset); } else if (text == "functioncollection") { sessiondispatcher.set_page_num(4); menulogo.send("functioncollection"); pageStack.push(functioncollection); } } } // Text { // id: displaytext // color: "white" // anchors.verticalCenter: parent.verticalCenter // anchors.left: seticon.left // anchors.leftMargin: (menulogo.text == "homepage") ? 60: 45 // font.family: "Arial" // font.pixelSize: 14 // text: menulogo.showtext // style: Text.Sunken // styleColor: "#AAAAAA" // } } youker-assistant-1.0.1/qml/func/common/defaultstyle/ColorConverter.qml000644 001750 001750 00000002513 12312451003 026542 0ustar00saucysaucy000000 000000 import QtQuick 1.1 QtObject { property color color; function intValue(dec) { var result; switch (dec) { case 'a': result = 10; break; case 'b': result = 11 break; case 'c': result = 12; break; case 'd': result = 13; break; case 'e': result = 14 case 'f': result = 15 break; default: result = dec break; } return Number(result); } function convertSubstring(val) { return 16*intValue(val[0]) + intValue(val[1]) } function grayValue() { return (red + green + blue)/3 } onColorChanged: { var string = "" + color var redString = string.substring(1, 3) var greenString = string.substring(3,5) var blueString = string.substring(5,7) var alphaString = string.substring(7,9) red = convertSubstring(string.substring(1, 3)) green = convertSubstring(string.substring(3,5)) blue = convertSubstring(string.substring(5,7)) alpha = convertSubstring(string.substring(7,9)) } property int red property int green property int blue property int alpha } youker-assistant-1.0.1/qml/img/zh_CN/quickclean-hover.png000644 001750 001750 00000016550 12312451003 023662 0ustar00saucysaucy000000 000000 PNG  IHDR-]tEXtSoftwareAdobe ImageReadyqe< IDATxbh~  (-_wd4 " L@ |0„@B @?p3T#pF ubaX[A',E~* G>aXATEb_ {feϰ1u ׳hBfFˁ|E8c+ ;/cpQPcia,^gPK30.k0! LHÀL/G0,RA>bd jFh`$?20prF^T6 #A*ء) b22gbtfR `6H C諸=`Hd3!F46.59rԡwy 럱8V1BR$pGcx Ma_FT`<r7(U0Lp!zFC~q3H80l䈮 gu&ǰ7Q}[ޛx1޵!HڳO` B`WGyTEFu8XZH٘Cݝ,ߝ!B7 5#,, ,%*00*3{aà ـNfwH%_/9aeDY+g` -Ȑk0&42B <\--Ip(+(b 0x_a` UDEϛ"`Bt QnڅBRwBƥpQ7BAJ@Q/ҘҦ͛y_3&o̙=ě&zˋ+m *êLlx:]7pC4i4|[$ěG?6 . _6)Kz { ANkN;[[0t]^ǫ6玧WfSewyhAq-BQasܬ=u6g/&F*%LJ0] }Zbk>/{ZDE )PR3#1ܬppn=P]Ԩ#1ʌc_pQNb9X,EmX򲔉T [kFtHhc YՏfk qVK{*~.GdW;UQ%wVz.m.ef\9,p?E4'U[MºWu~E--<n (^SVAVLi90$-eVFTӇF(ݐЃ \@O/-å[;7-kVE3`7Z bi'H@L|0F# iț &MI P*?Ԯ mugvvΝ;$ٹ3swΜ\w_K<ILPh9$+oi]?>1<*b5X~Sq6d-BulcE<ݓ-!(:fܺG8 F!t+gG)pyf&'QYCd8 |kj"\UƂF~3!܌n0E+-0f._ɋW%]Fzs,Rܡ(AV!eudz0rt΁cx. \Fav^r Qss ۛk*Rj92ævwSF=F-j"mzmCC(O$?,L`z)7OlύZJ}O⃹ܓLJQ8<vzO'cQۚR+03^X]RQǣa02qEƵ%V}×ep >s변V} 2RZ[A )Hcd?U%817~xèj"V:ߕM1c΃?:p`G3B_\=b^|V=O5](:&knzHL:05fo3aO"&/cHEhDGQW,ס{"g^`w_'h@~i5jK% 7xdw/WԹ+%oy fۓ$3ZFLI d)ή$աʝN*HMSAd^C)j]{[.>h^-t1;5!Tp3Es d$idD$sʂ'0 XDA#HsaD`'J)Z@1N2z&HI]Wv2 M1T-3CyI,C1gb'bWVGH9ZһK FQgK{=> a(XJH%H5@$DBa!BH@ H PJB{qfv;37G_L3*/q5r)A'LfI($z"s0AGyy'0K䠵+KEԬTiepAiw9ؼřAsNf~$dcdŶ2;t5$Dp٫5B_X,HܚeŔނuH&b_VѲBN8fshOdin(g\4{Q&0%21:_Xo0,%f4=S3ttp-AG3D`Bwh8α6ORHdGz[7I606]γs ~yU(Fr1\GE5fB2̉\zBov#BX2Q`C͎XWw%0ԭs,a"?}S}GNKyf1$+q+~P=Nai?fu.a-X_y?jT {?&TRT؋tTJ  ۨ)y \9~ǢutDC>g7b΄al=9WZI[?Ξ`\lxӨ{o(78/!BH.:H$@h%v@W2IQYtB/nhc}ؑ(dƛb3uKapat - -m7. ?V.<= IenlF,U$3썱DPxn\hd2#ŭ@bOcӒXn'ƗKGIR-ToØ: m)";>ݎyQl>0m_B? RW;ZN?6%F~XIz  tٰ5bbn?Q":2G.6j[S}RZX]iےZwdp1s3_w xb=sA(G`.(:d_X Ȯ7uC[.fB_\R)SnwfˆPLԕS\[cY!c?Q3=$`]k㏾ۏZK) !T YRoCH VҴ+g;[3_a̛p㍵_rxVTu1'jAdn*;WNýK%Y&h2aCSbsY%ԄB;Yꑤs7n ڰ +HVas?)s"x g٠W.aCDW{/n[?,eG,e z֙20vM"r(XZt` '$"?AY~d}=o>cPv4+rg5ⲥ'Ԕ3 r$5*L&oD5NzB+2iPDfIhL0 7{I q%F\ ͍젎mwdIfDB`'jxH$ˠLYøeQ,Rmy.UwZ^rp NJ_N%Q@6Xuk$[ߜDta4'9"f{2C|ռW!Of.8Rpm #?͂ z|0 N- ܇DwANecf;;ΜU ̵ʠ)TN.T+KAH8B|T̉cCCŊ:ph8FOO-.Rn:*ﺈY%(WC+Ǿ.Urhd,é~!Me7qv\6 G ! /=YO7S4/x ッ\m~-CBZ~EqF&uԗ?lYg\|d"kՍ(Y>c^?~ryY (;YU[-eak˱}~jEAG Ns$VDj;hQ];P_RQ^BIgLxF9FlTr ਜK4}bæg8 '+ "H`ȒFcS<Ľ1_:[_;upo^\N={(@)]8$ t$3GѶ}=ms&~rx=pNV$g2Fiu1X^ $Ԅ+(9EMj^O^F,Ă-/!4 >Ȑ0KJ4qk\7$l?=f~u\ ;9Y'z;1($ֿGWt}ыSɅD@Nz٩v3ğ;@^O]H15 A=LQjj7D[`tӑYgNVJP]gΌL+Lv|A~]oc{w>N rN'KnяᙕmR/wFkNg爐΋Dv,ߧƜ=c]1}V:ʊCns s6]GrR&g,U"pQ(R%4eK z.M X-?\ v8Rî9*֔|۰LIERQ<[Ap?Lweީ)<5DŽGQMk%$X`v*r&°Ww0<|*ƒ]M&"j):&*֜3>']ɱ2iIENDB`youker-assistant-1.0.1/qml/img/logo/component/monitor.png000644 001750 001750 00000000605 12312451003 024044 0ustar00saucysaucy000000 000000 PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<'IDATxbd``b#9W dѣGl7!Ia_0wA9(kI}4${ŀPf7)3' `bdG- $i鱶bĕ&Nbd%?Z#8,]+Vxi.LccLȚ4HKaz,`pfO0 h634 C``G u\sLqFyen7 c}-{k(GpʗIENDB`youker-assistant-1.0.1/qml/img/icons/pic.png000644 001750 001750 00000000764 12312451003 021307 0ustar00saucysaucy000000 000000 PNG  IHDRtEXtSoftwareAdobe ImageReadyqe<IDATxb A" Cff']]]@1M> `@{a!%%n":f ?~z4@@]c@e)_5!T VSN]]!<8|}}{/~'O0'88777B@ן1RH߿ @G&  9ϟg066.rkpk2BO bE o߾Lu@1?FFP+**00ALL @_f%-FƦ7od1 ;5VIENDB`youker-assistant-1.0.1/src/image/upshiftEN.png000644 001750 001750 00000006207 12312451003 021630 0ustar00saucysaucy000000 000000 PNG  IHDRt fx#tEXtSoftwareAdobe ImageReadyqe< )IDATxbd``b%2 H gHf&_1X0hr1g<Ƞ{oj}2(}gX3Y~OF&S/O '߿,5aj,i r8J~R |)çtJ޽` *`,A-0A@dxV 2fاe>S,hl` d3Cjf8|)70i Vgq=a`?DAJX 0_p&>.>S(h#R_})@l?,3DAzAl O-?}wa~Ƞ* fE1|T U2|&eQ߿1prˁk ծl= e)?"Ò;3C # F`uLY L3#e/XE/8_l!1E@dOt%3 rj`0cf(({0Ǜlac8r{ù33,bOu9aK$KmwsXpo*?3@J .0L:p h30H3y0|_7`K~ g/oçtʹoal 3.0/0 `f,@A  2' *@ 2oM @G`PܰE!0HC%?!s0 >\feЗbZ/@6iGg[pc(%tК2XȮ\[l~ X2k@}_a0"s?=f(p!y\肳@n%(Ibue%UԊZ,hj"tp.Dp܈¢[?]IՂ4R#jX?ZD-7=wt2Z!.3o{L5Tqmh56j/cLg;MݴIʤo>AcQ239UVrBt(5 mJr rc@0wOFEm7l"D@_Az> mx[QSjls΃e.|s f<78EWu3 􁌀`}7+{*l7=fD$sFtgzDlMȊ\ae`+%2qZCW3㔣.k;r]s~U,)Jh[Y-`AG:ކeF+]/`(]sBr *GzTϬ*,Q5t U3h~,uEŨa0ne&IYFe7&cƀ.܅v&^&d3:Ǻ}=yז-#i'yyާ9w>w^ot^wj+ۖ\\=2xVvSuHsӕQ@ @U/\Sz`؈t`:ӋF a)cΙףt qScMD#dd /`hP `~s-NaaJWɮ\]V1Lѩ 6 ^Q(PMܯ4ua;4rߘ,l :eM>*E8镔28¼i^mCf(@U_X*X@ܻ U]L&1ރ۫)cr1ԼuIENDB`youker-assistant-1.0.1/qml/func/common/Slider.qml000644 001750 001750 00000004062 12312451003 022312 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "private" as Private import StyleItemType 0.1 import WheelAreaType 0.1 // jens: ContainsMouse breaks drag functionality Private.Slider{ id: slider property bool tickmarksEnabled: false property string tickPosition: "Below" // "Above", "Below", "BothSides" StyleItem { id:buttonitem elementType: "slider" contentWidth:23 contentHeight:23 } property int orientation: Qt.Horizontal implicitWidth: orientation === Qt.Horizontal ? 200 : buttonitem.implicitHeight implicitHeight: orientation === Qt.Horizontal ? buttonitem.implicitHeight : 200 property string styleHint; groove: StyleItem { anchors.fill:parent elementType: "slider" sunken: pressed maximum: slider.maximumValue*100 minimum: slider.minimumValue*100 step: slider.stepSize*100 value: slider.value*100 horizontal: slider.orientation == Qt.Horizontal enabled: slider.enabled hasFocus: slider.focus hint: slider.styleHint activeControl: tickmarksEnabled ? tickPosition.toLowerCase() : "" } handle: null valueIndicator: null Keys.onRightPressed: value += (maximumValue - minimumValue)/10.0 Keys.onLeftPressed: value -= (maximumValue - minimumValue)/10.0 WheelArea { id: wheelarea anchors.fill: parent horizontalMinimumValue: slider.minimumValue horizontalMaximumValue: slider.maximumValue verticalMinimumValue: slider.minimumValue verticalMaximumValue: slider.maximumValue property double step: (slider.maximumValue - slider.minimumValue)/100 onVerticalWheelMoved: { value += verticalDelta/4*step } onHorizontalWheelMoved: { value += horizontalDelta/4*step } } Text { text: slider.value anchors { verticalCenter: parent.verticalCenter left: wheelarea.right leftMargin: 2 } font.pixelSize: 12 color: "#7a7a7a" } } youker-assistant-1.0.1/qml/img/en/000755 001750 001750 00000000000 12312451003 017306 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/src/image/pre-en.png000644 001750 001750 00000001575 12312451003 021114 0ustar00saucysaucy000000 000000 PNG  IHDR^tEXtSoftwareAdobe ImageReadyqe<IDATxbu]]˲ & 5` ˲yJƒ{צ_9mD-Ԙ񚟀OMQ4PeIENDB`youker-assistant-1.0.1/qml/func/common/StyleButton.qml000644 001750 001750 00000003654 12312451003 023372 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Rectangle { id: styleBtn width: 58 height: 29 property int fontSize: 10 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } color: "transparent" property string textColor: "#318d11" property string wordname: "" signal clicked(); Text { id:textname // anchors { // horizontalCenter: parent.horizontalCenter // top: parent.top // topMargin: 2 // } anchors.centerIn: parent text: wordname font.pointSize: styleBtn.fontSize color: styleBtn.textColor//"#318d11" } Rectangle { id: btnImg anchors { horizontalCenter: parent.horizontalCenter top: parent.bottom } width: textname.width height: 1 color: "transparent" } MouseArea { hoverEnabled: true anchors.fill: parent onEntered: btnImg.color = styleBtn.textColor//"#318d11" onPressed: btnImg.color = styleBtn.textColor//"#318d11" //要判断松开是鼠标位置 onReleased: btnImg.color = styleBtn.textColor//"#318d11" onExited: btnImg.color = "transparent" onClicked: { styleBtn.clicked(); } } } youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/ccm/Constants.py000644 001750 001750 00000005015 12312451003 031367 0ustar00saucysaucy000000 000000 # -*- coding: UTF-8 -*- # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Authors: Quinn Storm (quinn@beryl-project.org) # Patrick Niklaus (marex@opencompositing.org) # Guillaume Seguin (guillaume@segu.in) # Christopher Williams (christopherw@verizon.net) # Copyright (C) 2007 Quinn Storm from gi.repository import Gtk, Gdk # Current Screen # CurrentScreenNum = Gdk.Display.get_default().get_n_screens() # Settings Table # TableDef = Gtk.AttachOptions.FILL | Gtk.AttachOptions.EXPAND TableX = 4 TableY = 2 # Action Constants # KeyModifier = ["Shift", "Control", "Mod1", "Mod2", "Mod3", "Mod4", "Mod5", "Alt", "Meta", "Super", "Hyper", "ModeSwitch"] Edges = ["Left", "Right", "Top", "Bottom", "TopLeft", "TopRight", "BottomLeft", "BottomRight"] # Label Styles # HeaderMarkup = "%s" # Image Types # ImageNone = 0 ImagePlugin = 1 ImageCategory = 2 ImageThemed = 3 ImageStock = 4 # Filter Levels # FilterName = 1 << 0 FilterLongDesc = 1 << 1 FilterValue = 1 << 2 # Settings Only FilterCategory = 1 << 3 # Plugins Only FilterAll = FilterName | FilterLongDesc | FilterValue | FilterCategory # Paths # DataDir = "/usr/share" IconDir = DataDir+"/ccsm/icons" PixmapDir = DataDir+"/ccsm/images" # Version # Version = "0.9.4" # Translation # import locale import gettext locale.setlocale(locale.LC_ALL, "") gettext.bindtextdomain("ccsm", DataDir + "/locale") gettext.textdomain("ccsm") _ = gettext.gettext # Category Transaltion Table # Just to get them into gettext # CategoryTranslation = { "General": _("General"), "Accessibility": _("Accessibility"), "Desktop": _("Desktop"), "Extras": _("Extras"), "Window Management": _("Window Management"), "Effects": _("Effects"), "Image Loading": _("Image Loading"), "Utility": _("Utility"), "All": _("All"), "Uncategorized": _("Uncategorized") } youker-assistant-1.0.1/src/tray.h000644 001750 001750 00000005754 12312451003 017271 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef TRAY_H #define TRAY_H #include #include #include #include #include #include "ui_tray.h" #include "suspensionframe.h" #include "systemdispatcher.h" #include "sessiondispatcher.h" #include "aboutdialog.h" class Tray: public QWidget, private Ui::Tray { Q_OBJECT public: explicit Tray(QWidget *parent = 0); virtual ~Tray(); QIcon icon; //创建托盘 void createTray(); QSystemTrayIcon *trayIcon; QMenu *trayMenu; //监控球、QML、关于、退出程序四个托盘菜单 QAction *actionShow, *actionQml, *actionAbout, *actionQuit; virtual QSize sizeHint()const; private: QPoint dragPos; SuspensionFrame *frame; SystemDispatcher *dispather; SessionDispatcher *sedispather; QString cpu_value; QString up_speed; QString down_speed; double used_memory; QString free_memory; int memory_size; double total_size; QString ratio; QStringList speed; QStringList total_speed; QSize initSize; QImage wheel; QPixmap blister; int ratio_sus; AboutDialog *aboutDlg; protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseDoubleClickEvent(QMouseEvent *event); void paintEvent(QPaintEvent *); void resizeEvent(QResizeEvent *event); public slots: void handle_trayIcon_activated(QSystemTrayIcon::ActivationReason reason); //显示/隐藏监控球 void showOrHide(); //显示/隐藏QML主界面 void showOrHideQml(); //小监控球数据更新 void updateData(); //开始整理内存,一键加速 void startMemoryAccelerate(); //弹出关于本软件的对话框 void showAboutWidget(); //快捷键退出 void exit(); //数据写入数据库完毕后,准备退出程序 void handler_to_exit(); signals: //显示/隐藏QML主界面的信号 void showOrHideQmlSignal(); //将小监控球实时更新的数据同步到大监控球 void sysc_data(QString upspeed, QString downspeed, QString ratio, int used_memory, QString free_memory, QString cpu_ratio); void ready_to_write_user_info_when_exit(); }; #endif youker-assistant-1.0.1/src/qstyleitem.h000644 001750 001750 00000024127 12312451003 020505 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the examples of the Qt Toolkit. ** ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ** the names of its contributors may be used to endorse or promote ** products derived from this software without specific prior written ** permission. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef STYLEWRAPPER_H #define STYLEWRAPPER_H #include #include #include #include class QStyleItem: public QDeclarativeItem { Q_OBJECT Q_PROPERTY( bool sunken READ sunken WRITE setSunken NOTIFY sunkenChanged) Q_PROPERTY( bool raised READ raised WRITE setRaised NOTIFY raisedChanged) Q_PROPERTY( bool active READ active WRITE setActive NOTIFY activeChanged) Q_PROPERTY( bool selected READ selected WRITE setSelected NOTIFY selectedChanged) Q_PROPERTY( bool hasFocus READ hasFocus WRITE sethasFocus NOTIFY hasFocusChanged) Q_PROPERTY( bool on READ on WRITE setOn NOTIFY onChanged) Q_PROPERTY( bool hover READ hover WRITE setHover NOTIFY hoverChanged) Q_PROPERTY( bool horizontal READ horizontal WRITE setHorizontal NOTIFY horizontalChanged) Q_PROPERTY( QString elementType READ elementType WRITE setElementType NOTIFY elementTypeChanged) Q_PROPERTY( QString text READ text WRITE setText NOTIFY textChanged) Q_PROPERTY( QString activeControl READ activeControl WRITE setActiveControl NOTIFY activeControlChanged) Q_PROPERTY( QString info READ info WRITE setInfo NOTIFY infoChanged) Q_PROPERTY( QString style READ style NOTIFY styleChanged) Q_PROPERTY( QString hint READ hint WRITE setHint NOTIFY hintChanged) // For range controls Q_PROPERTY( int minimum READ minimum WRITE setMinimum NOTIFY minimumChanged) Q_PROPERTY( int maximum READ maximum WRITE setMaximum NOTIFY maximumChanged) Q_PROPERTY( int value READ value WRITE setValue NOTIFY valueChanged) Q_PROPERTY( int step READ step WRITE setStep NOTIFY stepChanged) Q_PROPERTY( int paintMargins READ paintMargins WRITE setPaintMargins NOTIFY paintMarginsChanged) Q_PROPERTY( int implicitWidth READ implicitWidth() NOTIFY implicitWidthChanged) Q_PROPERTY( int implicitHeight READ implicitHeight() NOTIFY implicitHeightChanged) Q_PROPERTY( int contentWidth READ contentWidth() WRITE setContentWidth NOTIFY contentWidthChanged) Q_PROPERTY( int contentHeight READ contentHeight() WRITE setContentHeight NOTIFY contentHeightChanged) Q_PROPERTY( QString fontFamily READ fontFamily NOTIFY fontHeightChanged) Q_PROPERTY( double fontPointSize READ fontPointSize NOTIFY fontHeightChanged) Q_PROPERTY( int fontHeight READ fontHeight NOTIFY fontHeightChanged) public: enum Type { Undefined, Button, RadioButton, CheckBox, ComboBox, ComboBoxItem, Dial, ToolBar, ToolButton, Tab, TabFrame, Frame, FocusFrame, SpinBox, Slider, ScrollBar, ProgressBar, Edit, GroupBox, Header, Item, ItemRow, Splitter, Menu, MenuItem, Widget, StatusBar, ScrollAreaCorner, MacHelpButton }; QStyleItem(QDeclarativeItem *parent = 0); ~QStyleItem(); void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *); bool sunken() const { return m_sunken; } bool raised() const { return m_raised; } bool active() const { return m_active; } bool selected() const { return m_selected; } bool hasFocus() const { return m_focus; } bool on() const { return m_on; } bool hover() const { return m_hover; } bool horizontal() const { return m_horizontal; } int minimum() const { return m_minimum; } int maximum() const { return m_maximum; } int step() const { return m_step; } int value() const { return m_value; } int paintMargins() const { return m_paintMargins; } QString elementType() const { return m_type; } QString text() const { return m_text; } QString activeControl() const { return m_activeControl; } QString info() const { return m_info; } QString hint() const { return m_hint; } QString style() const; void setSunken(bool sunken) { if (m_sunken != sunken) {m_sunken = sunken; emit sunkenChanged();}} void setRaised(bool raised) { if (m_raised!= raised) {m_raised = raised; emit raisedChanged();}} void setActive(bool active) { if (m_active!= active) {m_active = active; emit activeChanged();}} void setSelected(bool selected) { if (m_selected!= selected) {m_selected = selected; emit selectedChanged();}} void sethasFocus(bool focus) { if (m_focus != focus) {m_focus = focus; emit hasFocusChanged();}} void setOn(bool on) { if (m_on != on) {m_on = on ; emit onChanged();}} void setHover(bool hover) { if (m_hover != hover) {m_hover = hover ; emit hoverChanged();}} void setHorizontal(bool horizontal) { if (m_horizontal != horizontal) {m_horizontal = horizontal; emit horizontalChanged();}} void setMinimum(int minimum) { if (m_minimum!= minimum) {m_minimum = minimum; emit minimumChanged();}} void setMaximum(int maximum) { if (m_maximum != maximum) {m_maximum = maximum; emit maximumChanged();}} void setValue(int value) { if (m_value!= value) {m_value = value; emit valueChanged();}} void setStep(int step) { if (m_step != step) { m_step = step; emit stepChanged(); }} void setPaintMargins(int value) { Q_UNUSED(value) #ifdef Q_WS_WIN //only vista style needs this hack if (m_paintMargins!= value) {m_paintMargins = value;} #endif } void setElementType(const QString &str); void setText(const QString &str) { if (m_text != str) {m_text = str; emit textChanged();}} void setActiveControl(const QString &str) { if (m_activeControl != str) {m_activeControl = str; emit activeControlChanged();}} void setInfo(const QString &str) { if (m_info != str) {m_info = str; emit infoChanged();}} void setHint(const QString &str) { if (m_hint != str) {m_hint= str; emit hintChanged();}} bool eventFilter(QObject *, QEvent *); virtual void initStyleOption (); QWidget *widget(){ return m_dummywidget; } int fontHeight(); QString fontFamily(); double fontPointSize(); int implicitHeight(); int implicitWidth(); int contentWidth() const { return m_contentWidth; } int contentHeight() const { return m_contentHeight; } public Q_SLOTS: int pixelMetric(const QString&); QVariant styleHint(const QString&); void updateSizeHint(); void updateItem(){update();} QString hitTest(int x, int y); QRect subControlRect(const QString &subcontrolString); QString elidedText(const QString &text, int elideMode, int width); int textWidth(const QString &); bool hasThemeIcon(const QString &) const; void setContentWidth(int arg) { if (m_contentWidth != arg) { m_contentWidth = arg; emit contentWidthChanged(arg); } } void setContentHeight(int arg) { if (m_contentHeight != arg) { m_contentHeight = arg; emit contentHeightChanged(arg); } } Q_SIGNALS: void elementTypeChanged(); void textChanged(); void sunkenChanged(); void raisedChanged(); void activeChanged(); void selectedChanged(); void hasFocusChanged(); void onChanged(); void hoverChanged(); void horizontalChanged(); void minimumChanged(); void maximumChanged(); void stepChanged(); void valueChanged(); void activeControlChanged(); void infoChanged(); void styleChanged(); void paintMarginsChanged(); void hintChanged(); void fontHeightChanged(); void implicitHeightChanged(int arg); void implicitWidthChanged(int arg); void contentWidthChanged(int arg); void contentHeightChanged(int arg); private: QSize sizeFromContents(int width, int height); protected: QWidget *m_dummywidget; QStyleOption *m_styleoption; Type m_itemType; QString m_type; QString m_text; QString m_activeControl; QString m_info; QString m_hint; bool m_sunken; bool m_raised; bool m_active; bool m_selected; bool m_focus; bool m_hover; bool m_on; bool m_horizontal; bool m_sharedWidget; int m_minimum; int m_maximum; int m_value; int m_step; int m_paintMargins; int m_implicitWidth; int m_implicitHeight; int m_contentWidth; int m_contentHeight; }; #endif //STYLEWRAPPER_H youker-assistant-1.0.1/qml/func/settings/DefaultFont.qml000644 001750 001750 00000056652 12312451003 023667 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Rectangle { id: defaultfontpage property bool on: true width: parent.width height: 475 property string current_font: "Helvetica" property string desktop_font: "Helvetica" property string monospace_font: "Helvetica" property string document_font: "Helvetica" property string titlebar_font: "Helvetica" property double zoom: 1.0 property bool first_slider_value: false //系统初始化时会使value的值为0.5,需要过滤掉 property int current_smooth_index//当前平滑的索引 property int default_smooth_index//系统默认平滑的索引 property int current_antialiasing_index//当前锯齿的索引 property int default_antialiasing_index//系统默认锯齿的索引 property string actiontitle: qsTr("Default font settings")//默认字体设置 property string actiontext: qsTr("According to personal preferences to set the system default font, click the 'Restore' button, can be restored to the state before the font settings. ")//根据个人喜好设置系统默认字体,单击"恢复默认"按钮,可以将对应的字体恢复到设置前状态。 //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } ListModel { id: smoothchoices } ListModel { id: antialiasingchoices } Connections { target: sessiondispatcher onNotifyFontStyleToQML: {//字体更改后界面显示刷新 if (font_style == "font") { fontBtn.text = sessiondispatcher.get_font_qt(); } else if (font_style == "desktopfont") { desktopfontBtn.text = sessiondispatcher.get_desktop_font_qt(); } else if (font_style == "monospacefont") { monofontBtn.text = sessiondispatcher.get_monospace_font_qt(); } else if (font_style == "documentfont") { docufontBtn.text = sessiondispatcher.get_document_font_qt(); } else if (font_style == "titlebarfont") {//弹出字体对话框更改好字体后 titlefontBtn.text = sessiondispatcher.get_window_title_font_qt(); } } onTellDownloadCloudConfToQML: {//使用云配置后,控件状态根据配置发生相应的变化 if(download == "default_font") { fontBtn.text = sessiondispatcher.get_font_qt(); } else if(download == "desktop_font") { desktopfontBtn.text = sessiondispatcher.get_desktop_font_qt(); } else if(download == "document_font") { docufontBtn.text = sessiondispatcher.get_document_font_qt(); } else if(download == "monospace_font") { monofontBtn.text = sessiondispatcher.get_monospace_font_qt(); } else if(download == "window_title_font") { titlefontBtn.text = sessiondispatcher.get_window_title_font_qt(); } else if(download == "font_zoom") { slider.value = sessiondispatcher.get_font_zoom_qt(); } else if(download == "font_hinting") { var smooth_list = sessiondispatcher.get_smooth_style_list_qt(); var cur_smooth = sessiondispatcher.get_smooth_style_qt(); for(var m=0; m < smooth_list.length; m++) { if (smooth_list[m] == cur_smooth) { defaultfontpage.current_smooth_index = m; break; } } smoothcombo.selectedIndex = defaultfontpage.current_smooth_index; } else if(download == "font_antialiasing") { var antialiasinglist = sessiondispatcher.get_antialiasing_style_list_qt(); var current_antialiasing = sessiondispatcher.get_antialiasing_style_qt(); for(var n=0; n < antialiasinglist.length; n++) { if (antialiasinglist[n] == current_antialiasing) { defaultfontpage.current_antialiasing_index = n; break; } } antialiasingcombo.selectedIndex = defaultfontpage.current_antialiasing_index; } } } Component.onCompleted: { defaultfontpage.current_font = sessiondispatcher.get_font_qt(); defaultfontpage.desktop_font = sessiondispatcher.get_desktop_font_qt(); if (defaultfontpage.desktop_font == "") { sessiondispatcher.set_desktop_font_qt_default(); defaultfontpage.desktop_font = sessiondispatcher.get_desktop_font_qt(); } defaultfontpage.monospace_font = sessiondispatcher.get_monospace_font_qt(); defaultfontpage.document_font = sessiondispatcher.get_document_font_qt(); defaultfontpage.titlebar_font = sessiondispatcher.get_window_title_font_qt(); defaultfontpage.zoom = sessiondispatcher.get_font_zoom_qt(); var smoothlist = sessiondispatcher.get_smooth_style_list_qt(); var current_smooth = sessiondispatcher.get_smooth_style_qt(); var default_smooth = sessiondispatcher.get_default_theme_sring_qt("smoothstyle"); smoothchoices.clear(); if(current_smooth == default_smooth) { for(var m=0; m < smoothlist.length; m++) { smoothchoices.append({"text": smoothlist[m]}); if (smoothlist[m] == current_smooth) { defaultfontpage.current_smooth_index = m; defaultfontpage.default_smooth_index = m; } } } else { for(var i=0; i < smoothlist.length; i++) { smoothchoices.append({"text": smoothlist[i]}); if (smoothlist[i] == current_smooth) { defaultfontpage.current_smooth_index = i; } else if (smoothlist[i] == default_smooth) { defaultfontpage.default_smooth_index = i; } } } smoothcombo.selectedIndex = defaultfontpage.current_smooth_index; var antialiasinglist = sessiondispatcher.get_antialiasing_style_list_qt(); var current_antialiasing = sessiondispatcher.get_antialiasing_style_qt(); var default_antialiasing = sessiondispatcher.get_default_theme_sring_qt("antialiasingstyle"); antialiasingchoices.clear(); if(current_antialiasing == default_antialiasing) { for(var n=0; n < antialiasinglist.length; n++) { antialiasingchoices.append({"text": antialiasinglist[n]}); if (antialiasinglist[n] == current_antialiasing) { defaultfontpage.current_antialiasing_index = n; defaultfontpage.default_antialiasing_index = n; } } } else { for(var j=0; j < antialiasinglist.length; j++) { antialiasingchoices.append({"text": antialiasinglist[j]}); if (antialiasinglist[j] == current_antialiasing) { defaultfontpage.current_antialiasing_index = j; } else if (antialiasinglist[j] == default_antialiasing) { defaultfontpage.default_antialiasing_index = j; } } } antialiasingcombo.selectedIndex = defaultfontpage.current_antialiasing_index; } Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Text { text: defaultfontpage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: defaultfontpage.width - 80 - 20 text: defaultfontpage.actiontext wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } Row { id: settitle anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 100 } Text{ id: fonttitle text: qsTr("Font Settings")//字体设置 font.bold: true font.pixelSize: 12 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: defaultfontpage.width - fonttitle.width - 40 * 2 } } Column { id: fontcolumn spacing: 8 anchors{ left: parent.left leftMargin: 80 top: settitle.bottom topMargin: 2 } z: 11 Row { spacing: 234 - 16 - 40 Row{ spacing: 20 Common.TipLabel { z: 11 anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: fontslabel width: 150 text: qsTr("Default Font: ")//默认字体: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.FontButton { id: fontBtn hoverimage: "fontbtn.png" fontcolor: "#086794" text: sessiondispatcher.get_font_qt() width: 250 height: 29 fontsize: 13 onClicked: sessiondispatcher.show_font_dialog("font"); } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("defaultfont"); fontBtn.text = sessiondispatcher.get_font_qt(); } } } Row { spacing: 234 - 16 - 40 Row{ spacing: 20 Common.TipLabel { z: 11 anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: desktopfontlabel width: 150 text: qsTr("Desktop Font: ")//桌面字体: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.FontButton { id: desktopfontBtn hoverimage: "fontbtn.png" text: sessiondispatcher.get_desktop_font_qt() fontcolor: "#086794" width: 250 height: 29 fontsize: 13 onClicked: sessiondispatcher.show_font_dialog("desktopfont"); } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("desktopfont"); desktopfontBtn.text = sessiondispatcher.get_desktop_font_qt(); } } } Row { spacing: 234 - 16 - 40 Row{ spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: monospacefontlabel width: 150 text: qsTr("Monospace Font: ") //等宽字体: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.FontButton { id: monofontBtn hoverimage: "fontbtn.png" text: sessiondispatcher.get_monospace_font_qt() fontcolor: "#086794" width: 250 height: 29 fontsize: 13 onClicked: sessiondispatcher.show_font_dialog("monospacefont"); } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("monospacefont"); monofontBtn.text = sessiondispatcher.get_monospace_font_qt(); } } } Row { spacing: 234 - 16 - 40 Row{ spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: documentfontlabel width: 150 text: qsTr("Document font: ")//文档字体: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.FontButton { id: docufontBtn hoverimage: "fontbtn.png" text: defaultfontpage.document_font fontcolor: "#086794" width: 250 height: 29 fontsize: 13 onClicked: sessiondispatcher.show_font_dialog("documentfont"); } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("documentfont"); docufontBtn.text = sessiondispatcher.get_document_font_qt(); } } } Row { spacing: 234 - 16 - 40 Row{ spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: windowtitlefontlabel width: 150 text: qsTr("Titlebar font: ")//标题栏字体: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.FontButton { id: titlefontBtn hoverimage: "fontbtn.png" text: defaultfontpage.titlebar_font fontcolor: "#086794" width: 250 height: 29 fontsize: 13 onClicked: sessiondispatcher.show_font_dialog("titlebarfont"); } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("titlebarfont"); titlefontBtn.text = sessiondispatcher.get_window_title_font_qt(); } } } }//Column Row { id: zoomrow anchors{ left: parent.left leftMargin: 40 top: fontcolumn.bottom topMargin: 4 } Text{ id: zoomtitle text: qsTr("Style Settings")//风格设置 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: defaultfontpage.width - zoomtitle.width - 40 * 2 } } Column { id: stylecolumn spacing: 8 anchors{ left: parent.left leftMargin: 80 top: zoomrow.bottom topMargin: 2 } z: 11 Row { spacing: 234 - 16 - 40 Row{ spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: fontzoomlabel width: 150 text: qsTr("Global Font Scaling: ")//全局字体缩放: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.Slider { id: slider minimumValue: 0.5 maximumValue: 3.0 width: 250 value: sessiondispatcher.get_font_zoom_qt() onValueChanged: { if(defaultfontpage.first_slider_value ){ //系统初始化时会使value的值为0.5(最小值),需要过滤掉 sessiondispatcher.set_font_zoom_qt(slider.value); } if(slider.value == 0.5) { //系统初始化时会使value的值为0.5(最小值),需要过滤掉 defaultfontpage.first_slider_value = true; } } stepSize: 0.1 animated: true } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("globalfontscaling"); slider.value = sessiondispatcher.get_font_zoom_qt(); } } } Row { spacing: 234 - 16 - 40 Row{ spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: smoothlabel width: 150 text: qsTr("Hinting: ")//平滑: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ComboBox { id: smoothcombo model: smoothchoices width: 250 onSelectedTextChanged: { sessiondispatcher.set_smooth_style_qt(smoothcombo.selectedText); } anchors.verticalCenter: parent.verticalCenter } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("smoothstyle"); smoothcombo.selectedIndex = defaultfontpage.default_smooth_index; } } } Row { spacing: 234 - 16 - 40 Row{ spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: antialiasinglabel width: 150 text: qsTr("Antialiasing: ")//反锯齿: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ComboBox { id: antialiasingcombo model: antialiasingchoices width: 250 onSelectedTextChanged: { sessiondispatcher.set_antialiasing_style_qt(antialiasingcombo.selectedText); } anchors.verticalCenter: parent.verticalCenter } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("antialiasingstyle"); antialiasingcombo.selectedIndex = defaultfontpage.default_antialiasing_index; } } } } //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar showok: false height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } youker-assistant-1.0.1/qml/func/common/private/CheckBox.qml000644 001750 001750 00000001525 12312451003 024231 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "../behaviors" FocusScope { id: checkBox signal clicked property alias pressed: behavior.pressed property alias checked: behavior.checked property alias containsMouse: behavior.containsMouse property Component background: null property Item backgroundItem: backgroundLoader.item // implementation Loader { id: backgroundLoader anchors.fill: parent property alias styledItem: checkBox sourceComponent: background } ButtonBehavior { id: behavior focus: true anchors.fill: parent checkable: true onClicked: { if (checkBox.activeFocusOnPress) checkBox.forceActiveFocus(); checkBox.clicked(); } } Keys.onSpacePressed: {clicked(); checked = !checked; } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/DELL.jpg000644 001750 001750 00000011040 12312451003 023516 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1! AqB Qa2"$4d%R#tDTu&'1!AQaq2B"r3 ?}sG?HyF-M9KO;ۖ "תEn+PG5n2).75(eW3ٮjN>F 0&g[[pA/7E2(?.s~GOHg}@[`@QZOK"hKe$nbpN%o;-wK5I|; CUD-L&u4p)ed3n[u?{Ѡ-a0n\J'#l/cbYLeХh^2ۋ;L]Z;CDyuśgeAXf̚/7^f dm:,`,yե]F }7W0s4gWwC9mʸ&8v<걈(3ݥ:qR-5_pJ۫MVWYBr /UL(K /YE~ag'3@!:9C/qV+jG`npF}UT2fQ , ^_JbtN&2=ťt3rmڮ4[ݛa[ɐ] #I5RC UV(?5XN%nr)JiOV#QH}<̞j`OwѸ݄Zo gy4sáuA[iç`kTrk)%̡nYw{9g)1]domr\"aB *[nKu..B=FF;{V n [ljyrRIKh嫈nG\}_{"_:/ο%X//}'Wc̍/=^mO~1x$ 2[Vn0zQxGbR,wl ҴQ5]U|dgW\t$pdu\]f07Vw,EMC%h % P;6zUv֭e/+[Y/,f l*-jq[ ܩZj!I)fy%mC]bkgJSskGa;Ynj1\N}Y˦8n-'Y'`heLZv ݌Z  DNƥiW-[HߑPrG2WPF*VmJ/ڦfY{*`4VCR'i8'TEt뾔F|7s6.{9g)JHșERJҼ&</idiQ{f%r pO c[1",kػU5pT]sL4'WgRvݏ sˎG5 0ڼðݒAo1IuP9R~Ot_T~;1-^2-a83eIB[͊gՃJj8韲DlU2! @sf,ӝʒ:˜rŹ[5|諵^}K%Y _.f gAM[aՖGaҜµZJkw. `] Ԩ*]!/.'¯i^Hߟ{qnM:b".ݤٙM0Y)(Y[Z%%9P*z<<@m!oNp8bwlZG^M#%4 _},*_%`5r]jvA.X3R1YS.|_"ȉ㭮L <Ӯ}>Kh嫈z9F3*e^x0MSgȃ33P`Y)ԭ]4 uiH<Ŋ%*U&R)^Wt_RȴсW氻Xmm]|nj<-}dNO6 h4WZ#ĭ?;)NF"Ƽ jU~F~0v/ZDZ@:fndlfKh嫈z9F3<f;4>DemRhE}gFgWQe^W)QS,PMP_o%;*X% 4f6YS[#hd(vsvNI3 ^)vw@E[uZ{z2;خvv'_TQCXOVqjS\:SR/f*D^ӆ{L v0V =`P ,d_&%wk~r؃fEJdQq#MTiuqf+O%btG ѓHQ=0BMKqLiLh^e͓@oo[0k*Pu%UDvOEO2z=OFv9j94[s_6cHݸ>nO2ŸY(-M^k)^M**{kn-ork躃RH%*~Ӯ6Nyouker-assistant-1.0.1/qml/img/logo/Manufacturer/BENQ.jpg000644 001750 001750 00000013752 12312451003 023537 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     !1AQq"2B$5 aRbr4%#SsEe6v7!1AQa"q2B3$4҄7 ?<-qKi cD٢X)D~m.JQ|?^|ZR$I~{~rCJ0L3D510K>`4ڙ)}V{ZN^T 3R<[z\0P6 Q< HB~ K&zgSӻ6Pp +&S2l v'xLȑ+JΫ@Eb\ʕLR;?GCj,{i 2DpL@ăr5`)SV2>o&b1Y. R R .*cnNu˚S(ͬ|.mre$@Fts9WFQ? y>`5{T?њorIݫʁ_=ηُY 2$$lJ0/xl+n\#Z*Tg/8XwU7.TFҫ&{:A@njQRuV-hM:FYľ|K*n~MJH!'{5Yz/{03vzS\6"*Bm%Z>L`R!jT N*aF"!am}oזƕgh'uZ|DQ.d`fh0Z4~I+ܡWۚYHz^WK@K0A֢ؗ\9. ?G:hc\; +~wӿ܎ZYuJ$Ɲ1ǘآ* S7 Qc*q9Mٲt{n :\k@c\U{S _vmܤڨ0i&2I:n*^[jhPUqkqmgl_) PmXT pnT;i~E&YX5Dmz\Ȥ 텝ۇ85W#hc* 1 *gf7}mC"ecwm\*{=#i}. ~B*#fD+8sb:zs6y*~L a1֧ܣt0MIv Śi5K,dlot:y ʤThKmNτr+G Tg>(cQ|4zۻymOk2ލq%! '50HƳٚغMЦB$`= \'ZLQi;yP+֏ WZ[W?)W|ڲ[-b|E^W嚪 *ogng?{IJ. йoW&əH7 2f|+nGFUk0Y+yX/2U$[Ήo[bw}#KQZ3TslXط9e04iYls/ ^Sڎˁy1݃!ZX0x=NzX]7~Pլ{÷{$YO6};tir%YXAzY,kjSXک2}6X|W{xPfj^hX Օ َlgdV~^aTlBȗyKH5 (}rE;r֭@'D~h)PowR???)yzֽ:]gM,b]oHX }tv۴b.P /ȑ{Z~w)\ƨDI0T|Aߝ"{G,ͥ;zNx]al~]GlM1C4Gh TI. +_Ց*TbW8x{|=+{_k7&L^ 2lSs[ =wOKu| y $ $JSK=_-HD &@VzY^k6~±Ap+h(ڼ7KkȮҊ$Ε&`H%5g0,̘31E!1cvDxv݈t\T2IegDJJ p $8ssaQi(Ç X(5V/;_'~ltO_m.*FфUlu3}N<4e1ە^L 9aGoon:sFSXđGGɛ߮d,V.'>w7ik .OH>&Zӥj:ˤk 4h O.7iR4sAezֿ(FcʼnTÊv-l<>تu`$1 0DW݀MǼLlpašE0E0q\:6-2p\I8via2`w/ݴo$:+j1̱X!|-πJֵIA"^.8hMǮ}]N۝~oxDKͮ?2>+l`317v Z{xݕ'X )ֶȜ[هiW%^鵺^9q k*nr.=m&g-6_/Dp@MnfUcrU%K6 PG跃gYn Fd:ewZ4I ݫ ʷ܁'Kg>Uq EB|(Ӵyrm H -Pʫ*B,TX䅑Ka !PW8!ۭDDJǵ*3e{LӜNSGmLL ZVR/ρiȻ&70!m4(Щ0,Zҗ)r@*ɝb|$ Txd)}ɼ#txn F]{+(FAwk hБYz@"V̸{01˘1J"PO ɓj<5S1\'2/ ?v&:R c,L.łXF\,d+4>2w?&?~uŸ&2!O$lé/rܱ-]2Zځ<ƏcFDUI]KFoa*:p9(1]Eׯ5{=:\r4L-E{M-b̙JXP<6.2ܪD)RcːHNuO<ɸI Ҁ[֚1KYL<҆72JZX7'4͡2uGʲ:](>9xY[G.FCCnIkж eX VΈupnUA-q& Tkw!YD|^{<S̹Ox<^/y~fx͗ڊ}Vۭr|վk^\*NʌrG`X/YY$ۢ'TCS8~1-Z]弮sl.O>0gi ڛ~pd׹**vvgkFKx$jZ:˕[tdE^CcJ7tnV|e+;9F0⻸Rjl$Rr+ ]ke˦$0檷cܚ?à6¢sm,A^g$q3$O99Ȣtɒޥl#㽁r.Ԙ]K!.#d=>*~ʝznsM75.$ѩqUN]Pu $Nl䛶<-r]ɸ7vzlabIA<#4(1[ҺdQ0d ;y"փ^M:x̘ uZ㤵4DƔ&X#fDy}E\Kr H3҈ =LbbH/C$ rtYPɔ)k(]Ze:5"]ܷw,7$ iXF4'cLτQ`:D4y;v&G%rI1Za$8⮞+ 2 (w!c^[B9j9& \%UqT-MMDr$Na(ymgSom'%ko""2 ';9" Tg҂Y3GgLsleB,l7n *܌Ȩ);Zi*pK+b>Bse̞Yvv7}N疓8_~}+( %EJ0V#oiR 5xhv# _2컷$aSFX&]2k]v#ZMN y޼}Znk2Y$y!ҲNȪHr[nG23*:Ѽ ^'sAj_bI ؐ٩VÓM79 ~p3wcg1gR(-12>Mc fO$ZR@MBʈ/x|>-)S$x=Fd{&K%0}QL>߫Fiyouker-assistant-1.0.1/qml/img/toolWidget/clear-movie.gif000644 001750 001750 00000003655 12312451003 023730 0ustar00saucysaucy000000 000000 GIF89a?7Ly#̮ʍ;EGFչ%n߯Nˣ9ѥJֲ},α/ς]Ai{pW'qgݺaQZ! NETSCAPE2.0! 2L,?7L"&  NJ  ǃɶL ׷  㱒*ހPb$qǰx `jJ@EnDCoоPJ ^$N`AI0@V&H`(p)%X&F_@A 6ٶB: _%z F{"fx>W_JS t]˵dQ͓ntz3%4hG[X/b̪ST4x6̩+AK`m;fz%ROϕ1;s%7vaS˯D3z6~J2zb0T]vYrB_,wN \f18@mH#iTuEԜs)..#%8LD8t fu18ِND`IHTaP!M4#yt𶦏,;`̇oXD'hW' h3df BdtYev m*+}CS,[H{ IW_*\*Jz /I 駒lm'T"WIR¸. */ import QtQuick 1.1 import "../common" as Common Rectangle { id: root width: parent.width height: 475 SystemPalette {id: syspal} property string processId//记录鼠标所在那行的进程号,以便自动刷新时重新定位到原来那行 property bool flag: true//判断选中当前用户还是全部用户,当前用户为true,全部用户为false //背景 Image { source: "../../img/skin/bg-bottom-tab.png" anchors.fill: parent } //更新进程列表 function updateProcessList() { largeModel.clear();//清空largeModel processmanager.clearMap();//清空qt中保存的进程序号和进程号组合的map processmanager.clearUserMap();//清空qt中保存的进程号和用户名组合的map var list = processmanager.getProcess();//得到当前用户的进程 for (var i=0 ; i < list.length ; i++) { var splitlist = list[i].split(";"); if(splitlist.length !== 7) { continue; } else { var num = i.toString(); var user = splitlist[0]; var id = splitlist[1]; largeModel.append({/*"number": num, */ "user": user, "pid": id, "pcpu": splitlist[2], "pmem": splitlist[3], "started": splitlist[4], "content": splitlist[5], "command": splitlist[6]}); processmanager.updateMap(num, id);//更新qt中保存的进程序号和进程号组合的map processmanager.updateUserMap(id, user); } } largeModel.append({"user": "user", "pid": "pid", "pcpu": "cpu", "pmem": "mem", "started": "time", "content": "ubuntukylin", "command": "test for TableView"}); } //更新进程列表 function updateAllProcessList() { largeModel.clear();//清空largeModel processmanager.clearMap();//清空qt中保存的进程序号和进程号组合的map processmanager.clearUserMap();//清空qt中保存的进程号和用户名组合的map var list = processmanager.getProcessAdvance();//得到所用用户的进程 for (var i=0 ; i < list.length ; i++) { var splitlist = list[i].split(";"); if(splitlist.length !== 7) { continue; } else { var num = i.toString(); var user = splitlist[0]; var id = splitlist[1]; largeModel.append({/*"number": num, */ "user": user, "pid": id, "pcpu": splitlist[2], "pmem": splitlist[3], "started": splitlist[4], "content": splitlist[5], "command": splitlist[6]}); processmanager.updateMap(num, id);//更新qt中保存的进程序号和进程号组合的map processmanager.updateUserMap(id, user); } } largeModel.append({"user": "user", "pid": "pid", "pcpu": "cpu", "pmem": "mem", "started": "time", "content": "ubuntukylin", "command": "test for TableView"}); } Image { id: titleimage anchors { left: parent.left leftMargin: 2 } width: parent.width - 4 source: "../../img/skin/note-bg.png" } Row { spacing: 10 anchors { left: parent.left leftMargin: 50 top: parent.top topMargin: titleimage.height/2 - 7 } Text { text: qsTr("Help you learn more about the program running on the system.")//帮助您了解系统上运行程序的详细信息。 font.pixelSize: 12 color: "#383838" } Common.ButtonRow { exclusive: true//控制是否联动 spacing: 80 Common.CheckBox { id:currentUser titleName: qsTr("Current User") //当前用户 checked: (root.flag == true) ? true : false flag: "radio" onClicked: { if (currentUser.checked == true) { if(root.flag == false) { root.flag = true; root.updateProcessList(); } } } } Common.CheckBox { id: allUser // width: 20 // height: 20 titleName: qsTr("All Users")//所有用户 checked: (root.flag == false) ? true : false flag: "radio" onClicked: { if (allUser.checked == true) { if(root.flag == true) { root.flag = false; root.updateAllProcessList(); } } } } } } Row { anchors { right: parent.right rightMargin: 30 top: parent.top topMargin: titleimage.height/2 - 12 } spacing: 30 Common.StyleButton { id: listBtn anchors.verticalCenter: parent.verticalCenter wordname: qsTr("Refresh")//刷新 width: 40 height: 20 onClicked: { if(root.flag == true) { root.updateProcessList(); } else if(root.flag == false) { root.updateAllProcessList(); } toolkits.alertMSG(qsTr("Refresh completed!"), mainwindow.pos.x, mainwindow.pos.y);//刷新完成! } } Common.StyleButton { id: killBtn anchors.verticalCenter: parent.verticalCenter wordname: qsTr("End process")//结束进程 width: 40 height: 20 onClicked: { //根据鼠标激活的序号来获取对应的进程号 var currentId = processmanager.getProcessId(tableView.currentIndex.toString()); if(currentId.length !== 0) { var currentUser = processmanager.getProcessUser(currentId); // console.log(currentUser); // console.log(processmanager.getCasualUser()); if(currentUser == processmanager.getCasualUser()) {//普通用户杀进程 if(processmanager.killProcess(currentId)) { toolkits.alertMSG(qsTr("The end of the process operation is successful!"), mainwindow.pos.x, mainwindow.pos.y);//结束进程操作成功! if(root.flag == true) { root.updateProcessList(); } else if(root.flag == false) { root.updateAllProcessList(); } } else { toolkits.alertMSG(qsTr("The end of the process operation failed!"), mainwindow.pos.x, mainwindow.pos.y);//结束进程操作失败! } } else {//root用户杀进程 systemdispatcher.kill_root_process_qt(currentId); if(root.flag == true) { root.updateProcessList(); } else if(root.flag == false) { root.updateAllProcessList(); } } } else { toolkits.alertMSG(qsTr("Sorry, You did not choose the process to be killed!"), mainwindow.pos.x, mainwindow.pos.y);//对不起,您没有选择想要结束的进程! } } } // Common.StyleButton { // id: backBtn // anchors.verticalCenter: parent.verticalCenter // wordname: qsTr("Back")//返回 // width: 20 // height: 20 // onClicked: { // var num = sessiondispatcher.get_page_num(); // if (num == 0) { // pageStack.push(homepage); // } // else if (num == 3) { // pageStack.push(systemset); // } // else if (num == 4) { // pageStack.push(functioncollection); // } // } // } Common.SetBtn { id: backBtn width: 28 height: 26 iconName: "return.png" onClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } ListModel { id: largeModel Component.onCompleted: { updateProcessList(); } } Common.TableView { id: tableView model: largeModel anchors { top: titleimage.bottom left: parent.left } anchors.margins: 5 width: parent.width - 10 height: parent.height - titleimage.height - 5*2 // frame: false //标题栏内容列表 // Common.TableColumn { // role: "number" // title: "序号" // width: 40 // } Common.TableColumn { role: "user" title: qsTr("User")//用户 width: 60 } Common.TableColumn { role: "pid" title: qsTr("ID")//ID width: 50 } Common.TableColumn { role: "pcpu" title: qsTr("CPU %")//CPU占用 % width: 70 } Common.TableColumn { role: "pmem" title: qsTr("Memory %")//内存占用 % width: 70 } Common.TableColumn { role: "started" title: qsTr("Start Time")//启动时间 width: 80 } Common.TableColumn { role: "content" title: qsTr("Process Description")//进程说明 width: 150 } Common.TableColumn { role: "command" title: qsTr("Process Name")//进程名 width: parent.width - 60 - 70*2 - 50 - 80 - 150 - 30 } //标题栏美化 headerDelegate: BorderImage{ source: "../../img/icons/gray-hover.png" border{left:2;right:2;top:2;bottom:2} Text { text: itemValue anchors.centerIn:parent // font.bold: true font.pixelSize: 12 color: "#383838" } } //选中项 rowDelegate: Rectangle { color: itemSelected ? "#448" : (itemAlternateBackground ? "#eee" : "#fff") border.color:"#ccc" border.width: 1 BorderImage{ id:selected anchors.fill: parent source: "../../img/skin/progress-bg.png" visible: itemSelected border{left:2;right:2;top:2;bottom:2} // SequentialAnimation { // running: true; loops: Animation.Infinite // NumberAnimation { target:selected; property: "opacity"; to: 1.0; duration: 900} // NumberAnimation { target:selected; property: "opacity"; to: 0.5; duration: 900} // } } } onClicked: { //得到选中的进程号 root.processId = processmanager.getProcessId(tableView.currentIndex.toString()); } } //每隔1分钟自动刷新 Timer { interval: 60000; running: true; repeat: true onTriggered: { if(root.flag == true) { root.updateProcessList(); } else if(root.flag == false) { root.updateAllProcessList(); } var result = processmanager.getProcessIndex(root.processId); tableView.currentIndex = result; } } } youker-assistant-1.0.1/qml/func/common/KButton.qml000644 001750 001750 00000005263 12312451003 022462 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: btn signal clicked property string showImage property string kflag width: 185 height: 45 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } property string path: "../../img/en/" Component.onCompleted: { if(sessiondispatcher.get_locale_version() == "zh_CN") { btn.path = "../../img/zh_CN/"; } else { btn.path = "../../img/en/"; } } Image { id: buttonImage source: btn.showImage width: btn.width; height: btn.height } Image { id: btnImg anchors.fill: parent source: "" } //------------------------ // ToolTip { // id: toolTip // showText: qsTr("Please use UbuntuKylin forum account...") // visible: false//mouseArea.pressed // } //------------------------ MouseArea { id: mouseArea anchors.fill: parent//buttonImage hoverEnabled: true onEntered: { if (kflag == "login") { btnImg.source = btn.path + "login-hover.png"; // toolTip.visible = true; } else { btnImg.source = "../../img/toolWidget/button-hover.png" } } onPressed: { if (kflag == "login") { btnImg.source = btn.path + "login-hover.png" } else { btnImg.source = "../../img/toolWidget/button-hover.png" } // toolTip.visible = false; } //要判断松开是鼠标位置 onReleased: { if (kflag == "login") { btnImg.source = btn.path + "login-hover.png" } else { btnImg.source = "../../img/toolWidget/button-hover.png" } // toolTip.visible = false; } onExited: { btnImg.source = ""; // toolTip.visible = false; } onClicked: { btn.clicked() } } } youker-assistant-1.0.1/qml/img/weather/d20.gif000644 001750 001750 00000005151 12312451003 021421 0ustar00saucysaucy000000 000000 GIF89a002p䎜}\[C}rּMɻYB3t۫#Hn~j߰';vaULB~2EUIC`9ufA߫"f)C8syɳJAP?zi^4q^vF~nΝj[K7yW3;x:ޮ%*A{5q^˨:ռH6s֭+Nk}ط>YEbyܮuU-fv?Nd߳-YD~I:u`iEа?Ro\yEoՠj_\|мQӬ2vqrnH|^I<êH=JfϝwQ]D&Yƫh2C{5s7t٬)Z\۫'ݲ)>ydC~HEb9vݫ$9szE>z]3qEl6Ȁq8,9z-aI-`r(F5" t~ts1B0<e$/\ BH{>J,Їt" iXZZA"'&oIAqA0+4 "1/21paxP0KPc*U}Vj,! iPq/TwP4 !.AqȪMQUZ6 PPHV0?0@\-Ѽ7x 6Y(PfP:\ŀt,h= @gfw[Z! (&P8Uҫ_{[(Ȃ; 0Nӭj-B0&DЀ؅ }$[]N0D"&>AM0}]Zg0:v 0DLO(0{Z0ALO.(1)pcx* 0_HqpcP)2 /Mv2ML09C <(P΄0 5QvA!!m2,g2}&s6{BPnC;youker-assistant-1.0.1/qml/img/logo/component/network.png000644 001750 001750 00000001006 12312451003 024042 0ustar00saucysaucy000000 000000 PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxSM(aD򑯱)s\RJY]9IB8 %9IfHW/q$壦l޼sS~~R!å[PI^,A-I{Y|>A0Q,("II4eHQb@<'{$,}aT$$g)Ǹw'w .X߮'o%hQ8P`aD0d}S;N5cAx#;_|Y^`+]d%ÿhbTu6 )9rH # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA import glob import logging import ConfigParser from lxml import etree log = logging.getLogger('CommonSetting') class RawConfigSetting(object): '''Just pass the file path''' def __init__(self, path, type=type): self._type = type self._path = path self.init_configparser() def _type_convert_set(self, value): if type(value) == bool: if value == True: value = 'true' elif value == False: value = 'false' # This is a hard code str type, so return '"xxx"' instead of 'xxx' if self._type == str: value = "'%s'" % value return value def _type_convert_get(self, value): if value == 'false': value = False elif value == 'true': value = True # This is a hard code str type, so return '"xxx"' instead of 'xxx' if self._type == str or type(value) == str: if (value.startswith('"') and value.endswith('"')) or \ (value.startswith("'") and value.endswith("'")): value = eval(value) return value def init_configparser(self): self._configparser = ConfigParser.ConfigParser() self._configparser.read(self._path) def sections(self): return self._configparser.sections() def options(self, section): return self._configparser.options(section) def set_value(self, section, option, value): value = self._type_convert_set(value) if not self._configparser.has_section(section): self._configparser.add_section(section) self._configparser.set(section, option, value) with open(self._path, 'wb') as configfile: self._configparser.write(configfile) self.init_configparser() def get_value(self, section, option): if self._type: if self._type == int: getfunc = getattr(self._configparser, 'getint') elif self._type == float: getfunc = getattr(self._configparser, 'getfloat') elif self._type == bool: getfunc = getattr(self._configparser, 'getboolean') else: getfunc = getattr(self._configparser, 'get') value = getfunc(section, option) else: log.debug("No type message, so use the generic get") value = self._configparser.get(section, option) value = self._type_convert_get(value) return value class Schema(object): cached_schema = {} cached_schema_tree = {} cached_override = {} @classmethod def load_override(cls): log.debug("\tLoading override") for override in glob.glob('/usr/share/glib-2.0/schemas/*.gschema.override'): try: cs = RawConfigSetting(override) for section in cs.sections(): cls.cached_override[section] = {} for option in cs.options(section): cls.cached_override[section][option] = cs.get_value(section, option) except Exception, e: log.error('Error while parsing override file: %s' % override) @classmethod def load_schema(cls, schema_id, key): log.debug("Loading schema value for: %s/%s" % (schema_id, key)) if not cls.cached_override: cls.load_override() if schema_id in cls.cached_override and \ key in cls.cached_override[schema_id]: return cls.cached_override[schema_id][key] if schema_id in cls.cached_schema and \ key in cls.cached_schema[schema_id]: return cls.cached_schema[schema_id][key] schema_defaults = {} for schema_path in glob.glob('/usr/share/glib-2.0/schemas/*'): if not schema_path.endswith('.gschema.xml') and not schema_path.endswith('.enums.xml'): #TODO deal with enums continue if schema_path in cls.cached_schema_tree: tree = cls.cached_schema_tree[schema_path] else: tree = etree.parse(open(schema_path)) for schema_node in tree.findall('schema'): if schema_node.attrib.get('id') == schema_id: for key_node in schema_node.findall('key'): if key_node.findall('default'): schema_defaults[key_node.attrib['name']] = cls.parse_value(key_node) else: continue cls.cached_schema[schema_id] = schema_defaults if key in schema_defaults: return schema_defaults[key] else: return None @classmethod def parse_value(cls, key_node): log.debug("Try to get type for value: %s" % key_node.items()) value = key_node.find('default').text #TODO enum type if key_node.attrib.get('type'): type = key_node.attrib['type'] if type == 'b': if value == 'true': return True else: return False elif type == 'i': return int(value) elif type == 'd': return float(value) elif type == 'as': return eval(value) return eval(value) youker-assistant-1.0.1/src/tray.cpp000644 001750 001750 00000022463 12312451003 017620 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "tray.h" #include Tray::Tray(QWidget *parent) : QWidget(parent) { setupUi(this); dispather = new SystemDispatcher; sedispather = new SessionDispatcher; ratio_sus = 0; double trans_cpu = sedispather->get_cpu_percent_qt(); cpu_value = QString::number(trans_cpu, 'f', 0); used_memory = sedispather->get_used_memory_qt().toDouble(); free_memory = sedispather->get_free_memory_qt(); total_size = sedispather->get_total_memory_qt().toDouble(); double size = used_memory / total_size; ratio = QString::number(size, 'f', 2); double trans = ratio.toDouble() * 100; ratio = QString::number(trans,'f',0); total_speed = sedispather->get_network_flow_total_qt(); this->setWindowOpacity(1.0); icon = QIcon(":/pixmap/image/icon.png"); this->createTray(); this->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); QDesktopWidget *desktop = QApplication::desktop(); this->move(desktop->width() - this->width(), 25); this->show(); aboutDlg = new AboutDialog(); aboutDlg->hide(); frame = new SuspensionFrame; frame->hide(); connect(this, SIGNAL(sysc_data(QString, QString,QString,int,QString, QString)), frame, SLOT(get_sysc_data(QString,QString,QString,int,QString, QString))); connect(frame, SIGNAL(accelerate_memory()), this, SLOT(startMemoryAccelerate())); //-------------------------- connect(this, SIGNAL(ready_to_write_user_info_when_exit()), sedispather, SLOT(handler_write_user_info_when_exit())); connect(sedispather, SIGNAL(ready_to_exit()), this, SLOT(handler_to_exit())); QTimer *timer = new QTimer(this); timer->setInterval(1000); connect(timer,SIGNAL(timeout()),this,SLOT(updateData())); timer->start(); } Tray::~Tray() { if(frame) { delete frame; } if(dispather) { delete dispather; } if(sedispather) { delete sedispather; } } void Tray::handler_to_exit() { qApp->quit(); } void Tray::updateData() { QStringList current_speed = sedispather->get_network_flow_total_qt(); double up_before = 0.0; double down_before = 0.0; if(!total_speed.isEmpty()) { up_before = total_speed[0].toDouble(); down_before = total_speed[1].toDouble(); } double up_now = 0.0; double down_now = 0.0; if(!current_speed.isEmpty()) { up_now = current_speed[0].toDouble(); down_now = current_speed[1].toDouble(); total_speed = current_speed; } double up_final = up_now - up_before; double down_final = down_now - down_before; if(up_final < 1024) { up_speed = QString("%1%2").arg(up_final).arg("K/s"); } else if(up_final >= 1024) { up_speed = QString("%1%2").arg(QString::number((float)up_final/1024,'f',2)).arg("M/s"); } if(down_final < 1024) { down_speed = QString("%1%2").arg(down_final).arg("K/s"); } else if(down_final >= 1024) { down_speed = QString("%1%2").arg(QString::number((float)down_final/1024,'f',2)).arg("M/s"); } double trans_cpu = sedispather->get_cpu_percent_qt(); cpu_value = QString::number(trans_cpu, 'f', 0); used_memory = sedispather->get_used_memory_qt().toDouble(); free_memory = sedispather->get_free_memory_qt(); double size = used_memory / total_size; ratio = QString::number(size, 'f', 2); double trans = ratio.toDouble() * 100; ratio = QString::number(trans,'f',0); emit sysc_data(up_speed, down_speed, ratio, used_memory, free_memory, cpu_value); this->uplabel->setText(up_speed); this->downlabel->setText(down_speed); this->ratiolabel->setText(ratio + "%"); ratio_sus = ratio.toInt(); update(); } void Tray::startMemoryAccelerate() { dispather->cleanup_memory_qt(); updateData(); } void Tray::createTray() { this->actionQml = new QAction(tr("Hide/Show window"), this);//隐藏/显示主界面 connect(actionQml, SIGNAL(triggered()), this, SLOT(showOrHideQml())); this->actionShow = new QAction(tr("Hide/Show monitor"), this);//隐藏/显示监控球 connect(actionShow, SIGNAL(triggered()), this, SLOT(showOrHide())); // QShortcut *shortcut = new QShortcut(QKeySequence("Ctrl+H"), this); // connect(shortcut, SIGNAL(activated()), this, SLOT(showOrHide())); this->actionAbout = new QAction(tr("About"), this);//关于本软件 connect(actionAbout, SIGNAL(triggered()), this, SLOT(showAboutWidget())); this->actionQuit = new QAction(tr("&Exit"), this);//退出(&E) connect(actionQuit, SIGNAL(triggered()), this, SLOT(exit())); // connect(actionQuit, SIGNAL(triggered()), qApp, SLOT(quit())); QShortcut *shortexit = new QShortcut(QKeySequence("Ctrl+E"), this); connect(shortexit, SIGNAL(activated()), this, SLOT(exit())); this->trayMenu = new QMenu(this); this->trayMenu->addAction(actionQml); this->trayMenu->addAction(actionShow); this->trayMenu->addSeparator(); this->trayMenu->addAction(actionAbout); this->trayMenu->addSeparator(); this->trayMenu->addAction(actionQuit); this->trayIcon = new QSystemTrayIcon(this); this->trayIcon->setIcon(icon); this->trayIcon->setContextMenu(trayMenu); connect(this->trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(handle_trayIcon_activated(QSystemTrayIcon::ActivationReason))); this->trayIcon->show(); } void Tray::handle_trayIcon_activated(QSystemTrayIcon::ActivationReason reason) { switch(reason) { case QSystemTrayIcon::Trigger: this->showOrHide(); break; default: ; } } void Tray::exit() { emit ready_to_write_user_info_when_exit(); // qApp->quit(); } void Tray::showOrHide() { if(this->isHidden()) { this->show(); }else { this->hide(); if(!frame->isHidden()) { frame->hide(); } } } void Tray::showOrHideQml() { emit showOrHideQmlSignal(); } void Tray::showAboutWidget() { aboutDlg->show(); } void Tray::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void Tray::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(0.5); } event->accept(); } void Tray::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } void Tray::mouseDoubleClickEvent(QMouseEvent *event) { if(event->buttons() == Qt::RightButton) { this->hide(); if(frame->isVisible()) { frame->hide(); } } if(event->buttons() == Qt::LeftButton) { if(frame->isHidden()) { frame->show(); } else { frame->hide(); } } } QSize Tray::sizeHint()const { return QSize(height(),height()); } void Tray::resizeEvent(QResizeEvent *event) { wheel=QImage(event->size(),QImage::Format_ARGB32_Premultiplied); wheel.fill(palette().background().color()); update(); } void Tray::paintEvent(QPaintEvent *) { QPainter painter(this); QStyleOption opt; QPixmap background; background.load(":/pixmap/image/accelerate-bg0.png"); painter.drawPixmap(0, 0, background); painter.setRenderHint(QPainter::Antialiasing); //消除锯齿 wheel.fill(Qt::transparent); blister.load(":/pixmap/image/blister-small.png"); //线性渐变 QLinearGradient linearGradient(66,1,66,31); //创建了一个QLinearGradient对象实例,参数为起点和终点坐标,可作为颜色渐变的方向 painter.setPen(Qt::transparent); QString color1; QString color2; QString color3; color1=(ratio_sus == 100) ? "#ff2f00" : "transparent"; if (ratio_sus == 0) { color2="transparent"; color3="transparent"; } else if(ratio_sus > 80) { color2="#d13625"; color3="#d13625"; blister.load(":/pixmap/image/blister-small.png"); } else { color2="#00b0ff"; color3="#006eff"; blister.load(":/pixmap/image/blister-small.png"); } linearGradient.setColorAt(0.0,color1); linearGradient.setColorAt( 1.0 - ratio_sus * 0.01,color1); linearGradient.setColorAt((ratio_sus <= 0) ? 0.0 : (1.0 - ratio_sus * 0.01 + 0.01),color2); linearGradient.setColorAt(1.0,color3); painter.setBrush(QBrush(linearGradient)); painter.drawRoundRect(51,1,30,30,5,5); opt.init(this); painter.drawImage(0,0,wheel); painter.drawPixmap(0,0, blister); style()->drawPrimitive(QStyle::PE_Widget,&opt,&painter,this); } youker-assistant-1.0.1/qml/img/icons/button_normal.png000644 001750 001750 00000001624 12312451003 023413 0ustar00saucysaucy000000 000000 PNG  IHDRnsBIT|d pHYs -HtEXtSoftwarewww.inkscape.org<IDAThڿK$IǞEnnv]  PTޞSվmWv8G!㏇!|>???/PfGDfE^VFQ(Hpqqu׳M˲,DJ)RP)HyRJn2OJ)H,LJ燍~VbJ !iWb&NJqĕR 0Y*ĕ#"Rb:q%&D㐈ĕHvuJL#R qĕؓ=n8$N\ 89׉+1J)p"@ƘN\ !p>eYWb=ndTJU(.ݝ*M"UcgaI)͛Y^7U6S!>]"=Z,Ns(Fh-Ot!9T/Qv'Ba0Rw,Jm1Sx2Ty5X~3Uz6Y4V{7Z5W|/Mm9[4Rt6Uw>`Eg5Mh?Xu=TmYqWi}k~}ɭֶ0N2Q2P4R5S0K6T:Y;Z@c?`<[=\!Bc>]!@_%Fi#Ba#A`'Hi&Ef*Kn+Mp)Ik&Dc+Ln-Nq2X}1Uy.Or4Z2Vz/Ps%@[0Qt.Op1Sv/Pq1Ru0Qr3Tw7[4Ux8\5Vy7Y|6Wz9Z}:[~8YzMe~gyu1M4Q3O6S5Q;Z<[8T>]CBdN[q$ɻ>}UӨST wH.׸֕Ӏp麣ȋhovp9wBut)n8;CF'*>F~ h *k!k@g.y/!$<0bƃ |F -.d ˇB/Di䑼IB" p @ =˗ 0 =S0~K _s cg|AX+81f"(#""L Bi̗!A,x *B "o #0"!R+ȃw(k@,g@?B(l2 "J+"t;" .R1b$* |쩩-܀B {rt1NS|"$x@9dN'P=BԥVFT+ h7%PQCBPF%aV M}% bhk\zV6k0qW+hr}7zr&06q@8!qPx,&P{+DֲxkA> >T!Fֵ @l:WG10bP?PzW#00}K^ͯ~0M\C@:'Xᾛo~@!7R[-*ճseuS?:XJ/a\wOڄЎ ,6گ̚c16xxj݆t_-qtayW Տ9PyxY[u`wF-L ƅX0=~>W=Hv4׼tǘ븙^ Z Bf3 p!~!W@,Aug0ӼŧK9,:3=3=3=3=3=3=3=_)Wv72^ھ˦M 6]iJ%ʱ0lƃ3U B9T~..w{WC<7"Em)=~.yXVk]8R'D}O>'D}O>'D}O>'D~ݍ3gyܼPFY?)#QK'k훝)QU[rBceЏ *a~z*mcSud.:`bm(Y-ЁWbkLA=מww dcFH3ҫ8 3x!&۰Lwn'z6hKeh2mfEicI=-Bɖ=[9~P<36 j !fiQB2g>u*DMC3Y #ݺҿ<xk۳賄D[X7ޘ+xbqv!0J6s\^7OOFU;9bj Bn)Lu#xr,qp4PxBգ|s10Sa|iS#3xĄ3/ibMê%d[ǣGa3Qcp%N3ŗΒ[t]bQ-^76<'ͻOs:p3BT6NBUj9g ǂ; *3x v9[G72S<9-bO1#h^$qa͊(淋]܊*l2)8,X %W|n )7u~o~>R~01J WZ%FD=dƴb{#<B_(iO&aB Kw k{ե BƖL~xTVk4$e~@ %~7ZɅ\)_LcgT ~R~1b>yĊ)iR4!]"Sue摖h,"uQPW)JUiE"ܮcגmUySh) ;]0[<(WC+{p8{7W7xOc/O '?3Zj?Vr™ֵ=HDڻAY%=^Qa#!HuQ<;L]-!A.ڹjP.n($5@RdՍ ĺm?uCX5Sh7e|zJ2\vN X^?b@-1Fy}"Q#Cn+yPXb)7 N|(:IcUaD>fJi/l\j^efGsyH8<߼<.Oٵ: [^ ='zBO ='zBO ='zBO ='zBO ='zBO ='zBO ='zBO ='zB@[un\}mx[|ƿA/贁4K> }hS~?/,t 4"k񽅦j=!A.Jɓ88ersM#t,\{uFYIu~0LU[ܪ uܼz">+~B|x`AC hyN +Io|*1E2k<Ɗ4:;*j \:Lb2 7o"&qvvvC &;v|؀\IHUlL;Nh5Nzd \Թ\X95IH7M3̺,]cX؞ƽwv53c^cjBF$ٮ#lޓHAPjEG pݳravX7rr J%py#vhLMgxaf HaK1Mu{V7s?ƻɒo%๶ J+JKb?a*?"R.GżZ/E rU |3B[hm295|f ¨ n⍞_M̈́7n\(҂tGoA~Ir0rќ 5|A>׷8|?8 #~[Ӕ9݇Jŝ,(bǖ|?v@R}%9zx+@$n1r-}?GN_?; G~<KYvl7Eo7u^^/ ;eD(j3i>vOՉ⹧Zㅺ|Kx~ǘ &,o >,lu[:",rdA5ggʼnW+0h¨u=]i(OumnQgr0a+Q F h/-tީ&a'~<CGcN)/Y$}h|U  h+: ~&BH\DJu4w/]ᲊ'-N- s/ O:QZ#kklPFBobNےnې7dksѾ5\J5S%D9m0{( =2]+\j t[ qnklu צ2sՁK=tvk|~оsoBUzYepezOhbgw/d9k}9w[ju :g]J g[P1M'@J7vuDvn%rڙ8LBo&l[Q`;wϟ 桅H{;mW!9_TfuNN.ٮYa\V-Ղrgh U9}8r٬Δvj8_X) Nc4#Nͅ_|=~V[Fm=K5p5 ?{#Xvt:[񿒆:j% Ø团7&*/TFE;.`)<+v?A\=1ߛ-wk;]>_ !«j U 85eG؄.;ٕݰ,蜮#<~i6OoL_j|:{:O2p~%]Kwt .]+tWHw.]+tWHw鮐]!ݥtWHw鮐]!ݥBKwt .ݥBKwt .]+t .]+tWHw鮐]+tWHw鮐]!ݥBKwt]!ݥBKwt .]Kwt .?ε-Kn@6G[Ϧ*<{HHP]o8}ΌF . h׿3%&&d_Nqw'b_%G}pb%-H?"Ygwj~=Neehܴr/ Hp?qJhpR-Ǝ++ XneCOvkfOJ(䢉 ,HH@Gѯu>ms-:ܧ,E wW@ Skŵ. {?d;vwyAj7Zʳu-lcOt#.OJwGɎ&So Z̊[ ]8oj;YϒkƯhRG] L6y'9TïKl@ݭw 1UYu̦a/˝718)%oii aScMM}6oDy>͟Byt͜.şhG]n9<_JZk]e L+PYGk EHHŁsuڄzZ]D^*#xo҇J5ˆf›3۬<[yT.EC?p :1Nn jte^=efّG b ig oQ-^|Ke]ͻ`rQY"eLא^ҜoVYaR5eM(z%dȫW֍]VT4 3q*s^CDTcHlNolq^U YOâ x]E[y뼴߯Rͣ K!liܺ+Q΄ v܊t̡^. .ʹ5z ૒A;Z*~NQbJ;;|:'~`t۾u J9z-Zt# Ћa`pOR湨P-/wTמuz!.`@iT<Ҝ3pNϺWԗZYrٸ%m ԭFvt)$ciq Sᵨ=jc.4HEgx\|]~SnʖD:F 矷ž^Oz[#z\I^ƍw䦈ۮG?"zijFmpߐwn[lK@e=TmZl9X+9Qo, U^rgUX^6j*wޫPgL]RDT~lKS-y5XhlG;}}W clf_߮8N\՟+ŏ_lwlzq\Eҗ6ک1h"0A#IEQYq\B#̇\]Z]*ٷImE7^V-m/c4tQs9Zt1ud_Yzg6)XYx>Mub?lA!ɼZqK6g0{× imv-ɣ%kyRdM|LI|o'| K4b,jD'X3gRPU Qǐ9 i1tX\v\hW7d?ܞ'NĈƝi&U~NF9.Gvr :GK[F& M9Z)]uԮA$)G _m"FɕgcHOt?Fw+*kheb`eb^k@@ln8I7Mں7M5ȈΡ!zWd~^施12ph/.AI܁6Uڜ۹lfβo.m9ѼHy>>.k'зt< R E:>eh;w] \5͓z3.Bt7W$2m d/6(i}"hrd:Zʈ1A̍:X|did7|u4\z;Y9r.*VH4檃g"h7n)# 5٥Q=ZI ^;6-v!HU|d\]u)Paު 5vtJiR4V4Ŵ2 5* >7h;:5dC#ɖESsS1H gV/ Ġg#NUڝ[J |%2LW3D D #xn=!wVuq8}:rYmgii~#j yCPrՖa-e"7yxsܶno cKpݣu#0\r<fˀd}Qc'a,>(λ9w$)4Gx>4)}^׺q} V15'x{~_>O`ST(ӌ\oJG=skӥn<~CֈuV7O ֮1lȟܹOy~m*SV۩O ҕ'qzx#W?r]^fXO ա`ܭCWfb+cqMY>۾[ /vGmO0lO03o-cTsc0AP CEۂ]P?ǮܯM^2Soۂ3۶N?Cq#||x˘fÑmw2;x-Ob4ouXSJ&۰4d>m@9`Y˫ܮackX.#ѵ467;rx;u0Yq\bL䔓g %$lP &-۷^`qQӍav=BaX 4J_d2: {uT#F# p{&cip *К[+SI^ 5T LKhvi"RQ~e1C+'b! 2VH/HmA-ap{6jLCx%+m \?" u3ܤXDI"f O]Ǝ<< 2)*~]+9TZ*|EL1 e"69rqb ]54G劜iɘI?bf9cZ}2$IaEsVIs#ek:r樒FNW+I폳C^MRvU#vz!֢.( è֘A5b'@mCr;[>|Ypɮ3VB1&yχ.Y%e5VNaz! B4*v}% C<28F&!11^%≘,nח ׺M[`U'.{iٚh`rϷKϼ[gn8˜!sX(kbf"ĘqYe*Vbn[{; ڎRhƵu" 9ȍ69D7ǧ2({QIϹn]"1>Uvm3ή⟡!R ZJT&NݔlP a]g+VT^nr}],,pʖ3ȰRgJ# ^޶8n깞Sz:BfN ww?ho<\m0_@ܘ.s.3_ ZDftLXhEX1h]~grOq[sRs|7V6۪Y`^h`-{~n:qD[[9贈錈\)-VxE gzK;݋xm8riF^VKa3& kd3!rE_Vp/QY5= y+F}]vwTƷu/ 5b%}}iZ #?Y<J4Gɧ^IW>W_'"{ێ[gRSy/ $ͣ=οᢳ݇O̻ͅ>3׍vK&` R4ʪ.:O2PF+URf*&uƿ"W¢vSݓ0ۜpởq=bUke9;9Րhgpx~XD,QLT"&M.U4,U]Cka Ϥ䩯YCarGh5V9cKUiIpr|6E|N(+hS5Kl0XՅk#fq(hnpFf:I%iG^N:ݓY~r7ʞ.S^`K *;?m c[i.;"a+괖=YYkօFhm])퉡ӵ0 3Z!"-|3NM5F &;Oi9-)g:Dj-GiPYn_)m{?W@ïY5.ܢ^ F++TE& rKl J~A+}||yxI#lSVjoxj)~*kuJ~4.dXYd8z(p{1$k9BywiG+$VAmX EkX56+ſs8v[򄂎@I.]/ǔrBL+1j~z}c=J(0a+LC*ՅrڤbR'f<gB^nñ9lȵ7mYonU-+[>5%r \, .ǚF_{q"-Eo-6?0r&0F9otnVj+#$#zTm~)s쎧J3 1s-u",m/ל09OIy4Kpl`ӣ`U'u~|m~wZ&r5-<:Pȉ~cβ._)Ӛ* 1^m9D*,6;W?~%}a2ĸYg30vErRZ@p #ulb|-ˑku_|rL@.>+B,_==/|RZ|/GNuva RonvyA: Ǜ˲c 26 3 ?B$8pWNYXϣHEDA"Ӏr/* тDSںc]Pj'%p6;C5y|x,Yy`q7o/xYE |G14~u`_Lw+w8vćO) ".,8=cuVXY`p[֣w:_t& ŏG0 h;גы|g%mqKXY_N L %>b\o.\"g/k{kw)X0Ybd~9a9;~lؾj8~mΙb"<>Z??O f/qAvm^ׯ{b8);ҹ5>B2ʛn?N_Gn%0f\K/ٗ`%5rN#/4}.Ze&1~ S!ݳKb!\ʺwDLhMu[am^ b˧۴n%[|lx`nDZ׮d|/2.Z;f}9om%~wW*캹kw yH{]jFZomi&^ZDe}o `^`_$0zMgP1|QuS<͒]d_x.SRqA3 TѪcKn;c8g8ݛʷ{ 65P4J=.Նs!\2FR1kœtw]R:9 o^}C0doJof/rOVYTs;|2tR-*xKe@jӵ'c'Fkh͞8]h'Rt\qW _N&-*~|/M'&a5:y^N`иpbi?SE¾ɥ/1~,F>-V^qNe- =,$މxYzR )h\ =-͓x *̳q+@Yzԋ7xwIQ-ķ[';>&&}K H( /e8rLʮU?a筰L&ա (1KVc"X1u*pqtǺTs;[lb+AaC˼j|^XqoG\q+w-3-8TP\GS^lyPP04051 k Z)cKc>ueq*Fs:!ҲCq W4Dp q @xUsQY".sGs4p7lͻ;. %\Տs!F?7h)E}Huf;*^9ײ<6ܦ!x=E>Ҷd=VDJqMoOc_5]e`13˃f F^$t k`B1Lv5Z-wP뗐:߉^4XZ9}k E{|\%Э݈ˡDdLR,Ӗ uf F2\ EF)Ua:{o@L{/T.b@ZНdBp 0~-$y{g_a ]|pkWUm-t1C%k2%2%V ,8^w,oZ7pv^Ys5o8̴=? F4{+03$h$bc[q/t6/ݹyvvB ̓I uY\ЌM\yV"GZ#,bE6ZA[(]>_ʵ19eGHs>ހ]:XJxYHeױ𳮓;T$Ez+zBsNtG2x6koa҇ / 쩁g뵸n$:v j3H 3 *~_& Jhm-zl[qTʢPH|[K*ClϦ:}AM^ZW k[U.q91v!J252G(m&G_C^VQZeQ_0̜g%6zs{wբkI*LNB ]K¤^/<@HZ `f2gMх g1>G (#R0x%f^n`1v_tndV!IL;)y>1>ڻz)$C=nq,VDOcxZWrBAʱҏwj*uaML*Hŕ|b'N/cruEґMd,2\p Z!ݳsr)-Vx=Eớx1&-lbcTbcί!"ȉ[aj$eDˬhN#"C{9"$$o^\$N;D &Rl,aS0j+L' *7lh7ųFWh,Pw{'#v[;IENDB`youker-assistant-1.0.1/ReadMe000644 001750 001750 00000000762 12312451003 016424 0ustar00saucysaucy000000 000000 Youker Assistant Attention ========= It supports raring, saucy and trusty, but does not support precise. Depends ======= debhelper (>= 9), dh-translations, libphonon-dev, libqt4-dev, fcitx-libs-dev, pkg-config, python-dev, python (>= 2.6.6-3~), qt4-default, qtchooser, phonon-backend-gstreamer, python-dbus, python-psutil Attention with IDE ================== 1、Install backend: sudo sh ./backends/youker-assistant-daemon/install.sh 2、Run: Click the 'run' button or press 'F5' in QtCreator. youker-assistant-1.0.1/backends/youker-assistant-daemon/src/sysinfo/__init__.py000644 001750 001750 00000011361 12312451003 030273 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import sys import os from gi.repository import GLib import platform NO_UPDATE_WARNING_DAYS = 7 FILEPATH = "/etc/lsb-release" class Sysinfo: CACHE_FLAG = '' CACHE_PACKAGES = '' CACHE_SIZE = '' CPU = '' RAM = '' HOSTNAME = '' PLATFORM = '' DISTRO = '' DESKTOP_FULLNAME = '' UPDATE_TIME = '' CURRENT_USER = '' HOME_DIRECTORY = '' SHELL = '' LANGUAGE = '' def __init__(self): self.CACHE_FLAG = 'a' self.CACHE_PACKAGES = 'b' self.CACHE_SIZE = 'c' self.CPU = 'd' self.RAM = 'e' self.HOSTNAME = 'f' self.PLATFORM = 'g' self.DISTRO = 'h' self.DESKTOP_FULLNAME = 'i' self.UPDATE_TIME = 'j' self.CURRENT_USER = 'k' self.HOME_DIRECTORY = 'l' self.SHELL = 'm' self.LANGUAGE = 'n' def get_sys_msg(self): CLIPS_DICT = {} CLIPS_DICT['currrent_user'], CLIPS_DICT['home_path'], CLIPS_DICT['shell'], CLIPS_DICT['language'] = self.get_userinfo() CLIPS_DICT['distribution'] = self.get_distro() CLIPS_DICT['desktopenvironment'] = self.get_desktop() CLIPS_DICT['hostname'], CLIPS_DICT['platform'] = self.get_systeminfo() CLIPS_DICT['cpu'], CLIPS_DICT['ram'] = self.get_hardwareinfo() CLIPS_DICT['currrent_user'] return CLIPS_DICT def get_userinfo(self): dict = {} dict['username'] = GLib.get_user_name() dict['homedir'] = GLib.get_home_dir() dict['shell'] = GLib.getenv('SHELL') dict['lang'] = GLib.getenv('LANG') return dict['username'], dict['homedir'],dict['shell'],dict['lang'] def get_distro(self): '''It should be: DISTRIB_DESCRIPTION="UbuntuKylin 13.10''' #FILEPATH with open(FILEPATH, "r") as fsys: for line in fsys: if line.startswith("DISTRIB_DESCRIPTION"): tmp = line # kobe: remove '"' and '\n' front = tmp.split('=')[1].replace('"', '').replace('\n', '') #(LP: #1240862) if front.startswith("UbuntuKylin") or front.startswith("Ubuntu Kylin"): d = front + '-' + platform.dist()[2] else: a = platform.dist()[0] b = platform.dist()[1] c = platform.dist()[2] d = '-'.join((a,b,c)) return d def get_desktop(self): desktop_dict = {'ubuntu': 'Unity', 'ubuntu-2d': 'Unity 2D', 'gnome': 'GNOME Shell', 'gnome-classic': 'GNOME Classic', 'gnome-shell': 'GNOME Shell', 'gnome-fallback': 'GNOME Fallback', 'pantheon': 'elementary OS (Luna)', 'Lubutu': 'LXDE', } desktop = os.getenv('DESKTOP_SESSION') if desktop in desktop_dict: return desktop_dict[desktop] else: if desktop: return 'Unknown (%s)' % desktop else: return 'Unknown' def get_systeminfo(self): return platform.node() , platform.processor() def get_hardwareinfo(self): # CPU with open('/proc/cpuinfo') as f: for line in f: if line.strip(): if line.rstrip('\n').startswith('model name'): model_name = line.rstrip('\n').split(':')[1] # Memory with open('/proc/meminfo') as f: for line in f: if line.strip(): if line.rstrip('\n').startswith('MemTotal'): MemTotal = line.rstrip('\n').split(':')[1] MemTotal1 = MemTotal.split(' ')[8] MemTotal2 = GLib.format_size_for_display(int(MemTotal1) * 1024) return model_name,MemTotal2 def get_codename(self): codename = platform.dist()[2] return codename if __name__ == '__main__': c = Sysinfo() print(c.get_sys_msg()) import getpass print(getpass.getuser()) youker-assistant-1.0.1/src/wizarddialog.ui000644 001750 001750 00000014355 12312451003 021155 0ustar00saucysaucy000000 000000 WizardDialog 0 0 529 210 Dialog 180 7 171 21 <html><head/><body><p>Weather Configuration</p></body></html> Qt::AlignCenter 20 38 171 21 0 21 <html><head/><body><p>Automatic update cycle:</p></body></html> 20 67 91 27 265 37 71 21 0 21 <html><head/><body><p>Location:</p></body></html> 266 60 241 91 120 70 61 21 0 21 <html><head/><body><p><a name="w_98"/>minutes</p></body></html> 10 7 20 20 20 20 20 20 0 0 531 210 border-image: url(:/pixmap/image/dialog-bg.png); QFrame::StyledPanel QFrame::Raised 268 172 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; Add City 413 172 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; Delete City 20 172 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; Back 128 172 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; Finish 23 110 241 21 0 21 <html><head/><body><p>Data: CMA/Yahoo</p></body></html> frame titleLabel timelabel spinBox locationLabel listWidget minuteLabel btn_close addBtn delBtn quitBtn okBtn comLabel youker-assistant-1.0.1/qml/img/logo/Manufacturer/OMRON.jpg000644 001750 001750 00000007303 12312451003 023677 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 q !AQ2B":$tu'w8Xx91A!BQaq"23 ?L˓?v ƴA3A3/As] /1s* 0vZ "O?6beし&~'(A3h(f=X:(gو_H=X,_9c8r0T l@`쵁1.A+E> mŤ.L NPgQztQϧ:zYt$0sp"Ϙ`؀k,c(.\;0W}<˭tB sEݮȧi 9ӳF"J^W"aN!ĴzR@1k*שªT*jo5i-(҈i%ŭ˻ҳ=qT2_v Vn=;y~mc~v߮jQ6Ֆ6&WobJNr1%Mi¦Pr:CRV!ie:MHY ZeYi~gAci@H'RfEy߿zJESp;0r[QR1cI6>h"df_+!MwJD@TRfˉ'B%*$LQhS(']Eo}}rPvkkK[f{2 uŘOE;N#v26DJe:wIm{8EJF;oU^ړ{Yp7mmMiao{7V5]<][WzwF4/˔+'wgUԗpwGvm.}]m{hj[Z)$XX5N#Tf1 ɟVud ;8ekr۞[Jq}7mq_#|hλ^M·ܪ쁮Ɯtkj_D^SFV;\!-3LߒˣK0b!,VfL>5ŋUTĆmTu mQraNVL7⯦Gi1K̝ovjepUmq[rgWnhVijUә*Ew/K~e6gJɈKVNMURF(*rP a2hMq4OZ缿ЫkTɯ@VsS+SlT:f2T)MpT::чsK$دĕ=}<[7:J VRJu R9C9G1V4yKǔE]vHK+XKnv|9+2E[\\"hW͈pNHs>k6mt{}ɴވK"iY:ܙ;sJiS>QakKDΣS_jԏfFNoMWFQnuARVMhhKǺ9l݅&´!nүKR?z6"fJi BvP0eO75U{XMAs+ToKIƐ&6czr_sӷ]I{-^[b햺۵s'ɪU:ktQ/$}FW@DC62Tm|ZLp2݀&|LǫEL{1 \çBK>g.\ -  22:x፱yceɟLcZ V b OV .}\ [;-`@eeːuf Ob1i2q˓?v ƴA3A3/As] /1s* 0vZ "O?6youker-assistant-1.0.1/qml/img/weather/d31.gif000644 001750 001750 00000005257 12312451003 021432 0ustar00saucysaucy000000 000000 GIF89a003o䒜xZaEs~MR7xǹWm.X֫)InDzԲ;3tM}1GqxYޫ%daPME^>z޻=DAz:vp8s@gTA}3p^Vի2߱(v^vo2:Kzܭi>|;vLhF~6s޶4\tȧ9W٬&Yޮ$aN]>Rr֛ԣoMw~;x׼En4٫"f8v6JSfr˱EmKU[|ᄙtwVƪDϺOD٭.+J^M%}0%Tty>zA*3JAq8P#m$'rD h$LA `0 %\%ae.Iqn^a ?X|76lp`?.< TorӛWp]p<M+ c"@-Yn KUTq Y+D+1<&lD"юnᧆ؂~-W%pL4$  _1.)PF ? XT~!t@ J ?68 ʇ=ġ%( 0Jpb5 !BR-!KP 4Xֲx J+4`+Xv=`0G {ZSt.jpK| n N` HZ1q#BBp2 jR5-;^2p+$.txE%@G.!0.\%/Lc u€Y˅=T|4@ sAK*na\ ׼s(8!s ,pC1(XPXl(@"diqq Np@`  o}#.L0Dv!n&āAQ.s@O 'MAע.B\PEC ^BxX gDs@1чv'jZ̡ߔ=M\8!r?=h7: ;youker-assistant-1.0.1/src/src.pro000644 001750 001750 00000005044 12312451003 017442 0ustar00saucysaucy000000 000000 TEMPLATE = app TARGET = youker-assistant QT += core gui phonon declarative dbus network xml inst1.files += image/youker-assistant.png inst1.path = /usr/share/pixmaps inst2.files += ../youker-assistant.desktop inst2.path = /usr/share/applications target.source += $$TARGET target.path = /usr/bin INSTALLS += inst1 \ inst2 \ target include(../qtsingleapplication/src/qtsingleapplication.pri) LIBS += -lfcitx-qt -lfcitx-config -lfcitx-utils # Additional import path used to resolve QML modules in Creator's code model #QML_IMPORT_PATH = # The .cpp file which was generated for your project. Feel free to hack it. HEADERS += youker-application.h \ quibo.h \ logindialog.h \ accountcache.h \ httpauth.h \ systemdispatcher.h \ sessiondispatcher.h \ modaldialog.h \ warningdialog.h \ messagedialog.h \ qmlaudio.h \ qrangemodel.h \ qrangemodel_p.h \ qstyleitem.h \ qwheelarea.h \ qtmenu.h \ qtmenuitem.h \ qtoplevelwindow.h \ qcursorarea.h \ tray.h \ fcitxcfgwizard.h \ qtkeytrans.h \ qtkeytransdata.h \ fcitxwarndialog.h \ kthread.h \ suspensionframe.h \ alertdialog.h \ toolkits.h \ # skinswidget.h \ # skingrid.h \ locationdialog.h \ wizarddialog.h \ changecitydialog.h \ util.h \ processmanager.h \ yprocess.h \ devicemanager.h \ kfontdialog.h \ aboutdialog.h SOURCES += main.cpp \ youker-application.cpp \ logindialog.cpp \ accountcache.cpp \ httpauth.cpp \ quibo.cpp \ systemdispatcher.cpp \ sessiondispatcher.cpp \ modaldialog.cpp \ warningdialog.cpp \ messagedialog.cpp \ qmlaudio.cpp \ qrangemodel.cpp \ qstyleitem.cpp \ qwheelarea.cpp \ qtmenu.cpp \ qtmenuitem.cpp \ qtoplevelwindow.cpp \ qcursorarea.cpp \ tray.cpp \ fcitxcfgwizard.cpp \ qtkeytrans.cpp \ fcitxwarndialog.cpp \ kthread.cpp \ suspensionframe.cpp \ alertdialog.cpp \ toolkits.cpp \ # skinswidget.cpp \ # skingrid.cpp \ locationdialog.cpp \ wizarddialog.cpp \ changecitydialog.cpp \ util.cpp \ processmanager.cpp \ yprocess.cpp \ devicemanager.cpp \ kfontdialog.cpp \ aboutdialog.cpp RESOURCES += pixmap.qrc FORMS += \ quibo.ui \ logindialog.ui \ modaldialog.ui \ warningdialog.ui \ messagedialog.ui \ tray.ui \ fcitxwarndialog.ui \ suspensionframe.ui \ alertdialog.ui \ locationdialog.ui \ wizarddialog.ui \ changecitydialog.ui \ kfontdialog.ui \ aboutdialog.ui youker-assistant-1.0.1/qml/img/en/title/000755 001750 001750 00000000000 12312451003 020427 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/backends/youker-assistant-daemon/src/sessiondbus/daemon.py000644 001750 001750 00000120017 12312451003 030645 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import sys import os import glob import fcntl import shutil import logging import tempfile import subprocess import re from subprocess import PIPE import apt import apt_pkg import dbus import dbus.service import dbus.mainloop.glib import time import cleaner import pywapi import urllib2, urllib from urllib import urlencode from xml.dom.minidom import parseString import re import json import locale from beautify.desktop import Desktop from beautify.unity import Unity from beautify.theme import Theme from beautify.system import System from beautify.sound import Sound from beautify.filemanager import FileManager from beautify.cloudconfig import CloudConfig from sysinfo import Sysinfo from weather.weatherinfo import WeatherInfo from weather.yahoo import YahooWeather from appcollections.monitorball.monitor_ball import MonitorBall log = logging.getLogger('SessionDaemon') #from slider.wizard import Wizard INTERFACE = "com.ubuntukylin.session" UKPATH = "/" class SessionDaemon(dbus.service.Object): def __init__ (self, mainloop): #self.wizardconf = Wizard() self.cloudconf = CloudConfig(self) self.sysconf = Sysinfo() self.desktopconf = Desktop() self.unityconf = Unity() self.themeconf = Theme() #self.systemconf = System() self.systemconf = System(self) self.soundconf = Sound() self.ballconf = MonitorBall() self.fileconf = FileManager() self.weatherconf = WeatherInfo(self) self.yahooconf = YahooWeather(self) self.daemonsame = cleaner.SearchTheSame() self.daemonlarge = cleaner.ManageTheLarge() self.daemonunneed = cleaner.CleanTheUnneed() self.daemonoldkernel = cleaner.CleanTheOldkernel() self.daemoncache = cleaner.CleanTheCache() self.__cities = [] self.__idList = [] self.__latList = [] self.__lonList = [] bus_name = dbus.service.BusName(INTERFACE, bus=dbus.SessionBus()) dbus.service.Object.__init__(self, bus_name, UKPATH) self.mainloop = mainloop # a dbus method which open folder by kobe @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def open_folder(self, path): root_path = os.path.expanduser(path) #if not os.path.isdir(root_path): # path = os.path.dirname(path) if os.path.isdir(root_path): os.system("xdg-open '%s' &" % root_path) # a dbus method which download and use kuaipan cloud conf by kobe @dbus.service.method(INTERFACE, in_signature='', out_signature='') def download_kysoft_cloud_conf(self): self.cloudconf.download_kysoft_cloud_conf() # a dbus method which upload conf to kuaipan cloud by kobe @dbus.service.method(INTERFACE, in_signature='', out_signature='') def upload_kysoft_cloud_conf(self): self.cloudconf.upload_kysoft_cloud_conf() # a dbus signal which download and use kuaipan cloud conf by kobe @dbus.service.signal(INTERFACE, signature='s') def download_cloud_conf_signal(self, download): pass # a dbus signal which upload conf to kuaipan cloud by kobe @dbus.service.signal(INTERFACE, signature='s') def upload_cloud_conf_signal(self, upload): pass # a dbus signal which tell widget to change titlebar postion by kobe @dbus.service.signal(INTERFACE, signature='s') def change_titlebar_position(self, position): pass #@dbus.service.method(INTERFACE, in_signature='', out_signature='') #def display_slide_show(self): # self.wizardconf.show_slider() @dbus.service.method(INTERFACE, in_signature='s', out_signature='s') def get_yahoo_city_id(self, geonameId): #""" Get Yahoo id from geonameid """ #print geonameId#1816670 yahoo_id = '' baseurl = 'http://api.geonames.org/getJSON' params = {'geonameId': geonameId, 'username': 'kobe'} url = '?'.join((baseurl, urlencode(params))) try: handler = urllib2.urlopen(url) except urllib2.URLError: print "error" content_type = handler.info().dict['content-type'] try: charset = re.search('charset\=(.*)',content_type).group(1) except AttributeError: charset = 'utf-8' if charset.lower() != 'utf-8': json_response = handler.read().decode(charset).encode('utf-8') else: json_response = handler.read() city = json.loads(json_response) handler.close() if 'adminName1' in city: displayed_city_name = u', '.join((city['name'], city['adminName1'], city['countryName'])) elif 'name' in city: displayed_city_name = u', '.join((city['name'], city['countryName'])) else: return #print displayed_city_name#Beijing, Beijing, China woeid_result = pywapi.get_woeid_from_yahoo(displayed_city_name) #print woeid_result#{'count': 1, 0: (u'2151330', u'Beijing, Beijing, China')} if 'error' in woeid_result: return else: # only look at the the first woeid result woeid = woeid_result[0][0] location_code = woeid #print location_code#2151330 # Get old Yahoo id by woeid url = 'http://weather.yahooapis.com/forecastrss?w=%s' % woeid#http://weather.yahooapis.com/forecastrss?w=2151330 try: handler = urllib2.urlopen(url) except urllib2.URLError: return content_type = handler.info().dict['content-type'] try: charset = re.search('charset\=(.*)',content_type).group(1) except AttributeError: charset = 'utf-8' if charset.lower() != 'utf-8': xml_response = handler.read().decode(charset).encode('utf-8') else: xml_response = handler.read() dom = parseString(xml_response) handler.close() try: guid_value = dom.getElementsByTagName('guid')[0].firstChild.nodeValue except (AttributeError, IndexError): dom.unlink() return p = re.compile('([^_]*)_') m = p.match(guid_value) try: yahoo_id = m.group(1) except AttributeError: print "No yahoo id via woeid. " dom.unlink() return yahoo_id # geonameid @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_geonameid_list(self): return self.__idList # 经度 @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_longitude_list(self): return self.__lonList # 纬度 @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_latitude_list(self): return self.__latList @dbus.service.method(INTERFACE, in_signature='s', out_signature='as') def search_city_names(self, search_string): try: (localeName, encode) = locale.getdefaultlocale() if localeName is not None: locale_name = localeName.split('_')[0] else: locale_name = "en" baseurl = 'http://api.geonames.org/searchJSON' params = {'q': search_string, 'featureClass': 'P', 'maxRows': '10', 'lang': locale_name, 'username': 'kobe'} url = '?'.join((baseurl, urlencode(params))) #print url#http://api.geonames.org/searchJSON?q=beijing&lang=zh&username=kobe&maxRows=10&featureClass=P handler = urllib2.urlopen(url) content_type = handler.info().dict['content-type'] try: charset = re.search('charset\=(.*)', content_type).group(1) except AttributeError: charset = 'utf-8' if charset.lower() != 'utf-8': json_response = handler.read().decode(charset).encode('utf-8') else: json_response = handler.read() cities = json.loads(json_response) handler.close() #print type(cities) self.__cities = [] self.__idList = [] self.__latList = [] self.__lonList = [] for city in cities['geonames']: if 'adminName2' in city: displayed_city_name = u', '.join( (city['name'], city['adminName1'], city['adminName1'], city['countryName']) ) elif 'adminName1' in city: displayed_city_name = u', '.join( (city['name'], city['adminName1'], city['countryName']) ) else: displayed_city_name = u', '.join((city['name'], city['countryName'])) self.__cities.append(displayed_city_name.encode('utf-8')) self.__idList.append(unicode(city['geonameId'])) self.__latList.append(unicode(city['lat'])) self.__lonList.append(unicode(city['lng'])) except urllib2.URLError: print "error" return self.__cities @dbus.service.method(INTERFACE, in_signature='as', out_signature='') def onekey_scan_function(self, mode_list): onekeyfunc_obj = cleaner.OneKeyClean() onekeyfunc_obj.get_onekey_crufts(self, mode_list) self.scan_complete_msg('onekey') @dbus.service.method(INTERFACE, in_signature='s', out_signature='i') def scan_history_records(self, flag): historyfunc_obj = cleaner.CleanTheHistory() crufts = historyfunc_obj.get_history_crufts(flag) figure = None if isinstance(crufts, list): figure = sum([int(one.split('<2_2>')[-1]) for one in crufts]) elif crufts in 'True': figure = -99 elif crufts in 'No': figure = -1 return figure @dbus.service.method(INTERFACE, in_signature='', out_signature='i') def scan_system_history(self): daemonsystem = cleaner.CleanSystemHistory() url = daemonsystem.get_scan_result() self.scan_complete_msg('system') return len(url) #@dbus.service.method(INTERFACE, in_signature='', out_signature='i') #def scan_dash_history(self): # daemondash = cleaner.CleanDashHistory() # num = daemondash.get_scan_result() # return num # the function of search the same file below path ### input-'path' output-['filea<2_2>filea','fileb<2_2>fileb'....] #@dbus.service.method(INTERFACE, in_signature='s', out_signature='as') #def scan_of_same(self, path): # tmp_list = self.daemonsame.get_scan_result(path) # self.scan_complete_msg('same') # return tmp_list # the function of sort the hundred files below path betown big to small ### input-'path' output-['size<2_2>biggestfile<2_2>filestyle', 'size...] @dbus.service.method(INTERFACE, in_signature='is', out_signature='as') def scan_of_large(self, size, path): tmp_list = self.daemonlarge.get_scan_result(size, path) self.scan_complete_msg('large') return tmp_list # the function of clean the cookies records @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def cookies_scan_function(self, flag): cookiesfunc_obj = cleaner.CleanTheCookies(self) cookiesfunc_obj.get_cookie_crufts(flag, self) @dbus.service.method(INTERFACE, in_signature='as', out_signature='') def package_scan_function(self, mode_list): packagefunc_obj = cleaner.CleanTheSpare() try: packagefunc_obj.get_all_package_crufts(mode_list, self) except Exception, e: pass else: pass @dbus.service.method(INTERFACE, in_signature='ass', out_signature='') def cache_scan_function(self, mode_list, flag): cachefunc_obj = cleaner.CleanTheCache() try: cachefunc_obj.get_all_cache_crufts(mode_list, flag, self) except Exception, e: pass else: pass # a dbus signal which means access weather by kobe @dbus.service.signal(INTERFACE, signature='ss') def access_weather(self, key, msg): pass # a dbus signal which means scan complete by kobe @dbus.service.signal(INTERFACE, signature='s') def scan_complete(self, msg): pass @dbus.service.signal(INTERFACE, signature='ssss') def data_transmit_by_cache(self, flag0, path, flag1, size): pass #@dbus.service.signal(INTERFACE, signature='ss') #def path_transmit_by_cache(self, flag, path): # pass @dbus.service.signal(INTERFACE, signature='ssss') def data_transmit_by_package(self, flag, name, summary, size): pass @dbus.service.signal(INTERFACE, signature='sss') def data_transmit_by_cookies(self, flag, domain, num): pass #@dbus.service.signal(INTERFACE, signature='i') #def data_transmit_by_history(self, num): # pass #@dbus.service.signal(INTERFACE, signature='s') #def browser_status_by_history(self, status): # pass @dbus.service.signal(INTERFACE, signature='ss') def data_transmit_by_large(self, size, filepath): pass @dbus.service.signal(INTERFACE, signature='s') def cache_transmit_complete(self, flag): pass @dbus.service.signal(INTERFACE, signature='') def package_transmit_complete(self): pass @dbus.service.signal(INTERFACE, signature='s') def cookies_transmit_complete(self, msg): pass #@dbus.service.signal(INTERFACE, signature='s') #def history_transmit_complete(self, msg): # pass @dbus.service.signal(INTERFACE, signature='') def large_transmit_complete(self): pass @dbus.service.signal(INTERFACE, signature='ss') def total_data_transmit(self, flag, msg): pass @dbus.service.signal(INTERFACE, signature='s') def display_scan_process(self, msg): pass def scan_complete_msg(self, para): self.scan_complete(para) def display_scan_process_msg(self, para): self.display_scan_process(para) @dbus.service.method(INTERFACE, in_signature='', out_signature='') def exit(self): self.mainloop.quit() @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_session_daemon(self): return "SessionDaemon" @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_system_message(self): return self.sysconf.get_sys_msg() # -------------------------beautify start here------------------------- # -------------------------desktop------------------------- @dbus.service.method(INTERFACE, in_signature='ss', out_signature='b') def get_default_desktop_bool(self, schema, key): return self.desktopconf.get_default_schema_value(schema, key) @dbus.service.method(INTERFACE, in_signature='sss', out_signature='') def set_default_desktop(self, schema, key, type): self.desktopconf.set_default_schema_value(schema, key, type) # show desktop icons @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_show_desktop_icons(self, flag): return self.desktopconf.set_show_desktop_icons(flag) # get show desktop icons @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_show_desktop_icons(self): return self.desktopconf.get_show_desktop_icons() # show home folder @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_show_homefolder(self, flag): return self.desktopconf.set_show_homefolder(flag) # get show homefolder @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_show_homefolder(self): return self.desktopconf.get_show_homefolder() # show network @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_show_network(self, flag): return self.desktopconf.set_show_network(flag) # get show network @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_show_network(self): return self.desktopconf.get_show_network() # show trash @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_show_trash(self, flag): return self.desktopconf.set_show_trash(flag) # get show trash @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_show_trash(self): return self.desktopconf.get_show_trash() # show devices @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_show_devices(self, flag): return self.desktopconf.set_show_devices(flag) # get show devices @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_show_devices(self): return self.desktopconf.get_show_devices() # -------------------------unity------------------------- @dbus.service.method(INTERFACE, in_signature='ss', out_signature='i') def get_default_unity(self, name, key): return self.unityconf.get_default_schema_value(name, key) @dbus.service.method(INTERFACE, in_signature='ssi', out_signature='') def set_default_unity(self, key, type, value): self.unityconf.set_default_schema_value(key, type, value) @dbus.service.method(INTERFACE, in_signature='', out_signature='') def set_default_launcher_have_showdesktopicon(self): self.unityconf.set_default_launcher_have_showdesktopicon() # set launcher auto hide mode @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_launcher_autohide(self, flag): return self.unityconf.set_launcher_autohide(flag) # get launcher auto hide mode @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_launcher_autohide(self): return self.unityconf.get_launcher_autohide() # launcher icon size 32-64 @dbus.service.method(INTERFACE, in_signature='i', out_signature='b') def set_launcher_icon_size(self, size): return self.unityconf.set_launcher_icon_size(size) # get launcher icon size @dbus.service.method(INTERFACE, in_signature='', out_signature='i') def get_launcher_icon_size(self): return self.unityconf.get_launcher_icon_size() # set launcher 'show desktop' icon @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_launcher_have_showdesktopicon(self, flag): return self.unityconf.set_launcher_have_showdesktopicon(flag) # get is launcher have 'show desktop' icon @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_launcher_have_showdesktopicon(self): return self.unityconf.get_launcher_have_showdesktopicon() # -------------------------theme------------------------- @dbus.service.method(INTERFACE, in_signature='ss', out_signature='s') def get_default_font_sring(self, schema, key): return self.themeconf.get_default_schema_value(schema, key) @dbus.service.method(INTERFACE, in_signature='ss', out_signature='d') def get_default_font_double(self, schema, key): return self.themeconf.get_default_schema_value(schema, key) @dbus.service.method(INTERFACE, in_signature='sss', out_signature='') def set_default_font(self, schema, key, type): self.themeconf.set_default_schema_value(schema, key, type) # get themes @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_themes(self): return self.themeconf.get_themes() # get current theme @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_theme(self): return self.themeconf.get_theme() # set GTK theme and window theme @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_theme(self, theme): self.themeconf.set_theme(theme) # ----------------window theme---------------- @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_window_themes(self): return self.themeconf.get_window_themes() # get current window theme @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_current_window_theme(self): return self.themeconf.get_current_window_theme() @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_window_theme(self, theme): self.themeconf.set_window_theme(theme) # get icon themes @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_icon_themes(self): return self.themeconf.get_icon_themes() # get current icon theme @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_icon_theme(self): return self.themeconf.get_icon_theme() # set icon theme @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_icon_theme(self, theme): self.themeconf.set_icon_theme(theme) # get cursor themes @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_cursor_themes(self): return self.themeconf.get_cursor_themes() # get current cursor theme @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_cursor_theme(self): return self.themeconf.get_cursor_theme() # set cursor theme @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_cursor_theme(self, theme): self.themeconf.set_cursor_theme(theme) # get cursor size @dbus.service.method(INTERFACE, in_signature='', out_signature='i') def get_cursor_size(self): return self.themeconf.get_cursor_size() # set cursor size @dbus.service.method(INTERFACE, in_signature='i', out_signature='') def set_cursor_size(self, size): self.themeconf.set_cursor_size(size) # -------------------------fonts------------------------- # get font @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_font(self): return self.themeconf.get_font() # set font @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def set_font(self, font): return self.themeconf.set_font(font) # get desktop font @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_desktop_font(self): return self.themeconf.get_desktop_font() # set desktop font @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def set_desktop_font(self, font): return self.themeconf.set_desktop_font(font) # get document font @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_document_font(self): return self.themeconf.get_document_font() # set document font @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def set_document_font(self, font): return self.themeconf.set_document_font(font) # get monospace font @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_monospace_font(self): return self.themeconf.get_monospace_font() # set monospace font (use this func to change document font in ubuntu) @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def set_monospace_font(self, font): return self.themeconf.set_monospace_font(font) # get window title font @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_window_title_font(self): return self.themeconf.get_window_title_font() # set window title font @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def set_window_title_font(self, font): return self.themeconf.set_window_title_font(font) # get font zoom @dbus.service.method(INTERFACE, in_signature='', out_signature='d') def get_font_zoom(self): return self.themeconf.get_font_zoom() # set font zoom @dbus.service.method(INTERFACE, in_signature='d', out_signature='b') def set_font_zoom(self, zoom): return self.themeconf.set_font_zoom(zoom) # get smooth style list @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_smooth_style_list(self): return self.themeconf.get_all_hinting() # get smooth style @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_smooth_style(self): return self.themeconf.get_hinting() # set smooth style @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def set_smooth_style(self, value): return self.themeconf.set_hinting(value) # get antialiasing style list @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_antialiasing_style_list(self): return self.themeconf.get_all_antialiasing() # get antialiasing style @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_antialiasing_style(self): return self.themeconf.get_antialiasing() # set antialiasing style @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def set_antialiasing_style(self, value): return self.themeconf.set_antialiasing(value) # -------------------------scrollbars------------------------- @dbus.service.method(INTERFACE, in_signature='ss', out_signature='s') def get_default_system_sring(self, schema, key): return self.systemconf.get_default_schema_value(schema, key) @dbus.service.method(INTERFACE, in_signature='ss', out_signature='b') def get_default_system_bool(self, schema, key): return self.systemconf.get_default_schema_value(schema, key) @dbus.service.method(INTERFACE, in_signature='sss', out_signature='') def set_default_system(self, schema, key, type): self.systemconf.set_default_schema_value(schema, key, type) # set scrollbars mode overlay @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def set_scrollbars_mode_overlay(self): return self.systemconf.set_scrollbars_mode_overlay() # set scrollbars mode legacy @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def set_scrollbars_mode_legacy(self): return self.systemconf.set_scrollbars_mode_legacy() # get scrollbars mode @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_scrollbars_mode(self): return self.systemconf.get_scrollbars_mode() # -------------------------touchpad------------------------- # enable/disable the touchpad @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_touchpad_enable(self, flag): return self.systemconf.set_touchpad_enable(flag) # get is touchpad enable @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_touchpad_enable(self): return self.systemconf.get_touchpad_enable() # set touch scrolling use horizontal @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_touchscrolling_use_horizontal(self, flag): return self.systemconf.set_touchscrolling_use_horizontal(flag) # get is touch scrolling use horizontal @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_touchscrolling_use_horizontal(self): return self.systemconf.get_touchscrolling_use_horizontal() # set touch scrolling mode edge @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def set_touchscrolling_mode_edge(self): return self.systemconf.set_touchscrolling_mode_edge() # set touch scrolling mode two-finger @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def set_touchscrolling_mode_twofinger(self): return self.systemconf.set_touchscrolling_mode_twofinger() # get touchpad scrolling mode @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_touchscrolling_mode(self): return self.systemconf.get_touchscrolling_mode() # -------------------------window------------------------- # set window button alignment left @dbus.service.method(INTERFACE, in_signature='', out_signature='') def set_window_button_align_left(self): self.systemconf.set_window_button_align_left() # set window button alignment right @dbus.service.method(INTERFACE, in_signature='', out_signature='') def set_window_button_align_right(self): self.systemconf.set_window_button_align_right() # get window button alignment @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_window_button_align(self): return self.systemconf.get_window_button_align() # set right click menus have icons @dbus.service.method(INTERFACE, in_signature='b', out_signature='b') def set_menus_have_icons(self, flag): return self.systemconf.set_menus_have_icons(flag) # get is right click menus have icons @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_menus_have_icons(self): return self.systemconf.get_menus_have_icons() # get titlebar wheel action @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_titlebar_wheel(self): return self.systemconf.get_titlebar_wheel() # get current titlebar wheel @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_current_titlebar_wheel(self): return self.systemconf.get_current_titlebar_wheel() # set titlebar wheel @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_titlebar_wheel(self, value): self.systemconf.set_titlebar_wheel(value) # get titlebar double @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_titlebar_double(self): return self.systemconf.get_titlebar_double() # get current titlebar double @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_current_titlebar_double(self): return self.systemconf.get_current_titlebar_double() # set titlebar double @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_titlebar_double(self, value): self.systemconf.set_titlebar_double(value) # get titlebar middle @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_titlebar_middle(self): return self.systemconf.get_titlebar_middle() # get current titlebar middle @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_current_titlebar_middle(self): return self.systemconf.get_current_titlebar_middle() # set titlebar middle @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_titlebar_middle(self, value): self.systemconf.set_titlebar_middle(value) # get titlebar right @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_titlebar_right(self): return self.systemconf.get_titlebar_right() # get current titlebar right @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_current_titlebar_right(self): return self.systemconf.get_current_titlebar_right() # set titlebar right @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_titlebar_right(self, value): self.systemconf.set_titlebar_right(value) # -------------------------sound------------------------- @dbus.service.method(INTERFACE, in_signature='ss', out_signature='s') def get_default_sound_string(self, schema, key): return self.soundconf.get_default_schema_value(schema, key) @dbus.service.method(INTERFACE, in_signature='sss', out_signature='') def set_default_sound(self, schema, key, type): self.soundconf.set_default_schema_value(schema, key, type) # set enable the login music @dbus.service.method(INTERFACE, in_signature='b', out_signature='') def set_login_music_enable(self, flag): self.soundconf.set_login_music_enable(flag) # get enable the login music @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_login_music_enable(self): return self.soundconf.get_login_music_enable() # get current sound theme @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_sound_theme(self): return self.soundconf.get_sound_theme() # set sound theme @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def set_sound_theme(self, theme): self.soundconf.set_sound_theme(theme) # -------------------------filemanager------------------------- @dbus.service.method(INTERFACE, in_signature='ss', out_signature='b') def get_default_filemanager_bool(self, schema, key): return self.fileconf.get_default_schema_value(schema, key) @dbus.service.method(INTERFACE, in_signature='ss', out_signature='i') def get_default_filemanager_int(self, schema, key): return self.fileconf.get_default_schema_value(schema, key) @dbus.service.method(INTERFACE, in_signature='sss', out_signature='') def set_default_filemanager(self, schema, key, type): self.fileconf.set_default_schema_value(schema, key, type) # Set: Use the location entry instead of the pathbar @dbus.service.method(INTERFACE, in_signature='b', out_signature='') def set_location_replace_pathbar(self, flag): self.fileconf.set_location_replace_pathbar(flag) # Get: Use the location entry instead of the pathbar @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_location_replace_pathbar(self): return self.fileconf.get_location_replace_pathbar() # Set: Automatically mount media @dbus.service.method(INTERFACE, in_signature='b', out_signature='') def set_auto_mount_media(self, flag): self.fileconf.set_auto_mount_media(flag) # Get: Automatically mount media @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_auto_mount_media(self): return self.fileconf.get_auto_mount_media() # Set: Automatically open a folder @dbus.service.method(INTERFACE, in_signature='b', out_signature='') def set_auto_open_folder(self, flag): self.fileconf.set_auto_open_folder(flag) # Get: Automatically open a folder @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_auto_open_folder(self): return self.fileconf.get_auto_open_folder() # Set: Prompt or autorun/autostart programs @dbus.service.method(INTERFACE, in_signature='b', out_signature='') def set_prompt_autorun_programs(self, flag): self.fileconf.set_prompt_autorun_programs(flag) # Get: Prompt or autorun/autostart programs @dbus.service.method(INTERFACE, in_signature='', out_signature='b') def get_prompt_autorun_programs(self): return self.fileconf.get_prompt_autorun_programs() # Set: Thumbnail icon size (pixels) @dbus.service.method(INTERFACE, in_signature='i', out_signature='') def set_thumbnail_icon_size(self, size): self.fileconf.set_thumbnail_icon_size(size) # Get: Thumbnail icon size (pixels) @dbus.service.method(INTERFACE, in_signature='', out_signature='i') def get_thumbnail_icon_size(self): return self.fileconf.get_thumbnail_icon_size() # Set: Thumbnail cache time (days) @dbus.service.method(INTERFACE, in_signature='i', out_signature='') def set_thumbnail_cache_time(self, size): self.fileconf.set_thumbnail_cache_time(size) # Get: Thumbnail cache time (days) @dbus.service.method(INTERFACE, in_signature='', out_signature='i') def get_thumbnail_cache_time(self): return self.fileconf.get_thumbnail_cache_time() # Set: Maximum thumbnail cache size (MB) @dbus.service.method(INTERFACE, in_signature='i', out_signature='') def set_thumbnail_cache_size(self, size): self.fileconf.set_thumbnail_cache_size(size) # Get: Maximum thumbnail cache size (MB) @dbus.service.method(INTERFACE, in_signature='', out_signature='i') def get_thumbnail_cache_size(self): return self.fileconf.get_thumbnail_cache_size() # -------------------------beautify end here------------------------- # -------------------------monitorball------------------------- # get cpu percent @dbus.service.method(INTERFACE, in_signature='', out_signature='d') def get_cpu_percent(self): return self.ballconf.get_cpu_percent() # get total memory @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_total_memory(self): return self.ballconf.get_total_memory() # get used memory @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_used_memory(self): return self.ballconf.get_used_memory() # get free memory @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_free_memory(self): return self.ballconf.get_free_memory() # get network flow total, return (up, down) @dbus.service.method(INTERFACE, in_signature='', out_signature='as') def get_network_flow_total(self): return self.ballconf.get_network_flow_total() # -------------------------weather------------------------- # get weather information of six days @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def get_forecast_weahter(self, cityId): self.weatherconf.getWeatherForecast(cityId) # get real forecast weather information of six days @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_forecast_dict(self): return self.weatherconf.get_forecast_dict() # get current day's weather @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def get_current_weather(self, cityId): self.weatherconf.getCurrentWeather(cityId) # get current day's weather from yahoo 0.3.3 @dbus.service.method(INTERFACE, in_signature='ass', out_signature='') def get_current_yahoo_weather(self, latlon, cityId): self.yahooconf.getYahooCurrentWeather(latlon, cityId) @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_current_weather_dict(self): return self.weatherconf.get_current_weather_dict() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_current_yahoo_weather_dict(self): return self.yahooconf.get_current_yahoo_weather_dict() @dbus.service.method(INTERFACE, in_signature='', out_signature='a{sv}') def get_yahoo_forecast_dict(self): return self.yahooconf.get_yahoo_forecast_dict() # get current PM2.5 @dbus.service.method(INTERFACE, in_signature='s', out_signature='') def get_current_pm25(self, cityId): self.weatherconf.getPM25Info(cityId) @dbus.service.method(INTERFACE, in_signature='', out_signature='s') def get_pm25_str(self): return self.weatherconf.get_pm25_str() # update weather data @dbus.service.method(INTERFACE, in_signature='s', out_signature='b') def update_weather_data(self, cityId): return self.weatherconf.updateCurrentWeather(cityId) # get cityid from citynamegetPM25Info @dbus.service.method(INTERFACE, in_signature='s', out_signature='s') def get_city_id(self, cityName): return self.weatherconf.getCityId(cityName) youker-assistant-1.0.1/qml/func/page/SystemBox.qml000644 001750 001750 00000006640 12312451003 022455 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "../others" as Others Item { id: screen; width: parent.width; height: 475 Rectangle { id: setting_widget anchors.fill: parent // color: "white" //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //更新列表 function updateList() { funcmodel.clear();//清空 funcmodel.append({"icon": "../../img/icons/checkscreen.png", "name": qsTr("Dead pixel test"), "flag": "CheckScreen"});//坏点检测 funcmodel.append({"icon": "../../img/icons/bootanimation.png", "name": qsTr("Boot Animation"), "flag": "BootAnimation"});//开机动画 funcmodel.append({"icon": "../../img/icons/fcitx.png", "name": qsTr("Fcitx Configure"), "flag": "FcitxConfigtool"});//输入法配置 funcmodel.append({"icon": "../../img/icons/processmanager.png", "name": qsTr("Task Manager"), "flag": "ProcessManager"});//任务管理器 } Item { id: views width: parent.width height: parent.height ListModel { id: funcmodel Component.onCompleted: { setting_widget.updateList(); } } Common.Label { id: label text: qsTr("Default toolkits")//默认工具箱 font.bold: true font.pixelSize: 16 color: "#383838" anchors { top: parent.top topMargin: 30 left: parent.left leftMargin: 35 } } Item { width: parent.width - 30*2 anchors { top: label.bottom topMargin: 10 left: parent.left leftMargin: 30 } GridView { id: gridView anchors.fill: parent model: funcmodel delegate: Others.SettingsDelegate {} cacheBuffer: 1000 //竖列 cellWidth: (parent.width-2)/6; cellHeight: cellWidth //横列 // cellWidth: (parent.width-2)/6; cellHeight: cellWidth highlight: Image {source: "../../img/toolWidget/box-hover.png"} // highlight: Rectangle { color: "lightsteelblue"; radius: 5 }//kobe:设置选中项深色块 focus: true } } Item { id: foreground; anchors.fill: parent } } } } youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/sound.py000644 001750 001750 00000014707 12312451003 030011 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import shutil import gsettings import utils class Sound: homedir = '' def __init__(self): self.homedir = utils.get_home_dir() # sometimes need set homedir manual fe:the backend run by root dbus def set_homedir(self, homedir): self.homedir = homedir # -----------------默认值----------------- # Get Default Value def get_default_schema_value(self, schema, key): return gsettings.get_schema_value(schema, key) # Set Default Value def set_default_schema_value(self, schema, key, type): default_value = self.get_default_schema_value(schema, key) if default_value is not None: return gsettings.set(schema, None, key, type, default_value) else: raise NotImplemented # ---------------------------------- # enable the login music def set_login_music_enable(self, flag): configdir = self.homedir + '/.config/autostart' desktopfile = '/usr/share/youker-assistant-daemon/autostart/libcanberra-login-sound.desktop' targetfile = configdir + '/libcanberra-login-sound.desktop' if flag: if os.path.exists(configdir): pass else: os.makedirs(configdir) shutil.copy(desktopfile, targetfile) else: if os.path.exists(targetfile): os.remove(targetfile) else: pass # get enable the login music. need fix text check in 'libcanberra-login-sound.desktop' def get_login_music_enable(self): targetfile = self.homedir + '/.config/autostart/libcanberra-login-sound.desktop' if os.path.exists(targetfile): return True else: return False # get sound themes & check and bak sounds def get_sound_themes(self): bakDir = '/var/lib/youker-assistant-daemon/sound-theme/' dirs = ('/usr/share/sounds', os.path.join(self.homedir, ".sounds")) filters = ('index.theme', '') valid = utils.check_dirs(dirs, filters, True) valid.sort() # check and bak sounds for st in valid: if(os.path.exists(bakDir + st) == False): if(os.path.exists('/usr/share/sounds/' + st)): shutil.copytree('/usr/share/sounds/' + st, bakDir + st) else: shutil.copytree(self.homedir + '.sounds/' + st, bakDir + st) return valid # get current sound theme def get_sound_theme(self): return gsettings.get('org.gnome.desktop.sound', None, 'theme-name', 'string') # set sound theme def set_sound_theme(self, theme): gstheme = gsettings.get_schema('org.gnome.desktop.sound') gstheme.set_string('theme-name',theme) # get sounds in current theme def get_sounds(self): results = [] currentTheme = self.get_sound_theme() if(os.path.exists(os.path.join(self.homedir, ".sounds") + currentTheme)): soundDir = os.path.join(self.homedir, ".sounds") + currentTheme elif(os.path.exists('/usr/share/sounds/' + currentTheme)): soundDir = '/usr/share/sounds/' + currentTheme else: return results for sound in os.listdir(soundDir + '/stereo'): # pass the link file if(os.path.islink(soundDir + '/stereo/' + sound) == False): results.append(soundDir + '/stereo/' + sound) results.sort() return results # replace sound file def replace_sound_file(self, newSoundFile, targetSoundFile): newSoundFile = newSoundFile.encode('utf-8') targetSoundFile = targetSoundFile.encode('utf-8') currentTheme = self.get_sound_theme() if(os.path.exists(os.path.join(self.homedir, ".sounds") + currentTheme)): soundDir = os.path.join(self.homedir, ".sounds") + currentTheme elif(os.path.exists('/usr/share/sounds/' + currentTheme)): soundDir = '/usr/share/sounds/' + currentTheme else: pass shutil.copy(newSoundFile, soundDir + '/stereo/' + targetSoundFile) # restore sound file def restore_sound_file(self, targetSoundFile): targetSoundFile = targetSoundFile.encode('utf-8') bakDir = '/var/lib/youker-assistant-daemon/sound-theme/' currentTheme = self.get_sound_theme() if(os.path.exists(os.path.join(self.homedir, ".sounds") + currentTheme)): soundDir = os.path.join(self.homedir, ".sounds") + currentTheme elif(os.path.exists('/usr/share/sounds/' + currentTheme)): soundDir = '/usr/share/sounds/' + currentTheme else: pass shutil.copy(bakDir + currentTheme + '/stereo/' + targetSoundFile, soundDir + '/stereo/' + targetSoundFile) # restore all sound file in current sound theme def restore_all_sound_file(self, soundTheme): bakSoundThemeDir = '/var/lib/youker-assistant-daemon/sound-theme/' + soundTheme if(os.path.exists(os.path.join(self.homedir, ".sounds") + soundTheme)): soundDir = os.path.join(self.homedir, ".sounds") + soundTheme elif(os.path.exists('/usr/share/sounds/' + soundTheme)): soundDir = '/usr/share/sounds/' + soundTheme else: pass for soundFile in os.listdir(bakSoundThemeDir + '/stereo'): shutil.copy(bakSoundThemeDir + '/stereo/' + soundFile, soundDir + '/stereo/' + soundFile) if __name__ == '__main__': sss = Sound() # print sss.get_sound_themes() # sss.restore_all_sound_file('ubuntu') # print sss.get_login_music_enable() # sss.set_login_music_enable(False) # print sss.get_sound_themes() # print sss.get_sound_theme() print sss.get_sounds() # sss.set_sound_theme('freedesktop') youker-assistant-1.0.1/000755 001750 001750 00000000000 12312451060 015342 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/src/fcitxwarndialog.h000644 001750 001750 00000002502 12312451003 021463 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef FCITXWARNDIALOG_H #define FCITXWARNDIALOG_H #include #include namespace Ui { class FcitxWarnDialog; } class FcitxWarnDialog : public QDialog { Q_OBJECT public: explicit FcitxWarnDialog(QWidget *parent = 0); ~FcitxWarnDialog(); signals: void fcitxWarntest(); public slots: void on_okButton_clicked(); private: Ui::FcitxWarnDialog *ui; QPoint dragPos; protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); bool eventFilter(QObject *obj, QEvent *event); }; #endif // FCITXWARNDIALOG_H youker-assistant-1.0.1/backends/youker-assistant-daemon/data/beautify/plymouth/existing/000755 001750 001750 00000000000 12312451003 032133 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/weather/n25.gif000644 001750 001750 00000005616 12312451003 021446 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P鬳ý߳˼䂋ƯƷͨӇūõʾѸԄ9\1R4U;]8Y6T">a!;Z%Bd+Kq,Lr)Fi-Jn.Kp5V/Mq6W*Dc1Os5U{2Pt9Y9Y9Y7U{/Ih.Gf:Z9W};Y`:Z;["@c >^&Fi&Eg#@_+Mr%Bb.Ou*Hj":U0Rw1Sx0Qv2Ty'A]4V{7Z5W|6X}9[4Qp4Mi>Uo}ĩǸ˽4U/M0N2P3Q;^4R5S1L6T7U@a<[ Ab5P"Dg!Cd:X!Bc6Q=\;Y!@_#Ba'Hk*Kn)Jl+Lo-Os,Mp-Nq)Hg2X}.Or/Ps-Mn0Ru0Qt.Op4X|3Ux2Sv6Y~3Tw7[5Wz.Lj6X{5Vy8Z}5Vw9\~8Y|:[|:SmD\uOe|t2O1M3O9X6S9V!Ba ?\'Eb+Kj-On6Z|6Xx8[{3M=Y3Z{2M!,00MzT*\ȰaGZIBSA43jȱnjL'o(S\ɲKh>!:Sj͚Ogrɳϟ{@cPBI 3 *5v \F>r o .,>$G>7T[M \H2|y0)`0 "O,uxpwA5|q/1 +?cuSC- -phB`SlMj3ݬw9\ հ$@S x !8a,L`XSJT5D%fGKcF <0 o1B[8BP-hGdՀ;L#/l#Vlaex-J ]QB. \,чCCjXV+@!Ql:cGO* [2T;QXi ;~/|1ZAE.r?&a#Lba/ (3F:jЃHAl!PB+p=xq%#V΄%0! asE/< D=r aS p!j$@u!|` 00 `CP?Q_ `@APc8Qiܣ(0z$}!F!V=C 1 #@F,j ̢b )AyA{$ ̐c\8/r4#HU* Իx7{kZG`D.>mD,!hr#&W7a, ZWm ~Wu@cx~4z[D!IF5l1pt {p,C>-DQXBB*[$ Bo1&bP9 ! <?@ah8*$k 3 gX"pB\ɐF21d0;Gy2 E0SQ&8?ԧN[>p&`NW(@WWЏ;youker-assistant-1.0.1/qml/img/icons/folder.png000644 001750 001750 00000001304 12312451003 021776 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<fIDATxb?l.>lb8🁑 "˂^) +5Xf"#h& ?# ?2ϧ?oS$_W @Z8~20{ylV> 2=hOcp&: |x߿1؄w%XoW}/Ɨ >?De6,v2 T*F/@M>30 s2īP ,A< `&@1ûH;㐟I$tk^x ?n>w6(: L*\߼HY|>и##R yD0|xuY !M0%Ղ8R×P_FX1"A@ 7h0O ?FIȄx r1|tG_74U,b:'s05O@@/~:/ $&qEQIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/GEIL.jpg000644 001750 001750 00000011453 12312451003 023526 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !AQqV a"2B#SR3$%EUu45&F7x!1AQaq32B$"b4TD5 ?&-qG&z76Q)m. SܨSSR~Pq(7&G.0&9nL.G.|S"|?F)KL_ %LR×9dIrƽ0^-@8l^EsMn.^˜:b&N;?T;~EA!§tuKN[?S; F; ӫhF#\To { 6r>#s})#^§t 0Wк{~Ϡ v0:?v_>ΥC `{G.o}QSb8>"7̨@?r/S;@KwVsܿ֜FΏJ{=6IɇL -U4io+ntfNo-P1ia"JҮgqH<R pIC1>|գ>5p۹|NR3uz@̙f{$ keM8\o[^v|$\XR5F ybE5NwWZ'T>1_I9-j6RR.ح{B䲻>!tsrFeM*T$wby.)UpxFƤa/7 uv'?Dj^WX F:EZ18u~?mE^3FcS G$}hVYуƫ3Iؐ0g?@]vʤ^TN#@of:R- G2?TI`rL'%Hre̱mG4n͛6Xcac0)7 *&*ycl:q~Ia|Gcx"ɜTwq p B%jn h}`Zԗ);X(K̳(} z˗?a7rnX`ݚij%n{^vnd"s\tL H8'o?g(D3\6&˭V}:trCI LM%vlTk|xfm~ao)m6ڔ9-XҧuQx.s.ZթpۙEZvT&0!VWJFM>uEҹ.V!d ykNl Mpǂ?I>UiygګzhduR`Mh/1d*SDo$8r<[ĺwR9n^H#oxeVҮF7Ֆo <~yA'E&Jgex;LblH3Pԩ11Qҹ+.lKci!}5F Q2tS .F,&)]F]𻷯Ě&ܝ=Jd,Mp{!,4b+ B|v`o]NjoE3C*oh R)i2ۂWD.L+g$ Z3I-0ta+yԿG п{ @/w`1=0SяNVLS!T9cZjR #LJf;>HB0۫:DT9a'lN6߂D1"Vܩ R6~Re ̥ ܰp̴7޹3~m0L[f p+Ko3B$y;C]!RT!y\KT@aR߅e1Ҧk8s$͜p &\Ҝ[0x{ʵث)Ӈ`b6 qYX_L,֮+;ԳMcԔ_5Vm8ܪPړ=$dnȝZWFCqȻeS +':@g na.C>G2ԃ#T*j# jy{;A9@j!W]em/fR<<*1`?wd)>Fy, -@-4y Lg\GXN*Aq5ţezjԞwZ赘,bjI*Z:군9Bە:C|d  4PT({W4Bvw\ޫ ɵ\hH_Ů ߧW' 9=ʹSr%(WHTȉ`J2bH6Չ!!jڥyB캘[i@X\^זN..u-p \3a0ۑG+Ck0g#EfV6"aFj^Nfgt^kTk::]4e@BbMt_zQn׶:OC qcQ.#,d0cp_=ޮ'3'f9#0 Ϲshu*1ƽLU9\"id]qdTV{J\ٷ8sR5D .9f_ל[m1S~yTźU=fוMo= :Vʦ7瞏Ѻ^U;vpi+Vʆ7_`Q=fmו-oN 4ݻnryV=g-ǕmoO}p!(Qr|ԡ6nGΏG~`; Be.w+1 g/,]Y8B-C4@/„=ʜua6WjJ96ԅ1& )LhpR&Bʘ.R8&KA29v(00r`6Pr9vx<1M\+ܼ}BFk {Ը)LogrOLhvvJ%Aܙx”\b \T0(@ QLx/youker-assistant-1.0.1/qml/img/zh_CN/quickscan.png000644 001750 001750 00000017621 12312451003 022403 0ustar00saucysaucy000000 000000 PNG  IHDR-]tEXtSoftwareAdobe ImageReadyqe<3IDATxڴQ=KAh0QB*T" XZT}zSا+S1"ADK!ݾE4X9eYqP!P\FAIJ8B `!B $up|kOy WBCcxMhm/obr3߰Yk, VC-ޛB$?#B&%R4 o◅KW`0 dZbVWhN=o oo :n~y!n]#/CNѱc.DQA"Rm!͛CUիĹ"|XߖgxWEX %&.Y8~6>pJHxUUQ_',gv2pY{GP1 = 6+/垉tg 8=lgyinwLB#0tSoa)I9X:<{fy F?8 m/7.bFC(^Fzn8b09IGŽ_ #¬~pⷰqS$5fxɌ/0~6( f SuO8~CeS].[ŃK $gi +ߵ2Uܻ+@{ QlTS9k@I x#'k"sNl+dxTQM- ("Kj7"~mqk)JШ5dcb0Ə (&-Y^iLT+j|%!1 ˇ][JMZVq?23gdsܥ>]w|}41JP}}G㐑.(:JR]ˬ48ג5Ʈx]ۼav&Tao.2ɰJAH1ٻV6&lnA4/Yi%TW,W;bTC]h|.t?7$w'O7-\涩< 6z[4q3(~ ù3Aw09[! )}!NDF[ ._wݼ;7a8*{Oסz)OFb_x>m:~_bזѢc8>ZT6+[MFE3 D s,K8$n3Ax16@z6 6<[jSskTw%\vvR6X/ O pdJKd84- C; hH%ՒUң]&_u*|;XqʎUU>UtgMOJwS(fK aVNߑaY >YG&fr(nXyVDGS66"lF Z"@+JB /A1& IQHLԘ)"zpkƝgfwIowfwϑKfdF쁻ḿAv W(Z( p>e(r'M1/44v@XD'Xx?8sQxb*GpK"A0Zh'+]}5#aPy\ڻ9'P"9>2cS{iٝ]ѭ^TΈ|f)N}&W]&*S)z"ʝ!:1E PFZLqz~wPD|A%Ph&Sk_cQ3G DlQJA9 -k] NK [puAV'P=0px}ܩ }fnUsH$A#Z Ns +OhTDprTarUxu!lKL.௟c;죧 #9n$/,|uXMp^(Ê`* ' :/'+w" RI 2 3cz![^:7kFZ:ϙm]-0|ry7H_<~ yJy3/p. i,،6xgj4w6U⤕)I/1f~B>f/a"K60tSP6́@w^^ODe8l[L5%e[le#mb1+Dz ͇êi7y)?)y:p\*srnE8/^a2t#Wq 9BE弸GVCV^*fJxf?E-M#_b&(9ڜb5Uaэ ;39gEC=뒙kno]x5tz(7&Xhg߉dݐpm}k uAXl;%ŐNduɶ6g"\K#\DqW٥Oa7Sjeۈ +|̐L|ڟŅi\nEiYyՊF23Tg 6"dU$Q<`ޟb}c-S -F` 据F @;k̀k5Qi>"2XV/ |Y#2)Q@Rm:Q"ϑ+%j{v}_4ϝ5ַA*qkG/ҼiI Ev)b~q 1O7=Rj,:)}l%f*93pn$Qt'EBow@?Q#8C4'zӏl jzYvVqF4MS\Fk"'Z#3gjއ=R ϔkoLDCKua`w#JT!|bŭfH+M%4% i|W%UT裪Mv?q831&÷?0zGj(@t E@VTĈf,;Q.Щw5 0qhpʓ*@jop'r5kREmKŧB?ӝVpDt T_N|8ɇրmTƺxVo,pqA\__"尓i9 rs@j #=1Z,m(1z'@>@O:v-7+tb 2w }Dy;BTCSA }d}jU-QhùI w~ns]IiR̹cZCmZo6E%q4b 7ڇ٘QQnƫ݋B)1{Ϭ:nw'.7SE+qr@!A NM֞ꔥ}~7zt?rr{&Օ}=ͫm/b//zu?&6}}{_ӂztxan DŬr6jPl*-OsgK~c婯!77s3+`jRR1@)-!5`u2VݤuA 7zjAwF0A \+d:{z,o! F WGc OW._î׸cp|Ca٫GQZe\=9?S *DbۘVQ} \dyQXZ 'םQgNrj9J4xme2`^vlӏK}>{olGڴ  6X`P@m"'/iY;J( ㎐ɣ AEtb$19wKb܍||O+@}>;n~bIa]jZ'ÜY!MOZn:3+MM rŬ8;2ܳ#<wp:sFFf:>^x`+FrPPlTnsJT:eK-CȮbg[A<9C(+9rvK$ # Ǻz/UI42"~ Q0fT]s-.y_|`*SzY|fL>%-N&6|v;ۋ>~g?ig|YRV3 E& f}>;0L. a.~!;}^;-wű` C% f 'q TUUgZR֚%~X 10h EZBsŊ ñЭK/<Uķ}E$de7v?Ggؖ8KL5yJ\vV)5xr C`p ͸)2Q~r"ʔ! (u~].pT OJEQF^%{ pXY"jmRpZ&!<;# i-1S( ;޹E}Kx e9ڹs=vB]{8Ӥ3# d⥨o3To-*}rJ'~T Xbz*Ja1:[1 [N~BDCr72"!ʝ6@öyqp)Ʀbaz}9 9s=hFMB2̟W}mAdh,Q(Bc)kx[j)0RbY(%e(ǡ9%++ L׳,"y04䓼 7-ǔ]|}`1bnjǥSe*~龝v"ylږvUZ0u3Se'd'D1^YJ,ޭhO@_$UvUcWHVXqpN!y%+"#VvDCǓRIx_tA)wcRmǍtH#*E|S2ӲmP b0āן3%s~5.E߲Ll^A9@]b+ua;(S16>F{$ɏ d(UgEl3pt86/ Ʋzfzq&,xɠ6Zxp7Qb2b n#7÷-M"ᗰ'Ca~ls}IJO>:8 lѸ-bUDv4Fd3 184%o˃~m5 F t*?!5wf?@(Zj=]"ry:grwoZQOQ<DS|uɑFS]6c C'$IS}=c-vaAQPȏ#:!Iq.`>,?cOhƈjGїcPSujpaP*r7 H=ݓޡvlNJ&T'HIENDB`youker-assistant-1.0.1/qml/func/page/SystemInfo.qml000644 001750 001750 00000037234 12312451003 022623 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../bars" as Bars import "../info" as Info import "../others" as Others Rectangle { id: window width: parent.width; height: 475 //背景 Image { source: "../../img/skin/bg-middle.png"//bg-bottom-tab anchors.fill: parent } function addList() { listModel.clear();//清空 listModel.append({"name": qsTr("Computer"), "flag": "computer", "iconName": "computer"});//电脑概述 listModel.append({"name": qsTr("Desktop"), "flag": "desktop", "iconName": "unity"});//桌面 listModel.append({"name": qsTr("CPU"), "flag": "cpu", "iconName": "cpu"});//中央处理器 listModel.append({"name": qsTr("Memory"), "flag": "memory", "iconName": "memory"});//内存条 listModel.append({"name": qsTr("Motherboard"), "flag": "board", "iconName": "board"});//主板 listModel.append({"name": qsTr("HD"), "flag": "harddisk", "iconName": "harddisk"});//硬盘 listModel.append({"name": qsTr("NIC"), "flag": "networkcard", "iconName": "network"});//网卡 listModel.append({"name": qsTr("VGA"), "flag": "monitor", "iconName": "monitor"});//显卡 listModel.append({"name": qsTr("SB"), "flag": "audiocard", "iconName": "audio"});//声卡 var cdromNumber = systemdispatcher.getHWSingleInfo("Dvdnum", "cdrom");//光驱个数 if(cdromNumber > 0) {//存在光驱时才会增加该页面的显示 listModel.append({"name": qsTr("CD-ROM"), "flag": "cdrom", "iconName": "cdrom"});//光驱 } listModel.append({"name": qsTr("Device Driver"), "flag": "drive", "iconName": "drive"});//设备驱动 } ListModel { id: listModel Component.onCompleted: { systemdispatcher.get_cdrom_info_qt();//获取光驱详细信息 window.addList(); } } Row { anchors { left: parent.left leftMargin: 2 } //左边标题栏 Rectangle { width: 150; height: window.height - 10 anchors { top: parent.top topMargin: 10 } color: "transparent" ListView { focus: true id: categories anchors.fill: parent model: listModel // footer: returnDelegate delegate: Others.InfoDelegate { onSendFlag: { if(flag == "computer") { window.state = "ComputerPage"; } else if(flag == "desktop") { window.state = "DesktopPage"; } else if(flag == "cpu") { window.state = "CPUPage"; } else if(flag == "board") { window.state = "BiosPage"; } else if(flag == "memory") { window.state = "MemoryPage"; } else if(flag == "harddisk") { window.state = "HarddiskPage"; } else if(flag == "networkcard") { window.state = "NetworkPage"; } else if(flag == "monitor") { window.state = "MonitorPage"; } else if(flag == "cdrom") { window.state = "CDROMPage"; } else if(flag == "audiocard") { window.state = "AudioPage"; } else if(flag == "drive") { window.state = "DrivePage"; } } } highlight: Rectangle { width: ListView.view.width - 2; color: "steelblue" }//选中后的深色块 highlightMoveSpeed: 9999999 } // Bars.ScrollBar { // scrollArea: categories; height: categories.height; width: 8 // anchors.right: categories.right // } } //右边内容栏 Item { width: window.width - 150 - 4; height: window.height Info.ComputerInfo { id: computerLayer width: parent.width height: parent.height visible: true } Info.DesktopInfo { id: desktopLayer width: parent.width height: parent.height visible: false } Info.CpuInfo { id: cpuLayer width: parent.width height: parent.height visible: false } Info.BoardInfo { id: biosLayer width: parent.width height: parent.height visible: false } Info.MemoryInfo { id: memoryLayer width: parent.width height: parent.height visible: false } Info.HDInfo { id: hardLayer width: parent.width height: parent.height visible: false } Info.NICInfo { id: networkLayer width: parent.width height: parent.height visible: false } Info.MonitorInfo { id: monitorLayer width: parent.width height: parent.height visible: false } Info.AudioInfo { id: audioLayer width: parent.width height: parent.height visible: false } Info.CDROMInfo { id: cdromLayer width: parent.width height: parent.height visible: false } Info.DriveInfo { id: driveLayer width: parent.width height: parent.height visible: false } } } Rectangle { x: 150; height: window.height; width: 1; color: "#1790c9" } states: [ State { name: "ComputerPage" PropertyChanges { target: computerLayer; visible: true } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: false } }, State { name: "DesktopPage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: true } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: false } }, State { name: "CPUPage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: true } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: false } }, State { name: "BiosPage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: true } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: false } }, State { name: "MemoryPage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: true } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: false } }, State { name: "HarddiskPage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: true } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: false } }, State { name: "NetworkPage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: true } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: false } }, State { name: "MonitorPage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: true } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: false } }, State { name: "AudioPage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: true } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: false } }, State { name: "CDROMPage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: true } PropertyChanges { target: driveLayer; visible: false } }, State { name: "DrivePage" PropertyChanges { target: computerLayer; visible: false } PropertyChanges { target: desktopLayer; visible: false } PropertyChanges { target: cpuLayer; visible: false } PropertyChanges { target: biosLayer; visible: false } PropertyChanges { target: memoryLayer; visible: false } PropertyChanges { target: hardLayer; visible: false } PropertyChanges { target: networkLayer; visible: false } PropertyChanges { target: monitorLayer; visible: false } PropertyChanges { target: audioLayer; visible: false } PropertyChanges { target: cdromLayer; visible: false } PropertyChanges { target: driveLayer; visible: true } } ] } youker-assistant-1.0.1/qml/func/common/private/Button.qml000644 001750 001750 00000000614 12312451003 024014 0ustar00saucysaucy000000 000000 import QtQuick 1.1 BasicButton { id: button property string text property url iconSource property Component label: null // implementation background: defaultStyle.background property Item labelItem: labelLoader.item Loader { id: labelLoader anchors.fill: parent property alias styledItem: button sourceComponent: label } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/SIEMENS.jpg000644 001750 001750 00000011636 12312451003 024114 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!qAQ"2B a#r3$T5V9!1AQaq"B2Rbr$53S4U678 ?Ǔ*F8ɟ 𨫠 RLyAa:y)L!%uCt4\ Qt0MЀʤAt\`wR)TUbHaLTUa{)p&}< 0<Ǻ.\(c \`@eR .\;G xc ZLP1rg0&|**0f=A>j~AsJSI}P .|B] 1.0St 2].Aԣ놊|<}U1G}lt!N5rDS1t3<-9ح:I[T[!N޷s=U-ȷ*RѶRe?x/-JeH`o3+g&RFOp1ޝh{Ii&Hx2?P3?ɄW;z&ʉgh*=VnR`@::㶼y/[h鵪<-*jM~) )(lcV.߶FmC!f {=U;?(Ei7eƌ4y[R~`['[}+jp g!-IRIIGi\%(2(܈BLB \@1ʱNj,>UARIEKE'q?ۛkKdTRKG rJHPL u'oUo=J=N%/R[h.==N )N& #ml/-}'}mt0SFӫ]3NSA[luHo ݗ^wqGGOѦ1FL-|#aXF"\@Dk[8;R_0Q/jn.GnGr+ O1 [2Ip'Q@["*0%8znR;{StO6x%נ3IxfK>F\D>2!1CVrvݽ;sHV>e9FcRvbsS^# D%w`H@̀a>c~`KZSY۰9SckFVsՍU*29LC t9:hŗ@M3#U25ݩfJЄEgLf  Me8 :HԽ0]Far]. iݬ~3Dd!W[)hFGզyE"m?vg+tl6.+܎M%ҋ(Bd${RB{bqM|ۗV[w>5?.Gv<$OV\!G^50`ZDY" c P|T&`}z]vѤ>{r4M]͋gkHW& ~TJ6bn4@RL[GzD9mrN1"kPUu(1E2Vf1@>2v >lyArV_Msh켙lqY'Ѣz7 GNѝ6BQa#i\x#)ZD:2N¶)5li D[da<%Vxu#xpR̪S)ӐIr'1ylI 𖜦6ŻQ[h{?&6W;* ߴ 5\ub!R$Qvr4!dDAH%q{틳Րf D7=VFwg6ȮaհfC̼t5#(lRLHX@ȉ>m%$kyO"ziˆ}Iߙ>-J @Tt6<27kee]=[j'"IP[9nA]jfIv\^ةq pFr4mf֮-XqLݻ|@5˥shI=D3z yFiTZ1@ 1XikJt l0}#zt9:Ɠ[[UD9iTZ=gDhݛ@~Ǝ4@(XjqL[*/P؅*f:t(4&͖ɳ&l%M::iBvdXL󉥚b9/x/{c%toeHwⴶPCqSE7*C _Tdp b~\z𪙕,ca ꘏5H>/q4vfu*]q"Q]*F1̶&Ȧ:)jKw} ^}1>mդʯE&~C og¢&cKA300p= r)E@R7B*rJ>hSodjeW?E!7A3QWA1 P tR8BKhsa )qHr\4Sꩌ75i2@ɟ 𨫠 RLyAa:y)L!%uCt4\ Qt0MЀʤAt\`wR)Tyouker-assistant-1.0.1/qml/img/logo/Manufacturer/DTK.jpg000644 001750 001750 00000012224 12312451003 023425 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!AQq 2B$3%aRbr#S4DTU&H !1AQaqB$"2R4%tFbr#3DTE ?>LWy3@G0>Sd1&c:bL:!)sNhbf_;}Hϴ FH@O.IC$yr@Z$O j.ɔNP < #LId)N1؝1&~Ĺ4 O3/G$H#$Cj` v$e !<P{ G'rݵUT⏊SOR)":M 5J5a ?;/,;rsZmM+~ӛtIl+@/Je.@&To{]kQ%Vkk1hJbJI=RӖИe0:U rwp ]#6AZ;vJLOaSV-tvBfW.RP@vrD% f0ϖ5%JKO)?#;U̚%1fS Ee+qEi4AV1 \f멑6UI,42T$` #|yJՓzĢ%R=N@0F,厛Lέ,3:A9fJ&d1- e&8T;K&tÚ9ulAN[@gT:vݓ7Fm1*nN{SWG#ݩ0MKx2A}e_ #M(w"wS!QԔE2FDHAH/o]˕_=ćŽ3ʼnҭoH&0<46߫u67^QwjTY/xMsW{nʬ ߟl(Ǒ8~Cwf))d\}Aջ0{SVB84:W?6ͱdˢ1NF{;-myDf˨M1 Gr]fWo@CGJ (u,xՔ 6Té0"]+:֏@<5;Wpwwڻ{q72ZKnp7_F.sfQe)p$ktAV+{vCpՎDa8uA,f^zsԵo3;KptS-{rXy++hq3(w7P vUG䛃AXuv5qN<ޮȌE{sa[Ni.-܊i>psMUšʱ*U8rqd⊽ZZVgi(YFCaчԻf$L} "2G dD{}жZms7`Ԗȭ_em)iη ݩBg&"L=1^X\t߭< sr;1.OgX=DR`$i5rݮ]mɬb叶&L"D`Lq%,%&Eh !U;Ӫp's H5A]7Ѳr[tZի74Qԋ@텩I0K 0^9۶`Ůlpy :r U]!֟ޖf u*m $Y?67qDo=PjSn̺ &O)x;G1q兹ۖMG;e f154{=v2Ֆ9}o"½bE(ErZ—E)sln;96T2 9 I#ߚܼjI,%ќ4O`o@p#U'TdkGymR\rà|]aCy5i)2#݊[RV_E|ܤQe2uoHx\ᦆ,D D:b=^n&:\Q)>gLmJtXFb"L#8VdV'=I)t] Uuf^;O&"$1.sVzhǁp0&:8e ém fKt뎚f$#jJ )U1)jE3(yf4i&m11O^Ϫ}ygy`C6wQi,i2Se2LP5Li&L4& uFۭ2ԚH|ItmZ:ZHYg,` kIRjW GϿ {!>={/.@|A_Ng=.?7}29)[P>Xy=6̸LGk=,k-3g-(M^u|MJuIjcQ}Rg^Vj6 Jn܋SnD'RfJM֬^?ޕ tP#g^S/.fTC5ZgDS Accu~^3h2 Ff!)k]v Ƽi^_o8-j Sg̛Ǖ%9'(x_@۶`F0Po|ʳT+?snm|+;J۶)!ҿ6r)ʹ)%L .>zThK(^\S\ ^W?L[h~J,P\8 vW?{–V`Tܟ>6Xmmo:XƅxJ6Qu%%C%M3'Ө268D9kO&2KGKFR4)ИXiH50Bi$L T錰%y*OVBeeW' |26'3MNJL!QK0fc }J1UI-*l;\G($0YT0;1<pJY`ߩW@SVY1XǺ% )rBQ%_ j.ɔOP < #LId)N1؝1&~Ĺ4 O3/G$H#$Cj` v$e !<P{ G'rd'(LP&$ϲ'LI@N?Ndb\Ӛؙd#$ys!0;S˒`2\=#։Bڋyouker-assistant-1.0.1/qml/img/logo/Manufacturer/COLORFUL.jpg000644 001750 001750 00000017635 12312451003 024243 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1$ AQ#Faq"3CT 2S4t%V7BRrcDd5Ue&68 !1AQ"aq$2T BR4Dt%r#3s5U6FCE&f78 ?H0a=;ajj/;!{ìy`'´ܷQb{G )k }\u]FŐ=۔Dtai5d=v` r x|Р=~VOTpE`H~ptE`9{c7D+ߏ0;B'V{Nt@:=2YgU"ne8 &~NHvi黚Ъ"m3̏DhT{{%Qk>`oJed]'s,Rވ?So:zcS'z _8A*:Kg^}1]KHʏRt:`ڇS)H9g??Kr%0 MpjX:eLk;z-LLZ,nfUpPPqREI:TɵwBX6(8VMI8WlάDzZ4C\)bx$UTvbcI6WƘ5FʌdkA2>b1͙S3J-dr| .]127^yƴ}dĖ;z:1d?:g2'U*UzbC. r]'($t-蚾F_T5tҚl &Sq"ɍ R.A0zPf߁(}.7}q]&\};+pRg[BJٻ ;jI. HZkhjc{mhSUڌsA?$UPFyD^򧩨i,'RJ^ΣMvͬӽa2:%aNPSmZΚVuVcYYrL/ջ +bg=m$m11Ueo44u꣸ M(@07÷ӫYN8K#(jTxޥwiT4ŻwmMی p}v :FWj1`hԀ^4hQƞ`4S1Df$nt=(Jv )e`im_5{};ݞɃ)l#eM\;OUQyfTnUN2pWsl[Ҹĭu&\❵-- .e&''٭V99zkoJd4 jO B(DfpafatM:+?M, -֟NfԤ5hKJX%-@̎ziIr"b;?0SKYuJY(U%O*C)nv1#=r)#̎a,z^lZT7wM^U34'> 86Rr!R-F^u>H}0s6dj/E*Jx2)Pyʜpjpi'DiSZb{3j#dץrbD UR>Vr(]VW,$iRz56ۮ2xP ,Z{G`C-9'J[A)WXLK zDӞm*7OwwS MDžjU/iA-) )Y 6iRaSH !8jBp-ҬHѥӫy|,fH[MK9<8TTA Ȯ?ph#]{r&5n'u eO+q\odfSn~Yg:#|8St3v6nf c%RrAU-]ͻ4 &@4˧jZء9Wms!Xn'޳UK;]/*B,[\HsVwNSPfݒ z&8JDح%h$dg~/W8u"bU_5dd ܷ댝޵pt$o`$1'"` p&=JWݠP*WEM95YKuM+$-å$7DA= ȩ$$KJo,9vЬ"NҒl*$ʉݩ@umÏUE.m$d3-Ϡ/UiO%X&\J#ueE 9s(ϭFe ^uع;% O"qPӺ\3 "B,LpѣZBU)(@|qn9|# ,E5UqӫmR*3RTV3Iki D#Q3∝eÆr)#L 'tq!_^uy6aW[.h,ޒԎt])C*HkƲj5B֖Ko5O>.A2d)Hh@g]Lu\LPdN xyAY-5m}LMPm6΢8~KJb@$LD LIה+I6Z.:=&ͤ|ez{*lM3+!ÿ8t͐,Yo-I-]/>9隥^NF]FpLsۭOPdGTVʁ* o7jFmӽ.'u-?itDN$#>S,[ӘLjnNkJjZ[֙Il i= ٷ RD=iS/**ziY n Z* 'EL=bTra">Ͻ &Qm BL^e ̿i^ u,U  6YYXWXݧ} 6faǬu< shڢ[a<CS *ȦS+Pq=AZT43L99<<QDYrq;Cf⽋7mmjl٫ξHjd9 CS3G@]Zh-5f nRx!CtӍց`yDjf{vWm5Ev""+þ34Zh0#vbOL":%EzCrWVNVvZ!UEJ v5F0$pZ=sYnp%pfV0̚"G!b2?ZF8qͣg3?SkюE"sjlቪW!1n;?z%J)OdmuͧVR I1t|[TRr)l E%K7VtbiubΡuzՕ&>;Ni#P$U/Ĉ B7&OKv7JZ0Sz]zw7#i;.r%-kcP!ZG}SQ_*$N[(ҙ-+Z{ː5k)lvcΔ]j&o| ڻMFLڻkmds~K!Ӫ(uڬ#lG&Xt'a$=N3jџ hLWϡۅe$L5*J ~k4kg呎;s9S1s|߃ UM"ꏓuէ5=THl ҋPjbZŋf(ƓBȏ^:mT^˧`2xaUhQu2;mL^yݜ紘Dx:rNqϑ^|?7ݼW}ϳe_DZ_Ґ|/ÍGD.cݎG 5iIPHR×2ŝ7=i}z l}\>Zwj˧g7c[mz lև+ew{;HGT.gv>zG7cx{;HS>Z.~8t~'`O4`gHvw){5GpEe+<rrZy}7Љv5})k>5;ka˼ m\/Y>4}Lѯ=ѩyŌw{FFaz9,vhсtg?IZWґ4=CW{-ޔ;aʪ:P"PHq{&KwHk-xua?h]aq}Ui\' ^QC}Yʼn"Q0<Da)!zx48PnP0CNج06d}A8{c#!\dd8FB~youker-assistant-1.0.1/src/messagedialog.cpp000644 001750 001750 00000011040 12312451003 021432 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "messagedialog.h" #include "ui_messagedialog.h" #include MessageDialog::MessageDialog(QWidget *parent) : QDialog(parent), ui(new Ui::MessageDialog) { ui->setupUi(this); this->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏 this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); ui->btn_close->installEventFilter(this); ui->okButton->installEventFilter(this); ui->btn_min->installEventFilter(this); ui->btn_close->setStyleSheet("border-image:url(:/pixmap/image/closeBtn.png)"); ui->btn_min->setStyleSheet("border-image:url(:/pixmap/image/minBtn.png)"); ui->okButton->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); QObject::connect(ui->okButton,SIGNAL(clicked()),this,SLOT(accept())); } MessageDialog::~MessageDialog() { delete ui; } bool MessageDialog::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->btn_min){ if(event->type() == QEvent::Enter){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->showMinimized(); }else{ ui->btn_min->setPixmap(QPixmap(":/pixmap/image/minBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->btn_close){ if(event->type() == QEvent::Enter){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->close(); }else{ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->okButton) { if(event->type() == QEvent::MouseButtonPress) { QMouseEvent *me = (QMouseEvent *)event; dragPos = me->globalPos() - frameGeometry().topLeft(); }else if(event->type() == QEvent::MouseButtonRelease) { setWindowOpacity(1); } } return QObject::eventFilter(obj, event); } void MessageDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void MessageDialog::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(1);//0.5 } event->accept(); } void MessageDialog::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } youker-assistant-1.0.1/qml/img/icons/fcitx.png000644 001750 001750 00000003265 12312451003 021650 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<WIDATxڼW}hVe?ݻMbk3!?I%威I,BRdDh+BQS(6f1#֜ZScǻw={7>{s{s\ZPRR|زuaIؿο}ٳ>);3"dnP$b M \掛<p%{5&f53q ?mFx100̀˽#qǻSe=Fgte)hJ }qZ}ErJ* fvIm;؍ǻˣ6k9(_^{fgg)EeggѣGJ[ b911bh4j;\%ie8dx&Lx'd/Ȅ! `466טw9vvjmmrx <55N>b2_q^@'f MSC֟?JKK9€={,) qa`@4ӄCݴcCΝc٥K\aQ.6 A' iuA߸q#q/XnC*D":Y œ 0NNB ðoF:MbMςyg7=ƞYbA7qMqHB\efp&2p$Z"O(HKJiNjI322֭[tIkjjիWݻw5cǎ|TWWG퐟8qjjjJb.DrF ͨX}vl߸q=a9ᅖ^/rΫ@'c̆EEEw,x8\[YYccP/233ub(ͅ(klBk׮.; x۶m ׳=lBd.xeP5N0/(( 6h_C"///r>d!J~{:Yo46~G<+W9)h9 Z)>Q{ztg=]:{ Ʌ !0DO0^p/zby/:赗_ZU# x? 8I"i‚|5\|@x@oL^P$&d7q9ϥ/9/e@Մȝ9u68p9{Ȃur p k:D;wgŋt%a ZSNQEE/_!NS @' e60/ *nnn9oH&%IG6Av"ݿ? /)..R#|DK_nM{XɡF& v qEX޽{3utZږ9s?H;T7P(ͭX2 @2⏨V-j%?X]@NBs ݐmRnn9|upr^Lh~al4IENDB`youker-assistant-1.0.1/qml/img/icons/touchpad.png000644 001750 001750 00000003776 12312451003 022351 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڼW[]Wsa.4ɤ3H[| )D E(-m4:==Jy08x1( ?߿,ޘ̌gEjwbjbqqq4l8iE=s- o{k&GBׂy׼b޽T%ˉYx"/q'[bg%)<1h\ e_M}m~+{li`:%ΔU+'l3^('!(@Z r%4^#&9/߫W8sIb?r<|*R!4hx^M5Pkm*W߹+{58>iEF 2%c+aBܘd%#ͻ!P* a廢+*Mo& 5[,ϐ>]k1]L̈0&x Tʚ27 Ogj$pl#8M2ipVb.iĈ7c`4.،U|n.LLS|3o! Ffk!0M ٶx+!m c3^}xϝSlS5O#fFa ~HO(sU0>HdL,Fz\\xgf) !~ռ+CևC[!mK*z!ʲ{a0Xځ*&T"`H3M2[,}j2P5 l1_oCrJ(R!1Êg]S)4j"[Ns ؠc wTZ=*-b֖ ՞ʩtz1iVrjn|" .-5o~%! /`e YJo,k9苅saӏ JSMpߵ4*+X…4*۩/ n^W*y)Z,4{ Z0aF _/@H%dd* Y4bS T[eHn9l<xSؑ#G)N$ۗb.~zۗ&Emz{tF׫͍ە.YVVil6Ijm0 0DW}ޏk~5oRպOjGI`kѯB<1}bZ4- F`g1`|%-auPbܵkX>?2|u{,,,C#Dr`#DabbdX3=ׯ߿y ''۷o_' Хݡ|CZl..3;* P' "k쓈 "Ӑ$wd{FUiW@Y:L!<=#K\cdb6$!jEEDeѨaCD1A&@t]CZT(! KHZq@u1 @P2Ln  1D#Y il+BL.‰Gן^e)a$j"[,}k"6\aRY]HX!5 @1 $>v 5XfZ, -t/AX0 cRnȺiv. */ #ifndef KTHREAD_H #define KTHREAD_H #include #include #include #include #include #include #include class KThread : public QThread { Q_OBJECT public: explicit KThread(QStringList &arglist, QDBusInterface *systemiface=0,/* QObject *parent = 0, */QString method="", QString flag=""); ~KThread(); void stop(); protected: void run(); private: //Dbus接口 QDBusInterface *iface; QStringList list; QString methodName; QString fileFlag; }; #endif // KTHREAD_H youker-assistant-1.0.1/src/changecitydialog.ui000644 001750 001750 00000007560 12312451003 021773 0ustar00saucysaucy000000 000000 ChangeCityDialog 0 0 421 280 Dialog 146 12 131 21 <html><head/><body><p>Change Cities</p></body></html> Qt::AlignCenter 18 51 81 21 0 21 <html><head/><body><p>City List:</p></body></html> 20 100 381 101 0 0 421 280 border-image: url(:/pixmap/image/dialog-bg.png); QFrame::StyledPanel QFrame::Raised 196 231 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; Cancel 300 231 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; OK 9 7 26 20 20 76 391 17 <html><head/><body><p><span style=" font-size:8pt;">Clicking the &quot;configure&quot; button on the main interface, setting the city name.</span></p></body></html> frame titleLabel locationLabel listWidget quitBtn okBtn btn_close messageLabel youker-assistant-1.0.1/qml/img/logo/Manufacturer/TOYOTA.jpg000644 001750 001750 00000010735 12312451003 024027 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1!AqB Q"2$4 a#DF1!A2BQaq" ?LsLC) >XPF 930`!`t(9sBcmee@=AĮ|<ٕU*8=UY2;JdKWqgR &qLmmV`6<}/{pkig_n:zx~'+yp\]]V4٭Uɟ,zP!f>NB0L.aıd91 \%Pbsh0cP9rP{1+?v6ex6M7[A U -ZZ qq=K294-RP5Ig`RP!DCag mܸnR3Qg8w*|=+_imn/Z[[}j{wbVԪ-u\A4(9ԭXpsHXPJ @>:G㼩ž~su.zڮ;]6jv\wΰCf>NB0L.aıd91 \%Pbsh0cP9rP{1+?v6exow,>oSgLJۦǜL:}'ilքo`K_[m+A&-I+՜YE񩱽o͈X(Ofc#p{TɬI4릎v)In[;ݽF(@MGVLuV\a!&CsTRZKs pIm6k'$RggbVRUwʙDpQs:^CԲdK̑23gX drJݟ px 0([pW&.79](V\>;%W Doe|NR2ǥMެʄZQ=ź3o{Vߵ I{5YKg]A\ؤR; n3υU܈\"*xBf "7QiinQ$vbI3V\:+"T\m]X* Fq\CϘc*f0 XT\J('ݍ^>j?Snx:="ϟnICDhGXtW=XZfլ5(+p@ SHLU#DI]hVxWeWUB!dx}@⠲'GVC#/v S)RZe)J;֨+/̚;}Q? ڊ&䡆!k΍K΍` ҾA9DP j,1_$(nJj1,NgDUDgN]H!,U= I4o*pGg () _*":c s&^V #FYvj6[+Ke9:Xu Q.L%G6U,?(قэN0$P=s=DrYU%G HE, x 6h\U( -OW1ّǁb]d+KbIJǁU&RawW ~\񯖞񏖺{%7cfWc:򿧌}?ަD?;tt?8|/:ileֶKjY3$Rc[eT1E8&ZreLBquR5"n{ Pە3+}bW];[.2ԷDy-HrW'698J(=~8.UAnDWF`RϰL 5|MAW˚>gd Uwd!܀M`1|KOp?*Lt/s;*l%q[kJ#6p)Le2Q" 3* 3/;bD#P VP bJfH$6 ap*WFLZN ): _hm(Hضw% aaeYTqt:NUfRt@΍l$TRIˆ`X7HTV"zUr儢D^A_%|DIf'Hd2wu PaHC11gdzЧk̾ef=i$ALv V6%pt-k){EWP<3 V֮0=i.m5:MVҲxb$y\+%cY ,-"y{\N<ٕsS}WbR,5:!ej6mS m3xligJc1pH@8jQ8lRmB%*:%Ify+9D6XkHG֣ZU Zi() %ĵ0i&ړ\eІuƙ#1rrTbYΉέed~l*eぇ&v! ,k#}X`}0\щc0sc: JK16`22rbWyA>~l?youker-assistant-1.0.1/qml/img/logo/Manufacturer/LINKSYS.jpg000644 001750 001750 00000010163 12312451003 024137 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1!qAQ"2 Ba#$% 1!AQaBq$"Rb#STt2rs4d%Uu ?M+\1H&U$R RA5e /)G$P2u Q$4 4tTʟǯnInX 5) c0Mz:HQkAAu_ RI%erIiK-@iQA%rJ1l?FHT!Th//+%e%] |b/|H̞|q CoSW_KĘ7t8>?~ jl҉~A:ގ HÚ w#" *xqAuo\~O\-fLr]4!f|Қ,%J=It gɼBVH[UOÑMǐG.:M 0!Ǜۑ"y,BJr+nK\T#/G%7fx FH%}@`hǼ+xzZʚ*CD1-0H6 p8Qw㇍g\3fiK!y Ρ6܄S1TOVՙɝ+ǧ /ߑq+c$qmleΤ7]ػO81I[|׭`-vb,L|Zo[$q6`i<#i9 ?f"%d9}zR~^Q@8n KZޯzQX/LW/)='k&×y81`Il}]/oC/큦<:'gi)3ːe*j\֯y”Z. \ɧ1\eEMUpg=r 7c G*CtN{~v1 {6=gDbQ̶:͑"_ m*avxxF"*z.뀢Տ;U wN2*Ek-0û%\>.rc c쁏1:[2ɛ֫}3xz?>ʅ+Z"Ti|י}n~)l|W ?fq fy[w9q_'#x/<#lSV%o 2&c*&xqY0np[ a0$wH^lz38J1_TMY3CeZ`,*FIJH T x;8,Fdɯ-)o'8g\>TTSGRP ͉?q>Rs+:ƨ 7x"Q5U=uBWL|9B:::F>-c}n\`H,8ԬC xX A5/&}7;Ow5Tꊏvݼ;Q;Q%Wu[,vi-MhX#mh]2]P]!\OV{k8?3lgpkb_<ɝhR mA9jl*YwxW6snZӜ5๸f*^>(#ds왺FHsy~Fފã9(P[n^z{0bfKKKEhly;Bӧؾoׯlk7o\˷vOt ?k8Ép_gvq/j{ѿb?}m^)使%>>-]ϧ'o[ۄ>RJܰrkRa TtH&K H&TP2G$P28#ꡦKp@|y($_hNh^O_3MԵi4W&!Lf UGIj="My|#H.JQ$puT2L]z”I0 )sEH *($];)G2fji[MJB$^)z)rE PG]C”I~d\(a@RdTPI\@vR*eOT7Ryouker-assistant-1.0.1/qml/func/common/private/Splitter.qml000644 001750 001750 00000042130 12312451003 024346 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import SplitterType 0.1 Splitter { id: root default property alias items: splitterItems.children property alias handles: splitterHandles.children property Component handleBackground: Rectangle { width:3; color: "black" } property int handleWidth: -1 property real preferredSize: 0 property int orientation: Qt.Horizontal clip: true Component.onCompleted: d.init(); onWidthChanged: d.updateLayout(); onHeightChanged: d.updateLayout(); QtObject { id: d property bool horizontal: orientation == Qt.Horizontal property string size: horizontal ? "width" : "height" property string minimum: horizontal ? "minimumWidth" : "minimumHeight" property string maximum: horizontal ? "maximumWidth" : "maximumHeight" property string offset: horizontal ? "x" : "y" property int expandingIndex: -1 property bool updateLayoutGuard: true property bool itemWidthGuard: false property bool itemExpandingGuard: true function init() { for (var i=0; i=0; --i) { var item = items[i] if (item.visible === true) { d.expandingIndex = i item = items[i] break } } item.Splitter.expanding = true } d.itemExpandingGuard = false d.updateLayoutGuard = false d.updateLayout() } function accumulatedSize(firstIndex, lastIndex, includeExpandingMinimum) { // Go through items and handles, and // calculate their acummulated width. var w = 0 for (var i=firstIndex; i i) ? 0 : 1)].visible) w += handle[d.size] } return w } function updateLayout() { // This function will reposition both handles and // items according to the _width of the each item_ if (items.length === 0) return; if (d.updateLayoutGuard === true) return d.updateLayoutGuard = true // Use a temporary variable to store values to avoid breaking // property bindings when the value does not actually change: var newValue // Ensure all items within min/max: for (var i=0; i i) ? 0 : 1)].visible) { newValue = lastVisibleItem[d.offset] + Math.max(0, lastVisibleItem[d.size]) if (newValue !== handle[d.offset]) handle[d.offset] = newValue newpreferredSize += handle[d.size] lastVisibleHandle = handle } } root.preferredSize = newpreferredSize d.updateLayoutGuard = false } } Component { id: handleBackgroundLoader Loader { id: myHandle property int handleIndex: 0 property Item handle: myHandle property Item splitterItem: items[handleIndex + ((d.expandingIndex > handleIndex) ? 0 : 1)] // 'splitterRow' should be an alias, but that fails to resolve runtime: property Item splitterRow: root property Item background: item visible: splitterItem.visible sourceComponent: handleBackground onWidthChanged: d.updateLayout() onXChanged: { // Moving the handle means resizing an item. Which one, // left or right, depends on where the expanding item is. // 'updateLayout' will override in case new width violates max/min. // And 'updateLayout will be triggered when an item changes width. if (d.updateLayoutGuard) return var leftHandle, leftItem, rightItem, rightHandle var leftEdge, rightEdge, newWidth, leftStopX, rightStopX var i if (d.expandingIndex > handleIndex) { // Resize item to the left. // Ensure that the handle is not crossing other handles. So // find the first visible handle to the left to determine the left edge: leftEdge = 0 for (i=handleIndex-1; i>=0; --i) { leftHandle = handles[i] if (leftHandle.visible) { leftEdge = leftHandle[d.offset] + leftHandle[d.size] break; } } // Ensure: leftStopX >= myHandle[d.offset] >= rightStopX var min = d.accumulatedSize(handleIndex+1, items.length, true) rightStopX = root[d.size] - min - myHandle[d.size] leftStopX = Math.max(leftEdge, myHandle[d.offset]) myHandle[d.offset] = Math.min(rightStopX, Math.max(leftStopX, myHandle[d.offset])) newWidth = myHandle[d.offset] - leftEdge leftItem = items[handleIndex] if (root[d.size] != 0 && leftItem.Splitter.percentageSize !== -1) leftItem.Splitter.percentageSize = newWidth * (100 / root[d.size]) // The next line will trigger 'updateLayout' inside 'propertyChangeListener': leftItem[d.size] = newWidth } else { // Resize item to the right. // Ensure that the handle is not crossing other handles. So // find the first visible handle to the right to determine the right edge: rightEdge = root[d.size] for (i=handleIndex+1; i=0; --i) { var item = items[i] if (item.visible === true) { newIndex = i item = items[newIndex] break } } } // Tell the found item that it is expanding: if (item.Splitter.expanding !== true) item.Splitter.expanding = true // ...and the old one that it is not: if (newIndex !== d.expandingIndex) { item = items[d.expandingIndex] if (item.Splitter.expanding !== false) item.Splitter.expanding = false } // update index: d.expandingIndex = newIndex d.updateLayout(); // recreate binding: expanding = function() { return parent.Splitter.expanding } d.itemExpandingGuard = false } function handleSizeChanged() { // We need to update the layout. // The following code is needed to avoid a binding // loop, since we might change 'width' again to a different value: if (d.itemWidthGuard === true) return d.itemWidthGuard = true // Break binding: this[d.size] = 0 d.updateLayout() // Restablish binding: width = function() { return parent[d.size]; } d.itemWidthGuard = false } onWidthChanged: handleSizeChanged() onHeightChanged: handleSizeChanged() onVisibleChanged: { // Hiding the expanding item forces us to // select a new one (and therefore not recommended): if (d.expandingIndex === itemIndex) { updateExpandingIndex() } else { if (visible) { // Try to keep all items within the SplitterRow. When an item // has been hidden, the expanding item might no longer be large enough // to give away space to the new items width. So we need to resize: var overflow = d.accumulatedSize(0, items.length, true) - root[d.size]; if (overflow > 0) parent[d.size] -= overflow } d.updateLayout() } } } } } youker-assistant-1.0.1/qml/img/toolWidget/button-hover.png000644 001750 001750 00000000450 12312451003 024166 0ustar00saucysaucy000000 000000 PNG  IHDR-Z tEXtSoftwareAdobe ImageReadyqe<IDATx1 @@]l*]=xB.{0a᳤JJ52AϘG6G8설5KL ZzIl=U8"y]M"A r9"A r9DA r9D"#r9D"A'M"^W@bG~ ߎC9{ap[;?:7IENDB`youker-assistant-1.0.1/qml/func/common/ButtonGroup.js000644 001750 001750 00000017556 12312451003 023217 0ustar00saucysaucy000000 000000 var self; var checkHandlers = []; var visibleButtons = []; var nonVisibleButtons = []; var direction; function create(that, options) { self = that; direction = options.direction || Qt.Horizontal; self.childrenChanged.connect(rebuild); // self.widthChanged.connect(resizeChildren); build(); } function isButton(item) { if (item && item.hasOwnProperty("__position")) return true; return false; } function hasChecked(item) { return (item && item.hasOwnProperty("checked")); } function destroy() { self.childrenChanged.disconnect(rebuild); // self.widthChanged.disconnect(resizeChildren); cleanup(); } function build() { visibleButtons = []; nonVisibleButtons = []; for (var i = 0, item; (item = self.children[i]); i++) { if (item.hasOwnProperty("styleHint")) item.styleHint = styleHint; if (!hasChecked(item)) continue; item.visibleChanged.connect(rebuild); // Not optimal, but hardly a bottleneck in your app if (!item.visible) { nonVisibleButtons.push(item); continue; } visibleButtons.push(item); if (self.exclusive && item.hasOwnProperty("checkable")) item.checkable = true; if (self.exclusive) { // item.checked = false; checkHandlers.push(checkExclusive(item)); item.checkedChanged.connect(checkHandlers[checkHandlers.length - 1]); } } var nrButtons = visibleButtons.length; if (nrButtons == 0) return; if (self.checkedButton); // self.checkedButton.checked = true; else if (self.exclusive) { self.checkedButton = visibleButtons[0]; // self.checkedButton.checked = true; } if (nrButtons == 1) { finishButton(visibleButtons[0], "only"); } else { finishButton(visibleButtons[0], direction == Qt.Horizontal ? "leftmost" : "top"); for (var i = 1; i < nrButtons - 1; i++) finishButton(visibleButtons[i], direction == Qt.Horizontal ? "h_middle": "v_middle"); finishButton(visibleButtons[nrButtons - 1], direction == Qt.Horizontal ? "rightmost" : "bottom"); } } function finishButton(button, position) { if (isButton(button)) { button.__position = position; if (direction == Qt.Vertical) { button.anchors.left = self.left //mm How to make this not cause binding loops? see QTBUG-17162 button.anchors.right = self.right } } } function cleanup() { visibleButtons.forEach(function(item, i) { if (checkHandlers[i]) item.checkedChanged.disconnect(checkHandlers[i]); item.visibleChanged.disconnect(rebuild); }); checkHandlers = []; nonVisibleButtons.forEach(function(item, i) { item.visibleChanged.disconnect(rebuild); }); } function rebuild() { if (self == undefined) return; cleanup(); build(); } function resizeChildren() { if (direction != Qt.Horizontal) return; var extraPixels = self.width % visibleButtons; var buttonSize = (self.width - extraPixels) / visibleButtons; visibleButtons.forEach(function(item, i) { if (!item || !item.visible) return; item.width = buttonSize + (extraPixels > 0 ? 1 : 0); if (extraPixels > 0) extraPixels--; }); } function checkExclusive(item) { var button = item; return function() { for (var i = 0, ref; (ref = visibleButtons[i]); i++) { if (ref.checked == (button === ref)) continue; // Disconnect the signal to avoid recursive calls ref.checkedChanged.disconnect(checkHandlers[i]); ref.checked = !ref.checked; ref.checkedChanged.connect(checkHandlers[i]); } self.checkedButton = button; } } //var self; //var checkHandlers = []; //var visibleButtons = []; //var nonVisibleButtons = []; //var direction; //function create(that, options) { // self = that; // direction = options.direction || Qt.Horizontal; // self.childrenChanged.connect(rebuild); //// self.widthChanged.connect(resizeChildren); // build(); //} //function isButton(item) { // if (item && item.hasOwnProperty("__position")) // return true; // return false; //} //function hasChecked(item) { // return (item && item.hasOwnProperty("checked")); //} //function destroy() { // self.childrenChanged.disconnect(rebuild); //// self.widthChanged.disconnect(resizeChildren); // cleanup(); //} //function build() { // visibleButtons = []; // nonVisibleButtons = []; // for (var i = 0, item; (item = self.children[i]); i++) { // if (item.hasOwnProperty("styleHint")) // item.styleHint = styleHint; // if (!hasChecked(item)) // continue; // item.visibleChanged.connect(rebuild); // Not optimal, but hardly a bottleneck in your app // if (!item.visible) { // nonVisibleButtons.push(item); // continue; // } // visibleButtons.push(item); // if (self.exclusive && item.hasOwnProperty("checkable")) // item.checkable = true; // if (self.exclusive) { // item.checked = false; // checkHandlers.push(checkExclusive(item)); // item.checkedChanged.connect(checkHandlers[checkHandlers.length - 1]); // } // } // var nrButtons = visibleButtons.length; // if (nrButtons == 0) // return; // if (self.checkedButton) // self.checkedButton.checked = true; // else if (self.exclusive) { // self.checkedButton = visibleButtons[0]; // self.checkedButton.checked = true; // } // if (nrButtons == 1) { // finishButton(visibleButtons[0], "only"); // } else { // finishButton(visibleButtons[0], direction == Qt.Horizontal ? "leftmost" : "top"); // for (var i = 1; i < nrButtons - 1; i++) // finishButton(visibleButtons[i], direction == Qt.Horizontal ? "h_middle": "v_middle"); // finishButton(visibleButtons[nrButtons - 1], direction == Qt.Horizontal ? "rightmost" : "bottom"); // } //} //function finishButton(button, position) { // if (isButton(button)) { // button.__position = position; // if (direction == Qt.Vertical) { // button.anchors.left = self.left //mm How to make this not cause binding loops? see QTBUG-17162 // button.anchors.right = self.right // } // } //} //function cleanup() { // visibleButtons.forEach(function(item, i) { // if (checkHandlers[i]) // item.checkedChanged.disconnect(checkHandlers[i]); // item.visibleChanged.disconnect(rebuild); // }); // checkHandlers = []; // nonVisibleButtons.forEach(function(item, i) { // item.visibleChanged.disconnect(rebuild); // }); //} //function rebuild() { // if (self == undefined) // return; // cleanup(); // build(); //} //function resizeChildren() { // if (direction != Qt.Horizontal) // return; // var extraPixels = self.width % visibleButtons; // var buttonSize = (self.width - extraPixels) / visibleButtons; // visibleButtons.forEach(function(item, i) { // if (!item || !item.visible) // return; // item.width = buttonSize + (extraPixels > 0 ? 1 : 0); // if (extraPixels > 0) // extraPixels--; // }); //} //function checkExclusive(item) { // var button = item; // return function() { // for (var i = 0, ref; (ref = visibleButtons[i]); i++) { // if (ref.checked == (button === ref)) // continue; // // Disconnect the signal to avoid recursive calls // ref.checkedChanged.disconnect(checkHandlers[i]); // ref.checked = !ref.checked; // ref.checkedChanged.connect(checkHandlers[i]); // } // self.checkedButton = button; // } //} youker-assistant-1.0.1/qml/img/icons/cloud-gray.png000644 001750 001750 00000001056 12312451003 022575 0ustar00saucysaucy000000 000000 PNG  IHDR KU'tEXtSoftwareAdobe ImageReadyqe<IDATxbt_s0" vb ~OV+d?\ g8 %b :Oq +o 8o(f w/:L/ و0k x(6b9$> C 1$0 b?p9ʆJ I}1.. , a@ bE$ժ c I VGwˑ' S<ĹYx)1p1ŗ_}p'daf= +@@-Wc;cOЕbgB eZ/de@< fa1 )F|/Q.V) b0DSH1Y-C211A?6o1|l 6v&~+Md#P^ bid'}DOtC.q,[[IENDB`youker-assistant-1.0.1/src/image/message.png000644 001750 001750 00000001132 12312451003 021337 0ustar00saucysaucy000000 000000 PNG  IHDR1.@.sRGBgAMA a pHYsodIDATx^ױJPL}r Pd. pt5r㸝.qnѭ_uZΏGGl $ /Dc` m@Nvp 11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11D 4`K11ޜfN3HGl9'_>={02/o=p28zut!veщIENDB`youker-assistant-1.0.1/qml/img/weather/d53.gif000644 001750 001750 00000003356 12312451003 021434 0ustar00saucysaucy000000 000000 GIF89a00SNBD@?V;CZHFMLQ9#om9sh[r]}gu#^ycx<Sա؞#_9=܋=ɷуR©7Xʑ̸ō ?px˘-LΘ?_i O.z֥qMڸgM{D 0yŏ O\€УKN)hνkҠӫ_Ͼ ˇcZ~ ' -L ?$1p @hC rC *Xa:t‡!‹.1*pċBB 6iG D>&H"p 0 "`% V*Qˎ+(dH % 0lg;PrRa { 4砄"~C $"饘J*dꩂ`C :ꩨ'"JGb 2) jc뮻"L+L& , 1~e,LA̰ J=HqDkF p1qhbZB*\2H.̺`VË`&|D/B+{ ʗp>x3C-/G3)o@-DmϏ@L7PG5TmXg\W`-dm`[rlp-T`Lv|݄P`L7+~Tn]y[dNz窛zNL LFw;@/o7G/K`gwo=k E@ 觟> !<А ~E\OCuQUxЄY KW!`xP$AѠV;youker-assistant-1.0.1/qml/img/logo/Manufacturer/ADATA.jpg000644 001750 001750 00000011621 12312451003 023615 0ustar00saucysaucy000000 000000 JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  !"$"$CF]"4 !1A"QaB2q#$br-!1AQ"aq2 ?Uɐ1||cj+K\Um+:GkGcu{RCmHZlJ׽$~Ҥ~* ލ{Z2HϳBqZ$Fș{%_F88HVcOV4> JR)J"R%)J"=dXf!):|%K&.mQJhΤ{NF~܃b-3%_PQVo3lW=y pضD?w '+h"4%@ޔ7Ҹt54ݮt8%JHi($#ۡs!qk.c-Pq >j#Mm,EH B${4?:N&*_, $k<}+_vwo F"x-'Y- ΰB>mSg[)"Nhlo;tjZ¡ŞLKWd(-m%'y$${j2- J`F&[L>i~)UJR(Q/2 DZ']@b*}"3'$ kInRbws ]3kQ/?!VJxܑmrVǞ) O]Ugq*Y 2PPUO_) G_f8:%->J: }ݳ{ 2IA,;m[Hf"٢k+.p͊ol8MےE)ށI5s)exbD6W@Cjh ucq͵\vf*wҪN!nwɟ_n\Syiu2$c6;bR^a|,r/ dcL]GIGϦ. */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Rectangle { id: filemanagerpage width: parent.width height: 475 property string actiontitle: qsTr("File Manager")//文件管理器 property string actiontext: qsTr("Manage the Nautilus file manager.")//管理Nautilus文件管理器 property bool first_icon_size: false // property bool first_cache_time: false // property bool first_cache_size: false //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //使用云配置后,控件状态根据配置发生相应的变化 Connections { target: sessiondispatcher onTellDownloadCloudConfToQML: { if(download == "location_replace_pathbar") { if (sessiondispatcher.get_location_replace_pathbar_qt()) { pathbarswitcher.switchedOn = true; } else { pathbarswitcher.switchedOn = false; } } else if(download == "auto_mount_media") { if (sessiondispatcher.get_auto_mount_media_qt()) { mediaswitcher.switchedOn = true; } else { mediaswitcher.switchedOn = false; } } else if(download == "auto_open_folder") { if (sessiondispatcher.get_auto_open_folder_qt()) { folderswitcher.switchedOn = true; } else { folderswitcher.switchedOn = false; } } else if(download == "prompt_autorun_programs") { if (sessiondispatcher.get_prompt_autorun_programs_qt()) { programsswitcher.switchedOn = true; } else { programsswitcher.switchedOn = false; } } else if(download == "thumbnail_icon_size") { iconsizeslider.value = sessiondispatcher.get_thumbnail_icon_size_qt(); } else if(download == "thumbnail_cache_time") { cachetimeslider.value = sessiondispatcher.get_thumbnail_cache_time_qt(); } else if(download == "thumbnail_cache_size") { maxcacheslider.value = sessiondispatcher.get_thumbnail_cache_size_qt(); } } } Component.onCompleted: { if (sessiondispatcher.get_location_replace_pathbar_qt()) { pathbarswitcher.switchedOn = true; } else { pathbarswitcher.switchedOn = false; } if (sessiondispatcher.get_auto_mount_media_qt()) { mediaswitcher.switchedOn = true; } else { mediaswitcher.switchedOn = false; } if (sessiondispatcher.get_auto_open_folder_qt()) { folderswitcher.switchedOn = true; } else { folderswitcher.switchedOn = false; } if (sessiondispatcher.get_prompt_autorun_programs_qt()) { programsswitcher.switchedOn = true; } else { programsswitcher.switchedOn = false; } } Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Row{ spacing: 50 Text { text: filemanagerpage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { id: showText text: "" font.pixelSize: 14 color: "#318d11" } } Text { text: filemanagerpage.actiontext font.pixelSize: 12 color: "#7a7a7a" } } Row { id: titlebar anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 120 } Text{ id: showtitle text: qsTr("File manage and control")//文件管理控制 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: filemanagerpage.width - showtitle.width - 40 * 2 } } Column { anchors{ left: parent.left leftMargin: 60 top: titlebar.bottom topMargin: 10 } spacing: 10 z: 11 Row { spacing: 164 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: pathbarlabel width: 270 text: qsTr("Use the location entry instead of the pathbar: ")//路径输入框取代路径栏: font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: pathbarswitcher anchors.verticalCenter: parent.verticalCenter width: 200 onSwitched: { if (pathbarswitcher.switchedOn) { sessiondispatcher.set_location_replace_pathbar_qt(true); } else if(!pathbarswitcher.switchedOn) { sessiondispatcher.set_location_replace_pathbar_qt(false); } } } } Common.Button { anchors.verticalCenter: parent.verticalCenter hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_filemanager_qt("pathbar"); if (sessiondispatcher.get_location_replace_pathbar_qt()) { pathbarswitcher.switchedOn = true; } else { pathbarswitcher.switchedOn = false; } } } } Row { spacing: 164 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: medialabel width: 270 text: qsTr("Automatically mount media: ")//自动挂载媒体: font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: mediaswitcher anchors.verticalCenter: parent.verticalCenter width: 200 onSwitched: { if (mediaswitcher.switchedOn) { sessiondispatcher.set_auto_mount_media_qt(true); } else if(!mediaswitcher.switchedOn) { sessiondispatcher.set_auto_mount_media_qt(false); } } } } Common.Button { anchors.verticalCenter: parent.verticalCenter hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_filemanager_qt("media"); if (sessiondispatcher.get_auto_mount_media_qt()) { mediaswitcher.switchedOn = true; } else { mediaswitcher.switchedOn = false; } } } } Row { spacing: 164 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: folderlabel width: 270 text: qsTr("Automatically open a folder: ")//自动打开文件夹: font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: folderswitcher anchors.verticalCenter: parent.verticalCenter width: 200 onSwitched: { if (folderswitcher.switchedOn) { sessiondispatcher.set_auto_open_folder_qt(true); } else if(!folderswitcher.switchedOn) { sessiondispatcher.set_auto_open_folder_qt(false); } } } } Common.Button { anchors.verticalCenter: parent.verticalCenter hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_filemanager_qt("folder"); if (sessiondispatcher.get_auto_open_folder_qt()) { folderswitcher.switchedOn = true; } else { folderswitcher.switchedOn = false; } } } } Row { spacing: 164 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: programslabel width: 270 text: qsTr("Prompt or autorun/autostart programs: ")//提示自动运行的程序: font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: programsswitcher anchors.verticalCenter: parent.verticalCenter width: 200 onSwitched: { if (programsswitcher.switchedOn) { sessiondispatcher.set_prompt_autorun_programs_qt(true); } else if(!programsswitcher.switchedOn) { sessiondispatcher.set_prompt_autorun_programs_qt(false); } } } } Common.Button { anchors.verticalCenter: parent.verticalCenter hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_filemanager_qt("programs"); if (sessiondispatcher.get_prompt_autorun_programs_qt()) { programsswitcher.switchedOn = true; } else { programsswitcher.switchedOn = false; } } } } Row { spacing: 164 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: thumbnailsizelabel width: 270 text: qsTr("Thumbnail icon size (pixels): ")//缩略图图标尺寸(像素): font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Slider { id: iconsizeslider anchors.verticalCenter: parent.verticalCenter minimumValue: 16 maximumValue: 512 width: 200 value: sessiondispatcher.get_thumbnail_icon_size_qt() onValueChanged: { if(filemanagerpage.first_icon_size ) { sessiondispatcher.set_thumbnail_icon_size_qt(iconsizeslider.value); } if(iconsizeslider.value == 16) {//系统初始化时value的值为16(最小值),需要过滤掉 filemanagerpage.first_icon_size = true; } } stepSize: 16 animated: true } } Common.Button { anchors.verticalCenter: parent.verticalCenter hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_filemanager_qt("iconsize"); iconsizeslider.value = sessiondispatcher.get_thumbnail_icon_size_qt(); } } } Row { spacing: 164 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: thumbnailtimelabel width: 270 text: qsTr("Thumbnail cache time (days): ")//缩略图缓存时间(天数): font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Slider { id: cachetimeslider anchors.verticalCenter: parent.verticalCenter minimumValue: -1 maximumValue: 180 width: 200 value: sessiondispatcher.get_thumbnail_cache_time_qt() onValueChanged: { sessiondispatcher.set_thumbnail_cache_time_qt(cachetimeslider.value); // if(filemanagerpage.first_cache_time ) { // sessiondispatcher.set_thumbnail_cache_time_qt(cachetimeslider.value); // } // if(iconsizeslider.value == -1) {//系统初始化时value的值为-1(最小值),需要过滤掉 // filemanagerpage.first_cache_time = true; // } } stepSize: 1 animated: true } } Common.Button { anchors.verticalCenter: parent.verticalCenter hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_filemanager_qt("cachetime"); cachetimeslider.value = sessiondispatcher.get_thumbnail_cache_time_qt(); } } } Row { spacing: 164 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: thumbnailmaxsizelabel width: 270 text: qsTr("Maximum thumbnail cache size (MB): ")//最大缩略图缓存尺寸(MB): font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Slider { id: maxcacheslider anchors.verticalCenter: parent.verticalCenter minimumValue: -1 maximumValue: 512 width: 200 value: sessiondispatcher.get_thumbnail_cache_size_qt() onValueChanged: { sessiondispatcher.set_thumbnail_cache_size_qt(maxcacheslider.value); // if(filemanagerpage.first_cache_size ) { // sessiondispatcher.set_thumbnail_cache_size_qt(maxcacheslider.value); // } // if(iconsizeslider.value == -1) {//系统初始化时value的值为-1(最小值),需要过滤掉 // filemanagerpage.first_cache_size = true; // } } stepSize: 1 animated: true } } Common.Button { anchors.verticalCenter: parent.verticalCenter hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_filemanager_qt("maxsize"); maxcacheslider.value = sessiondispatcher.get_thumbnail_cache_size_qt(); } } } }//Column //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar showok: false height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } youker-assistant-1.0.1/qml/img/toolWidget/history.png000644 001750 001750 00000004166 12312451003 023243 0ustar00saucysaucy000000 000000 PNG  IHDR&&:8tEXtSoftwareAdobe ImageReadyqe<IDATxb`@ee L0|SgSP? ''B% 33++###@1b` c3sqq2HIodedf2i`zC}vBdׯAHH+ :`9od_EYW Nf7&&&2x:3x/_XYX_vAq`e430X w eF@{:ւ:@a:yY@FFTTâŋ,,_z +WSab gyf,ҿn߽ȉ8߷{Ï?۷o |>4 +NNN`|񀃁F /Ph33C 3@+ "W&'77ت?Crƌi0SϟCڔ 6 ib * DGz 0bA%E?Z6by&R@{og%,/%Mqv|rÃ}li6fcF12& [LCH1en*%}̠UFxR@ N)8{Qu0DZAwx32c3GUbI1@,Vēm[P*FEVZX*W9c5וE..mˮtVӹbbFo__{ڟKK@g*Uw X=P ~c{g~ QD**^jվTl8Ma롁nvvg3lWV.>6c;KK+1?DӓZHlf5jڿ$=ј,>HǝcI*~/b#^;3s!PJNEO@0%p!~B"kT󐠱-Zp߾OZN|*gB"$)zhL\3T4Juo6xr6? m96&I j5^R0Q^!S%P*x}^*}$'.c,z(⛤e\uL'ː-.b Ќմ8 ᙤMjvAHW=,^D=+?@Կ! "A ź]ڲMJ̤miaCӖ&<`i8ȸ`rgV0 _N}^(C/Q[PvtB4p:آDzYZ:lW/_y @}L[Y=vߔhsiyĵk׵ yo޸YaPd@C=bȀd9 Xt O% V"Y}]c~|nNK#{ZQѠ(T@ZU CBte{ץ@E-GWkGzF~.]".^8/ k9#dm#49]Dٓ|$("*8zUt~Õ%'{rJ26Ojښ`im`&!%&?0dYc -|V )cRK˔=<q](8ZR aB3(͎N =}{+ +XFKѸVY%3T8rX `P ̻uzʌqW lGRJؘ=:Ӳrs%&,,#RdFK!2=8ғͳ0+&u,EFc (,#\ivYux1}ǕR_ 4⟔ʅ'A(:0솟IENDB`youker-assistant-1.0.1/qml/func/common/private/SpinBox.qml000644 001750 001750 00000010775 12312451003 024134 0ustar00saucysaucy000000 000000 import QtQuick 1.1 FocusScope { id: spinbox SystemPalette { id: syspal colorGroup: enabled ? SystemPalette.Active : SystemPalette.Disabled } property int minimumWidth: 0 property int minimumHeight: 0 property int leftMargin: 0 property int topMargin: 0 property int rightMargin: 0 property int bottomMargin: 0 property real value: 0.0 property real maximumValue: 99 property real minimumValue: 0 property real singleStep: 1 property string postfix property bool upEnabled: value != maximumValue; property bool downEnabled: value != minimumValue; property alias upPressed: mouseUp.pressed property alias downPressed: mouseDown.pressed property alias upHovered: mouseUp.containsMouse property alias downHovered: mouseDown.containsMouse property alias containsMouse: mouseArea.containsMouse property alias textColor: syspal.text property alias font: input.font property Component background: null property Item backgroundItem: backgroundComponent.item property Component up: null property Component down: null QtObject { id: componentPrivate property bool valueUpdate: false } function increment() { setValue(input.text) value += singleStep if (value > maximumValue) value = maximumValue input.text = value } function decrement() { setValue(input.text) value -= singleStep if (value < minimumValue) value = minimumValue input.text = value } function setValue(v) { var newval = parseFloat(v) if (newval > maximumValue) newval = maximumValue else if (v < minimumValue) newval = minimumValue value = newval input.text = value } Component.onCompleted: setValue(value) onValueChanged: { componentPrivate.valueUpdate = true input.text = value componentPrivate.valueUpdate = false } // background Loader { id: backgroundComponent anchors.fill: parent sourceComponent: background } MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: true } TextInput { id: input anchors.margins: 5 anchors.leftMargin: leftMargin anchors.topMargin: topMargin anchors.rightMargin: rightMargin anchors.bottomMargin: bottomMargin anchors.fill: parent selectByMouse: true // validator: DoubleValidator { bottom: minimumValue; top: maximumValue; } onAccepted: {setValue(input.text)} onActiveFocusChanged: setValue(input.text) color: textColor opacity: parent.enabled ? 1 : 0.5 Text { text: postfix anchors.rightMargin: 4 anchors.right: parent.right anchors.verticalCenter: parent.verticalCenter } } Loader { id: upButton property alias pressed : spinbox.upPressed property alias hover : spinbox.upHovered property alias enabled : spinbox.upEnabled sourceComponent: up MouseArea { id: mouseUp anchors.fill: upButton.item onClicked: increment() property bool autoincrement: false; onReleased: autoincrement = false Timer { running: mouseUp.pressed; interval: 350 ; onTriggered: mouseUp.autoincrement = true } Timer { running: mouseUp.autoincrement; interval: 60 ; repeat: true ; onTriggered: increment() } } onLoaded: { item.parent = spinbox mouseUp.parent = item } } Loader { id: downButton property alias pressed : spinbox.downPressed property alias hover : spinbox.downHovered property alias enabled : spinbox.downEnabled sourceComponent: down MouseArea { id: mouseDown anchors.fill: downButton.item onClicked: decrement() property bool autoincrement: false; onReleased: autoincrement = false Timer { running: mouseDown.pressed; interval: 350 ; onTriggered: mouseDown.autoincrement = true } Timer { running: mouseDown.autoincrement; interval: 60 ; repeat: true ; onTriggered: decrement() } } onLoaded: { item.parent = spinbox mouseDown.parent = item } } Keys.onUpPressed: increment() Keys.onDownPressed: decrement() } youker-assistant-1.0.1/qml/img/logo/Manufacturer/AVEO.jpg000644 001750 001750 00000041174 12312451003 023543 0ustar00saucysaucy000000 000000 JFIFHH'ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:04:13 11:27:44]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOUK|.SHhkD?Eo+7YoUoNF}?iԸ1{鼼#AO]{8o;-{ϢnRm̵W]25V]fTz`:.5ݏKjlᛄ,Z<#p D8}%?Q]]h,ǥm eu_X2ǧ]6۷W-'cc,o}iÉa5/}鷵Zvebǿ8 @,Em/O#\~>O]~ٶ[_skdmvoS?$7Y^+krG2@\a䗑t߭YԱfs\ ZCΕ멙9yBQ OYdg:7ii/ xkSܫ& };g-f; wnq\ߠ?RUc!V N;U9q"%ҿY Iyuu_Uڱ)/ *Rg_ȳ!O~;zbCC@nŽoUz>h!M'Q.< q2Yh̃Iyzg^mNхIﱍ2_mGeQBJ6.7TiKkZ]['M=+{n`pȸ\w ݿGc~S1ˆW)tMqR>uHv9ՕuN~ggdPƐ)3{i-ǹc[Xs^X"]nǙ`.w'Kd=u:GW YL[zl.,unbs>}g9|Afuoe/&_FQhx-mͮw_7݊,lŵ{{إ̏WwO _ھc%׻#m#ڽusV>b^}2dx 憆ZN].hO]~ٶ[_skdmvoS?$7Y^+krG2@\a䗑t߭YԱfs\ ZCΕ멙9yBQ OYdg:7ii/ xkSܫ& };g-f; wnq\ߠ?RUc!V N;U9q"%ҿY Iyuu_Uڱ)/ *Rg_ȳ!O~;zbCC@nŽoUz>h!M'Q.< q2Yh̃Iyzg^mNхIﱍ2_mGeQBJ6.7TiKkZ]['M=+{n`pȸ\w ݿGc~S1ˆW)tMqR>uHv9ՕuN~ggdPƐ)3{i-ǹc[Xs^X"]nǙ`.w'Kd=u:GW YL[zl.,unbs>}g9|Afuoe/&_FQhx-mͮw_7݊,lŵ{{إ̏WwO _ھc%׻#m#ڽusV>b^}2dx 憆ZN].h 1 93 70 1 72/1 72/1 2 2012-04-13T11:27:44+08:00 2012-04-13T11:27:44+08:00 2012-04-13T11:27:44+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:8b2c796b-8518-11e1-a998-f15f6a1faa8a image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثWN*y74Iu^FKhDDF(Xp$byAЫvYIWɿ/<8럡Ri-RzbO~-NX|Arlv*UثWb]N*r3cWTzPD;5܃ID[tGܸefȴU$k_y-Ymm٤%9p #1Q^GѬu2ZH^XZkap\_J#“Q#R?z'䇝|:2Ɠai5rpQз?1,WC-쮮LzeA)I7͙Xש%//^E Ɩ Hlj*. >cozǕjOn.5#5[Zi"c2#p cE|E _TLүίYd+42F-_Vla^.%ok:_1EMx&e* J0 _˲[ L朗?`򧔵 i3B-#o۸oyel>$X|} Qwlm%ΧpZ /<伛:l( /MlL2WycHk.$Lll/~7H_vZ[ăP4G ~. .PP This manual page was written by shijing . youker-assistant-1.0.1/qml/img/logo/Manufacturer/QUANTUM.jpg000644 001750 001750 00000010236 12312451003 024136 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1!AQq a2B"#$b3TS45  1!AQaq2B$"R4#Tt%5 ?(Y^LЅ1H=*)f=P"&| #Kr(/"&W= $fL( +ːud(Tw"fb2ʁW?t!Lf$tJDT.HI.J9$ȆIxB&.h$"JA =>XLUS3"&c )gˢ?*D.hRI2!eysIi 4 2PvBzeO&ijXGH W\Qe~S=I2xӧPd$B-J򔒴VI$6xlmKE5juT2, ՍHj<NkO>lgsm4ี˗al2ERYHr*,weۈмe{f_Bӎ12Y{{>}Q}/gRe?cUT%HH3clߒT OjTva%ILa u '*5Wý7Ot}b[HF2pe;i5\"Hbul!!y ?Y7qپ5oR`{)⼸RJQ$)Q9D/Jt;0S|'jGOxz1&hu/oQT6'G5ȹKd)/,O-6[p"Nqa*8M`GO:n8lm4`'"P n j<++zٛlZΫ뾍)A-Ylm4k*IDjMCx#&qψZxlV{p녬&a=]%3Ιu+(+)A+FK),1 {tZ^p\ChЭ"kbw;Eֹ:٫M6GiŮY_ɳ6# &ٻY:~dZ\$}r#z345[3qd#Ȉ쥶rjMGwR6*QQ~_m2le"1:mJ BR' #fp˫n1dX]Y4KĀOl5=v Cń/CڄR+h]j5 u ~S @gmooM˷4dm3I_Ck;q{w*A=m+jN먲-pɐ;>%_=!\ |6tG57ێ0M!8C8@ZsaKHf+W/[zM2mn!n\&LjT?J<؄u}exbR>Gu6j#Zwڻ-5lGjի7-cރLMEo,-ISy Q,l%х?cjrћGudz.ռV}Pi\?4tP]Z~o9x)VH 3w #x~0l+PAz<D[9q~*; W>"b_FfM`.#Vi +(jgITP2z@ JюwX Σw:zw %fn)R痢?iDvm:O??Ւv)cG/t|sʊenh*Pr,Z֬Y-pu N>s5Fa1}{/ZԧU@c@iŊ䏨Owcb i9o_cD̬jNuUu3ЖDCwAVWӎŊ"ŏ@Zm(UfeT)ItN'B!e4nӼ/ԀK ~G9x:}>4|`[`-&uM8mKyAq`*O],!M,4;ѓ|Ƴ p<2䦽%ޏ|pJkwh̸dKMgao$¢@ ʒ90(6G[yxWГI `He)#fE ^}= ǫVб61]`6}rF) "-9U& Rp(Wo>f[1>o^*H~OɎGڽ=jTW[+XռR7mXBImHafd]R%9sBrI +˞L3H\ѦIE:{*};3Myouker-assistant-1.0.1/qml/img/logo/Manufacturer/AMI.jpg000644 001750 001750 00000010016 12312451003 023406 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1 !AQq2Ba"$ђ#4Td 1!AQBa"$q2Tt%5E ?M5̹75 4 hCMb H~==<oCE˿hjTY NcBm\>ZQOљ^F&0rojNhA7T SOv" z{5,y /ߖ"~ԩLHv|+Ģ2ZM`22Ђo٢ A7!&!DpjX_-E.R)f 59 rjWE?OoFey;=_Msj@s,P7_[$h(+zcAOJ6SDC79,@@ BXv c!v)r3= ўZ^U_} xmZƗ[8,,bJ#1=F)aiRR Gsŀ~]h68J–[6$i!~aW"""NgLeTa5iE@n=+\SV$eT͇)X9 qËZW9e"2SKS,XUfUSHf>auL}=w5䲛y$R"}A =&*U _͔[!=tjad}*\-{3OrF"uLW:W i@E1ERszpb(]Yק_V8M5?3QlIlĞwwZX^܊$dRUF&r•BnNs&'0|\Vxc!{':Mnګ=h_8URֈAEA`ѕz#*4;ƟX<ɲ4+"@nN{m]qJw-enKd~gܟy&E7kZbU|w䜏hk`3+95a VlhY nyC.)W Njr:VRt D1|hߘ\J,E) oZpcucZtBݴ5o75DĮeSQ3:"f6JRϹEmRx܊Ψ &4ly{Uvk4u;gǺI2TbAQWPB!Xv=†(Lo[*(B D3^VN@dlm RTGMm_uoHt;:icjd3X4IbY"LGB+}LN CxHPk볕}7rnkG) *rb6Q\aglIqtz(d- UP2gC'[$Zaj׫K_fI+>$G6cƴw8ҽ*6@Tic1~YWKgEU9aU=j?̬ʨUZw.U,QJ 3 ݚںx=I3{N| _aqT֫I1I᎖,>@ 6L.Ki{;tߌ̱s_`I`-JԌ>R[=%ݴF2G(swQX$"J:z4F9 dEXW5D1%S8b&_agj7Z>A Ց0"V QQk5Y^F&0rojNhA7T SOv" z{5,y0)/ÉF#z͋>2eaX J+jCKhi)LHv|+Ģ2ZM`22Ђo٢ A7!&!DpjX_-E.R)f 59 rjWE?OoFeyk8eɿe9߳ERn? NCM=C.Ա$;~Z.]CRR@js2h">ԯ~ߦ?youker-assistant-1.0.1/qml/img/logo/Manufacturer/B-LINK.jpg000644 001750 001750 00000011022 12312451003 023712 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!AqQ2B a"$#3C4%v9 !1AQaq"2B#3$RcT ?&X&B *j=Ը"Mz{(#PJQ$0snL.”\bےJ ;”zS)> *U@ɯ7kʣE u.^):vRpI/*)˯0&.(Ң9tO¦)J&yP*rk) H&K)ק? AuK? r)EɆ)K- 4N]<)G2oR[Ϊ6ϷL -<[\^V9s`X2ӔgT7-X@v"WJd3_C\b- Bv<фpEYTǜ}1b(6_l73[% V1.x AݭQES+C6Fp]Kq"Vv[4u$i .'K `ΰĆ4iwqm7nTg>@^ӾPŞ̵ۡJ/f^[qWjInM6Fav7G%wO*WjRY2̙k<5>Ӛ$AXq|?pZ9)d|'*0d6]H VصssUnuku67.~}XZ"qU{iδۭhIY2rDZ蹰o!kk[ ? ɛwh1kKcxMPS#R(JP3(uQ/ZwtPdwt]c8qEngnmBUN9G  #"*lN *Xs()mP F؞Ս͌:>nur5oL[Vsd NN.aG+п¶W /*?*_"/\v.Kn}S?e$4CAql=vG7JM:gʱ~q|p/WҘs%4!2 neVwش6Һ3%[IM}.rf_Rk#Ka㏼e Ļ93{: /XX&?]FW`oF x\Bҫtvp%*$6j"dÐݜEdL9]U2Svp%E٪ j4V17'!w&HB)$V="?wDvF?x@J!{$MN_p&,rd"C}js集oTN"Fƹkre-r.eR֫ > }ipU^ :]${6=Fj[.TH7F8Kl4 2F>E0<0B)1vM @}+kj28\ik1+%EhJfY=G\N>K.W*Uү*NM}ԅ1$^Ur){pE PGH.ӲI~`PܙN]y(0 )qE$)ˠw(R}<1MUi4ʁS_u!Lo וG\A5\H&=R t(_9T7&S^aJ.L1H \QmErJ=)O?LSzZM*THSA5Q"MGR Oe~;)J8$~ ɔטR R[r@iQArpxRJe'Sޥyouker-assistant-1.0.1/backends/youker-assistant-daemon/src/policykit/dialogs.py000644 001750 001750 00000004574 12312451003 030503 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2007-2011 Tualatrix Chou # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import thread from gi.repository import GObject, Gtk, Gdk class BaseDialog(Gtk.MessageDialog): def __init__(self, **kwargs): title = kwargs.pop('title', '') message = kwargs.pop('message', '') GObject.GObject.__init__(self, **kwargs) if title: self.set_title(title) if message: self.set_content(message) def set_title(self, title): self.set_markup('%s' % title) def set_content(self, message): if self.get_property('text'): self.format_secondary_markup(message) else: self.set_markup(message) def launch(self): self.run() self.destroy() def add_option_button(self, button): '''Add an option button to the left. It will not grab the default response.''' vbox = self.get_content_area() hbuttonbox = vbox.get_children()[-1] hbox = Gtk.HBox(spacing=12) vbox.pack_start(hbox, False, False, 0) vbox.remove(hbuttonbox) new_hbuttonbox = Gtk.HButtonBox() new_hbuttonbox.set_layout(Gtk.ButtonBoxStyle.START) new_hbuttonbox.pack_start(button, True, True, 0) hbox.pack_start(new_hbuttonbox, True, True, 0) hbox.pack_start(hbuttonbox, True, True, 0) hbuttonbox.get_children()[-1].grab_focus() vbox.show_all() class ErrorDialog(BaseDialog): def __init__(self, title='', message='', parent=None, type=Gtk.MessageType.ERROR, buttons=Gtk.ButtonsType.OK): BaseDialog.__init__(self, title=title, message=message, parent=parent, message_type=type, buttons=buttons) youker-assistant-1.0.1/qml/img/logo/Manufacturer/PHOENIX.jpg000644 001750 001750 00000007615 12312451003 024125 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !S$DAQq3T%H a2#E&VB4d5U6"CctFGwX  !1AaQ$DTt%d5BE&4Ue6' ?cnFܡcYsŌ{ЭǵHŌ}]~Ŝa֊:lAsgES1d0]$00{8Ȫ}%~NQ+)*չsn݆ܿ%ciU?}x\a}!8=t/Vɰ6ߧl5ܽY. gnufCnKՔ-Q@6'Qe"Q6Y(mNfs}.ՄBueB$>c.X@̳۬dL6짇$ej#oQ)Re;2^npV#]1KtF;'߼Yi&qs_*H- ZA'Oi88 ezd hIcbY?ZG{exD]Rjtb*kj]`<EbM_Sb? 0^K3)DV`5Bca T9m19ތԲDKY|8]ς>穦L;"kE^A|0K]\̿<>I @/Eqž|$D>Iヂ5Ƅ 99aϟ&,]р;\wr[Hq8>ov7G(ݐ6`MM>8ſ|<^10t }k ٮ(򼍿7)aJFc)*0e%)?\Y~xp?S*=Mbl#,A쮍XoX0յń[eZ _<#LpI?W]og> gǷ~bPRbi +)W3 B" LsjڃjQ!Ȅ=ˊML:[r&ʞW-,qF{wI=fCMk *QgFi5o2άR*:SɜX8O,Ÿ;leUܪNSEU&;=1JTXPڶFx-X7sppMRm#2^w]P.].S۬Dbݪn$Գ̘ h `6WO*_;Dfӻ`J=6NB^',l)s7|ᅮ܈H=^h5D7ꤪFL+9+SyaŁK4l Uʢ:5eA7p+&+%A2=%,(]@7p`aTyFE]̼ EWҋMua 6[BnKB}hC @*Ц 1J%,&Ƈ):;hݾjI(fNa)%%b9 ''~'Am6s,P2eYO焝| 4_ wb㬟L≄3ǁɣ8N<&y2N>!֦x“GkG;IoDkRUCśdk!@**Upß@9yL9,J*?u 8L"9-jg*Cy!5Ě]Xt|L?Pp9ª VY*]|岵(|3!CΠ pPCJ鿢vZGu!Z 57gϼ҆` :|}Y.KeJizg#r ]Mc,9W@y J{륪A[=3+%]&eg>濙eC}ը=)bf/vjAMȏɑ9*YҜ S92M, ]g7!L O!0Wꫢp!5ک:np|3g :\ZyI=@âaܪL=̼ O#2@i=4FW?:d9.ǭC Oq|-u$_j9Fpynroo@ pKIuc- Z@ppeߎ r&c(Q°W**w, ɨytiu(ēRi&݋QLcnUNIaqSPG8s#XH | D'(^q5ʕ9 Pʠ8 ܂0,Թ%M38YFGr,Gǀe7]g88c4*V0k^ɶʹyo l# i_>ͱ~oUh]d}׭"84*kNRmj gvٰ8UHSZڂ\kރf!eWY6 P\6k7Y8 P[6j+tՔwUI6({;4Ez>ښJ4({4ޓvb6R_b١+a YU<@I/MKV U SWg`äa6R V1Fh=QK.tz1c O:U'@͟.bf,F+fgvOO[?youker-assistant-1.0.1/qml/img/weather/n12.gif000644 001750 001750 00000005616 12312451003 021442 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P鬳ý߳˼䂋ƯƷͨӇūõʾѸԄ9\1R4U;]8Y6T">a!;Z%Bd+Kq,Lr)Fi-Jn.Kp5V/Mq6W*Dc1Os5U{2Pt9Y9Y9Y7U{/Ih.Gf:Z9W};Y`:Z;["@c >^&Fi&Eg#@_+Mr%Bb.Ou*Hj":U0Rw1Sx0Qv2Ty'A]4V{7Z5W|6X}9[4Qp4Mi>Uo}ĩǸ˽4U/M0N2P3Q;^4R5S1L6T7U@a<[ Ab5P"Dg!Cd:X!Bc6Q=\;Y!@_#Ba'Hk*Kn)Jl+Lo-Os,Mp-Nq)Hg2X}.Or/Ps-Mn0Ru0Qt.Op4X|3Ux2Sv6Y~3Tw7[5Wz.Lj6X{5Vy8Z}5Vw9\~8Y|:[|:SmD\uOe|t2O1M3O9X6S9V!Ba ?\'Eb+Kj-On6Z|6Xx8[{3M=Y3Z{2M!,00MzT*\ȰaGZIBSA43jȱnjL'o(S\ɲKh>!:Sj͚Ogrɳϟ{@cPBI 3 *5v \F>r o .,>$G>7T[M \H2|y0)`0 "O,uxpwA5|q/1 +?cuSC- -phB`SlMj3ݬw9\ հ$@S x !8a,L`XSJT5D%fGKcF <0 o1B[8BP-hGdՀ;L#/l#Vlaex-J ]QB. \,чCCjXV+@!Ql:cGO* [2T;QXi ;~/|1ZAE.r?&a#Lba/ (3F:jЃHAl!PB+p=xq%#V΄%0! asE/< D=r aS p!j$@u!|` 00 `CP?Q_ `@APc8Qiܣ(0z$}!F!V=C 1 #@F,j ̢b )AyA{$ ̐c\8/r4#HU* Իx7{kZG`D.>mD,!hr#&W7a, ZWm ~Wu@cx~4z[D!IF5l1pt {p,C>-DQXBB*[$ Bo1&bP9 ! <?@ah8*$k 3 gX"pB\ɐF21d0;Gy2 E0SQ&8?ԧN[>p&`NW(@WWЏ;youker-assistant-1.0.1/qml/img/icons/disappear.png000644 001750 001750 00000012265 12312451003 022503 0ustar00saucysaucy000000 000000 PNG  IHDRZF;ttEXtSoftwareAdobe ImageReadyqe<WIDATxb?)D9}? rL`TeE\?0._h Wo@딹` ,%^~d c(&FP2JJ0詣:o LLLƄ@1q,muw{ ɣG1X[[10213BVN_ z H1+7 &R\E5<|V,TA{ Eu`A#CC0`o;sjX5bl5[7'! pޔ_ Քe`2e 3p0facdfT qXr}pYpv:qJ/M_KgXf f8y*ǏPS,6 ``tOLA/7ERBX (AϜ`ccZNR ȂĂJ H?;ïoI/|HD3ArJA dd8$"A$@;﨑2Hp {3{1 30/_Oa`aaA)1?mZ!&؇AC% 35b{2rjD kwC[EA7HA*ov؆=nva 0 yXp-`"OFLl(x:؀%9u?ew`7÷?7 z bXi'çO?Ԡ5$6V٫Va Eo߾eMt e7;JFL,߿QGg"ՠ@\?Rي…p7q:T+++&7K 9\vD@CvR(tm29jӅ?RΝQ ffec`f``ȐY@Ym^ ,#@~~~1VfЬ@4q_Z P(JQiԆ& 5&bʁq MOɛWohDFBJєR>k cgggw~1]rwzUZ ?ZC r޲E(DcMEP(UT_C}z:sɄښ'gF|4GDkT,4ofCdΖ&Ya\=KGI ԈbHLK9G{W=W%c@ ˗B>eU=^=Y-р`1W~KXkTDϫ`Aww7Ξ9=qY+TW;þӶ\CϿN]=|mm(*Ln6K[4l7j[ҍy.z}:**p'"jc͆|BͰ7 ^$Xcjj*1VҨ2homɨ=BL;kp.{|߂t2LIP2kt % )1ui9'K1VI3 ?ܐۆ/l:*eN%АYRE1BYJ %744]\EyMXk-c%qlc×QtQ(g66R> {-\lƃ:x!ݭRaY ŕݤUeyO0Hy wǕsŲ66;GDG#em<_uϽ ,p_oصڟ(+/}oWZn[ l,CevS2?i/%1=~6&'ߒ-"llK<]ۡ'I 45xR&x.ݝӺ-N .4"rnKx[:' S~,@2 rZ|Ͽ/B{;T-kb!1:ǟ|6Mst^Pq Zj˯]N߼y q76d,F7pًSLJ5!YENOLN=؆ Qu~p,&Iуb#?w޻7~ws<y~FUـx\ف3>ÅoFr҈!=:;;Fܱ]: m/w.# H< )$IFOw7F%8f]#fqEC>T2{^yq_a; rMD>UvrԴΘ6@! ;,pWYq 8UN 4nvQnʥ*+Pk紞}һt6JRUꜶ- )SGpxT;:qUTN*{dsݜ$$iiW}W2>~C,ja)~}V /D+:tv]1$>|ttgipj4|=ōS$BPZܮZe)]hnBG3 wE vtSXY躏;:!]0qҚ_enr^ 99ʝF^tbw>=W͢}--'J=.z(Z;«O|gy6,إRǃK?SQ##UzO'-?}RmLa׍`CWjdΕ=5yE$HL$@Xd.hX*jAKotSgбvjqJ'g"" d Y$-gN|w9s͖͞@/h[Kb./i<,p^f?K6.A?ZBf" ,)11FGәӧ}f#7r YhY)g?NVk}sGbrr ?\UW@Kp U!#C |y! c=+]^^^Nmwpd2 n`MJ\-^]| @OR3695Yr-pS(MF+X e": &'+"BJ.7Y~Z*;wihh1,|+ZtbCrۥm Ÿ1%Ʋz93Mv.5cU%U/, FD1XȺK)s\n7-6-x)&ct NcU졬ܼeYrӢ(bOQ^ Uis#i}l`PvHU<]8RQNˍ(c?PV,I [F+T*PO&Zi`_Ew+9m%|+smu%xo\HF*Z0ngSB9(,̉z2[o/W%Sq1>Q[D tSwQ~^.+x3~}_FƧhhźe ritl9Bns)#A|tE߻w_O72 "f Ql2N~y lZybwEą RzLo`%8:If8F%#M̘ 0rǧic##4MLG+٬F^ƕrb8]⽋/ 7j|(,21vׅIzνN)cG2f(G=2;ZePqI6Ym4:6FaC؊XQUM=_賏_oH >zAJ%nK@tC먴ho23TX-m"y%7HC#O9)N3L%s'NC0G޷Aؘ-PɏڂVRR4>u8\pN{[isp}mnri&G'TIIENDB`youker-assistant-1.0.1/src/changecitydialog.cpp000644 001750 001750 00000012422 12312451003 022131 0ustar00saucysaucy000000 000000 #include "changecitydialog.h" #include "ui_changecitydialog.h" #include #include #include "util.h" ChangeCityDialog::ChangeCityDialog(QSettings *mSettings, QWidget *parent) : QDialog(parent), ui(new Ui::ChangeCityDialog) { ui->setupUi(this); pSettings = mSettings; init(); this->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏 this->setWindowFlags(Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); ui->btn_close->installEventFilter(this); ui->okBtn->installEventFilter(this); ui->quitBtn->installEventFilter(this); ui->btn_close->setStyleSheet("border-image:url(:/pixmap/image/closeBtn.png)"); ui->okBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); ui->quitBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/quit.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/quit-hover.png);}"); connect(ui->okBtn, SIGNAL(clicked()),this, SLOT(writeWeatherConf())); connect(ui->quitBtn, SIGNAL(clicked()), this, SLOT(close())); } ChangeCityDialog::~ChangeCityDialog() { delete ui; } void ChangeCityDialog::init() { pSettings->beginGroup("weather"); QStringList cityList = pSettings->value("places").toStringList(); pSettings->endGroup(); pSettings->sync(); ui->listWidget->clear(); int len = cityList.size(); for(int i=0; ilistWidget->insertItem(i, cityList.at(i)); } QListWidgetItem *currentitem; currentitem = ui->listWidget->item(0); ui->listWidget->setCurrentItem(currentitem); } void ChangeCityDialog::writeWeatherConf() { QString name = ui->listWidget->currentItem()->text(); QString cityId = Util::get_id_from_cityname(name); bool flag = false; if(cityId == "") { //从Yahoo获取对应城市的id pSettings->beginGroup("weather"); QStringList cityList = pSettings->value("places").toStringList(); QStringList idList = pSettings->value("idList").toStringList(); // QStringList latitude = pSettings->value("latitude").toStringList(); // QStringList longitude = pSettings->value("longitude").toStringList(); pSettings->endGroup(); pSettings->sync(); if(cityList.isEmpty()) { //警告: 没有找到该城市! QMessageBox::warning(NULL, tr("Warning:"), tr("Cannot find the city!"), QMessageBox::Ok); } else { int j = 0; for (int i=0; i< cityList.length(); i++) { if(name == cityList[i]) { flag = true; break; } j += 1; } if(flag) { flag = false; pSettings->setValue("weather/cityId", idList[j]); pSettings->sync(); emit readyToUpdateWeather(); this->accept(); } } } else { pSettings->setValue("weather/cityId", cityId); pSettings->sync(); emit readyToUpdateWeather(); this->accept(); } } bool ChangeCityDialog::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->btn_close){ if(event->type() == QEvent::Enter){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->close(); }else{ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj == ui->okBtn ||obj == ui->quitBtn) { if(event->type() == QEvent::MouseButtonPress) { QMouseEvent *me = (QMouseEvent *)event; dragPos = me->globalPos() - frameGeometry().topLeft(); }else if(event->type() == QEvent::MouseButtonRelease) { setWindowOpacity(1); } } return QObject::eventFilter(obj, event); } void ChangeCityDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void ChangeCityDialog::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(1);//0.9 } event->accept(); } void ChangeCityDialog::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } youker-assistant-1.0.1/qml/img/toolWidget/apt-min.png000644 001750 001750 00000003625 12312451003 023106 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<7IDATxڼWMUzU^: FuFD03ĕ)֝kQp 3 wƍ PD%⠙u;~Uս{뽗AJ߭[U;)sAy?ݴccf ?sqмS2/udϭ}|6ܼnf- z44Ϣl0jjTcpC6s |m ˳msn|<EfGnC/5#AkШ eeؽw/V ypaJZmhCគ_ | t\[jq&V˚[ -#*ku}^sBV+CDrjp{ǰŰc:!(MxL.c>^ a7+!?KfDhM<ovsyV@;EoH VNX.D r3^kz!W$uѭ!xx*ҽAEB2F.`;ewfH¨R|4#[ǵ>hљ-Θa\ R3ef]a߇ AdobedF]  1 qB!AQ"2$% !1AQaq"B$24R r%#3& ?y:s% 0G1 }A:~h/P&d_?ӈ pFPClPPz?NOŶ i:rt@0:\sA:q+(x GƇ`oaA% 8PPze6e { |[`֓'D շbg=Ks*aYÄ6$yzȌqt&r(<`I#qDzplk];TOvGqYKNttER^!_9+~~-K7|S wBBV-Lh>8#&凄hDqLeV6|ɏ>`x΋RFqIBbԾۡubm 2D7/rZ☲(, t$3#D{aNtɅnC%0Gɚş{*l߮ߵnМfw"Nh{-=cΥ@篻IVl5ZsC \]gd% 'RgΑlE!Vq+l@5z98\CJIdغG1 d' ZN-ǻ9z fDHsuQJ(Laj|vy'4 MKC:CaiF%MۥŐQB|`A=NzW)za|2$6p&iAPRA NϝvNR|>fwlUI셹Q*\\3hF9X0FauE}IΧPs)JlQ]ԭʰMT.KsRHbXq2MP{6bDFul5M]4ْٽM hq8~rͭ]:9jHL>KJ-> γHcV[F!uٜI&ˑNUN*՞ue:Ha!*[8SUܿ|RJ@eoUi\I*%,P']5s3kÖHF8jL5M9#UYRXa"p26)YB%J&-FwWփuJ2IĻ$ݻ'DnuRֆ2-̳9Kg_.kFJznCnH \S\´-nk4ԺBʪYylYbݼ`dU  }mRwL19Tܒ?W)0:# 24ۻyyI͑_[q[X,)0!2A t4Ekt򊐱WeW._^xȵϕ)|@LҝY. T}Uu>T:#ČHbp> b`i x#_Ѹ.}ڙ2EAΛmX#[/,ZYJ,hJ^PǞT8g_+*#g6FN`YBs$'*q~YyzϪ,ڤ54)Zc$ntV2@b\EWcobwҭzU*mjZU$n2I{2?de򊔳`V`&YvՖNlyju؝p'Fp&&m[H)@U_LU]aX@V&xD;p_`nXO)n |A罾TcIFމq$ dV?EhD>jΌ֤Ӫ:@*K v9N&0܁Ϝ I!.3=|^ȣ /xZ[-\ѹQ _G !K5.oB65 5 d+9H&lni+?3P:MW¥q&KU(IIr{zm ))(u1932v腯kgV5oX4G]`u[{Om;6@Wx$BZ9FBISP 1.g@s~)D4Uj Vԋϕd5jd\䆄,nq٨h棞2@z$=8Dhiw-㚁QwAW}K]O+qט>ȍ$3z`՛"I@"hVi^ZYlݤEvnqU?E*{@U.:Uo * [$rI  N-X̐ݗHJ]K 靸ѭo6S .m-غTVB*),&Ո WW>m*SLD Sx+RVlAS^4 St *k_S$' - I yVXU lqs.ҷ*'TOTCd[L++ItAmR๞W99VVpTÖ3 5@.[bn/@5H2]&q&VeyURl]KNI"HKNՌU&)DVHX)t5=\X[*uJʃh ˷Tݚ9')Ls-ǯ'TL;s{c^!'NN(`ЧڎbngqJ]dNl֖FW}"qԬs6/WIA  i-5'^b.*mRww+ d>s,H;WKsIJ}38R;\hWX[s.+$ MY$f.}̶:U)N*zX\Lut#XyWtJ5lgg92)3C-Sh@<N G} Ly_Z"SR׊vC/d*d.K8'I"*!d6¥R]'bGz/u dM. BɞqI DyhsYce^ݛX[\UO﮹-%JSqT%rgmbt\IL` *gՎXqX:o4\ryLj 3tIQsد y?iv#FR=czK"؍i'LUdNSvI<3[TAlR)e\-y[mɬM^~;-J]7R-yiAEIL({w<7v׆xglbg3gpح]vd.j\ olZ$,6`VڑZ11R%*B[jP\=>*~拰ݪv3%Nʴ%0Rw&lQ8 {yXmSMd;YkmYi'e6"IEP*U6 ƹfi(s\QU="m.^lꜪyWj-M Y4x0,8hnor2<݊bkFٱ[3h18[5|[ gd+X>ui'VuZgZ"_]wKi*t4XSA9 رL i;=ၶ$J©A65]BtJϽ&ɱ=w]vr+-EnՌSLע0.W@N:_U5 )m~S*nb{ޜ3tMCe|آ{!'NN<)F" ҧZj|#Wҩl*)Oş|G)" dFq_Wmj6 },Tݵ6'DVחh ~G7JHDIM鱥Ve|յ6Ԥ5g|V$bf@"I}ۛ#Ƈbb5”lDsYY&GRbPly}˚!|p'IˍFDPLS]P޷;|&軭ct\ +p ⣜ʲ\J& ĸ cioݸABiUuVFbclȵ2sIˈlRXR7tm+gByIjy%҆Y%#Xzða:w< Q 5rUU4>aCӣ̙V<[-B%\?xr8#D߽Mq֍W:j$tAer1FxĊ{X;#y Hqisb솴9: \.9 |<N쇂 C0Az0 yG((\|Â2`NP@t2=pG }>-^kIӓ# ˉYC>x }4?{} /r8#(!tN(C(\~pPyouker-assistant-1.0.1/src/qtoplevelwindow.cpp000644 001750 001750 00000007025 12312451003 022101 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qtoplevelwindow.h" #include QTopLevelWindow::QTopLevelWindow() : QMainWindow(), _view(new QDeclarativeView), _positionIsDefined(false) { setVisible(false); // Ensure that we have a default size, otherwise an empty window statement will // result in no window // resize(QSize(100, 100)); _view->setBackgroundBrush(palette().window()); setCentralWidget(_view); } QTopLevelWindow::~QTopLevelWindow() { foreach(QTopLevelWindow* child, findChildren()) child->setParent(0); //we need this to break the parental loop of QWindowItem and QTopLevelWindow _view->scene()->setParent(0); } void QTopLevelWindow::registerChildWindow(QTopLevelWindow* child) { child->setParent(this); } void QTopLevelWindow::hideChildWindows() { foreach(QTopLevelWindow* child, findChildren()) { child->hide(); } } void QTopLevelWindow::initPosition() { if (!_positionIsDefined) center(); foreach(QTopLevelWindow* child, findChildren()) { child->initPosition(); } } void QTopLevelWindow::center() { QPoint parentCenter; if (parentWidget()) parentCenter = parentWidget()->geometry().center(); else parentCenter = QDesktopWidget().screenGeometry().center(); QRect thisGeometry = geometry(); thisGeometry.moveCenter(parentCenter); setGeometry(thisGeometry); } void QTopLevelWindow::move(int x, int y) { qDebug("a %d, %d", x, y); move(QPoint(x,y)); } void QTopLevelWindow::move(const QPoint &point) { _positionIsDefined = true; QMainWindow::move(point); } void QTopLevelWindow::setWindowFlags(Qt::WindowFlags type) { QWidget::setWindowFlags(type | Qt::Window); } bool QTopLevelWindow::event(QEvent *event) { switch (event->type()) { case QEvent::WindowStateChange: emit windowStateChanged(); break; case QEvent::Show: emit visibilityChanged(); break; case QEvent::Hide: hideChildWindows(); emit visibilityChanged(); break; case QEvent::Resize: { const QResizeEvent *resize = static_cast(event); emit sizeChanged(resize->size()); break; } default: break; } return QMainWindow::event(event); } youker-assistant-1.0.1/qml/img/icons/cloud-light.png000644 001750 001750 00000001044 12312451003 022737 0ustar00saucysaucy000000 000000 PNG  IHDR KU'tEXtSoftwareAdobe ImageReadyqe<IDATxbt_s0" vb ~OV+d?\ g8 %b :Oq +o 8o(f w/:L/ u*32x?; ߿ PlrH|6$6+ vc0a Ts7>r08113|a湗 P 1N` @]‹ >dPduQ/C @V f/2ڢ 9 az9C;3Ç w @h9hÁ'dOe02(w] L@3oʐ`؀k[0~]-vXk2dlp襬ͷ aQ2O?#M_ D?%: b &ѐ@}6d1@s0( AdobedF]      1 !AQq"2B a#3$%RrS4Dt5' !1AQaq"B23$Rb#4D ?<5.8'HEN# ~~Ax٥(/PܙN^=&K0܈ 42ژZ5yP*rq1" ǻR+D4"'A^!iJ8"K7&SxiEɆ(7"H%{Rd2Ɛ) s:oG Ύʒ" `ݣ;/ͱ@י~YU|=kO}{w{]3{.\fTM :Yl@"m (Ю^CM[PCmȌs NJ+/ v.W wL.÷.!҈pjdovJM.ns',Y) dJydmH ( MqvmWK@og_} '}ko!ԑ7OK܉JZ-fRP63L~i:Stf!|oŪz/9OR23[Ê֝:逷m%(藨]&JJn!nT_Z>j:"}:#Zz C$da?LXxK ^+"fɛ3q;ۈɕ$}!ƗhD=E 5٭}wR0< }%hz] e)#5?%+榅,44e+Vాry+lXMlF]=s͠xp<5i5zJqb ,7q+c?B:/X<WƷc.-\ цӑwܥlELy2yj`eJ |5"fb:8AYc2,z<̭g;c}޺.x@mMd׸ p1Gnr~NR&I/4n u3u02$$ d-|ɄCvq!1NtsF2Hej U(X(!,&Q^x\xj!{e]ߥVaO7."VY$jR5XVRtN^P\!(ˤvJTUGZVUbTGCa7on {W/rr'/ڍj/I:Ag_.8HglUL`58ӎ)^\V|$4jʀ ݉Ugg]ZԴmM7 |f6d}a馭2oNnZ2Oin=[$roXl^5ؔw'$sT P06vtGuPɁA{8Imc)uS)lZnrv[FR6qn-ثo mu<%5 R:U;Lh0nuPְ<ڂh1Xm ]9鴇4d愐Yy$[v^zƉU͈+na˷wmg'~S =O}f A 7W' ?z?twu,z3>V/O3 mڠj$վ aQrDgBbwb$6B:_~煕kؾj&6mE \h'$$+oknEMt/$\&[E`\7c$~ވ e͇p(஥#IoLhR~G|5lrfz3.2a Yq'퍞m#pW&t%DJJ'~̀D,nLpbzBt7[LD7y[`|mQj)V*+W偕iS/gojTԡF6gc;x.zF?HI3җ=cRng^R^YFǗy$c'Ց5|EL̫ %X{֫PR-+#;&"Z{- ]}+-=Wtp&J oUխR`0P!p$5B^ەSp>]G-f,m|MbrJao-cvWF*#@/+XW1~`YxN)?OݩoIW'HS {"A8K(q{QOf$;Cre9x\b .(r9v۳ݠA7/٠;R~S V*NN?V7A8jEr(qQh# >)GI0wr (0\Q@pP\/٥锟7youker-assistant-1.0.1/qml/img/logo/Manufacturer/ZOTAC.jpg000644 001750 001750 00000014332 12312451003 023665 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!AQ"2Bq$4& aD% !1AQaq"2B#$% 3C4D ?'Mt8Zuj;jA:H'_TofI/8"]!շ :j(0]?-]?OrHy\6"%keL^"E]1;"G@TsQ/XN*Vc bFL44!tBgzJT V4cBUd ?-qP>W6i䳭VۢRyHVŕc w32!L_&na[LYӻc%s\WekVQ5OuM#<#0GkXР~IqˋHc1[Ҫ׈-/P{5 $yZPi) ;gOk[S+xvFԍ;V ݓ"la:8*;N+9,+#ʖ4Xs::Ǵt^/-VC?pF/me%of4UgWYfeb1l٫*4ԅfYzOctf̔ۆ8m* bS|Lux]dSW8uJ 'ݲ&:0^o.nE27K8b} Ǯ2,FU"8$1懇8[ĮunH+G:pE^?O毹 IO$ «}g ɪvZU'RaUqU/$2)r?-8.[{b}#mדuP>G,,+gmīmHؒ9s$  ;* hk vfrŮi5,X 7#B? hz4DVibc\j}IRDR՝t8}K@C%vJ/ 5[#U!W4)հݡ Nm)E4ḻ?V;Z?>krm 2%tW]$_XBT" Ϩ9Ph;xkL"⿋LzO1EZZʎCy¦ثHT€j"Y<={KڞF_1^M'AJ#y]S&/Wo,`&{Jv1i,)|:hcH1R<"}q +8z9|AvWyBt:Ue{wȯY9^%p٦1-ډ x)(ɘbcnboBR//zYq$ZkJe mˑ-E ZjE܅駒e&*8o.HFP3,D.B&RuCDpѯw>MX  D;[vʂϴ\KX" %vKZ䵕q>69*/wuqj`'u,!ɹ|Q3{cͰM2Fl1k~2"=DCV!e{@/qbLO/Ʃ_9W6&euZN0*hXhMűje-*Sg6AV^ՠ \C)sM׫؁Ω dMOaJ$lc 'vvԽ辊 T꘾e) OQx GN8\ }['K[c+yvq|9J"|Da.*ٺcOB1JA1(u06ᶝ0x$`I,̜E-l'xwfYlI'6=D(#,= D"%@< ᔚACU۫p}=aWrX6) +ڳkr`ylH[NƠ!|CmOu@^1Vz ;zҷkZ|e{I^τ;}RCCqNTlp)L$DY \uQ\ yv(~򯒗78Z;ȵm|D/Ar/QZmvڃd\Hc#A8c&z.3nV,h5>gI[*q$=H^| P ʘRc]g[R"nt9[>&i~((H }۸mk\]V. ND0fI"%0I~/#M u{*؋vo{9'E0wo7@=;JYt.[HQ9|+6,X5D$Y!!^5z??1¼%-w%p ?[2[M)@<pwE0DWk+^C]-C!Ix3Ty efnm.tmc1,bpƭHPjS8DEy%#$ZJmR e-= ҵv@&4g{ N<%խV^4x??ӎXIZ4ip9 8`XB~oApZ9Nˋq m'EtjTn^1@a%ۺON\y{Vd  ɱ\D;3 }$"oޫGM.}"8V&n`- 5%pT< "-`GJ`V?N|T'mm0b;OXE|V[/aw8! H$pYZd8x3>6G;l̓"evğ&R(s|\ڱ,RqwZO2.%r5T_bpQ~v ʻQLʭejBI#F{a wqDGZ51mb`q'lka$9DGls_cbA.07yɭ\yn5v~)Nrx mw, hK{[""ddVμj ؽ͟((acħm}DķDJ%k۷rgoZoaw"ST HWk?Nus hxkzt }>*(v&̹ǒ[K=V3նA+V'xN+T/Z%(-^!BG }m\⹯!eeMy0x]kV@Ť; #;s3b˫+2^[ТlJݠlloj~e|oBi&WRn? G۸m6NbT`-TfChZ̕*#V m|ɱ,[ɉb n/o.~රl~\J>yM28oI,{]1RZ/.5\ I-&\]i[asнϬk`)u%VŦŋS&l'` µ4z4b}bv :Yt--,٥V~3J#beP "#LPL䛽JQRH>O)Kϻm)x|G&wl\SK&|)[#HLqsZ_QHs,XpY->Dݠ;܅駒w'_GQ+R %jA:ڥH/P{4%^JI0|^Ќ Ԁ歸)QA^hG~?vhyouker-assistant-1.0.1/backends/youker-assistant-daemon/data/beautify/plymouth/000755 001750 001750 00000000000 12312451003 030301 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/icons/return-hover.png000644 001750 001750 00000001570 12312451003 023170 0ustar00saucysaucy000000 000000 PNG  IHDRS tEXtSoftwareAdobe ImageReadyqe<IDATxb{K69@95V1\fe0@YFbgdiqlbڻP; N.  }gt#$?&@Hީ V>k@:ہ* 7 wa0c,H* 4 ^`@2) Fd-B L|܀7>§  y ]L LL j 89x0ita6nA_l  ?^6@ @<.YT܁Y#(6h@ z >&ji4ƥGa 2dojPtP{&_p}Fk4NG8z%AHc%.ɾ؄o"G"L d2}Jȡ z@ [%n0l%q[0Zrl :h, Z=d ~Kf&,<9*ΡLHIc+vfn$5F6Kȩ-*fFVpg`+ &IIq1 Ŧ`O <)З< AY|㣯܌bb.fօׇDP tJêкAWЍX  ȇΤNYKhvg}2X2Kh2le"вBq mPaڰFXB;A h{hS P1l \)ocLIENDB`youker-assistant-1.0.1/src/systemdispatcher.h000644 001750 001750 00000022353 12312451003 021677 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef SYSTEMDISPATCHER_H #define SYSTEMDISPATCHER_H #include #include #include #include #include #include #include "util.h" class SystemDispatcher : public QObject { Q_OBJECT public: explicit SystemDispatcher(QObject *parent = 0); ~SystemDispatcher(); //退出systemdbus服务 Q_INVOKABLE void exit_qt(); //杀掉root用户的进程 Q_INVOKABLE void kill_root_process_qt(QString pid); //得到SystemDbus的验证值,可以通过其判断该服务是否正在运行 Q_INVOKABLE QString get_system_daemon_qt(); //得到音乐文件的绝对路径 Q_INVOKABLE void getMusicFileAbsolutePath(QString musicpath); //为系统设置来设置登录系统的普通用户的用户目录 Q_INVOKABLE void set_homedir_qt(); //为系统清理来设置登录系统的普通用户的用户目录 Q_INVOKABLE void set_user_homedir_qt(); //弹出QT的文件选择对话框 Q_INVOKABLE QString showSelectFileDialog(QString flag); //首页一键清理 Q_INVOKABLE void clean_by_main_one_key_qt(/*QStringList strlist*/bool garbageFlag, bool traceFlag, bool cookiesFlag); //清理浏览器历史痕迹 Q_INVOKABLE void clean_history_records_qt(QString flag); //清理系统最近打开文件的记录 Q_INVOKABLE void clean_system_history_qt(); //清理dash使用记录 // Q_INVOKABLE void clean_dash_history_qt(); //清理firefox或者choromium的单个cookie Q_INVOKABLE void cookies_clean_record_function_qt(QString flag, QString website); //清理firefox或者choromium的所有cookies Q_INVOKABLE void cookies_clean_records_function_qt(QString flag); //清理apt缓存、软件中心缓存、最大文件和同名文件 Q_INVOKABLE void clean_file_cruft_qt(QStringList strlist, QString str); //--------------------------------- //-----------------------sound------------------------ Q_INVOKABLE QStringList get_sound_themes_qt(); Q_INVOKABLE QStringList get_sounds_qt(); Q_INVOKABLE void replace_sound_file_qt(QString origfile, QString targetfile); Q_INVOKABLE void restore_sound_file_qt(QString targetfile); Q_INVOKABLE void restore_all_sound_file_qt(QString soundtheme); //----------------------------------------------- Q_INVOKABLE bool set_cursor_theme_with_root_qt(QString theme); //-----------------------monitorball------------------------ //一键加速 Q_INVOKABLE void cleanup_memory_qt(); //----------------------------------------------- //-----------------------others------------------------ Q_INVOKABLE void custom_plymouth_bg_qt(QString plymouthName); Q_INVOKABLE void add_new_plymouth_qt(QString customBG, QString plymouthName); //添加新的开机动画图片后运行该函数 Q_INVOKABLE void readyAddBootImageToList(); Q_INVOKABLE QStringList get_existing_plymouth_list_qt(); Q_INVOKABLE void plymouth_init_check_qt(); Q_INVOKABLE QString get_image_path_qt(QString name); Q_INVOKABLE bool delete_plymouth_qt(QString plymouthName); //----------------------------------------------- Q_INVOKABLE int get_the_record_qt(QString mode); Q_INVOKABLE void clean_the_browser_qt(QString mode); Q_INVOKABLE QMap search_same_files(QString path); Q_INVOKABLE QStringList search_largest_file(QString path); bool history_flag; Q_INVOKABLE void set_history_flag(bool flag); Q_INVOKABLE bool get_history_flag(); QStringList cache_args; Q_INVOKABLE void set_cache_args(QString str); Q_INVOKABLE void del_cache_args(QString str); Q_INVOKABLE void clear_cache_args(); Q_INVOKABLE QStringList get_cache_args(); QStringList apt_args; Q_INVOKABLE void set_apt_args(QString str); Q_INVOKABLE void del_apt_args(QString str); Q_INVOKABLE void clear_apt_args(); Q_INVOKABLE QStringList get_apt_args(); QStringList software_args; Q_INVOKABLE void set_software_args(QString str); Q_INVOKABLE void del_software_args(QString str); Q_INVOKABLE void clear_software_args(); Q_INVOKABLE QStringList get_software_args(); QStringList package_args; Q_INVOKABLE void set_package_args(QString str); Q_INVOKABLE void del_package_args(QString str); Q_INVOKABLE void clear_package_args(); Q_INVOKABLE QStringList get_package_args(); QStringList browser_args; Q_INVOKABLE void set_browser_args(QString str); Q_INVOKABLE void del_browser_args(QString str); Q_INVOKABLE void clear_browser_args(); Q_INVOKABLE QStringList get_browser_args(); QStringList kernel_args; Q_INVOKABLE void set_kernel_args(QString str); Q_INVOKABLE void del_kernel_args(QString str); Q_INVOKABLE void clear_kernel_args(); Q_INVOKABLE QStringList get_kernel_args(); QStringList onekey_args; Q_INVOKABLE void set_onekey_args(QString str); Q_INVOKABLE void del_onekey_args(QString str); Q_INVOKABLE void clear_onekey_args(); Q_INVOKABLE QStringList get_onekey_args(); QStringList largestfile_args; Q_INVOKABLE void set_largestfile_args(QString str); Q_INVOKABLE void del_largestfile_args(QString str); Q_INVOKABLE void clear_largestfile_args(); Q_INVOKABLE QStringList get_largestfile_args(); //----get system message //存放当前系统和桌面信息 QMap computerInfo; QMap cpuInfo; QMap memoryInfo; QMap boardInfo; QMap harddiskInfo; QMap networkcardInfo; QMap monitorInfo; QMap cdromInfo; QMap audiocardInfo; //得到当前系统和桌面的详细信息 Q_INVOKABLE void get_computer_info_qt(); Q_INVOKABLE void get_cpu_info_qt(); Q_INVOKABLE void get_memory_info_qt(); Q_INVOKABLE void get_board_info_qt(); Q_INVOKABLE void get_harddisk_info_qt(); Q_INVOKABLE void get_networkcard_info_qt(); Q_INVOKABLE void get_monitor_info_qt(); Q_INVOKABLE void get_cdrom_info_qt(); Q_INVOKABLE void get_audiocard_info_qt(); Q_INVOKABLE QString get_time_value_qt(); //通过键得到硬件对应的单个信息的值 Q_INVOKABLE QString getHWSingleInfo(QString key, QString flag); //------------------------ //清理不需要的已经安装的软件 Q_INVOKABLE void clean_package_cruft_qt(QStringList strlist, QString flag); //得到下载或者是操作过程中发送过来的数据,在显示在进度条上之前处理优化下,返回要显示的文字 QString dealProgressData(QString type, QString msg); signals: //添加新的开机动画图片后触发该信号 void finishAddBootImage(); void finishCleanSingleWork(QString msg); void finishCleanSingleWorkError(QString msg); void finishCleanWork(QString msg); void quitCleanWork(QString msg); void finishCleanWorkError(QString msg); void finishCleanWorkMain(QString msg); void finishCleanWorkMainError(QString msg); void quickCleanProcess(QString type, QString status); //------------------------------ //不需要的debu包清理完毕发送信号 void finishCleanDeb(QString msg); //不需要的debu包清理异常发送信号 void finishCleanDebError(QString msg); //将不需要的包和内核包的卸载进度告诉qml进度条 void sendProgressToQML(QString type, QString info, int ratio_sus); public slots: void handler_clear_single_rubbish(QString msg); void handler_clear_single_rubbish_error(QString msg); void handler_clear_rubbish(QString msg); void handler_quit_clean(QString msg); void handler_clear_rubbish_error(QString msg); void handler_clear_rubbish_main_onekey(QString msg); void handler_clear_rubbish_main_error(QString msg); void handler_status_for_quick_clean(QString type, QString status); //---------------------------- //后台发来清理不需要的包的正确过程中的信号后响应该函数 void handlerClearDeb(QString msg); //后台发来发来清理不需要的包发生错误的信号后响应该函数 void handlerClearDebError(QString msg); //清理多余包和旧内核包 void handlerRemoveProgress(QString type, QString msg); private: QStringList tmplist; QDBusInterface *systemiface; //存放进度数据 int ratio_sus; int mainwindow_width; int mainwindow_height; int alert_width; int alert_height; int alert_width_bg; //本次alert的x坐标 int alert_x; //保额次alert的y坐标 int alert_y; }; #endif // SYSTEMDISPATCHER_H youker-assistant-1.0.1/qml/img/logo/Manufacturer/MMC.jpg000644 001750 001750 00000010471 12312451003 023421 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1 q!AQ"2B #%!1AQa"q2BR$4%56 ?&.qW&-H&Ei{pVM|5JT%^ %Jߘh$1H U;DxjbŤ[@H$~Zn=8+H&*AwAP%r4E*DQAErY [@g8$H: BDLw~NLzễ+&FIb}\sG\dVq]"1 TA:js=sSkGۻ,~ $(zN,y:=0=W{N2CJJ Ȼ-M+J1 f绝p"X!J11ND8$[<ښ69cqn,h67B }bd`yԯ*Cyv!/_kRLGg T^P[[HޤW7U+NaaT>u{-y{fz#K2ؐ.@$H Z7YFȆ.qˬԚ:N^w herdZE=ˆ58pL,=Zvغ}8٘]ǩL b*#D>Dux0~d+g8k4эyYLzenəT w~E>K;t[s-큑`F\ m4t?517Wh\<0 )3WU :F7. Dܜo#:o!Νwnv9Gq$B$9ei<5oǹi/^[-Dg3w1%S+fTk+19RC*ku}l6qߵX}SI;#VX\,6̤̏L*AsR#oo1Z֊}.Kcr9ë*.ꛖqBU`U'UP8[4CB#c^W⣍)0\Jk}#_-nعX ռI & &/>xU$#I #m[`i:GdXR+iJI]$VH)]K~L? ۻ{"%y$)I2_g}Q9_He B_jϥgqprrꪳQ?q SAE+9`B\k nHp048puGƽ'܇ "^K{ nCL+,[&4NHZ4Jb'ՅPbyy-ᮾϸ&`yxho lagkpO=XwJԂ[R%x̝+RW *2E9&5E(K]*PC:ziS%1'0pխզe]& \5WuN]U)x9ڕBq?Q0E Z~>*qNmfe2y{7 doz"v4B& Ӌ>D҉9D8LaausnC&aeļ0W '8=SoFt@hfNӃkq9Ju"O0:\ܛ|Dǧ^ZK[&Ogf;fnj Rؼ70ݼDK~Hi4Z-o7?QU J!N *[6Jc9q ~=k=RWȓvYk_1;ShP5֖^TuD*c8ց~RmVRh}.pAl P-,;H-gc@3ec a&]QRGVx|tR`JIcyiS! O~7-n]  bb!31XFK-(:cӭv5@mv)*~i6*R5 ߖ v o_ʐ]÷D$s4I\ D) 6PQ\pxh?^MLRXkyhro)oQVMǻGi߷TH.ݢU_9j$]C[hj((]<4GJ?)y,ZM 7hBA7+H&ݣoWp*I/5 W.DQ!@h⭴H W.#%OןSyouker-assistant-1.0.1/qml/img/icons/green.png000644 001750 001750 00000001220 12312451003 021620 0ustar00saucysaucy000000 000000 PNG  IHDR^T:tEXtSoftwareAdobe ImageReadyqe<2IDATxb̚0!H/SMh ~O _ ~ x jz+Pd`/jh @h!+Mg`20|O @a3ʷ ia[[ Dr:")i32߿_444 Oopԕ 0ݴj8 UGaOpBgѠ1|<#LT֩*ޘc%ELkS8u+62a` kt!&P|y"/8p-ˍ/C`T/e9o+ohOoahٰ< '=iu~3&] (&5$K}%h. V_3waR2b ` ğ&$hOHnː7~"UWp$G& maR1©>PAtMX":^ 2G2ub^ΨqA;e 1LGS f|At|)[N2|\/qNU"(>*&+IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/systemhistory.py000644 001750 001750 00000003343 12312451003 031422 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os from xml.etree import ElementTree class SystemHistory(): def __init__(self): pass def scan_the_xml(self, homedir): if homedir: xml_path = '%s/.local/share/' % homedir else: xml_path = os.path.expanduser('~/.local/share/') full_path = xml_path + 'recently-used.xbel' hreflist = [] if os.path.exists(full_path): tree = ElementTree.parse(full_path) nodes = tree.findall("bookmark") for node in nodes: hreflist.append(node.get('href')) return hreflist def clean_the_xml(self, homedir): xml_path = '%s/.local/share/' % homedir full_path = xml_path + 'recently-used.xbel' if os.path.exists(full_path): tree = ElementTree.parse(full_path) root = tree.getroot() root .clear() tree.write(full_path, encoding="UTF-8", xml_declaration=None, default_namespace=None, method="xml") youker-assistant-1.0.1/qml/img/icons/book.png000644 001750 001750 00000001110 12312451003 021450 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<IDATxb?hkb0{Ǐ/_33{k'Ë^1@ׯ_QDVa(f|gs< b462jgg%!!x~⺫[ o,ϐ|aXaw у `X̱F$J@Yi).--;?p haě r 2@pttb " IENDB`youker-assistant-1.0.1/qml/func/others/SettingsDelegate.qml000644 001750 001750 00000005355 12312451003 024345 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import ProcessType 0.1//1101 Rectangle { id: scaleMe scale: 1 Behavior on scale { NumberAnimation { easing.type: Easing.InOutQuad} } //竖列高度和宽度 width: 83//100 height: 84//100 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } color: "transparent" //竖列 Column { anchors.centerIn: parent spacing: 10 Image { id: seticon source: icon anchors.horizontalCenter: parent.horizontalCenter } Text { id: btnText anchors.horizontalCenter: parent.horizontalCenter color: "green" text: qsTr(name)//名字 } } Image { id: btnImg anchors.fill: parent source: "" } MouseArea { id: signaltest hoverEnabled: true anchors.fill: parent onEntered: btnImg.source = "../../img/toolWidget/menu_hover.png" onPressed: btnImg.source = "../../img/toolWidget/menu_press.png" //要判断松开是鼠标位置 onReleased: btnImg.source = "../../img/toolWidget/menu_hover.png" onExited: btnImg.source = "" onClicked: { //屏幕坏点检测 if (flag == "CheckScreen") sessiondispatcher.showCheckscreenDialog(mainwindow.pos.x, mainwindow.pos.y); else if (flag == "BootAnimation") { pageStack.push(bootanimationpage); // var component_boot = Qt.createComponent("./settings/BootAnimation.qml"); // if (component_boot.status == Component.Ready) { // pageStack.push(component_boot); // } } else if(flag == "FcitxConfigtool") { pageStack.push(fcitxConfigtoolpage); } else if(flag == "ProcessManager") { pageStack.push(processmanagerpage); } //kobe:选中项深色块移动 scaleMe.GridView.view.currentIndex = index; } } } youker-assistant-1.0.1/qml/img/weather/n23.gif000644 001750 001750 00000005531 12312451003 021440 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P˰ȷ̵ũǹξѼݹ/Qȵɹ6[/N5W8[!9Y1Nt6Syʣ0Q5W1R3T9[:] =`!>a!;\%Be+Kq,Lr)Fi$>],Jp+Im.Nt-Ko/Lp6X4T{2Pv2Pt8X7W}9Y:Z8V{7Uy;Y0Ih:X|s‡ý.N3U1Q3S/L0N0M1O5U6V2O3Q7W8X4R9Y5S6T;[7U'Hn#Ac!>]&Fj)Jp :W'Ef*Ik'Ca0Qw*Hh)Ee2Sy-Kl4V|4V{6X~5W|'@[7Z6X}7Y~9[5Su4Rr>`cflQhæw jqU*|X%㪹ЛqR&+ xgV̝3/rȄ0` A*H H@J r F f&0(2$B qa,{員1!|P?8а,L6+h+|F91##0| Gآ$ B:p%b%L@ `t`bˤI - HS96Ao4 ] /<)C(dǦ,H AH Ppv@—azA.*@ fcG+;q(|ê^` fB @,GB. :Bs (2zA+[md >  wK R &!B. App.@m = Ђ ,*b0J" vЁ,E A<6.'1|r@] .agtF ~4 "}x"JCl> لwp(kG! l0Bao/ѡ@䬁ˆH"H"#H[o <>!Mw R>@ؼ0WGd |9/ѝ.%?+еK.@u#9D+}7`D xpj@kƀpA:iM[DQ/  Ȑa.T&603K.Vfp ?#,M@= 6 x5zJ"8@]?Pv !!6PBrxa,xԃ?0?!!9À\d?5|Ӏ5EJ!k^|+8 "@+.ЀO@[A`$`)Ǐq``01bhhsU` \ Od UH^q?h) dm\!?yU [ KGȂKPy!(Qҁx -DAx. ]L0@(+[8V€%*@U/ G2ϯ`[ } ] r}q&>PR =g8#$/H|ryrrd+2E~P X@1,5eKt3T 5B,9ÓO?,L &(`Kޤ Pyvo2 s1 o N$n ZX)qD4PH@CZÑ@S"P>E[ v6Râh-1R-,A&QF\4B-QT)ŒA$~=4աP TH Rj[@* thoZXHȰGPexJ pBɵ@s:o.5?Sj[tvG5+U_2{ ^J|Jy@q R(=eFԛބ< =c٧E M/ Xa=O 4)- }ރ6mG*gAk#m? \# Y%n@&&bs >K@&*gځq_d,w):Dd8@j%m䴂@-9˒`mq ^PĐd%%/ (}I0]%i,!"o `{z5DK0r- ̦FYwDj_3*d!U!&,e"$)>j%[%Sg 20TCK*HP;lҢEм&e P00oL "^ ;;5#p =4 dri@ 2d!#=4L2@\4hs9=4H6Of@*A;V1f[8xl/Ђ֦H%z? =ޤVVlP~ 2]tkل*!B4Vįán+u!bM$06UHv(͏/Bo܂8%}VH2TSYJP/R8ԥ bPCPoeW$hxAQAK$Wl5fR0PxEIEFBETAMGu}Zl|ÀW`*`&XLhq oY  x^GnXWN<:8 ·4f=._{l|A1uV𼧙G\~{v$z{la݅+!xIf 2+_BSnRi&q۩0 k\ɿ3)Br`N3kgB/l+&֜9mpړ.KoqL fN1/'Z8CZQA,[8)3i" (mhK//4D%cDŘ( ~15񅨉`ƨ@"r(FC Pٙv f;sߎ--͉Uc]Esז}k-[k0`.L8A߉Ƀw!fST`2$tژWm9:E?]ʯN;͏0Tkjd>Tț$E5Dž:4MLj9■\2 2ZI{HA6aqþU2p\Ead7!5h8KSƛvq։Z$#8ϭ`|~ F~Y8 t@Α +[ ;jEug@E@n286z$6/:hU06J}&N]‗tYA{'m N0i 䇱`'{BfYLFQc1^\|WGp0>I٩~~,Cmu9$&Q.C4?2OC3ڴ7 d6og6|: 8,`(/ns<en=qW:U0$;{+= ié h$|(#'r|MH󶽁.B&´k% Q TqRPGA DjGe|b5Ik~hGL͇qO"XQ}?[e-H߾Bo Aj6Cef%}Ճ.~|X@@>B[žQ[ffCvn" ^s9U˲|G Y'𼼢ٙD2|Ob~PYm ]Gu/&cC@LƘ/Q!hH1F !|0| ~RI 5~Q1J|!cweеltkc[Gsﹷmܥks_'#rh}VM9p gNKS#&0#pX\':pb3l֧Wb0o { dDU |ۺV݊kۋ \r\g -[5:}?c+$p~TVU _SwY5<. ^- In|vXwW8 d xO_(N_-t55ȱ_o*N:O7sl`ݰ`)|V_ >9Ja>sʐq ;ے.ŵ(grcxe2_ jGcc'^8[<} @DɩúD(*ΫWgS2hGOݯeUoEtQ<1xG*Uӣ:X#Wv,)%9P/rTmiSBW:6Ǜ0U9>JuwY;|Id?D>ع~uH:g_]m ybb.fγZpRz;Z޺s&3(w =36.'!z%FaҫK$Գzxk`A~Ű+F`%*K\k(Ez[YD2c;-∫%œBecyld-gW4ch`6)pmMt ݉`XU;|12'4gG$3 C*ಏ{p]2+J>IN >;Oqە-EM mPf(PdyI.7vB+%^JE#-[̳f&*oaCwxpWy8ܣXh\c8}z׃`c(АFP[~m~C}|OIۨjBUUi)O 1 c\Nsz] v{wgsM"Ұ1>kBRUv8d=$I3Kh%3JⱢ Ï`.L{Mr, +'GGٖJ*Ft_!݉#_37z2%M-1_5Hj!f -3o%l.y~]H Q3C/R%)RC\pϔJ 2(4cDQVL]v< ta_ _5F7-b{SNꡝMM L$j<[.`=1 N-  r9ԚT~ '5pA.=[jQñbb^ņZ!rR!93oK ьz=j!) ')9䲿UQkј {uc|b9s M[<[d$#蚯I7:^AQA >\xn\rgef;=DWUiM]oX-1>5Ucז:9jcK֖[$RQ ? 9W/%' |a.K(`t0do! NMY1iZ Ҏ՘%%''Y_:-!ϯ:|9u6BBt}V9 {\wFG"S|nD>xm?I`bBˆJD7)Ճn%k Wo( ;ɇs4AEԉ}2pAj>1"}10H YC+qCUR*7zQ: boK65`x#o}Ģ-nmVF펟@ApY1IMv=o&a:cM]g /Ţf򺷜<ʋd(,޶&.K26i[*5_?@Mc3YLb x.q5{kumBRf MM$eT4s-%A~= CUPbh|=!ԯġ/D/_u")^_>N>MtOsQCqQWR-Z^8gHskLrXtj[f0xM(+.ԤG`y=nWo >߅ƦV_{"5佌'3ЩRw $%: m+RohBOo?j was3fc߇[jEQp5N2s!A8KYp{u#JeWQxž;5+ Oح5}Gnʣc\ht0'5|Rw Y !~4sdSd(/{Ep:]e Wp&2_y^f{?ϽB|wJ]=( *v GE@/h>` hOdjz  _'g%njAy0C.^@ Wт" mf=W1׮.-FMu prdplh.hpLrv{N O2 TN?aX^ޯ#x/bM:u;jOxjx)OZ-Uј:F#Nۭ>}ֆ6- xheh[oiLx0;GG0=":pod w_VM/"9޷C{'z(z+.%~/Bb}4Wӑq#2Ţ fq^;!4h0~߰e{ dM\Ql"&ZM[;|L|hNn3<Ƨ|-oƍ8KdNjm;5TGFlGrx,QVp4D\W r'Y\,Uw=t jLG5bAqe6M')eG=lcއ# jhU g2,te-O%\A%0U=J{=G&.%^c. tc8F9qml6zh[w|~#1pjl.oRWtpeE/RqX]&'R7 p9=pA=I*Ik H \TLcJD,Q:V`_fժLK- ^U?VEU#]D$hc Z ܨaQpK &nW'ctd2Kva{;iWbࢰΆ)p$ā^N>i?G8p+1p#Ă^n.Icpf!'f1\GJPPMrjGo$nw=HzO1-6Vۯ-l~z;l!}Oce1Vy sؒvIENDB`youker-assistant-1.0.1/src/fcitxwarndialog.ui000644 001750 001750 00000006205 12312451003 021655 0ustar00saucysaucy000000 000000 FcitxWarnDialog 0 0 330 191 Dialog 230 156 94 29 border-image: url(:/pixmap/image/quit.png); font: 11pt "文泉驿微米黑"; Cancel 120 156 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; OK 10 6 26 20 8 51 291 21 <html><head/><body><p>Tips:</p></body></html> 0 0 331 191 border-image: url(:/pixmap/image/dialog-bg.png); 33 6 26 20 8 85 311 51 border-image: url(:/pixmap/image/message.png); :/pixmap/image/message.png frame closeButton okButton btn_close label btn_min displaylabel youker-assistant-1.0.1/qml/img/toolWidget/yellow.png000644 001750 001750 00000005553 12312451003 023056 0ustar00saucysaucy000000 000000 PNG  IHDR1ܘrX pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FIDATxbq&d# ~&lbBX¢+n-&batV"6 XTs7 bt?jШAf2KXiMnn!>C$T! IENDB`youker-assistant-1.0.1/qtsingleapplication/README.TXT000644 001750 001750 00000001641 12312451003 022751 0ustar00saucysaucy000000 000000 Qt Solutions Component: Single Application The QtSingleApplication component provides support for applications that can be only started once per user. Version history: 2.0: - Version 1.3 ported to Qt 4. 2.1: - Fix compilation problem on Mac. 2.2: - Really fix the Mac compilation problem. - Mac: fix crash due to wrong object releasing. - Mac: Fix memory leak. 2.3: - Windows: Force creation of internal widget to make it work with Qt 4.2. 2.4: - Fix the system for automatic window raising on message reception. NOTE: minor API change. 2.5: - Mac: Fix isRunning() to work and report correctly. 2.6: - - initialize() is now obsolete, no longer necessary to call it - - Fixed race condition where multiple instances migth be started - - QtSingleCoreApplication variant provided for non-GUI (console) usage - Complete reimplementation. Visible changes: - LGPL release. youker-assistant-1.0.1/src/qrangemodel.cpp000644 001750 001750 00000034603 12312451003 021136 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ /*! \class QRangeModel \brief The QRangeModel class, helps users to build components that depend on some value and/or position to be in a certain range previously defined With this class, the user sets a value range and a position range, which represent the valid values/positions the model can assume. It is worth telling that the value property always has priority over the position property. A nice use case, would be a Slider implementation with the help of QRangeModel. If the user sets a value range to [0,100], a position range to [50,100] and sets the value to 80, the equivalent position would be 90. After that, if the user decides to resize the slider, the value would be the same, but the knob position would be updated due to the new position range. \ingroup qt-components */ #include #include #include #include #ifndef QT_NO_ACCESSIBILITY #include #endif #include "qrangemodel.h" #include "qrangemodel_p.h" QRangeModelPrivate::QRangeModelPrivate(QRangeModel *qq) : q_ptr(qq) { } QRangeModelPrivate::~QRangeModelPrivate() { } void QRangeModelPrivate::init() { minimum = 0; maximum = 99; stepSize = 0; value = 0; pos = 0; posatmin = 0; posatmax = 0; inverted = false; } /*! Calculates the position that is going to be seen outside by the component that is using QRangeModel. It takes into account the \l stepSize, \l positionAtMinimum, \l positionAtMaximum properties and \a position that is passed as parameter. */ qreal QRangeModelPrivate::publicPosition(qreal position) const { // Calculate the equivalent stepSize for the position property. const qreal min = effectivePosAtMin(); const qreal max = effectivePosAtMax(); const qreal valueRange = maximum - minimum; const qreal positionValueRatio = valueRange ? (max - min) / valueRange : 0; const qreal positionStep = stepSize * positionValueRatio; if (positionStep == 0) return (min < max) ? qBound(min, position, max) : qBound(max, position, min); const int stepSizeMultiplier = (position - min) / positionStep; // Test whether value is below minimum range if (stepSizeMultiplier < 0) return min; qreal leftEdge = (stepSizeMultiplier * positionStep) + min; qreal rightEdge = ((stepSizeMultiplier + 1) * positionStep) + min; if (min < max) { leftEdge = qMin(leftEdge, max); rightEdge = qMin(rightEdge, max); } else { leftEdge = qMax(leftEdge, max); rightEdge = qMax(rightEdge, max); } if (qAbs(leftEdge - position) <= qAbs(rightEdge - position)) return leftEdge; return rightEdge; } /*! Calculates the value that is going to be seen outside by the component that is using QRangeModel. It takes into account the \l stepSize, \l minimumValue, \l maximumValue properties and \a value that is passed as parameter. */ qreal QRangeModelPrivate::publicValue(qreal value) const { // It is important to do value-within-range check this // late (as opposed to during setPosition()). The reason is // QML bindings; a position that is initially invalid because it lays // outside the range, might become valid later if the range changes. if (stepSize == 0) return qBound(minimum, value, maximum); const int stepSizeMultiplier = (value - minimum) / stepSize; // Test whether value is below minimum range if (stepSizeMultiplier < 0) return minimum; const qreal leftEdge = qMin(maximum, (stepSizeMultiplier * stepSize) + minimum); const qreal rightEdge = qMin(maximum, ((stepSizeMultiplier + 1) * stepSize) + minimum); const qreal middle = (leftEdge + rightEdge) / 2; return (value <= middle) ? leftEdge : rightEdge; } /*! Checks if the \l value or \l position, that is seen by the user, has changed and emits the changed signal if it has changed. */ void QRangeModelPrivate::emitValueAndPositionIfChanged(const qreal oldValue, const qreal oldPosition) { Q_Q(QRangeModel); // Effective value and position might have changed even in cases when e.g. d->value is // unchanged. This will be the case when operating with values outside range: const qreal newValue = q->value(); const qreal newPosition = q->position(); if (!qFuzzyCompare(newValue, oldValue)) emit q->valueChanged(newValue); if (!qFuzzyCompare(newPosition, oldPosition)) emit q->positionChanged(newPosition); } /*! Constructs a QRangeModel with \a parent */ QRangeModel::QRangeModel(QObject *parent) : QObject(parent), d_ptr(new QRangeModelPrivate(this)) { Q_D(QRangeModel); d->init(); } /*! \internal Constructs a QRangeModel with private class pointer \a dd and \a parent */ QRangeModel::QRangeModel(QRangeModelPrivate &dd, QObject *parent) : QObject(parent), d_ptr(&dd) { Q_D(QRangeModel); d->init(); } /*! Destroys the QRangeModel */ QRangeModel::~QRangeModel() { delete d_ptr; d_ptr = 0; } /*! Sets the range of valid positions, that \l position can assume externally, with \a min and \a max. Such range is represented by \l positionAtMinimum and \l positionAtMaximum */ void QRangeModel::setPositionRange(qreal min, qreal max) { Q_D(QRangeModel); bool emitPosAtMinChanged = !qFuzzyCompare(min, d->posatmin); bool emitPosAtMaxChanged = !qFuzzyCompare(max, d->posatmax); if (!(emitPosAtMinChanged || emitPosAtMaxChanged)) return; const qreal oldPosition = position(); d->posatmin = min; d->posatmax = max; // When a new positionRange is defined, the position property must be updated based on the value property. // For instance, imagine that you have a valueRange of [0,100] and a position range of [20,100], // if a user set the value to 50, the position would be 60. If this positionRange is updated to [0,100], then // the new position, based on the value (50), will be 50. // If the newPosition is different than the old one, it must be updated, in order to emit // the positionChanged signal. d->pos = d->equivalentPosition(d->value); if (emitPosAtMinChanged) emit positionAtMinimumChanged(d->posatmin); if (emitPosAtMaxChanged) emit positionAtMaximumChanged(d->posatmax); d->emitValueAndPositionIfChanged(value(), oldPosition); } /*! Sets the range of valid values, that \l value can assume externally, with \a min and \a max. The range has the following constraint: \a min must be less or equal \a max Such range is represented by \l minimumValue and \l maximumValue */ void QRangeModel::setRange(qreal min, qreal max) { Q_D(QRangeModel); bool emitMinimumChanged = !qFuzzyCompare(min, d->minimum); bool emitMaximumChanged = !qFuzzyCompare(max, d->maximum); if (!(emitMinimumChanged || emitMaximumChanged)) return; const qreal oldValue = value(); const qreal oldPosition = position(); d->minimum = min; d->maximum = qMax(min, max); // Update internal position if it was changed. It can occurs if internal value changes, due to range update d->pos = d->equivalentPosition(d->value); if (emitMinimumChanged) emit minimumChanged(d->minimum); if (emitMaximumChanged) emit maximumChanged(d->maximum); d->emitValueAndPositionIfChanged(oldValue, oldPosition); } /*! \property QRangeModel::minimumValue \brief the minimum value that \l value can assume This property's default value is 0 */ void QRangeModel::setMinimum(qreal min) { Q_D(const QRangeModel); setRange(min, d->maximum); } qreal QRangeModel::minimum() const { Q_D(const QRangeModel); return d->minimum; } /*! \property QRangeModel::maximumValue \brief the maximum value that \l value can assume This property's default value is 99 */ void QRangeModel::setMaximum(qreal max) { Q_D(const QRangeModel); // if the new maximum value is smaller than // minimum, update minimum too setRange(qMin(d->minimum, max), max); } qreal QRangeModel::maximum() const { Q_D(const QRangeModel); return d->maximum; } /*! \property QRangeModel::stepSize \brief the value that is added to the \l value and \l position property Example: If a user sets a range of [0,100] and stepSize to 30, the valid values that are going to be seen externally would be: 0, 30, 60, 90, 100. */ void QRangeModel::setStepSize(qreal stepSize) { Q_D(QRangeModel); stepSize = qMax(qreal(0.0), stepSize); if (qFuzzyCompare(stepSize, d->stepSize)) return; const qreal oldValue = value(); const qreal oldPosition = position(); d->stepSize = stepSize; emit stepSizeChanged(d->stepSize); d->emitValueAndPositionIfChanged(oldValue, oldPosition); } qreal QRangeModel::stepSize() const { Q_D(const QRangeModel); return d->stepSize; } /*! Returns a valid position, respecting the \l positionAtMinimum, \l positionAtMaximum and the \l stepSize properties. Such calculation is based on the parameter \a value (which is valid externally). */ qreal QRangeModel::positionForValue(qreal value) const { Q_D(const QRangeModel); const qreal unconstrainedPosition = d->equivalentPosition(value); return d->publicPosition(unconstrainedPosition); } /*! \property QRangeModel::position \brief the current position of the model Represents a valid external position, based on the \l positionAtMinimum, \l positionAtMaximum and the \l stepSize properties. The user can set it internally with a position, that is not within the current position range, since it can become valid if the user changes the position range later. */ qreal QRangeModel::position() const { Q_D(const QRangeModel); // Return the internal position but observe boundaries and // stepSize restrictions. return d->publicPosition(d->pos); } void QRangeModel::setPosition(qreal newPosition) { Q_D(QRangeModel); if (qFuzzyCompare(newPosition, d->pos)) return; const qreal oldPosition = position(); const qreal oldValue = value(); // Update position and calculate new value d->pos = newPosition; d->value = d->equivalentValue(d->pos); d->emitValueAndPositionIfChanged(oldValue, oldPosition); } /*! \property QRangeModel::positionAtMinimum \brief the minimum value that \l position can assume This property's default value is 0 */ void QRangeModel::setPositionAtMinimum(qreal min) { Q_D(QRangeModel); setPositionRange(min, d->posatmax); } qreal QRangeModel::positionAtMinimum() const { Q_D(const QRangeModel); return d->posatmin; } /*! \property QRangeModel::positionAtMaximum \brief the maximum value that \l position can assume This property's default value is 0 */ void QRangeModel::setPositionAtMaximum(qreal max) { Q_D(QRangeModel); setPositionRange(d->posatmin, max); } qreal QRangeModel::positionAtMaximum() const { Q_D(const QRangeModel); return d->posatmax; } /*! Returns a valid value, respecting the \l minimumValue, \l maximumValue and the \l stepSize properties. Such calculation is based on the parameter \a position (which is valid externally). */ qreal QRangeModel::valueForPosition(qreal position) const { Q_D(const QRangeModel); const qreal unconstrainedValue = d->equivalentValue(position); return d->publicValue(unconstrainedValue); } /*! \property QRangeModel::value \brief the current value of the model Represents a valid external value, based on the \l minimumValue, \l maximumValue and the \l stepSize properties. The user can set it internally with a value, that is not within the current range, since it can become valid if the user changes the range later. */ qreal QRangeModel::value() const { Q_D(const QRangeModel); // Return internal value but observe boundaries and // stepSize restrictions return d->publicValue(d->value); } void QRangeModel::setValue(qreal newValue) { Q_D(QRangeModel); if (qFuzzyCompare(newValue, d->value)) return; const qreal oldValue = value(); const qreal oldPosition = position(); // Update relative value and position d->value = newValue; d->pos = d->equivalentPosition(d->value); d->emitValueAndPositionIfChanged(oldValue, oldPosition); } /*! \property QRangeModel::inverted \brief the model is inverted or not The model can be represented with an inverted behavior, e.g. when \l value assumes the maximum value (represented by \l maximumValue) the \l position will be at its minimum (represented by \l positionAtMinimum). */ void QRangeModel::setInverted(bool inverted) { Q_D(QRangeModel); if (inverted == d->inverted) return; d->inverted = inverted; emit invertedChanged(d->inverted); // After updating the internal value, the position property can change. setPosition(d->equivalentPosition(d->value)); } bool QRangeModel::inverted() const { Q_D(const QRangeModel); return d->inverted; } /*! Sets the \l value to \l minimumValue. */ void QRangeModel::toMinimum() { Q_D(const QRangeModel); setValue(d->minimum); } /*! Sets the \l value to \l maximumValue. */ void QRangeModel::toMaximum() { Q_D(const QRangeModel); setValue(d->maximum); } youker-assistant-1.0.1/qml/func/common/RangeModel.js000644 001750 001750 00000014220 12312451003 022725 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserveD. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributeD. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ function RangeModel() { this.value = 0; this.min = 0; this.max = 99; this.stepSize = 0; this.position = 0; this.posAtMin = 0; this.posAtMax = 1; this.inverted = false; this.recursionBlocked = false; } RangeModel.prototype = { setRange: function(newMin, newMax) { if (this.recursionBlocked) return; this.recursionBlocked = true; var oldValue = this.value; var oldPos = this.position; this.min = newMin; this.max = newMax; this.updateValueAndPosition(oldValue, oldPos); this.recursionBlocked = false; }, setStepSize: function(ss) { if (this.recursionBlocked) return; this.recursionBlocked = true; var oldValue = this.value; var oldPos = this.position; this.stepSize = ss; this.updateValueAndPosition(oldValue, oldPos); this.recursionBlocked = false; }, setPositionRange: function(newMin, newMax) { if (this.recursionBlocked) return; this.recursionBlocked = true; var oldValue = this.value; var oldPos = this.position; this.posAtMin = newMin; this.posAtMax = newMax; this.position = this.positionForValue(this.value); this.updateValueAndPosition(oldValue, oldPos); this.recursionBlocked = false; }, setInverted: function(i) { if (this.recursionBlocked) return; this.recursionBlocked = true; var oldValue = this.value; var oldPos = this.position; this.inverted = i; this.updateValueAndPosition(oldValue, oldPos); this.recursionBlocked = false; }, setValue: function(v) { if (this.recursionBlocked) return; this.recursionBlocked = true; var oldValue = this.value; var oldPos = this.position; this.value = v; this.position = this.positionForValue(v); this.updateValueAndPosition(oldValue, oldPos); this.recursionBlocked = false; }, setPosition: function(p) { if (this.recursionBlocked) return; this.recursionBlocked = true; var oldValue = this.value; var oldPos = this.position; this.position = p; this.value = this.valueForPosition(p); this.updateValueAndPosition(oldValue, oldPos); this.recursionBlocked = false; }, effectivePosAtMin: function() { return this.inverted ? this.posAtMax : this.posAtMin; }, effectivePosAtMax: function() { return this.inverted ? this.posAtMin : this.posAtMax; }, updateValueAndPosition: function(oldValue, oldPosition) { var newValue = this.publicValue(this.value); if (newValue != oldValue) model.value = newValue; var newPos = this.publicPosition(this.position); if (newPos != oldPosition) model.position = newPos; }, publicValue: function(v) { if (this.stepSize == 0) return v < this.min ? this.min : v > this.max ? this.max : v; var stepSizeMultiplier = Math.floor((v - this.min) / this.stepSize); if (stepSizeMultiplier < 0) return this.min; var leftEdge = Math.min(this.max, stepSizeMultiplier * this.stepSize + this.min); var rightEdge = Math.min(this.max, (stepSizeMultiplier + 1) * this.stepSize + this.min); var middle = (leftEdge + rightEdge) / 2; return v <= middle ? leftEdge : rightEdge; }, publicPosition: function(p) { var minPos = this.effectivePosAtMin(); var maxPos = this.effectivePosAtMax(); var valueRange = this.max - this.min; var positionValueRatio = valueRange != 0 ? (maxPos - minPos) / valueRange : 0; var positionStep = this.stepSize * positionValueRatio; if (positionStep == 0) { if (this.inverted) { var tmp = maxPos; maxPos = minPos; minPos = tmp; } return p < minPos ? minPos : p > maxPos ? maxPos : p; } var stepSizeMultiplier = Math.floor((p - minPos) / positionStep); if (stepSizeMultiplier < 0) return minPos; var leftEdge = stepSizeMultiplier * positionStep + minPos; var rightEdge = leftEdge + positionStep; if (minPos < maxPos) { leftEdge = Math.min(leftEdge, maxPos); rightEdge = Math.min(rightEdge, maxPos); } else { leftEdge = Math.max(leftEdge, maxPos); rightEdge = Math.max(rightEdge, maxPos); } return Math.abs(leftEdge - p) <= Math.abs(rightEdge - p) ? leftEdge : rightEdge; }, valueForPosition: function(p) { return this.publicValue(this.equivalentValue(p)); }, positionForValue: function(v) { return this.publicPosition(this.equivalentPosition(v)); }, equivalentValue: function(p) { var ePAM = this.effectivePosAtMin(); var posRange = this.effectivePosAtMax() - ePAM; if (posRange == 0) return this.min; var scale = (this.max - this.min) / posRange; return (p - ePAM) * scale + this.min; }, equivalentPosition: function(v) { var valueRange = this.max - this.min; var ePAM = this.effectivePosAtMin(); if (valueRange == 0) return ePAM; var scale = (this.effectivePosAtMax() - ePAM) / valueRange; return (v - this.min) * scale + ePAM; } } // RangeModel.prototype var ate = new RangeModel(); youker-assistant-1.0.1/qml/img/toolWidget/hover-press.png000644 001750 001750 00000001347 12312451003 024015 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<IDATxbO,_aa Y?~l~O,&I^bpLlyg4ʉ w5o- t, O/1O:[*!DWK\FOGה?_w,IgKAq'ߧ| MXx8j_`Z AHS G%waFQھh372f}TvIR2s+'p;Z!wvZvr! JRiwvoEY z7]nScH^(!?_ӯ 5qrTVt2'A0“ʬ $9XLfiMR(K Sz}foLf['ӕyqe^m6eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F;IDATxbܷo4L"˷o2G?ӧO &Zbܷo/_BXHq?bܵkGGGZFFFH~&@Todׯ__r%V"9kM3 DX~@K߿!n߿]FKԔ0om&b၏h < vgvT56fu?D| 1vfl'3* +[`/LԖ 0 ՐkdlR Yq8M Iwb#"H/Ic qI=KK\۪ AdobedF]  1!$ AQqB42RST5"r#3dt%&aCcDUX 1A!QaTq$42Bdt%"5RrD ?9*O;EĚRgYGEC;_S$c<4i>S[2K =ć ifXXMHtzf]AдlF>sL1);CWjˆe{GYGɍk?B'Z0W~)0G սPpS`~R}ϛ#2MmU&}P(k)1&Q&ĚzSk܀LKvvJ7&elL.a ,L/L-b`4](QL/MKd/*M|1&$׊$"QB܊bM{;)u)F̾8Q ׌!E逅lL#ˠw =ik&^ n\u|HIk֬ DbNRn3[Ɯ CM.mT6b:B{pE.k'c Y0J^S;&o^ /qϱ J:XTD$jG`l:Lf?*zڕYWO.uy+kB˫ͥlHl^qgCFrQ9md@@f`Ao@S2fS8&޹IcXF7,{c/G]`h* ֫ƄК۝@w̒alIA f 07.Zңa٬cry?qS Ml53>+d_>EMו5MVy=ӏ 4a@Xczʞd0-U6빗fcgѧ 5%+w3 {)FCg&&)4+`GOE,Su1|ZX40^&w03>_{w[D^cXfI nI M32٦zUBRDS& Bo/'<<.):㬋!LODJgLM>~$z4@]ΛqQ o(Eg;JϷGb?["""'5M|=u dZ^^q~m(k,Y,gqFEsAQUlQsIfmoNvʖ5$9B|$5%edYA''S$IѶ~sNU ?ZLJzTqK0ky~0E}_[דTnQ 6'liaZH}'^R\S7Qڹ.g~H^ÍDT>Gk=;bkP, mwg!3۠p:!mCHKH9-Ҕ~.6qMs@lRĤ>;ÉH%|ӝ^9{ ] Hkx^T82IQ&Pw}8c߸3ҦE &Rfˌ(i\On!YQGR^>QSBbMxMb)5-Ȧ$׳PBnL냏ؙ]xX^[іiAb<xi'QٽZ6G=S}aI:`!h۹1-{CP{$ñ aZRm:c!A0֌^ :lLQI}@hG %@Tɗ*w?/youker-assistant-1.0.1/qml/img/zh_CN/wizard/start_normal.png000644 001750 001750 00000005044 12312451003 024423 0ustar00saucysaucy000000 000000 PNG  IHDRt fx#tEXtSoftwareAdobe ImageReadyqe< IDATxbd``b%2 H g%c``d3E X˧p-Iӊ _?epѪDQŒ@Uϐlk&K#Я}bAQ'uˆ(aop4e_/XV.FFTqE\J _*/rϠ% fK2{X`(GPzK n hBeQ[1T*l_q  bez/@n)]PtQSo-;0񟁓;0hecb?7NsSﯟ-`u%#1JȁG>Lcbz&A{Y,ҿbsrAå`C;eyЋ!t:L/0o'"x<^&:A_AJ@`qN9  b?g`dd(?4e>闔0 c ʩ )!.UGAk -`papnP4g[VWM9dĐez- & (ypb*pg6 G@9=  ςed#poϚX./0e1rWKoQ(i1v%c !P1yI%`<&W?0Y,cXt2 b9ӟ`1k,N|Ǘ L!%`34-za0>8FׇL3g=({@*X=,@P y7Ǹ߯k_f5a7 ,@20r&cY׏X~7o23H5r=9_| :?d``vZWJ`+7s7ދc`+à-o-A@ÙK!lZ{ q - ' 33N2dXG O6m0@]7((j%ޣgx *;} ̳`3#Q; h$ i:< jZO 8Fـٝr3<b@J@Yyz/B᳏۽[3M7A]zvFSjaͣ`pS kB (hPà^ rYڝB4ܯ0> N 0$ٝpBJ]H&V@ X>%C6`_c<(q< $H/(X8g/Q׈G#74j.024<1zN=dfOFx n * ]ZKLa}A[4@5"ÁT 0&jxӋpO&D"z@Sڭ "ІNҴ_?|3uLԾδKeؽ l,X3[*Bژ1#L"kI =Jp)Cvnv( amNA*M ~*2iPxm_fތ=f!xC5Q]W;ǯ,6C>o9j<#U ]1Y d4 \To$[Ji@$ 2'cDIHr,h_+ONߤ_>Gw4k)=I [uE%-*Ϲ!+/ :D1($Yo#VݿK{ eYMƘܰX+awdΐ` HVYbhPVa2.hVBx79Ew.k?1I@B )Wiڐ}B<`Ĥ^c?44y}QS?򭟡"vŒP/*T}CcE6HH |u!Z_OӐ3x/}4;78H/8hAfF8w` M3p 4Su=Q @L.tqf(;vi+݌z~yuZePV-'䆷)4Er+ Aqhg0{ ijcAN+CL@S m$1<1f)9c邶viÓ4 c(~Z|Nm@@Ҙ"KJÙw߷9g/ޚ`,;$IENDB`youker-assistant-1.0.1/qml/img/weather/n8.gif000644 001750 001750 00000005327 12312451003 021366 0ustar00saucysaucy000000 000000 GIF89a008Z8Z6X}2PӽɽᄋȸϺ±ȶیùγȾѺꂌŏƳɵ6S{őյ/P1R6X3T4U :Z%Be,Lr/Ou.Lr-Ko1Qw.Lp3Sy3Qw8Y5U{7W}6Tz9Y9Y5Ru:Z7Uy.Fd;Y^!?`*Lq*Kq7S%Bb(Fi'Ef*Ik1Tz0Rw1Sx-Km%>Y3Uz4V{-Jj7Z5W|1Or7Y~/Lk)B]9[1Jf^ @_-Pp.Qq/Rr2Vx/Po7[}9\|3Oܲ K"bdG9b$(2Xi` *" m" a^ ƭ^t p( ?@@A$2o"K,1CA NZ 8;lF fR.2!R1C |ri=Pp.10B 9A63QK(S#,-' mPjpp)t03~. #3y !8l`p~{褣{:/<ĸ:x)40(tjh , *ц*$H/;bEB>!8 a1 P%( 31B')&,.x!J$C+@2xC E aF)@A €0!`t"R0r I]p~& C$@#:aH1' #1N'l2!8 bNhIO`hʁ`ăE@*M@Bp сN# ,MRc ?](c̐2 4>G7 L fDAF$C`3ԢN" 0*3~؂$PԲuxZڅ&b(()5 Ѐ: hBG(zVuu^k)8. iH#{b` K(6LD"*;l3,!jX3.K@ x%.K4+WVp;VVn5.A /,"D.jtӝ%^)B %kЄ|+ߔ#};_:" 6_җl ^TKІ5 # Є/F-Lsb>FT%N6PFprQrXF ZX\?Y M2'e.k4Ї8@1/\]Ns98 5P1p{lB<-DCP@D(AɄ^haF"-h-\ĦOP#]3g #include #include #include class QTopLevelWindow : public QMainWindow { Q_OBJECT public: QTopLevelWindow(); ~QTopLevelWindow(); QGraphicsScene *scene() { return _view->scene(); } QDeclarativeView *view() { return _view; } void registerChildWindow(QTopLevelWindow* child); void hideChildWindows(); void initPosition(); void setWindowFlags(Qt::WindowFlags type); void center(); void move(int x, int y); void move(const QPoint &); protected: virtual bool event(QEvent *event); Q_SIGNALS: void visibilityChanged(); void windowStateChanged(); void sizeChanged(QSize newSize); private: QDeclarativeView *_view; bool _positionIsDefined; }; #endif // QTOPLEVELWINDOW_H youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/geditmanager.py000644 001750 001750 00000006745 12312451003 031313 0ustar00saucysaucy000000 000000 #! /usr/bin/env python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # # Author: Kobe Lee # Maintainer: Ubuntu Kylin # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os from settings import Settings import types class GeditManager: def __init__(self): self.default = None self.settings = Settings("org.gnome.gedit.preferences.encodings") # -----------------默认值----------------- # Get Default Value def get_default_schema_value(self, schema, key): return self.settings.get_schema_value(schema, key) # Set Default Value def set_default_schema_value(self, schema, key, type): default_value = self.get_default_schema_value(schema, key) if default_value is not None: return self.settings.set_value(key, type, default_value) else: raise NotImplemented # 在Gedit中自动检测简体中文编码 # on=['GB18030', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16'] # off=['UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16'] # default = off # Get: Auto detect text encoding for Simplified Chinese in Gedit def get_detect_chinese_encoding(self): return self.settings.get_value("auto-detected", types.ListType) # Set: Auto detect text encoding for Simplified Chinese in Gedit def set_detect_chinese_encoding(self, flag): list_on = ['GB18030', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16'] list_off = ['UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16'] if(flag): self.settings.set_value("auto-detected", types.ListType, list_off) else: self.settings.set_value("auto-detected", types.ListType, list_on) # Get Default Value: Auto detect text encoding for Simplified Chinese in Gedit #def get_default_detect_chinese_encoding(self): # self.default = self.settings.get_schema_value("auto-detected") # Set Default Value: Auto detect text encoding for Simplified Chinese in Gedit #def set_default_detect_chinese_encoding(self): # if self.default is not None: # self.settings.set_value("auto-detected", types.ListType, self.default) if __name__ == '__main__': gm = GeditManager() #aa = gm.get_detect_chinese_encoding() #print aa #list_on = ['GB18030', 'UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16'] #list_off = ['UTF-8', 'CURRENT', 'ISO-8859-15', 'UTF-16'] #if aa == list_off: # gm.set_detect_chinese_encoding(False) #else: # gm.set_detect_chinese_encoding(True) #gm.get_default_detect_chinese_encoding() #print "default->" #print gm.default #gm.set_default_detect_chinese_encoding() #aa = gm.get_default_schema_value("org.gnome.gedit.preferences.encodings", "auto-detected") #print aa gm.set_default_schema_value("org.gnome.gedit.preferences.encodings", "auto-detected", types.ListType) youker-assistant-1.0.1/qml/img/logo/Manufacturer/SONY.jpg000644 001750 001750 00000007421 12312451003 023576 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !AQq2B" $4a3S%5!1AQ"Ba2qR ?MÓV&F 4tQo/`EC%٬ ߴ4V0;,p0k`9v@{4W|mmw 97h1 *FuZBRNDG9N8C+=JffQv-msන]Zb*pxskUQ+r[(/ٍYݩ%U%Y{TU+t`w 18Ԫ$  :j<>&jzxbw*`;]Dm}Hu!+:TTmBFOTP9ǷUWds/7Q #ok]UUfBg K0rthTVE%R5ELq >}rWhJvLr4̲ZdWEпv8ՙ71$3)A}&DJ%'+r( <<)w:L–n&m5#|PcGƇyQw I4uIYLSԕЇ+ {8U*@7}٪ 뵍 ~J7_vaV^G U~o[tK^ EecF>99xPKrqD:swVӞّ-ܢ,2:WEg̅!D‘MB-=C[ij :D3S)N#w͂&xxQTCxg<-^GWHTC(Zq%La)6G^ lE"Z)Q͝tjer Yno8xR-,jW9߈_}>?ğ]k}n{{|խoxF,t[vV?r-%6z.ggRv6ιNsqӂٯ;/!k۪DI,G@"S$W`7bs^+.ULٷR$[s3FI!/tvE;1ofpѶYO] UK>AГG?3N)ªEdW6?G^[M{.7pfLNۧVi*#[B1Q1AC:?q5vJ]kgg-̢]ydz%n kޤR4hL-!V?a׳R8N5<8tFJٜ*:]J{#O|:׫$ﭥtyHCRve(q|;*7* <8p!r9VnExwMK' j4W&zDzPUDL;(I6XQV*^37ci=L5Obߓ1 'LZ4unqFk:tlm Y"=7WkteD&ZMBIqqTnOTJ^}*AS"2:P_Mmj^@PZ(hE+ _tCWk.ݿZ2yQL7Q#jQ9xq<5M\m``phE - FƪcE54mͨbJH^"# x&=M``=ԡ>^vЋIP7֖ 0Mѣ6~#<<,/g.%cX˰z٢Dkl]kaɿA ~i`}:(7j0]ɢˡAxr+[ 8 =+A>^vyouker-assistant-1.0.1/backends/backends.pro000644 001750 001750 00000001273 12312451003 021410 0ustar00saucysaucy000000 000000 TEMPLATE = aux inst1.files += ../backends/youker-assistant-daemon/src/ inst1.path = /usr/lib/python2.7/dist-packages/youker-assistant-daemon/ inst2.files += ../backends/youker-assistant-daemon/data/beautify/autostart/ inst2.path = /var/lib/youker-assistant-daemon/ inst3.files += ../backends/youker-assistant-daemon/data/beautify/plymouth/ inst3.path = /var/lib/youker-assistant-daemon/ inst4.files += ../backends/youker-assistant-daemon/data/beautify/sound-theme/ inst4.path = /var/lib/youker-assistant-daemon/ inst5.files += ../backends/youker-assistant-daemon/data/processmanager/ inst5.path = /var/lib/youker-assistant-daemon/ INSTALLS += inst1 \ inst2 \ inst3 \ inst4 \ inst5 youker-assistant-1.0.1/backends/youker-assistant-daemon/src/detailinfo/cpuinfo.py000644 001750 001750 00000076252 12312451003 030635 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import sys import os import re import math import binascii import platform import gettext from gettext import gettext as _ from gettext import ngettext as __ class DetailInfo: #Computer: # ComVendor 制造商 # ComProduct 电脑型号 # ComVersion 电脑版本 # ComSerial 序列号 # node 主机名 # uptime 持续运行时间 # system 操作系统类型 # platform 操作系统 # architecture 系统位数 # release 内核版本 # machine 内核架构 #CPU: # CpuVersion 处理器版本 # CpuVendor 制造商 # CpuSlot 插槽 # CpuSerial 序列号 # CpuCapacity 最大主频 # CpuSize 当前主频 # CpuClock 前端总线 # cpu_cores cpu内核数 # cpu_siblings cpu线程数 # clflush_size 一级缓存 # cache_size 二级缓存 #Board and BIOS: # BoaProduct 主板型号 # BoaVendor 主板产商 # BoaSerial 序列号 # BioVendor BIOS产商 # BioVersion BIOS版本 # BioRelease 发布日期 #Memory: # Memnum 内存条个数 # MemInfo 内存条信息 # MemWidth 数据宽度 # MemSlot 插槽号 # MemProduct 内存型号 # MemVendor 制造商 # MemSerial 序列号 # MemSize 内存大小 #Monitor: # Mon_product 显示器型号 # Mon_vendor 显示器制造商 # Mon_year 生产日期_年 # Mon_week 生产日期_周 # Mon_size 可视面积 # Mon_in 屏幕尺寸 # Mon_maxmode 最大分辨率 # Mon_gamma 伽马值 # Mon_output 当前接口 # Mon_support 支持接口 # Mon_chip 当前显卡 # Vga_num 显卡数 # Vga_product 显卡型号 # Vga_vendor 显卡产商 # Vga_businfo 显卡总线地址 # Vga_Drive 显卡驱动 #Disk : # disknum 硬盘个数 # DiskProduct 硬盘型号 # DiskVendor 硬盘厂商 # DiskCapacity 硬盘容量 # DiskName 设备名称 # DiskFw 固件版本 # DiskSerial 序列号 #Network : # NetProduct 网卡型号 # NetVendor 制造商 # NetBusinfo 总线地址 # NetLogicalname 设备名称 # NetSerial MAC地址 # NetCapacity 最大带宽 # NetIp IP地址 # NetLink 连接状态 # NetDrive 网卡驱动 # WlanProduct 无线网卡型号 # WlanVendor 无线制造商 # WlanBusinfo 总线地址 # WlanLogicalname 设备名称 # WlanSerial MAC地址 # WlanIp 无线IP地址 # WlanDrive 无线网卡驱动 #multimedia : # MulNum 多媒体个数 # MulProduct 产品型号 # MulVendor 制造商 # MulBusinfo 总线地址 # MulDrive 驱动 #dvd : # Dvdnum 光驱个数 # DvdProduct 光驱型号 # DvdVendor 制造商 # DvdName 设备名称 # DvdFw 固件版本 # DvdSerial 序列号 def ctoascii(self,buf): ch = str(buf) asci = binascii.b2a_hex(ch) asci = int(asci,16) return asci def strip(self, s): if(len(s) == 0): return s while len(s) > 0 and self.ctoascii(s[0]) <= 32: s = s[1: ] k = len(s) while len(s) > 0 and self.ctoascii(s[k-1]) <= 32: s = s[ :k-1] k = len(s) i = 0 while i < len(s): if s[i] < 32: s = s[ :i] + s[i+1: ] i -= 1 i += 1 return s def uptimeinfo(self): with open('/proc/uptime') as f: for line in f: string = line.split('.')[0] seconds = int(string) minutes = seconds / 60 upminutes = str(minutes) return upminutes def get_url(self,v,p): vendors = { #CPU产商 "INTEL":["Intel"], "AMD":["AMD"], "VIMICRO":["Vimicro"], #显卡产商 "ATI":["ATI"], "1002":["ATI"], "SIS":["SIS"], "1039":["SIS"], "NVIDIA":["Nvidia"], "VIA":["VIA"], "XFX":["XFX"], "SUPERGRAPHIC":["Supergraphic"], #显示器产商 "AUO":["AUO"], "AOC":["AOC"], "PHILIPS":["Philips"], "PHL":["Philips"], "LEN":["Lenovo"], "SEC":["SAMSUNG"], #电脑品牌 "HASEE":["Hasee"], "FOUNDER":["Founder"], "TONGFANG":["Tongfang"], "TSINGHUA":["Tongfang"], "ACER":["Acer"], "LENOVO":["Lenovo"], "ASUSTEK":["ASUS"], "NEC":["NEC"], "HP":["HP"], "HEWLETT-PACKARD":["HP"], "SAMSUNG":["SAMSUNG"], "TOSHIBA":["TOSHIBA"], "APPLE":["Apple"], "DELL":["DELL"], "FUJITSU":["FUJITSU"], "PANASONIC":["Panasonic"], "SONY":["SONY"], "IBM":["IBM"], #虚拟机 "INNOTEK":["VirtualBox"], "VBOX":["VirtualBox"], "VIRTUALBOX":["VirtualBox"], #网卡产商 "3COM":["3COM"], "D-LINK":["D-LINK"], "RALINK":["Ralink"], "ATHEROS":["Atheros"], "MARVELL":["Marvell"], "BROADCOM":["Broadcom"], #硬盘产商 "EXCELSTOR":["Excelstor"], "HITACHI":["Hitachi"], "MAXTOR":["Maxtor"], "WESTERN":["Western Digital"], "LITEON":["Liteon"], "SEAGATE":["Seagate"], "QUANTUM":["Quantum"], #光驱产商 "PLDS":["PLDS"], "PBDS":["PLDS"], "HL-DT-ST":["LG"], "OPTIARC":["SONY"], "TSSTCORP":["TSSTcorp"], "PIONEER":["Pioneer"], "MATSHITA":["Panasonic"], #声卡产商 "REALTEK":["Realtek"], "CREATIVE":["Creative"], #摄像头 "SONIX":["Sonix"], "ETRON":["Etron"], "AVEO":["Aveo"], "SYNTEK":["Syntek"], "EMPIA":["Empia"], "CHICONY":["Chicony"], "OMNIVISION":["OmniVision"], #鼠标产商 "LOGITECH":["Logitech"], "SUNPLUS":["Sunplus"], "PRIMAX":["Primax"], "PIXART":["Pixart"], "TRUST":["Trust"], "1BCF":["Rapoo"], "AVAGO":["Avago"], "MICROSOFT":["Microsoft"], #键盘产商 "RAPOO":["Rapoo"], #主板产商 "GIGABYTE":["Gigabyte"], "BIOSTAR":["Biostar"], "COLORFUL":["Colorful"], "YESTON":["Yeston"], #指纹识别 "UPEK":["Authentec"], "AUTHENTEC":["Authentec"], #闪存产商 "KINGSTON":["Kingston"], "KINGMAX":["Kingmax"], "KINGBOX":["Kingbox"], "HYNIX":["Hynix"], "HYUNDAI":["Hynix"], "MICRON":["Micron"], "06C1":["Asint"], "ADATA":["ADATA"], "ZTE":["ZTE"], "EAGET":["Eaget"], "TEXAS":["Texas Instruments"], "MOTOROLA":["Motorola"], #电源产商 "SMP":["SMP"], "SIMPLO":["SMP"], #BIOS产商 "AMERICAN":["AMI"], "AWARD":["Phoenix"], "PHOENIX":["Phoenix"] } tmp = v.split(" ")[0] tmp = re.findall("([a-zA-Z0-9-]+)", tmp) if tmp : url = vendors.get(tmp[0].upper()) if url: return url[0] else : k = p.split(" ")[0] url = vendors.get(k.upper()) if url: return url[0] else: tmp = p.split(" ")[0] url = vendors.get(tmp.upper()) if url: return url[0] tmp = re.findall("ATI", v) if tmp : url = vendors.get(tmp[0].upper()) if url: return url[0] tmp = re.findall("SIS", v) if tmp : url = vendors.get(tmp[0].upper()) if url: return url[0] tmp = re.findall("ATI", p) if tmp : url = vendors.get(tmp[0].upper()) if url: return url[0] tmp = re.findall("SIS", p) if tmp : url = vendors.get(tmp[0].upper()) if url: return url[0] return v def get_computer(self): #Computer Com = {} hw = os.popen("dmidecode -t system") computer = hw.read() hw.close() ComVendor,ComProduct,ComVersion,ComSerial = '','','','' if computer : tmp = re.findall("Product Name: (.*)",computer) if tmp : ComProduct = tmp[0] tmp = re.findall("Manufacturer: (.*)",computer) if tmp : ComVendor = tmp[0] tmp = re.findall("Version: (.*)",computer) if tmp : ComVersion = tmp[0] tmp = re.findall("Serial Number: (.*)",computer) if tmp : ComSerial = tmp[0] ComVendor = self.get_url(ComVendor,ComProduct) Com['ComProduct'],Com['ComVendor'],Com['ComVersion'],Com['ComSerial'] = self.strip(ComProduct),self.strip(ComVendor),self.strip(ComVersion),self.strip(ComSerial) with open('/proc/uptime') as f: for line in f: string = line.split('.')[0] seconds = int(string) minutes = seconds / 60 uptime = str(minutes) Com['node'], Com['uptime'], Com['system'], Com['platform'],Com['architecture'], Com['release'], Com['machine'] = platform.node(),uptime,platform.system(),platform.platform(),platform.architecture()[0],platform.release(),platform.machine() return Com def get_cpu(self): # CPU Cpu = {} hw = os.popen("dmidecode -t processor") cpuin = hw.read() hw.close() CpuVersion,CpuVendor,CpuSlot,CpuSerial,CpuCapacity,CpuSize,CpuClock,cpu_cores,cpu_siblings,clflush_size,cache_size = '','','','','','','','','','','' if cpuin : tmp = re.findall("Version: (.*)",cpuin) if tmp : CpuVersion = tmp[0] tmp = re.findall("Manufacturer: (.*)",cpuin) if tmp : CpuVendor = tmp[0] tmp = re.findall("Socket Designation: (.*)",cpuin) if tmp : CpuSlot = tmp[0] tmp = re.findall("Serial Number: (.*)",cpuin) if tmp : CpuSerial = tmp[0] tmp = re.findall("Max Speed: (.*)",cpuin) if tmp : CpuCapacity = tmp[0] tmp = re.findall("Current Speed: (.*)",cpuin) if tmp : CpuSize = tmp[0] tmp = re.findall("External Clock: (.*)",cpuin) if tmp : CpuClock = tmp[0] CpuVendor = self.get_url(CpuVendor,CpuVersion) Cpu['CpuVersion'],Cpu['CpuVendor'],Cpu['CpuSlot'],Cpu['CpuSerial'],Cpu['CpuCapacity'],Cpu['CpuSize'],Cpu['CpuClock'] = self.strip(CpuVersion),self.strip(CpuVendor),self.strip(CpuSlot),self.strip(CpuSerial),self.strip(CpuCapacity),self.strip(CpuSize),self.strip(CpuClock) with open('/proc/cpuinfo') as f: for line in f: if line.strip(): if line.rstrip('\n').startswith('vendor_id'): vendor = line.rstrip('\n').split(':')[1] elif line.rstrip('\n').startswith('cpu cores'): cpu_cores = line.rstrip('\n').split(':')[1] elif line.rstrip('\n').startswith('siblings'): cpu_siblings = line.rstrip('\n').split(':')[1] elif line.rstrip('\n').startswith('clflush size'): clflush_size = line.rstrip('\n').split(':')[1] clflush_size = filter(str.isdigit,clflush_size) elif line.rstrip('\n').startswith('cache size'): cache_size = line.rstrip('\n').split(':')[1] cache_size = filter(str.isdigit,cache_size) Cpu['cpu_cores'],Cpu['cpu_siblings'],Cpu['clflush_size'],Cpu['cache_size'] = cpu_cores,cpu_siblings,clflush_size,cache_size return Cpu def get_board(self): #Board and BIOS Boa = {} hw = os.popen("dmidecode -t baseboard") board = hw.read() hw.close() BoaProduct,BoaVendor,BoaSerial,BioVendor,BioVersion,BioRelease = '','','','','','' if board : tmp = re.findall("Product Name: (.*)",board) if tmp : BoaProduct = tmp[0] tmp = re.findall("Manufacturer: (.*)",board) if tmp : BoaVendor = tmp[0] tmp = re.findall("Serial Number: (.*)",board) if tmp : BoaSerial = tmp[0] hw = os.popen("dmidecode -t bios") bios = hw.read() hw.close() if bios : tmp = re.findall("Vendor: (.*)",bios) if tmp: BioVendor = tmp[0] tmp = re.findall("Version: (.*)",bios) if tmp: BioVersion = tmp[0] tmp = re.findall("Release Date: (.*)",bios) if tmp: BioRelease = tmp[0] BoaVendor = self.get_url(BoaVendor,BoaProduct) BioVendor = self.get_url(BioVendor,BioVersion) Boa['BoaProduct'],Boa['BoaVendor'],Boa['BoaSerial'],Boa['BioVendor'],Boa['BioVersion'],Boa['BioRelease'] = self.strip(BoaProduct),self.strip(BoaVendor),self.strip(BoaSerial),self.strip(BioVendor),self.strip(BioVersion),self.strip(BioRelease) return Boa def get_memory(self): #Memory Device Mem = {} MemInfo,MemWidth,Memnum,MemSlot,MemProduct,MemVendor,MemSerial,MemSize,BioVendor = "","","","","","",'','','' hw = os.popen("dmidecode -t memory") memory = hw.read() hw.close() num = 0 q = re.findall('Memory Device\n',memory) if q : memory = memory[memory.index("Memory Device\n")+len("Memory Device\n"):] else : memory = '' if memory : mark = re.findall("Data Width: (.*)",memory) if mark : for k in mark : if not k == 'Unknown': num += 1 if MemWidth : MemWidth += "<1_1>" + k else : MemWidth = k Memnum = str(num) tmp = re.findall("Bank Locator: (.*)",memory) i = 0 if tmp : for k in mark : i += 1 if not k == 'Unknown': if MemSlot : MemSlot +="<1_1>"+ tmp[i-1] else : MemSlot = tmp[i-1] tmp = re.findall("Part Number: (.*)",memory) i = 0 if tmp : for k in mark : i += 1 if not k == 'Unknown': if MemProduct : MemProduct += "<1_1>" + tmp[i-1] else : MemProduct = tmp[i-1] tmp = re.findall("Manufacturer: (.*)",memory) i = 0 if tmp : for k in mark : i += 1 if not k == 'Unknown': if MemVendor : MemVendor += "<1_1>" + tmp[i-1] else : MemVendor = tmp[i-1] tmp = re.findall("Serial Number: (.*)",memory) i = 0 if tmp : for k in mark : i += 1 if not k == 'Unknown': if MemSerial : MemSerial += "<1_1>" + tmp[i-1] else : MemSerial = tmp[i-1] tmp = re.findall("Size: (.*)",memory) i = 0 if tmp : for k in mark : i += 1 if not k == 'Unknown': if MemSize : MemSize += "<1_1>" + tmp[i-1] else : MemSize = tmp[i-1] tmp0 = self.strip(re.findall("Form Factor: (.*)",memory)) tmp1 = self.strip(re.findall("Type: (.*)",memory)) tmp2 = self.strip(re.findall("Type Detail: (.*)",memory)) tmp3 = self.strip(re.findall("Speed: (.*)",memory)) i = 0 if tmp0 and tmp1 and tmp2 and tmp3 : for k in mark : i += 1 if not k == 'Unknown': if MemInfo : MemInfo += "<1_1>" + tmp0[i-1] + ' ' + tmp1[i-1] + ' ' + tmp2[i-1] + ' ' + tmp3[i-1] else : MemInfo = tmp0[i-1] + ' ' + tmp1[i-1] + ' ' + tmp2[i-1] + ' ' + tmp3[i-1] Mem["MemInfo"],Mem["MemWidth"],Mem["MemSlot"],Mem["MemProduct"],Mem["MemVendor"],Mem["MemSerial"],Mem["MemSize"],Mem["Memnum"] = MemInfo,self.strip(MemWidth),self.strip(MemSlot),self.strip(MemProduct),self.strip(MemVendor),self.strip(MemSerial),self.strip(MemSize),self.strip(Memnum) return Mem def get_monitor(self): #Monitor ret = {} with open('/var/log/Xorg.0.log','r') as fp: info = fp.read() tmp = re.findall('Monitor name: \s*(\w*)\s*(\w*)', info) if tmp: if tmp[0][1]: ret["Mon_vendor"] = tmp[0][0] ret["Mon_product"] = tmp[0][0] + " " + tmp[0][1] else:ret["Mon_product"] = tmp[0][0] tmp = re.findall("Manufacturer:\s*(\w*)\s*Model:\s*(\w*)", info) if tmp: if not ret.get("Mon_product"): ret["Mon_product"] = tmp[0][0] + " " + tmp[0][1] if not ret.get("Mon_vendor"): ret["Mon_vendor"] = tmp[0][0] tmp = re.findall("Year:\s*(\w*)\s*Week:\s*(\w*)", info) if tmp: ret["Mon_year"] = tmp[0][0] ret["Mon_week"] = tmp[0][1] tmp = re.findall("Image Size: \s*(\w*) x (\w*)", info) if tmp: x = float(tmp[0][0])/10 y = float(tmp[0][1])/10 d = math.sqrt(x**2 + y**2)/2.54 ret["Mon_size"] = str(x) + "cm" + " x " + str(y) + "cm" ret["Mon_in"] = "%.1f" %d tmp = re.findall("Gamma: (\S*)", info) if tmp: ret["Mon_gamma"] = tmp[0] h = re.findall("h_active: (\d*)", info) v = re.findall("v_active: (\d*)", info) if h and v: ret["Mon_maxmode"] = h[0] + "x" + v[0] tmp = re.findall("EDID for output (.*)", info) if tmp: ret["Mon_support"] = str(tmp) tmp = re.findall("Output (.*).* connected", info) if tmp: ret["Mon_output"] = tmp[0] tmp = re.findall("Integrated Graphics Chipset: (.*)", info) if tmp: ret["Mon_chip"] = tmp[0] tmp = re.findall("Chipset: \"(.*)\"", info) if tmp: if not ret.get("Mon_chip"): ret["Mon_chip"] = tmp[0] n = os.popen('lspci -vvv') vga = n.read() n.close() Vga_num = 0 Vga_product,Vga_vendor,Vga_businfo,Vga_Drive = '','','','' if vga : while re.findall('VGA compatible controller: ',vga) : tmp = vga[vga.index('VGA compatible controller: ') - 8:] vga = tmp[30:] if Vga_businfo: Vga_businfo += "<1_1>" + 'pci@0000:' + tmp[:8] else : Vga_businfo = 'pci@0000:' + tmp[:8] if Vga_product: pro = re.findall('VGA compatible controller: (.*)',tmp) Vga_product += "<1_1>" + pro[0] Vga_vendor += "<1_1>" + self.get_url('',pro[0]) else : pro = re.findall('VGA compatible controller: (.*)',tmp) Vga_product = pro[0] Vga_vendor = self.get_url('',pro[0]) Vga_num += 1 tmp = re.findall('Kernel driver in use: (.*)',tmp) if Vga_Drive: Vga_Drive += "<1_1>" + tmp[0] else : Vga_Drive = tmp[0] if (ret.get('Mon_vendor')): if (ret.get('Mon_product')): ret['Mon_vendor'] = self.get_url(ret['Mon_vendor'],ret['Mon_product']) else : ret['Mon_vendor'] = self.get_url(ret['Mon_vendor'],'') ret['Vga_num'],ret['Vga_businfo'],ret['Vga_product'],ret['Vga_vendor'],ret['Vga_Drive'] = self.strip(str(Vga_num)),self.strip(Vga_businfo),self.strip(Vga_product),self.strip(Vga_vendor),self.strip(Vga_Drive) return ret def get_disk(self): dis={} disknum = 0 disk_manufacturers = [ "^ST.+", "Seagate", "^D...-.+", "IBM", "^IBM.+", "IBM", "^HITACHI.+", "Hitachi", "^IC.+", "Hitachi", "^HTS.+", "Hitachi", "^FUJITSU.+", "Fujitsu", "^MP.+", "Fujitsu", "^TOSHIBA.+", "Toshiba", "^MK.+", "Toshiba", "^MAXTOR.+", "Maxtor", "^Pioneer.+", "Pioneer", "^PHILIPS.+", "Philips", "^QUANTUM.+", "Quantum", "FIREBALL.+", "Quantum", "^WDC.+", "Western Digital", "WD.+", "Western Digital", ] DiskProduct,DiskVendor,DiskCapacity,DiskName,DiskFw,DiskSerial = '','','','','','' n = os.popen("ls /dev/sd?") line = n.read() n.close() n = os.popen("ls /dev/hd?") line += n.read() n.close() if line : line = line.split('\n') for k in line : if k : st = os.popen("hdparm -i %s" % k) strin = st.read() st.close() tmp = re.findall("Model=(.*), F",strin) if not tmp : continue else : if DiskProduct : DiskProduct += "<1_1>"+tmp[0] else : DiskProduct = tmp[0] i = 0 while i < len(disk_manufacturers): ven = re.compile(disk_manufacturers[i],re.I) tm = ven.findall(tmp[0]) if tm : if DiskVendor : DiskVendor += "<1_1>" + disk_manufacturers[i+1] else : DiskVendor += disk_manufacturers[i+1] i = len(disk_manufacturers) i += 2 tmp = re.findall("FwRev=(.*), ",strin) if tmp : if DiskFw : DiskFw += "<1_1>" +tmp[0] else : DiskFw = tmp[0] tmp = re.findall("SerialNo=(.*)",strin) if tmp : if DiskSerial : DiskSerial += "<1_1>" +tmp[0] else : DiskSerial = tmp[0] ds = os.popen("fdisk -l %s" % k) d = ds.read() ds.close() tmp = re.findall("%s: (.*)," % k,d) if tmp: if DiskCapacity : DiskCapacity += "<1_1>" +tmp[0] else : DiskCapacity = tmp[0] disknum += 1 if DiskName : DiskName += "<1_1>" + k else : DiskName = k dis['DiskNum'],dis['DiskProduct'],dis['DiskVendor'],dis['DiskCapacity'],dis['DiskName'],dis['DiskFw'],dis['DiskSerial'] = self.strip(str(disknum)),self.strip(DiskProduct),self.strip(DiskVendor),self.strip(DiskCapacity),self.strip(DiskName),self.strip(DiskFw),self.strip(DiskSerial) return dis def get_network(self): net = {} NetProduct,NetVendor,NetBusinfo,NetLogicalname,NetSerial,NetIp,NetLink,NetCapacity = '','','','','','','','' n = os.popen('lspci -vvv') network = n.read() n.close() if network : if re.findall('Ethernet controller: ',network): tmp = network[network.index('Ethernet controller: ')-8:] NetBusinfo = 'pci@0000:' + tmp[:8] pro = re.findall('Ethernet controller: (.*)',tmp) NetProduct = pro[0] NetVendor = self.get_url('',pro[0]) tmp = re.findall('Kernel driver in use: (.*)',tmp) NetDrive = tmp[0] n = os.popen('ifconfig eth') network = n.read() n.close() if network : NetLogicalname = network[:4] tmp = re.findall("\w\w:\w\w:\w\w:\w\w:\w\w:\w\w",network) if tmp: NetSerial = tmp[0] tmp = re.findall("inet(.*)",network) if tmp: ip = tmp[0][tmp[0].index(':')+len(':'): ] ip = ip[: ip.index(' ')] NetIp = ip n = os.popen('mii-tool -v') network = n.read() n.close() if network : tmp = re.findall("basic status: (.*)",network) if tmp: NetLink = tmp[0] tmp = re.findall('capabilities: (\d*)',network) if tmp: NetCapacity = tmp[0] WlanProduct,WlanVendor,WlanBusinfo,WlanLogicalname,WlanSerial,WlanIp,WlanDrive = '','','','','','','' n = os.popen('lspci -vvv') wlan = n.read() n.close() if wlan : if re.findall('Network controller: ',wlan): tmp = wlan[wlan.index('Network controller: ') - 8:] WlanBusinfo = 'pci@0000:' + tmp[:8] pro = re.findall('Network controller: (.*)',tmp) WlanProduct = pro[0] WlanVendor = self.get_url('',pro[0]) tmp = re.findall('Kernel driver in use: (.*)',tmp) WlanDrive = tmp[0] n = os.popen('ifconfig wlan') wlan = n.read() n.close() if wlan: WlanLogicalname = wlan[:5] tmp = re.findall("\w\w:\w\w:\w\w:\w\w:\w\w:\w\w",wlan) if tmp: WlanSerial = tmp[0] tmp = re.findall("inet(.*)",wlan) if tmp: ip = tmp[0][tmp[0].index(':')+len(':'):] ip = ip[: ip.index(' ')] WlanIp = ip net['NetProduct'],net['NetVendor'],net['NetBusinfo'],net['NetLogicalname'],net['NetSerial'],net['NetIp'],net['NetLink'],net['NetCapacity'],net['NetDrive'],net['WlanProduct'],net['WlanVendor'],net['WlanBusinfo'],net['WlanLogicalname'],net['WlanSerial'],net['WlanIp'],net['WlanDrive'] = self.strip(NetProduct),self.strip(NetVendor),self.strip(NetBusinfo),self.strip(NetLogicalname),self.strip(NetSerial),self.strip(NetIp),self.strip(NetLink),self.strip(NetCapacity),self.strip(NetDrive),self.strip(WlanProduct),self.strip(WlanVendor),self.strip(WlanBusinfo),self.strip(WlanLogicalname),self.strip(WlanSerial),self.strip(WlanIp),self.strip(WlanDrive) return net def get_multimedia(self): Mul = {} MulNum = 0 MulProduct,MulVendor,MulBusinfo,MulDrive = '','','','' n = os.popen('lspci -vvv') multimedia = n.read() n.close() if multimedia: while re.findall('Audio device:',multimedia) : tmp = multimedia[multimedia.index('Audio device:')- 8:] multimedia = tmp[30:] if MulBusinfo: MulBusinfo += "<1_1>"+ 'pci@0000:' + tmp[ :8] else : MulBusinfo = 'pci@0000:' + tmp[ :8] if MulProduct: pro = re.findall('Audio device: (.*)',tmp) MulProduct += "<1_1>" + pro[0] MulVendor += "<1_1>" + self.get_url('',self.strip(pro[0])) else : pro = re.findall('Audio device: (.*)',tmp) MulProduct = pro[0] MulVendor = self.get_url('',self.strip(pro[0])) MulNum += 1 tmp = re.findall('Kernel driver in use: (.*)',tmp) if MulDrive: MulDrive += "<1_1>" + tmp[0] else : MulDrive = tmp[0] Mul['MulNum'],Mul['MulProduct'],Mul['MulVendor'],Mul['MulBusinfo'],Mul['MulDrive'] = self.strip(str(MulNum)),self.strip(MulProduct),self.strip(MulVendor),self.strip(MulBusinfo),self.strip(MulDrive) return Mul def get_dvd(self): dvd = {} Dvdnum = 0 DvdProduct,DvdVendor,DvdName,DvdFw,DvdSerial = '','','','','' n = os.popen("hdparm -i /dev/cdrom") cdrom = n.read() n.close() if cdrom: tmp = re.findall("Model=(.*), F",cdrom) if tmp: DvdProduct = tmp[0] DvdVendor = self.get_url('',self.strip(DvdProduct)) if not DvdVendor : pro = DvdProduct[:DvdProduct.index('DVD')] DvdVendor = self.get_url('',self.strip(pro)) if not DvdVendor : pro = DvdProduct[:DvdProduct.index('CD')] DvdVendor = self.get_url('',self.strip(pro)) tmp = re.findall("FwRev=(.*), ",cdrom) if tmp : DvdFw = tmp[0] tmp = re.findall("SerialNo=(.*)",cdrom) if tmp : DvdSerial = tmp[0] DvdName = '/dev/cdrom' Dvdnum += 1 dvd['Dvdnum'],dvd['DvdProduct'],dvd['DvdVendor'],dvd['DvdName'],dvd['DvdFw'],dvd['DvdSerial'] = self.strip(str(Dvdnum)),self.strip(DvdProduct),self.strip(DvdVendor),self.strip(DvdName),self.strip(DvdFw),self.strip(DvdSerial) return dvd if __name__ == "__main__": pass #cc = DetailInfo() #cc.ctoascii('a') #cc.strip('a') #cc.get_url('a','a') #cc.get_computer() #cc.get_cpu() #cc.get_board() #cc.get_memory() #cc.get_monitor() #cc.get_disk() #cc.get_network() #cc.get_multimedia() #cc.get_dvd() youker-assistant-1.0.1/qml/img/weather/d9.gif000644 001750 001750 00000005345 12312451003 021355 0ustar00saucysaucy000000 000000 GIF89a00˰ƺʱՂŨ܅Ūµ}ŷԼкΰԿ텑萛ܩǴ6q:u;v:s>y>xAzC{9fHJ~dIrhfejjhqxwswy{}⁳]儳cԀԙҭ&Z*`3t3q/j,c4r3p4q3o8v6s5r5q0f7t6s8u9v8s7s7q5m3i9v9t;w:u9ujQKURWCn^Z_TV^bae\e_[hmckjnmpolT|ronqpurtvutsvuyws{zy}|y}~䁳}چ䅶⋺앿p7uacpjqtux}|w~{܁ჶサ⇸!,00}Qf͙5*\Ȱ8ma&Φ/aL CIR5ϰQAqްnʵׯ`֫uQ>ؙN@=UO2dA3Ou qӧ>ǎAА' x!C]vmmA}m{m;M/3V|nj:ĕS7oA؇#=w H"=Jxc 7&Dx/C#䐢*)B!B8rdB{P@7A )0 e_6"A#8QFF8a \X &@B`ȑH8҈DI%EFRdHVR0"3HxClp#$D!8ˆNF"ɚlH{QFr졇)3H@a :j `p{Hrɚ,*%Ea x"%^!|b| ;L%8ZdG\2餙dRED ,^{;sa&@ j@ C$jm&lR&h+Gc *P""4P/d!#&t"/Ex xc$~XPA.|*/vURpe:Zb 0.T  B vI(. */ import QtQuick 1.1 import "../common" as Common Item { id: toolbar property bool showok: true signal gobackHomeClicked signal cancelBtnClicked signal finishBtnClicked signal gobackBtnClicked BorderImage { // source: "../../img/icons/tab.png" width: parent.width; height: parent.height + 14; y: -7 } Rectangle{id: splitbar; x:2; width:parent.width - 4 ; height:1; color:"#b9c5cc"} Row { spacing: 30 height: 32 anchors { right: parent.right rightMargin: 5 top: splitbar.bottom topMargin: 10 } Common.Button { id: gobackHome hoverimage: "gray.png" text: qsTr("Home")//返回主页 fontcolor:"#929292" fontsize: 13 width: 94; height: 29 onClicked: toolbar.gobackHomeClicked() } Common.Button { id: cancelBtn visible: toolbar.showok hoverimage: "gray.png" text: qsTr("Cancel")//取消 fontcolor:"#929292" fontsize: 13 width: 94; height: 29 onClicked: toolbar.cancelBtnClicked() } Common.Button { id: gobackBtn hoverimage: "gray.png" text: qsTr("Previous")//上一步 fontcolor:"#929292" fontsize: 13 width: 94; height: 29 onClicked: toolbar.gobackBtnClicked() } Common.Button { id: finishBtn visible: toolbar.showok hoverimage: "green.png" fontsize: 13 fontcolor:"#ffffff" text: qsTr("Apply")//应用 width: 94; height: 29 onClicked: toolbar.finishBtnClicked() } } } youker-assistant-1.0.1/man/youkersystem.1000644 001750 001750 00000000732 12312451003 020761 0ustar00saucysaucy000000 000000 .\" Hey, EMACS: -*- nroff -*- .TH YOUKER-SYSTEM 1 "19 AUG 2013" .\" Please adjust this date whenever revising the manpage. .SH NAME youker-system \- launch backends .SH SYNOPSIS .B youker-system .SH DESCRIPTION .B youker-system It is used to launch backends. Need to use root privilige. .PP .SH SEE ALSO .BR youker-system (1), .br .SH AUTHOR youker-system was written by Kobe . .PP This manual page was written by shijing . youker-assistant-1.0.1/qml/img/zh_CN/login-hover.png000644 001750 001750 00000043413 12312451003 022651 0ustar00saucysaucy000000 000000 PNG  IHDRCtEXtSoftwareAdobe ImageReadyqe<FIDATxڴSMKTQ~|\AgHщ$(!k$`MѢEjPhMA A\)Aiv:Z)hMy̙{UL/<}se4rC#k46XMhcQNbQdp2m |@4:XՕ>pЃ.2}X>Xf~= QvLh8WǾ')p53RCQwa,9 IC(EP>YK$>f#x-/ dTl.ɕТ<[W0C?T+%$ I|=6(J성RIba;W:#Tc_wKћ#]=6JA2I]iAvwm~!`<{E2y# d {i( %b.WLN+6~NkȼL%0v;xE&o'iуq֥xkh!'-Fo~hZjbDEiD1xJA`X(B)oDTTPU(M &yyo7hݝ};of3C]IvkNa* \Pߧ82t񹻾Cng:@/GCYfSZٸ,-8?Q7_8^77L\&XAI&De==dSROBTJ)}өmM7Nv;{ը|8{}.4ޯMUlIY_j]Tksu3ة\øXS3>y͋0=g0ժ(a'CiIl6Zvl0P]NGC1wBO<8'Ckq4fICA@?t&a$k0XKיH%!v!0xK L$K\by1v-c3x$ȅ58FYlT'2_q<ЯyOv+$Iel)x؊+k+7M:S`d8R5 샠uƶڲF ڶEYoUvvnݥt‚4WhD"X$Ј&M&c4>bPRP^#GJiK[vvW̎ydvvf=gιr?oNڭ9,wf5F]=Yj̴7+)gt[˾%X=Z7ᵆEtpr]7-8V2ӣTE*SQEX,``󴺕mvh.Qu IQϡBUDjU4vS_2^u>#TT \ !NpcQ A 0bB1&~i*8ỤDfɰ:BL@ʾVflŠNz ḁ[ 6%6e!Dȶc=x"xCdN(M"%S\Qǟ\;:V14$=-!E0M c%3q@I'.MݮeYX@x&Si.96b !L&f O guDpbzg,-7o8庹e8G0̶rbd­ATp^,GC湋qgEOH3# a %1+lF9Ph|nN0Bph)̩:t;oNw⍇X%|G%D^=ڂeN~^EL W53F=È_[ ˋ1mX:ц99˷8tnq"MXG [d0c >PX5111Eg,],lɈг ܘJh'#[dmQNX(booN.aIjrD2:*`1֯雽F*NHey|e߀ j+ܘW l em>?&(YoQ^x1]sMW ŏ3]ҸKds #H4RlsbE.0q֬,<%]G77v|X5<=MeB& &~3xkƮwRvOLQO DCM([y!5c~y>f}Cp9ەnϞT0KrƑ-'AfߣDaB ,tIYbwj=2ZBfT$18"dkp\*Obr c!mO!J %Ai@n)H1|Hܔ#AI^ou˦AxY?z2֔9vs&8q]ղ2ZRDsJ*n*"X>h0gM"P}lŸ.kmMԮ Crv--"}i="֭;^58c?gJW^+W_zxf̂L![Nv6nH<?sj8b/'=؟t;3g tbʖ7|' aDt[ilT={{ k(PeA4@Eh!ڤ@MT?(.j(U$jBhPd!Jxf<{ܷ`uIH{s߻}K;/[]( ,_:pYu's:]W㙡דG>Hei2=%/F@|.+fԽ8-*;tF;K~7Ӿ@_QZS^XUfG^ȒV2SN .`q4J@8pR~i-e?в_i7=q <`ӌsY|ؒ l[ ŴSXl^zo_I|]}gjPvrnj?\גdNeB0=coWeZV7ZjkS# ;Ȑmfcf`y8?ɲiőqBDq8kS2ʺϙABi' @EP,m'wpyWO5r|Sޔ,ĄP N"d_Ր eS:9 ~TF}`6ΊnG*9H.c17CǨ`F8WG(jK PATl.@w"%C~3͞I﹏. TLj8HږQAm"i!(Ę$u:@&t((̺ =N{մiȇv/ mbNᷤcwu^h&p(pIL03,# ,=W² waKte5qu*{&s[1Wk'ڟ]exX`yiquGڇQ`$2˾E,Ȝb~BSU,m Hsu aX0N]Oxw\Mnm8ۇD6/lZB]}l7~9)bYY[d#ezY2RFFWѰ }aȨX(CG5w"%\8q/p%P:@!Htѷ/>{4>Q[Q%(n&3tj?Vԗp˟tH{\xp+vb!p )qߺI2\h!Nv'ּrBr3]_9օeaG}yCBur]I3X77jw&ڦjNz ԗa2ǎ%nSp Ek$mi1u5.qo"FW ӻm)v4·cl ݝp.,G< ,;whZW[*VUŬYMi[ U[9VVJՅS ޞx92ߜ @~fD9< CMJ٭24[?/:+M/6_ʆR,K4_)o5 w,vHWD0c c9c }PU^Gv$upwD3bŨt6*# ( v%,9ӆDPDVNmeuЃ$q'\~VێhU:t ;L F)p; 18M.iIu(>Svo|=<_T-Wo4M3+poTl{.uf=TpixI &U}7a9C}0aׁWdڶG*NΦP-G0[lImX lG‚8>MhѡbZCMfb(v{aJbr๦/1 t,0LHas&lRl[Z"ƚt0Y2Bk7 a-0cjn{E[YQH>[eF[č_K)c"n1Df, Q qɝsc#C ͊&D<M\ɪݑOn-0SNy!Y4"&e29Rnt=0c3Gp|M3 OAnjv!5:%?#o `?2:u/xF!rwD=b|$Oo_tѦsS[ /|խ:Tl˂'aYw<aZGΕWE Wׄ|D&y~*(_ jE("7QrXbóۛ~Q$Fڍyui%924NeZwq޹?,Rv wl (۶[1)cQM@-i$6kX4,}U0ؽo}k뾝kw/q厃5as#Ms[<ˑf2J#rP7.ґxk_^u(\ow ʧbP\A)7! 10/^ ]Mq+ď\א .BfkhF6Uz<>8i.%c;n'QٴLڪܓEBT]c*~sM2>6RNeO)r<Eد)+k%ݞ5z .q[x܈&%.pB.ǩDr! eBQnYP]J`e0AKHi;10 3g8ŋ $RsgaKS LS) U$ jexZ'n^F-1s5O˅iKh%\9*ҔQ"8"QsuT9Ys#Ma(BD3(^KáQ(!|rJfHSqmyJ"Ai'sk^gnl˃ f el0ky2]@#L5F& ^=6![o1g֋ G99­ Vf׿5hb =gTm/Ax>uٺC3S-Fq-%o3@]3HAMKDȼ,L5xg*[Gٴ%$mD'K:gS`)B1*Fg)2lD< t,p' ( s`6..'& t h/נ!BE;AP=4!E^ `2vqf"Ņ?{lCIɬ06LX޸8kځY<}Iۋ'Ҹ`*Z}ihsdz}|ġ~էuʁpf$JD?m'\WqQb&ܴ峜!2&憆0w'/Yy:-]{CBp$*gg/θفc8v6[Nf}S 3|*;nfpҋt $o:&f&``V˘MfIĞMXĎ, !(BdkjΣ^B؁94@Lo)Y6=c3}D?OUl0<%F0T<aL@CaBy*/=c늝kj2SMd^8Ҁힻta:LERhBeEBG=WٙJhcz1tsi sE[|+ꉃgPL(L',U{#oZeH䢀~ C5~R#뛷43a 2h ўQ&;CQF!SO'eo>wg;-:{9BR#9Ft./u 4-\ \g`$siN1j#䞎bT>8xuP"wյrR6Lb'md,G/G,l扝QB6!EAө[}aEc=X3ߑ&C}&/-/nZ **aj!IE~)T .,kotZz܊3U!YBXPp#Z Tٜk}G]xzs L5aY֠*sVf$RF09= T4i]o xS7P{r_{m'n'B'.Ac࿆DUY N綯檫p 'J++g;ڪB[]BדtgkQ Eg47-tr-IcP"DS%`yiH~8bEQէ w`q#<(&Y #x4h/ӹt"C#X,`q {A?KJqBbmhGB"9$58zjO13I~L(sK˃K#ȁP£/w?#pQ=w֡AI D,⎎jFKxZݼq2B6J(. @-Q;Iomm(+C ơiw^WMz'6b͏xcl6 -^ /r6|p%Me0'BSm}tI!rguM=he1kԄ]wܳswvh#.WLn@ W5T RCf/?gzuEEqE[Ku_kx t/ h4'{ycu | _se1ThkѾ '*\5H_g fW_P]}0OAYZ#081 (~ïNCQ*ϫ’Dr47gB"q*J4ZRA,* .pKy܏髱ɇ_)U:>~G*r"Pk%CQHAK=‚PՑd q_ee!Yp%iMR}RJP-\NsTfX Q.qhQ ÷ħ=bo[1|8<~SO=7~=ůWi"nƼbӄujSRH*aNNMuCSB/tt%bd/JkN~!=3%&Jw*!v:,KΝ融eЌ==[4t\|=vwHǗ½Eᖥ( \\bVbVx06{k{ܙ+0p0_X /$1L({IwE4ɶ:(rסƒtMFd~g lta;͜!;@Rm+q͍}r6ThJRu|z1OR9ljcz}VxM m\#Y+S:Lɉ) O34(eHӷfqu۹gLl-xA \>JD]+"v];H'Ȋ_É`elZO~Q4Wv1QăҼiÉVG3F5Fo#_٩ǦYb#@r!Z.ipsD.e/N~ƱVtFp,qHkZ9cYj*υ 9,7 s1'8M6aa 5<#Ǯ3~`[3cO_.xK`R\XQqɘOtb"ex>x,PAS3)(S@֋^V{g~%݋V/VBd >2n-}m %˷SEw:c]ч~[ ؇LquJ #$ߣo Jb^}oFɷ㽯H Hy!{Q- L2*b۶+*> $! 0-ԪSڮUZZB]]Vlq@m27㝧}9Ŷzu}>s/l~Vzn=yzMH1yD$JK=&Akt$Cb\͵?|$F=~N.M>0 Nɧ咜ЇBx1͵S1i5౤׷޸EkEQ]P!9^fZ9ݧ=˽SY!b\s 6^EՎ.O}xEf]^ a1 (PKfHМ*2EXܺ+9<:2v  %^/c\4jo+E)l eFE9&{Cj4%ObߝSyS0kl2R>kb[_~W˸@G53A'3K:#!$-Fdf!MT7E {y= H2}'=5* QTwcL̽ k|J3ziwcv>mw&YY85tބggXFbߊ3E;+{^< '\MncdÔax̊w =ř+Pu=dKe06k 9iΧQz;SLs';7lp*$6_W>A,|EqdcifF=7[䂾G{/w ؊Ԙ 7Z,{`$Q݄zp.`zĊ0m&:@'؆6a շʙ UpTq]e{2q 7ܻ/D(/b$`J]wT j*1H*K6;^#PϞn5g2d99:B*!>5U۟/i*]C-胨-~ N%.%X}ghOZ_QCY >) vr`PO(%*ŀR0(5 YK1^`9;点4w7_*3uv,rm{12- ./7 iGf]C] ; H$V]} LIt|3pxxIC24]>d&h4Tn/C >H , |5 2W vL"4xJ."Brjaʀ;/<+F5bLB'v?Ua̒TJL 2 C1 [=#èV>M%.O d' 0KU8e bXaz Y5mtjA>(2WݽixHFrH%_{y7e+j@NQir^r(=,4I&7 + {{Od`d< Ad"QJ. BQ=aHLA{"DX,JFg%A@@٪ ^QvߙmڎBq̂|,-ngz ͎i@;i8l讇p߳b58ןC냎*xےB[8TVPd&dyU,0yQ0 ,/5 h͸>o;X{ JWm@rT >:h_ „m$!H:N8Rټ5C}cͻ:Y9MR$EP$3y Y!po8^?0DɫhoF`x7@###M+@ @@M4L `P,ܨ,4TzCͧ#S!ɱH%Ѷ pH(aǡ_b+- RϨODnFiT{JǾ 8fq}rahk,+lgruuUi|x\X21Yغ] w=uNL)`sg`cw-|v˂zɇzD7\{@%)B",/}&Fơ9({NO[3O/{D? z8G}ymqs5l]GFudzuϾ[`l~UW pB{+,P#7[v980@4o_7/z4C& I;&XQ)d fU3|xmy3=8GCKCjUQ%Q輩Eſ# BFc OMBp"IeØ |S%:M P [jQD.43aR-4i胛&wC8| ^gW fzY}\]Y $]v&:s!U&!JA׬D(ܷ,=z FfP`QcDQehpToVV#L)tAHԾr x'28Y&}fkW>׉gVW]Kc!HK7j^15!oF`Vxqh&'] Q(}@oICh,46[Q# 7͝,jԚQ3@>5OU

    8`<`q(p 2Ȱ6戃!$+r'+$LH,ϐΪ#I T '@-P C,H"$3ӌD4%*q/@B 1 "0RGpýK<ꪳԠ4 e @S3I#87N=tOcC24B@#(0A|x'3N;h=M7C:bpBp@? $<l# 03 b+(_6!A`.,$?$ݛ"F! mD" P(A^5a%v x0)6 E)Jq8NQ&|)P T|bD&> SZ oy\^3RAj `@Ł SH)X`SP g&F,( TP -2 mbU`*RTHUP1BH*Va%/hEpʰ Xt xa! PlC@Z6wp+\ eܠh+^q1BY , M8F eTAΐ,&XlA7F@a, r±+<#6&0CғkAZ hE':1Z֪hBqe׵F P׶5-=YhѸfA^pXed(ivZƵMi"Ѕ- [, ;C `F/t;߶ſ]p!0s<E.r]7eVq|!4`k\w_繸0p` /9{_Pc 1`/pPq~`n lBK͇х\;youker-assistant-1.0.1/qml/img/logo/Manufacturer/AOPEN.jpg000644 001750 001750 00000011651 12312451003 023650 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !AqQa"2B$4 W8XxRb#3CDՖG(  !1AQaqBU"2$4D3Tdt5'R#C%Ee6 ?>LWy3 #xLIT)N1:bLTĹ4 Of_~FH"C@[$H7.ղe&~Do 35f=8'LI?0)L܉\\bSr`2\=#EU!8 B;MnTc-yUEA"EIk3NhQC-JNLDe3 oX֯z{:VymgDkA{ @Ug U=gyލ^8|,yu^a{"xyzuu,węָ/+n>9띶Ir#XRHX^)eyN7DLE'OHܣK%bu)ԥSW'gﶅfJ3}زr#r$*ns69o>Oyj=it~LU߸T}h3[QL9{hn" #eg SCURf (;ɎTn |Vˤ}%IhohyDl 8/_+-X2@ADa('/SlVL^;.>l pQ;Tq\J̼˷6멹/A?@Ho-ڰ$J] J3qoI@"Y? $]}lؚ*l%(FHLaaK6c\Bϡ3];L Z@a !aO }9߷M>7R"}TL7r BK6oysz%e_407%|l&ЪQ:h6a!0̵ovdS)o[ۀ/\QrZ±bB'9c}ni,k-rG/j)~VSxr+qn~*[s7m[wk&o_^:;,:ۯb?3b֍ɉ}@X~7יZM+ w>[U/[޹.e"^!zVkdJWr<$KbsK+Q0l#hDb1064N'$ nq$xaB(^LixE8#v,}B]BZb~`@ԻoƓ,;VIiiMl8AZ5NO($_(alHM\l;hkxM< 8n FKrN%OT L=HK-y{\ŝ^f2P4#)̥M`sE7)HV՝3qx,1&ؑj~ֲ蛆ˉ I'RmCeV<"#]j7OULryF` 0 ʣi=O fVA(O@[58n16l?8X %;~_>8aewt7SlnYu˷F|ݜ J0V+c k}.֠Y֬跤jQ Q>9[k P*;18m@"!z[-*s0* -έmKA 0m؁#:bmKU3MqxEtRL i2 USH4Ҍ81cJZ2w-0X)q|AMcj;fFɞ\ Ydamي:mc L a#dKxt̵N62o1>yB@[xfۉՆԬHv¨K,BޡXUcZphZ{@n!qR`z*p pnR>(!+00Id9Wzo/-,'5> A-<<#l@ G)W;Ƥe^:cMsI1V7ߪ MGzZ:_PdLPp/rfUNϣUX54K0S\?w?/xo=w{/o-J6ѿ%|-*-HEBIQ>2 fH;'(Mˏ@Ŷ q/XئuK-chM,ԔMAM72]2CX(ɟJXZ5:8GQn\ ~Pu!#˟X@ SynLP#ːtwQ"|޿(youker-assistant-1.0.1/qml/img/weather/d16.gif000644 001750 001750 00000005527 12312451003 021435 0ustar00saucysaucy000000 000000 GIF89a00:;>@BABCBBDMPOcbqhbjŅw֑⡽ڲ;;;;<=<>==?@@BABCEEDFFFGJJIFC>:}ALNMONMOQPOSUUFXRA|]MZN^h[m[sXjvcbwzyri||qm҂ymǁvАtŕ؛ۢТܧS!,00$*\P!i xC >-r<\ӰGrxaC!"lF$ɲ˗0_aFJ9qg@Ν6<"%G8q &jϠ>uCGׯ:qC@&>ֹs t~ ~  `8u;$ w <8HBhaGϞ"A~(dC lO"qk'6={ 4NF4lwQ=hߞËG@z"CiYۡBÿ= "`h`2HRH&TPA9 3 /dRH ҇bb $+HP|· ldB,bA*,bd"$H$ |5p;aI"$D#0 @IoiF 0pC '!H#$@)$L" k) ܐ@r(B&0"V"R2 %T!!:9Ѐ9±`B#P% ^r %RHЂ5D`!6̐!:'A!\9U^& ?-PA WBA}B

    P|(c(Uv) 2 e@Gq(d , q[X9`k0&XGUxRc*D#(^QMdNx7D!Or\+\WX+JQ 3#Ç@QWP/QAA-)Rar,)vb Pk g8JNx0D *کNh,"jRX(C@! rh.l1 V0aC (.rAS).X Pc*n_5:nQ Q܀GiJ \b4E0] C/v VDE/ڋ`bЪ.[0as^  0AXb h*`a X@1 ]},ۋvE/ d=jd|0LZbvGlAӮMp+\3qO &cHF+K}pCpv )0c.*̀Za )cpъ15ke3 g0û P!uF ]gB >`peG,bg@(F5q  1Ѡ|,@7iZXaGNsL lPm2p'0LiP 0?a "< ldtqSh`G6GC@CjLGԐ4p xpa a c0AеFlІ4 r_g`5V_؆1lc6~͎Zp p F< j#]Am/l kC Ɛw<Ѕm={G5c / 4ǼMrc0=0/_! w7>nGG=1;youker-assistant-1.0.1/qml/img/logo/Manufacturer/A-DATA.jpg000644 001750 001750 00000012114 12312451003 023670 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     1 !AQq "2B3aRr#sbS$4Td%5& !1AQaq"B#$C2b3Tt ?M1ZM~L!Lm k݉5 "&~TuOVrdh;lCbdrQbaz`0-Ab9tp|QڙQi4@_SB`bMb)j>-Ȧ 0]CՅ(ܙ/ؙX^ -b`4p2=xWxu }p黔\M1}P+ݵbnͪ Y˥nE.%TLu cjv$.~ Aгa5$*VrLܹ@QA&9 șf ɨ.Q0M}=UlrML3Qe"I4(%!C1bDY1;N޷ L@d0L8wbʳI)= ē,%&. N\$,ޏ*e/"b\,Y{:f鄥HGǍUb%|#KF11vbǔ[S #isܪdFMGTI{#.WĦǶB,= K,cWth֍\|y+EyC h_(˿9R27 -|0^7&ku~ϼ:0M1qT+_xګ!fZL:T󕤺 pN$FIg}96q_S|`ZǏ>䊓-V]k-#P3ZW߼,L=OP859M"[ieH̲ uF))4M)2h%]%TirZ j'uz#2._erhZsi. 2N\~`cuf{8p t}Wk<5:Jijeۀ [AN])j>A:Ju=KN-q-6E:i6@0DjY^>klEeR3b"Ғ? m[]suyϹK|NWσY=ϧ?#>W cRuUj'I : l˸yHj6NՌl$/y@> }W&ΙKEq(lUcԉM-j svzTW/jv44}QIwpp/!JPQIx{tFOf[>yϧJtߡЂ4z(VʬfVʟ ,!8*0G2X/Ukl[V 23%6l}a0j엧܅uO3 qTAQu,$5uE94Ժ%-GFC4۲ΩG^Ksa+afž5]qB=i$5$py^p"31KِM6fk?oIw=llUyO.SJI4b"\\N;e]5"8hУJ=ZZNK5UVCHޟ)qs8k{֖4^Ϫ+3jL<"f.l|W06kw-zܵqWn_zT+Im++$3˦ɳreܽYR!CS1&k0[{`v*t(f5Q3twZ.]9wNZL э6F!f.U.'M)8~ޟ@&/rL_> [J P+65;Ry ~&4J/M}\}vw>x ꚦZz iA1aCTQmx@~@W,Rk4ηseO)1b];փ1z`Gb ƂZiQFo$GxD26`YPDzlY'eըuMˉjΟV"@WL71UFhXM$]1íKt5g5/l#5X<k9<7/h;-J1-lQ`XGsCB%4f)؇g1IA2L^e4:JDw0!vOxK}jG͔jwV;E7 /`:g.~ lկr,"iAXabbqx)qIobzIO4rj[9ndAdʢJ`L%9A iek.e7w{T/ GP$CQq=c#~O>&$$~fb`)ʮ-QRB=+yN 8h p'92bܺޱ Aii4icot@A)X*6O0}gX|Z`F.$cޘ3Z%y܋9WPdH%_2OS.M fG~m94(ˤ/*_͑l\艦LFYHhK7k#(-$#v À?ű1dv=գ!G+$㛐; Ϝ|?Iy(Ȟh iTA&9D~p~~cl_*aßս0t\=&rka chL^IE0MG݅5`# zz%Ab#^‹ lL ˠ{ŽȟwĽ7rI/*B׻kLQanE0M}=)F~w؆׼0aoF["r2'1/Mܿyouker-assistant-1.0.1/qml/img/logo/Manufacturer/EXCELSTOR.jpg000644 001750 001750 00000045321 12312451003 024357 0ustar00saucysaucy000000 000000 JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2011:12:02 10:26:26]F&(.hHHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IODONއMޏshe{ vx#t̫zUm\ǵZ#]utRM(ycQfEU-sq֍)Hs7ELS~#mź̈́6朊;~~.eQtbjZ ]Wcl˵>tNOȭ[]c6[9]b0Mӌ籮k⬊-guͫKgEӤ2JӠ[5=fNOAƳhqu;kfʚ]hG}ƽ+5Vzl^n]*I{\qABl{eE^3ԉ{^H8lg{]iaW>tNOȭ[]c6[9]b0Mӌ籮k⬊-guͫKgEӤ2JӠ[5=fNOAƳhqu;kfʚ]hG}ƽ+5Vzl^n]*I{\qABl{eE^3ԉ{^H8lg{]iaW 1 93 70 1 72/1 72/1 2 2011-12-02T10:26:26+08:00 2011-12-02T10:26:26+08:00 2011-12-02T10:26:26+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:cf644b2a-1c8c-11e1-ae7e-db667b27342f image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~Բ uBc ( oz*S֚M47:}9׽uZmZ+/nuDxu~Nl.rw&qDc'ȦJn Ey(NleandQP++9 i] +B|@?"k?;Q7- aveV+tb0/ệP,MMW Eqw Doxѕi:X(Ej^ܬk>aBx|@bm|nz~QlNߘްٹܽjm}2mԒÏj)઩Oxm;/f4\ j50QZduo۞/n3+Rx<|^12ޟrAH }P˪Νۗ|gZq.ur=br|+ƕ!5*-g|wϻm}-ۼ2D%MEG{sͣm$3nЍ󾻏7ۻϧo쭫iu?~}DcPlviS=D O%5e?HBM c]+a'16SS 8FVr-pTmk9:l#^?K$]>X8ˣVr#ҺqW%7`m^˱Mp7`mmfj)^Fo%,pʔX9$+oj-濺JN0*@UɥI#uIg%ƈXq~@*`} }Wٕ&hTj0Qlt+`6hR=S)23~ܯ+KenE%3PsVH#F $7{E4 d,[{<.lO_5c^'l^R0_m-]!')ű#* QOkk^N;WQhÚS;/q^jضq}PxP5=͛vǎy݉л#nّb${ٰ\vG)ڝ9v[*aj7<)iH;w윋q70acVHբ B*iGD{򽥒 )PNAJSye}>_@}ożV?oOxi]NNgϬ~J}}+ٯ)>ۻwwB]{ 7ioՎlDeqcpPmMGM,)Pb$5L\*~$qoG)1č&D5n>Xܷ`S m6]ɫ> i"~|mKoT򝫂_o͵dlnݛcjmU^95 }>^Le5 4Ž|K{2_7Qf-KCG4CQ $_lYxmUg#B4)ANπ'77T¯Uڏ{}옷\mMv.Kj՛)u01uRYzkfxm6CY `d3)s]Y" KJf}Pjk1-NM=GNzK“RR:IjvG6qC@k.j{ϫ{'~G&I.ࡇzo῰ݽۘTlcpSdc3bB zX᭑ܯhl,I-gT5j rɥ* t˗vwϺLZʅ&P"SꋿƦ'67Ŏ鍧va$Ϋwa$؝mz'<'%}:]F]WP:N^s\mo./YX-9 ,¢2I:EGQ<}6n'+UIJ>($Sý{l(6퍡mnt6Z~=7'U  )55(5]ls^K{dgӈ^yj@rjr3.F [&<0z(_)o9B쯘!vWgq]nޙ^vm>s %DY)W3M(C}?eg6QĆFF& - 8U5 gvۺcpCJƎ2h3Ǣ[n;+Fn={~efrmL&'uݼ'C%Jcq42VGP\W$ͳmװmVpSOBn`6.p?t),Tʔxi)ZFر$fB\Iw;NgbY*MxytDX@`~^߲mw{]hI>Su$.|Sas᫦1X{S\%ԐxUVCQ96[c!;jM`qǧK3 lڬUHyS W#5VRˬVְ}ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~youker-assistant-1.0.1/qml/img/logo/Manufacturer/ASINT.jpg000644 001750 001750 00000042005 12312451003 023661 0ustar00saucysaucy000000 000000 JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2011:12:21 09:59:00]F&(.RHHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOTY_Y=ƍϵͳ4@$7*&cg9=I*=sAkϨ{nեmQS {CZl/q.sx>g2LgQ'tNIhgVO*8#/I#Q] #Q^_~1ŧVHk>Ncl?VS0s}'NO{Z,.d{6Viĉt5Qt= E>}X 0kƀ\ NJQgO~]YuuKCkQqrkū*cldaseExxu~+޵t$r(~NUľǐց%W#W^FC*} Cn.;X~i%?U_>c5>Mn.tUF7hΑ_pv0;Gݺߠߡ z-yw<.=WDΧΫw2[knl?}iϫ=S'5S q`Zݯ_c|}.8YG7icBR Zd:>$Kx+ %jkyd$6m1HMf8yt"s6QY[%jYkD4<I?Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ @Photoshop 3.08BIM%8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIMGF] AtherosQSa]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM n]FLRJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOTY_Y=ƍϵͳ4@$7*&cg9=I*=sAkϨ{nեmQS {CZl/q.sx>g2LgQ'tNIhgVO*8#/I#Q] #Q^_~1ŧVHk>Ncl?VS0s}'NO{Z,.d{6Viĉt5Qt= E>}X 0kƀ\ NJQgO~]YuuKCkQqrkū*cldaseExxu~+޵t$r(~NUľǐց%W#W^FC*} Cn.;X~i%?U_>c5>Mn.tUF7hΑ_pv0;Gݺߠߡ z-yw<.=WDΧΫw2[knl?}iϫ=S'5S q`Zݯ_c|}.8YG7icBR Zd:>$Kx+ %jkyd$6m1HMf8yt"s6QY[%jYkD4<I?Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2011-12-21T09:59:00+08:00 2011-12-21T09:59:00+08:00 2011-12-21T09:59:00+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:d94422a9-2b73-11e1-9c1d-e060394baa3b image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثWN*UߙD|Yգ}v7')*8x+-]y/Y|#d5{;K;i.K{hTwfj2 4fVnY Dd#C^<;ѺƿCh$ª՘I"Ƞ4 2vb]v*N*ſ3lt!~DW=={\)QJ~.#6y> q$z:.=ռ̶$S,U80a9e?Flx$EjVi[rn(eއ!O8X'!H46]چsf  ҬaF&F4\кOk6ޕ[E*W3"N*Ng -̋M-? .j2~7E8_'z>jv/.=֖ & KCn@FFC œIwG$xC$t:i嗛#tI/YPx]G j9-d֜ HpI'-jֿ3/DW̗m#ͦj;#8ErxG&:hLDk!7r7YU<ͩb$(dIyIUV9ggR1H= $h^eb/ !+Py(zGrI3ᅳ^kɗyV֮Hd!gc,x%m58yvk;iV, y'}35zT 8_~B5Դmn!Rus z#a89~fTyMӗ^DER&Y^de=6ɊBWWr[?_) wiK/5Ea 4N _$!8O:QyKvY]l}Y##4W͘MPLMqz /?-<}YMmdgcL8aP):O 'ɘGy?imn70ߤ#I@ E)GVc .D sg~ae?tKx㼵dmo.a 'eLEtzC˩/4tB) +oo2#F_c`D'77dK744M„aP֖r#$d&=m"S֯ƞJ6t!*Bipq rV Q2*6F!T[ƛ`z)O%KAuzTM) wzzAGT)JTqk*AdRN*UثWb]v*UثWN*UثWb]v*UثWyouker-assistant-1.0.1/backends/youker-assistant-daemon/data/beautify/sound-theme/README000644 001750 001750 00000000071 12312451003 031526 0ustar00saucysaucy000000 000000 This directory is used to back up the system sound theme youker-assistant-1.0.1/src/pixmap.qrc000644 001750 001750 00000003310 12312451003 020130 0ustar00saucysaucy000000 000000 image/dialog-bg.png image/message.png image/youker-assistant.png image/closeBtn.png image/closeBtn-hover.png image/minBtn.png image/minBtn-hover.png image/dialog-feature.png image/feature1.png image/feature2.png image/feature3.png image/icon.png image/ok.png image/quit.png image/accelerate-bg.png image/accelerate-bg0.png image/ok-hover.png image/quit-hover.png image/memory.png image/alert.png image/progress-bg.png image/feature.png image/font-bg.png image/upshiftEN.png image/upshiftEN-hover.png image/upshiftEN-press.png image/upshiftZH.png image/upshiftZH-hover.png image/upshiftZH-press.png image/login-dialog.png image/clothes.png image/next-en.png image/next-zh.png image/pre-en.png image/pre-zh.png image/0_bg.png image/0.png translation/youker-assistant_zh_CN.qm youker-assistant-1.0.1/qml/img/logo/Manufacturer/QIMONDA.jpg000644 001750 001750 00000014060 12312451003 024073 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]      !1AQa֗q"2$4t%5uG(HXBTdeRDE&vw8x  !1AQ"2BTaqS4R%Ub3s$5#Crc ?&FBcxoDuaě̅IL8xurB;!̾;>Ct4]P0E C1K< ~ `joFwJ<3n>L=\HkvBG?Y=k.dtYut7ݡOۃM {CYS:X,i6HO$b'Y? jdy5d7ݱw _t jީdYu\mۑ7pI`{GYw:=`!#j@=v_t=k$?;#夠W@=fXu?;#˯@?'y#;$4AdtPIojz'GgڼC:H0kE 3O=b#^dPHzGp|W܏j'O~vGIGv#no.0=vПϤ.:H+0{ۇPIȐmBMa3DA4k>vwi)(*_CW3,N *bI:oȱ2.&+5;p5UBd&\TՊCqgQ%%/8HI$)N9BiYgY&`<Ӛ/Z} RR h[UQ\ uOT:뉗r\ P6llkl`~g4+?MX' .CyAȧ%l= p˪lפn҄ݧaudH/u6Eu-5SR*we+)F:hMȲ.YwL!?‘#Ճ=_;d%1\Ut1hr܅j\Jrp296P(TeY@f |]vO/U3@H gpeF\ vJ4ݴzUR=L"(Nn"|s]v+LILWrMe1p :XͻSz3;+O %`qEąuuP&^C.kr-yWM36\urZJk#9ɯK85|ze"$0 ;4h*ƲlivZ  qC?kkƽ* qOZ#f7&.r0GgoGOCw+=-]+ 2_S(HT/YUQ XÓ\eS*z%w*ؠTThNU%eE4x+Dd Ex5<3tMSt2.w:D8@B Z.h.qF ֢EQu`ٲ%i(P8Lו,Fjءz"Ȯsӄ9|YDd2R:+̎R:A&IH9's:rvpPM򙮓Lr56+6~%_#p$~ٕK g9А0@P[beYm*kv/~:I]t Ua~zte%7aY 3 K8M'JYfֺ&߲j?݉(8P45J4g;Xs|[uC\=[!*.#NZKr&5Xs ]Ncwi=5T  L" ;P׻ yɧ2*iWθ1@rXMS̨6Veg -A`=' 3KεIa??ǦKʲ 7>LJʙɷa;Or;t.ק(싋ZTE@~3kYp3?K$Ee94ydZIf5ץD^Qş%'MOs] ȝu;7`3@f "4ܰ6~(¨X-@Qty=q°H;\' }LEmHClCwSgnDjxvFVefRh rPd)gH}ީ4/O} Wo2q߇O;cUOR/(NgOQ7u~1۪8 eGx6O; 2ئv335e}-yϝGX.l WQ؃Fcl80dׯ= Ѷ-r4;ʣౘ"n\>SN)9l[w>_BW|l"N a'yoD/wc>[=UE-++Đ*U‰ʄxqіQ%e$6ƓT.}xp+s"($n-[uG|E]EWsV8N#)S<2$HE)ͦn8&ShKd.}J)#'rMH@)vc v?,tXyE1L _XE ;x&9{ ;x&9{ ;x&9{ ;x&9{ ;x&9{,Od?q8b$- }T!?ʭ2yJ@#?u~^?~9KŅ%O>۹[Ü5a8 NΐxG8m_~'EH`~?2j7j߆i&#O+dVr>G;~9zDߤ`ᧅRG9RAuvl~˧uԂѿT! =. ׬MF .mrBaS>s uioÕ B,}.#:S&~0iӧrѿTQ~γT< 9>v>TRgjm^g`=v:GZC=Bd*OmʜMMяɿ΄0$؈É7 8W4~]2^7zv1;=]]lSI$s-S+30o,n^Բ컳s[7D~{r]Ӷ̗ck٫!+-6̐O/1ku-xh,s}*s2h$x/zs'q:6?Qv5vmc1X^XNݿg\/]LZSn. $@n3oEjًԽ!]NJَ ߷j/>3lq/;jcTg~ʸخTbd9ޯN ]Mf+2Z=ѻ#=$>@Z*õDzezgW>Ùwu'Q?bo֓Zִ55'/ҺH2f_GӹY)TZs1Ծ?SY,:5G6goPeHүOI9O :QV2qCm8k(v2FE=NWs }-{.egV̯G:U$T波nFGÝk[K2clRgMnWw%#?1ڿenI%?B'CϿGhq[PZRBQ`nqI5㴓Z֍p:IF1RI$TI%)$IJI$STʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ Photoshop 3.08BIM8BIM%F &Vڰw8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM 8BIM@@8BIM8BIMCF]sunplus]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FLJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOTl\ .cUhߋ^='%q>ikS.T[9=koǯ&3x"~fc5g{j.sco"`DۦJgvCX:sZɟчԬOgڜIA'IJIVCc9K ?GCl>~]2^7zv1;=]]lSI$s-S+30o,n^Բ컳s[7D~{r]Ӷ̗ck٫!+-6̐O/1ku-xh,s}*s2h$x/zs'q:6?Qv5vmc1X^XNݿg\/]LZSn. $@n3oEjًԽ!]NJَ ߷j/>3lq/;jcTg~ʸخTbd9ޯN ]Mf+2Z=ѻ#=$>@Z*õDzezgW>Ùwu'Q?bo֓Zִ55'/ҺH2f_GӹY)TZs1Ծ?SY,:5G6goPeHүOI9O :QV2qCm8k(v2FE=NWs }-{.egV̯G:U$T波nFGÝk[K2clRgMnWw%#?1ڿenI%?B'CϿGhq[PZRBQ`nqI5㴓Z֍p:IF1RI$TI%)$IJI$STʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIM2http://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-01-05T11:13:11+08:00 2012-01-05T11:13:11+08:00 2012-01-05T11:13:11+08:00 Adobe Photoshop CS Windows uuid:f29b9da8-2b78-11e1-9c1d-e060394baa3b adobe:docid:photoshop:f29b9da7-2b78-11e1-9c1d-e060394baa3b adobe:docid:photoshop:14e7de78-374b-11e1-96b9-84cebc0057bb image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثWN*UثWb]v*UثWιi%%wvT^*͚8CmWm7JOmPvv"8NcG6illSj^sտ uF;+L@HCGpxRN_~<_>~= FXGԢ [ Ž~ qQ2?D3kcyrP5]+V۽̏? 22+Il }L8mæy癬T(Q8;+J8?gG_E%@[g53Xм?P@䙍XX?dXlzlģwXc/Y?Iy(88$h(l2kWb]I;qV=}YFݚ"TYKs&3^RәN՚_Sz1<,dp̆b:? EQE  lIb(lVbԝ*OAyX>} f x0`"U/?+^jqie1@-`ac cVUdI؃ӟp2'?bXe g'NaHX|Y~I0|>*8ܗޣY75ոf~2A'/<*nn 5v^7Uc~}~0E5$Z)/}@b^!N 3C'+|׽go#u8 2kO;IENDB`youker-assistant-1.0.1/src/quibo.h000644 001750 001750 00000002166 12312451003 017423 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef QUIBO_H #define QUIBO_H #include #include #include #include #include namespace Ui { class QUIBO; } class QUIBO : public QWidget { Q_OBJECT public: explicit QUIBO(QWidget *parent = 0); ~QUIBO(); void myshow(); private: Ui::QUIBO *ui; int cindex; QStringList *colors; void mouseReleaseEvent(QMouseEvent *me); void changeColor(); }; #endif // QUIBO_H youker-assistant-1.0.1/qml/img/logo/Manufacturer/NETGEAR.jpg000644 001750 001750 00000010542 12312451003 024071 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1! AQq"2B$5 aR#3% 1!AQaq2B"R$b5#346 ?L.8? 5 ϻA3'$ ovJAsIO$Ah\$QP 19$X(\LHT |-&XZ\QH&}%D 19&L{R vbJy$EJϼ1"i8 2ErbGR0fi2**BA3*&L4g݄Ґ\÷S$w0*W.}T3H NiƉ + =?o5_/oKp֤RE8*^:W9<̥q<@2";ɼɼl\[KSm$RzcV,L_2R eX:(x}{nUuFQJLeTʈ$XBƕh` nߍ=.Zݵv4N1|^DD0f#ΐМ+z|k/&VYxTޫdrM%Iy3+&hEpgyl˥C50JSXqE,oR,fYC^,RǏo 2"' CKz+@S Gb~aMd _ i1,4 ףQ yR!qTo6u|ݦDF$. (QQUރA֐ GMp֨ƣ" vȼɱЖ /NzSշ^LϒNIi?܌qޭ{íۍIJy"Zz ?n涟 yycE&Le% qBdVbz<\ |6TI\Rڜ_'EJWɾ]rUF4ʨ)#"dvWp̈OC a.ٮi#C޻ ,ΟKNd|*v37ƷXylNƤ.;vNeۚF!fHà:;y, xi@V=s5'*tG%2C㴘cǷGk\\32R9V]c~R޹rQh]Z:R>uw=H.Ah> UiyL 4#f,U(S6ͻCnV3 81*j9=1^gi,8ט*u} PΠt+eLW *=| &Y}l+ֶ䄞\[}+klj'Cŏ7GN(q;;+]^}kfQۏ{MHPGc2i,BSE1ʛ, cLa(6y7Z|@:1N r_X?CMP-՚ZR.].9V { `sjk_qC&+{&{/7(ܷAo1BɖkB[w[U\д޶TuChh0S{:/PU4(Eµ~fpMp >Y 7Ɔu5BvIwoz[^8J\H\*2hV={ (K\ H+pdžl:?cm-Od7D{xִ-_z돡b^R\Tt b9UWk(T*ݎsŽA/ jƹaë>U 4y~a'.}6VJߩnԕzZhaMLbSJND@[QL%e/6[&w(K,K=(@.[HLl=\\afewm|&W ʤV_S6 v>f]D :r.3کgCosmϷka:Ҳ2&RpDQ0r ^ZEUKcfk@sh;ie(M -.v$Yr"V`D aCE/ۃN~if}v.$r%Mu)83^ ܗkI'DvC-FWb4o 1nlߙ6;n0GH| ݄WP^M"d9/͗Yܺ hzv鵢w{{VJa2RCU,}p,!bTYaUXuKoK#5~_.g ^o- |fw|N^/6J공T}Lӽ!ݨ$KEEe$)v3f|frU⌂3UGɌ3FgwNj$j"jaSnu58~|= !Z k}X'(-R%zD;Ra#؟_LV@-FBZOMDP  p}6n#9jKoBԱ\4җ/,ArjmSp}w~"NW7垈Gt ^%pn88wl.,|,nLX$>i~H&}I);{1%Ċ*'4Dː|JŤ@? 5 ϻA3'$ ovJAsIO$Ah\$QP 19$X(\LHT |youker-assistant-1.0.1/qml/img/logo/Manufacturer/HOMKEY.jpg000644 001750 001750 00000011157 12312451003 024003 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     1!$ AqU QB4T%a2Dt#5&6V"b3cF) !1AQaq4B$D%52&6E"Td ?R,qGOSb:rJ_ˑJb; }Z]yșrdzs(0ʘs.U8nL:.GC=iftOo/ 0a;eI51@l0Փiـ:"G7[N="RЏe%dp}V`H<lwÅ eáf 0x̴nU3l,3vla3`dbl4VF1嗦WسGfTJ' qU%|#g+s͙TW~@ʦ+)Yl.sbo+` f^ެJ2v9;ג~%8ALV`,캘̺8ՎTRˀ 笰| VKW12fy0 ȶ5 d(uc5XоbVpCh!Y`g0U|ɚek$(ɽUA*ㅇ(TC5qjְgc9t$+!|.O+юC *TDImz0BS0Yg"!sK gh€c汗ہϿKs ME}Oe JuZدCݢs6tD4IU$n}T0#!8GsvQ}-sHbN<8lYD-M}4eJ<:Gk򓲡X0PvvjL'[f-̞SeGZ jwNgPqh/[oT(R,[1:u*Zj=殲?@6ޚN+ɬ.xܝzQtc†pԬ \[ yj],˛Y;ܜ`Lo[ u}c*}& SyF^ `!tCQ=̦ZɅASJG%aFr8!.@OGO,! y9BlZ|h*ǩTM?ޅ nwCMZLK7Φ0ض*K[HLM <5gA˃AB\X=HjAp~V Y:n# F:m#Z?'T[&ʍ!(4 ASd Ä~vQAyى`%1!a',OL,iӓ:g0rTdkOܦLO2 &A(OW3\{apzkmpVLHγzIb 6l0͝JNƬ(}~_y^|$Yzm`D >,*]d;7oS[Pu=aGjN ?ӱ|ISNy0>Na+%\jeӸyhO1D, F,mx@p;MH+n{4TIZA1sr)]=gOH ߚÕu;,!`j;:i[zG-0\["aaoE9l0| C?Ǚblr^vW^-v#*Z1*l/ ƌlfK2]b7i)Ycx"yr&0idR&V.EŒrC\v|yR9Ft򝙳fDFu/W{쎤)NXokX:* )BF86%.f3x ́ʠ0AWf lC=jS` ar'+nKӔS F_ jxDYG˔,0<jK+ẍ́v_~5~oR6[l:3=E0ΏJ(!c O*Eb`(z'`NJ^<Ŝ9Fe u [ഹBEceɯ^kmZks-L!H_NVS.Q"Mapagtҕ'i'r_!u:h&;K."dcأ=&q u(Cd Ũ5ѽZ,1g<ʻ4RNQQS"ȴY azZ s`PY4 /yH f\04DZ,:oÅ9QI]67?tyw ״ݙI6'ak)2VMZ ;1`A"0frĴGq+éϯY^0LW=a!qV$MxqH14&fʃ\F//ЪCnqY쎄S0(] g!^K`'Tcl]̕30e \G}((?|GC He+20ψ_[g+>[PÍl8Hģ ^gҸ߽iwesptf+uzR5=(FGwIv`?'.}K/mnYU,# =}{v&tX@ʍkI_j#0_<9eI!yH4]{z2/q9UPHrm8,~j<竱Hu"ڎ׹0}K Ta19c݈Yf,q7k99aKʮK<Ηɐ(]tڨU֭wUU+x5|1L8q&_pʷRˬIGOSb:rJ_ˑJb; }Z]yșrdzs(0ʘs.U8nL:.GC=i. */ #ifndef SKINGRID_H #define SKINGRID_H #include #include class SkinGrid : public QWidget { Q_OBJECT public: explicit SkinGrid(QWidget *parent = 0); ~SkinGrid(); protected: void mousePressEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); void enterEvent(QEvent *event); void leaveEvent(QEvent *event); void paintEvent(QPaintEvent *event); signals: void skinSignal(QString picName); public slots: void showSkinGrid(QString picName, QString skinName, bool flag=true); private: QLabel *skin_icon;//皮肤缩略图 QLabel *skin_title;//皮肤名字 QString picName; bool mouse_press; bool mouse_enter; }; #endif // SKINGRID_H youker-assistant-1.0.1/qml/img/toolWidget/menu_hover.png000644 001750 001750 00000001246 12312451003 023705 0ustar00saucysaucy000000 000000 PNG  IHDRNRsBIT|d pHYsttk$tEXtSoftwareMacromedia Fireworks 8hxIDATxj@_fBj[),KO= yRc_CeY(ښ=$<A _1Npp XajX+8ye;Nk4qn\Y,|o0̗h2tz WUeH?x Pޞι1o;oEQj Imk_1 I(o9o#UIH GR8‘p$#)IH GR8‘!đp$qh;UxYw$MI{\=NGw*M\=Si  ˲ YS+&VUY GR8‘p$#)IH GR8‘p$#)IH GR8‘p$#)IH GR8‘p$#)IH GR8‘p$##VV?5 sa>Xi>nߏU@nk<q|Emtgf^l t 'NKS?*ӧh+;s1JIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/GAMEN.jpg000644 001750 001750 00000007767 12312451003 023652 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1 AQB!q"$ a4#ST&A!1QBa2q"Rb ?Bۿ^?1=xjfTQߢ7!8q2FԲ7d${-*B)3R}`jVBK\YN߮S2" Qt9 QÎ7ѿh!'hROwߩd#R_D*wnwOG1wf"ád"t Q5,&EY =D{LǔX+!=&W1VS;w~cUL10!aەM/>^ st 3QKW 13Oꂅᦻ߂&MD)b_0b(˿6V,|ȥbBpGoI$D9cM`$ 3B&i{{X:z%*4oۜwWkMmn;<ꈓjSMu&H@Sʭ`@](!]#j~9Ԭ.zUӳJZVUTUCYcG: Ñqk'2"(o5qM h8e=2UH_o@4WE8T-Q]^U@/0ۙQ&+z~Lubp\߃ڕ4|>fP53Ƹ ;[ӳ!21[Rգ7UBM{X&A=XɆeMP/m-XHjz^9:K*Vd]z/6:k(a4OQ+KwztJҍ'R0R.vtDv_jh}ɳ?ω,@}P:ӿJzjWދPμ\'/G?~߹<:?jcQ8< )Uڰ$g*DذڮUg'%e57dyCfFzx_z5}{ӨpQrBsȋ$c|̃:'vIHKS jMǻ&x%6`(櫤 &sFƾ}flOmFնZ=i6n s YU"rR.*(^Otc(uEw"" l(D4!P*e$B{eҭU .V_iᧈU>9LB{vK(yƠ JW[h U<Ӣ 6հ4c)'BC˷=iMӧQb=4*vtL3|a1>vjj+ Chn")-tm ›wZ{Fn(kNx#UtB29놱C7ssj1#X-OcʎFrEjI8hӊl5W?zv"ϴ동2;*R%ƃ#|)Whq$zMb6dIbt&zqNZJ66GhY(.½ Ss3t)Q2΀nIMTa׌5/gRZV ئXwml^Vf%A =MڥlIWJC9Ԕ&\l 5BnIm\h"T&O OrM6=I1/k)# (*J !Ni<;zixc cV8%=:-E,3\ļqi\rJ7"(Vl1T%j3Xrʫ @<}_Pŭ ':k{>?#0:uM PPL磸|e5 N +IKW|dDKH}{pOAPf[Vw)B#m*2hSM2LBqZ ͽFӞg &NGUuz:{b3b#CcixjԢMYD fmwINvC@zeӲZn_=r*JxٟȦތ2nu/q0ͨ?Uh0qF(@BABCBBDMPOcbqhbjŅw֑⡽ڲ;;;;<=<>==?@@BABCEEDFFFGJJIFC>:}ALNMONMOQPOSUUFXRA|]MZN^h[m[sXjvcbwzyri||qm҂ymǁvАtŕ؛ۢТܧS!,00$*\P!i xC >-r<\ӰGrxaC!"lF$ɲ˗0_aFJ9qg@Ν6<"%G8q &jϠ>uCGׯ:qC@&>ֹs t~ ~  `8u;$ w <8HBhaGϞ"A~(dC lO"qk'6={ 4NF4lwQ=hߞËG@z"CiYۡBÿ= "`h`2HRH&TPA9 3 /dRH ҇bb $+HP|· ldB,bA*,bd"$H$ |5p;aI"$D#0 @IoiF 0pC '!H#$@)$L" k) ܐ@r(B&0"V"R2 %T!!:9Ѐ9±`B#P% ^r %RHЂ5D`!6̐!:'A!\9U^& ?-PA WBA}B

    P|(c(Uv) 2 e@Gq(d , q[X9`k0&XGUxRc*D#(^QMdNx7D!Or\+\WX+JQ 3#Ç@QWP/QAA-)Rar,)vb Pk g8JNx0D *کNh,"jRX(C@! rh.l1 V0aC (.rAS).X Pc*n_5:nQ Q܀GiJ \b4E0] C/v VDE/ڋ`bЪ.[0as^  0AXb h*`a X@1 ]},ۋvE/ d=jd|0LZbvGlAӮMp+\3qO &cHF+K}pCpv )0c.*̀Za )cpъ15ke3 g0û P!uF ]gB >`peG,bg@(F5q  1Ѡ|,@7iZXaGNsL lPm2p'0LiP 0?a "< ldtqSh`G6GC@CjLGԐ4p xpa a c0AеFlІ4 r_g`5V_؆1lc6~͎Zp p F< j#]Am/l kC Ɛw<Ѕm={G5c / 4ǼMrc0=0/_! w7>nGG=1;youker-assistant-1.0.1/AUTHORS000644 001750 001750 00000000073 12312451003 016407 0ustar00saucysaucy000000 000000 Ubuntu Kylin Team youker-assistant-1.0.1/qml/img/logo/Manufacturer/TOSHIBA.jpg000644 001750 001750 00000011562 12312451003 024100 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1! AQq2Ba"RS4FW   !1AQaq"2BR r%b34DTU ?&q_u!7A5QWAQR&T 0I~n^aJ.aK n" =hS75i4@ɯ 򨫠 )xA^ު~AuފS$PsT7CE˯0C07BJrRL4SUbHaMyTUa} oU? oE)_9*טR@R񂛡Ht`|)G)T 4mPԐj%moLO_XKVssrg(Gi 8ٰ}RpJ#- Z̯R 2F\Ӈ?gEkk??mmwEQI25نAEmGKcEt[LIߩK39Av)D[ci:;XiEQfͳs V 4diFhLvTSt7~PߌkT=B`-_3~LAXY4Q2wOs)sK`J;&DbbOލmr_0~}$.R(&<ԅZ*\DMY$(3Z5e |$~ƝmO;Ks|YܒWh)*|نTݶ>\jT]-'[É@'84G2_d$a vr?͞`ɟY]s|sBւSWq*P0v{v( |SƷLU+:+\YL'!*Tp/?Qibdq)#0:$:\RܢP9&mԕA RG%w+ z2׷X%R% +E {0(0֡AgI߿s IHy >&=t̮(=JR0 ^Hإ'8f}ߖHUNS#%1ȠSoE;pZGeI>/)n[μ~U%R`MMh@)"Cfe?'!ly'UgP'_z7%mYo Mr* aJuҐ2Mf|?hO*U Q|h|Knq&[,hQ{5G/a36,҂,JVA DA]ùu`tV;6Q@ 2[t|_lm :wAUMJX+SRJGhx7_M|=Cgs؆bGU(CHj]_svFtǒ42UN"+ʽ->)zVJ ya8z9zMV+Q"ihYbx4}ޏ8R^ @ryYVpzu}9qH9Nf R HH왱2[n=ܤ:e}w)H^q%q"6"k#zhm E <BzjZ:Ԍj)"SZ}fk6M7܌ʊ*g- G Bю3^*OQnϪ'T'AhT`Ytو;Vɷ)6g¹"X#lי#mNȒ~ZrOo7/pQV}#Lj7 avْ{l:-o&MU+k:7RZP P٥&g|*Sv6@3˜5ms*"ҘߌD*7lԝUu,&\ >S1ԝunfTj$;YR*y/d0Ȅ6 f Z>*1TjiW_u!7A5QWAQR&T 0I~n^aJ.aK n" =hS75i4@ɯ 򨫠 )xA^ު~AuފS$PsT7CE˯0C07BJrRL4SUbHaMyTUa} oU? oE)_9*טR@R񂛡Ht`|)G)T youker-assistant-1.0.1/qml/img/icons/upload.gif000644 001750 001750 00000002557 12312451003 022003 0ustar00saucysaucy000000 000000 GIF89a~Z}ߜ~߾ażjsѡaMpMޚn}<7jdZ~p[]g{ms"0])/}곘Wͼfsð{ĉʸ}fħü{sÇWœ! NETSCAPE2.0!,8P*TEX&@(  `Y  0Q #h)r5",F@%NP V%]DSǁwj bxڀ*Vd}zgS5jPױa>8P)!.PR8\0@ 0=Ĩ/1`,{Hx!B x@LLp6qB4 @ʂT-p " <8M E\Ґ \8A#J dԠP'P2<$2HБ?$( !T`E` S, `( !,  %H h!!,  i,0g*\Ȱ!6  HH!,  U eҘQK Ç0`C %` !, afM 01`!, auK bx&lc~;youker-assistant-1.0.1/qml/func/common/PageStatus.js000644 001750 001750 00000000213 12312451003 022765 0ustar00saucysaucy000000 000000 var Inactive = 0 var Activating = 1 var Active = 2 var Deactivating = 3 var foo = ".harmattan/" function bar(){ return ".harmattan/" } youker-assistant-1.0.1/qtsingleapplication/src/qtsingleapplication.cpp000644 001750 001750 00000027010 12312451003 026756 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Solutions component. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qtsingleapplication.h" #include "qtlocalpeer.h" #include /*! \class QtSingleApplication qtsingleapplication.h \brief The QtSingleApplication class provides an API to detect and communicate with running instances of an application. This class allows you to create applications where only one instance should be running at a time. I.e., if the user tries to launch another instance, the already running instance will be activated instead. Another usecase is a client-server system, where the first started instance will assume the role of server, and the later instances will act as clients of that server. By default, the full path of the executable file is used to determine whether two processes are instances of the same application. You can also provide an explicit identifier string that will be compared instead. The application should create the QtSingleApplication object early in the startup phase, and call isRunning() to find out if another instance of this application is already running. If isRunning() returns false, it means that no other instance is running, and this instance has assumed the role as the running instance. In this case, the application should continue with the initialization of the application user interface before entering the event loop with exec(), as normal. The messageReceived() signal will be emitted when the running application receives messages from another instance of the same application. When a message is received it might be helpful to the user to raise the application so that it becomes visible. To facilitate this, QtSingleApplication provides the setActivationWindow() function and the activateWindow() slot. If isRunning() returns true, another instance is already running. It may be alerted to the fact that another instance has started by using the sendMessage() function. Also data such as startup parameters (e.g. the name of the file the user wanted this new instance to open) can be passed to the running instance with this function. Then, the application should terminate (or enter client mode). If isRunning() returns true, but sendMessage() fails, that is an indication that the running instance is frozen. Here's an example that shows how to convert an existing application to use QtSingleApplication. It is very simple and does not make use of all QtSingleApplication's functionality (see the examples for that). \code // Original int main(int argc, char **argv) { QApplication app(argc, argv); MyMainWidget mmw; mmw.show(); return app.exec(); } // Single instance int main(int argc, char **argv) { QtSingleApplication app(argc, argv); if (app.isRunning()) return !app.sendMessage(someDataString); MyMainWidget mmw; app.setActivationWindow(&mmw); mmw.show(); return app.exec(); } \endcode Once this QtSingleApplication instance is destroyed (normally when the process exits or crashes), when the user next attempts to run the application this instance will not, of course, be encountered. The next instance to call isRunning() or sendMessage() will assume the role as the new running instance. For console (non-GUI) applications, QtSingleCoreApplication may be used instead of this class, to avoid the dependency on the QtGui library. \sa QtSingleCoreApplication */ void QtSingleApplication::sysInit(const QString &appId) { actWin = 0; peer = new QtLocalPeer(this, appId); connect(peer, SIGNAL(messageReceived(const QString&)), SIGNAL(messageReceived(const QString&))); } /*! Creates a QtSingleApplication object. The application identifier will be QCoreApplication::applicationFilePath(). \a argc, \a argv, and \a GUIenabled are passed on to the QAppliation constructor. If you are creating a console application (i.e. setting \a GUIenabled to false), you may consider using QtSingleCoreApplication instead. */ QtSingleApplication::QtSingleApplication(int &argc, char **argv, bool GUIenabled) : QApplication(argc, argv, GUIenabled) { sysInit(); } /*! Creates a QtSingleApplication object with the application identifier \a appId. \a argc and \a argv are passed on to the QAppliation constructor. */ QtSingleApplication::QtSingleApplication(const QString &appId, int &argc, char **argv) : QApplication(argc, argv) { sysInit(appId); } #if QT_VERSION < 0x050000 /*! Creates a QtSingleApplication object. The application identifier will be QCoreApplication::applicationFilePath(). \a argc, \a argv, and \a type are passed on to the QAppliation constructor. */ QtSingleApplication::QtSingleApplication(int &argc, char **argv, Type type) : QApplication(argc, argv, type) { sysInit(); } # if defined(Q_WS_X11) /*! Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be QCoreApplication::applicationFilePath(). \a dpy, \a visual, and \a cmap are passed on to the QApplication constructor. */ QtSingleApplication::QtSingleApplication(Display* dpy, Qt::HANDLE visual, Qt::HANDLE cmap) : QApplication(dpy, visual, cmap) { sysInit(); } /*! Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be QCoreApplication::applicationFilePath(). \a dpy, \a argc, \a argv, \a visual, and \a cmap are passed on to the QApplication constructor. */ QtSingleApplication::QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap) : QApplication(dpy, argc, argv, visual, cmap) { sysInit(); } /*! Special constructor for X11, ref. the documentation of QApplication's corresponding constructor. The application identifier will be \a appId. \a dpy, \a argc, \a argv, \a visual, and \a cmap are passed on to the QApplication constructor. */ QtSingleApplication::QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual, Qt::HANDLE cmap) : QApplication(dpy, argc, argv, visual, cmap) { sysInit(appId); } # endif // Q_WS_X11 #endif // QT_VERSION < 0x050000 /*! Returns true if another instance of this application is running; otherwise false. This function does not find instances of this application that are being run by a different user (on Windows: that are running in another session). \sa sendMessage() */ bool QtSingleApplication::isRunning() { return peer->isClient(); } /*! Tries to send the text \a message to the currently running instance. The QtSingleApplication object in the running instance will emit the messageReceived() signal when it receives the message. This function returns true if the message has been sent to, and processed by, the current instance. If there is no instance currently running, or if the running instance fails to process the message within \a timeout milliseconds, this function return false. \sa isRunning(), messageReceived() */ bool QtSingleApplication::sendMessage(const QString &message, int timeout) { return peer->sendMessage(message, timeout); } /*! Returns the application identifier. Two processes with the same identifier will be regarded as instances of the same application. */ QString QtSingleApplication::id() const { return peer->applicationId(); } /*! Sets the activation window of this application to \a aw. The activation window is the widget that will be activated by activateWindow(). This is typically the application's main window. If \a activateOnMessage is true (the default), the window will be activated automatically every time a message is received, just prior to the messageReceived() signal being emitted. \sa activateWindow(), messageReceived() */ void QtSingleApplication::setActivationWindow(QWidget* aw, bool activateOnMessage) { actWin = aw; if (activateOnMessage) connect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow())); else disconnect(peer, SIGNAL(messageReceived(const QString&)), this, SLOT(activateWindow())); } /*! Returns the applications activation window if one has been set by calling setActivationWindow(), otherwise returns 0. \sa setActivationWindow() */ QWidget* QtSingleApplication::activationWindow() const { return actWin; } /*! De-minimizes, raises, and activates this application's activation window. This function does nothing if no activation window has been set. This is a convenience function to show the user that this application instance has been activated when he has tried to start another instance. This function should typically be called in response to the messageReceived() signal. By default, that will happen automatically, if an activation window has been set. \sa setActivationWindow(), messageReceived(), initialize() */ void QtSingleApplication::activateWindow() { if (actWin) { actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized); actWin->raise(); actWin->activateWindow(); } } /*! \fn void QtSingleApplication::messageReceived(const QString& message) This signal is emitted when the current instance receives a \a message from another instance of this application. \sa sendMessage(), setActivationWindow(), activateWindow() */ /*! \fn void QtSingleApplication::initialize(bool dummy = true) \obsolete */ youker-assistant-1.0.1/src/image/alert.png000755 001750 001750 00000001732 12312451003 021033 0ustar00saucysaucy000000 000000 PNG  IHDRL(yPtEXtSoftwareAdobe ImageReadyqe<|IDATxkAgv'M=- BQzAO^zZPճ x( (A+U&g74F G6~{owT PljUA |aw5 'E H퉩.*X2N|dZn;uQDat1}A䰬T՘>κ: O>k{DIWO XyD'Ⱥ " Ⱥ bl8a3$H$@ / P,%AHf`xX@ː  @ 3 b @ 0LA,C: 0 \ A3;- x-3  04AQP,7 + P "C:'yAdR/b b1X\ AH`Y{AvmxA֌i;)5b'ɛ_>:V0CZRԮW5W|r/4dʧ>3׿Y]\fJKx|}N${!%]4KW :I8pL4 "Ɗg'EDZ$C81'ɫ$9Negʒ#1rhƥQj'1'ɛXlV[60'AJ$Fk!*J!I b$}I"9ZrF[6 v_6vVƈ1$qIwN(3fe`tڬ&rkGr^Mѐ$\ 9IJ}q 9^$j=@a?c#V'\IENDB`youker-assistant-1.0.1/qtsingleapplication/src/qtlockedfile.cpp000644 001750 001750 00000013742 12312451003 025361 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Solutions component. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qtlockedfile.h" /*! \class QtLockedFile \brief The QtLockedFile class extends QFile with advisory locking functions. A file may be locked in read or write mode. Multiple instances of \e QtLockedFile, created in multiple processes running on the same machine, may have a file locked in read mode. Exactly one instance may have it locked in write mode. A read and a write lock cannot exist simultaneously on the same file. The file locks are advisory. This means that nothing prevents another process from manipulating a locked file using QFile or file system functions offered by the OS. Serialization is only guaranteed if all processes that access the file use QLockedFile. Also, while holding a lock on a file, a process must not open the same file again (through any API), or locks can be unexpectedly lost. The lock provided by an instance of \e QtLockedFile is released whenever the program terminates. This is true even when the program crashes and no destructors are called. */ /*! \enum QtLockedFile::LockMode This enum describes the available lock modes. \value ReadLock A read lock. \value WriteLock A write lock. \value NoLock Neither a read lock nor a write lock. */ /*! Constructs an unlocked \e QtLockedFile object. This constructor behaves in the same way as \e QFile::QFile(). \sa QFile::QFile() */ QtLockedFile::QtLockedFile() : QFile() { #ifdef Q_OS_WIN wmutex = 0; rmutex = 0; #endif m_lock_mode = NoLock; } /*! Constructs an unlocked QtLockedFile object with file \a name. This constructor behaves in the same way as \e QFile::QFile(const QString&). \sa QFile::QFile() */ QtLockedFile::QtLockedFile(const QString &name) : QFile(name) { #ifdef Q_OS_WIN wmutex = 0; rmutex = 0; #endif m_lock_mode = NoLock; } /*! Opens the file in OpenMode \a mode. This is identical to QFile::open(), with the one exception that the Truncate mode flag is disallowed. Truncation would conflict with the advisory file locking, since the file would be modified before the write lock is obtained. If truncation is required, use resize(0) after obtaining the write lock. Returns true if successful; otherwise false. \sa QFile::open(), QFile::resize() */ bool QtLockedFile::open(OpenMode mode) { if (mode & QIODevice::Truncate) { qWarning("QtLockedFile::open(): Truncate mode not allowed."); return false; } return QFile::open(mode); } /*! Returns \e true if this object has a in read or write lock; otherwise returns \e false. \sa lockMode() */ bool QtLockedFile::isLocked() const { return m_lock_mode != NoLock; } /*! Returns the type of lock currently held by this object, or \e QtLockedFile::NoLock. \sa isLocked() */ QtLockedFile::LockMode QtLockedFile::lockMode() const { return m_lock_mode; } /*! \fn bool QtLockedFile::lock(LockMode mode, bool block = true) Obtains a lock of type \a mode. The file must be opened before it can be locked. If \a block is true, this function will block until the lock is aquired. If \a block is false, this function returns \e false immediately if the lock cannot be aquired. If this object already has a lock of type \a mode, this function returns \e true immediately. If this object has a lock of a different type than \a mode, the lock is first released and then a new lock is obtained. This function returns \e true if, after it executes, the file is locked by this object, and \e false otherwise. \sa unlock(), isLocked(), lockMode() */ /*! \fn bool QtLockedFile::unlock() Releases a lock. If the object has no lock, this function returns immediately. This function returns \e true if, after it executes, the file is not locked by this object, and \e false otherwise. \sa lock(), isLocked(), lockMode() */ /*! \fn QtLockedFile::~QtLockedFile() Destroys the \e QtLockedFile object. If any locks were held, they are released. */ youker-assistant-1.0.1/src/youker-application.cpp000644 001750 001750 00000005375 12312451003 022463 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "youker-application.h" #include #include #include #include #include #include #include #include //#include "toplevel.h" IhuApplication::IhuApplication(QWidget *parent) : QWidget(parent), viewer(0)/*, m_shadow("image/window_shadow.png")*/ { viewer = new QDeclarativeView; tray = new Tray(); connect(tray,SIGNAL(showOrHideQmlSignal()),this,SLOT(showOrHideMainPage())); } IhuApplication::~IhuApplication() { if (viewer) { delete viewer; } if (tray) { delete tray; } } inline bool isRunningInstalled() { static bool installed = (QCoreApplication::applicationDirPath() == QDir(("/usr/bin")).canonicalPath()); return installed; } inline QString getAppDirectory() { if (isRunningInstalled()) { return QString("/usr/share/youker-assistant/qml/"); } else { return QString(QCoreApplication::applicationDirPath() + "/../qml/"); } } void IhuApplication::showOrHideMainPage() { if(viewer->isHidden()) { viewer->show(); } else { viewer->hide(); } } void IhuApplication::setup() { viewer->engine()->setBaseUrl(QUrl::fromLocalFile(getAppDirectory())); viewer->setSource(QUrl::fromLocalFile("main.qml")); viewer->rootContext()->setContextProperty("mainwindow", viewer); viewer->setStyleSheet("background:transparent"); viewer->setAttribute(Qt::WA_TranslucentBackground); viewer->setWindowFlags(Qt::FramelessWindowHint); viewer->resize(850, 600); QObject::connect(viewer->engine(), SIGNAL(quit()), qApp, SLOT(quit())); } void IhuApplication::showQMLWidget() { QDesktopWidget* desktop = QApplication::desktop(); QSize size = viewer->sizeHint(); int width = desktop->width(); int height = desktop->height(); int mw = size.width(); int mh = size.height(); int centerW = (width/2) - (mw/2); int centerH = (height/2) - (mh/2); viewer->move(centerW, centerH); viewer->show(); } youker-assistant-1.0.1/src/logindialog.ui000644 001750 001750 00000011607 12312451003 020762 0ustar00saucysaucy000000 000000 LoginDialog 0 0 397 282 Dialog 290 240 94 29 border-image: url(:/pixmap/image/quit.png); font: 11pt "文泉驿微米黑"; Cancel 180 240 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; Login 10 6 26 20 117 163 241 31 Forum account password 0 0 397 282 border-image: url(:/pixmap/image/login-dialog.png); QFrame::StyledPanel QFrame::Raised 40 6 26 20 6 94 385 21 <html><head/><body><p><br/></p></body></html> font: 11pt "楷体_GB2312"; Qt::AlignCenter 117 199 151 25 Remember pwd 118 122 241 34 false true true 293 200 91 25 <html><head/><body><p>Register</p></body></html> frame closeButton okButton btn_close pwdlineEdit btn_min warnLabel passwdremember username btn_register username pwdlineEdit okButton closeButton passwdremember youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/oldkernel.py000644 001750 001750 00000003633 12312451003 030435 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os #import apt import apt_pkg import re import common class OldKernel(): def __init__(self): #cache = None self.flag = '(\w+-)*[.\d]+-\d+[\D]*' def scan_oldkernel_packages(self): #pkgs = self.cache.packages cache = common.get_cache_list() final_oldkernel_list = [] current_version = '-'.join(os.uname()[2].split('-')[:2]) if cache: for pkg in cache: if pkg.is_installed and pkg.name.startswith('linux'): if re.match(self.flag, pkg.name): #version = pkg.installedVersion[:-3] version = pkg.installed.version if apt_pkg.version_compare(version, current_version) < 0: #tmp_oldkernel_list = [pkg.name, common.confirm_filesize_unit(pkg.installedSize)] #final_oldkernel_list.append('<2_2>'.join(tmp_oldkernel_list)) final_oldkernel_list.append(pkg) return final_oldkernel_list if __name__ == "__main__": objo = OldKernel() #objo.get_the_kernel() aaa = objo.get_old_kernel() print aaa youker-assistant-1.0.1/qml/func/common/Separator.qml000644 001750 001750 00000001565 12312451003 023035 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: container property color lineColor: "#ccdadd" width: 680 height: 1 Rectangle { anchors.fill: parent color: container.lineColor } } youker-assistant-1.0.1/qml/img/toolWidget/red.png000644 001750 001750 00000005554 12312451003 022316 0ustar00saucysaucy000000 000000 PNG  IHDR=Ƥ pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FIDATxb?-11}ƀ 01bj|:in$\bG5"9i4H2bQ:jhm;TKZ{ݣup?n!<4p4qY0IENDB`

    4*MsEaH¨nj3$pJp?sJ`ps9EI .*w!9؋L߬k37K&`z l`M=$Fq.asc:G$Gii>l 55A Hg5/ic?)O4X*W|{,zK/)| ;w:߿>=/qKrF(D  ` ];/ IDltPN@M،D/ :$*u>5+W-GEb$r<"GOU#ơѵ$  Uo;wB MLc,'/O!Sqxeec, ,?Z/m*^&eQ,s05ʣ}5DҀ/2Mb+$'ad/aе"8Y烏l̤ #Bn|g|#Go.}.^iuے(mi^GBE.>2*۷.Օ=>%qI84d}?#`x9ܴq0uƸnUx_e l$lfW5ɗvތo] ~Gi<J $6EkZЄ$oՈ?󟯈vJuP n٢?zx&3KҖ1KnO?РEט`1ܭ;M[sϲw-DԳ~xo,u ^ E1T>v*&U\Ф(i0B Id0S˴§ Šej<@ 5S db4T/6IYM']ŘXL֜K7\X3;$olKfJj싲< W=}DȑъODNOҐtq se;7?~\Rb C n^w[Y/O,+\Q?D4.8J|Qj"+(Jd`5>u&U}Q}d$H!A7 O; |78=񱔸^ @ro K@fy~Lj"E{AFnM)xJ"bUhijPwۖX X&ThҀ50457gu0, /p`Uo܋ҜЗQZ=WbRۘ/d6>szl] }3EIU (i\Hz㗯ŸEx^LevEE]+-ٗ7M,Cbl-ՠ6qp h֛Z5U!2p w9"UK37 f{*c4mufCL8Wjʹ`]$'no>#ý_(YNG&Gσ|7⥠6+ktn1ZE92E,,eP/-f%"TEdӐFz !RUA!\GdL#mpT ZlR`ΙO`JlBxGW w/+)Eat "!,B)/Fl"s80$@ f4Zc!d"?VPyX3I̮G)鞐DF$_@.&#f$@&+5q ?N6DK6)Z5j\$A~yAcx>;1["Em,#8zzcR dIf| 4/PB2R̽_'Ȋ-T56xh᝗nT!{bհ5̠; JrM.`FQy,+֑8 C% C5nm]44փ`Մ+=ھZբtz%d.",Ďz949UL$щ XhCm;7!MY!Ր;{eTp[t + $cAgZ*Q4Ax15M9l*XՋ .h27)Ht(V!o[CgK|h.eQױ7ʷď{L$'$a͏vTv %m H=DT.:kWgW<^XلQ^6iz4;>Mbnf2{j ,_c*t_ULiI|m!s!vğKByly RS*Q ,{iӬNʕ[Y]fkQVJ+p0UBjU۪0.Xrƚyp 2 fUhBS[MsVE/+pR;xwsnسX{7 N38ӿ84[W^Z:SEVf18WOs1 ʜy|rcc.,62L+J/i+vmQɄgW)UÄnfbW`NI|Υ<*ΓG`d2 ,S4K;!u$Ld  tE6ƘNsep:qHU"Mov(=#cu} C-W蓙aP^mx$i;sDmkDNdQ[L.>LȃL9* jnV"2(閲XԪ8sپ/=?E }Xi{Dksܐi~TnIƻm5CEc:e(=l7n+t-|*&$2p:?2< x3*ϙsۼ߾7ӊGP0¨54&m납?rtUNIENDB`youker-assistant-1.0.1/qml/func/common/Border.qml000644 001750 001750 00000001735 12312451003 022311 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { width: 2 height: parent.height Image { source: "../../img/icons/tab.png" width: parent.width height: parent.height anchors { top: parent.top left: parent.left bottom: parent.bottom } } } youker-assistant-1.0.1/qml/img/logo/Manufacturer/GALAXY.jpg000644 001750 001750 00000011220 12312451003 023763 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !Aq2BQa" #b3S$4D%5U: 1!AQaq2B"$4D5b#T% ?y/ƧqYzbD۔,H}:L\AeEl .䙊iZ݁#BŅLIj[ eZ|jxW r]W.޽k kZ^璫wRԥuY8ĝfluQLxL`E +?֗Ͷ/_1p??b|NS')~??8̰#jnVa=TbbC;gf?GLZiћڜ]$3sPҺ`C vZsNi&qNsouhe4:ce7Te:mI ܊1 jq\,ݪ$_էq`Sރ=1eCaʙDDr@3h2}|رrz XwV"g1i 5µϮ%Ϣf8&;kXar9x0{,`/ZyI,Ht0 )#cw.-H% fߚUs&TΪ8VniZ^y]q_e?zhm8+Z͹PGNt5ZAvYɲKm4],*FyƯUi]iY`g WN]JWL<󙆏~P:/*I96]nfnYw.#cTE>cn{j!qFR39ȹh p-^ٛ\ ?y]{#f8eѿ;[v^҅967!inKO?rZI'&}hR)C i /h!wުG}jUb"$mx sG07݋(bUA_/P7GK~w_ ߶ywXoVM1ZϵTԩ]h)^n3FFyu[L# .} ZViis7gx3fxa @k;GJ$u#MʖP!SZerx~L2NjE"Fa+>lz|˺ϣm>A~|4'+aP`G"32" 19FJ|3f hKk1+l@X`M|"ou0]Cͅ(ܙ/C$׼0Iލ2L #@ ;S"{%黔ZM1yP(a0M{*)j>-Ȧ ـ.”nLV!drQ$aoF&LEˠzՅ=-&rka c0&ؕI5FSGLPaJ7&K29u (az`0L"H=ŽȞznyouker-assistant-1.0.1/src/alertdialog.cpp000644 001750 001750 00000003004 12312451003 021116 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "alertdialog.h" #include "ui_alertdialog.h" AlertDialog::AlertDialog(QWidget *parent) : QWidget(parent), ui(new Ui::AlertDialog) { ui->setupUi(this); this->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); connect(ui->alertBG,SIGNAL(clicked()),this,SLOT(hide())); ui->alertBG->setStyleSheet("QPushButton{background-image:url(':/pixmap/image/alert.png');border:0px;padding-top:-10px;}"); ui->alertBG->setFocusPolicy(Qt::NoFocus); // this->hide(); } AlertDialog::~AlertDialog() { delete ui; } void AlertDialog::paintEvent(QPaintEvent *) { QPainter painter(this); QStyleOption opt; opt.init(this); style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this); } void AlertDialog::setMSG(QString msg) { ui->alertBG->setText(msg); } youker-assistant-1.0.1/src/image/feature.png000644 001750 001750 00000161112 12312451003 021353 0ustar00saucysaucy000000 000000 PNG  IHDR9<tEXtSoftwareAdobe ImageReadyqe<IDATxڼX[lWח؎;vIqMBӦD@T!$$$(< .E>TR偐^ZND)CqIl^}|g8ĥ(#}3|;,p.q^IE %JD(6l`&I>[]/xUԑ@]M%i_GEh'ѓWr7{A[?؏NRxXzAIU3 v?+>r'2`C愀. !'7M8 kxHH^yʗ:<[پ@+>, {p>)Ԯ?s.eW5d[` c*ٞQWEۯ+N2A~x B!re策D]Nٯ(2ӑ& Iàs5M;__frHj| tb-I0u6zFkG1r{:rjCEDxi.cJqQu=|D;xg'ab$g&q~M0l1J_k&e ƿ81.zJĈ&J])!󝝓2 gJ.7C:k z4ə0c$e6Hʠc1w”{;P%ŊR&d4%>*Z.IRBJR;6NUV"): zMw u|n 6iPc eM o-T:.#MIGO8wJꑚr~E^<ztM .h5~0}£OW=Wq|tl%]BƮ jJ}9~>[*rM, <s-Q k<~ B1W^p*S{P2$$h_LN`|&#d7٩|w0[?J?1Zq@5 l;+bd lka+s>KUڂ!-9ن'N nOx1Lp~uwI7,|Ihxn $Hqӟ}$']tp$\V/ Ѯ<.G?|D=sEryCy]a{\V (9 ,/ p@'՜L+>,ʐǟ9D^l>m}EE؁\*afY#*]]GI{rw5sƖQqЛ9nWEx^QG>H)zW^~1[F#}U=ugQjʭ Ul,ˇ򸶺Ɯ5=%2c#H\*(obORP]d;z;ղu.{- ;1-2TKBwJp|B䞎d`wCSn ;TbI)k՜>pFɿNe ͉ OZq :Q|f֟*`MaÜy;EPbfaZ+Ec6رs JopUJw%lNe~3+engMV IufaN<έ0gmQTaKn/lݶЦЖKQDlKHHѐ1Ay$>%`Dh#R "pt{;gviiJtg:}JH/+Uh"I"jSS&X65 ͉J1O[̃Ë")w{PŠbyE2yxN]LU&9ku''ZRb䚢8t.`Nvb]&y_r"\POd꘲?YifP€8RH"g 4g=ӛuA8/-&`T4\L*8jU΀Rx}&l&qzΉs攕wD]9}*݃ ⶆ)Y_"'3$?)9B%,c T"m<'}l &lON1"7$MU֝6;1W':LcXN @0bE-Nwa"k', *cf R.ޗ;ikKxd ɾSV0V]Fߨu-pQ,}4S+k)X3h%@DX{xQ( lgqd'+o˾~*W BQ/ʸ޷x!lCf-=q8Hg|,),2EUMBvC-#t)/ K807\}E6ZW#"R57y'vhm .Z)8f#P'An9U n"t]H>JlLIb[ 5 ]#e,P>Ez*% /=H* 7=] nvpN`$dpR Љ p2J ;LY-mtPǠ)#| cܐ.G望z3r ;<*z4ASb,*թIPdq6( r~ysCPs$MRɡW\n~7v;QʬQԅj,(w.tٶGYsڇ z榪̡1,)v 7:A,ͦeM٧ʻbL7ǯZl#^!(RMO~/nYT$d8X`L{&OĞHojT.ra4'(u's=zXvϙYeşsc = ]3DiϻջeI%Vyz0P(D!*QDJJ)BmZJ )$U JhTUi Rrp &H]Bbczݙ{߼Yn ƴ,o{=$P۽SQ -31̆ÿ:; bI/=إ+۴@VlEoL?@酂ލ42wjgN޳`_g-M +Yf[v n9&"qLWeg_Tw\R)}W;:>DQ:Hbz$_`. ɘRnEy _ <wdL|lDd^B=re~lu( `n 8v#u/8A|⧛~ܶmq+#j =*[AF;'>0z5bt|qMrq8xrΨ'@gvb8՘|e2'VEBHJ,nkKxt >VeCm4QC:=aK]3TTz֊-LTb_VCG~n4,ZҰh"<.ZIFV+TL}(D˦բ~7o[!5gͼ%d~s򑹄T6( oԼ E3EhL?)LtIX0!$0 ~N|ii~'>/3 I< "(ѣ*0>[\F62~|J4= KOa68NK0n ʑp /u߾.հ HBdux'<^\L<HJ <( @GSB|O7VncK2#po-ڀfJo-H m^t> J0ZdHo΋Pڏnmalp.Hμ~Lh.n `/#OAdˡz"AG"wK+F}BYn0q%(S-_~+%mZryٹw?xkgiP񪿰=Mzv]~>ohM~Qv~IA^b[:4+lOV6vE奞(h`$cPlF0`ALL#4UbBJ-!m[~֗\Gp܂ֲQ<Ԓ2u FQ%nbOL$& ^?=g+YpcL)V[ Rґ[W %ۼb\lM̛zu4e+WvE?2?8?HOvNҩhs9< .il-Ԛw>\7:7GnԊ%FPk4p$[{lJgj9TԜ8tA7U٭H9o\OZܓ =3M`iD9-wO /GS=oFV)L~Lr\;Ϫ<_Wk Ve 0o`77_y~at:DO Yg&eװOo{q 2>OH?"ŹMa.<zT x / N4' }!{dތwMػ(ҮȀp;F':$;u;q㡩K3fw:344x;ul3N wS1@J~w~Z Dcݙ?{:%QFVO(S)Yk`9y!G T1rkȖGRtsС-2)5ѣ[0$ ;pDZ`-F.~G8eI,cCb΂HancnYd޳e}8\7]Bt+7nci)T]YN.!V]Iij 0V{1m<_ KaqԢ@Z& e\DN /^U4lBˆnCS)]ay?"Xy^ -Nw3uC tL+fAo҂h֢IYYFp<5wWJIuGUKIR4GZtm㼙;R&]qw)Tį`xo(PԵV`l~$N`HЪLg̎hfD`Bj A摰IED^Duhx/ W,r{2)C"60 bcRH[Ň=[N`læ!͘e(֨wcϩ718։9U ]l?HqӜpv=fCk2Lc 0ĺ`gWmM,w,( EDoͷh[q2"&x򝀏dUG8 4•& 61LV6}ENH@#EQ~g r?p 1;7Xu[k ;0c\qQ`&mLC칼Utl|x0WG;2~`lqÿ*WVc`$EEB+IrR6J!<8a8ߓm{>*+ 0=.U(9(1jr|s.3!C|%%o2}_v~[)Nw$2HR$0x͚"I;l BoR%U!I(^: t'?Oh2J'm^a(%$`҅Uiv ̖Ri].KRe{;OR)<%VƱ3 ٝ`wIkVafN!i>Ja|:FEɈ*Up_~++ Ph0Bf%` \*Ahe}yDqߌD7U#,j oh_]dW4*I!HAiC2ɥ6OxB;;#_QU~j3IMmbyq6-h_=;FjYKjC7 X00glo.9a495rR$kh*tlR@:IJg,uS$nM'KJfP ;1tB`}s&aH=. #o*͒K\1ResFapƐϫ~e(̀UrL$O \ ll7b@͇wbYB†J[MmAgss_8u}RB/Gd"]<+'-VVh`1T@‮DpGtidM9 ;"p/Kӭ rgViK3fdkp:F%N{3 4kDPWٸ>V`! lXVGHps-k5y8sZ!oi<\a].Y /J"G@ 1tep *iel Xn_I: bD؎C9E 8HOg7mBKL!?~̓q0\ܘz`x8=Bb.[2ɤ-@e$\TU*]T>1`IT_BXg̀/oD1h_P`UZo>K`13tpbZY| > ָhb}f3ur=># Che4ZZANmhN A!$W`QhK޵hHP8INU~1V26.O׭Pɳ^PSslRgx|b'2\l D@|gvM0 j;>bl?Ak81?w5"n(x: :^] 1[9خ=y:)AϷ0+ /?Kn֤߬yy:{ IPUg&9ѥ /d1%Q%?祲 bC g>`'G5U(u 8O@̤u;Q=Ra2x[;.t) og)?p jyߞ|˶0hF~7[kdXʈ~N=̜K@0lI?f$`p,I )=}G`y 0v:r!mF[S  :T/3p?@)RP h+˽g-*ς6mG7`88<>OQsY׭m +.ظhF)hѠfl9`O'uɆNxӄ{cHь ʝ nծLl&O<J mga=3sW (uirf./]eΑ߆jčfN&)T}NcеDNpz]A-d~fW3^pTTOyyfna{ ݟعlCa}zg+U|^+>k)%D+mU#Y[Z'wqrS'i#6ŴUxe DEuZRyOIFQG UbۖݣQg&S\'*[wW?x<ŝ~5>/@b80'] [vtDLj_9!6_2\D=qOAH.s@MtNpŐon(Fx8A,Јq_wt,7|؋f`+V_UYȏf hzX9a&+mD p]89J قSkONJ>J]WǁlsґYWaRXsFgiY1`.:>禙k9gf_]'&TEa*c=uZ x1%6F㷹^/࢙3uӗ:EdUxT冟>7xmD{Uoػ0+}R{uW KPDD$#1c4h㈓cLFq&f(ɧ\ .`WAY뽗{Wz! 6Zzg?~xnbpw𺯺^U0xu7Y@ 23IPȤչ(RB\ϹEJL7j\Dy鄐L>/Ol!0#fܹ9쳮%C6͟?_2仆Y{R[*BpHaTH1K kdfzg!a(gUr\_ٳg/t\/H"#/p9+qp(Ѽ\9M {5[3. OY'}7x"fk@75+j14t]zcSMmq6qTVE#Ժ[||T(ʾ>Uh$~?T@?ZI* i@7y$ҙ;2ە4mU1o@6飫4MKJVKs i W6P:C¡eHNJI0IG)ڻ{Gd D{0dۀԢͽʏ"w2WJSuW#ř6=pW,oW.yP%ߐN\}wz/JT)&lET*W.Hb[7*0%բcbjG)y TG{ Mp'$4ex]/#| >ǶҞZuD r<پ-ng;>yՒHի95%yVHifjޞ]ؙaMN @Fgmdxr֨c(SDz_ߙ8#-? "ױSqdRILA[/Nd'G$r!`#=s2v"4=p]i2"۝*ܲ1-}TA|U։[k@}>&. #Љ >xj&ťl7hй'k<9( F]}#EީtPTT.rq w:7&$~x \pTѴvr=e)/ tOue*Vt7`csyRɴCTd_Q&7ܙYL-G(='p+㸴Vb-1$3U],;΅͐y@Y:|[ؓ& GEi< =81!?kwK~ qZɭڀp8"Wc"[w<窲@zPqar'[٢29 y,C2KgpP*`fD9j 4>d"*/f;U !&o1^YLΥer1g)@6W\P%Wkg#瑫f[52bDK?C]p z\Vgh{Y ɏ9L8JC&(-+݉D< }{< 6=*'b:nP,4a !C<ҫܾ 8y./az~>9r\,:4Xh3Pgv?# q 2PUg OQpeVIi>u6/Xn|'yBlƂ%|`}<3[Y1<":e#|r[qM t,J2-09;n!?F^uAP0 E'g# !E P HeUMjg b!>2ڑ[m֓&aMeCfBss*ϹpW:Gn&x4֏x'",#n̗G|@>.l=֞$l%1++\ 36~Kx [4xq{!rMH9#.9gu !i;OdU2TCJ<:m3j`Lޞ^VY6[L9>N`pORfMe ~Ebus笅\^jN.4Kѕco;E˔xYhp)eLM._85G"sh~p}~|| :F (^%z0KYMd[^?t}6ڜa3AnqKAhr) o#2& rs7y)/wekvQ; en}O]F3N,g (xi ,YEl'0A Bw. G*J#4DSv n f.k;1Y j ґٜ<;54J $2@kz:d`O@z.Ytpt5@SqFK*@u~S!".UdvRQa 叽z߼ MsC :wW AD1]9/ɥ`|62f@y#ql@Fc>I'dN(pY%T65r;fs\՛uK5 `,t8Y:M.ørysכR͋^n!Cϲ*E UyynRHW8=S:JGos$[IO@Ww7w|=NQ?3zd$\șLXcºU@gGDbP^]E(P. a Hn847h%+Y0M ]U. "rM poͽ_S\z9tIn7xܙe Q$ IbzkNŒu`^Ӏh*C$;M J@7N\q2 XssrTw; Fq0, 515!P HбZvB{2 qJAeI0@4RHtOb[QXcP$p+0MOyWN}HA\`5Wc@]K)aMp[vw/$. 'Ր(3پP5" Up(Ԑ;nnYtb_dh߇NoMsjXUSl^ 1`\9emEc`uaoϺ\N{;A5&v?Y]%},cGSjf$'Ƞb<3͝9C N ?* 7u6 l lcx⫐ tS7]"=T"N2,4漷 L=Cg>$xD"!DR`]=ØB{iu#NncqSdP 6I(|+x.V`tLm Yn$w% $oLYt`mu')#~'APXM7T^TΙDzl}P8NCm}]i48SF>Y,Y;a?ʡ4dpSⱪ@6Sꀵ=)"sl]Si(s`8YԵ;`n% ekG+0s@Wt9P$W &(7 fI+%ۍC)xN'-l ]51TQ4:v.rZt.':ccqm~$qזA,nϭWLmm]dG)E%5ë&γRpgn ׮x)'N+@uOaC6niSB4%]/viIe֖Ԉ碋Kˀ2Wxd _X!aӼ-^K ?ڶ&Rɲ,6g;GxER+Xyg44KĐ@!vtDN~Ϗ1iD"gyݻ c wpAe٧bLӔAgx vv$T;TmGlIMh -' :UxmE+B3y-"2yWJ_bN;} #I8~`'![,’JM?o_]$%7@6hDي#,= {w`UW-#8ݲD޺qWtk׮i瀒u14nO6[䦏ޛS7KZ5L䴰*t)sǖ73oon RbJ}[2c: ީxscxF$[L q:ݯ5= G P}QE{[GzoI'sidhdeK[iEk4Ԭt~KE@g\?+De5Erˆ߽q\{l?Xֺ>zf BzO)":/н VS^,&^n*8:~K(Mj].{gGUln6N! B U4ADPA@(* >ʧ RJ -M%mI:sf-ߛ䖽e3whg! ݶv{`\ pi^4!TUo ̠V#cA;ޫS5bcڂS%8@6u{x^:vEݩ74Օ,#^Ƿ5vO _#gvi+2T'wu죏>ĆIaDX,fږ-\ /u֥qr,%z5Ri* @ rJi ELR̳tQm,3tW:[-ZD bopp4j{͂ .?LWa^xva_'.Cse/Ґ_ܩUy2> n7W-F>ExŤw?ZΎP#Gok֬?n؟;+9 2T=༾1LJS۔g|IQ=$b犣q\]|sfcP>vT-f-B M6Az̮V㚮y.``w;e%RC9E. ц42 :] "V!_F/ꀯ|߶O#01O5=qB; 2d"ef=>WR ])Ó>3 lA D4ruYb @_0ҁvg(XǨoux*1KeMCJy1+  >n3|WÃkki^~at˓aC*4e. ԥq%tambӅlXWɇJj5Z!pRLJf?R]h禒h]#(5Fu%wșdHo`7ZKОÐ !֮>s4p;'Çmd%/٫{m7~ FgU׆쉍AY^:'TkD%gr} % ^,ӑuzW&6J!d7^ExM$5[8'N/6̃g)$F͠յXoI^Mf+0Jda!G5d@Ux蘀ɛd˩=X36M8dk갰DoSu_fsWww'dI[ ood+0:1E1Lmh@9Bbo$9ud9^q;b= u }M/-`l2 8oo1 w:ŗ^w;չX[\ݛ0$"b6èAi6Mxah>A`' K3B]=T%'C_Q#z jVT!,E lO)NP$:J+(t::ǕΉ%ّ05\m?"A0( k!>YZ0@յn ; O&ZO]{漵iu|{=^z|soZ' pї7#Ǵ|cl70tMQ8IAvd6- VE?:T],92G/`6K= 'k&xN~@=?}2G:Y0 )"ڃ*!9;rWB:lFi=p=OA"eoVEnCyjيTV'01X*1Z16X=_!Y'No]rs͋*_YpGYtA'@r&C%Ю4u~+J]<-oL [.-q}'䣵s1e01p`qE6 i}c'Cl6o4Vbh#_ pD쬨CBVCl}DiG h[P' g ؊$Řf\`U H?Wo<F:AymW;Q2~/enhd7 J 8abrW<2}!!?L{񲖱F]?6X_w&*K6qr4ω6?:Hޏއo,iqPbH3F>@Fyz5^q4z3,j^ێ"vRD)f WeQH#X g(9-6o&a$|apI6ˢdYE0OЃii9!EN:ߘҕRj%:>չ/n , x\EQ_sܝ\9 ҄5B=%iCn'KD[S>- G౵kPWA?2ЁEUؼ6 _X<Y)"SAT8lޡnc<CzLl~'-ZRJ? "-dӽ$%Hj@JcͰ`iĈ%::,}df0}.:/0W51"G*DCL(cesXqQiŭd-#Sk3_@_{}0 :oi*_D#Ax*6S._%!83" v 6c36H,֐LGCY3uɇňH h(#񣛳E8Ő-ZHD0r^CS4¡$bh k̂﮷94ꨃ;_ΰwpn ݭcT_|"{L7ҪX<3gvBߝ%E{;z#κuPbM%@F&Հ@4بf7 0H6sީ`ylBCb* XH)p(˻l>křel< z_NB".5V _TdBy@jy,".9Y3X2wEdS w>wxh g\P0A إpXXN@tԆܻ.m3E\FT !G:Bޫ=g9Hۺ)xe4Eԩ01htwvDfWOxSd 2W:WקwSO OjY;F(`bTs8/giLA"|<`sXN2dI]N&]f_Y;,Ƃ$;=J겊3ct]=MJ=FyksGmx|:D  ,#ka%@]E,j\WK*E,R{إN_DȂ&Ƭ+̰2K3Nu3ѹuMS^#ۅҠ927fo[&[6,/^6][Τ9|h=ϒ=o>s^Mp~Nؑi̸XPXy೛NdMˍqS%襠C7Dz-VE Apb0T4QǍc],:kEΜ&c =\šLsWsc]Lv]J16D`Τ$qD) *1<2GXB*M-1 COjۃOCc(EdPOLER13ڋ =M2njGMv`S` #/.v ;,&9b"RnP =n!>PեxEѤ:;<e260܀ԵҖu㝰{pRmp 1͚E\ +'(ҔzAHk[xr*(wLtmy˒Lgܞs<`DxBؐ!Yl#B_cY" yUFYFǎ]Dmo|4˄2ڝ,g1t;MJݐВ&LyI|ߒv}TOTvWH|c/tY%ucKLhmyYD,pt6,u7ĩP[y<&I 2i]^:ыhU,1B|r TqP!4щy!jEjn.'u2a]L.وq\U" {t\v:ϩNؓ1aNnh55U )Zep<9OV¨"^]U}ñuhƠI7E4,*v=Q@ & GJScȓ c!],ّ8@NGt:ۋI i85},A5, JgHΆ!XDgeF F]@S2S{1b-9ZJP-\j~+}J¹[Hf(xMTrkkXv0jed0+Ɓ[|~bBZ!1L-j-IBY| b&)&\z6W猣M#~-r"Ax{ :I)Mhs7NԐ;_}!(v524,"|-[PYMSR[f/*G(# J% 6y0 P"LqШB/<'{wX3q5drt 0jD ݡ*BX~xi*)nH5у*8_g끕7I˒>nQ r4DLi.Ks ʙؔN+j dGM o]k^uHOT[)\AAnVG@w}syW6YI##0mbvi$Gщ"wϜמX oá($SHM!h`X f445ISIS0@.]*9"8BO.U} .q1)Q2E<c:xtJT@ÊPѐ]FN1TO凓po&V/KopӛGM siL x2lDhKFUŧ <גapP a ɮ!-1/!?0Wx>4A*gA}QTyNNoAKʀ0$1MÆ]!K0jWYap=V;he09zmJs"T# 7/%gg c13sO08&8B6K/.h-yn Y"т! Œ)n0ps @7$cӮw[,_Lmbq gIdS=4eQfU%w)9$MkGgGg! _ ڒb޽!*x"Iw}2+ 5d"chs B;+@cS̚5rEWߖ#qa_2 D}mn:{LV&„/9 &d>b+B5fDzwMt8-٠2^!Q[қ6&dJ6W!D 2 X:BUyaiw3P!#+:XџZIh?crwܫ62VvA&kexP&}G}nih}5yL@ K>h&5Nv/r[_#Tw}* M4dW]OUҕև"e恺iՄ<1ݸ?؊A Y#nh)ΥVTt]2MZ.o-MEBMP}hBiN&B >N`)Iٳ|j^ôw LJmBRIR, q*b!G<Ԟ`rt;Q1Kg9%h&:|8p^5plyc+z !Ϲ~uD)s?]|>yi8j7KђrZS'..ESY9)8vp * xӊ5iVt~p%r`p=l<8oG$ p$+Y^}*-:;ߞ0vX?fxDF& |Of0CԛcU?[K ;x@>Z l UD5Ni{NnK"8#u)Zo٫90`uWL\X{/"6t34DlKrW),=nd@D/,)vz[ۖ' 49f)g]Y|DFLLcќTF̙cT-wwb76ӀYOS,OVlz9Ԏ`8tEtKg7g xo(L g<VخSo%T<.&8LG[-aH \tz4ۑJ~]jIĦ`ᏠLA*CT܉؃q[oy_xVf<.g4J3~9dÍD #rbB?=}5WкutR+. xHБÈtrnO &ja kMa1N,f#Yl^㚟τP :{ b7Y >X4~ZeV2eM~u!Et#y>=ApȄ$|kZ5縨 h`[&NDjxq5qiO=Jn p~bU#+@Y''EuhrrG6+?oz0 St+y#9qj0<+G$[lmEtB'Bi5!bHЖ\:Kv 4(9B4vDüCr9ayO}u0 `/.KI9XM _iƑr>? =#7W8kNZ%u:&VwwtQj#aԏnBMo(lؤt;mY S P.ǻPmf|75*,ߊ: /- BCu>/kn< . 4iބN- d-2E7PꓬN7,"F7D;`冻ɚIX$:%LuV"Vg5c",h36iL'C}7$Z"t/1[LtVIM$V+Oqb yP8"5@vaxqyڞ!oS(Ńἆb&ڞ7`rREEҾl`? 'р~H^6ц Si:Tv3΅!x0>A8?~b1ޱkzc4F6t /aC͠`c|,Ӱ 1خ"yx'k6`4U>‚r.+5Gwd$>Y?{ R6k.BLafzx-Z g²}`.xLcT~;h34@dT} _FH3/:c WBlikjߘeόY yS3 `O9*iKK0L숁(8È PcGpjuPo}&QuZW njF̀| xi UD_i-o%`;"CI{ X.d`ŵ@!@]0 UU \ t|W;|6=& P5h(l|dYA1^7k`ۦ"uK@S@8Th]zt ڳk,8t%^R(Z:ڦ,+2p\_`s .!ќ[<0UEHmOЄ![a9ALӴ#LҰB2y(jD ȝFtgBI`yO$a`lnWI}?~7ߍ,ކTR,VCegHJ+G`^KԉU9868t]ӆ3Ha3PtYm1wXV(/#Td B$X$d$KTCI $"1f!63 tzo5f}{C{~1ܜ;dfLK1_rIј권o)"ES:\7;?yKCB*Œ`žlHr:VK41T F琖ȷ[͋RdU!^9/ifh\BLh<4 3 þ%riL,T/, - +UdRk(u͟i3*54G\ju9I!ޅ5= LZ%litGF,(a.A 4iuZr cp, h,.`)4U%J9 iȊ=PE@X @,^k,Ztm UR^w_kj띵ݯɥԹ(]yh.*bDPVl'|G@2)Kx^ _;+ۋD)/f"Go8tk10hpMڟ_u{dUU6x<4f.H:ë];%MSՋ},f#h |֕u#?:-q^-4?qiyOtũtNDT b3d}j 3Yl1 k[$Ly&Ϟ7:2_AZ<{xcY"cñ^-T_ D K=njv`b z.P/|d6nL=9m"EdjDj&jp{|nŊe\5 [ARfk^9[=p q㟎ϽȸnɃixo]7,^"((ry_ 3vm*Z:͊uEgPtQyp!# CJ[Nsʾ❪~q OK08*e^RFKrvD|+vϱyp-'Mqx+h0*SP7T%†>1 B#-pԺ*[歀gzBQMqw~ b*>tTؘ*~.6-hIpa|c͉A#쯟ˏ%.OuWgV?ʤ;ڷ'{=+/–۠ЩɘvCZ?..2~ٻUC:ʺ$pkRqθw돛Ȝee?zЌn'Ga~ew N-Lϧlů#MhW~cHr!at}b|/ y@Tt9pWw?cqр]4?nK$\j/63F={ߞ9f4y%R5IDԎVVZ}f>?iXgC-&_2!V7[d?grdi񩎍tjߖJޞ[Vj?tĆY?]q>Koue@#V^맟<=2 )Ӌ ZoyV[mVid,1 7](񐆗ߎ9b]~S=@XmK@0; Nb8Ѷ:P3UEۖݨ8%&K鵗gOV(L0Z^@z]Tun ,?+aN~@ ybC \W6Cd'@{(GUv{ڽ7=@HH #MY= Կ 6,>(( HbHM n?9gfB؁ֻ;;sHԶ ^9?h k WjdoR,{)ZLj^b j[m+ ^*%E @( hr{i k WT)-^jA.VQ-*=ja j[mEi5Vi+N"1_0rB=z(F17U rVEB^c?m\2vGq7r),Y2ez23M3;H,뺎r<,eYYjl޶m[<իWd`"Svm߅wD0@vFxP55[5mrPRg◄5! /r1ֶ8N #z[6|.74<<ܱcǎa_= aH!<;M@Ae:,Yίn/y>}XK!7*0F~ڵnp`}U1>I;WF旑2la`xm>p2cKl_ȿMɡ׷˾y?>[O~橭8DKؠ(h:P!r}/5PX<7pشrmWHgX 0/k6m!޲h Ȣw8ѼPMKLdS{pIǟ<.|#VS|lwmu؆1~؍#"l:J &-&A0fn7U xx>:;:=;e*p<&@rm"A. f*涤NLyaƲrl[-f:Dާy6ґ;0M 4 sSB15 VMJM,^:3z%ؓq[ 3% ~.s}z^b7U3n/-<7q.};ہ\H{E2cJv֐x K"u}ulw Y )IH?b~/Aj@4 vhחů]uU/p0Ɔ,ȅ[9[ذf*^ ͻ= `Ai^ NʧohzMR9P9;`"s'Pֽlj$ B:j74GaLⲫйfN޼jg.׿v嗿(A.[԰׆)q)&D" P޵}=={؅0a ^w`m%:+[$-$%C#@3C7Ow2TXЎlmɪV+J{K@,d'Z^ow=r‡{P٥7EF*gwhRgufC >G#n}8ZPzB>C₷,g4Ė5 =TZfG>m?p?7/}QR-9!LnJ>lgC>.b<(P+YucIi]K檮MXdu#ڦO2eX]I7WC@ $:w쿝Ȁ y6-;VMk`HvpXNF{ ч7 ൉a%׃2)dp]q'p5@wTenmizf*(QT>eDV"Lq'4f(93t*Az9\ԕ j 2ukTL)Io*&N_"Ll5(7 Ws6c~7!/q r@>_p K" g{l][%X`UF1rfd^5:%>?ͯsDG烣$]q}nuGQ=>U18وٻ@&FB3<]'.~n 8j}gaϖך:NP[P)i\N ;+S!.,(QMȅ\97=iɥ~aZ kvX U*X@A ݀!MwS957<=JXˉQWϯT=b! .J5>篝Y#>2- ~_4(*񧉰6 h踧U~NԤ (9 iriF y  lD[wnMLkI> LE3ⰸ9O(lx>j&l;nzp=V肹ucIܷrw_Lun:N[ּtX6DzV@GnC^4bu_mۇaVba|c=I Rr{qG)liѩKu6aĄ9J_񏓥_.8PI02mi ړo*bD rq}+U@a~~W;h؁T")&O `k}Q[fNmH~m g0Z|O\3dt̟3FkTInApip@bmh@\hT1`%s\øEܸ>*Nci>EnږӭF@y9rԕd+^.\+7А^ڟЖ:TG8/Nz`p\JԊu.9JѤ0^FT&A.?F_ᥞ |//B`GtG@$>Fx>&&}/E8  $&g{OOÁqاɄqI6p;x^wgT>!D5sǞ@rlnBAkׂ`pF$1rcQ +#  ҍ0;^y%o,Z4d|* {ۏ|LJҝ0ZP(iχ]h0\"`aB#F<9w(S ):812zs}pW[\(TL$lAW8? XtR*٥Zeg,0$Slg `2ežpPk nС#!X9wH F*/Qv_.^B)tr IX7*2((rRr Q"kf}Yz eH{*/tm[L *MUq}r4^SL ApsAR14)8~8 ' 9R& m~38$CA5w%Xi )#"(KJϻ f0 `z:xʀiI[ ٺȀrvYУ!`Vt`mr]@ꟛH SE}&깇4-/>|py|U*Ղ-3Q"3n˾- ssW=יh J~[/N5S\Czs+ؘKJ;Ou: H9 $@k߾w}UxmԂ"4AtQň)(zrTji֘ h16b;i]wq0?7 Ap6J@ O)40:OE{I(f 1._Ҁ ppkٹa\@#y0pMs@ː] Wvs? Ds%ln"@Db3QjOӯ3!;s@Zh E5*cvoVn5>w<٤gݰjhR kP$G5N-@PMuh) "nz Ffj#֖jLQP!;_pWp0Х8P %n"ti2?kɒ+p-pPSpND19WVe&hl_u~"m+*4+,$ 4iU$B1f1-OΫ540:42Ыg' X֡I^9ݸ.h(*\I6ML9 %CϞ6VE 9ra :q3 n 8ﮆݍ*S}a^"> t<[濿̴ 炾9-nz2!QE}M FSUq' G_\pP| f0&2MTE$`)b gO/7A\r<3FP=SPLPyZWYv.p`GwVo֙C} s'&L FVez.Jj Ț4UbN!d#;=}obZWfnʛ1(b$=o?sLbU>UžwUËbyQP(fbMn:5ze]׻s636sl2R(me^E |v fj>`PԱ>&G:6J,:f.\26 tMӠEST9b CP}}J`bFI:J)jyHi 3Ѱ|5fcT3a̴5`Zcl7aC!&juCEg쥁;Z9[D ƺdx>o ;b^#ɏs?wο/i_1F?n>3ahx(Ee> iS@eMבfϥ>ig٣)zlakdS0FV8|(P,u AqB  f2F ߭(z{lp$D ބ I?JHЄU2Tssf $R\q(R"s7@֝hPЧلEIXiX_𽹊2Eci 9̵D3 SeWqEdB"b/=eVhE6a WN20S;qw" B~JŢڰڃ0vG+7T!QRqp}/ee;:C!qMQ7ꥄ_l~55Lh45XШC[1bGIrd:{8]!}  ͯKVM.Ljur1Y,Hu$!†1$uRv!h$aX|ցyxuHĠ!D g) nqAKR߹L-ZP#NWQLMakgdqK43) Tgjo/${X,?t5Z,PD7"!3,"԰ޛo3xﮞ*\k#Ǡ+FpW[MPd+Ϥp?yf8k4Ȇǝg ՟W7toeŌs@)8 ђa/XA$c;l-[xe^:l$]Aiu- HTM7 f"PI8`<(Aծ2d/M6Laxn tJ=44e$a~٤ >2h8Cg G}&o|zm2[hCEhEIk䬅9( U(`X Dg%>/_Q CFN B5E&OhP4`zsjOB##9Cl<1R g̎A\ /B a<})\&b^{%4Eƪy@[KNxb(cF9o#ut6tR{R׏vOסs8&;DŽNޢ0׋ӊ-ݱVmLޖf~*]La#|**{f5u+vJl=fȑl"j Rm[G+׎~`h׶!+ hia~Cr&}Lr>pFqd XD~~2זsn44vvۀ1'p bz &I"q;'AmPXN$c,3`/6d=xݟءgdb- Q%*ӓEC(Q49̏K3t]iH p5-sM4E?T,.[,r9h^uDIPܖ8=02敱_Khf̈́i3TH0[sxg]G_"9&yi(CFOh`K?O"*(P_jӥHw@͢!>lcOxn|f dY֖ <3W閭{oEhn\SsOm/, H::0F}8#Q+\ Kܿt3AiG-HT1U&vOsy.pأU_gYi`thLt׵lqrL=ɡluA6 A#+4Tr%ZuD֙3͂)ӧ 3Ű݀'KroW5SϔTYV|$ĨJ< zmk#wП?T喦ޱbʐXSypbIi^R˭ۮ삟| MECKw<Yfְ|5%,t"WDJIx7xhJDSvPQg;ì3`vho# J,! J2юw"&BaN'Pk8ma=d0_>xb˝?7;VAЫϝtsS 疀9F@iebaT7V5VMV7O^T89B  :;dKOnȑ&*X胀u)EyG+D&Rغm6n9}jǡ%ήg1vt."5Dyԯ(XcB tF,uZ}q%->F22&C4r奅@&E@+COG)uU71D"Ф`jJd6 j״ܓ'e|5(ޢvT]=rV[@44`ܙ``tĂ [ظCFxղ-J4EQ*>R zHIP+qMe]lH<%ĻpSZBt˦r,lp[ך\GT|rvԻ[RAZⰥlWGߴRd3\hU&RYm 8lI,ND^6'|P} Qhv]0ah:'kA]i"/K+t4@mL;ၵ 3bV7IFJޜٴ$i ʣ%Lr7r$XC`>r ėHOHFA4ց,Fvv4: r cP+ЈUs,ݭ/UlZb.VZ Zz9pNMazam"7Sxi9 *Z8|X<c.G{7A@ԕr&~7"=#s:e0Ma`WPnY;zcJ{ᚄ}ݭcWaOdͥnjDr`$uf2Lk ?sω`xE9q?ة{,-{ zKs]07BjO!OldtV\} NiCo_FW}BZ "P=]l+l\'k!ID[1#\#fKdZ#?:h)ˋd}Q s̀ڏך9zT 0^[ ֬I8g̊i~# ]D tVOdt=O{:`{_O3 u|L)S,2^P.h.< |t; (`ɗ拲U2NOu/N䇪~9"vꟋ2h8ʣgrl+ubN_!ÜiqiQSAaHO53y?xr[΅}E?qrٝ@.tQ9Af4o~4e\9R_)[m"8T X(\S M/\Yx9p܏ybFH*:MwAu灶} 4ܽ+Ȫ64]Qc_> aeЪp-j4[?7> 9T"AMM#J=]#WulxEذq*|h*[EcÂgpmmM}k8K>f @JH~MR2 vSM8xv>0'6U6'8e[lH0g4lhe(Y]G|{vs`!w7 Յ]9sAϼ`~)fB/!yINgW@^=KIR;u\! a)/F69#gk`[Knz#N UHS! ͓];0.*|9 tR֬8C bhgo;#] F2 UCTzP@$~SONb{N¾1˃Jdlc?80J 9[r 3;”~b/.j)LcC*:6#3:]u r/@dZv@05}0я/ u3}ݾyݤLZ:w/ol6+ހ5iRR.wlg%!Υ-+9 5W(8S4+ _9t젦s%c:Z~RM'y^7^sB9Fm_bg;* pEoۂ\%]0ĭPPܼ^;'9։0eT)5$[6|t p_~7y=M s;, R~٨2x`/1󵏁@ALY2ө jbѪB4 t~Pހv OG fL1b%A/cPG^DSB"1X➳ZaXۨk=!f2 K`2Mkk ^zO<ԅG(htǶB\1RJuOZc Д$yܩ = 4 \Juh5΁ ʱ0(oj&3?9Kx[h]1դz♫bbn8GGe %'3q͑)$ #{)Yx,fg3F0٨D cNEMRWKo_}yƊ ?En b*ՠh*CZɲQ`Uy(1!A:fB_7 6PrYD/:,dv:htys̆'Rxc1卝&hJ̏N[4| p; <WMol W Eʙ>=3i -64D( _u&#f; _{.`W!A'4fjش tw[YMA"Chz xDZG.ɮ~GƁG;F-5`A j q "*'B RH崴숆B˔H8cp`R,=yANchD3@pn̅hyt A<.=NM0̾mI%uJT`ȍ,OUeؚyTIڪ R8Lz ENI*&,c0,GcN;> { !b03pc6uB?2A V.Q=?UYXݙYK:>4pW$!KR,OpBao'~[ݗL $0d `!5@k¿ ~y S Hd˶[ &4hy^ \vWW.h><~~}~ -l֗O%U@ேLXX:8? M⃣l䱋kzBBaitѤفNj 7w #Pw煐l^0Ⱦ Y`w $wP0 NZ\?VP+Z@a# ߰ /a53q7t3`gF6wY:hC;g"{"|@jH0JͮCkNMc84AM}Rr/2xc#8yThLc&sm8 CW p5;E-€N-'SH O5AuJ52; Nx$; l܋֡Pdj N,ȣhX(2{9:ߦ% .Ի뻣q {R 7h;^Xa0KaƞX=A&ˎ‹`}xCÁZU9 W^0wH^qXڒ4g/dYso 5k{9\ҍ͐lg.jC$^f{#uw]>s 45&*p &&2׌[9-\D$9gPatiPw`ZĮ&h+UU-Haw7gN!w=!(AfWV)@/xE@vlg⑼Avؠs&G`ya .XBTgN&URJGn] ѸIi@(؇}_*؂tY *mjxŁ,Xz ,cj'P?}}_&ypPZpoƑ&*[Xbq\Xf>U3N;nZ\1eff#[f@_ DeI B]w":k੧<-nr'T6hb7y#F~^m_ 7y 2-uC9{͇={뚹9n4jj8' hDW&??\8@Ms(g}CBwY 3.4yٜ#z@|JRVk;+ JT`Ag<Wcrܢؖo:~欹465:@f+Q0fpɡ gW\3oBj6t,`vqANts: yTt'Xڙ;ϡyEx `#1Tq^Y,$ͬxW?񓯟Q0ZmLWWo;,vfsB="B~"v2*:Lbf6HG f2Ff&ۘZИ V}=mtccy t).0„fI6tgќKD V;qd~pd]<8Z1&%,+vGL0`:Ξ}Qr+{&RY4Q7Cp){-WpˏN?%1ڥ[Yd)A׈[^*޺9 fqO Ĵn]ٙ|.C0L+m?푵0\(@VA'G0e^;h^|€/;s`v]w?;+W N$r0=KP ԨT-tvqPIcd:YqJXйyC.f̟;l=v,![jk7Gq0pxj`6]oUW`J ߰rZ|g7@n6Lxz(G_ oy^#KSڦAQ*:1r.K0' Pmglǫ?$mmÖ8<{_6J%NqMdR\] V ( ? 3vrNfz_x;c*0_ t8d4h8P 9{xe*jb AJ1_-^$,jܲuWA9|e t  fjb[Z,YB<`- qbQb Cy!6*]^b;op$mA.܂EnZ: Sd\oa]|f*>^DXsga`H4Y݊0ʆAd`m8KnPLk]]k/0Tlo \d!cnrWJ[B๪3ؽaͲcc.c}| V?g۲Ԍֳa VAnLi:c! Ptp(᛺"Rm|/\lv|9v =ðaSAH0T%بXz~܌7x,11X] n3:QR~gx`SO^)k߶r5p~P5[~e,ڥ0 $>4cF;=9rJrf/$}=iCCSutȟs^h[|uXaCʐg=05( KB)-=*seȘYsփ7.Ká6:UyXsC/[?P=${γ-VK*>]C9*%װ8!akQhphʰk@Yڒd@ MzVF5bȖH ^b/UA4\>ǟ|FIJr5;jjW`w/}C[gp,fgx.W}DNu(f-H8vF|#(-h06*a٘٤g_H3r^ nf n2 $оH&tZ@fXTfm =V~fLaf"42`ٹv@J4Y}B|&*Dߏ9㯅$[;\#{mAq& iLk)qՕc:0vR}A1J5*隓unsl^02 [*p#8 P#Л`fki lb:Bnwt~'4az7 x0=#hIY:HJ<d9z~d([418JNȬ>@nnXTbWŎLe$JC4B&aP7{h?Dߨ@.Ҽevy.lqV~rp3yuXz U ɥ+oksݰU2|&-q0vfm1hb埐hu  iI%t&sHǍæȩz 6C7}  ̿bc#MFSB}8Q:V_+qҌjd6ׅE8 MN~Ų?[%s&ar5`I{j-TKLwdލO.D%޹NX G/Vqb0U;U>[:` 20 81 Vt [mȂ`Ŧ :c&3":MD1[ԝg޻ FE0QMoܼeՓϿGd]Cc3%N0bi2 :7 0X35JM.H릮q @3ƞs0d'M㰻#Z@ w!Eso(&r?Ix>cbⰚ񊟑6 ?uء૲9Z] JUGJ3f6_Od F|s <.}qB+4{?* 7<êGJ2kf s9 aFo$_-S:z%߱u0 =&y L ޿LkߪArC=/}ɝwޡԇ%UγrϕC0yNN9iW__婉 uL ܊]+תdOVpC]WHrL6CX]U/|mI81JmΕv; {U91 n9ΆƢʶ,c]≛rPG'?Z s0F4+ܜW xT+ d DY_%^sI7{L2nɮdFdhSG~U[0+Y?\QMF/v3̸{Wy_Cy0ٕtWDm+>J厍/do*ADdj 79@-uoŅk9DT82I1yN^ɕ )FgyI!p`pgᕮΒF ܁39aZ}n\>td;1NG9v|=(W| j1[Pfgϖ&!ve$Z::Fs7ʊ?Fa,î*nb`$؉`e+GlN$EB =c4++C-]\k F:ՄU9nI =Ι;et͈%d}WNo6`P968!' ZqՔ&4[Hwm{&m] _y B5uuo #n?;_z"j9O)9W2RF*L1 Ϝy|1d͎sXpx3'!SgeyuDQ؇"{旿ϗala-|la̧f!i*.'G|_>z8:мf3 !4)N)d;G{7<~s>8<<dia,7 d59`,WMgm}SlB5/4 : e-5dϥc;dy_יymByQD5\|/>{-j񀛻ō:梚! /nQUoa% J䚯@.}=m>B&@sv4[3 t]ۛfa~jko(`V"67V4Ύg68Li"\M9J%;ŕ>43K)d{{v;y_|,fEai}Pm͉7Z <礉3(&N;sE_sM eBM$ B =_xe~ӟ>q 00+ek[$M"E1ylOĚC 6&v;+:[ |o5>|Goۖ)fvT`hQHl5{@v'TUCG_ИP&<󜷮T"j1!`&K8IYLtvm_C](bV00s*Z&jqm1x>O_@+f] s3Y&f:qr-^-җ0)L]YXm(r 'bScrox& ӏҏ<>c^E.Mz^ ܴ,zu{?ߴe ,lj W."xw|ɡzOyM8Wu6=K#쬝2;^yyO>Ětw^a +1YY0%[C v}m_!NV%qT8!ʮpF0sʘ0kd&f nw9W͂RiR`J0XY j@jğ`ץ0Y7$0i5V j[ jۄ(0(rP3'k@Vj Wv*1>mԱ Y<IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/B&DATA.jpg000644 001750 001750 00000014307 12312451003 023670 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !AQq"Ba2Rr3$4%S&  !1AQaq"2B#$3DRrC5 ?<5$ŧ'@X!')gb ~Z؂qiV Cݡ,1% r 0f6ypb!N^B;ؚOifj5'@X!')gb ~Z؂qiVX`'xX0wZ#;N^=1 ؀. @pd0i>AhG{I{M,ؽ͗.ewK#.f抧ـ-o>5[XƦ4 RL!!N uAPOŴKd'T"#yjr&}K7zڲu6T飊JFVOtaDw^%<:hB,ɔ4\r e1G hbR))<%"C ]3kԩ8lɸ eG8@0Hhwe.IC ņ :[ĒH46,!72Gf't7-#Y=`TQ2E#8dzvYQ3'+eɛ+f2bPb3UԹ Z^ABg1=jhR̢ٺ$sTGϘסɯŒ0׽6ԵIMX/q?GM-!~Ξߦj^ c/ytL w*2+Ø:N!epbe8x[3•y|~H@* |iPJgwU/*,)A,rIUJ&m'9M6] $o1KRQC: u.ݝ :>M!1IgI?,^}`xB}8|P]Wsjn}9I=47؊F ŨtM +q|vn#Cpj~EvSӅP9×/9yxMSwOcerZ e*5a%%. Ȗc@IHC\UO )|蟠Lh6˟5Bi:QѱSIc1=#3$M5Jʪ.HrɌܩ8]s+'tq%=m,Y/pu'MO?J!&y ?6Nm3]E(\W I$mWqu\%P۩ 9x }ĺU6JRۂO3)|fp.%7=T-44S43DDCnrcยsZb+Pڠʛ(PűAQC`ܦ%S]i^/ʗ<!ĞFI.rH{e>U{/tbJq" QƇDy$hqvSA9\J"qTz}IOU1c?TQ5U@1YGtܙ3C{Zߌ.$KQ¯lx&jL5 :_tN^eW Е38{am3YmvJfq7b?[дpd%ڙՍ^Z'X%LFVLT7.ڨʎnꕣpB;2+#%N<߀哠Ֆw`R @ڡ5ڃ[KB"*תWAB?ٮK>ӝ1w܇\$8@=Z-55]% gW08caZ9v#Pk1#CӶ@{voᯐ}P/;ͭn:-%Vsñ$NF]d6HZRK)a(G_^tE=Wntxv7.,>:SpGAu0kg͎0SNkM$zRh;DRr,wDwק=6KZ9CqTM1ݵ}ދo|:C폻xO(.P9Á<۱}:r,ϷcPylO $_*1"|ք*MA)GT<BEr? d%[]Sh\8\z 34=~)! Du 6#-*l9Gsh"p7Vث[ԄE)`R89ºUjRޙpotI.s^S(5 ԛw,aTuUTL4tx٩JI̥_S&9lu-]gY Ku0 #NNP72\-?}&`52:oO.<65-UVJSesZQ孮1ۧIKzr>}EQr9בAW7#%H©Xsm˭]AW^Ba ӧZG˓پmpE6ʖx@eVxFLSo3+,BLv/u&)IyMoT^<M{>p*LۑKl\5gH+ztkT[2zi\½zVTinkH]p l/߇(Dјif-i-ä.:Z jfKp'qFDb`kcI"A/)D9F8;v,+ۦܶI6Ifr&diD$)-I*TsvRclH}NLJ2%Z,y6%MLېh%JTS]BBS) Op=g {x{A"x. ### END LICENSE from gi.repository import Gio as gio from common import Schema import logging logger=logging.getLogger('youker-assistant-daemon') def get(schema, path, key, type): try: gs = gio.Settings(schema, path) return gs.__getattribute__('get_' + type)(key) except: logger.debug("gsettings.get: can't find value for %s" % gs) return None def set(schema, path, key, type, value): try: gs = gio.Settings(schema, path) gs.__getattribute__('set_' + type)(key, value) return True except: logger.debug("gsettings.set: can't find value for %s" % gs) return False def get_schema(schema): return gio.Settings(schema) # added by kobe: access default schema value def get_schema_value(schema, key): schema_default = Schema.load_schema(schema, key) if schema_default is not None: return schema_default else: raise NotImplemented youker-assistant-1.0.1/qml/img/icons/unselect.png000644 001750 001750 00000000544 12312451003 022352 0ustar00saucysaucy000000 000000 PNG  IHDR> sRGBbKGD6f~5 pHYs  tIME tEXtCommentCreated with GIMPWIDATXV ' +|RoeP:^咚 IsNJ)%Cc:s*=ەNp>u#3+ kfN5')Cnxyw_ d5zmNG0Rr"U]ru.#nz$a6xܬ ( ~a6xח~1VϟR Kf :<IENDB`youker-assistant-1.0.1/qml/img/icons/next.png000644 001750 001750 00000000615 12312451003 021505 0ustar00saucysaucy000000 000000 PNG  IHDR |tEXtSoftwareAdobe ImageReadyqe</IDATxb?1D01@1N8񿬬,ûwXX֯_ׯ_ pbljj+IIISN +++Cjj*É'6lV @ KP0,O>}_XXXƍ [[7o00 fΐ߾}C8 0ޗ@  GhƮ.A߿gG{1EEEQ&߿3 ǁ!44a`1[n  AV31 D?0Z,IENDB`youker-assistant-1.0.1/qml/func/info/ComputerInfo.qml000644 001750 001750 00000022750 12312451003 023151 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "./InfoGroup.js" as InfoGroup Rectangle { id: home; width: parent.width; height: 475 color: "transparent" Component.onCompleted: { systemdispatcher.get_computer_info_qt();//获取详细信息 var vendorName = systemdispatcher.getHWSingleInfo("ComVendor", "computer").toUpperCase(); logo.source = InfoGroup.judgeName(vendorName) ? ("../../img/logo/Manufacturer/" + vendorName + ".jpg") : ("../../img/toolWidget/ubuntukylin.png"); comvendorText.text = vendorName; comproductText.text = systemdispatcher.getHWSingleInfo("ComProduct", "computer"); comversionText.text = systemdispatcher.getHWSingleInfo("ComVersion", "computer"); comserialText.text = systemdispatcher.getHWSingleInfo("ComSerial", "computer"); nodeText.text = systemdispatcher.getHWSingleInfo("node", "computer"); systemText.text = systemdispatcher.getHWSingleInfo("system", "computer"); platformText.text = systemdispatcher.getHWSingleInfo("platform", "computer"); architectureText.text = systemdispatcher.getHWSingleInfo("architecture", "computer"); releaseText.text = systemdispatcher.getHWSingleInfo("release", "computer"); machineText.text = systemdispatcher.getHWSingleInfo("machine", "computer"); var timeValue = systemdispatcher.getHWSingleInfo("uptime", "computer"); var valueHour = Math.floor(timeValue/60);//返回小于等于timeValue/60的最大整数 // var aa = valueHour.toFixed(0); var valueMinute = timeValue % 60; if(valueHour == 0) { uptimeText.text = valueMinute + qsTr(" Minutes");//分钟 } else { uptimeText.text = valueHour + qsTr(" Hours ") + valueMinute + qsTr(" Minutes");//小时 分钟 } } Column { anchors { top: parent.top topMargin: 40 left: parent.left leftMargin: 30 } spacing: 20 Row { Common.Label { id: titlebar text: qsTr("Computer Basic Info")//电脑基本信息 font.bold: true font.pixelSize: 14 color: "#383838" } Common.Separator { anchors.verticalCenter: parent.verticalCenter width: home.width - titlebar.width - 30 * 2 } } Column { anchors.left: parent.left anchors.leftMargin: 20 spacing: 15 Row { spacing: 10 Common.Label { text: qsTr("Vendor: ")//制造商: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: comvendorText text: ""//systemdispatcher.getHWSingleInfo("ComVendor") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Model: ")//电脑型号: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: comproductText text: ""//systemdispatcher.getHWSingleInfo("ComProduct") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Version: ")//电脑版本: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: comversionText text: ""//systemdispatcher.getHWSingleInfo("ComVersion") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Serial Number: ")//序列号: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: comserialText text: ""//systemdispatcher.getHWSingleInfo("ComSerial") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Hostname: ")//主机名: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: nodeText text: ""//systemdispatcher.getHWSingleInfo("node") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Running Time: ")//持续运行时间: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: uptimeText text: ""//systemdispatcher.getHWSingleInfo("uptime") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("OS Types: ")//操作系统类型: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: systemText text: ""//systemdispatcher.getHWSingleInfo("system") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("OS Version: ")//操作系统版本: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: platformText text: ""//systemdispatcher.getHWSingleInfo("platform") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Kernel Bit: ")//系统位数: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: architectureText text: ""//systemdispatcher.getHWSingleInfo("architecture") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Kernel Version: ")//内核版本: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: releaseText text: ""//systemdispatcher.getHWSingleInfo("release") font.pixelSize: 14 color: "#7a7a7a" } } Row { spacing: 10 Common.Label { text: qsTr("Kernel Arch: ")//内核架构: font.pixelSize: 14 color: "#7a7a7a" width: 150 } Text { id: machineText text: ""//systemdispatcher.getHWSingleInfo("machine") font.pixelSize: 14 color: "#7a7a7a" } } } } //logo Image { id: logo source: "" opacity: 0.5 anchors { top: parent.top topMargin: 80 right: parent.right rightMargin: 30 } } Timer{ interval: 2000*60;running: true;repeat: true onTriggered: { var timeValue = systemdispatcher.get_time_value_qt(); var valueHour = Math.floor(timeValue/60);//返回小于等于timeValue/60的最大整数 var valueMinute = timeValue % 60; if(valueHour == 0) { uptimeText.text = valueMinute + qsTr(" Minutes");//分钟 } else { uptimeText.text = valueHour + qsTr(" Hours ") + valueMinute + qsTr(" Minutes");//小时 分钟 } } } } youker-assistant-1.0.1/qml/img/skin/fcitxSkin_not.png000644 001750 001750 00000046634 12312451003 023215 0ustar00saucysaucy000000 000000 PNG  IHDR`[WtEXtSoftwareAdobe ImageReadyqe<M>IDATxb?@&A#.I,Ydtrtt=@ŋ[^/bEZ( Ǵ9=] oTl$<.@b":l?![իWĀ]:)?va`SF<,ij0?Sš.|6T5! %o}ޝc|Oɢ|d=ÿ_ǦR*oYo_dbiF Wg͗/\e c̹3/dtVCԬ0Ͽ?>Ʒ2̜~h5p_ÇA, 7^X}<?ؙل-89ۓ'OݻdHII)++ 133hP8bwx@x/Яg,a|;dzo޼f;v@-A Үءx/@PL9[l NUa&s $xuOF^[v7Dv遭G-`}@3,i\ q5l  $?ofɻ'-w|sx 򠼥9jl>= kh) ,4 6ze[ߞo:dz~8ЍpE˗;"`y0yϭ= @Ba޼y@ի^7L' 1[Ø7r9Z:>P"'' T,(*U'ʚg)78g3 ` @ q-SũFڭ:}y"03dyMLs6wl /sIl 0]0!'˓_o~w>x~w~QG`vgL\X?vQFƟ dsPKi5^? lXV:);,?i^ʀT[ӴE7}ǰ׃>0 R_> d`ۤ` &l 0v4M (2Ļ ACs cժ@rk{@01s}I9ީ S<;+|woq8##<u'CW~{!—e3?_]K-s*.둙 ńظ&@%- ||A> fl&#lV/zӿ_reL}+'=-0~mB_}T!UϧKe=fgfsqHسҠ&8$ $( ,AZP2PL`ЩC)P<8*rնIQ+6}K}x]_j8F3(@ P wX̐.H֦8eX?0&dq}$cϫ.**T"I}iwGEߦ( ꒒z ,GL[\+aEO$giӔ/Zr ܖs2'g O78 U%Hz~WaxGBZn醌_a𪏢>j;ؔwH?|5C9l@;k1NV. h0&j C)E>X,~X݅F.;Bd8W*S#fgV%3w>ְD:\ Dyִf hl$[9-ҘSY3 n8Ԩ Y[=`p9&shO DLZ%b>B0̴ A hST7\%wQW&"Q aW"79Ł7**;o BbȯNB7jF̧lkEJ%crHi1I^"Kr;d=gY?0}ei,)ܛyõ sT_<(LlyPtln`yZ_@F͞@m慲NX|M Ɓy޽{jE+J*X ƞmve-r,r$FM~݋+Oqw./ mV3;ܑwi- ,目6(D1Y=ݭ<`C2< 浄>h2`0/)08!B*<َxW/@N X.\:@OU7F=s݅YJT_b2OROׯڮS>#R0D!ϱ钳ԏtdt{G< j \.xB&LٳxB FL|4/ εG5qd$! ۔*f7d〗: 죃еVPt IJ˖-KtX gP(8#2ۿ7_gf2^-rls 97S>nDzZFfoRҳ5a[X??9-{utlr羓L϶4ɗ;UpA#GF -?N_ rRNL'"ĽG!l𲩝":  \vwy?Ċo]t[mU!5TYh^KƝhj=;G6Oqj'>ls|yڢ v'9rV^s^8`.⩀ =eH>mOorgWyuI?n{) {ᏉA}OF0xĢ47sv5K^,i9P\oB!j$]%7~:6e/x\=RMm 83 =ܩ l!U'` B\GxboIr mDxx/- h"Ug|ښ$]yr1ivr+6eIߢѼ;lN֟WGrEcWeiVW^7P&0 4?uy'ƭ@(­Ia^,[Wh.Luor=B$/pϽ FEv}C~S%*;,&5Wa d Dw^xSX4y!+?{aD49 ՂUUDmӳf蚜b_`[F\y7w`؜ "PIu $I(cRw H?w8~{PLL`灪%Sc8e:s9ֽ{kHBLjDvJmĩNaF񺯒2S6ɸTP ߱_9:/ wqœ#zHnѠ&Ll9VHsfen;6qXZGpsSU]^PwJCC@dtcG2 ? n]Oo?YXx@|:_y|i{їuvRQ!/:)umܭ0!k_IY___--Ni  KP%sQ\bd Vؒmc7PNԅQ{t͗N4M 9P,F~Fd"n@6W%';I~o[mc `E8&O,]ڊ6ƅl52 ƒ}g3^7k[f'в1f$\eoOԨK30`^7Igcq~ݔ4qB^=m+A9a㣣ǝя+[hǕè,rJ)Q9T/?TH^qb#dmonztICܗB(_wg_5]Ow]_y-dFZ"fL!gD P=d} y cEyp[=UuHKoq V9?ukQ(>rR:!|ا9YA]aG­cz\frBȓ!;#!+&dou2ֿSvL^>aEqٮ[Y+Y;> ~<j\BP.9}fYZbsaoL(%uuA11?Lf<]:w+-_^B2\YWP,xee/.bϔtArxr$=\p[(pnZAbX a-{"r1 8I$\(x^J|rV.sfGz < CuO,$@ %2@Ldee?* >?'_s ϺO[!P͹m$tiS|@8?6i7xs ϛ֮^jx6!`E(  梄\tHQ&$^4E%ۖ/f40)-]u23#7.|>H^4ݣ s)''m=PlYIIkGC?Kyں}=ʿkꏘXh4$J2lvmɢ{;%jWn\S-盒{K6J$94s9f.>M|f F;3Xv*zX܋l>}Y3;T]_9 ]wBi}ƕvt;va6y=I{Ta ǻQ|ɒ%;aeeֵv99v75m \ҵy:[Re{ߠg'F-uG1`ۅT#*NtF̜4s^kվ5k~eYW[0> ҏdq#x>/#xUZ6x˹"//5ʤML~ІrDhD/6iaBSIUahK.Sv1t :Iv-k{pggn0ӟ̕&-xouhSC)CMݹK=1@k&f]L^F9Os]޾蓫 I7NύœĒ܌V~ ʁ-v&!$_?я{hyc<]eۏ($tWܐq;LFa](jq}T6v{st,jh}cfmyLwxP0ΉԌ TR}خye][/'O_;YgϜܷa_'/=zd |r6HC4 6a"߳'|Tx[=3IFۯrh^e}r D??z  ks=R۳ONa[,Df޴&$։œjЂm1ĥI:3FyfAΤdRqa`:Rz?U,,?MAi0I=_\ߢ1ݿq|/;1;7/_8>BOOfX D?{Ɍ+0y]t5zWӒ/A(Ž Pf^d*æ5P/jor$X<"suh[ j1U?}ÉjOHoƆ\E}iGcTzؤIpE#+ܹO/|6DmBlgrٟSei{>=rt%6^zf˄dp,%yeWzCXtڅ؀ (?BIK]do.@hkwdA(`|G+:ml)*dl YvݺS"^?uUˠy7}tNli.5+=)\Oc4,kԌS#.$fɮѷ UO'? 'E@ qGA0 ] =11{7@ ʲAX\2FPRE4[{k\SG0v~Pjie@ǘ̈́h#hqf ~^k[qmIQ*SC,idH&}H{cal+IBm0]s5F8/]4XՄ<2hk(yJ9؏{,1} ²a R/IjzΤ$u!>(PO1aAenpa쉠3H[#̄UNkI<֯F_H:FeVu+wNE߾-.o+ 2]4%PaJb! CЫ HMBaܐ*9:QCyuI A/*`\(baжN/yYKg/`]T"覫^jΉCD\A.XEId]#, 4F3+CU%#"_=ʄbJ[qjinnmTa>#NfT|؈~cFfN& nN3U[s+Vʚ'x0꒤YZHP*.xs?H%%*Þ w>./Aj9m*-&qe`ӓ{jNJreeQ i &C'R2**?绹k\aWR*e g 梨-i?߂PK)D avhZ u&3K ʲY9HIIa{Lx3҅:(O? {.7CО)€*=,\X‘ lPH3jSw^vAuɲ6ofTUfY1@Pfa^cP3?-p<6.f\.h 0}Vj_XlLU*V@X XK,kmOJcXAEQcGl(*vņKobIƨD"* FEA( ,XAQ-3;ěMr?3>2;{~9;pí"=ݾهYr5ԿyU97\Lj Bdf,8耴L-p7L{X}5,rUƁGP57kɗ1abR?Wk8pс#U6wt30x28pYXφ$.3eꬬgϞ(.eY0 stt䶌 ',$l(k nw%P&_pvv _NKo|9i9MՇ O-,~5ӱp3C?_֗MHV_2@}^iH5fڲtJ0ֻr :I(vhk2q'oM1#x [j^]aDnm[{ȿAS$A/lG[:)e)_=b4.?/ﶵ}]\ܔZiXi4gWĥl"uA\PTVVMwX^;iҤ,i˜_y_\O>znےu/y-q?c1wlSNO7YQ)YAxBAkB'` clHSaV!<˺}r yaSɁߧB( Oʞݺu ?ׇ4OL[ mQL Zi.ΉSSYkBCM۰h͡/ N>h|avƮ)ЏIyCJ*z|p=);G4V>Mx̦flڼ1"ҍU5z{w!Y4YQ=m݅Rzyyi4X---_5@hɓ;FP+!Ho9q{ƒzWm6rӒ cX!>"e4ل=.}P YwJ'w]rloȃKi̻/0{?~qn?e5#td1槄y_ WrDI{fSr x6G+.'_k^=Mnٙ\u=TыLu=AL@m>kׅ: E"9=8I$x<sɱK^zOc4/(|g}2Ci+me1왐ޘ5qKÞm>>gA}9j=ۯǯB Ie9#F`mW6nCNi)\¤T(TϑgØ>0r`())@xzzv'ثWA ] JzUn*kW}PcλoK'6C}x园>Xe(a] &t&=/-}{aj8bq`!K?xw9HiQȂ 1 |j⼛{w])zo>]3OLV=)_L]pT^)aVIj'hV] Q66>&ui@3,!b2z =d}t#,ިlHj)Jc|]`wn_OaZt:=ʪ}yQJF!MĀ`0F,sxQ2hӬj›)\J&0C/A o(^JJ 6NSDch5x `_/PZ<8PQEyvގA62YIw1|OGYrHeҁLm|US;F{̘g3j )>Zv *OH9ԁG{`R^VTx֮+Go0Nvyvju ?kQ.!}/tj O?hh޷ۉ{ Z9Gw7: l݋77D.]}6#p*9V%}ˈ2˻H0rf8Ǐض `X _9ZA oluϊ@]'\wCK:a+?ZU?6ouw D.МaΪ5wՉ僘=8OեɟGoX>26⧃zYVEb0bgykIQXWXuq }Gn{ | DqKLHB$4 3C.h||r7_ՐeRN|nU4P }Ց#Gٶr&&Ra %"{L Hu%Вo( c&&v IR8pN>a ӞFOY!=w}Ѿo?tn^TxL۶}Q/_ ӭ5)YkbUDǙpkxdS=lj^ҜsN`M_M^FBMʿ [[,8ymmKWKC~/>)#gQzcg%wE.} 7|eaܶs#go”V>ϋb]u*fUřLfLC9 osuEUY? _٪v}&X}?B}!23T%i'iIsBR-B ){L!|l?@j9wT0L,z야;ϊ+\Hp=Ai; ˷Ϭbcׄ3y8xLPV5QQ$aՒ=jJ!gR4=)رdm.|O.a;=f-\{e{|ӌ;xZ6dIV+KY/WPYߕ3WBx]];Z$fCwCd,0 {eL`k|ݾMD}M_)chƭ=zpʟHC{+F3,A֜^eْ[KYY=_ @<ڣu [FL7֮WOx#A|1@P$Dh M -^.HlA@0 aTc"jH2 |*S-lll~^x; UJX*JK)k* s c!kʧ)IBش)i^=~`޵H!}w?JLJ%4*9M4qA (vTB۷i$) (x,|n4E}3>NwL!A ̆$iR `HB ݜܼ2\2I%.1L[QƁJg/) OTAbI0V+ %H#t^cc*eͥ;g!ƭnEh I{yXOCaIs֍B sÑCR&ZhBESjBr3&q7!/F~- _.#HO86(%^_n~={Hq U+*bB8#@PHy<C"0y*ة394 x5 jҫO~dT2֤Q>GbJNyrzo}]bbӍh  w&/.;JpJStbCN)vH#J zUh (II96/ٷbq׈a HQu)B PVhVSpEF!s0S߈P5($~MD{Zdv Ccf!GL 3 cwpi0 MA*qtTE6NzCSU͐K' ^fF5'hN"DVw5v3SA\K*vY*Ldxz9 H'DF5kG5χq Κm301R7?*U˳ }͝=7ˋGMJױaQA_z/ّj3mHY\zEhsկWDrkHyP;QaЩ`3}_/{+SC=syӈ_r4_M1ɹRÃ{J]L)MfnT+ԡh4/޾DΥ &/ '/B.:ChD 8yuw98EUt-1%2_ Xi*~بvf5Iq잆e(/gl ׎h#}OOY3EswL)=Q_ܓ(xUHBIl}>?p\J#V e눬R&ԉz:17)G4^)Z=h4[w^(&7{h{tiUFYP\aa*h 9|EUдNnğEe%`V65gmFL=_x NۏĤπΆoejM*+HU*{MhhAC>8e%rjbum^# më@ɉ^ubJ#;3382eÉOܦ {zf`Xחt$iklwQN0-2 |rc>X=1$yZ&I`N'v\Z(haKY nkIe~|c'px4|$`!feʭ;y@Ab!]h9`~;ORe,s3ϗw6g~gOosPۄ[}ljl'4_xHYpA= ߜLi沷S9j:d2ٿЋD@1 LxP&1K"0ƥ`Za"avM )/|=t,~U Yj6fe QwPHq%P}W&7~8 U: ><|3QgXF0pP=18p%(ΞRRZ)` k'5 sFDZO1SZ vV=A'״ k-~(v~Ey)ܞ |]8SwkpY"`kt) 8)b8p_uApJ)6 ғIENDB`youker-assistant-1.0.1/qml/img/weather/n10.gif000644 001750 001750 00000005531 12312451003 021434 0ustar00saucysaucy000000 000000 GIF89a008Z8Z2P˰ȷ̵ũǹξѼݹ/Qȵɹ6[/N5W8[!9Y1Nt6Syʣ0Q5W1R3T9[:] =`!>a!;\%Be+Kq,Lr)Fi$>],Jp+Im.Nt-Ko/Lp6X4T{2Pv2Pt8X7W}9Y:Z8V{7Uy;Y0Ih:X|s‡ý.N3U1Q3S/L0N0M1O5U6V2O3Q7W8X4R9Y5S6T;[7U'Hn#Ac!>]&Fj)Jp :W'Ef*Ik'Ca0Qw*Hh)Ee2Sy-Kl4V|4V{6X~5W|'@[7Z6X}7Y~9[5Su4Rr>`cflQhæw jqU*|X%㪹ЛqR&+ xgV̝3/rȄ0` A*H H@J r F f&0(2$B qa,{員1!|P?8а,L6+h+|F91##0| Gآ$ B:p%b%L@ `t`bˤI - HS96Ao4 ] /<)C(dǦ,H AH Ppv@—azA.*@ fcG+;q(|ê^` fB @,GB. :Bs (2zA+[md >  wK R &!B. App.@m = Ђ ,*b0J" vЁ,E A<6.'1|r@] .agtF ~4 "}x"JCl> لwp(kG! l0Bao/ѡ@䬁ˆH"H"#H[o <>!Mw AdobedF]    1!A$QqB4 a"2Ddt%eFH 35E#CcTu&'w(8 !1AQaq$4TV2BD%56"tudEUF7 ?>L"-&>!91&<+LbLG @!1@ KtqB4eֈsP)!@B`NǗ؉HmɄW ZH1&#ԅĘt%:8L2D9ˏ(BB YA `ypuKl0'cD6Pc&YcJ'yU hGhꩆT5K<}1^ }ko/⍟"@vkuz ~ R;uZ[GF{ίB L>UK9!||_t!~ aPO40rk*}ڼ#FVi8U &̚H2(Hd,%Z[m"wP> G*G|*Ymls3tNwD07uZ`m[h4VӑsK V2ӥ뽶ϘB^^%r%:w1Zw?i]fmO{X`X8p4I׹xT([u_5oưTJdigOvC*v[G$3-)*Sjw-b'z2ޤ4t/QU>BpoSGl?8)M,7b.*֘pZnwXwLAi +mNOK9S%Z'ܪ`le ;ò.oz?fZrK'ݮ\`6;9T葭;Ը)+2jNiZX.=0u܋5 n9mkƥM䤨$$ yeJ{sB.fDlalZ$ 4HЪc*+ЍW)/iIkdFL+qb[S][rvոw3t6n3A+`B"C"mQ I4an l\i9Tf7˗ \PviɤIQi5G0`:9UqO֭Dpz-ep4Gί媃*vSHKM읱.I$7'Qu01' |瞈 -,Ҭ)AAH}TIGw{Z#akT#> F{'{UԄ2flV*".%1U{NV5pT nsW˚s)usB! rz pi]Bɉ&>wt#m6'r7%ˉӖ_c=ܩ {V=8Bp%RA)EN$9X 2yd9'`_DI<bb8-3[bMA|+R>(YT9GQ>{,[2g]=SxdYYW.D,J{%t X,43n4c_N]H1R{6aN-_kyi-MUʎK&&ʥ*@ۑsh"28F|lCltpa ko%NTZ5ߧC}S4+j)gWN U usHQX̝+h1 #i$Z2;֦_x\2bQ{rŞ Հe6*/Ds4^,Ёɶb;y Z_Yi+TVHM"9QyE1V32& NT)i!I%\.J8phtErFck(t?zԻ kW6t.)Rgc$Mr y_7)i'Q<ʛ5qEo;GU|Ebb4. iECՔ\l./ŷ͋MEUμPdToWeJ7tVI&@sȆd]%C ţ^_ydݩw*]64mW6pʙRʝM\4g׆qc"'Bp[ql۪fkS_Qor$l -hsSeC|#8"G/W;,fl3d! X(Kmm&RK6#i Z=PqRUe2dһ>x&F[r*D5a0C"2^kL5k˽r:,^WLҡRIM>q\ٻ E HX;ͣLjr؆?g+?,9$6Y©*#2h7x8xs[=WIͭHL+OwEg|kR"L=rc7joY^gտF͊* MgO((:4h㿸;I X}?_aN,Kv<Sk9LdI&o)`&i=ŷ/h Kpvޑjd+0xtsztKO zB r `vަ4`l=YE>>`vަ<P% zl,"DoNoSp]hGKvK._ N ӟ hD?Ւ   l7~hDtdCD| 08}ӟ K㥫%}CDxYS%5ݧ?7-{H.TB۶h(lh5[i:S: 6 f9)狿a _dcssи@?]~֎;f>{5P/,g}}}/ ; 011qʿѰli;`@C޽{%0GY:r1ѷt``mɁի7,,,@?Mb=zȄl;w;::&/A%s&@00Ф#)!!嫣S ?[WW r57~Y]](9@ (b?w"# aqFWl_~M F8`'ŋ@u Pׂ<.\(l@@5@ S2 .:{-??#ݺukSJJbPWFheH bSNa3n{zzf{@.(-8u9r$֭[;i-oݺu߿O  ~p`L BΝ۠`gg/ qev\dfi=n٠ET =4Dd%,c d%S_ԷIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/LITEON.jpg000644 001750 001750 00000011737 12312451003 024005 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    1 !Aq2BQ"a$tw9 #Dd%7x: !1AQq"Ba2t7r5u8R$4D6 ?M+d\ԅ1$^U)|Ժ"M{}R vRtI/I˯0&.$Ң%r`R:eOw JX\ԅ1$^U)|Ժ"M{}R vRtI/I˯0&.$Ң%r`R:eOw JX\ԅ1$^U)|Ժ"M{}R vRtI/I˯0&.$Ң%r`R:eOw ˶tWXW#{x=/ml92A,HdzڂVU1|mpW&|3x[/6Czv2a4%y랛{VFO/ߓ􈁺֗ë{)cU/6>eKN&";r&mI!tt-t|&ĺxs>xS-A#ZDv2+W,5ohDv#@{m7 9c(fAZY$xqMD+U^ YJ5,%aD_-&- 5.۸bCfCb#k}Jo=]۱dE!zBD IjHJ=(UǴ)۬Ժf /=&tU;yt "CpG'\ɢ|89x0 #H^Q-vXՈ_@;+<5:)׃`=,*ro4f Zӎ([͏e y ]!~C>5* Z.+v!T[HJ'C{YeES~q諝3savɉW/!z݈yݸ>o}*EbXI/5)E;(^X&p9DDH,Yw/ 8hi8 & >qFº `ܥ01D'x:OCNM|-bckҽ,Vr'+G-j":J=+4?ݿ4"7ci1dW!&'i|A0"81 tp9s[FM7 q0șZ !L/n2 `ͦHG/luuCIw q11ˆsZ;u:\L V7o-/_yu@E%H&yUZZb5m"£XTK/骸k1&8Tk5{Z ꦁր H"=\N΢Y;JoDIpjKM-Rv+,v4/R1lE|pC5{n[\KmT~Uq|I &d̲g6@db[:c% #d[?YG/ h>XH4ŜfA *z3y)P1c=VJ ʻV m!c*hKMUmxJG g%rzTmWoP L}gcaN*~eU?)Oͧi8kngo+Csk{պD>~ϦL&OXv(jgGOciKRC;1/sX at$INۂh.Wn 's^oq !- nm3!4Wz"'W6RT71YpZy_X` ā9eRcwCJb٣VD5%Jii."%d4 V5JNocM~v Nj\b0e:㙕i 9 F~a_My#Yj]oˑqeW5^//oZyL?0P_afZYytU /ZұduA70xRX\j[őpRfg2b7&:rl"2F_8bʃ?)&m5c֑ؒ9zNuX.bV7MdY%86IV;_F&.Lɯ$`|F/C>Ox^-KnK6_)_9#亵#~_7ſ6+նE/aJdj28嗏 =d Gq*.D/݋NYRlh힘p$@1lKvб7m9?!#@y-u5+vDp I1mG '%JV)X @1/)|aǏ '1R9*%NYi꓎=Ў8q=[gg{^:ص_=tKtxYWuorKCNyd'%Gpzݥ8kyˑ%l59&6bav_ q={V^ZOsvghDHl:0~N..@Kl̪1a@b:""G4"$q q<;SW.m:ȷT8I͗TQ3 Ϝ队xa{ڦ?~^lmpRّ&St,"V4x\/°T5-\?RBx93δ/rVK:]Ȉca09t$@Z1k A㩻FraMc f[5=Q=9d ?2n<Ȱy"Y<6ܘ"7=$ :pEkEj^D Ӝ38Ecq5qq7-5Ns 8!JQw!&| $".by 'g~ox;xrM2j-%()K@xq%8~ݿkl'Sɹ 2]{Uȵ]wбi4UɯHSA5Q"MGK)׷AU o%)GDAP\ Qa@RrH *(2W.E(Tyjбi4UɯHSA5Q"MGK)׷AU o%)GDAP\ Qa@RrH *(2W.E(Tyjбi4UɯHSA5Q"MGK)׷AU o%)GDAP\ Qa@RrH *(2W.E(Tyjпyouker-assistant-1.0.1/qml/func/common/MainCheckBox.qml000644 001750 001750 00000006364 12312451003 023372 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Item { id: maincheckbox property string checked: "true" //保存总checkbox处于三种状态中的哪种 property bool checkedbool: true //总checkbox的bool型值,check通有的属性,在单独点击总checkbox时进行总控制的变量 property int minimumWidth: 15//32 property int minimumHeight: 15//32 width: minimumWidth height: minimumHeight signal clicked(); signal sendMstatus(bool status); Rectangle { anchors.fill: parent anchors.margins: 1 radius: 5 smooth:true Image { id:mainimage anchors.fill:parent source: "../../img/icons/checkbox.png" } Image{ id:simage anchors.centerIn: mainimage source: "../../img/icons/checkbox_seclect.png" } } MouseArea { id: mouseArea anchors.fill: parent onClicked: { if(checked == "true") { //当总check处于true状态时,点击后变成false状态 checked = "false"; } else if(checked== "mid") { //当总check处于中间态时,点击后根据总check的bool型值决定变成true状态还是false状态 if(checkedbool == false) { checked = "true"; } else if(checkedbool == true) { checked = "false"; } } else if(checked == "false") { //当总check处于false态时,点击后变成true状态 checked = "true"; } if(checked == "true") { simage.source = "../../img/icons/checkbox_seclect.png"; checkedbool = true; } else if(checked == "mid") { simage.source = "../../img/icons/checkbox_mid.png"; } else if(checked=="false") { simage.source = ""; checkedbool = false; } maincheckbox.clicked(); } } //maincheckbox.checked发生变化时激活该函数 onCheckedChanged:{ if(checked == "true") { simage.source = "../../img/icons/checkbox_seclect.png"; checkedbool = true; maincheckbox.sendMstatus(true);//1212 } else if(checked == "mid") { simage.source = "../../img/icons/checkbox_mid.png"; } else if(checked=="false") { simage.source = ""; checkedbool = false; maincheckbox.sendMstatus(false);//1212 } } } youker-assistant-1.0.1/qtsingleapplication/src/qtsinglecoreapplication.h000644 001750 001750 00000005025 12312451003 027276 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/legal ** ** This file is part of the Qt Solutions component. ** ** $QT_BEGIN_LICENSE:BSD$ ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names ** of its contributors may be used to endorse or promote products derived ** from this software without specific prior written permission. ** ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QTSINGLECOREAPPLICATION_H #define QTSINGLECOREAPPLICATION_H #include class QtLocalPeer; class QtSingleCoreApplication : public QCoreApplication { Q_OBJECT public: QtSingleCoreApplication(int &argc, char **argv); QtSingleCoreApplication(const QString &id, int &argc, char **argv); bool isRunning(); QString id() const; public Q_SLOTS: bool sendMessage(const QString &message, int timeout = 5000); Q_SIGNALS: void messageReceived(const QString &message); private: QtLocalPeer* peer; }; #endif // QTSINGLECOREAPPLICATION_H youker-assistant-1.0.1/qml/func/page/000755 001750 001750 00000000000 12312451003 017777 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/icons/box.png000644 001750 001750 00000000521 12312451003 021313 0ustar00saucysaucy000000 000000 PNG  IHDR]otEXtSoftwareAdobe ImageReadyqe<IDATxbp1#0$ `XR HD̐@̀YĀ eHeDQtG 2̀a4ay ŅXLb lne@'0S?wVln@ |&4M&BQ` # 7mC`聉-(p fx#2K$RWGdI%5 #)'1AS6[n}IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/PANASONIC.jpg000644 001750 001750 00000043127 12312451003 024324 0ustar00saucysaucy000000 000000 JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:03:31 15:41:54]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IO'Md q˪}7^u4GtZE^n|eea? 6 ׈.VGdFSWmys31؁_꾹 .7]œԿ{U=h\_N3z6FEXk[[m5UݻT0Wh*u~kM7w/  m^=5:=K_u:0lq=RmnVu|p.tl#"(Y&QC<c&s\:]2n87b9Kd=6]z?\հ]i/gge*14{=n892;<}0 oL}fqAI6aށk]!HY;psP/qWSO.*eX d˽@չwI8bVK/45pۻ K1pZDht S!#~/-V qF^uӬuL"#k%~emů>uORYv7vQmW.o[MqV7:վ8VkcgmRϞ!(*V-0Ag? nUEキ6pcO5r`u\~nٳf+ Egk[\ lw.uBS,k{u-5VpzU X۫~{\75 [@xmPzc*6:5hk~uΝw@ʩgӹ\NkZ=K9iuח gjsomtRݛZA yCU_w^dkȬvK78Z~rrzWTʯֻvK=90NfC:թht#BSu۝Um$7nnKK$꫱g.S:p$k{K[Ukxԝ{nnw[]^KqŖVj|w Gu&6 p/w^QRIHMC~Lp0Sv/VIL*X+I)Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ Photoshop 3.08BIM8BIM%F &Vڰw8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM?F]asint]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FLJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IO'Md q˪}7^u4GtZE^n|eea? 6 ׈.VGdFSWmys31؁_꾹 .7]œԿ{U=h\_N3z6FEXk[[m5UݻT0Wh*u~kM7w/  m^=5:=K_u:0lq=RmnVu|p.tl#"(Y&QC<c&s\:]2n87b9Kd=6]z?\հ]i/gge*14{=n892;<}0 oL}fqAI6aށk]!HY;psP/qWSO.*eX d˽@չwI8bVK/45pۻ K1pZDht S!#~/-V qF^uӬuL"#k%~emů>uORYv7vQmW.o[MqV7:վ8VkcgmRϞ!(*V-0Ag? nUEキ6pcO5r`u\~nٳf+ Egk[\ lw.uBS,k{u-5VpzU X۫~{\75 [@xmPzc*6:5hk~uΝw@ʩgӹ\NkZ=K9iuח gjsomtRݛZA yCU_w^dkȬvK78Z~rrzWTʯֻvK=90NfC:թht#BSu۝Um$7nnKK$꫱g.S:p$k{K[Ukxԝ{nnw[]^KqŖVj|w Gu&6 p/w^QRIHMC~Lp0Sv/VIL*X+I)Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIM2http://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-03-31T15:41:54+08:00 2012-03-31T15:41:54+08:00 2012-03-31T15:41:54+08:00 Adobe Photoshop CS Windows uuid:d94422aa-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:d94422a9-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:e35da45c-7b04-11e1-873b-c4fd423be6eb image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثW$0Y&m;*=rB2]Hh+#q1#PAUȥv*UثRHy"(3=QM $D=aH#9[V"0q̏~99~ tݧؾ6ec6{TE*>RT18YNzi~dB'޸ e}~|G&Fa\5יE&Ǐ,\=1̫ӗ=tĎ}ךn.y~FAndZ%~Tʣأd3 edu31m<ϫ3P]RXc~cUT^X36,y>s_q()hZ`Glmdm&oXsĤ"j[,݉O}\??" T5 Ͽ77[i2s?ttaD/ڵigLXa?(Ǯ(WmWu}7Z44ӕ,#(+0_n9qCeF'/Zə| ei%ޙ<$n&FP&q o☔GGL%&T̞a򯜼$*Y6T,r:Utc.zY# Ǣ+lͦk˾\nUxgh!S+Kgݸ`I3 W[.=_ cT2~fj-k2Gy$G"a'2(|?y˖a xloZUߕǜ͢jw6Z)@B;N|s7괧$4ipC^#t.CU@;W5ˌJDDp8 oqWGī~"1Hׯ3=>|5|˼C/i-ꞔ\$uƩǓo2qщ7㟜CMR-]l UCW<`ʸx'τM$Njq+q3ϣd0 /Ou-RZ!p]:W.\{k82r \S[Yuc|%wiiOHrl2KuSUzN*h );UIZA+@cm=}nR7buDm"ti>/RG)8ߖ*y-p+S- a.]TsV~A]Kd_y C(mSM#}vIq;QXѨ?kn bմqDjj O|UN̺ʹ1](-ڊ7i RQx 3^zS UN*X6E b1TO+yz@#QC*F>PyPӦ*WP(H l6e&P-OoYFaF? O*ҴILeъˡܛ-Q B7dZ}Gx&B)Sm- X-Ŀe*N*UثWb]v*UثWN*UثWb]v*UثWyouker-assistant-1.0.1/qml/img/logo/Manufacturer/NVIDIA.jpg000644 001750 001750 00000011506 12312451003 023757 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   !1 Q$aqB#4D A"3S%2RrCdt5u&csTEef(!1AQaq"2$4DTd5r3tE ??rGKQYގR*֍3&)j #-qYXl4jtˡeQ XJ18eg8 rT=kZ}管jb(D!EubVĜ?{ܸa|Ʈiw-Bܥ5Z;øKo[6ӆ1}șe"kD*8x"dϬ'݉h?z@i#=D2d>`:ZwQb=aW{z+i2O:B iPM"6VfJbD DBGHuh=Y}A<>KKv n VxA_%$T&q$&R#X.rMP E1 bS]`3t(TڲceB<ذQxޒ9cKl2 IUu$Ո0°L؍O;tw'<ug^UGMo|}EG#;W֟G~i19 8 \le{SؔkDOTi=:MDy5w >T :M2sefXа4" طi6{zW}8dD/NJ:o(գ2+6_! h'cin2cHݣY$I$#*"Xp| J8$Ó\Nh貣DƥzbTRh˞AGjdL·@˙N+GǗsRyx8[FU o%?5(ViJzk/*IyXҞƂ]w$n9y?'j 8I_֣y+o'67;'#QnjsS{Ӛ+ؤ7yr}2G{aIY+^I!.”՞ۙs3NE!a(HtI~,4e1lC*ۨVti:ޯoRrI)헾\paaw=&_Օx8$N3,*o"FhG$p.ݢUtM)NpVZBǾ5&59)Y?0crJѱBF;Fw``FJo|i/!.06Oo[Yq1rqiGvGM4y>ӂ(xWo1:GTj^m*o`6KLOJD嶘n3w>%< ʽOa^9o+c'2p/wҷvTdtS+5!=2d9 1(4\yg3>RV;Ez]EJTUrDPzTRRxQsnkӄh%s=.cJsh[|gyY/ U6[uuxģ%˯&F=}/պԙRR7 6k% x@$P &sm8-HR5F洅v6j$N/sJ18% 6nEDlTUmuaf͝+˂A:Op&/Et)9O*S M$ryG&Խ0U"8G8t=!(>4Ss3%Crd]jaAuo-Usu^SOq|tqp6m7b|b2^?|F.[_ n-55YVNYs|q/p#}[/쮑ochH_VՕ'~,b"=y0%I`r Wg~nIj*DIAss.LMNPytcozw¢XpN1SBp:@76A"7r]ٷ^}G)hԪM)TbnoVZU|儢AMm(L.v7 ;}.PJ yJn.V5^Vt!f=.L@gyüVTZtMT_Q%t+aέ VeLɝn2_RJ9;ivZ(zjN 8QRjp۞\򐢁5w#@%jsso&[ۿ8U3^:~ qh44H{Ki7xaX[kpj ڗnħ%а1:d`l3}mNBf曓Ƭ؛X˒!yn1+,*HGkC~!(FYzY9ys݋WHgRo M*lC p*h<&p2j@==/rP7ȼ+}v*{RtjñȨ~E&qC<c\w@f VT':t9E"C>D,Ss[.#ʸ$i]78JhX0;A|>KKv n VxAnkM2 ܍:WN2C!\&/X{ 04̗$eD=emRjsN&%Js5eȍ!9~'5R2?y/ċ~IozI3ZP:GTŒ]` RZ/RR @]`s`@GI08"0W_:2oiIY*LxWEJ#w7` )0{V}`%< kZb} rx=*>c2q|u_7>y]Y>mո սb0= c7SŌx/Rw5'"2"lt!i7v2]D6(x><^.aaBStՏ # ysalFvgb{&9FCTŃxؑ>ef髂 GQ\Az)[Q{ 8>W$T B'/:џ淩wt>zYwvi!p{V%youker-assistant-1.0.1/backends/youker-assistant-daemon/src/slider/wizard.py000644 001750 001750 00000024322 12312451003 027625 0ustar00saucysaucy000000 000000 #! /usr/bin/env python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # # Author: Kobe Lee # Maintainer: Ubuntu Kylin # # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import gtk import gobject import math import locale #samples:https://developer.gnome.org/pygtk/stable/class-gdkwindow.html class TimeController(gobject.GObject): __gsignals__ = { 'update': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, (gobject.TYPE_FLOAT,)), 'completed': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()), } def __init__(self, timeout): gobject.GObject.__init__(self) self.timeout = timeout self.container = [] def start(self): tmp = (self.timeout / 1000.0) * 30.0 while len(self.container) <= tmp: curve = lambda x: math.sin(math.pi / 2 * x) self.container.append(curve(len(self.container) * (1.0 / tmp))) self.container.reverse() gobject.timeout_add(int(self.timeout / tmp), self.update) def update(self): self.emit('update', self.container.pop()) if len(self.container) == 0: self.emit('completed') return False return True class WizardEventBox(gtk.EventBox): __gsignals__ = { 'close': (gobject.SIGNAL_RUN_LAST, gobject.TYPE_NONE, ()),} def __init__(self, slider_icons=None, pointer_icons=None, button_icons=None): gtk.EventBox.__init__(self) self.set_visible_window(False) self.add_events(gtk.gdk.BUTTON_PRESS_MASK |gtk.gdk.POINTER_MOTION_MASK) # 显示图片事件 self.connect("expose-event", self.on_expose_event) # 鼠标点击滑动点的事件 self.connect("motion-notify-event", self.on_motion_notify) # 鼠标事件 self.connect("button-press-event", self.on_button_press) # 幻灯片图片 self.slider_pics = map(gtk.gdk.pixbuf_new_from_file, slider_icons) # 幻灯片总数 self.icon_num = len(slider_icons) # 滑动圆点图片设置 self.pointer_pic, self.pointer_pic_active = map(gtk.gdk.pixbuf_new_from_file, pointer_icons) # 开始按钮图片设置 self.btn_pic, self.btn_pic_press = map(gtk.gdk.pixbuf_new_from_file, button_icons) button_size = 55 self.pointer_dict = {} self.index = 0 self.dsc_index = None slider_pixbuf = self.slider_pics[0] self.slider_width = slider_pixbuf.get_width() self.slider_height = slider_pixbuf.get_height() self.set_size_request(self.slider_width, self.slider_height) self.pointer_width = self.pointer_pic.get_width() self.pointer_height = self.pointer_pic.get_height() pointer_width = self.pointer_width * self.icon_num + 10 * (self.icon_num - 1) self.pointer_sx = (self.slider_width - pointer_width) / 2 self.pointer_y = self.slider_height -40 # 开始按钮区域 self.btn_rect = gtk.gdk.Rectangle((self.slider_width - self.btn_pic.get_width()) / 2, self.slider_height - self.btn_pic.get_height() - button_size, self.btn_pic.get_width(), self.btn_pic.get_height()) self.alpha = 1.0 self.active_x = 0 self.dsc_x = None self.slider_y = 0 self.showing = False self.show_index = None gobject.timeout_add(2000, lambda : self.start_slider(1000)) def draw_pixbuf(self, cr, pixbuf, x=0, y=0, alpha=1.0): if pixbuf != None: cr.set_source_pixbuf(pixbuf, x, y) cr.paint_with_alpha(alpha) def on_expose_event(self, widget, event): # samples:http://zetcode.com/gui/pygtk/drawing/ cr = widget.window.cairo_create() rect = widget.allocation cr.save() self.draw_pixbuf(cr, self.slider_pics[self.index], rect.x + self.active_x, rect.x + self.slider_y, self.alpha) if self.dsc_index != None and self.dsc_x != None: self.draw_pixbuf(cr, self.slider_pics[self.dsc_index], rect.x + self.dsc_x, rect.y + self.slider_y, self.dsc_alpha) cr.restore() dot_start_x = rect.x + self.pointer_sx for i in range(self.icon_num): if self.dsc_index == None: if self.index == i: dot_pixbuf = self.pointer_pic_active else: dot_pixbuf = self.pointer_pic else: if self.dsc_index == i: dot_pixbuf = self.pointer_pic_active else: dot_pixbuf = self.pointer_pic pointer_rect = gtk.gdk.Rectangle( dot_start_x, rect.y + self.pointer_y, self.pointer_width, self.pointer_height) self.pointer_dict[i] = pointer_rect self.draw_pixbuf(cr, dot_pixbuf, dot_start_x, rect.y + self.pointer_y) offset = self.pointer_width + 10 dot_start_x += offset if self.dsc_index == self.icon_num - 1: if self.button_hover_flag: pixbuf = self.btn_pic_press else: pixbuf = self.btn_pic self.draw_pixbuf(cr, pixbuf, rect.x + self.btn_rect.x, rect.y + self.btn_rect.y) return True def on_motion_notify(self, widget, event): self.show_index = None for index, rect in self.pointer_dict.items(): if rect.x <= event.x <= rect.x + rect.width and rect.y <= event.y <= rect.y + rect.height: self.window.set_cursor(gtk.gdk.Cursor(gtk.gdk.HAND2)) self.show_index = index break else: self.show_index = None self.window.set_cursor(None) x, y, w, h = self.btn_rect if (event.x >= x and event.x <= x + w and event.y >= y and event.y <= y + h): self.button_hover_flag = True else: self.button_hover_flag = False self.queue_draw() def on_button_press(self, widget, event): # 当前不是空时,重新播放 if self.show_index != None: self.start_slider(1000, self.show_index) # 点击“开始”按钮,关闭启动界面 x, y, w, h = self.btn_rect if (event.x >= x and event.x <= x + w and event.y >= y and event.y <= y + h): self.emit("close") def start_slider(self, animation_time, dsc_index=None, direction="left"): if dsc_index is None: if self.index >= self.icon_num - 1: return False dsc_index = 0 else: dsc_index = self.index + 1 else: if dsc_index < self.index: direction = "right" if not self.showing: self.showing = True self.dsc_index = dsc_index self.timecontroller = TimeController(animation_time) self.timecontroller.connect("update", lambda source, status: self.update_slider(source, status, direction)) self.timecontroller.connect("completed", lambda source: self.complete_slider(source, dsc_index)) self.timecontroller.start() return True def update_slider(self, source, status, direction): self.alpha = 1.0 - status self.dsc_alpha = status if direction == "right": self.active_x = self.slider_width * status self.dsc_x = 0 else: self.active_x = 0 - (self.slider_width * status) self.dsc_x = 0 self.queue_draw() def complete_slider(self, source, index): self.index = index self.alpha = 1.0 self.dsc_alpha = 0.0 self.showing = False self.active_x = 0 self.dsc_x = None self.queue_draw() class Wizard(gtk.Window): def __init__(self): gtk.Window.__init__(self, gtk.WINDOW_TOPLEVEL) self.set_decorated(False)#去掉默认标题栏 self.set_position(gtk.WIN_POS_CENTER) self.set_resizable(False) self.window_align = gtk.Alignment() self.window_box = gtk.VBox() # 图片与边框的距离 self.window_align.set(0.0, 0.0, 1.0, 1.0) self.window_align.set_padding(2, 2, 2, 2) self.add(self.window_align) self.window_align.add(self.window_box) wizard_dir = "/usr/share/youker-assistant/qml/img/zh_CN/wizard" wizard_root_dir = "/usr/share/youker-assistant/qml/img/icons" slider_icons = (os.path.join(wizard_dir, "%d.png" % i) for i in range(3)) pointer_icons = (os.path.join(wizard_root_dir, "dot_normal.png"), os.path.join(wizard_root_dir, "dot_active.png")) button_icons = (os.path.join(wizard_dir, "start_normal.png"), os.path.join(wizard_dir, "start_press.png")) self.event_box = WizardEventBox(slider_icons, pointer_icons, button_icons) self.event_box.connect("close", lambda widget: self.destroy()) self.connect("destroy", self.destroy_wizard) self.window_box.add(self.event_box) # 鼠标拖动界面 self.move_window_event(self.event_box) def destroy_wizard(self, widget): print 'Youker-Assistant slide show is over!' #widget.destory() def is_left_button(self, event): return event.button == 1 def move_window(self, event, widget):#kobe if self.is_left_button(event): widget.set_can_focus(True) widget.grab_focus() self.begin_move_drag(event.button, int(event.x_root), int(event.y_root), event.time) return False def move_window_event(self, widget): widget.connect("button-press-event", lambda w, e: self.move_window(e, w)) def show_slider(self): self.show_all() gtk.main() youker-assistant-1.0.1/qml/func/common/SetBtn.qml000644 001750 001750 00000004164 12312451003 022272 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Rectangle { id: menulogo width: 39 height: 43 SystemPalette { id: myPalette; colorGroup: SystemPalette.Active } color: "transparent" property string iconName: "" signal clicked(); //如果没有选中任何清理项,提示警告框!first page Image { id: toolImg source: "../../img/icons/" + iconName } Image { id: btnImg anchors.fill: parent source: "" } MouseArea { hoverEnabled: true anchors.fill: parent onEntered: { if(menulogo.iconName == "return.png") { btnImg.source = "../../img/icons/return-hover.png"; } else { btnImg.source = "../../img/toolWidget/highlight.png"; } } onPressed: { if(menulogo.iconName == "return.png") { btnImg.source = "../../img/icons/return-hover.png"; } else { btnImg.source = "../../img/toolWidget/highlight.png"; } } //要判断松开是鼠标位置 onReleased: { if(menulogo.iconName == "return.png") { btnImg.source = "../../img/icons/return.png"; } else { btnImg.source = "../../img/icons/" + iconName; } } onExited: btnImg.source = "" onClicked: { menulogo.clicked(); } } } youker-assistant-1.0.1/qml/ToolWidget.qml000644 001750 001750 00000010777 12312451003 020740 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Rectangle { id: toolwidget width: parent.width height: 84 color: "transparent" state: "Home" Row { id: tool_line anchors.left: parent.left anchors.leftMargin: 5 spacing: 0 //首页 系统信息 系统清理 系统美化 功能大全 ToolBtn {id: home_tool; iconName: "home.png"; text: "homepage"; /*showtext:qsTr("Home"); */onSend: toolwidget.state = "Home"} Rectangle {id: splitbar1; height: 38; width: 1; color: "#086794" } Rectangle {id: splitbar5; height: 38; width: 1; color: "#45a6d4" } ToolBtn {id: message_tool;iconName: "sysinfo.png"; text: "systemmessage"; /*showtext:qsTr("SysInfo"); */onSend: toolwidget.state = "Message"} Rectangle {id: splitbar2; height: 38; width: 1; color: "#086794" } Rectangle {id: splitbar6; height: 38; width: 1; color: "#45a6d4" } ToolBtn {id: clear_tool; iconName: "cleanup.png"; text: "clearrubbish"; /*showtext:qsTr("Cleanup"); */onSend: toolwidget.state = "Clear"} Rectangle {id: splitbar3; height: 38; width: 1; color: "#086794" } Rectangle {id: splitbar7; height: 38; width: 1; color: "#45a6d4" } ToolBtn {id: beauty_tool;iconName: "feature.png";text: "systemset"; /*showtext:qsTr("Feature"); */onSend: toolwidget.state = "Beauty"} Rectangle {id: splitbar4; height: 38; width: 1; color: "#086794" } Rectangle {id: splitbar8; height: 38; width: 1; color: "#45a6d4" } ToolBtn {id: function_tool;iconName: "toolkits.png"; text: "functioncollection"; /*showtext:qsTr("Toolkits");*/ onSend: toolwidget.state = "Function"} } Item { id: foreground; anchors.fill: parent } states: [ State { name: "Home" PropertyChanges { target: home_tool; iconName: "home-active.png"} PropertyChanges { target: message_tool; iconName: "sysinfo.png"} PropertyChanges { target: clear_tool; iconName: "cleanup.png"} PropertyChanges { target: beauty_tool; iconName: "feature.png"} PropertyChanges { target: function_tool; iconName: "toolkits.png"} }, State { name: "Message" PropertyChanges { target: home_tool; iconName: "home.png"} PropertyChanges { target: message_tool; iconName: "sysinfo-active.png"} PropertyChanges { target: clear_tool; iconName: "cleanup.png"} PropertyChanges { target: beauty_tool; iconName: "feature.png"} PropertyChanges { target: function_tool; iconName: "toolkits.png"} }, State { name: "Clear" PropertyChanges { target: home_tool; iconName: "home.png"} PropertyChanges { target: message_tool; iconName: "sysinfo.png"} PropertyChanges { target: clear_tool; iconName: "cleanup-active.png"} PropertyChanges { target: beauty_tool; iconName: "feature.png"} PropertyChanges { target: function_tool; iconName: "toolkits.png"} }, State { name: "Beauty" PropertyChanges { target: home_tool; iconName: "home.png"} PropertyChanges { target: message_tool; iconName: "sysinfo.png"} PropertyChanges { target: clear_tool; iconName: "cleanup.png"} PropertyChanges { target: beauty_tool; iconName: "feature-active.png"} PropertyChanges { target: function_tool; iconName: "toolkits.png"} }, State { name: "Function" PropertyChanges { target: home_tool; iconName: "home.png"} PropertyChanges { target: message_tool; iconName: "sysinfo.png"} PropertyChanges { target: clear_tool; iconName: "cleanup.png"} PropertyChanges { target: beauty_tool; iconName: "feature.png"} PropertyChanges { target: function_tool; iconName: "toolkits-active.png"} } ] } youker-assistant-1.0.1/qml/func/common/ContextMenu.qml000644 001750 001750 00000005545 12312451003 023350 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import MenuType 0.1 Menu { id: root property string selectedText: itemTextAt(selectedIndex) property string hoveredText: itemTextAt(hoveredIndex) property int x property int y property bool visible property string textRole // 'centerSelectedText' means that the menu will be positioned // so that the selected text' top left corner will be at x, y. property bool centerSelectedText: true visible: false onMenuClosed: visible = false onModelChanged: if (Component.status === Component.Ready && model != undefined) rebuildMenu() Component.onCompleted: if (model !== undefined) rebuildMenu() onRebuildMenu: rebuildMenu() onHoveredIndexChanged: { if (hoveredIndex < menuItems.length) menuItems[hoveredIndex].hovered() } onSelectedIndexChanged: { if (hoveredIndex < menuItems.length) menuItems[hoveredIndex].selected() } onVisibleChanged: { if (visible) { var globalPos = mapToItem(null, x, y) showPopup(globalPos.x, globalPos.y, centerSelectedText ? selectedIndex : 0) } else { hidePopup() } } function rebuildMenu() { clearMenuItems(); for (var i=0; i 0 && root.model.get && root.model.get(0)) { // ListModel with one role var listElement = root.model.get(0) var oneRole = true var roleName = "" var roleCount = 0 for (var role in listElement) { if (!roleName || role === "text") roleName = role ++roleCount } if (roleCount > 1 && roleName !== "text") { oneRole = false console.log("Warning: No textRole set for ComboBox.") break } if (oneRole) { root.textRole = roleName textValue = root.model.get(j)[textRole] } } } addMenuItem(textValue) } } } } youker-assistant-1.0.1/qml/img/icons/list_item.png000644 001750 001750 00000007230 12312451003 022520 0ustar00saucysaucy000000 000000 PNG  IHDRN6iۯ pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxZK0 d]{ˠ* I(ZeɖF3H|{<o~"_FuֽU8ºڪ[uy?51( 0(,ә1̋=0L+Æy~v#Zf/_7yyYy+L5:!lG(fi1̛AHys (c`z1qx1nm2-:>AY69OiIuq[gqSSǸ5@_:'kԻf杌Wc ^´]~v?Քj$SMrxe;*WSgVqU;: q*Y,q6CrdA FwsW[4YV; =3`e Jb+M cWf2aҳvm;Wl\WȵCj*I]H;D Df nmD䫈|-Dޱ^ 9!IENDB`youker-assistant-1.0.1/qml/img/weather/n21.gif000644 001750 001750 00000005327 12312451003 021441 0ustar00saucysaucy000000 000000 GIF89a008Z8Z6X}2PӽɽᄋȸϺ±ȶیùγȾѺꂌŏƳɵ6S{őյ/P1R6X3T4U :Z%Be,Lr/Ou.Lr-Ko1Qw.Lp3Sy3Qw8Y5U{7W}6Tz9Y9Y5Ru:Z7Uy.Fd;Y^!?`*Lq*Kq7S%Bb(Fi'Ef*Ik1Tz0Rw1Sx-Km%>Y3Uz4V{-Jj7Z5W|1Or7Y~/Lk)B]9[1Jf^ @_-Pp.Qq/Rr2Vx/Po7[}9\|3Oܲ K"bdG9b$(2Xi` *" m" a^ ƭ^t p( ?@@A$2o"K,1CA NZ 8;lF fR.2!R1C |ri=Pp.10B 9A63QK(S#,-' mPjpp)t03~. #3y !8l`p~{褣{:/<ĸ:x)40(tjh , *ц*$H/;bEB>!8 a1 P%( 31B')&,.x!J$C+@2xC E aF)@A €0!`t"R0r I]p~& C$@#:aH1' #1N'l2!8 bNhIO`hʁ`ăE@*M@Bp сN# ,MRc ?](c̐2 4>G7 L fDAF$C`3ԢN" 0*3~؂$PԲuxZڅ&b(()5 Ѐ: hBG(zVuu^k)8. iH#{b` K(6LD"*;l3,!jX3.K@ x%.K4+WVp;VVn5.A /,"D.jtӝ%^)B %kЄ|+ߔ#};_:" 6_җl ^TKІ5 # Є/F-Lsb>FT%N6PFprQrXF ZX\?Y M2'e.k4Ї8@1/\]Ns98 5P1p{lB<-DCP@D(AɄ^haF"-h-\ĦOP#]3g # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import dbus import signal import dbus.mainloop.glib from gi.repository import GObject #import gobject if __name__ == '__main__': from sessiondbus.daemon import SessionDaemon dbus.mainloop.glib.DBusGMainLoop(set_as_default=True) GObject.threads_init() mainloop = GObject.MainLoop() #gobject.threads_init() #mainloop = gobject.MainLoop() signal.signal(signal.SIGINT, lambda : mainloop.quit()) SessionDaemon(mainloop) mainloop.run() youker-assistant-1.0.1/qml/img/weather/000755 001750 001750 00000000000 12312451003 020343 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/common.py000644 001750 001750 00000012304 12312451003 027741 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import ConfigParser import apt import apt_pkg import psutil import re HOMEDIR = '' def confirm_filesize_unit(size): unit_list = ['B', 'KB', 'MB', 'GB', 'TB'] flag = 0 while True: if size > 512: size /= 1024.0 flag += 1 else: break tmp = "%.2f" % size finalsize = tmp + ' ' + unit_list[flag] return finalsize def get_dir_size(path): size = 0L for root, dirs, files in os.walk(path): size += sum([os.path.getsize(os.path.join(root, name)) for name in files]) return size def process_pid(pname): pid = None processinfo = psutil.get_process_list() for one in processinfo: one_str = str(one) patt = re.compile(pname, re.I) if patt.search(one_str): pid = int(one_str.split('pid=')[1].split(',')[0]) return pid def get_cache_list(): cache = None #apt_pkg.InitConfig() #apt_pkg.InitSystem() apt_pkg.init_config() apt_pkg.init_system() cache = apt.Cache() return cache #def get_homedir_sysdaemon(homedir): # global HOMEDIR # HOMEDIR = homedir def return_homedir_sysdaemon(): global HOMEDIR return HOMEDIR def return_homedir_sesdaemon(): return os.path.expanduser('~') def analytical_profiles_file(homedir): count = 0 tmp_pro_section = [] flag_pro_section = '' finalpath = '' app_path = '%s/.mozilla/firefox' % homedir profiles_path = '%s/profiles.ini' % app_path if os.path.exists(profiles_path): cfg = ConfigParser.ConfigParser() cfg.read(profiles_path) complete_section = cfg.sections() for section in complete_section: if section.startswith('Profile'): tmp_pro_section.append(section) complete_option = cfg.options(section) try: cfg.getint(section, 'Default') == 1 except Exception, e: pass else: flag_pro_section = section count += 1 if cfg.getint('General', 'StartWithLastProfile'): if count == 1: if cfg.getint(tmp_pro_section[0], 'IsRelative') == 0: finalpath = cfg.get(tmp_pro_section[0], 'Path').split('/')[-1] else: finalpath = cfg.get(tmp_pro_section[0], 'Path') elif count > 1 : if cfg.getint(flag_pro_section, 'IsRelative') == 0: finalpath = cfg.get(flag_pro_section, 'Path').split('/')[-1] else: finalpath = cfg.get(flag_pro_section, 'Path') else: pass else: pass return finalpath def get_mozilla_path(homedir): count = 0 tmp_pro_section = [] if homedir: app_path = '%s/.mozilla/firefox' % homedir else: app_path = os.path.expanduser('~/.mozilla/firefox') flag_pro_section = '' finalpath = '' profiles_path = '%s/profiles.ini' % app_path if os.path.exists(profiles_path): cfg = ConfigParser.ConfigParser() cfg.read(profiles_path) complete_section = cfg.sections() for section in complete_section: if section.startswith('Profile'): tmp_pro_section.append(section) complete_option = cfg.options(section) try: cfg.getint(section, 'Default') == 1 except Exception, e: pass else: flag_pro_section = section count += 1 if cfg.getint('General', 'StartWithLastProfile'): if count == 1: if cfg.getint(tmp_pro_section[0], 'IsRelative') == 0: finalpath = cfg.get(tmp_pro_section[0], 'Path') else: finalpath = os.path.expanduser('%s/%s/' % (app_path, cfg.get(tmp_pro_section[0], 'Path'))) elif count > 1 : if cfg.getint(flag_pro_section, 'IsRelative') == 0: finalpath = cfg.get(flag_pro_section, 'Path') else: finalpath = os.path.expanduser('%s/%s/' % (app_path, cfg.get(flag_pro_section, 'Path'))) else: raise Exception('profile.ini has error!') else: pass return finalpath if __name__ == '__main__': print analytical_profiles_file('/home/aya') youker-assistant-1.0.1/qml/img/logo/Manufacturer/EMPIA.jpg000644 001750 001750 00000044766 12312451003 023656 0ustar00saucysaucy000000 000000 JFIFHH ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:03:28 15:44:52]F&(.nHHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$,@@C@4'|%@uV֨;^ E`uS:ȑwԆy{_~lv-륣}y)?P<5?gG3!p'p·aˁ|<_'Ro<c տ,4?h}bW3Ձ~@iV˾WtZ[rXˈk[ ŻOe q-t?Hedd~n;[o;'OMtӽ;YSt˝վ:5yVa4R3w]AoLt걨ca7YrlA"Ǹ)O/!Ous}MLΠ>^kX7\֌ll߯Lu2[e8啴4I~Ӻ7ޡMS_[~[w4),ycqYʨO%iZW>3Vl;׼ck?;7{y4|j,1G(6e|ˣ9fgԇF-78{~#PW5qk8 +T]9~;{ְjԘuZXI~qokt]XZ2H-:8: n@ܞ[Hncņ2FxrqE2'ksN==%ޭmuB\֮׋2%ظ[5%+vV~UVV--L9Nߩ?U[[y.w[8yTKbc|B{Ӟ,Rny}绥92I4U$.N6F[^7kHݷk}ڱ'?wIn>Sp䑷j4Kco]!|U|`wWf{-c'IlKaUMծ\ӱYe6d}ġ>T*ʁ\'Ck)9#<2ӎ%@Q301rŞپWq_w}&ѭu(ƯKCkj۾r4"Yj^/QuTI%,v%T|bM!1S!ĘINk{>k?˱W-4cRb?2@ŗ9T9s O?O6< IÒ7/=WH޴K:.V*ژ<"$ P7F'2d2'âI%"Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$hPhotoshop 3.08BIM8BIM%F &Vڰw8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM?F]asint]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FLnJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$,@@C@4'|%@uV֨;^ E`uS:ȑwԆy{_~lv-륣}y)?P<5?gG3!p'p·aˁ|<_'Ro<c տ,4?h}bW3Ձ~@iV˾WtZ[rXˈk[ ŻOe q-t?Hedd~n;[o;'OMtӽ;YSt˝վ:5yVa4R3w]AoLt걨ca7YrlA"Ǹ)O/!Ous}MLΠ>^kX7\֌ll߯Lu2[e8啴4I~Ӻ7ޡMS_[~[w4),ycqYʨO%iZW>3Vl;׼ck?;7{y4|j,1G(6e|ˣ9fgԇF-78{~#PW5qk8 +T]9~;{ְjԘuZXI~qokt]XZ2H-:8: n@ܞ[Hncņ2FxrqE2'ksN==%ޭmuB\֮׋2%ظ[5%+vV~UVV--L9Nߩ?U[[y.w[8yTKbc|B{Ӟ,Rny}绥92I4U$.N6F[^7kHݷk}ڱ'?wIn>Sp䑷j4Kco]!|U|`wWf{-c'IlKaUMծ\ӱYe6d}ġ>T*ʁ\'Ck)9#<2ӎ%@Q301rŞپWq_w}&ѭu(ƯKCkj۾r4"Yj^/QuTI%,v%T|bM!1S!ĘINk{>k?˱W-4cRb?2@ŗ9T9s O?O6< IÒ7/=WH޴K:.V*ژ<"$ P7F'2d2'âI%"Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIM2http://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-03-28T15:44:52+08:00 2012-03-28T15:44:52+08:00 2012-03-28T15:44:52+08:00 Adobe Photoshop CS Windows uuid:d94422aa-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:d94422a9-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:a39dce46-78a9-11e1-b50d-bb64171ab44e image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UتVyR%v 򜺌xQ8cRݠBhn՛ eG2rٹ* ?xU( e}RW_0«^hy9^'*aGsA88w;O/+t/"yI;ڛ].ف~+:W:.j'og;v8c[O(ZyFPGL{)M^ ?@^)ty;g$Yq-Fm:.:K-̪>`6Mj@?y&COkQsM8 UTI**ODMNr<[QǕ˓y2 J}!{f% y!m޽ND3e<|f<~R|hGn{dUtei(\#HBNKQRg!91憛kywJ.,,iȕy·G9CK#f'0-~fs_at2IkCNM" @?\h<!bH-H9j: LFrdz} ͧn19Gr_J8޷b]Ū<܆5:$?'*9T_0{y lU 6Z,DiTٸ٦#Y<#ؖ$ԓVs^;3SRr?3LM\A;7Ib*ҍ0RsG0x;s"v|4ϋn@REy@O҈V-rZ%OǩކuKv5݉6?o8ͣ? ^2j3]z>1ʻc'zhgAr_N*W+(Lfa4=8~?-vC,2@ִT4lȍVVG`ބx>vvA):$L/ hX~Qg[S{|??]NgF_LA--#KEEw.f>Y:rwusc;ĄEuw:\H+4~.|{G8%p@R?%v!" ϒ|s5ցEaq\ROˇ1CǓnJVõ5[N*UP7zwS=l}♯vV7NF-^X}2)TDќ6|iOgS9by:V0:/oBdџ$d{R2ī/SHX3KZ;J?5P.pøUUwɎQ"qTʼn[4Td{ &od ?8[‘/>`*C,nD[/kv*N*UثWb]v*UثWN*UثWb]v*UثWyouker-assistant-1.0.1/qml/func/settings/DesktopIcon.qml000644 001750 001750 00000044623 12312451003 023671 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars Rectangle { id: desktopiconsetpage width: parent.width height: 475 property int current_index//当前主题的索引 property int default_index//系统默认主题的索引 property string actiontitle: qsTr("Desktop Icons")//桌面图标设置 property string actiontext: qsTr("Set the desktop icon theme and the visibility of desktop icons.")//设置桌面图标主题和桌面图标的可见性 ListModel { id: choices } //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //使用云配置后,控件状态根据配置发生相应的变化 Connections { target: sessiondispatcher onTellDownloadCloudConfToQML: { if(download == "icon_theme") { var iconlist = sessiondispatcher.get_icon_themes_qt(); var current_icon_theme = sessiondispatcher.get_icon_theme_qt(); for(var i=0; i < iconlist.length; i++) { if (iconlist[i] == current_icon_theme) { desktopiconsetpage.current_index = i; break; } } iconcombo.selectedIndex = desktopiconsetpage.current_index; } else if(download == "show_desktop_icons") { if (sessiondispatcher.get_show_desktop_icons_qt()) { iconswitcher.switchedOn = true; } else { iconswitcher.switchedOn = false; } } else if(download == "show_homefolder") { if (sessiondispatcher.get_show_homefolder_qt()) { folderswitcher.switchedOn = true; } else { folderswitcher.switchedOn = false; } } else if(download == "show_network") { if (sessiondispatcher.get_show_network_qt()) { networkswitcher.switchedOn = true; } else { networkswitcher.switchedOn = false; } } else if(download == "show_trash") { if (sessiondispatcher.get_show_trash_qt()) { trashswitcher.switchedOn = true; } else { trashswitcher.switchedOn = false; } } else if(download == "show_devices") { if (sessiondispatcher.get_show_devices_qt()) { deviceswitcher.switchedOn = true; } else { deviceswitcher.switchedOn = false; } } } } Component.onCompleted: { var iconlist = sessiondispatcher.get_icon_themes_qt(); var current_icon_theme = sessiondispatcher.get_icon_theme_qt(); var default_theme = sessiondispatcher.get_default_theme_sring_qt("icontheme"); choices.clear(); if(current_icon_theme == default_theme) { for(var i=0; i < iconlist.length; i++) { choices.append({"text": iconlist[i]}); if (iconlist[i] == current_icon_theme) { desktopiconsetpage.current_index = i; desktopiconsetpage.default_index = i; } } } else { for(var j=0; j < iconlist.length; j++) { choices.append({"text": iconlist[j]}); if (iconlist[j] == current_icon_theme) { desktopiconsetpage.current_index = j; } else if (iconlist[j] == default_theme) { desktopiconsetpage.default_index = j; } } } iconcombo.selectedIndex = desktopiconsetpage.current_index; if (sessiondispatcher.get_show_desktop_icons_qt()) { iconswitcher.switchedOn = true; } else { iconswitcher.switchedOn = false; } if (sessiondispatcher.get_show_homefolder_qt()) { folderswitcher.switchedOn = true; } else { folderswitcher.switchedOn = false; } if (sessiondispatcher.get_show_network_qt()) { networkswitcher.switchedOn = true; } else { networkswitcher.switchedOn = false; } if (sessiondispatcher.get_show_trash_qt()) { trashswitcher.switchedOn = true; } else { trashswitcher.switchedOn = false; } if (sessiondispatcher.get_show_devices_qt()) { deviceswitcher.switchedOn = true; } else { deviceswitcher.switchedOn = false; } } Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Text { text: desktopiconsetpage.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { text: desktopiconsetpage.actiontext font.pixelSize: 12 color: "#7a7a7a" } } Row { id: settitle anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 120 } Text{ id: themetitle text: qsTr("Icon theme settings")//图标主题设置 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: desktopiconsetpage.width - themetitle.width - 40 * 2 } } Row { id: themeline anchors{ left: parent.left leftMargin: 60 top: settitle.bottom topMargin: 10 } spacing: 245 - 16 - 20 z: 11 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Text { id: iconthemelabel width: 170 text: qsTr("Icon theme:")//图标主题: font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } Common.ComboBox { id: iconcombo model: choices width: 220 onSelectedTextChanged: { sessiondispatcher.set_icon_theme_qt(iconcombo.selectedText); } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_theme_qt("icontheme"); iconcombo.selectedIndex = desktopiconsetpage.default_index; } } } Row { id: icontitle anchors{ left: parent.left leftMargin: 40 top: themeline.bottom topMargin: 30 } Text{ id: showtitle text: qsTr("Desktop icon display control")//桌面图标显示控制 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: desktopiconsetpage.width - showtitle.width - 40 * 2 } } Column { anchors{ left: parent.left leftMargin: 60 top: icontitle.bottom topMargin: 10 } spacing: 10 z: 11 Row { spacing: 294 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: desktopiconlabel width: 170 text: qsTr("Show Desktop Icons: ")//显示桌面图标: font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: iconswitcher width: desktopiconlabel.width onSwitched: { if (iconswitcher.switchedOn) { sessiondispatcher.set_show_desktop_icons_qt(true); } else if(!iconswitcher.switchedOn) { sessiondispatcher.set_show_desktop_icons_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_desktop_qt("showdesktopicons"); if (sessiondispatcher.get_show_desktop_icons_qt()) { iconswitcher.switchedOn = true; } else { iconswitcher.switchedOn = false; } } } } Row { spacing: 294 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: homefolderlabel width: 170 text: qsTr("Home Folder: ")//主文件夹: font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: folderswitcher width: homefolderlabel.width onSwitched: { if (folderswitcher.switchedOn) { sessiondispatcher.set_show_homefolder_qt(true); } else if(!folderswitcher.switchedOn) { sessiondispatcher.set_show_homefolder_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_desktop_qt("homeiconvisible"); if (sessiondispatcher.get_show_homefolder_qt()) { folderswitcher.switchedOn = true; } else { folderswitcher.switchedOn = false; } } } } Row { spacing: 294 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: networklabel width: 170 text: qsTr("Network: ")//网络: font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: networkswitcher width: networklabel.width onSwitched: { if (networkswitcher.switchedOn) { sessiondispatcher.set_show_network_qt(true); } else if(!networkswitcher.switchedOn) { sessiondispatcher.set_show_network_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_desktop_qt("networkiconvisible"); if (sessiondispatcher.get_show_network_qt()) { networkswitcher.switchedOn = true; } else { networkswitcher.switchedOn = false; } } } } Row { spacing: 294 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: trashlabel width: 170 text: qsTr("Trash : ")//回收站: font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: trashswitcher width: trashlabel.width onSwitched: { if (trashswitcher.switchedOn) { sessiondispatcher.set_show_trash_qt(true); } else if(!trashswitcher.switchedOn) { sessiondispatcher.set_show_trash_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_desktop_qt("trashiconvisible"); if (sessiondispatcher.get_show_trash_qt()) { trashswitcher.switchedOn = true; } else { trashswitcher.switchedOn = false; } } } } Row { spacing: 294 - 16 - 20 Row { spacing: 20 Common.TipLabel { anchors.verticalCenter: parent.verticalCenter kflag: "yes" showImage: "../../img/icons/cloud-light.png" } Common.Label { id: devicelabel width: 170 text: qsTr("Mounted Volumes: ")//已经挂载卷标: font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Common.Switch { id: deviceswitcher width: devicelabel.width onSwitched: { if (deviceswitcher.switchedOn) { sessiondispatcher.set_show_devices_qt(true); } else if(!deviceswitcher.switchedOn) { sessiondispatcher.set_show_devices_qt(false); } } } } Common.Button { hoverimage: "blue.png" text: qsTr("Restore")//恢复默认 width: 94 height: 29 fontsize: 13 onClicked: { sessiondispatcher.set_default_desktop_qt("volumesvisible"); if (sessiondispatcher.get_show_devices_qt()) { deviceswitcher.switchedOn = true; } else { deviceswitcher.switchedOn = false; } } } } }//Column //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.ToolBar { id: toolBar showok: false height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onQuitBtnClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } } youker-assistant-1.0.1/src/skincenter.h000644 001750 001750 00000002124 12312451003 020443 0ustar00saucysaucy000000 000000 #ifndef SKINCENTER_H #define SKINCENTER_H #include #include namespace Ui { class SkinCenter; } class SkinCenter : public QDialog { Q_OBJECT public: explicit SkinCenter(QWidget *parent = 0); ~SkinCenter(); QString get_locale_version(); private: Ui::SkinCenter *ui; QString locale_Lan; //protected: // bool eventFilter(QObject *obj, QEvent *event); // void mousePressEvent(QMouseEvent *event); // void mouseReleaseEvent(QMouseEvent *event); // void mouseMoveEvent(QMouseEvent *event); // void paintEvent(QPaintEvent *event); // void resizeEvent(QResizeEvent *event); //signals: // void skinSignalToQML(QString skinName); //private slots: // void showSkin(QString page_count); // void verifyToUseSkin(QString skinName); //private: // void initTitleBar();//标题栏 // void initSkinsCenter();//皮肤列表区域 // void initBottomBar();//上一页下一页按钮区域 // QSettings *pSettings; // QString skinName; // bool is_change; // QPoint move_point; // bool mouse_press; }; #endif // SKINCENTER_H youker-assistant-1.0.1/src/qmlaudio.h000644 001750 001750 00000002057 12312451003 020116 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef QMLAUDIO_H #define QMLAUDIO_H #include #include #include class QmlAudio : public QDeclarativeItem { Q_OBJECT public: QmlAudio(QDeclarativeItem *parent = 0); public slots: void setSong(const QUrl & songUrl); void play(); void pause(); void stop(); private: Phonon::MediaObject *audioObject; }; #endif // QMLAUDIO_H youker-assistant-1.0.1/qml/func/common/ToolTip.qml000644 001750 001750 00000002506 12312451003 022463 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Rectangle { property string showText visible: false color: "#383838" // opacity: 0.7 // z:100 BorderImage { id: borderimage // opacity: 0 source: "../../img/skin/frame.png" width: 165 height: 24 anchors { top: parent.bottom topMargin: 15 } } Text { id: tipText // anchors.centerIn: borderimage anchors { left: borderimage.left leftMargin: 20 verticalCenter: borderimage.verticalCenter } font.pixelSize: 10 text: showText color: "#607684" } } youker-assistant-1.0.1/qml/img/icons/systemset.png000644 001750 001750 00000003717 12312451003 022575 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<qIDATxڬWKLTg>sq`@v𕀰qJܵT&vUĥ&BĤjڤ-TAPuNa`Q???9㨫C_FJu'IJ$r(77N'et:Me*O~so^۲e i0I@]Vd"IvHuVs4ISTQ^IKKir477r; 0~400իTUU%$8Paff.\8C)ԲKb1)(JIA^|Y a766F'N/REE˰.H*a袄Ǐw ño߾  Y`gϞu^rE Fb1;>#T*-k<͡H QT\D4>>.YxKҳYYbim5MX4A%fff8('VD@퍅dE6"xyCg<'J0)s}7i&^Qnu&6⮮.:wR4Ţ2fuZd=JW-Psj#/{m!ǾbGg9n,95'=rLn|%gc,%nɭ58x?V̝=ן"ʈ 4.D2{ې% dd' % y.({}#~|@gI$+WUY9*A8' B]*Lp8Badd!8L.F3v `ݻu@LlqpxH"h? /oy8noo5k{A.f@w0$c 2ayhx ;tܲ9: H$*++Ǭо3tUeKEdѯ(a$_~M##yHhA&9AP^74>|Dssp ුs+4C70+gӻRk:$㖯1haa^֍X2n޼Y^|zeVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F IDATxKjPQ (Mت{JMWԽ\MA'!H N39?/{Vrzy9<ԕe1Kٸ!>Ux vm~{~whEip]WZ(DJh;TڕQ7hk#HqGWb A A A A A A A A A A A A ܱ 0EQqr;r ,GNGVZ[Mw.'n=%[YtkuTEj[K9Yqk.ݭʊ[?T<^| >| >| >| >|>|>|>|>|3|3|3|3|1 @jdPLN~zk/֟ O?C?C?C?C?C?C@@@@@@tAN@Ѥ1^BdZ`UZ& \&%;}/&dKd}۽9 f=.8{UnjWM^5yΫ&o7_LzZֳMoo_M'ݛc n=]vpٻ,m=WQEsTqqn9,^e*KYڷޮO7>C| >w~᳋@|ć@|ć@|ć@|!>!>!>!>C| >C| >C| >C| >C|ć@|ć@|ć@|ć!>!>W1 EC*@I5ff}}}oUM>>>>>>>>>@@@@@@@@@>>>>>>>>>>@@@@@@@@@>>>>>>>>>>@@@@@@@@aN`-.aDw-$ nh~믓yh{l\o:8&;EnGUM_vM4D/7{6:,|jwfYcaϓhD$w7nqҰx˴L [.7/>>>>>>>>hlUdf{7/hhhhhhhh}}}}}}}}}hhhhhhhhh}}}}}}}}}hhhhhhhhh}}}}}}}}}hhhhhhhhh}}}}}}}}}hhhhhhhhh}}}}}}}}}}hhhhhhhhh}}}}}}}}=O@ᄁ? hyq:rr5<^t}|>d@ }@ }>d@ }>d@>d@ }>@ }>d }>d@ d@ }>d@ }>d}>d@ }@ }>d@ }>d}>d@ }@ }>d@ }>d@>d@ }>@ }>d }>d@ d@ }>d@ }>d}>d@ d@ }>d@ }>d}>d@ }@ }>d@ }> ecgQIENDB`youker-assistant-1.0.1/qml/img/icons/list_subitem.png000644 001750 001750 00000006641 12312451003 023237 0ustar00saucysaucy000000 000000 PNG  IHDRN6iۯ pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATx=r a HK$'4Q#KM̌ #cQ~KܖoK]f)jU[~_.ެBAz`A\ڭZuEZZ<ϊZhA$-z@ڈx$Ȗ>l@&{n°=P zA#\źpmU]{FUHk+CAeHD;%jG2p# hiYezωZ0Vī^~}%#D,>MeWm ㆹWQ )e"sN$>u8bL6@;ѬiU^C="*w6N 6y!7H;5X K(,۞-Cc,Ue>s@٤E24G֮ 9x rl[Cj"S0vn{,ѿ[fvwÁ8fơAL*kf";vCTV}>Ė0mVkfcfHRk)<|R>Mb0IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/src/softwarecenter/apt_daemon.py000644 001750 001750 00000001613 12312451003 032203 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import apt class AptDaemon(): def __init__(self): self.ca = apt.Cache() self.ca.open() if __name__ == "__main__": pass youker-assistant-1.0.1/qml/main.qml000644 001750 001750 00000006437 12312451003 017601 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import ToolkitsType 0.1 import SessionType 0.1 import SystemType 0.1 import FcitxCfgWizard 0.1 import ProcessType 0.1 import DeviceType 0.1 Rectangle { id: main width: 850 height: 600 objectName: "main" anchors.fill: parent property string version: "V1.0.1" property string bgName: "" property color borderColor: "lightblue" SessionDispatcher { id: sessiondispatcher } SystemDispatcher { id: systemdispatcher } FcitxCfgWizard { id: fcitxcfgwizard } Toolkits{ id: toolkits } ProcessManager { id: processmanager } DeviceManager { id: devicemanager } Component.onCompleted: { main.bgName = sessiondispatcher.setSkin(); bgImg.source = "./img/skin/" + main.bgName + ".png"; main.border.width = 1.5;//设置边框宽度 main.border.color = borderColor;//设置边框颜色 } Connections { target: sessiondispatcher onStartChangeQMLSkin: { bgImg.source = "./img/skin/" + skinName + ".png"; } } Image { id: bgImg anchors.fill: parent source: "" } radius: 4 opacity: 1.0 Column { id: layout anchors.fill: parent spacing: 3 ContentWidget{ id: contentwidget } StatusWidget{ id: statuswidget version: main.version } } Image { id: logo width: 191 height: 54 anchors { top: parent.top topMargin: 25 right: parent.right rightMargin: 35 } source: (sessiondispatcher.get_locale_version() == "zh_CN") ? "./img/zh_CN/logo.png" : "./img/en/logo.png" MouseArea { anchors.fill: logo // property variant clickPos: "1,1" property variant previousPosition onPressed: { // clickPos = Qt.point(mouse.x,mouse.y) previousPosition = Qt.point(mouseX, mouseY) } onPositionChanged: { // var delta = Qt.point(mouse.x-clickPos.x, mouse.y-clickPos.y) // mainwindow.pos = Qt.point(mainwindow.pos.x+delta.x, mainwindow.pos.y+delta.y) if (pressedButtons == Qt.LeftButton) { var dx = mouseX - previousPosition.x var dy = mouseY - previousPosition.y mainwindow.pos = Qt.point(mainwindow.pos.x + dx, mainwindow.pos.y + dy) } } } } } youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/others.py000644 001750 001750 00000012414 12312451003 030156 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import re import shutil import Image # from _pyio import open class Others: # custom plymouth bg by plymouthName def custom_plymouth_bg(self, plymouthName): plymouthName = plymouthName.encode('utf-8') existingDir = '/var/lib/youker-assistant-daemon/plymouth/existing/' linkFileDir = '/lib/plymouth/themes/default.plymouth' # replace the config file shutil.copy(existingDir + plymouthName + '/default.plymouth', linkFileDir) # add new custom plymouth def add_new_plymouth(self, customBG, plymouthName): # if plymouthName exist return false existingPlymouth = self.get_existing_plymouth_list() customBG = customBG.encode('utf-8') plymouthName = plymouthName.encode('utf-8') plymouthName if(plymouthName in existingPlymouth): return False else: existingDir = '/var/lib/youker-assistant-daemon/plymouth/existing/' customScript = '/var/lib/youker-assistant-daemon/plymouth/defaults/only_background.script' defaultplymouthfile = '/var/lib/youker-assistant-daemon/plymouth/defaults/default.plymouth' # add new plymouth conf dir os.mkdir(existingDir + plymouthName) shutil.copy(defaultplymouthfile, existingDir + plymouthName + '/default.plymouth') # modify config file fileHandle = open(existingDir + plymouthName + '/default.plymouth', 'a') fileHandle.write('ImageDir=/lib/plymouth/themes/' + plymouthName + '\n') fileHandle.write('ScriptFile=/lib/plymouth/themes/' + plymouthName + '/youker.script') fileHandle.close() # add new system plymouth dir os.mkdir('/lib/plymouth/themes/' + plymouthName) shutil.copy(customScript, '/lib/plymouth/themes/' + plymouthName + '/youker.script') #shutil.copy(customBG, '/lib/plymouth/themes/' + plymouthName + '/customBG.png') Image.open(customBG).save('/lib/plymouth/themes/' + plymouthName + '/customBG.png') return True # get existing plymouth list def get_existing_plymouth_list(self): result = [] edir = ('/var/lib/youker-assistant-daemon/plymouth/existing') if os.path.isdir(edir): for f in os.listdir(edir): if os.path.isdir(os.path.join(edir, f)): result.append(f) result.sort() return result # check and save current plymouth when init def plymouth_init_check(self): existingDir = '/var/lib/youker-assistant-daemon/plymouth/existing/' linkFileDir = '/lib/plymouth/themes/default.plymouth' # locate the current plymouth theme dir linkFile = open(linkFileDir) fullString = linkFile.read() linkFile.close() index = fullString.find('ScriptFile=') theLine = fullString[index:] # cut 'ScriptFile=' & '\n' scriptFile = theLine[theLine.find('/'):] scriptDir = scriptFile[0:scriptFile.rfind('/')] scriptName = scriptFile[scriptFile.rfind('/') + 1:] plymouthName = scriptDir[scriptDir.rfind('/') + 1:] # check and save current pl linkFile.close()ymouth if(os.path.exists(existingDir + plymouthName) == False): os.mkdir(existingDir + plymouthName) shutil.copy(scriptFile, existingDir + plymouthName + '/' + scriptName) shutil.copy(linkFileDir, existingDir + plymouthName + '/default.plymouth') def get_image_path(self,name): name = name.encode('utf-8') if not os.path.exists('/lib/plymouth/themes/' + name + '/customBG.png') : return False else : path = '/lib/plymouth/themes/' + name + '/customBG.png' return path def delete_plymouth(self,plymouthName): plymouthName = plymouthName.encode('utf-8') fd = open('/lib/plymouth/themes/default.plymouth','r') animation = fd.read() fd.close() used = animation[animation.index('themes/')+len('themes/'):] used = used[:used.index('\n')] if used == plymouthName : return False else : shutil.rmtree('/var/lib/youker-assistant-daemon/plymouth/existing/' + plymouthName) shutil.rmtree('/lib/plymouth/themes/' + plymouthName) return True if __name__ == '__main__': ooo = Others() # print ooo.get_existing_plymouth_list() # ooo.add_new_plymouth('/home/shine/heihei.png', 'hoho') # ooo.custom_plymouth_bg('hoho') # ooo.plymouth_init_check() youker-assistant-1.0.1/qml/img/weather/n6.gif000644 001750 001750 00000005405 12312451003 021361 0ustar00saucysaucy000000 000000 GIF89a008ZӴܬźʎ恊ȶ̺݃ƪ˜ѼϹνᏘɵɻϵ/O6Sz1S5W1R/N/M7Y2S3T6W3Q<^!>a%Be,Lr)Fi-Kp1Qx2Ry.Lp4Tz1Os8Z9[7W~3Qu7W}6Tz9Y9Y5Sw:Z7Uy:X~]#Aa)Kp$Ab+Mr0S{/Qv.Ot0Rw,Jm)Fe1Sx5X'A]4V{5W|7Z6X}7Y~?a3LiFh>TlQf~fy}/M0N1O8Y2P4R;\<]5S0K6T2M>_3N;Z?`=\5P!Bc#Eg;YUgD#JT CIR7ȩh(;֌zӱ͛8s!MOHph3ܨ4A*]ʴR5.hgTRҍS՜`ÊK6,:_K:WGvJсݻx޵CM)>JͱCÄٰFb;:ظ a>@LؔϠC'CG*u\u |djس'vh[#U}h~QN;\p88p8`&sWVhx܁G;x1H SA8`$9!4ָ;{G- "$PB |G;6ʓPF)哵 dA!t00L؂-Y"/(H `vH dJ, Ag+ a D*rű 8dPBaADhΦ Rn@Ee`p~fdJpB|a0.h 30;߃``|AXqXd!@6@O@i`Z>b9pn_İ1. \ #.!щۃ2/aPA w#2@&KZJPPlB&["GP.0^P  eX MC#A cȄh?ăc/zq&B "x E(bD7 9t'T`&@b0">I_ØHf2 E0Ah,na`0S+. nhD qdCLg2}1vH0|g<Ϡ/ `,A ]?Ά6ʀ1QD@a8"@Q(, H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3- cHRMz%u0`:o_FIDATxK#EDeuXr=P\ ט,qO|<2J uK*UWg fh3߶ {ϚnG<_x>}׈_wm!YBp_81{?<½tWp81BW8\ >? BCR{\yB2^C^jx2}Š'`ڮZySaI)無$ ij<-(ZMД0 "vtGTxU΃(DPMJiv, " `.AGhҘpͪv[\\A22$4蜆8;@!<^aX'NDo> =[i]J+)VSU2'H e:_v=5 VEq!(jxK˞ؼl R9eQ̾C1Y 4\$2iE8rr7Pi;͜sݱkUЎ AAnCr·tGYAwCI[uEUQVڛ7M9`ڨ k:&^U_bMo1}BTLV/1|GwEؚh8kЮ!hx%ȥ,P nX-X=gr% ?@gw:I#x^]8Ba@ Ӿ*j(h U6WVrKWT .Ț{aUV6A+$|.8]59K;NC%V0[nX^B}fEaE^[VƸuLk-g])<i\wqCg΅i9$nTrr nJ~湤6lVh UgjaxE(³Y`-YMduטh2g^V_m$% )i ֐5Wi *k F[[$l;`OЪ?S=ѪjIց%<lyH4 5|hosZh9h KUu\LJbT_C class QtLocalPeer; #if defined(Q_OS_WIN) # if !defined(QT_QTSINGLEAPPLICATION_EXPORT) && !defined(QT_QTSINGLEAPPLICATION_IMPORT) # define QT_QTSINGLEAPPLICATION_EXPORT # elif defined(QT_QTSINGLEAPPLICATION_IMPORT) # if defined(QT_QTSINGLEAPPLICATION_EXPORT) # undef QT_QTSINGLEAPPLICATION_EXPORT # endif # define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllimport) # elif defined(QT_QTSINGLEAPPLICATION_EXPORT) # undef QT_QTSINGLEAPPLICATION_EXPORT # define QT_QTSINGLEAPPLICATION_EXPORT __declspec(dllexport) # endif #else # define QT_QTSINGLEAPPLICATION_EXPORT #endif class QT_QTSINGLEAPPLICATION_EXPORT QtSingleApplication : public QApplication { Q_OBJECT public: QtSingleApplication(int &argc, char **argv, bool GUIenabled = true); QtSingleApplication(const QString &id, int &argc, char **argv); #if QT_VERSION < 0x050000 QtSingleApplication(int &argc, char **argv, Type type); # if defined(Q_WS_X11) QtSingleApplication(Display* dpy, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); QtSingleApplication(Display *dpy, int &argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE cmap= 0); QtSingleApplication(Display* dpy, const QString &appId, int argc, char **argv, Qt::HANDLE visual = 0, Qt::HANDLE colormap = 0); # endif // Q_WS_X11 #endif // QT_VERSION < 0x050000 bool isRunning(); QString id() const; void setActivationWindow(QWidget* aw, bool activateOnMessage = true); QWidget* activationWindow() const; // Obsolete: void initialize(bool dummy = true) { isRunning(); Q_UNUSED(dummy) } public Q_SLOTS: bool sendMessage(const QString &message, int timeout = 5000); void activateWindow(); Q_SIGNALS: void messageReceived(const QString &message); private: void sysInit(const QString &appId = QString()); QtLocalPeer *peer; QWidget *actWin; }; #endif // QTSINGLEAPPLICATION_H youker-assistant-1.0.1/qml/img/en/recommend.png000644 001750 001750 00000017054 12312451003 021774 0ustar00saucysaucy000000 000000 PNG  IHDRZZOqtEXtSoftwareAdobe ImageReadyqe<IDATxڄѻN0?7I҂6 0w`USVX7:Bl4EB$I;vU\ul:|tZƢ}(`e9,⭤ ]#P0Uμ^&i5t1)K@Y hcbypCԗ@䜤"8k\&DA6fSTܐ*xO G;.9)Тc}ţYGֲP+o?)ʪ-r[ιR5UgVzQQǑ]\9 !ў1Lćʿvi_<|M74 AA  ,|OqˀL4,+'@c;ݟ~l'HÞm ~3rm΁S(""߿`<7ގgh-௶{;p{Z|'WNB `- p" zKK/;3s{vSc gPh0*|EQ-6| b\@?F ~3|IJe 'dZj:%XX M6btEЄBEԽo>TM^w=<~fCܱ|Rs;mQWHߴN__B ZV"Rɟf2 -m-F~*B.naIt_izo?`4bmMTM~E4dOB 0-% zt.?B*d0I@+؁"U WP&q$3 zamm3XCЃ EbH+a65Q3C:sGP)#M T $wv(ll& K 0?;`RK]FATÉ'#2&ehr(u"Y6l*zd%V7o!B63溤?J s,׏kAN.)C=ztM<"^@/Rg'ѨIjDٙ8fwde3{;|H>8*sZ@XtQ/bXqycc..J vo -Ѻ(g%wJ?O(h}UDBMz{q XK7p?j> .Q$/ r0>rC-ytNed#p܂{ayMHJhg( e4߫0=?giyK%8y X\](KҲ,gi&s Jy L#aXN>)i!_8>z (8}m ss,ij6nGRpvj/|QtĦo@E2u?dI&(PɖT.kV{|sϽKk+{'>ı\dRڰ 80(^5vxjǾOIJs;x5X?;{}LcKFV*L^eO57[!(g:0<ZރhM NKg.g1Fk_cIgVC}jԗ˸@RUKe'U$Q~x 9?8/Y˞#޳="N)Im>]Oot{n>~ һއwN%CsYr7Y9޵N.L>3j(R47"n0͟Ķ邫w8W|,Ixcb}}x>,+b@GzA;6#76}*l4ya;gϵB0/9  "^,luX~|/_AǒEe%6cӧ & .#/Nᯛ^} g}ٺa5@*INW'o!7e>I>W Az;>_~f 5'.RlHWg]|R[SZ- SCjs5VC,], ٷ#} Z wfǣUjֹXkg[F_I xEr^xr?W0I^^MX!xٶ D*›%wCM<}9qR.7V۾%EFNNdh}{¡ZFCd3K m. o coã%'3g6G= cO1z:Ojj6-~&4U|(}͎{72Xq֧8ʇ*w $kCKKD|Nt)}u1!B >) m|_[n޹g{JДOfk!Z>rT%×8 ^(bt |ɘ(p yc}jk8j{󅟕Ol|)).Kvih_XNQֿAp!+&T h4fn3 ? >Ɯ׃ X5,NS xΏgqMdិdT-(iܲ"LUj D<%^9rro nVrr4r+CotǯNcy.=W(,T~o.}io~_EKJ \S*ݮ `Ÿp |%\ TaBib"}|=! \E y5rSks(L4JiQN1a#|ĝV5[l,(-XUWm@:NQZT91|D\[oB͕ {kӓ䊙ԛ!EZz.pN*X6rǣh@0٠_pQYpLKz!c^pI7P|N@^vIԓVL "=(NyprvIMRu:d`6.,'mh2M ӊI*JהGK|6R x\>1,e.T/E3NZ[5Q\I8mk$Xe NOS1?g6%s6`jzJ=AVܚKǦ_af">5!w׆rn]1mO{l%BݵWo#`/;N{~++.྿Ų+538RR1p^kΧvɪr+6ArPRNGpH fmZyq TަFD(R kZ*Gԙ(>)i!nXg&uFདྷ㽻8T됕3 PP4iI7d8Uz[]!wfJ?ܡ{RX)aq@w%,ܥmNGcm }1_PN&~>? Uc|u֘jEGVk)x(##s`؇*%;cWoW c-ٽ" $5IjAcOs%"Xr9/D* "QE{цD ڱS.[)nνhAsPm>w4j M.hpEI^<=4 >qT+/Fg=h\spb>r!ZmBWGT=Dpbe"a6=ExIe*~QBz33A=ύʓ }peǿ$mӼ-ʋo oz܋Ή6rs7('7 2x^yD*-}odyͳ&0vadO~~wYyyd%+͵Q|4"!;VjSH&Xpx*e>g>ϨM55A bLM Yi0j'kH5FWNֆHUK]hMs(:v$Α4N4\{l8fTɖd=gaР/}-¢ՋYm p/\VI+qEF{nD Kc%x-)5 Gy p͕|H^H<~gOMpϸ oYQ}cdXJ&987ZuX GmITDB;K}Σ><wn֥qT$0ͨkA}s|q'} BAHl}N0 J #4W'DGCbD畘}d,\M}Ե:к%?4s  p j<aY'q,fg=W3ȴAٍj ' 97&A4 V`xi%`*Yf|a7f5ʋ=opc @̲ySf'l]ثt%̀➨oR}x}hz[%/Ɨ!9Vd{xf^ .d!f)a*N̷9RV̎^I#f ӕol?g c!Z˺y5eT߄ m1p ݎpe8z\Ep7 s!WcؗQY8v^}NǜwPw';9%HwX.)B)PKňk:5xb Y"<;X ]XPkO䯑 5d{b{7i9CRf:vRuVQI<*x3)X=rչrmԗ .8r|m8p?qڎfLfP 3wI'7~Wޣ`.anI.anw2\8\i 4hG7_ MN /L)܂AUFF _ݲ?;~ o=Ntd Mڏ!)$&Jd@߁(}ڬWN*Ɓ\ګ"G[pRi }%+;0;ߏ'{q9xh:L$g߇oFIrKy~e)qwH^GW~ n\y5+-lp6!Ar7-tsƿ.d)NvDvŏЇϱe_RoS R߹5t,4ɹ.ŝvɕNd,ܼq'-8l1 [<*K౛z?V|x;:a-ƇCNQZWr/,/P_XqNP. v]$nW-P1U@R%>ÙG6Zއo'mVozւ1\ .ۥ|T⑾HiVMp-7牆joǿp= LO6|<$V?Qw#"uxވƽ H$ÂNc9^J}Z(t߁^;ʋcV Zb拓HDj ډ tD3ewNVBzW%V|?j b•^kąږplSdGNquEpK +.E;06$;yj*xFv)Ѭjcz녓6ъ,&h)5QIQ6 ,|p08wL==U[P\<Vv3ܶ^ӮK&;x_^oqz/9i!gw՚&NL©GJ3E*I 1,ܗs]=^H7d (z~pWiL7Oё5}V&w#8"|3#'hJSӼOiFl OFKI,¨INy *[)7XAo-8kynxr+dOU1Ɵ/of&Ft7|o p+.'/F ,3V,Q\Q%Q㊫$=,] f Z}¢RDm]6Eg():Wv斦ֆT[,ęrIឤ%/qHA(c[B ^\1SA;j'fV\̈́s%W K֦^=ު|:W;hKRʟE<3U <3a3x{ @K Kg _4e wCߵ7uVėcM$/F{ UKkb]c,k/ms3)!IENDB`youker-assistant-1.0.1/src/qtmenuitem.h000644 001750 001750 00000007612 12312451003 020475 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the examples of the Qt Toolkit. ** ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ** the names of its contributors may be used to endorse or promote ** products derived from this software without specific prior written ** permission. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** $QT_END_LICENSE$ ** ****************************************************************************/ #ifndef QTMENUITEM_H #define QTMENUITEM_H #include #include #include class QtMenuBase: public QObject { Q_OBJECT Q_PROPERTY(QUrl iconSource READ iconSource WRITE setIconSource NOTIFY iconSourceChanged) Q_PROPERTY(QString iconName READ iconName WRITE setIconName NOTIFY iconNameChanged) public: QtMenuBase(QObject *parent = 0) : QObject(parent) {} virtual QAction* action() = 0; void setIconSource(const QUrl &icon); QUrl iconSource() const; void setIconName(const QString &icon); QString iconName() const; Q_SIGNALS: void iconSourceChanged(); void iconNameChanged(); private: QUrl _iconSource; QString _iconName; }; class QtMenuSeparator : public QtMenuBase { Q_OBJECT public: QtMenuSeparator(QObject *parent = 0); ~QtMenuSeparator(); QAction* action(); private: QAction *_action; }; class QtMenuItem: public QtMenuBase { Q_OBJECT Q_PROPERTY(QString text READ text WRITE setText NOTIFY textChanged); Q_PROPERTY(QString shortcut READ shortcut WRITE setShortcut NOTIFY shortcutChanged) Q_PROPERTY(bool checkable READ checkable WRITE setCheckable) Q_PROPERTY(bool checked READ checked WRITE setChecked NOTIFY toggled) Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) public: QtMenuItem(QObject *parent = 0); ~QtMenuItem(); void setText(const QString &text); void setShortcut(const QString &shortcut); void setCheckable(bool checkable); void setChecked(bool checked); void setEnabled(bool enabled); QString text() const; QString shortcut() const; bool checkable() const; bool checked() const; bool enabled() const; QAction* action(); Q_SIGNALS: void triggered(); void textChanged(); void shortcutChanged(); void toggled(bool); void enabledChanged(); private: QAction *_action; }; #endif //QTMENUITEM_H youker-assistant-1.0.1/qml/img/icons/mouse.png000644 001750 001750 00000003360 12312451003 021657 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڤWKlE]bHL 1!R$ YD+H8J$8@1Gp8@؎bI"şyvw~5]h=UއW>ȦWʭF?FmkD64-mWvd a ?bi_yUx+?coo/= TJU2}v+=@~m_߇O<]sfB!ܤǎ luN= 6 2 CXS'ާɩY,M=G\F^,CMx?L|^Yl&}H__Y6~ȶ̵K^̆IN?O=(]xxDz9`CK‚ RPx>D`F]Ijkkg~?x3E͆ U z{ b!rP y]eЀ V]1砅qd6GT,eYp Ŕ!%>ǁ!dD-G'}X<4Kh b` {pە^\R; o $Gm;51p5<ϞG,$VfыzƓ(rtTI[ U6')5[(Q@(wAUFˬg<+ɧxkY/To8 7NNP֭i+ .cCCC&Oh{fXz>FRɋ̱6џIaPeP9Gp+w3#ӛ@?<,6o!8nѧ<Ɯv{5͠:IT DhۃpWXXi'^JMa0Э747~BI9_ځY1tFIZ[@(^>WR_Hv-L'[ul*Ϳ;gZKyqsb 42 [*t3>>AǞ_pyOݻ)SOttrHN2Ԕo޽K[[j=\tٳ` 5抾`Ud5444{ #NȇN@ٲkB' nGFY8ZTE*{!z>$,o]I&(kǩQX$L+B)搰u!kG5D:,)~VVVEJ˷^Ȩ*JR H띞b]"-2ās6Jab%7*r555" P8Yʊ<+UЪJ^|Ch3yljg8JwVo6ŢX, 2Jaj7MqŃu~b>Wѩ_rwy=w;rIMOXecoopqosrywvuy{}y⁳}|Z}Ⴒⅵr®̵2s([3q4r3p-b6t4q6s7u6s5p7t6r:y9v8u:w9v:w:w:u{=z=x>y@}?z@{A|A}B}DC;p5dDAyD~@vGFKIHF};iKAsNQMSI{O\UR`Hqdkjilknkrmnnspnvtsqvutss|yw{zy}|{}߁䀳~倰݂d邜3t3r5smlqqvtu{}|~ށဳ}{ׂⅶቺ!,00u3*\ΪnCŋ3j( :ɓ(S\y8=m@ w͛8sܙsΝ:B!2ѣH*]zO#y!TiA!‡O#GtZDП"Ex-J?|ȝKA|u6.\M|3/ A~[$IL!@I- 9g{2'Т=~&C̨װc^Ĉ!BkV!L i^Т9Zμ1gdD7I"Fo#Hӫ__^R$HܠaSb„kи1HңFDyIb& ((!7B>`Bh#6I&@ %$^b(xI&xXr /XLЃ%x2$LB$rb$'Lb$JA&LC 6ؐlɑplj~'p&Kx$rP@[pCl<&ji'D*'l"J'Fj' WC:@B  fĬLtRKhRH!D(,`\pF#lF)Ԓ)"%ܬ?7 LC eh #,F!D)R )Fb Vh: &!T Bn(DžVj .$Ю 4XPdI)}'dPh9p&!pB7[` x ܸJND!=A4p[(pMq 3pýf?L0ҦAS A X_7B)Џ+6p#`2[{ \B+7 M70T 7K=,@ j{+C65Ԁ, Rg3`[s-嘯 "isJ+p n/ `,XArӣ  d0^VlB!遠XVa.sգ r <'X%T g2h͏P@4 (D)~X`&,>(F@E50LbO oQ4*X1-l&X"U+0 SXЀp# A Nb.pQYĢ-T TN, ' 7H7B.f!P΢E.jL)TA pf.f ZPA Ѕ.0 rT P8+0 UBRpB2sY,s`xZӞTAFVs E0 *" Tap*X!.`s(1x K`/]0QslB()SPw!]lGB*"bD%Tw T!0\JVnA0: XjjaHW-c+X-Aau]* ad 0$ }45 /zֳ>ʃT$ Mc!d0 `2 @C*@e` pVp@[.6E2!eX+R.A2KrAR1` ]x{0].p1h<^xF;N0 ,c3 KB4x^5j`džWb cQ WѨ5v x4бQHN2 KFontDialog 0 0 512 406 Dialog 10 90 211 27 10 70 71 17 Font 244 70 71 17 Style 438 70 91 17 Size 244 90 171 27 438 90 51 27 10 126 211 161 244 126 171 161 438 126 51 161 10 295 81 17 View 10 315 371 71 390 315 99 27 Cancel 390 355 99 27 OK 8 40 111 20 <html><head/><body><p><span style=" font-weight:600;">Current Font:</span></p></body></html> 120 41 371 20 <html><head/><body><p><br/></p></body></html> 7 6 26 20 194 6 111 20 Change Fonts Qt::AlignCenter 0 0 499 395 border-image: url(:/pixmap/image/font-bg.png); QFrame::StyledPanel QFrame::Raised frame familyEdit fontLabel styleLabel sizeLabel styleEdit sizeEdit familyList styleList sizeList sampleLabel sampleEdit quitBtn okBtn curFontLabel curFontText btn_close titleLabel youker-assistant-1.0.1/qml/img/icons/themeset.png000644 001750 001750 00000005250 12312451003 022345 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe< JIDATx\WkU]s朙! D*%#* ZZ D#(Hb'ؠ@ @6(%""Җ>{73s\'?7'gf{ V^/<+ٮ\PY,q@##A4@# #dIh(TgZ|2TȪ]{xtsOoѿhU>撛\pV7B眝C  sP R-ρCE:F/W C)}c : ҴM^ iP-ذ\\b:219ftvƠƅk ^q[څa_|X4q6+++YE6wp8h` Ĩ *-%vz-n`jiC-^F#)'yx ՘[mHF@{UAV Rs^(҄U0(^Gc}Ū8{ZX,`s !3>"7b8=]4T%wLȳJ# C!(9ڎܚK0}0=T.:b.P(/=ַ@1cƴ-d h)Im&Ih9WtaxI9wp J J㬸p%K܌"*#K&:Y?l60:F+V=R=o1 &$Ԇ`q鐬krCAbdSZh@Y@~i@K24 b $RʃQ$a ;y9&yDSҚ&TQ?h<&wԊFBȢwiib_ R=K)dԋ d&г+ %2j֞?3?<߆3߲Û@:?TAn!2,^3"Vޥffw7"\ v]g>} &q۠ T355gt4ԍ3Wo2E_[se3馥ȋ~dvC0}$~k'\wn³c>4YMrAS#*b$JH=UFN |T)WrgM*\Y Hq?,ݸn6N|ixnMXq:,iRdvy ! 1y& ,=!`zY˪SDy/j){jˏ~wޅ܉|2mYJa4T4hx/BU%J .:B \t|`z% ↭۰;.<6\c'YSKrK.Tue aA=t,R;=EZtэ_>8~x Ěw !Jc,>L3RlqOB 99P{@Ph.+fe{q=`7嗀x>u%^[1.˱;^QzuoWWĬg8FD0_g7oƯnzxs\4Kݘ t{ հLXv')5", OJkՠt ֩Hm1\j㻞7_㗬cc3M;?xg&x_'` %:#!YI ;Y+jDe{TP~c~dG??ϼg} Թkb<%g]GtýЋ~-A-%'g0TZIQuxх,'qCO[S~=³w+996>er:S-&9 IQ^Ԥ4>ujt2yQq#8J^s^k-gW%?}~M/`p !^-xǒ! 51^B _ 叧j#/=y7:t-ٲtٙP]|Utb4兩H Bx[5p!t}o&D @coC._qi|PغQwʾYa[,ޓQBNڟ2b=Hmiᨗ%Tz9 y pi-H$JoP^ɷesox2Y@kJwVrը2o{@k|ֽCKTwξ{6E '{OKzP <5fl}oҟp ^:(z- uV}ek5GtO^`\ u(Y9Hg/EPb~(.׷C~WlYYu] Ҳ>/7|&i)T|CYXOڑ<+F?+ lPIENDB`youker-assistant-1.0.1/qml/img/icons/move.gif000644 001750 001750 00000001266 12312451003 021461 0ustar00saucysaucy000000 000000 GIF89a!@EqJu4a֯v)ں`@lۼ\DžeZƂWŀ1_N[vsLq! NETSCAPE2.0!!,bpZ,Hd":R88 z AdobedF]     1 !AQq"2B# aRCS$%6v7X1!AQ"Bq2arRV ?]y(U<>`i*])UsɘHf<mo z!w*7o(II@#ҨPqp~$Z=SJ& d`z(j*+||`heës:ʋS-i urrI|YM'!(zJ~޽aֈJN I]ɕYWQayc홹vC8RZV9֙+Mo/w%/z~Mw'?ߜ]Wbqv߅fv/gU\DzrojNA7+ A7F!&m!DpjX_>~ԫ 9v@z+Oљ]-&`d2ЂoѢVn>NCM 5 wى}=הƇ๯o//3wC!}tǷ&6IٺC~[(p5Ya/uVϦ9AIsUɿ%eYS9́QWNmt2cA sl}Nn.-EyqJ A7gM++ 쬽:p52ݾ_՟:nc9 N}dVؒ#̂AK듮W+u*14k{جt"Q>ѱ[]wRݞq%^`qhtBqfhs=Gc˽7i6?z> Om},$zVk yomhupkٸ5s}I{ЩV3}ޛS_E_{1ӿH]]ͤ6I^mnYo}S7[Ŧnó&{kyYe m)m$zҿ9,os ].mw3~^Y__W?_L(' Kle-qk9iiunu]˿B,~JY@:qz|=?*Kf= Tl zks;+{oޭ~}'w[ٷū/],k.Knum,z?{^1Ӿ}?n J DoN/TI%)$IK'I$Uun6ݣ#ͮSI% !xǨ96Cq{Y0$Iܩ$ITʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ Photoshop 3.08BIM%8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM@@8BIM8BIM=F]sRyb]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FLJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IO+.^O}=/ 94;Ӻ[]%}"[+4dYc+-f`kOؑ-> 5 wى}=הƇ๯o//3wC!}tǷ&6IٺC~[(p5Ya/uVϦ9AIsUɿ%eYS9́QWNmt2cA sl}Nn.-EyqJ A7gM++ 쬽:p52ݾ_՟:nc9 N}dVؒ#̂AK듮W+u*14k{جt"Q>ѱ[]wRݞq%^`qhtBqfhs=Gc˽7i6?z> Om},$zVk yomhupkٸ5s}I{ЩV3}ޛS_E_{1ӿH]]ͤ6I^mnYo}S7[Ŧnó&{kyYe m)m$zҿ9,os ].mw3~^Y__W?_L(' Kle-qk9iiunu]˿B,~JY@:qz|=?*Kf= Tl zks;+{oޭ~}'w[ٷū/],k.Knum,z?{^1Ӿ}?n J DoN/TI%)$IK'I$Uun6ݣ#ͮSI% !xǨ96Cq{Y0$Iܩ$ITʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2012-03-13T13:26:02+08:00 2012-03-13T13:26:02+08:00 2012-03-13T13:26:02+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:fccd5f49-6ccc-11e1-818a-a659f6cdec7a image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~Kpo=(;om2 #c0± -/o0}ǻ$Ttl,fgkJ}Iԟ:CmOzt_ ~]mWy/ׇqu)m{+1тpK@o-EKmܑ̀]'gc>}>Pgs2yN⦓{ sW|GUV6+0'2DcpT5S'Xk]<4z:v?O1o;>˵rP!vr}@)';o+];L[wL]ِIGܻ܂%6<IiaJiXV`2y$VBO<<}6v4X+}%H.$m:@$.:++{_X>mWۻW;GlX홸ك6FsZ>$cʎG>KN||=wgϝ=., u$׭k#+Ko&, *1#6پG&2fw: v+4}{sk0o n讆ϕ{1a9Qȼ9&KY[tVBZK "hԒcqP;(}_̮ #7>W-ޑ'ne6>?ڵɿ:7nc> ݥMUBhf*qBk9o{yRĎ\3xnFG%MA,Cbi|}۲:b6뽙׻|m=1=yjy5c WB֞}lFql3E*)i`.Y`|M]vg^nk1So'߿;g]$)gSC \~E96gøNlח9sPd)m bu1A$ZE|u*{YI!9"x;Mi&clڴ)~Aaz K_œW04\^ ,ͲT[EwVG PEc~G}@=d|z>]uy{)v[Bi cD>wۆur{ZXqv cg;'6Z 1+ gY` AaEkhlW۽Zxe#ƿVjp H55i#oql8(2 ز+7fXwto.d䕥defǒ:UvyڹbwVD0ZPb0(]9CIלmӽq;osf%ތ;Tor^߮L\2FK) hY ^y=^ptQ'Qm5 )Pi+[o۵n*;&4uT?ymퟞZKIb 11ozsҋ| ^h[T&;vhZy@]Łҫ>+`V٥ҷ݁,ENݿs8f1}͹jlQe\ H)5 /Hg/V[h[[ >Xk=*铣Yc:-ո=C]6:ʮaҌNAW8s9 gQ!fըіFoV k*$kQIXRjFOW?oW [k-rC9 d}˼s'+m@yV8Օo55yrKd'!xHڨ΅Uqq+l(wg~VKq=Ԙ,-N3iGZnT_58k&}2V̅}2[I?y$۹Si Wd]o yG5m0^ҝ`|}z|nN=a֘*¯\\}]l*3}3,NBJ:zLчAʩ#1QO87?gB޾qw=|mwٔ2)oUĖ^H4@Ir NgdLm?yV;8oo>O/{ ._??֏vx U_ 窚i: wWytL88˼OzÜ-#3qRugm^6*+$Upi"P".'L-/4nKNY"1UF[(AXT:#w74[>;yrx/z/;˸*kxݛiV*Yh*yhj њ3]I׺>ޤfl&vI7.("mlH,K&DV:QlO*b=m̮>ޘڟwvGٴٍ˸sjZ*tZffU]VV]ԞCo7~xRf崊R$ǘIHMFO7p|UڝwMvWg:f;vNUvnkTZulf}OrM=ESSBdm iZ@nI^iۭMo I-c1ʫ$.a% ƌ8punx߸x%keğ{dNvUWj2 S^5pԜ5Fz?۵ŻsAuxQMnV%Ëf#=Ɣ!$Yq0f~>`xwn;v. =O}cm%FG/7FϬYLlt%1GO2cg:Gj7WoỦv];wN725qr[B N!\MSk2xqȠwX4'j-a'i=M} d =<*ٴ.Q%.Bو$,Ef?5eaw2c݃~'휎٤em`kkWTsX2e7+shզsnǶj=M5®#rq\\FTx0Z`tURT]Gw|-Uds;Ko]c3|,Yb;uAM7`%0mD!gBQo!^ov&e$^ +Jæ«bSKSPmMOMulS"3gpۙ9}S3[5ZXV5s'#銃4$VM8|4jKyjKHݞ5y<>#0TduE:OfE~ꚏK3dOy>juV_ \Z}/j~-5x|m= uzO u֑ȷ67>SրW~ߪz֕?:EO~t1״/AaT+юSOSׂ^п,~T @L{kmm}ᷰmfi1&.9I~%UA]5`AGPUsԐ^!2:RC)AK]%Ch{2gnɴvR`mH28 *դg [%j1xLB8)ȞQ>QBte'2\˿޵ dS<^Q8-FqhƭڹL*ZJxii8 aaP Q(bB ,XTJĻ;%ً19$RI9$s}#7Y6}@t5ФE]ˢ(r H%%(C~:w@0E *hCaevIQՠJ] e\͛??>9yoggg|oP;꧓o`#}zӟƵׯ 'h@C"r&"s~~~@)TL+ʲ")))))))))))))K5#T8[M%czI DJ,K@e%$T78n=68n=;j'떀T] wuD}gYM~\\\\\\\\\\\\\i2ܺsws“ &hhڧq2`mWqC:m`JYW[-pm.*u(m+eN"%[7)}}ufՉBf1o^ ooYn]6/p]tBکIk~/"4 f(vSvKs9Ws2y|VMq2a p?]g?c׬Ӹ0m 6 4R`!ڵt燚.Aȕi[fӴ4C5 ^ߎPm  Rh^vrUB4^ ukct'"/א;T6( 4/|r 0w Eo'rBhķao }r\%k-}[wk ߅U BmW٩>&6tߦkdnj k4L']~ݓiYv1.t Z\4w†sYx3& c?µUï|m|qۇ}smݫrefh,X7X媄Ӳ ` `$Q$s׀Z4 GBm dY@_^^ ݡu%l{.zM0b8sRZkuyy97?~ `IƷ ꅮc 藩^YF9`_ۯ/..iֱkx+e 6 ?*IxKk̞xT.mnWI0,?޿&P{X!ʲ^x,})%z@eY?i҃5IeI&I l0Pi$I(H%RIABDAhc@BUVʲ*ֺ,L&EYU.i5AIYNK}?UEQADW<s4}@lYlb7J~vr^0@0 r ,&[\ˉ:]  emIIe:hNI$TI%)d/d J_HjclɹߣǯDMU7~FV:WLms\mrǟoJtG>[]{}?"qK_ӕKKE;2z 3%8uuKΗq~kCCZXΝ{4֬ǃnZ [u1INLMϨ{b,i{%3lbk97ټ5cEI$TI%8Y?u`<]g4f]"uñ$vEqԆ%;.kyp Bޟ#T%7mϟ>XR͆A70%U#C{Aӳ[tۙݯeIJRI$TI%"ɨ]K<<gPH#V|BJT mLS ci)JD-*cC!:7Pm>kd)ڊM|#;Qs,w'ߤcyc|ԔJ9.$-G>uw>8%WRI$Tʩ$ ^#gy_,*ntg6^ѷkEk\AWI$輺@H._Dm[0A֛I$%I)%I) HPhotoshop 3.08BIM%8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM?F]g*h-7]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM y]FL]JFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI%_6*sq?kI)z>s4}@lYlb7J~vr^0@0 r ,&[\ˉ:]  emIIe:hNI$TI%)d/d J_HjclɹߣǯDMU7~FV:WLms\mrǟoJtG>[]{}?"qK_ӕKKE;2z 3%8uuKΗq~kCCZXΝ{4֬ǃnZ [u1INLMϨ{b,i{%3lbk97ټ5cEI$TI%8Y?u`<]g4f]"uñ$vEqԆ%;.kyp Bޟ#T%7mϟ>XR͆A70%U#C{Aӳ[tۙݯeIJRI$TI%"ɨ]K<<gPH#V|BJT mLS ci)JD-*cC!:7Pm>kd)ڊM|#;Qs,w'ߤcyc|ԔJ9.$-G>uw>8%WRI$Tʩ$ ^#gy_,*ntg6^ѷkEk\AWI$輺@H._Dm[0A֛I$%I)%I)8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2011-12-02T10:24:49+08:00 2011-12-02T10:24:49+08:00 2011-12-02T10:24:49+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:cf644b22-1c8c-11e1-ae7e-db667b27342f image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^So~ϑ6zB]ىH9Vvlk JwSe&f$M2$Љ_ zoY2ŏa1y ^v%f:<<5$i*?;st;+6s_%PrY (h[~](^}LQNz{uQb򽟇ٔu:}IuF߻~a_>FYmڿ6cGl3Uw?ט<glTJSQr{ |L 3[I27MoUéUl|.+uo)Um%4VT=׺Jt;&pg`&M"3QHj/dg l9 5_~Zoxϑ;NdnΧ-S/u^Qg:͎+2;kyleӼ3:z?uu{{^ߺ^,`&2(vwl E>\^Ӫ$A{8jLx9zCO3gߺ@O͂ywrvN^Iws>Ow! jڏ DXAC4([{(_(GQk{^)8$Hp?#StXK=tRV%-WS-DtZɡ8b puA {t5||ԠXϼɊr[sr >ڔ- m4FSǿul".m*\YjcW'~MGqTR;IҪ",[.+GP۟zRj+wţiXRvb)5Bd%G~lUKt)MIOczBF5U׺}׽u~ߺ^.")w~œe]B?]uovH목qBIRIihZYUA:{䕘v.זkߺ]y7ڏ[~J7` qϿumsc"և#dOĿS.;! s/<^>=5sjaAM읬iW⿑yr>Uo^>h6Ou~{ߺ^ߺ^v6ٛjUCWP kh&=t[T Ik誠h9>J5YA.kJJH-{u3'o+{*Uu m?O8׺GpA6}y˴6ܒ< I'{1;V(HloM=W 2ĬHԿͬo㫎%HJFY@'{3׽u~ߺ^JF-<׺{b;;menB ]6qS@ 8)bIBiU--1 ^^砥m|?pk"yl5D9 HUᕂC"׺L}{"Ƕz >>S7KaO%Dފ?~b{{'bYU6 Z\!^n`}tY}ӔԒg#2Dm=߻rKACUJ:8CK,OuWιLWyoO%JKQ`Xҟ1$8)ca3k {tj}u~{ߺ_ߺ^|W_!mt݋ 7$˃hW$K"(-{{^6/j)vSɵmU%-Qv֛|."<#ի_Qɫ<{^wM&dvח'v ,GߺL}~ '604߬}v,˨Z10S}Oԟ~=|i yuGĵtc.b󩧓4Ɋ0#R _.>{^ϣ x]tmaM׺w׽u~youker-assistant-1.0.1/src/qrangemodel.h000644 001750 001750 00000007153 12312451003 020603 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #ifndef QRANGEMODEL_H #define QRANGEMODEL_H #include #include #include #include class QRangeModelPrivate; class QRangeModel : public QObject { Q_OBJECT Q_PROPERTY(qreal value READ value WRITE setValue NOTIFY valueChanged USER true) Q_PROPERTY(qreal minimumValue READ minimum WRITE setMinimum NOTIFY minimumChanged) Q_PROPERTY(qreal maximumValue READ maximum WRITE setMaximum NOTIFY maximumChanged) Q_PROPERTY(qreal stepSize READ stepSize WRITE setStepSize NOTIFY stepSizeChanged) Q_PROPERTY(qreal position READ position WRITE setPosition NOTIFY positionChanged) Q_PROPERTY(qreal positionAtMinimum READ positionAtMinimum WRITE setPositionAtMinimum NOTIFY positionAtMinimumChanged) Q_PROPERTY(qreal positionAtMaximum READ positionAtMaximum WRITE setPositionAtMaximum NOTIFY positionAtMaximumChanged) Q_PROPERTY(bool inverted READ inverted WRITE setInverted NOTIFY invertedChanged) public: QRangeModel(QObject *parent = 0); virtual ~QRangeModel(); void setRange(qreal min, qreal max); void setPositionRange(qreal min, qreal max); void setStepSize(qreal stepSize); qreal stepSize() const; void setMinimum(qreal min); qreal minimum() const; void setMaximum(qreal max); qreal maximum() const; void setPositionAtMinimum(qreal posAtMin); qreal positionAtMinimum() const; void setPositionAtMaximum(qreal posAtMax); qreal positionAtMaximum() const; void setInverted(bool inverted); bool inverted() const; qreal value() const; qreal position() const; Q_INVOKABLE qreal valueForPosition(qreal position) const; Q_INVOKABLE qreal positionForValue(qreal value) const; public Q_SLOTS: void toMinimum(); void toMaximum(); void setValue(qreal value); void setPosition(qreal position); Q_SIGNALS: void valueChanged(qreal value); void positionChanged(qreal position); void stepSizeChanged(qreal stepSize); void invertedChanged(bool inverted); void minimumChanged(qreal min); void maximumChanged(qreal max); void positionAtMinimumChanged(qreal min); void positionAtMaximumChanged(qreal max); protected: QRangeModel(QRangeModelPrivate &dd, QObject *parent); QRangeModelPrivate* d_ptr; private: Q_DISABLE_COPY(QRangeModel) Q_DECLARE_PRIVATE(QRangeModel) }; QML_DECLARE_TYPE(QRangeModel) #endif // QRANGEMODEL_H youker-assistant-1.0.1/src/qwheelarea.cpp000644 001750 001750 00000010557 12312451003 020760 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #include "qwheelarea.h" QWheelArea::QWheelArea(QDeclarativeItem *parent) : QDeclarativeItem(parent), m_horizontalMinimumValue(0), m_horizontalMaximumValue(0), m_verticalMinimumValue(0), m_verticalMaximumValue(0), m_horizontalValue(0), m_verticalValue(0), m_verticalDelta(0), m_horizontalDelta(0), m_scrollSpeed(1.0) { } QWheelArea::~QWheelArea() { } bool QWheelArea::event(QEvent *e) { switch (e->type()) { case QEvent::GraphicsSceneWheel: { QGraphicsSceneWheelEvent *we = static_cast(e); if (we->orientation() == Qt::Vertical) setVerticalDelta(we->delta()); else setHorizontalDelta(we->delta()); return true; } case QEvent::Wheel: { QWheelEvent *we = static_cast(e); if (we->orientation() == Qt::Vertical) setVerticalDelta(we->delta()); else setHorizontalDelta(we->delta()); return true; } default: break; } return QDeclarativeItem::event(e); } void QWheelArea::setHorizontalMinimumValue(qreal value) { m_horizontalMinimumValue = value; } qreal QWheelArea::horizontalMinimumValue() const { return m_horizontalMinimumValue; } void QWheelArea::setHorizontalMaximumValue(qreal value) { m_horizontalMaximumValue = value; } qreal QWheelArea::horizontalMaximumValue() const { return m_horizontalMaximumValue; } void QWheelArea::setVerticalMinimumValue(qreal value) { m_verticalMinimumValue = value; } qreal QWheelArea::verticalMinimumValue() const { return m_verticalMinimumValue; } void QWheelArea::setVerticalMaximumValue(qreal value) { m_verticalMaximumValue = value; } qreal QWheelArea::verticalMaximumValue() const { return m_verticalMaximumValue; } void QWheelArea::setHorizontalValue(qreal value) { value = qBound(m_horizontalMinimumValue, value, m_horizontalMaximumValue); if (value != m_horizontalValue) { m_horizontalValue = value; emit horizontalValueChanged(); } } qreal QWheelArea::horizontalValue() const { return m_horizontalValue; } void QWheelArea::setVerticalValue(qreal value) { value = qBound(m_verticalMinimumValue, value, m_verticalMaximumValue); if (value != m_verticalValue) { m_verticalValue = value; emit verticalValueChanged(); } } qreal QWheelArea::verticalValue() const { return m_verticalValue; } void QWheelArea::setVerticalDelta(qreal value) { m_verticalDelta = m_scrollSpeed * value / 15; setVerticalValue(m_verticalValue - m_verticalDelta); emit verticalWheelMoved(); } qreal QWheelArea::verticalDelta() const { return m_verticalDelta; } void QWheelArea::setHorizontalDelta(qreal value) { m_horizontalDelta = value / 15; setHorizontalValue(m_horizontalValue - m_horizontalDelta); emit horizontalWheelMoved(); } qreal QWheelArea::horizontalDelta() const { return m_horizontalDelta; } void QWheelArea::setScrollSpeed(qreal value) { if (value != m_scrollSpeed) { m_scrollSpeed = value; emit scrollSpeedChanged(); } } qreal QWheelArea::scrollSpeed() const { return m_scrollSpeed; } youker-assistant-1.0.1/src/processmanager.h000644 001750 001750 00000004416 12312451003 021315 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef PROCESSMANAGER_H #define PROCESSMANAGER_H #include #include #include #include "yprocess.h" #include "util.h" #include #include class QSettings; class ProcessManager : public QObject { Q_OBJECT public: explicit ProcessManager(QObject *parent = 0); ~ProcessManager(); QMap *memos; void readMemoFile(); // Q_INVOKABLE QList getProcess(); //得到当前登录用户的所有进程列表 Q_INVOKABLE QStringList getProcess(); //得到所有进程的列表 Q_INVOKABLE QStringList getProcessAdvance(); //根据进程号杀掉进程 Q_INVOKABLE bool killProcess(QString pid); //清空进程序号和进程号组合的map Q_INVOKABLE void clearMap(); //更新进程序号和进程号组合的map Q_INVOKABLE void updateMap(QString num, QString id); //从map中得到进程号 Q_INVOKABLE QString getProcessId(QString currentIndex); //从map中得到进程在列表中的序号 Q_INVOKABLE int getProcessIndex(QString currentId); //清空进程号和用户名组合的map Q_INVOKABLE void clearUserMap(); //更新进程序号和进程号组合的map Q_INVOKABLE void updateUserMap(QString id, QString user); //从map中得到进程号 Q_INVOKABLE QString getProcessUser(QString currentId); //从配置文件中得到当前的普通用户名 Q_INVOKABLE QString getCasualUser(); signals: public slots: private: QSettings * mSettings; QMap processMap; QMap userMap; }; #endif // PROCESSMANAGER_H youker-assistant-1.0.1/src/qtkeytrans.cpp000644 001750 001750 00000115241 12312451003 021043 0ustar00saucysaucy000000 000000 /*************************************************************************** * Copyright (C) 2012~2012 by CSSlayer * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include #include #include #include #include "qtkeytrans.h" #include "qtkeytransdata.h" #define _ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) #define _ARRAY_END(a) (a + _ARRAY_SIZE(a)) void qEventToSym(int key, const QString& text, Qt::KeyboardModifiers mod, int& outsym, unsigned int& outstate) { int sym = 0; int state = 0; do { if (text.length() <= 0) break; int uni = text[0].unicode(); int* result = qBinaryFind(unicodeHasKey, _ARRAY_END(unicodeHasKey), uni); if (result != _ARRAY_END(unicodeHasKey)) { sym = *result + 0x1000000; break; } Unicode2Key* keyMap = qBinaryFind(unicodeKeyMap, _ARRAY_END(unicodeKeyMap), uni); if (keyMap != _ARRAY_END(unicodeKeyMap)) { sym = keyMap->key; break; } } while(0); do { if (sym) break; QtCode2Key* result = NULL; if (mod & Qt::KeypadModifier) { result = qBinaryFind(keyPadQtCodeToKey, _ARRAY_END(keyPadQtCodeToKey), key); if (result == _ARRAY_END(keyPadQtCodeToKey)) result = NULL; } else { if (text.isNull()) { result = qBinaryFind(qtCodeToKeyBackup, _ARRAY_END(qtCodeToKeyBackup), key); if (result == _ARRAY_END(qtCodeToKeyBackup)) result = NULL; } if (!result) { result = qBinaryFind(qtCodeToKey, _ARRAY_END(qtCodeToKey), key); if (result == _ARRAY_END(qtCodeToKey)) result = NULL; } if (!result) { result = qBinaryFind(keyPadQtCodeToKey, _ARRAY_END(keyPadQtCodeToKey), key); if (result == _ARRAY_END(keyPadQtCodeToKey)) result = NULL; } } if (result) sym = result->key; } while (0); state = FcitxKeyState_None; if (mod & Qt::CTRL) state |= FcitxKeyState_Ctrl; if (mod & Qt::ALT) state |= FcitxKeyState_Alt; if (mod & Qt::SHIFT) state |= FcitxKeyState_Shift; if (mod & Qt::META) state |= FcitxKeyState_Super; outsym = sym; outstate= state; } // the next lines are taken on 10/2009 from X.org (X11/XF86keysym.h), defining some special // multimedia keys. They are included here as not every system has them. #define XF86FcitxKey_MonBrightnessUp 0x1008FF02 #define XF86FcitxKey_MonBrightnessDown 0x1008FF03 #define XF86FcitxKey_KbdLightOnOff 0x1008FF04 #define XF86FcitxKey_KbdBrightnessUp 0x1008FF05 #define XF86FcitxKey_KbdBrightnessDown 0x1008FF06 #define XF86FcitxKey_Standby 0x1008FF10 #define XF86FcitxKey_AudioLowerVolume 0x1008FF11 #define XF86FcitxKey_AudioMute 0x1008FF12 #define XF86FcitxKey_AudioRaiseVolume 0x1008FF13 #define XF86FcitxKey_AudioPlay 0x1008FF14 #define XF86FcitxKey_AudioStop 0x1008FF15 #define XF86FcitxKey_AudioPrev 0x1008FF16 #define XF86FcitxKey_AudioNext 0x1008FF17 #define XF86FcitxKey_HomePage 0x1008FF18 #define XF86FcitxKey_Mail 0x1008FF19 #define XF86FcitxKey_Start 0x1008FF1A #define XF86FcitxKey_Search 0x1008FF1B #define XF86FcitxKey_AudioRecord 0x1008FF1C #define XF86FcitxKey_Calculator 0x1008FF1D #define XF86FcitxKey_Memo 0x1008FF1E #define XF86FcitxKey_ToDoList 0x1008FF1F #define XF86FcitxKey_Calendar 0x1008FF20 #define XF86FcitxKey_PowerDown 0x1008FF21 #define XF86FcitxKey_ContrastAdjust 0x1008FF22 #define XF86FcitxKey_Back 0x1008FF26 #define XF86FcitxKey_Forward 0x1008FF27 #define XF86FcitxKey_Stop 0x1008FF28 #define XF86FcitxKey_Refresh 0x1008FF29 #define XF86FcitxKey_PowerOff 0x1008FF2A #define XF86FcitxKey_WakeUp 0x1008FF2B #define XF86FcitxKey_Eject 0x1008FF2C #define XF86FcitxKey_ScreenSaver 0x1008FF2D #define XF86FcitxKey_WWW 0x1008FF2E #define XF86FcitxKey_Sleep 0x1008FF2F #define XF86FcitxKey_Favorites 0x1008FF30 #define XF86FcitxKey_AudioPause 0x1008FF31 #define XF86FcitxKey_AudioMedia 0x1008FF32 #define XF86FcitxKey_MyComputer 0x1008FF33 #define XF86FcitxKey_LightBulb 0x1008FF35 #define XF86FcitxKey_Shop 0x1008FF36 #define XF86FcitxKey_History 0x1008FF37 #define XF86FcitxKey_OpenURL 0x1008FF38 #define XF86FcitxKey_AddFavorite 0x1008FF39 #define XF86FcitxKey_HotLinks 0x1008FF3A #define XF86FcitxKey_BrightnessAdjust 0x1008FF3B #define XF86FcitxKey_Finance 0x1008FF3C #define XF86FcitxKey_Community 0x1008FF3D #define XF86FcitxKey_AudioRewind 0x1008FF3E #define XF86FcitxKey_BackForward 0x1008FF3F #define XF86FcitxKey_Launch0 0x1008FF40 #define XF86FcitxKey_Launch1 0x1008FF41 #define XF86FcitxKey_Launch2 0x1008FF42 #define XF86FcitxKey_Launch3 0x1008FF43 #define XF86FcitxKey_Launch4 0x1008FF44 #define XF86FcitxKey_Launch5 0x1008FF45 #define XF86FcitxKey_Launch6 0x1008FF46 #define XF86FcitxKey_Launch7 0x1008FF47 #define XF86FcitxKey_Launch8 0x1008FF48 #define XF86FcitxKey_Launch9 0x1008FF49 #define XF86FcitxKey_LaunchA 0x1008FF4A #define XF86FcitxKey_LaunchB 0x1008FF4B #define XF86FcitxKey_LaunchC 0x1008FF4C #define XF86FcitxKey_LaunchD 0x1008FF4D #define XF86FcitxKey_LaunchE 0x1008FF4E #define XF86FcitxKey_LaunchF 0x1008FF4F #define XF86FcitxKey_ApplicationLeft 0x1008FF50 #define XF86FcitxKey_ApplicationRight 0x1008FF51 #define XF86FcitxKey_Book 0x1008FF52 #define XF86FcitxKey_CD 0x1008FF53 #define XF86FcitxKey_Calculater 0x1008FF54 #define XF86FcitxKey_Clear 0x1008FF55 #define XF86FcitxKey_ClearGrab 0x1008FE21 #define XF86FcitxKey_Close 0x1008FF56 #define XF86FcitxKey_Copy 0x1008FF57 #define XF86FcitxKey_Cut 0x1008FF58 #define XF86FcitxKey_Display 0x1008FF59 #define XF86FcitxKey_DOS 0x1008FF5A #define XF86FcitxKey_Documents 0x1008FF5B #define XF86FcitxKey_Excel 0x1008FF5C #define XF86FcitxKey_Explorer 0x1008FF5D #define XF86FcitxKey_Game 0x1008FF5E #define XF86FcitxKey_Go 0x1008FF5F #define XF86FcitxKey_iTouch 0x1008FF60 #define XF86FcitxKey_LogOff 0x1008FF61 #define XF86FcitxKey_Market 0x1008FF62 #define XF86FcitxKey_Meeting 0x1008FF63 #define XF86FcitxKey_MenuKB 0x1008FF65 #define XF86FcitxKey_MenuPB 0x1008FF66 #define XF86FcitxKey_MySites 0x1008FF67 #define XF86FcitxKey_News 0x1008FF69 #define XF86FcitxKey_OfficeHome 0x1008FF6A #define XF86FcitxKey_Option 0x1008FF6C #define XF86FcitxKey_Paste 0x1008FF6D #define XF86FcitxKey_Phone 0x1008FF6E #define XF86FcitxKey_Reply 0x1008FF72 #define XF86FcitxKey_Reload 0x1008FF73 #define XF86FcitxKey_RotateWindows 0x1008FF74 #define XF86FcitxKey_RotationPB 0x1008FF75 #define XF86FcitxKey_RotationKB 0x1008FF76 #define XF86FcitxKey_Save 0x1008FF77 #define XF86FcitxKey_Send 0x1008FF7B #define XF86FcitxKey_Spell 0x1008FF7C #define XF86FcitxKey_SplitScreen 0x1008FF7D #define XF86FcitxKey_Support 0x1008FF7E #define XF86FcitxKey_TaskPane 0x1008FF7F #define XF86FcitxKey_Terminal 0x1008FF80 #define XF86FcitxKey_Tools 0x1008FF81 #define XF86FcitxKey_Travel 0x1008FF82 #define XF86FcitxKey_Video 0x1008FF87 #define XF86FcitxKey_Word 0x1008FF89 #define XF86FcitxKey_Xfer 0x1008FF8A #define XF86FcitxKey_ZoomIn 0x1008FF8B #define XF86FcitxKey_ZoomOut 0x1008FF8C #define XF86FcitxKey_Away 0x1008FF8D #define XF86FcitxKey_Messenger 0x1008FF8E #define XF86FcitxKey_WebCam 0x1008FF8F #define XF86FcitxKey_MailForward 0x1008FF90 #define XF86FcitxKey_Pictures 0x1008FF91 #define XF86FcitxKey_Music 0x1008FF92 #define XF86FcitxKey_Battery 0x1008FF93 #define XF86FcitxKey_Bluetooth 0x1008FF94 #define XF86FcitxKey_WLAN 0x1008FF95 #define XF86FcitxKey_UWB 0x1008FF96 #define XF86FcitxKey_AudioForward 0x1008FF97 #define XF86FcitxKey_AudioRepeat 0x1008FF98 #define XF86FcitxKey_AudioRandomPlay 0x1008FF99 #define XF86FcitxKey_Subtitle 0x1008FF9A #define XF86FcitxKey_AudioCycleTrack 0x1008FF9B #define XF86FcitxKey_Time 0x1008FF9F #define XF86FcitxKey_Select 0x1008FFA0 #define XF86FcitxKey_View 0x1008FFA1 #define XF86FcitxKey_TopMenu 0x1008FFA2 #define XF86FcitxKey_Suspend 0x1008FFA7 #define XF86FcitxKey_Hibernate 0x1008FFA8 #define XF86FcitxKey_TouchpadToggle 0x1008FFA9 #define XF86FcitxKey_TouchpadOn 0x1008FFB0 #define XF86FcitxKey_TouchpadOff 0x1008FFB1 // end of XF86keysyms.h QT_BEGIN_NAMESPACE // keyboard mapping table static const unsigned int KeyTbl[] = { // misc keys FcitxKey_Escape, Qt::Key_Escape, FcitxKey_Tab, Qt::Key_Tab, FcitxKey_ISO_Left_Tab, Qt::Key_Backtab, FcitxKey_BackSpace, Qt::Key_Backspace, FcitxKey_Return, Qt::Key_Return, FcitxKey_Insert, Qt::Key_Insert, FcitxKey_Delete, Qt::Key_Delete, FcitxKey_Clear, Qt::Key_Delete, FcitxKey_Pause, Qt::Key_Pause, FcitxKey_Print, Qt::Key_Print, 0x1005FF60, Qt::Key_SysReq, // hardcoded Sun SysReq 0x1007ff00, Qt::Key_SysReq, // hardcoded X386 SysReq // cursor movement FcitxKey_Home, Qt::Key_Home, FcitxKey_End, Qt::Key_End, FcitxKey_Left, Qt::Key_Left, FcitxKey_Up, Qt::Key_Up, FcitxKey_Right, Qt::Key_Right, FcitxKey_Down, Qt::Key_Down, FcitxKey_Prior, Qt::Key_PageUp, FcitxKey_Next, Qt::Key_PageDown, // modifiers FcitxKey_Shift_L, Qt::Key_Shift, FcitxKey_Shift_R, Qt::Key_Shift, FcitxKey_Shift_Lock, Qt::Key_Shift, FcitxKey_Control_L, Qt::Key_Control, FcitxKey_Control_R, Qt::Key_Control, FcitxKey_Meta_L, Qt::Key_Meta, FcitxKey_Meta_R, Qt::Key_Meta, FcitxKey_Alt_L, Qt::Key_Alt, FcitxKey_Alt_R, Qt::Key_Alt, FcitxKey_Caps_Lock, Qt::Key_CapsLock, FcitxKey_Num_Lock, Qt::Key_NumLock, FcitxKey_Scroll_Lock, Qt::Key_ScrollLock, FcitxKey_Super_L, Qt::Key_Super_L, FcitxKey_Super_R, Qt::Key_Super_R, FcitxKey_Menu, Qt::Key_Menu, FcitxKey_Hyper_L, Qt::Key_Hyper_L, FcitxKey_Hyper_R, Qt::Key_Hyper_R, FcitxKey_Help, Qt::Key_Help, 0x1000FF74, Qt::Key_Backtab, // hardcoded HP backtab 0x1005FF10, Qt::Key_F11, // hardcoded Sun F36 (labeled F11) 0x1005FF11, Qt::Key_F12, // hardcoded Sun F37 (labeled F12) // numeric and function keypad keys FcitxKey_KP_Space, Qt::Key_Space, FcitxKey_KP_Tab, Qt::Key_Tab, FcitxKey_KP_Enter, Qt::Key_Enter, //FcitxKey_KP_F1, Qt::Key_F1, //FcitxKey_KP_F2, Qt::Key_F2, //FcitxKey_KP_F3, Qt::Key_F3, //FcitxKey_KP_F4, Qt::Key_F4, FcitxKey_KP_Home, Qt::Key_Home, FcitxKey_KP_Left, Qt::Key_Left, FcitxKey_KP_Up, Qt::Key_Up, FcitxKey_KP_Right, Qt::Key_Right, FcitxKey_KP_Down, Qt::Key_Down, FcitxKey_KP_Prior, Qt::Key_PageUp, FcitxKey_KP_Next, Qt::Key_PageDown, FcitxKey_KP_End, Qt::Key_End, FcitxKey_KP_Begin, Qt::Key_Clear, FcitxKey_KP_Insert, Qt::Key_Insert, FcitxKey_KP_Delete, Qt::Key_Delete, FcitxKey_KP_Equal, Qt::Key_Equal, FcitxKey_KP_Multiply, Qt::Key_Asterisk, FcitxKey_KP_Add, Qt::Key_Plus, FcitxKey_KP_Separator, Qt::Key_Comma, FcitxKey_KP_Subtract, Qt::Key_Minus, FcitxKey_KP_Decimal, Qt::Key_Period, FcitxKey_KP_Divide, Qt::Key_Slash, // International input method support keys // International & multi-key character composition FcitxKey_ISO_Level3_Shift, Qt::Key_AltGr, FcitxKey_Multi_key, Qt::Key_Multi_key, FcitxKey_Codeinput, Qt::Key_Codeinput, FcitxKey_SingleCandidate, Qt::Key_SingleCandidate, FcitxKey_MultipleCandidate, Qt::Key_MultipleCandidate, FcitxKey_PreviousCandidate, Qt::Key_PreviousCandidate, // Misc Functions FcitxKey_Mode_switch, Qt::Key_Mode_switch, FcitxKey_script_switch, Qt::Key_Mode_switch, // Japanese keyboard support FcitxKey_Kanji, Qt::Key_Kanji, FcitxKey_Muhenkan, Qt::Key_Muhenkan, //FcitxKey_Henkan_Mode, Qt::Key_Henkan_Mode, FcitxKey_Henkan_Mode, Qt::Key_Henkan, FcitxKey_Henkan, Qt::Key_Henkan, FcitxKey_Romaji, Qt::Key_Romaji, FcitxKey_Hiragana, Qt::Key_Hiragana, FcitxKey_Katakana, Qt::Key_Katakana, FcitxKey_Hiragana_Katakana, Qt::Key_Hiragana_Katakana, FcitxKey_Zenkaku, Qt::Key_Zenkaku, FcitxKey_Hankaku, Qt::Key_Hankaku, FcitxKey_Zenkaku_Hankaku, Qt::Key_Zenkaku_Hankaku, FcitxKey_Touroku, Qt::Key_Touroku, FcitxKey_Massyo, Qt::Key_Massyo, FcitxKey_Kana_Lock, Qt::Key_Kana_Lock, FcitxKey_Kana_Shift, Qt::Key_Kana_Shift, FcitxKey_Eisu_Shift, Qt::Key_Eisu_Shift, FcitxKey_Eisu_toggle, Qt::Key_Eisu_toggle, //FcitxKey_Kanji_Bangou, Qt::Key_Kanji_Bangou, //FcitxKey_Zen_Koho, Qt::Key_Zen_Koho, //FcitxKey_Mae_Koho, Qt::Key_Mae_Koho, FcitxKey_Kanji_Bangou, Qt::Key_Codeinput, FcitxKey_Zen_Koho, Qt::Key_MultipleCandidate, FcitxKey_Mae_Koho, Qt::Key_PreviousCandidate, #ifdef FcitxKey_KOREAN // Korean keyboard support FcitxKey_Hangul, Qt::Key_Hangul, FcitxKey_Hangul_Start, Qt::Key_Hangul_Start, FcitxKey_Hangul_End, Qt::Key_Hangul_End, FcitxKey_Hangul_Hanja, Qt::Key_Hangul_Hanja, FcitxKey_Hangul_Jamo, Qt::Key_Hangul_Jamo, FcitxKey_Hangul_Romaja, Qt::Key_Hangul_Romaja, //FcitxKey_Hangul_Codeinput, Qt::Key_Hangul_Codeinput, FcitxKey_Hangul_Codeinput, Qt::Key_Codeinput, FcitxKey_Hangul_Jeonja, Qt::Key_Hangul_Jeonja, FcitxKey_Hangul_Banja, Qt::Key_Hangul_Banja, FcitxKey_Hangul_PreHanja, Qt::Key_Hangul_PreHanja, FcitxKey_Hangul_PostHanja, Qt::Key_Hangul_PostHanja, //FcitxKey_Hangul_SingleCandidate,Qt::Key_Hangul_SingleCandidate, //FcitxKey_Hangul_MultipleCandidate,Qt::Key_Hangul_MultipleCandidate, //FcitxKey_Hangul_PreviousCandidate,Qt::Key_Hangul_PreviousCandidate, FcitxKey_Hangul_SingleCandidate, Qt::Key_SingleCandidate, FcitxKey_Hangul_MultipleCandidate,Qt::Key_MultipleCandidate, FcitxKey_Hangul_PreviousCandidate,Qt::Key_PreviousCandidate, FcitxKey_Hangul_Special, Qt::Key_Hangul_Special, //FcitxKey_Hangul_switch, Qt::Key_Hangul_switch, FcitxKey_Hangul_switch, Qt::Key_Mode_switch, #endif // FcitxKey_KOREAN // dead keys FcitxKey_dead_grave, Qt::Key_Dead_Grave, FcitxKey_dead_acute, Qt::Key_Dead_Acute, FcitxKey_dead_circumflex, Qt::Key_Dead_Circumflex, FcitxKey_dead_tilde, Qt::Key_Dead_Tilde, FcitxKey_dead_macron, Qt::Key_Dead_Macron, FcitxKey_dead_breve, Qt::Key_Dead_Breve, FcitxKey_dead_abovedot, Qt::Key_Dead_Abovedot, FcitxKey_dead_diaeresis, Qt::Key_Dead_Diaeresis, FcitxKey_dead_abovering, Qt::Key_Dead_Abovering, FcitxKey_dead_doubleacute, Qt::Key_Dead_Doubleacute, FcitxKey_dead_caron, Qt::Key_Dead_Caron, FcitxKey_dead_cedilla, Qt::Key_Dead_Cedilla, FcitxKey_dead_ogonek, Qt::Key_Dead_Ogonek, FcitxKey_dead_iota, Qt::Key_Dead_Iota, FcitxKey_dead_voiced_sound, Qt::Key_Dead_Voiced_Sound, FcitxKey_dead_semivoiced_sound, Qt::Key_Dead_Semivoiced_Sound, FcitxKey_dead_belowdot, Qt::Key_Dead_Belowdot, FcitxKey_dead_hook, Qt::Key_Dead_Hook, FcitxKey_dead_horn, Qt::Key_Dead_Horn, // Special keys from X.org - This include multimedia keys, // wireless/bluetooth/uwb keys, special launcher keys, etc. XF86FcitxKey_Back, Qt::Key_Back, XF86FcitxKey_Forward, Qt::Key_Forward, XF86FcitxKey_Stop, Qt::Key_Stop, XF86FcitxKey_Refresh, Qt::Key_Refresh, XF86FcitxKey_Favorites, Qt::Key_Favorites, XF86FcitxKey_AudioMedia, Qt::Key_LaunchMedia, XF86FcitxKey_OpenURL, Qt::Key_OpenUrl, XF86FcitxKey_HomePage, Qt::Key_HomePage, XF86FcitxKey_Search, Qt::Key_Search, XF86FcitxKey_AudioLowerVolume, Qt::Key_VolumeDown, XF86FcitxKey_AudioMute, Qt::Key_VolumeMute, XF86FcitxKey_AudioRaiseVolume, Qt::Key_VolumeUp, XF86FcitxKey_AudioPlay, Qt::Key_MediaPlay, XF86FcitxKey_AudioStop, Qt::Key_MediaStop, XF86FcitxKey_AudioPrev, Qt::Key_MediaPrevious, XF86FcitxKey_AudioNext, Qt::Key_MediaNext, XF86FcitxKey_AudioRecord, Qt::Key_MediaRecord, XF86FcitxKey_Mail, Qt::Key_LaunchMail, XF86FcitxKey_MyComputer, Qt::Key_Launch0, // ### Qt 6: remap properly XF86FcitxKey_Calculator, Qt::Key_Launch1, XF86FcitxKey_Memo, Qt::Key_Memo, XF86FcitxKey_ToDoList, Qt::Key_ToDoList, XF86FcitxKey_Calendar, Qt::Key_Calendar, XF86FcitxKey_PowerDown, Qt::Key_PowerDown, XF86FcitxKey_ContrastAdjust, Qt::Key_ContrastAdjust, XF86FcitxKey_Standby, Qt::Key_Standby, XF86FcitxKey_MonBrightnessUp, Qt::Key_MonBrightnessUp, XF86FcitxKey_MonBrightnessDown, Qt::Key_MonBrightnessDown, XF86FcitxKey_KbdLightOnOff, Qt::Key_KeyboardLightOnOff, XF86FcitxKey_KbdBrightnessUp, Qt::Key_KeyboardBrightnessUp, XF86FcitxKey_KbdBrightnessDown, Qt::Key_KeyboardBrightnessDown, XF86FcitxKey_PowerOff, Qt::Key_PowerOff, XF86FcitxKey_WakeUp, Qt::Key_WakeUp, XF86FcitxKey_Eject, Qt::Key_Eject, XF86FcitxKey_ScreenSaver, Qt::Key_ScreenSaver, XF86FcitxKey_WWW, Qt::Key_WWW, XF86FcitxKey_Sleep, Qt::Key_Sleep, XF86FcitxKey_LightBulb, Qt::Key_LightBulb, XF86FcitxKey_Shop, Qt::Key_Shop, XF86FcitxKey_History, Qt::Key_History, XF86FcitxKey_AddFavorite, Qt::Key_AddFavorite, XF86FcitxKey_HotLinks, Qt::Key_HotLinks, XF86FcitxKey_BrightnessAdjust, Qt::Key_BrightnessAdjust, XF86FcitxKey_Finance, Qt::Key_Finance, XF86FcitxKey_Community, Qt::Key_Community, XF86FcitxKey_AudioRewind, Qt::Key_AudioRewind, XF86FcitxKey_BackForward, Qt::Key_BackForward, XF86FcitxKey_ApplicationLeft, Qt::Key_ApplicationLeft, XF86FcitxKey_ApplicationRight, Qt::Key_ApplicationRight, XF86FcitxKey_Book, Qt::Key_Book, XF86FcitxKey_CD, Qt::Key_CD, XF86FcitxKey_Calculater, Qt::Key_Calculator, XF86FcitxKey_Clear, Qt::Key_Clear, XF86FcitxKey_ClearGrab, Qt::Key_ClearGrab, XF86FcitxKey_Close, Qt::Key_Close, XF86FcitxKey_Copy, Qt::Key_Copy, XF86FcitxKey_Cut, Qt::Key_Cut, XF86FcitxKey_Display, Qt::Key_Display, XF86FcitxKey_DOS, Qt::Key_DOS, XF86FcitxKey_Documents, Qt::Key_Documents, XF86FcitxKey_Excel, Qt::Key_Excel, XF86FcitxKey_Explorer, Qt::Key_Explorer, XF86FcitxKey_Game, Qt::Key_Game, XF86FcitxKey_Go, Qt::Key_Go, XF86FcitxKey_iTouch, Qt::Key_iTouch, XF86FcitxKey_LogOff, Qt::Key_LogOff, XF86FcitxKey_Market, Qt::Key_Market, XF86FcitxKey_Meeting, Qt::Key_Meeting, XF86FcitxKey_MenuKB, Qt::Key_MenuKB, XF86FcitxKey_MenuPB, Qt::Key_MenuPB, XF86FcitxKey_MySites, Qt::Key_MySites, XF86FcitxKey_News, Qt::Key_News, XF86FcitxKey_OfficeHome, Qt::Key_OfficeHome, XF86FcitxKey_Option, Qt::Key_Option, XF86FcitxKey_Paste, Qt::Key_Paste, XF86FcitxKey_Phone, Qt::Key_Phone, XF86FcitxKey_Reply, Qt::Key_Reply, XF86FcitxKey_Reload, Qt::Key_Reload, XF86FcitxKey_RotateWindows, Qt::Key_RotateWindows, XF86FcitxKey_RotationPB, Qt::Key_RotationPB, XF86FcitxKey_RotationKB, Qt::Key_RotationKB, XF86FcitxKey_Save, Qt::Key_Save, XF86FcitxKey_Send, Qt::Key_Send, XF86FcitxKey_Spell, Qt::Key_Spell, XF86FcitxKey_SplitScreen, Qt::Key_SplitScreen, XF86FcitxKey_Support, Qt::Key_Support, XF86FcitxKey_TaskPane, Qt::Key_TaskPane, XF86FcitxKey_Terminal, Qt::Key_Terminal, XF86FcitxKey_Tools, Qt::Key_Tools, XF86FcitxKey_Travel, Qt::Key_Travel, XF86FcitxKey_Video, Qt::Key_Video, XF86FcitxKey_Word, Qt::Key_Word, XF86FcitxKey_Xfer, Qt::Key_Xfer, XF86FcitxKey_ZoomIn, Qt::Key_ZoomIn, XF86FcitxKey_ZoomOut, Qt::Key_ZoomOut, XF86FcitxKey_Away, Qt::Key_Away, XF86FcitxKey_Messenger, Qt::Key_Messenger, XF86FcitxKey_WebCam, Qt::Key_WebCam, XF86FcitxKey_MailForward, Qt::Key_MailForward, XF86FcitxKey_Pictures, Qt::Key_Pictures, XF86FcitxKey_Music, Qt::Key_Music, XF86FcitxKey_Battery, Qt::Key_Battery, XF86FcitxKey_Bluetooth, Qt::Key_Bluetooth, XF86FcitxKey_WLAN, Qt::Key_WLAN, XF86FcitxKey_UWB, Qt::Key_UWB, XF86FcitxKey_AudioForward, Qt::Key_AudioForward, XF86FcitxKey_AudioRepeat, Qt::Key_AudioRepeat, XF86FcitxKey_AudioRandomPlay, Qt::Key_AudioRandomPlay, XF86FcitxKey_Subtitle, Qt::Key_Subtitle, XF86FcitxKey_AudioCycleTrack, Qt::Key_AudioCycleTrack, XF86FcitxKey_Time, Qt::Key_Time, XF86FcitxKey_Select, Qt::Key_Select, XF86FcitxKey_View, Qt::Key_View, XF86FcitxKey_TopMenu, Qt::Key_TopMenu, XF86FcitxKey_Bluetooth, Qt::Key_Bluetooth, XF86FcitxKey_Suspend, Qt::Key_Suspend, XF86FcitxKey_Hibernate, Qt::Key_Hibernate, XF86FcitxKey_Launch0, Qt::Key_Launch2, // ### Qt 6: remap properly XF86FcitxKey_Launch1, Qt::Key_Launch3, XF86FcitxKey_Launch2, Qt::Key_Launch4, XF86FcitxKey_Launch3, Qt::Key_Launch5, XF86FcitxKey_Launch4, Qt::Key_Launch6, XF86FcitxKey_Launch5, Qt::Key_Launch7, XF86FcitxKey_Launch6, Qt::Key_Launch8, XF86FcitxKey_Launch7, Qt::Key_Launch9, XF86FcitxKey_Launch8, Qt::Key_LaunchA, XF86FcitxKey_Launch9, Qt::Key_LaunchB, XF86FcitxKey_LaunchA, Qt::Key_LaunchC, XF86FcitxKey_LaunchB, Qt::Key_LaunchD, XF86FcitxKey_LaunchC, Qt::Key_LaunchE, XF86FcitxKey_LaunchD, Qt::Key_LaunchF, XF86FcitxKey_LaunchE, Qt::Key_LaunchG, XF86FcitxKey_LaunchF, Qt::Key_LaunchH, 0, 0 }; static const unsigned short katakanaKeysymsToUnicode[] = { 0x0000, 0x3002, 0x300C, 0x300D, 0x3001, 0x30FB, 0x30F2, 0x30A1, 0x30A3, 0x30A5, 0x30A7, 0x30A9, 0x30E3, 0x30E5, 0x30E7, 0x30C3, 0x30FC, 0x30A2, 0x30A4, 0x30A6, 0x30A8, 0x30AA, 0x30AB, 0x30AD, 0x30AF, 0x30B1, 0x30B3, 0x30B5, 0x30B7, 0x30B9, 0x30BB, 0x30BD, 0x30BF, 0x30C1, 0x30C4, 0x30C6, 0x30C8, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D2, 0x30D5, 0x30D8, 0x30DB, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E4, 0x30E6, 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EF, 0x30F3, 0x309B, 0x309C }; static const unsigned short cyrillicKeysymsToUnicode[] = { 0x0000, 0x0452, 0x0453, 0x0451, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x0000, 0x045e, 0x045f, 0x2116, 0x0402, 0x0403, 0x0401, 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x0000, 0x040e, 0x040f, 0x044e, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433, 0x0445, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d, 0x043e, 0x043f, 0x044f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432, 0x044c, 0x044b, 0x0437, 0x0448, 0x044d, 0x0449, 0x0447, 0x044a, 0x042e, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413, 0x0425, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d, 0x041e, 0x041f, 0x042f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412, 0x042c, 0x042b, 0x0417, 0x0428, 0x042d, 0x0429, 0x0427, 0x042a }; static const unsigned short greekKeysymsToUnicode[] = { 0x0000, 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0x0000, 0x038c, 0x038e, 0x03ab, 0x0000, 0x038f, 0x0000, 0x0000, 0x0385, 0x2015, 0x0000, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc, 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0, 0x03a1, 0x03a3, 0x0000, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0, 0x03c1, 0x03c3, 0x03c2, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; static const unsigned short technicalKeysymsToUnicode[] = { 0x0000, 0x23B7, 0x250C, 0x2500, 0x2320, 0x2321, 0x2502, 0x23A1, 0x23A3, 0x23A4, 0x23A6, 0x239B, 0x239D, 0x239E, 0x23A0, 0x23A8, 0x23AC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2264, 0x2260, 0x2265, 0x222B, 0x2234, 0x221D, 0x221E, 0x0000, 0x0000, 0x2207, 0x0000, 0x0000, 0x223C, 0x2243, 0x0000, 0x0000, 0x0000, 0x21D4, 0x21D2, 0x2261, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x221A, 0x0000, 0x0000, 0x0000, 0x2282, 0x2283, 0x2229, 0x222A, 0x2227, 0x2228, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2202, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0192, 0x0000, 0x0000, 0x0000, 0x0000, 0x2190, 0x2191, 0x2192, 0x2193, 0x0000 }; static const unsigned short specialKeysymsToUnicode[] = { 0x25C6, 0x2592, 0x2409, 0x240C, 0x240D, 0x240A, 0x0000, 0x0000, 0x2424, 0x240B, 0x2518, 0x2510, 0x250C, 0x2514, 0x253C, 0x23BA, 0x23BB, 0x2500, 0x23BC, 0x23BD, 0x251C, 0x2524, 0x2534, 0x252C, 0x2502, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; static const unsigned short publishingKeysymsToUnicode[] = { 0x0000, 0x2003, 0x2002, 0x2004, 0x2005, 0x2007, 0x2008, 0x2009, 0x200a, 0x2014, 0x2013, 0x0000, 0x0000, 0x0000, 0x2026, 0x2025, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x215a, 0x2105, 0x0000, 0x0000, 0x2012, 0x2329, 0x0000, 0x232a, 0x0000, 0x0000, 0x0000, 0x0000, 0x215b, 0x215c, 0x215d, 0x215e, 0x0000, 0x0000, 0x2122, 0x2613, 0x0000, 0x25c1, 0x25b7, 0x25cb, 0x25af, 0x2018, 0x2019, 0x201c, 0x201d, 0x211e, 0x0000, 0x2032, 0x2033, 0x0000, 0x271d, 0x0000, 0x25ac, 0x25c0, 0x25b6, 0x25cf, 0x25ae, 0x25e6, 0x25ab, 0x25ad, 0x25b3, 0x25bd, 0x2606, 0x2022, 0x25aa, 0x25b2, 0x25bc, 0x261c, 0x261e, 0x2663, 0x2666, 0x2665, 0x0000, 0x2720, 0x2020, 0x2021, 0x2713, 0x2717, 0x266f, 0x266d, 0x2642, 0x2640, 0x260e, 0x2315, 0x2117, 0x2038, 0x201a, 0x201e, 0x0000 }; static const unsigned short aplKeysymsToUnicode[] = { 0x0000, 0x0000, 0x0000, 0x003c, 0x0000, 0x0000, 0x003e, 0x0000, 0x2228, 0x2227, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x00af, 0x0000, 0x22a5, 0x2229, 0x230a, 0x0000, 0x005f, 0x0000, 0x0000, 0x0000, 0x2218, 0x0000, 0x2395, 0x0000, 0x22a4, 0x25cb, 0x0000, 0x0000, 0x0000, 0x2308, 0x0000, 0x0000, 0x222a, 0x0000, 0x2283, 0x0000, 0x2282, 0x0000, 0x22a2, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x22a3, 0x0000, 0x0000, 0x0000 }; static const unsigned short koreanKeysymsToUnicode[] = { 0x0000, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136, 0x3137, 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e, 0x313f, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e, 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e, 0x315f, 0x3160, 0x3161, 0x3162, 0x3163, 0x11a8, 0x11a9, 0x11aa, 0x11ab, 0x11ac, 0x11ad, 0x11ae, 0x11af, 0x11b0, 0x11b1, 0x11b2, 0x11b3, 0x11b4, 0x11b5, 0x11b6, 0x11b7, 0x11b8, 0x11b9, 0x11ba, 0x11bb, 0x11bc, 0x11bd, 0x11be, 0x11bf, 0x11c0, 0x11c1, 0x11c2, 0x316d, 0x3171, 0x3178, 0x317f, 0x3181, 0x3184, 0x3186, 0x318d, 0x318e, 0x11eb, 0x11f0, 0x11f9, 0x0000, 0x0000, 0x0000, 0x0000, 0x20a9 }; static QChar keysymToUnicode(unsigned char byte3, unsigned char byte4) { switch (byte3) { case 0x04: // katakana if (byte4 > 0xa0 && byte4 < 0xe0) return QChar(katakanaKeysymsToUnicode[byte4 - 0xa0]); else if (byte4 == 0x7e) return QChar(0x203e); // Overline break; case 0x06: // russian, use lookup table if (byte4 > 0xa0) return QChar(cyrillicKeysymsToUnicode[byte4 - 0xa0]); break; case 0x07: // greek if (byte4 > 0xa0) return QChar(greekKeysymsToUnicode[byte4 - 0xa0]); break; case 0x08: // technical if (byte4 > 0xa0) return QChar(technicalKeysymsToUnicode[byte4 - 0xa0]); break; case 0x09: // special if (byte4 >= 0xe0) return QChar(specialKeysymsToUnicode[byte4 - 0xe0]); break; case 0x0a: // publishing if (byte4 > 0xa0) return QChar(publishingKeysymsToUnicode[byte4 - 0xa0]); break; case 0x0b: // APL if (byte4 > 0xa0) return QChar(aplKeysymsToUnicode[byte4 - 0xa0]); break; case 0x0e: // Korean if (byte4 > 0xa0) return QChar(koreanKeysymsToUnicode[byte4 - 0xa0]); break; default: break; } return QChar(0x0); } int translateKeySym(uint key) { int code = -1; int i = 0; // any other keys while (KeyTbl[i]) { if (key == KeyTbl[i]) { code = (int)KeyTbl[i+1]; break; } i += 2; } return code; } QString translateKeySym(int keysym, uint xmodifiers, int &code, Qt::KeyboardModifiers &modifiers, QByteArray &chars, int &count) { // all keysyms smaller than 0xff00 are actally keys that can be mapped to unicode chars QTextCodec *mapper = QTextCodec::codecForLocale(); QChar converted; if (/*count == 0 &&*/ keysym < 0xff00) { unsigned char byte3 = (unsigned char)(keysym >> 8); int mib = -1; switch(byte3) { case 0: // Latin 1 case 1: // Latin 2 case 2: //latin 3 case 3: // latin4 mib = byte3 + 4; break; case 5: // arabic mib = 82; break; case 12: // Hebrew mib = 85; break; case 13: // Thai mib = 2259; break; case 4: // kana case 6: // cyrillic case 7: // greek case 8: // technical, no mapping here at the moment case 9: // Special case 10: // Publishing case 11: // APL case 14: // Korean, no mapping mib = -1; // manual conversion mapper= 0; converted = keysymToUnicode(byte3, keysym & 0xff); break; case 0x20: // currency symbols if (keysym >= 0x20a0 && keysym <= 0x20ac) { mib = -1; // manual conversion mapper = 0; converted = (uint)keysym; } break; default: break; } if (mib != -1) { mapper = QTextCodec::codecForMib(mib); if (chars.isEmpty()) chars.resize(1); chars[0] = (unsigned char) (keysym & 0xff); // get only the fourth bit for conversion later count = 1; } } else if (keysym >= 0x1000000 && keysym <= 0x100ffff) { converted = (ushort) (keysym - 0x1000000); mapper = 0; } if (count < (int)chars.size()-1) chars[count] = '\0'; QString text; if (!mapper && converted.unicode() != 0x0) { text = converted; } else if (!chars.isEmpty()) { // convert chars (8bit) to text (unicode). if (mapper) text = mapper->toUnicode(chars.constData(), count, 0); if (text.isEmpty()) { // no mapper, or codec couldn't convert to unicode (this // can happen when running in the C locale or with no LANG // set). try converting from latin-1 text = QString::fromLatin1(chars); } } if (xmodifiers & FcitxKeyState_Alt) { modifiers |= Qt::AltModifier; } if (xmodifiers & FcitxKeyState_Shift) { modifiers |= Qt::ShiftModifier; } if (xmodifiers & FcitxKeyState_Ctrl) { modifiers |= Qt::ControlModifier; } if (xmodifiers & FcitxKeyState_Super) { modifiers |= Qt::MetaModifier; } // Commentary in X11/keysymdef says that X codes match ASCII, so it // is safe to use the locale functions to process X codes in ISO8859-1. // // This is mainly for compatibility - applications should not use the // Qt keycodes between 128 and 255, but should rather use the // QKeyEvent::text(). // if (keysym < 128 || (keysym < 256 && (!mapper || mapper->mibEnum()==4))) { // upper-case key, if known code = isprint((int)keysym) ? toupper((int)keysym) : 0; } else if (keysym >= FcitxKey_F1 && keysym <= FcitxKey_F35) { // function keys code = Qt::Key_F1 + ((int)keysym - FcitxKey_F1); } else if (keysym >= FcitxKey_KP_Space && keysym <= FcitxKey_KP_9) { if (keysym >= FcitxKey_KP_0) { // numeric keypad keys code = Qt::Key_0 + ((int)keysym - FcitxKey_KP_0); } else { code = translateKeySym(keysym); } modifiers |= Qt::KeypadModifier; } else if (text.length() == 1 && text.unicode()->unicode() > 0x1f && text.unicode()->unicode() != 0x7f && !(keysym >= FcitxKey_dead_grave && keysym <= FcitxKey_dead_horn)) { code = text.unicode()->toUpper().unicode(); } else { // any other keys code = translateKeySym(keysym); if (code == Qt::Key_Tab && (modifiers & Qt::ShiftModifier)) { // map shift+tab to shift+backtab, QShortcutMap knows about it // and will handle it. code = Qt::Key_Backtab; text = QString(); } } return text; } bool symToKeyQt(int sym, unsigned int state, int& qtcode, Qt::KeyboardModifiers& mod) { QByteArray chars; int count = 0; translateKeySym(sym, state, qtcode, mod, chars, count); return qtcode >= 0; } bool keyQtToSym(int qtcode, Qt::KeyboardModifiers mod, int& sym, unsigned int& state) { qEventToSym(qtcode, QString(), mod, sym, state); return sym >= 0; } youker-assistant-1.0.1/src/translation/000755 001750 001750 00000000000 12312451003 020464 5ustar00saucysaucy000000 000000 backends/youker-assistant-daemon/data/beautify/plymouth/defaults/only_background.script000644 001750 001750 00000003116 12312451003 036440 0ustar00saucysaucy000000 000000 youker-assistant-1.0.1# ubuntukylin-logo.script - boot splash plugin # # Copyright (C) 2009 Canonical Ltd. # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. logo.image = Image("customBG.png"); logo.screen_x = Window.GetWidth(); logo.screen_y = Window.GetHeight(); logo.image_x = logo.image.GetWidth(); logo.image_y = logo.image.GetHeight(); logo.scale_factor_x = Window.GetWidth() / logo.image.GetWidth(); logo.scale_factor_y = Window.GetHeight() / logo.image.GetHeight(); if(logo.scale_factor_x >= 1 && logo.scale_factor_y >= 1){ logo.scale_factor = 1; } else{ if(logo.scale_factor_x > logo.scale_factor_y){ logo.scale_factor = logo.scale_factor_y; } else{ logo.scale_factor = logo.scale_factor_x; } } logo.scaled_image = logo.image.Scale(logo.image.GetWidth() * logo.scale_factor, logo.image.GetHeight() * logo.scale_factor); logo.sprite = Sprite(logo.scaled_image); logo.sprite.SetX(Window.GetWidth() / 2 - logo.scaled_image.GetWidth () / 2); logo.sprite.SetY(Window.GetHeight() / 2 - logo.scaled_image.GetHeight() / 2); logo.sprite.SetZ(-10000); youker-assistant-1.0.1/src/yprocess.h000644 001750 001750 00000001674 12312451003 020156 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef YPROCESS_H #define YPROCESS_H #include class YProcess { public: YProcess(); QString user; QString pid; QString pcpu; QString pmem; QString started; QString cmd; QString command; QString memo; }; #endif // YPROCESS_H youker-assistant-1.0.1/qml/img/logo/Manufacturer/MSI.jpg000644 001750 001750 00000010545 12312451003 023437 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1AqB Q2!"#$!1AQa"B$q2r4 ?ǓJ-qW&j *%i{*tM ROH.ӪI ARu#%CT8Pt5J~jiY_ATs ו4j=:&Mz})'PRS$s\ @TrH (@\`wTOO? 5UYi4Uɯڠ9kʉdA5ʝH&>R t)_9PrT]yHP *uN9$ d];GR,Vr*PUA5DM eN^JI):uTI/9*W.¤dj:J2W.#SU}0bx?kp{ysTa*f榤W8P` l$I` >Rlx9crԒ7)n8D}W/|o4cs@ۏ>KFD>X Ts΅J=8<6 qrQ9X]3>ܬBYخQуjZ!Ӑp.[|RJKU-F@nh4d7 K>3l#hv1}V&vBבٍJiatr$,(T/% lKclt5O<UyHNF- d\[ʑ?z4n=}oP?k\;2aorX#x4?n,㬅w5sHf KW "ew,EVӏK>>xAW+TƖF\fQs wb@v.k<ckš3r8;B"@1 Ka7Lg܎+uR֖ɰLř0'l}V384-`_jc8{Wq ]mi#SY#!"F߸[F[d$;7^eR]nWI~ u3྇,pF1[)w)Cm(˦qK5Hsϙ7CtT,2r~mWPGP"D"L\b8cһb|5{#$ofh$a,yM2 P;Wqno!үXڨ剽)K A<]+oꚋ&-"c ϶@0%^g<.sࡩ22,B8ӌ%:pp flY~̞7+y[X\vH< V >pp]/SYj;o[-ع +_~Uj9q¯`|Nц?؟ܵ\c(nuDzqh$xCl"No$aZwr;1 A@)V6{[ Nlw.N,"=^,qNT¤۾ G سAdV៤шS@bc D;[:լY^ͮG&J։s%qe`Lc0RҞC*@lb6p2>w3[ιۮwn;]dcIK2qIvVeɸw3b<cܧ<;g]l\1d,A ,XN3.F%N<=}bMxWToTr>=-7r¬7!/-®gGKmlvȽ_j&_r<+5_7K|ٓNʢ^}B}=4qu !9Sy-1@}gQ*eKɼBeH>r]Xjl:qSǰ 긲Ye/ cPC1b@F-hE,-N(KjQtnq-1LܜD ƻoT~Lu-=Uߕa#w'\U-5}\v2[A2.Ka_&"v?z{kg{6bIu &u)ɉk\Tݮ݂tݺrh#,#,#8vf]ĶNgk9#i ۴'\Bμwdr1V..8:`exѳݩRf/v^ZSt o͋PtxV7[UW]~Rj+N-qu|yYiͲy➉} ^/sr` \U$a j䧘*w)B٤^o1n.Sh< ?4:y~ꪭq `| sxC׸{9ƒg }ľ9{'˰8"\olPܾ.b6_Me”G7X-|0DDy+=ˎό `^&$k:/H[urPr;>D|gq.Oe(<$9@"3t`]ن!UC;iJmN6Mqr2'!]u{[KFaW)ZBMX*Ymų'xiR^hj%&ݠX;w|Cf'#S/se-2!QbrW&vťj;dfJӂ5n ܨ9<+ydZ鹑q82]CAx%\#ЀzK};`@W~\Jv PIQp{yKS'nIڦʣA`Fy+ksAȂHſ2뫺%ECC_8[08(-b<|?֕0S%[Y[Gh00 »C^PUk~S~QѵTl d Vf+;xn N? mƦx$T'D.dOҳcP2I⥃pZ\{Ampjdͬ]U]4TpUsRP\ 7m8uU-KP SL?LA⾒zyW7iY_ATs ו4j=:&Mz})'PRS$s\ @TrH (@\`wTOO? 5UYi4Uɯڠ9kʉdA5ʝH&>R t)_9PrT]yHP *uN9$ d];GR,Vr*PUA5DM eN^JI):uTI/9*W.¤dj:J2W.#SU}youker-assistant-1.0.1/qml/img/zh_CN/title/cleanup.png000644 001750 001750 00000007146 12312451003 023173 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<IDATxb? ]I t/ɓ' gϞeĎ;"O>Iԙ< ?~xŋ>|8 }9Fd?mJ2Hn19H eƍL .C|Rѣ~ m - A.k@S @&,^a#@}@]{Y @ƬKŧ]('xp٦}#ݻ7GR@>iҤoߞkB1 q悆#3 q @b)&WJlqAvf%%T {BYKo ۺu߿?(U? ]@ӧ٠"իWrbK377"h)ᘻd8吢{Pvb-P~*(PW>~[*O:n);K@ 5\XkuA h'  ТRp {tꬅh+h`,8Ch )m# ӇL{R@`ڰZ ,P‹_ bCeHpjh)P1.(F3y$@j7cHygϞ*uZV3̙3}||̀qPݻ@ZTٳ'|2DDE NLJ]$AW/A`tX ş^޾}{^^^@PP0݋]v󊱱s`U|Ν;qKEDDn޼ upp222 Vj2} dEI=ʖ{w/C_/d3)@:t~ԩA [$CX;@zmPt@Xk >@3g+ua`';33 F?N&&P>7eIp^XC)3(8ϿuS+VBE\VB?{K`]K!ruuN*,T`Ao `Fj;)W>ߛ>ߗ"A #>?U PHj;v{{{ψLϺ W3tʖe)lD詳-uz]ЉJl ־2GRYJ;%8bZ\mhh=sxM:!0eyujl_qR`㝜|bʎd1hlX]C9!m"K_lO[LΤi{e333|o h vݬ{zzΚQDm]W]̾1[G I.-Qd\i$ P)=7^כ@vΕ. yYUU,+**B=ͩ @r/uttWUUID.#1'$M%@DRMXEcaCezLQh1Cp6iaGzTQ\.)EQ/_Aļ[@]l#s܍ICZ_[Uݐa*ڥK1k[ZD"}}}~vZ\\]1Ћp\n_-qny}F{ 1o #D| X~a\3[Lo^s8MqAjT@1˸^͚0 DU9m/x w&&&3I*19-IPsEng2tYpT28W- 2*]Hd'j~Mv&(|ŲD/МyͿhjC"uP !~$l-bKaC*h!Am`JE,i?J,4ӵiftGgRqfϝsmvkuWw{ιg{}sߠ_0O$EI4lwBt-ay|bG&nwp"۲=ҒĶz'kD>QԹFx<,L1L}<̻{#fJN'> ӿ%-H28}(Elx #%͵@XAŠ>1dxf| 2C}v+RoO2RT^峫s-.=͢~>gusn\JeS75lBbgffNMM}&Jbq(HTfc 뒒ޕH$ϛL7l_XXTZZZI{{>/ (-.pNK,--U$$$V!LHnnnVr|Z[[3 H@rII7X,Z)bgToeO>~왔2B0D7@-ʸE@L.sx潁b{*^ +_|\_3i=8LB}l6zM`@ ,%.H9Lf!>^YY)qrҬA,l'VD0n, & `YeOy騗k!ch[_x: .] |m7008]]]M}i …HyC ~&rD3oEe&E F!Lu ic kz+eʊ`d1rsVcVExr>l X"2&EQPԐ^JllZYYYCJJʷZCfܹsOj;;;/PI ԶUVQQq$9 g]TTOZGZ+! 55+Cjg@C=Lu>F&K2Hcᙄ :r׎&&eບ4ڒC0#cmgm ]pZ_e?s~FF3峳@pZ χz h eh g&5F33b7hanQwxxNY>4:ž%Sp_hڡC=}*|(S(w; ͩNϽ'. */ #include #include #include #include "fcitxcfgwizard.h" #include "fcitx-qt/fcitxqtformattedpreedit.h" #include "fcitx/module/ipc/ipc.h" #include "fcitx-config/fcitx-config.h" #include "fcitx-utils/utils.h" #include "fcitxwarndialog.h" #include #include "qtkeytrans.h" #include "tray.h" FcitxCfgWizard::FcitxCfgWizard(QObject *parent) : QObject(parent) { FcitxQtInputMethodItem::registerMetaType(); // QByteArray ba = m_string_q.toLatin1(); // m_string = ba.data(); m_separator = "<5|13)"; m_string = (char *)malloc(32); m_font = (char *)malloc(32); m_skin_type = (char *)malloc(32); m_connection = new FcitxQtConnection(this); m_connection->setAutoReconnect(true); m_connection->startConnection(); // //connect FcitxConfigtool.qml // QDeclarativeView *view_tool = new QDeclarativeView; // view_tool->setSource(QUrl("../qml/func/settings/FcitxConfigtool.qml")); // view_tool->setResizeMode(QDeclarativeView::SizeRootObjectToView); // QObject *rootObject = dynamic_cast(view_tool->rootObject()); // QObject::connect(fcitxWarnSig, SIGNAL(fcitxWarntest()), rootObject, SLOT(refreshFcitxtool())); connect(m_connection, SIGNAL(connected()),SLOT(connected())); this->mainwindow_width = 850; this->mainwindow_height = 600; this->alert_width = 329; this->alert_height = 195; } FcitxCfgWizard::~FcitxCfgWizard() { free(m_string); free(m_font); free(m_skin_type); m_connection->endConnection(); delete m_connection; if (m_improxy) delete m_improxy; // delete fcitxWarnSig; } bool FcitxCfgWizard::connected() { if (!m_connection->isConnected()) return false; if (m_improxy) { delete m_improxy; m_improxy = 0; } m_improxy = new FcitxQtInputMethodProxy(m_connection->serviceName(), QLatin1String(FCITX_IM_DBUS_PATH), *m_connection->connection(), this); if (m_improxy == NULL || !m_improxy->isValid()) return false; return true; } bool FcitxCfgWizard::is_connected_ok() { return !((m_improxy == NULL || !m_improxy->isValid()) && !connected()); } QStringList FcitxCfgWizard::get_im_list() { QString tmp; QStringList ret_value; FcitxQtInputMethodItemList im_item_list; FcitxQtInputMethodItemList::iterator im_iter; if (!is_connected_ok()) return ret_value; im_item_list = m_improxy->iMList(); for (im_iter = im_item_list.begin(); im_iter != im_item_list.end(); ++ im_iter) { tmp = im_iter->name() + m_separator + im_iter->uniqueName() + m_separator + im_iter->langCode(); if (im_iter->enabled()) tmp += m_separator + "true"; else tmp += m_separator + "false"; ret_value << tmp; } //this->set_im_list(ret_value); m_im_list = ret_value; return ret_value; } bool FcitxCfgWizard::set_im_list(QStringList im_list, bool real_save) { QString tmp; QStringList tmp_list; QList::Iterator iter; FcitxQtInputMethodItemList im_item_list; FcitxQtInputMethodItem im_item; m_im_list = im_list; if (!real_save) return true; if (!is_connected_ok()) return false; for (iter = m_im_list.begin(); iter != m_im_list.end(); ++ iter) { tmp = *iter; tmp_list = tmp.split(m_separator); im_item.setName(tmp_list.at(0)); im_item.setUniqueName(tmp_list.at(1)); im_item.setLangCode(tmp_list.at(2)); if (tmp_list.at(3) == "true") im_item.setEnabled(true); else im_item.setEnabled(false); im_item_list.append(im_item); } m_improxy->setIMList(im_item_list); return true; } /** * @brief FcitxCfgWizard::get_fcitx_cfg_value:获取小企鹅输入配置值 * @param cd_path_prefix:配置描述文件路径前缀 * @param cd_file_name:配置描述文件名 * @param c_path_prefix:配置文件路径前缀 * @param c_file_name:配置文件名 * @param groupName:具体配置项目所在组 * @param optionName:具体配置项目名 * @param ret_value:取得的配置值 * @return:返回为true表示获取成功,反之获取失败 */ bool FcitxCfgWizard::get_fcitx_cfg_value(const char *cd_path_prefix, const char *cd_file_name, const char *c_path_prefix, const char *c_file_name, const char *groupName, const char *optionName, void *ret_value) { FILE *c_fp; FILE *cd_fp; FcitxConfigFile *cfg; FcitxConfigFileDesc *cfg_desc; FcitxGenericConfig gc; if ((cd_fp = FcitxXDGGetFileWithPrefix(cd_path_prefix, cd_file_name, "r", NULL)) == NULL) { // qDebug() << QString("Open file(%0/%1) error.").arg(cd_path_prefix) // .arg(cd_file_name); goto err; } if ((cfg_desc = FcitxConfigParseConfigFileDescFp(cd_fp)) == NULL) { // qDebug() << "FcitxConfigParseConfigFileDescFp error."; goto err1; } if ((c_fp = FcitxXDGGetFileWithPrefix(c_path_prefix, c_file_name, "r", NULL)) == NULL) { // qDebug() << QString("Open file(%0/%1) error.").arg(c_path_prefix) // .arg(c_file_name); goto err2; } if ((cfg = FcitxConfigParseConfigFileFp(c_fp, cfg_desc)) == NULL) { // qDebug() << "FcitxConfigParseConfigFileFp error."; goto err3; } gc.configFile = cfg; FcitxConfigBindValue(cfg, groupName, optionName, ret_value, NULL, NULL); //把配置值绑定上来,即读取 FcitxConfigBindSync(&gc); FcitxConfigFreeConfigFile(cfg); fclose(c_fp); FcitxConfigFreeConfigFileDesc(cfg_desc); fclose(cd_fp); return true; err3: fclose(c_fp); err2: FcitxConfigFreeConfigFileDesc(cfg_desc); err1: fclose(cd_fp); err: return false; } /** * @brief FcitxCfgWizard::set_fcitx_cfg_value:设置小企鹅输入配置值 * @param cd_path_prefix:配置描述文件路径前缀 * @param cd_file_name:配置描述文件名 * @param c_path_prefix:配置文件路径前缀 * @param c_file_name:配置文件名 * @param groupName:具体配置项目所在组 * @param optionName:具体配置项目名 * @param ret_value:设置的配置值 * @return:返回为true表示设置成功,反之获取失败 */ bool FcitxCfgWizard::set_fcitx_cfg_value(const char *cd_path_prefix, const char *cd_file_name, const char *c_path_prefix, const char *c_file_name, const char *groupName, const char *optionName, void *set_value) { FILE *c_fp; FILE *cd_fp; FcitxConfigFile *cfg; FcitxConfigFileDesc *cfg_desc; FcitxGenericConfig gc; if ((cd_fp = FcitxXDGGetFileWithPrefix(cd_path_prefix, cd_file_name, "r", NULL)) == NULL) { // qDebug() << QString("Open file(%0/%1) error.").arg(cd_path_prefix) // .arg(cd_file_name); goto err; } if ((cfg_desc = FcitxConfigParseConfigFileDescFp(cd_fp)) == NULL) { // qDebug() << "FcitxConfigParseConfigFileDescFp error."; goto err1; } if ((c_fp = FcitxXDGGetFileWithPrefix(c_path_prefix, c_file_name, "r+", NULL)) == NULL) { // qDebug() << QString("Open file(%0/%1) error.").arg(c_path_prefix) // .arg(c_file_name); goto err2; } if ((cfg = FcitxConfigParseConfigFileFp(c_fp, cfg_desc)) == NULL) { // qDebug() << "FcitxConfigParseConfigFileFp error."; goto err3; } gc.configFile = cfg; FcitxConfigBindValue(cfg, groupName, optionName, set_value, NULL, NULL); //把配置值绑定下去,即写入 rewind(c_fp); if (FcitxConfigSaveConfigFileFp(c_fp, &gc, cfg_desc) == false) { // qDebug() << "FcitxConfigSaveConfigFileFp error."; //Go Through } FcitxConfigFreeConfigFile(cfg); fclose(c_fp); FcitxConfigFreeConfigFileDesc(cfg_desc); fclose(cd_fp); return true; err3: fclose(c_fp); err2: FcitxConfigFreeConfigFileDesc(cfg_desc); err1: fclose(cd_fp); err: return false; } void FcitxCfgWizard::save_q_string_2_m_string(QString q_string, char **m_buf) { int len; std::string tmp_str; char *m_buf_tmp; tmp_str = q_string.toStdString(); len = tmp_str.length() + 1; if ((m_buf_tmp = (char *)malloc(len)) == NULL) return; memset(m_buf_tmp, 0, len); memcpy(m_buf_tmp, tmp_str.c_str(), len); if (*m_buf) free(*m_buf); *m_buf = m_buf_tmp; } QString FcitxCfgWizard::get_font() { if (get_fcitx_cfg_value("configdesc", "fcitx-classic-ui.desc", "conf", "fcitx-classic-ui.config", "ClassicUI", "Font", &m_font)) { // qDebug() << "lenky get_font():" << m_font; return m_font; } return ""; } void FcitxCfgWizard::set_font(QString font, bool real_save) { save_q_string_2_m_string(font, &m_font); if (real_save) { set_fcitx_cfg_value("configdesc", "fcitx-classic-ui.desc", "conf", "fcitx-classic-ui.config", "ClassicUI", "Font", &m_font); } } int FcitxCfgWizard::get_candidate_word_number() { if (get_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Output", "CandidateWordNumber", &m_candidate_word_number)) { // qDebug() << "lenky get_candidate_word_number():" << m_candidate_word_number; return m_candidate_word_number; } return 5; } void FcitxCfgWizard::set_candidate_word_number(int num, bool real_save) { m_candidate_word_number = num; if (real_save) { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Output", "CandidateWordNumber", &m_candidate_word_number); } } int FcitxCfgWizard::get_font_size() { if (get_fcitx_cfg_value("configdesc", "fcitx-classic-ui.desc", "conf", "fcitx-classic-ui.config", "ClassicUI", "FontSize", &m_font_size)) { // qDebug() << "lenky get_font_size():" << m_font_size; return m_font_size; } return 12; } void FcitxCfgWizard::set_font_size(int size, bool real_save) { m_font_size = size; if (real_save) { set_fcitx_cfg_value("configdesc", "fcitx-classic-ui.desc", "conf", "fcitx-classic-ui.config", "ClassicUI", "FontSize", &m_font_size); } } bool FcitxCfgWizard::get_vertical_list() { if (get_fcitx_cfg_value("configdesc", "fcitx-classic-ui.desc", "conf", "fcitx-classic-ui.config", "ClassicUI", "VerticalList", &m_vertical_list)) { // qDebug() << "lenky get_vertical_list():" << m_vertical_list; return m_vertical_list; } return false; } void FcitxCfgWizard::set_vertical_list(bool vertical, bool real_save) { m_vertical_list = vertical; if (real_save) { set_fcitx_cfg_value("configdesc", "fcitx-classic-ui.desc", "conf", "fcitx-classic-ui.config", "ClassicUI", "VerticalList", &m_vertical_list); } } QString FcitxCfgWizard::get_trigger_key_first() { if (get_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "TriggerKey", &m_trigger_key)) { if (m_trigger_key.hotkey[0].desc == NULL) return "Empty"; else return m_trigger_key.hotkey[0].desc; } // qDebug() << "lenky get_trigger_key_first():" << m_trigger_key.hotkey[0].desc; return "Empty"; } QString FcitxCfgWizard::get_trigger_key_second() { if (get_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "TriggerKey", &m_trigger_key)) { if (m_trigger_key.hotkey[1].desc == NULL) return "Empty"; else return m_trigger_key.hotkey[1].desc; } // qDebug() << "lenky get_trigger_key_second():" << m_trigger_key.hotkey[1].desc; return "Empty"; } void FcitxCfgWizard::set_trigger_key_first(QString hotkey, bool real_save) { save_q_string_2_m_string(hotkey, &m_string); FcitxHotkeySetKey(m_string, &(m_trigger_key.hotkey[0])); if (real_save) { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "TriggerKey", &m_trigger_key); } } void FcitxCfgWizard::set_trigger_key_second(QString hotkey, bool real_save) { save_q_string_2_m_string(hotkey, &m_string); FcitxHotkeySetKey(m_string, &(m_trigger_key.hotkey[1])); if (real_save) { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "TriggerKey", &m_trigger_key); } } //=================================================================================// QString FcitxCfgWizard::get_prev_page_key_first() { if (get_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "PrevPageKey", &m_prev_page_key)) { if (m_prev_page_key.hotkey[0].desc == NULL) return "Empty"; else return m_prev_page_key.hotkey[0].desc; } // qDebug() << "lenky get_prev_page_key_first():" << m_prev_page_key.hotkey[0].desc; return "Empty"; } QString FcitxCfgWizard::get_prev_page_key_second() { if (get_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "PrevPageKey", &m_prev_page_key)) { if (m_prev_page_key.hotkey[1].desc == NULL) return "Empty"; else return m_prev_page_key.hotkey[1].desc; } return "Empty"; } void FcitxCfgWizard::set_prev_page_key_first(QString hotkey, bool real_save) { save_q_string_2_m_string(hotkey, &m_string); FcitxHotkeySetKey(m_string, &(m_prev_page_key.hotkey[0])); if (real_save) { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "PrevPageKey", &m_prev_page_key); } } void FcitxCfgWizard::set_prev_page_key_second(QString hotkey, bool real_save) { save_q_string_2_m_string(hotkey, &m_string); FcitxHotkeySetKey(m_string, &(m_prev_page_key.hotkey[1])); if (real_save) { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "PrevPageKey", &m_prev_page_key); } } //=================================================================================// //=================================================================================// QString FcitxCfgWizard::get_next_page_key_first() { if (get_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "NextPageKey", &m_next_page_key)) { if (m_next_page_key.hotkey[0].desc == NULL) return "Empty"; else return m_next_page_key.hotkey[0].desc; } return "Empty"; } QString FcitxCfgWizard::get_next_page_key_second() { if (get_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "NextPageKey", &m_next_page_key)) { if (m_next_page_key.hotkey[1].desc == NULL) return "Empty"; else return m_next_page_key.hotkey[1].desc; } return "Empty"; } void FcitxCfgWizard::set_next_page_key_first(QString hotkey, bool real_save) { save_q_string_2_m_string(hotkey, &m_string); FcitxHotkeySetKey(m_string, &(m_next_page_key.hotkey[0])); if (real_save) { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "NextPageKey", &m_next_page_key); } } void FcitxCfgWizard::set_next_page_key_second(QString hotkey, bool real_save) { save_q_string_2_m_string(hotkey, &m_string); FcitxHotkeySetKey(m_string, &(m_next_page_key.hotkey[1])); if (real_save) { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "NextPageKey", &m_next_page_key); } } //=================================================================================// //=================================================================================// int FcitxCfgWizard::get_im_switch_hot_key() { if (get_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "IMSwitchHotkey", &m_im_switch_hot_key)) { // qDebug() << "lenky get_im_switch_hot_key():" << m_im_switch_hot_key; return m_im_switch_hot_key; } return 0; } void FcitxCfgWizard::set_im_switch_hot_key(int hotkey, bool real_save) { m_im_switch_hot_key = hotkey; if (real_save) { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "IMSwitchHotkey", &m_im_switch_hot_key); } } //=================================================================================// bool FcitxCfgWizard::get_im_switch_key() { if (get_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "IMSwitchKey", &m_im_switch_key)) { // qDebug() << "lenky get_im_switch_hot_key():" << m_im_switch_key; return m_im_switch_key; } return 0; } void FcitxCfgWizard::set_im_switch_key(bool swh, bool real_save) { m_im_switch_key = swh; if (real_save) { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "IMSwitchKey", &m_im_switch_key); } } //=================================================================================// QString FcitxCfgWizard::get_skin_type() { if (get_fcitx_cfg_value("configdesc", "fcitx-classic-ui.desc", "conf", "fcitx-classic-ui.config", "ClassicUI", "SkinType", &m_skin_type)) { // qDebug() << "lenky get_font():" << m_skin_type; return m_skin_type; } return ""; } void FcitxCfgWizard::set_skin_type(QString skin_type, bool real_save) { save_q_string_2_m_string(skin_type, &m_skin_type); if (real_save) { set_fcitx_cfg_value("configdesc", "fcitx-classic-ui.desc", "conf", "fcitx-classic-ui.config", "ClassicUI", "SkinType", &m_skin_type); } } //=================================================================================// void FcitxCfgWizard::set_trigger_key() { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "TriggerKey", &m_trigger_key); } void FcitxCfgWizard::set_prev_page_key() { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "PrevPageKey", &m_prev_page_key); } void FcitxCfgWizard::set_next_page_key() { set_fcitx_cfg_value("configdesc", "config.desc", "", "config", "Hotkey", "NextPageKey", &m_next_page_key); } //=================================================================================// QStringList FcitxCfgWizard::get_all_skin_type() { int i; size_t len; QStringList ret_value; QDir skin_dir; QFileInfoList list; QFileInfoList::Iterator list_iter; char **skin_path = FcitxXDGGetPathWithPrefix(&len, "skin"); for (i = 0; i < len; i++) { skin_dir = QDir(skin_path[i]); if (!skin_dir.exists()) continue; skin_dir.setFilter(QDir::Dirs); list = skin_dir.entryInfoList(); for (list_iter = list.begin(); list_iter != list.end(); ++ list_iter) { if (list_iter->isDir() && "." != list_iter->fileName() && ".." != list_iter->fileName()) { ret_value << list_iter->fileName(); } } } FcitxXDGFreePath(skin_path); return ret_value; } void FcitxCfgWizard::update_cfg_to_fcitx() { fcitx_utils_launch_tool("fcitx-remote", "-r"); } void FcitxCfgWizard::all_cfg_save() { set_im_list(m_im_list, true); set_font(m_font, true); set_candidate_word_number(m_candidate_word_number, true); set_font_size(m_font_size, true); set_vertical_list(m_vertical_list, true); set_im_switch_hot_key(m_im_switch_hot_key, true); set_im_switch_key(m_im_switch_key, true); set_skin_type(m_skin_type, true); set_trigger_key(); set_prev_page_key(); set_next_page_key(); update_cfg_to_fcitx(); } //========================================================================= QString FcitxCfgWizard::show_font_dialog() { // emit sigText(); bool ok; const QFont &font = QFontDialog::getFont(&ok, 0); if(ok) return font.family(); return "Sans"; } //qt控件貌似(?不确定,先这么做了)没法返回右shiht、右ctrl、右alt键, //所以这里统一只支持shiht、ctrl和alt。 char* FcitxCfgWizard::deal_R_L_diff(char *key_str) { QString str = QString(key_str); QStringList str_list = str.split("_"); QStringList::Iterator iter; QStringList ret_list; QString tmp; for (iter = str_list.begin(); iter != str_list.end(); ++ iter) { if ("LCTRL" == *iter) tmp = "CTRL"; else if ("LSHIFT" == *iter) tmp = "SHIFT"; else if ("LALT" == *iter) tmp = "ALT"; else tmp = *iter; if (!ret_list.contains(tmp)) ret_list << tmp; } tmp = ret_list.join("_"); save_q_string_2_m_string(tmp, &m_string); return m_string; } QString FcitxCfgWizard::get_fcitx_hot_key_string(unsigned int qtcode, unsigned int mod) { int sym; unsigned int state; char *ret_value; if((qtcode == 16777216)&&(mod==0)) { return "Empty"; } keyQtToSym(qtcode, (Qt::KeyboardModifiers)mod, sym, state); if ((ret_value = FcitxHotkeyGetKeyString((FcitxKeySym)sym, state)) == NULL) return ""; ret_value = deal_R_L_diff(ret_value); // qDebug() << ret_value; return ret_value; } void FcitxCfgWizard::send_fcitx_ok_warn(int window_x, int window_y) { create_fcitx_ok_warn(window_x, window_y); } void FcitxCfgWizard::create_fcitx_ok_warn(int window_x, int window_y) { FcitxWarnDialog *fcitxWarnSig = new FcitxWarnDialog(); connect(fcitxWarnSig,SIGNAL(fcitxWarntest()),this,SLOT(emitrefreshFcitxSig())); this->alert_x = window_x + (mainwindow_width / 2) - (alert_width / 2); this->alert_y = window_y + mainwindow_height - 400; fcitxWarnSig->move(this->alert_x, this->alert_y); fcitxWarnSig->exec(); } void FcitxCfgWizard::emitrefreshFcitxSig() { emit refreshFcitxSig(); } youker-assistant-1.0.1/qml/img/toolWidget/green.png000644 001750 001750 00000005553 12312451003 022643 0ustar00saucysaucy000000 000000 PNG  IHDR1ܘrX pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_FIDATxbx6 2x63 3L bB^rB,B¢+n-&batV"6 XTs7 bt?jШAf2KXiMnnRTRYIENDB`youker-assistant-1.0.1/qml/img/zh_CN/title/feature.png000644 001750 001750 00000007525 12312451003 023200 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe<IDATxb? ]I ٲeK'Ǐ۶mgڠ r6^gx7HZHsܾ}{7o:0"hzS@# "9X߿>~xD۷0p12 ׯOhNN ` ť~A>ob$5 ` ˗}@`q5AOC 'PϿ , w") NϞ= %%d޸r|$*lfDI|/hiY#%x@ WAKAU13.P]EQ7ݶDx:J B(RC H$:,BeYbJfߓop@k`۝y :P?\0L͂*SZWUu1@ KЧ?ؙי@ǩqlY$IrvZ&T9 }6PG1. 0F:x Vo; BOfɶSuQu 1;Zǜ 3Rsod_M鵚Hx"؋}q@qDy meT*=ą \"퇉aАb%P x F̊p6770:Ed&uu>" aVϭIy!5h$*&,HEDҍe>wvvBL3M:H$Fx< *X18$s'-P8 P[Z|ꪨ-LV# D BaK>p8|ns@s!$<'@8I&;vin~~[<`0b=X )d=%('M%u%9\m3v$UE7(>m_@ ~H<^)Q<@dW%s}돉?4AKVQaakBsisN\NZfS+(!sA0A'?! y Wܳyy|%~\9<<JJJrRUhwDDގիWDZj\[{F] 4zxxQ3OИ!!!go\^ظ?<<:#͜8@&2h]TTԁH8 [/FW3н3>`Z'%}BdܽkUUrb;D`߆_VQBVzzzfߺuKzao"֟}zXUhhsh ?T*+;w|O ?t΅$Eࣳv5NǛkWWQyW0}JY ldd ޻T5$0rA#@Sh&>,I:V& iߵ+,Ša >9x7IeG&H)=[70TD_fͧ @6^^^dB^\n{o^GLJٱcGݥKD0*ǚK}}}y{#&V>`$?p߳|rƒN2$88$C >h2KSǚ}}w?\5̷F+]E30"df +յ@:uB bTAmmm&},48ij'`5z~$??h@@,9ջEo qgVHyc~[?KNгPtb8@W>tR֩ [=:b;&H"tQF"R[HzOi>$@ L#rIl(6JI-"NC_8;_dL!/bܓfrpjV A ή,Qp,3G B'`^p1ib^Ss{@7d4Z:HdIח&lghv7-t"Eid?ƖbN/_Dx&Pld۶m{?a&AYYY`dN QG~*...YZZnA0!dܖM~n&|!f4L`*$S̒PuuUYfLtl,1Vʿi $8:%% МǓ?vk>\BlohdJ,`}&6LV,^lbAIENDB`youker-assistant-1.0.1/qml/img/skin/bg-middle-tab.png000644 001750 001750 00000013634 12312451003 022755 0ustar00saucysaucy000000 000000 PNG  IHDRR$feVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F IDATxKjPQ (Mت{JMWԽ\MA'!H N39?/{Vrzy9<ԕe1Kٸ!>Ux vm~{~whEip]WZ(DJh;TڕQ7hk#HqGWb A A A A A A A A A A A A ܱ 0EQqr;r ,GNGVZ[Mw.'n=%[YtkuTEj[K9Yqk.ݭʊ[?T<^| >| >| >| >|>|>|>|>|3|3|3|3|1 @jdPLN~zk/֟ O?C?C?C?C?C?C@@@@@@tAN@Ѥ1^BdZ`UZ& \&%;}/&dKd}۽9 f=.8{UnjWM^5yΫ&o7_LzZֳMoo_M'ݛc n=]vpٻ,m=WQEsTqqn9,^e*KYڷޮO7>C| >w~᳋@|ć@|ć@|ć@|!>!>!>!>C| >C| >C| >C| >C|ć@|ć@|ć@|ć!>!>W1 EC*@I5ff}}}oUM>>>>>>>>>@@@@@@@@@>>>>>>>>>>@@@@@@@@@>>>>>>>>>>@@@@@@@@aN`-.aDw-$ nh~믓yh{l\o:8&;EnGUM_vM4D/7{6:,|jwfYcaϓhD$w7nqҰx˴L [.7/>>>>>>>>hlUdf{7/hhhhhhhh}}}}}}}}}hhhhhhhhh}}}}}}}}}hhhhhhhhh}}}}}}}}}hhhhhhhhh}}}}}}}}}hhhhhhhhh}}}}}}}}}}hhhhhhhhh}}}}}}}}=O@ᄁ? hyq:rr5<^t}|>d@ }@ }>d@ }>d@>d@ }>@ }>d }>d@ d@ }>d@ }>d}>d@ }@ }>d@ }>d}>d@ }@ }>d@ }>d@>d@ }>@ }>d }>d@ d@ }>d@ }>d}>d@ d@ }>d@ }>d}>d@ }@ }>d@ }> ecgQIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/SUPERGRAPHIC.jpg000644 001750 001750 00000012400 12312451003 024673 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !AqQ2B$4"#3D b%  1!AQaqB$"D52TdR34%U ?y8k\qG'PU8h$>NI OLz{5%<%dzR$f Ni`8h@9x>TzQi8k9`rqQLVRM0N#`}>M$xRS2_ JǬ5"Ji枙& #{HgњU' VtKӑ|\G,d U F9~R1J&+0tklJQ]A8{چ'wXj [yЫ Fo<=m~aA ro+>J :hTkL`*YmlvZ= zص rcC tgp}sѧ]jיzzOybJ6ljv2`&[Xd=LFIc#SB8vWz5oo3hMz=pɲx?[{{;!wvvSmbnm%9QֹD|3Nz{42L_Ar H`59IHjGR'4fQO7骎%En*.V$%,&E,-Ep]ʙccZE_~^wZ]l{ަn: .hxT`,{žZ9 me Qf՘cim-2la9B=Dbbu4R[eCq7܈USYIEY1L%Ӊ|Yꩌ:i5sw9cwM+м]ovŁq4d\Uo-M0rBjoظ#i|2 r*[P.xd6jF;^w#tN0ցjsx7;A}!`&7d=@P`kj*D;2Goy[<`^zښd>H\Wxm!Z4 v-,JPFC"x/iw5>eٱ=M*G*9Jdՙ#|he8.k*I$꣰c($+晸WwB0t 3)$~s U $N#VҬ~+gZ)dFHJډ#*)UWBuV:Q(W}k?G/˽dY!v'0ON9Bȗ3M%,KDֲ̙﷯X;v,B;K1K"0^ٟìLJC+_\Ƹec6TIS%N1kTڂu  >J>z-s>[H/./uR1l׵gn=u \4tQAkW*;]0% 9|_~09}xH޽6ĽHQ12{gY?+nM]s 5W4XU2Iq4Gq7Q/UYeW(Z PVH@!8g% kZ1`cY!iɭNǸŁ'ݲ&5) z*A'0OeW"?5!9rK=&jk4t!8Ǖǣziaӧ74fA4#G<"9n4x w7V $tj(/#M];u3&_O%@?Jtկ5`\c&<_􆮾#0T*'5zKnyn X+V3yUU4zH(l0]aZZy_;旛+UuU@y/ș+7W2-2I"Fۍ+~V8[^l:u )eY"`^D}|z`%hg8%r[ ɍLk|w-Zs3"5ݞ][\u膝 }\Zg>Z:u|mږH4٥^@I앱 t5Klm6+ל&JD#@cQsVVS) iU-#=+ ʤbǣK$X I@9q)LG^k`\{9|앶/R^Yj x5έܾ$+_d+P=}b, R^ &SQڊmbYw,ݧdKViqĖ12+ZfDbciGS !1l)[Cga|fC֚'4fEQFa0N=Z5I48Siq4SIO$~u4*G/ԉ*Szd$^z"}FjZNX~mATfգTL9&'OI?u0^!ԔL_Ar H`59IHjGR'4fyouker-assistant-1.0.1/qml/func/common/RadioButton.qml000644 001750 001750 00000002231 12312451003 023316 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "private" as Private import StyleItemType 0.1 // jb : Size should not depend on background, we should make it consistent Private.CheckBox { id: radiobutton property string text property string styleHint implicitWidth: Math.max(120, backgroundItem.implicitWidth) implicitHeight: backgroundItem.implicitHeight background: StyleItem { elementType: "radiobutton" sunken: pressed on: checked || pressed hover: containsMouse enabled: radiobutton.enabled hasFocus: radiobutton.activeFocus hint: radiobutton.styleHint contentHeight: textitem.implicitHeight contentWidth: textitem.implicitWidth + indicatorWidth property int indicatorWidth: pixelMetric("indicatorwidth") + 2 Text { id: textitem text: radiobutton.text anchors.left: parent.left anchors.leftMargin: parent.indicatorWidth anchors.verticalCenter: parent.verticalCenter anchors.right: parent.right elide: Text.ElideRight } } Keys.onSpacePressed: {clicked(); checked = !checked; } } youker-assistant-1.0.1/qml/img/skin/Ambiance.png000644 001750 001750 00000062530 12312451003 022063 0ustar00saucysaucy000000 000000 PNG  IHDRxxNcDtEXtSoftwareAdobe ImageReadyqe<dIDATxڜSkAffgw "B``4*Xi!Z'+NL#VF!`Xċh~*^Wns۹q`켙{{o`u?o`L6cМ  [r0Ako0R2-& x!l`'Z F,op"#msH$CR0pN1'o鑑ak)MHbw, iIXD E"C`aIw&(k,1v% ]WȤ3(& rȧߢZP%>xߍwVIKEH+.'p`Ɉm'vQT2<,-^~Ncf}ⰅZurҺ2w3{MU_}6BظIKQ*o ?i|dOqdΜ%"@ "@A%j2:ZMMfӻwt6t_2ƗHp3C >p? $!lԡ'q;M DaH״bhQgngd ~r b:[N&(g̛u2((Zpaąŕڅ7t- R%(" TJKIk4ixbݸybնD ^`(]j/SS \:tCi0$vܝcku0YI-\BICN0M_}a=$Mb|| /^39vi vHP"y`Ax&A' ;/֎S]*& v@"22BIXz(u`YʥoרmC_ph4:bA¢q؉z XgX\Qb^||3 S6fffOQ[<($wࠣ| ʚT*crEFHj +!;[74:ͬER1:YYID`D͝ &鉭˴*EAT,r! /_{9݌ޮfLO'vCg<a>t9<XpߧcQ:ڌqliDEC)fFEM]Vl4$jG(ƜG6y:OXnp=‘DX8BlZ7E u6BId$Yr"ʴ,n}\GAX[T@```@gaǞ0hmmB[hVQՍ6PDl*Bvs#*} ήhl;klzm $Q^*᾵ xsXdUtct"&s)N9~V?8tx2o?Y t;_ށ G{X(dHUUVȂCnѧ}j":VtW b~׿ 61 tpW?xVmX?C'"kXBv 3^B,1|7=Gۣ}8\U/US,g]'Y!g)&bS=A~((-u۽テK_ad4b[_BpnrA^%iK`Az^fnJnIImr(l<. J[]MIt9ӳ3+I>l T'Hx$|Un|~S@e'~a\N۩mrKs:Y(r"TD^ cM(y/ώB F,TZSM>X+^ }mFyt',&!BJBD {gXgzjؑ%I\Dctʈ̿etfvuTȃ2_0-O/b]$\/f'$@.['ig Q'GW/u|^Ң9g ;ćVthyp dVfmhӥhC40x綺nsG 9&ZS"Ѫ!f)m \U^R1Rne\-RH d h~KJU?~|>>8X]qffF/!.NPgAbVұLvZZYXъ'{sAυKJa-6;.A1{KVevta:$ҩF9T45KEfܳzƩyk!|x ͱ5iM!Q~˳LDLN8y`p}˞@}Xڊϓmpocq:BrB)1:8T Vk=^hMsߣć4!yuLq8j~LD:cbk'ɦFg}#U@ʹ29͉X8\vEBaIm8?%a"Ǎ7Y7#o"A8Q&8zvY>Njk8#Mk}zu)ϐŔ U!K@cb+ 8wFEsK8==9θojE `_pvLOO ,\v7jh2\~nb O>OhjTݴzi8nq 9:R{=5w V4d$sS=?Ùk>x /xyƃصk76i~MxI=0>PrjC8y_ʫSS胩FJS![6nĺk:jqةJ|znKO }%}~Qzi15.qkإ @:t:vVw]TruF2\\dǬsjjK uw(ϿjX0U/z5A㡌z"8_o@ÚqdENv22JeUѱ {yyRёsرf7cV3l{NoWh5HRh^bXJ*+K}ٙwx~{p8#C^{ɫ#rTsExEt_ WU_noKH d!JHDhQRuhqvelHh*THǎ̀2jpXd+{ޖ޽=}/1v<}[|9xlp՗Vo '9[(Ū$4!H;(: ).r5o+ßdpQ1% $M}\bǿ[s-6?vKM׬T;zq'Ȃ.ƴGS̖s|n0`Jm(+闣 IkR5oݚ-hb/`+YbΎ3"9)׌2>tݚX3IRi.;l[flh*+f;Ȩdq[Sr&Ʉ4A},}UвR;3*]Gh*1ɝi&ԟ\K3 H/Db PʹNI7e2vMK7fŋ+!su-R>3aٽZl!YwCe\ed6p跖9pghG;hiEyf"B =u Mpc73>@̀BՂ@N 4MOdHEP: %° ZrM&Lih9נ)!9m [તBVnhJ!p2 )+Him ~Tb#刯X2 Ԏ5w!bفj 뉢"@O_w&#G ;PTX/nAqa"ʘ!tadQ,箞Pk꾬*b)LuUA"VdTPf{c31m^q!]y^SQӕN"M϶h-I`LMwljº fnO`Us{^TTTҫLt|D%;K -ZV.G8ҌD,,ŏJۺ#ss6RdrV3pdu+ BdY&k*DҜnpC OSTgPv~݂0-8~QD͝IJi[[]Dm 2[x@YXm"m~چc;I 2aiU}=-iAYLAJrV/>O^J߰gE3j|)tvu^VX% E# `X׷sLU9HGt-CVWȤ5AT]1VwXʘpjõ} ݰ)U]w'#Zʼn* F.E`mvMNRF։4X;:QV^&qZܻJ?y;A3I88$=(dw Z*N( 'V^ ~z,Z Gr3`GM\_ 77el~M'־)" ( @>A#& ڐ],ID6%U?nktѰL9݃}zA\ ~)8$"Wv) OKxxnAa/zjL>}i{RRK B3"HCmCVxyPG)Awm%//ثr560ĐbFjn^MWMcjQZ1elJZ]=}^'fHX*8ٱCO;qqDRt@Hz79 0F`pk&V#HK] eojhd~t65f$C!<a3ǎE/wD0f= "O/EGkm ,C[R5yM#G3vlE6QUw`ƌhllE{{**ܢ ʟ\{[:4:R.u>A9'~?vT]Xݷ,f'\3zNGCa.4,x۳D,tvOrM9(F8n^W\1Ol?ySK< FߛD4Jhݚ@z=8tNlDmx\>bE*XMm+Uv_eK *Zȱ4Ƚn3p%`7f w574iLZ :a9IP,҆}KG}tt9{D/?95!O I$`r[.<|k'}ܵ|~qbDRy)rBPPCf͚cEg8t>h~rz]NS\t3f[zd,m)̾([CxC2ڇnQ #p0b]-im¨2g3cf֕BiYE:dߥX|wI+6jg!bxrNT:dk-a3JA tծ#QX{ !MH~NY4RzĸͲԀ.y+Ҵ:%nskӮp;7q ugݖkP{ES._s2S4JO.F|1L{>xRt&ŕڰ~dYL35;jR z}'iݘT;0Ud C:ɺ ᤅ :)ǕNj6iwc| M 0uf/t<4{H$9z`౼q͘9]E*GS7Uq1TAcv18JzV '5(4~d iX-UJͲ(sɝbs-o苚~Uo V6~aBN:qDXr5AZQ3!ӄɼ j~E%1 FKĦ&c谄6.fㄬU/54˹fG3B8|vQlEaMǸ,quB460e14{ǥ38NS/4I#P'u(+n6D2Sa(WԽs):Ot`'< )-<Z-> umus%;RDžPȨĠ_5aUxHu@'&jţXr5:3k[`"cs0#9Nb&&%|<闘S9/C2u *wİTYHy_s)0h"}*G(q?|i%չS`\ݞ1ܷɬ.]_LCZ|Ҳ/'Eh̏@6>Z"ƻBr=m"ƬO|X>ys PEg. {D tPk 0}e>X\"Kj|=v|#ǣ2~ґ̑ $zy*)+czRU D9)0RR54`QfU\UW\X$Ҧzr•K2eEEґcGq ݛ5Ze&M()Szܖ㕖=p6Ǒ#=JRΟnҎp>WsJ #"sJ QT,Ƚ6os)S8uNεϑ5rxMqcK@j+XСbӦ-vMMNm[19V7vmBw[ K3Ϝ߽4bga;PRu1L[+n؈ߝ3kwQ#f}'GPL*7;=*.*Ds[L+@_GQR1Nb0:f0)i O%Nt8YM nz(945cfr55dր< ]cFPl:*IBŦf-jl;Չ B^58jKF[[ȏBqIqv5p~LCndyRY?M#ܬbxRd6c:׭ 94Z6<ͿE5_v|a2xiO;־k؈3,٣xlJ-[8båDŷQyX˘=/%N4t Ae 0D1Eb*b Nz6f;¬Y:V]&<k~EK>.$7Қsqٗ =44"]6} u&**Uړssg#FQEi! C +J'.f>[WjԱK*JP1ZBD%!ΰsM>GIHP'x+,ёsןjKpe%|(8AW@kت#R]SѿX s*sMΫ7!Y0#F_n,H0˴̯=R/d L${ )t!dN Ҋtj|KR}8j#M7;e89`0rny0Uab;)bF*zQt""ojQyJTȦ8ӧ$ʙJm v#P.q$-آ1/T^Ah͸wZ,w"_WC4 ෥^njTFuq'l?:7JpC)1.OP` Su"-}aj4Ӭs|oGP^ck?$߿ <>tOr#[йbo'=k/2k cd}l wPD02krd_ #ߖ#SEEX3{q߃g}^9\ۻS V}λȪ/!g8OQ@RXAΦ#~t~}$aTLF w Aڎ?%\҉%2 ͈4FXC; AOGiw' 1ıbJdbHbī{9v= V jYa+s)`hҤFі+6lgRwkBiISDr3ƎOu( ZRЅlțo}vYZnJKK(-+C)ak{?BJopծb^r,MbʬG2Τ?aR W;DEKM>JÜ\ Ӛ3gNq%NbDLq<u)4_[__7<6u*=L[V]l%̾jAtG"CZ*k1,,B0Q~Y]O^?'F08t7P9FZ<øk?W2KO]rR=U T6ߚ7^9e6sY3e\ʹkϖP_H])$*>8An x$p@;=8s1e<חÊ,Fr Ulc}*֏JyU2Eن:Q"*{0F.}ҹark=2WGQFxAsk4cǏc{1sq 7ŸWϝ7.@9{(QwhOrge=5Jqv^( GvlfJѕiN|qm݊NMEZ,^{^޴ g_2[_F0'ۈ9shWxO[2 )mjKsJ.ZR4`RLp,-' bѳTW ¨+L`Q6iU^zDt,nN+V&Oƪ A䕖fUǶ3\V&Gm"+̀ cUxtս QY _EU3ENQwPJ7Ҹǔ8q]A1)-P r)G~A?ixGN⢧%̽NeKtv~dq\`T3X3X[S~7]n֓\d vevQ,UͰ,>mPhӯ.>pHbPI.b;TPZ=[7W [ H1s()n^4(C`VlvaW!-/&Gx)n=єܧ~ldD1rOZ_o&EVk4JQ$;TNqG O̥MeVP!,WQwTT! _8/W刏w!'L%YwN0 u,t9lH&r6$˴%1" fn]C5~.< {C;n(T[)[pa lB(VGZM30ݖ& fe4xJE ŸkyX%@2|աy [IT,zT,˜I XjЪv M!ˊ]شRKUu$uL }x/ i1.7)Lp6O ^;]Y<} TN)oVőYuOHͲ\w˖c#8ʬfLWUޕO)Ʃ|EZ62.ОFV)KՔbXMtJGSMvViKm)!KkGǶnnsIYޝP):g4b2p0c%a42V\b$%C$0VzHՀA!2mKfvW. c:_xӧ3.^sĽ,N}X6hu+~ +!FG:lrg_eInj΀ҶV [n~2xK̎"^Zgv,J]GSG i%[ʪh Ǹ[bR9vۜ *Tr?6~ŤoOǺOBLy%_K x>^&_'6^t"L"N!AFKK1_2(XRfѕb#iTXAPc71Mre〦<|NT(<&&`må1)DbeqぴhlB+qqv1[\9 AlIc*H v$+.Dr+mdG %C&Q.#. n)BP Y.͏{M);V4,Gާx$t6H耬ŸMȺwѴe~"#Wx}䆱ZvNiN)԰y3"0vsd#kZ`%=M#R6CYJ JFʕ[D:Io 1j[5ob0gSN%2xsT x ]lZTh5bv{[8=f( XΎYye96f B cı!Ӹ]N}$"rl 9+QR0jM"@p2+)tpd\,srtYK _d-.CӤ!=X2 szQ S8_{>~2 JH'Qb_bun1}漳wcD(M(p),}ȭ^.; %E8h[[UhGMMn4 aBem2ҲDZY4֌(;vqj}.u#9vĀʲrjg̳׽0"53n85TM$t㴣@gYpٌ!QZKL$]y}7 +Si瞀_ mļI¸C.ۡ>r缴}yI5uWĈ25J֎l?Az}S樸.<8bLQA4.yK/p3X^L-1Ơ.AyYЂi1 IxIC;[DO:17uc{ ĶF}:>սƖ[аm $cƌBk~86W!1+ҎU_6a{ ՉVoн!mªu Hj~ 5EVVm¨aUxeg Is/5-vS׼vf^g$C!C86c+2R+S1؊WU*sj)qWauu]!`U Qf2\/ɰq*R C=RX؂^%M0|YEdgDB0J l۶C#& 8iuQn??j;{cdJ&!|q+HRUڄsF/tTDZ)1+դr-F<Z1":죶lu%rhLS:b{A??2̀)2ɔ Oj%%!yOmK LkŸC Lr< _IǢ _2ۇE Ƽ34!&_`R"&&y%rx2h,OxREZ񊻄tU!rMcTAL]̗t YPYR v#ƪpNr*~;Ù+0NntYmԣ:]ƯaА;iy?cY|%Tq0& =<,|3VVWJjR@S^Iޑ$a=n{2K)WҮkmK*,LAАkY .ѲVT]VGrڶ,@*YT\"G P0l0<N8߬R;lKpM6tA;8ad ,aft]wC„i$B[%I=Hx씤x)<w)UG̓4 9xoegL*"M6I5Ob u_q"p1;`2}'|>[4>p8`y tҀറ`b^DFzNb^$Ȃ_Wy\]Vat'"@S_7x*T,tGX\\OQ1I| Ê /'gAoC5NltҌd&T DAn ua!$Sr쮋4i::1{LV뫮'&v:K 9 +r|O+JI S){$V&!?.LjU wV1xyhCey& ^G ec {aᮠ;cGՌAI3gbŊ;}|G aLKB ;ʹ04>&b*@~Iq!z:9e+IU)2UKjIqr4xI6ܖʨqN[DKQM/WNi=UmZ%#*gЀb v"*a^f5.t6;O; n 6M)O>aNFD\A>H$@2L'GAرFUM+i"KM G˦/ a<4PTb%+xh|<@8FMqx`LB9f}1lmf%(嵉'~55cMuZW|JxjCEFOeU7;;SSxJHKxӦMX`B>V>#'i"h,B-6{Y cO>y 'B7edbM- Cikb`LwjiTmXU87.&zeDRoL.LR媪Z|4۫r#y/to@0ݛD7DQa3WsViГw!mtYq]VS]xݟ3Q%4i !n[8ez' +LF #O~{'Bɔ +8E7]N,oG '"RZzZ|MǏۇ͐%Ar"ыw}j J aժ5Yee*F#x!#G&6o^6 A|ra{YQ BeYW"H4 |Ya`1ܴ^"ȑ#9@w.\C&1o}},[B3k$HÀug9qbо֎C%6 0XY!i.FX82Nup @Xφ/Vq}w3PQ}L}~G&GeQ*W%ΚDGÐPUJ 4h'LH8=A=E=o{XQlPpW7xEڸqp k`U_UU% 7n,+Jm(++Ha67 *.}|)3/i٧ƚ.tQS]6q~:O88V5G`NW=u7zgs.L6śb˜1&T:3pUw!U^̛#!>CEi7rv·ԕ?3` TZP0 ;%4W i,S*(J(/4+t>S %S],#&Rʑܶ-SQ֢@t3NYNRЋ7Yİ,N졿竾@֠c$b-xPP3o`˪%|{L /ŝϼ CO#Cm@b@JJ/"$|e>U=)u|Nvd&ﳓ ZN h;Sx%;"7q-Rz]l9SLO@P.G5nS\7o6j,e|GX{-0z>|lSs.hqoT^ȸFa>ԍ!ZqPFTb JUPeC]ɢ<n6ә duVʽJ '(((b26{iO_A_r9M{ٯk;/ 0i:$p” :A%:e)J [}^3zLEig+ZZ4BDcOn)Z5l j@I?:{1~L7UxxEho2ɽgY|XTx;n9a`?PWuV&y'§ByJt0[Xf nilZ[[J`)&HgZ:d`YJQ Ux"cax@yE TR5^Wܮ |}v7QRG6E,k#&VoGVq%W_E=Vu(z{iS&H9ZL,L$I\K뚭Ҳ o}]C;o(۶E[>7y#&fsC7<&lÏ>7x𷷉Pl g.=o<4Ï<8gvt~ qs&ǭ~{¸+D DlٟqX.i.oG[ǽO݋}F a}ࠩgaT R#LJ7i]rKw$ HsGBPMMtxY rd70}~ |x~^! ΒK 5 M;&@I BI@koQPŠÌ8s܏QG`נ yY|Eޞ`:d:Ʀ&mǹN1v8̻VdnĶ-TOn$Vf-~0#%.Ko/Š U$*6Fqxs=^zS/FKjb㇧ n/6< ;KfœqSn[vWK\-iTiq?`0H i;f̸CX.rth? FmEx0W#P|#v$ 1s^Iˍw5In/[ <~N }^F܋mV6يQ&Ғ?S83f=ޏ;ڡYx8+Z+ﲝy); */;E{;p-gj^pcجV: YqJjܐDŽJӆ5JNPjy(\0x2d]t}N;I^\-W+ߩ׈`C\Ec^>ZvuIy>9Tn"S2$jMӺ!%•@i~h)Mam+ڮ>A=b+0Sy '.ֶ/ivT(lm%cIah%ՙauxp~mOϿkb%&)}RZY[Ll`7_ǷFluc;.zϗ-`W3œX7O@pH"mh= p*v(l؏ȁ cG#d$WQ{[\k _ 5¤\t!}IaJGŪf!<4]RB L1nG!%45rG'^XbȶqӶE&^a|jV% o/?dЄQ"EBZ&/Vj;@2h|.,2"N(Qz EwR4 Er@_"4 Cx#sCA(T h9s:+ZPeHOnƫWѹ̜亱NG 8LU/M`s bVRIm/.p0Ôk `F\LEbaUMn &6ߏ/AO1b j5#Q0RAaVIhzGkD űf/vJLn:uݒpJ]H>H jsUKjD#5jk@/=#ο^CĐ}1S$?e8zJIS?CC)ڋ0x4$>/Nĺu\.|bF,ÑSOL6K ı_>^Jbp㝈L OeX$x|0 ~/6~Epٯa.3Pf%w̷]<X(81h$->Trc“a@+,u„%ƙ@wm[UݡO8=(Ënq3o_0$L4QR3E5g]10̩ppUߩ3ۈc.+>B&&̽rgf{mcP]^: _Y| =%Ѿ.q=b[bAAj\}pףC+ 2'1pϞ1È;7]9gνm QR(KfP9 diTtgN>g銣@צbF5Tq/<|*?HFIa}?n=ơ{4Z#q )e`ɒ%x?bMHTG~s O^A+7&` Os'6^{X0jDyW܄&C*E7p%>\q 80{q??O\w8WO|[Hnr *+e,Me|sp$mQC]넓X NQ|zyr08gjz:|v~~< /_q{b뾻GOF_W{C5x٥98Ixsj SοEE_'mh„;E"7J@gJs/%3voT"ך/׋ ߣ=8LY(q&nhH 4O<_YU!SP)Jt *)D<҉HRCEy nF'(_E$nNu-_WA =S%)bv7Dyvs rwUVS<mmYE%$ g6E==l3!:Z$8&:29fBB;r*Uq!iW-.L.R tER{l;ubÕK؁S#[=LfkGx(&])nrӀ|ŋqδX֛\X75lYr%CEӭ3 -6I5ޥ< D>pEע.kZ"xqQQRM<<8AqE?BXWg5 =ŋ?GbOX-ꍧ{5S\]_ؤCVQRn}o?{kًn!S,_1 6c&:Ýkf<piV(Ue=J5UsMy[#ZX(2nj% Lj">U(-qM,]H¥bG-A?ٷdǀ\pRN*!~}nDh+3\jjIENDB`youker-assistant-1.0.1/qml/img/en/title/sysinfo.png000644 001750 001750 00000005520 12312451003 022631 0ustar00saucysaucy000000 000000 PNG  IHDRs( DtEXtSoftwareAdobe ImageReadyqe< IDATxb?`ddD P&4+Ȱ>Y\ >sX VxW?<@lo޼D51jB FrbBRBdÀlN/. oݺU˗/ۯ_>@&@JjBN FJRũ9Aa1K0< +s?o"G H5H)4^xĺ7++,}h_~}EÇaӏͧx@ R&XS/ѩZRѽ{ޡ :)W3#+.9qH&s,| ##l\*#>} 2Ν;;={&ɓ^ ;KKKcǎM :!󏁃QfSD300vС6oo?F^~j66 ̙3oܸq nކBJà 1Bȧb_Ti4 raǏ @l9[NyT 2ڼL= qPؠH͏ 1P΁j) TĂ*^Yh&t,YŋՓ&M*A az~r 1*Ŏ ^+5z2A= Tyپ}V^j߿?+'Hz أ8 aBĉQҫ7~W?|/b`gcb`YZjjj&kV`f ӧ)\\\ cR>MҿNhp jA Ě@qWU/R??X (3FFy <:ԫXJ@ߧm 'v(QR!Z@*CZ*Ul'XX-YS!Щ tHp{ɳBp s]w߻}vDe$%nڈ*']ueyųI*{hrz SyR3~e'."SE󚌯7 uSP@bA/iIUI,DI館H'(>80`!CQH2 j9)!AlfW:i&+׏ !;U-^)y'{YP"WORatz!BZNҘiY)'yX'mS2قvZ<(Lt&?P{98ž(r$@ 0M@'N o[;G•H%$}3@%Jăv0lUU!#df]pr C3JpHМ8"s,pXsDDKZ_Ȯ?k)X#t5:췴Yߓ(}A+o׳L;̽dN"ZfJ]@/mjS_~@[=iqu-@VT/-Ԩ $b".&]а4M)хĕq1$5!]8.dt $LVґ)E@ Ph=黷`i-ɼ~s9o_wF`f5l25RLAE(`rT qk`2 +++k\.X*wWTŞ@8mJ0WjV?P Zga t:mUUUP5*l1:Y(R^Ҁ^0n``l.{MaH@KnH!T؞88æ%&BݍnH=KY }k ka!3LO%}~3==>Tr:? hQ 8i{͂\z[x===?4G@:[^oIA{(Dnѕ|JX5ݓȄϿV.##?uq:JxS4|>/s1B>]"QP4sǰ_0/y&g455u a`)O \S N|_pG$Gž^{H|KAI2wEdSG%ݜ{k`;1 88I(hekI"JD[\\Ek N@t {r fm&DQ ~NU@Y̌T3F#ӆ ._vewN ;8Z>.ۊW6 }\Z]mmmȟ4%IKeE4fybɴiiinT%0R"B290> |vd x`b.ئØMpY#9Ji1ߕKjZB`>IENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/TP-LINK.jpg000644 001750 001750 00000011052 12312451003 024057 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1!qAQ"2B 5!1AQa"B2q#3$Rr4 ?ǓJU\) cH&;$R RA5Ґ]CI~P\ Qa@RrH *(2W.ԣSoŤҳW& B *j="Mz{#P(_9T9&W.”djܒJ ˠvu(Tyji4XG7#m,c9DS~&ĢDf<_1a).;[`0m>7U~!OcNNH\) W&vHWX"b`w])&-"kQ졢)ק?JAuR%uCer)FIK- 4\`wReOǟʦKUJSxb+'bDCfzhnpn;B m!F(LHkACK8E-y52A5Ґ]CI~P\ Qa@RrH *(2W.ԣSoOIM [/_˜]lRZ=aվóqݸ[8GJkp`6t\_ev)9HހeW.jFv޾U%mRRal3?pX_侎B m6q.d X1&NGUƛ{^RRl kp3^NzBP;k'&'A2NY&D:U˳{,8KO'qXoѨn92dO5=qFS?;'vyEc]hJ+c uq-|bQ!Y!|ʚYu =Û*E@$@gXY^Y<~5ǞX B謶$Ne*찑dPE)}"JHUhZZDM`sHS? p 5IeNmwsw1[89:2_E!nwkeɭ+aRs9DesЭX[T@!,{މ\9N0B xUG)nXt0MoK[.V-XT5%p,1 ՝JΕ50K\I1 yŠgk5*5s}ibH#Č|#piGΙ'R[hgZ…CM^ة\s^N'_ kun*gi$鏤F#we\V9QllL`I&1aܿ`ܶal7#w@ѐZX0ZEb΋At{jB_jηPg7t.ۆxaUew{S%\y3C9俥;kW}fį8цHx#[RXH7g`:ԗ5&\̜f``p>Cz=c:qYi:OGhl$ cawiR=ϲNP1`-,ck0y,iY|ڷDx .MqU&Lyk^\tg$zZvQ݁+jWNlzYpL4Cq3p̒28B%l}G4cu";q26i=nШWStX-oL<@@J&hĨ"do,$ᓁl$|;Xd{_1 45`Uɯ9w` y%QH1V"n vLQH[U @'%6=Vr4?p>k6nhRf$79~%ym۾Ʋ6ːQ\"'FHc/ ryٚkP!]Gn{Hr tqb"KXW%r]wLv< c sInbo Yxۛ.JHQA{*^G$f8ӛe wؼSr [jvՁZ 4*|R;AhDp>t!hAG:㨜s  8p!gc?Xoi&T7ِ+),{B mW$. 5 o[!M"n!.n֬ܕ49Z%1af:fߵ-J&*KaQsф0o{>71s;egYdX(ed)/dșqRY|D7=we9gRe2.āaqgGX]IgU)I2RćBniN| ;n7W HQ;0i&Y/ _t62dv7+ވ²R@ Ïï[&jrԁCnFF\~ %oܻ$)t=B`&"@\fל\{zSabfT@MNw<ɐ'0IVC7$TC{"1$R|NUxpE>f؆w!͉>J@\0}(icIinOꖎ T6?9w ginF.JpÊ hZ, >&IxovbttȚ ㍳*'"LsE0qQZw}nN :⛚Xm 6Zp 6zȸ1oq01l ٖ3&KF Z1Wzj39 / k (Ti9^ititYU; Cic-bNhʊJVXTF:$vb v+:ѽCҜ|~Oyc}ϣ|ꯙ:|oW׻~KJXe\) cH&;$R RA5Ґ]CI~P\ Qa@RrH *(2W.ԣSoŤҳW& B *j="Mz{#P(_9T9&W.”djܒJ ˠvu(Tyji4Uɯ9kʣE e.^):{)J:$}I˯0&.$Ң%rJ>)?*/youker-assistant-1.0.1/src/image/login-dialog.png000644 001750 001750 00000170735 12312451003 022300 0ustar00saucysaucy000000 000000 PNG  IHDR;tEXtSoftwareAdobe ImageReadyqe<IDATxYkUU>޹QSg+r)B|f $ЄOPQAEя~EAY=G Q,S1_38syZksMmwg}~>3M=L ▖TV{t^~[zJZ-2*ry-Xn-U i7[ڀuSxgi9^5'dŒ4McEĀ/"6V\)4-WԭIAB2cYN,Y:+!*urbx5_P#0l)VزLъjdUF(9\4ITZDtUPmbvY '6 ,.PN`x-)Gr{-JLkWܸ~+q u4?j(SG)Vشdj; L Γgq ˄b3z>fR[L͔ӎ^DfNby+/"0UymZ0Y}(o$7@R2Gb?N,l@53^$[84z sA t.1ňxϐ.yXpL}%< ^y y(`-5{)Pqޑ!qgؼ|ž]Z$+% ^_u }L|eS7.D5mR̡6GLy(Y gieʌGD_;a>,9ɥJzǏNAo%gbEM5@ yD|) yL47@NC1e,ıڄG/h]=H7~( ,}+V|ߡ- QmLʆ>\0$,Omy ]ꉓUn~.KJZ4oD4+ v>-l%=vY+(G9F&g2%e0ȃ>- h[i!O3易E:"Fknl,h+z㞹Sul+C :c>{JQ[nD3 V̅6)aȊ,3 ^툼Jj/u׽Z>%J"m?yNK*Vs+'Q:Ep}tJ+ڧq6;e>\< 9S>#)ҳۖP[(G;ChLT!9#ousrݚ,zQ-oj0 hWo8'u%PMNAJGsoF v carzF9̿dM1G i̝HU(4h;I_%kZ|(T9Ektk>̑s/uLłm-W}@F$8;a ^EtZ_X>Kjp!5#wѲ|={K̟HŪ3jUKoj x`*E -o@*kb\,Axѹ[ d ձUu{ń,:/]勬FM6<SǴ 5.n,]tæ%4X`?}ܟj8~;S7e<哤 Gx5"l5֑3^?>X`v|1#ZcG c_oѿk.UaΜPJ)R((@$h5 c .&Ƅ uFبDب @Rb\դj-*-{^3~H;יo7d747^hPhuEWxCTX@LIKc*U/c}Wx3,Pk+쉞%zwuIxө#/s"3NEb,pIpJ[Eleq$yOYSmCb &eRCxp.FwϑPI3飓K5qW6O S3!-Hjt=2ŠcfU') g!fJ`v"$&9;\mq5aE Kh zB<V~^mvA%z^#+Blꠠt6XHS8H !1B [niī5|5Jc`m MpHR"ip{iq9 <&tг~-f4O``Zxd 8wCHxa% [ }ˡo'<c6muo%܁iT_wy,k?ERg=cpp{hPͿ+RGZ#i".H qƶ%6-u2/0г5eHxDzeMs1vUetsPvGz"Q!)8j.r|[Fu&\CgJTdop ݥ&}s5*L5 8Nv2Sd)DZw=gek4ي3aĵ_Z5YXF1[m9qD#ַd&ϳ}Xyb tX"m P A"jh-gٔ Li$}#0cW߸FPV+dUpjD8XɆv*B65śG5cA((gk!ʁLb ƑY@^GN%GAaT4_-thKT!|9HjQ&EAn@!'g&AdQU U)('i25$ʩ˱:(Q5QiʥmqV71~wa TޜM>6eTtR2K Lp ya^ˠD_;Pb S$P IACgx$Ì@ )ڪ#¡me㺋zYMzʬf33fx0l*&-Dljby !˽Nj1&4> ) zL k: lI]@DzAjcBF>cV9e quH $jU)$8eBFPDC' (F'QƝu"DF)ޔ n] S+*f7~Y eBh3-iEM(}&>bnSҵ>8bnݲ{2e!+(/pC3uWՕ"+sFc̩7Hh<2_މ rz&~x;?Ȇ$G'P `BAaћ;Aѹ{\ m.G82i$_r5'i"Q&%Ft3'tL($LJk4I'M P L'\5ܓG R%Fc<տ➧x}qCqY$~@f3" ,ikb 5c7n-n[0\IAVB,sAwG+n|WVW5T&y޴ Uj3V=cik쩆9s B;'!8H  38#y>A^ǪLl(7ܒP.Fq&ggkA7B%p&l R#O[?{DM1:#WtVRx0![O$[en$T"Fߵ(Tz^ʺ\a*'ȅi{eLh( 9f.:MER3 Lӳzb!CX^_v]pV87mrZEArK\8)oWtҼBxlD n aClaΆ-5+3c"QsєAI.04i"ɻwղd- ɐ/B 铯_LɆʚJn rۜnv?kA9myrrzN>t rO Ewk'O^6r%fVz;7։~޺CѰ"c}&m+t+(c^!C#pEH ~66jܱHp g4ˮ(9ȌoM|n:Ėc0ͳ.O[w}?ɶn`i-nE,V=}/nIG:q`jmoǾצSx{y 1a͌(''{hV1ڵ ׍7_u<A⣭sCW)laXRiVeGCVTAKrH'Ǩ?-{\Wq{ҕlKld )P1)748Ӥxi&2mIi@3!(ABƦ cĄg?%Ku%]{v{seVks̵~=~S{HJp{pv;@h,_ڬ2s.m^bb=ǀ'XAGx`З `b󽪠,1a!T{K? D"J.WuDns _eHj3bpۦZ%N!x >s2fdu^A+"*c3 \(juȾYYL|tx[K}lgy+5aoE*|'!*qj}hu˚_<Ee$LqUEZfxf><4d.u{PYJ:/hadh51Q b.apWHi ᱃R-NB@i qgidL<&yB j<M塿*Z* ?T J[(wJn\uFf 骡u/o5HӁDUzcZ¨²Ҫ\Z_ D[hcgYEEەAm ]^e/.FmOR7Y+Cn}x?73֎ aet!le CNX&uZM+淨+x"0jKXrxV,n=l[5_̰EUl튿u7lk9nSPm1<9@7Exh!uu.t>o?_X4Mm@iߴE\JއCY>F<Ī3D:Ca\to} "(a#9WEI{w\ćB6$[-;ݞ$Ct-0:J* ee_Wl[K%6\ao y|lxud}]g-o_x^E+V;?~ >+܎60мcAvlXsIZ3@d/FOn lipIƊ8JD^JN2Vv)oBckT1Q7%gƜ1ї{iE/|Oyfw2N45xt7 '{r,n=γ9$JlJ9.$ нpg:'w$єs %FaU!P/(_VdθTBP04ٖ12ȶ cFdrwݞVٚ7- EAU>ф+L|$P #S !r|ڠ{79W7߽踘{dh=qPYTM5eGΐ%nDy)LpIЪsxC~ѽv4Woh[bJEEV\H2Zr rLCSL!)hi2G(yfqIfe33c0a8g#BJ)b+l#  .N~w̟Qzݖxɤ&Ҝk8";sԴ#W@wϱ Wи8u˻ X$^mW 1A9^91u_x܉eFhZHdʑ;%OPFTdl:7M49%*ԩia$N>sWA9YLWni9KymjDVrgG/Qm5@wv6ډrYiB/FzbBcc} JzPK%ǩf0M2/eC.Fɣym9+O)>kh#`Xu"saNO>Lؼ(oF{v7?DiRaiKu cx E˲ lV[Ó1SYIƷPPQ'2er$ YT7ȗX.:{}}BO}eZGi4)'VPl{#7QLT;[\׿ӿڳ;}==[nû!><~ 7Ξ]xy,Ԧ\uy YD[Zx QCڎZ 7|Sd2>墤KałVNp΢ L{&`^QKEZ~Tu;9ꆍ+7r,JLaZqah[\'ie{>I L=(q}<% E޽pv%nH*Np^g$>G|Iq(``zXtd AH1QNbx+ E {K\b.4M:nOD2qy݃{"o"J<H&*z2H(22A?y" xCiƧϜU{b.)oY}){S &)M^SG#"$2Ȁ4!MP4 95QIؚS# afL ƇlHitNs=K1'/}*}EJ!CF´' $}d"= `x+ہpWc gT'2w4/T0NfВN\chCz*No 5RfFq"FpD8SR0ơL\~mFQvEpQ;&X Qݫd\&CoLkNp :]3#)A9NAT̕/DMpx!WXʰ P2Mr =HY@r̓9{k%Fqs;gې @1mt3K*],p1g 1.@8LbD`ovf:bF5# W(#̴M ^g1% yd09/NV0VBdZ9Ė$3?9(Q5POLZOjdIr_!#cb<8⓼$YPdV%6,z#Vud~^ y+L*iP+HHR4g-Z*q𷣴=&v$%%O}lĨXc"}q} &!5{5#euj`C }ҼRTdPbc٤STpf2 4]Og!& sV:0LшO5BLW/[0#q=D#sUYUt4XR96 YIL GW E Qa,[[2c~9v]DeL;kΈ8yye͏g0 ߅{vn ŤvqJ )1͟%⪏(m8wACaf(f+2L 3³$&E~cTzωYLyb Dl{~o6&!1ٔ׬I*L¦ݟuEDCH Lqcah8NYHs(h2DQۚ>D cΈ}ȊI <&S6:Lb`.EctVkh1G Q 7о8\ֱw] XT D\PgP;@+'pcq~WL(HeATrص t!Yb_Nک &??>sRzm\w(/z\ka1"Lkqb GG f=8"6HI{marN%7qSdz29AQ"m&cV)k:_/.eJ2:$P%=i*% bVI "jY;[xN,xBDU d /Tp[IU85xf$)v62@5 x+)7<g~Lk›k6ٓa$Xy6=+CZ!\;? fۘW֕!EMy;P9ߟ^||ΧS8AIL5+ 8N2c~;R]w/G:1ob(LYDB9 _s8|jiL&T\.KXGERG_z \8֟2:$ SN$`gLZ= g ~ Rt NH?*Fqj(2|A-#"Gǰ^Pq\#Z[R,C1W|8fmrjfP/FzHm߻_+R _z,4 {19m?9h^4kN=| |-k5,y=N; o%f!1yU4xQUA%.Ft(Vpn*AN9;ٺ9cq%gZM -BߦAx>@naQLU"kL8MI2GcV^n2"P!ZuJSe1sz?:A(w!R(* 1.X fP_nS{V`7n|h 4%u[pӻNJ dӭ0-DH`ׯ;f ֟9`"lyz g5<Ԛ/7z`5zEY.C^\T }Wszj+'\Cz#B-(=A^+; β_(}%($FK2* oLѱ; "s3*1&T~Y%NlYmeJ:?m'̆c_0_{<6RR'e}P|?> Zn}lͅfzq⢠dqb!9% dm~usiIV(+اD25+:S)J$ޔVƪZ[+Ne<:|r{z:0TH+"ӄy0]])Cݻ7t ()Q80 eHѵJ:ˀx& 28L4H۰6}2HyQV !O;.F|X+% Km>sbcOl~ۜ( x˟-E }wjϪ?֓&ضws1^ K&(q5ΐH$0~% 9 (+`VMZQDgP6 &ԅРɞ@W8uќ+^_%!vA됸+W"FkLPhTQQSŬ '*s_E_M5O-7xg-T&"r'U8?JUoDIjB@S ɲvHp*Y7YEqJQPtD[BHpQbNC Q+??@RmhD9l-t-tRRA7URt.J+ nW&ju]N㏗uV|X3ٟy*E叏9qǡ\ ܼ\' o̚w>!@Io c8`/ć#)Ah'LHlBĪTCXBa2efNi"pou=|Z@<9*>`L£(gcR}Yԡ7FE‚d3D#mqpሂ!} Xg5NtQ(r,GLc2 eo۫M֤{@D3Q>}D6Aa֫nD0ƒA{ +(Gp|I6;0P{xFx3eV&=*!1Y2C@pDdP{ V,uλ@(1Yl 8GVb8S mϡ~go8!Y}zrSVB3pI5BA`FBI(dT:o!rA@4iJhDjtU3Ky干54"O@Gt&Q`TH1{dF$HeiTm0p'+Q%ȣL&ؖT)؊׌CVʢU"ԉaAJ~Yҕ5)-m\%)T2-eNjẀ먒Wfm1G[LX)ӴuZ$`764#Qk*8;7jRzc9K|fWܝ0|'+;9{q}7I}}dz9vs4y\kk.G)GŶFfuKB'mKY~oO66w{ÿ A#Z hvVZ9MB/w-IvvBIuDɆG)*Z]RF=C;f:޿򊭰t Nk" 44:s"F&WhKU^6B@g`t`v[zchQzYO'Lja 6)?Ӆ/ܻV+`xу^\K0v/#p΋`ÖMJ=44-'Kp;f`XB11^v1:) pƪz5ͱ"Ͼa=8Z~?+=6*ps|׏o ¢VM~m;=+<^汍ckZ_Qkzrىrr#hx] yE: HV04I 3EGaLi1C0+= 7V'z`#Kf7^sq$uLdo`QhƧ,zl8_W qjG[j&VXۯ 5Eӝ#8 GN9F—cLkcX?}VYM Qֳ]HV.;b'P }L:\Xzʵ( ȫ=o mpՏ@Vf0x)Px9izAX?$1lAp`F@|p:ò6UC7}VE}>\NvN^%gZ ׌G XV%6w+ַSjt(r#߯ T+WQQdƠz *Sxy|*<;:bLԢF(fE*%qҊtKI}GPc>J΃/S=:eh2ӗI&n~.O$vc sٓ{ԛфI>gBk:ׂqwެvsV*J mC>5 [JSaרZ\CҠ3,}Xz;)4W.Jd9>|6$**:|h_hovU5Blnhrp cPiH8h&QɽUԋ xN%bqbfRoGU:>d^ghzϥDAO/ &v#/F3'q-P)o/nW͗8) ijt4 SK@U("Kɢll(y l! ߐ!lQEUT}HAkjVeM& ZBc vO6u%B4"asM3ߚqkF;`03RۊpHT5 p 5 3RP؋6(‹*:"1B|=ezINjm}a(HD r*>S'~\V_9HWæq?B.s),n@а/yA=%^z^L޷} Ai_DXFٗ]&%C)D5 $ttKIZEAo|8|}S/Ǹ(^dAQEUqc+l6eÃR $\7p|C$92\L ,43@ExHև4V"B%B*WC!A 'K:B!RոCWXM |iȴ&:NfF g~4*8۬08^(mj/=j~ʎ{i 2g)9JUSp&3R$&Н6*SÐ." *]fk a"B5 @$YYѣ04ey/ ̆G(6Ĵd=%1w!-gُ0q;AeKP:t :ޜ1a–&桝o9eIX`2SJCc `%K:ͨ| "&chVE|[$E62Yk ЩxJUM<Nn)lIFšh+HSa\=#0 9f) }ɬK&¯+O s/W bDdGQ쮍KK*F8 j. H^`+)%pyRs3ʠ3±JL03}3$3+:¦T73'8it!S ?R> }e6'fi$2PqټQ"9D;i=P~GEx<İR)9X 3e0%6FZ j q8?) 0q(򵿼jXtM.l'VEOBkݳLjsj=F?DDtkjbYAuҧ%7ƺGH0r{YfHNIg V e:ϳQg:1prCTU e\eO:ͼd|UNW(Z®± (?A;Bck̗9aqg7gRZejI&nv?#@Pug#"TOq#bTu- (AB"0.3ޕD!>Yחt2rcwzDg-D!GNxf}<3to !>A:ș0SStl)Vf`HwXEm˳*C[J \G&HXt |W 10uZO 1Rj)*#HѢL8_:LXGN[P i,H(0Alg*s6YvSoFPd֕Á:,WCGqJj@iHA%5LwrH$H.=azt:hvTTiD L"aL&(.{)꥔0B@XC }ëHVbI>TP-(Z5ļGh; 2:EՅ p>E āP~W:IĐp4)]\(di,TC%3c0 BWb)ၿepa= ]Y.IU$eʩ$aTN>R|eŌKQYiT 2(9)E)[NX5= 5&:l@<' \ "ahWêT`kI>3 "^u.D\DY!gSׁ~BPbo 3{'HZ-$:%TF@dמCp{?w4T4iA^Dd3DR$֓LH &|U$]qCBysD3H-CQUu X +I+RqcjGoS&`l / HKT䭨)"eiЛ BHQBꥮ f8FiHXFxcS'/[WݴYx ~ 5 ?DsT*Yyx2  н) PF4Ӣ@EPϯEF 0!KK N.(*y\O왁GhWiV>a5on1"Yd^r¤9c0Z%@GaJuEuD6ueE,CaE#}p"LL&ҽA ^ډo]twZ!A33y_11SAjlU}dN% g '`"vECm!x `؀OiSQFֱ}9kM,+ɜ) FB= 2UtM!leȏ 4Zo͑c ѐT$Dd*GB%!Kl\qxe۶%M>%HF`߹s/8o<.>LO#]m$A0&9ޒA kEӗp_GRU"X#`0s1b@I[I;ͫEE ;)bf F_:(\"xH BJVYJ$1c`7;&/dUXEUiD8@COG͇-8u٨ e?&oj1=l0fȰXJţ;E@&{=HR!hO-ǔ;fsR|'M̢F^khf!Sn?A,NĕY؇NɶL-ۧ`U^^eQK) +/"ٔ:ZGr7LFX)jO6G̓5p<>z,Vם8[vO{pCqk;o||1w_Fs0& #V ɹٹ[8,?}{fOH'FǍg+9˚3L,-KGtYלı0dBfrTMX-ʒI擈E¬#†J'h]`q?$1DB°Jr/1@+T2jżr `!6FJMf +~lb~츅~e ,n9 wné3X<p tgf~ȲB[prIpqA}%3===7뮸%>0uMɝ+D*~ŠQxeA宿IZ a' !ޔ)BN*pD_&rqi!( ԔИYyDX3{Q[y ֑E}js::k٫WyV;gRO0BR3{q!a% 4K0^I"8.L~tl;MFF;nNi5 "T{@,ҭ*m ? p[[솣`}Űp\3Ӂ/߷:aBId*f(s d.yo@H̢S ˤ$-jrV9 i)SX8V@kTA4 Qm4σ𸆁2ޱNE/[G/faM>70P ՎA"ʲ7 ~tH>pJX ! )W_'$$Q5&6Ib cU~\%!vZAQiU- ^spQֿ.+&D yk声sjί>j -[x x?lfReqHETkq9>Ֆ56Ui4~/~1\0#'yY+(8ɄR&P|Pb!~D4T;ՒKjħ4'{jhAZTHLj1 ybDԯiJfqȒ—~yp$Oˀ% .щY3w<C}puy'7~؞6LLu m-f~DY8؄7.}jw> oݺe~C 黼iNJ/sbkzYϜ t~vҙi K#!șt G ,1@0%&دlʵKF04lh'iQU %@8RD@e^֑}` #w ȕ 1DU(F.u7 ƑkPN"o!]V)mkj]r]K^u۸;kgwXa[vwvw|J_x7ˎܼRQL ў|`_۝^ĞY-c6sBb%E[!!(<,aL5-%U+`|M`s&+b*{((bH8i ͧ"Q"Ab$j4;c} n:~F矰n{tLXÙVxX4bUǒio %u' D9E ɪ :j%XDECڋY!F"EڬtDRȰGZ..!պ{&s*>r㴥n!*ՃD0iv=}\yo':$)zƤpZO+E?)q$<^"h]3CuFСT\e~cM0:݂ɐTQ`%L$zB8Ih}?;-3令&7/ISV,: ӊb9[ ?믜Mj(/( TEB| o\C!GS |Y|.2WTKգł+`^rOGbS#\$] "Q]bUxE#;\9(:&1P!iiuIByEƭ.I0oar;Z2B.Vynj)/Z)[eU!|%Q☥rǚ|D9+b^Ry%5Z(vM&Uy#(o vQESp-~ Ɛ ?Ɓﯞ7fI.1#. i&\@ 0Iu”'H@4u@Ro*cyPWX7<{U7='r;&%Z-QƟdG(›֯\04Y[&G+@W rvi-L(_,CQlPp*܁J/GM$h=f1{_7PAĆKtVowpAy܊b[D-#+@)26?B*cbVEԈ>wJ]o<mKMKMO 7k~t=\Ɠ篾39{F$'4!-/ @*r4M$d QМILB-ƲT*C<T ٹPԩҭsVMCtχųG8OMa0\hE`Y.9;0(r+PAfX*$߬5y kt1jɡi5#a}΀6jM V1j ǩkSXhY[ Ir"ϐ`5(IOvP`Ꞥ} Hj.P SDO(c.eG1N c(2͠yr^gxc rЯѳ30aRУNUeIZY UflU RM]0^qEZ?QAIJv69na%_::,$ c@Cs#PDC#Q&6s :흅XޘMVX]-{W"Vq>!sleYnF6~hG,/#bȘHr/3tL"`,PP] n-)8 tt tx=Q N(c8Sf|=:R* p X`'KFkgBS? vS`4dv@o~vWU1rZTW$N쿫sWI(՛.Dc%5DYG1UpI**֔#Es I!Q%ouXyCnj<8[8pN+ߜBuFᜣzrSV\2oH]@̷!]EW۷NxlFdWɤ&5( ptEz0 F1g3QE4rZ.ۘ<U3'@0<9tEBE7gpVGB*d2ĩ#2 JY Kq=eM|fC ($|y6 Y(x" cGbĽZ#d Fluqi%T.SњYQ(_(q8=SXck T 5KLL?! y$r҈bxoMp;c͢!xm1OUx5!rJV B?-V?/#SZDFYElk_ :t=1,f4`V݆U &eUqo G ߤ km]/xJ\'QH)$L)|ipsghKn*i+ؖ3q(DoB(>z?,ԘУ]*'` JWQbk+úo!f!RR-JRh ,()8,|R@9%WFm\0̪.WIBiWm-@JAqYK+{D8ވwM-Sfو)Jal%):#JOGFb.9JLlN6RF5۠4)AX|doR fmhD Xa (r\aYi~~gv<3*8L>F&gM9Kܤ^`_ml.Pgw?;3.B yv> }P"p~8rzH5F{H"`uA pZx'o2t!-,~m:EwJ0g^ )0S!zfca͞=}ۧw-[XY aLduY+u!{pvνf.>i S?z6SX*,WFh2/-.nэIX0KGܵ}fˠ% *Rxn$-H_jr ҽ$87 C|`%~5wmt lj64}Di( e(b)tGϺp! p 3J2i\Dj ຣfYaskׇ3׉X,v\2PD!VBX S^{8; U[ቩ-vsfD4 6g-n9>kJa؁ڐ!1mð3C+ɕ^cPk>;]^ s֖m}bA%H{10گi-8b>FL}905&4VPZ8il*c/5p9ܘh%k\Laj<^p4G=zT%V4aC<~:P,\`ܶV n: s`Wd[dsLb\`hxxQC1 Йdbbggֹ2]Fo{;p]{qK׍zl%˭{Plq5M}NBɒ;qE Y[q!/pmf|h.}t^~0e"NY6xXQ#Vc>ex͝?%8ydk6 +/ӏ…WښDMA B鹬j~;ܷ 3x>8aVp̼fdqh5\, q nY45^;XHmmYYk h q+[tߺ 3Ak"X5<v д?`p[Ye h^ߺu#w9¼s33Oߺyg _jOh h@*0gctL-8g/(e6!\ՁhJZV|{ÃO<>՛`|>y^'i3;>_β &q;086ÏlV0@*N5dh ;vO7#_=~5k ij&d2WClO>{?6q3 =?{(\}{dbZZZ겷,UYctW=QVSIvzLqwlzt+:'|2Spr M֭?w/Pa>r̡7Gg-3pҿw>QXR45w4\u.! ka+>o>c(g 3ωNWP4pqc-xkbyE3V(zcǚRcM_QhqµG-]c' ;Оl|e CCkB0;f." W] Owp&*`G`bNT!2 vt]so^ݿ;֯#`K֝ jbm-CCC088hW~#~gzsQЂ߰b'Za8jT>UMX8Ԁ} ;^髴fO?U+APXK]=>O|.S^kCcWržMZ_1:ٹPڦjC!4CK$B?+ Z++C0RWQR~8u“6Lp +7[o)JV ELmv~ #ןug9,esp= -S֣G \i]/ ~7 {)fՒ9o/ڀ69*Xᇎ׶rf &nO/p-)LuC3 X;7`||9짭~ &Ǒ_ouO~_ַo6{qVyi]ˤ kgHEP!\yk1;IhA>0Q:Sc_nAq O] {Nux`wpo )#miطoLMMA{v&f& [afѴ]{G03Eßc=qX5.=1n{ V ڳi K8b>+iͪRE0j3GԔ:$VH誤 f>)dvV D݉?94A=C|ףw} QZcԣ^0vmH=Q%;RzԦT=qQKF=Qkzc֣`ԣ)UzMz F-G/%MzԣvQZ0QڔG=jQzԂQzԂQz>F=#dԣ)Uz`vE>4۵%Uh,&}}Nj|#Y@u/irlkʰ}j/"MBӾt>7pԣ/!M1M`Q%{pɮL0̗oTU*U/Hٖm0f1ЀchO@7nnf30@À݌ `M$վWo{b9,WT%T'{/ͻ?l(F졲+VX箃?5s|R<2|Qtb+9ybŊ=LGReۮ0,(4@}G8bŊ{: GyX]C2 $mn=׾ɍG&$-OO 9_ogy1?hpO߅پMgbOl1}y fݽJ{Cq$h}B~q$D7mCl'; нO3߼0[u:Hr1'ق%-"t(}'=I7[ \jbΌ۰Ȇo-=Ȳ{->qM* MffOC' EB/AF7'wnN}˨͋.6M-[`ua;lP{'Ask(k.ۺ{v3e^qkN#[R Y4(!h~@rO־vDOD"ȄgDi!'}ObQ_4Γ|ėt݇9;"_(EbESرXZ,^a Ϟ4dkD3 gA8n5ӿuH,%8jHhpAJ^/]EtQo r_Z^!|QJ(j)6X;NygAMtB,p2`قIq?"BFf16 xJwߖ(d1+EYP :^5mm_6O;#{ŝEeN<tLّ]< ·`ֵ;xf!t`2"p(֭ZTF| cO9H-r;͖R֔e(*} Ovd؅uga>F˜‚# 3 ٹ ;qJAzbx"l_ vbNXnfL3*&U0$Q͒cd_(DIJ ȠxFh+f>Qux0!+ Q|th8~a#!>!A1c19㸲:T"d,~)a㣙 ߩw>s ۦfWWWn3N׾F;=ĕ4y-w`$+=G=rEU}v6ct )ĘEctvDZ"$L.Ġ8JA~Q8]ITi "d"5$:unF c\H`ل,(LkxN Y3+GsX$D! l:, dRDE;hqk<{vQVx ZR7jA`0,(zr4_`Ilހ:'8$>5z2ZW;z'oq6^M[uc'j)]wUdB'==e X V^~Nh-X NOsgY4 wXY!4: F!f0y"CBV_b^;lAװx#VxT"e jqc 9pIXY c1DEXL, ෤ӊWC<&>j/yM }g b`%·CAph5[:A"ܹz(D*(jQDY/Th" F:]c&d}1#b΂C>AjS*3X?~JOATuulc\20πZiCN#?8]"]VEJ` ""I';2$"eJi`VVH;)fQ PYJ=AҿfjʮWEucnS8s&TѤEY 2 H1տvBV$3U"k!6YqȌ,/Hq>EZe'$@?zbc5{ ̷_0pz)DӚAP`#MAޡhcV=^`YXbඐU퀝kF ÁMC,[A" ̎u*8D|+ta~|sC+$..q`u wOE q!w<OcaqXBPLUHLxl̩Ɣ͐}F0ʅ-/<@ !u]$Q9TA I @HpvcLQ@E36OBQH-SDymܱb8a'G"5hFMXj$F"@ E8'\Yw9h@SucDZzFoSAS::^?5Ŭe%0{(hCnY=)E@fx$GYlnQL`ABф3#V4Ә7 zUUEs6:Je Dprg3_+ԣav6NxOEgdTR̀2;Fek6JfC;0|es'1tr"7lbOH#wH+mAeم89@Us9 OZK*͖ ꨄ 5k2خe,͙*$up[AW+;sr$3<%_G;,<(4;5tVۀtrvZB5kWl = ݚUX{)n迕j{s]Xl?5!rS(=*=Ex=,+df:riePi0tZIz$6$ I@0QG-!0 -cq\y1uSrr#"Ɖbn\d4]-gٲKgp`C)XA騤cXu ܹ"Zׅ')-`@ Bb6NR[7 IcaЧe8"Y1u؟:e0u[MS8b0h;)b†^k<]aq*'kFEkT18PG"gncmI:gH%_E-b#:vVlL sTv70Aό8St3bE\\.-z(hUeG#/B0bu`i@Z23,BxPVH:x7xqGXO e.wAe 0ǫGQE -bRʶd]s@uXKdErǏR.SBpH~?%R&Œ)FqX[G+?-> Ntُ^T,?PH E5n}s4׍}mWF5 NNA|n(xAQ?g\5S ̡+%(7i!&NQqUKd;&.BtDό8F2ԺH>REgDy:e1#$aI 2 v@T&рy$7SaS>_dC"ڕYeh 6!)y(ʢ-ґ1cx82I\NSCDsb!G!X!(ESgl (4Ř;kF&so۶~N9چ#Ư}3pBQf| v W~ `! oyzl_xig!(LjRCÇyU.djAv15+xsܿ&;MbWCDL3&w ݣC~)֞J ۤKU0HrI┱.>Ar.};6ۋw.Qy֑bKgTC$Ȅ|C^A{ sUa[%NwGCQȃCj73u"dpzW%5 Փ1*gdY )sC[$gȾH&yGťYNFAu~hڇ݁T墳֐`.Dݛ/7+7la-L3R^8G^+7ʧ x8'W9\MM\75 N%LTDqOiHpUԣ 0T gY`q!E&dsmY3WԥP#;^ɴZdWuQYM SyM\.|?ftؕm&OF@Ȩ(kO.T !6I^q 3R1l Jj0q=@ybjWMia%UDjӇ01Rnu|5Gz8OQ S>Q7Y\p5 \ 7Ų يfV~;.K\FՌ?u4|aJmNL'w#CF.P(MLe+N_v7g%\joʹ]ÍɌf*k!ab5jwLfeH@ 1'ɳ2q>]tN Q3FTqF@~]%&!߇;hON+i3)Ydxz>pk_UERߡwPRlfY u(ql8,0%24R`IrGf jx"G]nڵfFޱB ($ ,10Q=!K΢ L"[\LOtԪKF`T~< /۹^vZX5`.0 ᫏m ?․wH=e˩0 hȖZQ_.GLJdi0F8o3 ĹFM@;dAOAxFj[SdDqVr gCS"$}S%T]5ҫRp8WD)3qf+0ܺSQǡROM\IЈ]Sa OԔkVR].ЀHyVR“,΢cOiB~HͮQq/Ha^eb\3A%T-j!T6}xIm}8T??q >{_>m7`+w~~cϬSU> P$wAyH|zSk$3QCjRH1gǙթф05!eu)*@6Qh@d:a!.(H Xt:] JY]÷9hO }sPGhe:(f# ˰0*&_Q]RD̝MCe cL= i(P|Wf㳩I/©QH̪6R=% tK@5TBFOƐs`NqH\]51$Ȧ~ (aю pGsV *o|[ գ}x ·]9<k?|#KO8C$׫*VGv|e7W^ [/7`TUUeRuL$f8HiV'Rg-vrC9cM6,6$Psm2bJ !\ϩળ$i+{B<^B $eGgQG0>ZDۇNG L1C2()15>{ AU2ڨDPAMZGt)S|H'|f/y#L|V9*FձcDcGX$({ /a#DGhCi/L|[VգU 4"m=3)`," J8(@эOYML0X0A:ЉA) gUё+8 +9jaS<^jt`$3ou2PY/sM%xx B͉ՉC"Y{H/&ؚcÆS4xɎ"ͷs~#NSm6V&rd69ga1g}d_I*q5z#<j=<90ut;5A.zB&M9Qʱg5mWWv|X.5ՙ:d *)jk}I'Uxj:s_n27N8Gs60e1@UAL 墪9)| DxEAݫ!&qT%JJ?WTmwݽb5%͘&!!GڟwE, 4h$DjNPINFѢNa 𼭫`"|p-f߹nfߦG{yj8CsCs<|x>!sqYslBQ8(x&(MOoy~_y1c?rZ~CMxZ3>.0sXO .2JOw /&34nj&)Oifț7bk.}Y(w9U;(W).м" (aA^W#~Yv,CLY+E]>MB}(HE{9gjlMC6Q ԅB!+LAt!6eVf|I EKe@qfU|| Q9"z qk65p7^ ! j #AJt$$'Jf6å&`mE:4B # M'/65,uSRGгU$/*lͯ /~օS% /`OT#_lͩ!Mٔ|HY) !b}*bJ" r%tbRƙsċ\|ёM &[N2fh~C)`2^uRhC x{-XveEXfBBJZ*$.GZ46 "ڲ3c<&Zb떷ms^:A)/zd*Ijb.7"f<>GڼvhvfL*޾ ]QVdZ}BLguզI<=Sy؂lSd3LF CjͲW/?n7jstâ'Y9.2 $ ҾN^’vZZH7CwA847lDӫs93).,/#OpA Ċ 2j$=4 &I:j\/ܶ8fr5 MfZP@Qtb:FqrPiF#~1  <=[d( F!/rʦ;N։Fx>FJN0w0t6>s;>l:by/1gK]AgsBZUb|=2;BĬӜK(2爉8c|Dvu̦Xw~|f_ j3~;C 𥇏 W`4y5ã&r05ϻpq۬;­?s7?g[6sSJ*=0o}ߵ90g(4ܡ!h ^ ]:N ZMzzxw\ۻ#M3!K/]?_wN. LOH' zR_uwM+Ml1":UgsQH2lAq$<U ^p侸˳8)г\]bC~u1dH~fQ&r驾$\]JYGCeY~h~d1R`TN +Cڔ8|@Bq!$3Sh$VL$Jd4-F6sJidcwC&6~@_訥Ͽh,ֲc/?r]6l L-nCèK\RAzb0r)w%`b>1/2s-;ԃ=&`MCȠ^(̡fnbL mWZ m/3CGOɤRԏW6J<7qق zQB_32.pTmBP6;.h9 =_NyY",*WO:8 |ra/MhZ࿏9ALs8*yL+ͺs:%s ^gu?ꄦ3 _@l" C}i|&H7w|3%x<e[2tXÎ`2qf&(jWqR+3Nb*[Q{:K7LuN .Z ֌u,{k[0ɲNؙ3( ;Skr ^p= 7?5rtޝGű>a??\i헭׍sD?zص~.Mvqix_fI|)~ΏM«ZQR%D-(thL ĤC3͙8=q6)$LY4nnϸ$UaXGQ5Ud_/>*Ș%ôXNSm vS5}<Կ:3"L3ECITYLwݰ Ha K rt6_y  Ze( >M;\sPfuTETeug]٦k5uloxN09HenozYƁ48Y:xJ#/ĪJr9EZdK:{)֍yA5TJ~_ZRRB;N4)P2m]"T $mO-[̲.Qtqnonyni8!LIb30Lcg&;`z9ȇ.#/ 'MjР}77C0R 6ڍ^S.לܢ'Ek)XW 3PGh5׹031b`4 Y EZW@YPuf]B>[0%;,{} w1ּW|^lC: dS`%޹pt/+lO>&Ia1~sN6D9B4gTLDPG(Xvga`K`V2K$+KxN$#S !R${J&FVjt٨~ޫ/U+Sş ̪uSN#ߩ>:DSjS%aԈdHyx;l9rd)E0-5 :s:DL% BQkJ(>e)pOSȀhaԐ*d] ِ-)";k19&=7+yTel/%fصNЕf̩0ZOOdO=G+;>Nu ]D(6yohVN = cC6َO4Oʋt9_r CvIsCLj{s)= OFK,v3LP]_߾-h6_7>o.xeD?mpt~5iq=59jJ5NP!4itRҍYv9Myav_t ϙL(+ kF`>t#V/J*^C`> o$ggp3:8+ i @e]cOPdЕ$@#1;P1?Rg~dTsoͲ34$ƚO'4eL *WUhmr斆ƶMԚ.2bZ1Eּ";!бbT4$fbr=io[F^l.p9k2 wT-B("Itۚئ)Fٶr v(5`)x5 8:Wÿfw7N`j 1|\_Kilk=C\M:}=`ֱ]5/dW*iEU)bRg!%6-R:WY&W' d^>Lu[)/&#\1Śf姙VTBc#&k&kKBGky91QE2T 6/5l[^RcAX֖>ޡUyʂ+99:ukp䎃?oVm[p6Fi>D`] )xD'vO3P(ž1LTL,DR(&Wt8PkG!v ih\6W<930bLȣEp8u $]QE&<hUEU]x(f ~S>T0EObz,Ɔ7KRKVE!sԙN3* J3LS9L-wl@>PB/):8C\CWfUT)W(fbTaW--d%)JucLn0 qd,!hs);W_Yk۠e/9$Xف`¿jmZ5OjNnV>Ǘ[dȹmIIRc3N*𦬀'fgy2iiF0_dFgrb~%R} d /sd2wߞf" Ca6K{"}lDjYz)ن>W C7ʵrt | {Qej`*g)2eXH]wQA[!T(#u12>#"MQM qs*0CV+kL\&yDYǰcbmD'1 $>*2W>)sˌıѐY(g{45amqX;Yl1D^v3d!>RF.g9x2ӵܑX1e)$HQoY=@\٪d@ܝ5!B ЏΣc\rzUxĥI?D-'Q$4R!RV@Qa2|7 `~UfIc\LW!uM Ǧ8j<#}Úɮ^l VAC0`4.""tVn옰M[3[E[A@j- G%J[!hu.^ E:q$5SW JUmu>(OAfN9ϋϋ;v&^TKL9oYkZ_i~ta7deBɷY[?1TY}֯ϰ`V ‰ TXR y\\mtP[eS|%.),Q,+Hsb6fN1˧`2stS3d3>.XO\sahJ|t򎺰B-h?-14i} DcS#L8:Y}&HbQC֋lP0(2xW$T<Ѩ.F,NkHlJBt̥͂–t{0ʖ$<ﻐCvuL8d [m<F7l]"{c CY&G]u]3,HkbU]4ʪ ]JN> e|Ok]3:M8;.CǎBڹQjTY% )b(yƠY֐f3aiW "{*R!Y D)e q~dt`2Ȝi3HdzR͘> yP1x%i[2_r8[g!HǚuȽ y{AN*п}`4CVkWt>rߨeGv.NrމϛrKb#q E_(MȾp*7pAFLD?:k6O%|Ѡ]a=/;WK |PM E(+>RR6 O[E1EёM"O!X&ɪdUXʬ"L`*f ؈Y|(F4d1IAS笠( r1"5.ޡ$-tJrA\y]ok|RogҐ\mRLad0.D7uD2<\XDk`WcT kCBF1-Xw!b[7ޅ"̙IMkHq`Ҵ:gR'5Igiu5 ?[YJU%v6۪ (QSb툡ڌՂ2Ga.dyA'y&停jDZJ(~|(qJ7`E-2>guf}9` 1Z5"t:bV82l,lC* vbWeoIVHEgY0_-)`H9 Q24vMG@NV;c~ey,C֮(8cZ1Ϧ,PV34I ^ЂG"e|%.ԔNt rƓ5,Ӯ`=l#BE l&R!hQrY;D(Sd#^Pn *"Q!G a~tɕID3]ŰRx~ JDx/8 i1iS (ї-*LBy<=(6\lAvjEqn|,#8"-$;]#{1 ؈\FyU }^鯵dx̖¤A;5LH"%\!{{!bcݩ,6xɱ+x\9|>I)_IY1Y48yB|b.NM텪U[XKMI]gXY1X~!͎f0wf<.Y?_|0, u WR v.&ئ流?$2s%>OĂ,Mrlmb`K:B,=#1Tϛ# :۠{axiu6ޓ%塃n10{n p;fBXH`K|͏ A[\X@*t-fru:JfpyaVFԅːZmN^}!Mdt<ׄ젎iʶϭk`^ӌҾ ֽ&F #/-<=*hTZ77B.!<;q*޲h;;R&(4^6|irl TaI"oŧ'F V}+fGWMLN[LsG~9ElAtꢵzj-r3k7,<ttcI|U#'}iI͊+,uSϥN}/_DCߗ{a 5sDtVuԟj^p-@I7`= =P-f3~  g*=cz ;ANWRXӞ\!tV+~ߗ;dt[-E|Pu0Ң&_6^w-L F`5Z2۹7 Y̊3?U8|qK3(G Ί >;0[͆m‘-.Ŋ;GЩ1Pc۬Gf?f^YM-7CXfq8xp7\a= Kי}<1Smi{l<5PYm{[g1c%&3в~լ}U qdJa5C͇ډoyX>84NXbβe!ۯ}7|papݎlDB놡7 zn5`p F׭^Z\ܿoX4ѻ:; ^Oo~s{mm.Y3WǖI֤,#zrk+U5EqrYM{N90]s]pdxFmbixfKi,5ƣ8y`\pf%90nն`Lbqa/uX?p +Gݶl}$fϴ9v|G]e6z*4Ճm>LC|M|#`)id'*eЄ}XbMqFm:e˸>xYtOd>h[+߈gȘqF0jFFViT?_ܽ}&>?8jh>et4]0+ L *`ɫUk򌵕g3!kǰr,ڧ:8{M'휞*PUbEqkUzgDrT&ҎyB5 yԨyᅣkVCd<M)%C{B9pʝEya%s1 ٵ~qf] EgIh(ցc53d'Kh2Q { +VL,S¼403Ep? Qj(#f2ac095㓠[pml o۽.ѿNAF YXknA[a F+8{V TMYCu(Ī\Lg_`dUEzXbϐxjga`w$'pgh50UXz&abjT?fVmbpep&A"o--9hiê>\a7nUq~E4i, / lX`։X4>҃*UŊ;ੳI=.k_? ɉhV/–j*4Ǣ~^\g9i=@}f(\vӰb8U 0haQj0 ʼr+VYwN-3mdM=U7ܶ >pphAiYuD\3Cx'YTmS y,n4ڳ]"~[S t"[_1=>Z><8.ߖVl +[F=}ËXz+LSOc9FCjܗGr,[\\C4 )U13N`rj&`d"7kea> /Ք[c,_P)][a׮:= G a^kuIDP+vSOf\18IJ sҼaRG n _l q *+$>M#,VXg`QXekcyl0w+12ǔY+kav>.ӡ |C8-ӯZjA?y l.,ְHqj+Dzf_HE(Vعiit9> 4쬾M߳YKWMgCp|iȺIY~2Ao7ct`a$ٞ}]=BkRDbŊ#N s*}:q<|O<$%FXTiii 6|25;Ǯv;gᯌ9:؜qL}¥Q[\6NaVMØYV9ek{vVq~T~_\枇7ƔB}{ySUkS2+vV,<;5a{ƒOLEpϾ)ɨMee'+n#lr!lܴ x1G0_ty77~~`$?@/gǂft-iWylB (ZbQvw^3c;Ygg~a4A}.kMnjq"O<=$XbxL¯FX|VX>27rNoYx8$[C_v CcûV8x ֟_5a^ yU~oXN*ZʹpΡX8k'Yc>y_ǀ %مm_þš+v+hO b3r+VvO< nax}r3Ig|{x(m;voz>4,iYmpx4ػ9uYANNRzXyD^YCJPC4v>+cnso 3kodjg0$N`oC%)W 8sڍw9N j|-dg|a!"b/ucg3XbΖ8Sp^ Gf< Kn^= [` a'}uO]p ^k UmkC׾BNXif92d?s†j>?~;L4 CK+jt9\k~f=7dK_W5ؾH'+V\ugOex{Mh C}^ ׿ f @/ΝfA ?}fݿ;Hzt8 2ȾBeaxsxv [a߂B_͂-ǻ^=&x75 꿃eŊ{:䭏C:yɊlÿK/~U00=q-L]p?a/?-3y c]'_Upnfaj0&QCI39H"x]lXR_fl5oxE l4mA'I~f#V `HbŞF,V_x崣΂<=K#Ф}Ai MQ2.n8xdymy;.q=U{W\Wewٌf* @y&m|V~fUXbxXK70U1ѧ(=bu4>ǃZ([ǠCh=si4p]XbŞ.{z fUp{ZR>JK'~2'wYً+vx3wxSXK_XbeYXbŊ(VXbg|!XbŊ=I'%+GXb3w+VX.띾8iRXb;+bŊ+vV Ŋ+VLXbŊ=e+NXbŊ=weD+VX4+V9iBxbŊF/VXbOAŊ+VF)+VXSR/VXbi+VX4+V3hr[XbZ4+VS4+V)[+VX34(VXb Fc*:,DzXbŞS/MǒwK9Uy$T,(VXC3'-)YȝCqŊ+v8ȌHDIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/FOUNDER.jpg000644 001750 001750 00000011401 12312451003 024101 0ustar00saucysaucy000000 000000 JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  !"$"$CF]" 5!W1QARa"2q,!1AQ"aRq2 ?`~fbx^wk+ O?Q o ƔḢ^'guv!JGRRkFz1?pӱŤ{Lezt}eVc zc;53\1_f|Og;u8%OTfi x`oGIzB8T6duZImi.ZB\6rHvZΎi7%gݨvO>f|O;'ڟ 3>E'8o\#_P@iI*[ۥ&HnV6EE'O"+Zqcn4>EܛϤi7R/qNTFi夐 O9s!yrdIpҍ\"&O򗆄Ef;'ڟ 3>E'O"mLO@3쭸S:`͉Me}eyouker-assistant-1.0.1/qml/img/logo/Manufacturer/MOTOROLA.jpg000644 001750 001750 00000004121 12312451003 024234 0ustar00saucysaucy000000 000000 JFIF``@ExifII*i ] FC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222F]" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( (:ƯgiW] s'M&ݐ7mYtPI Ԛùm%1OタhRG5]^cVq7vzW5XϦj77K{y7שK-3[G~j[O-nJz@PYyaNaIb\5 >'I:-zy^׮U(;],R咱QEyXQEQEW|rפQУr!>0?*X;~Z\v]*9qrjý#gZ].裗ϓj|H񭯌OWBp[ԟ uK i5glO# [> լ>*isBwNRp{Bҽ ԒZ]^Rׄ!-1GPkl=ocQLέ?iMR 4m#Nro7~TV:ޚ=M &?`cXĒfrJG*s"jQ0fu{9lyw1́NL?\fX^jWKmcm-8?{o'򦱬mK $oׅ芣JUw!t X hB uckV+rwgQEdVO,|1\ZC,+n 1r0W/ 3K4a Gp39:ݏsz(PUSnV1U+GUIWWPЃtK-5cj3xn;1,[F>ۘHAzм&/sxbTk:#;FH?]ҭᢕJ۵bn<;ۂ:F4Iדh^}.iiws;wcSM-GN9dGgI#6>rN:a֖)Yu]}ǹYZ|~]c? * IZ N_M ;0s .20W~׺E텿h5[ -8ы smW*xU Y)X0=:m7S5JE-m7/#3.r@h(M@X.,ґIrIWqwfD^ |G|Em[MS[H.nĨd$ɐ^Y֦ܪsWjF(4 Q(\Rb(qF( (?youker-assistant-1.0.1/src/image/dialog-bg.png000644 001750 001750 00000027403 12312451003 021551 0ustar00saucysaucy000000 000000 PNG  IHDRIx4tEXtSoftwareAdobe ImageReadyqe<.IDATx=N@&EtPPs* ((JA Q$@q̮wEl?{oƎz>1p nr9i::`@ <__XpR;/uM, /3Q-`[qihd׍%VoP## #2_H_8Y+$he@'R 2׹Vl_N.~6:}.0FZ㨂M&xPΊ*nU#9/$M{RZ/]r]a2:K391rs5B3&Am0K|R@s n})S 2@B6.ste:'}-=W+tȺ&KL+=B̳@vb»¬a!.&Bѫs>SlB)ذC$4i]_+}-D'r[>O92 :}wH_?3ihd $ݸ$FcvIǤc;V <޺xټ$L"1ДT6S^α!k+ |POP?raz~, `dˆʭ4a53ёl?;6w?ȆɧEB ԌvF$ly3-lGj+bD#mXYB5-kʲ\ LS}?$C5%iZÂ*晴!P' 4[ucHb"*{p7v6?I-UcHBجz(\x a7k Ņ\~[!P*_GEecsqe 7upk )J,dO'ٓI${v} 4 `8N"!w?*\o@[c$NBHCiG>^'7eLcbZlsܿ>gMHpDbQ MQ މ/!@"BHXv{ g⒧'S5a+)T\>;LDI'@#Itl ,:F#ι6"}u-NԉQ(HՑ2*#AwewDޅF,.MB* &\TPTF ;MsjFfrE9DtT0Q#}A'6sɑUrbdIJ A-b,#Cmj+)ސ kʼnUb0砌AKZߠnצ)'Nv\>, K+ T+\cȿ -^Z^Epn/ՂlZt+؏˄m-Rϴ?&iab&ib&ib3m(;)ZlnZ;v ð.m-.H$[҇P$c[ERJ}B\޿ٻ{{t!]Ho. #~{q"&aMr?J j{說M}YJ**H.3nnL\(+6 \z-+ e_h. Bzs!]H҅B.7҅t!]Ho. B\H҅B. b!'pm;9j 3n(BB"G$$ ;o x "'.q)ٝhWV̟uUO7^շ_PBZ2$@}.~~BB A0%SBL =:^>{)z< :BQ V^ss%*&Zf{A,w3[ky(Șz+I] ə"qrGLDO^yBP=uM )>-xWODpğP^fSpT,m}lJ01qJ5L&oheK-XC-?vS(\*Syᮭ Ԓ EO.YC2\Xvoic0] Xnҿ=YQaCR$t X"RXs}){-+j3:鞽_%3I Ek0oƜ}Fʨ „I< uun+n*$cSp*'& iOr-jʛRőh\r5 RsڤʀaNqˑY`Dž4qFI'k>u(QSq\+ec]hDu`FKajD UHҟq& HNf[wEl̶D+٨ieDN^rRbuZ#sq&_Unf&ޫɁ?DZAggύY$|fuY'(cJ_ tSЧKyX I4 ˌ$[xUM7Oθ P| L5| 6M{BE ȉKɽDFYrA's]1D뙜nmݏu=-$ ))MiTSN\,RA\NDnPۈK:Nn7}k6!D+,6w> [Ǧkg55oK#X"9K#>tbKƴ]UXH ./?)@).GӪF1;([@A<;h>h3SYaؘj _u':uuv1vR'Z.zWm-,zgsň8L6^5i9w - GgK0h'x cOfF{-Ln .9$1vtTڸX˛#4_hZQkN9ɥ*6o lSLuv!>5xzB}^r9}گg9'6}>gLFȐØJL=Hyxy"R*2 SB0%L A0%SBL SBL SB0%cW>)?Ctږ{1}C)!`J)!`J `J衋^_~w:$ENVǮ_'xXXȚ !$J+f 3ݷ|gdVfU~jϑqﭪy"Dduۄůi#㯖?O~'?G^?˛wqז}/X $HH !  HH$ ! $xnzyAK_?ۛ%\igt4WNR}ޒ=ou=݊=mHsoOgPo*6Nlz,+6(/?7لPk pžXkv g<7byR6ۧ @3So,7z!_ޘ0οA"}G2QR6q[ccd5ƭ"7O(X2<h=z=Hv*TNrBbﵞcF$!2.Ĺ@^&EY?t{Q0|nEyPkޓ/5ѫglM3p-w㯬{/h_^`߸Eеlw͵l>R38}6G{{7wu?g1pL.i)X+彐bd":>*-(5x=5D =PcD/KD !|q.<Vto#bw.rōk6gm.  IɁZ튴#аd6r].d Jq6QSȕIשPNi2a|~ט}A3i'w,9J^"񥑆:"s_΁K ȍ ]Nb.OcAATVW<F'ftcIifO9M*ty6rc4ϡV]|SeeLzKWd^4ȧǍS/TuoQU6=-⬕u:&UL%y󌒾WF;.⦜jaT**DRKG:k+!80 5Iҏ@Ɉ.`ۗ>ݡPs\}O؉aƭfnTTΛK(whp\ݏ#j[#CqW=]"Siý>)cBC]lv [,&l[)uB}gpkt-RIqa{0<2.4-)`BW:}.h~p{Al_Sbv|YÓm"Gj@=.bI^_ a$FW_])s=̞z3DmDI`n/eb2I1Y` H"l ہp :2$GEibDA˙w,"vO$䐞m;j 9q+)BBq|v6^?6Kdg/M>=qyzZR EMG9]ʥ'>{tQK׹K2{)܇IIbmV/TBdsGnH>e[ZNܙ3v{Me0&DH3OCL܊0ׄ&d䜱jTΰſ&$jP>PS1kibu)I #v PM?*78 f%.}"Yo^a|Se(ާ KhEA|ūK}.JUs H>2E$֔krz6%l",Ir9z}tc9{N]&Y=;gEz ͱDٿVcFb^8tm/TKNؓ*l/K;yO1Qn N :LUɵ<rRsՖ}"`nHo5Y+"2$#/^QED\'$ x2Pk YrZ8S>Sn&(cijsGV=.isO@؏IEyrؒ@cJDQ QE"K--1+Pb^p@rbFw؝)K&hCm#kt5-*ֆE#,Ha|59xrkŨTL!XʥՈ-u>A_'fvsv Fc])4oBb/ZwdC F%1(G08i6GV"*d/y{m}i}V !]4xL,̓QD\I4IbWt\C"] ʗIBPA|9g ,A IҬsۓn(R6l2V$6_粒De-D+ELaN..fò(FiujV$JPMHph~-VnB'Jjč$j6HZY*sm닺@!y%m9oj6~LmZR훋C+ꍲ'}`)0r>Q,# B(RsCQLQ2iI.( տT:l qzn[GE^R>#M0[]/jk%)jaWg._o(*Uxa2U= z 콋ןL {WZDae (ARHG6Ew-ilӊdMh0NuESDAPcE aɬא:(hܦ|~FCQD)&tcHE:Oա+g5H;1뢔f/T$RTrwѥ*bwڹ,JB3I$8\9YG /0y[|pK< iFE\H:/o:z{i\;-0U4TG(R'%i$Yk+碇5aEL7Vc/66'nSёI JvQu21Y5VM{mI{aZ䊢&&,v;0-:q2Т"YGFi/ikab@o ;L-F1/lbpn0;؅Tw1a:Nu6tGhň:E< pk΄ҭCN$pR/ Jd/قN$TGDvU,ں:LR$SY}O%Ff QdVE[~uے6iFxv82ͫۃГ`LFm#޿?u%z3Sp)S!@"b񋺓l?BL# uX|l-A毥 C?Y'ɺpdjUh mFN#|k=C蟭Y$;:w_K5\R^gw? +fDLZ'̪N0$qC\xw9-ϲއy ~'CE,.!죣sxOr +D{*y|8SKxf(:T9JDi.vI?m;!=}O9fm2u 9Ws83_W`EOg?V 7ctݴhevQxjg&}]˼ xޞ0S~ w-+J}~ۀ{G6HJjݗ'wlh AdobedF]   1! AQq"2Ba$%  !1A"Q2 aqB#Rr35 ?&䫎4rkc #LQaxQ  {xaMy1TrQ0LLTraGMD'oҵi4h41L_,GeF&L_ovLPš<) b0*aƘ /-ʘ 1* >Κ|LN4ߥji@ɯib&Xʍ0MGF& ?Q㗻**N"5ƍݑ3;H,]A:P1*f!DFg J_w~n 1@Q\s>bVsEXQW^1LN"ܦyDK`0ʸj7vQiP 1?Y1@ 99g +c=LHHćQ(e70f<3#OQ$SI_h9.~98^)²i)O>u-'[PvgMbL˚"1d+ u}P~Lnb Y|s\UT_ITJ_]Tm{t6i9ᑌ/`rbIP/TE 5jXZqI'J*htnJ72q 5Bu]hl8C(8mo_G[^]vGvV1͐\'Sn#bK?J E훼%9v+ * :mN #rF؉E"ToJqӉ4! ['Tz $V/{[fuO]6`c GG:wsbo񛒣gkW!:AV 1U(2OR^M,TUxk0L?1 *}xp$a#Z?k7~ Tnq5K#e}WKH#J$qnZnܩ4l닯*Y2&z@)к Kr @;B,[.A*>ϲ57ݪޭ-r4rm$BH⹗zQMEۋ="u܋/*MR5n:Ximw&\3"&&.B!b%#{UGݯN ǿMO.s˫Sm挝/([I'pRnAI&eiCFUX5Dy\gG =W jl:a=vRw569]'騕0 n2; c҈N:/sH{#%Hkׂ0ACˇsHp-.)h{?u_JYwNKYt[{g+A(RhxPN=ػK7w;~t쳘JrdL:dԋL폌 U CS f!檿~ }kI}৅ ^Biϸ` VO;)0195Vݾmt5~uPEԆf[e;tBڬEb^&LdS䔒w>iKB `nS~w6vLH4vMo}]ra~xT0K$NAꕩ Pj}ݫvYpc~mTVHbRKCVS/q].#.ʾYMg.blOTWur{}oEcuV5؀<ʶc)ZR4zjh*0 ssC͑%ڭG8p'I& ~ 紛4W-455Hq8^ܿ:vC7[󡖖I4V7UmfrQ@H[-1VY.cct0CBG@Tq ^tLSw}Cm۟SŻӭ(..ɻgz(bۄbOz4c-}pMr'NIE u0 5L=-t@12Nj1{}VvS{+4w>N.{ڦs-wŢ~=s d H^ӣwKr'L7$$4)fR'.cxE[C@ >*U ?u]ۭ-Ħkqb ωD¥din.n?oQhPinV@ ƣU%JZpWxWµ u}#Åj']'Mys]{39[e텁CsZ5T ;;کeOID8aDZ_LE,\ L'08[:Mo׎X"ltdN9>O+j<&M^F[>1Lاd`8|<:f).\3.wܕ!*tQyjڪ*p@@yZII$KTBwb6؄6,h{}$TPJۿXHE=#S3{</Jq a$mũO egư!a W\|=Gۻ6;H #$0ihk=A1k߼d,w$V]ZqvhR9P);AA/): LDc!8.cTr^sC;p- ]Ȁ fK=J0㭭k ԭ٪=]k3\G0#LFG9rM{埚jSį[s'E+XtK&m0ZnVLqqAne>P "뽱hӒ:kMn2#pDG9F%5S^ܝ10 e!yCDEĂNPʼ_q_!#3lVW$HmռiQˀkD$C>В٤;ɂM99Cmƶ<`nS%4R|88rՖDa0rN[|=I~"]ãFAM+4f=&{ɸq;T$Kޢwʖ9*di$FNM]JK%R q|tFXUQ+E|ntE.qBYq{m;}d&.pUH:Yh[GWq1 2v<diTQa1i鸸 J5jG#2}y)53H' M;]v k]rH:In#IkSPFl5].\5J-~`ocrIJZ{;#֎3rwT*W!P($# @ ZALađ$~c=нܶnnepF~% ❏adJ+knН@Fn˭\l2c1Z8V(9JC_9s8} %1oא?Rmom+&{xlK1$:&Dzk{담r]}˒ŤnеVhh̎2848!yIr s|<⾝Hdu5g[OKYMcdȮ1kK[$Rt+ƊܦƦj3bOZdtauVRT?2$F?q |GZYPJ@\ 2kO}g{NZFm60uHls!{y>@\\366|ZMk-'#?mW:WNdi52y)P9.-]VK n^ƏDžl~xysqtyg-J潮G4=DL]]a$~!H5qvB ܖ0BPE"r#f#3K (>XdtKt; k<dfҪ_=8slǬVlōsحCR5,g|Mz5ȅE*U:u/UL?hF Lԭk|?ww!pvpk#8#j1`1h^H5{;khlTZD@!T Ș^Mru I=`=@"3l2PJ䧈N<·Ǐއ;?}chyF%\FJ͞q%Sre A)f%yʗtnlyQ e礸ui:9'~#ä5- 86HV%)UCem^"NL<o3$8xyQӪ?8?ijyyhѧO4ׂiM~XCLs5vTij? / 5+DpZƕBu5e=jA:`pX˦Y߁*@\Sòi<,4EDѣI2ZB0JsRSqs+&:{8I*r½y1TrQ0LLTraGMD'oҵi4h41L_,GeF&L_ovLPš<) b0*aƘ /-ʘ 1* >Κ|LN4ߥji@ɯib&Xʍ0MGF& ?.4xS%A9SQ˯aFTÍ0^4[0bTQˠ|5iJyouker-assistant-1.0.1/qml/func/settings/FcitxConfigtoolFont.qml000644 001750 001750 00000035065 12312451003 025377 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "../" as Func Rectangle { id:fcitxconfigtoolFont width: parent.width height: 475 property string actiontitle: qsTr("Personalized Configuration")//个性化配置 property string actiontext: qsTr("Global configuration according to personal habits, click 'Next' to continue Settings, click 'Cancel' to exit the setup wizard.")//根据个人习惯进行全局配置,点击"下一步"继续设置,点击"取消"退出设置向导。 property int scanModelIndex:1 property int scrollbar_z: 1 property int defaultCandidateWord:0 //恢复默认时用到 property int defaultFontSize:0 property int defaultFontStyle:0 property int scanModelindex: 1 property string fontFamily: "" property string methodBtn1Tmp: "" property string methodBtn2Tmp:"" property string prevpageBtn1Tmp: "" property string prevpageBtn2Tmp: "" property string nextpageBtn1Tmp: "" property string nextpageBtn2Tmp: "" property string methodBtn1Buff: "" //背景 Image { source: "../../img/skin/bg-middle.png" anchors.fill: parent } //温馨提示 Column { spacing: 10 anchors.top: parent.top anchors.topMargin: 44 anchors.left: parent.left anchors.leftMargin: 80 Text { text: fcitxconfigtoolFont.actiontitle font.bold: true font.pixelSize: 14 color: "#383838" } Text { width: fcitxconfigtoolFont.width - 80 - 20 text: fcitxconfigtoolFont.actiontext wrapMode: Text.WordWrap font.pixelSize: 12 color: "#7a7a7a" } } function refreshFcitxFont(){ //get_vertical_list=================================================== var getVerticalList = fcitxcfgwizard.get_vertical_list(); verticalstyle.checked = getVerticalList //get candidate_word_numbe============================================ var getFontcandidateWord =fcitxcfgwizard.get_candidate_word_number(); candidateWordNumber.value = getFontcandidateWord; //get_trigger_key======================================================== var getMethodBtn1 = fcitxcfgwizard.get_trigger_key_first(); methodBtn1.text = getMethodBtn1; var getMethodBtn2 = fcitxcfgwizard.get_trigger_key_second(); methodBtn2.text = getMethodBtn2 //get_prev_page_key====================================================== var getPrevPageBtn1 = fcitxcfgwizard.get_prev_page_key_first(); prevPageBtn1.text = getPrevPageBtn1; var getPrevPageBtn2 = fcitxcfgwizard.get_prev_page_key_second(); prevPageBtn2.text = getPrevPageBtn2 //get_next_page_key======================================================= var getNextpageBtn1 = fcitxcfgwizard.get_next_page_key_first(); nextPageBtn1.text = getNextpageBtn1; var getNextpageBtn2 = fcitxcfgwizard.get_next_page_key_second(); nextPageBtn2.text = getNextpageBtn2; } Connections { target: fcitxcfgwizard onRefreshFcitxSig: { refreshFcitxFont(); } } Component.onCompleted: { refreshFcitxFont(); } Row{ anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 120 } Text{ id: showtitle text: qsTr("Display settings")//显示设置 font.bold: true font.pixelSize: 12 color: "#383838" } //横线 Common.Separator { anchors.verticalCenter: parent.verticalCenter width: fcitxconfigtoolFont.width - showtitle.width - 40 * 2 } } //显示设置 Column{ spacing: 10 smooth: true anchors{ top:parent.top topMargin: 160 left:parent.left leftMargin: 65 } Row{ spacing: 30 Text { id:listh // font.bold: true font.pixelSize: 12 color: "#7a7a7a" text: qsTr("Candidate list: ")//候选词列表: } Common.ButtonRow { exclusive: true//控制是否联动 spacing: 120 anchors.centerIn: listh.Center Common.CheckBox { id: levelstyle checked: (fcitxcfgwizard.get_vertical_list() == false) ? true : false titleName: qsTr("Horizontal display")//横向显示 flag: "radio" onClicked: {} } Common.CheckBox { id: verticalstyle checked: (fcitxcfgwizard.get_vertical_list() == ture) ? true : false titleName: qsTr("Vertical display")//竖向显示 flag: "radio" onClicked: {} } } } //候选词 Row{ spacing: 30 Text { id: numberText font.pixelSize: 12 color: "#7a7a7a" text: qsTr("Candidate Word Number: ")//候选词个数: anchors.verticalCenter: parent.verticalCenter } Row{ spacing: 10 Common.Slider { id: candidateWordNumber anchors.verticalCenter: parent.verticalCenter minimumValue: 1 maximumValue: 10 width: 140 stepSize: 1 animated: true } Text { id: displaynum text: candidateWordNumber.value font.pixelSize: 12 color: "#7a7a7a" anchors.verticalCenter: parent.verticalCenter } } } } //快捷键设置 Row{ anchors{ left: parent.left leftMargin: 40 top: parent.top topMargin: 250 } Text{ id: keyboardtitle text: qsTr("Hotkey")//快捷键 font.bold: true font.pixelSize: 12 color: "#383838" anchors.verticalCenter: parent.verticalCenter } Rectangle{ width: fcitxconfigtoolFont.width - keyboardtitle.width - 40 * 2 height:1 color:"#b9c5cc" anchors.verticalCenter: parent.verticalCenter } } Text{ id:inputMethod anchors{ top:parent.top topMargin: 280 left:parent.left leftMargin: 65 } font.pixelSize: 12 color: "#7a7a7a" text:qsTr("Trigger Input Method: ")//切换激活/非激活输入法: anchors.verticalCenter: parent.verticalCenter } Row{ spacing: 5 anchors{ top:parent.top topMargin: 277 left:parent.left leftMargin: 200 } Common.Button{ id:methodBtn1 hoverimage: "fcitxKey.png"//../../img/icons/ fontcolor:"#929292" fontsize: 13 width:200 height:30 onClicked: { methodBtn1.forceActiveFocus(); methodBtn1.text = qsTr("Please press the combination keys");//请按下要设置的组合键 } onEntered:{ methodBtn1Tmp = methodBtn1.text } onExited: { methodBtn1.text = methodBtn1Tmp } Keys.onPressed: { methodBtn1.text = fcitxcfgwizard.get_fcitx_hot_key_string(event.key, event.modifiers); methodBtn1Tmp = methodBtn1.text; } } Common.Button{ id:methodBtn2 hoverimage: "fcitxKey.png"//../../img/icons/ fontcolor:"#929292" fontsize: 13 width:200 height:30 onClicked: { methodBtn2.forceActiveFocus(); methodBtn2.text = qsTr("Please press the combination keys");//请按下要设置的组合键 } onEntered:{ methodBtn2Tmp = methodBtn2.text } onExited: { methodBtn2.text = methodBtn2Tmp } Keys.onPressed: { methodBtn2.text = fcitxcfgwizard.get_fcitx_hot_key_string(event.key, event.modifiers); methodBtn2Tmp = methodBtn2.text } } } //Prev Page Text { id: prevPage anchors{ top:parent.top topMargin: 325 left:parent.left leftMargin: 65 } font.pixelSize: 12 color: "#7a7a7a" text: qsTr("Prev Page: ")//上一页: anchors.verticalCenter: parent.verticalCenter } Row{ spacing: 5 anchors{ top:parent.top topMargin: 322 left:parent.left leftMargin: 200 } Common.Button{ id:prevPageBtn1 width:200 height:30 hoverimage: "fcitxKey.png"//../../img/icons/ fontcolor:"#929292" fontsize: 13 onClicked: { prevPageBtn1.forceActiveFocus(); prevPageBtn1.text = qsTr("Please press the combination keys");//请按下要设置的组合键 } onEntered:{ prevpageBtn1Tmp = prevPageBtn1.text } onExited: { prevPageBtn1.text = prevpageBtn1Tmp } Keys.onPressed: { prevPageBtn1.text = fcitxcfgwizard.get_fcitx_hot_key_string(event.key, event.modifiers); prevpageBtn1Tmp = prevPageBtn1.text; } } Common.Button{ id:prevPageBtn2 width:200 height:30 hoverimage: "fcitxKey.png"//../../img/icons/ fontcolor:"#929292" fontsize: 13 onClicked: { prevPageBtn2.forceActiveFocus(); prevPageBtn2.text = qsTr("Please press the combination keys");//请按下要设置的组合键 } onEntered:{ prevpageBtn2Tmp = prevPageBtn2.text; } onExited: { prevPageBtn2.text = prevpageBtn2Tmp; } Keys.onPressed: { prevPageBtn2.text = fcitxcfgwizard.get_fcitx_hot_key_string(event.key, event.modifiers); prevpageBtn2Tmp = prevPageBtn2.text; } } } //Next Page Text { id: nextPage anchors{ top:parent.top topMargin: 370 left:parent.left leftMargin: 65 } font.pixelSize: 12 color: "#7a7a7a" text: qsTr("Next Page: ")//下一页: anchors.verticalCenter: parent.verticalCenter } Row{ spacing: 5 anchors{ top:parent.top topMargin: 367 left:parent.left leftMargin: 200 } Common.Button{ id:nextPageBtn1 width:200 height:30 hoverimage: "fcitxKey.png"//../../img/icons/ fontcolor:"#929292" fontsize: 13 onClicked: { nextPageBtn1.forceActiveFocus(); nextPageBtn1.text = qsTr("Please press the combination keys");//请按下要设置的组合键 } onEntered:{ nextpageBtn1Tmp = nextPageBtn1.text; } onExited: { nextPageBtn1.text = nextpageBtn1Tmp; } Keys.onPressed: { nextPageBtn1.text = fcitxcfgwizard.get_fcitx_hot_key_string(event.key, event.modifiers); nextpageBtn1Tmp = nextPageBtn1.text; } } Common.Button{ id:nextPageBtn2 width:200 height:30 hoverimage: "fcitxKey.png"//../../img/icons/ fontcolor:"#929292" fontsize: 13 onClicked: { nextPageBtn2.forceActiveFocus(); nextPageBtn2.text = qsTr("Please press the combination keys");//请按下要设置的组合键 } onEntered:{ nextpageBtn2Tmp = nextPageBtn2.text; } onExited: { nextPageBtn2.text = nextpageBtn2Tmp; } Keys.onPressed: { nextPageBtn2.text = fcitxcfgwizard.get_fcitx_hot_key_string(event.key, event.modifiers); nextpageBtn2Tmp = nextPageBtn2.text; } } } //顶层工具栏 Bars.TopBar { id: topBar width: 28 height: 26 anchors.top: parent.top anchors.topMargin: 40 anchors.left: parent.left anchors.leftMargin: 40 opacity: 0.9 onButtonClicked: { var num = sessiondispatcher.get_page_num(); if (num == 0) { pageStack.push(homepage); } else if (num == 3) { pageStack.push(systemset); } else if (num == 4) { pageStack.push(functioncollection); } } } //底层工具栏 Bars.FcitxBar { id: toolBar height: 50; anchors.bottom: parent.bottom; width: parent.width; opacity: 0.9 onCancelBtnClicked: { fcitxcfgwizard.send_fcitx_ok_warn(mainwindow.x, mainwindow.y); } onGobackBtnClicked: { pageStack.push(fcitxConfigtoolpage);//静态添加页面 } onContinueBtnClicked: { pageStack.push(fcitxConfigtoolKeypage);//静态添加页面 fcitxcfgwizard.set_candidate_word_number(candidateWordNumber.value,false); fcitxcfgwizard.set_vertical_list(verticalstyle.checked,false); fcitxcfgwizard.set_trigger_key_first(methodBtn1.text,false); fcitxcfgwizard.set_trigger_key_second(methodBtn2.text,false); fcitxcfgwizard.set_prev_page_key_first(prevPageBtn1.text,false); fcitxcfgwizard.set_prev_page_key_second(prevPageBtn2.text,false); fcitxcfgwizard.set_next_page_key_first(nextPageBtn1.text,false); fcitxcfgwizard.set_next_page_key_second(nextPageBtn2.text,false); } } } youker-assistant-1.0.1/qml/img/toolWidget/deb-min.png000644 001750 001750 00000003511 12312451003 023046 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxlWKUs/w!d;&,cMDM; >? ( `@D\뫪sh}W_}UoϿ211iYy9H"y:DQ5M[UU:gsnݺ͛fCΩ#?~-c8:d0 ]cl؁eu37U@+==~!#QB  ^˿X!MM#H4p'hÆ?.g6ݾsvZn֮}8$,ǂru]fbe\YY9vj޳:S >FQ~kKAC8F( X7:*s!$] 7\6vc/7&B41CDNPca-2A-Q4\D,. Ĩ}Tp֐F:gN~5qޜ/bSB(jeu*`iGR"RU7 "H^ a3ao() u0TpC$@F^(a)RB*Wj61mJ GI`RAAC !dш"/R,^P.D:@$(okrFEEbd#xtuH7uLH85INe)ޔTL (z=^;~> hbANU:Ԋ`ڰΓ(MNQt ZoK6Ĉ[OL!P_ #h{>@ T/k ;66fh:`_vIwoߡbG:5VʇkQ?+JelUzU> Ӂ臫?Zm"ws+)ϝIڜjU <^!"Vÿ>h||Ec3Xcla&>7!턚Z[si+ ' 59?pxp/OS-+DkEii>QKע7zϋ+XKAIENDB`youker-assistant-1.0.1/qml/func/common/ButtonColumn.qml000644 001750 001750 00000002255 12312451003 023523 0ustar00saucysaucy000000 000000 import Qt 4.7 import "ButtonGroup.js" as Behavior /* Class: ButtonColumn A ButtonColumn allows you to group Buttons in a column. It provides a selection-behavior as well. Note: This component don't support the enabled property. If you need to disable it you should disable all the buttons inside it. ButtonColumn { Button { text: "Top" } Button { text: "Bottom" } } */ Column { id: root /* * Property: exclusive * [bool=true] Specifies the grouping behavior. If enabled, the checked property on buttons contained * in the group will be exclusive. * * Note that a button in an exclusive group will allways be checkable */ property bool exclusive: true /* * Property: styleHint * [string] Used to indicate special OS specific button types */ property string styleHint /* * Property: checkedButton * [string] Contains the last checked Button. */ property Item checkedButton; Component.onCompleted: { Behavior.create(root, {direction: Qt.Vertical}); } Component.onDestruction: { Behavior.destroy(); } } youker-assistant-1.0.1/src/qcursorarea.h000644 001750 001750 00000003556 12312451003 020637 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributed. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ #ifndef CURSORAREA_H #define CURSORAREA_H #include class QCursorArea : public QDeclarativeItem { Q_OBJECT Q_ENUMS(Cursor) Q_PROPERTY(Cursor cursor READ cursor WRITE setCursor NOTIFY cursorChanged) public: enum Cursor { DefaultCursor, ArrowCursor, SizeHorCursor, SizeVerCursor, SizeAllCursor, SplitHCursor, SplitVCursor, WaitCursor, PointingHandCursor }; explicit QCursorArea(QDeclarativeItem *parent = 0); void setCursor(Cursor cursor); Cursor cursor() const { return m_cursor; } signals: void cursorChanged(); private: Cursor m_cursor; }; #endif // CURSORAREA_H youker-assistant-1.0.1/qml/img/icons/systemsound.png000644 001750 001750 00000004351 12312451003 023125 0ustar00saucysaucy000000 000000 PNG  IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATxڼWkg~曙ss^ew" k1 b54jG%5Fcl獨& c!Dh+bZk@ \ewٳ˹_~35Iy1<<5~b`RZ }T|8̾GFnb D\EHp19,WŹ)3G/ρJ'P(lLe=0)k: 9MbUmz41Qu}).r_8R Js>}'pj&$ #жXCxRV!;\,ex+{j^?B{&7pHM)*bZzKQMKI(~wD!lٲBaX+nab $Vl<&/60H3J|DJVjjK0$oûD?ibZFx@}ÄJ29\7_CnI ł̖N XFċjjڼRxsغu+JF`zs9ۦ.O NU/ޜGWbSWw*XF7VA.N;׭iKr=EZ՚GW#Uk[|L/bCxy~E-g4civpD^_vz}ɘզw S8g7ӑޑ`&{viHBaU 'b: F]-o$8E/qts.34js-Z+qq=%?"Tn9m)]ME|p ǒl`ڌ|pW1 ӊ7*o@Aс5M9G] ޤXҘb0̙18V$f Z-=wLf} q38QtalI5\Q7.U؞U(&r ,b %%uh"ej7ĊxGu6ׄ+3Ij"B EJ5[œ\`DZ݌$k7߇d[?u| D -8ͳPJu l\ /c``-HUg1@u(2x~'ڬ./iBMS`ym _zB~ Nh E0"p羆ǛLtW!Ցs66 fYhw&(ИA("c`U-U|w?j^YTx|Ә8vCCC2*Ŋc[ٱ++XL}gyPeSdyPFb;kbֱYcaoۣk8{4 D,tg3>Xw|O{4,eѐwW_L }k}}}qM@ޡ><ƥRx 6:dQ' Z$S҂IS" j0݉|>肅r/+%l?pSM F<xD}t->8/Zic_@ihΔsrZ c'Ɔ&x/Tg1H6c@;kISw,@Mu0ъ]zq,ׅӐ J{TE>6:7>{$!>pvu{i8XՏG/9ez:|ʓ@j3O2J6 kwe7ߊYjnx /;,C?,N˹\1bB荳!'myt_'ۭ16G\&Gn+.)^bB.PO~'#aqYIENDB`youker-assistant-1.0.1/qml/img/logo/component/memory.png000644 001750 001750 00000000527 12312451003 023670 0ustar00saucysaucy000000 000000 PNG  IHDRatEXtSoftwareAdobe ImageReadyqe<IDATxb?%B@,/FW0'K'0g#.o\H@zA .\Be 0K8?q@= V x!߇3(he72c(b`ASC' b'p{w642H?Pe8#.OAk=z<0xn09hIENDB`youker-assistant-1.0.1/qml/img/weather/n4.gif000644 001750 001750 00000005512 12312451003 021356 0ustar00saucysaucy000000 000000 GIF89a008Z8Z긾̾ف3R.Ka9Z&Cf/Ms1Qw3Sy7Y5U|5U{4Rx6V|4Rv9Y9Y8W}7U{:Z7Uy:X~պ/O1Q1Q2R4T3S6X0M/M1O5U3Q6V2O3Q7W8X4R9Y5R:Z6T;[7U=]"Be!>^ ;Z)Kq#@a&Eg)Im)Gi.Ou%?]1Sx-Kn2Ty5X~3Uz/Mp-Jk4V{5W|6X}1Or7Y~3Qt9[9Wy;Y|=[}?]4Mh?VoVlOczbuĽμ͹/M0N1O2P/J9Z4R0K5S>a6T2M=]7U3N;Y9V#Df ?^&Gi!>[(Ik$Ba*Ln+Mp&Dc,Np(Gf-Or-Nq*Ij1Uy/Qt.Or4Z/Ps1Sw0Qt-Mm#Zҿ{w7qtfp ĩg~Y}1bJQ ݀Pg˶!,00=ɡC*\ȰÅAOp J3' CIHD 0@ES\"lA .P5.la'5vYD3O @ l@śq b6PbLED!D7ts@ؓP.*H7tх%څx*B,LcHE>D.9>BBx"tI5&_ $ yCPv;;׾;B`.h`/N e_t:!C,|0O/: "`A BhR&erF&`E QH^̻@2h D)@0\( , QnDȟ:; ,A@N ,PR|v-9WTx 000(b !B 1bhG9 thtfdk'PaY`9Z%Cg'Ce)Fi-Ms1Pv6W5U|6V}5U{7W~4Rw:Z9Y9Y9W}:X~8UyWq0P1Q2R/M3S0N0M4T1O5U2P6V2O3Q7W8X4R9Y5S>a:Z;["@b!=]%Ce ;X$Bb*Kq+Mr'Eg*Jm.Ou*Hj2Sy-Km/Mp+Gf4V{7Z6X~5W|6X}7Y~2Ps8Z1Op]:W=\"Bd$Ee&Gi7Q(Ii&Ed+Lo,Mp/Sw-Or-Nq-Op.Or2Uz0Ru0Qt/Qr-Mm,Kj2Tw5Y}3Ux2Sv7[4Vy8\6X{7Y|8Z}9[~9Z{4Ld0M1M2N3O6R]?^=Z!@^#B`)Kk-Rt 8N5[5Yz7[}4Vv9\}-F^7Vr>Ys3O0J9U#Ec.Uv1Xy0Tr,Mi(CY)Pm#=P8Sh~,Jc2o<͛7"*C3%ʠ 8$ ~֠4O8cI%Ƭ,bF.tCM4x Aolhoz&Clɵqb„ t;t%h`p/q&3jp ># &0&M7;M8%IhIaəl22r.S676\̘ApIpAEx Nn<͉&SN:p4x @'M;݆NgD a/u/m4Y Í6ptHt L\~9d_Gpr+F׬Í>c+9+qL.<L2D6lLH;! 0Ê݇q6T:[t/Ov@ 9< 6C$D`9<`2Q;P:2/O ڡOH@" !$vl0帡˺s`"$G("ሽ`F/8_08=*v\.b>!)XECX2Q sD =DQxQ  'MF=y{P>'H`ғ }/(| $ؑt"h01xģ@E*U$ A@! ^sje"$81x/^?@T@?$8D@b y8- p`0Clnw &cy Nȝ!qLAhF0\]n`ͭz \B 4/gy޽1`,֧.EgG {sA C ogy((nt}^` OsT|1@}@;youker-assistant-1.0.1/qml/img/skin/000755 001750 001750 00000000000 12312451003 017650 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/backends/youker-assistant-daemon/data/beautify/000755 001750 001750 00000000000 12312451003 026420 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/GREAT WALL.jpg000644 001750 001750 00000013645 12312451003 024375 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1! AQq"2B#3$4a&!1AQaq"B$R2#4D3d% ?(z@PZ2۲&jN˶Q\uFn' 8v]) 6O_9FwFUoO~M[Trۨy׶ <hPTiQMWE-\EP&Eu^U=T [K~j-8%( Rr =~^:Ʃw*}8ʯB;De{SNJJ=Ӊ>cYV[EZLMI4)Z8 ܲbʞN5 < ^'lӼc-%FJI5؝ыzrR~ef^;:ؚM0%bN泵*iZ=w,jvBfU'Rv1+a=4{+wz(._O$p++>~u= ;R1|:p衶@M/W-Yhr׶C?[sRU(@k&SuEeڼ㼒JsaÖvM@S0! ޼޶rD+ZF*qTJ tH̹mRcW,@j2=dͭ@ĚWDp2Ǧ,>B[$Q`SutE On7^73``28X}*IJD+E.F L!v^p,ΓAzSod:$& YqM-B?!G: +3/YʊTe`"R@ GE3̓)>wQf.>i?TVꍖlҭTTr[*]2jr;O4nFkv8pY,"zRzxp.bPPME 5jjWّp:>mm`~ 8ԛ.͓@aQ;sq{0IRf޹ qgn'j`=aظeBl!nrFpW-,U…#P8aJz#WK5 [Z/q8Qc?8+{r^N]Qm^LjWA̪(-AM?~qG~ o}.ka7x*{i+L>cf)Tݷ9dk(]I{nA˛TR뭋HƤ4%Lª#P^*@rzmG4GPԔ$#/g<`X/I+ڽqNJY'2dIҁt(oS%s .-XRvػL*JҷaMuN3a@:ث[BRu7T-mW$`!TsgN- tvmjWbgnd.gk-92^Lhlh|bLWܚ[ͳ?ES-[dW[fX% l;#p[W2}{rQ-md࠴̂}483)~GI+ hYm^g|ܒ2&~!&*4ʉ xז[ ^\td-#I%5noH*>Cw@!ct6g-EjO}bӭy%2tWIhŭ.U4lrc1+*mc ˺Te3뱉&6pKЕzQU-t'DeGއelӞE*@B.r>\nVRna)b2npTLE$̷v&Hzmu)W .7/M iiMYr'2RBJQ7VzXTzHvF,ۀȚkW2'˅pYџ:jr' FI ;e3LefkU`]ڔbӕB7%s#,%MɭeJt31d{h+#ˆ4p+H.wq3|]sWaXcM&B+_L&5LR_͗]ttŕ]Y, )=D᎝=Щ{>η-({s,Ҁw.x=*E5Z>\ǙS$uj(ywARBD0UQһi<ݼcZ9ȵ*1L1:_[uOXLӶf1%R嶀|'ۗÖ6\|jaͧftenvMS^8T|h˘b|0BՇg)T+BB 6bq׽#$+2/J*СVOZ5*ƅC z"p 4"\èr,eRl&A^yg&!H{M=W7z^58uv遫 r_E"qN$6i퉳p{㟋U=ߙ*0Sڸʟ/&SDﴧt+PՒ cylx'`uh\J"qs<%MSBꋕ`\:ϪNw[8E{USZ"֍\ʙW /P2j)@1*H",PO/cJFToY-6[M2Ԥ#vQ-M9Lqafxܸ$vGzݙ"țI^ePUoG ^X{kpf\YpL[\M*LePU'.akՁ݆ taL!A9CA˯haFPX`0(ۣrޮCmU^Y#߮ H%gGU#Tޕ *75&-6p)lWnZVrTgT_1{pbgSE©K:&g df܇(S3IOJnyj6Qd[X\k TZSPkz~a$3|r2jצ *)93ϵ7NmGsoY)Y35T+rmw e˹JkݶfNDD xAp(G^a4 9Gǿ|s/y̺U?o^e}[=~zY Bi1ȧ'M|ϕ幤ڻWozPbW0rkc f$A 0A OVv.х0tKo .C a\ ] (᠟DZM1ގ_v0M{1& 0MGم 0Mzz u)2_;~(h9u (k X2 PraG &?youker-assistant-1.0.1/qml/img/weather/d5.gif000644 001750 001750 00000005323 12312451003 021345 0ustar00saucysaucy000000 000000 GIF89a008uҨÿմ鍗М@xch˂z6q8t:v9ty?z>z2bA~A|5eB}CDEC|E~HGJJ9f„| |~($XXt@?c]'PAL~{ @)@ r YO>!A2R@@㐅H :%fA =!XTN#dBa"f *h "c\qṉH ’0PL``02m h<@}(Nb2Є@L7ܙr3nrHr!<(Hl:F2)9 '@+2},#Gqj K6><*mB& ې$kǛʢ<_{͎Spi AOOd$#5x.g-dPR:%S2G2uO)PO>dn;;H9k`%ҦPA jB%@_:` N0o G 禬2*~};p'/+a6P9@S|{ L '$h4A~,( L4B(4PuPt%@ !ũ;2G4 @ -<&> LhcH; ,WȄ20{#vЈ*RqT'FAQtuD(/Nbt" |P]d#(F!<ⱎ(H!IIb! jP2ұHlb&:YV0)`YnΈ)8a kXD1!y #(* I◱|4KT⚨f)BX`5!kG3TzRX*JU`P9чRB,q 4#8F6k!0@"Lk䳟( А.|e!hN.1F8!h0&l,]F/\g ř,^ѐ~1 &b!cHA}v'Ev!^pэ7'<w^CZ Oo7o8Ў moH~8 bQMr 0;youker-assistant-1.0.1/qml/func/common/RangeModel.qml000644 001750 001750 00000005020 12312451003 023100 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reservePriv.ate. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the Qt Components project on Qt Labs. ** ** No Commercial Usage ** This file contains pre-release code and may not be distributePriv.ate. ** You may use this file in accordance with the terms and conditions contained ** in the Technology Preview License Agreement accompanying this package. ** ** GNU Lesser General Public License Usage ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you have questions regarding the use of this file, please contact ** Nokia at qt-info@nokia.com. ** ****************************************************************************/ import QtQuick 1.1 import "RangeModel.js" as Priv QtObject { id: model property real value: Priv.ate.publicValue(Priv.ate.value) property real minimumValue: Priv.ate.minimumValue property real maximumValue: Priv.ate.maximumValue property real stepSize: Priv.ate.stepSize property real position: Priv.ate.publicPosition(Priv.ate.position) property real positionAtMinimum: Priv.ate.posAtMin property real positionAtMaximum: Priv.ate.posAtMax property bool inverted: Priv.ate.inverted function valueForPosition(p) { return Priv.ate.valueForPosition(p); } function positionForValue(v) { return Priv.ate.positionForValue(v); } onValueChanged: Priv.ate.setValue(value) onMinimumValueChanged: Priv.ate.setRange(minimumValue, Math.max(minimumValue, Priv.ate.max)) onMaximumValueChanged: Priv.ate.setRange(Math.min(Priv.ate.min, maximumValue), maximumValue) onStepSizeChanged: Priv.ate.setStepSize(stepSize) onPositionChanged: Priv.ate.setPosition(position) onPositionAtMinimumChanged: Priv.ate.setPositionRange(positionAtMinimum, Math.max(positionAtMinimum, positionAtMaximum)) onPositionAtMaximumChanged: Priv.ate.setPositionRange(Math.min(positionAtMinimum, positionAtMaximum), positionAtMaximum) onInvertedChanged: Priv.ate.setInverted(inverted) } youker-assistant-1.0.1/qml/img/weather/d18.gif000644 001750 001750 00000003633 12312451003 021433 0ustar00saucysaucy000000 000000 GIF89a00TW3o5q4p6q8t8s;w:uy=u{=z=x?}=y?|?z?{CA}@zDB}FDCC|EGGE~HGJJHKILKINLKPNMPNSPRRSSOZY[\^b_a`eaeehekjgmlkionkpmoqpusryuwv}yw{zy}|{݀}߀~䁴ヶ典焴⃳ዺ暸2s3t5vIKQRPTSU]``djlqqn|}~ށဳサ!,00 pS%K[l9Ç#:T}ܴ J-Iɓ%ҍ1`( 1]rɳϞ^n㥨7/_RӧP>"F7/bVgKٳd,M3eҸL[˷^m,0CƌPH3! ǐ#KL99\*!G l*ySӨS^Zu:Щ#N ]9w(דg@·K<}]@2;zA {GH"8r8R R0bȇ ($舅DB" $ r "@b88v$@BI#,r%"4PF)%|"8,E-F袋bg ꬷ>3;Ox<> !<00>>GQL1 C 2I$` 1$2J,'=pJ28s0)Ӿ4L2O4c. H0K@fȣKF<H Z`2h0c̈5A(D L W- )@Aaq@=x1h LІ &JMH*RhbQ'ZհH2h4c6z4aUG6q0^x̣G>G6*#=9E:򑐌$!9lLA ;youker-assistant-1.0.1/qml/img/logo/Manufacturer/SYMBOL.jpg000644 001750 001750 00000011003 12312451003 024002 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     1 !AQq"2B #$4D3cdt%5֗ 1!AQaBqDE$t%u"2b45 ?>\Ff/ 7LQ57&/V};RS3OvHBjoN&mG`R:"~^߆lQmkrQE1F"ri7foOpjJw&iA\CR^ MmjGZOz-mnX =&(߳DNM1FܚbZIS^IN Jy9JB$?yT4JPdIC'ʺү+dan` xLQaz 6( %͗)Fқq]LrWƎ&)D囵8 &՘r`6ЀL~8H D͗0c&A'؏i)KRD:'-}<)+Yz܈*kT Ïws>;[3ЫGrȹ1[5.Y+2XKCEIK,ye~E =)ClQJ!1Ci7Vv~Mk+ &UG d%ƦαqYm[ .x|th"%غo4vQ)lWTmfdT ]m6QlO5N` 3=E1Jb@OV䃗 Z7 d^mӂb\a:+T? })1i&PvM$Qp 8 WWt@ XB-hx2ԳIwKhB{|#qAKUxEl[E&-DÔ ~fiG `m~Z#6C&+~JH&]V|?EVDh&PTk$[Ѵ9l KJצXQL7?jQiM1]Iƾ>ִII!-ztȌcy)(=iw<0*t@R 7E4}oWJQ G9)z:Js7?%_թq:5tqWrr.cv|O㲊qKc2_0)7/΂7EIU| 6o?5ʆ65yH4HfD$"trlCHdotpse R*j@C: :~oԎsg┿Ү,ǩ ӧ [9#|fׄ GP\&(LllGDE9^@kT:ks|TjDA~tgⴿ'Ί.)aS}w9%a*@"M_X*TѮWӾ^_.${Za1F6ZQϕ tIP[J<XkI22%eP]N;XW3ȵ\Bh_?XJ'JNJ9YaMqSVߺJʵRVY4FN\ȬLl(S1.eQ\gZ"KzA)5<7 p e;׳tu~ԚM}<3&'wSC>+g*>ud,1\侩ᮭ띱j_8T7QK՜T6zEznթI&e TQWn 3@ÇTxpizχ1 7tNq͕p6>H4ˎ.Qe4R/i>6 "u *R&{j s804ŧ!Vx jSO +Mc%vXcW*&rRڏw"7"@[s[/QR 5v'֛Zzv.XLл; RtҜHeJBVzd$眆U]Vj_N<#;ŭX0q0 gXæVK:s^m 8y^[@&FDj}R|m;T5L2_̬M] gֽN suIiVRӣUKy -T"""}!--}4BfY\6gtl<ȈI C›r1$t` @;Y'U9(tLJ ٘w M*W $rӡCוXt[Q{ATcsHr4E2>t]g4ZtOR"VBRKXYشUkѝL3Ytw:"ùxe%'IRVsNIx!+@k8j ܵ,LGa`m5EmGPUhɦ(}LQI>bѩ)ܙoArzw Hrz`57 #Ӱ{ݩj?/oE(`(oj ~94Sri7i'LSyz5%;4 h.TNT/Lr`6Ѐzv`{#R'hVѶ,AT^o٢'&qjnM1F^$)w/Frfʑߴ5!ʅޜ.LNvuD ؿyouker-assistant-1.0.1/qml/img/logo/Manufacturer/AOC.jpg000644 001750 001750 00000007567 12312451003 023423 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1טAQ"2IaqB#$DT%34tHYRrCSd5՗Xh!1Aaq"BQ23C ?|s&fhbM%F$Z3F$D/1.vv, ڃywYZgR!މDAX=ʌ^{܋DpN{i_'Xy?0@k:Dz76Ӏqv^W#箞Kӿ퓧KT^(Ib?:{#x;0Εm{ZB3yyG<@B %m<.M k#iaнg]HG@]7]V ejhvz3B'|KlQk͒eE*k`p*3LIi=@B,GBFD'ڴ4n}o6gP߶mn4q5ĵ)LXHV(Ԙxۅ;LJ6hI;Im4=mrk𘲓g)dD7”+D\qcWmu77HK4Il_Qwg\*`ڨ-‰MIr[[IIT(TIwj"2[3U]4*:0nkQ˺űp5{aX6s+H+tN_JJuY|Q*j0X3Gƻ4KO%ft\oh<ԗr弈ތH\ h.&_;T% tYr 42ҖiQ%Է6y? 9ld:}ͩ'V[ ɮLӿ xRQ JĪtxf?{m/xu$L8FzkX|Z%2T;DzOWT+Т{a*y {\NJOL 3c|sce4S>J8 v=.e1j{tif/Sv<=[*%#؟4YJ̇VYmOm2c3̼yzn9ϢkK*v%Z'PҞWYȜ}Μ'6y`}wq[vGCth)o8I* t>Ls@~ݷrsOreܿ٠W&z.KpEb%ѨkJ[VJ-!^7'U94VY5@o]"tձCVY#")i *II iZc8cs:ZZd[y<ѐJްMj„^hCk!tUT8B\{J9B5Ւi7g]=Ǖl-#Lٖ#E΂pO'Igiͽ tօoFMMgeu#0&1y„]ZYe8NŪI\iHI%oi";vKC\VINHXdsr2bNWgZg:cr @)7ףĸS/FY#*%'MoZj,j8ѲfKEaJ|ְa:mTWQԢ8$9xLJ8J!!θݿM/MuZL;aYٗ ʗM9m6RNVPp+4Rg2ULM c6^/Vrw` 5Ow{lj~FKv$: @ J?7rJ?7@ v?ۓwM>>gy 6N 7{6<b8~N8D|{]Ɯߧ?VaӅj;-19:trZ V@\[Sr/n@irulN͂L} Ni:D2߰@iթ;HnU:? ҝӬ, um1 |N ;D8CBwNз$ޏ@y74Co,1&ѝ 1&gr!~щwóef_;F˿`#:9 <^A=CS_youker-assistant-1.0.1/qml/img/logo/Manufacturer/KINGTIGER.jpg000644 001750 001750 00000007371 12312451003 024335 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1! QqA2B$4%8X3v(aSDVHTd5&6 1AQ!aBq$"24Dt ?> < 41C4c_˙]Ɩ: ;_SEniR)Ta5uxnwCWyA<~*Wsn00_he9/\̇r4f)r(<7sJJiî`sһ 1R qC) A~. 4d?(7q0NÑA[TUsMGlsPO7_p"u<Ѧ{wL&O(3@PcndMXs4,vnLޛc}dTHmrƦm4ކUt~]_8Th\>iMr|'hv D?= \ Y~K?P!= /ugpL;q'uzKJ;}lSxև}KhbqXXoɡNJٚYymóK}}4p>S1v7e/c5ذ(8_OY}k8Y A8KW)%N \RpbC ``LL.[^'C65\Nk*T6ĮVYd^`hb/-۟:mϠec3y#,t)(@eF WGbӥXޠ7?}0vn(vk8*ӴL+k9SjHbKbsFE*c<„Cim'#YԺ1*F+eIRL )g$99*U4dӈUjԞ8UztQ7sz:q}4(rގr>Lw k_ Z^GU4T鴽\ef8*)SNLeQK0Ժ/>KMTFإ҇:%bL.,l#b3S?ͫǶퟵ2UHd֍IkX,$~$YLx,@ 2+i0*Ԇm8.Acd cpgHm%ÍL]^d;r]YL2> %?C2C X4ŕX$,6`#ؘyR0ꇇ¬)N3ž{Z}dV4ԫ!G%RG ك=`iS++ZH5]T8p+m^+ 4R3XO98r(& 103oxu޳)Է7+ԓ 6IYJEIOV~q 5 Xs 5Zp,Ye"%꿧rˬdTd.l @ӶME"gqT( 1[,MZ }4ɎoM.pCt&!@;GM_Sa$<o^KҒxw*ߦy-S((wp AdobedF]      1 !AQaq"B#$2SD%& RbC5E!1AQaq"2B$%#3C4D&bcTd5E ?y8kd˓ՠ3qj ~8'՚uZ kK5h.^>Յ!8 72`k΃&3> xOja{-' b'@,#xgEs]I҅-($;髕- ˜UJP:$F)} j΍K_^- rmKIOғgN\1Ad}m$a{l5yfYIcrAY2"%ZfҪ$zL%)E2P(bp~A/@V4K`0/<,Oj$ FX?ypN3?iP6>[ *b&{QKͤF|-87LC‹50VDSkNg֡]A51eEIKs1)n^P]2Z3Jf:8$"Qv3uwzZu_ Q][U|gcߣٕ[iy"̕_ZnV1AuBuPZ*sXQZ_ {`aGVC!b@*bg3 mV#roJov$*ya% u 秉4G.+OiCb4ZN< .N?VXF ٪ Ku.Mm8 k=x]2#G`uE)/JZSB /J9DDhYVei<3T|'`vi $Ӟs"tR7As_;_GԣQZ$՞Rø4g8tGKR "͜shV;ֵ5EDȍoi Cԅ,j&\}C9w,VӑUKSMܡ\ϒUqte*@e+rd zoThJ) 0xv.-lOMLqߺlc^xYKg}uލ^Vu!zRrg|۰A@`=6Ͷ@ pK )(ۯEUk)K~e:˼ G<)q}}H[Gh4y\~ᅗx,tLFq[ f:Zj+kt-1weM5Ӫ9 R%)jLܢ,nG,Θ*.ˆleAF!vaV8X y;/^(l5,BƙW͟3DJSdIz" :HPU\u5Qvc=~^mRY )!s*]Hys9W_0k} \wV:HeS-ew8%BRG/)h6)ע0^RG^j"]rir$2(y86Xda?dLE2XZ0+xxg<:YaNp)r9ТR` W"q(psw,rҘVd;;ml{.ʽwAYu-|^HgW_q@zҩ P֕V @9\aQҜ"yMH QdmMBb8 /I lĵCnv oo\qkkrֈAH:a.!܄))Q%PG$n@E @#( y̲.W@Ӫ2mv l6='Zoe; @Z_GиEs`k!bKOU!- qV+ܢ)VPy5<5MSinaPW:iw]+}AHSk[AU ]ţΰJc_1U) .厌˚͓f/iK8P2Qa齴a⽺;k \z̯ߛ)8$C,'WZQ`V)Ϲict5}n1 BH/s6p9)CeӧmпW58̬&]*r+ָ_!6`t!Ba+IJe&_;JVHiE6_ $]o"tbXٶAknmzcl⍉Xbv+T}'H%RB*ͪYWĖx4#zƽHHX/-Uտ9}n&=sxAA%P2Rٰt=E:Q8W {E/ԗ,e?ݪŅh4ysC a=һ,UHQ6- ^ eA(^QNbZɢ"QzUGLqU~gA[%ȹ wy2eO6 3q[V-Q-jSڎTEmect ;YZM)j9'Y՝ ~{d,!k.ܲ7RBr4)pZh!3 GqB|׳QM5IT?BE1p;a]iR5B\dԙ=-ZUKQ[ƯV:[ݦZkyEV+opHk'$zgV?r$VlZV0]1bMZ@]e@`KmQes~vDڕՆdVJ4B.3~2TftBQKEBU4OJC D@*ʛ*$C6qnukͽZ~ {T[p(kHZo [k΢.AKh:E(䒰nbYʨP%Ѫx=},M0Dmʷ۞5_.W(%<**|vW:BK`i ?{ԭ~~$w2l\r^٬ũ>vp X }_lE̙f6$%>Zس$mSmoU034=*Jf!2:;KgHfEO'qp `m5I55 |N08Ym\pӵuŝ[LʜZso_I'󮵨W?2+FU8GaM&VMR.|"R' *Uo D$wx4ܶmg~9Bw+yab75uHA\D'#GȠ3u-цZ<ҕʌ%)@iMԤ*䒅 o2#J`}'rW"yBh t.[WVɨDx&ZFNgPV@d+ A2ebS4JeqoJiy# KX;j^#fTDF1PEP׻* ̩*U[cJ[9H#ư)UXS_fK3"ⴍs.sؑA e٣t:[6+DU v)NN*x9 @Lc+'OD\Ln9ӿ/\)˿W*Jr/8`f5-cT .6uN)-.ۚ% ,ZOQS} ,IlC D fJm/) B)zQ-&?6sîwe꣗]VtwupjPy;bdXs1)L9IkfqI,PcW)1LA:%f+.gk#uG$GUDVCwP, ˨sbݯ(J7d28bTNcx]j,/-5@B-DQ`ғ۾|i]C(e]:pw~~oI[{h4yQ-]-Zhzp[zjZ *O"I-C/c{1zJ|"#7r(StdCJbR%lLXd1w[$ܻt+LߩMQFw.S.YL%}],bvi:~{Eݽb-ęeZfčm,r6>f˾;k&R?YL䝘=5jCØy[[\ĻH\\hZ,F;-ST2廸ڙt{ZT |-9fLZ,?+wE*k9wC DZyl/nwbz}%ƦHP'xV*A ةO K6tzYCb`wa x 6h#3;_.rܖkZh$JbDVvi*jgIV$QB!^-@'c˘0nY>%tZ{n&"Û̒Fab]|#!Fh @!j,JJ*1-p 4:}/*Y*qU߱wo,Z>S6r}:P_HLd%~?D1Jg%cMYѡFJCa:]z}' ʑV~C̕_Id[,}:`pX-8{Z8ebnKxw:/y~JQGa Ȗ\L@꺔Gg7>G$5jo/*z]gs'su(ۻ Mw.` a-isfcHEH*(VW-5}@SPu8]YkHj*IN)0z[oHTW08Ѡe˷ܻɶ}[j~8w23ޟy}/K}OSrq k7|;𾋣}>wǓ_;r'ps۝J_|_z>=/Uxj\\_e Ty;o//~/kXdN?<3'{X+|/>5xVS}ڬX^youker-assistant-1.0.1/qml/img/logo/Manufacturer/AVAGO.jpg000644 001750 001750 00000043465 12312451003 023653 0ustar00saucysaucy000000 000000 JFIFHH ExifMM*bj(1r2iHHAdobe Photoshop CS Windows2012:03:30 10:21:38]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IO dz" >MѿRLjl5$ގWS'F#s];?+"ߩ~Vck1m)]G_k0)1uY:Kf6^CiH;D+$9}y ]n!k26+e@a?GRAaXJ~wK϶ʰs`oa;uUֿqiϨ`hV LW`UoFj˽knn3z2̽n$DLp{tM6^*pAo֏Ψ=7L⾮e3Zk,-mF]}[oQ^Z[CZ.2jWܱώR"3 =R}3!/ |zpieq_X7 bd1ٶ5OU3־[z Ǵ뵍ݱ.=Q$>vB\p$#7o84g'Đ=j/[{}(ݾ}ۗ?E9x.\斕nzo}(̝w"%+ՅÃa) LH*?ѽ®~zxY^4WK>ͻ~uY4u4G{Ϸ5#"ܜ ᵖ̐F~IOnIsZEϨ5L4LŒu߲F/_O3/*ΙUY间.Γk:+cSM}6Xv5yice[14sO8{.?(r"U,MѿRLjl5$ގWS'F#s];?+"ߩ~Vck1m)]G_k0)1uY:Kf6^CiH;D+$9}y ]n!k26+e@a?GRAaXJ~wK϶ʰs`oa;uUֿqiϨ`hV LW`UoFj˽knn3z2̽n$DLp{tM6^*pAo֏Ψ=7L⾮e3Zk,-mF]}[oQ^Z[CZ.2jWܱώR"3 =R}3!/ |zpieq_X7 bd1ٶ5OU3־[z Ǵ뵍ݱ.=Q$>vB\p$#7o84g'Đ=j/[{}(ݾ}ۗ?E9x.\斕nzo}(̝w"%+ՅÃa) LH*?ѽ®~zxY^4WK>ͻ~uY4u4G{Ϸ5#"ܜ ᵖ̐F~IOnIsZEϨ5L4LŒu߲F/_O3/*ΙUY间.Γk:+cSM}6Xv5yice[14sO8{.?(r"U, 1 93 70 1 72/1 72/1 2 2012-03-30T10:21:38+08:00 2012-03-30T10:21:38+08:00 2012-03-30T10:21:38+08:00 Adobe Photoshop CS Windows uuid:d94422aa-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:d94422a9-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:a5b0cfe5-7a0d-11e1-aae6-92eb3a8ba4a3 image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثW\0ZHN )cA8Ds9 {yJm,d1-H՚C nz45i5]x̣#)E:ǝsƿ4ڄWBX?9WX.+iʉ$dz+> 'Œ,dp Ge$5œ=??v o.[_i5]yK1!xPI?ܲȌlMN;K/8iu]0t(YWt#F@nU(K1 ?)CX|9c_'W?>M7ǜn}Ri>Vh8O##(daphD7,CZG5-SMGF^S"U*|ry0DFÉ2)лwDZҧ!g?8<0D:^w5Myw'0)l(?TM?!|ǭqV]Mcolq~?w?Z%XQw%V5 9yeB%$ HߋXpF%kN#,3@^]-^Q{;Cv17MJq9eN-Nj?:/5-;[hЋgEB! ҏv5йg<\I/̔1E?WWG8|Zor,Rv.LqT/.Iq䶫5[LTٚU<֭..ĒE3IWٵvPWU޵ws dF#9Z~X/RׯjցZ&h. */ #ifndef LOGINDIALOG_H #define LOGINDIALOG_H #include #include "accountcache.h" namespace Ui { class LoginDialog; } class LoginDialog : public QDialog { Q_OBJECT public: explicit LoginDialog(QWidget *parent = 0); ~LoginDialog(); private slots: void on_closeButton_clicked(); void on_okButton_clicked(); public slots: void setPassWordForAccountCache(const QString& userName); signals: void translate_user_password(QString user, QString pwd); private: Ui::LoginDialog *ui; QPoint dragPos; AccountCache accountCache; void loadAccountCache(); void action_register(); protected: void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event); bool eventFilter(QObject *obj, QEvent *event); }; #endif // LOGINDIALOG_H youker-assistant-1.0.1/qml/img/icons/broadcast.png000644 001750 001750 00000001014 12312451003 022463 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<IDATxbb`ggA[[ L`b)**,ܹs'#PAKK ⿿cǎ1 0\ .ad pB{U̔agu:)`|obUիW0 A9CPF\B"0V4 XВT?37B9sWJsC-❱cֺ3hgt B 1FH).dg$@k*R6-@0Q-,-xQFI!!"" [R;b{.飶ܗQvੵR)AQkܴ)(\bp;֒s1LVD1obZkR7ȷ29g %r IENDB`youker-assistant-1.0.1/backends/youker-assistant-daemon/data/000755 001750 001750 00000000000 12312451003 024610 5ustar00saucysaucy000000 000000 youker-assistant-1.0.1/qml/img/logo/Manufacturer/QDI.jpg000644 001750 001750 00000014566 12312451003 023433 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]    !1 AQq2$a"B#4D%R3sTdt!1AQaq$"2TB4%DdE&Rb3t5U6V ?F93qi` 1oEs+F`peb(2"\}c M=;C.bŖ݌l4P{0#bi?oٌŋjmѿ#xb(ٌV"Qфe,E;́,14zw\1b,71.i`G~߳9jrVZuR7MQT搎~rk2w}l]LDz۱`cڤ x9*ytF͞maӔZ$P\;Sl!AbKkxCDrNTRIq)3H%^W3Ha=w*pL"fO:c%ՕEO/"J3J1Q?qڧF?NVYt3~slA&x897iʹ]5מXl5S,ಸO8px`np[hE>ya2S!NW74 y|b N&RL䴳dm2T/1ÖFvUFQRg`@Bq ^Z3dJxP%AÉF C\>%Zbo-IEʞ&zmeY٬q. 5d\W,h2Jl`|?X\Z)O9cЦQ*/o-H91Xas)oMn^Q+UNYNM6L͖źes8mx"]2Mɜ>Eed|HF9)|jW≛['ʬcM_𥷽go:ekK.fɺk[vK()jw8$L?(>>1-4gy*T9}Jd2IbQޕr_dS+tTH_aT39?4g$%#4cv"i Uʜr$E;p9p (hs+H ɮtU%UouG F+߫s[ȉ u@譗|`5oEXϳ/貛v[O"T## ޝ4k5eWq/zVTѥ)*ᙃn"nI+Gdk"nF@pӂjbIMP G*n>2E"dT;@iJ_-I:`PT$1pUT cAx6Hs3>'r\˯Z?#[m`-<0n@nPw%)ugu!SA/9}W{@mc J>-x `A\oA}g3^]|QTZFU}]Tf1) g,j-.y"JU@rG+_{H R0Lb"!KQʝ@39(FJO8wQ:m# .Igixۍ&PieWMYt(Qb$#8@Tb7,~a_8%gk ( ,-8!#Io >l5Rog)g>.#/p鳨#FιO qSI'*?C% {Tw4Ym0H=t Rɧ̤8%F2bO{XI?GYRXr)LV+bؾ8#!Ȥ72(N*҅R܈m!N(Kf#HL0<]D{XrIzTɬK0,#8^9և sQ8Τ snьCSYqo j~!P=PVRSQxQgUq}y9*]C*PK%^ahf(jyoV=EOy.O4|G>3dG8+{wxvrǻvc (iIEvGy5+dpr?LOb: }fVbXqvցU4kȇ5JIqsp# 찘wKK-eBK֞8QȇhK@vdMQ?n:I,-t}s4@?F(S5KM )'BZRA(iX3U'T![CՊEY֚tIf[4kMjM9!Sf\a J̕X< *U:*PPJ RX^j GH!0߃/Jk%Q]EUzQ4D* T.2hёQV#iTB*`<pje. -?ӭÌ3 XZwUkO}qo_j-i|dw[[R9Z! m)\ pEJX؎\Y.Adș"J68hl*k;7(%đpjixBWw8׌vܞKAv#e)s~,4KSt(]I/$^j٦6ݨ{8!\Q. [H8@Nt(O2~_ s2gMPבK7(ܥ<629ftd.7 :s`ʨ}f!<^G1l,;K!)E dN Yf _&CvQI]GoPS#ȓwn6;JQ8Dպ~iKZԙxCi/L=vÄѠ+9Q ~|m+u+3"ﱝyL%y.h"A ׍iQ.1H"+xi`c(T|JU gjd\񎬪7aUDMcvW ?o'>'~sd;pmN };ݏlZz7Xo E1\Q}XX7z0exyy%&x;}sON,@`qe 7c=;ؚOc1bv7@o7c"x82oa~N`K. M>v1&1 X @n6 zw=4b7youker-assistant-1.0.1/qml/func/page/HomePage.qml000644 001750 001750 00000004274 12312451003 022206 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common import "../bars" as Bars import "../others" as Others Rectangle { id: screen; width: parent.width; height: 475 function openFile(file) { var component = Qt.createComponent(file) if (component.status == Component.Ready) pageStack.push(component); else console.log("Error loading component:", component.errorString()); } Rectangle { id: tools_widget anchors { fill: parent left: parent.right leftMargin: 2 right: parent.left rightMargin: 2 } Item { id: views width: parent.width height: parent.height //左右布局 //坐边栏 Others.LeftPage { id: leftbar anchors.left: parent.left anchors.leftMargin: -2 width: 600; height: screen.height } Others.RightPage { id: rightbar anchors.left: leftbar.right anchors.leftMargin: 0 width: screen.width - 600; height: screen.height } Item { id: foreground; anchors.fill: parent } //左右分割条 Rectangle {id: midsplitbar1; x: 600; y: 2; height: screen.height - 4; width: 1; color: "#b9c5cc" } Rectangle {id: midsplitbar2; x: 602; y: 2; height: screen.height - 4; width: 1; color: "#fafcfe" } } } } youker-assistant-1.0.1/src/kthread.cpp000644 001750 001750 00000004456 12312451003 020265 0ustar00saucysaucy000000 000000 /* * Copyright (C) National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have rec2013eived a copy of the GNU General Public License * along with this program. If not, see . */ #include #include "kthread.h" KThread::KThread(QStringList &arglist, QDBusInterface *systemiface, /*QObject *parent, */QString method, QString flag):QThread(/*parent*/) { iface = systemiface; methodName = method; list = arglist; fileFlag = flag; } KThread::~KThread() { stop(); } void KThread::run() { if(methodName == "onekey_clean_crufts_function") { iface->call("onekey_clean_crufts_function", list); } else if(methodName == "history_clean_records_function") { iface->call("history_clean_records_function", fileFlag); } else if(methodName == "clean_system_history") { iface->call("clean_system_history"); } else if(methodName == "cookies_clean_record_function") { iface->call("cookies_clean_record_function", list); } else if(methodName == "cookies_clean_records_function") { iface->call("cookies_clean_records_function", fileFlag); } else if(methodName == "clean_package_cruft") { iface->call("clean_package_cruft", list, fileFlag); } else if(methodName == "clean_file_cruft") { iface->call("clean_file_cruft", list, fileFlag); } else if(methodName == "get_forecast_weahter") { iface->call("get_forecast_weahter", fileFlag); } else if(methodName == "get_current_weather") { iface->call("get_current_weather", fileFlag); } else if(methodName == "get_current_yahoo_weather") { iface->call("get_current_yahoo_weather", list, fileFlag); } else if(methodName == "get_current_pm25") { iface->call("get_current_pm25", fileFlag); } } void KThread::stop() { wait(); } youker-assistant-1.0.1/qml/SysBtn.qml000644 001750 001750 00000002341 12312451003 020065 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 Rectangle { width: btnImg.width/4 height: btnImg.height clip: true color: "transparent" property string iconName Image { id: btnImg source: "./img/sysButton/" + iconName x: 0 - parent.width*3 } MouseArea { hoverEnabled: true anchors.fill: parent onEntered: btnImg.x = 0 onPressed: btnImg.x = 0 - parent.width //要判断鼠标松开时位置 onReleased: btnImg.x = 0 - parent.width*2 onExited: btnImg.x = 0 - parent.width*3 } } youker-assistant-1.0.1/qml/img/icons/gray.png000644 001750 001750 00000000762 12312451003 021474 0ustar00saucysaucy000000 000000 PNG  IHDR^{|mtEXtSoftwareAdobe ImageReadyqe<IDATxbwvvf Xlmm555 (ۯ_+'~Eĸh"BX:ϟ?,ob\`e]EMLP@=z(@o#VGG wAcǎQn @1.\[ikzJ=SUq)"F,39%|ѴO=,@q)|Duñ5~K(akV}IlRfȫ~gQIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/SUNPLUS.jpg000644 001750 001750 00000037722 12312451003 024166 0ustar00saucysaucy000000 000000 JFIFHHExifMM*bj(1r2iHHAdobe Photoshop CS Windows2011:12:21 10:11:46]F&(.HHJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOT._}v6 { {NHfu9lcdjzzRz7 d<2sc$;#?/2[?%$H)$IJI$RI$eWв#\͍ C7\Շ`wale2fӠc,k{k=J^3x-w.+#zt{q-5?ZsR rOO9?.CzBݙ,6.f1]YeCeY=V?;uluHVW[k`ִpQ)X 8( 3+fc`ߗu˸r]Vm~7iSe})̩}B=w5;]j}SUyOրA?Iԛ;2:Nh#kacm;'"pwWu_ͣ䞳zXG2uM}Wέ5v?{1[+-y;cD-[ .-INGD=[Q~IC 4rͻ䳤}fqsnǾA`HU =.ddmύ9n+FnMtsb}CwmRJy~wP6d}Ƣ[[_cƷmy^o},3nUu;lf͛Fȍ~$Uw⤒JXG)> IJLI$JOtRĞڥ'NJY:I$Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ Photoshop 3.08BIM8BIM%F &Vڰw8BIMHNHN8BIM&?8BIM 8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM?F]asint]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FLJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?TI%)$IJI$RI$I%)$IOT._}v6 { {NHfu9lcdjzzRz7 d<2sc$;#?/2[?%$H)$IJI$RI$eWв#\͍ C7\Շ`wale2fӠc,k{k=J^3x-w.+#zt{q-5?ZsR rOO9?.CzBݙ,6.f1]YeCeY=V?;uluHVW[k`ִpQ)X 8( 3+fc`ߗu˸r]Vm~7iSe})̩}B=w5;]j}SUyOրA?Iԛ;2:Nh#kacm;'"pwWu_ͣ䞳zXG2uM}Wέ5v?{1[+-y;cD-[ .-INGD=[Q~IC 4rͻ䳤}fqsnǾA`HU =.ddmύ9n+FnMtsb}CwmRJy~wP6d}Ƣ[[_cƷmy^o},3nUu;lf͛Fȍ~$Uw⤒JXG)> IJLI$JOtRĞڥ'NJY:I$Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIM2http://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2011-12-21T10:11:46+08:00 2011-12-21T10:11:46+08:00 2011-12-21T10:11:46+08:00 Adobe Photoshop CS Windows uuid:d94422aa-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:d94422a9-2b73-11e1-9c1d-e060394baa3b adobe:docid:photoshop:f29b9da7-2b78-11e1-9c1d-e060394baa3b image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed         F]   s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?N*UثWb]v*UثWN*UثWb]v*UثWN*UثWb]v*UثWI4yw>];P{ MbhY&F%%?/YdY |ۡkiz:+NtRd:Pvj/ei@[H^aثWb]v*UmƧcG$D"aRRVB v݇ r}_Qc6YKb:Ox̷]-CDcOIZφ>ͽw{zHK>BX?|rH^l[_,Yj-ek!DFmfG'2t3(mU|Klp~'.//g5W[R@k1V5wSb%u]N*UثWb]v*UثWN*UثWb]v*UثWyouker-assistant-1.0.1/qml/img/weather/d29.gif000644 001750 001750 00000004711 12312451003 021433 0ustar00saucysaucy000000 000000 GIF89a00߰&߯'8ryB}A|AzC|GHJMLLNNNRSTUVUY[][_^]bdehfhjnpnst||{~߁Ⴒ┿2r4r3p4q5r6s5r5p9w7t6q8u7t7s6r:x9v8s:w9v:w9u;w=z=y;u>{=z=xS>1*G>z 8E)PR PTJըC KQUBX}z#Ї=!OGUJW/}NWUB=JXⵧ=k!`&KZAb@PEdlMjW֪6,,N Z"D8-vmp΂*1Y좹ЍtKBx.\Y ExKx_Q$. ]ͯ~⾵-P^B7;-lQm / ^b GL!F1/;youker-assistant-1.0.1/qml/img/logo/Manufacturer/TDK.jpg000644 001750 001750 00000007444 12312451003 023435 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]     1  !AqBQ2"$9a4tu6ַx1A!a2BQq" ?Mɿݠ~iX pQ/M\ /F˿hh d@h䱰X<_b${}Zb&897Ђo٭+A76 }]ɢˁ%Av9w a, 6kX=+Do["U]'&vM5b&DP xy4Yp$;}'.%mc+`E}kd]|巐xxAt%»rYv.0'o^Hj#I]̠61u=k⑄hyMī-+#ת/]jVު~Ÿl=BV8 IK8{J5vi|J|kJMm>[e3|D;Y=jxRہ%+Ј]fdWI J!boei9a:`jagy'qe]W6ެ^7_1CYŹ 3@0| "`(כz)FOBw?k|TxY~b#UHP1J &5>"-e+F6o4Yb.r;=ot&$I+oZbn1/w8 abW|T0xAkFd5qdʛgJr(Gp8ƇgOʨ0 A{@T1iU5\)nRZB.(qf7 ]\(jH%ӓ&Y@ED+Lʑ*\My3'\y㲌89Ëbi)^KP[r%9HRI w$L&8}L޵*TT6#lr,i >aQr.38'yhn) %-[TIzTRUb9'xdT|2s!cdo& u6$L{)/e%(us)xJ[oK&xOtoНV7C":_r,q#G\?fBx+q%)hdذQQ[KCzGSB:uE{6=FqS'c׈pbAnњ-)v. cK l;Q{{Xʕ$ARs{U=4FeZNSKb=iH&F[vo!eLS+LUv"8z^z Tf0 xZiOΆ2Xp)|vf7D?mV=@ꚩF.c [WU7 4CkX%:_VyěŮ}xJ d9;RY3PyN@V4J'RT=ӎЖR○icSˠ3ecKH% UlKF:OJD&xu16SU\phy{Ga{rmM+e|p*PkY"!2{Cug ΢ŐTȏO%ӖCE8qWUUUrJDW#u;^q!i&2ت@~J$nNZu*j(+Kyuٰ}țg#;4SJ6< 2" pn;)=!HU*d<^8VhCl2K]Y8-ǵךB#N:B l&55)+ CZ"?xIݘq, ЗLp`ہ P h +cZE2@:1v>k{qo_'j:z!6897Ђo٭+A76 }]ɢˁ%Av9w a, 6kX=+Do["U]'&vM5b&DP xy4Yp$;}'.%mc+`E}kd]kdbwB fQ|8(ojAw&.oYDߴ4U 4rX@mebr`h{lyouker-assistant-1.0.1/src/image/closeBtn-hover.png000644 001750 001750 00000002425 12312451003 022613 0ustar00saucysaucy000000 000000 PNG  IHDRG(tEXtSoftwareAdobe ImageReadyqe<IDATxb?^16@ H0xoi 0Q~' @^{D@@Zh(@ J&2A @Z !wbp g b,`^+R` {eѝ00 o2$nֻhmE P׀\"3 9f? r d=]?% U{__Ț@y% ܐ?1|غCjK.`@ro|3kɢlFs ~ Bc?@ 4P@,`i)6C0>L <&h@H@m 5j ~ I Zɮb%ّ@il m`8*%\㡥oo6g7 $X5<նWgB>oG_p; i\}^LFYLAK;΄&px{"u>µ[HoAIG5~GV6׾UϾ| }Œ +wE?u3^eǟ}׫js'#yȿɌ91Bc/?c0d lЬ`)Cȁ@yRj @ `eʁrpzeGrEDXW3oR /0aec>o]QǗ |dP4)g? ߰Pv ?Z5}ï7HP/ ώִXfLF$3!G  ?]J7X7o]Wt_o  tH \Oa@xP$cf%{uWR|̂ڬP=H ǀTX񀊘_9ru.U^pռ:@)_Axɝltz5=eSY%ȜۑlͪǖOs_^__T_뷿yo( _# )rC] Фj+,POhjo-&MP)#a8&GWOIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/TRANSMETA.jpg000644 001750 001750 00000006654 12312451003 024353 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1!qAQ"2Ba#C%!1AQaqB"2 ?ǓjGeɿƒMVʅMDz T/Aw,_8Vtr( \@Qqڱ `+~<~U/&p2A&+eB&FM{ Oe[ /{:wU (ܸ@mXʅ˰vuE??*Vj8ro~Dqb&= ]ç-=՝\ *Wn\h 6eB;"kL0E'B⅐HmVzI}kAe:V!i" pM|W|3_]d򶓇'`uiD -!dm ; uD]·&ބ2,0PLH {S%XF(nm3HF 芝{^OPj$/ r3Wצ N$q4j@K7/Ӳ!_zh@7ՠԃ @,%;đ XJy,*SK!'-Ni)1Rjp/@4fU_#t =±HGNݲ6g魻Ge֡ԞsO  =6G+:]@.XAQ.?i"7ǫb[+edy0-ssJ"K:K}~$&0~~s;R@o_+'Ec*ȫwȳn asGmM$4嫔5^Yi#!Zh |^pzoSs*S3w;8RZ($buYk+Uf"# %%ٍT[N+Jf&\`M"b!q4K0vn2;rHx妶]]s.#T8G&sc&9ecXg>d+j&\.MGQ-b馢N_!ۛ,"⸌DeD3-6""?PUV!҂6 >k2&B e𪔲I<L⸎]$/潾_ڱ9$L'1N9)J1Ip6mes󍹗\w3,R|_Onʮ˔YK[liji74h"y~`m;Ӌ\YC<`_gE%NԐypFP/,_fj-EaA@<336O146fye"X¢Fܖz<`GM=ijPgw3p$$ȼsbͶ5N(n 햘L+Y6 5>L+dF_ȇlFˎϮV$ XqB%cT HJ=zr sjIZL]36:5d 35n mT]Xs*nN: ibnN*2ڔ:oH89!6c+2L1EG$/շCR,hB>x?_j-JI7[v,s!2%I4TPꖙ^ P h!^iwphw?/}U|[#81m].MPo¶T(n=lSmKT1PDżi.^Ga!$uOisj*w)oY8.D5@e㖙A1a\s7ФOj h)ohre1bv%t{$&z1 05'_+m*ۄ(sT[Ne@[ @N z4.eV`ַ49S$e4k V9Uo=f[xΦHE'ɭn4;e;k*wTyjhu.,Mf"hk0F:8:cݳ(PD DX!:qUg{I( XF`Uq5'iHSFמ%x:k-k,/Ǐʼ{5i6し& NA7[*A76(oP:{(I~YE˿%qFƂjT.];)VWq˓'T eA7_=Yl$pq"߈QTrAc*.Wqx\^ ZMeɿƒMVʅMDz T/Aw,_8Vtr( \@Qqڱ `+~<~U/youker-assistant-1.0.1/backends/youker-assistant-daemon/src/cleaner/__init__.py000644 001750 001750 00000061715 12312451003 030222 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os import sys import apt import apt_pkg import shutil import commands #import threading from apt.progress.base import InstallProgress import historyclean import cookiesclean import searchsame import diskanalyse import osslim import common import cacheclean import oldkernel import systemhistory import dashhistory import softwareconfigfile HOMEDIR = '' def get_user_homedir(homedir): global HOMEDIR HOMEDIR = homedir def return_homedir_sysdaemon(): global HOMEDIR return HOMEDIR # clean up by one key class OneKeyClean(): def __init__(self): self.objunneed = CleanTheUnneed() self.objcache = CleanTheCache() def get_onekey_crufts(self, sesdaemon, mode_list): homedir = common.return_homedir_sesdaemon() crufts_dic = {} total_dic = {} flag_dic = {'history': False, 'cookies': False, 'cache': False} for mode in mode_list: flag_dic['%s' % mode] = True if flag_dic['history']: historysize = 0 objhg = historyclean.HistoryClean(homedir) filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir)) if os.path.exists(filepathf): tempf_list = objhg.scan_firefox_history_records(filepathf) for onef in tempf_list: sesdaemon.display_scan_process(onef[1]) #sesdaemon.display_scan_process_msg(onef[1]) historysize += onef[2] filepathc = "%s/.config/chromium/Default/History" % homedir if os.path.exists(filepathc): run = common.process_pid("chromium-browser") if not run: tempc_list = objhg.scan_chromium_history_records(filepathc) for onec in tempc_list: sesdaemon.display_scan_process(onec[1]) #sesdaemon.display_scan_process_msg(onec[1]) historysize += onec[2] total_dic['history'] = str(historysize) sesdaemon.total_data_transmit('h', total_dic['history']) if flag_dic['cookies']: cookiessize = 0 objcg = cookiesclean.CookiesClean(homedir) filepathff = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir)) if os.path.exists(filepathff): pamf = [filepathff, 'moz_cookies', 'baseDomain'] tempff_list = objcg.scan_cookies_records(pamf[0], pamf[1], pamf[2]) for oneff in tempff_list: sesdaemon.display_scan_process(oneff[0]) #sesdaemon.display_scan_process_msg(oneff[0]) cookiessize += oneff[1] filepathcc = "%s/.config/chromium/Default/Cookies" % homedir if os.path.exists(filepathcc): pamc = [filepathcc, 'cookies', 'host_key'] tempcc_list = objcg.scan_cookies_records(pamc[0], pamc[1], pamc[2]) for onecc in tempcc_list: sesdaemon.display_scan_process(onecc[0]) #sesdaemon.display_scan_process_msg(onecc[0]) cookiessize += onecc[1] total_dic['cookies'] = str(cookiessize) sesdaemon.total_data_transmit('k', total_dic['cookies']) if flag_dic['cache']: cachesize = 0 objcache = cacheclean.CacheClean() apt_path = "/var/cache/apt/archives" temp_apt_list = objcache.scan_apt_cache(apt_path) for oneapt in temp_apt_list: sesdaemon.display_scan_process(oneapt) #sesdaemon.display_scan_process_msg(oneapt) cachesize += os.path.getsize(oneapt) swcenterpath = '%s/.cache/software-center' % homedir temp_swcenter_list = objcache.public_scan_cache(swcenterpath) for oneswcenter in temp_swcenter_list: sesdaemon.display_scan_process(oneswcenter) #sesdaemon.display_scan_process_msg(oneswcenter) if os.path.isdir(oneswcenter): cachesize += common.get_dir_size(oneswcenter) else: cachesize += os.path.getsize(oneswcenter) total_dic['cache'] = common.confirm_filesize_unit(cachesize) sesdaemon.total_data_transmit('c', total_dic['cache']) def clean_all_onekey_crufts(self, sysdaemon, mode_list): homedir = return_homedir_sysdaemon() flag_dic = {'history': False, 'cookies': False, 'cache': False} for mode in mode_list: flag_dic['%s' % mode] = True #if flag_dic['cache']: if mode_list[0] in '1': try: objclean = FunctionOfClean() objcache = cacheclean.CacheClean() apt_path = "/var/cache/apt/archives" temp_apt_list = objcache.scan_apt_cache(apt_path) for cachea in temp_apt_list: sysdaemon.status_for_quick_clean('apt', cachea) objclean.clean_the_file(cachea) sysdaemon.status_for_quick_clean('apt', 'end') swcenterpath = '%s/.cache/software-center' % homedir temp_swcenter_list = objcache.public_scan_cache(swcenterpath) for caches in temp_swcenter_list: sysdaemon.status_for_quick_clean('software_center', caches) objclean.clean_the_file(caches) sysdaemon.status_for_quick_clean('software_center', 'end') except Exception, e: sysdaemon.clean_error_onekey('ce') else: sysdaemon.clean_complete_onekey('c') #if flag_dic['history']: if mode_list[1] in '1': try: sysdaemon.status_for_quick_clean('firefoxhistory', 'start') objca = historyclean.HistoryClean(homedir) filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir)) objca.clean_firefox_all_records(filepathf) sysdaemon.status_for_quick_clean('firefoxhistory', 'end') run = common.process_pid("chromium-browser") if not run: sysdaemon.status_for_quick_clean('chromiumhistory', 'start') filepathc = "%s/.config/chromium/Default/History" % homedir objca.clean_chromium_all_records(filepathc) sysdaemon.status_for_quick_clean('chromiumhistory', 'end') except Exception, e: sysdaemon.clean_error_onekey('he') else: sysdaemon.clean_complete_onekey('h') #if flag_dic['cookies']: if mode_list[2] in '1': try: objcc = cookiesclean.CookiesClean(homedir) sysdaemon.status_for_quick_clean('firefoxcookies', 'start') filepathfc = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir)) pamfc = [filepathfc, 'moz_cookies', 'baseDomain'] objcc.clean_all_records(pamfc[0], pamfc[1], pamfc[2]) sysdaemon.status_for_quick_clean('firefoxcookies', 'end') sysdaemon.status_for_quick_clean('chromiumcookies', 'start') filepathcc = "%s/.config/chromium/Default/Cookies" % homedir pamcc = [filepathcc, 'cookies', 'host_key'] objcc.clean_all_records(pamcc[0], pamcc[1], pamcc[2]) sysdaemon.status_for_quick_clean('chromiumcookies', 'end') except Exception, e: sysdaemon.clean_error_onekey('ke') else: sysdaemon.clean_complete_onekey('k') sysdaemon.clean_complete_onekey('o') # the functions of search the same files class SearchTheSame(): def __init__(self): self.objs = searchsame.SearchSame() def get_scan_result(self, path): self.path = path self.objs.search_by_style(self.path) samefile_list = self.objs.adjust_the_dic() return samefile_list # the functions of manage the large files class ManageTheLarge(): def __init__(self): self.objl = diskanalyse.DiskAnalyse() def get_large_files(self, size, path, sesdaemon): objlg = diskanalyse.DiskAnalyse() finalsize = size * 1024 * 1024 largefile_list = objlg.hundred_large_files(finalsize, path) for one in largefile_list: sesdaemon.data_transmit_by_large(common.confirm_filesize_unit(one[0]), one[1]) sesdaemon.large_transmit_complete() def get_scan_result(self, size, path): self.path = path finalsize = size * 1024 * 1024 #self.objl.hundred_large_files(finalsize, self.path) #self.objl.type_of_file() largefile_dic = self.objl.adjust_the_list(finalsize, self.path) return largefile_dic # the functions of clean the browser history class CleanTheHistory(): def __init__(self): pass #def new_get_history_crufts(self, flag, sesdaemon): # homedir = common.return_homedir_sesdaemon() # objhg = historyclean.HistoryClean(homedir) # crufts_list = [] # cache = common.get_cache_list() # if flag in "firefox": # if cache['firefox'].is_installed: # filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir)) # if not common.process_pid("firefox"): # if os.path.exists(filepathf): # temp_list = objhg.scan_firefox_history_records(filepathf) # sesdaemon.data_transmit_by_history(sum([sin[2] for sin in temp_list])) # else: # sesdaemon.browser_status_by_history('fruning') # else: # sesdaemon.history_transmit_complete('funinstall') # if flag in "chromium": # if cache['chromium'].is_installed: # filepathc = "%s/.config/chromium/Default/History" % homedir # if not common.process_pid("chromium-browser"): # if os.path.exists(filepathc): # temp_list = objhg.scan_chromium_history_records(filepathc) # sesdaemon.data_transmit_by_history(sum([sin[2] for sin in temp_list])) # else: # sesdaemon.browser_status_by_history('cruning') # else: # sesdaemon.history_transmit_complete('cuninstall') def get_history_crufts(self, flag): homedir = common.return_homedir_sesdaemon() objhg = historyclean.HistoryClean(homedir) crufts_list = [] cache = common.get_cache_list() if flag in "firefox": filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir)) if cache['firefox'].is_installed: if os.path.exists(filepathf): temp_list = objhg.scan_firefox_history_records(filepathf) crufts_list = ["%s<2_2>%s<2_2>%s" % (str(each[0]), each[1], str(each[2])) for each in temp_list] else: return 'No' if flag in "chromium": filepathc = "%s/.config/chromium/Default/History" % homedir if cache['chromium-browser'].is_installed: if os.path.exists(filepathc): run = common.process_pid("chromium-browser") if not run: temp_list = objhg.scan_chromium_history_records(filepathc) crufts_list = ["%s<2_2>%s<2_2>%s" % (str(each[0]), each[1], str(each[2])) for each in temp_list] else: return 'True' else: return 'No' return crufts_list def clean_all_history_crufts(self, flag): homedir = return_homedir_sysdaemon() objca = historyclean.HistoryClean(homedir) running = False if flag in "firefox": filepathf = "%s/.mozilla/firefox/%s/places.sqlite" % (homedir, common.analytical_profiles_file(homedir)) objca.clean_firefox_all_records(filepathf) if flag in "chromium": run = common.process_pid("chromium-browser") if not run: filepathc = "%s/.config/chromium/Default/History" % homedir objca.clean_chromium_all_records(filepathc) else: running = True return running # the function of clean the system history class CleanSystemHistory(): def get_scan_result(self, homedir = ''): objhg = systemhistory.SystemHistory() url = objhg.scan_the_xml(homedir) return url def clean_the_cruftlist(self): global HOMEDIR objhc = systemhistory.SystemHistory() objhc.clean_the_xml(HOMEDIR) # the function of clean the dash history class CleanDashHistory(): def get_scan_result(self, homedir = ''): objhg = dashhistory.DashHistory(homedir) num = objhg.scan_the_records() return num def clean_the_cruftlist(self): global HOMEDIR objhc = dashhistory.DashHistory(HOMEDIR) objhc.clean_the_records() # the function of clean the cookies class CleanTheCookies(): def __init__(self, daemon_obj): self.daemon_obj = daemon_obj def get_cookie_crufts(self, flag, sesdaemon): homedir = common.return_homedir_sesdaemon() objcg = cookiesclean.CookiesClean(homedir) cache = common.get_cache_list() crufts_list = [] if flag in "firefox": if cache["firefox"].is_installed: filepathf = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir)) if os.path.exists(filepathf): pamf = [filepathf, 'moz_cookies', 'baseDomain'] temp_firefox_list = objcg.scan_cookies_records(pamf[0], pamf[1], pamf[2]) for one in temp_firefox_list: sesdaemon.data_transmit_by_cookies("firefox", one[0], str(one[-1])) sesdaemon.cookies_transmit_complete('firefox') else: sesdaemon.cookies_transmit_complete('funinstall') if flag in "chromium": if cache["chromium-browser"].is_installed: filepathc = "%s/.config/chromium/Default/Cookies" % homedir if os.path.exists(filepathc): pamc = [filepathc, 'cookies', 'host_key'] temp_chromium_list = objcg.scan_cookies_records(pamc[0], pamc[1], pamc[2]) for one in temp_chromium_list: sesdaemon.data_transmit_by_cookies("chromium", one[0], str(one[-1])) sesdaemon.cookies_transmit_complete('chromium') else: sesdaemon.cookies_transmit_complete('cuninstall') def get_cookies_crufts(self, flag): homedir = common.return_homedir_sesdaemon() objcg = cookiesclean.CookiesClean(homedir) crufts_list = [] if flag in "firefox": filepathf = common.analytical_profiles_file(homedir) + "cookies.sqlite" if os.path.exists(filepathf): pamf = [filepathf, 'moz_cookies', 'baseDomain'] temp_list = objcg.scan_cookies_records(pamf[0], pamf[1], pamf[2]) crufts_list = ["%s<2_2>%s" % (eachone[0], str(eachone[-1])) for eachone in temp_list] else: crufts_list.append('None') return crufts_list if flag in "chromium": filepathc = "%s/.config/chromium/Default/Cookies" % homedir if os.path.exists(filepathc): pamc = [filepathc, 'cookies', 'host_key'] temp_list = objcg.scan_cookies_records(pamc[0], pamc[1], pamc[2]) crufts_list = ["%s<2_2>%s" % (eachone[0], str(eachone[-1])) for eachone in temp_list] else: crufts_list.append('None') return crufts_list return crufts_list def clean_one_cookies_cruft(self, flag, domain): homedir = return_homedir_sysdaemon() objcc = cookiesclean.CookiesClean(homedir) if flag in "firefox": filepathf = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir)) pamf = [filepathf, 'moz_cookies', 'baseDomain', domain] objcc.clean_cookies_record(pamf[0], pamf[1], pamf[2], pamf[3]) if flag in "chromium": filepathc = "%s/.config/chromium/Default/Cookies" % homedir pamc = [filepathc, 'cookies', 'host_key', domain] objcc.clean_cookies_record(pamc[0], pamc[1], pamc[2], pamc[3]) def clean_all_cookies_crufts(self, flag): homedir = return_homedir_sysdaemon() objcc = cookiesclean.CookiesClean(homedir) if flag in "firefox": filepathf = "%s/.mozilla/firefox/%s/cookies.sqlite" % (homedir, common.analytical_profiles_file(homedir)) pamf = [filepathf, 'moz_cookies', 'baseDomain'] objcc.clean_all_records(pamf[0], pamf[1], pamf[2]) if flag in "chromium": filepathc = "%s/.config/chromium/Default/Cookies" % homedir pamc = [filepathc, 'cookies', 'host_key'] objcc.clean_all_records(pamc[0], pamc[1], pamc[2]) # the function of scan the unneedpackages class CleanTheUnneed(): def __init__(self): self.objc = osslim.OsSlim() def get_scan_result(self): namesummarysize = self.objc.get_spare_packages() return namesummarysize # the function of clean old kernel class CleanTheOldkernel(): def __init__(self): pass def get_oldkernel_crufts(self): objc = oldkernel.OldKernel() pkgobj_list = objc.scan_oldkernel_packages() crufts_list = ["%s<2_2>%s" % (pkg.name, pkg.installed.summary, common.confirm_filesize_unit(pkg.installed.installed_size))for pkg in pkgobj_list] return crufts_list # the function of clean spare packages class CleanTheSpare(): def __init__(self): pass def get_all_package_crufts(self, mode_list, sesdaemon): if 'unneed' in mode_list: upkg_obj = osslim.OsSlim() temp_unneed_list = upkg_obj.scan_spare_packages() for upkg in temp_unneed_list: sesdaemon.data_transmit_by_package('unneed', upkg.name, upkg.installed.summary, common.confirm_filesize_unit(upkg.installed.installed_size)) if 'oldkernel' in mode_list: opkg_obj = oldkernel.OldKernel() temp_oldkernel_list = opkg_obj.scan_oldkernel_packages() for opkg in temp_oldkernel_list: sesdaemon.data_transmit_by_package('oldkernel', opkg.name, opkg.installed.summary, common.confirm_filesize_unit(opkg.installed.installed_size)) if 'configfile' in mode_list: spkg_obj = softwareconfigfile.SoftwareConfigfile() temp_configfile_list = spkg_obj.scan_configfile_packages() for spkg in temp_configfile_list: sesdaemon.data_transmit_by_package('configfile', spkg.name, '', '') sesdaemon.package_transmit_complete() # the function of scan the cache class CleanTheCache(): def __init__(self): self.objc = cacheclean.CacheClean() def get_all_cache_crufts(self, mode_list, flag, sesdaemon): homedir = common.return_homedir_sesdaemon() if 'apt' in mode_list: aptpath = "/var/cache/apt/archives" temp_apt_list = self.objc.scan_apt_cache(aptpath) for one in temp_apt_list: sesdaemon.data_transmit_by_cache('apt', one, 'False', '%s' % common.confirm_filesize_unit(os.path.getsize(one))) if 'software-center' in mode_list: softwarecenterpath = "%s/.cache/software-center" % homedir temp_softwarecenter_list = self.objc.public_scan_cache(softwarecenterpath) for one in temp_softwarecenter_list: if os.path.isdir(one): sesdaemon.data_transmit_by_cache('software-center', one, 'True', common.confirm_filesize_unit(common.get_dir_size(one))) else: sesdaemon.data_transmit_by_cache('software-center', one, 'False', common.confirm_filesize_unit(os.path.getsize(one))) if 'thumbnails' in mode_list: thumbnailspath = "%s/.cache/thumbnails" % homedir temp_thumbnails_list = self.objc.public_scan_cache(thumbnailspath) for one in temp_thumbnails_list: if os.path.isdir(one): sesdaemon.data_transmit_by_cache('thumbnails', one, 'True', common.confirm_filesize_unit(common.get_dir_size(one))) else: sesdaemon.data_transmit_by_cache('thumbnails', one, 'False',common.confirm_filesize_unit(os.path.getsize(one))) if 'firefox' in mode_list: firefoxpath = "%s/.cache/mozilla/firefox/%s" % (homedir, common.analytical_profiles_file(homedir)) #sesdaemon.path_transmit_by_cache('firefox', firefoxpath) temp_firefox_list = self.objc.firefox_scan_cache(firefoxpath) for one in temp_firefox_list: if os.path.isdir(one): sesdaemon.data_transmit_by_cache('firefox', one, 'True', common.confirm_filesize_unit(common.get_dir_size(one))) else: sedaemon.data_transmit_by_cache('firefox', one, 'False', common.confirm_filesize_unit(os.path.getsize(one))) if 'chromium' in mode_list: chromiumpath = "%s/.cache/chromium/Default" % homedir #sesdaemon.path_transmit_by_cache('chromium', chromiumpath) temp_chromium_list = self.objc.public_scan_cache(chromiumpath) for one in temp_chromium_list: if os.path.isdir(one): sesdaemon.data_transmit_by_cache('chromium', one, 'True', common.confirm_filesize_unit(common.get_dir_size(one))) else: sesdaemon.data_transmit_by_cache('chromium', one, 'False',common.confirm_filesize_unit(os.path.getsize(one))) sesdaemon.cache_transmit_complete(flag) # the function of clean cruft files and cruft packages #class FunctionOfClean(threading.Thread): class FunctionOfClean(): def __init__(self): #threading.Thread.__init__(self) #self.msgdaemon = msgdaemon pass def clean_the_file(self, cruft): tmp = cruft.encode("UTF-8") #sysdaemon.data_of_remove_file(tmp) if tmp: if os.path.isdir(tmp): shutil.rmtree(tmp) else: os.remove(tmp) #def clean_the_file(self, cruftlist): # threading.Thread(target=self.clean_the_file_thread, args=(cruftlist,), name='CleanFile').start() def clean_the_package(self, cruftlist, sysdaemon): if cruftlist: cache = common.get_cache_list() cache.open() for cruft in cruftlist: pkg = cache[cruft] if pkg.is_installed: pkg.mark_delete() else: pkg.mark_delete(purge=True) iprogress = MyInstallProgress(sysdaemon) cache.commit(None, iprogress) def purge_the_package(self, cruftlist, sysdaemon): if cruftlist: cache = common.get_cache_list() cache.open() for cruft in cruftlist: pkg = cache[cruft] pkg.mark_delete(purge=True) iprogress = MyInstallProgress(sysdaemon) cache.commit(None, iprogress) #def clean_the_package(self, cruftlist): # threading.Thread(target=self.clean_the_package_thread, args=(cruftlist,), name='CleanPackage').start() class MyInstallProgress(InstallProgress): def __init__(self, sysdaemon): InstallProgress.__init__(self) self.sysdaemon = sysdaemon def status_change(self, pkg, percent, status): self.sysdaemon.status_remove_packages("apt_pulse", "percent: %s, status: %s" % (str(int(percent)), status)) def error(self, errorstr): pass def finish_update(self): self.sysdaemon.status_remove_packages("apt_stop", "") def start_update(self): self.sysdaemon.status_remove_packages("apt_start", "") youker-assistant-1.0.1/src/qtmenuitem.cpp000644 001750 001750 00000010100 12312451003 021012 0ustar00saucysaucy000000 000000 /**************************************************************************** ** ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the examples of the Qt Toolkit. ** ** You may use this file under the terms of the BSD license as follows: ** ** "Redistribution and use in source and binary forms, with or without ** modification, are permitted provided that the following conditions are ** met: ** * Redistributions of source code must retain the above copyright ** notice, this list of conditions and the following disclaimer. ** * Redistributions in binary form must reproduce the above copyright ** notice, this list of conditions and the following disclaimer in ** the documentation and/or other materials provided with the ** distribution. ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor ** the names of its contributors may be used to endorse or promote ** products derived from this software without specific prior written ** permission. ** ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOTgall ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qtmenuitem.h" void QtMenuBase::setIconSource(const QUrl &icon) { _iconSource = icon; if (_iconName.isEmpty()) action()->setIcon(QIcon(icon.toLocalFile())); else action()->setIcon(QIcon::fromTheme(_iconName, QIcon(_iconSource.toLocalFile()))); emit iconSourceChanged(); } QUrl QtMenuBase::iconSource() const { return _iconSource; } void QtMenuBase::setIconName(const QString &icon) { _iconName = icon; action()->setIcon(QIcon::fromTheme(_iconName, QIcon(_iconSource.toLocalFile()))); emit iconNameChanged(); } QString QtMenuBase::iconName() const { return _iconName; } QtMenuSeparator::QtMenuSeparator(QObject *parent) : QtMenuBase(parent), _action(new QAction(this)) { _action->setSeparator(true); } QtMenuSeparator::~QtMenuSeparator() { } QAction * QtMenuSeparator::action() { return _action; } QtMenuItem::QtMenuItem(QObject *parent) : QtMenuBase(parent), _action(new QAction(this)) { connect(_action, SIGNAL(triggered()), this, SIGNAL(triggered())); connect(_action, SIGNAL(toggled(bool)), this, SIGNAL(toggled(bool))); connect(_action, SIGNAL(changed()), this, SIGNAL(enabledChanged())); } QtMenuItem::~QtMenuItem() { } void QtMenuItem::setText(const QString &text) { _action->setText(text); emit textChanged(); } void QtMenuItem::setShortcut(const QString &shortcut) { _action->setShortcut(QKeySequence(shortcut)); emit shortcutChanged(); } void QtMenuItem::setCheckable(bool checkable) { _action->setCheckable(checkable); } void QtMenuItem::setChecked(bool checked) { _action->setChecked(checked); } void QtMenuItem::setEnabled(bool enabled) { _action->setEnabled(enabled); } QString QtMenuItem::text() const { return _action->text(); } QString QtMenuItem::shortcut() const { return _action->shortcut().toString(); } bool QtMenuItem::checkable() const { return _action->isCheckable(); } bool QtMenuItem::checked() const { return _action->isChecked(); } bool QtMenuItem::enabled() const { return _action->isEnabled(); } QAction * QtMenuItem::action() { return _action; } youker-assistant-1.0.1/src/warningdialog.ui000644 001750 001750 00000005577 12312451003 021330 0ustar00saucysaucy000000 000000 WarningDialog 0 0 329 195 Dialog 224 156 94 29 border-image: url(:/pixmap/image/ok.png); font: 11pt "文泉驿微米黑"; OK 10 6 26 20 33 6 26 20 8 85 311 51 border-image: url(:/pixmap/image/message.png); :/pixmap/image/message.png 6 51 291 21 <html><head/><body><p>Tips:</p></body></html> 0 0 329 195 border-image: url(:/pixmap/image/dialog-bg.png); QFrame::StyledPanel QFrame::Raised frame okButton btn_close btn_min displaylabel label okButton youker-assistant-1.0.1/qml/img/logo/Manufacturer/TERRATEC.jpg000644 001750 001750 00000007501 12312451003 024216 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]   1 !q$ AQ2B"Ga4&W'w 1AR!BQaq$D%"24T ?&Q5^L RI`ID1g|%8y"Ts + /.{B%RN "g@)A9TL8RgR"L@"Lǒ&a>hC.aLmXQys(’q8`F hQOwo ʠղe?DBAg1f<3 DB(sHeo4 ‹˞ЉFP0 sD{}PNU4oje4ɝ ̮R(:]GDlե;<̅M"p%L#$uKOlb8}iAVE}_UwWƁAQ?C}V@1Hx5A@Y)U?<$H2ņP:8ћ/iʪIRG. >ۦZ%T̴{07hp[ nKrfzI2g!>EiF] 9!6 SB"SjLs]TtݿRW$ZE\ds*X "\~1ϭ[Xx286{ Ia|J̌ RK9&7 TK+#!קdQeW4ǣG)J欦%D (0Ale3ʁ9hM-:O*hЅ iO؏w%hp.M"))ķrBBH w'ր2RqՅa=.ECOLSƉ2.KLxyT'B#ȧeHJ|mH1P"~O$ӼlI!HKo2ϚTlޞ;*fna}RB- #NU-kO&Y!e?&-/?5n=[!<\څuMgV鹍S9MZX$>O&靚=4Jnc?PL)= 㐀FQJk8zuֆwPO5ʚ|{StVyTӬ Bm\ͷt&IN $.)8L11\]ZjPwZ Q/IvW}Uzަ$)e֢ѣKes)fǵ0 `#\{RN4}DMU.dO҆uv7(3KJ4tBFN3d{Pp]`7(o )=/P#GVGPlRDi>h?Ϋ8CQJWwYoooE;G7V͢(m% ;XRwO.lAI3 IG҃juUٸn8Kj+w'eByXJͨxQ^WUZ?D(eoaD 9۷S2IIV&!@:й,!!o*$hDI&ͿLab-{.1IwREKSK5(Vq2a!EkEtœ[%{%g;@qMXXz/׶)?>4ScY+zmK.:N= 1n'M¯S'kV[Ov) or>ebhK2АЎҷ*=gUl0kwaނ(?hrU(dyu ;-g'geet/&~)Z$d0b$y"f3>Q<*9h=)'3 ayr@Mv [&Q`)y3D)J&{ y&c0I4!0Q&_h6@(aI8n@e# ːr4Jo(Pj2Kɟ!JV33H"LyD$Ja2AaEhD ILu(^\9SyE=ݾ'*youker-assistant-1.0.1/qml/img/logo/Manufacturer/ABIT.jpg000644 001750 001750 00000005377 12312451003 023535 0ustar00saucysaucy000000 000000 JFIFddDucky<Adobed       F] !1QғTA"Ӥaq2Ue'REb3DFfQ!1Aq2"CaRr3D$B#S ?P @(P @sm"/qچ.dyL ɫQݹS*\u^ݿΖ+jO]aښZjO]aښZjO]aښZjO]aښZjO]aښZjO]aښZjO]aښZjO]aښZjO]a孝ښZRxVԟ92;l6͟7¡jKOƴ(ޫwW>r9ҵC<|MΕ+NSǰ5sr6Ӄ _ں`<f_[7b^s<Ko˻M`@!Z܏4wݶ-_Zi!gu:PPH3C,zk;?meb͕;.'-d4I1'GfzsT9nx֕Xe'DFjҷא8>ӈd%QNTEkB]M[t 7:V|ݮzٟ^gZ1q)eU1·]W"qrȼˏ_8>gg>6~AڿחV}u $o*#.b:l85Ly޵ZZzv w=WZ8+*y?~/Oj$Y/D%B6.aR.REâno\0WzDaqI@0F*J\$~" :߯gE]Ċ .*"tkd2jI3swL?]j WaEl$6T&nUEE+RQRG1)Hl oN20#kr}AK$DƫJvR~ %qԳ/E=j?u>(XFn ZXM˦ةmTLkWڌUg8Ή䮶ϙ:ㆪDDʪJa]KG&,}Ωgķ= VjE4Ov~|/q/̴2oM6̇6W"2taTsg-4M*l :*[?Ӈ- Ns/t=AC2L7DI UO-CJ,FmGD`ԛaa3 3& .z3ԙ;)=9W.:n-p·&3rFub;A}IUy9[r%4*3x۬sU#cLp HUW_Yj\wj3:Fp۽Y 8o$J )oZ$c\,->{&DZJ_}KC淚*o%>Pe֍h*'ԩZ TCsWe.Ҏ|J:CHEQ gJNDyDUmugF᪑**:*K8nW,ɇ}ڪcĵ=4%P]Y[mTqC";)_%rUMn+ yg;kR O8A|Qzv+N1O8A|Qzv+N1O8A|Qzv)4/j/Y58`Ɲ*.{6Wpۭks/OT*qa;swuY\zRIŮS};}nrk-vaemUٷYw 82L^iMF#F\PAWOw hÌLJ9K7;b^.6)I}2wkkc[+'q &+yin]I%6f;,u=7?#JH^~C۩%;qGtdaZݤܛr|/7r[Dp6fA^I!n":zGR~);2+ٌ;[;w~h޵e_U;7y%6luElQausJ960c^fي 6J]p\el=kT)s2k^kC^3ZڟwF ,>cdzXzi>wܬ??cm?"?X9+Zl[|'.~&.UOS)|.mӳ艹_Om}7{8S?+^̒󑑳c_4dTm w߯fEgҳ'w%[6?z~~^ܿ|9}h>N&EYX᭩-5 ;}4jr~wUNPq}}]}?u5kI8;o+ۗ~7z]k{;wZ^X־loe։$u'E{HǞq}"w'np2RֿO'^Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$jPhotoshop 3.08BIM%8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM@@8BIM8BIM?F]g*h-7]FnullboundsObjcRct1Top longLeftlongBtomlongFRghtlong]slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongFRghtlong]urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM ]FLzJFIFHH Adobe_CMAdobed            F]"?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?T۝,1i~aoWNox}۝,1i~aoWK~qIQ?ޯ&Ή4'Wx}۝,1i~aoWK~qIQ?ޯ&Ή4'Wx}۝,1i~aoWK~qܖ-o]}P_X[_M*.{6Wpۭks/OT*qa;swuY\zRIŮS};}nrk-vaemUٷYw 82L^iMF#F\PAWOw hÌLJ9K7;b^.6)I}2wkkc[+'q &+yin]I%6f;,u=7?#JH^~C۩%;qGtdaZݤܛr|/7r[Dp6fA^I!n":zGR~);2+ٌ;[;w~h޵e_U;7y%6luElQausJ960c^fي 6J]p\el=kT)s2k^kC^3ZڟwF ,>cdzXzi>wܬ??cm?"?X9+Zl[|'.~&.UOS)|.mӳ艹_Om}7{8S?+^̒󑑳c_4dTm w߯fEgҳ'w%[6?z~~^ܿ|9}h>N&EYX᭩-5 ;}4jr~wUNPq}}]}?u5kI8;o+ۗ~7z]k{;wZ^X־loe։$u'E{HǞq}"w'np2RֿO'^Tʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$ꤗʩ$8BIM!SAdobe PhotoshopAdobe Photoshop CS8BIMhttp://ns.adobe.com/xap/1.0/ 1 93 70 1 72/1 72/1 2 2011-12-02T10:29:03+08:00 2011-12-02T10:29:03+08:00 2011-12-02T10:29:03+08:00 Adobe Photoshop CS Windows adobe:docid:photoshop:56f21e22-1c8d-11e1-ae7e-db667b27342f image/jpeg XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmAdobed@F]      u!"1A2# QBa$3Rqb%C&4r 5'S6DTsEF7Gc(UVWdte)8fu*9:HIJXYZghijvwxyzm!1"AQ2aqB#Rb3 $Cr4%ScD&5T6Ed' sFtUeuV7)(GWf8vgwHXhx9IYiy*:JZjz ?ߺ^׽u~{ߺ^׽u~{ߺ^׽u~W/_?:co d7_7;?λg_(߿'֮|Me'•?Ͻ?u elQ0>.G jG.Aygm[:P>0~-@0m}y{?u>_\?|sooCuZ?[ν¯POooCuZ7?λggQɷ߿'֮|MeO[i?nW^\.@go_|*{ ux`|\Ҁ}l j_?lYm[:<_ /.@u?e?un6-ѫc${$W_S}#y6f_oBh==#`<|o2<{w7vmzLn.OegZFӴ $,YU-{3r$V DuAhghyq)-ͱQCU[E xyb_/_};^ܛno/6,Ԙ}`$<& +̳U7[PWE~iZ?P4MO=v8v~Yi^V%ҵt9,!ߝ[%q}SGgzbvFO֙^W!1KREi$,3cq}yLnJ;20 K 4O|/w4m"{FR'L&(j;ű{~6u?eQy YlR=5e4IET+ufE77|ߺzhE8XaBK鬎h@~?jk 휱GW3Idzhڰq 2`@Ł33}EnĴ˫(e2 s}=4 *#kfC\,)q߃xSuް:rlxO/AiOzAUX}v־iˬ~o}M{_NN&}']-ipO -mZ)lFO}O/6mͪ pѼ<}9Epn,9ESMiy sdo-`f0ju}OCNCy7 V(GEa5UM-{; N/h&nzӋ q$S񅯦2Rʡ'{=~lY?AL5tEd5uj"i/^g]lh#:#ʰT@Cn6޽A۟sy?3s;m$u؛j6':u2SWfRTd֥sgn~~}ivs̗+D2h=@FG¢V GQ?*+7{&EĺΔԇKcXz :Ck|~8>؝)3,7v/t[۟iz;( _fMQQCBLe, Oi㞹ޤ{Ne6F(D.feFԎB9JԚt9c~Twnf9F $j2NELevA"=;!+s{pFpPpborY*$JO_7_*k[Y6Cya6vC7iFr|:z|=d$T@%is_$!@wC yTBTEBWQiۛ9M1;k2I9*@'[F/zgvc->$?CiuEGclvYrݵ ROEm 8?\N) -5[OJdi:b#;E]QnUo~|fڛ{ /N|6s}u&W5>cf2l.{)ߊ(/MK6{[ywsFu$Wb.1]8PYrߕ6gs$ ,r1 IE4ԚMzʏocn =7򷴱_=Z}Ccebv= x{eY)`OK(|{{msSq4DFu2X8j6ܗ[Imu4MtВ$mP vGRݴ+f{7vE+ܘFjDf(钥4 2 [5Nwqy`f@JM?.kHo.ExF3[ŸfNO<7q_{N+s?XvvuUowO:q6J{`oκ9}-[ ntQEAV*wC%)WIm7}Y[F8\\!1:@8S v._(%2E)Wؿ?zr|wN;c7uۃq*R#W >'`H@bdjfZ]ȯ4^$ȧTQz6ܶn-YhةAcqL4w&oz6݃7_Elڸ4ٝpԋ*A5TJQ boemn?P/%HX!`tuZF\JĐҺX:d}jo/{2ùh+hr͜M6\.C/VjQ&JI(!ru#$+&`C*=5ڵP.ps9ZK]51~*H4~I'aoo}㻲gm*.ĨppC/I)jja<"0.eiG[fF&.b@dcF+>s4䕙c2bIa@ݔ'Z58=i{[7>G4gogtݛ=WSY]݆LF2'y3OSK’!}-DžQw5@D.悺J-: M0A5*@uw)}C>w3ݿ!:?1{i#wGjwNX}ϼ{c 2[KvC;X~ɜdXLtp'Iw"ܷ}y:K)T6tHJU閕t謌x%xu{"Y0!ָU>Ɲޟ\L`w3cfhh捈92 hVHU5mWۙɷdzLX_ި}:{{pգ6f!zW ]=8f0k9SbmuAud0eW ӥZ6Xmf PO_ޏ1r\5=i^[r'||oLG~uvbz#d6ЯgxUR}EfC TUol HBJ s&[ZuaJ̔TjT}iՇ2mfZ%Npytq3?)~~~3]y}vf6cUl\F~ejI2=W}TEJxH Dl J^ 8~=5FmϪ@ۭ,j{g{w-72o|1EUlQlڙvvwA#4{imC/(XQ8'u |Qcqc?>}`;+lv..6x]>emn+huc2ϑU̔1=l䵞=VAO/4 @J+ъkZ2 4 tJ[om뿓;/MWۘ_1T[glϠ[wmMfݖH2Ե3=[$ !l; k.3:v!`B J(ShR=f@!V}Γ`Uˑo+S{u~f{w;sζ7&sph XUp~^B( HHCjD=OE m;K3W\u,xt&Q|z+'$3; G<+3q](E_b$K[\1J zRʊ%RѸ5Fj4ɯvw]Qm$paSB2+NgM5MO52QQ<m$,k]I$c[4DlBM ;[}]kv8[D?\?6e/Ͽo˟~]9{u+rߺ^׽u~{ߺ^׽u~{ߺ^׽u~ߺ^׽u~{ߺ^׽u~{ߺ^׽u~youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/ccm/Utils.py000644 001750 001750 00000031064 12312451003 030516 0ustar00saucysaucy000000 000000 # -*- coding: UTF-8 -*- # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # Authors: Quinn Storm (quinn@beryl-project.org) # Patrick Niklaus (marex@opencompositing.org) # Guillaume Seguin (guillaume@segu.in) # Christopher Williams (christopherw@verizon.net) # Copyright (C) 2007 Quinn Storm import os import weakref from gi.repository import GObject, Gtk, Gdk, Pango from Constants import * from cgi import escape as protect_pango_markup import operator import itertools import locale import gettext locale.setlocale(locale.LC_ALL, "") gettext.bindtextdomain("ccsm", DataDir + "/locale") gettext.textdomain("ccsm") _ = gettext.gettext IconTheme = Gtk.IconTheme.get_default() #TODO #if not IconDir in IconTheme.get_search_path(): # IconTheme.prepend_search_path(IconDir) def gtk_process_events (): while Gtk.events_pending (): Gtk.main_iteration () def getScreens(): screens = [] display = Gdk.Display.get_default() nScreens = display.get_n_screens() for i in range(nScreens): screens.append(i) return screens def getDefaultScreen(): display = Gdk.Display.get_default() return display.get_default_screen().get_number() def protect_markup_dict (dict_): return dict((k, protect_pango_markup (v)) for (k, v) in dict_.items()) class Image (Gtk.Image): def __init__ (self, name = None, type = ImageNone, size = 32, useMissingImage = False): GObject.GObject.__init__ (self) if not name: return if useMissingImage: self.set_from_stock (Gtk.STOCK_MISSING_IMAGE, Gtk.IconSize.LARGE_TOOLBAR) return try: if type in (ImagePlugin, ImageCategory, ImageThemed): pixbuf = None if type == ImagePlugin: name = "plugin-" + name try: pixbuf = IconTheme.load_icon (name, size, 0) except GObject.GError: pixbuf = IconTheme.load_icon ("plugin-unknown", size, 0) elif type == ImageCategory: name = "plugins-" + name try: pixbuf = IconTheme.load_icon (name, size, 0) except GObject.GError: pixbuf = IconTheme.load_icon ("plugins-unknown", size, 0) else: pixbuf = IconTheme.load_icon (name, size, 0) self.set_from_pixbuf (pixbuf) elif type == ImageStock: self.set_from_stock (name, size) except GObject.GError as e: self.set_from_stock (Gtk.STOCK_MISSING_IMAGE, Gtk.IconSize.BUTTON) class ActionImage (Gtk.Alignment): map = { "keyboard" : "input-keyboard", "button" : "input-mouse", "edges" : "video-display", "bell" : "audio-x-generic" } def __init__ (self, action): GObject.GObject.__init__ (self, 0, 0.5) self.set_padding (0, 0, 0, 10) if action in self.map: action = self.map[action] self.add (Image (name = action, type = ImageThemed, size = 22)) class SizedButton (Gtk.Button): minWidth = -1 minHeight = -1 def __init__ (self, minWidth = -1, minHeight = -1): super (SizedButton, self).__init__ () self.minWidth = minWidth self.minHeight = minHeight self.connect ("size-request", self.adjust_size) def adjust_size (self, widget, requisition): width, height = requisition.width, requisition.height newWidth = max (width, self.minWidth) newHeight = max (height, self.minHeight) self.set_size_request (newWidth, newHeight) class PrettyButton (Gtk.Button): __gsignals__ = { 'draw': 'override', } _old_toplevel = None def __init__ (self): super (PrettyButton, self).__init__ () self.states = { "focus" : False, "pointer" : False } self.set_size_request (200, -1) self.set_relief (Gtk.ReliefStyle.NONE) self.connect ("focus-in-event", self.update_state_in, "focus") self.connect ("focus-out-event", self.update_state_out, "focus") self.connect ("hierarchy-changed", self.hierarchy_changed) def hierarchy_changed (self, widget, old_toplevel): if old_toplevel == self._old_toplevel: return if not old_toplevel and self.state != Gtk.StateType.NORMAL: self.set_state(Gtk.StateType.PRELIGHT) self.set_state(Gtk.StateType.NORMAL) self._old_toplevel = old_toplevel def update_state_in (self, *args): state = args[-1] self.set_state (Gtk.StateType.PRELIGHT) self.states[state] = True def update_state_out (self, *args): state = args[-1] self.states[state] = False if True in self.states.values (): self.set_state (Gtk.StateType.PRELIGHT) else: self.set_state (Gtk.StateType.NORMAL) def do_expose_event (self, event): has_focus = self.flags () & Gtk.HAS_FOCUS if has_focus: self.unset_flags (Gtk.HAS_FOCUS) ret = super (PrettyButton, self).do_expose_event (self, event) if has_focus: self.set_flags (Gtk.HAS_FOCUS) return ret class Label(Gtk.Label): def __init__(self, value = "", wrap = 160): GObject.GObject.__init__(self, value) self.props.xalign = 0 self.props.wrap_mode = Pango.WrapMode.WORD self.set_line_wrap(True) self.set_size_request(wrap, -1) class NotFoundBox(Gtk.Alignment): def __init__(self, value=""): GObject.GObject.__init__(self, 0.5, 0.5, 0.0, 0.0) box = Gtk.HBox() self.Warning = Gtk.Label() self.Markup = _("No matches found. \n\n Your filter \"%s\" does not match any items.") value = protect_pango_markup(value) self.Warning.set_markup(self.Markup % value) image = Image("face-surprise", ImageThemed, 48) box.pack_start(image, False, False, 0) box.pack_start(self.Warning, True, True, 15) self.add(box) def update(self, value): value = protect_pango_markup(value) self.Warning.set_markup(self.Markup % value) class IdleSettingsParser: def __init__(self, context, main): def FilterPlugin (p): return not p.Initialized and p.Enabled self.Context = context self.Main = main self.PluginList = [p for p in self.Context.Plugins.items() if FilterPlugin(p[1])] nCategories = len (main.MainPage.RightWidget._boxes) self.CategoryLoadIconsList = list(range(3, nCategories)) # Skip the first 3 print('Loading icons...') GObject.timeout_add (150, self.Wait) def Wait(self): if not self.PluginList: return False if len (self.CategoryLoadIconsList) == 0: # If we're done loading icons GObject.idle_add (self.ParseSettings) else: GObject.idle_add (self.LoadCategoryIcons) return False def ParseSettings(self): name, plugin = self.PluginList[0] if not plugin.Initialized: plugin.Update () self.Main.RefreshPage(plugin) self.PluginList.remove (self.PluginList[0]) GObject.timeout_add (200, self.Wait) return False def LoadCategoryIcons(self): from ccm.Widgets import PluginButton catIndex = self.CategoryLoadIconsList[0] pluginWindow = self.Main.MainPage.RightWidget categoryBox = pluginWindow._boxes[catIndex] for (pluginIndex, plugin) in \ enumerate (categoryBox.get_unfiltered_plugins()): categoryBox._buttons[pluginIndex] = PluginButton (plugin) categoryBox.rebuild_table (categoryBox._current_cols, True) pluginWindow.connect_buttons (categoryBox) self.CategoryLoadIconsList.remove (self.CategoryLoadIconsList[0]) GObject.timeout_add (150, self.Wait) return False # Updates all registered setting when they where changed through CompizConfig class Updater: def __init__ (self): self.VisibleSettings = {} self.Plugins = [] self.Block = 0 def SetContext (self, context): self.Context = context GObject.timeout_add (2000, self.Update) def Append (self, widget): reference = weakref.ref(widget) setting = widget.Setting self.VisibleSettings.setdefault((setting.Plugin.Name, setting.Name), []).append(reference) def AppendPlugin (self, plugin): self.Plugins.append (plugin) def Remove (self, widget): setting = widget.Setting l = self.VisibleSettings.get((setting.Plugin.Name, setting.Name)) if not l: return for i, ref in enumerate(list(l)): if ref() is widget: l.remove(ref) break def UpdatePlugins(self): for plugin in self.Plugins: plugin.Read() def UpdateSetting (self, setting): widgets = self.VisibleSettings.get((setting.Plugin.Name, setting.Name)) if not widgets: return for reference in widgets: widget = reference() if widget is not None: widget.Read() def Update (self): if self.Block > 0: return True if self.Context.ProcessEvents(): changed = self.Context.ChangedSettings if [s for s in changed if s.Plugin.Name == "core" and s.Name == "active_plugins"]: self.UpdatePlugins() for setting in list(changed): widgets = self.VisibleSettings.get((setting.Plugin.Name, setting.Name)) if widgets: for reference in widgets: widget = reference() if widget is not None: widget.Read() if widget.List: widget.ListWidget.Read() changed.remove(setting) self.Context.ChangedSettings = changed return True GlobalUpdater = Updater () class PluginSetting: def __init__ (self, plugin, widget, handler): self.Widget = widget self.Plugin = plugin self.Handler = handler GlobalUpdater.AppendPlugin (self) def Read (self): widget = self.Widget widget.handler_block(self.Handler) widget.set_active (self.Plugin.Enabled) widget.set_sensitive (self.Plugin.Context.AutoSort) widget.handler_unblock(self.Handler) class PureVirtualError(Exception): pass def SettingKeyFunc(value): return value.Plugin.Ranking[value.Name] def CategoryKeyFunc(category): if 'General' == category: return '' else: return category or 'zzzzzzzz' def GroupIndexKeyFunc(item): return item[1][0] FirstItemKeyFunc = operator.itemgetter(0) EnumSettingKeyFunc = operator.itemgetter(1) PluginKeyFunc = operator.attrgetter('ShortDesc') def HasOnlyType (settings, stype): return settings and not [s for s in settings if s.Type != stype] def GetSettings(group, types=None): def TypeFilter (settings, types): for setting in settings: if setting.Type in types: yield setting if types: screen = TypeFilter(iter(group.Screen.values()), types) else: screen = iter(group.Screen.values()) return screen # Support python 2.4 try: any all except NameError: def any(iterable): for element in iterable: if element: return True return False def all(iterable): for element in iterable: if not element: return False return True youker-assistant-1.0.1/src/yprocess.cpp000644 001750 001750 00000001333 12312451003 020501 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "yprocess.h" YProcess::YProcess() { } youker-assistant-1.0.1/qml/func/common/Tab.qml000644 001750 001750 00000000172 12312451003 021574 0ustar00saucysaucy000000 000000 import QtQuick 1.1 Item { id:tab anchors.fill: parent property string title property int contentMargin } youker-assistant-1.0.1/qml/img/logo/Manufacturer/AUO.jpg000644 001750 001750 00000011656 12312451003 023437 0ustar00saucysaucy000000 000000 JFIFHH XICC_PROFILE HLinomntrRGB XYZ  1acspMSFTIEC sRGB-HP cprtP3desclwtptbkptrXYZgXYZ,bXYZ@dmndTpdmddvuedLview$lumimeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ QXYZ XYZ o8XYZ bXYZ $descIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view_. \XYZ L VPWmeassig CRT curv #(-27;@EJOTY^chmrw| %+28>ELRY`gnu| &/8AKT]gqz !-8COZfr~ -;HUcq~ +:IXgw'7HYj{+=Oat 2FZn  % : O d y  ' = T j " 9 Q i  * C \ u & @ Z t .Id %A^z &Ca~1Om&Ed#Cc'Ij4Vx&IlAe@e Ek*Qw;c*R{Gp@j>i  A l !!H!u!!!"'"U"""# #8#f###$$M$|$$% %8%h%%%&'&W&&&''I'z''( (?(q(())8)k))**5*h**++6+i++,,9,n,,- -A-v--..L.../$/Z///050l0011J1112*2c223 3F3334+4e4455M555676r667$7`7788P8899B999:6:t::;-;k;;<' >`>>?!?a??@#@d@@A)AjAAB0BrBBC:C}CDDGDDEEUEEF"FgFFG5G{GHHKHHIIcIIJ7J}JK KSKKL*LrLMMJMMN%NnNOOIOOP'PqPQQPQQR1R|RSS_SSTBTTU(UuUVV\VVWDWWX/X}XYYiYZZVZZ[E[[\5\\]']x]^^l^__a_``W``aOaabIbbcCccd@dde=eef=ffg=ggh?hhiCiijHjjkOkklWlmm`mnnknooxop+ppq:qqrKrss]sttptu(uuv>vvwVwxxnxy*yyzFz{{c{|!||}A}~~b~#G k͂0WGrׇ;iΉ3dʋ0cʍ1fΏ6n֑?zM _ɖ4 uL$h՛BdҞ@iءG&vVǥ8nRĩ7u\ЭD-u`ֲK³8%yhYѹJº;.! zpg_XQKFAǿ=ȼ:ɹ8ʷ6˶5̵5͵6ζ7ϸ9к<Ѿ?DINU\dlvۀ܊ݖޢ)߯6DScs 2F[p(@Xr4Pm8Ww)KmC  !"$"$CF]" < !1Aa2Qq"7Rt6CTr+!1Aq2Qa ?t(JR(JR(JRB(\HXo~l284uQ+ba{uMv;LT9n{b%)`5:*\-)6XA#ϒI;I=kxC&cً|A=w+fȢ/a$Tq'hۤkǐwu-%:(~5+/v-doUIYZݕ %mAI JGՀ@v]oyKnB^"s 0h5nw7H-ηKf\gFu%_Q^SOyO4m!Frp2jW足.\̹P~GE 2#V<`eݔAţ6= 95}FY]f+UMo6UJ{AR+R4Fx°nQ5C0؞{)3g! %ޮ?5%Z5h }5UO-{<_)J {]w6l~fXn6*N^ެlE )e+[ɶ =c[M&˯kLn3VRA55/D&t&Йv6qC)ܼ"Sx;zHg „Tْf7abbO~A)m=UU`#3_|-`6HIuRMcջFnoim.q:*}(oE_<5;~Wr^jiȮ9[( ؖ{^.-H-%hZOOj?iH_NT~QSe#8,l0aO }%)QT;($WLz*yY<;n}Mk:/ }u֓}8t*TĠi9wU:v`a!6M! JGڲR (JR(JR(JRyouker-assistant-1.0.1/src/image/ok.png000644 001750 001750 00000006521 12312451003 020333 0ustar00saucysaucy000000 000000 PNG  IHDR^T: pHYs   MiCCPPhotoshop ICC profilexڝSwX>eVBl"#Ya@Ņ VHUĂ H(gAZU\8ܧ}zy&j9R<:OHɽH gyx~t?op.$P&W " R.TSd ly|B" I>ةآ(G$@`UR,@".Y2GvX@`B, 8C L0ҿ_pH˕͗K3w!lBa)f "#HL 8?flŢko">!N_puk[Vh]3 Z zy8@P< %b0>3o~@zq@qanvRB1n#Dž)4\,XP"MyRD!ɕ2 w ONl~Xv@~- g42y@+͗\LD*A aD@ $<B AT:18 \p` Aa!:b""aH4 Q"rBj]H#-r9\@ 2G1Qu@Ơst4]k=Kut}c1fa\E`X&cX5V5cX7va$^lGXLXC%#W 1'"O%zxb:XF&!!%^'_H$ɒN !%2I IkHH-S>iL&m O:ňL $RJ5e?2BQͩ:ZImvP/S4u%͛Cˤ-Кigih/t ݃EЗkw Hb(k{/LӗT02goUX**|:V~TUsU?y TU^V}FUP թU6RwRPQ__c FHTc!2eXBrV,kMb[Lvv/{LSCsfffqƱ9ٜJ! {--?-jf~7zھbrup@,:m:u 6Qu>cy Gm7046l18c̐ckihhI'&g5x>fob4ekVyVV׬I\,mWlPW :˶vm))Sn1 9a%m;t;|rtuvlp4éĩWggs5KvSmnz˕ҵܭm=}M.]=AXq㝧/^v^Y^O&0m[{`:>=e>>z"=#~~~;yN`k5/ >B Yroc3g,Z0&L~oL̶Gli})*2.QStqt,֬Yg񏩌;jrvgjlRlc웸xEt$ =sl3Ttcܢ˞w|/%ҟ3 cHRMz%u0`:o_F~IDATxb_0!H;Cfd' 02|h b_BEXHq/ ,'_bə؎@SWF^B ,>30&fg "9Dv 43w3?3ߟt? ?u! Ԕ @GXC0,k@#1g` T0<'I[{1O+bFY\\} 6_MF=ɛ'b >Ԗ @DMT@!Ψ(!RNh {nׁq U0N[uT1v='oRNJhNRޟ'Zw{JQ h "F(AWov0ߢ4~^5f@4BA1ߚ Adobe Photoshop CC (Windows) 2014-01-09T09:15+08:00 2014-01-09T11:00:42+08:00 2014-01-09T11:00:42+08:00 image/png 3 Cleanup Cache Cleanup Cache Cleanup Cache 拷贝 Cleanup Cache xmp.iid:e5fa037d-60f8-884b-bbf2-c2dc581127fd xmp.did:af4d37b8-f1e7-304b-9c14-53c1ad218b0c xmp.did:af4d37b8-f1e7-304b-9c14-53c1ad218b0c created xmp.iid:af4d37b8-f1e7-304b-9c14-53c1ad218b0c 2014-01-09T09:15+08:00 Adobe Photoshop CC (Windows) converted from image/png to application/vnd.adobe.photoshop saved xmp.iid:393c0002-6b70-0e45-a8c1-c7358b67b5b0 2014-01-09T10:52:08+08:00 Adobe Photoshop CC (Windows) / saved xmp.iid:102c1922-50db-644a-b128-8d6305c9132f 2014-01-09T11:00:42+08:00 Adobe Photoshop CC (Windows) / converted from application/vnd.adobe.photoshop to image/png derived converted from application/vnd.adobe.photoshop to image/png saved xmp.iid:e5fa037d-60f8-884b-bbf2-c2dc581127fd 2014-01-09T11:00:42+08:00 Adobe Photoshop CC (Windows) / xmp.iid:102c1922-50db-644a-b128-8d6305c9132f xmp.did:af4d37b8-f1e7-304b-9c14-53c1ad218b0c xmp.did:af4d37b8-f1e7-304b-9c14-53c1ad218b0c 1 720000/10000 720000/10000 2 65535 116 29 Mk cHRMz%u0`:o_F lIDATxba``d``Pb 000(Me````7WKO70\{EaZw8U[?i]q2x csp1ba``0&d˧ ~6Hedf֞61q :b W^E?g2xðt R("Æ5 ^U sNy10000A;U=]_ {d[ezһOL ܅P͍+Fh( Q";R>Lt?la`?=-'RkFOd|EA} { j3|}Co ,~XaZMy?{v0Hp[3zaR7{ ;ޟpx jԦ3xЀM6M}h C46APF n-",ʢN>X&mu's&3FЖVѼQoR&aN}MyQ4OAdT԰4^1;i9H\_ŐGVfη?6#')]xtÕxl6ēha1,_xNAj.%zaS&ŠnNg6a6,c$S&%bʣ^- b%lp\@FP/ cris u]HYa  3g|f'5Tٸd| ټs]=|Ɏ3 nrh.$?]]Cim9 [N[is&R숀ԽظH_51 쩚\ <u2A Mvw$Eکg)1 WIg"G"߻:{-y#LԷ^?cRk>B {ɛB~PIvܽk-]Z/KdSs"dнo6$3~%q+o?}&Oec~e/$u W1梪[҂߃92i8#Ot?n/5ihdT^ -kAQWQ,uuA$ Mi*Th6Q#,˦Q&g$fJM*i@СEnK.23^FxӵkQsNqLȂ(֧l'qqZ16'KNROU7 M^_tTZ^󼞏,J)n-E||. 1wQ&-B.Y1{ћ) P 0GZ @옧8|-jǙQqV{kl뼅4XXA͂ck-r;8 J~ʗvzDBmjLȥ*VNK熥e"Z%~Uf„'0w6ONn ;]SӐL(,ZV{w:-{ ZS[/kJT o4-Ff_07--y EA3. aOzjanƃ!ORt QGW`ʮ\lgacMy;k$nWf͇5- '^ G#&&Cvg9o)5֔ςȫAb6Qe!H+!(6srVͺNj <;)˕>3Dn=,x*/ @>ٷjC @jt_"rLm5 4*"h51e2 t4r3*I`'=u4a0rV=# TD]u2H>F"“yjPO'W O5rhQIxIFuL"@E$:L蚊to$s9z}4LO Ξ-KoU#kt^o|ɍ1WVH7C&{Wib0_ꓯq߮mo=coyzv]_N o" cIC`6 @o IENDB`youker-assistant-1.0.1/qml/img/icons/fcitxKey-hover.png000644 001750 001750 00000000556 12312451003 023442 0ustar00saucysaucy000000 000000 PNG  IHDRi?QtEXtSoftwareAdobe ImageReadyqe<IDATxAjPЯB7N.YC7R6_S4)s . ɚy !X;MTWUeҶm, 8yb6D1$<H\,C^b6#0 YQv$~ŤE`yGIӊXw+V:е,d~Y ;G7hqbϼby4hI-r HY&9v]ya-|z~8}.uuIENDB`youker-assistant-1.0.1/qml/img/icons/dynamic.png000644 001750 001750 00000005170 12312451003 022154 0ustar00saucysaucy000000 000000 PNG  IHDR43ztEXtSoftwareAdobe ImageReadyqe< IDATxbp fBt"ߌ*Bq3t01=& a$IBu|JM=( dG7P$m!)@H^s% #? @@2JN>;)CJcpQ됁 ^ k34+v@!;s2`@04TB9p$P~  fF(Й0MHG7w?P#C ?O[<OX XfehFjJ"/F+/":Ѱ d@@wAn@& 9`A-"zk`DS l6@"Z##k κנP9FI6 S\Űҋ-0 ;o##3#Yi÷vz Ȅ%.@` -~@f?bV˝n#$XQ4*$#2T5z( ^JDJeȉ[*BNA,yEl)Z `Q 1('xTt@ej,+ bf#YB% 8C)x !@ ON=0'*8|LBp͇4MVZmYRAznQRL@ƒjQ([0A(@s/5H5R Abǣ6!bYD(^ P;T8@HuT JGO̠[Ň^\({%v&+C^({ Ij>_›vhoEH]hbpw66䅵*~\" }-fRT HxWS \Gk Vbdp5{Ў pV۽ Ў3B FS  $ ؒ?}d,sOa͠M9d%]NJ aXr9$5ym Đa.HypUDXsԌxgPKP:;Oy { fIû1,[,qɈ-խdK_|".dK%Ќy%jB8-aPvKKn-.2%]Q[Р)rZA]} oS,YBNϿ * j"\x}B C$*5!KH l8x2h1zI-<0#" V *Y4Z?RC0xBRz C |-Rz$^ԗP Ң$PBEqe9빷ν.ߙ9?ʩ2L,upҾ:B. FP s=14aP("4. y6A]OE?}ոNRk*6h&2xsz@T5Ĝ*M>mX,loA ~f,LpΕ !-ݿw}J, uQҚ$,m #I @X[ }/R,{G@VrFb%d"1ҵiba&HY 6xqWdp6L5͜X-JZ[F;<%^= 3GsS!ǫq"*#X@PU1Z:'IJBoO6&f…Q,I1eXrS ӏP+_m CW۶>&gç+XV*ȀĸZKL-YZA ymVh!Zq ^H,(("{xh x raޑ!\k)N_& `KJB칌N_vS1՚FO| {(4c. ˈ<5J-2D6{:b? "YIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/SOYO.jpg000644 001750 001750 00000016575 12312451003 023611 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]      1 !AqB Q"2$&a#4b%3cTdE'7*  !1AQaq"24BRb&r#$ĒD3cd%6( ?y6bI.M6YF َhMϷnq";U&_E3Uq€ k82 +6x{5$Hg!—|(>#ΞDž liSרf_ud`h?lIgCOa ־ag> ^^H4$6mSc'Hx)XF-%X̂^c` @0ҢMM=r=nrqb;r`(B#$p=A;Zp$!UMZQDQvrń(DTF*gbMjrdW.yw}i&M3LTuӥ'P#ÛYk.,J14dNZ8Z'EVHIi~M:ͩr|1M[Z_LKav[- ^GE4B qsW;2kLJqn1z5 QXt=9y&AvZ[  KEs!@FSX^Ieɷ (eJoX)r[x6OS~b+K$^=ьXR BPCfoM`š5&lc]ebQu%H|:opBFv+B(_ARaV@%&zMɚg_,vA/[l%7} h(d!_W@\@P7Wq\&^a lon$Jֹ4mDT"w.9 Ar Z0+DUf~dJD1@Ht wЊj$fg y$ڶ%.S=_rORJl mϵZԢBvO+R+Ss:1WyJƔfy_ -{52W`zv̧ײ f3˓ö́Q0m:]ÌɩZmD[ :;X:F,4 ZXh4Wc '4ok L5,NX&("]-BAeퟅ_ :=8.KIVeͨq)/ę"X;(K`|,RSrO9޽M'?kH̸zav/w[Mw'7奐,:)sbsJ b%j9W&)%b,H HD )S ؚY9Ґu숨%~A,OR!D}S`{_~xYn B#)_G ʩ.a[_WMOqW$j'AVLhm/2S[HYwuhbge #sKXxE28pr.D'y|{/ If_p$fT9!WMY^rKMkE-1ImZd;Hd˩z+IJ)B/`f!N;&k1"(h (JWz;G?™k I}Q?eh^ 44 QɒJ䑦=Gf'k)%n'R~[ji,v6:rִ;˻ 1|O ޶]I ZlillEE[ss,{Y}vzByT= PG/&%ZbX]k)~uCEهam }oY6 67/[Hk]: -f#ƺ8ψ.Dž; ʙŸ6* X䓔҅G!7\lo4s)P E{?~ʶW2wE/@'Õ3+(h>mďvnY;/CE Oi{֪-)EH+,IfSAmJD1˳|y;)7+lPp HfR3ؼ2S0G{KkKi6a0-M=hyϩAMFZ]0Ԕd$Q!RʞQ=!sdReG%ByRV9,S#QH " []5INKg I[-!8 䂋Mc*jFDڵzgP%SQ\jljPJR&WZ,FwNaJ8B(,$O@g8yFsL9x^&2Aa.xqseԲD2P6XIXj#ey4]4vbi5xqRӒGӲ kƤN !+z` QLS&V58PqG+\haiV [@ټ';Eznl_꒫d'Gd3|BUmOv/ 4"^jpFL#XTK5L;9!MT% x=9a5D1C=ĀbIuj(Jt;SFKBJ[eL`H*T}@a rv~2DUu7`SyTɉ`'^{ZZ\m̶JN)_ZJ99VЅHT)yf#/pr~}춌ґXd5_sʛnG\/0^Yvc~b{<;1,/i|?3?{U9X|\x/*Q4'ۼo,ٻߵ{Kv`׻rPjv\'u~Nf?L&/Ż#ѮZC׏qxz=zÂ,7x.7.{kslc+N߷?w+˟16^y>@ٿ!ΰY}s]^zip?+c}}vu:_'@x-x+|Wrow}֊m};uNٿv`g/ܾv`>g"wwٳ>[4kɠOϘ?gOp|i?}uZ4v'.zzX\*kpzrs=~coyouker-assistant-1.0.1/qml/img/logo/component/cdrom.png000644 001750 001750 00000001562 12312451003 023464 0ustar00saucysaucy000000 000000 PNG  IHDRhtEXtSoftwareAdobe ImageReadyqe<IDATxb?u&2}/?e -[KI10!Hñ(1\ ?? P5[X^|p`>VVVW/_00LpokqYTC , 'O$$$.]2œsW`M.ePUex9:ˏ>yq7 OafQb8} CcsEeBk;ƌ,߾g`ba8 dЕϞ>b慘wo2ܽwBOOŋ?}bsÛׯ~ |1D'mp'o3ZW >bȈP/c`Pa#÷>Ȭ~ۮ~_޽򿷷@a 2d@Ow;>~I>~pRFH۷ _?bؽg?77؂ {r<<@=P?fefwd 96v6W|Ǘn(/^0aVf66F@w &~h"7 v EUq ngPgx Ü|aa& e1hr4P)lrf?C?0- /`b'ï?~pg5i^3? `ĐPPWkgNuIi qOmlV!,}t?gS{IENDB`youker-assistant-1.0.1/qml/func/common/GroupBox.qml000644 001750 001750 00000001247 12312451003 022637 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import "private" as Private import StyleItemType 0.1 Private.GroupBox { id: groupbox implicitWidth: Math.max(200, contentWidth + backgroundItem.implicitWidth) implicitHeight: contentHeight + backgroundItem.implicitHeight + 4 property bool flat: false background : StyleItem { id: styleitem elementType: "groupbox" anchors.fill: parent text: groupbox.title hover: checkbox.containsMouse on: checkbox.checked hasFocus: checkbox.activeFocus activeControl: checkable ? "checkbox" : "" sunken: !flat contentHeight: (title.length > 0 || checkable) ? 24 : 4 } } youker-assistant-1.0.1/qml/img/skin/progress-bg.png000644 001750 001750 00000003324 12312451003 022612 0ustar00saucysaucy000000 000000 PNG  IHDR#<ZAtEXtSoftwareAdobe ImageReadyqe<TiTXtXML:com.adobe.xmp uIDATxb[s3a) , 5:+Lbb`P: } BG}w9ïQXN xEPrˠ+]y4ʢVlMќ?H4bѐ H s4t]A]hFk&h h 0lLm%_FC` o4ҏ@Nv3hص (nN\AcZ5/%!$BBH/I% i.%a! g!!ّpJHT-A0JPH0=A@>\׃sAm??ԗsAiRwIZD"!"D@D!"ش/:YxKoDF"("N-끏ђh=Q={B$"=GD3zb!YKrFODzAǞ(n6Ώt>N)O7 0ZAPU&=A5;` mJP"Yv6!p5ߗ}̲;۞ >?&W#v8 ׻>uG?Ku1kMr$ 1@1#@#1@1~{u|cJt/ VF+=Q](cz^0Ũ_( Ti@{{\3i6@6xQ# :FZx;y6 kF_w0 nj@(RIENDB`youker-assistant-1.0.1/qml/func/cleaner/CacheItem.qml000644 001750 001750 00000022255 12312451003 023037 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import QtQuick 1.1 import "../common" as Common Item { id: container property string fontName: "Helvetica" property int fontSize: 12 property color fontColor: "black" property bool fontBold: false property string text: "" property string descript: "" property string size_num: "" property int item_index property string bgImage: "../../img/icons/green.png" property string bgImage2: "../../img/icons/blue.png" property string bgImageSelected: '../../img/icons/list_item_selected.png' property string bgImagePressed: '../../img/icons/list_item_pressed.png' property bool selected: false property bool selectable: false // property int textIndent: 0 property bool checkbox_status: true property bool split_status: false property string btn_flag: "one_key_scan" property string itemFlag//cache标记 property string browserFlag//浏览器标记 signal change_num(bool check_status, string browser_flag) //作为子项checkbox,当状态改变时需要通过信号传给父项以进行个数统计 signal clicked(string path); width: 800//850 height: 30 clip: true onSelectedChanged: { selected ? state = 'selected' : state = ''; } onCheckbox_statusChanged: { checkbox.checked=checkbox_status; } //当父项传进来的check值改变时,强制改变全部子项的check值以进行统一控制 function get_last_name(str) { var need_str = str; need_str = need_str.substr(need_str.lastIndexOf("/") + 1, need_str.length - need_str.lastIndexOf("/")); return need_str; } // BorderImage { // id: background // anchors { // left: parent.left // leftMargin: 20 // } //// border { top: 9; bottom: 36; left: 35; right: 35; } //// source: bgImage // border {left: 35; right: 35; } // source: (container.item_index%2 == 0) ? bgImage : bgImage2 // anchors.fill: parent // } Rectangle { id: background anchors.fill: parent color: (container.item_index%2 == 0) ? "#d7ecfb" : "transparent" // color: (container.item_index%2 == 0) ? "#d0eafb" : "#d7eefd" // border.color: "black" // border.width: 5 // radius: 10 } Common.CheckBox { id: checkbox // width: 30 checked: true anchors.verticalCenter: parent.verticalCenter anchors.left: parent.left anchors.leftMargin: 30 onCheckedChanged: { //单个checkbox状态改变时,先将状态通过信号change_num()传递给BrowserCookies.qml container.change_num(checkbox.checked, container.browserFlag); if (checkbox.checked) { if (btn_flag == "cache_work") { // if(container.itemFlag == "apt") { var aptlist = systemdispatcher.get_cache_args(); var word_flag = "false"; for (var i=0; i_ *bb"Xt RJIݺnf~K|!qڳ眙3gΝ;eЕ)籰V^CJ[nŽ{yj].!pW! L=K$I>t:+|כ敛Qn#|)8=٢+!֨<>8xsss|iSب ) ȣcүHZb͚580:=uK#lDZŜҍ,Khh6yX\ ԵwuA#@ jD/@ja%u#J$1枔ދ.'bQYr&䄡nA^gW"˗ p.cCBk;X(+cKQ*hCb[EC5}5p)14 )6[ЙZM~}1W2Bc w&6eU ``/ x!X^(d# \h,UP" dzw~K!!rBϢ=Jo` IIaEGiFD'6+;IMYPTtCƂ5V0[!C)v@Hs!ao0lf@2,Pjǀ[45EvHi9R4NSMf=cXX8mD՛kN J<22c2 3H> `)'j8E0lN&Ƚ<VjOwoAISN'av'IGͼi;ԛOǼss $619HӆJj)vZCx啗qw`^SDmM'1+/K ]c!{Q|v_ذGAQATOXFB#f = Dk)Ul۷/avf_3_ Lb6 7kzh ƀdK`+Z-8 x#&b xtAB& 휘H2Yk=J[L֏BȡV(;Wr}#iUFIg.U7~%EN?eֈ4L7Ě<#nez[tQvdLV1]+G(:S8@07L09e/Z." TxcvN B3Y.I+bJW[VBZB᳗qS{T\gTKfјs>VEIh*o 0*ź&B}Zc@I۷N:-,Ds~[R:eGJ[3S*JN-@uCFj`!%^5j}]! *7uɾUnC3",d8[2V%4_ MZJy۝yҏDCZs"Q쉓&>"vfڊR)U+3Gj܋G%+G%)O-ꊹv合>Ъm"JuJ&PRHL h>b=v\ \ ALAc(8ƴY/3B"NX8P"]ӱ{'Y#Y!x#9%%3HDN#Hkz3ښ(=*9WH Ҏ--FyvjEJGkŴŒۚh}՚;0 m$; uF?!=oC]nHf90,qdtj[g\>$L8H$NLDoŊ:C'@\FYQ1s|?+Q`TDv+ptB,/V({y 0n[02N?LU_e:2b=Z]Yo6Uk4j,[;aYHךs6Cn1ŭ*ctt˗/&]tV~kVQ4˙dܬA"Merx>QH3 %j†_ Xw.yCʕ+`-e۾Achh7}AM}c#Y7I^Cɬ"w*¸X;Ah>V8Vޚt SkinCenter 0 0 488 282 Dialog 7 7 26 20 10 25 17 15 40 25 231 17 Local skin 10 60 102 68 130 60 102 68 250 60 102 68 370 60 102 68 370 150 102 68 10 150 102 68 130 150 102 68 250 150 102 68 260 240 94 24 370 240 94 24 youker-assistant-1.0.1/backends/youker-assistant-daemon/src/beautify/utils.py000644 001750 001750 00000003466 12312451003 030021 0ustar00saucysaucy000000 000000 #!/usr/bin/python # -*- coding: utf-8 -*- ### BEGIN LICENSE # Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd # This program is free software: you can redistribute it and/or modify it # under the terms of the GNU General Public License version 3, as published # by the Free Software Foundation. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranties of # MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR # PURPOSE. See the GNU General Public License for more details. # # You should have received a copy of the GNU General Public License along # with this program. If not, see . ### END LICENSE import os # get ~ dir def get_home_dir(): return os.path.expanduser('~') # check dirs with given filters and filtertype def check_dirs(dirs, filters, filtertype): result = [] try: for onedir in dirs: if os.path.isdir(onedir): for f in os.listdir(onedir): if use_filters(os.path.join(onedir, f), filters, filtertype): result.append(f) except: pass return result # check the fpathdir with filters filtertype: True == include, False == exlude def use_filters(fpath, filters, filtertype): # not a directory if os.path.isdir(fpath) == False: return False if filtertype: for onefilter in filters: if os.path.exists(os.path.join(fpath, onefilter)): continue else: return False return True else: for onefilter in filters: if os.path.exists(os.path.join(fpath, onefilter)): return False else: continue return Trueyouker-assistant-1.0.1/qml/img/icons/skyblue.png000644 001750 001750 00000001221 12312451003 022177 0ustar00saucysaucy000000 000000 PNG  IHDR^T:tEXtSoftwareAdobe ImageReadyqe<3IDATxbzaC&_ DkçO? ~@`0$Z1' # ) @cb ƶMg;Z2p03BBϿ4/(~;m,훕 g IfK39?C`E`9v0  Ǝ-ePrϟ ii oZ9a1 qoZ5 LPzi?,: e 6D&RAaГ`鸞 r(dF{nCR6߅dlRy{)<hn>|cciZR%4lGeW@`xt'pv'pi'h%'/|w`[~cS""=QZ7E 7D0Oz^Wj $ UvS|Ÿj$Xjk bWM9UheCTj TO{Q:*9%+Ŀ6EDRIENDB`youker-assistant-1.0.1/qml/img/logo/Manufacturer/ACER.jpg000644 001750 001750 00000011465 12312451003 023523 0ustar00saucysaucy000000 000000 ExifII*Duckyd)http://ns.adobe.com/xap/1.0/ AdobedF]  1 !qAQ2B"#$4 DTE!1AqQa"B2$r3S4DT& ?Ld3a cxH&{"f=\H&}=):{0KCrer07$X ːvvwTw1Mi2r*) ĊR apE `#0”pI/ ɕ˞‹ R 0ܐb(.W.AQޙS7Ť?7g+H&cمg݀\ç Q$Po7&W.{ .L1H .(r@e\`waGzeO H6_\XE;v2^]](H.*J?=Arϊ8r,>`-b>G9NaErm3~cB'3EC1!¬:XPY^AQu]FZp?K @+PineoMcMz/mlpkt[[^{Q7J펍(2!qm)ES>vk};M!ɓss!BŌ]F$%F疵G:[gWɢЫ|-5ޕFxOڒ7-!(SOi5m˵:[ jz;+#@Os ]00r imw4!Y9,Ći5ڹ=k-ʋQb$2 5 pr[O Jk @7Bz0Â:|wn)Y cx1cv \,ɻHѭU ~a]P?o9wigH _2q_Do isꡭ@ck#nC'R:P_啤bQ i52w'Dq4-Ե}E37j^j/Zz˥J E{q'pM2msqf|3UBD-n .[WV#}5w(Qۉ RP)TQC 5%J(fTfVg!DxF]`j\7,XB3^bֲfduKnE۰jgSS9đNO&-x4Vֻ/xڽ>/N gs!t/lRS:fo!SdPd;U>1@Ge樞˂h- ,__'qM PiiVnf"\d4\KH06]YS:+{ə+l ZnSVڸm ˬ\IGR{EP56n]d273iK@J+nZginS FTJŽ Mv RJvWUvnPi58&Nvb/h/\6Gg7bZR+Y1+$K2$^O!IPG?&J"!v>ھz D =ڎNj\ʞY~1;/:+رrƀ;׽U>,LSx/<\yhܭfݫUρ0=C$eE0q JfF(,ؑM%BSŷPSE`n& KpĝgOXDQAkⱝ uV9sLrem>*Ee{xM)HdZ~x@,'stٙx8b-HʡHIH pDJ?rl t?Pju&ddН}ѴLl 0jB"z&90"=x̒iQy(ck-S.ڷ5T%fQy@ ?b\ϔ$NMZ|no]hល٧ґ܈'Ӑ$Rc@9BqkJsA}? ^Oc$6RtR(e4nXc!KDH/yhyM cQ*P^Z;|Tv$F.BraCߋ#x 46f% =^Y%lM,ekwGSEtwfO\fەŦbPi`?7 1[n^ߝň28et<Ţ"@*\qmЦrї-ejO3Y U o-C$i# }26ڧg9Hn=J~T =ozۭ%E79G ޝ/ Uk!u:Ux;5;$0Rp? 5RRnl\?Η1PR1/˦ &aﳔOSv.5]ܺ4aa199*D-ї*fϼmceG&f7nmEssʃf>L%7%/( RfMxd YHFֽ[: ܽ_=#%%ӥdera$?47ޏ#4'{?nktB#ˀ5+iq&Vq%1W'~k 2+gˡ},LSx/youker-assistant-1.0.1/src/skinswidget.cpp000644 001750 001750 00000027542 12312451003 021177 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "skinswidget.h" #include #include SkinsWidget::SkinsWidget(QSettings *mSettings, QWidget *parent) :QWidget(parent) { this->setWindowOpacity(1.0); this->setAttribute(Qt::WA_DeleteOnClose); this->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); // this->setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog); // this->setAttribute(Qt::WA_TranslucentBackground); pSettings = mSettings; skinName = QString(""); mouse_press = false; is_change = false; current_page = 1; //皮肤 1 皮肤 2 tip_list<initTitleBar(); this->initSkinsCenter(); this->initBottomBar(); QVBoxLayout *mainLayout = new QVBoxLayout(); mainLayout->addLayout(titleLayout); mainLayout->addLayout(centerLayout); mainLayout->addLayout(bottomLayout); mainLayout->addStretch(); mainLayout->setSpacing(0); mainLayout->setContentsMargins(0, 0, 0, 0); setLayout(mainLayout); this->showSkin(QString::number(current_page, 10)); QDesktopWidget* desktop = QApplication::desktop(); move((desktop->width() - this->width())/2, (desktop->height() - this->height())/2); this->resize(620, 445); } void SkinsWidget::initTitleBar() { title_label = new QLabel(); title_icon_label = new QLabel(); close_button = new QLabel(); QPixmap title_pixmap(":/pixmap/image/youker-assistant.png"); title_icon_label->setPixmap(title_pixmap); title_icon_label->setFixedSize(16, 16); title_icon_label->setScaledContents(true); title_label->setFixedHeight(30); title_label->setText(tr("Youker Skin Center"));//优客皮肤中心 close_button->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); titleLayout = new QHBoxLayout(); titleLayout->addWidget(close_button, 0, Qt::AlignVCenter); titleLayout->addStretch(); titleLayout->addWidget(title_icon_label, 0, Qt::AlignVCenter); titleLayout->addWidget(title_label, 0, Qt::AlignVCenter); titleLayout->setSpacing(5); titleLayout->setContentsMargins(10, 0, 5, 0); title_label->setStyleSheet("color:white;"); close_button->installEventFilter(this); } void SkinsWidget::initSkinsCenter() { //皮肤列表 skin_list<<":/skin/image/0"<<":/skin/img/skin/1"<<":/skin/image/2"<<":/skin/image/3"<<":/skin/image/4"<< ":/skin/image/5"<<":/skin/image/6"<<":/skin/image/7"<<":/skin/image/8"<<":/skin/img/skin/9"<< ":/skin/image/10"<<":/skin/image/11"<<":/skin/image/12"<<":/skin/image/13"<<":/skin/image/14"<< ":/skin/image/15"<<":/skin/image/16"<<":/skin/image/17"<<":/skin/image/18"<<":/skin/image/19"<< ":/skin/image/20"<<":/skin/image/21"<<":/skin/image/22"<<":/skin/image/23"; centerLayout = new QGridLayout(); centerLayout->setSpacing(5); centerLayout->setContentsMargins(5, 35, 5, 0); for(int i=0; i<8; i++) { SkinGrid *change_skin_widget = new SkinGrid(); change_skin_list.append(change_skin_widget); connect(change_skin_widget, SIGNAL(skinSignal(QString)), this, SLOT(verifyToUseSkin(QString))); centerLayout->addWidget(change_skin_widget, i/4, i%4); } int skin_list_count = skin_list.size(); page_count = skin_list_count / 8; page_count_point = skin_list_count % 8; if(page_count_point > 0) { page_count = page_count + 1; } } void SkinsWidget::initBottomBar() { QSignalMapper *signal_mapper = new QSignalMapper(this); QList *button_list = new QList(); for(int i=0; isetFixedWidth(20); page_button->setText(QString::number(i+1, 10)); page_button->setStyleSheet("color:rgb(0, 120, 230); background:transparent;"); page_button->setCursor(Qt::PointingHandCursor); connect(page_button, SIGNAL(clicked()), signal_mapper, SLOT(map())); signal_mapper->setMapping(page_button, page_button->text()); button_list->push_back(page_button); } first_page_button = new QPushButton(); previous_page_button = new QPushButton(); next_page_button = new QPushButton(); last_page_button = new QPushButton(); first_page_button->setFixedWidth(60); previous_page_button->setFixedWidth(60); next_page_button->setFixedWidth(60); last_page_button->setFixedWidth(60); first_page_button->setCursor(Qt::PointingHandCursor); previous_page_button->setCursor(Qt::PointingHandCursor); next_page_button->setCursor(Qt::PointingHandCursor); last_page_button->setCursor(Qt::PointingHandCursor); first_page_button->setStyleSheet("color:rgb(0, 120, 230); background:transparent;"); previous_page_button->setStyleSheet("color:rgb(0, 120, 230); background:transparent;"); next_page_button->setStyleSheet("color:rgb(0, 120, 230); background:transparent;"); last_page_button->setStyleSheet("color:rgb(0, 120, 230); background:transparent;"); first_page_button->setText(tr("Home"));//首页 previous_page_button->setText(tr("Previous"));//上一页 next_page_button->setText(tr("Next"));//下一页 last_page_button->setText(tr("Last"));//末页 connect(first_page_button, SIGNAL(clicked()), signal_mapper, SLOT(map())); connect(previous_page_button, SIGNAL(clicked()), signal_mapper, SLOT(map())); connect(next_page_button, SIGNAL(clicked()), signal_mapper, SLOT(map())); connect(last_page_button, SIGNAL(clicked()), signal_mapper, SLOT(map())); signal_mapper->setMapping(first_page_button, "first"); signal_mapper->setMapping(previous_page_button, "previous"); signal_mapper->setMapping(next_page_button, "next"); signal_mapper->setMapping(last_page_button, "last"); connect(signal_mapper, SIGNAL(mapped(QString)), this, SLOT(showSkin(QString))); bottomLayout = new QHBoxLayout(); bottomLayout->addStretch(); bottomLayout->addWidget(first_page_button, 0, Qt::AlignVCenter); bottomLayout->addWidget(previous_page_button, 0, Qt::AlignVCenter); for(int i=0; icount(); i++) { QPushButton *page_button = button_list->at(i); bottomLayout->addWidget(page_button, 0, Qt::AlignVCenter); } bottomLayout->addWidget(next_page_button, 0, Qt::AlignVCenter); bottomLayout->addWidget(last_page_button, 0, Qt::AlignVCenter); bottomLayout->addStretch(); bottomLayout->setSpacing(2); bottomLayout->setContentsMargins(0, 10, 0, 0); } void SkinsWidget::showSkin(QString current_skin) { if(current_skin == "first") { current_page = 1; } else if(current_skin == "previous") { if(current_page > 2) { current_page = current_page - 1; } } else if(current_skin == "next") { if(current_page < page_count) { current_page = current_page + 1; } } else if(current_skin == "last") { current_page = page_count; } else { bool ok; current_page = current_skin.toInt(&ok, 10); } if(current_page == 1) { next_page_button->show(); last_page_button->show(); first_page_button->hide(); previous_page_button->hide(); } else if(current_page == page_count) { first_page_button->show(); previous_page_button->show(); next_page_button->hide(); last_page_button->hide(); } else { first_page_button->hide(); previous_page_button->show(); next_page_button->show(); last_page_button->hide(); } int previous_total_page = (current_page - 1)*8; int tip_index = previous_total_page; for(int i=0; ishowSkinGrid(":/skin/image/"+ QString::number(previous_total_page++, 10), tip_list.at(tip_index++)); } } void SkinsWidget::verifyToUseSkin(QString skinName) { //开始更换皮肤对话框的皮肤 this->skinName = skinName; is_change = true; update(); //开始触发信号,使得QML开始更新皮肤,截取图片名字 QStringList splitList = skinName.split("/"); QString picName = splitList.at(splitList.length() - 1); emit skinSignalToQML(picName); } void SkinsWidget::paintEvent(QPaintEvent *) { if(!is_change) { //初始化皮肤对画框的皮肤 pSettings->beginGroup("skin"); skinName = pSettings->value("background").toString(); skinName = QString(":/skin/image/") + skinName; pSettings->endGroup(); pSettings->sync(); } QPainter painter(this); painter.drawPixmap(rect(), QPixmap(skinName)); QPainter painter2(this); QLinearGradient linear2(rect().topLeft(), rect().bottomLeft()); linear2.setColorAt(0, Qt::white); linear2.setColorAt(0.5, Qt::white); linear2.setColorAt(1, Qt::white); painter2.setPen(Qt::white); painter2.setBrush(linear2); painter2.drawRect(QRect(0, 30, this->width(), this->height()-30)); QPainter painter3(this); painter3.setPen(Qt::gray); static const QPointF points[4] = {QPointF(0, 30), QPointF(0, this->height()-1), QPointF(this->width()-1, this->height()-1), QPointF(this->width()-1, 30)}; painter3.drawPolyline(points, 4); } //void SkinsWidget::resizeEvent(QResizeEvent *event) { // wheel=QImage(event->size(),QImage::Format_ARGB32_Premultiplied); // wheel.fill(palette().background().color()); // update(); //} bool SkinsWidget::eventFilter(QObject *obj, QEvent *event) { if(obj == close_button) { if(event->type() == QEvent::Enter){ close_button->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ close_button->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ close_button->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->hide(); }else{ close_button->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } return QObject::eventFilter(obj, event); } void SkinsWidget::mousePressEvent( QMouseEvent * event ) { if(event->button() == Qt::LeftButton) { mouse_press = true; } move_point = event->globalPos() - pos(); } void SkinsWidget::mouseReleaseEvent(QMouseEvent *) { mouse_press = false; } void SkinsWidget::mouseMoveEvent(QMouseEvent *event) { if(mouse_press) { QPoint move_pos = event->globalPos(); move(move_pos - move_point); } } youker-assistant-1.0.1/qml/img/weather/n2.gif000644 001750 001750 00000005240 12312451003 021352 0ustar00saucysaucy000000 000000 GIF89a008Z7Y~2P0Nغɳ€㙢݀Ħ°ɸηּʑӮ1S\k}~|ī¯ƠʾϽvɪǵ.O0Q1R/N2S8Z3T1O4U5V;]5S%Be5U{7W~6V|7W}8X~9Y:Z7Uy8Vz+B^H\tRe|nyřιˮ/N2R/M3S5V0M7Z1O5U6V2O3Q7W8X4R4Q9Y5S6T=_8V6S;[!?`7T#Ac!>]'Ef)Gi/Pt-Kn2Sx1Rv.Lo4V{-Jj&>Z5W|7Z7Y6X}4Sw1Oq8ZOm;Qj?UnWjhyąɡ1R0M1O2P:\0K6T:Y?a;Z@a<[=\:X>]6Q4N;Y#De]ѣM] 0_`*?ϿHx#7I\\",SP< ,[lfx2t2\ $ӡ!A 2H O\a1&3$a&$I2S$3 RHЂ KX%:1KPXF,A: lż L8Bx& x85 vvB~* Ґ3Ѐ<A6=)Qx0,>q v M2L(RO⧣(X k3 nsA`JJ<.;*g6.ӡB`7 SAERp 4 % 7fs \' P7Z ѰZX20d8q[8 P@J vb0;UJ+r5q MLxl)!Rv8!uE0K"UP 2k`CmQ]*J rC2A5a'7#숅. */ #ifndef ALERTDIALOG_H #define ALERTDIALOG_H #include #include namespace Ui { class AlertDialog; } class AlertDialog : public QWidget { Q_OBJECT public: explicit AlertDialog(QWidget *parent = 0); ~AlertDialog(); void paintEvent(QPaintEvent *); void setMSG(QString); private: Ui::AlertDialog *ui; }; #endif // ALERTDIALOG_H youker-assistant-1.0.1/src/locationdialog.cpp000644 001750 001750 00000023216 12312451003 021626 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "locationdialog.h" #include "ui_locationdialog.h" #include #include #include #include LocationDialog::LocationDialog(QWidget *parent) : QDialog(parent), ui(new Ui::LocationDialog) { ui->setupUi(this); ui->comboBox->setFocus(); sedispather = new SessionDispatcher; flag = false; yahoo = false; selectCity = ""; this->setAttribute(Qt::WA_DeleteOnClose);//防止内存泄漏 this->setWindowFlags(Qt::FramelessWindowHint); //this->setWindowFlags(Qt::ToolTip | Qt::FramelessWindowHint); this->setAttribute(Qt::WA_TranslucentBackground); ui->btn_close->installEventFilter(this); ui->comboBox->installEventFilter(this); ui->searchBtn->installEventFilter(this); ui->okBtn->installEventFilter(this); ui->quitBtn->installEventFilter(this); ui->btn_close->setStyleSheet("border-image:url(:/pixmap/image/closeBtn.png)"); ui->okBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/ok.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/ok-hover.png);}"); ui->quitBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/quit.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/quit-hover.png);}"); ui->searchBtn->setStyleSheet("QPushButton {border-image:url(:/pixmap/image/quit.png);}" "QPushButton:hover{border-image:url(:/pixmap/image/quit-hover.png);}"); //------------------ // this->loadgif = new QMovie("/home/saucy/work/youker-assistant/src/image/loading.gif"); // ui->loadingDiv->setPixmap(QPixmap("/home/saucy/work/youker-assistant/src/image/div.png")); // ui->loadingText->setStyleSheet("QLabel{background-color:white;}"); ui->loadingDiv->hide(); ui->loadingText->hide(); // ui->loading->setMovie(this->loadgif); ui->loading->hide(); //-------------------- connect(ui->comboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(changeSelectCity(QString))); } LocationDialog::~LocationDialog() { delete ui; } //void LocationDialog::startLoading(const QString &loadingText){ // ui->loadingDiv->setGeometry(0,0,this->width() - 2,this->height() - 30); // ui->loadingDiv->show(); // ui->loading->setGeometry(this->width() / 2 - 25, 0, this->width(), this->height() - 60); // this->loadgif->start(); // ui->loading->show(); // ui->loadingText->setGeometry(ui->loading->x() + 25 - 150,ui->loading->y() + 120, 300, 20); // ui->loadingText->setText(loadingText); // ui->loadingText->show(); //} //void LocationDialog::stopLoading(){ // ui->loading->setGeometry(0,0,1,1); // ui->loadingDiv->setGeometry(0,0,1,1); // ui->loadingText->setGeometry(0,0,1,1); // ui->loadingText->setText(""); // this->loadgif->stop(); // ui->loading->hide(); // ui->loadingDiv->hide(); // ui->loadingText->hide(); //} void LocationDialog::changeSelectCity(QString currentName) { selectCity = currentName; } QStringList LocationDialog::list_city_names(QString inputText) { QFile locationFile("/usr/lib/python2.7/dist-packages/youker-assistant-daemon/src/weather/location.txt"); QStringList listCity; if(locationFile.exists() && locationFile.open(QFile::ReadOnly)) { QTextStream in(&locationFile); QString line; QString keys; QString values; while(!in.atEnd()) { line = in.readLine(); if (line.contains(inputText)) { keys = line.split(':')[0]; values = line.split(':')[1]; listCity.append(keys); cityInfo[keys] = values; } } locationFile.close(); } return listCity; } void LocationDialog::on_searchBtn_clicked() { QString yahoo_str = ui->comboBox->currentText(); QString content = ui->comboBox->currentText().replace(" ", ""); if(!content.isEmpty()) { QStringList listname = list_city_names(content); if(!listname.isEmpty()) { yahoo = false; flag = true; ui->comboBox->clear(); ui->comboBox->addItems(listname); selectCity = ""; selectCity = ui->comboBox->currentText(); } else { // this->startLoading("正在获取城市列表...."); listname = sedispather->search_city_names_qt(yahoo_str); QStringList geonameidList = sedispather->get_geonameid_list_qt(); QStringList latitudeList = sedispather->get_latitude_list_qt(); QStringList longitudeList = sedispather->get_longitude_list_qt(); if(!listname.isEmpty()) { yahoo = true; flag = true; ui->comboBox->clear(); ui->comboBox->addItems(listname); selectCity = ""; selectCity = ui->comboBox->currentText(); int len = listname.length(); if(len == geonameidList.length()) { for (int i=0; i < len; i++) { yahooInfo[listname[i]] = geonameidList[i]; latInfo[listname[i]] = latitudeList[i]; lonInfo[listname[i]] = longitudeList[i]; } } } // this->stopLoading(); } } } void LocationDialog::on_quitBtn_clicked() { yahoo = false; this->close(); } void LocationDialog::on_okBtn_clicked() { if(flag) { flag = false; QString currentCity = ui->comboBox->currentText(); if(!currentCity.isEmpty()) { if(selectCity != currentCity) { //警告: 请输入城市名字,点击'查找'按钮进行查找! QMessageBox::warning(NULL, tr("Warning:"), tr("Please input city name and click 'find' button to find!"), QMessageBox::Ok); } else { QString cityId; QString lat = "NA"; QString lon = "NA"; if(yahoo) { yahoo = false; QString tmpId = yahooInfo[currentCity].toString(); lat = latInfo[currentCity].toString(); lon = lonInfo[currentCity].toString(); cityId = sedispather->get_yahoo_city_id_qt(tmpId); } else { cityId = cityInfo[currentCity].toString(); } if(!cityId.isEmpty()) { emit sendCityInfo(currentCity, cityId, lat, lon); } } } this->accept(); } else { //"警告: 请输入城市名字,点击'查找'按钮进行查找! QMessageBox::warning(NULL, tr("Warning:"), tr("Please input city name and click 'search' button to find!"), QMessageBox::Ok); } } bool LocationDialog::eventFilter(QObject *obj, QEvent *event) { if(obj == ui->btn_close){ if(event->type() == QEvent::Enter){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::Leave){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); }else if(event->type() == QEvent::MouseButtonPress){ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn-hover.png")); }else if(event->type() == QEvent::MouseButtonRelease){ QMouseEvent *me = (QMouseEvent *)event; QLabel *lb = (QLabel *)obj; if(me->x() > 0 && me->x() < lb->width() && me->y() > 0 && me->y() < lb->height()){ this->close(); }else{ ui->btn_close->setPixmap(QPixmap(":/pixmap/image/closeBtn.png")); } } else { return QObject::eventFilter(obj, event); } } if(obj==ui->comboBox||obj==ui->searchBtn ||obj==ui->okBtn ||obj==ui->quitBtn) { if(event->type() == QEvent::MouseButtonPress) { QMouseEvent *me = (QMouseEvent *)event; dragPos = me->globalPos() - frameGeometry().topLeft(); }else if(event->type() == QEvent::MouseButtonRelease) { setWindowOpacity(1); } } return QObject::eventFilter(obj, event); } void LocationDialog::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { dragPos = event->globalPos() - frameGeometry().topLeft(); event->accept(); } } void LocationDialog::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton ) { move(event->globalPos() - dragPos); setWindowOpacity(1); //0.5 } event->accept(); } void LocationDialog::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { setWindowOpacity(1); } event->accept(); } youker-assistant-1.0.1/qml/img/icons/fontbtn.png000644 001750 001750 00000003324 12312451003 022201 0ustar00saucysaucy000000 000000 PNG  IHDR#<ZAtEXtSoftwareAdobe ImageReadyqe<TiTXtXML:com.adobe.xmp uIDATxb[s3a) , 5:+Lbb`P: } BG}w9ïQXN xEPrˠ+]y4ʢVlMќ?H4bѐ H s4t]A]hFk&h h 0lLm%_FC` o4ҏ@Nv3hص (nN\AcZ5/%!$BBH/I% i.%a! g!!ّpJHT-A0JPH0=A@>\׃sAm??ԗsAiRwIZD"!"D@D!"ش/:YxKoDF"("N-끏ђh=Q={B$"=GD3zb!YKrFODzAǞ(n6Ώt>N)O7 0ZAPU&=A5;` mJP"Yv6!p5ߗ}̲;۞ >?&W#v8 ׻>uG?Ku1kMr$ 1@1#@#1@1~{u|cJt/ VF+=Q](cz^0Ũ_( Ti@{{\3i6@6xQ# :FZx;y6 kF_w0 nj@(RIENDB`youker-assistant-1.0.1/qml/func/common/StatusBar.qml000644 001750 001750 00000000300 12312451003 022767 0ustar00saucysaucy000000 000000 import QtQuick 1.1 import StyleItemType 0.1 Item { width: parent ? parent.width : 200 height: 24 StyleItem { anchors.fill: parent elementType: "statusbar" } } youker-assistant-1.0.1/src/skingrid.cpp000644 001750 001750 00000004534 12312451003 020452 0ustar00saucysaucy000000 000000 /* * Copyright (C) 2013 ~ 2014 National University of Defense Technology(NUDT) & Kylin Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "skingrid.h" SkinGrid::SkinGrid(QWidget *parent) :QWidget(parent) { this->setFixedSize(140, 160); mouse_press = false; mouse_enter = false; skin_icon = new QLabel(); skin_title = new QLabel(); this->setCursor(Qt::PointingHandCursor); skin_icon->setScaledContents(true); skin_icon->setFixedSize(100, 65); QVBoxLayout *background_layout = new QVBoxLayout(); background_layout->addWidget(skin_icon, 0, Qt::AlignCenter); background_layout->addWidget(skin_title, 0, Qt::AlignCenter); background_layout->setSpacing(5); background_layout->setContentsMargins(0, 10, 0, 10); this->setLayout(background_layout); } SkinGrid::~SkinGrid() { } void SkinGrid::showSkinGrid(QString picName, QString skinName, bool flag) { if(flag) { QString background_name = picName + "_bg"; this->picName = background_name; QPixmap pixmap(background_name); skin_icon->setPixmap(pixmap); skin_title->setText(skinName); } } void SkinGrid::paintEvent(QPaintEvent *) { if(mouse_enter) { QPainter painter(this); QPen pen(QColor(210, 225, 230)); painter.setPen(pen); painter.drawRoundRect(0,0,this->width()-1, this->height()-1, 5, 5); } } void SkinGrid::mousePressEvent(QMouseEvent * event) { if(event->button() == Qt::LeftButton) { mouse_press = true; emit skinSignal(picName);//触发信号开始更换皮肤 } } void SkinGrid::mouseReleaseEvent(QMouseEvent *) { mouse_press = false; } void SkinGrid::enterEvent(QEvent *event) { mouse_enter = true; update(); } void SkinGrid::leaveEvent(QEvent *event) { mouse_enter = false; update(); } youker-assistant-1.0.1/qml/img/weather/d3.gif000644 001750 001750 00000005610 12312451003 021342 0ustar00saucysaucy000000 000000 GIF89a00<>AAAACCBDFFIMOPX]QWqHrv79:::=;=<>>==?>@?BBACDFGJJHMOORRTVVIYKZZU]_cgf_Xiemhswpiv}fƃpԇt׌ޡKo^x܉_xiĸƛӟuŻj՗ιWڒܽG53@Nev&&*݄!,00+ e*\Ȱr8 <0!mK1ˤ9Cɓg#c3QLKawҴicM@ }_k^ nQghʵNpYucם9y&G=*.9rza35sx(;<ԼWv{8vvDzб#sg;:;v~C6prB玏x|D&Ξo rAh+7D!w ځCyH?;qCA1G9,^x(7yD(a|D!;cO= c=#yI;lbB!||a#98g<ϑF#=c azXc|dGZNG9C=S=cOE$z\rǖw吸LO$|2EG~ Gs#=h0 믂 "N<"=2lӫ m + =0l=(C12