Beispiel #1
0
SchedDemo::SchedDemo(const size_t num_planes, const moment_t timespan, const moment_t bounds, const moment_t window_span, QWidget *parent/* = 0*/, Qt::WFlags flags/* = 0*/)
	: QWidget(parent, flags)
    , jobs_removed_(0)
    , original_task_(planes_task_with_bounds(num_planes, timespan, bounds))
    //, original_perm_(num_planes)
    , window_pos_(-2)
    , window_span_(window_span)
    , next_job_(0)
    , total_cost(0)
{
    resetDemo();

    sched_ = perm2sched(task_, perm_);
    sched_src_ = perm2sched(task_src_, perm_);


	
	auto clb = boost::bind(&SchedDemo::updateCost, this);
	//scene_->setCostCallback(clb);

    //scene_->setWeightScale(100);
    //scene_->setTimeScale(20);
	
	//QGraphicsView *view = new QGraphicsView(scene_);
	//view->setMouseTracking(true);
    
    //solver_slots_.push_back(solver_slot_t("Original", order_solver));
    solver_slots_.push_back(solver_slot_t("Due dates", due_dates_solver));
    selected_solver_ = solver_slots_.size() - 1;
    solver_slots_.push_back(solver_slot_t("Random pair", boost::bind(random_solver, _1, _2, 10000)));
    solver_slots_.push_back(solver_slot_t("Best pair", all_pairs_solver));
    //solver_slots_.push_back(solver_slot_t("Best triple", boost::bind(all_triples_solver, _1, _2, 7)));
    //solver_slots_.push_back(solver_slot_t("Annealing", annealing_solver));

    sliding_window_solver sws(5, boost::bind(&SchedDemo::updateOffset, this, _1));
    solver_slots_.push_back(solver_slot_t("Window", sws));

    QGridLayout *layout = new QGridLayout;

    QWidget *sidePanel = new QWidget;
    QGridLayout *sideLayout = new QGridLayout;
    sideLayout->setAlignment(Qt::AlignTop);

    QSignalMapper *mapper = new QSignalMapper(this);

    for (size_t i = 0; i < solver_slots_.size(); ++i)
    {
        solver_slots_[i].btn = new QPushButton(solver_slots_[i].name, this);

        mapper->setMapping(solver_slots_[i].btn, i);
        connect(solver_slots_[i].btn, SIGNAL(clicked()), mapper, SLOT(map()));

        solver_slots_[i].lbl = new QLabel(this);
        sideLayout->addWidget(solver_slots_[i].btn, i, 0);
        sideLayout->addWidget(solver_slots_[i].lbl, i, 1);

    }
    connect(mapper, SIGNAL(mapped(int)), this, SLOT(setSolver(int)));
    

/*
    QPushButton *advanceBtn = new QPushButton("Advance");
    sideLayout->addWidget(advanceBtn, solver_slots_.size() + 1, 0);
    connect(advanceBtn, SIGNAL(clicked()), this, SLOT(advanceSubtask()));*/

    /*QPushButton *resetBtn = new QPushButton("Reset");
    sideLayout->addWidget(resetBtn, solver_slots_.size() + 2, 0);
    connect(resetBtn, SIGNAL(clicked()), this, SLOT(resetSubtask()));*/

    QPushButton *playBtn = new QPushButton("Play", this);
    sideLayout->addWidget(playBtn, solver_slots_.size() + 1, 0);
    connect(playBtn, SIGNAL(clicked()), this, SLOT(playDemo()));

    QPushButton *pauseBtn = new QPushButton("Pause", this);
    sideLayout->addWidget(pauseBtn, solver_slots_.size() + 1, 1);
    connect(pauseBtn, SIGNAL(clicked()), this, SLOT(pauseDemo()));

    speedBar_ = new QScrollBar(Qt::Horizontal, this);
    sideLayout->addWidget(speedBar_, solver_slots_.size() + 3, 0, 1, 2);

    play_timer_ = new QTimer(this);
    connect(play_timer_, SIGNAL(timeout()), this, SLOT(playTick()));

    QPushButton *resetBtn = new QPushButton("Reset", this);
    sideLayout->addWidget(resetBtn, solver_slots_.size() + 2, 0);
    connect(resetBtn, SIGNAL(clicked()), this, SLOT(resetDemo()));

    size_t pos_offset = solver_slots_.size() + 5;
    sideLayout->addWidget(new QLabel("Cost:"), pos_offset, 0);
    cost_display_ = new QLabel(this);
    sideLayout->addWidget(cost_display_, pos_offset, 1);
    ++pos_offset;

    sideLayout->addWidget(new QLabel("Aircrafts Processed:"), pos_offset, 0);
    processed_display_ = new QLabel(this);
    sideLayout->addWidget(processed_display_, pos_offset, 1);
    ++pos_offset;

    sideLayout->addWidget(new QLabel("Aircrafts Removed:"), pos_offset, 0);
    removed_display_ = new QLabel(this);
    sideLayout->addWidget(removed_display_, pos_offset, 1);
    ++pos_offset;

    sideLayout->addWidget(new QLabel("Aircrafts in progress:"), pos_offset, 0);
    in_progress_display_ = new QLabel(this);
    sideLayout->addWidget(in_progress_display_, pos_offset, 1);
    ++pos_offset;

    sidePanel->setLayout(sideLayout);

    //layout->addWidget(view, 0, 0);

/*
    qwt_demo_ = new QwtSchedDemo(this);
    layout->addWidget(qwt_demo_, 1, 0);
*/


    demo2_src = new qwt_demo_2(this);
    demo2_src->setAxisScale(QwtPlot::xBottom, -30, 30);
    demo2 = new qwt_demo_2(this);
    demo2->setAxisScale(QwtPlot::xBottom, -30, 30);

    layout->addWidget(demo2_src, 0, 0);
    layout->addWidget(demo2, 0, 1);
    layout->addWidget(sidePanel, 0, 3, 2, 1);

	setLayout(layout);
    //scene_->invalidateItems();
    updateCost();

}
Beispiel #2
0
doubanFM::doubanFM(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::doubanFM)
{
    qDebug() << Q_FUNC_INFO;
    ui->setupUi(this);


    currentSongIndex = 0;
    pauseState = false;

    _channelListWidget = new channelList(this);
    _channelListWidget->setchannelId(currentChannelId);
    _channelListWidget->move(-_channelListWidget->getInvisibleWidth(),this->geometry().y());

    _pauseMaskWidget = new pauseMaskWidget(this);
    _pauseMaskWidget->move(250,0);
    _pauseMaskWidget->setVisible(false);


    _loginwidget = new doubanLogin(this);
    _loginwidget->move(this->geometry().x(),-_loginwidget->geometry().height());

    _mediaObject = new Phonon::MediaObject(this);
    _audioOutput = new Phonon::AudioOutput(this);
    Phonon::createPath(_mediaObject,_audioOutput);
    ui->seekSlider->setMediaObject(_mediaObject);


    albumImageManager = new QNetworkAccessManager(this);
    _mydouban = new Douban(this);

    readSettings();
    qDebug() << "read setting" << _mydouban->hasLogin();
    if(_mydouban->hasLogin())
    {
        ui->userLoginButton->setToolTip(tr("click to logout"));
        ui->userLabel->setText(_mydouban->getDoubanUser().name);
    }
    else
    {
        ui->userLoginButton->setToolTip(tr("click to login"));
        ui->userLabel->setText(tr("Logout"));
    }

    nextShortCut = new QxtGlobalShortcut(QKeySequence("Alt+s"),this);
    pauseShortCut = new QxtGlobalShortcut(QKeySequence("Alt+p"),this);
    rateShortCut = new QxtGlobalShortcut(QKeySequence("Alt+r"),this);
    trashShortCut = new QxtGlobalShortcut(QKeySequence("Alt+t"),this);

    connect(nextShortCut,SIGNAL(activated()),this,SLOT(onSkipButtonClicked()));
    connect(pauseShortCut,SIGNAL(activated()),this,SLOT(onPauseButtonClicked()));
    connect(rateShortCut,SIGNAL(activated()),this,SLOT(onRateButtonClicked()));
    connect(trashShortCut,SIGNAL(activated()),this,SLOT(onTrashButtonClicked()));


    //connect the mainwidget signals and the slots
    connect(ui->volumeSlider,SIGNAL(valueChanged(int)),this,SLOT(onVolumneChange(int)));
    connect(ui->pauseButton,SIGNAL(clicked()),this,SLOT(onPauseButtonClicked()));
    connect(ui->userLoginButton,SIGNAL(clicked()),this,SLOT(onLoginButtonClicked()));
    connect(_mediaObject,SIGNAL(tick(qint64)),this,SLOT(playTick(qint64)));
    connect(albumImageManager,SIGNAL(finished(QNetworkReply*)),this,SLOT(receiveAlbumImage(QNetworkReply*)));
    connect(this,SIGNAL(albumImageRequest(QString)),this,SLOT(onAlbumImage(QString)));
    connect(ui->rateSongButton,SIGNAL(clicked()),this,SLOT(onRateButtonClicked()));
    connect(ui->nextSongButton,SIGNAL(clicked()),this,SLOT(onSkipButtonClicked()));
    connect(ui->byeSongButton,SIGNAL(clicked()),this,SLOT(onTrashButtonClicked()));
    connect(_mediaObject,SIGNAL(currentSourceChanged(Phonon::MediaSource)),this,SLOT(sourceChanged(Phonon::MediaSource)));
    connect(_mediaObject,SIGNAL(stateChanged(Phonon::State,Phonon::State)),this,SLOT(stateChanged(Phonon::State,Phonon::State)));

//    connect the mainwidget signals and the slots of other widget
    connect(this,SIGNAL(sendlogoutRequest()),_mydouban,SLOT(logoutRequest()));
    connect(this,SIGNAL(sendSongListRequest(qint32,quint32,double)),_mydouban,SLOT(newSongListRequest(qint32,quint32,double)));
    connect(this,SIGNAL(sendSkipSongRequest(qint32,quint32,double)),_mydouban,SLOT(skipSongRequest(qint32,quint32,double)));
    connect(this,SIGNAL(sendRateSongRequest(qint32,quint32,double,bool)),_mydouban,SLOT(rateSongRequest(qint32,quint32,double,bool)));
    connect(this,SIGNAL(sendEndSongRequest(qint32,quint32,double)),_mydouban,SLOT(endSongRequest(qint32,quint32,double)));
    connect(this,SIGNAL(sendByeSongRequest(qint32,quint32,double)),_mydouban,SLOT(byeSongRequest(qint32,quint32,double)));

//  connect the signals of other widget and the mainwidget slot
    connect(_mydouban,SIGNAL(loginSucceed(DoubanUser)),this,SLOT(loginSucceed(DoubanUser)));
    connect(_mydouban,SIGNAL(sendSongList(QList<DoubanFMSong>)),this,SLOT(receiveSongList(QList<DoubanFMSong>)));
    connect(_mydouban,SIGNAL(sendRateSong(bool)),this,SLOT(receiveRateSong(bool)));
    connect(_mydouban,SIGNAL(sendSkipSong(bool)),this,SLOT(receiveSkipSong(bool)));
    connect(_mydouban,SIGNAL(sendByeSong(bool)),this,SLOT(receiveByeSong(bool)));
    connect(_mydouban,SIGNAL(sendEndSong(bool)),this,SLOT(receiveEndSong(bool)));
    connect(_mydouban,SIGNAL(sendChannelList(QList<DoubanChannel>,bool)),this,SLOT(receiveChannelList(QList<DoubanChannel>,bool)));
    connect(_mydouban,SIGNAL(sendLogoutSucceed(bool)),this,SLOT(logoutSucceed(bool)));
    connect(_pauseMaskWidget,SIGNAL(mousePressed()),this,SLOT(pauseMaskWidgetPressed()));
    connect(_channelListWidget,SIGNAL(channelChanged(qint32)),this,SLOT(receiveChannelChange(qint32)));


    //connect the other widget signal and slots
    connect(_mydouban,SIGNAL(captchaImageLoad(QPixmap)),_loginwidget,SLOT(onCaptchaImageLoad(QPixmap)));
    connect(_mydouban,SIGNAL(loginFailed(QString)),_loginwidget,SLOT(onLoginFailed(QString)));
    connect(_mydouban,SIGNAL(sendChannelList(QList<DoubanChannel>,bool)),_channelListWidget,SLOT(onReceiveChannelList(QList<DoubanChannel>,bool)));
    connect(_loginwidget,SIGNAL(loginRequest(QString,QString,QString)),_mydouban,SLOT(loginRequest(QString,QString,QString)));

    _mydouban->channelListRequest();
}