Added AppTableViewDelegate class for painting tableview (painting not yet done, just...
[meego-garage:garage-netbook-ui.git] / apptablemodel.cpp
1
2 #include "application.h"
3 #include "apptablemodel.h"
4 #include "model.h"
5
6 #include <QFont>
7 #include <QColor>
8 #include <QIcon>
9
10 #define NUM_COLS 3
11
12 using namespace MeeGoGarage;
13
14 Q_DECLARE_METATYPE(QWeakPointer<Application>);
15
16 AppTableModel::AppTableModel( /*give me some data source */)
17 {
18 }
19
20 void AppTableModel::setApplicationList(const QList<Application*> appList)
21 {
22     this->mAppList = appList;
23 }
24
25 int AppTableModel::rowCount(const QModelIndex &parent) const
26 {
27     Q_UNUSED(parent);
28
29     return mAppList.count();
30 }
31
32 int AppTableModel::columnCount(const QModelIndex &parent) const
33 {
34     Q_UNUSED(parent);
35
36     return NUM_COLS;
37 }
38
39 QVariant AppTableModel::data(const QModelIndex &index, int role) const
40 {
41     if (!index.isValid()) {
42         return QVariant();
43     }
44     if (index.row() >= mAppList.size() || index.row() < 0) {
45         return QVariant();
46     }
47     //return the correct values based on row, column, and role
48     int row = index.row();
49     int col = index.column();
50     Application * app = mAppList.at(row);
51
52     if (role == Qt::UserRole) {
53         QVariant value;
54         value.setValue< QWeakPointer<Application> >(app);
55         return value;
56     }
57
58     if (col==0) {
59         if (role==Qt::FontRole) {
60             return QFont("Trebuchet MS",16);
61         } else if (role==Qt::TextColorRole) {
62             return QColor ("#c8c8c8");
63         } else if (role==Qt::DecorationRole) {
64             return Model::getApplicationIcon(app);
65 #if 0
66             const Image * image = app->getIconImage(Application::LARGE);
67             if (image->isLocalImageReady()) {
68                 qDebug() << "image found" << image->getImageLocalPath() << image->getImageUrl();
69                 return QIcon(image->getImageLocalPath());
70             } else {
71                 qDebug() << "no image found yet";
72                 return QIcon();
73             }
74 #endif
75         } else if (role==Qt::DisplayRole) {
76             return app->getName();
77         }
78     } else if (col==1) {
79         if (role==Qt::FontRole) {
80             return QFont("Verdana", 11);
81         } else if (role==Qt::TextColorRole) {
82             return QColor ("#c8c8c8");
83 //        } else if (role==Qt::DecorationRole) {
84 //            return QIcon (app->m_img64);
85         } else if (role==Qt::DisplayRole) {
86             return app->getDescription();
87         }
88     } else if (col==2) {
89         if (role==Qt::DecorationRole) {
90             return QIcon (":/get-now-48-btn.png");
91         } else if (role==Qt::TextAlignmentRole) {
92             return QVariant(Qt::AlignHCenter); //doesn't work with icon
93         } else if (role==Qt::SizeHintRole) {
94             return QSize (48,100);
95         } else if (role==Qt::DecorationRole) {
96             return "";
97         }
98     }
99     if (role==Qt::ToolTipRole) {
100         return app->getName();
101     }
102     if (role==Qt::AccessibleTextRole) {
103         return (QString)"Selected item is " + app->getName();
104     }
105
106     return QVariant ();
107 }