Support for minimum height and width in libdanbooru
This will allow to filter posts with less than required minimum height and width. Currently this is done client-side, I don't plan on doing checks on the API until/if the multiple API branch is merged.
This commit is contained in:
		
					parent
					
						
							
								e98d99a5e1
							
						
					
				
			
			
				commit
				
					
						76330d4416
					
				
			
		
					 2 changed files with 45 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -329,6 +329,16 @@ int DanbooruService::maxPosts() const
 | 
			
		|||
    return m_maxPosts;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int DanbooruService::minimumWidth() const
 | 
			
		||||
{
 | 
			
		||||
    return m_minimumWidth > 0 ? m_minimumWidth: -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int DanbooruService::minimumHeight() const
 | 
			
		||||
{
 | 
			
		||||
    return m_minimumHeight > 0 ? m_minimumHeight: -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void DanbooruService::nextPostPage()
 | 
			
		||||
{
 | 
			
		||||
    m_currentPage++;
 | 
			
		||||
| 
						 | 
				
			
			@ -449,6 +459,18 @@ void DanbooruService::processPostList(KJob *job)
 | 
			
		|||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (post->width() < minimumWidth()) {
 | 
			
		||||
            m_postsToFetch--;
 | 
			
		||||
            delete post;
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (post->height() < minimumHeight()) {
 | 
			
		||||
            m_postsToFetch--;
 | 
			
		||||
            delete post;
 | 
			
		||||
            continue;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        QPixmap pix;
 | 
			
		||||
 | 
			
		||||
//         qCDebug(LIBDANBOORU) << "About to donwload images";
 | 
			
		||||
| 
						 | 
				
			
			@ -618,4 +640,16 @@ void DanbooruService::setCurrentPage(int page)
 | 
			
		|||
    m_currentPage = page;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Danbooru::DanbooruService::setResolution(unsigned int width, unsigned int height)
 | 
			
		||||
{
 | 
			
		||||
    if (width > 0) {
 | 
			
		||||
        m_minimumWidth = width;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (height > 0) {
 | 
			
		||||
        m_minimumHeight = height;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
} // namespace Danbooru
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -93,6 +93,8 @@ private:
 | 
			
		|||
    DanbooruPost::Ratings m_maxRating;
 | 
			
		||||
    int m_maxPosts;
 | 
			
		||||
    int m_currentPage;
 | 
			
		||||
    unsigned int m_minimumHeight = 0;
 | 
			
		||||
    unsigned int m_minimumWidth = 0;
 | 
			
		||||
    QStringList m_tags;
 | 
			
		||||
 | 
			
		||||
    unsigned int m_postsToFetch; // To tell when to quit
 | 
			
		||||
| 
						 | 
				
			
			@ -207,6 +209,10 @@ public:
 | 
			
		|||
     **/
 | 
			
		||||
    QStringList postTags() const;
 | 
			
		||||
 | 
			
		||||
    int minimumWidth() const;
 | 
			
		||||
 | 
			
		||||
    int minimumHeight() const;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @brief Resets the service to the default state, clearing the page counters.
 | 
			
		||||
     **/
 | 
			
		||||
| 
						 | 
				
			
			@ -282,6 +288,11 @@ public:
 | 
			
		|||
 | 
			
		||||
    void setPostTags(const QStringList &tags);
 | 
			
		||||
 | 
			
		||||
    void setResolution(unsigned int width = 0, unsigned int height = 0);
 | 
			
		||||
 | 
			
		||||
    void setMinimumWidth(unsigned int width) { m_minimumWidth = width; };
 | 
			
		||||
    void setMinimumHeight(unsigned int height) { m_minimumHeight = height; };
 | 
			
		||||
 | 
			
		||||
private Q_SLOTS:
 | 
			
		||||
    void processPostList(KJob *job);
 | 
			
		||||
    void processTagList(KJob *job);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue