-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
13 changed files
with
1,153 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,3 +27,7 @@ | |
*.exe | ||
*.out | ||
*.app | ||
|
||
# Qt files | ||
*.user | ||
*.user.* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
#------------------------------------------------- | ||
# | ||
# Project created by QtCreator 2015-01-09T15:50:49 | ||
# | ||
#------------------------------------------------- | ||
|
||
QT += core gui | ||
|
||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets | ||
|
||
TARGET = ICSgenerator | ||
TEMPLATE = app | ||
|
||
|
||
SOURCES += main.cpp\ | ||
mainwindow.cpp \ | ||
formevent.cpp \ | ||
formrecurrence.cpp | ||
|
||
HEADERS += mainwindow.h \ | ||
formevent.h \ | ||
formrecurrence.h | ||
|
||
FORMS += mainwindow.ui \ | ||
formevent.ui \ | ||
formrecurrence.ui | ||
|
||
TRANSLATIONS = ICS_DE.ts |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,27 @@ | ||
# ICSgenerator | ||
recurring events calendar generator | ||
# ICS generator | ||
* Do you also struggle with recurring events in your calendar? | ||
* Is your calendar app messing them up? | ||
* Are they shown incomplete or random events missing? | ||
* Is everything weird, after you edit one event? | ||
|
||
That is the reason, I use individual calendar events even for recurring appointments. And to generate a long sequence of very similar (identical except the date) events this tool was born. | ||
|
||
You can generate .ICS calendar files containing your recurring event. These files can easily be imported to your calendar. | ||
|
||
## Usage | ||
ICS generator is split in two input sections: | ||
|
||
### Event Description (left pane) | ||
Here you enter all information regarding a single event itself. It is more or less the same you would enter in your day-to-day calendar app. Some fields are optional and can be enabled with checkboxes. If disabled they are not exported to the final calendar file. | ||
|
||
### Recurrence (right pane) | ||
Here you define the dates your event shall take place. You can configure some basic recurrence pattern like weekly or monthly. After pressing GENERATE the list is filled matching the recurrence pattern and the selected year. You can select and delete arbitrary entries from that list to get only the dates you like. | ||
|
||
### Export | ||
If everything is configured to your needs, just export to an .ICS file by pressing SAVE. | ||
|
||
## License | ||
Up to now I have not thought about a proper license model. But in general you are allowed to do everything you like with the code and the executable when you doing it for your private usage. | ||
* You are not allowed to use it in any relation with commercial (money-earning) stuff. | ||
* You are not allowed to redistribute the code, or claim it to be yours. | ||
* I give absolutely NO guaranty for function of the app or even damage to your equipment. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
/* Copyright 2016 EtlamGit*/ | ||
|
||
#include "formevent.h" | ||
#include "ui_formevent.h" | ||
|
||
#include <iostream> | ||
#include <QTimeZone> | ||
|
||
|
||
FormEvent::FormEvent(QWidget *parent) : | ||
QWidget(parent), | ||
ui(new Ui::FormEvent) | ||
{ | ||
ui->setupUi(this); | ||
|
||
// fill time zones | ||
QList<QByteArray> ids = QTimeZone::availableTimeZoneIds(); | ||
foreach (QByteArray id, ids) | ||
{ | ||
ui->comboBox_TimeZone->addItem(id); | ||
} | ||
|
||
// find & select local (=system) Time Zone | ||
QString sysTimeZone = QTimeZone::systemTimeZoneId(); | ||
int index = ui->comboBox_TimeZone->findText( sysTimeZone ); | ||
if ( index != -1 ) { // -1 for not found | ||
ui->comboBox_TimeZone->setCurrentIndex( index ); | ||
} | ||
} | ||
|
||
FormEvent::~FormEvent() | ||
{ | ||
delete ui; | ||
} | ||
|
||
// public interface | ||
QString FormEvent::getTitle() | ||
{ | ||
return ui->lineEdit_Title->text(); | ||
} | ||
|
||
bool FormEvent::isLocation() | ||
{ | ||
return ui->groupBox_Location->isChecked(); | ||
} | ||
|
||
QString FormEvent::getLocation() | ||
{ | ||
return ui->lineEdit_Location->text(); | ||
} | ||
|
||
bool FormEvent::isStartTime() | ||
{ | ||
return ui->checkBox_Start->isChecked(); | ||
} | ||
|
||
QTime FormEvent::getStartTime() | ||
{ | ||
return ui->timeEdit_Start->time(); | ||
} | ||
|
||
QString FormEvent::getStartTimeText() | ||
{ | ||
return ui->timeEdit_Start->text(); | ||
} | ||
|
||
bool FormEvent::isEndTime() | ||
{ | ||
return ui->checkBox_End->isChecked(); | ||
} | ||
|
||
QTime FormEvent::getEndTime() | ||
{ | ||
return ui->timeEdit_End->time(); | ||
} | ||
|
||
QString FormEvent::getEndTimeText() | ||
{ | ||
return ui->timeEdit_End->text(); | ||
} | ||
|
||
bool FormEvent::isComment() | ||
{ | ||
return ui->groupBox_Comment->isChecked(); | ||
} | ||
|
||
QString FormEvent::getComment() | ||
{ | ||
return ui->plainTextEdit->toPlainText(); | ||
} | ||
|
||
QString FormEvent::getTimeZone() | ||
{ | ||
return ui->comboBox_TimeZone->currentText(); | ||
} | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* Copyright 2016 EtlamGit*/ | ||
|
||
#ifndef FORMEVENT_H | ||
#define FORMEVENT_H | ||
|
||
#include <QWidget> | ||
|
||
namespace Ui { | ||
class FormEvent; | ||
} | ||
|
||
class FormEvent : public QWidget | ||
{ | ||
Q_OBJECT | ||
|
||
public: | ||
explicit FormEvent(QWidget *parent = 0); | ||
~FormEvent(); | ||
|
||
// public interface | ||
QString getTitle(); | ||
bool isLocation(); | ||
QString getLocation(); | ||
bool isStartTime(); | ||
QTime getStartTime(); | ||
QString getStartTimeText(); | ||
bool isEndTime(); | ||
QTime getEndTime(); | ||
QString getEndTimeText(); | ||
bool isComment(); | ||
QString getComment(); | ||
QString getTimeZone(); | ||
|
||
private: | ||
Ui::FormEvent *ui; | ||
}; | ||
|
||
#endif // FORMEVENT_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,183 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<ui version="4.0"> | ||
<class>FormEvent</class> | ||
<widget class="QWidget" name="FormEvent"> | ||
<property name="geometry"> | ||
<rect> | ||
<x>0</x> | ||
<y>0</y> | ||
<width>256</width> | ||
<height>368</height> | ||
</rect> | ||
</property> | ||
<property name="windowTitle"> | ||
<string>Form</string> | ||
</property> | ||
<layout class="QHBoxLayout" name="horizontalLayout"> | ||
<item> | ||
<widget class="QGroupBox" name="groupBox"> | ||
<property name="title"> | ||
<string>Event Description</string> | ||
</property> | ||
<layout class="QVBoxLayout" name="verticalLayout_3"> | ||
<item> | ||
<widget class="QGroupBox" name="groupBox_Title"> | ||
<property name="title"> | ||
<string>Title</string> | ||
</property> | ||
<layout class="QHBoxLayout" name="horizontalLayout_2"> | ||
<item> | ||
<widget class="QLineEdit" name="lineEdit_Title"/> | ||
</item> | ||
</layout> | ||
</widget> | ||
</item> | ||
<item> | ||
<widget class="QGroupBox" name="groupBox_Location"> | ||
<property name="title"> | ||
<string>Location</string> | ||
</property> | ||
<property name="checkable"> | ||
<bool>true</bool> | ||
</property> | ||
<property name="checked"> | ||
<bool>false</bool> | ||
</property> | ||
<layout class="QHBoxLayout" name="horizontalLayout_3"> | ||
<item> | ||
<widget class="QLineEdit" name="lineEdit_Location"/> | ||
</item> | ||
</layout> | ||
</widget> | ||
</item> | ||
<item> | ||
<widget class="QGroupBox" name="groupBox_Time"> | ||
<property name="title"> | ||
<string>Time</string> | ||
</property> | ||
<layout class="QVBoxLayout" name="verticalLayout"> | ||
<item> | ||
<layout class="QHBoxLayout" name="horizontalLayout_6"> | ||
<item> | ||
<widget class="QCheckBox" name="checkBox_Start"> | ||
<property name="minimumSize"> | ||
<size> | ||
<width>50</width> | ||
<height>0</height> | ||
</size> | ||
</property> | ||
<property name="text"> | ||
<string>Start</string> | ||
</property> | ||
<property name="checked"> | ||
<bool>true</bool> | ||
</property> | ||
</widget> | ||
</item> | ||
<item> | ||
<widget class="QTimeEdit" name="timeEdit_Start"/> | ||
</item> | ||
</layout> | ||
</item> | ||
<item> | ||
<layout class="QHBoxLayout" name="horizontalLayout_5"> | ||
<item> | ||
<widget class="QCheckBox" name="checkBox_End"> | ||
<property name="minimumSize"> | ||
<size> | ||
<width>50</width> | ||
<height>0</height> | ||
</size> | ||
</property> | ||
<property name="text"> | ||
<string>End</string> | ||
</property> | ||
</widget> | ||
</item> | ||
<item> | ||
<widget class="QTimeEdit" name="timeEdit_End"> | ||
<property name="enabled"> | ||
<bool>false</bool> | ||
</property> | ||
</widget> | ||
</item> | ||
</layout> | ||
</item> | ||
<item> | ||
<widget class="QComboBox" name="comboBox_TimeZone"/> | ||
</item> | ||
</layout> | ||
</widget> | ||
</item> | ||
<item> | ||
<widget class="QGroupBox" name="groupBox_Comment"> | ||
<property name="title"> | ||
<string>Comment</string> | ||
</property> | ||
<property name="checkable"> | ||
<bool>true</bool> | ||
</property> | ||
<property name="checked"> | ||
<bool>false</bool> | ||
</property> | ||
<layout class="QHBoxLayout" name="horizontalLayout_4"> | ||
<item> | ||
<widget class="QPlainTextEdit" name="plainTextEdit"/> | ||
</item> | ||
</layout> | ||
</widget> | ||
</item> | ||
<item> | ||
<spacer name="verticalSpacer"> | ||
<property name="orientation"> | ||
<enum>Qt::Vertical</enum> | ||
</property> | ||
<property name="sizeHint" stdset="0"> | ||
<size> | ||
<width>20</width> | ||
<height>40</height> | ||
</size> | ||
</property> | ||
</spacer> | ||
</item> | ||
</layout> | ||
</widget> | ||
</item> | ||
</layout> | ||
</widget> | ||
<resources/> | ||
<connections> | ||
<connection> | ||
<sender>checkBox_End</sender> | ||
<signal>clicked(bool)</signal> | ||
<receiver>timeEdit_End</receiver> | ||
<slot>setEnabled(bool)</slot> | ||
<hints> | ||
<hint type="sourcelabel"> | ||
<x>77</x> | ||
<y>211</y> | ||
</hint> | ||
<hint type="destinationlabel"> | ||
<x>178</x> | ||
<y>211</y> | ||
</hint> | ||
</hints> | ||
</connection> | ||
<connection> | ||
<sender>checkBox_Start</sender> | ||
<signal>clicked(bool)</signal> | ||
<receiver>timeEdit_Start</receiver> | ||
<slot>setEnabled(bool)</slot> | ||
<hints> | ||
<hint type="sourcelabel"> | ||
<x>77</x> | ||
<y>183</y> | ||
</hint> | ||
<hint type="destinationlabel"> | ||
<x>178</x> | ||
<y>183</y> | ||
</hint> | ||
</hints> | ||
</connection> | ||
</connections> | ||
</ui> |
Oops, something went wrong.