diff -r ef813d54df51 -r a5a1242fd2e8 calendarui/views/dayview/src/calendayitem.cpp --- a/calendarui/views/dayview/src/calendayitem.cpp Wed Aug 18 09:47:38 2010 +0300 +++ b/calendarui/views/dayview/src/calendayitem.cpp Thu Sep 02 20:25:23 2010 +0300 @@ -16,15 +16,15 @@ * */ -//System includes -#include -#include +// System includes +#include +#include +#include +#include #include -#include -#include - -//User inlcudes +// User includes +#include "calendaycommonheaders.h" #include "calendayitem.h" #include "calendaystatusstrip.h" #include "calendaymodel.h" @@ -33,69 +33,61 @@ #include "calendaycontainer.h" /*! - \brief Constructor. -*/ -CalenDayItem::CalenDayItem(const CalenDayContainer *container): - mContainer(container), mUpdated(false), mBg(0), mEventDesc(0), mColorStripe(0), - mEventDescMinWidth(0.0), mFrameMinWidth(0.0) + \brief Constructor. + */ +CalenDayItem::CalenDayItem(const CalenDayContainer *container) : + mContainer(container), mUpdated(false), mBg(0), mEventDesc(0), + mColorStripe(0), mEventDescMinWidth(0.0), mFrameMinWidth(0.0) { } /*! - \brief Constructor. -*/ + \brief Constructor. + */ CalenDayItem::CalenDayItem(const CalenDayItem & source) : - HbAbstractViewItem(source), mContainer(source.container()), mUpdated(false), mBg(0), mEventDesc(0), - mColorStripe(0), mEventDescMinWidth(0.0), mFrameMinWidth(0.0) + HbAbstractViewItem(source), mContainer(source.container()), + mUpdated(false), mBg(0), mEventDesc(0), mColorStripe(0), + mEventDescMinWidth(0.0), mFrameMinWidth(0.0) { - // TODO: "qtg_fr_btn_pressed" need to replaced with qtg_fr_cal_meeting_bg - // when available - mBg = new HbFrameItem("qtg_fr_btn_pressed", HbFrameDrawer::NinePieces, this); + mBg = new HbFrameItem("qtg_fr_cal_meeting_bg", HbFrameDrawer::NinePieces, + this); mEventDesc = new HbTextItem(this); // TODO: probably ElideLeft needed for mirrored layout mEventDesc->setElideMode(Qt::ElideRight); mEventDesc->setTextWrapping(Hb::TextWrapAnywhere); - mColorStripe = new CalenDayStatusStrip(this); - + HbStyle::setItemName(mBg, QLatin1String("backgroundFrame")); HbStyle::setItemName(mEventDesc, QLatin1String("eventDescription")); - HbStyle::setItemName(static_cast(mColorStripe), QLatin1String("colorStripe")); - + HbStyle::setItemName(static_cast (mColorStripe), + QLatin1String("colorStripe")); + HbDeviceProfile deviceProfile; - HbStyle style; - - qreal horizontalSpacing = 0.0; - qreal rightMargin = 0.0; + qreal stripeWidth = KCalenTimeStripWidth * deviceProfile.unitValue(); + mColorStripe->setPreferredWidth(stripeWidth); + + // Minimum size of event frame (without/with description) + mFrameMinWidth = KCalenMinEventWidth * deviceProfile.unitValue(); + mEventDescMinWidth = KCalenMinTouchableEventWidth + * deviceProfile.unitValue(); - style.parameter(QString("hb-param-margin-gene-middle-horizontal"), - horizontalSpacing, deviceProfile); - style.parameter(QString("hb-param-margin-gene-right"), - rightMargin, deviceProfile); - - qreal stripeWidth = 1.5 * deviceProfile.unitValue(); //1.5un according to UI spec - - mFrameMinWidth = 2 * horizontalSpacing + stripeWidth; //smallest width for which background frame is displayed - mEventDescMinWidth = mFrameMinWidth + rightMargin;//smallest width for which text can be displayed - - //Minimum width is assured by widgetml and css - //additionally called here to prevent minimum size hint caching inside effectiveSizeHint + // Minimum width is assured by widgetml and css, additionally called here + // to prevent minimum size hint caching inside effectiveSizeHint setMinimumWidth(stripeWidth); - } /*! - \brief Destructor. -*/ + \brief Destructor. + */ CalenDayItem::~CalenDayItem() { } /*! - \brief Creates new instance of day item. - - \return New instance of day item. -*/ + \brief Creates new instance of day item. + + \return New instance of day item. + */ HbAbstractViewItem * CalenDayItem::createItem() { CalenDayItem* newItem = new CalenDayItem(*this); @@ -104,86 +96,72 @@ /*! - \brief Sets data to be displayed on item. -*/ + \brief Sets data to be displayed on item. + */ void CalenDayItem::updateChildItems() { // there is no need to update items after creation if (!mUpdated) { AgendaEntry entry; - entry = modelIndex().data(CalenDayEntry).value(); + entry = modelIndex().data(CalenDayEntry).value (); - bool isAllDayEvent = CalenAgendaUtils::isAlldayEvent(entry); - + bool isAllDayEvent = CalenAgendaUtils::isAlldayEvent(entry); setDescription(entry, isAllDayEvent); setStatusStrip(entry, isAllDayEvent); mUpdated = true; } - - //TODO: check if needed - //repolish(); - //HbAbstractViewItem::updateChildItems(); } /*! - \brief Adds event description for the item. - - \param entry An for which description needs to be displayed. - \param allDayEvent Flag that indicates whether an item is all day event -*/ + \brief Adds event description for the item. + + \param entry An for which description needs to be displayed. + \param allDayEvent Flag that indicates whether an item is all day event + */ void CalenDayItem::setDescription(const AgendaEntry &entry, bool allDayEvent) { - QString description(entry.summary()); - QString location(entry.location()); - - - int separtorPos = 0; - - if(!location.isEmpty()) { - if ( !description.isEmpty() ) { - separtorPos = description.count(); - description.append(", "); - } - - description.append(location); - } - - if ( description.isEmpty() ) { - description.append(hbTrId("txt_calendar_dblist_unnamed")); - } - - //Description of all day events has to be displayed vertically - if(allDayEvent){ + QString description(entry.summary()); + QString location(entry.location()); + + int separtorPos = 0; + if (!location.isEmpty()) { + if (!description.isEmpty()) { + separtorPos = description.count(); + description.append(", "); + } + description.append(location); + } + + if (description.isEmpty()) { + description.append(hbTrId("txt_calendar_dblist_unnamed")); + } - QString verticalString; - for(int i=0; isetText(description); + //Description of all day events has to be displayed vertically + if (allDayEvent) { + QString verticalString; + for (int i = 0; i < description.count(); i++) { + verticalString.append(QString(description.at(i)) + "\n"); + } + + // remove "\n" before comma separator if exist + if (separtorPos) { + verticalString.remove(2 * separtorPos - 1, 1); + } + description = verticalString; + } + + mEventDesc->setText(description); } /*! - \brief It set all needed things for status strip from Agenda Entry. - - \param entry Status Strip is created from Agenda Entry -*/ + \brief It set all needed things for status strip from Agenda Entry. + + \param entry Status Strip is created from Agenda Entry + */ void CalenDayItem::setStatusStrip(const AgendaEntry &entry, bool allDayEvent) { - QColor color = HbColorScheme::color("qtc_cal_month_current_day"); - mColorStripe->setColor(color); - if (!allDayEvent) { QDateTime startTime; @@ -191,8 +169,8 @@ QDateTime currentDateTime; currentDateTime.setDate(container()->date()); - CalenDayUtils::instance()->getEventValidStartEndTime(startTime, endTime, entry, - currentDateTime); + CalenDayUtils::instance()->getEventValidStartEndTime(startTime, + endTime, entry, currentDateTime); mColorStripe->setStartEndTime(startTime.time(), endTime.time()); } @@ -202,49 +180,57 @@ // 00:00:00 and 00:00:00 next day respectively. // To draw it correctly we need times like those visible for user in // editor: 00:00:00 to 23:59:59 (the same day) - mColorStripe->setStartEndTime(entry.startTime().time(), entry.endTime().time().addSecs(-1)); + mColorStripe->setStartEndTime(entry.startTime().time(), + entry.endTime().time().addSecs(-1)); } - + switch (entry.status()) { case AgendaEntry::Confirmed: mColorStripe->setDrawingStyle(CalenDayStatusStrip::Filled); - break; + break; case AgendaEntry::Tentative: mColorStripe->setDrawingStyle(CalenDayStatusStrip::StripWithLines); - break; + break; case AgendaEntry::Cancelled: mColorStripe->setDrawingStyle(CalenDayStatusStrip::OnlyFrame); - break; + break; default: mColorStripe->setDrawingStyle(CalenDayStatusStrip::Filled); - break; + break; } } /*! - \brief Reimplemented from HbWidget. Handles resize event. - - \param event Instance of an event to be handled. -*/ + \brief Reimplemented from HbWidget. Handles resize event. + + \param event Instance of an event to be handled. + */ void CalenDayItem::resizeEvent(QGraphicsSceneResizeEvent *event) { Q_UNUSED(event) qreal width = rect().width(); - if(width < mEventDescMinWidth){ + HbDeviceProfile deviceProfile; + if (width < mEventDescMinWidth) { + mColorStripe->setPreferredWidth(KCalenMinTimeStripWidth + * deviceProfile.unitValue()); mEventDesc->hide(); - } else{ + } + else { + mColorStripe->setPreferredWidth(KCalenTimeStripWidth + * deviceProfile.unitValue()); mEventDesc->show(); } - - if(width < mFrameMinWidth){ + + if (width < mFrameMinWidth) { mBg->hide(); - } else{ + } + else { mBg->show(); } - //Necessary to switch layout + // Necessary to switch layout repolish(); }