@@ -43,10 +43,6 @@ bool CGUIPlexScreenSaverPhoto::OnMessage(CGUIMessage &message)
43
43
{
44
44
if (!m_multiImage)
45
45
{
46
- CPlexServerPtr server = g_plexApplication.serverManager ->GetBestServer ();
47
- if (!server)
48
- return false ;
49
-
50
46
CLabelInfo info;
51
47
info.textColor = 0xfff5f5f5 ;
52
48
info.font = g_fontManager.GetFont (" Regular-30" , true );
@@ -109,24 +105,8 @@ bool CGUIPlexScreenSaverPhoto::OnMessage(CGUIMessage &message)
109
105
else
110
106
m_showType = FANART;
111
107
112
- CURL art = server->BuildPlexURL (" /library/arts" );
113
- art.SetOption (" sort" , " random" );
114
-
115
- if (m_showType == PHOTOS)
116
- {
117
- art.SetOption (" type" , boost::lexical_cast<std::string>(PLEX_MEDIA_FILTER_TYPE_PHOTO));
118
- }
119
- else
120
- {
121
- std::stringstream optval;
122
- optval << PLEX_MEDIA_FILTER_TYPE_MOVIE << " ," << PLEX_MEDIA_FILTER_TYPE_SHOW << " ,"
123
- << PLEX_MEDIA_FILTER_TYPE_ARTIST;
124
- art.SetOption (" type" , optval.str ());
125
- }
126
-
127
- art.SetOption (" X-Plex-Container-Start" , " 0" );
128
- art.SetOption (" X-Plex-Container-Size" , " 50" );
129
- CJobManager::GetInstance ().AddJob (new CPlexDirectoryFetchJob (art), this );
108
+ if (!loadPhotos ())
109
+ return false ;
130
110
131
111
m_moveTimer.restart ();
132
112
}
@@ -161,34 +141,55 @@ bool CGUIPlexScreenSaverPhoto::OnMessage(CGUIMessage &message)
161
141
}
162
142
}
163
143
case GUI_MSG_PLEX_MULTIIMAGE_ROLLOVER:
144
+ {
164
145
if (m_multiImage && message.GetSenderId () == m_multiImage->GetID ())
165
146
{
166
- CPlexServerPtr server = g_plexApplication.serverManager ->GetBestServer ();
167
- if (!server)
147
+ if (!loadPhotos ())
168
148
return false ;
169
- CURL art = server->BuildPlexURL (" /library/arts" );
170
- art.SetOption (" sort" , " random" );
171
-
172
- if (m_showType == PHOTOS)
173
- {
174
- art.SetOption (" type" , boost::lexical_cast<std::string>(PLEX_MEDIA_FILTER_TYPE_PHOTO));
175
- }
176
- else
177
- {
178
- std::stringstream optval;
179
- optval << PLEX_MEDIA_FILTER_TYPE_MOVIE << " ," << PLEX_MEDIA_FILTER_TYPE_SHOW << " ,"
180
- << PLEX_MEDIA_FILTER_TYPE_ARTIST;
181
- art.SetOption (" type" , optval.str ());
182
- }
183
-
184
- art.SetOption (" X-Plex-Container-Start" , " 0" );
185
- art.SetOption (" X-Plex-Container-Size" , " 50" );
186
- CJobManager::GetInstance ().AddJob (new CPlexDirectoryFetchJob (art), this );
187
149
}
150
+ }
188
151
}
189
152
return CGUIDialog::OnMessage (message);
190
153
}
191
154
155
+ // /////////////////////////////////////////////////////////////////////////////////////////////////
156
+ bool CGUIPlexScreenSaverPhoto::loadPhotos ()
157
+ {
158
+ PlexServerList servers = g_plexApplication.serverManager ->GetAllServers (CPlexServerManager::SERVER_OWNED, true );
159
+
160
+ if (servers.empty ())
161
+ servers = g_plexApplication.serverManager ->GetAllServers (CPlexServerManager::SERVER_ALL, true );
162
+
163
+ if (servers.empty ())
164
+ return false ;
165
+
166
+ m_images = CFileItemListPtr (new CFileItemList ());
167
+
168
+ BOOST_FOREACH (const CPlexServerPtr& server, servers)
169
+ {
170
+ CURL art = server->BuildPlexURL (" /library/arts" );
171
+ art.SetOption (" sort" , " random" );
172
+
173
+ if (m_showType == PHOTOS)
174
+ {
175
+ art.SetOption (" type" , boost::lexical_cast<std::string>(PLEX_MEDIA_FILTER_TYPE_PHOTO));
176
+ }
177
+ else
178
+ {
179
+ std::stringstream optval;
180
+ optval << PLEX_MEDIA_FILTER_TYPE_MOVIE << " ," << PLEX_MEDIA_FILTER_TYPE_SHOW << " ,"
181
+ << PLEX_MEDIA_FILTER_TYPE_ARTIST;
182
+ art.SetOption (" type" , optval.str ());
183
+ }
184
+
185
+ art.SetOption (" X-Plex-Container-Start" , " 0" );
186
+ art.SetOption (" X-Plex-Container-Size" , " 50" );
187
+ CJobManager::GetInstance ().AddJob (new CPlexDirectoryFetchJob (art), this );
188
+ }
189
+
190
+ return true ;
191
+ }
192
+
192
193
// /////////////////////////////////////////////////////////////////////////////////////////////////
193
194
void CGUIPlexScreenSaverPhoto::getXYPosition (int & x, int & y, int & alignment)
194
195
{
@@ -337,8 +338,7 @@ void CGUIPlexScreenSaverPhoto::OnJobComplete(unsigned int jobID, bool success, C
337
338
CPlexDirectoryFetchJob *fj = static_cast <CPlexDirectoryFetchJob*>(job);
338
339
if (fj)
339
340
{
340
- m_images = CFileItemListPtr (new CFileItemList ());
341
- m_images->Assign (fj->m_items );
341
+ m_images->Assign (fj->m_items , true );
342
342
343
343
if (!m_multiImage)
344
344
m_multiImage = new CGUIMultiImage (GetID (), 1234 , 0 , 0 ,
0 commit comments