1 #include "mainwindow.h"
2 #include "newgroupdialog.h"
3 #include "addcontacttogroup.h"
4 #include "contactinterface.h"
6 #include "ui_mainwindow.h"
9 #ifdef ONLY_FOR_TELEPATHYQT4
10 #include "tpsession/tpsession.h"
13 MainWindow* MainWindow::instance = 0;
15 MainWindow* MainWindow::getInstance()
18 instance = new MainWindow();
23 MainWindow::MainWindow(QWidget *parent) :
25 ui(new Ui::MainWindow)
33 MainWindow::~MainWindow()
38 void MainWindow::changeEvent(QEvent *e)
40 //qDebug() << "MainWindow::changeEvent(QEvent *e)";
42 QMainWindow::changeEvent(e);
44 case QEvent::LanguageChange:
45 ui->retranslateUi(this);
52 void MainWindow::init()
54 //qDebug() << "MainWindow::init()";
56 ui->btn_send_message->setDisabled(true);
57 ui->textEdit_phone_numbers->setReadOnly(true);
58 connect( ui->textEdit_message, SIGNAL( textChanged() ), this, SLOT( send_message_enabled() ) );
59 connect( ui->textEdit_phone_numbers, SIGNAL( textChanged() ), this, SLOT( send_message_enabled() ) );
60 connect( ui->btn_send_to, SIGNAL( clicked() ), this, SLOT( send_to_clicked() ) );
61 connect( ui->btn_send_message, SIGNAL( clicked() ), this, SLOT( send_message_clicked() ) );
62 connect( ui->btn_cancel, SIGNAL( clicked() ), this, SLOT( cancel_clicked() ) );
64 hbox_layout = new QHBoxLayout(this);
66 btn_new_group = new QToolButton(this);
67 btn_new_group->setToolTip( tr("new group") );
68 btn_new_group->setText("");
69 btn_new_group->setIcon(Utility::getToolButtonIcon(":/images/newgroup.png", true));
70 btn_new_group->setToolButtonStyle(Qt::ToolButtonIconOnly);
71 btn_new_group->setAutoRaise(true);
72 btn_new_group->show();
73 connect( btn_new_group, SIGNAL( clicked() ), this, SLOT( new_group() ) );
76 btn_add_contact_to_group = new QToolButton(this);
77 btn_add_contact_to_group->setToolTip( tr("add contact to group") );
78 btn_add_contact_to_group->setText("");
79 btn_add_contact_to_group->setIcon(Utility::getToolButtonIcon(":/images/addcontacttogroup.png", true));
80 btn_add_contact_to_group->setToolButtonStyle(Qt::ToolButtonIconOnly);
81 btn_add_contact_to_group->setAutoRaise(true);
82 btn_add_contact_to_group->show();
83 connect( btn_add_contact_to_group, SIGNAL( clicked() ), this, SLOT( add_contact_to_group() ) );
85 btn_delete_contact = new QToolButton(this);
86 btn_delete_contact->setToolTip( tr("delete contacts") );
87 btn_delete_contact->setText("");
88 btn_delete_contact->setIcon(Utility::getToolButtonIcon(":/images/recycle.png"));
89 btn_delete_contact->setToolButtonStyle(Qt::ToolButtonIconOnly);
90 btn_delete_contact->setAutoRaise(true);
91 btn_delete_contact->setDisabled(true);
92 btn_delete_contact->show();
93 connect( btn_delete_contact, SIGNAL(clicked()), this, SLOT(removeSelectedContact()) );
95 // btn_delete_group = new QToolButton(this);
96 // btn_delete_group->setToolTip( tr("delete group") );
97 // btn_delete_group->setText("");
98 // btn_delete_group->setIcon(Utility::getToolButtonIcon(":/images/recycle.png"));
99 // btn_delete_group->setToolButtonStyle(Qt::ToolButtonIconOnly);
100 // btn_delete_group->setAutoRaise(true);
101 // btn_delete_group->show();
103 btn_sync_contacts = new QToolButton(this);
104 btn_sync_contacts->setToolTip( tr("sync contacts") );
105 btn_sync_contacts->setText("");
106 btn_sync_contacts->setIcon(Utility::getToolButtonIcon(":/images/editgroup.png", true));
107 btn_sync_contacts->setToolButtonStyle(Qt::ToolButtonIconOnly);
108 btn_sync_contacts->setAutoRaise(true);
109 btn_sync_contacts->show();
110 connect( btn_sync_contacts, SIGNAL( clicked() ), this, SLOT( sync_contacts() ) );
112 hbox_layout->addWidget( btn_new_group );
113 hbox_layout->addWidget( btn_add_contact_to_group );
114 hbox_layout->addWidget( btn_delete_contact );
115 // hbox_layout->addWidget( btn_delete_group );
116 hbox_layout->addWidget( btn_sync_contacts );
118 ui->groupBox->setTitle("");
119 ui->groupBox->setLayout( hbox_layout );
120 ui->groupBox->setEnabled(true);
122 contactPage = new ContactPage(this);
123 ui->tabWidget->insertTab(0, contactPage, contactPage->title());
124 ui->tabWidget->setCurrentIndex(0);
125 connect( ui->tabWidget, SIGNAL( currentChanged(int) ), this, SLOT( tab_changed(int) ) );
126 connect( contactPage, SIGNAL( validRecycle(bool) ), this, SLOT( onValidRecyele(bool) ) );
128 ui->vLayout_main->setAlignment(Qt::AlignCenter);
129 ui->sendSMS_tab->setLayout(ui->vLayout_main);
131 QString filename( HOME_DIR + "/group.xml" );
132 QFileInfo fileinfo(filename);
133 if( !fileinfo.exists() )
135 XmlControler::getInstance()->newXml( filename );
136 #ifdef ONLY_FOR_EBOOK
137 contactPage->setContactItemObserver();
138 ContactInterface::getInstance()->updateContactsFromEbookToXml();
142 XmlControler::getInstance()->readXml( filename );
143 // for test xmlcontroler
144 // XmlControler::getInstance()->createGroup( "second_group" );
145 // XmlControler::getInstance()->createContact( "second_group", new ContactWidgetItem);
146 // XmlControler::getInstance()->createGroup( "one_group" );
147 // XmlControler::getInstance()->removeContact( "one_group", NULL);
148 // XmlControler::getInstance()->removeGroup( "one_group" );
150 contactPage->initContactWidget();
151 contactPage->update();
153 //qDebug() << "new SendSMSSession";
154 #ifdef ONLY_FOR_TELEPATHYQT4
155 sendSMS = new SendSMSSession( false, this );
156 connect( sendSMS, SIGNAL( smsSent(QString) ), this, SLOT( onSMSSent(QString) ) );
160 void MainWindow::onSMSSent(QString msg)
163 //qDebug() << "MainWindow::onSMSSent" << msg << "OK";
166 void MainWindow::setSendToText(QVector<ContactWidgetItem *> *contacts)
168 int count = contacts->size();
172 ui->textEdit_phone_numbers->clear();
173 for( int i = 0; i < count; i++ )
175 text = contacts->at(i)->full_name + ";";
176 name_list.append( text );
177 ui->textEdit_phone_numbers->append( text );
181 void MainWindow::sync_contacts()
183 #ifdef ONLY_FOR_EBOOK
184 ContactInterface::getInstance()->updateContactsFromEbookToXml();
188 void MainWindow::tab_changed(int index)
190 if( 0 == index ) //contactpage
192 ui->groupBox->setShown(true);
195 ui->groupBox->setHidden(true);
197 setSendToText( contactPage->getSelectedContacts() );
201 void MainWindow::cancel_clicked()
203 ui->textEdit_phone_numbers->document()->clear();
204 ui->textEdit_message->document()->clear();
205 ui->btn_send_message->setDisabled(true);
206 contactPage->cleanSelectedContactList();
209 void MainWindow::send_to_clicked()
211 //qDebug() << "MainWindow::send_to_clicked()";
214 void MainWindow::send_message_clicked()
216 //qDebug() << "MainWindow::send_message_clicked()";
218 QTextDocument *doc_phone_number = ui->textEdit_phone_numbers->document();
219 QTextDocument *doc_message = ui->textEdit_message->document();
220 if( !doc_message->isEmpty() && !doc_phone_number->isEmpty() )
222 #ifdef ONLY_FOR_TELEPATHYQT4
223 QString txt = doc_message->toPlainText();
224 QVector<ContactWidgetItem *> *contacts = contactPage->getSelectedContacts();
227 for( int i = 0; i < contacts->size(); i++ )
229 //qDebug() << " send sms:" << txt << "to" << contacts->at(i)->mobile_number;
230 addrs.append( contacts->at(i)->mobile_number );
234 sendSMS->setSMSToSend( addrs, msgs );
237 // TpSession *tps =new TpSession("ring",true);
238 // tps->sendMessageToAddress("ring",contacts->at(0)->mobile_number,txt);
243 void MainWindow::send_message_enabled()
245 //qDebug() << "MainWindow::send_message_enabled()";
247 QTextDocument *doc_phone_number = ui->textEdit_phone_numbers->document();
248 QTextDocument *doc_message = ui->textEdit_message->document();
249 if( !doc_message->isEmpty() && !doc_phone_number->isEmpty() )
251 ui->btn_send_message->setEnabled(true);
254 ui->btn_send_message->setDisabled(true);
258 void MainWindow::new_group()
260 //qDebug() << "MainWindow::new_group()";
263 int result = dlg.exec();
264 if( result == QDialog::Accepted )
266 //qDebug() << "new group is ok";
270 void MainWindow::add_contact_to_group()
272 //qDebug() << "MainWindow::add_contact_to_group()";
273 AddContactToGroup dlg;
274 int result = dlg.exec();
275 if( result == QDialog::Accepted )
277 //qDebug() << "add contact is ok";
281 void MainWindow::onValidRecyele(bool valid)
285 btn_delete_contact->setEnabled(true);
288 btn_delete_contact->setDisabled(true);
292 void MainWindow::removeSelectedContact()
294 //TODO : add confirm dialog
296 msgBox.setText("Do you want to delete that's selected contacts?");
297 msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
298 int ret = msgBox.exec();
299 if( ret == QDialog::Accepted )
301 contactPage->removeSelectedContact();