Разработка настольной и мобильной версии приложения "Органайзер"

Практическая обработка навыков работы с платформами Qt Creator, Eclipse и с языками программирования Java и C++. Разработка программного продукта, состоящего из настольного и мобильного органайзера под операционные системы Windows XP, Vista и Android 2.3.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 16.06.2013
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Зэл = 2016 * 1896 * 0,35 = 1312,42 руб.;

Прочие расходы составляют 5% от общей суммы затрат. Они рассчитываются по формуле (6.11):

гдеЗпр ? прочие расходы.

Затраты на амортизационные отчисления не рассчитываются, т.к. стоимость компьютера менее 40 тыс. рублей. Также затрат на комплектующие материалы тоже нет.

Зная все данные, подсчитаем стоимость одного часа машинного времени по формуле (6.9):

Рассчитаем себестоимость программного продукта по формуле (6.7):

руб.

Цена программного продукта с учетом НДС рассчитывается по формуле (6.12):

гдеЦндс - цена программного продукта с НДС;

Ц - цена программного продукта;

Кндс - коэффициент, учитывающий ставку налога на добавленную стоимость (НДС) (Кндс = 0,18).

По формуле (6.12) вычисляется цена программного продукта с учетом НДС: руб.

6.2 Эффект от использования программного продукта

Эффект характеризуется экономией рабочего времени при использовании программного продукта. При использовании данной программы автоматизируются стандартные и повседневные операции, что позволяет экономить денежные средства и сокращать время для решения повседневных задач. Экономию трудозатрат можно рассчитать по формуле:

Экономия трудозатрат рассчитывается по формуле (6.13):

где - экономия трудозатрат k-ой выполняемой операции;

- трудоемкость выполнения операций без программы;

- трудоемкость выполнения операций с программой.

где - степень автоматизации.

Таблица 3.3 - Затраты времени, приходящиеся на выполнение работ и экономия затрат времени

Задача

Затраты времени

tруч к,

часы

Затраты времени

tавт к,

часы

Экономия трудозатрат Дtк,

часы

Частота выполнения операции в месяц,

S

Общая экономия

с учетом частоты выполнения операции

Занесение записи в ежедневник

0,017

0,007

0,010

60,000

0,612

Редактирование записи в ежедневнике

0,033

0,013

0,020

30,000

0,594

Составление списка дел

0,160

0,064

0,096

30,000

2,88

Добавление дела в список

0,017

0,007

0,010

40,000

0,408

Редактирование дела в списке

0,033

0,013

0,020

20,000

0,396

Просмотр списка контактов

0,025

0,010

0,015

15,000

0,225

Добавление нового контакта

0,033

0,013

0,020

15,000

0,297

Редактирование контакта

0,050

0,02

0,03

15

0,45

Итого

5,862

Для пользователей эффектом будет экономия времени. Затраты времени, приходящиеся на выполнение работ и экономия затрат времени приводятся в форме таблицы 3.3.

Для расчета единицу измерения времени, затрачиваемую на решение одной операции, принимается час. Степень автоматизации оценивается в 80%. В результате внедрения программы высвобождается дополнительное рабочее время в месяц.

Необходимо вычислить условную экономию численности, она характеризует уменьшение потребности в трудовых ресурсах и рассчитывается по формуле:

где? экономия трудозатрат;

? коэффициент отпусков (1,08);

? Фонд рабочего времени, равный 1970 часов в год.

ед.

Зная условную экономию численности, рассчитаем экономию по оплате труда в сфере потребления с учетом отчислений во внебюджетные фонды по формуле:

где ? условная экономия по оплате труда;

? условная экономия численности;

? среднемесячная заработная плата программиста с учетом районного коэффициента (З = 21000 руб.);

- коэффициент, учитывающий отчисления во внебюджетные фонды (1,302). - районный коэффициент, = 1,2.

руб.

Срок окупаемости затрат на приобретение программного продукта пользователем вычисляется по формуле:

где? себестоимость разработанного продукта;

? условная экономия по оплате труда.

года.

Таким образом, после внедрения данного продукта срок окупаемости 1,12 года.

7. БЕЗОПАСНОСТЬ ЖИЗНЕДЕЯТЕЛЬНОСТИ

7.1 Характеристика вредных и опасных факторов при работе с ПК

Работа за персональным компьютером влечет за собой возникновение опасных и вредных факторов, наиболее значимые из которых следующие:

1. Повышенная величина напряжения тока в электрических цепях питания ПК;

2. Излучения от экрана монитора;

3. Не соответствующие нормам параметры микроклимата;

4. Не соответствующие санитарным нормам визуальные параметры дисплея: неоптимальные параметры схем развертки ЭЛТ, несовместимость параметров монитора и графического адаптера, недостаточно высокое разрешение монитора, расфокусировка, избыточная или недостаточная яркость изображения, наличия бликов на лицевой панели экрана и несоблюдения расстояния от глаз оператора до экрана.

5. Пониженный или повышенный уровень освещенности в помещении;

6. Повышенный уровень шума в системном блоке от: вентилятора процессора, вентилятора видеокарты, вентилятора блока питания, жесткого диска и оптических приводов.

7. Психофизиологическая напряженность труда, включающая:

- монотонность труда;

- повышенное умственное напряжение из-за большого объема перерабатываемой и усваиваемой информации;

- повышенное нервно-эмоциональное;

- длительные статические нагрузки;

Продолжительная работа за компьютером, не обеспеченная организационно-техническими защитными мерами отрицательно сказывается на здоровье пользователей. Однако риск повреждения здоровья можно снизить, руководствуясь санитарно-эпидологическими нормативами и правилами, такими как: «Гигиенические требования к персональным электронно-вычислительным машинам и организации работы. СанПиН 2.2.2/2.4.1340-03», «Гигиенические требования к микроклимату производственных помещений. СанПиН 2.2.4.548-96», «Гигиенические требования к естественному, искусственному и совмещенному освещению жилых и общественных зданий. СанПиН 2.2.1/2.1.1.1278-03», «Электромагнитные поля в производственных условиях. СанПиН 2.2.4.1191-03», «Шум на рабочих местах, в помещениях жилых, общественных зданий и на территории жилой застройки. СН 2.2.4/2.1.8.562-96».

6.2 Организация рабочего места при работе с ПК

Площадь на одно рабочее место пользователя ПК составляет 6 м2 и 4,5 м2, с монитором на базе электронно-лучевой трубке и ЖК монитором соответственно. По отношению к световым проемам, ПК должны располагаться так, чтобы естественный свет падал сбоку, преимущественно слева. Свет, падающий сзади, ухудшает видимость, создает блики на экране.

Конструкция рабочего стола должна обеспечивать оптимальное размещение всех элементов оборудования с учетом их конструктивных особенностей.

Конструкция рабочего стула (кресла) должна обеспечивать поддержание рациональной рабочей позы при работе на ПК позволять изменять позу с целью снижения статического напряжения мышц шейно-плечевой области и спины для предупреждения развития утомления. Тип рабочего стула (кресла) следует выбирать с учетом роста пользователя, характера и продолжительности работы с ПК.

Высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680 - 800 мм; при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм. Рабочее место пользователя ПК следует оборудовать подставкой для ног. Клавиатуру следует располагать на поверхности стола на расстоянии 100 - 300 мм от края, обращенного к пользователю или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.

Экран монитора должен находиться от глаз пользователя на оптимальном расстоянии -- 600-700 мм, но не ближе 500 мм.

7.3 Санитарно-гигиенические параметры рабочего места

Требования к уровням шума

В производственных помещениях при выполнении основных или вспомогательных работ с использованием ПЭВМ уровни шума на рабочих местах не должны превышать предельно допустимых значений, установленных для данных видов работ в соответствии с действующими санитарно-эпидемиологическими нормативами.

Печатающее оборудование, являющееся источником шума, следует устанавливать на звукопоглощающей поверхности автономного рабочего места пользователя. Если уровни шума от печатающего оборудования превышают нормируемые, оно должно быть расположено вне помещения с ПК. Помещения для выполнения основной работы с ПК не должны быть расположены рядом (смежно) с производственными помещениями с повышенным уровнем шума (мастерские, производственные цеха и т. п.).

При выполнении основной работы на ПК, где работают инженерно-технические работники, уровень шума не должен превышать 60 дБА, в помещениях операторов ЭВМ (без дисплеев) -- 65 дБА, на рабочих местах в помещениях, где размещаются шумные агрегаты вычислительных машин -- 75 дБА.

Требования к микроклимату рабочих мест

На рабочем месте пользователей должны обеспечиваться оптимальные параметры микроклимата. На работах, производимых сидя и не требующих физического напряжения (категория работ - 1а), температура воздуха должна быть в холодный период года от 22 до 24 С0, теплый период года -- от 23 до 25 С0. Относительная влажность воздуха на постоянных рабочих местах должна составлять 40-60%, скорость движения воздуха должна быть 0,1 м/с. Для повышения влажности воздуха в помещениях следует применять увлажнители воздуха.

Требования к освещению рабочих мест

Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300-500 лк. Освещение не должно создавать бликов на поверхности экрана. Освещенность поверхности экрана не должна быть более 300 лк.

Следует ограничивать неравномерность распределения яркости в поле зрения пользователя ПК при этом соотношение яркости между рабочими поверхностями не должно превышать 3:1-5:1, а между рабочими поверхностями и поверхностями стен и оборудования -- 10:1.

Коэффициент пульсации не должен превышать 5%.

Для исключения бликов отражений в экране светильников общего освещения рабочий стол с ПК следует размещать между рядами светильников. При этом светильники должны быть расположены параллельно горизонтальной линии взгляда работающего.

При рядном размещении рабочих столов не допускается расположение экранов дисплеев навстречу друг другу из-за их взаимного отражения, в противном случае между столами следует устанавливать перегородки.

Требования к уровням электромагнитных полей на рабочих местах

Одной из опасностей при работе с ПК является электромагнитное излучение. Большая часть излучения приходится на мониторы и источники бесперебойного питания.

Временные допустимые уровни электромагнитных полей представлены в таблице 4.1.

Таблица 4.1 - Временные допустимые уровни ЭМП, создаваемых ПК

Наименование параметров

ВДУ ЭМП

Напряженность электрического поля

в диапазоне частот 5 Гц - 2 кГц

25 В/м

в диапазоне частот 2 кГц - 400 кГц

2,5 В/м

Плотность магнитного потока

в диапазоне частот 5 Гц - 2 кГц

250 нТл

в диапазоне частот 2 кГц - 400 кГц

25 нТл

Электростатический потенциал экрана видеомонитора

500 В

Как показали многочисленные исследования, кроме источников ЭМП дисплея (элементы питания, высоковольтные элементы, блоки кадровой и строчной развертки) существует еще один источник переменного электрического поля в дисплеях на электронно-лучевых трубках -- непосредственно экран дисплея. При изменении характера изображения на экране дисплеев уровни их электромагнитных полей могут меняться, в том числе и в сторону увеличения по отношению к величинам, зафиксированным при тестовых испытаниях. До сих пор испытываются мониторы лишь при текстовой картинке, и в этом режиме работы уровень ЭМП от включенного компьютера остается в норме. В частности, резкое увеличение напряженности поля происходит во время работы с графической информацией, особенно при повышении четкости изображения на экране монитора.

Для защиты работающих на соседних рабочих местах рекомендуется устанавливать между рабочими столами специальные защитные экраны, имеющие покрытие, поглощающее низкочастотное электромагнитное излучение.

Самым надежным способом устранения эффектов повышения магнитных полей в зоне расположения пользователя ПК является использование мебели и расположенного рядом оборудования, в которых отсутствуют замкнутые по контуру металлические конструкции.

7.5 Электробезопасность

При установке ПК на рабочем месте он должен быть правильно подключен к электропитанию и должно быть надежно обеспечено заземление (зануление) системного блока и источника питания ПК, а также заземление защитного фильтра и локальной сети. Проведение периодического контроля сопротивления заземления (зануления) обязательно.

Необходимо обеспечить наибольшее удаление пользователя от сетевых розеток и проводов электропитания. Не рекомендуется использование двухпроводных удлинителей, переносок и сетевых фильтров, а также подобных устройств с трехконтактными розетками и вилками питания, но с незадействованным контактом зануления. Использование таких устройств можно допустить при наличии отдельно выполненного заземления (зануления) системного блока ПК.

7.5 Пожарная безопасность

Пожарная безопасность обеспечивается системой предотвращения пожара и системой пожарной защиты. Во всех служебных помещениях обязательно должен быть «План эвакуации людей при пожаре», регламентирующий действия персонала в случае возникновения очага возгорания и указывающий места расположения пожарной техники.

Как известно, пожар может возникнуть при взаимодействии горючих веществ, окислителя и источников зажигания. В помещениях с ПК присутствуют все три основные фактора, необходимые для возникновения пожара.

Горючими компонентами являются: строительные материалы для акустической и эстетической отделки помещений, перегородки, двери, полы, изоляция кабелей и др.

Источниками зажигания в ПК могут быть электрические схемы от ПК, приборы, применяемые для технического обслуживания, устройства электропитания, кондиционирования воздуха, где в результате различных нарушений образуются перегретые элементы, электрические искры и дуги, способные вызвать загорания горючих материалов.

В современных ПК очень высокая плотность размещения элементов электронных схем. В непосредственной близости друг от друга располагаются соединительные провода, кабели. При протекании по ним электрического тока выделяется значительное количество теплоты. При этом возможно оплавление изоляции. Для отвода избыточной теплоты от ПК служат системы вентиляции и кондиционирования воздуха. При постоянном действии эти системы представляют собой дополнительную пожарную опасность.

В помещениях с ПК наиболее вероятны пожары классов А и Е, т.е. горение твердых веществ, сопровождаемое тлением (А) или самовозгоранием электроустановок (Е).

Рекомендуемые нормы оснащения огнетушителями (на 200 м2 помещения): для класса А - 2 воздушно-пенных ОВП-10 или 2 порошковых ОВ-5, для класса Е - 2 порошковых ОП-5, для класса А и Е - 2 воздушно-пенных ОВП-Ю. В замкнутых помещениях объемом до 50 м2 вместо переносных огнетушителей (или в дополнение к ним) можно использовать подвесные самосрабатывающие порошковые огнетушители ОСП. Применение воды и пенных огнетушителей для тушения находящегося под напряжением электрооборудования недопустимо. Для этих целей используются углекислотные или порошковые огнетушители.

Для обнаружения начальной стадии загорания и оповещения службы пожарной охраны используют системы автоматической пожарной сигнализации (АПС) или охранно-пожарной сигнализации (ОПС). ОПС - основной элемент системы безопасности охраняемого объекта. Это интегрированный комплекс систем пожарной и охранной сигнализации. Она объединяет функцию защиты от несанкционированного проникновения в помещение и функцию обнаружения возгорания и возможно автоматического пожаротушения. Обычно в этот комплекс входят все системы безопасности помещения, что обеспечивает максимальную точность и быстроту обнаружения нарушения безопасности здания: несанкционированного проникновения, возгорания и т.д.

При возникновении пожара, в соответствии с документом «Правила пожарной безопасности в Российской Федерации (ППБ 01-03)», необходимо:

1) немедленно вызвать пожарную охрану;

2) сообщить руководству;

3) по возможности отключить электропитание;

4) также по возможности принять меры по эвакуации людей, тушению пожара и сохранности материальных ценностей.

ЗАКЛЮЧЕНИЕ

В данном дипломном проекте был разработан программный продукт, состоящий из настольного и мобильного органайзера. Настольная версия под операционную систему Windows XP/Vista/7, мобильная версия под Android 2.3.3 и выше.

В процессе разработки были получены навыки работы с платформами Qt Creator и Eclipse, с языком программирования Java и C++, с библиотекой для создания графического интерфейса для программ на языке С++- Qt GUI, и пакетом для разработки программного обеспечения на языке Java под Android - Android SDK. Реализована возможность переносимости данных с одной версии на другую.

операционная система программный продукт органайзер

ПРИЛОЖЕНИЕ А БИБЛИОГРАФИЯ

1. Android для программистов: создаём приложения. / П. Дейтел, Х. Дейтел, Э. Дейтел, М. Моргано, - СПб.: Питер, 2013. - 560 с.: ил.

2. Wikipedia, the free encyclopedia [Электронный ресурс] : Cвободная общедоступная многоязычная универсальная энциклопедия. -- Режим доступа: http://ru.wikipedia.org/wiki/Main_Page. -- Загл. с экрана. -- яз. русс.

3. Бланшет Ж., Qt 4: Программирование GUI на С++. Пер с англ. 2-е изд., доп. / Ж.Бланшет, М. Саммерфилд - М.: КУДИЦ-ПРЕСС, 2008. - 736 с.

4. Дэрси Л., Andoird за 24 часа. Программирование приложений под операционную систему Google / Л. Дэрси, Ш. Кодер - М.: Рид Групп, 2011. - 464 с. - (Профессиональные компьютерные книги).

5. Страуструп, Б. Язык программирования С++. Специальное издание. Пер. с англ. - М.: Издательство Бином, 2012 г. - 1136 с.: ил.

6. Шлее, М. Qt 4.8. Профессиональное программирование на C++. - СПб.: БХВ-Петербург; 2012. -- 912 с.: ил. - (В подлиннике)

Приложение Б исходный код настольной версии

YourOrg::YourOrg(QWidget *parent) : QMainWindow(parent)

{

setupUi(this);

int check = 1;

if (check > 0){

createMenu();

startLoad();

} else {

this->close();

}

}

void YourOrg::createMenu()

{

QMenu* pmnu = new QMenu("&Menu");

pmnu->addAction("&Synchronize", this,

SLOT(startSync()), Qt::CTRL + Qt::Key_S);

pmnu->addAction("&Exit", this, SLOT(close()),

Qt::CTRL + Qt::Key_Q);

QMenu* setMenu = new QMenu("&Settings");

setMenu->addAction("&Synchronization...", this,

SLOT(syncSettings()));

menubar->addMenu(pmnu);

menubar->addMenu(setMenu);

}

void YourOrg::startSync()

{

fileFound = 0;

xmlOrg = "planner.xml todolist.xml";

QString tmpPath;

tmpPath.clear();

startFind(dirForSyncPath);

if (fileFound < 2){

qDebug() << "Files didn't find";

} else {

qDebug() << "Ok: " << dirForSyncPath;

for (int i = 0; i < dirForSyncPath.length() - 12; i++){

tmpPath += dirForSyncPath[i];

}

qDebug() << tmpPath;

dirForSyncPath = tmpPath;

}

syncFiles();

}

void YourOrg::syncSettings()

{

dirForSyncPath = QDir::current().absolutePath();

qDebug() << dirForSyncPath;

QString str = QFileDialog::getExistingDirectory(0, "Select a directory ...", dirForSyncPath);

if (!str.isEmpty()){

dirForSyncPath = str;

qDebug() << str;

}

}

void YourOrg::startLoad()

{

todayDate = QDate::currentDate();

currentDate = todayDate;

QDate dateTomorrow = currentDate.addDays(1);

QString stringToday = currentDate.toString("dd.MM.yyyy");

QString stringTomorrow = dateTomorrow.toString("dd.MM.yyyy");

labelTodayData->setText(stringToday);

labelTomorrowData->setText(stringTomorrow);

fillPlanner();

fillContactsList();

fillToDoList();

loadSyncPath();

connect(pbAddToDo, SIGNAL(clicked()), this,

SLOT(callAddToDoItem()));

connect(calendarWidget, SIGNAL(selectionChanged()),

this, SLOT(saveSelectDate()));

connect(pbRefreshToday, SIGNAL(clicked()), this,

SLOT(refreshToday()));

connect(pbRefreshTomorrow, SIGNAL(clicked()), this,

SLOT(refreshTomorrow()));

connect(pushButtonAddNewContact, SIGNAL(clicked()), this,

SLOT(callAddContactForm()));

connect(listWidgetContacts,

SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(fillContactInfoGroupBox()));

connect(pbRefreshContact, SIGNAL(clicked()), this,

SLOT(refreshContact()));

connect(pbDeleteContact, SIGNAL(clicked()), this,

SLOT(deleteContact()));

connect(listWidgetToDo, SIGNAL(itemClicked(QListWidgetItem*)),

this, SLOT(editToDoItem()));

}

void YourOrg::fillContactInfoGroupBox()

{

qDebug() << "item: " << listWidgetContacts->currentItem()->text() << "\tindex: " << listWidgetContacts->currentRow();

int idC = -1;

idC = findIdContact(listWidgetContacts->currentItem()->text());

if (idC > -1) {

leInfoSurname->setText(data.vContacts[idC].cSurname);

leInfoName->setText(data.vContacts[idC].cName);

leInfoMobile->setText(data.vContacts[idC].cMobilePhone);

leInfoOrg->setText(data.vContacts[idC].cOrganization);

leInfoPost->setText(data.vContacts[idC].cPost);

leInfoEmail->setText(data.vContacts[idC].cEmail);

leInfoSkype->setText(data.vContacts[idC].cSkype);

leInfoPhone->setText(data.vContacts[idC].cPhone);

}

}

void YourOrg::callAddToDoItem()

{

AddToDoForm addToDoF(this);

QString strText;

if (addToDoF.exec()){

strText = addToDoF.lineEdit->text();

data.AddToDoItem(strText);

fillToDoList();

}

}

void YourOrg::contactsSave()

{

QDomDocument doc("contacts");

QDomElement domElement = doc.createElement("contacts");

QString cName, cSurname, cOrg, cPost, cMPhone, cPhone, cEmail, cSkype, IDtoS;

int cID;

doc.appendChild(domElement);

for (int i = 0; i < data.vContacts.size(); i++){

cID = data.vContacts[i].cID;

IDtoS.clear();

IDtoS.append(QString("%1").arg(cID));

cName = data.vContacts[i].cName;

cSurname = data.vContacts[i].cSurname;

cOrg = data.vContacts[i].cOrganization;

cPost = data.vContacts[i].cPost;

cMPhone = data.vContacts[i].cMobilePhone;

cPhone = data.vContacts[i].cPhone;

cEmail = data.vContacts[i].cEmail;

cSkype = data.vContacts[i].cSkype;

QDomElement dayElement = contactsXmlMaker(doc, IDtoS, cName, cSurname, cOrg, cPost, cMPhone, cPhone, cEmail, cSkype);

domElement.appendChild(dayElement);

}

QFile file("contacts.xml");

if(file.open(QIODevice::WriteOnly)) {

QTextStream(&file) << doc.toString();

file.close();

}

}

void YourOrg::todoListSave()

{

QDomDocument doc("todolist");

QDomElement domElement = doc.createElement("todolist");

QString tdTextToDo, IDtoStr, CheckToStr;

int tdID, tdCheck;

doc.appendChild(domElement);

for (int i = 0; i < data.vToDoData.size(); i++){

tdID = data.vToDoData[i].idToDo;

IDtoStr.clear();

IDtoStr.append(QString("%1").arg(tdID));

tdCheck = data.vToDoData[i].check;

CheckToStr.clear();

CheckToStr.append(QString("%1").arg(tdCheck));

tdTextToDo = data.vToDoData[i].textToDo;

QDomElement todoListElement = todoListXmlMaker(doc, IDtoStr, tdTextToDo, CheckToStr);

domElement.appendChild(todoListElement);

}

QFile file("todolist.xml");

if(file.open(QIODevice::WriteOnly)) {

QTextStream(&file) << doc.toString();

file.close();

}

}

QDomElement YourOrg::todoListXmlMaker(QDomDocument& domDoc, const QString sID, const QString sTextToDo, const QString sCheck)

{

QDomElement domElement = todoListElement(domDoc, "id", sID);

domElement.appendChild(todoListElement(domDoc, "text", "", sTextToDo));

domElement.appendChild(todoListElement(domDoc, "check", "", sCheck));

return domElement;

}

QDomElement YourOrg::todoListElement(QDomDocument& domDoc, const QString& strName, const QString& strAttr, const QString& strText)

{

QDomElement domElement = domDoc.createElement(strName);

if (!strAttr.isEmpty()) {

QDomAttr domAttr = domDoc.createAttribute("number");

domAttr.setValue(strAttr);

domElement.setAttributeNode(domAttr);

}

if (!strText.isEmpty()) {

QDomText domText = domDoc.createTextNode(strText);

domElement.appendChild(domText);

}

return domElement;

}

void YourOrg::todoListsSync(){

vector<int> addD;

int index, allEqual = 0;

QString str1, str2;

for (int i = 0; i < syncData.vToDoData.size(); i++){

str2 = syncData.vToDoData[i].textToDo;

allEqual = 0;

for (int j = 0; j < data.vToDoData.size(); j++){

str1 = data.vToDoData[j].textToDo;

if (str1.compare(str2)){

allEqual++;

}

}

if (allEqual > (data.vToDoData.size() - 1)){

addD.push_back(i);

}

}

for (int i = 0; i < addD.size(); i++){

index = addD[i];

QString str = syncData.vToDoData[index].textToDo;

data.AddToDoItem(str);

}

fillToDoList();

}

void YourOrg::closeEvent(QCloseEvent* pe)

{

int ret = plannerSave();

contactsSave();

todoListSave();

saveSyncPath();

qDebug() << "close app";

}

Приложение В исходный код мобильной версии

public class MainActivity extends Activity implements OnClickListener {

Button buttonPlanner;

Button buttonToDo;

Button buttonTel;

Button buttonExit;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

buttonPlanner = (Button) findViewById(R.id.buttonPlanner);

buttonToDo = (Button) findViewById(R.id.buttonToDo);

buttonTel = (Button) findViewById(R.id.buttonTel);

buttonExit = (Button) findViewById(R.id.buttonExit);

buttonTel.setOnClickListener(this);

buttonPlanner.setOnClickListener(this);

buttonToDo.setOnClickListener(this);

buttonExit.setOnClickListener(this);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.buttonPlanner:

Intent intent = new Intent(this, ActivityPlanner.class);

startActivity(intent);

break;

case R.id.buttonToDo:

Intent intentToDo = new Intent(this, ToDoActivity.class);

startActivity(intentToDo);

break;

case R.id.buttonTel:

Intent intentTel = new Intent(this, TelActivity.class);

startActivity(intentTel);

break;

case R.id.buttonExit:

moveTaskToBack(true);

finish();

System runFinalizerOnExit(true);

System.exit(0);

break;

default:

break;

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

public class FullContactFormActivity extends Activity implements OnClickListener

{

final String LOG_TAG = "myLogs";

Button buttonOk;

Button buttonCancel;

Intent intentData;

StringfindId;

String tmpName;

String tmpText;

StringtmpAttr;

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.full_contact_form);

buttonOk = (Button) findViewById(R.id.buttonOkFC);

buttonCancel = (Button) findViewById(R.id.buttonCancelFC);

buttonCancel.setOnClickListener(this);

buttonOk.setOnClickListener(this);

findId = "";

intentData = getIntent();

String scid = intentData.getStringExtra("cid");

Log.d(LOG_TAG, "get cid: " + scid);

if (!scid.equals("0")) {

findId = scid;

fillContact();

}

}

@Override

public void onClick(View v)

{

Intent intent = new Intent(this, TelActivity.class);

switch (v.getId()) {

case R.id.buttonOkFC:

startActivity(intent);

break;

case R.id.buttonCancelFC:

startActivity(intent);

break;

default:

break;

}

}

void fillContact()

{

String tmp = "";

String tmpAttrName = "";

int count = 0;

try {

XmlPullParser xpp = prepareXpp();

while (xpp.getEventType() != XmlPullParser.END_DOCUMENT) {

switch (xpp.getEventType()) {

case XmlPullParser.START_DOCUMENT:

Log.d(LOG_TAG, "START_DOCUMENT");

break;

case XmlPullParser.START_TAG:

tmp = "";

tmpAttrName = "";

tmpName = xpp.getName().toString();

for (int i = 0; i < xpp.getAttributeCount(); i++) {

tmpAttr = xpp.getAttributeValue(i);

tmpAttrName = xpp.getAttributeName(i);

tmp = tmp + tmpAttrName + " = " + tmpAttr + ", ";

}

break;

case XmlPullParser.END_TAG:

break;

case XmlPullParser.TEXT:

tmpText = xpp.getText().toString();

if (tmpAttr.equals(findId)){

if (tmpName.equals("name")) ed1.setText(tmpText);

if (tmpName.equals("surname")) ed2.setText(tmpText);

if (tmpName.equals("organization")) ed3.setText(tmpText);

if (tmpName.equals("post")) ed4.setText(tmpText);

if (tmpName.equals("mobile")) ed5.setText(tmpText);

if (tmpName.equals("phone")) ed6.setText(tmpText);

if (tmpName.equals("email")) ed7.setText(tmpText);

if (tmpName.equals("skype")) ed8.setText(tmpText);

}

break;

default:

break;

}

xpp.next();

}

Log.d(LOG_TAG, "END_DOCUMENT");

} catch (XmlPullParserException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

XmlPullParser prepareXpp()

{

return getResources().getXml(R.xml.contacts);

}

}

public class ToDoActivity extends Activity implements OnClickListener

{

public static final int IDM_DEL = 101;

final String LOG_TAG = "myLogs";

Button buttonBack;

ListView lv;

ArrayAdapter<String> adapter;

int posItemForDel;

String tmpName;

@Override

protected void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.todo);

buttonBack = (Button) findViewById(R.id.buttonBack);

buttonBack.setOnClickListener(this);

lv = (ListView)findViewById(R.id.listView_list);

final EditText editText = (EditText) findViewById(R.id.editTextSurname);

registerForContextMenu(lv);

final ArrayList<String> list = new ArrayList<String>();

adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, list);

lv.setAdapter(adapter);

String tmp = "";

@Override

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)

{

super.onCreateContextMenu(menu, v, menuInfo);

menu.add(menu.NONE, IDM_DEL, menu.NONE, "Удалить");

}

@Override

public boolean onContextItemSelected(MenuItem item)

{

CharSequence message;

switch (item.getItemId())

{

case IDM_DEL:

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent,

View itemClicked, int position, long id) {

posItemForDel = position;

}

});

String strText = lv.getItemAtPosition(posItemForDel).toString();

adapter.remove(strText);

adapter.notifyDataSetChanged();

message = "Удалено: " + strText;

break;

default:

return super.onContextItemSelected(item);

}

Toast toast = Toast.makeText(this, message, Toast.LENGTH_SHORT);

toast.setGravity(Gravity.CENTER, 0, 0);

toast.show();

return true;

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.buttonBack:

Intent intent = new Intent(this, MainActivity.class);

startActivity(intent);

break;

default:

break;

}

}

}

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.