1 /******************************************************************* 2 3 Part of the Fritzing project - http://fritzing.org 4 Copyright (c) 2007-2014 Fachhochschule Potsdam - http://fh-potsdam.de 5 6 Fritzing is free software: you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation, either version 3 of the License, or 9 (at your option) any later version. 10 11 Fritzing is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with Fritzing. If not, see <http://www.gnu.org/licenses/>. 18 19 ******************************************************************** 20 21 $Revision: 6483 $: 22 $Author: irascibl@gmail.com $: 23 $Date: 2012-09-26 15:45:37 +0200 (Mi, 26. Sep 2012) $ 24 25 ********************************************************************/ 26 27 28 29 #ifndef WELCOMEVIEW_H 30 #define WELCOMEVIEW_H 31 32 #include <QFrame> 33 #include <QLabel> 34 #include <QList> 35 #include <QWidget> 36 #include <QNetworkReply> 37 #include <QDomDocument> 38 #include <QDragEnterEvent> 39 #include <QListWidget> 40 #include <QPainter> 41 #include <QAbstractItemDelegate> 42 43 class BlogListWidget : public QListWidget 44 { 45 Q_OBJECT 46 Q_PROPERTY(QColor titleTextColor READ titleTextColor WRITE setTitleTextColor DESIGNABLE true) 47 Q_PROPERTY(QString titleTextFontFamily READ titleTextFontFamily WRITE setTitleTextFontFamily DESIGNABLE true) 48 Q_PROPERTY(QString titleTextFontSize READ titleTextFontSize WRITE setTitleTextFontSize DESIGNABLE true) 49 Q_PROPERTY(QString titleTextExtraLeading READ titleTextExtraLeading WRITE setTitleTextExtraLeading DESIGNABLE true) 50 51 Q_PROPERTY(QColor introTextColor READ introTextColor WRITE setIntroTextColor DESIGNABLE true) 52 Q_PROPERTY(QString introTextFontFamily READ introTextFontFamily WRITE setIntroTextFontFamily DESIGNABLE true) 53 Q_PROPERTY(QString introTextFontSize READ introTextFontSize WRITE setIntroTextFontSize DESIGNABLE true) 54 Q_PROPERTY(QString introTextExtraLeading READ introTextExtraLeading WRITE setIntroTextExtraLeading DESIGNABLE true) 55 56 Q_PROPERTY(QColor dateTextColor READ dateTextColor WRITE setDateTextColor DESIGNABLE true) 57 Q_PROPERTY(QString dateTextFontFamily READ dateTextFontFamily WRITE setDateTextFontFamily DESIGNABLE true) 58 Q_PROPERTY(QString dateTextFontSize READ dateTextFontSize WRITE setDateTextFontSize DESIGNABLE true) 59 60 public: 61 BlogListWidget(QWidget * parent = 0); 62 ~BlogListWidget(); 63 64 QColor titleTextColor() const; 65 void setTitleTextColor(QColor); 66 QString titleTextFontFamily() const; 67 void setTitleTextFontFamily(QString); 68 QString titleTextFontSize() const; 69 void setTitleTextFontSize(QString); 70 QString titleTextExtraLeading() const; 71 void setTitleTextExtraLeading(QString); 72 73 QColor introTextColor() const; 74 void setIntroTextColor(QColor); 75 QString introTextFontFamily() const; 76 void setIntroTextFontFamily(QString); 77 QString introTextFontSize() const; 78 void setIntroTextFontSize(QString); 79 QString introTextExtraLeading() const; 80 void setIntroTextExtraLeading(QString); 81 82 QColor dateTextColor() const; 83 void setDateTextColor(QColor); 84 QString dateTextFontFamily() const; 85 void setDateTextFontFamily(QString); 86 QString dateTextFontSize() const; 87 void setDateTextFontSize(QString); 88 89 QStringList & imageRequestList(); 90 91 public slots: 92 void itemEnteredSlot(QListWidgetItem *); 93 94 protected: 95 QColor m_titleTextColor; 96 QString m_titleTextFontFamily; 97 QString m_titleTextFontSize; 98 QString m_titleTextExtraLeading; 99 100 QColor m_introTextColor; 101 QString m_introTextFontFamily; 102 QString m_introTextFontSize; 103 QString m_introTextExtraLeading; 104 105 QColor m_dateTextColor; 106 QString m_dateTextFontFamily; 107 QString m_dateTextFontSize; 108 109 QStringList m_imageRequestList; 110 }; 111 112 class WelcomeView : public QFrame 113 { 114 Q_OBJECT 115 116 public: 117 WelcomeView(QWidget * parent = 0); 118 ~WelcomeView(); 119 120 void showEvent(QShowEvent * event); 121 void dragEnterEvent(QDragEnterEvent *event); 122 void updateRecent(); 123 124 protected: 125 void initLayout(); 126 QWidget * initRecent(); 127 QWidget * initBlog(); 128 QWidget * initShop(); 129 QWidget * initTip(); 130 void readBlog(const QDomDocument &, bool doEmit, bool blog, const QString & prefix); 131 QWidget * makeRecentItem(const QString & objectName, const QString & iconText, const QString & textText, QLabel * & icon, QLabel * & text); 132 void getNextBlogImage(int ix, bool blog); 133 void setBlogItemImage(QPixmap &, int index, bool blog) ; 134 QWidget * createShopContentFrame(const QString & imagePath, const QString & headline, const QString & description, 135 const QString & url, const QString & urlText, const QString & urlText2, const QString & logoPath, const QString & footerLabelColor); 136 BlogListWidget * createBlogContentFrame(const QString & url, const QString & urlText, const QString & logoPath, const QString & footerLabelColor); 137 138 QFrame * createHeaderFrame(const QString & url1, const QString & urlText1, const QString & url2, const QString & urlText2, const QString & inactiveColor, const QString & activeColor, QLabel * & label1, QLabel * & label2); 139 140 141 signals: 142 void newSketch(); 143 void openSketch(); 144 void recentSketch(const QString & filename, const QString & actionText); 145 146 protected slots: 147 void clickRecent(const QString &); 148 void gotBlogSnippet(QNetworkReply *); 149 void gotBlogImage(QNetworkReply *); 150 void clickBlog(const QString &); 151 void recentItemClicked(QListWidgetItem *); 152 void blogItemClicked(QListWidgetItem *); 153 void nextTip(); 154 155 protected: 156 BlogListWidget * m_blogListWidget; 157 BlogListWidget * m_projectListWidget; 158 QWidget * m_blogUberFrame; 159 QWidget * m_projectsUberFrame; 160 QLabel * m_tip; 161 QListWidget * m_recentListWidget; 162 QWidget * m_fabUberFrame; 163 QWidget * m_shopUberFrame; 164 QLabel * m_projectsLabel; 165 QLabel * m_blogLabel; 166 QLabel * m_fabLabel; 167 QLabel * m_shopLabel; 168 169 static QString m_activeHeaderLabelColor; 170 static QString m_inactiveHeaderLabelColor; 171 172 }; 173 174 class BlogListDelegate : public QAbstractItemDelegate 175 { 176 public: 177 BlogListDelegate(QObject *parent = 0); 178 virtual ~BlogListDelegate(); 179 180 void paint ( QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index ) const; 181 QSize sizeHint ( const QStyleOptionViewItem & option, const QModelIndex & index ) const; 182 }; 183 184 #endif 185