diff options
author | rubidium <rubidium@openttd.org> | 2009-10-22 13:57:39 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2009-10-22 13:57:39 +0000 |
commit | c90885a17ed69213a22492d118507318f857f1ae (patch) | |
tree | cbb4d4f8123e866d804fa7c9a154d06e0f1ec6cc | |
parent | 547677a782f38346e80f3258c26c128f781c4d33 (diff) | |
download | openttd-c90885a17ed69213a22492d118507318f857f1ae.tar.xz |
(svn r17841) -Codechange: move state changes from OnPaint to OnInvalidate for the content gui.
-rw-r--r-- | src/network/network_content_gui.cpp | 87 |
1 files changed, 46 insertions, 41 deletions
diff --git a/src/network/network_content_gui.cpp b/src/network/network_content_gui.cpp index 1a71964e6..92c5881e2 100644 --- a/src/network/network_content_gui.cpp +++ b/src/network/network_content_gui.cpp @@ -230,6 +230,7 @@ class NetworkContentListWindow : public QueryStringBaseWindow, ContentCallback { const ContentInfo *selected; ///< The selected content info int list_pos; ///< Our position in the list + uint filesize_sum; ///< The sum of all selected file sizes /** * (Re)build the network game list as its amount has changed because @@ -360,6 +361,7 @@ public: this->SortContentList(); this->FindWindowPlacementAndResize(desc); + this->InvalidateData(); } /** Free everything we allocated */ @@ -376,35 +378,6 @@ public: this->BuildContentList(); } - /* To sum all the bytes we intend to download */ - uint filesize = 0; - bool show_select_all = false; - bool show_select_upgrade = false; - for (ConstContentIterator iter = this->content.Begin(); iter != this->content.End(); iter++) { - const ContentInfo *ci = *iter; - switch (ci->state) { - case ContentInfo::SELECTED: - case ContentInfo::AUTOSELECTED: - filesize += ci->filesize; - break; - - case ContentInfo::UNSELECTED: - show_select_all = true; - show_select_upgrade |= ci->upgrade; - break; - - default: - break; - } - } - - this->SetWidgetDisabledState(NCLWW_DOWNLOAD, filesize == 0 || FindWindowById(WC_NETWORK_STATUS_WINDOW, 0) != NULL); - this->SetWidgetDisabledState(NCLWW_UNSELECT, filesize == 0); - this->SetWidgetDisabledState(NCLWW_SELECT_ALL, !show_select_all); - this->SetWidgetDisabledState(NCLWW_SELECT_UPDATE, !show_select_upgrade); - - this->widget[NCLWW_CANCEL].data = filesize == 0 ? STR_AI_SETTINGS_CLOSE : STR_AI_LIST_CANCEL; - this->DrawWidgets(); /* Edit box to filter for keywords */ @@ -540,7 +513,7 @@ public: } /* Draw the total download size */ - SetDParam(0, filesize); + SetDParam(0, this->filesize_sum); DrawString(this->widget[NCLWW_DETAILS].left + 5, this->widget[NCLWW_DETAILS].right - 5, this->widget[NCLWW_DETAILS].bottom - 12, STR_CONTENT_TOTAL_DOWNLOAD_SIZE); } @@ -572,7 +545,7 @@ public: this->content.ForceResort(); } - this->SetDirty(); + this->InvalidateData(); } break; case NCLWW_CHECKBOX: @@ -587,22 +560,22 @@ public: this->SortContentList(); } this->ScrollToSelected(); - this->SetDirty(); + this->InvalidateData(); break; case NCLWW_SELECT_ALL: _network_content_client.SelectAll(); - this->SetDirty(); + this->InvalidateData(); break; case NCLWW_SELECT_UPDATE: _network_content_client.SelectUpgrade(); - this->SetDirty(); + this->InvalidateData(); break; case NCLWW_UNSELECT: _network_content_client.UnselectAll(); - this->SetDirty(); + this->InvalidateData(); break; case NCLWW_CANCEL: @@ -654,7 +627,7 @@ public: if (this->selected != NULL) { _network_content_client.ToggleSelectedState(this->selected); this->content.ForceResort(); - this->SetDirty(); + this->InvalidateData(); } return ES_HANDLED; } @@ -679,7 +652,7 @@ public: this->ScrollToSelected(); /* redraw window */ - this->SetDirty(); + this->InvalidateData(); return ES_HANDLED; } @@ -687,7 +660,7 @@ public: { this->content.SetFilterState(!StrEmpty(this->edit_str_buf)); this->content.ForceRebuild(); - this->SetDirty(); + this->InvalidateData(); } virtual void OnResize(Point delta) @@ -707,13 +680,13 @@ public: virtual void OnReceiveContentInfo(const ContentInfo *rci) { this->content.ForceRebuild(); - this->SetDirty(); + this->InvalidateData(); } virtual void OnDownloadComplete(ContentID cid) { this->content.ForceResort(); - this->SetDirty(); + this->InvalidateData(); } virtual void OnConnect(bool success) @@ -723,7 +696,39 @@ public: delete this; } - this->SetDirty(); + this->InvalidateData(); + } + + virtual void OnInvalidateData(int data) + { + /* To sum all the bytes we intend to download */ + this->filesize_sum = 0; + bool show_select_all = false; + bool show_select_upgrade = false; + for (ConstContentIterator iter = this->content.Begin(); iter != this->content.End(); iter++) { + const ContentInfo *ci = *iter; + switch (ci->state) { + case ContentInfo::SELECTED: + case ContentInfo::AUTOSELECTED: + this->filesize_sum += ci->filesize; + break; + + case ContentInfo::UNSELECTED: + show_select_all = true; + show_select_upgrade |= ci->upgrade; + break; + + default: + break; + } + } + + this->SetWidgetDisabledState(NCLWW_DOWNLOAD, this->filesize_sum == 0 || FindWindowById(WC_NETWORK_STATUS_WINDOW, 0) != NULL); + this->SetWidgetDisabledState(NCLWW_UNSELECT, this->filesize_sum == 0); + this->SetWidgetDisabledState(NCLWW_SELECT_ALL, !show_select_all); + this->SetWidgetDisabledState(NCLWW_SELECT_UPDATE, !show_select_upgrade); + + this->widget[NCLWW_CANCEL].data = this->filesize_sum == 0 ? STR_AI_SETTINGS_CLOSE : STR_AI_LIST_CANCEL; } }; |