summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouis <louis.braun@gmx.de>2014-01-26 09:42:27 +0100
committerlouis <louis.braun@gmx.de>2014-01-26 09:42:27 +0100
commitba90eeecb93ceeff123b33b2cbe27c4e3fcec787 (patch)
treeebc86c1b326f64122c1d979538e5b0d8750c8049
parent2a3eecd99e9d7d8a138543ebdb892347f68aeaa2 (diff)
downloadvdr-plugin-tvguide-ba90eeecb93ceeff123b33b2cbe27c4e3fcec787.tar.gz
vdr-plugin-tvguide-ba90eeecb93ceeff123b33b2cbe27c4e3fcec787.tar.bz2
directories for timers and searchtimers can be edited
-rw-r--r--HISTORY5
-rw-r--r--po/ca_ES.po14
-rwxr-xr-xpo/de_DE.po14
-rw-r--r--po/ru_RU.po14
-rw-r--r--po/sk_SK.po14
-rw-r--r--recmanager.c2
-rw-r--r--recmenuitem.c157
-rw-r--r--recmenuitem.h29
-rw-r--r--recmenus.c28
-rw-r--r--recmenus.h3
-rw-r--r--searchtimer.h3
-rw-r--r--tools.c15
-rw-r--r--tools.h1
13 files changed, 281 insertions, 18 deletions
diff --git a/HISTORY b/HISTORY
index 2a50227..7963f21 100644
--- a/HISTORY
+++ b/HISTORY
@@ -111,4 +111,7 @@ Version 1.1.0
- left / right scroll page up / down in recmenu result lists
- Improved favorites menu with whats on now / next and up to four user
defined times
-- also check default paths when images and icons are loaded
+- also check default paths when images and icons are loaded
+- directory for timers can be edited in timer edit menu
+- series recording can be configured in searchtimer menus
+- directory for searchtimers can be set and edited in searchtimer menus
diff --git a/po/ca_ES.po b/po/ca_ES.po
index f695842..ac2712a 100644
--- a/po/ca_ES.po
+++ b/po/ca_ES.po
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-tvguide 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2014-01-19 12:51+0100\n"
+"POT-Creation-Date: 2014-01-26 09:25+0100\n"
"PO-Revision-Date: 2013-09-21 17:49+0200\n"
"Last-Translator: My friend <Sampep> Thanks David <Gabychan> <gbonich@gmail.com>\n"
"Language-Team: \n"
@@ -54,6 +54,9 @@ msgstr ""
msgid "images"
msgstr ""
+msgid "root video folder"
+msgstr "Directori principal per a vídeo"
+
msgid "Transp."
msgstr "Transp."
@@ -141,9 +144,6 @@ msgstr "Cerca a les gravacions"
msgid "Set Folder for"
msgstr "Programa carpeta per"
-msgid "root video folder"
-msgstr "Directori principal per a vídeo"
-
msgid "Timer created"
msgstr "Temporitzador creat"
@@ -234,6 +234,9 @@ msgstr "Inici temporitzador"
msgid "Timer stop time"
msgstr "Final temporitzador"
+msgid "Folder"
+msgstr ""
+
msgid "Save"
msgstr "Desa"
@@ -333,6 +336,9 @@ msgstr ""
msgid "Time margin for stop in minutes"
msgstr ""
+msgid "Series Recording"
+msgstr ""
+
msgid "Use VPS"
msgstr ""
diff --git a/po/de_DE.po b/po/de_DE.po
index 2df32bf..c4e4ede 100755
--- a/po/de_DE.po
+++ b/po/de_DE.po
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-tvguide 0.0.1\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2014-01-19 12:51+0100\n"
+"POT-Creation-Date: 2014-01-26 09:25+0100\n"
"PO-Revision-Date: 2012-08-25 17:49+0200\n"
"Last-Translator: Horst\n"
"Language-Team: \n"
@@ -51,6 +51,9 @@ msgstr "Favoriten"
msgid "images"
msgstr "Bilder"
+msgid "root video folder"
+msgstr "Video Hauptverzeichnis"
+
msgid "Transp."
msgstr "Transp."
@@ -138,9 +141,6 @@ msgstr "In Aufnahmen suchen"
msgid "Set Folder for"
msgstr "Verzeichnis festlegen für"
-msgid "root video folder"
-msgstr "Video Hauptverzeichnis"
-
msgid "Timer created"
msgstr "Timer angelegt"
@@ -231,6 +231,9 @@ msgstr "Timer Start Zeit"
msgid "Timer stop time"
msgstr "Timer Stop Zeit"
+msgid "Folder"
+msgstr "Verzeichnis"
+
msgid "Save"
msgstr "Speichern"
@@ -330,6 +333,9 @@ msgstr "Zeit vor Start in Minuten"
msgid "Time margin for stop in minutes"
msgstr "Zeit nach Ende in Minuten"
+msgid "Series Recording"
+msgstr "Serienaufnahme"
+
msgid "Use VPS"
msgstr "VPS benutzen"
diff --git a/po/ru_RU.po b/po/ru_RU.po
index 04bb1af..af062ff 100644
--- a/po/ru_RU.po
+++ b/po/ru_RU.po
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-tvguide 1.0.0\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2014-01-19 12:51+0100\n"
+"POT-Creation-Date: 2014-01-26 09:25+0100\n"
"PO-Revision-Date: 2013-09-25 17:49+0400\n"
"Last-Translator: AmiD, ilya\n"
"Language-Team: Russia-Cherepovets(wm.amid@gmail.com)\n"
@@ -51,6 +51,9 @@ msgstr ""
msgid "images"
msgstr ""
+msgid "root video folder"
+msgstr "Главная видео директория"
+
msgid "Transp."
msgstr "Трансп."
@@ -138,9 +141,6 @@ msgstr "Искать в записях"
msgid "Set Folder for"
msgstr "Укажите каталог для"
-msgid "root video folder"
-msgstr "Главная видео директория"
-
msgid "Timer created"
msgstr "Таймер создан"
@@ -231,6 +231,9 @@ msgstr "Время c"
msgid "Timer stop time"
msgstr "Время до"
+msgid "Folder"
+msgstr ""
+
msgid "Save"
msgstr "Сохранить"
@@ -330,6 +333,9 @@ msgstr ""
msgid "Time margin for stop in minutes"
msgstr ""
+msgid "Series Recording"
+msgstr ""
+
msgid "Use VPS"
msgstr ""
diff --git a/po/sk_SK.po b/po/sk_SK.po
index 01dcd3c..005100a 100644
--- a/po/sk_SK.po
+++ b/po/sk_SK.po
@@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr-tvguide 1.1.0\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2014-01-19 12:51+0100\n"
+"POT-Creation-Date: 2014-01-26 09:25+0100\n"
"PO-Revision-Date: 2013-09-15 00:12+0100\n"
"Last-Translator: Milan Hrala <hrala.milan@gmail.com>\n"
"Language-Team: \n"
@@ -51,6 +51,9 @@ msgstr ""
msgid "images"
msgstr ""
+msgid "root video folder"
+msgstr "Hlavn video adresr"
+
msgid "Transp."
msgstr "Transp."
@@ -138,9 +141,6 @@ msgstr "Vyhada v nahrvkach"
msgid "Set Folder for"
msgstr "Nastavi adresr pre"
-msgid "root video folder"
-msgstr "Hlavn video adresr"
-
msgid "Timer created"
msgstr "Pln vytvoren"
@@ -231,6 +231,9 @@ msgstr "Pln zana"
msgid "Timer stop time"
msgstr "Pln kon"
+msgid "Folder"
+msgstr ""
+
msgid "Save"
msgstr "Uloi"
@@ -330,6 +333,9 @@ msgstr ""
msgid "Time margin for stop in minutes"
msgstr ""
+msgid "Series Recording"
+msgstr ""
+
msgid "Use VPS"
msgstr ""
diff --git a/recmanager.c b/recmanager.c
index b3b5973..055a750 100644
--- a/recmanager.c
+++ b/recmanager.c
@@ -187,12 +187,14 @@ void cRecManager::SaveTimer(cTimer *timer, cTimer newTimerSettings) {
time_t day = newTimerSettings.Day();
int start = newTimerSettings.Start();
int stop = newTimerSettings.Stop();
+ std::string fileName = newTimerSettings.File();
timer->SetDay(day);
timer->SetStart(start);
timer->SetStop(stop);
timer->SetPriority(prio);
timer->SetLifetime(lifetime);
+ timer->SetFile(fileName.c_str());
if (timer->HasFlags(tfActive) && !active)
timer->ClrFlags(tfActive);
diff --git a/recmenuitem.c b/recmenuitem.c
index ec85136..c186de0 100644
--- a/recmenuitem.c
+++ b/recmenuitem.c
@@ -588,6 +588,163 @@ eRecMenuState cRecMenuItemSelect::ProcessKey(eKeys Key) {
return rmsNotConsumed;
}
+// --- cRecMenuItemSelectDirectory -------------------------------------------------------
+cRecMenuItemSelectDirectory::cRecMenuItemSelectDirectory(cString text,
+ std::string originalFolder,
+ bool active,
+ char *callback,
+ eRecMenuState action) {
+ selectable = true;
+ this->text = text;
+ this->originalFolder = originalFolder;
+ seriesFolder = "";
+ this->active = active;
+ this->callback = callback;
+ this->action = action;
+ height = 3 * font->Height() / 2;
+ pixmapVal = NULL;
+ folders.push_back(tr("root video folder"));
+ ReadFolders(NULL, "");
+ numValues = folders.size();
+ this->currentVal = GetInitial();
+}
+
+cRecMenuItemSelectDirectory::~cRecMenuItemSelectDirectory(void) {
+ if (pixmapVal)
+ osdManager.releasePixmap(pixmapVal);
+}
+
+void cRecMenuItemSelectDirectory::SetPixmaps(void) {
+ if (!pixmap) {
+ pixmap = osdManager.requestPixmap(4, cRect(x, y, width, height));
+ pixmapVal = osdManager.requestPixmap(5, cRect(x, y, width, height));
+ } else {
+ pixmap->SetViewPort(cRect(x, y, width, height));
+ pixmapVal->SetViewPort(cRect(x, y, width, height));
+ }
+}
+
+void cRecMenuItemSelectDirectory::Hide(void) {
+ if (pixmap) pixmap->SetLayer(-1);
+ if (pixmapVal) pixmapVal->SetLayer(-1);
+}
+
+void cRecMenuItemSelectDirectory::Show(void) {
+ if (pixmap) pixmap->SetLayer(4);
+ if (pixmapVal) pixmapVal->SetLayer(5);
+}
+
+void cRecMenuItemSelectDirectory::Draw(void) {
+ int textY = (height - font->Height()) / 2;
+ pixmap->DrawText(cPoint(10, textY), *text, colorText, colorTextBack, font);
+ DrawValue();
+}
+
+void cRecMenuItemSelectDirectory::DrawValue(void) {
+ pixmapVal->Fill(clrTransparent);
+ int iconSize = min(128, height);
+ int textX = width - font->Width(folders[currentVal].c_str()) - iconSize;
+ int textY = (height - font->Height()) / 2;
+ pixmapVal->DrawText(cPoint(textX, textY), folders[currentVal].c_str(), colorText, clrTransparent, font);
+ int iconLeftX = textX - iconSize;
+ int iconRightX = width - iconSize;
+ int iconY = (height - iconSize) / 2;
+
+ cImage *imgLeft = imgCache.GetIcon("arrow_left", iconSize, iconSize);
+ if (imgLeft) {
+ pixmapVal->DrawImage(cPoint(iconLeftX, iconY), *imgLeft);
+ }
+ cImage *imgRight = imgCache.GetIcon("arrow_right", iconSize, iconSize);
+ if (imgRight) {
+ pixmapVal->DrawImage(cPoint(iconRightX, iconY), *imgRight);
+ }
+
+}
+
+eRecMenuState cRecMenuItemSelectDirectory::ProcessKey(eKeys Key) {
+ int oldValue = currentVal;
+ switch (Key & ~k_Repeat) {
+ case kLeft:
+ currentVal--;
+ if (currentVal<0)
+ currentVal = numValues - 1;
+ if (callback) {
+ SetCallback();
+ }
+ DrawValue();
+ return rmsConsumed;
+ break;
+ case kRight: {
+ currentVal = (currentVal+1)%numValues;
+ if (callback) {
+ SetCallback();
+ }
+ DrawValue();
+ return rmsConsumed;
+ break; }
+ case kOk:
+ return action;
+ default:
+ break;
+ }
+ return rmsNotConsumed;
+}
+
+void cRecMenuItemSelectDirectory::SetCallback(void) {
+ std::string newFolder = folders[currentVal];
+ if (!newFolder.compare(tr("root video folder")))
+ newFolder = "";
+ if (seriesFolder.size() > 0) {
+ if (newFolder.size() > 0)
+ newFolder = *cString::sprintf("%s/%s", folders[currentVal].c_str(), seriesFolder.c_str());
+ else
+ newFolder = seriesFolder;
+ }
+ strncpy(callback, newFolder.c_str(), TEXTINPUTLENGTH);
+}
+
+void cRecMenuItemSelectDirectory::ReadFolders(cList<cNestedItem> *rootFolders, cString path) {
+ cList<cNestedItem> *foldersLevel = NULL;
+ if (rootFolders) {
+ foldersLevel = rootFolders;
+ } else {
+ foldersLevel = &Folders;
+ }
+ for (cNestedItem *folder = foldersLevel->First(); folder; folder = foldersLevel->Next(folder)) {
+ cString strFolder = cString::sprintf("%s%s", *path, folder->Text());
+ folders.push_back(*strFolder);
+ cList<cNestedItem> *subItems = folder->SubItems();
+ if (subItems) {
+ cString newPath = cString::sprintf("%s%s/", *path, folder->Text());
+ ReadFolders(subItems, newPath);
+ }
+ }
+}
+
+int cRecMenuItemSelectDirectory::GetInitial(void) {
+ if (originalFolder.size() == 0)
+ return 0;
+ for (int i=0; i < numValues; i++) {
+ if (!folders[i].compare(originalFolder)) {
+ return i;
+ }
+ }
+ size_t found = originalFolder.find_last_of('/');
+ if (found != std::string::npos) {
+ std::string folderSet = originalFolder.substr(0, found);
+ seriesFolder = originalFolder.substr(found + 1);
+ for (int i=0; i < numValues; i++) {
+ if (!folders[i].compare(folderSet)) {
+ return i;
+ }
+ }
+ } else {
+ seriesFolder = originalFolder;
+ }
+ return 0;
+}
+
+
// --- cRecMenuItemText -------------------------------------------------------
cRecMenuItemText::cRecMenuItemText(cString title,
char *initialVal,
diff --git a/recmenuitem.h b/recmenuitem.h
index 5a0136e..47b6d01 100644
--- a/recmenuitem.h
+++ b/recmenuitem.h
@@ -267,6 +267,35 @@ public:
cString GetStringValue(void) { return strings[currentVal].c_str(); };
};
+// --- cRecMenuItemSelectDirectory -------------------------------------------------------
+class cRecMenuItemSelectDirectory : public cRecMenuItem {
+private:
+ cString text;
+ std::string originalFolder;
+ std::string seriesFolder;
+ std::vector<std::string> folders;
+ int currentVal;
+ char *callback;
+ int numValues;
+ cPixmap *pixmapVal;
+ void DrawValue(void);
+ void ReadFolders(cList<cNestedItem> *rootFolders, cString path);
+ int GetInitial(void);
+ void SetCallback(void);
+public:
+ cRecMenuItemSelectDirectory(cString text,
+ std::string originalFolder,
+ bool active = false,
+ char *callback = NULL,
+ eRecMenuState action = rmsNotConsumed);
+ virtual ~cRecMenuItemSelectDirectory(void);
+ void SetPixmaps(void);
+ void Hide(void);
+ void Show(void);
+ eRecMenuState ProcessKey(eKeys Key);
+ void Draw(void);
+};
+
// --- cRecMenuItemText -------------------------------------------------------
class cRecMenuItemText : public cRecMenuItem {
private:
diff --git a/recmenus.c b/recmenus.c
index 16e8909..94df353 100644
--- a/recmenus.c
+++ b/recmenus.c
@@ -1,4 +1,5 @@
#include "services/remotetimers.h"
+#include "tools.h"
#include "recmenumanager.h"
#include "recmenus.h"
@@ -396,7 +397,7 @@ cRecMenuConfirmRerunUsed::cRecMenuConfirmRerunUsed(const cEvent *original, const
// --- cRecMenuEditTimer ---------------------------------------------------------
cRecMenuEditTimer::cRecMenuEditTimer(cTimer *timer, eRecMenuState nextState) {
- SetWidthPercent(60);
+ SetWidthPercent(70);
if (!timer)
return;
originalTimer = timer;
@@ -428,6 +429,7 @@ cRecMenuEditTimer::cRecMenuEditTimer(cTimer *timer, eRecMenuState nextState) {
stop = timer->Stop();
prio = timer->Priority();
lifetime = timer->Lifetime();
+ strncpy(folder, GetDirectoryFromTimer(timer->File()).c_str(), TEXTINPUTLENGTH);
AddMenuItem(new cRecMenuItemBool(tr("Timer Active"), timerActive, false, true, &timerActive));
AddMenuItem(new cRecMenuItemInt(tr("Priority"), prio, 0, MAXPRIORITY, false, &prio));
@@ -435,6 +437,7 @@ cRecMenuEditTimer::cRecMenuEditTimer(cTimer *timer, eRecMenuState nextState) {
AddMenuItem(new cRecMenuItemDay(tr("Day"), day, false, &day));
AddMenuItem(new cRecMenuItemTime(tr("Timer start time"), start, false, &start));
AddMenuItem(new cRecMenuItemTime(tr("Timer stop time"), stop, false, &stop));
+ AddMenuItem(new cRecMenuItemSelectDirectory(tr("Folder"), std::string(folder), false, folder));
if (nextState == rmsTimelineTimerSave) {
AddMenuItem(new cRecMenuItemButton(tr("Delete Timer"), rmsTimelineTimerDelete, false, false));
AddMenuItem(new cRecMenuItemButtonYesNo(tr("Save"), tr("Cancel"), nextState, rmsTimeline, false));
@@ -461,6 +464,19 @@ cTimer cRecMenuEditTimer::GetTimer(void) {
t.SetStop(stop);
t.SetPriority(prio);
t.SetLifetime(lifetime);
+ std::string newFolder(folder);
+ std::string newFile = originalTimer->File();
+ if (newFolder.size() > 0) {
+ size_t found = newFile.find_last_of('~');
+ if (found != std::string::npos) {
+ std::string fileName = newFile.substr(found+1);
+ newFile = *cString::sprintf("%s/%s", newFolder.c_str(), fileName.c_str());
+ } else {
+ newFile = *cString::sprintf("%s/%s", newFolder.c_str(), newFile.c_str());
+ }
+ }
+ std::replace(newFile.begin(), newFile.end(), '/', '~');
+ t.SetFile(newFile.c_str());
return t;
}
@@ -693,6 +709,10 @@ cRecMenuSearchTimerEdit::cRecMenuSearchTimerEdit(cTVGuideSearchTimer searchTimer
dayOfWeek = searchTimer.DayOfWeek();
priority = searchTimer.Priority();
lifetime = searchTimer.Lifetime();
+ useEpisode = searchTimer.UseEpisode();
+ std::string dir = searchTimer.Directory();
+ std::replace(dir.begin(), dir.end(), '~', '/');
+ strncpy(directory, dir.c_str(), TEXTINPUTLENGTH);
marginStart = searchTimer.MarginStart();
marginStop = searchTimer.MarginStop();
useVPS = searchTimer.UseVPS();
@@ -768,6 +788,8 @@ void cRecMenuSearchTimerEdit::InitMenuItems(void) {
mainMenuItems.push_back(new cRecMenuItemInt(tr("Lifetime"), lifetime, 0, 99, false, &lifetime, rmsSearchTimerSave));
mainMenuItems.push_back(new cRecMenuItemInt(tr("Time margin for start in minutes"), marginStart, 0, 30, false, &marginStart, rmsSearchTimerSave));
mainMenuItems.push_back(new cRecMenuItemInt(tr("Time margin for stop in minutes"), marginStop, 0, 30, false, &marginStop, rmsSearchTimerSave));
+ mainMenuItems.push_back(new cRecMenuItemBool(tr("Series Recording"), useEpisode, false, false, &useEpisode, rmsSearchTimerSave));
+ mainMenuItems.push_back(new cRecMenuItemSelectDirectory(tr("Folder"), std::string(directory), false, directory, rmsSearchTimerSave));
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use VPS"), useVPS, false, false, &useVPS, rmsSearchTimerSave));
mainMenuItems.push_back(new cRecMenuItemBool(tr("Avoid Repeats"), avoidRepeats, true, false, &avoidRepeats, rmsSearchTimerSave));
mainMenuItems.push_back(new cRecMenuItemBool(tr("Use in Favorites"), useInFavorites, false, false, &useInFavorites, rmsSearchTimerSave));
@@ -863,6 +885,10 @@ cTVGuideSearchTimer cRecMenuSearchTimerEdit::GetSearchTimer(void) {
}
searchTimer.SetPriority(priority);
searchTimer.SetLifetime(lifetime);
+ searchTimer.SetUseEpisode(useEpisode);
+ std::string dir(directory);
+ std::replace(dir.begin(), dir.end(), '/', '~');
+ searchTimer.SetDirectory(dir);
searchTimer.SetMarginStart(marginStart);
searchTimer.SetMarginStop(marginStop);
searchTimer.SetUseVPS(useVPS);
diff --git a/recmenus.h b/recmenus.h
index 48a090b..4a7eefd 100644
--- a/recmenus.h
+++ b/recmenus.h
@@ -123,6 +123,7 @@ private:
int stop;
int prio;
int lifetime;
+ char folder[TEXTINPUTLENGTH];
public:
cRecMenuEditTimer(cTimer *timer, eRecMenuState nextState);
virtual ~cRecMenuEditTimer(void) {};
@@ -236,6 +237,8 @@ private:
int dayOfWeek;
int priority;
int lifetime;
+ bool useEpisode;
+ char directory[TEXTINPUTLENGTH];
int marginStart;
int marginStop;
bool useVPS;
diff --git a/searchtimer.h b/searchtimer.h
index 0ffdfc2..a5a4f71 100644
--- a/searchtimer.h
+++ b/searchtimer.h
@@ -85,6 +85,7 @@ public:
bool UseDayOfWeek(void) { return useDayOfWeek; };
int DayOfWeek(void);
int UseEpisode(void) { return useEpisode; };
+ std::string Directory(void) { return directory; };
int Priority(void) { return priority; };
int Lifetime(void) { return lifetime; };
int MarginStart(void) { return marginStart; };
@@ -111,6 +112,8 @@ public:
void SetStopTime(int stopTime) { this->stopTime = stopTime; };
void SetUseDayOfWeek(bool useDayOfWeek) { this->useDayOfWeek = useDayOfWeek; };
void SetDayOfWeek(int VDRDayOfWeek);
+ void SetUseEpisode(int useEpisode) { this->useEpisode = useEpisode; };
+ void SetDirectory(std::string directory) { this-> directory = directory; };
void SetPriority(int priority) { this->priority = priority; };
void SetLifetime(int lifetime) { this->lifetime = lifetime; };
void SetMarginStart(int marginStart) { this->marginStart = marginStart; };
diff --git a/tools.c b/tools.c
index 555ba29..18adeba 100644
--- a/tools.c
+++ b/tools.c
@@ -1,6 +1,7 @@
#include <string>
#include <vector>
#include <sstream>
+#include <algorithm>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
@@ -53,6 +54,20 @@ std::string StrToLowerCase(std::string str) {
}
/****************************************************************************************
+* GetDirectoryFromTimer
+****************************************************************************************/
+std::string GetDirectoryFromTimer(std::string file) {
+ std::string dir = "";
+ size_t found = file.find_last_of('~');
+ if (found != std::string::npos) {
+ dir = file.substr(0, found);
+ std::replace(dir.begin(), dir.end(), '~', '/');
+ }
+ return dir;
+}
+
+
+/****************************************************************************************
* DrawRoundedCorners
****************************************************************************************/
void DrawRoundedCorners(cPixmap *p, int posX, int posY, int width, int height, int radius, int borderWidth, tColor borderColor) {
diff --git a/tools.h b/tools.h
index 612f86d..e9feaa5 100644
--- a/tools.h
+++ b/tools.h
@@ -8,6 +8,7 @@
std::string CutText(std::string text, int width, const cFont *font);
std::string StrToLowerCase(std::string str);
+std::string GetDirectoryFromTimer(std::string file);
void DrawRoundedCorners(cPixmap *p, int posX, int posY, int width, int height, int radius, int borderWidth, tColor borderColor);
class splitstring : public std::string {