diff options
author | Andrei Karas <akaras@inbox.ru> | 2013-12-15 22:23:26 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2013-12-15 22:23:26 +0300 |
commit | f03edb38328aa5ddb48e10198621bf2353096440 (patch) | |
tree | a7fe17c3e7ceee0f646663d115273852c632e0dd | |
parent | d0cdad7bf81a07ba4b2f13c73a65fe1c68bb702f (diff) | |
download | manaverse-f03edb38328aa5ddb48e10198621bf2353096440.tar.gz manaverse-f03edb38328aa5ddb48e10198621bf2353096440.tar.bz2 manaverse-f03edb38328aa5ddb48e10198621bf2353096440.tar.xz manaverse-f03edb38328aa5ddb48e10198621bf2353096440.zip |
in updater window cut news to 50 lines and show link to full news.
-rw-r--r-- | src/being/being.cpp | 3 | ||||
-rw-r--r-- | src/gui/windows/updaterwindow.cpp | 34 | ||||
-rw-r--r-- | src/gui/windows/updaterwindow.h | 2 | ||||
-rw-r--r-- | src/resources/resourcemanager.cpp | 9 | ||||
-rw-r--r-- | src/resources/resourcemanager.h | 4 | ||||
-rw-r--r-- | src/utils/paths.cpp | 3 |
6 files changed, 44 insertions, 11 deletions
diff --git a/src/being/being.cpp b/src/being/being.cpp index 8990ec339..98b83bcf7 100644 --- a/src/being/being.cpp +++ b/src/being/being.cpp @@ -2848,7 +2848,8 @@ std::string Being::loadComment(const std::string &name, const int type) const ResourceManager *const resman = ResourceManager::getInstance(); if (resman->existsLocal(str)) { - lines = resman->loadTextFileLocal(str); + StringVect lines; + resman->loadTextFileLocal(str, lines); if (lines.size() >= 2) return lines[1]; } diff --git a/src/gui/windows/updaterwindow.cpp b/src/gui/windows/updaterwindow.cpp index 9c9a3adab..36cdba6dd 100644 --- a/src/gui/windows/updaterwindow.cpp +++ b/src/gui/windows/updaterwindow.cpp @@ -329,8 +329,11 @@ void UpdaterWindow::loadNews() std::stringstream ss(mMemoryBuffer); std::string line; file.open(newsName.c_str(), std::ios::out); + int cnt = 0; + const int maxNews = 50; while (std::getline(ss, line, '\n')) { + cnt ++; if (firstLine) { firstLine = false; @@ -340,17 +343,25 @@ void UpdaterWindow::loadNews() if (file.is_open()) file << line << std::endl; - mBrowserBox->addRow(line); + if (cnt < maxNews) + mBrowserBox->addRow(line); } else { if (file.is_open()) file << line << std::endl; - mBrowserBox->addRow(line); + if (cnt < maxNews) + mBrowserBox->addRow(line); } } file.close(); + if (cnt > maxNews) + { + mBrowserBox->addRow(""); + mBrowserBox->addRow("news", _("Show all news (can be slow)")); + mBrowserBox->addRow(""); + } // Free the memory buffer now that we don't need it anymore free(mMemoryBuffer); mMemoryBuffer = nullptr; @@ -944,5 +955,24 @@ void UpdaterWindow::handleLink(const std::string &link, gcn::MouseEvent *event A_UNUSED) { if (strStartWith(link, "http://") || strStartWith(link, "https://")) + { openBrowser(link); + } + else if (link == "news") + { + loadFile("news"); + } +} + +void UpdaterWindow::loadFile(std::string file) +{ + mBrowserBox->clearRows(); + trim(file); + + StringVect lines; + ResourceManager::getInstance()->loadTextFileLocal( + mUpdatesDir + "/local/help/news.txt", lines); + + for (size_t i = 0, sz = lines.size(); i < sz; ++i) + mBrowserBox->addRow(lines[i]); } diff --git a/src/gui/windows/updaterwindow.h b/src/gui/windows/updaterwindow.h index 1f9328908..6003cf976 100644 --- a/src/gui/windows/updaterwindow.h +++ b/src/gui/windows/updaterwindow.h @@ -126,6 +126,8 @@ class UpdaterWindow final : public Window, void handleLink(const std::string &link, gcn::MouseEvent *event A_UNUSED) override final; + void loadFile(std::string file); + static void loadLocalUpdates(const std::string &dir); static void unloadUpdates(const std::string &dir); diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index 193647a6e..143cf467e 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -1001,25 +1001,24 @@ bool ResourceManager::loadTextFile(const std::string &fileName, return true; } -StringVect ResourceManager::loadTextFileLocal( - const std::string &fileName) +bool ResourceManager::loadTextFileLocal(const std::string &fileName, + StringVect &lines) { std::ifstream file; char line[501]; - StringVect lines; file.open(fileName.c_str(), std::ios::in); if (!file.is_open()) { logger->log("Couldn't load text file: %s", fileName.c_str()); - return lines; + return false; } while (file.getline(line, 500)) lines.push_back(line); - return lines; + return true; } void ResourceManager::saveTextFile(std::string path, const std::string &name, diff --git a/src/resources/resourcemanager.h b/src/resources/resourcemanager.h index 88e958245..9fa612e7c 100644 --- a/src/resources/resourcemanager.h +++ b/src/resources/resourcemanager.h @@ -268,8 +268,8 @@ class ResourceManager final /** * Retrieves the contents of a text file. */ - static StringVect loadTextFileLocal(const std::string &fileName) - A_WARN_UNUSED; + static bool loadTextFileLocal(const std::string &fileName, + StringVect &lines); void saveTextFile(std::string path, const std::string &name, const std::string &text) const; diff --git a/src/utils/paths.cpp b/src/utils/paths.cpp index e1a4ee03c..e02fcc23c 100644 --- a/src/utils/paths.cpp +++ b/src/utils/paths.cpp @@ -171,7 +171,8 @@ std::string getDesktopDir() file = std::string(xdg).append("/user-dirs.dirs"); } - const StringVect arr = ResourceManager::loadTextFileLocal(file); + StringVect arr; + ResourceManager::loadTextFileLocal(file, arr); FOR_EACH (StringVectCIter, it, arr) { std::string str = *it; |