亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? statusbarbase.cpp

?? Amarok是一款在LINUX或其他類UNIX操作系統中運行的音頻播放器軟件。 經過兩年開發后
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*************************************************************************** *   Copyright (C) 2005 by Max Howell <max.howell@methylblue.com>          * *   Copyright (C) 2005 by Ian Monroe <ian@monroe.nu>                      * *                                                                         * *   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 Steet, Fifth Floor, Boston, MA  02111-1307, USA.             * ***************************************************************************/#define DEBUG_PREFIX "StatusBar"#include "amarok.h"#include "debug.h"#include "squeezedtextlabel.h"#include "statusBarBase.h"#include "threadmanager.h"#include "enginecontroller.h"#include <kio/job.h>#include <kiconloader.h>#include <klocale.h>#include <kstdguiitem.h>#include <qapplication.h>#include <qdatetime.h>      //writeLogFile()#include <qfile.h>          //writeLogFile()#include <qpushbutton.h>#include <qlabel.h>#include <qlayout.h>#include <qmessagebox.h>#include <qobjectlist.h> //polish()#include <qpainter.h>#include <qpalette.h>#include <qprogressbar.h>#include <qstyle.h>   //class CloseButton#include <qtimer.h>#include <qtoolbutton.h>#include <qtooltip.h> //QToolTip::palette()#include <qvbox.h>//segregated classes#include "popupMessage.h"#include "progressBar.h"namespace KDE {namespace SingleShotPool{    static void startTimer( int timeout, QObject *receiver, const char *slot )    {        QTimer *timer = static_cast<QTimer*>( receiver->child( slot ) );        if( !timer ) {            timer = new QTimer( receiver, slot );            receiver->connect( timer, SIGNAL(timeout()), slot );        }        timer->start( timeout, true );    }    static inline bool isActive( QObject *parent, const char *slot )    {        QTimer *timer = static_cast<QTimer*>( parent->child( slot ) );        return timer && timer->isA( "QTimer" ) && timer->isActive();    }}//TODO allow for uncertain progress periodsStatusBar::StatusBar( QWidget *parent, const char *name )        : QWidget( parent, name )        , m_logCounter( -1 ){    QBoxLayout *mainlayout = new QHBoxLayout( this, 2, /*spacing*/5 );    //we need extra spacing due to the way we paint the surrounding boxes    QBoxLayout *layout = new QHBoxLayout( mainlayout, /*spacing*/5 );    QHBox *statusBarTextBox = new QHBox( this, "statusBarTextBox" );    m_mainTextLabel = new KDE::SqueezedTextLabel( statusBarTextBox, "mainTextLabel" );    QToolButton *shortLongButton = new QToolButton( statusBarTextBox, "shortLongButton" );    shortLongButton->hide();    QHBox *mainProgressBarBox = new QHBox( this, "progressBox" );    QToolButton *b1 = new QToolButton( mainProgressBarBox, "cancelButton" );    m_mainProgressBar  = new QProgressBar( mainProgressBarBox, "mainProgressBar" );    QToolButton *b2 = new QToolButton( mainProgressBarBox, "showAllProgressDetails" );    mainProgressBarBox->setSpacing( 2 );    mainProgressBarBox->hide();    layout->add( statusBarTextBox );    layout->add( mainProgressBarBox );    layout->setStretchFactor( statusBarTextBox, 3 );    layout->setStretchFactor( mainProgressBarBox, 1 );    m_otherWidgetLayout = new QHBoxLayout( mainlayout, /*spacing*/5 );    mainlayout->setStretchFactor( layout, 6 );    mainlayout->setStretchFactor( m_otherWidgetLayout, 4 );    shortLongButton->setIconSet( SmallIconSet( "edit_add" ) );    QToolTip::add( shortLongButton, i18n( "Show details" ) );    connect( shortLongButton, SIGNAL(clicked()), SLOT(showShortLongDetails()) );    b1->setIconSet( SmallIconSet( "cancel" ) );    b2->setIconSet( SmallIconSet( "2uparrow") );    b2->setToggleButton( true );    QToolTip::add( b1, i18n( "Abort all background-operations" ) );    QToolTip::add( b2, i18n( "Show progress detail" ) );    connect( b1, SIGNAL(clicked()), SLOT(abortAllProgressOperations()) );    connect( b2, SIGNAL(toggled( bool )), SLOT(toggleProgressWindow( bool )) );    m_popupProgress = new OverlayWidget( this, mainProgressBarBox, "popupProgress" );    m_popupProgress->setMargin( 1 );    m_popupProgress->setFrameStyle( QFrame::Panel | QFrame::Raised );    m_popupProgress->setFrameShape( QFrame::StyledPanel );    m_popupProgress->setSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum );   (new QGridLayout( m_popupProgress, 1 /*rows*/, 3 /*cols*/, 6, 3 ))->setAutoAdd( true );}voidStatusBar::addWidget( QWidget *widget ){    m_otherWidgetLayout->add( widget );}/// reimplemented functionsvoidStatusBar::polish(){    QWidget::polish();    int h = 0;    QObjectList *list = queryList( "QWidget", 0, false, false );    for( QObject * o = list->first(); o; o = list->next() ) {        int _h = static_cast<QWidget*>( o ) ->minimumSizeHint().height();        if ( _h > h )            h = _h;//         debug() << o->className() << ", " << o->name() << ": " << _h << ": " << static_cast<QWidget*>(o)->minimumHeight() << endl;        if ( o->inherits( "QLabel" ) )            static_cast<QLabel*>(o)->setIndent( 4 );    }    h -= 4; // it's too big usually    for ( QObject * o = list->first(); o; o = list->next() )        static_cast<QWidget*>(o)->setFixedHeight( h );    delete list;}voidStatusBar::paintEvent( QPaintEvent* ){    QObjectList *list = queryList( "QWidget", 0, false, false );    QPainter p( this );    for( QObject * o = list->first(); o; o = list->next() ) {        QWidget *w = static_cast<QWidget*>( o );        if ( !w->isVisible() )            continue;        style().drawPrimitive(                QStyle::PE_StatusBarSection,                &p,                QRect( w->x() - 1, w->y() - 1, w->width() + 2, w->height() + 2 ),                colorGroup(),                QStyle::Style_Default,                QStyleOption( w ) );    }    delete list;}boolStatusBar::event( QEvent *e ){    if ( e->type() == QEvent::LayoutHint )        update();    return QWidget::event( e );}/// Messaging systemvoidStatusBar::setMainText( const QString &text ){    SHOULD_BE_GUI    m_mainText = text;    // it may not be appropriate for us to set the mainText yet    resetMainText();}voidStatusBar::shortMessage( const QString &text, bool longShort ){    SHOULD_BE_GUI    m_mainTextLabel->setText( text );    m_mainTextLabel->setPalette( QToolTip::palette() );    SingleShotPool::startTimer( longShort ? 8000 : 5000, this, SLOT(resetMainText()) );    writeLogFile( text );}voidStatusBar::resetMainText(){//     if( sender() )//         debug() << sender()->name() << endl;    // don't reset if we are showing a shortMessage    if( SingleShotPool::isActive( this, SLOT(resetMainText()) ) )        return;    m_mainTextLabel->unsetPalette();    shortLongButton()->hide();    if( allDone() )        m_mainTextLabel->setText( m_mainText );    else {        ProgressBar *bar = 0;        uint count = 0;        foreachType( ProgressMap, m_progressMap )            if( !(*it)->m_done ) {                bar = *it;                count++;            }        if( count == 1 )            m_mainTextLabel->setText( bar->description() + i18n("...") );        else            m_mainTextLabel->setText( i18n("Multiple background-tasks running") );    }}voidStatusBar::shortLongMessage( const QString &_short, const QString &_long, int type ){    SHOULD_BE_GUI    m_shortLongType = type;    if( !_short.isEmpty() )        shortMessage( _short, true );    if ( !_long.isEmpty() ) {        m_shortLongText = _long;        shortLongButton()->show();        writeLogFile( _long );    }}voidStatusBar::longMessage( const QString &text, int type ){    SHOULD_BE_GUI    if( text.isEmpty() )        return;    PopupMessage *message;    message = new PopupMessage( this, m_mainTextLabel );    connect( message, SIGNAL(destroyed(QObject *)), this, SLOT(popupDeleted(QObject *)) );    message->setText( text );    QString image;    switch( type )    {        case Information:        case Question:            image = KGlobal::iconLoader()->iconPath( "messagebox_info", -KIcon::SizeHuge );            break;        case Sorry:        case Warning:            image = KGlobal::iconLoader()->iconPath( "messagebox_warning", -KIcon::SizeHuge );            break;        case Error:            image = KGlobal::iconLoader()->iconPath( "messagebox_critical", -KIcon::SizeHuge );            // don't hide error messages.//             message->setTimeout( 0 );            break;    }    if( !image.isEmpty() )        message->setImage( image );    if ( !m_messageQueue.isEmpty() )         message->stackUnder( m_messageQueue.last() );    message->display();    raise();    m_messageQueue += message;    writeLogFile( text );}voidStatusBar::popupDeleted( QObject *obj ){    m_messageQueue.remove( static_cast<QWidget*>( obj ) );}voidStatusBar::longMessageThreadSafe( const QString &text, int /*type*/ ){    QCustomEvent * e = new QCustomEvent( 1000 );    e->setData( new QString( text ) );

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利精品一区| 一本一道波多野结衣一区二区| 国产一区在线观看视频| 成人激情午夜影院| 欧美一区二区视频网站| 国产精品美女www爽爽爽| 日韩激情一区二区| av亚洲精华国产精华精华| 欧美成人免费网站| 亚洲国产欧美在线人成| 不卡在线观看av| 欧美成人一区二区三区片免费| 一区二区成人在线| 波多野结衣中文字幕一区二区三区| 欧美一区二区三区公司| 亚洲最色的网站| www.欧美色图| 欧美激情一区二区三区蜜桃视频 | 蜜臀av一区二区三区| 99国产精品国产精品毛片| 久久女同互慰一区二区三区| 男女视频一区二区| 欧美日韩中文一区| 亚洲午夜免费福利视频| 91麻豆精品一区二区三区| 中文字幕av免费专区久久| 韩日欧美一区二区三区| 精品免费国产一区二区三区四区| 日韩高清中文字幕一区| 欧美日韩在线播放三区四区| 亚洲综合图片区| 欧美色倩网站大全免费| 亚洲图片欧美视频| 欧美日韩精品欧美日韩精品一| 亚洲一区二区三区中文字幕 | 成人免费毛片片v| 久久亚洲影视婷婷| 国产精品自拍在线| 国产拍揄自揄精品视频麻豆| 懂色一区二区三区免费观看 | 一区二区三区在线视频观看58| 91精品国产91久久综合桃花| 丝袜亚洲另类欧美综合| 777xxx欧美| 久久99久久99| 国产日韩欧美综合一区| 成人高清视频在线观看| 亚洲欧美偷拍三级| 欧美四级电影网| 日韩和欧美一区二区三区| 精品福利一区二区三区免费视频| 国产在线观看一区二区| 国产精品色婷婷| 色哟哟一区二区在线观看| 亚洲成av人片在线观看| 欧美电影免费观看高清完整版 | 欧美成人精品福利| 国产传媒欧美日韩成人| 中文字幕在线不卡视频| 欧美午夜片在线看| 精品亚洲porn| 亚洲精品久久7777| 日韩欧美亚洲一区二区| 成人在线视频一区| 五月激情综合色| 久久伊99综合婷婷久久伊| 91免费视频网| 久久精品理论片| 亚洲丝袜制服诱惑| 日韩免费在线观看| 成人精品小蝌蚪| 丝袜美腿高跟呻吟高潮一区| 久久婷婷久久一区二区三区| 日本高清免费不卡视频| 欧美三级蜜桃2在线观看| 六月丁香婷婷色狠狠久久| 国产精品国产三级国产普通话99| 欧美肥妇free| 97久久精品人人做人人爽50路| 日韩**一区毛片| 亚洲女与黑人做爰| 久久久久9999亚洲精品| 欧美午夜不卡视频| 成人av网站在线观看| 九一九一国产精品| 亚洲图片自拍偷拍| 国产精品福利一区二区| 精品噜噜噜噜久久久久久久久试看| 一本色道久久综合狠狠躁的推荐| 久久国产精品99久久久久久老狼 | 在线观看日韩一区| 国产麻豆欧美日韩一区| 日韩黄色小视频| 一区二区三区欧美日韩| 中文无字幕一区二区三区| 日韩欧美一级精品久久| 欧美日韩一区二区三区四区五区| www.亚洲在线| 国产高清精品久久久久| 精品系列免费在线观看| 日韩av一区二区三区| 亚洲高清视频中文字幕| 亚洲精品videosex极品| 欧美国产综合一区二区| 精品999久久久| 日韩欧美中文字幕一区| 欧美妇女性影城| 精品视频一区二区不卡| 欧美视频三区在线播放| 欧洲人成人精品| 色综合久久久网| 99re这里只有精品视频首页| 成人黄色软件下载| 99视频精品全部免费在线| 成人av网站在线观看| 国产成人鲁色资源国产91色综| 国产一区二区福利视频| 国产麻豆9l精品三级站| 蜜臀av性久久久久蜜臀aⅴ流畅 | 亚洲美女视频一区| 亚洲男女毛片无遮挡| 亚洲男同1069视频| 亚洲一区二区欧美激情| 污片在线观看一区二区| 青青国产91久久久久久| 蜜臀av一区二区在线免费观看| 久久精品国产精品亚洲综合| 国产一区二区美女诱惑| 国产.精品.日韩.另类.中文.在线.播放| 国产高清亚洲一区| www.日本不卡| 欧美日韩一区二区三区免费看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美调教femdomvk| 日韩亚洲欧美中文三级| 精品88久久久久88久久久| 中文字幕免费一区| 亚洲免费av观看| 免费高清在线视频一区·| 国产乱人伦偷精品视频免下载| 国产91精品精华液一区二区三区| 99亚偷拍自图区亚洲| 欧美人与禽zozo性伦| 欧美tk丨vk视频| 亚洲欧洲日韩在线| 日韩成人av影视| 懂色中文一区二区在线播放| 欧美视频在线一区二区三区| 精品国产免费一区二区三区香蕉| 国产精品亲子乱子伦xxxx裸| 亚洲图片自拍偷拍| 国产成人免费视频网站高清观看视频| 92国产精品观看| 制服.丝袜.亚洲.中文.综合| 国产亚洲一本大道中文在线| 亚洲一区二区高清| 国产乱色国产精品免费视频| 在线观看av一区| 国产色产综合色产在线视频| 亚洲电影在线免费观看| 国产麻豆欧美日韩一区| 欧美日韩在线直播| 国产女人18毛片水真多成人如厕| 亚洲综合色在线| 国产福利一区在线| 欧美精品vⅰdeose4hd| 国产精品色哟哟| 捆绑紧缚一区二区三区视频| 一本大道久久a久久综合| 精品电影一区二区三区| 亚洲国产aⅴ天堂久久| 福利一区二区在线| 1024精品合集| 国产在线日韩欧美| 欧美日韩成人在线| 亚洲欧洲精品天堂一级| 国产一区二区在线电影| 欧美猛男超大videosgay| 亚洲欧美日韩中文播放| 成人自拍视频在线| 久久先锋影音av| 蜜桃视频在线一区| 欧美日韩一区 二区 三区 久久精品 | 久久精品亚洲乱码伦伦中文| 日韩精品亚洲一区二区三区免费| av不卡免费在线观看| 久久婷婷国产综合国色天香| 日韩激情在线观看| 欧美日韩亚洲综合| 亚洲一区二区三区视频在线播放 | 91网站在线播放| 国产日韩欧美a| 国模大尺度一区二区三区| 91精品欧美综合在线观看最新| 亚洲无人区一区| 欧美丝袜自拍制服另类| 一区二区三区在线视频免费观看| 99在线精品观看| 亚洲色图欧洲色图婷婷| 成人不卡免费av|