[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/plasma/applets/kickoff
From:       Arthur Renato Mello <arthur.mello85 () gmail ! com>
Date:       2009-04-07 19:25:52
Message-ID: 1239132352.042741.1662.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 950771 by amello:

Add a title QAction for every model added to simple applet Kickoff menu.
Uses this title as a header to calculate the correct position of new entries on menu.


 M  +1 -1      core/applicationmodel.cpp  
 M  +15 -0     core/favoritesmodel.cpp  
 M  +1 -0      core/favoritesmodel.h  
 M  +15 -0     core/leavemodel.cpp  
 M  +1 -0      core/leavemodel.h  
 M  +20 -0     core/recentlyusedmodel.cpp  
 M  +2 -0      core/recentlyusedmodel.h  
 M  +15 -0     core/systemmodel.cpp  
 M  +1 -0      core/systemmodel.h  
 M  +22 -0     simpleapplet/menuview.cpp  
 M  +2 -0      simpleapplet/menuview.h  
 M  +17 -11    simpleapplet/simpleapplet.cpp  


--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/core/applicationmodel.cpp \
#950770:950771 @@ -374,7 +374,7 @@
 
     switch (role) {
     case Qt::DisplayRole:
-        return i18n("Known Applications");
+        return i18n("All Applications");
         break;
     default:
         return QVariant();
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/core/favoritesmodel.cpp \
#950770:950771 @@ -253,4 +253,19 @@
 
     return true;
 }
+
+QVariant FavoritesModel::headerData(int section, Qt::Orientation orientation, int \
role) const +{
+    if (orientation != Qt::Horizontal || section != 0) {
+        return QVariant();
+    }
+
+    switch (role) {
+    case Qt::DisplayRole:
+        return i18n("Favorites");
+        break;
+    default:
+        return QVariant();
+    }
+}
 #include "favoritesmodel.moc"
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/core/favoritesmodel.h \
#950770:950771 @@ -53,6 +53,7 @@
 
     virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action,
                               int row, int column, const QModelIndex & parent);
+    virtual QVariant headerData(int section, Qt::Orientation orientation, int role = \
Qt::DisplayRole) const;  
 public Q_SLOTS:
     void sortFavoritesAscending();
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/core/leavemodel.cpp \
#950770:950771 @@ -95,6 +95,21 @@
 {
 }
 
+QVariant LeaveModel::headerData(int section, Qt::Orientation orientation, int role) \
const +{
+    if (orientation != Qt::Horizontal || section != 0) {
+        return QVariant();
+    }
+
+    switch (role) {
+    case Qt::DisplayRole:
+        return i18n("Leave");
+        break;
+    default:
+        return QVariant();
+    }
+}
+
 void LeaveModel::updateModel()
 {
     clear();
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/core/leavemodel.h \
#950770:950771 @@ -36,6 +36,7 @@
     ~LeaveModel();
 
     static QStandardItem* createStandardItem(const QString& url);
+    virtual QVariant headerData(int section, Qt::Orientation orientation, int role = \
Qt::DisplayRole) const;  
     void updateModel();
 
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/core/recentlyusedmodel.cpp \
#950770:950771 @@ -164,6 +164,26 @@
     delete d;
 }
 
+QVariant RecentlyUsedModel::headerData(int section, Qt::Orientation orientation, int \
role) const +{
+    if (orientation != Qt::Horizontal || section != 0) {
+        return QVariant();
+    }
+
+    switch (role) {
+    case Qt::DisplayRole:
+        if (d->recenttype == DocumentsAndApplications) {
+            return i18n("Recently Used");
+        } else if (d->recenttype == DocumentsOnly) {
+            return i18n("Recently Used Documents");
+        } else if (d->recenttype == ApplicationsOnly) {
+            return i18n("Recently Used Applications");
+        }
+    default:
+        return QVariant();
+    }
+}
+
 void RecentlyUsedModel::recentDocumentAdded(const QString& path)
 {
     kDebug() << "Recent document added" << path;
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/core/recentlyusedmodel.h \
#950770:950771 @@ -51,6 +51,8 @@
     explicit RecentlyUsedModel(QObject *parent = 0, RecentType recenttype = \
DocumentsAndApplications, int maxRecentApps = -1);  virtual ~RecentlyUsedModel();
 
+    virtual QVariant headerData(int section, Qt::Orientation orientation, int role = \
Qt::DisplayRole) const; +
 public Q_SLOTS:
     void clearRecentApplications();
     void clearRecentDocuments();
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/core/systemmodel.cpp \
#950770:950771 @@ -358,6 +358,21 @@
     return d->placesModel->data(mapToSource(index), role);
 }
 
+QVariant SystemModel::headerData(int section, Qt::Orientation orientation, int role) \
const +{
+    if (orientation != Qt::Horizontal || section != 0) {
+        return QVariant();
+    }
+
+    switch (role) {
+    case Qt::DisplayRole:
+        return i18n("Computer");
+        break;
+    default:
+        return QVariant();
+    }
+}
+
 void SystemModel::startRefreshingUsageInfo()
 {
     if (!d->mountPointsQueue.isEmpty()) {
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/core/systemmodel.h \
#950770:950771 @@ -47,6 +47,7 @@
     virtual int rowCount(const QModelIndex &parent = QModelIndex()) const;
     virtual int columnCount(const QModelIndex &parent = QModelIndex()) const;
     virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) \
const; +    virtual QVariant headerData(int section, Qt::Orientation orientation, int \
role = Qt::DisplayRole) const;  
 private Q_SLOTS:
     void startRefreshingUsageInfo();
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/simpleapplet/menuview.cpp \
#950770:950771 @@ -89,6 +89,7 @@
     MenuView::FormatType formattype;
     QPoint mousePressPos;
     QList<QStandardItem*> items;
+    QHash<QAbstractItemModel*, QAction*> modelsHeader;
 };
 
 MenuView::MenuView(QWidget *parent, const QString &title, const QIcon &icon)
@@ -234,6 +235,13 @@
 
 void MenuView::addModel(QAbstractItemModel *model, MenuView::ModelOptions options)
 {
+    QString title = model->headerData(0, Qt::Horizontal, \
Qt::DisplayRole).toString(); +
+    QAction *header = addTitle(title);
+    header->setVisible(false);
+
+    d->modelsHeader.insert(model, header);
+
     if(options & MergeFirstLevel) {
         const int count = model->rowCount();
         for(int row = 0; row < count; ++row) {
@@ -334,6 +342,12 @@
                 break;
         }
     }
+
+    if (lastidx < 0 && d->modelsHeader.contains(model)) {
+        QAction *header = d->modelsHeader[model];
+        lastidx = menu->actions().indexOf(header);
+    }
+
     if (lastidx >= 0) {
         if (offset < start)
             lastidx++; // insert action the item right after the last valid index
@@ -425,6 +439,14 @@
     d->formattype = formattype;
 }
 
+void MenuView::setModelTitleVisible(QAbstractItemModel *model, bool visible)
+{
+    if (d->modelsHeader.contains(model)) {
+        QAction *header = d->modelsHeader[model];
+        header->setVisible(visible);
+    }
+}
+
 void MenuView::actionTriggered(QAction *action)
 {
     KUrl url = action->data().value<KUrl>();
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/simpleapplet/menuview.h \
#950770:950771 @@ -112,6 +112,8 @@
     FormatType formatType() const;
     /** Set the format type. */
     void setFormatType(FormatType formattype);
+    /** Set visibility of model title on menu. */
+    void setModelTitleVisible(QAbstractItemModel *model, bool visible);
 
 protected:
 
--- trunk/KDE/kdebase/workspace/plasma/applets/kickoff/simpleapplet/simpleapplet.cpp \
#950770:950771 @@ -539,12 +539,12 @@
                     \
                appModel->setPrimaryNamePolicy(Kickoff::ApplicationModel::AppNamePrimary);
                
                 appModel->setSystemApplicationPolicy(Kickoff::ApplicationModel::ShowApplicationAndSystemPolicy);
  
+                d->menuview->addModel(appModel);
+
                 if (d->showMenuTitles) {
-                    d->menuview->addTitle(i18n("All Applications"));
-                    d->menuview->addModel(appModel);
+                    d->menuview->setModelTitleVisible(appModel, true);
                     d->menuview->addTitle(i18n("Actions"));
                 } else {
-                    d->menuview->addModel(appModel);
                     d->menuview->addSeparator();
                 }
             } else if(vtname == "Favorites") {
@@ -555,18 +555,24 @@
                 d->addModel(new Kickoff::RecentlyUsedModel(d->menuview), \
RecentlyUsed);  } else if(vtname == "RecentlyUsedApplications") {
                 if (d->maxRecentApps > 0) {
-                    if (d->showMenuTitles)
-                        d->menuview->addTitle(i18n("Recently Used Applications"));
-                    d->menuview->addModel(new \
Kickoff::RecentlyUsedModel(d->menuview, Kickoff::RecentlyUsedModel::ApplicationsOnly, \
                d->maxRecentApps), Kickoff::MenuView::MergeFirstLevel);
-                    if (!d->showMenuTitles)
+                    Kickoff::RecentlyUsedModel *recentModel = new \
Kickoff::RecentlyUsedModel(d->menuview, Kickoff::RecentlyUsedModel::ApplicationsOnly, \
d->maxRecentApps); +                    d->menuview->addModel(recentModel, \
Kickoff::MenuView::MergeFirstLevel); +
+                    if (d->showMenuTitles) {
+                        d->menuview->setModelTitleVisible(recentModel, true);
+                    } else {
                         d->menuview->addSeparator();
+                    }
                 }
             } else if(vtname == "RecentlyUsedDocuments") {
-                if (d->showMenuTitles)
-                    d->menuview->addTitle(i18n("Recently Used Documents"));
-                d->menuview->addModel(new Kickoff::RecentlyUsedModel(d->menuview, \
                Kickoff::RecentlyUsedModel::DocumentsOnly), \
                Kickoff::MenuView::MergeFirstLevel);
-                if (!d->showMenuTitles)
+                Kickoff::RecentlyUsedModel *recentModel = new \
Kickoff::RecentlyUsedModel(d->menuview, Kickoff::RecentlyUsedModel::DocumentsOnly); + \
d->menuview->addModel(recentModel, Kickoff::MenuView::MergeFirstLevel); +
+                if (d->showMenuTitles) {
+                    d->menuview->setModelTitleVisible(recentModel, true);
+                } else {
                     d->menuview->addSeparator();
+                }
             } else if(vtname == "Bookmarks") {
                 KMenu* menu = d->menuview;
                 if(d->viewtypes.count() > 1) {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic