From ad6b10272b4314703d39334152c020f3d7b37796 Mon Sep 17 00:00:00 2001 From: thunder2 Date: Thu, 4 Nov 2010 11:14:47 +0000 Subject: [PATCH] Added setting for the count of messages to load from the history for group and private chat Restore the last active page in MainWindow on startup Removed not needed methods RshareSettings::getChatAvatar and RshareSettings::setChatAvatar git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@3747 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/gui/MainWindow.cpp | 62 ++++++++++++++++-- retroshare-gui/src/gui/MainWindow.h | 24 +++---- retroshare-gui/src/gui/PeersDialog.cpp | 2 +- .../src/gui/chat/PopupChatDialog.cpp | 2 +- .../src/gui/im_history/IMHistoryKeeper.cpp | 5 ++ retroshare-gui/src/gui/settings/ChatPage.cpp | 6 ++ retroshare-gui/src/gui/settings/ChatPage.ui | 2 +- .../src/gui/settings/rsharesettings.cpp | 41 +++++++++--- .../src/gui/settings/rsharesettings.h | 17 +++-- retroshare-gui/src/lang/retroshare_de.qm | Bin 277853 -> 277917 bytes retroshare-gui/src/lang/retroshare_de.ts | 43 +++++++++--- 11 files changed, 161 insertions(+), 43 deletions(-) diff --git a/retroshare-gui/src/gui/MainWindow.cpp b/retroshare-gui/src/gui/MainWindow.cpp index a5dc47977..ac4946f4e 100644 --- a/retroshare-gui/src/gui/MainWindow.cpp +++ b/retroshare-gui/src/gui/MainWindow.cpp @@ -246,8 +246,10 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags flags) addAction(new QAction(QIcon(IMAGE_UNFINISHED), tr("Unfinished"), ui.toolBar), SLOT(showApplWindow())); #endif - /* Select the first action */ - grp->actions()[0]->setChecked(true); + if (activatePage((Page) Settings->getLastPageInMainWindow()) == false) { + /* Select the first action */ + grp->actions()[0]->setChecked(true); + } /** StatusBar section ********/ /* initialize combobox in status bar */ @@ -306,6 +308,8 @@ MainWindow::MainWindow(QWidget* parent, Qt::WFlags flags) /** Destructor. */ MainWindow::~MainWindow() { + Settings->setLastPageInMainWindow(getActivatePage()); + delete _bandwidthGraph; delete _messengerwindowAct; delete peerstatus; @@ -600,10 +604,10 @@ void MainWindow::addAction(QAction *action, const char *slot) } /** Set focus to the given page. */ -/*static*/ void MainWindow::activatePage(Page page) +/*static*/ bool MainWindow::activatePage(Page page) { if (_instance == NULL) { - return; + return false; } MainPage *Page = NULL; @@ -648,7 +652,57 @@ void MainWindow::addAction(QAction *action, const char *slot) if (Page) { /* Set the focus to the specified page. */ _instance->ui.stackPages->setCurrentPage(Page); + return true; } + + return false; +} + +/** Get the active page. */ +/*static*/ MainWindow::Page MainWindow::getActivatePage() +{ + if (_instance == NULL) { + return Network; + } + + QWidget *page = _instance->ui.stackPages->currentWidget(); + + if (page == _instance->networkDialog) { + return Network; + } + if (page == _instance->peersDialog) { + return Friends; + } + if (page == _instance->searchDialog) { + return Search; + } + if (page == _instance->transfersDialog) { + return Transfers; + } + if (page == _instance->sharedfilesDialog) { + return SharedDirectories; + } + if (page == _instance->messagesDialog) { + return Messages; + } +#ifndef RS_RELEASE_VERSION + if (page == _instance->linksDialog) { + return Links; + } + if (page == _instance->channelFeed) { + return Channels; + } +#endif + if (page == _instance->forumsDialog) { + return Forums; + } +#ifdef BLOGS + if (page == _instance->blogsFeed) { + return Blogs; + } +#endif + + return Network; } /** get page */ diff --git a/retroshare-gui/src/gui/MainWindow.h b/retroshare-gui/src/gui/MainWindow.h index 56c6e3bbd..7cfe04c39 100644 --- a/retroshare-gui/src/gui/MainWindow.h +++ b/retroshare-gui/src/gui/MainWindow.h @@ -68,19 +68,20 @@ class MainWindow : public RWindow public: /** Main dialog pages. */ enum Page { - Network = 0, /** Network page. */ - Friends, /** Peers page. */ - Search, /** Search page. */ - Transfers, /** Transfers page. */ - SharedDirectories, /** Shared Directories page. */ - Messages, /** Messages page. */ - Channels, /** Channels page. */ - Forums, /** Forums page. */ + /* Fixed numbers for load and save the last page */ + Network = 0, /** Network page. */ + Friends = 1, /** Peers page. */ + Search = 2, /** Search page. */ + Transfers = 3, /** Transfers page. */ + SharedDirectories = 4, /** Shared Directories page. */ + Messages = 5, /** Messages page. */ + Channels = 6, /** Channels page. */ + Forums = 7, /** Forums page. */ #ifdef BLOGS - Blogs, /** Blogs page. */ + Blogs = 8, /** Blogs page. */ #endif #ifndef RS_RELEASE_VERSION - Links, /** Links page. */ + Links = 9, /** Links page. */ #endif }; @@ -94,7 +95,8 @@ public: /** Shows the MainWindow dialog with focus set to the given page. */ static void showWindow(Page page); /** Set focus to the given page. */ - static void activatePage (Page page); + static bool activatePage (Page page); + static Page getActivatePage (); /** get page */ static MainPage *getPage (Page page); diff --git a/retroshare-gui/src/gui/PeersDialog.cpp b/retroshare-gui/src/gui/PeersDialog.cpp index 27284db61..2908abe4a 100644 --- a/retroshare-gui/src/gui/PeersDialog.cpp +++ b/retroshare-gui/src/gui/PeersDialog.cpp @@ -188,7 +188,7 @@ PeersDialog::PeersDialog(QWidget *parent) historyKeeper.init(QString::fromStdString(RsInit::RsProfileConfigDirectory()) + "/chatPublic.xml"); QList historyItems; - historyKeeper.getMessages(historyItems, 20); + historyKeeper.getMessages(historyItems, Settings->getPublicChatHistoryCount()); foreach(IMHistoryItem item, historyItems) { addChatMsg(item.incoming, true, item.name, item.recvTime, item.messageText); } diff --git a/retroshare-gui/src/gui/chat/PopupChatDialog.cpp b/retroshare-gui/src/gui/chat/PopupChatDialog.cpp index a28720da6..5b3a56a46 100644 --- a/retroshare-gui/src/gui/chat/PopupChatDialog.cpp +++ b/retroshare-gui/src/gui/chat/PopupChatDialog.cpp @@ -210,7 +210,7 @@ PopupChatDialog::PopupChatDialog(std::string id, const QString name, QWidget *pa rsMsgs->getPrivateChatQueueCount(false) && rsMsgs->getPrivateChatQueue(false, dialogId, offlineChat); QList historyItems; - historyKeeper.getMessages(historyItems, 20); + historyKeeper.getMessages(historyItems, Settings->getPrivateChatHistoryCount()); foreach(IMHistoryItem item, historyItems) { for(offineChatIt = offlineChat.begin(); offineChatIt != offlineChat.end(); offineChatIt++) { /* are they public? */ diff --git a/retroshare-gui/src/gui/im_history/IMHistoryKeeper.cpp b/retroshare-gui/src/gui/im_history/IMHistoryKeeper.cpp index aeebe0f5b..2f653f94e 100644 --- a/retroshare-gui/src/gui/im_history/IMHistoryKeeper.cpp +++ b/retroshare-gui/src/gui/im_history/IMHistoryKeeper.cpp @@ -132,6 +132,11 @@ bool IMHistoryKeeper::getMessages(QList &historyItems, const int historyItems.clear(); + if (messagesCount == 0) { + /* nothing to do */ + return true; + } + QListIterator hii(hitems); hii.toBack(); while (hii.hasPrevious()) { diff --git a/retroshare-gui/src/gui/settings/ChatPage.cpp b/retroshare-gui/src/gui/settings/ChatPage.cpp index aa113d745..0d0f74c68 100644 --- a/retroshare-gui/src/gui/settings/ChatPage.cpp +++ b/retroshare-gui/src/gui/settings/ChatPage.cpp @@ -113,6 +113,9 @@ ChatPage::save(QString &errmsg) Settings->setChatSendMessageWithCtrlReturn(ui.sendMessageWithCtrlReturn->isChecked()); + Settings->setPublicChatHistoryCount(ui.groupchatspinBox->value()); + Settings->setPrivateChatHistoryCount(ui.privatchatspinBox->value()); + ChatStyleInfo info; QListWidgetItem *item = ui.publicList->currentItem(); if (item) { @@ -161,6 +164,9 @@ ChatPage::load() ui.sendMessageWithCtrlReturn->setChecked(Settings->getChatSendMessageWithCtrlReturn()); + ui.groupchatspinBox->setValue(Settings->getPublicChatHistoryCount()); + ui.privatchatspinBox->setValue(Settings->getPrivateChatHistoryCount()); + ui.labelChatFontPreview->setText(fontTempChat.rawName()); ui.labelChatFontPreview->setFont(fontTempChat); diff --git a/retroshare-gui/src/gui/settings/ChatPage.ui b/retroshare-gui/src/gui/settings/ChatPage.ui index 395cefe33..87a448d94 100644 --- a/retroshare-gui/src/gui/settings/ChatPage.ui +++ b/retroshare-gui/src/gui/settings/ChatPage.ui @@ -648,7 +648,7 @@ - 0 = off + Load number of messages (0 = off) diff --git a/retroshare-gui/src/gui/settings/rsharesettings.cpp b/retroshare-gui/src/gui/settings/rsharesettings.cpp index 887929b8e..9ff1af349 100644 --- a/retroshare-gui/src/gui/settings/rsharesettings.cpp +++ b/retroshare-gui/src/gui/settings/rsharesettings.cpp @@ -140,16 +140,6 @@ void RshareSettings::initSettings() setDefault("AddFeedsAtEnd", false); } -/** Gets/sets the currently saved chat avatar. */ -QImage RshareSettings::getChatAvatar() const -{ - return value(SETTING_CHAT_AVATAR).value(); -} -void RshareSettings::setChatAvatar(const QImage& I) -{ - setValue(SETTING_CHAT_AVATAR,I) ; -} - /** Gets the currently preferred language code for Rshare. */ QString RshareSettings::getLanguageCode() { @@ -356,6 +346,26 @@ void RshareSettings::setHistoryChatStyle(const QString &stylePath, const QString setValueToGroup("Chat", "StylePrivateVariant", styleVariant); } +int RshareSettings::getPublicChatHistoryCount() +{ + return valueFromGroup("Chat", "PublicChatHistoryCount", 0).toInt(); +} + +void RshareSettings::setPublicChatHistoryCount(int value) +{ + setValueToGroup("Chat", "PublicChatHistoryCount", value); +} + +int RshareSettings::getPrivateChatHistoryCount() +{ + return valueFromGroup("Chat", "PrivateChatHistoryCount", 20).toInt(); +} + +void RshareSettings::setPrivateChatHistoryCount(int value) +{ + setValueToGroup("Chat", "PrivateChatHistoryCount", value); +} + /** Returns true if RetroShare is set to run on system boot. */ bool RshareSettings::runRetroshareOnBoot() @@ -445,6 +455,17 @@ void RshareSettings::loadWidgetInformation(QMainWindow *widget, QToolBar *toolBa loadWidgetInformation(widget); } +/* MainWindow */ +int RshareSettings::getLastPageInMainWindow () +{ + return valueFromGroup("MainWindow", "LastPage", true).toInt(); +} + +void RshareSettings::setLastPageInMainWindow (int value) +{ + setValueToGroup("MainWindow", "LastPage", value); +} + /* Messages */ bool RshareSettings::getMsgSetToReadOnActivate () { diff --git a/retroshare-gui/src/gui/settings/rsharesettings.h b/retroshare-gui/src/gui/settings/rsharesettings.h index ef728475a..1bba96202 100644 --- a/retroshare-gui/src/gui/settings/rsharesettings.h +++ b/retroshare-gui/src/gui/settings/rsharesettings.h @@ -84,12 +84,6 @@ public: /** Set whether to run RetroShare on system boot. */ void setRunRetroshareOnBoot(bool run); - /** Returns the chat avatar. Returns a null image if no avatar is saved. */ - QImage getChatAvatar() const ; - - /** set the chat avatar. Returns a null image if no avatar is saved. */ - void setChatAvatar(const QImage&) ; - /* Get the destination log file. */ QString getLogFile(); /** Set the destination log file. */ @@ -145,6 +139,13 @@ public: void getHistoryChatStyle(QString &stylePath, QString &styleVariant); void setHistoryChatStyle(const QString &stylePath, const QString &styleVariant); + /* Chat */ + int getPublicChatHistoryCount(); + void setPublicChatHistoryCount(int value); + + int getPrivateChatHistoryCount(); + void setPrivateChatHistoryCount(int value); + //! Save placement, state and size information of a window. void saveWidgetInformation(QWidget *widget); @@ -157,6 +158,10 @@ public: //! Method overload. Restore window and toolbar information. void loadWidgetInformation(QMainWindow *widget, QToolBar *toolBar); + /* MainWindow */ + int getLastPageInMainWindow (); + void setLastPageInMainWindow (int value); + /* Messages */ bool getMsgSetToReadOnActivate (); void setMsgSetToReadOnActivate (bool bValue); diff --git a/retroshare-gui/src/lang/retroshare_de.qm b/retroshare-gui/src/lang/retroshare_de.qm index 5f67ea3272cb8bfec47ab883142206f48c17ccc0..58de9b619f2bab95bb31b97b488118c86051c790 100644 GIT binary patch delta 16395 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 Bb)*0Q delta 16232 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 diff --git a/retroshare-gui/src/lang/retroshare_de.ts b/retroshare-gui/src/lang/retroshare_de.ts index fe732c7fd..8a73bdc79 100644 --- a/retroshare-gui/src/lang/retroshare_de.ts +++ b/retroshare-gui/src/lang/retroshare_de.ts @@ -147,7 +147,7 @@ p, li { white-space: pre-wrap; } Abbrechen - + Add Link Failure Fehle beim Hinzufügen des Links @@ -1221,7 +1221,27 @@ Verfügbar: %3 Emoticons für Gruppenchat - + + Chat History + Chat History + + + + Load number of messages (0 = off) + Lade Anzahl von Nachrichten (0 = aus) + + + + Group Chat + Gruppenchat + + + + Private Chat + Privater Chat + + + Group chat Gruppenchat @@ -1231,12 +1251,12 @@ Verfügbar: %3 Privater Chat - + General Allgemein - + Enable Group Chat History Chat Verlauf für Gruppenchat @@ -1246,12 +1266,12 @@ Verfügbar: %3 Sende Nachricht mit Strg+Enter - + Enable Private Chat History Chat Verlauf für privaten Chat - + Style Stil @@ -1282,7 +1302,7 @@ Verfügbar: %3 Verlauf - + Incoming message in history Eingehehende Nachricht aus dem Verlauf @@ -4785,7 +4805,7 @@ p, li { white-space: pre-wrap; } LinksDialog - + Share Link Anonymously Verknüpfung anonym teilen @@ -5006,7 +5026,12 @@ p, li { white-space: pre-wrap; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><span style=" font-weight:600;">Verknüpfungs-Wolke</span></p></body></html> - + + Add new link + + + + Combo Kombiniert