示例#1
0
schedulescreen::schedulescreen(QWidget *parent) :
    QWidget(parent)
{
    // seqNumber will track the number of points that have been created
    seqNumber = 0;

    // allow user to click off points to remove blur and see all
    connect(this, SIGNAL(clicked()), this, SLOT(removeAllBlur()));

    // create title
    QLabel *title = new QLabel("Set your WEEKLY SCHEDULE");
    title->setObjectName("title");

    // create time represented by current point
    currentTime = new QLabel();
    currentTime->setObjectName("currentTime");
    currentTime->setMinimumWidth(80);
    currentTime->setMaximumWidth(80);
    currentTime->setSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed);

    // create back button
    QPushButton *backButton = new QPushButton();
    backButton->setIcon(QIcon(":/Images/glossy-blue-orb-icon-arrowback.png"));
    backButton->setIconSize(QSize(40,40));
    backButton->setFocusPolicy(Qt::NoFocus);
    backButton->setObjectName("backButton");
    connect(backButton,SIGNAL(clicked()),this,SLOT(close()));

    // create layout for top of screen
    QHBoxLayout *topLayout = new QHBoxLayout;
    topLayout->addWidget(currentTime);
    topLayout->addStretch();
    topLayout->addWidget(title);
    topLayout->addStretch();
    topLayout->addWidget(backButton);

    // create checkboxes for days of week
    MondayButton = new QCheckBox(QString("Mon"));
    MondayButton->setFocusPolicy(Qt::NoFocus);
    TuesdayButton = new QCheckBox(QString("Tue"));
    TuesdayButton->setFocusPolicy(Qt::NoFocus);
    WednesdayButton = new QCheckBox(QString("Wed"));
    WednesdayButton->setFocusPolicy(Qt::NoFocus);
    ThursdayButton = new QCheckBox(QString("Thu"));
    ThursdayButton->setFocusPolicy(Qt::NoFocus);
    FridayButton = new QCheckBox(QString("Fri"));
    FridayButton->setFocusPolicy(Qt::NoFocus);
    SaturdayButton = new QCheckBox(QString("Sat"));
    SaturdayButton->setFocusPolicy(Qt::NoFocus);
    SundayButton = new QCheckBox(QString("Sun"));
    SundayButton->setFocusPolicy(Qt::NoFocus);

    // create button group to hold weekdays check boxes
    daysButtonGroup = new QButtonGroup(this);
    daysButtonGroup->addButton(MondayButton);
    daysButtonGroup->addButton(TuesdayButton);
    daysButtonGroup->addButton(WednesdayButton);
    daysButtonGroup->addButton(ThursdayButton);
    daysButtonGroup->addButton(FridayButton);
    daysButtonGroup->addButton(SaturdayButton);
    daysButtonGroup->addButton(SundayButton);  
    connect(daysButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(showPoints(int)));

    // set all boxes to initially checked
    daysButtonGroup->setExclusive(false);
    MondayButton->setChecked(true);
    TuesdayButton->setChecked(true);
    WednesdayButton->setChecked(true);
    ThursdayButton->setChecked(true);
    FridayButton->setChecked(true);
    SaturdayButton->setChecked(true);
    SundayButton->setChecked(true);

    // create time markings
    QLabel *hour4 = new QLabel("4AM");
    QLabel *hour8 = new QLabel("8AM");
    QLabel *hour12 = new QLabel("Noon");
    QLabel *hour16 = new QLabel("4PM");
    QLabel *hour20 = new QLabel("8PM");

    // create days layout
    QVBoxLayout *daysButtonLayout = new QVBoxLayout;
    daysButtonLayout->addStretch();
    daysButtonLayout->addSpacing(15);
    daysButtonLayout->addWidget(MondayButton);
    daysButtonLayout->addWidget(TuesdayButton);
    daysButtonLayout->addWidget(WednesdayButton);
    daysButtonLayout->addWidget(ThursdayButton);
    daysButtonLayout->addWidget(FridayButton);
    daysButtonLayout->addWidget(SaturdayButton);
    daysButtonLayout->addWidget(SundayButton);
    daysButtonLayout->addSpacing(15);
    daysButtonLayout->addStretch();

    // create time layout
    QHBoxLayout *timeLayout = new QHBoxLayout;
    timeLayout->addSpacing(110);
    timeLayout->addWidget(hour4);
    timeLayout->addSpacing(24);
    timeLayout->addWidget(hour8);
    timeLayout->addSpacing(20);
    timeLayout->addWidget(hour12);
    timeLayout->addSpacing(24);
    timeLayout->addWidget(hour16);
    timeLayout->addSpacing(24);
    timeLayout->addWidget(hour20);
    timeLayout->addSpacing(50);
    timeLayout->setSizeConstraint(QLayout::SetFixedSize);

    // force time layout to retain size independent of screen size
    QHBoxLayout *bottomLayout = new QHBoxLayout;
    bottomLayout->addLayout(timeLayout);
    bottomLayout->setAlignment(timeLayout,Qt::AlignCenter);

    // create graphics view and scene
    scene = new QGraphicsScene(0,0,300,200);
    view = new QGraphicsView;
    view->setScene(scene);
    view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    view->setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    // create all 28 schedule points
    addSchedulePoints();

    // show graphics view
    view->show();

    // create layout for graphics view and weekday checkboxes
    QHBoxLayout *weekdaysLayout = new QHBoxLayout;
    weekdaysLayout->addLayout(daysButtonLayout);
    weekdaysLayout->addWidget(view);

    // create final layout
    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addLayout(topLayout);
    mainLayout->addStretch();
    mainLayout->addLayout(weekdaysLayout);
    mainLayout->addLayout(bottomLayout);
    mainLayout->addStretch();

    // show final layout
    setLayout(mainLayout);
}
void ScheduleScreen::initializeGraphics()
{
    initializeScene();
    createScheduleScene();
    addSchedulePoints();
}