--- /dev/null
+/*
+ Copyright (C) 2014 Samsung Electronics Polska Sp. z o.o.
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU AFFERO General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+ You may obtain a copy of the License at
+
+ http://www.gnu.org/licenses/agpl-3.0.txt
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+package com.samsung.srpol.data;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import com.samsung.srpol.loader.AppDetails;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+
+public class Category {
+
+ private String mTitle;
+ private String mHeader;
+ private String mDescription;
+ private String mShortDescription;
+ private int mSubCategoriesMask;
+ private int mIconRes;
+ private String mLink;
+ private boolean mCanSendData;
+ private Drawable mIconDrawable;
+ private ArrayList<Subcategory> mSubCategories;
+ private ArrayList<AppDetails> mRelatedApps = new ArrayList<AppDetails>();
+ private int mCurrentlyVisible;
+
+ public Category(Context ctx, String title, String header,
+ String shortDescription, String description, int icon, String link,
+ boolean dataSend, ArrayList<Subcategory> subCategories) {
+ mTitle = title;
+ mHeader = header;
+ mShortDescription = shortDescription;
+ mDescription = description;
+ mIconRes = icon;
+ mLink = link;
+ mIconDrawable = ctx.getResources().getDrawable(mIconRes);
+ mSubCategories = subCategories;
+ for (Subcategory subcategory : mSubCategories)
+ mSubCategoriesMask = mSubCategoriesMask | subcategory.getId();
+ mCanSendData = dataSend;
+ mCurrentlyVisible = mRelatedApps.size();
+ }
+
+ public void removeAppFromList(AppDetails removed) {
+ mRelatedApps.remove(removed);
+ }
+
+ public int getSubCategoriesMask() {
+ return mSubCategoriesMask;
+ }
+
+ public void addApplicationToCategory(AppDetails toBeAdded) {
+ int size = mRelatedApps.size();
+ addAppToList(toBeAdded);
+ if (size < mRelatedApps.size())
+ Collections.sort(mRelatedApps, AppDetails.SMART_COMPARATOR);
+ }
+
+ private void addAppToList(AppDetails toBeAdded) {
+ // Checking if any subcategory fits
+ if (!toBeAdded.isInSubcategory(mSubCategoriesMask)
+ || (mCanSendData && !toBeAdded
+ .isInSubcategory(Subcategory.CAN_SEND_DATA_SUB_CATEGORY_ID)))
+ return;
+ mRelatedApps.add(toBeAdded);
+ }
+
+ public List<Subcategory> getSubCategories() {
+ return mSubCategories;
+ }
+
+ /**
+ * Create app list
+ */
+ public void assignAppsToCategory(List<AppDetails> appDetailsList) {
+ mRelatedApps.clear();
+
+ if (appDetailsList != null && mSubCategories != null) {
+ for (AppDetails appDetails : appDetailsList) {
+ addAppToList(appDetails);
+ }
+ }
+ }
+
+ /**
+ * @return the mRelatedApps
+ */
+ public ArrayList<AppDetails> getRelatedApps() {
+ return mRelatedApps;
+ }
+
+ public int getIconRes() {
+ return mIconRes;
+ }
+
+ public Drawable getIconDrawable() {
+ return mIconDrawable;
+ }
+
+ public String getTitle() {
+ return mTitle;
+ }
+
+ public String getDescription() {
+ return mDescription;
+ }
+
+ public String getHeader() {
+ return mHeader;
+ }
+
+ public String getShortDescription() {
+ return mShortDescription;
+ }
+
+ public void updateVisibleCount(int size) {
+ mCurrentlyVisible = size;
+ }
+
+ public int getCurrentlyVisible() {
+ return mCurrentlyVisible;
+ }
+
+ public String getLink() {
+ return mLink;
+ }
+}