mirror of
https://bitbucket.org/smil3y/kde-playground.git
synced 2025-02-23 18:32:51 +00:00
150 lines
5.1 KiB
C++
150 lines
5.1 KiB
C++
/*
|
|
Copyright (c) 2010 Bertjan Broeksema <broeksema@kde.org>
|
|
Copyright (c) 2010 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
|
|
|
|
This library is free software; you can redistribute it and/or modify it
|
|
under the terms of the GNU Library General Public License as published by
|
|
the Free Software Foundation; either version 2 of the License, or (at your
|
|
option) any later version.
|
|
|
|
This library 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 Library General Public
|
|
License for more details.
|
|
|
|
You should have received a copy of the GNU Library General Public License
|
|
along with this library; see the file COPYING.LIB. If not, write to the
|
|
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
02110-1301, USA.
|
|
*/
|
|
|
|
#ifndef INCIDENCEEDITOR_INCIDENCEDATETIME_H
|
|
#define INCIDENCEEDITOR_INCIDENCEDATETIME_H
|
|
|
|
#include "incidenceeditor-ng.h"
|
|
|
|
#include <KCalCore/Event>
|
|
#include <KCalCore/Journal>
|
|
#include <KCalCore/Todo>
|
|
|
|
namespace Ui {
|
|
class EventOrTodoDesktop;
|
|
}
|
|
|
|
namespace KCalCore {
|
|
class ICalTimeZones;
|
|
}
|
|
|
|
namespace IncidenceEditorNG {
|
|
|
|
class INCIDENCEEDITORS_NG_EXPORT IncidenceDateTime : public IncidenceEditor
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
explicit IncidenceDateTime( Ui::EventOrTodoDesktop *ui );
|
|
~IncidenceDateTime();
|
|
|
|
virtual void load( const KCalCore::Incidence::Ptr &incidence );
|
|
virtual void save( const KCalCore::Incidence::Ptr &incidence );
|
|
virtual bool isDirty() const;
|
|
|
|
/**
|
|
* Sets the active date for the editing session. This defaults to the current
|
|
* date. It should be set <em>before</em> loading a non-empty (i.e. existing
|
|
* incidence).
|
|
*/
|
|
void setActiveDate( const QDate &activeDate );
|
|
|
|
QDate startDate() const; /// Returns the current start date.
|
|
QTime startTime() const; /// Returns the current start time.
|
|
QDate endDate() const; /// Returns the current end date.
|
|
QTime endTime() const; /// Returns the current endtime.
|
|
|
|
/// Created from the values in the widgets
|
|
KDateTime currentStartDateTime() const;
|
|
KDateTime currentEndDateTime() const;
|
|
|
|
void setStartTime( const QTime &newTime );
|
|
void setStartDate( const QDate &newDate );
|
|
|
|
bool startDateTimeEnabled() const;
|
|
bool endDateTimeEnabled() const;
|
|
|
|
/**reimp*/ bool isValid() const;
|
|
/**reimp*/ void printDebugInfo() const;
|
|
|
|
signals:
|
|
// used to indicate that the widgets were activated
|
|
void startDateFocus( QObject *obj );
|
|
void endDateFocus( QObject *obj );
|
|
void startTimeFocus( QObject *obj );
|
|
void endTimeFocus( QObject *obj );
|
|
|
|
// general
|
|
void startDateTimeToggled( bool enabled );
|
|
void startDateChanged( const QDate &newDate );
|
|
void startTimeChanged( const QTime &newTime );
|
|
void endDateTimeToggled( bool enabled );
|
|
void endDateChanged( const QDate &newDate );
|
|
void endTimeChanged( const QTime &newTime );
|
|
|
|
private slots: /// General
|
|
void setTimeZonesVisibility( bool visible );
|
|
void toggleTimeZoneVisibility();
|
|
void updateStartTime( const QTime &newTime );
|
|
void updateStartDate( const QDate &newDate );
|
|
void updateStartSpec();
|
|
void updateStartToolTips();
|
|
void updateEndToolTips();
|
|
|
|
private slots: /// Todo specific
|
|
void enableStartEdit( bool enable );
|
|
void enableEndEdit( bool enable );
|
|
void enableTimeEdits();
|
|
bool isDirty( const KCalCore::Todo::Ptr &todo ) const;
|
|
|
|
private slots: /// Event specific
|
|
bool isDirty( const KCalCore::Event::Ptr &event ) const;
|
|
bool isDirty( const KCalCore::Journal::Ptr &journal ) const;
|
|
|
|
protected:
|
|
bool eventFilter( QObject *obj, QEvent *event );
|
|
|
|
private:
|
|
void load( const KCalCore::Event::Ptr &event, bool isTemplate = false, bool templateOverridesTimes = false );
|
|
void load( const KCalCore::Todo::Ptr &todo, bool isTemplate = false, bool templateOverridesTimes = false );
|
|
void load( const KCalCore::Journal::Ptr &journal, bool isTemplate = false, bool templateOverridesTimes = false );
|
|
void save( const KCalCore::Event::Ptr &event );
|
|
void save( const KCalCore::Todo::Ptr &todo );
|
|
void save( const KCalCore::Journal::Ptr &journal );
|
|
void setDateTimes( const KDateTime &start, const KDateTime &end );
|
|
void setTimes( const KDateTime &start, const KDateTime &end );
|
|
void setTimeZoneLabelEnabled( bool enable );
|
|
bool timeZonesAreLocal( const KDateTime &start, const KDateTime &end );
|
|
|
|
private:
|
|
KCalCore::ICalTimeZones *mTimeZones;
|
|
Ui::EventOrTodoDesktop *mUi;
|
|
|
|
QDate mActiveDate;
|
|
/**
|
|
* These might differ from mLoadedIncidence->(dtStart|dtDue) as these take
|
|
* in account recurrence if needed. The values are calculated once on load().
|
|
* and don't change afterwards.
|
|
*/
|
|
KDateTime mInitialStartDT;
|
|
KDateTime mInitialEndDT;
|
|
|
|
/**
|
|
* We need to store the current start date/time to be able to update the end
|
|
* time appropriate when the start time changes.
|
|
*/
|
|
KDateTime mCurrentStartDateTime;
|
|
|
|
/// Remembers state when switching between takes whole day and timed event/to-do.
|
|
bool mTimezoneCombosWereVisibile;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|