diff options
| author | Michele Calgaro <michele.calgaro@yahoo.it> | 2024-06-07 23:30:05 +0900 |
|---|---|---|
| committer | Michele Calgaro <michele.calgaro@yahoo.it> | 2024-06-07 23:30:05 +0900 |
| commit | 17b259df9cb6b28779d4881b2b6c805ee2e48eea (patch) | |
| tree | 5ed61937459cb7081089111b0242c01ec178f1f3 /fbreader/src/libraryActions/AuthorInfoDialog.cpp | |
| parent | 1cba8bce178eb2d6719c6f7f21e2c9352c5513a6 (diff) | |
| download | tde-ebook-reader-17b259df9cb6b28779d4881b2b6c805ee2e48eea.tar.gz tde-ebook-reader-17b259df9cb6b28779d4881b2b6c805ee2e48eea.zip | |
Rename to tde-ebook-reader
Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
Diffstat (limited to 'fbreader/src/libraryActions/AuthorInfoDialog.cpp')
| -rw-r--r-- | fbreader/src/libraryActions/AuthorInfoDialog.cpp | 164 |
1 files changed, 0 insertions, 164 deletions
diff --git a/fbreader/src/libraryActions/AuthorInfoDialog.cpp b/fbreader/src/libraryActions/AuthorInfoDialog.cpp deleted file mode 100644 index fdc2252..0000000 --- a/fbreader/src/libraryActions/AuthorInfoDialog.cpp +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (C) 2004-2012 Geometer Plus <contact@geometerplus.com> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - * 02110-1301, USA. - */ - -#include <algorithm> - -#include <ZLDialogManager.h> -#include <ZLDialog.h> -#include <ZLOptionEntry.h> - -#include "AuthorInfoDialog.h" - -#include "../library/Library.h" -#include "../library/Author.h" - -class AuthorNameEntry : public ZLComboOptionEntry { - -public: - AuthorNameEntry(AuthorInfoDialog &dialog, std::size_t index); - - const std::string &initialValue() const; - const std::vector<std::string> &values() const; - void onAccept(const std::string &value); - void onValueSelected(int index); - -public: - std::size_t Index; - -private: - AuthorInfoDialog &myInfoDialog; - mutable std::vector<std::string> myValues; - std::string myValue; -}; - -class AuthorSortKeyEntry : public ZLStringOptionEntry { -public: - AuthorSortKeyEntry(AuthorInfoDialog &dialog); - - const std::string &initialValue() const; - void onAccept(const std::string &value); - -private: - AuthorInfoDialog &myInfoDialog; -}; - -AuthorNameEntry::AuthorNameEntry(AuthorInfoDialog &dialog, std::size_t index) : ZLComboOptionEntry(true), Index(index), myInfoDialog(dialog) { -} - -const std::string &AuthorNameEntry::initialValue() const { - return myInfoDialog.initialAuthor()->name(); -} - -void AuthorNameEntry::onAccept(const std::string &value) { - myInfoDialog.name() = value; -} - -const std::vector<std::string> &AuthorNameEntry::values() const { - if (myValues.empty()) { - const AuthorList &authors = myInfoDialog.authors(); - for (AuthorList::const_iterator it = authors.begin(); it != authors.end(); ++it) { - myValues.push_back((*it)->name()); - } - } - return myValues; -} - -void AuthorNameEntry::onValueSelected(int index) { - Index = index; - myInfoDialog.sortKeyEntry().resetView(); -} - -AuthorSortKeyEntry::AuthorSortKeyEntry(AuthorInfoDialog &dialog) : myInfoDialog(dialog) { -} - -const std::string &AuthorSortKeyEntry::initialValue() const { - const AuthorList &authors = myInfoDialog.authors(); - std::size_t index = std::min(myInfoDialog.nameEntry().Index, authors.size() - 1); - return authors[index]->sortKey(); -} - -void AuthorSortKeyEntry::onAccept(const std::string &value) { - myInfoDialog.sortKey() = value; -} - - - -bool AuthorInfoDialog::run(shared_ptr<Author> author) { - AuthorInfoDialog dlg(author); - if (dlg.dialog().run()) { - dlg.dialog().acceptValues(); - shared_ptr<Author> newAuthor = Author::getAuthor(dlg.name(), dlg.sortKey()); - Library::Instance().replaceAuthor(author, newAuthor); - return true; - } - return false; -} - - -AuthorInfoDialog::AuthorInfoDialog(shared_ptr<Author> author) : myInitialAuthor(author) { - const AuthorList &authors = Library::Instance().authors(); - for (AuthorList::const_iterator it = authors.begin(); it != authors.end(); ++it) { - if (!it->isNull()) { - myAuthors.push_back(*it); - } - } - AuthorList::iterator jt = std::lower_bound(myAuthors.begin(), myAuthors.end(), myInitialAuthor, AuthorComparator()); - if (jt == myAuthors.end() || *jt != myInitialAuthor) { - myAuthors.insert(jt, myInitialAuthor); - } - - myDialog = ZLDialogManager::Instance().createDialog(ZLResourceKey("AuthorInfoDialog")); - - myNameEntry = new AuthorNameEntry(*this, jt - myAuthors.begin()); - mySortKeyEntry = new AuthorSortKeyEntry(*this); - - myDialog->addOption(ZLResourceKey("name"), myNameEntry); - myDialog->addOption(ZLResourceKey("sortKey"), mySortKeyEntry); - - myDialog->addButton(ZLDialogManager::OK_BUTTON, true); - myDialog->addButton(ZLDialogManager::CANCEL_BUTTON, false); -} - -ZLDialog &AuthorInfoDialog::dialog() { - return *myDialog; -} - -shared_ptr<Author> AuthorInfoDialog::initialAuthor() { - return myInitialAuthor; -} - -const AuthorList &AuthorInfoDialog::authors() const { - return myAuthors; -} - -std::string &AuthorInfoDialog::name() { - return myName; -} - -std::string &AuthorInfoDialog::sortKey() { - return mySortKey; -} - -AuthorNameEntry &AuthorInfoDialog::nameEntry() { - return *myNameEntry; -} - -AuthorSortKeyEntry &AuthorInfoDialog::sortKeyEntry() { - return *mySortKeyEntry; -} |
