Skip to content

Commit

Permalink
initial import of sources
Browse files Browse the repository at this point in the history
  • Loading branch information
EtlamGit committed Dec 30, 2016
1 parent 879cf96 commit 66f3dbf
Show file tree
Hide file tree
Showing 13 changed files with 1,153 additions and 2 deletions.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -27,3 +27,7 @@
*.exe
*.out
*.app

# Qt files
*.user
*.user.*
28 changes: 28 additions & 0 deletions ICSgenerator.pro
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
29 changes: 27 additions & 2 deletions README.md
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.
97 changes: 97 additions & 0 deletions formevent.cpp
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();
}


38 changes: 38 additions & 0 deletions formevent.h
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
183 changes: 183 additions & 0 deletions formevent.ui
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>
Loading

0 comments on commit 66f3dbf

Please sign in to comment.